From ea4056444c527c41e06d04f97e4373e2da120416 Mon Sep 17 00:00:00 2001 From: cryptotechmaker Date: Thu, 19 Oct 2023 09:03:14 +0300 Subject: [PATCH 1/6] mocks artifacts --- .../tapioca-mocks/FlashBorrowerMock.json | 4 +- .../FlashMaliciousBorrowerMock.json | 4 +- src/artifacts/tapioca-mocks/TOFTMock.json | 107 ++++++ src/typechain/tapioca-mocks/TOFTMock.ts | 328 ++++++++++++++++++ .../FlashBorrowerMock__factory.ts | 2 +- .../FlashMaliciousBorrowerMock__factory.ts | 2 +- .../factories/TOFTMock__factory.ts | 164 +++++++++ .../tapioca-mocks/factories/index.ts | 1 + src/typechain/tapioca-mocks/hardhat.d.ts | 9 + src/typechain/tapioca-mocks/index.ts | 2 + 10 files changed, 617 insertions(+), 6 deletions(-) create mode 100644 src/artifacts/tapioca-mocks/TOFTMock.json create mode 100644 src/typechain/tapioca-mocks/TOFTMock.ts create mode 100644 src/typechain/tapioca-mocks/factories/TOFTMock__factory.ts diff --git a/src/artifacts/tapioca-mocks/FlashBorrowerMock.json b/src/artifacts/tapioca-mocks/FlashBorrowerMock.json index 3ff5a7a1..cf90d52d 100644 --- a/src/artifacts/tapioca-mocks/FlashBorrowerMock.json +++ b/src/artifacts/tapioca-mocks/FlashBorrowerMock.json @@ -90,8 +90,8 @@ "type": "function" } ], - "bytecode": "0x60803461007457601f61052238819003918201601f19168301916001600160401b038311848410176100795780849260209460405283398101031261007457516001600160a01b0381169081900361007457600080546001600160a01b03191691909117905560405161049290816100908239f35b600080fd5b634e487b7160e01b600052604160045260246000fdfe60806040818152600436101561001457600080fd5b600091823560e01c90816323e30c8b1461011f57508063736ddf3b146100f55763b53e48851461004357600080fd5b346100f157806003193601126100f15761005b610249565b9060206024359261006c84826102d7565b60a46001600160a01b0391868381541686519788958694632e7ff4ef60e11b86523060048701521660248501526044840152608060648401528160848401525af19081156100e857506100bd575080f35b6100dd9060203d81116100e1575b6100d58183610264565b81019061029c565b5080f35b503d6100cb565b513d84823e3d90fd5b5080fd5b50346100f15736600319011261011c57610119610110610249565b602435906102d7565b80f35b80fd5b9050823461011c5760a036600319011261011c5761013b610249565b916001600160a01b03916024358381160361011c5760843567ffffffffffffffff8082116102455736602383011215610245578160040135908111610245573691016024011161011c5754821633036102035750309116036101c057602090517f439148f0bbc682ca079e46d6e2c2f0c1e3b820f1a291b069d8882abf8cf18dd98152f35b5162461bcd60e51b815260206004820181905260248201527f466c617368426f72726f7765723a206e6f742074686520696e69746961746f726044820152606490fd5b62461bcd60e51b815260206004820152601860248201527f466c617368426f72726f7765723a20756e7472757374656400000000000000006044820152606490fd5b8280fd5b600435906001600160a01b038216820361025f57565b600080fd5b90601f8019910116810190811067ffffffffffffffff82111761028657604052565b634e487b7160e01b600052604160045260246000fd5b9081602091031261025f5751801515810361025f5790565b919082018092116102c157565b634e487b7160e01b600052601160045260246000fd5b6000906001600160a01b038254166040918251636eb1769f60e11b81523060048201528260248201526020958682604481875afa918215610423578790879361042d575b508551633676633960e21b81526001600160a01b039490941660048501526024840182905291929182604481875afa918215610423579187939187959386926103e2575b5091610372610378926103aa95946102b4565b906102b4565b855163095ea7b360e01b81526001600160a01b0383166004820152602481019190915295869283919082906044820190565b03925af19182156103d85750506103bf575050565b816103d592903d106100e1576100d58183610264565b50565b51903d90823e3d90fd5b929483919496508092503d831161041c575b6103fe8183610264565b81010312610418575185938793909290919061037261035f565b8580fd5b503d6103f4565b85513d88823e3d90fd5b80929350813d8311610455575b6104448183610264565b81010312610418575190868161031b565b503d61043a56fea2646970667358221220e101004e9d9678f348a97f2560099bc35b6124d207ee65898108afbba423d1f464736f6c63430008120033", - "deployedBytecode": "0x60806040818152600436101561001457600080fd5b600091823560e01c90816323e30c8b1461011f57508063736ddf3b146100f55763b53e48851461004357600080fd5b346100f157806003193601126100f15761005b610249565b9060206024359261006c84826102d7565b60a46001600160a01b0391868381541686519788958694632e7ff4ef60e11b86523060048701521660248501526044840152608060648401528160848401525af19081156100e857506100bd575080f35b6100dd9060203d81116100e1575b6100d58183610264565b81019061029c565b5080f35b503d6100cb565b513d84823e3d90fd5b5080fd5b50346100f15736600319011261011c57610119610110610249565b602435906102d7565b80f35b80fd5b9050823461011c5760a036600319011261011c5761013b610249565b916001600160a01b03916024358381160361011c5760843567ffffffffffffffff8082116102455736602383011215610245578160040135908111610245573691016024011161011c5754821633036102035750309116036101c057602090517f439148f0bbc682ca079e46d6e2c2f0c1e3b820f1a291b069d8882abf8cf18dd98152f35b5162461bcd60e51b815260206004820181905260248201527f466c617368426f72726f7765723a206e6f742074686520696e69746961746f726044820152606490fd5b62461bcd60e51b815260206004820152601860248201527f466c617368426f72726f7765723a20756e7472757374656400000000000000006044820152606490fd5b8280fd5b600435906001600160a01b038216820361025f57565b600080fd5b90601f8019910116810190811067ffffffffffffffff82111761028657604052565b634e487b7160e01b600052604160045260246000fd5b9081602091031261025f5751801515810361025f5790565b919082018092116102c157565b634e487b7160e01b600052601160045260246000fd5b6000906001600160a01b038254166040918251636eb1769f60e11b81523060048201528260248201526020958682604481875afa918215610423578790879361042d575b508551633676633960e21b81526001600160a01b039490941660048501526024840182905291929182604481875afa918215610423579187939187959386926103e2575b5091610372610378926103aa95946102b4565b906102b4565b855163095ea7b360e01b81526001600160a01b0383166004820152602481019190915295869283919082906044820190565b03925af19182156103d85750506103bf575050565b816103d592903d106100e1576100d58183610264565b50565b51903d90823e3d90fd5b929483919496508092503d831161041c575b6103fe8183610264565b81010312610418575185938793909290919061037261035f565b8580fd5b503d6103f4565b85513d88823e3d90fd5b80929350813d8311610455575b6104448183610264565b81010312610418575190868161031b565b503d61043a56fea2646970667358221220e101004e9d9678f348a97f2560099bc35b6124d207ee65898108afbba423d1f464736f6c63430008120033", + "bytecode": "0x60803461007457601f61052238819003918201601f19168301916001600160401b038311848410176100795780849260209460405283398101031261007457516001600160a01b0381169081900361007457600080546001600160a01b03191691909117905560405161049290816100908239f35b600080fd5b634e487b7160e01b600052604160045260246000fdfe60806040818152600436101561001457600080fd5b600091823560e01c90816323e30c8b1461011f57508063736ddf3b146100f55763b53e48851461004357600080fd5b346100f157806003193601126100f15761005b610249565b9060206024359261006c84826102d7565b60a46001600160a01b0391868381541686519788958694632e7ff4ef60e11b86523060048701521660248501526044840152608060648401528160848401525af19081156100e857506100bd575080f35b6100dd9060203d81116100e1575b6100d58183610264565b81019061029c565b5080f35b503d6100cb565b513d84823e3d90fd5b5080fd5b50346100f15736600319011261011c57610119610110610249565b602435906102d7565b80f35b80fd5b9050823461011c5760a036600319011261011c5761013b610249565b916001600160a01b03916024358381160361011c5760843567ffffffffffffffff8082116102455736602383011215610245578160040135908111610245573691016024011161011c5754821633036102035750309116036101c057602090517f439148f0bbc682ca079e46d6e2c2f0c1e3b820f1a291b069d8882abf8cf18dd98152f35b5162461bcd60e51b815260206004820181905260248201527f466c617368426f72726f7765723a206e6f742074686520696e69746961746f726044820152606490fd5b62461bcd60e51b815260206004820152601860248201527f466c617368426f72726f7765723a20756e7472757374656400000000000000006044820152606490fd5b8280fd5b600435906001600160a01b038216820361025f57565b600080fd5b90601f8019910116810190811067ffffffffffffffff82111761028657604052565b634e487b7160e01b600052604160045260246000fd5b9081602091031261025f5751801515810361025f5790565b919082018092116102c157565b634e487b7160e01b600052601160045260246000fd5b6000906001600160a01b038254166040918251636eb1769f60e11b81523060048201528260248201526020958682604481875afa918215610423578790879361042d575b508551633676633960e21b81526001600160a01b039490941660048501526024840182905291929182604481875afa918215610423579187939187959386926103e2575b5091610372610378926103aa95946102b4565b906102b4565b855163095ea7b360e01b81526001600160a01b0383166004820152602481019190915295869283919082906044820190565b03925af19182156103d85750506103bf575050565b816103d592903d106100e1576100d58183610264565b50565b51903d90823e3d90fd5b929483919496508092503d831161041c575b6103fe8183610264565b81010312610418575185938793909290919061037261035f565b8580fd5b503d6103f4565b85513d88823e3d90fd5b80929350813d8311610455575b6104448183610264565b81010312610418575190868161031b565b503d61043a56fea2646970667358221220fb96064838e721b974489d0cbb7dc332f8dcfae86f734bf6c4c33eb10a0f6a5164736f6c63430008120033", + "deployedBytecode": "0x60806040818152600436101561001457600080fd5b600091823560e01c90816323e30c8b1461011f57508063736ddf3b146100f55763b53e48851461004357600080fd5b346100f157806003193601126100f15761005b610249565b9060206024359261006c84826102d7565b60a46001600160a01b0391868381541686519788958694632e7ff4ef60e11b86523060048701521660248501526044840152608060648401528160848401525af19081156100e857506100bd575080f35b6100dd9060203d81116100e1575b6100d58183610264565b81019061029c565b5080f35b503d6100cb565b513d84823e3d90fd5b5080fd5b50346100f15736600319011261011c57610119610110610249565b602435906102d7565b80f35b80fd5b9050823461011c5760a036600319011261011c5761013b610249565b916001600160a01b03916024358381160361011c5760843567ffffffffffffffff8082116102455736602383011215610245578160040135908111610245573691016024011161011c5754821633036102035750309116036101c057602090517f439148f0bbc682ca079e46d6e2c2f0c1e3b820f1a291b069d8882abf8cf18dd98152f35b5162461bcd60e51b815260206004820181905260248201527f466c617368426f72726f7765723a206e6f742074686520696e69746961746f726044820152606490fd5b62461bcd60e51b815260206004820152601860248201527f466c617368426f72726f7765723a20756e7472757374656400000000000000006044820152606490fd5b8280fd5b600435906001600160a01b038216820361025f57565b600080fd5b90601f8019910116810190811067ffffffffffffffff82111761028657604052565b634e487b7160e01b600052604160045260246000fd5b9081602091031261025f5751801515810361025f5790565b919082018092116102c157565b634e487b7160e01b600052601160045260246000fd5b6000906001600160a01b038254166040918251636eb1769f60e11b81523060048201528260248201526020958682604481875afa918215610423578790879361042d575b508551633676633960e21b81526001600160a01b039490941660048501526024840182905291929182604481875afa918215610423579187939187959386926103e2575b5091610372610378926103aa95946102b4565b906102b4565b855163095ea7b360e01b81526001600160a01b0383166004820152602481019190915295869283919082906044820190565b03925af19182156103d85750506103bf575050565b816103d592903d106100e1576100d58183610264565b50565b51903d90823e3d90fd5b929483919496508092503d831161041c575b6103fe8183610264565b81010312610418575185938793909290919061037261035f565b8580fd5b503d6103f4565b85513d88823e3d90fd5b80929350813d8311610455575b6104448183610264565b81010312610418575190868161031b565b503d61043a56fea2646970667358221220fb96064838e721b974489d0cbb7dc332f8dcfae86f734bf6c4c33eb10a0f6a5164736f6c63430008120033", "linkReferences": {}, "deployedLinkReferences": {} } diff --git a/src/artifacts/tapioca-mocks/FlashMaliciousBorrowerMock.json b/src/artifacts/tapioca-mocks/FlashMaliciousBorrowerMock.json index a645b3dd..64e5028e 100644 --- a/src/artifacts/tapioca-mocks/FlashMaliciousBorrowerMock.json +++ b/src/artifacts/tapioca-mocks/FlashMaliciousBorrowerMock.json @@ -72,8 +72,8 @@ "type": "function" } ], - "bytecode": "0x60803461007457601f61034a38819003918201601f19168301916001600160401b038311848410176100795780849260209460405283398101031261007457516001600160a01b0381169081900361007457600080546001600160a01b0319169190911790556040516102ba90816100908239f35b600080fd5b634e487b7160e01b600052604160045260246000fdfe608060408181526004908136101561001657600080fd5b600092833560e01c90816323e30c8b1461012b575063b53e48851461003a57600080fd5b3461012757806003193601126101275761005261025c565b91602073ffffffffffffffffffffffffffffffffffffffff60a481875416958786519788948593632e7ff4ef60e11b855230898601521660248401526024356044840152608060648401528160848401525af1801561011d576100b3578380f35b6020913d8311610115575b601f8301601f191684019167ffffffffffffffff8311858410176101025750526020908201829003126100fe5751801515036100fb573880808380f35b80fd5b5080fd5b634e487b7160e01b865260419052602485fd5b3d92506100be565b82513d86823e3d90fd5b8280fd5b91939050346100fb5760a03660031901126100fb5761014861025c565b9173ffffffffffffffffffffffffffffffffffffffff91602435838116036100fb5760843567ffffffffffffffff8082116101275736602383011215610127578187013590811161012757369101602401116100fb57548216330361021b5750309116036101d957602082517f439148f0bbc682ca079e46d6e2c2f0c1e3b820f1a291b069d8882abf8cf18dd98152f35b6020606492519162461bcd60e51b8352820152602060248201527f466c617368426f72726f7765723a206e6f742074686520696e69746961746f726044820152fd5b62461bcd60e51b8152602084820152601860248201527f466c617368426f72726f7765723a20756e7472757374656400000000000000006044820152606490fd5b6004359073ffffffffffffffffffffffffffffffffffffffff8216820361027f57565b600080fdfea264697066735822122002c21f18e263d9202b2d2713c9566075a43742c97999141f5ffd50ac5c561bc664736f6c63430008120033", - "deployedBytecode": "0x608060408181526004908136101561001657600080fd5b600092833560e01c90816323e30c8b1461012b575063b53e48851461003a57600080fd5b3461012757806003193601126101275761005261025c565b91602073ffffffffffffffffffffffffffffffffffffffff60a481875416958786519788948593632e7ff4ef60e11b855230898601521660248401526024356044840152608060648401528160848401525af1801561011d576100b3578380f35b6020913d8311610115575b601f8301601f191684019167ffffffffffffffff8311858410176101025750526020908201829003126100fe5751801515036100fb573880808380f35b80fd5b5080fd5b634e487b7160e01b865260419052602485fd5b3d92506100be565b82513d86823e3d90fd5b8280fd5b91939050346100fb5760a03660031901126100fb5761014861025c565b9173ffffffffffffffffffffffffffffffffffffffff91602435838116036100fb5760843567ffffffffffffffff8082116101275736602383011215610127578187013590811161012757369101602401116100fb57548216330361021b5750309116036101d957602082517f439148f0bbc682ca079e46d6e2c2f0c1e3b820f1a291b069d8882abf8cf18dd98152f35b6020606492519162461bcd60e51b8352820152602060248201527f466c617368426f72726f7765723a206e6f742074686520696e69746961746f726044820152fd5b62461bcd60e51b8152602084820152601860248201527f466c617368426f72726f7765723a20756e7472757374656400000000000000006044820152606490fd5b6004359073ffffffffffffffffffffffffffffffffffffffff8216820361027f57565b600080fdfea264697066735822122002c21f18e263d9202b2d2713c9566075a43742c97999141f5ffd50ac5c561bc664736f6c63430008120033", + "bytecode": "0x60803461007457601f61034a38819003918201601f19168301916001600160401b038311848410176100795780849260209460405283398101031261007457516001600160a01b0381169081900361007457600080546001600160a01b0319169190911790556040516102ba90816100908239f35b600080fd5b634e487b7160e01b600052604160045260246000fdfe608060408181526004908136101561001657600080fd5b600092833560e01c90816323e30c8b1461012b575063b53e48851461003a57600080fd5b3461012757806003193601126101275761005261025c565b91602073ffffffffffffffffffffffffffffffffffffffff60a481875416958786519788948593632e7ff4ef60e11b855230898601521660248401526024356044840152608060648401528160848401525af1801561011d576100b3578380f35b6020913d8311610115575b601f8301601f191684019167ffffffffffffffff8311858410176101025750526020908201829003126100fe5751801515036100fb573880808380f35b80fd5b5080fd5b634e487b7160e01b865260419052602485fd5b3d92506100be565b82513d86823e3d90fd5b8280fd5b91939050346100fb5760a03660031901126100fb5761014861025c565b9173ffffffffffffffffffffffffffffffffffffffff91602435838116036100fb5760843567ffffffffffffffff8082116101275736602383011215610127578187013590811161012757369101602401116100fb57548216330361021b5750309116036101d957602082517f439148f0bbc682ca079e46d6e2c2f0c1e3b820f1a291b069d8882abf8cf18dd98152f35b6020606492519162461bcd60e51b8352820152602060248201527f466c617368426f72726f7765723a206e6f742074686520696e69746961746f726044820152fd5b62461bcd60e51b8152602084820152601860248201527f466c617368426f72726f7765723a20756e7472757374656400000000000000006044820152606490fd5b6004359073ffffffffffffffffffffffffffffffffffffffff8216820361027f57565b600080fdfea264697066735822122036225d952a22ec116a703bc5319502aca477c8a021c5434fc9bf384169e8ad3764736f6c63430008120033", + "deployedBytecode": "0x608060408181526004908136101561001657600080fd5b600092833560e01c90816323e30c8b1461012b575063b53e48851461003a57600080fd5b3461012757806003193601126101275761005261025c565b91602073ffffffffffffffffffffffffffffffffffffffff60a481875416958786519788948593632e7ff4ef60e11b855230898601521660248401526024356044840152608060648401528160848401525af1801561011d576100b3578380f35b6020913d8311610115575b601f8301601f191684019167ffffffffffffffff8311858410176101025750526020908201829003126100fe5751801515036100fb573880808380f35b80fd5b5080fd5b634e487b7160e01b865260419052602485fd5b3d92506100be565b82513d86823e3d90fd5b8280fd5b91939050346100fb5760a03660031901126100fb5761014861025c565b9173ffffffffffffffffffffffffffffffffffffffff91602435838116036100fb5760843567ffffffffffffffff8082116101275736602383011215610127578187013590811161012757369101602401116100fb57548216330361021b5750309116036101d957602082517f439148f0bbc682ca079e46d6e2c2f0c1e3b820f1a291b069d8882abf8cf18dd98152f35b6020606492519162461bcd60e51b8352820152602060248201527f466c617368426f72726f7765723a206e6f742074686520696e69746961746f726044820152fd5b62461bcd60e51b8152602084820152601860248201527f466c617368426f72726f7765723a20756e7472757374656400000000000000006044820152606490fd5b6004359073ffffffffffffffffffffffffffffffffffffffff8216820361027f57565b600080fdfea264697066735822122036225d952a22ec116a703bc5319502aca477c8a021c5434fc9bf384169e8ad3764736f6c63430008120033", "linkReferences": {}, "deployedLinkReferences": {} } diff --git a/src/artifacts/tapioca-mocks/TOFTMock.json b/src/artifacts/tapioca-mocks/TOFTMock.json new file mode 100644 index 00000000..697e5c57 --- /dev/null +++ b/src/artifacts/tapioca-mocks/TOFTMock.json @@ -0,0 +1,107 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "TOFTMock", + "sourceName": "contracts/TOFTMock.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "_erc20", + "type": "address" + }, + { + "internalType": "address", + "name": "_tAsset", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "inputs": [], + "name": "erc20", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "erc20_", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "tAsset", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_toAddress", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_amount", + "type": "uint256" + } + ], + "name": "unwrap", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_fromAddress", + "type": "address" + }, + { + "internalType": "address", + "name": "_toAddress", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_amount", + "type": "uint256" + } + ], + "name": "wrap", + "outputs": [], + "stateMutability": "payable", + "type": "function" + } + ], + "bytecode": "0x60803461008d57601f6104ab38819003918201601f19168301916001600160401b0383118484101761009257808492604094855283398101031261008d57610052602061004b836100a8565b92016100a8565b600080546001600160a01b039384166001600160a01b031991821617909155600180549290931691161790556040516103ee90816100bd8239f35b600080fd5b634e487b7160e01b600052604160045260246000fd5b51906001600160a01b038216820361008d5756fe6080604052600436101561001257600080fd5b6000803560e01c806339f476931461011b578063403cd5ad146100f457806362355638146100a2578063785e9e861461007c5763e2eec30b1461005457600080fd5b346100795780600319360112610079576001600160a01b036020915416604051908152f35b80fd5b50346100795780600319360112610079576001600160a01b036020915416604051908152f35b506060366003190112610079576100b761015e565b6001600160a01b039060243582811681036100f0576100ed926100e46044358094838854169030916102d1565b600154166101f2565b80f35b8380fd5b503461007957806003193601126100795760206001600160a01b0360015416604051908152f35b5034610079576040366003190112610079576100ed61013861015e565b602435906001600160a01b03610156838260015416309033906102d1565b8454166101f2565b600435906001600160a01b038216820361017457565b600080fd5b3d156101d55767ffffffffffffffff903d8281116101bf5760405192601f8201601f19908116603f01168401908111848210176101bf5760405282523d6000602084013e565b634e487b7160e01b600052604160045260246000fd5b606090565b90816020910312610174575180151581036101745790565b91909160405191602083019063a9059cbb60e01b82526001600160a01b0380951660248501526044840152604483526080830183811067ffffffffffffffff8211176101bf57600094859485926040525193165af161024f610179565b816102a2575b501561025d57565b60405162461bcd60e51b815260206004820152601c60248201527f426f72696e6745524332303a205472616e73666572206661696c6564000000006044820152606490fd5b80518015925082156102b7575b505038610255565b6102ca92506020809183010191016101da565b38806102af565b909291926040519260208401916323b872dd60e01b83526001600160a01b039586809216602487015216604485015260648401526064835260a0830183811067ffffffffffffffff8211176101bf57600094859485926040525193165af1610337610179565b81610389575b501561034557565b606460405162461bcd60e51b815260206004820152602060248201527f426f72696e6745524332303a205472616e7366657246726f6d206661696c65646044820152fd5b805180159250821561039e575b50503861033d565b6103b192506020809183010191016101da565b388061039656fea2646970667358221220ea83643fa80984eeb0be843ff1afe7afe54678fee35f547730a480a60cc360e564736f6c63430008120033", + "deployedBytecode": "0x6080604052600436101561001257600080fd5b6000803560e01c806339f476931461011b578063403cd5ad146100f457806362355638146100a2578063785e9e861461007c5763e2eec30b1461005457600080fd5b346100795780600319360112610079576001600160a01b036020915416604051908152f35b80fd5b50346100795780600319360112610079576001600160a01b036020915416604051908152f35b506060366003190112610079576100b761015e565b6001600160a01b039060243582811681036100f0576100ed926100e46044358094838854169030916102d1565b600154166101f2565b80f35b8380fd5b503461007957806003193601126100795760206001600160a01b0360015416604051908152f35b5034610079576040366003190112610079576100ed61013861015e565b602435906001600160a01b03610156838260015416309033906102d1565b8454166101f2565b600435906001600160a01b038216820361017457565b600080fd5b3d156101d55767ffffffffffffffff903d8281116101bf5760405192601f8201601f19908116603f01168401908111848210176101bf5760405282523d6000602084013e565b634e487b7160e01b600052604160045260246000fd5b606090565b90816020910312610174575180151581036101745790565b91909160405191602083019063a9059cbb60e01b82526001600160a01b0380951660248501526044840152604483526080830183811067ffffffffffffffff8211176101bf57600094859485926040525193165af161024f610179565b816102a2575b501561025d57565b60405162461bcd60e51b815260206004820152601c60248201527f426f72696e6745524332303a205472616e73666572206661696c6564000000006044820152606490fd5b80518015925082156102b7575b505038610255565b6102ca92506020809183010191016101da565b38806102af565b909291926040519260208401916323b872dd60e01b83526001600160a01b039586809216602487015216604485015260648401526064835260a0830183811067ffffffffffffffff8211176101bf57600094859485926040525193165af1610337610179565b81610389575b501561034557565b606460405162461bcd60e51b815260206004820152602060248201527f426f72696e6745524332303a205472616e7366657246726f6d206661696c65646044820152fd5b805180159250821561039e575b50503861033d565b6103b192506020809183010191016101da565b388061039656fea2646970667358221220ea83643fa80984eeb0be843ff1afe7afe54678fee35f547730a480a60cc360e564736f6c63430008120033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/src/typechain/tapioca-mocks/TOFTMock.ts b/src/typechain/tapioca-mocks/TOFTMock.ts new file mode 100644 index 00000000..991ca71f --- /dev/null +++ b/src/typechain/tapioca-mocks/TOFTMock.ts @@ -0,0 +1,328 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + BaseContract, + BigNumber, + BigNumberish, + BytesLike, + CallOverrides, + ContractTransaction, + Overrides, + PayableOverrides, + PopulatedTransaction, + Signer, + utils, +} from "ethers"; +import type { FunctionFragment, Result } from "@ethersproject/abi"; +import type { Listener, Provider } from "@ethersproject/providers"; +import type { + TypedEventFilter, + TypedEvent, + TypedListener, + OnEvent, + PromiseOrValue, +} from "./common"; + +export interface TOFTMockInterface extends utils.Interface { + functions: { + "erc20()": FunctionFragment; + "erc20_()": FunctionFragment; + "tAsset()": FunctionFragment; + "unwrap(address,uint256)": FunctionFragment; + "wrap(address,address,uint256)": FunctionFragment; + }; + + getFunction( + nameOrSignatureOrTopic: + | "erc20" + | "erc20()" + | "erc20_" + | "erc20_()" + | "tAsset" + | "tAsset()" + | "unwrap" + | "unwrap(address,uint256)" + | "wrap" + | "wrap(address,address,uint256)" + ): FunctionFragment; + + encodeFunctionData(functionFragment: "erc20", values?: undefined): string; + encodeFunctionData(functionFragment: "erc20()", values?: undefined): string; + encodeFunctionData(functionFragment: "erc20_", values?: undefined): string; + encodeFunctionData(functionFragment: "erc20_()", values?: undefined): string; + encodeFunctionData(functionFragment: "tAsset", values?: undefined): string; + encodeFunctionData(functionFragment: "tAsset()", values?: undefined): string; + encodeFunctionData( + functionFragment: "unwrap", + values: [PromiseOrValue, PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "unwrap(address,uint256)", + values: [PromiseOrValue, PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "wrap", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + encodeFunctionData( + functionFragment: "wrap(address,address,uint256)", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + + decodeFunctionResult(functionFragment: "erc20", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "erc20()", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "erc20_", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "erc20_()", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "tAsset", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "tAsset()", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "unwrap", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "unwrap(address,uint256)", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "wrap", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "wrap(address,address,uint256)", + data: BytesLike + ): Result; + + events: {}; +} + +export interface TOFTMock extends BaseContract { + contractName: "TOFTMock"; + + connect(signerOrProvider: Signer | Provider | string): this; + attach(addressOrName: string): this; + deployed(): Promise; + + interface: TOFTMockInterface; + + queryFilter( + event: TypedEventFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>; + + listeners( + eventFilter?: TypedEventFilter + ): Array>; + listeners(eventName?: string): Array; + removeAllListeners( + eventFilter: TypedEventFilter + ): this; + removeAllListeners(eventName?: string): this; + off: OnEvent; + on: OnEvent; + once: OnEvent; + removeListener: OnEvent; + + functions: { + erc20(overrides?: CallOverrides): Promise<[string]>; + + "erc20()"(overrides?: CallOverrides): Promise<[string]>; + + erc20_(overrides?: CallOverrides): Promise<[string]>; + + "erc20_()"(overrides?: CallOverrides): Promise<[string]>; + + tAsset(overrides?: CallOverrides): Promise<[string]>; + + "tAsset()"(overrides?: CallOverrides): Promise<[string]>; + + unwrap( + _toAddress: PromiseOrValue, + _amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "unwrap(address,uint256)"( + _toAddress: PromiseOrValue, + _amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + wrap( + _fromAddress: PromiseOrValue, + _toAddress: PromiseOrValue, + _amount: PromiseOrValue, + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + "wrap(address,address,uint256)"( + _fromAddress: PromiseOrValue, + _toAddress: PromiseOrValue, + _amount: PromiseOrValue, + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + }; + + erc20(overrides?: CallOverrides): Promise; + + "erc20()"(overrides?: CallOverrides): Promise; + + erc20_(overrides?: CallOverrides): Promise; + + "erc20_()"(overrides?: CallOverrides): Promise; + + tAsset(overrides?: CallOverrides): Promise; + + "tAsset()"(overrides?: CallOverrides): Promise; + + unwrap( + _toAddress: PromiseOrValue, + _amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "unwrap(address,uint256)"( + _toAddress: PromiseOrValue, + _amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + wrap( + _fromAddress: PromiseOrValue, + _toAddress: PromiseOrValue, + _amount: PromiseOrValue, + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + "wrap(address,address,uint256)"( + _fromAddress: PromiseOrValue, + _toAddress: PromiseOrValue, + _amount: PromiseOrValue, + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + callStatic: { + erc20(overrides?: CallOverrides): Promise; + + "erc20()"(overrides?: CallOverrides): Promise; + + erc20_(overrides?: CallOverrides): Promise; + + "erc20_()"(overrides?: CallOverrides): Promise; + + tAsset(overrides?: CallOverrides): Promise; + + "tAsset()"(overrides?: CallOverrides): Promise; + + unwrap( + _toAddress: PromiseOrValue, + _amount: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "unwrap(address,uint256)"( + _toAddress: PromiseOrValue, + _amount: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + wrap( + _fromAddress: PromiseOrValue, + _toAddress: PromiseOrValue, + _amount: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "wrap(address,address,uint256)"( + _fromAddress: PromiseOrValue, + _toAddress: PromiseOrValue, + _amount: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + }; + + filters: {}; + + estimateGas: { + erc20(overrides?: CallOverrides): Promise; + + "erc20()"(overrides?: CallOverrides): Promise; + + erc20_(overrides?: CallOverrides): Promise; + + "erc20_()"(overrides?: CallOverrides): Promise; + + tAsset(overrides?: CallOverrides): Promise; + + "tAsset()"(overrides?: CallOverrides): Promise; + + unwrap( + _toAddress: PromiseOrValue, + _amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "unwrap(address,uint256)"( + _toAddress: PromiseOrValue, + _amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + wrap( + _fromAddress: PromiseOrValue, + _toAddress: PromiseOrValue, + _amount: PromiseOrValue, + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + "wrap(address,address,uint256)"( + _fromAddress: PromiseOrValue, + _toAddress: PromiseOrValue, + _amount: PromiseOrValue, + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + }; + + populateTransaction: { + erc20(overrides?: CallOverrides): Promise; + + "erc20()"(overrides?: CallOverrides): Promise; + + erc20_(overrides?: CallOverrides): Promise; + + "erc20_()"(overrides?: CallOverrides): Promise; + + tAsset(overrides?: CallOverrides): Promise; + + "tAsset()"(overrides?: CallOverrides): Promise; + + unwrap( + _toAddress: PromiseOrValue, + _amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "unwrap(address,uint256)"( + _toAddress: PromiseOrValue, + _amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + wrap( + _fromAddress: PromiseOrValue, + _toAddress: PromiseOrValue, + _amount: PromiseOrValue, + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + "wrap(address,address,uint256)"( + _fromAddress: PromiseOrValue, + _toAddress: PromiseOrValue, + _amount: PromiseOrValue, + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + }; +} diff --git a/src/typechain/tapioca-mocks/factories/FlashBorrowerMock.sol/FlashBorrowerMock__factory.ts b/src/typechain/tapioca-mocks/factories/FlashBorrowerMock.sol/FlashBorrowerMock__factory.ts index 8ca6c398..c0f609dc 100644 --- a/src/typechain/tapioca-mocks/factories/FlashBorrowerMock.sol/FlashBorrowerMock__factory.ts +++ b/src/typechain/tapioca-mocks/factories/FlashBorrowerMock.sol/FlashBorrowerMock__factory.ts @@ -99,7 +99,7 @@ const _abi = [ ] as const; const _bytecode = - "0x60803461007457601f61052238819003918201601f19168301916001600160401b038311848410176100795780849260209460405283398101031261007457516001600160a01b0381169081900361007457600080546001600160a01b03191691909117905560405161049290816100908239f35b600080fd5b634e487b7160e01b600052604160045260246000fdfe60806040818152600436101561001457600080fd5b600091823560e01c90816323e30c8b1461011f57508063736ddf3b146100f55763b53e48851461004357600080fd5b346100f157806003193601126100f15761005b610249565b9060206024359261006c84826102d7565b60a46001600160a01b0391868381541686519788958694632e7ff4ef60e11b86523060048701521660248501526044840152608060648401528160848401525af19081156100e857506100bd575080f35b6100dd9060203d81116100e1575b6100d58183610264565b81019061029c565b5080f35b503d6100cb565b513d84823e3d90fd5b5080fd5b50346100f15736600319011261011c57610119610110610249565b602435906102d7565b80f35b80fd5b9050823461011c5760a036600319011261011c5761013b610249565b916001600160a01b03916024358381160361011c5760843567ffffffffffffffff8082116102455736602383011215610245578160040135908111610245573691016024011161011c5754821633036102035750309116036101c057602090517f439148f0bbc682ca079e46d6e2c2f0c1e3b820f1a291b069d8882abf8cf18dd98152f35b5162461bcd60e51b815260206004820181905260248201527f466c617368426f72726f7765723a206e6f742074686520696e69746961746f726044820152606490fd5b62461bcd60e51b815260206004820152601860248201527f466c617368426f72726f7765723a20756e7472757374656400000000000000006044820152606490fd5b8280fd5b600435906001600160a01b038216820361025f57565b600080fd5b90601f8019910116810190811067ffffffffffffffff82111761028657604052565b634e487b7160e01b600052604160045260246000fd5b9081602091031261025f5751801515810361025f5790565b919082018092116102c157565b634e487b7160e01b600052601160045260246000fd5b6000906001600160a01b038254166040918251636eb1769f60e11b81523060048201528260248201526020958682604481875afa918215610423578790879361042d575b508551633676633960e21b81526001600160a01b039490941660048501526024840182905291929182604481875afa918215610423579187939187959386926103e2575b5091610372610378926103aa95946102b4565b906102b4565b855163095ea7b360e01b81526001600160a01b0383166004820152602481019190915295869283919082906044820190565b03925af19182156103d85750506103bf575050565b816103d592903d106100e1576100d58183610264565b50565b51903d90823e3d90fd5b929483919496508092503d831161041c575b6103fe8183610264565b81010312610418575185938793909290919061037261035f565b8580fd5b503d6103f4565b85513d88823e3d90fd5b80929350813d8311610455575b6104448183610264565b81010312610418575190868161031b565b503d61043a56fea2646970667358221220e101004e9d9678f348a97f2560099bc35b6124d207ee65898108afbba423d1f464736f6c63430008120033"; + "0x60803461007457601f61052238819003918201601f19168301916001600160401b038311848410176100795780849260209460405283398101031261007457516001600160a01b0381169081900361007457600080546001600160a01b03191691909117905560405161049290816100908239f35b600080fd5b634e487b7160e01b600052604160045260246000fdfe60806040818152600436101561001457600080fd5b600091823560e01c90816323e30c8b1461011f57508063736ddf3b146100f55763b53e48851461004357600080fd5b346100f157806003193601126100f15761005b610249565b9060206024359261006c84826102d7565b60a46001600160a01b0391868381541686519788958694632e7ff4ef60e11b86523060048701521660248501526044840152608060648401528160848401525af19081156100e857506100bd575080f35b6100dd9060203d81116100e1575b6100d58183610264565b81019061029c565b5080f35b503d6100cb565b513d84823e3d90fd5b5080fd5b50346100f15736600319011261011c57610119610110610249565b602435906102d7565b80f35b80fd5b9050823461011c5760a036600319011261011c5761013b610249565b916001600160a01b03916024358381160361011c5760843567ffffffffffffffff8082116102455736602383011215610245578160040135908111610245573691016024011161011c5754821633036102035750309116036101c057602090517f439148f0bbc682ca079e46d6e2c2f0c1e3b820f1a291b069d8882abf8cf18dd98152f35b5162461bcd60e51b815260206004820181905260248201527f466c617368426f72726f7765723a206e6f742074686520696e69746961746f726044820152606490fd5b62461bcd60e51b815260206004820152601860248201527f466c617368426f72726f7765723a20756e7472757374656400000000000000006044820152606490fd5b8280fd5b600435906001600160a01b038216820361025f57565b600080fd5b90601f8019910116810190811067ffffffffffffffff82111761028657604052565b634e487b7160e01b600052604160045260246000fd5b9081602091031261025f5751801515810361025f5790565b919082018092116102c157565b634e487b7160e01b600052601160045260246000fd5b6000906001600160a01b038254166040918251636eb1769f60e11b81523060048201528260248201526020958682604481875afa918215610423578790879361042d575b508551633676633960e21b81526001600160a01b039490941660048501526024840182905291929182604481875afa918215610423579187939187959386926103e2575b5091610372610378926103aa95946102b4565b906102b4565b855163095ea7b360e01b81526001600160a01b0383166004820152602481019190915295869283919082906044820190565b03925af19182156103d85750506103bf575050565b816103d592903d106100e1576100d58183610264565b50565b51903d90823e3d90fd5b929483919496508092503d831161041c575b6103fe8183610264565b81010312610418575185938793909290919061037261035f565b8580fd5b503d6103f4565b85513d88823e3d90fd5b80929350813d8311610455575b6104448183610264565b81010312610418575190868161031b565b503d61043a56fea2646970667358221220fb96064838e721b974489d0cbb7dc332f8dcfae86f734bf6c4c33eb10a0f6a5164736f6c63430008120033"; type FlashBorrowerMockConstructorParams = | [signer?: Signer] diff --git a/src/typechain/tapioca-mocks/factories/FlashBorrowerMock.sol/FlashMaliciousBorrowerMock__factory.ts b/src/typechain/tapioca-mocks/factories/FlashBorrowerMock.sol/FlashMaliciousBorrowerMock__factory.ts index b9ff232f..f9f300c9 100644 --- a/src/typechain/tapioca-mocks/factories/FlashBorrowerMock.sol/FlashMaliciousBorrowerMock__factory.ts +++ b/src/typechain/tapioca-mocks/factories/FlashBorrowerMock.sol/FlashMaliciousBorrowerMock__factory.ts @@ -81,7 +81,7 @@ const _abi = [ ] as const; const _bytecode = - "0x60803461007457601f61034a38819003918201601f19168301916001600160401b038311848410176100795780849260209460405283398101031261007457516001600160a01b0381169081900361007457600080546001600160a01b0319169190911790556040516102ba90816100908239f35b600080fd5b634e487b7160e01b600052604160045260246000fdfe608060408181526004908136101561001657600080fd5b600092833560e01c90816323e30c8b1461012b575063b53e48851461003a57600080fd5b3461012757806003193601126101275761005261025c565b91602073ffffffffffffffffffffffffffffffffffffffff60a481875416958786519788948593632e7ff4ef60e11b855230898601521660248401526024356044840152608060648401528160848401525af1801561011d576100b3578380f35b6020913d8311610115575b601f8301601f191684019167ffffffffffffffff8311858410176101025750526020908201829003126100fe5751801515036100fb573880808380f35b80fd5b5080fd5b634e487b7160e01b865260419052602485fd5b3d92506100be565b82513d86823e3d90fd5b8280fd5b91939050346100fb5760a03660031901126100fb5761014861025c565b9173ffffffffffffffffffffffffffffffffffffffff91602435838116036100fb5760843567ffffffffffffffff8082116101275736602383011215610127578187013590811161012757369101602401116100fb57548216330361021b5750309116036101d957602082517f439148f0bbc682ca079e46d6e2c2f0c1e3b820f1a291b069d8882abf8cf18dd98152f35b6020606492519162461bcd60e51b8352820152602060248201527f466c617368426f72726f7765723a206e6f742074686520696e69746961746f726044820152fd5b62461bcd60e51b8152602084820152601860248201527f466c617368426f72726f7765723a20756e7472757374656400000000000000006044820152606490fd5b6004359073ffffffffffffffffffffffffffffffffffffffff8216820361027f57565b600080fdfea264697066735822122002c21f18e263d9202b2d2713c9566075a43742c97999141f5ffd50ac5c561bc664736f6c63430008120033"; + "0x60803461007457601f61034a38819003918201601f19168301916001600160401b038311848410176100795780849260209460405283398101031261007457516001600160a01b0381169081900361007457600080546001600160a01b0319169190911790556040516102ba90816100908239f35b600080fd5b634e487b7160e01b600052604160045260246000fdfe608060408181526004908136101561001657600080fd5b600092833560e01c90816323e30c8b1461012b575063b53e48851461003a57600080fd5b3461012757806003193601126101275761005261025c565b91602073ffffffffffffffffffffffffffffffffffffffff60a481875416958786519788948593632e7ff4ef60e11b855230898601521660248401526024356044840152608060648401528160848401525af1801561011d576100b3578380f35b6020913d8311610115575b601f8301601f191684019167ffffffffffffffff8311858410176101025750526020908201829003126100fe5751801515036100fb573880808380f35b80fd5b5080fd5b634e487b7160e01b865260419052602485fd5b3d92506100be565b82513d86823e3d90fd5b8280fd5b91939050346100fb5760a03660031901126100fb5761014861025c565b9173ffffffffffffffffffffffffffffffffffffffff91602435838116036100fb5760843567ffffffffffffffff8082116101275736602383011215610127578187013590811161012757369101602401116100fb57548216330361021b5750309116036101d957602082517f439148f0bbc682ca079e46d6e2c2f0c1e3b820f1a291b069d8882abf8cf18dd98152f35b6020606492519162461bcd60e51b8352820152602060248201527f466c617368426f72726f7765723a206e6f742074686520696e69746961746f726044820152fd5b62461bcd60e51b8152602084820152601860248201527f466c617368426f72726f7765723a20756e7472757374656400000000000000006044820152606490fd5b6004359073ffffffffffffffffffffffffffffffffffffffff8216820361027f57565b600080fdfea264697066735822122036225d952a22ec116a703bc5319502aca477c8a021c5434fc9bf384169e8ad3764736f6c63430008120033"; type FlashMaliciousBorrowerMockConstructorParams = | [signer?: Signer] diff --git a/src/typechain/tapioca-mocks/factories/TOFTMock__factory.ts b/src/typechain/tapioca-mocks/factories/TOFTMock__factory.ts new file mode 100644 index 00000000..9fd999d7 --- /dev/null +++ b/src/typechain/tapioca-mocks/factories/TOFTMock__factory.ts @@ -0,0 +1,164 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import { Signer, utils, Contract, ContractFactory, Overrides } from "ethers"; +import type { Provider, TransactionRequest } from "@ethersproject/providers"; +import type { PromiseOrValue } from "../common"; +import type { TOFTMock, TOFTMockInterface } from "../TOFTMock"; + +const _abi = [ + { + inputs: [ + { + internalType: "address", + name: "_erc20", + type: "address", + }, + { + internalType: "address", + name: "_tAsset", + type: "address", + }, + ], + stateMutability: "nonpayable", + type: "constructor", + }, + { + inputs: [], + name: "erc20", + outputs: [ + { + internalType: "address", + name: "", + type: "address", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "erc20_", + outputs: [ + { + internalType: "address", + name: "", + type: "address", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "tAsset", + outputs: [ + { + internalType: "address", + name: "", + type: "address", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "_toAddress", + type: "address", + }, + { + internalType: "uint256", + name: "_amount", + type: "uint256", + }, + ], + name: "unwrap", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "_fromAddress", + type: "address", + }, + { + internalType: "address", + name: "_toAddress", + type: "address", + }, + { + internalType: "uint256", + name: "_amount", + type: "uint256", + }, + ], + name: "wrap", + outputs: [], + stateMutability: "payable", + type: "function", + }, +] as const; + +const _bytecode = + "0x60803461008d57601f6104ab38819003918201601f19168301916001600160401b0383118484101761009257808492604094855283398101031261008d57610052602061004b836100a8565b92016100a8565b600080546001600160a01b039384166001600160a01b031991821617909155600180549290931691161790556040516103ee90816100bd8239f35b600080fd5b634e487b7160e01b600052604160045260246000fd5b51906001600160a01b038216820361008d5756fe6080604052600436101561001257600080fd5b6000803560e01c806339f476931461011b578063403cd5ad146100f457806362355638146100a2578063785e9e861461007c5763e2eec30b1461005457600080fd5b346100795780600319360112610079576001600160a01b036020915416604051908152f35b80fd5b50346100795780600319360112610079576001600160a01b036020915416604051908152f35b506060366003190112610079576100b761015e565b6001600160a01b039060243582811681036100f0576100ed926100e46044358094838854169030916102d1565b600154166101f2565b80f35b8380fd5b503461007957806003193601126100795760206001600160a01b0360015416604051908152f35b5034610079576040366003190112610079576100ed61013861015e565b602435906001600160a01b03610156838260015416309033906102d1565b8454166101f2565b600435906001600160a01b038216820361017457565b600080fd5b3d156101d55767ffffffffffffffff903d8281116101bf5760405192601f8201601f19908116603f01168401908111848210176101bf5760405282523d6000602084013e565b634e487b7160e01b600052604160045260246000fd5b606090565b90816020910312610174575180151581036101745790565b91909160405191602083019063a9059cbb60e01b82526001600160a01b0380951660248501526044840152604483526080830183811067ffffffffffffffff8211176101bf57600094859485926040525193165af161024f610179565b816102a2575b501561025d57565b60405162461bcd60e51b815260206004820152601c60248201527f426f72696e6745524332303a205472616e73666572206661696c6564000000006044820152606490fd5b80518015925082156102b7575b505038610255565b6102ca92506020809183010191016101da565b38806102af565b909291926040519260208401916323b872dd60e01b83526001600160a01b039586809216602487015216604485015260648401526064835260a0830183811067ffffffffffffffff8211176101bf57600094859485926040525193165af1610337610179565b81610389575b501561034557565b606460405162461bcd60e51b815260206004820152602060248201527f426f72696e6745524332303a205472616e7366657246726f6d206661696c65646044820152fd5b805180159250821561039e575b50503861033d565b6103b192506020809183010191016101da565b388061039656fea2646970667358221220ea83643fa80984eeb0be843ff1afe7afe54678fee35f547730a480a60cc360e564736f6c63430008120033"; + +type TOFTMockConstructorParams = + | [signer?: Signer] + | ConstructorParameters; + +const isSuperArgs = ( + xs: TOFTMockConstructorParams +): xs is ConstructorParameters => xs.length > 1; + +export class TOFTMock__factory extends ContractFactory { + constructor(...args: TOFTMockConstructorParams) { + if (isSuperArgs(args)) { + super(...args); + } else { + super(_abi, _bytecode, args[0]); + } + this.contractName = "TOFTMock"; + } + + override deploy( + _erc20: PromiseOrValue, + _tAsset: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise { + return super.deploy(_erc20, _tAsset, overrides || {}) as Promise; + } + override getDeployTransaction( + _erc20: PromiseOrValue, + _tAsset: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): TransactionRequest { + return super.getDeployTransaction(_erc20, _tAsset, overrides || {}); + } + override attach(address: string): TOFTMock { + return super.attach(address) as TOFTMock; + } + override connect(signer: Signer): TOFTMock__factory { + return super.connect(signer) as TOFTMock__factory; + } + static readonly contractName: "TOFTMock"; + + public readonly contractName: "TOFTMock"; + + static readonly bytecode = _bytecode; + static readonly abi = _abi; + static createInterface(): TOFTMockInterface { + return new utils.Interface(_abi) as TOFTMockInterface; + } + static connect( + address: string, + signerOrProvider: Signer | Provider + ): TOFTMock { + return new Contract(address, _abi, signerOrProvider) as TOFTMock; + } +} diff --git a/src/typechain/tapioca-mocks/factories/index.ts b/src/typechain/tapioca-mocks/factories/index.ts index 6f9361ca..b9c85795 100644 --- a/src/typechain/tapioca-mocks/factories/index.ts +++ b/src/typechain/tapioca-mocks/factories/index.ts @@ -18,6 +18,7 @@ export { MultisigMock__factory } from "./MultisigMock__factory"; export { OracleMock__factory } from "./OracleMock__factory"; export { StargateRouterETHMock__factory } from "./StargateRouterETHMock__factory"; export { StargateRouterMock__factory } from "./StargateRouterMock__factory"; +export { TOFTMock__factory } from "./TOFTMock__factory"; export { TOFTStrategyMock__factory } from "./TOFTStrategyMock__factory"; export { TapiocaDeployerMock__factory } from "./TapiocaDeployerMock__factory"; export { UniswapV2RouterMock__factory } from "./UniswapV2RouterMock__factory"; diff --git a/src/typechain/tapioca-mocks/hardhat.d.ts b/src/typechain/tapioca-mocks/hardhat.d.ts index 0de7204e..0631d196 100644 --- a/src/typechain/tapioca-mocks/hardhat.d.ts +++ b/src/typechain/tapioca-mocks/hardhat.d.ts @@ -84,6 +84,10 @@ declare module "hardhat/types/runtime" { name: "TapiocaDeployerMock", signerOrOptions?: ethers.Signer | FactoryOptions ): Promise; + getContractFactory( + name: "TOFTMock", + signerOrOptions?: ethers.Signer | FactoryOptions + ): Promise; getContractFactory( name: "TOFTStrategyMock", signerOrOptions?: ethers.Signer | FactoryOptions @@ -215,6 +219,11 @@ declare module "hardhat/types/runtime" { address: string, signer?: ethers.Signer ): Promise; + getContractAt( + name: "TOFTMock", + address: string, + signer?: ethers.Signer + ): Promise; getContractAt( name: "TOFTStrategyMock", address: string, diff --git a/src/typechain/tapioca-mocks/index.ts b/src/typechain/tapioca-mocks/index.ts index 69cbe95f..1e1439b4 100644 --- a/src/typechain/tapioca-mocks/index.ts +++ b/src/typechain/tapioca-mocks/index.ts @@ -22,6 +22,7 @@ export type { MultisigMock } from "./MultisigMock"; export type { OracleMock } from "./OracleMock"; export type { StargateRouterETHMock } from "./StargateRouterETHMock"; export type { StargateRouterMock } from "./StargateRouterMock"; +export type { TOFTMock } from "./TOFTMock"; export type { TOFTStrategyMock } from "./TOFTStrategyMock"; export type { TapiocaDeployerMock } from "./TapiocaDeployerMock"; export type { UniswapV2RouterMock } from "./UniswapV2RouterMock"; @@ -51,6 +52,7 @@ export { ReceiverTest__factory } from "./factories/research/ReceiverTest__factor export { StargateRouterETHMock__factory } from "./factories/StargateRouterETHMock__factory"; export { StargateRouterMock__factory } from "./factories/StargateRouterMock__factory"; export { TapiocaDeployerMock__factory } from "./factories/TapiocaDeployerMock__factory"; +export { TOFTMock__factory } from "./factories/TOFTMock__factory"; export { TOFTStrategyMock__factory } from "./factories/TOFTStrategyMock__factory"; export type { TwTwapMock } from "./TwTapMock.sol/TwTwapMock"; export { TwTwapMock__factory } from "./factories/TwTapMock.sol/TwTwapMock__factory"; From 1e973e93fd31eae62769ef934e89f5681b2a9b7e Mon Sep 17 00:00:00 2001 From: cryptotechmaker Date: Thu, 19 Oct 2023 11:29:23 +0300 Subject: [PATCH 2/6] mocks artifacts --- src/artifacts/tapioca-mocks/TOFTMock.json | 252 +++++- src/typechain/tapioca-mocks/TOFTMock.ts | 754 +++++++++++++++++- .../factories/TOFTMock__factory.ts | 256 +++++- 3 files changed, 1227 insertions(+), 35 deletions(-) diff --git a/src/artifacts/tapioca-mocks/TOFTMock.json b/src/artifacts/tapioca-mocks/TOFTMock.json index 697e5c57..b3c8b98e 100644 --- a/src/artifacts/tapioca-mocks/TOFTMock.json +++ b/src/artifacts/tapioca-mocks/TOFTMock.json @@ -9,15 +9,140 @@ "internalType": "address", "name": "_erc20", "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Approval", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Transfer", + "type": "event" + }, + { + "inputs": [], + "name": "DOMAIN_SEPARATOR", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" }, { "internalType": "address", - "name": "_tAsset", + "name": "", + "type": "address" + } + ], + "name": "allowance", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" } ], "stateMutability": "nonpayable", - "type": "constructor" + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" }, { "inputs": [], @@ -45,17 +170,132 @@ "stateMutability": "view", "type": "function" }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "nonces", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner_", + "type": "address" + }, + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + }, + { + "internalType": "uint8", + "name": "v", + "type": "uint8" + }, + { + "internalType": "bytes32", + "name": "r", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "s", + "type": "bytes32" + } + ], + "name": "permit", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, { "inputs": [], - "name": "tAsset", + "name": "totalSupply", "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ { "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "transfer", + "outputs": [ + { + "internalType": "bool", "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" } ], - "stateMutability": "view", + "name": "transferFrom", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", "type": "function" }, { @@ -100,8 +340,8 @@ "type": "function" } ], - "bytecode": "0x60803461008d57601f6104ab38819003918201601f19168301916001600160401b0383118484101761009257808492604094855283398101031261008d57610052602061004b836100a8565b92016100a8565b600080546001600160a01b039384166001600160a01b031991821617909155600180549290931691161790556040516103ee90816100bd8239f35b600080fd5b634e487b7160e01b600052604160045260246000fd5b51906001600160a01b038216820361008d5756fe6080604052600436101561001257600080fd5b6000803560e01c806339f476931461011b578063403cd5ad146100f457806362355638146100a2578063785e9e861461007c5763e2eec30b1461005457600080fd5b346100795780600319360112610079576001600160a01b036020915416604051908152f35b80fd5b50346100795780600319360112610079576001600160a01b036020915416604051908152f35b506060366003190112610079576100b761015e565b6001600160a01b039060243582811681036100f0576100ed926100e46044358094838854169030916102d1565b600154166101f2565b80f35b8380fd5b503461007957806003193601126100795760206001600160a01b0360015416604051908152f35b5034610079576040366003190112610079576100ed61013861015e565b602435906001600160a01b03610156838260015416309033906102d1565b8454166101f2565b600435906001600160a01b038216820361017457565b600080fd5b3d156101d55767ffffffffffffffff903d8281116101bf5760405192601f8201601f19908116603f01168401908111848210176101bf5760405282523d6000602084013e565b634e487b7160e01b600052604160045260246000fd5b606090565b90816020910312610174575180151581036101745790565b91909160405191602083019063a9059cbb60e01b82526001600160a01b0380951660248501526044840152604483526080830183811067ffffffffffffffff8211176101bf57600094859485926040525193165af161024f610179565b816102a2575b501561025d57565b60405162461bcd60e51b815260206004820152601c60248201527f426f72696e6745524332303a205472616e73666572206661696c6564000000006044820152606490fd5b80518015925082156102b7575b505038610255565b6102ca92506020809183010191016101da565b38806102af565b909291926040519260208401916323b872dd60e01b83526001600160a01b039586809216602487015216604485015260648401526064835260a0830183811067ffffffffffffffff8211176101bf57600094859485926040525193165af1610337610179565b81610389575b501561034557565b606460405162461bcd60e51b815260206004820152602060248201527f426f72696e6745524332303a205472616e7366657246726f6d206661696c65646044820152fd5b805180159250821561039e575b50503861033d565b6103b192506020809183010191016101da565b388061039656fea2646970667358221220ea83643fa80984eeb0be843ff1afe7afe54678fee35f547730a480a60cc360e564736f6c63430008120033", - "deployedBytecode": "0x6080604052600436101561001257600080fd5b6000803560e01c806339f476931461011b578063403cd5ad146100f457806362355638146100a2578063785e9e861461007c5763e2eec30b1461005457600080fd5b346100795780600319360112610079576001600160a01b036020915416604051908152f35b80fd5b50346100795780600319360112610079576001600160a01b036020915416604051908152f35b506060366003190112610079576100b761015e565b6001600160a01b039060243582811681036100f0576100ed926100e46044358094838854169030916102d1565b600154166101f2565b80f35b8380fd5b503461007957806003193601126100795760206001600160a01b0360015416604051908152f35b5034610079576040366003190112610079576100ed61013861015e565b602435906001600160a01b03610156838260015416309033906102d1565b8454166101f2565b600435906001600160a01b038216820361017457565b600080fd5b3d156101d55767ffffffffffffffff903d8281116101bf5760405192601f8201601f19908116603f01168401908111848210176101bf5760405282523d6000602084013e565b634e487b7160e01b600052604160045260246000fd5b606090565b90816020910312610174575180151581036101745790565b91909160405191602083019063a9059cbb60e01b82526001600160a01b0380951660248501526044840152604483526080830183811067ffffffffffffffff8211176101bf57600094859485926040525193165af161024f610179565b816102a2575b501561025d57565b60405162461bcd60e51b815260206004820152601c60248201527f426f72696e6745524332303a205472616e73666572206661696c6564000000006044820152606490fd5b80518015925082156102b7575b505038610255565b6102ca92506020809183010191016101da565b38806102af565b909291926040519260208401916323b872dd60e01b83526001600160a01b039586809216602487015216604485015260648401526064835260a0830183811067ffffffffffffffff8211176101bf57600094859485926040525193165af1610337610179565b81610389575b501561034557565b606460405162461bcd60e51b815260206004820152602060248201527f426f72696e6745524332303a205472616e7366657246726f6d206661696c65646044820152fd5b805180159250821561039e575b50503861033d565b6103b192506020809183010191016101da565b388061039656fea2646970667358221220ea83643fa80984eeb0be843ff1afe7afe54678fee35f547730a480a60cc360e564736f6c63430008120033", + "bytecode": "0x60c0346100f0576001600160401b0390601f610eb838819003918201601f1916830191848311848410176100da578084926020946040528339810103126100f057516001600160a01b038116908190036100f0574660a05260405160208101907f47e79534a245952e8b16893a336b85a3d9ea9fa8c573f3d803afb92a794692188252466040820152306060820152606081526080810193818510908511176100da578360405251902060805260018060a01b03196004541617600455610dc290816100f6823960805181610c74015260a05181610c4e0152f35b634e487b7160e01b600052604160045260246000fd5b600080fdfe608060408181526004918236101561001657600080fd5b600090813560e01c908163095ea7b314610aac5750806318160ddd14610a8d57806323b872dd146108d25780633644e515146108ae57806339f4769314610720578063623556381461057f57806370a0823114610549578063785e9e86146105235780637ecebe00146104ec578063a9059cbb14610412578063d505accf14610128578063dd62ed3e146100db5763e2eec30b146100b357600080fd5b346100d857806003193601126100d857506001600160a01b0360209254169051908152f35b80fd5b509034610124578060031936011261012457806020926100f9610b1d565b610101610b38565b6001600160a01b0391821683526001865283832091168252845220549051908152f35b5080fd5b5091903461040e5760e036600319011261040e57610144610b1d565b9061014d610b38565b9060443590606435946084359460ff861680960361040a576001600160a01b038091169586156103c757874210156103845786895260209560028752848a20988954996000198b146103715760018b01905585519084898301937f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c985528b89850152169a8b606084015288608084015260a083015260c082015260c0815260e081019167ffffffffffffffff908284108285111761035e57838852825190209061012083019081118482101761035e57918c93918a959389526002835261010061190160f01b8184015261023f610c4b565b928a51945191875b83811061033757505050838093610276936060936080989701918a8301528c820152038a810184520182610d12565b8481519101209087519182528482015260a4358782015260c435606082015282805260015afa1561032d578590885116036102ec5750907f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259291848752600183528087208688528352818188205551908152a380f35b83606492519162461bcd60e51b8352820152601860248201527f45524332303a20496e76616c6964205369676e617475726500000000000000006044820152fd5b82513d89823e3d90fd5b90829496985081819496989a9301015182828a01015201918f969492918d98969492610247565b634e487b7160e01b8d526041875260248dfd5b634e487b7160e01b8c526011865260248cfd5b835162461bcd60e51b8152602081850152600e60248201527f45524332303a20457870697265640000000000000000000000000000000000006044820152606490fd5b835162461bcd60e51b8152602081850152601860248201527f45524332303a204f776e65722063616e6e6f74206265203000000000000000006044820152606490fd5b8780fd5b8280fd5b5090346101245780600319360112610124576020916001600160a01b03610437610b1d565b836024359384158015906104e1575b61047e575b505192835216907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef843392a35160018152f35b3381528087528181205461049486821015610b83565b84841690868233036104a9575b50505061044b565b6104bd916104b8841515610bcf565b610c1b565b338352828952838320558152206104d5848254610c3e565b905583868080866104a1565b508383163314610446565b50903461012457602036600319011261012457806020926001600160a01b03610513610b1d565b1681526002845220549051908152f35b50346100d857806003193601126100d857506001600160a01b0360209254169051908152f35b50903461012457602036600319011261012457806020926001600160a01b03610570610b1d565b16815280845220549051908152f35b50919061058b36610b4e565b90929160035461059b8382610c3e565b9081106106dd576003556001600160a01b03809416938487526020948786528488206105c8858254610c3e565b9055877fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef878751878152a38086541692845191868301936323b872dd60e01b855216602483015230604483015260648201526064815260a0810181811067ffffffffffffffff8211176106ca57845251869283929083905af1610649610d34565b8161069a575b5015610659578380f35b5162461bcd60e51b815291820181905260248201527f426f72696e6745524332303a205472616e7366657246726f6d206661696c6564604482015260649150fd5b805180159250849083156106b2575b5050503861064f565b6106c29350820181019101610d74565b3883816106a9565b634e487b7160e01b885260418752602488fd5b835162461bcd60e51b8152602081880152600d60248201527f4d696e74206f766572666c6f77000000000000000000000000000000000000006044820152606490fd5b5091903461040e578060031936011261040e5761073b610b1d565b9060243533855260209285845281838720541061086b57818692916107638493600354610c1b565b60035533835282865284832061077a838254610c1b565b90558285518381527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef883392a3826001600160a01b0380895416938751918983019463a9059cbb60e01b86521660248301526044820152604481526107de81610ce0565b51925af16107ea610d34565b8161083b575b50156107fa578380f35b5162461bcd60e51b815291820152601c60248201527f426f72696e6745524332303a205472616e73666572206661696c656400000000604482015260649150fd5b80518015925084908315610853575b505050386107f0565b6108639350820181019101610d74565b38838161084a565b50505162461bcd60e51b815291820152600d60248201527f4275726e20746f6f206d75636800000000000000000000000000000000000000604482015260649150fd5b5090346101245781600319360112610124576020906108cb610c4b565b9051908152f35b50346100d8576108e136610b4e565b91928261092c575b5060208095507fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9185519384526001600160a01b03809116941692a35160018152f35b6001600160a01b039586851696878352602090838252878420549061095387831015610b83565b851692838a03610967575b505050506108e9565b898552600183528885203386528352888520549060001982036109e3575b50509282602099828a946109c28a8e996104b87fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9c9a1515610bcf565b92825252838320558152206109d8858254610c3e565b90559138808061095e565b878210610a4a575092602099858a946109c28a8e9996610a25827fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9d9b610c1b565b8686526001855289862033875285528986205596505050945095509981949650610985565b895162461bcd60e51b8152908101849052601860248201527f45524332303a20616c6c6f77616e636520746f6f206c6f7700000000000000006044820152606490fd5b5090346101245781600319360112610124576020906003549051908152f35b8391503461040e578160031936011261040e579160209282610acc610b1d565b92602435918291338152600188526001600160a01b038282209616958682528852205581527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925843392a35160018152f35b600435906001600160a01b0382168203610b3357565b600080fd5b602435906001600160a01b0382168203610b3357565b6060906003190112610b33576001600160a01b03906004358281168103610b3357916024359081168103610b33579060443590565b15610b8a57565b60405162461bcd60e51b815260206004820152601660248201527f45524332303a2062616c616e636520746f6f206c6f77000000000000000000006044820152606490fd5b15610bd657565b60405162461bcd60e51b815260206004820152601660248201527f45524332303a206e6f207a65726f2061646472657373000000000000000000006044820152606490fd5b91908203918211610c2857565b634e487b7160e01b600052601160045260246000fd5b91908201809211610c2857565b467f000000000000000000000000000000000000000000000000000000000000000003610c96577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f47e79534a245952e8b16893a336b85a3d9ea9fa8c573f3d803afb92a79469218825246604082015230606082015260608152610cda81610ce0565b51902090565b6080810190811067ffffffffffffffff821117610cfc57604052565b634e487b7160e01b600052604160045260246000fd5b90601f8019910116810190811067ffffffffffffffff821117610cfc57604052565b3d15610d6f573d9067ffffffffffffffff8211610cfc5760405191610d63601f8201601f191660200184610d12565b82523d6000602084013e565b606090565b90816020910312610b3357518015158103610b33579056fea264697066735822122003001f0d82dcccec76e471dc6a028be64021db27784f38cf1fee9c40db67bd2264736f6c63430008120033", + "deployedBytecode": "0x608060408181526004918236101561001657600080fd5b600090813560e01c908163095ea7b314610aac5750806318160ddd14610a8d57806323b872dd146108d25780633644e515146108ae57806339f4769314610720578063623556381461057f57806370a0823114610549578063785e9e86146105235780637ecebe00146104ec578063a9059cbb14610412578063d505accf14610128578063dd62ed3e146100db5763e2eec30b146100b357600080fd5b346100d857806003193601126100d857506001600160a01b0360209254169051908152f35b80fd5b509034610124578060031936011261012457806020926100f9610b1d565b610101610b38565b6001600160a01b0391821683526001865283832091168252845220549051908152f35b5080fd5b5091903461040e5760e036600319011261040e57610144610b1d565b9061014d610b38565b9060443590606435946084359460ff861680960361040a576001600160a01b038091169586156103c757874210156103845786895260209560028752848a20988954996000198b146103715760018b01905585519084898301937f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c985528b89850152169a8b606084015288608084015260a083015260c082015260c0815260e081019167ffffffffffffffff908284108285111761035e57838852825190209061012083019081118482101761035e57918c93918a959389526002835261010061190160f01b8184015261023f610c4b565b928a51945191875b83811061033757505050838093610276936060936080989701918a8301528c820152038a810184520182610d12565b8481519101209087519182528482015260a4358782015260c435606082015282805260015afa1561032d578590885116036102ec5750907f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259291848752600183528087208688528352818188205551908152a380f35b83606492519162461bcd60e51b8352820152601860248201527f45524332303a20496e76616c6964205369676e617475726500000000000000006044820152fd5b82513d89823e3d90fd5b90829496985081819496989a9301015182828a01015201918f969492918d98969492610247565b634e487b7160e01b8d526041875260248dfd5b634e487b7160e01b8c526011865260248cfd5b835162461bcd60e51b8152602081850152600e60248201527f45524332303a20457870697265640000000000000000000000000000000000006044820152606490fd5b835162461bcd60e51b8152602081850152601860248201527f45524332303a204f776e65722063616e6e6f74206265203000000000000000006044820152606490fd5b8780fd5b8280fd5b5090346101245780600319360112610124576020916001600160a01b03610437610b1d565b836024359384158015906104e1575b61047e575b505192835216907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef843392a35160018152f35b3381528087528181205461049486821015610b83565b84841690868233036104a9575b50505061044b565b6104bd916104b8841515610bcf565b610c1b565b338352828952838320558152206104d5848254610c3e565b905583868080866104a1565b508383163314610446565b50903461012457602036600319011261012457806020926001600160a01b03610513610b1d565b1681526002845220549051908152f35b50346100d857806003193601126100d857506001600160a01b0360209254169051908152f35b50903461012457602036600319011261012457806020926001600160a01b03610570610b1d565b16815280845220549051908152f35b50919061058b36610b4e565b90929160035461059b8382610c3e565b9081106106dd576003556001600160a01b03809416938487526020948786528488206105c8858254610c3e565b9055877fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef878751878152a38086541692845191868301936323b872dd60e01b855216602483015230604483015260648201526064815260a0810181811067ffffffffffffffff8211176106ca57845251869283929083905af1610649610d34565b8161069a575b5015610659578380f35b5162461bcd60e51b815291820181905260248201527f426f72696e6745524332303a205472616e7366657246726f6d206661696c6564604482015260649150fd5b805180159250849083156106b2575b5050503861064f565b6106c29350820181019101610d74565b3883816106a9565b634e487b7160e01b885260418752602488fd5b835162461bcd60e51b8152602081880152600d60248201527f4d696e74206f766572666c6f77000000000000000000000000000000000000006044820152606490fd5b5091903461040e578060031936011261040e5761073b610b1d565b9060243533855260209285845281838720541061086b57818692916107638493600354610c1b565b60035533835282865284832061077a838254610c1b565b90558285518381527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef883392a3826001600160a01b0380895416938751918983019463a9059cbb60e01b86521660248301526044820152604481526107de81610ce0565b51925af16107ea610d34565b8161083b575b50156107fa578380f35b5162461bcd60e51b815291820152601c60248201527f426f72696e6745524332303a205472616e73666572206661696c656400000000604482015260649150fd5b80518015925084908315610853575b505050386107f0565b6108639350820181019101610d74565b38838161084a565b50505162461bcd60e51b815291820152600d60248201527f4275726e20746f6f206d75636800000000000000000000000000000000000000604482015260649150fd5b5090346101245781600319360112610124576020906108cb610c4b565b9051908152f35b50346100d8576108e136610b4e565b91928261092c575b5060208095507fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9185519384526001600160a01b03809116941692a35160018152f35b6001600160a01b039586851696878352602090838252878420549061095387831015610b83565b851692838a03610967575b505050506108e9565b898552600183528885203386528352888520549060001982036109e3575b50509282602099828a946109c28a8e996104b87fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9c9a1515610bcf565b92825252838320558152206109d8858254610c3e565b90559138808061095e565b878210610a4a575092602099858a946109c28a8e9996610a25827fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9d9b610c1b565b8686526001855289862033875285528986205596505050945095509981949650610985565b895162461bcd60e51b8152908101849052601860248201527f45524332303a20616c6c6f77616e636520746f6f206c6f7700000000000000006044820152606490fd5b5090346101245781600319360112610124576020906003549051908152f35b8391503461040e578160031936011261040e579160209282610acc610b1d565b92602435918291338152600188526001600160a01b038282209616958682528852205581527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925843392a35160018152f35b600435906001600160a01b0382168203610b3357565b600080fd5b602435906001600160a01b0382168203610b3357565b6060906003190112610b33576001600160a01b03906004358281168103610b3357916024359081168103610b33579060443590565b15610b8a57565b60405162461bcd60e51b815260206004820152601660248201527f45524332303a2062616c616e636520746f6f206c6f77000000000000000000006044820152606490fd5b15610bd657565b60405162461bcd60e51b815260206004820152601660248201527f45524332303a206e6f207a65726f2061646472657373000000000000000000006044820152606490fd5b91908203918211610c2857565b634e487b7160e01b600052601160045260246000fd5b91908201809211610c2857565b467f000000000000000000000000000000000000000000000000000000000000000003610c96577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f47e79534a245952e8b16893a336b85a3d9ea9fa8c573f3d803afb92a79469218825246604082015230606082015260608152610cda81610ce0565b51902090565b6080810190811067ffffffffffffffff821117610cfc57604052565b634e487b7160e01b600052604160045260246000fd5b90601f8019910116810190811067ffffffffffffffff821117610cfc57604052565b3d15610d6f573d9067ffffffffffffffff8211610cfc5760405191610d63601f8201601f191660200184610d12565b82523d6000602084013e565b606090565b90816020910312610b3357518015158103610b33579056fea264697066735822122003001f0d82dcccec76e471dc6a028be64021db27784f38cf1fee9c40db67bd2264736f6c63430008120033", "linkReferences": {}, "deployedLinkReferences": {} } diff --git a/src/typechain/tapioca-mocks/TOFTMock.ts b/src/typechain/tapioca-mocks/TOFTMock.ts index 991ca71f..231e7d3e 100644 --- a/src/typechain/tapioca-mocks/TOFTMock.ts +++ b/src/typechain/tapioca-mocks/TOFTMock.ts @@ -14,7 +14,11 @@ import type { Signer, utils, } from "ethers"; -import type { FunctionFragment, Result } from "@ethersproject/abi"; +import type { + FunctionFragment, + Result, + EventFragment, +} from "@ethersproject/abi"; import type { Listener, Provider } from "@ethersproject/providers"; import type { TypedEventFilter, @@ -26,33 +30,151 @@ import type { export interface TOFTMockInterface extends utils.Interface { functions: { + "DOMAIN_SEPARATOR()": FunctionFragment; + "allowance(address,address)": FunctionFragment; + "approve(address,uint256)": FunctionFragment; + "balanceOf(address)": FunctionFragment; "erc20()": FunctionFragment; "erc20_()": FunctionFragment; - "tAsset()": FunctionFragment; + "nonces(address)": FunctionFragment; + "permit(address,address,uint256,uint256,uint8,bytes32,bytes32)": FunctionFragment; + "totalSupply()": FunctionFragment; + "transfer(address,uint256)": FunctionFragment; + "transferFrom(address,address,uint256)": FunctionFragment; "unwrap(address,uint256)": FunctionFragment; "wrap(address,address,uint256)": FunctionFragment; }; getFunction( nameOrSignatureOrTopic: + | "DOMAIN_SEPARATOR" + | "DOMAIN_SEPARATOR()" + | "allowance" + | "allowance(address,address)" + | "approve" + | "approve(address,uint256)" + | "balanceOf" + | "balanceOf(address)" | "erc20" | "erc20()" | "erc20_" | "erc20_()" - | "tAsset" - | "tAsset()" + | "nonces" + | "nonces(address)" + | "permit" + | "permit(address,address,uint256,uint256,uint8,bytes32,bytes32)" + | "totalSupply" + | "totalSupply()" + | "transfer" + | "transfer(address,uint256)" + | "transferFrom" + | "transferFrom(address,address,uint256)" | "unwrap" | "unwrap(address,uint256)" | "wrap" | "wrap(address,address,uint256)" ): FunctionFragment; + encodeFunctionData( + functionFragment: "DOMAIN_SEPARATOR", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "DOMAIN_SEPARATOR()", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "allowance", + values: [PromiseOrValue, PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "allowance(address,address)", + values: [PromiseOrValue, PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "approve", + values: [PromiseOrValue, PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "approve(address,uint256)", + values: [PromiseOrValue, PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "balanceOf", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "balanceOf(address)", + values: [PromiseOrValue] + ): string; encodeFunctionData(functionFragment: "erc20", values?: undefined): string; encodeFunctionData(functionFragment: "erc20()", values?: undefined): string; encodeFunctionData(functionFragment: "erc20_", values?: undefined): string; encodeFunctionData(functionFragment: "erc20_()", values?: undefined): string; - encodeFunctionData(functionFragment: "tAsset", values?: undefined): string; - encodeFunctionData(functionFragment: "tAsset()", values?: undefined): string; + encodeFunctionData( + functionFragment: "nonces", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "nonces(address)", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "permit", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + encodeFunctionData( + functionFragment: "permit(address,address,uint256,uint256,uint8,bytes32,bytes32)", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + encodeFunctionData( + functionFragment: "totalSupply", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "totalSupply()", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "transfer", + values: [PromiseOrValue, PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "transfer(address,uint256)", + values: [PromiseOrValue, PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "transferFrom", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + encodeFunctionData( + functionFragment: "transferFrom(address,address,uint256)", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; encodeFunctionData( functionFragment: "unwrap", values: [PromiseOrValue, PromiseOrValue] @@ -78,12 +200,64 @@ export interface TOFTMockInterface extends utils.Interface { ] ): string; + decodeFunctionResult( + functionFragment: "DOMAIN_SEPARATOR", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "DOMAIN_SEPARATOR()", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "allowance", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "allowance(address,address)", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "approve", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "approve(address,uint256)", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "balanceOf", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "balanceOf(address)", + data: BytesLike + ): Result; decodeFunctionResult(functionFragment: "erc20", data: BytesLike): Result; decodeFunctionResult(functionFragment: "erc20()", data: BytesLike): Result; decodeFunctionResult(functionFragment: "erc20_", data: BytesLike): Result; decodeFunctionResult(functionFragment: "erc20_()", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "tAsset", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "tAsset()", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "nonces", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "nonces(address)", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "permit", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "permit(address,address,uint256,uint256,uint8,bytes32,bytes32)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "totalSupply", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "totalSupply()", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "transfer", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "transfer(address,uint256)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "transferFrom", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "transferFrom(address,address,uint256)", + data: BytesLike + ): Result; decodeFunctionResult(functionFragment: "unwrap", data: BytesLike): Result; decodeFunctionResult( functionFragment: "unwrap(address,uint256)", @@ -95,8 +269,44 @@ export interface TOFTMockInterface extends utils.Interface { data: BytesLike ): Result; - events: {}; + events: { + "Approval(address,address,uint256)": EventFragment; + "Transfer(address,address,uint256)": EventFragment; + }; + + getEvent(nameOrSignatureOrTopic: "Approval"): EventFragment; + getEvent( + nameOrSignatureOrTopic: "Approval(address,address,uint256)" + ): EventFragment; + getEvent(nameOrSignatureOrTopic: "Transfer"): EventFragment; + getEvent( + nameOrSignatureOrTopic: "Transfer(address,address,uint256)" + ): EventFragment; +} + +export interface ApprovalEventObject { + owner: string; + spender: string; + value: BigNumber; +} +export type ApprovalEvent = TypedEvent< + [string, string, BigNumber], + ApprovalEventObject +>; + +export type ApprovalEventFilter = TypedEventFilter; + +export interface TransferEventObject { + from: string; + to: string; + value: BigNumber; } +export type TransferEvent = TypedEvent< + [string, string, BigNumber], + TransferEventObject +>; + +export type TransferEventFilter = TypedEventFilter; export interface TOFTMock extends BaseContract { contractName: "TOFTMock"; @@ -127,6 +337,44 @@ export interface TOFTMock extends BaseContract { removeListener: OnEvent; functions: { + DOMAIN_SEPARATOR(overrides?: CallOverrides): Promise<[string]>; + + "DOMAIN_SEPARATOR()"(overrides?: CallOverrides): Promise<[string]>; + + allowance( + arg0: PromiseOrValue, + arg1: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[BigNumber]>; + + "allowance(address,address)"( + arg0: PromiseOrValue, + arg1: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[BigNumber]>; + + approve( + spender: PromiseOrValue, + amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "approve(address,uint256)"( + spender: PromiseOrValue, + amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + balanceOf( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[BigNumber]>; + + "balanceOf(address)"( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[BigNumber]>; + erc20(overrides?: CallOverrides): Promise<[string]>; "erc20()"(overrides?: CallOverrides): Promise<[string]>; @@ -135,9 +383,67 @@ export interface TOFTMock extends BaseContract { "erc20_()"(overrides?: CallOverrides): Promise<[string]>; - tAsset(overrides?: CallOverrides): Promise<[string]>; + nonces( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[BigNumber]>; + + "nonces(address)"( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[BigNumber]>; + + permit( + owner_: PromiseOrValue, + spender: PromiseOrValue, + value: PromiseOrValue, + deadline: PromiseOrValue, + v: PromiseOrValue, + r: PromiseOrValue, + s: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "permit(address,address,uint256,uint256,uint8,bytes32,bytes32)"( + owner_: PromiseOrValue, + spender: PromiseOrValue, + value: PromiseOrValue, + deadline: PromiseOrValue, + v: PromiseOrValue, + r: PromiseOrValue, + s: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + totalSupply(overrides?: CallOverrides): Promise<[BigNumber]>; + + "totalSupply()"(overrides?: CallOverrides): Promise<[BigNumber]>; + + transfer( + to: PromiseOrValue, + amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "transfer(address,uint256)"( + to: PromiseOrValue, + amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + transferFrom( + from: PromiseOrValue, + to: PromiseOrValue, + amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; - "tAsset()"(overrides?: CallOverrides): Promise<[string]>; + "transferFrom(address,address,uint256)"( + from: PromiseOrValue, + to: PromiseOrValue, + amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; unwrap( _toAddress: PromiseOrValue, @@ -166,6 +472,44 @@ export interface TOFTMock extends BaseContract { ): Promise; }; + DOMAIN_SEPARATOR(overrides?: CallOverrides): Promise; + + "DOMAIN_SEPARATOR()"(overrides?: CallOverrides): Promise; + + allowance( + arg0: PromiseOrValue, + arg1: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "allowance(address,address)"( + arg0: PromiseOrValue, + arg1: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + approve( + spender: PromiseOrValue, + amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "approve(address,uint256)"( + spender: PromiseOrValue, + amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + balanceOf( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "balanceOf(address)"( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + erc20(overrides?: CallOverrides): Promise; "erc20()"(overrides?: CallOverrides): Promise; @@ -174,9 +518,67 @@ export interface TOFTMock extends BaseContract { "erc20_()"(overrides?: CallOverrides): Promise; - tAsset(overrides?: CallOverrides): Promise; + nonces( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "nonces(address)"( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + permit( + owner_: PromiseOrValue, + spender: PromiseOrValue, + value: PromiseOrValue, + deadline: PromiseOrValue, + v: PromiseOrValue, + r: PromiseOrValue, + s: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "permit(address,address,uint256,uint256,uint8,bytes32,bytes32)"( + owner_: PromiseOrValue, + spender: PromiseOrValue, + value: PromiseOrValue, + deadline: PromiseOrValue, + v: PromiseOrValue, + r: PromiseOrValue, + s: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + totalSupply(overrides?: CallOverrides): Promise; + + "totalSupply()"(overrides?: CallOverrides): Promise; + + transfer( + to: PromiseOrValue, + amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "transfer(address,uint256)"( + to: PromiseOrValue, + amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + transferFrom( + from: PromiseOrValue, + to: PromiseOrValue, + amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; - "tAsset()"(overrides?: CallOverrides): Promise; + "transferFrom(address,address,uint256)"( + from: PromiseOrValue, + to: PromiseOrValue, + amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; unwrap( _toAddress: PromiseOrValue, @@ -205,6 +607,44 @@ export interface TOFTMock extends BaseContract { ): Promise; callStatic: { + DOMAIN_SEPARATOR(overrides?: CallOverrides): Promise; + + "DOMAIN_SEPARATOR()"(overrides?: CallOverrides): Promise; + + allowance( + arg0: PromiseOrValue, + arg1: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "allowance(address,address)"( + arg0: PromiseOrValue, + arg1: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + approve( + spender: PromiseOrValue, + amount: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "approve(address,uint256)"( + spender: PromiseOrValue, + amount: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + balanceOf( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "balanceOf(address)"( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + erc20(overrides?: CallOverrides): Promise; "erc20()"(overrides?: CallOverrides): Promise; @@ -213,9 +653,67 @@ export interface TOFTMock extends BaseContract { "erc20_()"(overrides?: CallOverrides): Promise; - tAsset(overrides?: CallOverrides): Promise; + nonces( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "nonces(address)"( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + permit( + owner_: PromiseOrValue, + spender: PromiseOrValue, + value: PromiseOrValue, + deadline: PromiseOrValue, + v: PromiseOrValue, + r: PromiseOrValue, + s: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "permit(address,address,uint256,uint256,uint8,bytes32,bytes32)"( + owner_: PromiseOrValue, + spender: PromiseOrValue, + value: PromiseOrValue, + deadline: PromiseOrValue, + v: PromiseOrValue, + r: PromiseOrValue, + s: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + totalSupply(overrides?: CallOverrides): Promise; + + "totalSupply()"(overrides?: CallOverrides): Promise; + + transfer( + to: PromiseOrValue, + amount: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "transfer(address,uint256)"( + to: PromiseOrValue, + amount: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + transferFrom( + from: PromiseOrValue, + to: PromiseOrValue, + amount: PromiseOrValue, + overrides?: CallOverrides + ): Promise; - "tAsset()"(overrides?: CallOverrides): Promise; + "transferFrom(address,address,uint256)"( + from: PromiseOrValue, + to: PromiseOrValue, + amount: PromiseOrValue, + overrides?: CallOverrides + ): Promise; unwrap( _toAddress: PromiseOrValue, @@ -244,9 +742,69 @@ export interface TOFTMock extends BaseContract { ): Promise; }; - filters: {}; + filters: { + "Approval(address,address,uint256)"( + owner?: PromiseOrValue | null, + spender?: PromiseOrValue | null, + value?: null + ): ApprovalEventFilter; + Approval( + owner?: PromiseOrValue | null, + spender?: PromiseOrValue | null, + value?: null + ): ApprovalEventFilter; + + "Transfer(address,address,uint256)"( + from?: PromiseOrValue | null, + to?: PromiseOrValue | null, + value?: null + ): TransferEventFilter; + Transfer( + from?: PromiseOrValue | null, + to?: PromiseOrValue | null, + value?: null + ): TransferEventFilter; + }; estimateGas: { + DOMAIN_SEPARATOR(overrides?: CallOverrides): Promise; + + "DOMAIN_SEPARATOR()"(overrides?: CallOverrides): Promise; + + allowance( + arg0: PromiseOrValue, + arg1: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "allowance(address,address)"( + arg0: PromiseOrValue, + arg1: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + approve( + spender: PromiseOrValue, + amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "approve(address,uint256)"( + spender: PromiseOrValue, + amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + balanceOf( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "balanceOf(address)"( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + erc20(overrides?: CallOverrides): Promise; "erc20()"(overrides?: CallOverrides): Promise; @@ -255,9 +813,67 @@ export interface TOFTMock extends BaseContract { "erc20_()"(overrides?: CallOverrides): Promise; - tAsset(overrides?: CallOverrides): Promise; + nonces( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "nonces(address)"( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + permit( + owner_: PromiseOrValue, + spender: PromiseOrValue, + value: PromiseOrValue, + deadline: PromiseOrValue, + v: PromiseOrValue, + r: PromiseOrValue, + s: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "permit(address,address,uint256,uint256,uint8,bytes32,bytes32)"( + owner_: PromiseOrValue, + spender: PromiseOrValue, + value: PromiseOrValue, + deadline: PromiseOrValue, + v: PromiseOrValue, + r: PromiseOrValue, + s: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + totalSupply(overrides?: CallOverrides): Promise; + + "totalSupply()"(overrides?: CallOverrides): Promise; + + transfer( + to: PromiseOrValue, + amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "transfer(address,uint256)"( + to: PromiseOrValue, + amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; - "tAsset()"(overrides?: CallOverrides): Promise; + transferFrom( + from: PromiseOrValue, + to: PromiseOrValue, + amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "transferFrom(address,address,uint256)"( + from: PromiseOrValue, + to: PromiseOrValue, + amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; unwrap( _toAddress: PromiseOrValue, @@ -287,6 +903,46 @@ export interface TOFTMock extends BaseContract { }; populateTransaction: { + DOMAIN_SEPARATOR(overrides?: CallOverrides): Promise; + + "DOMAIN_SEPARATOR()"( + overrides?: CallOverrides + ): Promise; + + allowance( + arg0: PromiseOrValue, + arg1: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "allowance(address,address)"( + arg0: PromiseOrValue, + arg1: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + approve( + spender: PromiseOrValue, + amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "approve(address,uint256)"( + spender: PromiseOrValue, + amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + balanceOf( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "balanceOf(address)"( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + erc20(overrides?: CallOverrides): Promise; "erc20()"(overrides?: CallOverrides): Promise; @@ -295,9 +951,67 @@ export interface TOFTMock extends BaseContract { "erc20_()"(overrides?: CallOverrides): Promise; - tAsset(overrides?: CallOverrides): Promise; + nonces( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise; - "tAsset()"(overrides?: CallOverrides): Promise; + "nonces(address)"( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + permit( + owner_: PromiseOrValue, + spender: PromiseOrValue, + value: PromiseOrValue, + deadline: PromiseOrValue, + v: PromiseOrValue, + r: PromiseOrValue, + s: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "permit(address,address,uint256,uint256,uint8,bytes32,bytes32)"( + owner_: PromiseOrValue, + spender: PromiseOrValue, + value: PromiseOrValue, + deadline: PromiseOrValue, + v: PromiseOrValue, + r: PromiseOrValue, + s: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + totalSupply(overrides?: CallOverrides): Promise; + + "totalSupply()"(overrides?: CallOverrides): Promise; + + transfer( + to: PromiseOrValue, + amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "transfer(address,uint256)"( + to: PromiseOrValue, + amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + transferFrom( + from: PromiseOrValue, + to: PromiseOrValue, + amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "transferFrom(address,address,uint256)"( + from: PromiseOrValue, + to: PromiseOrValue, + amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; unwrap( _toAddress: PromiseOrValue, diff --git a/src/typechain/tapioca-mocks/factories/TOFTMock__factory.ts b/src/typechain/tapioca-mocks/factories/TOFTMock__factory.ts index 9fd999d7..92aa840d 100644 --- a/src/typechain/tapioca-mocks/factories/TOFTMock__factory.ts +++ b/src/typechain/tapioca-mocks/factories/TOFTMock__factory.ts @@ -14,14 +14,139 @@ const _abi = [ name: "_erc20", type: "address", }, + ], + stateMutability: "nonpayable", + type: "constructor", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "address", + name: "owner", + type: "address", + }, + { + indexed: true, + internalType: "address", + name: "spender", + type: "address", + }, + { + indexed: false, + internalType: "uint256", + name: "value", + type: "uint256", + }, + ], + name: "Approval", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "address", + name: "from", + type: "address", + }, + { + indexed: true, + internalType: "address", + name: "to", + type: "address", + }, + { + indexed: false, + internalType: "uint256", + name: "value", + type: "uint256", + }, + ], + name: "Transfer", + type: "event", + }, + { + inputs: [], + name: "DOMAIN_SEPARATOR", + outputs: [ + { + internalType: "bytes32", + name: "", + type: "bytes32", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ { internalType: "address", - name: "_tAsset", + name: "", + type: "address", + }, + { + internalType: "address", + name: "", + type: "address", + }, + ], + name: "allowance", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "spender", type: "address", }, + { + internalType: "uint256", + name: "amount", + type: "uint256", + }, + ], + name: "approve", + outputs: [ + { + internalType: "bool", + name: "", + type: "bool", + }, ], stateMutability: "nonpayable", - type: "constructor", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "", + type: "address", + }, + ], + name: "balanceOf", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", }, { inputs: [], @@ -49,17 +174,132 @@ const _abi = [ stateMutability: "view", type: "function", }, + { + inputs: [ + { + internalType: "address", + name: "", + type: "address", + }, + ], + name: "nonces", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "owner_", + type: "address", + }, + { + internalType: "address", + name: "spender", + type: "address", + }, + { + internalType: "uint256", + name: "value", + type: "uint256", + }, + { + internalType: "uint256", + name: "deadline", + type: "uint256", + }, + { + internalType: "uint8", + name: "v", + type: "uint8", + }, + { + internalType: "bytes32", + name: "r", + type: "bytes32", + }, + { + internalType: "bytes32", + name: "s", + type: "bytes32", + }, + ], + name: "permit", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, { inputs: [], - name: "tAsset", + name: "totalSupply", outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ { internalType: "address", + name: "to", + type: "address", + }, + { + internalType: "uint256", + name: "amount", + type: "uint256", + }, + ], + name: "transfer", + outputs: [ + { + internalType: "bool", name: "", + type: "bool", + }, + ], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "from", + type: "address", + }, + { + internalType: "address", + name: "to", type: "address", }, + { + internalType: "uint256", + name: "amount", + type: "uint256", + }, ], - stateMutability: "view", + name: "transferFrom", + outputs: [ + { + internalType: "bool", + name: "", + type: "bool", + }, + ], + stateMutability: "nonpayable", type: "function", }, { @@ -106,7 +346,7 @@ const _abi = [ ] as const; const _bytecode = - "0x60803461008d57601f6104ab38819003918201601f19168301916001600160401b0383118484101761009257808492604094855283398101031261008d57610052602061004b836100a8565b92016100a8565b600080546001600160a01b039384166001600160a01b031991821617909155600180549290931691161790556040516103ee90816100bd8239f35b600080fd5b634e487b7160e01b600052604160045260246000fd5b51906001600160a01b038216820361008d5756fe6080604052600436101561001257600080fd5b6000803560e01c806339f476931461011b578063403cd5ad146100f457806362355638146100a2578063785e9e861461007c5763e2eec30b1461005457600080fd5b346100795780600319360112610079576001600160a01b036020915416604051908152f35b80fd5b50346100795780600319360112610079576001600160a01b036020915416604051908152f35b506060366003190112610079576100b761015e565b6001600160a01b039060243582811681036100f0576100ed926100e46044358094838854169030916102d1565b600154166101f2565b80f35b8380fd5b503461007957806003193601126100795760206001600160a01b0360015416604051908152f35b5034610079576040366003190112610079576100ed61013861015e565b602435906001600160a01b03610156838260015416309033906102d1565b8454166101f2565b600435906001600160a01b038216820361017457565b600080fd5b3d156101d55767ffffffffffffffff903d8281116101bf5760405192601f8201601f19908116603f01168401908111848210176101bf5760405282523d6000602084013e565b634e487b7160e01b600052604160045260246000fd5b606090565b90816020910312610174575180151581036101745790565b91909160405191602083019063a9059cbb60e01b82526001600160a01b0380951660248501526044840152604483526080830183811067ffffffffffffffff8211176101bf57600094859485926040525193165af161024f610179565b816102a2575b501561025d57565b60405162461bcd60e51b815260206004820152601c60248201527f426f72696e6745524332303a205472616e73666572206661696c6564000000006044820152606490fd5b80518015925082156102b7575b505038610255565b6102ca92506020809183010191016101da565b38806102af565b909291926040519260208401916323b872dd60e01b83526001600160a01b039586809216602487015216604485015260648401526064835260a0830183811067ffffffffffffffff8211176101bf57600094859485926040525193165af1610337610179565b81610389575b501561034557565b606460405162461bcd60e51b815260206004820152602060248201527f426f72696e6745524332303a205472616e7366657246726f6d206661696c65646044820152fd5b805180159250821561039e575b50503861033d565b6103b192506020809183010191016101da565b388061039656fea2646970667358221220ea83643fa80984eeb0be843ff1afe7afe54678fee35f547730a480a60cc360e564736f6c63430008120033"; + "0x60c0346100f0576001600160401b0390601f610eb838819003918201601f1916830191848311848410176100da578084926020946040528339810103126100f057516001600160a01b038116908190036100f0574660a05260405160208101907f47e79534a245952e8b16893a336b85a3d9ea9fa8c573f3d803afb92a794692188252466040820152306060820152606081526080810193818510908511176100da578360405251902060805260018060a01b03196004541617600455610dc290816100f6823960805181610c74015260a05181610c4e0152f35b634e487b7160e01b600052604160045260246000fd5b600080fdfe608060408181526004918236101561001657600080fd5b600090813560e01c908163095ea7b314610aac5750806318160ddd14610a8d57806323b872dd146108d25780633644e515146108ae57806339f4769314610720578063623556381461057f57806370a0823114610549578063785e9e86146105235780637ecebe00146104ec578063a9059cbb14610412578063d505accf14610128578063dd62ed3e146100db5763e2eec30b146100b357600080fd5b346100d857806003193601126100d857506001600160a01b0360209254169051908152f35b80fd5b509034610124578060031936011261012457806020926100f9610b1d565b610101610b38565b6001600160a01b0391821683526001865283832091168252845220549051908152f35b5080fd5b5091903461040e5760e036600319011261040e57610144610b1d565b9061014d610b38565b9060443590606435946084359460ff861680960361040a576001600160a01b038091169586156103c757874210156103845786895260209560028752848a20988954996000198b146103715760018b01905585519084898301937f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c985528b89850152169a8b606084015288608084015260a083015260c082015260c0815260e081019167ffffffffffffffff908284108285111761035e57838852825190209061012083019081118482101761035e57918c93918a959389526002835261010061190160f01b8184015261023f610c4b565b928a51945191875b83811061033757505050838093610276936060936080989701918a8301528c820152038a810184520182610d12565b8481519101209087519182528482015260a4358782015260c435606082015282805260015afa1561032d578590885116036102ec5750907f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259291848752600183528087208688528352818188205551908152a380f35b83606492519162461bcd60e51b8352820152601860248201527f45524332303a20496e76616c6964205369676e617475726500000000000000006044820152fd5b82513d89823e3d90fd5b90829496985081819496989a9301015182828a01015201918f969492918d98969492610247565b634e487b7160e01b8d526041875260248dfd5b634e487b7160e01b8c526011865260248cfd5b835162461bcd60e51b8152602081850152600e60248201527f45524332303a20457870697265640000000000000000000000000000000000006044820152606490fd5b835162461bcd60e51b8152602081850152601860248201527f45524332303a204f776e65722063616e6e6f74206265203000000000000000006044820152606490fd5b8780fd5b8280fd5b5090346101245780600319360112610124576020916001600160a01b03610437610b1d565b836024359384158015906104e1575b61047e575b505192835216907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef843392a35160018152f35b3381528087528181205461049486821015610b83565b84841690868233036104a9575b50505061044b565b6104bd916104b8841515610bcf565b610c1b565b338352828952838320558152206104d5848254610c3e565b905583868080866104a1565b508383163314610446565b50903461012457602036600319011261012457806020926001600160a01b03610513610b1d565b1681526002845220549051908152f35b50346100d857806003193601126100d857506001600160a01b0360209254169051908152f35b50903461012457602036600319011261012457806020926001600160a01b03610570610b1d565b16815280845220549051908152f35b50919061058b36610b4e565b90929160035461059b8382610c3e565b9081106106dd576003556001600160a01b03809416938487526020948786528488206105c8858254610c3e565b9055877fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef878751878152a38086541692845191868301936323b872dd60e01b855216602483015230604483015260648201526064815260a0810181811067ffffffffffffffff8211176106ca57845251869283929083905af1610649610d34565b8161069a575b5015610659578380f35b5162461bcd60e51b815291820181905260248201527f426f72696e6745524332303a205472616e7366657246726f6d206661696c6564604482015260649150fd5b805180159250849083156106b2575b5050503861064f565b6106c29350820181019101610d74565b3883816106a9565b634e487b7160e01b885260418752602488fd5b835162461bcd60e51b8152602081880152600d60248201527f4d696e74206f766572666c6f77000000000000000000000000000000000000006044820152606490fd5b5091903461040e578060031936011261040e5761073b610b1d565b9060243533855260209285845281838720541061086b57818692916107638493600354610c1b565b60035533835282865284832061077a838254610c1b565b90558285518381527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef883392a3826001600160a01b0380895416938751918983019463a9059cbb60e01b86521660248301526044820152604481526107de81610ce0565b51925af16107ea610d34565b8161083b575b50156107fa578380f35b5162461bcd60e51b815291820152601c60248201527f426f72696e6745524332303a205472616e73666572206661696c656400000000604482015260649150fd5b80518015925084908315610853575b505050386107f0565b6108639350820181019101610d74565b38838161084a565b50505162461bcd60e51b815291820152600d60248201527f4275726e20746f6f206d75636800000000000000000000000000000000000000604482015260649150fd5b5090346101245781600319360112610124576020906108cb610c4b565b9051908152f35b50346100d8576108e136610b4e565b91928261092c575b5060208095507fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9185519384526001600160a01b03809116941692a35160018152f35b6001600160a01b039586851696878352602090838252878420549061095387831015610b83565b851692838a03610967575b505050506108e9565b898552600183528885203386528352888520549060001982036109e3575b50509282602099828a946109c28a8e996104b87fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9c9a1515610bcf565b92825252838320558152206109d8858254610c3e565b90559138808061095e565b878210610a4a575092602099858a946109c28a8e9996610a25827fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9d9b610c1b565b8686526001855289862033875285528986205596505050945095509981949650610985565b895162461bcd60e51b8152908101849052601860248201527f45524332303a20616c6c6f77616e636520746f6f206c6f7700000000000000006044820152606490fd5b5090346101245781600319360112610124576020906003549051908152f35b8391503461040e578160031936011261040e579160209282610acc610b1d565b92602435918291338152600188526001600160a01b038282209616958682528852205581527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925843392a35160018152f35b600435906001600160a01b0382168203610b3357565b600080fd5b602435906001600160a01b0382168203610b3357565b6060906003190112610b33576001600160a01b03906004358281168103610b3357916024359081168103610b33579060443590565b15610b8a57565b60405162461bcd60e51b815260206004820152601660248201527f45524332303a2062616c616e636520746f6f206c6f77000000000000000000006044820152606490fd5b15610bd657565b60405162461bcd60e51b815260206004820152601660248201527f45524332303a206e6f207a65726f2061646472657373000000000000000000006044820152606490fd5b91908203918211610c2857565b634e487b7160e01b600052601160045260246000fd5b91908201809211610c2857565b467f000000000000000000000000000000000000000000000000000000000000000003610c96577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f47e79534a245952e8b16893a336b85a3d9ea9fa8c573f3d803afb92a79469218825246604082015230606082015260608152610cda81610ce0565b51902090565b6080810190811067ffffffffffffffff821117610cfc57604052565b634e487b7160e01b600052604160045260246000fd5b90601f8019910116810190811067ffffffffffffffff821117610cfc57604052565b3d15610d6f573d9067ffffffffffffffff8211610cfc5760405191610d63601f8201601f191660200184610d12565b82523d6000602084013e565b606090565b90816020910312610b3357518015158103610b33579056fea264697066735822122003001f0d82dcccec76e471dc6a028be64021db27784f38cf1fee9c40db67bd2264736f6c63430008120033"; type TOFTMockConstructorParams = | [signer?: Signer] @@ -128,17 +368,15 @@ export class TOFTMock__factory extends ContractFactory { override deploy( _erc20: PromiseOrValue, - _tAsset: PromiseOrValue, overrides?: Overrides & { from?: PromiseOrValue } ): Promise { - return super.deploy(_erc20, _tAsset, overrides || {}) as Promise; + return super.deploy(_erc20, overrides || {}) as Promise; } override getDeployTransaction( _erc20: PromiseOrValue, - _tAsset: PromiseOrValue, overrides?: Overrides & { from?: PromiseOrValue } ): TransactionRequest { - return super.getDeployTransaction(_erc20, _tAsset, overrides || {}); + return super.getDeployTransaction(_erc20, overrides || {}); } override attach(address: string): TOFTMock { return super.attach(address) as TOFTMock; From 84145c767d43fb713710d1468e9f97a00782afe7 Mon Sep 17 00:00:00 2001 From: cryptotechmaker Date: Fri, 20 Oct 2023 17:28:12 +0300 Subject: [PATCH 3/6] updated flash borrower mock --- src/artifacts/tapioca-mocks/FlashBorrowerMock.json | 4 ++-- src/artifacts/tapioca-mocks/FlashMaliciousBorrowerMock.json | 4 ++-- .../FlashBorrowerMock.sol/FlashBorrowerMock__factory.ts | 2 +- .../FlashMaliciousBorrowerMock__factory.ts | 2 +- 4 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/artifacts/tapioca-mocks/FlashBorrowerMock.json b/src/artifacts/tapioca-mocks/FlashBorrowerMock.json index cf90d52d..94f7c6f6 100644 --- a/src/artifacts/tapioca-mocks/FlashBorrowerMock.json +++ b/src/artifacts/tapioca-mocks/FlashBorrowerMock.json @@ -90,8 +90,8 @@ "type": "function" } ], - "bytecode": "0x60803461007457601f61052238819003918201601f19168301916001600160401b038311848410176100795780849260209460405283398101031261007457516001600160a01b0381169081900361007457600080546001600160a01b03191691909117905560405161049290816100908239f35b600080fd5b634e487b7160e01b600052604160045260246000fdfe60806040818152600436101561001457600080fd5b600091823560e01c90816323e30c8b1461011f57508063736ddf3b146100f55763b53e48851461004357600080fd5b346100f157806003193601126100f15761005b610249565b9060206024359261006c84826102d7565b60a46001600160a01b0391868381541686519788958694632e7ff4ef60e11b86523060048701521660248501526044840152608060648401528160848401525af19081156100e857506100bd575080f35b6100dd9060203d81116100e1575b6100d58183610264565b81019061029c565b5080f35b503d6100cb565b513d84823e3d90fd5b5080fd5b50346100f15736600319011261011c57610119610110610249565b602435906102d7565b80f35b80fd5b9050823461011c5760a036600319011261011c5761013b610249565b916001600160a01b03916024358381160361011c5760843567ffffffffffffffff8082116102455736602383011215610245578160040135908111610245573691016024011161011c5754821633036102035750309116036101c057602090517f439148f0bbc682ca079e46d6e2c2f0c1e3b820f1a291b069d8882abf8cf18dd98152f35b5162461bcd60e51b815260206004820181905260248201527f466c617368426f72726f7765723a206e6f742074686520696e69746961746f726044820152606490fd5b62461bcd60e51b815260206004820152601860248201527f466c617368426f72726f7765723a20756e7472757374656400000000000000006044820152606490fd5b8280fd5b600435906001600160a01b038216820361025f57565b600080fd5b90601f8019910116810190811067ffffffffffffffff82111761028657604052565b634e487b7160e01b600052604160045260246000fd5b9081602091031261025f5751801515810361025f5790565b919082018092116102c157565b634e487b7160e01b600052601160045260246000fd5b6000906001600160a01b038254166040918251636eb1769f60e11b81523060048201528260248201526020958682604481875afa918215610423578790879361042d575b508551633676633960e21b81526001600160a01b039490941660048501526024840182905291929182604481875afa918215610423579187939187959386926103e2575b5091610372610378926103aa95946102b4565b906102b4565b855163095ea7b360e01b81526001600160a01b0383166004820152602481019190915295869283919082906044820190565b03925af19182156103d85750506103bf575050565b816103d592903d106100e1576100d58183610264565b50565b51903d90823e3d90fd5b929483919496508092503d831161041c575b6103fe8183610264565b81010312610418575185938793909290919061037261035f565b8580fd5b503d6103f4565b85513d88823e3d90fd5b80929350813d8311610455575b6104448183610264565b81010312610418575190868161031b565b503d61043a56fea2646970667358221220fb96064838e721b974489d0cbb7dc332f8dcfae86f734bf6c4c33eb10a0f6a5164736f6c63430008120033", - "deployedBytecode": "0x60806040818152600436101561001457600080fd5b600091823560e01c90816323e30c8b1461011f57508063736ddf3b146100f55763b53e48851461004357600080fd5b346100f157806003193601126100f15761005b610249565b9060206024359261006c84826102d7565b60a46001600160a01b0391868381541686519788958694632e7ff4ef60e11b86523060048701521660248501526044840152608060648401528160848401525af19081156100e857506100bd575080f35b6100dd9060203d81116100e1575b6100d58183610264565b81019061029c565b5080f35b503d6100cb565b513d84823e3d90fd5b5080fd5b50346100f15736600319011261011c57610119610110610249565b602435906102d7565b80f35b80fd5b9050823461011c5760a036600319011261011c5761013b610249565b916001600160a01b03916024358381160361011c5760843567ffffffffffffffff8082116102455736602383011215610245578160040135908111610245573691016024011161011c5754821633036102035750309116036101c057602090517f439148f0bbc682ca079e46d6e2c2f0c1e3b820f1a291b069d8882abf8cf18dd98152f35b5162461bcd60e51b815260206004820181905260248201527f466c617368426f72726f7765723a206e6f742074686520696e69746961746f726044820152606490fd5b62461bcd60e51b815260206004820152601860248201527f466c617368426f72726f7765723a20756e7472757374656400000000000000006044820152606490fd5b8280fd5b600435906001600160a01b038216820361025f57565b600080fd5b90601f8019910116810190811067ffffffffffffffff82111761028657604052565b634e487b7160e01b600052604160045260246000fd5b9081602091031261025f5751801515810361025f5790565b919082018092116102c157565b634e487b7160e01b600052601160045260246000fd5b6000906001600160a01b038254166040918251636eb1769f60e11b81523060048201528260248201526020958682604481875afa918215610423578790879361042d575b508551633676633960e21b81526001600160a01b039490941660048501526024840182905291929182604481875afa918215610423579187939187959386926103e2575b5091610372610378926103aa95946102b4565b906102b4565b855163095ea7b360e01b81526001600160a01b0383166004820152602481019190915295869283919082906044820190565b03925af19182156103d85750506103bf575050565b816103d592903d106100e1576100d58183610264565b50565b51903d90823e3d90fd5b929483919496508092503d831161041c575b6103fe8183610264565b81010312610418575185938793909290919061037261035f565b8580fd5b503d6103f4565b85513d88823e3d90fd5b80929350813d8311610455575b6104448183610264565b81010312610418575190868161031b565b503d61043a56fea2646970667358221220fb96064838e721b974489d0cbb7dc332f8dcfae86f734bf6c4c33eb10a0f6a5164736f6c63430008120033", + "bytecode": "0x60803461007457601f61053338819003918201601f19168301916001600160401b038311848410176100795780849260209460405283398101031261007457516001600160a01b0381169081900361007457600080546001600160a01b0319169190911790556040516104a390816100908239f35b600080fd5b634e487b7160e01b600052604160045260246000fdfe60806040818152600436101561001457600080fd5b600091823560e01c90816323e30c8b1461011f57508063736ddf3b146100f55763b53e48851461004357600080fd5b346100f157806003193601126100f15761005b610249565b9060206024359261006c84826102d7565b60a46001600160a01b0391868381541686519788958694632e7ff4ef60e11b86523060048701521660248501526044840152608060648401528160848401525af19081156100e857506100bd575080f35b6100dd9060203d81116100e1575b6100d58183610264565b81019061029c565b5080f35b503d6100cb565b513d84823e3d90fd5b5080fd5b50346100f15736600319011261011c57610119610110610249565b602435906102d7565b80f35b80fd5b9050823461011c5760a036600319011261011c5761013b610249565b916001600160a01b03916024358381160361011c5760843567ffffffffffffffff8082116102455736602383011215610245578160040135908111610245573691016024011161011c5754821633036102035750309116036101c057602090517f439148f0bbc682ca079e46d6e2c2f0c1e3b820f1a291b069d8882abf8cf18dd98152f35b5162461bcd60e51b815260206004820181905260248201527f466c617368426f72726f7765723a206e6f742074686520696e69746961746f726044820152606490fd5b62461bcd60e51b815260206004820152601860248201527f466c617368426f72726f7765723a20756e7472757374656400000000000000006044820152606490fd5b8280fd5b600435906001600160a01b038216820361025f57565b600080fd5b90601f8019910116810190811067ffffffffffffffff82111761028657604052565b634e487b7160e01b600052604160045260246000fd5b9081602091031261025f5751801515810361025f5790565b919082018092116102c157565b634e487b7160e01b600052601160045260246000fd5b6001600160a01b039060008281541692604092835194636eb1769f60e11b86523060048701528060248701526020968787604481855afa968715610463578597610430575b508551633676633960e21b81526001600160a01b038416600482015260248101829052908882604481865afa918215610426579089959493929187926103e0575b506103a7986103708893610376936102b4565b906102b4565b875163095ea7b360e01b81526001600160a01b03909316600484015260248301529096879384929183906044820190565b0393165af19182156103d65750506103bd575050565b816103d392903d106100e1576100d58183610264565b50565b51903d90823e3d90fd5b8092508691939597989994963d831161041f575b6103fe8183610264565b8101031261041b57519196959488949093909290916103a761035d565b8680fd5b503d6103f4565b87513d88823e3d90fd5b9096508781813d831161045c575b6104488183610264565b810103126104585751953861031c565b8480fd5b503d61043e565b86513d87823e3d90fdfea264697066735822122083a60d37aed0ea99e9373e3994f0f0c698059a7f4b46dd9c43369e9d5add47ab64736f6c63430008120033", + "deployedBytecode": "0x60806040818152600436101561001457600080fd5b600091823560e01c90816323e30c8b1461011f57508063736ddf3b146100f55763b53e48851461004357600080fd5b346100f157806003193601126100f15761005b610249565b9060206024359261006c84826102d7565b60a46001600160a01b0391868381541686519788958694632e7ff4ef60e11b86523060048701521660248501526044840152608060648401528160848401525af19081156100e857506100bd575080f35b6100dd9060203d81116100e1575b6100d58183610264565b81019061029c565b5080f35b503d6100cb565b513d84823e3d90fd5b5080fd5b50346100f15736600319011261011c57610119610110610249565b602435906102d7565b80f35b80fd5b9050823461011c5760a036600319011261011c5761013b610249565b916001600160a01b03916024358381160361011c5760843567ffffffffffffffff8082116102455736602383011215610245578160040135908111610245573691016024011161011c5754821633036102035750309116036101c057602090517f439148f0bbc682ca079e46d6e2c2f0c1e3b820f1a291b069d8882abf8cf18dd98152f35b5162461bcd60e51b815260206004820181905260248201527f466c617368426f72726f7765723a206e6f742074686520696e69746961746f726044820152606490fd5b62461bcd60e51b815260206004820152601860248201527f466c617368426f72726f7765723a20756e7472757374656400000000000000006044820152606490fd5b8280fd5b600435906001600160a01b038216820361025f57565b600080fd5b90601f8019910116810190811067ffffffffffffffff82111761028657604052565b634e487b7160e01b600052604160045260246000fd5b9081602091031261025f5751801515810361025f5790565b919082018092116102c157565b634e487b7160e01b600052601160045260246000fd5b6001600160a01b039060008281541692604092835194636eb1769f60e11b86523060048701528060248701526020968787604481855afa968715610463578597610430575b508551633676633960e21b81526001600160a01b038416600482015260248101829052908882604481865afa918215610426579089959493929187926103e0575b506103a7986103708893610376936102b4565b906102b4565b875163095ea7b360e01b81526001600160a01b03909316600484015260248301529096879384929183906044820190565b0393165af19182156103d65750506103bd575050565b816103d392903d106100e1576100d58183610264565b50565b51903d90823e3d90fd5b8092508691939597989994963d831161041f575b6103fe8183610264565b8101031261041b57519196959488949093909290916103a761035d565b8680fd5b503d6103f4565b87513d88823e3d90fd5b9096508781813d831161045c575b6104488183610264565b810103126104585751953861031c565b8480fd5b503d61043e565b86513d87823e3d90fdfea264697066735822122083a60d37aed0ea99e9373e3994f0f0c698059a7f4b46dd9c43369e9d5add47ab64736f6c63430008120033", "linkReferences": {}, "deployedLinkReferences": {} } diff --git a/src/artifacts/tapioca-mocks/FlashMaliciousBorrowerMock.json b/src/artifacts/tapioca-mocks/FlashMaliciousBorrowerMock.json index 64e5028e..0cd3c59d 100644 --- a/src/artifacts/tapioca-mocks/FlashMaliciousBorrowerMock.json +++ b/src/artifacts/tapioca-mocks/FlashMaliciousBorrowerMock.json @@ -72,8 +72,8 @@ "type": "function" } ], - "bytecode": "0x60803461007457601f61034a38819003918201601f19168301916001600160401b038311848410176100795780849260209460405283398101031261007457516001600160a01b0381169081900361007457600080546001600160a01b0319169190911790556040516102ba90816100908239f35b600080fd5b634e487b7160e01b600052604160045260246000fdfe608060408181526004908136101561001657600080fd5b600092833560e01c90816323e30c8b1461012b575063b53e48851461003a57600080fd5b3461012757806003193601126101275761005261025c565b91602073ffffffffffffffffffffffffffffffffffffffff60a481875416958786519788948593632e7ff4ef60e11b855230898601521660248401526024356044840152608060648401528160848401525af1801561011d576100b3578380f35b6020913d8311610115575b601f8301601f191684019167ffffffffffffffff8311858410176101025750526020908201829003126100fe5751801515036100fb573880808380f35b80fd5b5080fd5b634e487b7160e01b865260419052602485fd5b3d92506100be565b82513d86823e3d90fd5b8280fd5b91939050346100fb5760a03660031901126100fb5761014861025c565b9173ffffffffffffffffffffffffffffffffffffffff91602435838116036100fb5760843567ffffffffffffffff8082116101275736602383011215610127578187013590811161012757369101602401116100fb57548216330361021b5750309116036101d957602082517f439148f0bbc682ca079e46d6e2c2f0c1e3b820f1a291b069d8882abf8cf18dd98152f35b6020606492519162461bcd60e51b8352820152602060248201527f466c617368426f72726f7765723a206e6f742074686520696e69746961746f726044820152fd5b62461bcd60e51b8152602084820152601860248201527f466c617368426f72726f7765723a20756e7472757374656400000000000000006044820152606490fd5b6004359073ffffffffffffffffffffffffffffffffffffffff8216820361027f57565b600080fdfea264697066735822122036225d952a22ec116a703bc5319502aca477c8a021c5434fc9bf384169e8ad3764736f6c63430008120033", - "deployedBytecode": "0x608060408181526004908136101561001657600080fd5b600092833560e01c90816323e30c8b1461012b575063b53e48851461003a57600080fd5b3461012757806003193601126101275761005261025c565b91602073ffffffffffffffffffffffffffffffffffffffff60a481875416958786519788948593632e7ff4ef60e11b855230898601521660248401526024356044840152608060648401528160848401525af1801561011d576100b3578380f35b6020913d8311610115575b601f8301601f191684019167ffffffffffffffff8311858410176101025750526020908201829003126100fe5751801515036100fb573880808380f35b80fd5b5080fd5b634e487b7160e01b865260419052602485fd5b3d92506100be565b82513d86823e3d90fd5b8280fd5b91939050346100fb5760a03660031901126100fb5761014861025c565b9173ffffffffffffffffffffffffffffffffffffffff91602435838116036100fb5760843567ffffffffffffffff8082116101275736602383011215610127578187013590811161012757369101602401116100fb57548216330361021b5750309116036101d957602082517f439148f0bbc682ca079e46d6e2c2f0c1e3b820f1a291b069d8882abf8cf18dd98152f35b6020606492519162461bcd60e51b8352820152602060248201527f466c617368426f72726f7765723a206e6f742074686520696e69746961746f726044820152fd5b62461bcd60e51b8152602084820152601860248201527f466c617368426f72726f7765723a20756e7472757374656400000000000000006044820152606490fd5b6004359073ffffffffffffffffffffffffffffffffffffffff8216820361027f57565b600080fdfea264697066735822122036225d952a22ec116a703bc5319502aca477c8a021c5434fc9bf384169e8ad3764736f6c63430008120033", + "bytecode": "0x60803461007457601f61034a38819003918201601f19168301916001600160401b038311848410176100795780849260209460405283398101031261007457516001600160a01b0381169081900361007457600080546001600160a01b0319169190911790556040516102ba90816100908239f35b600080fd5b634e487b7160e01b600052604160045260246000fdfe608060408181526004908136101561001657600080fd5b600092833560e01c90816323e30c8b1461012b575063b53e48851461003a57600080fd5b3461012757806003193601126101275761005261025c565b91602073ffffffffffffffffffffffffffffffffffffffff60a481875416958786519788948593632e7ff4ef60e11b855230898601521660248401526024356044840152608060648401528160848401525af1801561011d576100b3578380f35b6020913d8311610115575b601f8301601f191684019167ffffffffffffffff8311858410176101025750526020908201829003126100fe5751801515036100fb573880808380f35b80fd5b5080fd5b634e487b7160e01b865260419052602485fd5b3d92506100be565b82513d86823e3d90fd5b8280fd5b91939050346100fb5760a03660031901126100fb5761014861025c565b9173ffffffffffffffffffffffffffffffffffffffff91602435838116036100fb5760843567ffffffffffffffff8082116101275736602383011215610127578187013590811161012757369101602401116100fb57548216330361021b5750309116036101d957602082517f439148f0bbc682ca079e46d6e2c2f0c1e3b820f1a291b069d8882abf8cf18dd98152f35b6020606492519162461bcd60e51b8352820152602060248201527f466c617368426f72726f7765723a206e6f742074686520696e69746961746f726044820152fd5b62461bcd60e51b8152602084820152601860248201527f466c617368426f72726f7765723a20756e7472757374656400000000000000006044820152606490fd5b6004359073ffffffffffffffffffffffffffffffffffffffff8216820361027f57565b600080fdfea2646970667358221220a58ba54424932696342d246a32d41f24cedc4d86f011b82d3024a5db6f216c8964736f6c63430008120033", + "deployedBytecode": "0x608060408181526004908136101561001657600080fd5b600092833560e01c90816323e30c8b1461012b575063b53e48851461003a57600080fd5b3461012757806003193601126101275761005261025c565b91602073ffffffffffffffffffffffffffffffffffffffff60a481875416958786519788948593632e7ff4ef60e11b855230898601521660248401526024356044840152608060648401528160848401525af1801561011d576100b3578380f35b6020913d8311610115575b601f8301601f191684019167ffffffffffffffff8311858410176101025750526020908201829003126100fe5751801515036100fb573880808380f35b80fd5b5080fd5b634e487b7160e01b865260419052602485fd5b3d92506100be565b82513d86823e3d90fd5b8280fd5b91939050346100fb5760a03660031901126100fb5761014861025c565b9173ffffffffffffffffffffffffffffffffffffffff91602435838116036100fb5760843567ffffffffffffffff8082116101275736602383011215610127578187013590811161012757369101602401116100fb57548216330361021b5750309116036101d957602082517f439148f0bbc682ca079e46d6e2c2f0c1e3b820f1a291b069d8882abf8cf18dd98152f35b6020606492519162461bcd60e51b8352820152602060248201527f466c617368426f72726f7765723a206e6f742074686520696e69746961746f726044820152fd5b62461bcd60e51b8152602084820152601860248201527f466c617368426f72726f7765723a20756e7472757374656400000000000000006044820152606490fd5b6004359073ffffffffffffffffffffffffffffffffffffffff8216820361027f57565b600080fdfea2646970667358221220a58ba54424932696342d246a32d41f24cedc4d86f011b82d3024a5db6f216c8964736f6c63430008120033", "linkReferences": {}, "deployedLinkReferences": {} } diff --git a/src/typechain/tapioca-mocks/factories/FlashBorrowerMock.sol/FlashBorrowerMock__factory.ts b/src/typechain/tapioca-mocks/factories/FlashBorrowerMock.sol/FlashBorrowerMock__factory.ts index c0f609dc..68e2b3a9 100644 --- a/src/typechain/tapioca-mocks/factories/FlashBorrowerMock.sol/FlashBorrowerMock__factory.ts +++ b/src/typechain/tapioca-mocks/factories/FlashBorrowerMock.sol/FlashBorrowerMock__factory.ts @@ -99,7 +99,7 @@ const _abi = [ ] as const; const _bytecode = - "0x60803461007457601f61052238819003918201601f19168301916001600160401b038311848410176100795780849260209460405283398101031261007457516001600160a01b0381169081900361007457600080546001600160a01b03191691909117905560405161049290816100908239f35b600080fd5b634e487b7160e01b600052604160045260246000fdfe60806040818152600436101561001457600080fd5b600091823560e01c90816323e30c8b1461011f57508063736ddf3b146100f55763b53e48851461004357600080fd5b346100f157806003193601126100f15761005b610249565b9060206024359261006c84826102d7565b60a46001600160a01b0391868381541686519788958694632e7ff4ef60e11b86523060048701521660248501526044840152608060648401528160848401525af19081156100e857506100bd575080f35b6100dd9060203d81116100e1575b6100d58183610264565b81019061029c565b5080f35b503d6100cb565b513d84823e3d90fd5b5080fd5b50346100f15736600319011261011c57610119610110610249565b602435906102d7565b80f35b80fd5b9050823461011c5760a036600319011261011c5761013b610249565b916001600160a01b03916024358381160361011c5760843567ffffffffffffffff8082116102455736602383011215610245578160040135908111610245573691016024011161011c5754821633036102035750309116036101c057602090517f439148f0bbc682ca079e46d6e2c2f0c1e3b820f1a291b069d8882abf8cf18dd98152f35b5162461bcd60e51b815260206004820181905260248201527f466c617368426f72726f7765723a206e6f742074686520696e69746961746f726044820152606490fd5b62461bcd60e51b815260206004820152601860248201527f466c617368426f72726f7765723a20756e7472757374656400000000000000006044820152606490fd5b8280fd5b600435906001600160a01b038216820361025f57565b600080fd5b90601f8019910116810190811067ffffffffffffffff82111761028657604052565b634e487b7160e01b600052604160045260246000fd5b9081602091031261025f5751801515810361025f5790565b919082018092116102c157565b634e487b7160e01b600052601160045260246000fd5b6000906001600160a01b038254166040918251636eb1769f60e11b81523060048201528260248201526020958682604481875afa918215610423578790879361042d575b508551633676633960e21b81526001600160a01b039490941660048501526024840182905291929182604481875afa918215610423579187939187959386926103e2575b5091610372610378926103aa95946102b4565b906102b4565b855163095ea7b360e01b81526001600160a01b0383166004820152602481019190915295869283919082906044820190565b03925af19182156103d85750506103bf575050565b816103d592903d106100e1576100d58183610264565b50565b51903d90823e3d90fd5b929483919496508092503d831161041c575b6103fe8183610264565b81010312610418575185938793909290919061037261035f565b8580fd5b503d6103f4565b85513d88823e3d90fd5b80929350813d8311610455575b6104448183610264565b81010312610418575190868161031b565b503d61043a56fea2646970667358221220fb96064838e721b974489d0cbb7dc332f8dcfae86f734bf6c4c33eb10a0f6a5164736f6c63430008120033"; + "0x60803461007457601f61053338819003918201601f19168301916001600160401b038311848410176100795780849260209460405283398101031261007457516001600160a01b0381169081900361007457600080546001600160a01b0319169190911790556040516104a390816100908239f35b600080fd5b634e487b7160e01b600052604160045260246000fdfe60806040818152600436101561001457600080fd5b600091823560e01c90816323e30c8b1461011f57508063736ddf3b146100f55763b53e48851461004357600080fd5b346100f157806003193601126100f15761005b610249565b9060206024359261006c84826102d7565b60a46001600160a01b0391868381541686519788958694632e7ff4ef60e11b86523060048701521660248501526044840152608060648401528160848401525af19081156100e857506100bd575080f35b6100dd9060203d81116100e1575b6100d58183610264565b81019061029c565b5080f35b503d6100cb565b513d84823e3d90fd5b5080fd5b50346100f15736600319011261011c57610119610110610249565b602435906102d7565b80f35b80fd5b9050823461011c5760a036600319011261011c5761013b610249565b916001600160a01b03916024358381160361011c5760843567ffffffffffffffff8082116102455736602383011215610245578160040135908111610245573691016024011161011c5754821633036102035750309116036101c057602090517f439148f0bbc682ca079e46d6e2c2f0c1e3b820f1a291b069d8882abf8cf18dd98152f35b5162461bcd60e51b815260206004820181905260248201527f466c617368426f72726f7765723a206e6f742074686520696e69746961746f726044820152606490fd5b62461bcd60e51b815260206004820152601860248201527f466c617368426f72726f7765723a20756e7472757374656400000000000000006044820152606490fd5b8280fd5b600435906001600160a01b038216820361025f57565b600080fd5b90601f8019910116810190811067ffffffffffffffff82111761028657604052565b634e487b7160e01b600052604160045260246000fd5b9081602091031261025f5751801515810361025f5790565b919082018092116102c157565b634e487b7160e01b600052601160045260246000fd5b6001600160a01b039060008281541692604092835194636eb1769f60e11b86523060048701528060248701526020968787604481855afa968715610463578597610430575b508551633676633960e21b81526001600160a01b038416600482015260248101829052908882604481865afa918215610426579089959493929187926103e0575b506103a7986103708893610376936102b4565b906102b4565b875163095ea7b360e01b81526001600160a01b03909316600484015260248301529096879384929183906044820190565b0393165af19182156103d65750506103bd575050565b816103d392903d106100e1576100d58183610264565b50565b51903d90823e3d90fd5b8092508691939597989994963d831161041f575b6103fe8183610264565b8101031261041b57519196959488949093909290916103a761035d565b8680fd5b503d6103f4565b87513d88823e3d90fd5b9096508781813d831161045c575b6104488183610264565b810103126104585751953861031c565b8480fd5b503d61043e565b86513d87823e3d90fdfea264697066735822122083a60d37aed0ea99e9373e3994f0f0c698059a7f4b46dd9c43369e9d5add47ab64736f6c63430008120033"; type FlashBorrowerMockConstructorParams = | [signer?: Signer] diff --git a/src/typechain/tapioca-mocks/factories/FlashBorrowerMock.sol/FlashMaliciousBorrowerMock__factory.ts b/src/typechain/tapioca-mocks/factories/FlashBorrowerMock.sol/FlashMaliciousBorrowerMock__factory.ts index f9f300c9..0c2cc33c 100644 --- a/src/typechain/tapioca-mocks/factories/FlashBorrowerMock.sol/FlashMaliciousBorrowerMock__factory.ts +++ b/src/typechain/tapioca-mocks/factories/FlashBorrowerMock.sol/FlashMaliciousBorrowerMock__factory.ts @@ -81,7 +81,7 @@ const _abi = [ ] as const; const _bytecode = - "0x60803461007457601f61034a38819003918201601f19168301916001600160401b038311848410176100795780849260209460405283398101031261007457516001600160a01b0381169081900361007457600080546001600160a01b0319169190911790556040516102ba90816100908239f35b600080fd5b634e487b7160e01b600052604160045260246000fdfe608060408181526004908136101561001657600080fd5b600092833560e01c90816323e30c8b1461012b575063b53e48851461003a57600080fd5b3461012757806003193601126101275761005261025c565b91602073ffffffffffffffffffffffffffffffffffffffff60a481875416958786519788948593632e7ff4ef60e11b855230898601521660248401526024356044840152608060648401528160848401525af1801561011d576100b3578380f35b6020913d8311610115575b601f8301601f191684019167ffffffffffffffff8311858410176101025750526020908201829003126100fe5751801515036100fb573880808380f35b80fd5b5080fd5b634e487b7160e01b865260419052602485fd5b3d92506100be565b82513d86823e3d90fd5b8280fd5b91939050346100fb5760a03660031901126100fb5761014861025c565b9173ffffffffffffffffffffffffffffffffffffffff91602435838116036100fb5760843567ffffffffffffffff8082116101275736602383011215610127578187013590811161012757369101602401116100fb57548216330361021b5750309116036101d957602082517f439148f0bbc682ca079e46d6e2c2f0c1e3b820f1a291b069d8882abf8cf18dd98152f35b6020606492519162461bcd60e51b8352820152602060248201527f466c617368426f72726f7765723a206e6f742074686520696e69746961746f726044820152fd5b62461bcd60e51b8152602084820152601860248201527f466c617368426f72726f7765723a20756e7472757374656400000000000000006044820152606490fd5b6004359073ffffffffffffffffffffffffffffffffffffffff8216820361027f57565b600080fdfea264697066735822122036225d952a22ec116a703bc5319502aca477c8a021c5434fc9bf384169e8ad3764736f6c63430008120033"; + "0x60803461007457601f61034a38819003918201601f19168301916001600160401b038311848410176100795780849260209460405283398101031261007457516001600160a01b0381169081900361007457600080546001600160a01b0319169190911790556040516102ba90816100908239f35b600080fd5b634e487b7160e01b600052604160045260246000fdfe608060408181526004908136101561001657600080fd5b600092833560e01c90816323e30c8b1461012b575063b53e48851461003a57600080fd5b3461012757806003193601126101275761005261025c565b91602073ffffffffffffffffffffffffffffffffffffffff60a481875416958786519788948593632e7ff4ef60e11b855230898601521660248401526024356044840152608060648401528160848401525af1801561011d576100b3578380f35b6020913d8311610115575b601f8301601f191684019167ffffffffffffffff8311858410176101025750526020908201829003126100fe5751801515036100fb573880808380f35b80fd5b5080fd5b634e487b7160e01b865260419052602485fd5b3d92506100be565b82513d86823e3d90fd5b8280fd5b91939050346100fb5760a03660031901126100fb5761014861025c565b9173ffffffffffffffffffffffffffffffffffffffff91602435838116036100fb5760843567ffffffffffffffff8082116101275736602383011215610127578187013590811161012757369101602401116100fb57548216330361021b5750309116036101d957602082517f439148f0bbc682ca079e46d6e2c2f0c1e3b820f1a291b069d8882abf8cf18dd98152f35b6020606492519162461bcd60e51b8352820152602060248201527f466c617368426f72726f7765723a206e6f742074686520696e69746961746f726044820152fd5b62461bcd60e51b8152602084820152601860248201527f466c617368426f72726f7765723a20756e7472757374656400000000000000006044820152606490fd5b6004359073ffffffffffffffffffffffffffffffffffffffff8216820361027f57565b600080fdfea2646970667358221220a58ba54424932696342d246a32d41f24cedc4d86f011b82d3024a5db6f216c8964736f6c63430008120033"; type FlashMaliciousBorrowerMockConstructorParams = | [signer?: Signer] From 5d5dcb54def7293ba9f048f90616218a80d374e4 Mon Sep 17 00:00:00 2001 From: cryptotechmaker Date: Mon, 23 Oct 2023 10:48:52 +0300 Subject: [PATCH 4/6] bar artifacts --- src/artifacts/tapioca-bar/BBBorrow.json | 149 ++++-- src/artifacts/tapioca-bar/BBCollateral.json | 137 +++-- src/artifacts/tapioca-bar/BBCommon.json | 137 +++-- .../tapioca-bar/BBLendingCommon.json | 137 +++-- src/artifacts/tapioca-bar/BBLeverage.json | 137 +++-- src/artifacts/tapioca-bar/BBLiquidation.json | 137 +++-- src/artifacts/tapioca-bar/BBStorage.json | 137 +++-- src/artifacts/tapioca-bar/BigBang.json | 185 +++++-- src/artifacts/tapioca-bar/Market.json | 37 -- src/artifacts/tapioca-bar/SGLBorrow.json | 9 +- src/artifacts/tapioca-bar/SGLCollateral.json | 9 +- src/artifacts/tapioca-bar/SGLCommon.json | 9 +- .../tapioca-bar/SGLLendingCommon.json | 9 +- src/artifacts/tapioca-bar/SGLLeverage.json | 9 +- src/artifacts/tapioca-bar/SGLLiquidation.json | 9 +- src/artifacts/tapioca-bar/SGLStorage.json | 9 +- src/artifacts/tapioca-bar/Singularity.json | 14 +- src/artifacts/tapioca-bar/Test.json | 72 ++- .../tapioca-bar/USDOFlashloanHelper.json | 4 +- src/global__db.bak | 54 ++ src/typechain/tapioca-bar/Test.ts | 225 +++++++- .../tapioca-bar/factories/Test__factory.ts | 70 ++- .../factories/markets/Market__factory.ts | 37 -- .../markets/bigBang/BBBorrow__factory.ts | 147 ++++-- .../markets/bigBang/BBCollateral__factory.ts | 135 +++-- .../markets/bigBang/BBCommon__factory.ts | 135 +++-- .../bigBang/BBLendingCommon__factory.ts | 135 +++-- .../markets/bigBang/BBLeverage__factory.ts | 135 +++-- .../markets/bigBang/BBLiquidation__factory.ts | 135 +++-- .../markets/bigBang/BBStorage__factory.ts | 135 +++-- .../markets/bigBang/BigBang__factory.ts | 183 +++++-- .../markets/singularity/SGLBorrow__factory.ts | 7 +- .../singularity/SGLCollateral__factory.ts | 7 +- .../markets/singularity/SGLCommon__factory.ts | 7 +- .../singularity/SGLLendingCommon__factory.ts | 7 +- .../singularity/SGLLeverage__factory.ts | 7 +- .../singularity/SGLLiquidation__factory.ts | 7 +- .../singularity/SGLStorage__factory.ts | 7 +- .../singularity/Singularity__factory.ts | 12 +- .../usd0/USDOFlashloanHelper__factory.ts | 2 +- src/typechain/tapioca-bar/markets/Market.ts | 96 +--- .../tapioca-bar/markets/bigBang/BBBorrow.ts | 317 ++++++++---- .../markets/bigBang/BBCollateral.ts | 309 ++++++++--- .../tapioca-bar/markets/bigBang/BBCommon.ts | 309 ++++++++--- .../markets/bigBang/BBLendingCommon.ts | 309 ++++++++--- .../tapioca-bar/markets/bigBang/BBLeverage.ts | 309 ++++++++--- .../markets/bigBang/BBLiquidation.ts | 309 ++++++++--- .../tapioca-bar/markets/bigBang/BBStorage.ts | 309 ++++++++--- .../tapioca-bar/markets/bigBang/BigBang.ts | 479 ++++++++++++++---- .../markets/singularity/SGLBorrow.ts | 30 +- .../markets/singularity/SGLCollateral.ts | 30 +- .../markets/singularity/SGLCommon.ts | 30 +- .../markets/singularity/SGLLendingCommon.ts | 30 +- .../markets/singularity/SGLLeverage.ts | 30 +- .../markets/singularity/SGLLiquidation.ts | 30 +- .../markets/singularity/SGLStorage.ts | 30 +- .../markets/singularity/Singularity.ts | 62 ++- 57 files changed, 4300 insertions(+), 1653 deletions(-) diff --git a/src/artifacts/tapioca-bar/BBBorrow.json b/src/artifacts/tapioca-bar/BBBorrow.json index 7607ab37..63c3555c 100644 --- a/src/artifacts/tapioca-bar/BBBorrow.json +++ b/src/artifacts/tapioca-bar/BBBorrow.json @@ -53,6 +53,31 @@ "name": "ApprovalBorrow", "type": "event" }, + { + "anonymous": false, + "inputs": [], + "name": "AssetOracleDataUpdated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "_oldVal", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "_newVal", + "type": "address" + } + ], + "name": "AssetOracleUpdated", + "type": "event" + }, { "anonymous": false, "inputs": [ @@ -272,25 +297,6 @@ "name": "LogBorrowCapUpdated", "type": "event" }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "uint256", - "name": "_oldVal", - "type": "uint256" - }, - { - "indexed": true, - "internalType": "uint256", - "name": "_newVal", - "type": "uint256" - } - ], - "name": "LogBorrowingFee", - "type": "event" - }, { "anonymous": false, "inputs": [ @@ -479,6 +485,37 @@ "name": "Transfer", "type": "event" }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint256", + "name": "oldMin", + "type": "uint256" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "newMin", + "type": "uint256" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "oldMax", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "newMax", + "type": "uint256" + } + ], + "name": "UpdateMinMaxMintFee", + "type": "event" + }, { "inputs": [], "name": "DOMAIN_SEPARATOR", @@ -639,6 +676,32 @@ "stateMutability": "view", "type": "function" }, + { + "inputs": [], + "name": "assetOracle", + "outputs": [ + { + "internalType": "contract IOracle", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "assetOracleData", + "outputs": [ + { + "internalType": "bytes", + "name": "", + "type": "bytes" + } + ], + "stateMutability": "view", + "type": "function" + }, { "inputs": [ { @@ -692,19 +755,6 @@ "stateMutability": "nonpayable", "type": "function" }, - { - "inputs": [], - "name": "borrowOpeningFee", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, { "inputs": [], "name": "callerFee", @@ -1007,6 +1057,19 @@ "stateMutability": "view", "type": "function" }, + { + "inputs": [], + "name": "maxMintFee", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, { "inputs": [], "name": "minDebtRate", @@ -1033,6 +1096,19 @@ "stateMutability": "view", "type": "function" }, + { + "inputs": [], + "name": "minMintFee", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, { "inputs": [ { @@ -1334,11 +1410,6 @@ }, { "inputs": [ - { - "internalType": "uint256", - "name": "_borrowOpeningFee", - "type": "uint256" - }, { "internalType": "contract IOracle", "name": "_oracle", @@ -1621,8 +1692,8 @@ "type": "function" } ], - "bytecode": "0x6101408060405234620001895762000017816200018e565b600f81526001602082016e546170696f63612042696742616e6760881b8152602060405162000046816200018e565b8381520192603160f81b845251902091208160e052610100918183524660a0526040519160208301907f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f92838352604085015260608401524660808401523060a084015260a0835260c083019280841060018060401b03851117620001735760408490525190206080523060c052610120908152600580546001600160a01b0319163390811790915560007f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a362013880601b5562015f90601c55612710601d556032602055612ee0602155613a619283620001ab843960805183612887015260a05183612952015260c05183612851015260e051836128d6015251826128fc015251816128b30152f35b634e487b7160e01b600052604160045260246000fd5b600080fd5b604081019081106001600160401b03821117620001735760405256fe60806040908082526004918236101561001757600080fd5b60009260e08435811c938462a02a2014611e405750836302ce728f14611e17578363078dfbe714611d12578363095ea7b314611ce85783630996efb7146118685783630c4e84f01461175157836318160ddd146117365783631c9e379b146116fe5783631da8bf10146116445783631fb8f81a1461162557836323b872dd1461149d578363331960ff1461147e57836334ce998a1461145557836334d441d0146114365783633644e5151461141957836337b6b7b9146113fa57836338d52e0f146113d15783633ba0b9a9146113b25783633f741adb1461138957836340626d8b1461136a57836344de240a1461134b578363473e3ce71461132c57836348e4163e146112f45783634e71e0c81461123f5783635224372c14611188578363529898f214611169578363579354621461114a5783636b19ad161461112b5783636c3d8b8f1461110257836370a08231146110ca578363727785471461109257836374645ff314610f815783637dc0d1d014610f585783637ecebe0014610f215783637fa0b84e14610ef05783638285ef4014610ebf57836387b2793714610e875783638c5d0ed314610e685783638da5cb5b14610e3f578363910dd7c814610bc2578363959916dc14610ba457836399a9702814610b7b5783639e15e89f14610b40578363a9059cbb14610a65578363b0e21e8a14610a46578363b27c0e7414610a15578363b7113f19146109f1578363bb4cfe3b146109d2578363bde39c5d146109b3578363c1ad5c8d1461098f578363cd0211eb146105e9578363ce8849ed146105c0578363d505accf146104395750508163d8dfeb4514610410578163dd62ed3e146103c2578163de40657714610399578163e0996cb61461037a578163e30c397814610351578163ea64dd5614610332578163eec0f42e14610313578163f791395d146102f0575063f8ba4cff146102d257600080fd5b346102ed57806003193601126102ed576102ea613839565b80f35b80fd5b90503461030f578160031936011261030f576020906028549051908152f35b5080fd5b90503461030f578160031936011261030f57602090600c549051908152f35b90503461030f578160031936011261030f57602090601f549051908152f35b90503461030f578160031936011261030f5760065490516001600160a01b039091168152602090f35b90503461030f578160031936011261030f57602090601d549051908152f35b90503461030f578160031936011261030f5760095490516001600160a01b039091168152602090f35b90503461030f578060031936011261030f576020916103df611e87565b826103e8611ea2565b6001600160a01b03928316845260028652922091166000908152908352819020549051908152f35b90503461030f578160031936011261030f57600b5490516001600160a01b039091168152602090f35b908491346105bc5761044a36611ed6565b918394989597934211610579579161051c91610524938c8b8b60018060a01b0398898d169a8b93846000528d602052856000209081549161048a83612ba8565b90558c87519560208701977f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e266895260008a890152606088015216608086015260a085015260c08401528183015281526104e281612007565b5190206104ed61284e565b915190602082019261190160f01b8452602283015260428201526042815261051481612023565b519020612b23565b919091612a24565b160361053657506102ea939450612c05565b606490602087519162461bcd60e51b8352820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152fd5b8a5162461bcd60e51b8152602081880152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b8280fd5b84833461030f578160031936011261030f5760085490516001600160a01b039091168152602090f35b5083823461030f57608036600319011261030f57610605611e87565b9161060e611ea2565b93610617611ec7565b50606435600183526020956007875261063660ff868620541615612c5c565b6001600160a01b03918183169161064f30841415612c99565b61065761234f565b5050610661613839565b6106a66106956106788461067361328e565b613504565b90506011549060ff61068d89600d54166131f1565b1691856133b1565b6106a0811515612ce4565b89613434565b8286526017895286862054808311610987575b50811561094c57816106ca91613977565b968188101561091157828652602489528686206106e889825461215c565b90556106f68261067361328e565b9890899060018060801b03815116908c60018060801b031991015160801b161760145584885260178b5288882061072e85825461215c565b90558989888860095416868c600e5461075c8651978896879586946311a5cc7760e31b865230928601613948565b03925af18015610907578c9388938c8e99989794610791946108d9575b5050610785878a61215c565b806108b6575b5061215c565b80610817575b50895193845216917fc8e512d8f188ca059984b5853d2bf653da902696b8512785b182b2c813789a6e9190a4600a541690813b156105bc578351632ebe913360e21b81529183918391829084905af1801561080d576107f9575b505051908152f35b6108038291611fc3565b6102ed57806107f1565b83513d84823e3d90fd5b925092939450600d541690813b156108b2578851632770a7eb60e21b815230888201908152602081019290925291889183919082908490829060400103925af180156108a857918a918a959493610871575b908691610797565b7fc8e512d8f188ca059984b5853d2bf653da902696b8512785b182b2c813789a6e92919861089f8892611fc3565b98919250610869565b88513d89823e3d90fd5b8780fd5b6108d391506108cc620186a091601a5490612105565b048961215c565b8f61078b565b816108f892903d10610900575b6108f0818361203e565b810190613932565b8e9150610779565b503d6108e6565b8a513d8b823e3d90fd5b865162461bcd60e51b81528086018a9052601560248201527442423a2072657061796d656e7420746f6f206c6f7760581b6044820152606490fd5b865162461bcd60e51b81528086018a9052601560248201527453474c3a206e6f7468696e6720746f20726570617960581b6044820152606490fd5b9150896106b9565b84833461030f578160031936011261030f576020906109ac6135b8565b9051908152f35b84833461030f578160031936011261030f576020906029549051908152f35b84833461030f578160031936011261030f57602090601e549051908152f35b84833461030f578160031936011261030f5760209060ff6026541690519015158152f35b8285346102ed57806003193601126102ed57506025548151906001600160401b03908181168352831c166020820152f35b84833461030f578160031936011261030f57602090601a549051908152f35b84833461030f578060031936011261030f57602091610a82611e87565b82602435928315801590610b2e575b610ac1575b50519182526001600160a01b0316903390600080516020613a0c833981519152908590a35160018152f35b3381526001865281812054610ad885821015612978565b6001600160a01b038416908533839003610af5575b505050610a96565b610b0991610b048415156129bd565b61215c565b3383526001885283832055815220610b22838254612169565b90558285808085610aed565b50336001600160a01b03841614610a91565b84833461030f578060031936011261030f57606090610b69610b60611e87565b602435906122a8565b91929081519384526020840152820152f35b84833461030f578060031936011261030f576020906109ac610b9b611e87565b6024359061271c565b84833461030f578160031936011261030f5760209081549051908152f35b92509034610e3b5780600319360112610e3b578135926001600160401b038411610e375736602385011215610e37578383013592610bff8461205f565b94610c0c8451968761203e565b848652866020918288019636602482840101116105bc578060248593018937880101526024359361ffff85168095036108b257610100958688805181010312610e3357610c5890612342565b93610c64828901612a02565b90610c7160608a01612a02565b9860808101519860a082015192610c8a60c08401612a16565b91818401519301519360018060a01b03808097169d169a814211610df057928d8f819897948f948f8f968f918f959a8f8c8195610d669f9c61051c9f50600014610dc9577f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e2669a5b825289522093845494610d0386612ba8565b905580519788019889528701528d6060870152608086015260a085015260c0840152818301528152610d3481612007565b519020610d3f61284e565b908951908b82019261190160f01b8452602283015260428201526042815261051481612023565b1603610d8857505050600014610d7f576102ea92612c05565b6102ea92612bb7565b5162461bcd60e51b815291820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e61747572650000604482015260649150fd5b7f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d69a610cf1565b875162461bcd60e51b8152808b018a9052601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b8880fd5b8480fd5b8380fd5b84833461030f578160031936011261030f5760055490516001600160a01b039091168152602090f35b84833461030f578160031936011261030f57602090601b549051908152f35b84833461030f57602036600319011261030f5760209181906001600160a01b03610eaf611e87565b1681526024845220549051908152f35b8285346102ed57806003193601126102ed575060145481516001600160801b038216815260809190911c6020820152f35b84833461030f578060031936011261030f57602090610f1a610f10611e87565b6024359033612bb7565b5160018152f35b848383346105bc5760203660031901126105bc5760209282916001600160a01b03610f4a611e87565b168252845220549051908152f35b84833461030f578160031936011261030f57600f5490516001600160a01b039091168152602090f35b84833461030f578160031936011261030f5780516010548184610fa383611f89565b8083526001938085169081156110715750600114611014575b50610fcc9250949294038461203e565b815192839160208084528251928382860152825b848110610ffe57505050828201840152601f01601f19168101030190f35b8181018301518882018801528795508201610fe0565b601087527f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae67293602092508791905b818310611059575050610fcc935082010186610fbc565b85548784018501529485019486945091830191611042565b9050610fcc94506020925060ff191682840152151560051b82010186610fbc565b848383346105bc5760203660031901126105bc57359160098310156102ed575060ff6110bf602093611f5a565b541690519015158152f35b84833461030f57602036600319011261030f5760209181906001600160a01b036110f2611e87565b1681526001845220549051908152f35b84833461030f578160031936011261030f57600a5490516001600160a01b039091168152602090f35b84833461030f578160031936011261030f576020906027549051908152f35b84833461030f578160031936011261030f57602090601c549051908152f35b84833461030f578160031936011261030f576020906021549051908152f35b848383346105bc576111f6906111ea60ff84956111bd6111a736611f25565b9491989093808052600760205220541615612c5c565b6111d26001600160a01b038216301415612c99565b6111da61234f565b50506111e4613839565b85612d3a565b929093601154906132b4565b15611208575082519182526020820152f35b606490602085519162461bcd60e51b8352820152601160248201527013585c9ad95d0e881a5b9cdbdb1d995b9d607a1b6044820152fd5b509150346105bc57826003193601126105bc576006546001600160a01b039290918383169190338390036112b1575050806005549384167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08680a36001600160a01b0319928316176005551660065580f35b906020606492519162461bcd60e51b8352820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b84833461030f57602036600319011261030f5760209181906001600160a01b0361131c611e87565b1681526017845220549051908152f35b84833461030f578160031936011261030f576020906015549051908152f35b84833461030f578160031936011261030f57602090600e549051908152f35b84833461030f578160031936011261030f576020906016549051908152f35b509083346102ed5760603660031901126102ed57506109ac60209260443590602435903561218f565b84833461030f578160031936011261030f576020906011549051908152f35b84833461030f578160031936011261030f57600d5490516001600160a01b039091168152602090f35b84833461030f578160031936011261030f576020906012549051908152f35b84833461030f578160031936011261030f576020906109ac61284e565b84833461030f578160031936011261030f576020906019549051908152f35b84833461030f578160031936011261030f5760145490516001600160801b039091168152602090f35b84833461030f578160031936011261030f576020906013549051908152f35b509083346102ed576114ae36611f25565b9192826114e8575b508351918252602094506001600160a01b03908116921690600080516020613a0c833981519152908590a35160018152f35b6001600160a01b03848116808352600160209081528784205491989290919061151387831015612978565b851692838a03611527575b505050506114b6565b898552600283528885203386528352888520549060018201611591575b5050928260209960018a946115708a8e99610b04600080516020613a0c8339815191529c9a15156129bd565b9285525283832055815220611586858254612169565b90559187808061151e565b8782106115e757509260209960018a946115708a8e99966115c282600080516020613a0c8339815191529d9b61215c565b86895260028552898920338a5285528989205596995050509450509981949650611544565b895162461bcd60e51b8152908101849052601860248201527745524332303a20616c6c6f77616e636520746f6f206c6f7760401b6044820152606490fd5b84833461030f578160031936011261030f57602090602a549051908152f35b908491346105bc5761165536611ed6565b939794969092804211610579579386936116ec938c8c8961051c968e9a8e60018060a01b03809c169c8d948587526020528c8787209283549361169785612ba8565b905588519660208801987f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d68a528a890152606088015216608086015260a085015260c08401528183015281526104e281612007565b160361053657506102ea939450612bb7565b84833461030f57602036600319011261030f5760209181906001600160a01b03611726611e87565b1681526018845220549051908152f35b84833461030f578160031936011261030f5751908152602090f35b848383346105bc57816003193601126105bc578035906009821015610e3b57611778611eb8565b6008549093906001600160a01b0316330361182e5760ff61179884611f5a565b541615159315159384146117f6575050808260ff6117b86117e694611f5a565b54161515827feeec81de25875ce1725479bb76f720a8defdb43dea041919ae37bb4aae9847c08780a4611f5a565b9060ff8019835416911617905580f35b906020606492519162461bcd60e51b835282015260126024820152714d61726b65743a2073616d6520737461746560701b6044820152fd5b906020606492519162461bcd60e51b8352820152601460248201527313585c9ad95d0e881d5b985d5d1a1bdc9a5e995960621b6044820152fd5b848383346105bc576101803660031901126105bc5760246001600160a01b03813581811690819003611ce457604435916001600160401b03908184116108b257366023850112156108b257838601359182116108b257368583860101116108b25760643591818316809303610e33576118e68260055416331461207a565b863594620186a0946118fa868811156120c5565b602096808c7fc353b09af857951dccce61b43a5854fc45beceed36c50e5d4cc2e71858a8e0df8a549180a3875580611ca6575b508682611b6b575b50505081611b2b575b505060843580611b16575b5060a43580611b01575b5060c43580611aed575b5060e43580611acc575b506101043580611aab575b506101243580611a7a575b50610144359081611a0c575b5050610164359384611999578580f35b601e5485106119b25750505050601f5581808080808580f35b5162461bcd60e51b8152928301526032908201527f4d61726b65743a206c69717569646174696f6e436f6c6c61746572616c697a616044820152711d1a5bdb94985d19481d1bdbc81cdb585b1b60721b6064820152608490fd5b611a18908211156120c5565b601f548111611a2b57601e558580611989565b5090602591608494519362461bcd60e51b85528401528201527f4d61726b65743a20636f6c6c61746572616c697a6174696f6e5261746520746f6044820152646f2062696760d81b6064820152fd5b806016547fae6e0ab3b95f0a53ff9660a390ccedcbbf1f2355dce974a9841af106fddcfaba8980a36016558661197d565b611ab68282106120c5565b611ac3601b5482116120c5565b601c5586611972565b611ad78282106120c5565b611ae4601c5482106120c5565b601b5586611967565b611af88282106120c5565b601d558661195d565b611b0d828211156120c5565b601a5586611953565b611b22828211156120c5565b60195586611949565b816008549182167f5a62d22209e370e38eea92cfddcd228e656e6ec139243392a760a7769f5877fd8a80a36001600160a01b03191617600855868061193e565b8291611b78601054611f89565b601f8111611c55575b508b90601f8411600114611be6578c93611bd9575b5050508160011b916000199060031b1c1916176010555b7fa6f004921c944d4b8bf6e38462b00f36a58d62495d56b51f571ab78f732c98158880a1888086611935565b0101359050868b80611b96565b60108d52888d20601f198516955092509089908d5b8a878210611c3a5750508460019610611c1e575b50505050811b01601055611bad565b60001960f88660031b161c19920101351690558a808881611c0f565b8483019093013585556001909401938b929182019101611bfb565b9150915060108b52868b20601f840160051c8101888510611c9f575b91849391601f8b94920160051c01905b818110611c8e5750611b81565b8d81558594508a9350600101611c81565b5080611c71565b600f80546001600160a01b0319169190911790557f0b2d6eb667d0522c3eb86e4288afecae6c11591ffd1345d4d12407e0598bca9b8a80a18a61192d565b8580fd5b84833461030f578060031936011261030f57602090610f1a611d08611e87565b6024359033612c05565b509150346105bc5760603660031901126105bc57611d2e611e87565b91611d37611eb8565b91611d40611ec7565b9260018060a01b03948591611d5a8360055416331461207a565b15611dfe571692831590811591611df6575b5015611dbb575050806005549283167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08580a36001600160a01b03199182161760055560068054909116905580f35b906020606492519162461bcd60e51b835282015260156024820152744f776e61626c653a207a65726f206164647265737360581b6044820152fd5b905038611d6c565b93505050501660018060a01b0319600654161760065580f35b8285346102ed57806003193601126102ed5750611e3261234f565b825191151582526020820152f35b93505050346105bc57806003193601126105bc57602092611e5f611e87565b611e67611ea2565b6001600160a01b0391821683526003865283832091168252845220548152f35b600435906001600160a01b0382168203611e9d57565b600080fd5b602435906001600160a01b0382168203611e9d57565b602435908115158203611e9d57565b604435908115158203611e9d57565b60e0906003190112611e9d576001600160a01b03906004358281168103611e9d57916024359081168103611e9d5790604435906064359060843560ff81168103611e9d579060a4359060c43590565b6060906003190112611e9d576001600160a01b03906004358281168103611e9d57916024359081168103611e9d579060443590565b6009811015611f73576000526007602052604060002090565b634e487b7160e01b600052602160045260246000fd5b90600182811c92168015611fb9575b6020831014611fa357565b634e487b7160e01b600052602260045260246000fd5b91607f1691611f98565b6001600160401b038111611fd657604052565b634e487b7160e01b600052604160045260246000fd5b604081019081106001600160401b03821117611fd657604052565b61010081019081106001600160401b03821117611fd657604052565b608081019081106001600160401b03821117611fd657604052565b90601f801991011681019081106001600160401b03821117611fd657604052565b6001600160401b038111611fd657601f01601f191660200190565b1561208157565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b156120cc57565b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881b9bdd081d985b1a59607a1b6044820152606490fd5b8181029291811591840414171561211857565b634e487b7160e01b600052601160045260246000fd5b8115612138570490565b634e487b7160e01b600052601260045260246000fd5b604d811161211857600a0a90565b9190820391821161211857565b9190820180921161211857565b8181039291600013801582851316918412161761211857565b6014549192916121d8916121c9916121bf916121b5906001600160801b03831690612105565b9060801c9061212e565b93601f5490612105565b6121d28361214e565b9061212e565b8083106122a0576121ec612228918461215c565b9161222361221d612214601e5461220e6122058661214e565b60215490612169565b90612105565b6121d28461214e565b9161214e565b612176565b6509184e72a0009081810291818305149015171561211857670de0b6b3a76400009182810292818405149015171561211857801561213857600160ff1b91808314600019831416612118570590600082121561229957811461211857600003905b808211612294575090565b905090565b5090612289565b505050600090565b6001600160a01b038116600081815260176020526040812054919493929091908115612336579160409161231285946122ec61232a976122e66137a8565b92612593565b815190936001600160801b039160209161230891841690612105565b920151169061212e565b81811061232e57035b95815260186020522054612665565b9091565b50508061231b565b50509192505080918190565b51908115158203611e9d57565b60018060a01b03600f54169060409081519263d6d7d52560e01b84528284602092836004830152600060105461238481611f89565b908160248601526001908582821691826000146125235750506001146124df575b5050600083809203925af180156124d4576000948591612499575b5092841561243b57831561240157505081601155817f9f9192b5edb17356c524e08d9e025c8e2f6307e6ea52fb7968faa3081f51c3c8600080a25b42601355565b60649250519062461bcd60e51b8252600482015260146024820152734d61726b65743a20696e76616c6964207261746560601b6044820152fd5b9091925061244e60135460125490612169565b421161245f575050601154906123fb565b60649250519062461bcd60e51b82526004820152601460248201527313585c9ad95d0e881c985d19481d1bdbc81bdb1960621b6044820152fd5b9490508385813d83116124cd575b6124b1818361203e565b810103126102ed5750806124c485612342565b940151386123c0565b503d6124a7565b83513d6000823e3d90fd5b915060106000528560002091866000935b838510612508575050505082016044016000836123a5565b80548c8601604401528a97508b9650930192879082016124f0565b8195506000949193506044925060ff191682840152151560051b82010192506123a5565b1561254e57565b60405162461bcd60e51b815260206004820152601e60248201527f4d61726b65743a2065786368616e676552617465206e6f742076616c696400006044820152606490fd5b61259e821515612547565b60018060a01b036020816009541691600c5490600094168452601882526064604085205491604051948593849263442c159960e01b8452600484015260248301528660448301525afa918215612659578092612621575b50509061261961261061261e93620186a06022540490612105565b601e5490612105565b61212e565b90565b9091506020823d8211612651575b8161263c6020938361203e565b810103126102ed5750516126196126106125f5565b3d915061262f565b604051903d90823e3d90fd5b612670821515612547565b602060018060a01b0360095416916064600c54604051948593849263442c159960e01b845260048401526024830152600060448301525afa908115612710576000916126dd575b50906126196126c99260225490612105565b620186a06126d9601e5483612105565b0491565b906020823d8211612708575b816126f66020938361203e565b810103126102ed5750516126196126b7565b3d91506126e9565b6040513d6000823e3d90fd5b6001600160a01b0316600081815260186020526040812054909261273f91612665565b91835260176020526040832054801561284857811561284857818110612848578281101561283e57601454612788918391610b04916121b5906001600160801b03831690612105565b90620186a0928383029280840485149015171561282a576127ad92916121d29161215c565b91601b5491601c54936127c08585612176565b80820291848212600160ff1b82141661282a57818305149015171561281657058184820194851291129080158216911516176128025750808212612294575090565b634e487b7160e01b81526011600452602490fd5b634e487b7160e01b83526011600452602483fd5b634e487b7160e01b85526011600452602485fd5b50505050601b5490565b50505090565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316148061294f575b156128a9577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f000000000000000000000000000000000000000000000000000000000000000082527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a0815260c081018181106001600160401b03821117611fd65760405251902090565b507f00000000000000000000000000000000000000000000000000000000000000004614612880565b1561297f57565b60405162461bcd60e51b815260206004820152601660248201527545524332303a2062616c616e636520746f6f206c6f7760501b6044820152606490fd5b156129c457565b60405162461bcd60e51b815260206004820152601660248201527545524332303a206e6f207a65726f206164647265737360501b6044820152606490fd5b51906001600160a01b0382168203611e9d57565b519060ff82168203611e9d57565b6005811015611f735780612a355750565b60018103612a7d5760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b6044820152606490fd5b60028103612aca5760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606490fd5b600314612ad357565b60405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608490fd5b9291906fa2a8918ca85bafe22016d0b997e4df60600160ff1b038311612b9c5791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa15612b8f5781516001600160a01b03811615612b89579190565b50600190565b50604051903d90823e3d90fd5b50505050600090600390565b60001981146121185760010190565b7fe50de2333c10a9502fcb1d8ae13a51bbf423153dfc63c2b8997665b32154afc360018060a01b038092169160009083825260036020526040822094169384825260205284604082205580a4565b909160207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259160018060a01b03809416938460005260028352604060002095169485600052825280604060002055604051908152a3565b15612c6357565b60405162461bcd60e51b815260206004820152600e60248201526d13585c9ad95d0e881c185d5cd95960921b6044820152606490fd5b15612ca057565b606460405162461bcd60e51b815260206004820152602060248201527f4d61726b65743a2063616e6e6f742065786563757465206f6e20697473656c666044820152fd5b15612ceb57565b60405162461bcd60e51b815260206004820152602160248201527f42696742616e673a20616c6c6f77616e63655368617265206e6f742076616c696044820152601960fa1b6064820152608490fd5b919290600090602a5485106131ad5784156131a557620186a09460209086612d63835483612105565b0496612dad612d9c612d786011549a85612169565b600d546001600160a01b039b919060ff90612d94908e166131f1565b16918b6133b1565b612da7811515612ce4565b88613434565b612db8835483612105565b049287811680865260248452604094858720612dd5828254612169565b9055612ddf61328e565b98612dea8286612169565b88878951612df781611fec565b82815201528a516001600160801b039b8c9182166131395781612e22849e8f955b168284511661378f565b168152612e37828a830194168385511661378f565b8281169093525160809290921b6001600160801b0319169116908117601455601654801591821561312e575b5050156130ea57907f3a5151e57d3bc9798e7853034ac52293d1a0e12a2b44725e75b03b21f86477a6878c8795941692838b52601789528c612ea9838d20918254612169565b905581519081528c89820152a487600d5416803b15611ce45784516340c10f1960e01b8152306004820152602481018490529086908290604490829084905af180156130e0576130cd575b5087600d541690600e54918960095416865163095ea7b360e01b91828252600482015288602482015286816044818c875af180156130c3579287928a88938f96613080575b506009548b51928352959095166001600160a01b0316600482015260248101929092529092839190829081604481015b03925af1801561307657908694939291613036575b50612fa99450868a6009541692855196879586948593634d4d7cbd60e11b8552309060048601613948565b03925af190811561302a57839161300b575b509394600a5416803b156105bc57908280926004835180958193632ebe913360e21b83525af19081156130025750612ff1575050565b612ffb8291611fc3565b6102ed5750565b513d84823e3d90fd5b6130229150823d8411610900576108f0818361203e565b905038612fbb565b505051903d90823e3d90fd5b80929450859193953d831161306f575b613050818361203e565b81010312611ce45791612fa993916130688694612342565b5038612f7e565b503d613046565b86513d89823e3d90fd5b9350509290935081813d83116130bc575b61309b818361203e565b81010312610e3357612f699287928a8e6130b58a95612342565b5095612f39565b503d613091565b88513d8b823e3d90fd5b6130d990959195611fc3565b9338612ef4565b85513d88823e3d90fd5b865162461bcd60e51b815260048101879052601b60248201527f42696742616e673a20626f72726f7720636170207265616368656400000000006044820152606490fd5b111590503880612e63565b9091808983018481511661314d9083612105565b8585511661315a9161212e565b9e8f8186511661316991612105565b9151166131759161212e565b10613189575b9082612e22818f9594612e18565b919b908c612e2261319a8294612ba8565b9e505050909161317b565b509250829150565b606460405162461bcd60e51b815260206004820152602060248201527f42696742616e673a20626f72726f7720616d6f756e7420746f6f20736d616c6c6044820152fd5b60405163313ce56760e01b60208201908152600482529061321181611fec565b5160009283928392916001600160a01b03165afa903d15613286573d916132378361205f565b92613245604051948561203e565b83523d82602085013e5b8061327b575b15613274576020828051810103126102ed5750602061261e9101612a16565b5050601290565b506020825114613255565b60609161324f565b6040519061329b82611fec565b6014546001600160801b038116835260801c6020830152565b919060018060a01b038060009416845260206017815260408520549081156133a75760188152604086205480156133a057816132ee61328e565b9460095416916064600c54604051948593849263442c159960e01b8452600484015260248301528b60448301525afa96871561265957809761336a575b505061230861334a612610613365969798620186a06022540490612105565b9561336060018060801b03948587511690612105565b612105565b111590565b9096508187813d8311613399575b613382818361203e565b810103126102ed575094519461230861334a61332b565b503d613378565b5050505050565b5060019450505050565b61221d906133d18561261e96956133cb6121d29685612593565b906133f1565b6001600160a01b0390911660009081526018602052604090205490612105565b918215801561342c575b6122a057600181018091116121185761341a9261220e6126199261214e565b6005810180911161211857600a900490565b5081156133fb565b6001600160a01b0316338103613448575050565b60008181526020906003825260409182822033835281528483832054106134b1578382526003815282822033835281528282205460010161348a575050505050565b6134a59382526003815282822090338352522091825461215c565b905538808080806133a0565b60649083519062461bcd60e51b82526004820152601460248201527313585c9ad95d0e881b9bdd08185c1c1c9bdd995960621b6044820152fd5b6001600160801b03918216908216039190821161211857565b9190916000602060405161351781611fec565b82815201526020810180516001600160801b0390811661355b5761355481865b81613547818a16828951166134eb565b16865216828451166134eb565b1690529190565b61357561356b8285511687612105565b828451169061212e565b94806135916135878486511689612105565b848751169061212e565b106135a1575b8161355491613537565b94816135af61355492612ba8565b96915050613597565b60ff60265416613729576014546001600160801b031690811561372257600a54604051631848f2bf60e31b8152602093916001600160a01b03919085908290600490829086165afa80156127105785916000916136e9575b50600460405180948193631a674cc560e11b8352165afa938415612710576000946136ba575b50506136529192670de0b6b3a764000092839160295490612105565b0490818110156136b157613669602a54809261215c565b83810290808204851490151715612118576121d261368a926136a59461215c565b6027549261369f60285492613360848761215c565b04612169565b90808211612294575090565b50505060275490565b81813d83116136e2575b6136ce818361203e565b81010312610e3b5751925061365238613636565b503d6136c4565b909181813d831161371b575b6136ff818361203e565b8101031261030f57519082821682036102ed5750849038613610565b503d6136f5565b6028549150565b600a5460405163e6abad4960e01b815290602090829060049082906001600160a01b03165afa90811561271057600091613761575090565b906020823d8211613787575b8161377a6020938361203e565b810103126102ed57505190565b3d915061376d565b6001600160801b03918216908216019190821161211857565b600060206040516137b881611fec565b82815201526001600160401b03906137d78260255460401c164261215c565b91821561382e5761382961336091670de0b6b3a764000061381e6137f961328e565b9660018060801b03958694858a5116906301e133806138166135b8565b041690612105565b04168285511661378f565b168252565b50905061261e61328e565b60405161384581611fec565b6025546001600160401b03908181168352818160401c1661386d60208501918083524261215c565b9283156133a057602094816301e133806138856135b8565b04168152814216835261389661328e565b670de0b6b3a76400006138bb60018060801b0397613360898551168787511690612105565b04956138cc8188168284511661378f565b1680825296015160801b6001600160801b031990811690961760145551915192909416931692831760409190911b67ffffffffffffffff60401b16176025557f7484db546dcd57af0104c73c8a6968dfbaf5767f047cee0dadd0499ad7df81a0600080a3565b9190826040910312611e9d576020825192015190565b9081526001600160a01b0391821660208201529116604082015260608101919091526000608082015260a00190565b6001600160a01b03908116600081815260176020526040812054919390928282146139fa579060ff6139af6139b893600d54166131f1565b169283916133f1565b80156139f35782916121d261221d6139de93876040975260246020528686205490612105565b92815260246020522054808211612294575090565b5050905090565b50505060409150602460205220549056feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220a6c77e599a1a04824c091fb5b5bda9789f78dc50fb6d34e330614a84504ce54464736f6c63430008120033", - "deployedBytecode": "0x60806040908082526004918236101561001757600080fd5b60009260e08435811c938462a02a2014611e405750836302ce728f14611e17578363078dfbe714611d12578363095ea7b314611ce85783630996efb7146118685783630c4e84f01461175157836318160ddd146117365783631c9e379b146116fe5783631da8bf10146116445783631fb8f81a1461162557836323b872dd1461149d578363331960ff1461147e57836334ce998a1461145557836334d441d0146114365783633644e5151461141957836337b6b7b9146113fa57836338d52e0f146113d15783633ba0b9a9146113b25783633f741adb1461138957836340626d8b1461136a57836344de240a1461134b578363473e3ce71461132c57836348e4163e146112f45783634e71e0c81461123f5783635224372c14611188578363529898f214611169578363579354621461114a5783636b19ad161461112b5783636c3d8b8f1461110257836370a08231146110ca578363727785471461109257836374645ff314610f815783637dc0d1d014610f585783637ecebe0014610f215783637fa0b84e14610ef05783638285ef4014610ebf57836387b2793714610e875783638c5d0ed314610e685783638da5cb5b14610e3f578363910dd7c814610bc2578363959916dc14610ba457836399a9702814610b7b5783639e15e89f14610b40578363a9059cbb14610a65578363b0e21e8a14610a46578363b27c0e7414610a15578363b7113f19146109f1578363bb4cfe3b146109d2578363bde39c5d146109b3578363c1ad5c8d1461098f578363cd0211eb146105e9578363ce8849ed146105c0578363d505accf146104395750508163d8dfeb4514610410578163dd62ed3e146103c2578163de40657714610399578163e0996cb61461037a578163e30c397814610351578163ea64dd5614610332578163eec0f42e14610313578163f791395d146102f0575063f8ba4cff146102d257600080fd5b346102ed57806003193601126102ed576102ea613839565b80f35b80fd5b90503461030f578160031936011261030f576020906028549051908152f35b5080fd5b90503461030f578160031936011261030f57602090600c549051908152f35b90503461030f578160031936011261030f57602090601f549051908152f35b90503461030f578160031936011261030f5760065490516001600160a01b039091168152602090f35b90503461030f578160031936011261030f57602090601d549051908152f35b90503461030f578160031936011261030f5760095490516001600160a01b039091168152602090f35b90503461030f578060031936011261030f576020916103df611e87565b826103e8611ea2565b6001600160a01b03928316845260028652922091166000908152908352819020549051908152f35b90503461030f578160031936011261030f57600b5490516001600160a01b039091168152602090f35b908491346105bc5761044a36611ed6565b918394989597934211610579579161051c91610524938c8b8b60018060a01b0398898d169a8b93846000528d602052856000209081549161048a83612ba8565b90558c87519560208701977f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e266895260008a890152606088015216608086015260a085015260c08401528183015281526104e281612007565b5190206104ed61284e565b915190602082019261190160f01b8452602283015260428201526042815261051481612023565b519020612b23565b919091612a24565b160361053657506102ea939450612c05565b606490602087519162461bcd60e51b8352820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152fd5b8a5162461bcd60e51b8152602081880152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b8280fd5b84833461030f578160031936011261030f5760085490516001600160a01b039091168152602090f35b5083823461030f57608036600319011261030f57610605611e87565b9161060e611ea2565b93610617611ec7565b50606435600183526020956007875261063660ff868620541615612c5c565b6001600160a01b03918183169161064f30841415612c99565b61065761234f565b5050610661613839565b6106a66106956106788461067361328e565b613504565b90506011549060ff61068d89600d54166131f1565b1691856133b1565b6106a0811515612ce4565b89613434565b8286526017895286862054808311610987575b50811561094c57816106ca91613977565b968188101561091157828652602489528686206106e889825461215c565b90556106f68261067361328e565b9890899060018060801b03815116908c60018060801b031991015160801b161760145584885260178b5288882061072e85825461215c565b90558989888860095416868c600e5461075c8651978896879586946311a5cc7760e31b865230928601613948565b03925af18015610907578c9388938c8e99989794610791946108d9575b5050610785878a61215c565b806108b6575b5061215c565b80610817575b50895193845216917fc8e512d8f188ca059984b5853d2bf653da902696b8512785b182b2c813789a6e9190a4600a541690813b156105bc578351632ebe913360e21b81529183918391829084905af1801561080d576107f9575b505051908152f35b6108038291611fc3565b6102ed57806107f1565b83513d84823e3d90fd5b925092939450600d541690813b156108b2578851632770a7eb60e21b815230888201908152602081019290925291889183919082908490829060400103925af180156108a857918a918a959493610871575b908691610797565b7fc8e512d8f188ca059984b5853d2bf653da902696b8512785b182b2c813789a6e92919861089f8892611fc3565b98919250610869565b88513d89823e3d90fd5b8780fd5b6108d391506108cc620186a091601a5490612105565b048961215c565b8f61078b565b816108f892903d10610900575b6108f0818361203e565b810190613932565b8e9150610779565b503d6108e6565b8a513d8b823e3d90fd5b865162461bcd60e51b81528086018a9052601560248201527442423a2072657061796d656e7420746f6f206c6f7760581b6044820152606490fd5b865162461bcd60e51b81528086018a9052601560248201527453474c3a206e6f7468696e6720746f20726570617960581b6044820152606490fd5b9150896106b9565b84833461030f578160031936011261030f576020906109ac6135b8565b9051908152f35b84833461030f578160031936011261030f576020906029549051908152f35b84833461030f578160031936011261030f57602090601e549051908152f35b84833461030f578160031936011261030f5760209060ff6026541690519015158152f35b8285346102ed57806003193601126102ed57506025548151906001600160401b03908181168352831c166020820152f35b84833461030f578160031936011261030f57602090601a549051908152f35b84833461030f578060031936011261030f57602091610a82611e87565b82602435928315801590610b2e575b610ac1575b50519182526001600160a01b0316903390600080516020613a0c833981519152908590a35160018152f35b3381526001865281812054610ad885821015612978565b6001600160a01b038416908533839003610af5575b505050610a96565b610b0991610b048415156129bd565b61215c565b3383526001885283832055815220610b22838254612169565b90558285808085610aed565b50336001600160a01b03841614610a91565b84833461030f578060031936011261030f57606090610b69610b60611e87565b602435906122a8565b91929081519384526020840152820152f35b84833461030f578060031936011261030f576020906109ac610b9b611e87565b6024359061271c565b84833461030f578160031936011261030f5760209081549051908152f35b92509034610e3b5780600319360112610e3b578135926001600160401b038411610e375736602385011215610e37578383013592610bff8461205f565b94610c0c8451968761203e565b848652866020918288019636602482840101116105bc578060248593018937880101526024359361ffff85168095036108b257610100958688805181010312610e3357610c5890612342565b93610c64828901612a02565b90610c7160608a01612a02565b9860808101519860a082015192610c8a60c08401612a16565b91818401519301519360018060a01b03808097169d169a814211610df057928d8f819897948f948f8f968f918f959a8f8c8195610d669f9c61051c9f50600014610dc9577f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e2669a5b825289522093845494610d0386612ba8565b905580519788019889528701528d6060870152608086015260a085015260c0840152818301528152610d3481612007565b519020610d3f61284e565b908951908b82019261190160f01b8452602283015260428201526042815261051481612023565b1603610d8857505050600014610d7f576102ea92612c05565b6102ea92612bb7565b5162461bcd60e51b815291820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e61747572650000604482015260649150fd5b7f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d69a610cf1565b875162461bcd60e51b8152808b018a9052601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b8880fd5b8480fd5b8380fd5b84833461030f578160031936011261030f5760055490516001600160a01b039091168152602090f35b84833461030f578160031936011261030f57602090601b549051908152f35b84833461030f57602036600319011261030f5760209181906001600160a01b03610eaf611e87565b1681526024845220549051908152f35b8285346102ed57806003193601126102ed575060145481516001600160801b038216815260809190911c6020820152f35b84833461030f578060031936011261030f57602090610f1a610f10611e87565b6024359033612bb7565b5160018152f35b848383346105bc5760203660031901126105bc5760209282916001600160a01b03610f4a611e87565b168252845220549051908152f35b84833461030f578160031936011261030f57600f5490516001600160a01b039091168152602090f35b84833461030f578160031936011261030f5780516010548184610fa383611f89565b8083526001938085169081156110715750600114611014575b50610fcc9250949294038461203e565b815192839160208084528251928382860152825b848110610ffe57505050828201840152601f01601f19168101030190f35b8181018301518882018801528795508201610fe0565b601087527f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae67293602092508791905b818310611059575050610fcc935082010186610fbc565b85548784018501529485019486945091830191611042565b9050610fcc94506020925060ff191682840152151560051b82010186610fbc565b848383346105bc5760203660031901126105bc57359160098310156102ed575060ff6110bf602093611f5a565b541690519015158152f35b84833461030f57602036600319011261030f5760209181906001600160a01b036110f2611e87565b1681526001845220549051908152f35b84833461030f578160031936011261030f57600a5490516001600160a01b039091168152602090f35b84833461030f578160031936011261030f576020906027549051908152f35b84833461030f578160031936011261030f57602090601c549051908152f35b84833461030f578160031936011261030f576020906021549051908152f35b848383346105bc576111f6906111ea60ff84956111bd6111a736611f25565b9491989093808052600760205220541615612c5c565b6111d26001600160a01b038216301415612c99565b6111da61234f565b50506111e4613839565b85612d3a565b929093601154906132b4565b15611208575082519182526020820152f35b606490602085519162461bcd60e51b8352820152601160248201527013585c9ad95d0e881a5b9cdbdb1d995b9d607a1b6044820152fd5b509150346105bc57826003193601126105bc576006546001600160a01b039290918383169190338390036112b1575050806005549384167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08680a36001600160a01b0319928316176005551660065580f35b906020606492519162461bcd60e51b8352820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b84833461030f57602036600319011261030f5760209181906001600160a01b0361131c611e87565b1681526017845220549051908152f35b84833461030f578160031936011261030f576020906015549051908152f35b84833461030f578160031936011261030f57602090600e549051908152f35b84833461030f578160031936011261030f576020906016549051908152f35b509083346102ed5760603660031901126102ed57506109ac60209260443590602435903561218f565b84833461030f578160031936011261030f576020906011549051908152f35b84833461030f578160031936011261030f57600d5490516001600160a01b039091168152602090f35b84833461030f578160031936011261030f576020906012549051908152f35b84833461030f578160031936011261030f576020906109ac61284e565b84833461030f578160031936011261030f576020906019549051908152f35b84833461030f578160031936011261030f5760145490516001600160801b039091168152602090f35b84833461030f578160031936011261030f576020906013549051908152f35b509083346102ed576114ae36611f25565b9192826114e8575b508351918252602094506001600160a01b03908116921690600080516020613a0c833981519152908590a35160018152f35b6001600160a01b03848116808352600160209081528784205491989290919061151387831015612978565b851692838a03611527575b505050506114b6565b898552600283528885203386528352888520549060018201611591575b5050928260209960018a946115708a8e99610b04600080516020613a0c8339815191529c9a15156129bd565b9285525283832055815220611586858254612169565b90559187808061151e565b8782106115e757509260209960018a946115708a8e99966115c282600080516020613a0c8339815191529d9b61215c565b86895260028552898920338a5285528989205596995050509450509981949650611544565b895162461bcd60e51b8152908101849052601860248201527745524332303a20616c6c6f77616e636520746f6f206c6f7760401b6044820152606490fd5b84833461030f578160031936011261030f57602090602a549051908152f35b908491346105bc5761165536611ed6565b939794969092804211610579579386936116ec938c8c8961051c968e9a8e60018060a01b03809c169c8d948587526020528c8787209283549361169785612ba8565b905588519660208801987f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d68a528a890152606088015216608086015260a085015260c08401528183015281526104e281612007565b160361053657506102ea939450612bb7565b84833461030f57602036600319011261030f5760209181906001600160a01b03611726611e87565b1681526018845220549051908152f35b84833461030f578160031936011261030f5751908152602090f35b848383346105bc57816003193601126105bc578035906009821015610e3b57611778611eb8565b6008549093906001600160a01b0316330361182e5760ff61179884611f5a565b541615159315159384146117f6575050808260ff6117b86117e694611f5a565b54161515827feeec81de25875ce1725479bb76f720a8defdb43dea041919ae37bb4aae9847c08780a4611f5a565b9060ff8019835416911617905580f35b906020606492519162461bcd60e51b835282015260126024820152714d61726b65743a2073616d6520737461746560701b6044820152fd5b906020606492519162461bcd60e51b8352820152601460248201527313585c9ad95d0e881d5b985d5d1a1bdc9a5e995960621b6044820152fd5b848383346105bc576101803660031901126105bc5760246001600160a01b03813581811690819003611ce457604435916001600160401b03908184116108b257366023850112156108b257838601359182116108b257368583860101116108b25760643591818316809303610e33576118e68260055416331461207a565b863594620186a0946118fa868811156120c5565b602096808c7fc353b09af857951dccce61b43a5854fc45beceed36c50e5d4cc2e71858a8e0df8a549180a3875580611ca6575b508682611b6b575b50505081611b2b575b505060843580611b16575b5060a43580611b01575b5060c43580611aed575b5060e43580611acc575b506101043580611aab575b506101243580611a7a575b50610144359081611a0c575b5050610164359384611999578580f35b601e5485106119b25750505050601f5581808080808580f35b5162461bcd60e51b8152928301526032908201527f4d61726b65743a206c69717569646174696f6e436f6c6c61746572616c697a616044820152711d1a5bdb94985d19481d1bdbc81cdb585b1b60721b6064820152608490fd5b611a18908211156120c5565b601f548111611a2b57601e558580611989565b5090602591608494519362461bcd60e51b85528401528201527f4d61726b65743a20636f6c6c61746572616c697a6174696f6e5261746520746f6044820152646f2062696760d81b6064820152fd5b806016547fae6e0ab3b95f0a53ff9660a390ccedcbbf1f2355dce974a9841af106fddcfaba8980a36016558661197d565b611ab68282106120c5565b611ac3601b5482116120c5565b601c5586611972565b611ad78282106120c5565b611ae4601c5482106120c5565b601b5586611967565b611af88282106120c5565b601d558661195d565b611b0d828211156120c5565b601a5586611953565b611b22828211156120c5565b60195586611949565b816008549182167f5a62d22209e370e38eea92cfddcd228e656e6ec139243392a760a7769f5877fd8a80a36001600160a01b03191617600855868061193e565b8291611b78601054611f89565b601f8111611c55575b508b90601f8411600114611be6578c93611bd9575b5050508160011b916000199060031b1c1916176010555b7fa6f004921c944d4b8bf6e38462b00f36a58d62495d56b51f571ab78f732c98158880a1888086611935565b0101359050868b80611b96565b60108d52888d20601f198516955092509089908d5b8a878210611c3a5750508460019610611c1e575b50505050811b01601055611bad565b60001960f88660031b161c19920101351690558a808881611c0f565b8483019093013585556001909401938b929182019101611bfb565b9150915060108b52868b20601f840160051c8101888510611c9f575b91849391601f8b94920160051c01905b818110611c8e5750611b81565b8d81558594508a9350600101611c81565b5080611c71565b600f80546001600160a01b0319169190911790557f0b2d6eb667d0522c3eb86e4288afecae6c11591ffd1345d4d12407e0598bca9b8a80a18a61192d565b8580fd5b84833461030f578060031936011261030f57602090610f1a611d08611e87565b6024359033612c05565b509150346105bc5760603660031901126105bc57611d2e611e87565b91611d37611eb8565b91611d40611ec7565b9260018060a01b03948591611d5a8360055416331461207a565b15611dfe571692831590811591611df6575b5015611dbb575050806005549283167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08580a36001600160a01b03199182161760055560068054909116905580f35b906020606492519162461bcd60e51b835282015260156024820152744f776e61626c653a207a65726f206164647265737360581b6044820152fd5b905038611d6c565b93505050501660018060a01b0319600654161760065580f35b8285346102ed57806003193601126102ed5750611e3261234f565b825191151582526020820152f35b93505050346105bc57806003193601126105bc57602092611e5f611e87565b611e67611ea2565b6001600160a01b0391821683526003865283832091168252845220548152f35b600435906001600160a01b0382168203611e9d57565b600080fd5b602435906001600160a01b0382168203611e9d57565b602435908115158203611e9d57565b604435908115158203611e9d57565b60e0906003190112611e9d576001600160a01b03906004358281168103611e9d57916024359081168103611e9d5790604435906064359060843560ff81168103611e9d579060a4359060c43590565b6060906003190112611e9d576001600160a01b03906004358281168103611e9d57916024359081168103611e9d579060443590565b6009811015611f73576000526007602052604060002090565b634e487b7160e01b600052602160045260246000fd5b90600182811c92168015611fb9575b6020831014611fa357565b634e487b7160e01b600052602260045260246000fd5b91607f1691611f98565b6001600160401b038111611fd657604052565b634e487b7160e01b600052604160045260246000fd5b604081019081106001600160401b03821117611fd657604052565b61010081019081106001600160401b03821117611fd657604052565b608081019081106001600160401b03821117611fd657604052565b90601f801991011681019081106001600160401b03821117611fd657604052565b6001600160401b038111611fd657601f01601f191660200190565b1561208157565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b156120cc57565b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881b9bdd081d985b1a59607a1b6044820152606490fd5b8181029291811591840414171561211857565b634e487b7160e01b600052601160045260246000fd5b8115612138570490565b634e487b7160e01b600052601260045260246000fd5b604d811161211857600a0a90565b9190820391821161211857565b9190820180921161211857565b8181039291600013801582851316918412161761211857565b6014549192916121d8916121c9916121bf916121b5906001600160801b03831690612105565b9060801c9061212e565b93601f5490612105565b6121d28361214e565b9061212e565b8083106122a0576121ec612228918461215c565b9161222361221d612214601e5461220e6122058661214e565b60215490612169565b90612105565b6121d28461214e565b9161214e565b612176565b6509184e72a0009081810291818305149015171561211857670de0b6b3a76400009182810292818405149015171561211857801561213857600160ff1b91808314600019831416612118570590600082121561229957811461211857600003905b808211612294575090565b905090565b5090612289565b505050600090565b6001600160a01b038116600081815260176020526040812054919493929091908115612336579160409161231285946122ec61232a976122e66137a8565b92612593565b815190936001600160801b039160209161230891841690612105565b920151169061212e565b81811061232e57035b95815260186020522054612665565b9091565b50508061231b565b50509192505080918190565b51908115158203611e9d57565b60018060a01b03600f54169060409081519263d6d7d52560e01b84528284602092836004830152600060105461238481611f89565b908160248601526001908582821691826000146125235750506001146124df575b5050600083809203925af180156124d4576000948591612499575b5092841561243b57831561240157505081601155817f9f9192b5edb17356c524e08d9e025c8e2f6307e6ea52fb7968faa3081f51c3c8600080a25b42601355565b60649250519062461bcd60e51b8252600482015260146024820152734d61726b65743a20696e76616c6964207261746560601b6044820152fd5b9091925061244e60135460125490612169565b421161245f575050601154906123fb565b60649250519062461bcd60e51b82526004820152601460248201527313585c9ad95d0e881c985d19481d1bdbc81bdb1960621b6044820152fd5b9490508385813d83116124cd575b6124b1818361203e565b810103126102ed5750806124c485612342565b940151386123c0565b503d6124a7565b83513d6000823e3d90fd5b915060106000528560002091866000935b838510612508575050505082016044016000836123a5565b80548c8601604401528a97508b9650930192879082016124f0565b8195506000949193506044925060ff191682840152151560051b82010192506123a5565b1561254e57565b60405162461bcd60e51b815260206004820152601e60248201527f4d61726b65743a2065786368616e676552617465206e6f742076616c696400006044820152606490fd5b61259e821515612547565b60018060a01b036020816009541691600c5490600094168452601882526064604085205491604051948593849263442c159960e01b8452600484015260248301528660448301525afa918215612659578092612621575b50509061261961261061261e93620186a06022540490612105565b601e5490612105565b61212e565b90565b9091506020823d8211612651575b8161263c6020938361203e565b810103126102ed5750516126196126106125f5565b3d915061262f565b604051903d90823e3d90fd5b612670821515612547565b602060018060a01b0360095416916064600c54604051948593849263442c159960e01b845260048401526024830152600060448301525afa908115612710576000916126dd575b50906126196126c99260225490612105565b620186a06126d9601e5483612105565b0491565b906020823d8211612708575b816126f66020938361203e565b810103126102ed5750516126196126b7565b3d91506126e9565b6040513d6000823e3d90fd5b6001600160a01b0316600081815260186020526040812054909261273f91612665565b91835260176020526040832054801561284857811561284857818110612848578281101561283e57601454612788918391610b04916121b5906001600160801b03831690612105565b90620186a0928383029280840485149015171561282a576127ad92916121d29161215c565b91601b5491601c54936127c08585612176565b80820291848212600160ff1b82141661282a57818305149015171561281657058184820194851291129080158216911516176128025750808212612294575090565b634e487b7160e01b81526011600452602490fd5b634e487b7160e01b83526011600452602483fd5b634e487b7160e01b85526011600452602485fd5b50505050601b5490565b50505090565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316148061294f575b156128a9577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f000000000000000000000000000000000000000000000000000000000000000082527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a0815260c081018181106001600160401b03821117611fd65760405251902090565b507f00000000000000000000000000000000000000000000000000000000000000004614612880565b1561297f57565b60405162461bcd60e51b815260206004820152601660248201527545524332303a2062616c616e636520746f6f206c6f7760501b6044820152606490fd5b156129c457565b60405162461bcd60e51b815260206004820152601660248201527545524332303a206e6f207a65726f206164647265737360501b6044820152606490fd5b51906001600160a01b0382168203611e9d57565b519060ff82168203611e9d57565b6005811015611f735780612a355750565b60018103612a7d5760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b6044820152606490fd5b60028103612aca5760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606490fd5b600314612ad357565b60405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608490fd5b9291906fa2a8918ca85bafe22016d0b997e4df60600160ff1b038311612b9c5791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa15612b8f5781516001600160a01b03811615612b89579190565b50600190565b50604051903d90823e3d90fd5b50505050600090600390565b60001981146121185760010190565b7fe50de2333c10a9502fcb1d8ae13a51bbf423153dfc63c2b8997665b32154afc360018060a01b038092169160009083825260036020526040822094169384825260205284604082205580a4565b909160207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259160018060a01b03809416938460005260028352604060002095169485600052825280604060002055604051908152a3565b15612c6357565b60405162461bcd60e51b815260206004820152600e60248201526d13585c9ad95d0e881c185d5cd95960921b6044820152606490fd5b15612ca057565b606460405162461bcd60e51b815260206004820152602060248201527f4d61726b65743a2063616e6e6f742065786563757465206f6e20697473656c666044820152fd5b15612ceb57565b60405162461bcd60e51b815260206004820152602160248201527f42696742616e673a20616c6c6f77616e63655368617265206e6f742076616c696044820152601960fa1b6064820152608490fd5b919290600090602a5485106131ad5784156131a557620186a09460209086612d63835483612105565b0496612dad612d9c612d786011549a85612169565b600d546001600160a01b039b919060ff90612d94908e166131f1565b16918b6133b1565b612da7811515612ce4565b88613434565b612db8835483612105565b049287811680865260248452604094858720612dd5828254612169565b9055612ddf61328e565b98612dea8286612169565b88878951612df781611fec565b82815201528a516001600160801b039b8c9182166131395781612e22849e8f955b168284511661378f565b168152612e37828a830194168385511661378f565b8281169093525160809290921b6001600160801b0319169116908117601455601654801591821561312e575b5050156130ea57907f3a5151e57d3bc9798e7853034ac52293d1a0e12a2b44725e75b03b21f86477a6878c8795941692838b52601789528c612ea9838d20918254612169565b905581519081528c89820152a487600d5416803b15611ce45784516340c10f1960e01b8152306004820152602481018490529086908290604490829084905af180156130e0576130cd575b5087600d541690600e54918960095416865163095ea7b360e01b91828252600482015288602482015286816044818c875af180156130c3579287928a88938f96613080575b506009548b51928352959095166001600160a01b0316600482015260248101929092529092839190829081604481015b03925af1801561307657908694939291613036575b50612fa99450868a6009541692855196879586948593634d4d7cbd60e11b8552309060048601613948565b03925af190811561302a57839161300b575b509394600a5416803b156105bc57908280926004835180958193632ebe913360e21b83525af19081156130025750612ff1575050565b612ffb8291611fc3565b6102ed5750565b513d84823e3d90fd5b6130229150823d8411610900576108f0818361203e565b905038612fbb565b505051903d90823e3d90fd5b80929450859193953d831161306f575b613050818361203e565b81010312611ce45791612fa993916130688694612342565b5038612f7e565b503d613046565b86513d89823e3d90fd5b9350509290935081813d83116130bc575b61309b818361203e565b81010312610e3357612f699287928a8e6130b58a95612342565b5095612f39565b503d613091565b88513d8b823e3d90fd5b6130d990959195611fc3565b9338612ef4565b85513d88823e3d90fd5b865162461bcd60e51b815260048101879052601b60248201527f42696742616e673a20626f72726f7720636170207265616368656400000000006044820152606490fd5b111590503880612e63565b9091808983018481511661314d9083612105565b8585511661315a9161212e565b9e8f8186511661316991612105565b9151166131759161212e565b10613189575b9082612e22818f9594612e18565b919b908c612e2261319a8294612ba8565b9e505050909161317b565b509250829150565b606460405162461bcd60e51b815260206004820152602060248201527f42696742616e673a20626f72726f7720616d6f756e7420746f6f20736d616c6c6044820152fd5b60405163313ce56760e01b60208201908152600482529061321181611fec565b5160009283928392916001600160a01b03165afa903d15613286573d916132378361205f565b92613245604051948561203e565b83523d82602085013e5b8061327b575b15613274576020828051810103126102ed5750602061261e9101612a16565b5050601290565b506020825114613255565b60609161324f565b6040519061329b82611fec565b6014546001600160801b038116835260801c6020830152565b919060018060a01b038060009416845260206017815260408520549081156133a75760188152604086205480156133a057816132ee61328e565b9460095416916064600c54604051948593849263442c159960e01b8452600484015260248301528b60448301525afa96871561265957809761336a575b505061230861334a612610613365969798620186a06022540490612105565b9561336060018060801b03948587511690612105565b612105565b111590565b9096508187813d8311613399575b613382818361203e565b810103126102ed575094519461230861334a61332b565b503d613378565b5050505050565b5060019450505050565b61221d906133d18561261e96956133cb6121d29685612593565b906133f1565b6001600160a01b0390911660009081526018602052604090205490612105565b918215801561342c575b6122a057600181018091116121185761341a9261220e6126199261214e565b6005810180911161211857600a900490565b5081156133fb565b6001600160a01b0316338103613448575050565b60008181526020906003825260409182822033835281528483832054106134b1578382526003815282822033835281528282205460010161348a575050505050565b6134a59382526003815282822090338352522091825461215c565b905538808080806133a0565b60649083519062461bcd60e51b82526004820152601460248201527313585c9ad95d0e881b9bdd08185c1c1c9bdd995960621b6044820152fd5b6001600160801b03918216908216039190821161211857565b9190916000602060405161351781611fec565b82815201526020810180516001600160801b0390811661355b5761355481865b81613547818a16828951166134eb565b16865216828451166134eb565b1690529190565b61357561356b8285511687612105565b828451169061212e565b94806135916135878486511689612105565b848751169061212e565b106135a1575b8161355491613537565b94816135af61355492612ba8565b96915050613597565b60ff60265416613729576014546001600160801b031690811561372257600a54604051631848f2bf60e31b8152602093916001600160a01b03919085908290600490829086165afa80156127105785916000916136e9575b50600460405180948193631a674cc560e11b8352165afa938415612710576000946136ba575b50506136529192670de0b6b3a764000092839160295490612105565b0490818110156136b157613669602a54809261215c565b83810290808204851490151715612118576121d261368a926136a59461215c565b6027549261369f60285492613360848761215c565b04612169565b90808211612294575090565b50505060275490565b81813d83116136e2575b6136ce818361203e565b81010312610e3b5751925061365238613636565b503d6136c4565b909181813d831161371b575b6136ff818361203e565b8101031261030f57519082821682036102ed5750849038613610565b503d6136f5565b6028549150565b600a5460405163e6abad4960e01b815290602090829060049082906001600160a01b03165afa90811561271057600091613761575090565b906020823d8211613787575b8161377a6020938361203e565b810103126102ed57505190565b3d915061376d565b6001600160801b03918216908216019190821161211857565b600060206040516137b881611fec565b82815201526001600160401b03906137d78260255460401c164261215c565b91821561382e5761382961336091670de0b6b3a764000061381e6137f961328e565b9660018060801b03958694858a5116906301e133806138166135b8565b041690612105565b04168285511661378f565b168252565b50905061261e61328e565b60405161384581611fec565b6025546001600160401b03908181168352818160401c1661386d60208501918083524261215c565b9283156133a057602094816301e133806138856135b8565b04168152814216835261389661328e565b670de0b6b3a76400006138bb60018060801b0397613360898551168787511690612105565b04956138cc8188168284511661378f565b1680825296015160801b6001600160801b031990811690961760145551915192909416931692831760409190911b67ffffffffffffffff60401b16176025557f7484db546dcd57af0104c73c8a6968dfbaf5767f047cee0dadd0499ad7df81a0600080a3565b9190826040910312611e9d576020825192015190565b9081526001600160a01b0391821660208201529116604082015260608101919091526000608082015260a00190565b6001600160a01b03908116600081815260176020526040812054919390928282146139fa579060ff6139af6139b893600d54166131f1565b169283916133f1565b80156139f35782916121d261221d6139de93876040975260246020528686205490612105565b92815260246020522054808211612294575090565b5050905090565b50505060409150602460205220549056feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220a6c77e599a1a04824c091fb5b5bda9789f78dc50fb6d34e330614a84504ce54464736f6c63430008120033", + "bytecode": "0x61014080604052346200018a5762000017816200018f565b600f81526001602082016e546170696f63612042696742616e6760881b8152602060405162000046816200018f565b8381520192603160f81b845251902091208160e052610100918183524660a0526040519160208301907f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f92838352604085015260608401524660808401523060a084015260a0835260c083019280841060018060401b03851117620001745760408490525190206080523060c052610120908152600580546001600160a01b0319163390811790915560007f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a362013880601b5562015f90601c55612710601d55612ee06020556103e8602d55613cf69283620001ac843960805183612999015260a05183612a64015260c05183612963015260e051836129e801525182612a0e015251816129c50152f35b634e487b7160e01b600052604160045260246000fd5b600080fd5b604081019081106001600160401b03821117620001745760405256fe60806040908082526004918236101561001757600080fd5b60009260e08435811c938462a02a2014611ef65750836302ce728f14611ecd578363078dfbe714611dc8578363095ea7b314611d9e5783630c4e84f014611c8757836318160ddd14611c6c5783631c9e379b14611c345783631d4d3a5d14611c0b5783631da8bf1014611b515783631fb8f81a14611b3257836323b872dd146119aa578363331960ff1461198b57836334ce998a1461196257836334d441d0146119435783633644e5151461192657836337b6b7b91461190757836338d52e0f146118de5783633ba0b9a9146118bf5783633f741adb1461189657836340626d8b1461187757836344de240a14611858578363473e3ce71461183957836348e4163e146118015783634e71e0c81461174c5783635224372c14611695578363529898f214611677578363542afda31461165857836357935462146116395783636b19ad161461161a5783636c3d8b8f146115f157836370a08231146115b9578363727785471461158157836374645ff3146114ed57836374c9e481146114ce5783637dc0d1d0146114a55783637ecebe001461146e5783637fa0b84e1461143d5783638285ef401461140c57836387b27937146113d45783638c5d0ed3146113b55783638da5cb5b1461138c578363910dd7c814611113578363932bc4f81461103657836399a970281461100d5783639e15e89f14610fd2578363a9059cbb14610ef7578363b0e21e8a14610ed8578363b27c0e7414610ea7578363b7113f1914610e83578363bb4cfe3b14610e64578363bde39c5d14610e45578363c1ad5c8d14610e21578363cd0211eb14610a7f578363ce8849ed14610a56578363d3fb2a38146105e1578363d505accf1461045a5750508163d8dfeb4514610431578163dd62ed3e146103e3578163de406577146103ba578163e0996cb61461039b578163e30c397814610372578163ea64dd5614610353578163eec0f42e14610334578163f791395d14610311575063f8ba4cff146102f357600080fd5b3461030e578060031936011261030e5761030b61393b565b80f35b80fd5b9050346103305781600319360112610330576020906027549051908152f35b5080fd5b905034610330578160031936011261033057602090600c549051908152f35b905034610330578160031936011261033057602090601f549051908152f35b90503461033057816003193601126103305760065490516001600160a01b039091168152602090f35b905034610330578160031936011261033057602090601d549051908152f35b90503461033057816003193601126103305760095490516001600160a01b039091168152602090f35b905034610330578060031936011261033057602091610400611f3d565b82610409611f53565b6001600160a01b03928316845260028652922091166000908152908352819020549051908152f35b905034610330578160031936011261033057600b5490516001600160a01b039091168152602090f35b908491346105dd5761046b36611f87565b91839498959793421161059a579161053d91610545938c8b8b60018060a01b0398898d169a8b93846000528d60205285600020908154916104ab83612cba565b90558c87519560208701977f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e266895260008a890152606088015216608086015260a085015260c0840152818301528152610503816120b8565b51902061050e612960565b915190602082019261190160f01b84526022830152604282015260428152610535816120d4565b519020612c35565b919091612b36565b1603610557575061030b939450612d17565b606490602087519162461bcd60e51b8352820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152fd5b8a5162461bcd60e51b8152602081880152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b8280fd5b848383346105dd576101603660031901126105dd576001600160a01b03813581811690819003610a52576024916001600160401b038335818111610a4e5736602382011215610a4e5780860135918211610a4e5736858383010111610a4e5760443593838516809503610a495761065d84600554163314612174565b80610a0b575b5084826108b1575b50505081610871575b505060643580610859575b5060843580610841575b5060a4358061082a575b5060c43580610806575b5060e435806107e2575b5061010435806107b1575b506101243580610740575b506101443592836106cc578480f35b601e5484106106e357505050601f55818080808480f35b608492916020603292519362461bcd60e51b85528401528201527f4d61726b65743a206c69717569646174696f6e436f6c6c61746572616c697a616044820152711d1a5bdb94985d19481d1bdbc81cdb585b1b60721b6064820152fd5b61074f620186a08211156121bf565b601f54811161076157601e55846106bd565b506025906020608494519362461bcd60e51b85528401528201527f4d61726b65743a20636f6c6c61746572616c697a6174696f6e5261746520746f6044820152646f2062696760d81b6064820152fd5b806016547fae6e0ab3b95f0a53ff9660a390ccedcbbf1f2355dce974a9841af106fddcfaba8780a3601655846106b2565b6107f0620186a082106121bf565b6107fd601b5482116121bf565b601c55846106a7565b610814620186a082106121bf565b610821601c5482106121bf565b601b558461069d565b610838620186a082106121bf565b601d5584610693565b610850620186a08211156121bf565b601a5584610689565b610868620186a08211156121bf565b6019558461067f565b816008549182167f5a62d22209e370e38eea92cfddcd228e656e6ec139243392a760a7769f5877fd8880a36001600160a01b031916176008558480610674565b82916108be60105461203a565b601f81116109ac575b508990601f841160011461092c578a9361091f575b5050508160011b916000199060031b1c1916176010555b7fa6f004921c944d4b8bf6e38462b00f36a58d62495d56b51f571ab78f732c98158680a186808461066b565b01013590508489806108dc565b60108b52601f1984169450600080516020613ca183398151915292509087908b60205b87821061098d5750508460019610610971575b50505050811b016010556108f3565b60001960f88660031b161c199201013516905588808681610962565b828501909301358555600194909401938992918201919081019061094f565b60108b529092509050600080516020613ca1833981519152601f840160051c810160208510610a04575b91849391601f8994920160051c01905b8181106109f357506108c7565b8b81558594508893506001016109e6565b50806109d6565b600f80546001600160a01b0319169190911790557f0b2d6eb667d0522c3eb86e4288afecae6c11591ffd1345d4d12407e0598bca9b8880a188610663565b600080fd5b8780fd5b8480fd5b84833461033057816003193601126103305760085490516001600160a01b039091168152602090f35b5083823461033057608036600319011261033057610a9b611f3d565b91610aa4611f53565b93610aad611f78565b506064356001835260209560078752610acc60ff868620541615612d6e565b6001600160a01b039181831691610ae530841415612dab565b610aed612501565b5050610af761393b565b610b3c610b2b610b0e84610b09613390565b613606565b90506011549060ff610b2389600d54166132f3565b1691856134b3565b610b36811515612df6565b89613536565b8286526017895286862054808311610e19575b508115610dde5781610b6091613bec565b9681881015610da35782865260238952868620610b7e898254612256565b9055610b8c82610b09613390565b9890899060018060801b03815116908c60018060801b031991015160801b161760145584885260178b52888820610bc4858254612256565b90558989888860095416868c600e54610bf28651978896879586946311a5cc7760e31b865230928601613a4a565b03925af18015610d99578c9388938c8e99989794610c2794610d6b575b5050610c1b878a612256565b80610d48575b50612256565b80610cad575b50895193845216917fc8e512d8f188ca059984b5853d2bf653da902696b8512785b182b2c813789a6e9190a4600a541690813b156105dd578351632ebe913360e21b81529183918391829084905af18015610ca357610c8f575b505051908152f35b610c998291612074565b61030e5780610c87565b83513d84823e3d90fd5b925092939450600d541690813b15610a4e578851632770a7eb60e21b815230888201908152602081019290925291889183919082908490829060400103925af18015610d3e57918a918a959493610d07575b908691610c2d565b7fc8e512d8f188ca059984b5853d2bf653da902696b8512785b182b2c813789a6e929198610d358892612074565b98919250610cff565b88513d89823e3d90fd5b610d659150610d5e620186a091601a54906121ff565b0489612256565b8f610c21565b81610d8a92903d10610d92575b610d8281836120ef565b810190613a34565b8e9150610c0f565b503d610d78565b8a513d8b823e3d90fd5b865162461bcd60e51b81528086018a9052601560248201527442423a2072657061796d656e7420746f6f206c6f7760581b6044820152606490fd5b865162461bcd60e51b81528086018a9052601560248201527453474c3a206e6f7468696e6720746f20726570617960581b6044820152606490fd5b915089610b4f565b848334610330578160031936011261033057602090610e3e6136ba565b9051908152f35b8483346103305781600319360112610330576020906028549051908152f35b848334610330578160031936011261033057602090601e549051908152f35b84833461033057816003193601126103305760209060ff6025541690519015158152f35b82853461030e578060031936011261030e57506024548151906001600160401b03908181168352831c166020820152f35b848334610330578160031936011261033057602090601a549051908152f35b848334610330578060031936011261033057602091610f14611f3d565b82602435928315801590610fc0575b610f53575b50519182526001600160a01b0316903390600080516020613c81833981519152908590a35160018152f35b3381526001865281812054610f6a85821015612a8a565b6001600160a01b038416908533839003610f87575b505050610f28565b610f9b91610f96841515612acf565b612256565b3383526001885283832055815220610fb4838254612263565b90558285808085610f7f565b50336001600160a01b03841614610f23565b848334610330578060031936011261033057606090610ffb610ff2611f3d565b602435906123a2565b91929081519384526020840152820152f35b848334610330578060031936011261033057602090610e3e61102d611f3d565b6024359061282e565b84833461033057816003193601126103305780519082602b546110588161203a565b808552906001908181169081156110eb5750600114611092575b5050506110848261108e9403836120ef565b5191829182612110565b0390f35b602b8352602095507f11c44e4875b74d31ff9fd779bf2566af7bd15b87fc985d01f5094b89e3669e4f5b8284106110d8575050508261108e946110849282010194611072565b80548685018801529286019281016110bc565b61108e97506110849450602092508693915060ff191682840152151560051b82010194611072565b925090346113885780600319360112611388578135926001600160401b038411610a525736602385011215610a5257838301359261115084612159565b9461115d845196876120ef565b848652866020918288019636602482840101116105dd578060248593018937880101526024359361ffff8516809503610a4e57610100958688805181010312611384576111a99061243c565b936111b5828901612b14565b906111c260608a01612b14565b9860808101519860a0820151926111db60c08401612b28565b91818401519301519360018060a01b03808097169d169a81421161134157928d8f819897948f948f8f968f918f959a8f8c81956112b79f9c61053d9f5060001461131a577f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e2669a5b82528952209384549461125486612cba565b905580519788019889528701528d6060870152608086015260a085015260c0840152818301528152611285816120b8565b519020611290612960565b908951908b82019261190160f01b84526022830152604282015260428152610535816120d4565b16036112d9575050506000146112d05761030b92612d17565b61030b92612cc9565b5162461bcd60e51b815291820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e61747572650000604482015260649150fd5b7f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d69a611242565b875162461bcd60e51b8152808b018a9052601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b8880fd5b8380fd5b84833461033057816003193601126103305760055490516001600160a01b039091168152602090f35b848334610330578160031936011261033057602090601b549051908152f35b8483346103305760203660031901126103305760209181906001600160a01b036113fc611f3d565b1681526023845220549051908152f35b82853461030e578060031936011261030e575060145481516001600160801b038216815260809190911c6020820152f35b84833461033057806003193601126103305760209061146761145d611f3d565b6024359033612cc9565b5160018152f35b848383346105dd5760203660031901126105dd5760209282916001600160a01b03611497611f3d565b168252845220549051908152f35b848334610330578160031936011261033057600f5490516001600160a01b039091168152602090f35b848334610330578160031936011261033057602090602d549051908152f35b8483346103305781600319360112610330578051908260105461150f8161203a565b808552906001908181169081156110eb575060011461153a575050506110848261108e9403836120ef565b6010835260209550600080516020613ca18339815191525b82841061156e575050508261108e946110849282010194611072565b8054868501880152928601928101611552565b848383346105dd5760203660031901126105dd573591600983101561030e575060ff6115ae60209361200b565b541690519015158152f35b8483346103305760203660031901126103305760209181906001600160a01b036115e1611f3d565b1681526001845220549051908152f35b848334610330578160031936011261033057600a5490516001600160a01b039091168152602090f35b8483346103305781600319360112610330576020906026549051908152f35b848334610330578160031936011261033057602090601c549051908152f35b848334610330578160031936011261033057602090602c549051908152f35b84833461033057816003193601126103305760209081549051908152f35b848383346105dd57611703906116f760ff84956116ca6116b436611fd6565b9491989093808052600760205220541615612d6e565b6116df6001600160a01b038216301415612dab565b6116e7612501565b50506116f161393b565b85612e4c565b929093601154906133b6565b15611715575082519182526020820152f35b606490602085519162461bcd60e51b8352820152601160248201527013585c9ad95d0e881a5b9cdbdb1d995b9d607a1b6044820152fd5b509150346105dd57826003193601126105dd576006546001600160a01b039290918383169190338390036117be575050806005549384167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08680a36001600160a01b0319928316176005551660065580f35b906020606492519162461bcd60e51b8352820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b8483346103305760203660031901126103305760209181906001600160a01b03611829611f3d565b1681526017845220549051908152f35b8483346103305781600319360112610330576020906015549051908152f35b848334610330578160031936011261033057602090600e549051908152f35b8483346103305781600319360112610330576020906016549051908152f35b5090833461030e57606036600319011261030e5750610e3e602092604435906024359035612289565b8483346103305781600319360112610330576020906011549051908152f35b848334610330578160031936011261033057600d5490516001600160a01b039091168152602090f35b8483346103305781600319360112610330576020906012549051908152f35b848334610330578160031936011261033057602090610e3e612960565b8483346103305781600319360112610330576020906019549051908152f35b84833461033057816003193601126103305760145490516001600160801b039091168152602090f35b8483346103305781600319360112610330576020906013549051908152f35b5090833461030e576119bb36611fd6565b9192826119f5575b508351918252602094506001600160a01b03908116921690600080516020613c81833981519152908590a35160018152f35b6001600160a01b038481168083526001602090815287842054919892909190611a2087831015612a8a565b851692838a03611a34575b505050506119c3565b898552600283528885203386528352888520549060018201611a9e575b5050928260209960018a94611a7d8a8e99610f96600080516020613c818339815191529c9a1515612acf565b9285525283832055815220611a93858254612263565b905591878080611a2b565b878210611af457509260209960018a94611a7d8a8e9996611acf82600080516020613c818339815191529d9b612256565b86895260028552898920338a5285528989205596995050509450509981949650611a51565b895162461bcd60e51b8152908101849052601860248201527745524332303a20616c6c6f77616e636520746f6f206c6f7760401b6044820152606490fd5b8483346103305781600319360112610330576020906029549051908152f35b908491346105dd57611b6236611f87565b93979496909280421161059a57938693611bf9938c8c8961053d968e9a8e60018060a01b03809c169c8d948587526020528c87872092835493611ba485612cba565b905588519660208801987f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d68a528a890152606088015216608086015260a085015260c0840152818301528152610503816120b8565b1603610557575061030b939450612cc9565b848334610330578160031936011261033057602a5490516001600160a01b039091168152602090f35b8483346103305760203660031901126103305760209181906001600160a01b03611c5c611f3d565b1681526018845220549051908152f35b84833461033057816003193601126103305751908152602090f35b848383346105dd57816003193601126105dd57803590600982101561138857611cae611f69565b6008549093906001600160a01b03163303611d645760ff611cce8461200b565b54161515931515938414611d2c575050808260ff611cee611d1c9461200b565b54161515827feeec81de25875ce1725479bb76f720a8defdb43dea041919ae37bb4aae9847c08780a461200b565b9060ff8019835416911617905580f35b906020606492519162461bcd60e51b835282015260126024820152714d61726b65743a2073616d6520737461746560701b6044820152fd5b906020606492519162461bcd60e51b8352820152601460248201527313585c9ad95d0e881d5b985d5d1a1bdc9a5e995960621b6044820152fd5b848334610330578060031936011261033057602090611467611dbe611f3d565b6024359033612d17565b509150346105dd5760603660031901126105dd57611de4611f3d565b91611ded611f69565b91611df6611f78565b9260018060a01b03948591611e1083600554163314612174565b15611eb4571692831590811591611eac575b5015611e71575050806005549283167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08580a36001600160a01b03199182161760055560068054909116905580f35b906020606492519162461bcd60e51b835282015260156024820152744f776e61626c653a207a65726f206164647265737360581b6044820152fd5b905038611e22565b93505050501660018060a01b0319600654161760065580f35b82853461030e578060031936011261030e5750611ee8612501565b825191151582526020820152f35b93505050346105dd57806003193601126105dd57602092611f15611f3d565b611f1d611f53565b6001600160a01b0391821683526003865283832091168252845220548152f35b600435906001600160a01b0382168203610a4957565b602435906001600160a01b0382168203610a4957565b602435908115158203610a4957565b604435908115158203610a4957565b60e0906003190112610a49576001600160a01b03906004358281168103610a4957916024359081168103610a495790604435906064359060843560ff81168103610a49579060a4359060c43590565b6060906003190112610a49576001600160a01b03906004358281168103610a4957916024359081168103610a49579060443590565b6009811015612024576000526007602052604060002090565b634e487b7160e01b600052602160045260246000fd5b90600182811c9216801561206a575b602083101461205457565b634e487b7160e01b600052602260045260246000fd5b91607f1691612049565b6001600160401b03811161208757604052565b634e487b7160e01b600052604160045260246000fd5b604081019081106001600160401b0382111761208757604052565b61010081019081106001600160401b0382111761208757604052565b608081019081106001600160401b0382111761208757604052565b90601f801991011681019081106001600160401b0382111761208757604052565b6020808252825181830181905290939260005b82811061214557505060409293506000838284010152601f8019910116010190565b818101860151848201604001528501612123565b6001600160401b03811161208757601f01601f191660200190565b1561217b57565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b156121c657565b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881b9bdd081d985b1a59607a1b6044820152606490fd5b8181029291811591840414171561221257565b634e487b7160e01b600052601160045260246000fd5b8115612232570490565b634e487b7160e01b600052601260045260246000fd5b604d811161221257600a0a90565b9190820391821161221257565b9190820180921161221257565b8181039291600013801582851316918412161761221257565b6014549192916122d2916122c3916122b9916122af906001600160801b038316906121ff565b9060801c90612228565b93601f54906121ff565b6122cc83612248565b90612228565b80831061239a576122e66123229184612256565b9161231d61231761230e601e546123086122ff86612248565b60205490612263565b906121ff565b6122cc84612248565b91612248565b612270565b6509184e72a0009081810291818305149015171561221257670de0b6b3a76400009182810292818405149015171561221257801561223257600160ff1b91808314600019831416612212570590600082121561239357811461221257600003905b80821161238e575090565b905090565b5090612383565b505050600090565b6001600160a01b038116600081815260176020526040812054919493929091908115612430579160409161240c85946123e6612424976123e06138aa565b926126a5565b815190936001600160801b0391602091612402918416906121ff565b9201511690612228565b81811061242857035b95815260186020522054612777565b9091565b505080612415565b50509192505080918190565b51908115158203610a4957565b9190826040910312610a495760206124608361243c565b92015190565b60208082526000916010549161247b8361203a565b92838284015260019081811690816000146124de57506001146124a0575b5050505090565b929350601060005280600020926000935b8585106124ca5750505060409250010138808080612499565b8054858501604001529382019381016124b1565b925050506040935060ff929192191683830152151560051b010138808080612499565b600f546040805163d6d7d52560e01b81529290916001600160a01b031682848061252d60048201612466565b0381600080955af1801561264d578194829161261a575b509284156125bd57831561258357507f9f9192b5edb17356c524e08d9e025c8e2f6307e6ea52fb7968faa3081f51c3c883918260115580a25b42601355565b5162461bcd60e51b81526020600482015260146024820152734d61726b65743a20696e76616c6964207261746560601b6044820152606490fd5b919250506125d060135460125490612263565b42116125e057506011549061257d565b5162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881c985d19481d1bdbc81bdb1960621b6044820152606490fd5b905061263d919450833d8511612646575b61263581836120ef565b810190612449565b93909338612544565b503d61262b565b508251903d90823e3d90fd5b1561266057565b60405162461bcd60e51b815260206004820152601e60248201527f4d61726b65743a2065786368616e676552617465206e6f742076616c696400006044820152606490fd5b6126b0821515612659565b60018060a01b036020816009541691600c5490600094168452601882526064604085205491604051948593849263442c159960e01b8452600484015260248301528660448301525afa91821561276b578092612733575b50509061272b61272261273093620186a060215404906121ff565b601e54906121ff565b612228565b90565b9091506020823d8211612763575b8161274e602093836120ef565b8101031261030e57505161272b612722612707565b3d9150612741565b604051903d90823e3d90fd5b612782821515612659565b602060018060a01b0360095416916064600c54604051948593849263442c159960e01b845260048401526024830152600060448301525afa908115612822576000916127ef575b509061272b6127db92602154906121ff565b620186a06127eb601e54836121ff565b0491565b906020823d821161281a575b81612808602093836120ef565b8101031261030e57505161272b6127c9565b3d91506127fb565b6040513d6000823e3d90fd5b6001600160a01b0316600081815260186020526040812054909261285191612777565b91835260176020526040832054801561295a57811561295a5781811061295a57828110156129505760145461289a918391610f96916122af906001600160801b038316906121ff565b90620186a0928383029280840485149015171561293c576128bf92916122cc91612256565b91601b5491601c54936128d28585612270565b80820291848212600160ff1b82141661293c5781830514901517156129285705818482019485129112908015821691151617612914575080821261238e575090565b634e487b7160e01b81526011600452602490fd5b634e487b7160e01b83526011600452602483fd5b634e487b7160e01b85526011600452602485fd5b50505050601b5490565b50505090565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03161480612a61575b156129bb577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f000000000000000000000000000000000000000000000000000000000000000082527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a0815260c081018181106001600160401b038211176120875760405251902090565b507f00000000000000000000000000000000000000000000000000000000000000004614612992565b15612a9157565b60405162461bcd60e51b815260206004820152601660248201527545524332303a2062616c616e636520746f6f206c6f7760501b6044820152606490fd5b15612ad657565b60405162461bcd60e51b815260206004820152601660248201527545524332303a206e6f207a65726f206164647265737360501b6044820152606490fd5b51906001600160a01b0382168203610a4957565b519060ff82168203610a4957565b60058110156120245780612b475750565b60018103612b8f5760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b6044820152606490fd5b60028103612bdc5760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606490fd5b600314612be557565b60405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608490fd5b9291906fa2a8918ca85bafe22016d0b997e4df60600160ff1b038311612cae5791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa15612ca15781516001600160a01b03811615612c9b579190565b50600190565b50604051903d90823e3d90fd5b50505050600090600390565b60001981146122125760010190565b7fe50de2333c10a9502fcb1d8ae13a51bbf423153dfc63c2b8997665b32154afc360018060a01b038092169160009083825260036020526040822094169384825260205284604082205580a4565b909160207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259160018060a01b03809416938460005260028352604060002095169485600052825280604060002055604051908152a3565b15612d7557565b60405162461bcd60e51b815260206004820152600e60248201526d13585c9ad95d0e881c185d5cd95960921b6044820152606490fd5b15612db257565b606460405162461bcd60e51b815260206004820152602060248201527f4d61726b65743a2063616e6e6f742065786563757465206f6e20697473656c666044820152fd5b15612dfd57565b60405162461bcd60e51b815260206004820152602160248201527f42696742616e673a20616c6c6f77616e63655368617265206e6f742076616c696044820152601960fa1b6064820152608490fd5b91929060009060295485106132af5784156132a757612e6a85613a79565b9060115495612eb4612ea3612e7f8584612263565b600d546001600160a01b039a919060ff90612e9b908d166132f3565b16918a6134b3565b612eae811515612df6565b87613536565b8682169182855260209260238452604094858720612ed3828254612263565b9055612edd613390565b98612ee88286612263565b88878951612ef58161209d565b82815201528a516001600160801b039b8c91821661323b5781612f20849e8f955b1682845116613891565b168152612f35828a8301941683855116613891565b8281169093525160809290921b6001600160801b03191691169081176014556016548015918215613230575b5050156131ec57907f3a5151e57d3bc9798e7853034ac52293d1a0e12a2b44725e75b03b21f86477a6878c8795941692838b52601789528c612fa7838d20918254612263565b905581519081528c89820152a487600d5416803b1561316d5784516340c10f1960e01b8152306004820152602481018490529086908290604490829084905af180156131e2576131cf575b5087600d541690600e54918960095416865163095ea7b360e01b91828252600482015288602482015286816044818c875af180156131c5579287928a88938f96613182575b506009548b51928352959095166001600160a01b0316600482015260248101929092529092839190829081604481015b03925af1801561317857908694939291613134575b506130a79450868a6009541692855196879586948593634d4d7cbd60e11b8552309060048601613a4a565b03925af1908115613128578391613109575b509394600a5416803b156105dd57908280926004835180958193632ebe913360e21b83525af190811561310057506130ef575050565b6130f98291612074565b61030e5750565b513d84823e3d90fd5b6131209150823d8411610d9257610d8281836120ef565b9050386130b9565b505051903d90823e3d90fd5b80929450859193953d8311613171575b61314e81836120ef565b8101031261316d57916130a79391613166869461243c565b503861307c565b8580fd5b503d613144565b86513d89823e3d90fd5b9350509290935081813d83116131be575b61319d81836120ef565b81010312611384576130679287928a8e6131b78a9561243c565b5095613037565b503d613193565b88513d8b823e3d90fd5b6131db90959195612074565b9338612ff2565b85513d88823e3d90fd5b865162461bcd60e51b815260048101879052601b60248201527f42696742616e673a20626f72726f7720636170207265616368656400000000006044820152606490fd5b111590503880612f61565b9091808983018481511661324f90836121ff565b8585511661325c91612228565b9e8f8186511661326b916121ff565b91511661327791612228565b1061328b575b9082612f20818f9594612f16565b919b908c612f2061329c8294612cba565b9e505050909161327d565b509250829150565b606460405162461bcd60e51b815260206004820152602060248201527f42696742616e673a20626f72726f7720616d6f756e7420746f6f20736d616c6c6044820152fd5b60405163313ce56760e01b6020820190815260048252906133138161209d565b5160009283928392916001600160a01b03165afa903d15613388573d9161333983612159565b9261334760405194856120ef565b83523d82602085013e5b8061337d575b156133765760208280518101031261030e575060206127309101612b28565b5050601290565b506020825114613357565b606091613351565b6040519061339d8261209d565b6014546001600160801b038116835260801c6020830152565b919060018060a01b038060009416845260206017815260408520549081156134a95760188152604086205480156134a257816133f0613390565b9460095416916064600c54604051948593849263442c159960e01b8452600484015260248301528b60448301525afa96871561276b57809761346c575b505061240261344c612722613467969798620186a060215404906121ff565b9561346260018060801b039485875116906121ff565b6121ff565b111590565b9096508187813d831161349b575b61348481836120ef565b8101031261030e575094519461240261344c61342d565b503d61347a565b5050505050565b5060019450505050565b612317906134d38561273096956134cd6122cc96856126a5565b906134f3565b6001600160a01b03909116600090815260186020526040902054906121ff565b918215801561352e575b61239a57600181018091116122125761351c9261230861272b92612248565b6005810180911161221257600a900490565b5081156134fd565b6001600160a01b031633810361354a575050565b60008181526020906003825260409182822033835281528483832054106135b3578382526003815282822033835281528282205460010161358c575050505050565b6135a793825260038152828220903383525220918254612256565b905538808080806134a2565b60649083519062461bcd60e51b82526004820152601460248201527313585c9ad95d0e881b9bdd08185c1c1c9bdd995960621b6044820152fd5b6001600160801b03918216908216039190821161221257565b919091600060206040516136198161209d565b82815201526020810180516001600160801b0390811661365d5761365681865b81613649818a16828951166135ed565b16865216828451166135ed565b1690529190565b61367761366d82855116876121ff565b8284511690612228565b948061369361368984865116896121ff565b8487511690612228565b106136a3575b8161365691613639565b94816136b161365692612cba565b96915050613699565b60ff6025541661382b576014546001600160801b031690811561382457600a54604051631848f2bf60e31b8152602093916001600160a01b03919085908290600490829086165afa80156128225785916000916137eb575b50600460405180948193631a674cc560e11b8352165afa938415612822576000946137bc575b50506137549192670de0b6b3a7640000928391602854906121ff565b0490818110156137b35761376b6029548092612256565b83810290808204851490151715612212576122cc61378c926137a794612256565b602654926137a1602754926134628487612256565b04612263565b9080821161238e575090565b50505060265490565b81813d83116137e4575b6137d081836120ef565b810103126113885751925061375438613738565b503d6137c6565b909181813d831161381d575b61380181836120ef565b81010312610330575190828216820361030e5750849038613712565b503d6137f7565b6027549150565b600a5460405163e6abad4960e01b815290602090829060049082906001600160a01b03165afa90811561282257600091613863575090565b906020823d8211613889575b8161387c602093836120ef565b8101031261030e57505190565b3d915061386f565b6001600160801b03918216908216019190821161221257565b600060206040516138ba8161209d565b82815201526001600160401b03906138d98260245460401c1642612256565b9182156139305761392b61346291670de0b6b3a76400006139206138fb613390565b9660018060801b03958694858a5116906301e133806139186136ba565b0416906121ff565b041682855116613891565b168252565b509050612730613390565b6040516139478161209d565b6024546001600160401b03908181168352818160401c1661396f602085019180835242612256565b9283156134a257602094816301e133806139876136ba565b041681528142168352613998613390565b670de0b6b3a76400006139bd60018060801b03976134628985511687875116906121ff565b04956139ce81881682845116613891565b1680825296015160801b6001600160801b031990811690961760145551915192909416931692831760409190911b67ffffffffffffffff60401b16176024557f7484db546dcd57af0104c73c8a6968dfbaf5767f047cee0dadd0499ad7df81a0600080a3565b9190826040910312610a49576020825192015190565b9081526001600160a01b0391821660208201529116604082015260608101919091526000608082015260a00190565b8015613be657602a546040805163d6d7d52560e01b81526001600160a01b03909216929190808280613aad60048201612466565b0381600080985af1918215613bdc5784908593613bba575b5015613b6b5750670e27c49886e60000811015613b6257670d99a8cec7e20000811115613b5957602d5490670d99a8cec7e1ffff198101908111613b455790668e1bc9bf040000613b1f613b2693612308602c5485612256565b0490612256565b9081613b3157505090565b620186a0925090613b41916121ff565b0490565b634e487b7160e01b84526011600452602484fd5b505050602d5490565b505050602c5490565b5162461bcd60e51b8152602060048201526024808201527f42696742616e673a202061737365742773206f7261636c652063616c6c2066616044820152631a5b195960e21b6064820152608490fd5b905081613bd49293503d84116126465761263581836120ef565b919038613ac5565b81513d86823e3d90fd5b50600090565b6001600160a01b0390811660008181526017602052604081205491939092828214613c6f579060ff613c24613c2d93600d54166132f3565b169283916134f3565b8015613c685782916122cc612317613c53938760409752602360205286862054906121ff565b9281526023602052205480821161238e575090565b5050905090565b50505060409150602360205220549056feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae672a26469706673582212208082314b105886dbefd0bc64b2f053ab5ae9e4c72ac80611d7162104e8ae4d2064736f6c63430008120033", + "deployedBytecode": "0x60806040908082526004918236101561001757600080fd5b60009260e08435811c938462a02a2014611ef65750836302ce728f14611ecd578363078dfbe714611dc8578363095ea7b314611d9e5783630c4e84f014611c8757836318160ddd14611c6c5783631c9e379b14611c345783631d4d3a5d14611c0b5783631da8bf1014611b515783631fb8f81a14611b3257836323b872dd146119aa578363331960ff1461198b57836334ce998a1461196257836334d441d0146119435783633644e5151461192657836337b6b7b91461190757836338d52e0f146118de5783633ba0b9a9146118bf5783633f741adb1461189657836340626d8b1461187757836344de240a14611858578363473e3ce71461183957836348e4163e146118015783634e71e0c81461174c5783635224372c14611695578363529898f214611677578363542afda31461165857836357935462146116395783636b19ad161461161a5783636c3d8b8f146115f157836370a08231146115b9578363727785471461158157836374645ff3146114ed57836374c9e481146114ce5783637dc0d1d0146114a55783637ecebe001461146e5783637fa0b84e1461143d5783638285ef401461140c57836387b27937146113d45783638c5d0ed3146113b55783638da5cb5b1461138c578363910dd7c814611113578363932bc4f81461103657836399a970281461100d5783639e15e89f14610fd2578363a9059cbb14610ef7578363b0e21e8a14610ed8578363b27c0e7414610ea7578363b7113f1914610e83578363bb4cfe3b14610e64578363bde39c5d14610e45578363c1ad5c8d14610e21578363cd0211eb14610a7f578363ce8849ed14610a56578363d3fb2a38146105e1578363d505accf1461045a5750508163d8dfeb4514610431578163dd62ed3e146103e3578163de406577146103ba578163e0996cb61461039b578163e30c397814610372578163ea64dd5614610353578163eec0f42e14610334578163f791395d14610311575063f8ba4cff146102f357600080fd5b3461030e578060031936011261030e5761030b61393b565b80f35b80fd5b9050346103305781600319360112610330576020906027549051908152f35b5080fd5b905034610330578160031936011261033057602090600c549051908152f35b905034610330578160031936011261033057602090601f549051908152f35b90503461033057816003193601126103305760065490516001600160a01b039091168152602090f35b905034610330578160031936011261033057602090601d549051908152f35b90503461033057816003193601126103305760095490516001600160a01b039091168152602090f35b905034610330578060031936011261033057602091610400611f3d565b82610409611f53565b6001600160a01b03928316845260028652922091166000908152908352819020549051908152f35b905034610330578160031936011261033057600b5490516001600160a01b039091168152602090f35b908491346105dd5761046b36611f87565b91839498959793421161059a579161053d91610545938c8b8b60018060a01b0398898d169a8b93846000528d60205285600020908154916104ab83612cba565b90558c87519560208701977f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e266895260008a890152606088015216608086015260a085015260c0840152818301528152610503816120b8565b51902061050e612960565b915190602082019261190160f01b84526022830152604282015260428152610535816120d4565b519020612c35565b919091612b36565b1603610557575061030b939450612d17565b606490602087519162461bcd60e51b8352820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152fd5b8a5162461bcd60e51b8152602081880152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b8280fd5b848383346105dd576101603660031901126105dd576001600160a01b03813581811690819003610a52576024916001600160401b038335818111610a4e5736602382011215610a4e5780860135918211610a4e5736858383010111610a4e5760443593838516809503610a495761065d84600554163314612174565b80610a0b575b5084826108b1575b50505081610871575b505060643580610859575b5060843580610841575b5060a4358061082a575b5060c43580610806575b5060e435806107e2575b5061010435806107b1575b506101243580610740575b506101443592836106cc578480f35b601e5484106106e357505050601f55818080808480f35b608492916020603292519362461bcd60e51b85528401528201527f4d61726b65743a206c69717569646174696f6e436f6c6c61746572616c697a616044820152711d1a5bdb94985d19481d1bdbc81cdb585b1b60721b6064820152fd5b61074f620186a08211156121bf565b601f54811161076157601e55846106bd565b506025906020608494519362461bcd60e51b85528401528201527f4d61726b65743a20636f6c6c61746572616c697a6174696f6e5261746520746f6044820152646f2062696760d81b6064820152fd5b806016547fae6e0ab3b95f0a53ff9660a390ccedcbbf1f2355dce974a9841af106fddcfaba8780a3601655846106b2565b6107f0620186a082106121bf565b6107fd601b5482116121bf565b601c55846106a7565b610814620186a082106121bf565b610821601c5482106121bf565b601b558461069d565b610838620186a082106121bf565b601d5584610693565b610850620186a08211156121bf565b601a5584610689565b610868620186a08211156121bf565b6019558461067f565b816008549182167f5a62d22209e370e38eea92cfddcd228e656e6ec139243392a760a7769f5877fd8880a36001600160a01b031916176008558480610674565b82916108be60105461203a565b601f81116109ac575b508990601f841160011461092c578a9361091f575b5050508160011b916000199060031b1c1916176010555b7fa6f004921c944d4b8bf6e38462b00f36a58d62495d56b51f571ab78f732c98158680a186808461066b565b01013590508489806108dc565b60108b52601f1984169450600080516020613ca183398151915292509087908b60205b87821061098d5750508460019610610971575b50505050811b016010556108f3565b60001960f88660031b161c199201013516905588808681610962565b828501909301358555600194909401938992918201919081019061094f565b60108b529092509050600080516020613ca1833981519152601f840160051c810160208510610a04575b91849391601f8994920160051c01905b8181106109f357506108c7565b8b81558594508893506001016109e6565b50806109d6565b600f80546001600160a01b0319169190911790557f0b2d6eb667d0522c3eb86e4288afecae6c11591ffd1345d4d12407e0598bca9b8880a188610663565b600080fd5b8780fd5b8480fd5b84833461033057816003193601126103305760085490516001600160a01b039091168152602090f35b5083823461033057608036600319011261033057610a9b611f3d565b91610aa4611f53565b93610aad611f78565b506064356001835260209560078752610acc60ff868620541615612d6e565b6001600160a01b039181831691610ae530841415612dab565b610aed612501565b5050610af761393b565b610b3c610b2b610b0e84610b09613390565b613606565b90506011549060ff610b2389600d54166132f3565b1691856134b3565b610b36811515612df6565b89613536565b8286526017895286862054808311610e19575b508115610dde5781610b6091613bec565b9681881015610da35782865260238952868620610b7e898254612256565b9055610b8c82610b09613390565b9890899060018060801b03815116908c60018060801b031991015160801b161760145584885260178b52888820610bc4858254612256565b90558989888860095416868c600e54610bf28651978896879586946311a5cc7760e31b865230928601613a4a565b03925af18015610d99578c9388938c8e99989794610c2794610d6b575b5050610c1b878a612256565b80610d48575b50612256565b80610cad575b50895193845216917fc8e512d8f188ca059984b5853d2bf653da902696b8512785b182b2c813789a6e9190a4600a541690813b156105dd578351632ebe913360e21b81529183918391829084905af18015610ca357610c8f575b505051908152f35b610c998291612074565b61030e5780610c87565b83513d84823e3d90fd5b925092939450600d541690813b15610a4e578851632770a7eb60e21b815230888201908152602081019290925291889183919082908490829060400103925af18015610d3e57918a918a959493610d07575b908691610c2d565b7fc8e512d8f188ca059984b5853d2bf653da902696b8512785b182b2c813789a6e929198610d358892612074565b98919250610cff565b88513d89823e3d90fd5b610d659150610d5e620186a091601a54906121ff565b0489612256565b8f610c21565b81610d8a92903d10610d92575b610d8281836120ef565b810190613a34565b8e9150610c0f565b503d610d78565b8a513d8b823e3d90fd5b865162461bcd60e51b81528086018a9052601560248201527442423a2072657061796d656e7420746f6f206c6f7760581b6044820152606490fd5b865162461bcd60e51b81528086018a9052601560248201527453474c3a206e6f7468696e6720746f20726570617960581b6044820152606490fd5b915089610b4f565b848334610330578160031936011261033057602090610e3e6136ba565b9051908152f35b8483346103305781600319360112610330576020906028549051908152f35b848334610330578160031936011261033057602090601e549051908152f35b84833461033057816003193601126103305760209060ff6025541690519015158152f35b82853461030e578060031936011261030e57506024548151906001600160401b03908181168352831c166020820152f35b848334610330578160031936011261033057602090601a549051908152f35b848334610330578060031936011261033057602091610f14611f3d565b82602435928315801590610fc0575b610f53575b50519182526001600160a01b0316903390600080516020613c81833981519152908590a35160018152f35b3381526001865281812054610f6a85821015612a8a565b6001600160a01b038416908533839003610f87575b505050610f28565b610f9b91610f96841515612acf565b612256565b3383526001885283832055815220610fb4838254612263565b90558285808085610f7f565b50336001600160a01b03841614610f23565b848334610330578060031936011261033057606090610ffb610ff2611f3d565b602435906123a2565b91929081519384526020840152820152f35b848334610330578060031936011261033057602090610e3e61102d611f3d565b6024359061282e565b84833461033057816003193601126103305780519082602b546110588161203a565b808552906001908181169081156110eb5750600114611092575b5050506110848261108e9403836120ef565b5191829182612110565b0390f35b602b8352602095507f11c44e4875b74d31ff9fd779bf2566af7bd15b87fc985d01f5094b89e3669e4f5b8284106110d8575050508261108e946110849282010194611072565b80548685018801529286019281016110bc565b61108e97506110849450602092508693915060ff191682840152151560051b82010194611072565b925090346113885780600319360112611388578135926001600160401b038411610a525736602385011215610a5257838301359261115084612159565b9461115d845196876120ef565b848652866020918288019636602482840101116105dd578060248593018937880101526024359361ffff8516809503610a4e57610100958688805181010312611384576111a99061243c565b936111b5828901612b14565b906111c260608a01612b14565b9860808101519860a0820151926111db60c08401612b28565b91818401519301519360018060a01b03808097169d169a81421161134157928d8f819897948f948f8f968f918f959a8f8c81956112b79f9c61053d9f5060001461131a577f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e2669a5b82528952209384549461125486612cba565b905580519788019889528701528d6060870152608086015260a085015260c0840152818301528152611285816120b8565b519020611290612960565b908951908b82019261190160f01b84526022830152604282015260428152610535816120d4565b16036112d9575050506000146112d05761030b92612d17565b61030b92612cc9565b5162461bcd60e51b815291820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e61747572650000604482015260649150fd5b7f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d69a611242565b875162461bcd60e51b8152808b018a9052601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b8880fd5b8380fd5b84833461033057816003193601126103305760055490516001600160a01b039091168152602090f35b848334610330578160031936011261033057602090601b549051908152f35b8483346103305760203660031901126103305760209181906001600160a01b036113fc611f3d565b1681526023845220549051908152f35b82853461030e578060031936011261030e575060145481516001600160801b038216815260809190911c6020820152f35b84833461033057806003193601126103305760209061146761145d611f3d565b6024359033612cc9565b5160018152f35b848383346105dd5760203660031901126105dd5760209282916001600160a01b03611497611f3d565b168252845220549051908152f35b848334610330578160031936011261033057600f5490516001600160a01b039091168152602090f35b848334610330578160031936011261033057602090602d549051908152f35b8483346103305781600319360112610330578051908260105461150f8161203a565b808552906001908181169081156110eb575060011461153a575050506110848261108e9403836120ef565b6010835260209550600080516020613ca18339815191525b82841061156e575050508261108e946110849282010194611072565b8054868501880152928601928101611552565b848383346105dd5760203660031901126105dd573591600983101561030e575060ff6115ae60209361200b565b541690519015158152f35b8483346103305760203660031901126103305760209181906001600160a01b036115e1611f3d565b1681526001845220549051908152f35b848334610330578160031936011261033057600a5490516001600160a01b039091168152602090f35b8483346103305781600319360112610330576020906026549051908152f35b848334610330578160031936011261033057602090601c549051908152f35b848334610330578160031936011261033057602090602c549051908152f35b84833461033057816003193601126103305760209081549051908152f35b848383346105dd57611703906116f760ff84956116ca6116b436611fd6565b9491989093808052600760205220541615612d6e565b6116df6001600160a01b038216301415612dab565b6116e7612501565b50506116f161393b565b85612e4c565b929093601154906133b6565b15611715575082519182526020820152f35b606490602085519162461bcd60e51b8352820152601160248201527013585c9ad95d0e881a5b9cdbdb1d995b9d607a1b6044820152fd5b509150346105dd57826003193601126105dd576006546001600160a01b039290918383169190338390036117be575050806005549384167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08680a36001600160a01b0319928316176005551660065580f35b906020606492519162461bcd60e51b8352820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b8483346103305760203660031901126103305760209181906001600160a01b03611829611f3d565b1681526017845220549051908152f35b8483346103305781600319360112610330576020906015549051908152f35b848334610330578160031936011261033057602090600e549051908152f35b8483346103305781600319360112610330576020906016549051908152f35b5090833461030e57606036600319011261030e5750610e3e602092604435906024359035612289565b8483346103305781600319360112610330576020906011549051908152f35b848334610330578160031936011261033057600d5490516001600160a01b039091168152602090f35b8483346103305781600319360112610330576020906012549051908152f35b848334610330578160031936011261033057602090610e3e612960565b8483346103305781600319360112610330576020906019549051908152f35b84833461033057816003193601126103305760145490516001600160801b039091168152602090f35b8483346103305781600319360112610330576020906013549051908152f35b5090833461030e576119bb36611fd6565b9192826119f5575b508351918252602094506001600160a01b03908116921690600080516020613c81833981519152908590a35160018152f35b6001600160a01b038481168083526001602090815287842054919892909190611a2087831015612a8a565b851692838a03611a34575b505050506119c3565b898552600283528885203386528352888520549060018201611a9e575b5050928260209960018a94611a7d8a8e99610f96600080516020613c818339815191529c9a1515612acf565b9285525283832055815220611a93858254612263565b905591878080611a2b565b878210611af457509260209960018a94611a7d8a8e9996611acf82600080516020613c818339815191529d9b612256565b86895260028552898920338a5285528989205596995050509450509981949650611a51565b895162461bcd60e51b8152908101849052601860248201527745524332303a20616c6c6f77616e636520746f6f206c6f7760401b6044820152606490fd5b8483346103305781600319360112610330576020906029549051908152f35b908491346105dd57611b6236611f87565b93979496909280421161059a57938693611bf9938c8c8961053d968e9a8e60018060a01b03809c169c8d948587526020528c87872092835493611ba485612cba565b905588519660208801987f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d68a528a890152606088015216608086015260a085015260c0840152818301528152610503816120b8565b1603610557575061030b939450612cc9565b848334610330578160031936011261033057602a5490516001600160a01b039091168152602090f35b8483346103305760203660031901126103305760209181906001600160a01b03611c5c611f3d565b1681526018845220549051908152f35b84833461033057816003193601126103305751908152602090f35b848383346105dd57816003193601126105dd57803590600982101561138857611cae611f69565b6008549093906001600160a01b03163303611d645760ff611cce8461200b565b54161515931515938414611d2c575050808260ff611cee611d1c9461200b565b54161515827feeec81de25875ce1725479bb76f720a8defdb43dea041919ae37bb4aae9847c08780a461200b565b9060ff8019835416911617905580f35b906020606492519162461bcd60e51b835282015260126024820152714d61726b65743a2073616d6520737461746560701b6044820152fd5b906020606492519162461bcd60e51b8352820152601460248201527313585c9ad95d0e881d5b985d5d1a1bdc9a5e995960621b6044820152fd5b848334610330578060031936011261033057602090611467611dbe611f3d565b6024359033612d17565b509150346105dd5760603660031901126105dd57611de4611f3d565b91611ded611f69565b91611df6611f78565b9260018060a01b03948591611e1083600554163314612174565b15611eb4571692831590811591611eac575b5015611e71575050806005549283167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08580a36001600160a01b03199182161760055560068054909116905580f35b906020606492519162461bcd60e51b835282015260156024820152744f776e61626c653a207a65726f206164647265737360581b6044820152fd5b905038611e22565b93505050501660018060a01b0319600654161760065580f35b82853461030e578060031936011261030e5750611ee8612501565b825191151582526020820152f35b93505050346105dd57806003193601126105dd57602092611f15611f3d565b611f1d611f53565b6001600160a01b0391821683526003865283832091168252845220548152f35b600435906001600160a01b0382168203610a4957565b602435906001600160a01b0382168203610a4957565b602435908115158203610a4957565b604435908115158203610a4957565b60e0906003190112610a49576001600160a01b03906004358281168103610a4957916024359081168103610a495790604435906064359060843560ff81168103610a49579060a4359060c43590565b6060906003190112610a49576001600160a01b03906004358281168103610a4957916024359081168103610a49579060443590565b6009811015612024576000526007602052604060002090565b634e487b7160e01b600052602160045260246000fd5b90600182811c9216801561206a575b602083101461205457565b634e487b7160e01b600052602260045260246000fd5b91607f1691612049565b6001600160401b03811161208757604052565b634e487b7160e01b600052604160045260246000fd5b604081019081106001600160401b0382111761208757604052565b61010081019081106001600160401b0382111761208757604052565b608081019081106001600160401b0382111761208757604052565b90601f801991011681019081106001600160401b0382111761208757604052565b6020808252825181830181905290939260005b82811061214557505060409293506000838284010152601f8019910116010190565b818101860151848201604001528501612123565b6001600160401b03811161208757601f01601f191660200190565b1561217b57565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b156121c657565b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881b9bdd081d985b1a59607a1b6044820152606490fd5b8181029291811591840414171561221257565b634e487b7160e01b600052601160045260246000fd5b8115612232570490565b634e487b7160e01b600052601260045260246000fd5b604d811161221257600a0a90565b9190820391821161221257565b9190820180921161221257565b8181039291600013801582851316918412161761221257565b6014549192916122d2916122c3916122b9916122af906001600160801b038316906121ff565b9060801c90612228565b93601f54906121ff565b6122cc83612248565b90612228565b80831061239a576122e66123229184612256565b9161231d61231761230e601e546123086122ff86612248565b60205490612263565b906121ff565b6122cc84612248565b91612248565b612270565b6509184e72a0009081810291818305149015171561221257670de0b6b3a76400009182810292818405149015171561221257801561223257600160ff1b91808314600019831416612212570590600082121561239357811461221257600003905b80821161238e575090565b905090565b5090612383565b505050600090565b6001600160a01b038116600081815260176020526040812054919493929091908115612430579160409161240c85946123e6612424976123e06138aa565b926126a5565b815190936001600160801b0391602091612402918416906121ff565b9201511690612228565b81811061242857035b95815260186020522054612777565b9091565b505080612415565b50509192505080918190565b51908115158203610a4957565b9190826040910312610a495760206124608361243c565b92015190565b60208082526000916010549161247b8361203a565b92838284015260019081811690816000146124de57506001146124a0575b5050505090565b929350601060005280600020926000935b8585106124ca5750505060409250010138808080612499565b8054858501604001529382019381016124b1565b925050506040935060ff929192191683830152151560051b010138808080612499565b600f546040805163d6d7d52560e01b81529290916001600160a01b031682848061252d60048201612466565b0381600080955af1801561264d578194829161261a575b509284156125bd57831561258357507f9f9192b5edb17356c524e08d9e025c8e2f6307e6ea52fb7968faa3081f51c3c883918260115580a25b42601355565b5162461bcd60e51b81526020600482015260146024820152734d61726b65743a20696e76616c6964207261746560601b6044820152606490fd5b919250506125d060135460125490612263565b42116125e057506011549061257d565b5162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881c985d19481d1bdbc81bdb1960621b6044820152606490fd5b905061263d919450833d8511612646575b61263581836120ef565b810190612449565b93909338612544565b503d61262b565b508251903d90823e3d90fd5b1561266057565b60405162461bcd60e51b815260206004820152601e60248201527f4d61726b65743a2065786368616e676552617465206e6f742076616c696400006044820152606490fd5b6126b0821515612659565b60018060a01b036020816009541691600c5490600094168452601882526064604085205491604051948593849263442c159960e01b8452600484015260248301528660448301525afa91821561276b578092612733575b50509061272b61272261273093620186a060215404906121ff565b601e54906121ff565b612228565b90565b9091506020823d8211612763575b8161274e602093836120ef565b8101031261030e57505161272b612722612707565b3d9150612741565b604051903d90823e3d90fd5b612782821515612659565b602060018060a01b0360095416916064600c54604051948593849263442c159960e01b845260048401526024830152600060448301525afa908115612822576000916127ef575b509061272b6127db92602154906121ff565b620186a06127eb601e54836121ff565b0491565b906020823d821161281a575b81612808602093836120ef565b8101031261030e57505161272b6127c9565b3d91506127fb565b6040513d6000823e3d90fd5b6001600160a01b0316600081815260186020526040812054909261285191612777565b91835260176020526040832054801561295a57811561295a5781811061295a57828110156129505760145461289a918391610f96916122af906001600160801b038316906121ff565b90620186a0928383029280840485149015171561293c576128bf92916122cc91612256565b91601b5491601c54936128d28585612270565b80820291848212600160ff1b82141661293c5781830514901517156129285705818482019485129112908015821691151617612914575080821261238e575090565b634e487b7160e01b81526011600452602490fd5b634e487b7160e01b83526011600452602483fd5b634e487b7160e01b85526011600452602485fd5b50505050601b5490565b50505090565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03161480612a61575b156129bb577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f000000000000000000000000000000000000000000000000000000000000000082527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a0815260c081018181106001600160401b038211176120875760405251902090565b507f00000000000000000000000000000000000000000000000000000000000000004614612992565b15612a9157565b60405162461bcd60e51b815260206004820152601660248201527545524332303a2062616c616e636520746f6f206c6f7760501b6044820152606490fd5b15612ad657565b60405162461bcd60e51b815260206004820152601660248201527545524332303a206e6f207a65726f206164647265737360501b6044820152606490fd5b51906001600160a01b0382168203610a4957565b519060ff82168203610a4957565b60058110156120245780612b475750565b60018103612b8f5760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b6044820152606490fd5b60028103612bdc5760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606490fd5b600314612be557565b60405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608490fd5b9291906fa2a8918ca85bafe22016d0b997e4df60600160ff1b038311612cae5791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa15612ca15781516001600160a01b03811615612c9b579190565b50600190565b50604051903d90823e3d90fd5b50505050600090600390565b60001981146122125760010190565b7fe50de2333c10a9502fcb1d8ae13a51bbf423153dfc63c2b8997665b32154afc360018060a01b038092169160009083825260036020526040822094169384825260205284604082205580a4565b909160207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259160018060a01b03809416938460005260028352604060002095169485600052825280604060002055604051908152a3565b15612d7557565b60405162461bcd60e51b815260206004820152600e60248201526d13585c9ad95d0e881c185d5cd95960921b6044820152606490fd5b15612db257565b606460405162461bcd60e51b815260206004820152602060248201527f4d61726b65743a2063616e6e6f742065786563757465206f6e20697473656c666044820152fd5b15612dfd57565b60405162461bcd60e51b815260206004820152602160248201527f42696742616e673a20616c6c6f77616e63655368617265206e6f742076616c696044820152601960fa1b6064820152608490fd5b91929060009060295485106132af5784156132a757612e6a85613a79565b9060115495612eb4612ea3612e7f8584612263565b600d546001600160a01b039a919060ff90612e9b908d166132f3565b16918a6134b3565b612eae811515612df6565b87613536565b8682169182855260209260238452604094858720612ed3828254612263565b9055612edd613390565b98612ee88286612263565b88878951612ef58161209d565b82815201528a516001600160801b039b8c91821661323b5781612f20849e8f955b1682845116613891565b168152612f35828a8301941683855116613891565b8281169093525160809290921b6001600160801b03191691169081176014556016548015918215613230575b5050156131ec57907f3a5151e57d3bc9798e7853034ac52293d1a0e12a2b44725e75b03b21f86477a6878c8795941692838b52601789528c612fa7838d20918254612263565b905581519081528c89820152a487600d5416803b1561316d5784516340c10f1960e01b8152306004820152602481018490529086908290604490829084905af180156131e2576131cf575b5087600d541690600e54918960095416865163095ea7b360e01b91828252600482015288602482015286816044818c875af180156131c5579287928a88938f96613182575b506009548b51928352959095166001600160a01b0316600482015260248101929092529092839190829081604481015b03925af1801561317857908694939291613134575b506130a79450868a6009541692855196879586948593634d4d7cbd60e11b8552309060048601613a4a565b03925af1908115613128578391613109575b509394600a5416803b156105dd57908280926004835180958193632ebe913360e21b83525af190811561310057506130ef575050565b6130f98291612074565b61030e5750565b513d84823e3d90fd5b6131209150823d8411610d9257610d8281836120ef565b9050386130b9565b505051903d90823e3d90fd5b80929450859193953d8311613171575b61314e81836120ef565b8101031261316d57916130a79391613166869461243c565b503861307c565b8580fd5b503d613144565b86513d89823e3d90fd5b9350509290935081813d83116131be575b61319d81836120ef565b81010312611384576130679287928a8e6131b78a9561243c565b5095613037565b503d613193565b88513d8b823e3d90fd5b6131db90959195612074565b9338612ff2565b85513d88823e3d90fd5b865162461bcd60e51b815260048101879052601b60248201527f42696742616e673a20626f72726f7720636170207265616368656400000000006044820152606490fd5b111590503880612f61565b9091808983018481511661324f90836121ff565b8585511661325c91612228565b9e8f8186511661326b916121ff565b91511661327791612228565b1061328b575b9082612f20818f9594612f16565b919b908c612f2061329c8294612cba565b9e505050909161327d565b509250829150565b606460405162461bcd60e51b815260206004820152602060248201527f42696742616e673a20626f72726f7720616d6f756e7420746f6f20736d616c6c6044820152fd5b60405163313ce56760e01b6020820190815260048252906133138161209d565b5160009283928392916001600160a01b03165afa903d15613388573d9161333983612159565b9261334760405194856120ef565b83523d82602085013e5b8061337d575b156133765760208280518101031261030e575060206127309101612b28565b5050601290565b506020825114613357565b606091613351565b6040519061339d8261209d565b6014546001600160801b038116835260801c6020830152565b919060018060a01b038060009416845260206017815260408520549081156134a95760188152604086205480156134a257816133f0613390565b9460095416916064600c54604051948593849263442c159960e01b8452600484015260248301528b60448301525afa96871561276b57809761346c575b505061240261344c612722613467969798620186a060215404906121ff565b9561346260018060801b039485875116906121ff565b6121ff565b111590565b9096508187813d831161349b575b61348481836120ef565b8101031261030e575094519461240261344c61342d565b503d61347a565b5050505050565b5060019450505050565b612317906134d38561273096956134cd6122cc96856126a5565b906134f3565b6001600160a01b03909116600090815260186020526040902054906121ff565b918215801561352e575b61239a57600181018091116122125761351c9261230861272b92612248565b6005810180911161221257600a900490565b5081156134fd565b6001600160a01b031633810361354a575050565b60008181526020906003825260409182822033835281528483832054106135b3578382526003815282822033835281528282205460010161358c575050505050565b6135a793825260038152828220903383525220918254612256565b905538808080806134a2565b60649083519062461bcd60e51b82526004820152601460248201527313585c9ad95d0e881b9bdd08185c1c1c9bdd995960621b6044820152fd5b6001600160801b03918216908216039190821161221257565b919091600060206040516136198161209d565b82815201526020810180516001600160801b0390811661365d5761365681865b81613649818a16828951166135ed565b16865216828451166135ed565b1690529190565b61367761366d82855116876121ff565b8284511690612228565b948061369361368984865116896121ff565b8487511690612228565b106136a3575b8161365691613639565b94816136b161365692612cba565b96915050613699565b60ff6025541661382b576014546001600160801b031690811561382457600a54604051631848f2bf60e31b8152602093916001600160a01b03919085908290600490829086165afa80156128225785916000916137eb575b50600460405180948193631a674cc560e11b8352165afa938415612822576000946137bc575b50506137549192670de0b6b3a7640000928391602854906121ff565b0490818110156137b35761376b6029548092612256565b83810290808204851490151715612212576122cc61378c926137a794612256565b602654926137a1602754926134628487612256565b04612263565b9080821161238e575090565b50505060265490565b81813d83116137e4575b6137d081836120ef565b810103126113885751925061375438613738565b503d6137c6565b909181813d831161381d575b61380181836120ef565b81010312610330575190828216820361030e5750849038613712565b503d6137f7565b6027549150565b600a5460405163e6abad4960e01b815290602090829060049082906001600160a01b03165afa90811561282257600091613863575090565b906020823d8211613889575b8161387c602093836120ef565b8101031261030e57505190565b3d915061386f565b6001600160801b03918216908216019190821161221257565b600060206040516138ba8161209d565b82815201526001600160401b03906138d98260245460401c1642612256565b9182156139305761392b61346291670de0b6b3a76400006139206138fb613390565b9660018060801b03958694858a5116906301e133806139186136ba565b0416906121ff565b041682855116613891565b168252565b509050612730613390565b6040516139478161209d565b6024546001600160401b03908181168352818160401c1661396f602085019180835242612256565b9283156134a257602094816301e133806139876136ba565b041681528142168352613998613390565b670de0b6b3a76400006139bd60018060801b03976134628985511687875116906121ff565b04956139ce81881682845116613891565b1680825296015160801b6001600160801b031990811690961760145551915192909416931692831760409190911b67ffffffffffffffff60401b16176024557f7484db546dcd57af0104c73c8a6968dfbaf5767f047cee0dadd0499ad7df81a0600080a3565b9190826040910312610a49576020825192015190565b9081526001600160a01b0391821660208201529116604082015260608101919091526000608082015260a00190565b8015613be657602a546040805163d6d7d52560e01b81526001600160a01b03909216929190808280613aad60048201612466565b0381600080985af1918215613bdc5784908593613bba575b5015613b6b5750670e27c49886e60000811015613b6257670d99a8cec7e20000811115613b5957602d5490670d99a8cec7e1ffff198101908111613b455790668e1bc9bf040000613b1f613b2693612308602c5485612256565b0490612256565b9081613b3157505090565b620186a0925090613b41916121ff565b0490565b634e487b7160e01b84526011600452602484fd5b505050602d5490565b505050602c5490565b5162461bcd60e51b8152602060048201526024808201527f42696742616e673a202061737365742773206f7261636c652063616c6c2066616044820152631a5b195960e21b6064820152608490fd5b905081613bd49293503d84116126465761263581836120ef565b919038613ac5565b81513d86823e3d90fd5b50600090565b6001600160a01b0390811660008181526017602052604081205491939092828214613c6f579060ff613c24613c2d93600d54166132f3565b169283916134f3565b8015613c685782916122cc612317613c53938760409752602360205286862054906121ff565b9281526023602052205480821161238e575090565b5050905090565b50505060409150602360205220549056feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae672a26469706673582212208082314b105886dbefd0bc64b2f053ab5ae9e4c72ac80611d7162104e8ae4d2064736f6c63430008120033", "linkReferences": {}, "deployedLinkReferences": {} } diff --git a/src/artifacts/tapioca-bar/BBCollateral.json b/src/artifacts/tapioca-bar/BBCollateral.json index c04f057c..382d6d59 100644 --- a/src/artifacts/tapioca-bar/BBCollateral.json +++ b/src/artifacts/tapioca-bar/BBCollateral.json @@ -53,6 +53,31 @@ "name": "ApprovalBorrow", "type": "event" }, + { + "anonymous": false, + "inputs": [], + "name": "AssetOracleDataUpdated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "_oldVal", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "_newVal", + "type": "address" + } + ], + "name": "AssetOracleUpdated", + "type": "event" + }, { "anonymous": false, "inputs": [ @@ -272,25 +297,6 @@ "name": "LogBorrowCapUpdated", "type": "event" }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "uint256", - "name": "_oldVal", - "type": "uint256" - }, - { - "indexed": true, - "internalType": "uint256", - "name": "_newVal", - "type": "uint256" - } - ], - "name": "LogBorrowingFee", - "type": "event" - }, { "anonymous": false, "inputs": [ @@ -479,6 +485,37 @@ "name": "Transfer", "type": "event" }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint256", + "name": "oldMin", + "type": "uint256" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "newMin", + "type": "uint256" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "oldMax", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "newMax", + "type": "uint256" + } + ], + "name": "UpdateMinMaxMintFee", + "type": "event" + }, { "inputs": [], "name": "DOMAIN_SEPARATOR", @@ -673,27 +710,40 @@ "type": "function" }, { - "inputs": [ + "inputs": [], + "name": "assetOracle", + "outputs": [ { - "internalType": "address", + "internalType": "contract IOracle", "name": "", "type": "address" } ], - "name": "balanceOf", + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "assetOracleData", "outputs": [ { - "internalType": "uint256", + "internalType": "bytes", "name": "", - "type": "uint256" + "type": "bytes" } ], "stateMutability": "view", "type": "function" }, { - "inputs": [], - "name": "borrowOpeningFee", + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "balanceOf", "outputs": [ { "internalType": "uint256", @@ -1006,6 +1056,19 @@ "stateMutability": "view", "type": "function" }, + { + "inputs": [], + "name": "maxMintFee", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, { "inputs": [], "name": "minDebtRate", @@ -1032,6 +1095,19 @@ "stateMutability": "view", "type": "function" }, + { + "inputs": [], + "name": "minMintFee", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, { "inputs": [ { @@ -1322,11 +1398,6 @@ }, { "inputs": [ - { - "internalType": "uint256", - "name": "_borrowOpeningFee", - "type": "uint256" - }, { "internalType": "contract IOracle", "name": "_oracle", @@ -1609,8 +1680,8 @@ "type": "function" } ], - "bytecode": "0x6101408060405234620001895762000017816200018e565b600f81526001602082016e546170696f63612042696742616e6760881b8152602060405162000046816200018e565b8381520192603160f81b845251902091208160e052610100918183524660a0526040519160208301907f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f92838352604085015260608401524660808401523060a084015260a0835260c083019280841060018060401b03851117620001735760408490525190206080523060c052610120908152600580546001600160a01b0319163390811790915560007f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a362013880601b5562015f90601c55612710601d556032602055612ee06021556132439283620001ab843960805183612850015260a0518361291b015260c0518361281a015260e0518361289f015251826128c50152518161287c0152f35b634e487b7160e01b600052604160045260246000fd5b600080fd5b604081019081106001600160401b03821117620001735760405256fe608080604052600436101561001357600080fd5b600090813560e01c908162a02a2014611e605750806302ce728f14611e37578063078dfbe714611d38578063095ea7b314611d115780630996efb7146118905780630c4e84f01461177457806318160ddd146117585780631c9e379b1461171f5780631da8bf101461164b5780631fb8f81a1461162d57806323b872dd146114a6578063331960ff1461148857806334ce998a1461145f57806334d441d0146114415780633644e5151461142657806337b6b7b91461140857806338d52e0f146113df5780633ba0b9a9146113c15780633f741adb1461139c57806340626d8b1461137e57806344de240a14611360578063473e3ce71461134257806348e4163e146113095780634e71e0c81461125b578063529898f21461123d578063579354621461121f5780636b19ad16146112015780636c3d8b8f146111d857806370a082311461119f578063727785471461116757806374645ff3146110545780637dc0d1d01461102b5780637ecebe0014610ff25780637fa0b84e14610fc05780638285ef4014610f8e57806387b2793714610f555780638c5d0ed314610f375780638da5cb5b14610f0e578063910dd7c814610cd9578063959916dc14610cbc57806399a9702814610c945780639e15e89f14610c59578063a9059cbb14610b76578063b0e21e8a14610b58578063b27c0e7414610b27578063b7113f1914610b04578063bb4cfe3b14610ae6578063bde39c5d14610ac8578063c1ad5c8d14610aa5578063cce19f8114610925578063ce8849ed146108fc578063d505accf1461075b578063d8dfeb4514610732578063dd62ed3e146106e3578063de406577146106ba578063e0996cb61461069c578063e30c397814610673578063e9a4925214610342578063ea64dd5614610324578063eec0f42e14610306578063f791395d146102e85763f8ba4cff146102ca57600080fd5b346102e557806003193601126102e5576102e26130f4565b80f35b80fd5b50346102e557806003193601126102e5576020602854604051908152f35b50346102e557806003193601126102e5576020600c54604051908152f35b50346102e557806003193601126102e5576020601f54604051908152f35b50346102e55760a03660031901126102e55761035c611ea8565b610364611ebe565b9061036d611ee3565b608435926001600160a01b0390811692909160643561038e30861415612c08565b6002600052602090600782526103ac60ff6040600020541615612c53565b86156105f5575b6103bd8785612c90565b8615610574575b5084875260188152604087206103db878254612154565b90556015546103ea8782612154565b601555600c54908884156104ee575082866009541692604460405180958193627eeac760e11b835230600484015260248301525afa80156104e35789906104af575b6104369250612147565b861161047757505b15610472575080600954165b167f9ed03113de523cebfe5e49d5f8e12894b1c0d42ce805990461726444c90eab878480a480f35b61044a565b6064906040519062461bcd60e51b825260048201526011602482015270084d2ce84c2dcce7440e8dede40daeac6d607b1b6044820152fd5b508282813d83116104dc575b6104c5818361205a565b810103126104d757610436915161042c565b600080fd5b503d6104bb565b6040513d8b823e3d90fd5b9250508460095416803b1561057057604051630208d92960e11b81526001600160a01b038616600482015230602482015260448101929092526064820188905282908290608490829084905af180156105655761054d575b505061043e565b61055690611fdf565b610561578538610546565b8580fd5b6040513d84823e3d90fd5b8280fd5b908096508460095416916064600c546040519485938492638eb22cdd60e01b8452600484015260248301528b60448301525afa9081156105ea5787916105bd575b5094386103c4565b90508581813d83116105e3575b6105d4818361205a565b810103126104d75751386105b5565b503d6105ca565b6040513d89823e3d90fd5b9550836009541681600c54606460405180948193638eb22cdd60e01b835260048301528b60248301528c60448301525afa90811561066857889161063b575b50956103b3565b90508181813d8311610661575b610652818361205a565b810103126104d7575138610634565b503d610648565b6040513d8a823e3d90fd5b50346102e557806003193601126102e5576006546040516001600160a01b039091168152602090f35b50346102e557806003193601126102e5576020601d54604051908152f35b50346102e557806003193601126102e5576009546040516001600160a01b039091168152602090f35b50346102e55760403660031901126102e5576106fd611ea8565b6040610707611ebe565b9260018060a01b03809316815260026020522091166000526020526020604060002054604051908152f35b50346102e557806003193601126102e557600b546040516001600160a01b039091168152602090f35b50346102e55761076a36611ef2565b9183919395949542116108b75760018060a01b039283881694856000526004602052604060002092835460001981146108a15761084d95610845956001830190556040519060208201927f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e2668452600060408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e0815261080981612023565b519020610814612817565b9060405190602082019261190160f01b8452602283015260428201526042815261083d8161203f565b519020612ade565b9190916129df565b160361085c576102e292612bb1565b60405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152606490fd5b634e487b7160e01b600052601160045260246000fd5b60405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b50346102e557806003193601126102e5576008546040516001600160a01b039091168152602090f35b50346102e5578061093536611f41565b60038492939452600760205261095260ff60408420541615612c53565b61095a6123ea565b50506109646130f4565b6001600160a01b03838116939061097d30861415612c08565b6109878387612c90565b82818716958686526018602052604086206109a3838254612147565b90556109b182601554612147565b601555604051967f8ad4d3ff00da092c7ad9a573ea4f5f6a3dffc6712dc06d3f78f49b862297c4028780a46009541690600c5492823b15610aa157630208d92960e11b86523060048701526001600160a01b03919091166024860152604485019290925260648401919091528290608490829084905af18015610a9657610a81575b50601154610a4091612d6e565b15610a485780f35b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881a5b9cdbdb1d995b9d607a1b6044820152606490fd5b91610a8f610a409293611fdf565b9190610a33565b6040513d85823e3d90fd5b8480fd5b50346102e557806003193601126102e5576020610ac0612e70565b604051908152f35b50346102e557806003193601126102e5576020602954604051908152f35b50346102e557806003193601126102e5576020601e54604051908152f35b50346102e557806003193601126102e557602060ff602654166040519015158152f35b50346102e557806003193601126102e55760406025548151906001600160401b03908181168352831c166020820152f35b50346102e557806003193601126102e5576020601a54604051908152f35b50346102e55760403660031901126102e557610b90611ea8565b60243580928115801590610c47575b610bd7575b50506040519182526001600160a01b03169033906000805160206131ee83398151915290602090a3602060405160018152f35b33815260016020526040812054610bf083821015612941565b6001600160a01b0384169033829003610c0b575b5050610ba4565b604093610c2291610c1d841515612986565b612147565b338352600160205283832055815220610c3c838254612154565b905581388080610c04565b50336001600160a01b03841614610b9f565b50346102e55760403660031901126102e5576060610c81610c78611ea8565b60243590612293565b9060405192835260208301526040820152f35b50346102e55760403660031901126102e5576020610ac0610cb3611ea8565b602435906126e5565b50346102e557806003193601126102e55760208054604051908152f35b50346102e55760403660031901126102e5576004356001600160401b038082116105705736602383011215610570578160040135908111610efa578260405192610d2d6020601f19601f860116018561205a565b82845260208401923660248284010111610570578060246020930185378401015260243561ffff81168103610ef657610100918284805181010312610aa157610d75906123dd565b610d81604085016129cb565b91610d8e606086016129cb565b9460808101519460a08201519260c08301519160ff83168303610ef25760e0840151930151938042116108b7578515610ecb577f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e266915b6001600160a01b0388168b52600460205260408b20805491906000198314610eb7579161ffff610e749896949261084598969460018401905560405194602086015216604084015260018060a01b038a16606084015260018060a01b038c1660808401528a60a084015260c083015260e082015260e08152610e6581612023565b60208151910120610814612817565b6001600160a01b0383811691160361085c5715610ea1576102e2926001600160a01b039081169116612bb1565b6102e2926001600160a01b039081169116612b63565b634e487b7160e01b8d52601160045260248dfd5b7f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d691610de4565b8980fd5b8380fd5b634e487b7160e01b83526041600452602483fd5b50346102e557806003193601126102e5576005546040516001600160a01b039091168152602090f35b50346102e557806003193601126102e5576020601b54604051908152f35b50346102e55760203660031901126102e5576020906040906001600160a01b03610f7d611ea8565b168152602483522054604051908152f35b50346102e557806003193601126102e557601454604080516001600160801b038316815260809290921c602083015290f35b50346102e55760403660031901126102e557610fe7610fdd611ea8565b6024359033612b63565b602060405160018152f35b50346102e55760203660031901126102e5576020906040906001600160a01b0361101a611ea8565b168152600483522054604051908152f35b50346102e557806003193601126102e557600f546040516001600160a01b039091168152602090f35b50346102e557806003193601126102e557604051601054818361107683611fa5565b80835260019380851690811561114657506001146110e9575b5061109c9250038261205a565b60405180926020908183528351918281850152815b8381106110d257505060408094508284010152601f80199101168101030190f35b8086018201518782016040015286945081016110b1565b601086527f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae67293602092508691905b81831061112e57505061109c93508201013861108f565b85548784018501529485019486945091830191611117565b905061109c94506020925060ff191682840152151560051b8201013861108f565b50346102e55760203660031901126102e5576004359060098210156102e557602060ff61119384611f76565b54166040519015158152f35b50346102e55760203660031901126102e5576020906040906001600160a01b036111c7611ea8565b168152600183522054604051908152f35b50346102e557806003193601126102e557600a546040516001600160a01b039091168152602090f35b50346102e557806003193601126102e5576020602754604051908152f35b50346102e557806003193601126102e5576020601c54604051908152f35b50346102e557806003193601126102e5576020602154604051908152f35b50346102e557806003193601126102e5576006546001600160a01b0390818116338190036112c557806005549384167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08680a36001600160a01b0319928316176005551660065580f35b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b50346102e55760203660031901126102e5576020906040906001600160a01b03611331611ea8565b168152601783522054604051908152f35b50346102e557806003193601126102e5576020601554604051908152f35b50346102e557806003193601126102e5576020600e54604051908152f35b50346102e557806003193601126102e5576020601654604051908152f35b50346102e55760603660031901126102e5576020610ac060443560243560043561217a565b50346102e557806003193601126102e5576020601154604051908152f35b50346102e557806003193601126102e557600d546040516001600160a01b039091168152602090f35b50346102e557806003193601126102e5576020601254604051908152f35b50346102e557806003193601126102e5576020610ac0612817565b50346102e557806003193601126102e5576020601954604051908152f35b50346102e557806003193601126102e5576014546040516001600160801b039091168152602090f35b50346102e557806003193601126102e5576020601354604051908152f35b50346102e5576114b536611f41565b9192826114f1575b506040519182526001600160a01b039081169216906000805160206131ee83398151915290602090a3602060405160018152f35b6001600160a01b0384811680835260016020908152604084205492869061151a82861015612941565b86169384840361152f575b50505050506114bd565b838652600283526040808720338852845286205460018101611599575b50926001602096936115778794604097610c1d6000805160206131ee8339815191529c9a1515612986565b928552528383205581522061158d858254612154565b90559138808581611525565b909181106115ed57926001602096936115778a6000805160206131ee8339815191529a98956115ca8260409a612147565b86895260028552898920338a52855289892055949750949799505093965061154c565b60405162461bcd60e51b815260048101849052601860248201527745524332303a20616c6c6f77616e636520746f6f206c6f7760401b6044820152606490fd5b50346102e557806003193601126102e5576020602a54604051908152f35b50346102e55761165a36611ef2565b908395949542116108b7576001600160a01b03878116808a52600460205260408a208054919692959290600019831461170b57826116fc9694928d92600161084598960190556040519160208301937f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d6855260408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e0815261080981612023565b160361085c576102e292612b63565b634e487b7160e01b8c52601160045260248cfd5b50346102e55760203660031901126102e5576020906040906001600160a01b03611747611ea8565b168152601883522054604051908152f35b50346102e557806003193601126102e557602090604051908152f35b50346102e55760403660031901126102e557600435600981101561188c5761179a611ed4565b6008549091906001600160a01b031633036118505760ff6117ba82611f76565b5416151591151591821461181657808260ff6117d861180694611f76565b54161515827feeec81de25875ce1725479bb76f720a8defdb43dea041919ae37bb4aae9847c08780a4611f76565b9060ff8019835416911617905580f35b60405162461bcd60e51b81526020600482015260126024820152714d61726b65743a2073616d6520737461746560701b6044820152606490fd5b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881d5b985d5d1a1bdc9a5e995960621b6044820152606490fd5b5080fd5b50346102e5576101803660031901126102e55760246001600160a01b03813581811690819003610ef657604435916001600160401b0390818411610561573660238501121561056157836004013591821161056157368583860101116105615760643591818316809303611d0d5761190d8260055416331461207b565b60043594620186a094611922868811156120c6565b6020968088547fc353b09af857951dccce61b43a5854fc45beceed36c50e5d4cc2e71858a8e0df8c80a3875580611ccf575b508682611b94575b50505081611b54575b505060843580611b3f575b5060a43580611b2a575b5060c43580611b16575b5060e43580611af5575b506101043580611ad4575b506101243580611aa3575b50610144359081611a33575b50506101643591826119c0578380f35b601e5483106119d5575050601f553880808380f35b9060326084926040519262461bcd60e51b845260048401528201527f4d61726b65743a206c69717569646174696f6e436f6c6c61746572616c697a616044820152711d1a5bdb94985d19481d1bdbc81cdb585b1b60721b6064820152fd5b611a3f908211156120c6565b601f548111611a5257601e5538806119b0565b5060256084926040519262461bcd60e51b845260048401528201527f4d61726b65743a20636f6c6c61746572616c697a6174696f6e5261746520746f6044820152646f2062696760d81b6064820152fd5b806016547fae6e0ab3b95f0a53ff9660a390ccedcbbf1f2355dce974a9841af106fddcfaba8780a3601655386119a4565b611adf8282106120c6565b611aec601b5482116120c6565b601c5538611999565b611b008282106120c6565b611b0d601c5482106120c6565b601b553861198e565b611b218282106120c6565b601d5538611984565b611b36828211156120c6565b601a553861197a565b611b4b828211156120c6565b60195538611970565b816008549182167f5a62d22209e370e38eea92cfddcd228e656e6ec139243392a760a7769f5877fd8880a36001600160a01b031916176008553880611965565b8291611ba1601054611fa5565b601f8111611c7e575b508990601f8411600114611c0f578a93611c02575b5050508160011b916000199060031b1c1916176010555b7fa6f004921c944d4b8bf6e38462b00f36a58d62495d56b51f571ab78f732c98158680a138808661195c565b0101359050863880611bbf565b60108b52888b20601f198516955092509089908b5b8a878210611c635750508460019610611c47575b50505050811b01601055611bd6565b60001960f88660031b161c199201013516905538808881611c38565b8483019093013585556001909401938b929182019101611c24565b9150915060108952868920601f840160051c8101888510611cc8575b91849391601f8b94920160051c01905b818110611cb75750611baa565b8b81558594508a9350600101611caa565b5080611c9a565b600f80546001600160a01b0319169190911790557f0b2d6eb667d0522c3eb86e4288afecae6c11591ffd1345d4d12407e0598bca9b8880a138611954565b8680fd5b50346102e55760403660031901126102e557610fe7611d2e611ea8565b6024359033612bb1565b50346102e55760603660031901126102e557611d52611ea8565b611d5a611ed4565b611d62611ee3565b9060018060a01b03928391611d7c8360055416331461207b565b15611e20571690811590811591611e18575b5015611ddb57806005549283167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08580a36001600160a01b03199182161760055560068054909116905580f35b60405162461bcd60e51b81526020600482015260156024820152744f776e61626c653a207a65726f206164647265737360581b6044820152606490fd5b905038611d8e565b9150501660018060a01b0319600654161760065580f35b50346102e557806003193601126102e5576040611e526123ea565b825191151582526020820152f35b90503461188c57604036600319011261188c576040602092611e80611ea8565b611e88611ebe565b6001600160a01b0391821683526003865283832091168252845220548152f35b600435906001600160a01b03821682036104d757565b602435906001600160a01b03821682036104d757565b6024359081151582036104d757565b6044359081151582036104d757565b60e09060031901126104d7576001600160a01b039060043582811681036104d7579160243590811681036104d75790604435906064359060843560ff811681036104d7579060a4359060c43590565b60609060031901126104d7576001600160a01b039060043582811681036104d7579160243590811681036104d7579060443590565b6009811015611f8f576000526007602052604060002090565b634e487b7160e01b600052602160045260246000fd5b90600182811c92168015611fd5575b6020831014611fbf57565b634e487b7160e01b600052602260045260246000fd5b91607f1691611fb4565b6001600160401b038111611ff257604052565b634e487b7160e01b600052604160045260246000fd5b604081019081106001600160401b03821117611ff257604052565b61010081019081106001600160401b03821117611ff257604052565b608081019081106001600160401b03821117611ff257604052565b90601f801991011681019081106001600160401b03821117611ff257604052565b1561208257565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b156120cd57565b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881b9bdd081d985b1a59607a1b6044820152606490fd5b818102929181159184041417156108a157565b8115612123570490565b634e487b7160e01b600052601260045260246000fd5b604d81116108a157600a0a90565b919082039182116108a157565b919082018092116108a157565b818103929160001380158285131691841216176108a157565b6014549192916121c3916121b4916121aa916121a0906001600160801b03831690612106565b9060801c90612119565b93601f5490612106565b6121bd83612139565b90612119565b80831061228b576121d76122139184612147565b9161220e6122086121ff601e546121f96121f086612139565b60215490612154565b90612106565b6121bd84612139565b91612139565b612161565b6509184e72a000908181029181830514901517156108a157670de0b6b3a7640000918281029281840514901517156108a157801561212357600160ff1b918083146000198314166108a157059060008212156122845781146108a157600003905b80821161227f575090565b905090565b5090612274565b505050600090565b6001600160a01b039081166000818152601760209081526040822054929594939192909181156123d0576122c5613060565b906122d18615156125e2565b6009541683600c54898752601882526064604088205491604051948593849263442c159960e01b8452600484015260248301528960448301525afa9081156123c5578591612396575b509285949261237660189361235161238a9961234c61234360409a620186a06022540490612106565b601e5490612106565b612119565b815190936001600160801b0391869161236c91841690612106565b9201511690612119565b81811061238e57035b97835252205461262e565b9091565b50508261237f565b90508381813d83116123be575b6123ad818361205a565b81010312610aa1575161238a61231a565b503d6123a3565b6040513d87823e3d90fd5b5050509192505080918190565b519081151582036104d757565b60018060a01b03600f54169060409081519263d6d7d52560e01b84528284602092836004830152600060105461241f81611fa5565b908160248601526001908582821691826000146125be57505060011461257a575b5050600083809203925af1801561256f576000948591612534575b509284156124d657831561249c57505081601155817f9f9192b5edb17356c524e08d9e025c8e2f6307e6ea52fb7968faa3081f51c3c8600080a25b42601355565b60649250519062461bcd60e51b8252600482015260146024820152734d61726b65743a20696e76616c6964207261746560601b6044820152fd5b909192506124e960135460125490612154565b42116124fa57505060115490612496565b60649250519062461bcd60e51b82526004820152601460248201527313585c9ad95d0e881c985d19481d1bdbc81bdb1960621b6044820152fd5b9490508385813d8311612568575b61254c818361205a565b810103126102e557508061255f856123dd565b9401513861245b565b503d612542565b83513d6000823e3d90fd5b915060106000528560002091866000935b8385106125a357505050508201604401600083612440565b80548c8601604401528a97508b96509301928790820161258b565b8195506000949193506044925060ff191682840152151560051b8201019250612440565b156125e957565b60405162461bcd60e51b815260206004820152601e60248201527f4d61726b65743a2065786368616e676552617465206e6f742076616c696400006044820152606490fd5b6126398215156125e2565b602060018060a01b0360095416916064600c54604051948593849263442c159960e01b845260048401526024830152600060448301525afa9081156126d9576000916126a6575b509061234c6126929260225490612106565b620186a06126a2601e5483612106565b0491565b906020823d82116126d1575b816126bf6020938361205a565b810103126102e557505161234c612680565b3d91506126b2565b6040513d6000823e3d90fd5b6001600160a01b031660008181526018602052604081205490926127089161262e565b91835260176020526040832054801561281157811561281157818110612811578281101561280757601454612751918391610c1d916121a0906001600160801b03831690612106565b90620186a092838302928084048514901517156127f35761277692916121bd91612147565b91601b5491601c54936127898585612161565b80820291848212600160ff1b8214166127f35781830514901517156127df57058184820194851291129080158216911516176127cb575080821261227f575090565b634e487b7160e01b81526011600452602490fd5b634e487b7160e01b83526011600452602483fd5b634e487b7160e01b85526011600452602485fd5b50505050601b5490565b50505090565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03161480612918575b15612872577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f000000000000000000000000000000000000000000000000000000000000000082527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a0815260c081018181106001600160401b03821117611ff25760405251902090565b507f00000000000000000000000000000000000000000000000000000000000000004614612849565b1561294857565b60405162461bcd60e51b815260206004820152601660248201527545524332303a2062616c616e636520746f6f206c6f7760501b6044820152606490fd5b1561298d57565b60405162461bcd60e51b815260206004820152601660248201527545524332303a206e6f207a65726f206164647265737360501b6044820152606490fd5b51906001600160a01b03821682036104d757565b6005811015611f8f57806129f05750565b60018103612a385760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b6044820152606490fd5b60028103612a855760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606490fd5b600314612a8e57565b60405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608490fd5b9291906fa2a8918ca85bafe22016d0b997e4df60600160ff1b038311612b575791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa15612b4a5781516001600160a01b03811615612b44579190565b50600190565b50604051903d90823e3d90fd5b50505050600090600390565b7fe50de2333c10a9502fcb1d8ae13a51bbf423153dfc63c2b8997665b32154afc360018060a01b038092169160009083825260036020526040822094169384825260205284604082205580a4565b909160207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259160018060a01b03809416938460005260028352604060002095169485600052825280604060002055604051908152a3565b15612c0f57565b606460405162461bcd60e51b815260206004820152602060248201527f4d61726b65743a2063616e6e6f742065786563757465206f6e20697473656c666044820152fd5b15612c5a57565b60405162461bcd60e51b815260206004820152600e60248201526d13585c9ad95d0e881c185d5cd95960921b6044820152606490fd5b6001600160a01b0316338103612ca4575050565b6000818152602090600382526040918282203383528152848383205410612d0e5783825260038152828220338352815282822054600101612ce7575b5050505050565b612d0293825260038152828220903383525220918254612147565b90553880808080612ce0565b60649083519062461bcd60e51b82526004820152601460248201527313585c9ad95d0e881b9bdd08185c1c1c9bdd995960621b6044820152fd5b60405190612d5582612008565b6014546001600160801b038116835260801c6020830152565b919060018060a01b03806000941684526020601781526040852054908115612e66576018815260408620548015612ce05781612da8612d48565b9460095416916064600c54604051948593849263442c159960e01b8452600484015260248301528b60448301525afa968715612e5a578097612e24575b505061236c612e04612343612e1f969798620186a06022540490612106565b95612e1a60018060801b03948587511690612106565b612106565b111590565b9096508187813d8311612e53575b612e3c818361205a565b810103126102e5575094519461236c612e04612de5565b503d612e32565b604051903d90823e3d90fd5b5060019450505050565b60ff60265416612fe1576014546001600160801b0316908115612fda57600a54604051631848f2bf60e31b8152602093916001600160a01b03919085908290600490829086165afa80156126d9578591600091612fa1575b50600460405180948193631a674cc560e11b8352165afa9384156126d957600094612f72575b5050612f0a9192670de0b6b3a764000092839160295490612106565b049081811015612f6957612f21602a548092612147565b838102908082048514901517156108a1576121bd612f4292612f5d94612147565b60275492612f5760285492612e1a8487612147565b04612154565b9080821161227f575090565b50505060275490565b81813d8311612f9a575b612f86818361205a565b81010312610ef657519250612f0a38612eee565b503d612f7c565b909181813d8311612fd3575b612fb7818361205a565b8101031261188c57519082821682036102e55750849038612ec8565b503d612fad565b6028549150565b600a5460405163e6abad4960e01b815290602090829060049082906001600160a01b03165afa9081156126d957600091613019575090565b906020823d821161303f575b816130326020938361205a565b810103126102e557505190565b3d9150613025565b6001600160801b0391821690821601919082116108a157565b6000602060405161307081612008565b82815201526001600160401b039061308f8260255460401c1642612147565b9182156130e6576130e1612e1a91670de0b6b3a76400006130d66130b1612d48565b9660018060801b03958694858a5116906301e133806130ce612e70565b041690612106565b041682855116613047565b168252565b5090506130f1612d48565b90565b60405161310081612008565b6025546001600160401b03908181168352818160401c16613128602085019180835242612147565b928315612ce057602094816301e13380613140612e70565b041681528142168352613151612d48565b670de0b6b3a764000061317660018060801b0397612e1a898551168787511690612106565b049561318781881682845116613047565b1680825296015160801b6001600160801b031990811690961760145551915192909416931692831760409190911b67ffffffffffffffff60401b16176025557f7484db546dcd57af0104c73c8a6968dfbaf5767f047cee0dadd0499ad7df81a0600080a356feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa264697066735822122020741475291d268abc8d456b5c33bfd779dc6c4e439660aa6aac9318f3937fe164736f6c63430008120033", - "deployedBytecode": "0x608080604052600436101561001357600080fd5b600090813560e01c908162a02a2014611e605750806302ce728f14611e37578063078dfbe714611d38578063095ea7b314611d115780630996efb7146118905780630c4e84f01461177457806318160ddd146117585780631c9e379b1461171f5780631da8bf101461164b5780631fb8f81a1461162d57806323b872dd146114a6578063331960ff1461148857806334ce998a1461145f57806334d441d0146114415780633644e5151461142657806337b6b7b91461140857806338d52e0f146113df5780633ba0b9a9146113c15780633f741adb1461139c57806340626d8b1461137e57806344de240a14611360578063473e3ce71461134257806348e4163e146113095780634e71e0c81461125b578063529898f21461123d578063579354621461121f5780636b19ad16146112015780636c3d8b8f146111d857806370a082311461119f578063727785471461116757806374645ff3146110545780637dc0d1d01461102b5780637ecebe0014610ff25780637fa0b84e14610fc05780638285ef4014610f8e57806387b2793714610f555780638c5d0ed314610f375780638da5cb5b14610f0e578063910dd7c814610cd9578063959916dc14610cbc57806399a9702814610c945780639e15e89f14610c59578063a9059cbb14610b76578063b0e21e8a14610b58578063b27c0e7414610b27578063b7113f1914610b04578063bb4cfe3b14610ae6578063bde39c5d14610ac8578063c1ad5c8d14610aa5578063cce19f8114610925578063ce8849ed146108fc578063d505accf1461075b578063d8dfeb4514610732578063dd62ed3e146106e3578063de406577146106ba578063e0996cb61461069c578063e30c397814610673578063e9a4925214610342578063ea64dd5614610324578063eec0f42e14610306578063f791395d146102e85763f8ba4cff146102ca57600080fd5b346102e557806003193601126102e5576102e26130f4565b80f35b80fd5b50346102e557806003193601126102e5576020602854604051908152f35b50346102e557806003193601126102e5576020600c54604051908152f35b50346102e557806003193601126102e5576020601f54604051908152f35b50346102e55760a03660031901126102e55761035c611ea8565b610364611ebe565b9061036d611ee3565b608435926001600160a01b0390811692909160643561038e30861415612c08565b6002600052602090600782526103ac60ff6040600020541615612c53565b86156105f5575b6103bd8785612c90565b8615610574575b5084875260188152604087206103db878254612154565b90556015546103ea8782612154565b601555600c54908884156104ee575082866009541692604460405180958193627eeac760e11b835230600484015260248301525afa80156104e35789906104af575b6104369250612147565b861161047757505b15610472575080600954165b167f9ed03113de523cebfe5e49d5f8e12894b1c0d42ce805990461726444c90eab878480a480f35b61044a565b6064906040519062461bcd60e51b825260048201526011602482015270084d2ce84c2dcce7440e8dede40daeac6d607b1b6044820152fd5b508282813d83116104dc575b6104c5818361205a565b810103126104d757610436915161042c565b600080fd5b503d6104bb565b6040513d8b823e3d90fd5b9250508460095416803b1561057057604051630208d92960e11b81526001600160a01b038616600482015230602482015260448101929092526064820188905282908290608490829084905af180156105655761054d575b505061043e565b61055690611fdf565b610561578538610546565b8580fd5b6040513d84823e3d90fd5b8280fd5b908096508460095416916064600c546040519485938492638eb22cdd60e01b8452600484015260248301528b60448301525afa9081156105ea5787916105bd575b5094386103c4565b90508581813d83116105e3575b6105d4818361205a565b810103126104d75751386105b5565b503d6105ca565b6040513d89823e3d90fd5b9550836009541681600c54606460405180948193638eb22cdd60e01b835260048301528b60248301528c60448301525afa90811561066857889161063b575b50956103b3565b90508181813d8311610661575b610652818361205a565b810103126104d7575138610634565b503d610648565b6040513d8a823e3d90fd5b50346102e557806003193601126102e5576006546040516001600160a01b039091168152602090f35b50346102e557806003193601126102e5576020601d54604051908152f35b50346102e557806003193601126102e5576009546040516001600160a01b039091168152602090f35b50346102e55760403660031901126102e5576106fd611ea8565b6040610707611ebe565b9260018060a01b03809316815260026020522091166000526020526020604060002054604051908152f35b50346102e557806003193601126102e557600b546040516001600160a01b039091168152602090f35b50346102e55761076a36611ef2565b9183919395949542116108b75760018060a01b039283881694856000526004602052604060002092835460001981146108a15761084d95610845956001830190556040519060208201927f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e2668452600060408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e0815261080981612023565b519020610814612817565b9060405190602082019261190160f01b8452602283015260428201526042815261083d8161203f565b519020612ade565b9190916129df565b160361085c576102e292612bb1565b60405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152606490fd5b634e487b7160e01b600052601160045260246000fd5b60405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b50346102e557806003193601126102e5576008546040516001600160a01b039091168152602090f35b50346102e5578061093536611f41565b60038492939452600760205261095260ff60408420541615612c53565b61095a6123ea565b50506109646130f4565b6001600160a01b03838116939061097d30861415612c08565b6109878387612c90565b82818716958686526018602052604086206109a3838254612147565b90556109b182601554612147565b601555604051967f8ad4d3ff00da092c7ad9a573ea4f5f6a3dffc6712dc06d3f78f49b862297c4028780a46009541690600c5492823b15610aa157630208d92960e11b86523060048701526001600160a01b03919091166024860152604485019290925260648401919091528290608490829084905af18015610a9657610a81575b50601154610a4091612d6e565b15610a485780f35b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881a5b9cdbdb1d995b9d607a1b6044820152606490fd5b91610a8f610a409293611fdf565b9190610a33565b6040513d85823e3d90fd5b8480fd5b50346102e557806003193601126102e5576020610ac0612e70565b604051908152f35b50346102e557806003193601126102e5576020602954604051908152f35b50346102e557806003193601126102e5576020601e54604051908152f35b50346102e557806003193601126102e557602060ff602654166040519015158152f35b50346102e557806003193601126102e55760406025548151906001600160401b03908181168352831c166020820152f35b50346102e557806003193601126102e5576020601a54604051908152f35b50346102e55760403660031901126102e557610b90611ea8565b60243580928115801590610c47575b610bd7575b50506040519182526001600160a01b03169033906000805160206131ee83398151915290602090a3602060405160018152f35b33815260016020526040812054610bf083821015612941565b6001600160a01b0384169033829003610c0b575b5050610ba4565b604093610c2291610c1d841515612986565b612147565b338352600160205283832055815220610c3c838254612154565b905581388080610c04565b50336001600160a01b03841614610b9f565b50346102e55760403660031901126102e5576060610c81610c78611ea8565b60243590612293565b9060405192835260208301526040820152f35b50346102e55760403660031901126102e5576020610ac0610cb3611ea8565b602435906126e5565b50346102e557806003193601126102e55760208054604051908152f35b50346102e55760403660031901126102e5576004356001600160401b038082116105705736602383011215610570578160040135908111610efa578260405192610d2d6020601f19601f860116018561205a565b82845260208401923660248284010111610570578060246020930185378401015260243561ffff81168103610ef657610100918284805181010312610aa157610d75906123dd565b610d81604085016129cb565b91610d8e606086016129cb565b9460808101519460a08201519260c08301519160ff83168303610ef25760e0840151930151938042116108b7578515610ecb577f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e266915b6001600160a01b0388168b52600460205260408b20805491906000198314610eb7579161ffff610e749896949261084598969460018401905560405194602086015216604084015260018060a01b038a16606084015260018060a01b038c1660808401528a60a084015260c083015260e082015260e08152610e6581612023565b60208151910120610814612817565b6001600160a01b0383811691160361085c5715610ea1576102e2926001600160a01b039081169116612bb1565b6102e2926001600160a01b039081169116612b63565b634e487b7160e01b8d52601160045260248dfd5b7f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d691610de4565b8980fd5b8380fd5b634e487b7160e01b83526041600452602483fd5b50346102e557806003193601126102e5576005546040516001600160a01b039091168152602090f35b50346102e557806003193601126102e5576020601b54604051908152f35b50346102e55760203660031901126102e5576020906040906001600160a01b03610f7d611ea8565b168152602483522054604051908152f35b50346102e557806003193601126102e557601454604080516001600160801b038316815260809290921c602083015290f35b50346102e55760403660031901126102e557610fe7610fdd611ea8565b6024359033612b63565b602060405160018152f35b50346102e55760203660031901126102e5576020906040906001600160a01b0361101a611ea8565b168152600483522054604051908152f35b50346102e557806003193601126102e557600f546040516001600160a01b039091168152602090f35b50346102e557806003193601126102e557604051601054818361107683611fa5565b80835260019380851690811561114657506001146110e9575b5061109c9250038261205a565b60405180926020908183528351918281850152815b8381106110d257505060408094508284010152601f80199101168101030190f35b8086018201518782016040015286945081016110b1565b601086527f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae67293602092508691905b81831061112e57505061109c93508201013861108f565b85548784018501529485019486945091830191611117565b905061109c94506020925060ff191682840152151560051b8201013861108f565b50346102e55760203660031901126102e5576004359060098210156102e557602060ff61119384611f76565b54166040519015158152f35b50346102e55760203660031901126102e5576020906040906001600160a01b036111c7611ea8565b168152600183522054604051908152f35b50346102e557806003193601126102e557600a546040516001600160a01b039091168152602090f35b50346102e557806003193601126102e5576020602754604051908152f35b50346102e557806003193601126102e5576020601c54604051908152f35b50346102e557806003193601126102e5576020602154604051908152f35b50346102e557806003193601126102e5576006546001600160a01b0390818116338190036112c557806005549384167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08680a36001600160a01b0319928316176005551660065580f35b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b50346102e55760203660031901126102e5576020906040906001600160a01b03611331611ea8565b168152601783522054604051908152f35b50346102e557806003193601126102e5576020601554604051908152f35b50346102e557806003193601126102e5576020600e54604051908152f35b50346102e557806003193601126102e5576020601654604051908152f35b50346102e55760603660031901126102e5576020610ac060443560243560043561217a565b50346102e557806003193601126102e5576020601154604051908152f35b50346102e557806003193601126102e557600d546040516001600160a01b039091168152602090f35b50346102e557806003193601126102e5576020601254604051908152f35b50346102e557806003193601126102e5576020610ac0612817565b50346102e557806003193601126102e5576020601954604051908152f35b50346102e557806003193601126102e5576014546040516001600160801b039091168152602090f35b50346102e557806003193601126102e5576020601354604051908152f35b50346102e5576114b536611f41565b9192826114f1575b506040519182526001600160a01b039081169216906000805160206131ee83398151915290602090a3602060405160018152f35b6001600160a01b0384811680835260016020908152604084205492869061151a82861015612941565b86169384840361152f575b50505050506114bd565b838652600283526040808720338852845286205460018101611599575b50926001602096936115778794604097610c1d6000805160206131ee8339815191529c9a1515612986565b928552528383205581522061158d858254612154565b90559138808581611525565b909181106115ed57926001602096936115778a6000805160206131ee8339815191529a98956115ca8260409a612147565b86895260028552898920338a52855289892055949750949799505093965061154c565b60405162461bcd60e51b815260048101849052601860248201527745524332303a20616c6c6f77616e636520746f6f206c6f7760401b6044820152606490fd5b50346102e557806003193601126102e5576020602a54604051908152f35b50346102e55761165a36611ef2565b908395949542116108b7576001600160a01b03878116808a52600460205260408a208054919692959290600019831461170b57826116fc9694928d92600161084598960190556040519160208301937f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d6855260408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e0815261080981612023565b160361085c576102e292612b63565b634e487b7160e01b8c52601160045260248cfd5b50346102e55760203660031901126102e5576020906040906001600160a01b03611747611ea8565b168152601883522054604051908152f35b50346102e557806003193601126102e557602090604051908152f35b50346102e55760403660031901126102e557600435600981101561188c5761179a611ed4565b6008549091906001600160a01b031633036118505760ff6117ba82611f76565b5416151591151591821461181657808260ff6117d861180694611f76565b54161515827feeec81de25875ce1725479bb76f720a8defdb43dea041919ae37bb4aae9847c08780a4611f76565b9060ff8019835416911617905580f35b60405162461bcd60e51b81526020600482015260126024820152714d61726b65743a2073616d6520737461746560701b6044820152606490fd5b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881d5b985d5d1a1bdc9a5e995960621b6044820152606490fd5b5080fd5b50346102e5576101803660031901126102e55760246001600160a01b03813581811690819003610ef657604435916001600160401b0390818411610561573660238501121561056157836004013591821161056157368583860101116105615760643591818316809303611d0d5761190d8260055416331461207b565b60043594620186a094611922868811156120c6565b6020968088547fc353b09af857951dccce61b43a5854fc45beceed36c50e5d4cc2e71858a8e0df8c80a3875580611ccf575b508682611b94575b50505081611b54575b505060843580611b3f575b5060a43580611b2a575b5060c43580611b16575b5060e43580611af5575b506101043580611ad4575b506101243580611aa3575b50610144359081611a33575b50506101643591826119c0578380f35b601e5483106119d5575050601f553880808380f35b9060326084926040519262461bcd60e51b845260048401528201527f4d61726b65743a206c69717569646174696f6e436f6c6c61746572616c697a616044820152711d1a5bdb94985d19481d1bdbc81cdb585b1b60721b6064820152fd5b611a3f908211156120c6565b601f548111611a5257601e5538806119b0565b5060256084926040519262461bcd60e51b845260048401528201527f4d61726b65743a20636f6c6c61746572616c697a6174696f6e5261746520746f6044820152646f2062696760d81b6064820152fd5b806016547fae6e0ab3b95f0a53ff9660a390ccedcbbf1f2355dce974a9841af106fddcfaba8780a3601655386119a4565b611adf8282106120c6565b611aec601b5482116120c6565b601c5538611999565b611b008282106120c6565b611b0d601c5482106120c6565b601b553861198e565b611b218282106120c6565b601d5538611984565b611b36828211156120c6565b601a553861197a565b611b4b828211156120c6565b60195538611970565b816008549182167f5a62d22209e370e38eea92cfddcd228e656e6ec139243392a760a7769f5877fd8880a36001600160a01b031916176008553880611965565b8291611ba1601054611fa5565b601f8111611c7e575b508990601f8411600114611c0f578a93611c02575b5050508160011b916000199060031b1c1916176010555b7fa6f004921c944d4b8bf6e38462b00f36a58d62495d56b51f571ab78f732c98158680a138808661195c565b0101359050863880611bbf565b60108b52888b20601f198516955092509089908b5b8a878210611c635750508460019610611c47575b50505050811b01601055611bd6565b60001960f88660031b161c199201013516905538808881611c38565b8483019093013585556001909401938b929182019101611c24565b9150915060108952868920601f840160051c8101888510611cc8575b91849391601f8b94920160051c01905b818110611cb75750611baa565b8b81558594508a9350600101611caa565b5080611c9a565b600f80546001600160a01b0319169190911790557f0b2d6eb667d0522c3eb86e4288afecae6c11591ffd1345d4d12407e0598bca9b8880a138611954565b8680fd5b50346102e55760403660031901126102e557610fe7611d2e611ea8565b6024359033612bb1565b50346102e55760603660031901126102e557611d52611ea8565b611d5a611ed4565b611d62611ee3565b9060018060a01b03928391611d7c8360055416331461207b565b15611e20571690811590811591611e18575b5015611ddb57806005549283167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08580a36001600160a01b03199182161760055560068054909116905580f35b60405162461bcd60e51b81526020600482015260156024820152744f776e61626c653a207a65726f206164647265737360581b6044820152606490fd5b905038611d8e565b9150501660018060a01b0319600654161760065580f35b50346102e557806003193601126102e5576040611e526123ea565b825191151582526020820152f35b90503461188c57604036600319011261188c576040602092611e80611ea8565b611e88611ebe565b6001600160a01b0391821683526003865283832091168252845220548152f35b600435906001600160a01b03821682036104d757565b602435906001600160a01b03821682036104d757565b6024359081151582036104d757565b6044359081151582036104d757565b60e09060031901126104d7576001600160a01b039060043582811681036104d7579160243590811681036104d75790604435906064359060843560ff811681036104d7579060a4359060c43590565b60609060031901126104d7576001600160a01b039060043582811681036104d7579160243590811681036104d7579060443590565b6009811015611f8f576000526007602052604060002090565b634e487b7160e01b600052602160045260246000fd5b90600182811c92168015611fd5575b6020831014611fbf57565b634e487b7160e01b600052602260045260246000fd5b91607f1691611fb4565b6001600160401b038111611ff257604052565b634e487b7160e01b600052604160045260246000fd5b604081019081106001600160401b03821117611ff257604052565b61010081019081106001600160401b03821117611ff257604052565b608081019081106001600160401b03821117611ff257604052565b90601f801991011681019081106001600160401b03821117611ff257604052565b1561208257565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b156120cd57565b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881b9bdd081d985b1a59607a1b6044820152606490fd5b818102929181159184041417156108a157565b8115612123570490565b634e487b7160e01b600052601260045260246000fd5b604d81116108a157600a0a90565b919082039182116108a157565b919082018092116108a157565b818103929160001380158285131691841216176108a157565b6014549192916121c3916121b4916121aa916121a0906001600160801b03831690612106565b9060801c90612119565b93601f5490612106565b6121bd83612139565b90612119565b80831061228b576121d76122139184612147565b9161220e6122086121ff601e546121f96121f086612139565b60215490612154565b90612106565b6121bd84612139565b91612139565b612161565b6509184e72a000908181029181830514901517156108a157670de0b6b3a7640000918281029281840514901517156108a157801561212357600160ff1b918083146000198314166108a157059060008212156122845781146108a157600003905b80821161227f575090565b905090565b5090612274565b505050600090565b6001600160a01b039081166000818152601760209081526040822054929594939192909181156123d0576122c5613060565b906122d18615156125e2565b6009541683600c54898752601882526064604088205491604051948593849263442c159960e01b8452600484015260248301528960448301525afa9081156123c5578591612396575b509285949261237660189361235161238a9961234c61234360409a620186a06022540490612106565b601e5490612106565b612119565b815190936001600160801b0391869161236c91841690612106565b9201511690612119565b81811061238e57035b97835252205461262e565b9091565b50508261237f565b90508381813d83116123be575b6123ad818361205a565b81010312610aa1575161238a61231a565b503d6123a3565b6040513d87823e3d90fd5b5050509192505080918190565b519081151582036104d757565b60018060a01b03600f54169060409081519263d6d7d52560e01b84528284602092836004830152600060105461241f81611fa5565b908160248601526001908582821691826000146125be57505060011461257a575b5050600083809203925af1801561256f576000948591612534575b509284156124d657831561249c57505081601155817f9f9192b5edb17356c524e08d9e025c8e2f6307e6ea52fb7968faa3081f51c3c8600080a25b42601355565b60649250519062461bcd60e51b8252600482015260146024820152734d61726b65743a20696e76616c6964207261746560601b6044820152fd5b909192506124e960135460125490612154565b42116124fa57505060115490612496565b60649250519062461bcd60e51b82526004820152601460248201527313585c9ad95d0e881c985d19481d1bdbc81bdb1960621b6044820152fd5b9490508385813d8311612568575b61254c818361205a565b810103126102e557508061255f856123dd565b9401513861245b565b503d612542565b83513d6000823e3d90fd5b915060106000528560002091866000935b8385106125a357505050508201604401600083612440565b80548c8601604401528a97508b96509301928790820161258b565b8195506000949193506044925060ff191682840152151560051b8201019250612440565b156125e957565b60405162461bcd60e51b815260206004820152601e60248201527f4d61726b65743a2065786368616e676552617465206e6f742076616c696400006044820152606490fd5b6126398215156125e2565b602060018060a01b0360095416916064600c54604051948593849263442c159960e01b845260048401526024830152600060448301525afa9081156126d9576000916126a6575b509061234c6126929260225490612106565b620186a06126a2601e5483612106565b0491565b906020823d82116126d1575b816126bf6020938361205a565b810103126102e557505161234c612680565b3d91506126b2565b6040513d6000823e3d90fd5b6001600160a01b031660008181526018602052604081205490926127089161262e565b91835260176020526040832054801561281157811561281157818110612811578281101561280757601454612751918391610c1d916121a0906001600160801b03831690612106565b90620186a092838302928084048514901517156127f35761277692916121bd91612147565b91601b5491601c54936127898585612161565b80820291848212600160ff1b8214166127f35781830514901517156127df57058184820194851291129080158216911516176127cb575080821261227f575090565b634e487b7160e01b81526011600452602490fd5b634e487b7160e01b83526011600452602483fd5b634e487b7160e01b85526011600452602485fd5b50505050601b5490565b50505090565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03161480612918575b15612872577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f000000000000000000000000000000000000000000000000000000000000000082527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a0815260c081018181106001600160401b03821117611ff25760405251902090565b507f00000000000000000000000000000000000000000000000000000000000000004614612849565b1561294857565b60405162461bcd60e51b815260206004820152601660248201527545524332303a2062616c616e636520746f6f206c6f7760501b6044820152606490fd5b1561298d57565b60405162461bcd60e51b815260206004820152601660248201527545524332303a206e6f207a65726f206164647265737360501b6044820152606490fd5b51906001600160a01b03821682036104d757565b6005811015611f8f57806129f05750565b60018103612a385760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b6044820152606490fd5b60028103612a855760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606490fd5b600314612a8e57565b60405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608490fd5b9291906fa2a8918ca85bafe22016d0b997e4df60600160ff1b038311612b575791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa15612b4a5781516001600160a01b03811615612b44579190565b50600190565b50604051903d90823e3d90fd5b50505050600090600390565b7fe50de2333c10a9502fcb1d8ae13a51bbf423153dfc63c2b8997665b32154afc360018060a01b038092169160009083825260036020526040822094169384825260205284604082205580a4565b909160207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259160018060a01b03809416938460005260028352604060002095169485600052825280604060002055604051908152a3565b15612c0f57565b606460405162461bcd60e51b815260206004820152602060248201527f4d61726b65743a2063616e6e6f742065786563757465206f6e20697473656c666044820152fd5b15612c5a57565b60405162461bcd60e51b815260206004820152600e60248201526d13585c9ad95d0e881c185d5cd95960921b6044820152606490fd5b6001600160a01b0316338103612ca4575050565b6000818152602090600382526040918282203383528152848383205410612d0e5783825260038152828220338352815282822054600101612ce7575b5050505050565b612d0293825260038152828220903383525220918254612147565b90553880808080612ce0565b60649083519062461bcd60e51b82526004820152601460248201527313585c9ad95d0e881b9bdd08185c1c1c9bdd995960621b6044820152fd5b60405190612d5582612008565b6014546001600160801b038116835260801c6020830152565b919060018060a01b03806000941684526020601781526040852054908115612e66576018815260408620548015612ce05781612da8612d48565b9460095416916064600c54604051948593849263442c159960e01b8452600484015260248301528b60448301525afa968715612e5a578097612e24575b505061236c612e04612343612e1f969798620186a06022540490612106565b95612e1a60018060801b03948587511690612106565b612106565b111590565b9096508187813d8311612e53575b612e3c818361205a565b810103126102e5575094519461236c612e04612de5565b503d612e32565b604051903d90823e3d90fd5b5060019450505050565b60ff60265416612fe1576014546001600160801b0316908115612fda57600a54604051631848f2bf60e31b8152602093916001600160a01b03919085908290600490829086165afa80156126d9578591600091612fa1575b50600460405180948193631a674cc560e11b8352165afa9384156126d957600094612f72575b5050612f0a9192670de0b6b3a764000092839160295490612106565b049081811015612f6957612f21602a548092612147565b838102908082048514901517156108a1576121bd612f4292612f5d94612147565b60275492612f5760285492612e1a8487612147565b04612154565b9080821161227f575090565b50505060275490565b81813d8311612f9a575b612f86818361205a565b81010312610ef657519250612f0a38612eee565b503d612f7c565b909181813d8311612fd3575b612fb7818361205a565b8101031261188c57519082821682036102e55750849038612ec8565b503d612fad565b6028549150565b600a5460405163e6abad4960e01b815290602090829060049082906001600160a01b03165afa9081156126d957600091613019575090565b906020823d821161303f575b816130326020938361205a565b810103126102e557505190565b3d9150613025565b6001600160801b0391821690821601919082116108a157565b6000602060405161307081612008565b82815201526001600160401b039061308f8260255460401c1642612147565b9182156130e6576130e1612e1a91670de0b6b3a76400006130d66130b1612d48565b9660018060801b03958694858a5116906301e133806130ce612e70565b041690612106565b041682855116613047565b168252565b5090506130f1612d48565b90565b60405161310081612008565b6025546001600160401b03908181168352818160401c16613128602085019180835242612147565b928315612ce057602094816301e13380613140612e70565b041681528142168352613151612d48565b670de0b6b3a764000061317660018060801b0397612e1a898551168787511690612106565b049561318781881682845116613047565b1680825296015160801b6001600160801b031990811690961760145551915192909416931692831760409190911b67ffffffffffffffff60401b16176025557f7484db546dcd57af0104c73c8a6968dfbaf5767f047cee0dadd0499ad7df81a0600080a356feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa264697066735822122020741475291d268abc8d456b5c33bfd779dc6c4e439660aa6aac9318f3937fe164736f6c63430008120033", + "bytecode": "0x61014080604052346200018a5762000017816200018f565b600f81526001602082016e546170696f63612042696742616e6760881b8152602060405162000046816200018f565b8381520192603160f81b845251902091208160e052610100918183524660a0526040519160208301907f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f92838352604085015260608401524660808401523060a084015260a0835260c083019280841060018060401b03851117620001745760408490525190206080523060c052610120908152600580546001600160a01b0319163390811790915560007f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a362013880601b5562015f90601c55612710601d55612ee06020556103e8602d556133559283620001ac843960805183612942015260a05183612a0d015260c0518361290c015260e05183612991015251826129b70152518161296e0152f35b634e487b7160e01b600052604160045260246000fd5b600080fd5b604081019081106001600160401b03821117620001745760405256fe608080604052600436101561001357600080fd5b600090813560e01c908162a02a2014611f095750806302ce728f14611ee0578063078dfbe714611de1578063095ea7b314611dba5780630c4e84f014611c9e57806318160ddd14611c825780631c9e379b14611c495780631d4d3a5d14611c205780631da8bf1014611b4c5780631fb8f81a14611b2e57806323b872dd146119a7578063331960ff1461198957806334ce998a1461196057806334d441d0146119425780633644e5151461192757806337b6b7b91461190957806338d52e0f146118e05780633ba0b9a9146118c25780633f741adb1461189d57806340626d8b1461187f57806344de240a14611861578063473e3ce71461184357806348e4163e1461180a5780634e71e0c81461175c578063529898f21461173f578063542afda31461172157806357935462146117035780636b19ad16146116e55780636c3d8b8f146116bc57806370a0823114611683578063727785471461164b57806374645ff3146115ba57806374c9e4811461159c5780637dc0d1d0146115735780637ecebe001461153a5780637fa0b84e146115085780638285ef40146114d657806387b279371461149d5780638c5d0ed31461147f5780638da5cb5b14611456578063910dd7c814611221578063932bc4f81461114557806399a970281461111d5780639e15e89f146110e2578063a9059cbb14610fff578063b0e21e8a14610fe1578063b27c0e7414610fb0578063b7113f1914610f8d578063bb4cfe3b14610f6f578063bde39c5d14610f51578063c1ad5c8d14610f2e578063cce19f8114610dae578063ce8849ed14610d85578063d3fb2a381461091d578063d505accf1461077c578063d8dfeb4514610753578063dd62ed3e14610704578063de406577146106db578063e0996cb6146106bd578063e30c397814610694578063e9a4925214610363578063ea64dd5614610345578063eec0f42e14610327578063f791395d146103095763f8ba4cff146102eb57600080fd5b346103065780600319360112610306576103036131e6565b80f35b80fd5b50346103065780600319360112610306576020602754604051908152f35b50346103065780600319360112610306576020600c54604051908152f35b50346103065780600319360112610306576020601f54604051908152f35b50346103065760a03660031901126103065761037d611f51565b610385611f67565b9061038e611f8c565b608435926001600160a01b039081169290916064356103af30861415612cfa565b6002600052602090600782526103cd60ff6040600020541615612d45565b8615610616575b6103de8785612d82565b8615610595575b5084875260188152604087206103fc878254612246565b905560155461040b8782612246565b601555600c549088841561050f575082866009541692604460405180958193627eeac760e11b835230600484015260248301525afa80156105045789906104d0575b6104579250612239565b861161049857505b15610493575080600954165b167f9ed03113de523cebfe5e49d5f8e12894b1c0d42ce805990461726444c90eab878480a480f35b61046b565b6064906040519062461bcd60e51b825260048201526011602482015270084d2ce84c2dcce7440e8dede40daeac6d607b1b6044820152fd5b508282813d83116104fd575b6104e68183612103565b810103126104f857610457915161044d565b600080fd5b503d6104dc565b6040513d8b823e3d90fd5b9250508460095416803b1561059157604051630208d92960e11b81526001600160a01b038616600482015230602482015260448101929092526064820188905282908290608490829084905af180156105865761056e575b505061045f565b61057790612088565b610582578538610567565b8580fd5b6040513d84823e3d90fd5b8280fd5b908096508460095416916064600c546040519485938492638eb22cdd60e01b8452600484015260248301528b60448301525afa90811561060b5787916105de575b5094386103e5565b90508581813d8311610604575b6105f58183612103565b810103126104f85751386105d6565b503d6105eb565b6040513d89823e3d90fd5b9550836009541681600c54606460405180948193638eb22cdd60e01b835260048301528b60248301528c60448301525afa90811561068957889161065c575b50956103d4565b90508181813d8311610682575b6106738183612103565b810103126104f8575138610655565b503d610669565b6040513d8a823e3d90fd5b50346103065780600319360112610306576006546040516001600160a01b039091168152602090f35b50346103065780600319360112610306576020601d54604051908152f35b50346103065780600319360112610306576009546040516001600160a01b039091168152602090f35b50346103065760403660031901126103065761071e611f51565b6040610728611f67565b9260018060a01b03809316815260026020522091166000526020526020604060002054604051908152f35b5034610306578060031936011261030657600b546040516001600160a01b039091168152602090f35b50346103065761078b36611f9b565b9183919395949542116108d85760018060a01b039283881694856000526004602052604060002092835460001981146108c25761086e95610866956001830190556040519060208201927f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e2668452600060408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e0815261082a816120cc565b519020610835612909565b9060405190602082019261190160f01b8452602283015260428201526042815261085e816120e8565b519020612bd0565b919091612ad1565b160361087d5761030392612ca3565b60405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152606490fd5b634e487b7160e01b600052601160045260246000fd5b60405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b503461030657610160366003190112610306576001600160a01b0360043581811690819003610591576024916001600160401b0383358181116105825736602382011215610582578060040135918211610582573685838301011161058257604435938385168095036104f8576109998460055416331461216d565b80610d47575b508482610bed575b50505081610bad575b505060643580610b95575b5060843580610b7d575b5060a43580610b66575b5060c43580610b42575b5060e43580610b1e575b506101043580610aed575b506101243580610a7a575b50610144359081610a08578280f35b601e548210610a1b5750601f5538808280f35b60849060326040519162461bcd60e51b8352602060048401528201527f4d61726b65743a206c69717569646174696f6e436f6c6c61746572616c697a616044820152711d1a5bdb94985d19481d1bdbc81cdb585b1b60721b6064820152fd5b610a89620186a08211156121b8565b601f548111610a9b57601e55386109f9565b60405162461bcd60e51b8152602060048201526025818401527f4d61726b65743a20636f6c6c61746572616c697a6174696f6e5261746520746f6044820152646f2062696760d81b6064820152608490fd5b806016547fae6e0ab3b95f0a53ff9660a390ccedcbbf1f2355dce974a9841af106fddcfaba8580a3601655386109ee565b610b2c620186a082106121b8565b610b39601b5482116121b8565b601c55386109e3565b610b50620186a082106121b8565b610b5d601c5482106121b8565b601b55386109d9565b610b74620186a082106121b8565b601d55386109cf565b610b8c620186a08211156121b8565b601a55386109c5565b610ba4620186a08211156121b8565b601955386109bb565b816008549182167f5a62d22209e370e38eea92cfddcd228e656e6ec139243392a760a7769f5877fd8680a36001600160a01b0319161760085538806109b0565b8291610bfa60105461204e565b601f8111610ce8575b508790601f8411600114610c68578893610c5b575b5050508160011b916000199060031b1c1916176010555b7fa6f004921c944d4b8bf6e38462b00f36a58d62495d56b51f571ab78f732c98158480a13880846109a7565b0101359050843880610c18565b60108952601f198416945060008051602061330083398151915292509087908960205b878210610cc95750508460019610610cad575b50505050811b01601055610c2f565b60001960f88660031b161c199201013516905538808681610c9e565b8285019093013585556001949094019389929182019190810190610c8b565b601089529092509050600080516020613300833981519152601f840160051c810160208510610d40575b91849391601f8994920160051c01905b818110610d2f5750610c03565b898155859450889350600101610d22565b5080610d12565b600f80546001600160a01b0319169190911790557f0b2d6eb667d0522c3eb86e4288afecae6c11591ffd1345d4d12407e0598bca9b8680a13861099f565b50346103065780600319360112610306576008546040516001600160a01b039091168152602090f35b50346103065780610dbe36611fea565b600384929394526007602052610ddb60ff60408420541615612d45565b610de36124dc565b5050610ded6131e6565b6001600160a01b038381169390610e0630861415612cfa565b610e108387612d82565b8281871695868652601860205260408620610e2c838254612239565b9055610e3a82601554612239565b601555604051967f8ad4d3ff00da092c7ad9a573ea4f5f6a3dffc6712dc06d3f78f49b862297c4028780a46009541690600c5492823b15610f2a57630208d92960e11b86523060048701526001600160a01b03919091166024860152604485019290925260648401919091528290608490829084905af18015610f1f57610f0a575b50601154610ec991612e60565b15610ed15780f35b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881a5b9cdbdb1d995b9d607a1b6044820152606490fd5b91610f18610ec99293612088565b9190610ebc565b6040513d85823e3d90fd5b8480fd5b50346103065780600319360112610306576020610f49612f62565b604051908152f35b50346103065780600319360112610306576020602854604051908152f35b50346103065780600319360112610306576020601e54604051908152f35b5034610306578060031936011261030657602060ff602554166040519015158152f35b503461030657806003193601126103065760406024548151906001600160401b03908181168352831c166020820152f35b50346103065780600319360112610306576020601a54604051908152f35b503461030657604036600319011261030657611019611f51565b602435809281158015906110d0575b611060575b50506040519182526001600160a01b03169033906000805160206132e083398151915290602090a3602060405160018152f35b3381526001602052604081205461107983821015612a33565b6001600160a01b0384169033829003611094575b505061102d565b6040936110ab916110a6841515612a78565b612239565b3383526001602052838320558152206110c5838254612246565b90558138808061108d565b50336001600160a01b03841614611028565b503461030657604036600319011261030657606061110a611101611f51565b60243590612385565b9060405192835260208301526040820152f35b5034610306576040366003190112610306576020610f4961113c611f51565b602435906127d7565b503461030657806003193601126103065760405181602b546111668161204e565b808452906001908181169081156111f957506001146111a0575b61119c8461119081880382612103565b60405191829182612124565b0390f35b602b8352602094507f11c44e4875b74d31ff9fd779bf2566af7bd15b87fc985d01f5094b89e3669e4f5b8284106111e6575050508161119c936111909282010193611180565b80548585018701529285019281016111ca565b61119c96506111909450602092508593915060ff191682840152151560051b82010193611180565b5034610306576040366003190112610306576004356001600160401b0380821161059157366023830112156105915781600401359081116114425782604051926112756020601f19601f8601160185612103565b82845260208401923660248284010111610591578060246020930185378401015260243561ffff8116810361143e57610100918284805181010312610f2a576112bd906124cf565b6112c960408501612abd565b916112d660608601612abd565b9460808101519460a08201519260c08301519160ff8316830361143a5760e0840151930151938042116108d8578515611413577f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e266915b6001600160a01b0388168b52600460205260408b208054919060001983146113ff579161ffff6113bc9896949261086698969460018401905560405194602086015216604084015260018060a01b038a16606084015260018060a01b038c1660808401528a60a084015260c083015260e082015260e081526113ad816120cc565b60208151910120610835612909565b6001600160a01b0383811691160361087d57156113e957610303926001600160a01b039081169116612ca3565b610303926001600160a01b039081169116612c55565b634e487b7160e01b8d52601160045260248dfd5b7f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d69161132c565b8980fd5b8380fd5b634e487b7160e01b83526041600452602483fd5b50346103065780600319360112610306576005546040516001600160a01b039091168152602090f35b50346103065780600319360112610306576020601b54604051908152f35b5034610306576020366003190112610306576020906040906001600160a01b036114c5611f51565b168152602383522054604051908152f35b5034610306578060031936011261030657601454604080516001600160801b038316815260809290921c602083015290f35b50346103065760403660031901126103065761152f611525611f51565b6024359033612c55565b602060405160018152f35b5034610306576020366003190112610306576020906040906001600160a01b03611562611f51565b168152600483522054604051908152f35b5034610306578060031936011261030657600f546040516001600160a01b039091168152602090f35b50346103065780600319360112610306576020602d54604051908152f35b5034610306578060031936011261030657604051816010546115db8161204e565b808452906001908181169081156111f957506001146116045761119c8461119081880382612103565b60108352602094506000805160206133008339815191525b828410611638575050508161119c936111909282010193611180565b805485850187015292850192810161161c565b50346103065760203660031901126103065760043590600982101561030657602060ff6116778461201f565b54166040519015158152f35b5034610306576020366003190112610306576020906040906001600160a01b036116ab611f51565b168152600183522054604051908152f35b5034610306578060031936011261030657600a546040516001600160a01b039091168152602090f35b50346103065780600319360112610306576020602654604051908152f35b50346103065780600319360112610306576020601c54604051908152f35b50346103065780600319360112610306576020602c54604051908152f35b503461030657806003193601126103065760208054604051908152f35b50346103065780600319360112610306576006546001600160a01b0390818116338190036117c657806005549384167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08680a36001600160a01b0319928316176005551660065580f35b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b5034610306576020366003190112610306576020906040906001600160a01b03611832611f51565b168152601783522054604051908152f35b50346103065780600319360112610306576020601554604051908152f35b50346103065780600319360112610306576020600e54604051908152f35b50346103065780600319360112610306576020601654604051908152f35b5034610306576060366003190112610306576020610f4960443560243560043561226c565b50346103065780600319360112610306576020601154604051908152f35b5034610306578060031936011261030657600d546040516001600160a01b039091168152602090f35b50346103065780600319360112610306576020601254604051908152f35b50346103065780600319360112610306576020610f49612909565b50346103065780600319360112610306576020601954604051908152f35b50346103065780600319360112610306576014546040516001600160801b039091168152602090f35b50346103065780600319360112610306576020601354604051908152f35b5034610306576119b636611fea565b9192826119f2575b506040519182526001600160a01b039081169216906000805160206132e083398151915290602090a3602060405160018152f35b6001600160a01b03848116808352600160209081526040842054928690611a1b82861015612a33565b861693848403611a30575b50505050506119be565b838652600283526040808720338852845286205460018101611a9a575b5092600160209693611a7887946040976110a66000805160206132e08339815191529c9a1515612a78565b9285525283832055815220611a8e858254612246565b90559138808581611a26565b90918110611aee5792600160209693611a788a6000805160206132e08339815191529a9895611acb8260409a612239565b86895260028552898920338a528552898920559497509497995050939650611a4d565b60405162461bcd60e51b815260048101849052601860248201527745524332303a20616c6c6f77616e636520746f6f206c6f7760401b6044820152606490fd5b50346103065780600319360112610306576020602954604051908152f35b503461030657611b5b36611f9b565b908395949542116108d8576001600160a01b03878116808a52600460205260408a2080549196929592906000198314611c0c5782611bfd9694928d92600161086698960190556040519160208301937f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d6855260408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e0815261082a816120cc565b160361087d5761030392612c55565b634e487b7160e01b8c52601160045260248cfd5b5034610306578060031936011261030657602a546040516001600160a01b039091168152602090f35b5034610306576020366003190112610306576020906040906001600160a01b03611c71611f51565b168152601883522054604051908152f35b5034610306578060031936011261030657602090604051908152f35b5034610306576040366003190112610306576004356009811015611db657611cc4611f7d565b6008549091906001600160a01b03163303611d7a5760ff611ce48261201f565b54161515911515918214611d4057808260ff611d02611d309461201f565b54161515827feeec81de25875ce1725479bb76f720a8defdb43dea041919ae37bb4aae9847c08780a461201f565b9060ff8019835416911617905580f35b60405162461bcd60e51b81526020600482015260126024820152714d61726b65743a2073616d6520737461746560701b6044820152606490fd5b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881d5b985d5d1a1bdc9a5e995960621b6044820152606490fd5b5080fd5b50346103065760403660031901126103065761152f611dd7611f51565b6024359033612ca3565b503461030657606036600319011261030657611dfb611f51565b611e03611f7d565b611e0b611f8c565b9060018060a01b03928391611e258360055416331461216d565b15611ec9571690811590811591611ec1575b5015611e8457806005549283167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08580a36001600160a01b03199182161760055560068054909116905580f35b60405162461bcd60e51b81526020600482015260156024820152744f776e61626c653a207a65726f206164647265737360581b6044820152606490fd5b905038611e37565b9150501660018060a01b0319600654161760065580f35b50346103065780600319360112610306576040611efb6124dc565b825191151582526020820152f35b905034611db6576040366003190112611db6576040602092611f29611f51565b611f31611f67565b6001600160a01b0391821683526003865283832091168252845220548152f35b600435906001600160a01b03821682036104f857565b602435906001600160a01b03821682036104f857565b6024359081151582036104f857565b6044359081151582036104f857565b60e09060031901126104f8576001600160a01b039060043582811681036104f8579160243590811681036104f85790604435906064359060843560ff811681036104f8579060a4359060c43590565b60609060031901126104f8576001600160a01b039060043582811681036104f8579160243590811681036104f8579060443590565b6009811015612038576000526007602052604060002090565b634e487b7160e01b600052602160045260246000fd5b90600182811c9216801561207e575b602083101461206857565b634e487b7160e01b600052602260045260246000fd5b91607f169161205d565b6001600160401b03811161209b57604052565b634e487b7160e01b600052604160045260246000fd5b604081019081106001600160401b0382111761209b57604052565b61010081019081106001600160401b0382111761209b57604052565b608081019081106001600160401b0382111761209b57604052565b90601f801991011681019081106001600160401b0382111761209b57604052565b6020808252825181830181905290939260005b82811061215957505060409293506000838284010152601f8019910116010190565b818101860151848201604001528501612137565b1561217457565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b156121bf57565b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881b9bdd081d985b1a59607a1b6044820152606490fd5b818102929181159184041417156108c257565b8115612215570490565b634e487b7160e01b600052601260045260246000fd5b604d81116108c257600a0a90565b919082039182116108c257565b919082018092116108c257565b818103929160001380158285131691841216176108c257565b6014549192916122b5916122a69161229c91612292906001600160801b038316906121f8565b9060801c9061220b565b93601f54906121f8565b6122af8361222b565b9061220b565b80831061237d576122c96123059184612239565b916123006122fa6122f1601e546122eb6122e28661222b565b60205490612246565b906121f8565b6122af8461222b565b9161222b565b612253565b6509184e72a000908181029181830514901517156108c257670de0b6b3a7640000918281029281840514901517156108c257801561221557600160ff1b918083146000198314166108c257059060008212156123765781146108c257600003905b808211612371575090565b905090565b5090612366565b505050600090565b6001600160a01b039081166000818152601760209081526040822054929594939192909181156124c2576123b7613152565b906123c38615156126d4565b6009541683600c54898752601882526064604088205491604051948593849263442c159960e01b8452600484015260248301528960448301525afa9081156124b7578591612488575b509285949261246860189361244361247c9961243e61243560409a620186a060215404906121f8565b601e54906121f8565b61220b565b815190936001600160801b0391869161245e918416906121f8565b920151169061220b565b81811061248057035b978352522054612720565b9091565b505082612471565b90508381813d83116124b0575b61249f8183612103565b81010312610f2a575161247c61240c565b503d612495565b6040513d87823e3d90fd5b5050509192505080918190565b519081151582036104f857565b60018060a01b03600f54169060409081519263d6d7d52560e01b8452828460209283600483015260006010546125118161204e565b908160248601526001908582821691826000146126b057505060011461266c575b5050600083809203925af18015612661576000948591612626575b509284156125c857831561258e57505081601155817f9f9192b5edb17356c524e08d9e025c8e2f6307e6ea52fb7968faa3081f51c3c8600080a25b42601355565b60649250519062461bcd60e51b8252600482015260146024820152734d61726b65743a20696e76616c6964207261746560601b6044820152fd5b909192506125db60135460125490612246565b42116125ec57505060115490612588565b60649250519062461bcd60e51b82526004820152601460248201527313585c9ad95d0e881c985d19481d1bdbc81bdb1960621b6044820152fd5b9490508385813d831161265a575b61263e8183612103565b81010312610306575080612651856124cf565b9401513861254d565b503d612634565b83513d6000823e3d90fd5b915060106000528560002091866000935b83851061269557505050508201604401600083612532565b80548c8601604401528a97508b96509301928790820161267d565b8195506000949193506044925060ff191682840152151560051b8201019250612532565b156126db57565b60405162461bcd60e51b815260206004820152601e60248201527f4d61726b65743a2065786368616e676552617465206e6f742076616c696400006044820152606490fd5b61272b8215156126d4565b602060018060a01b0360095416916064600c54604051948593849263442c159960e01b845260048401526024830152600060448301525afa9081156127cb57600091612798575b509061243e61278492602154906121f8565b620186a0612794601e54836121f8565b0491565b906020823d82116127c3575b816127b160209383612103565b8101031261030657505161243e612772565b3d91506127a4565b6040513d6000823e3d90fd5b6001600160a01b031660008181526018602052604081205490926127fa91612720565b9183526017602052604083205480156129035781156129035781811061290357828110156128f9576014546128439183916110a691612292906001600160801b038316906121f8565b90620186a092838302928084048514901517156128e55761286892916122af91612239565b91601b5491601c549361287b8585612253565b80820291848212600160ff1b8214166128e55781830514901517156128d157058184820194851291129080158216911516176128bd5750808212612371575090565b634e487b7160e01b81526011600452602490fd5b634e487b7160e01b83526011600452602483fd5b634e487b7160e01b85526011600452602485fd5b50505050601b5490565b50505090565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03161480612a0a575b15612964577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f000000000000000000000000000000000000000000000000000000000000000082527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a0815260c081018181106001600160401b0382111761209b5760405251902090565b507f0000000000000000000000000000000000000000000000000000000000000000461461293b565b15612a3a57565b60405162461bcd60e51b815260206004820152601660248201527545524332303a2062616c616e636520746f6f206c6f7760501b6044820152606490fd5b15612a7f57565b60405162461bcd60e51b815260206004820152601660248201527545524332303a206e6f207a65726f206164647265737360501b6044820152606490fd5b51906001600160a01b03821682036104f857565b60058110156120385780612ae25750565b60018103612b2a5760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b6044820152606490fd5b60028103612b775760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606490fd5b600314612b8057565b60405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608490fd5b9291906fa2a8918ca85bafe22016d0b997e4df60600160ff1b038311612c495791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa15612c3c5781516001600160a01b03811615612c36579190565b50600190565b50604051903d90823e3d90fd5b50505050600090600390565b7fe50de2333c10a9502fcb1d8ae13a51bbf423153dfc63c2b8997665b32154afc360018060a01b038092169160009083825260036020526040822094169384825260205284604082205580a4565b909160207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259160018060a01b03809416938460005260028352604060002095169485600052825280604060002055604051908152a3565b15612d0157565b606460405162461bcd60e51b815260206004820152602060248201527f4d61726b65743a2063616e6e6f742065786563757465206f6e20697473656c666044820152fd5b15612d4c57565b60405162461bcd60e51b815260206004820152600e60248201526d13585c9ad95d0e881c185d5cd95960921b6044820152606490fd5b6001600160a01b0316338103612d96575050565b6000818152602090600382526040918282203383528152848383205410612e005783825260038152828220338352815282822054600101612dd9575b5050505050565b612df493825260038152828220903383525220918254612239565b90553880808080612dd2565b60649083519062461bcd60e51b82526004820152601460248201527313585c9ad95d0e881b9bdd08185c1c1c9bdd995960621b6044820152fd5b60405190612e47826120b1565b6014546001600160801b038116835260801c6020830152565b919060018060a01b03806000941684526020601781526040852054908115612f58576018815260408620548015612dd25781612e9a612e3a565b9460095416916064600c54604051948593849263442c159960e01b8452600484015260248301528b60448301525afa968715612f4c578097612f16575b505061245e612ef6612435612f11969798620186a060215404906121f8565b95612f0c60018060801b039485875116906121f8565b6121f8565b111590565b9096508187813d8311612f45575b612f2e8183612103565b81010312610306575094519461245e612ef6612ed7565b503d612f24565b604051903d90823e3d90fd5b5060019450505050565b60ff602554166130d3576014546001600160801b03169081156130cc57600a54604051631848f2bf60e31b8152602093916001600160a01b03919085908290600490829086165afa80156127cb578591600091613093575b50600460405180948193631a674cc560e11b8352165afa9384156127cb57600094613064575b5050612ffc9192670de0b6b3a7640000928391602854906121f8565b04908181101561305b576130136029548092612239565b838102908082048514901517156108c2576122af6130349261304f94612239565b6026549261304960275492612f0c8487612239565b04612246565b90808211612371575090565b50505060265490565b81813d831161308c575b6130788183612103565b8101031261143e57519250612ffc38612fe0565b503d61306e565b909181813d83116130c5575b6130a98183612103565b81010312611db657519082821682036103065750849038612fba565b503d61309f565b6027549150565b600a5460405163e6abad4960e01b815290602090829060049082906001600160a01b03165afa9081156127cb5760009161310b575090565b906020823d8211613131575b8161312460209383612103565b8101031261030657505190565b3d9150613117565b6001600160801b0391821690821601919082116108c257565b60006020604051613162816120b1565b82815201526001600160401b03906131818260245460401c1642612239565b9182156131d8576131d3612f0c91670de0b6b3a76400006131c86131a3612e3a565b9660018060801b03958694858a5116906301e133806131c0612f62565b0416906121f8565b041682855116613139565b168252565b5090506131e3612e3a565b90565b6040516131f2816120b1565b6024546001600160401b03908181168352818160401c1661321a602085019180835242612239565b928315612dd257602094816301e13380613232612f62565b041681528142168352613243612e3a565b670de0b6b3a764000061326860018060801b0397612f0c8985511687875116906121f8565b049561327981881682845116613139565b1680825296015160801b6001600160801b031990811690961760145551915192909416931692831760409190911b67ffffffffffffffff60401b16176024557f7484db546dcd57af0104c73c8a6968dfbaf5767f047cee0dadd0499ad7df81a0600080a356feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae672a2646970667358221220bef39f6b490096eaa1e8d926eac411159da5d2d4f5f5ff5f896ffa34eabf6b2b64736f6c63430008120033", + "deployedBytecode": "0x608080604052600436101561001357600080fd5b600090813560e01c908162a02a2014611f095750806302ce728f14611ee0578063078dfbe714611de1578063095ea7b314611dba5780630c4e84f014611c9e57806318160ddd14611c825780631c9e379b14611c495780631d4d3a5d14611c205780631da8bf1014611b4c5780631fb8f81a14611b2e57806323b872dd146119a7578063331960ff1461198957806334ce998a1461196057806334d441d0146119425780633644e5151461192757806337b6b7b91461190957806338d52e0f146118e05780633ba0b9a9146118c25780633f741adb1461189d57806340626d8b1461187f57806344de240a14611861578063473e3ce71461184357806348e4163e1461180a5780634e71e0c81461175c578063529898f21461173f578063542afda31461172157806357935462146117035780636b19ad16146116e55780636c3d8b8f146116bc57806370a0823114611683578063727785471461164b57806374645ff3146115ba57806374c9e4811461159c5780637dc0d1d0146115735780637ecebe001461153a5780637fa0b84e146115085780638285ef40146114d657806387b279371461149d5780638c5d0ed31461147f5780638da5cb5b14611456578063910dd7c814611221578063932bc4f81461114557806399a970281461111d5780639e15e89f146110e2578063a9059cbb14610fff578063b0e21e8a14610fe1578063b27c0e7414610fb0578063b7113f1914610f8d578063bb4cfe3b14610f6f578063bde39c5d14610f51578063c1ad5c8d14610f2e578063cce19f8114610dae578063ce8849ed14610d85578063d3fb2a381461091d578063d505accf1461077c578063d8dfeb4514610753578063dd62ed3e14610704578063de406577146106db578063e0996cb6146106bd578063e30c397814610694578063e9a4925214610363578063ea64dd5614610345578063eec0f42e14610327578063f791395d146103095763f8ba4cff146102eb57600080fd5b346103065780600319360112610306576103036131e6565b80f35b80fd5b50346103065780600319360112610306576020602754604051908152f35b50346103065780600319360112610306576020600c54604051908152f35b50346103065780600319360112610306576020601f54604051908152f35b50346103065760a03660031901126103065761037d611f51565b610385611f67565b9061038e611f8c565b608435926001600160a01b039081169290916064356103af30861415612cfa565b6002600052602090600782526103cd60ff6040600020541615612d45565b8615610616575b6103de8785612d82565b8615610595575b5084875260188152604087206103fc878254612246565b905560155461040b8782612246565b601555600c549088841561050f575082866009541692604460405180958193627eeac760e11b835230600484015260248301525afa80156105045789906104d0575b6104579250612239565b861161049857505b15610493575080600954165b167f9ed03113de523cebfe5e49d5f8e12894b1c0d42ce805990461726444c90eab878480a480f35b61046b565b6064906040519062461bcd60e51b825260048201526011602482015270084d2ce84c2dcce7440e8dede40daeac6d607b1b6044820152fd5b508282813d83116104fd575b6104e68183612103565b810103126104f857610457915161044d565b600080fd5b503d6104dc565b6040513d8b823e3d90fd5b9250508460095416803b1561059157604051630208d92960e11b81526001600160a01b038616600482015230602482015260448101929092526064820188905282908290608490829084905af180156105865761056e575b505061045f565b61057790612088565b610582578538610567565b8580fd5b6040513d84823e3d90fd5b8280fd5b908096508460095416916064600c546040519485938492638eb22cdd60e01b8452600484015260248301528b60448301525afa90811561060b5787916105de575b5094386103e5565b90508581813d8311610604575b6105f58183612103565b810103126104f85751386105d6565b503d6105eb565b6040513d89823e3d90fd5b9550836009541681600c54606460405180948193638eb22cdd60e01b835260048301528b60248301528c60448301525afa90811561068957889161065c575b50956103d4565b90508181813d8311610682575b6106738183612103565b810103126104f8575138610655565b503d610669565b6040513d8a823e3d90fd5b50346103065780600319360112610306576006546040516001600160a01b039091168152602090f35b50346103065780600319360112610306576020601d54604051908152f35b50346103065780600319360112610306576009546040516001600160a01b039091168152602090f35b50346103065760403660031901126103065761071e611f51565b6040610728611f67565b9260018060a01b03809316815260026020522091166000526020526020604060002054604051908152f35b5034610306578060031936011261030657600b546040516001600160a01b039091168152602090f35b50346103065761078b36611f9b565b9183919395949542116108d85760018060a01b039283881694856000526004602052604060002092835460001981146108c25761086e95610866956001830190556040519060208201927f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e2668452600060408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e0815261082a816120cc565b519020610835612909565b9060405190602082019261190160f01b8452602283015260428201526042815261085e816120e8565b519020612bd0565b919091612ad1565b160361087d5761030392612ca3565b60405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152606490fd5b634e487b7160e01b600052601160045260246000fd5b60405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b503461030657610160366003190112610306576001600160a01b0360043581811690819003610591576024916001600160401b0383358181116105825736602382011215610582578060040135918211610582573685838301011161058257604435938385168095036104f8576109998460055416331461216d565b80610d47575b508482610bed575b50505081610bad575b505060643580610b95575b5060843580610b7d575b5060a43580610b66575b5060c43580610b42575b5060e43580610b1e575b506101043580610aed575b506101243580610a7a575b50610144359081610a08578280f35b601e548210610a1b5750601f5538808280f35b60849060326040519162461bcd60e51b8352602060048401528201527f4d61726b65743a206c69717569646174696f6e436f6c6c61746572616c697a616044820152711d1a5bdb94985d19481d1bdbc81cdb585b1b60721b6064820152fd5b610a89620186a08211156121b8565b601f548111610a9b57601e55386109f9565b60405162461bcd60e51b8152602060048201526025818401527f4d61726b65743a20636f6c6c61746572616c697a6174696f6e5261746520746f6044820152646f2062696760d81b6064820152608490fd5b806016547fae6e0ab3b95f0a53ff9660a390ccedcbbf1f2355dce974a9841af106fddcfaba8580a3601655386109ee565b610b2c620186a082106121b8565b610b39601b5482116121b8565b601c55386109e3565b610b50620186a082106121b8565b610b5d601c5482106121b8565b601b55386109d9565b610b74620186a082106121b8565b601d55386109cf565b610b8c620186a08211156121b8565b601a55386109c5565b610ba4620186a08211156121b8565b601955386109bb565b816008549182167f5a62d22209e370e38eea92cfddcd228e656e6ec139243392a760a7769f5877fd8680a36001600160a01b0319161760085538806109b0565b8291610bfa60105461204e565b601f8111610ce8575b508790601f8411600114610c68578893610c5b575b5050508160011b916000199060031b1c1916176010555b7fa6f004921c944d4b8bf6e38462b00f36a58d62495d56b51f571ab78f732c98158480a13880846109a7565b0101359050843880610c18565b60108952601f198416945060008051602061330083398151915292509087908960205b878210610cc95750508460019610610cad575b50505050811b01601055610c2f565b60001960f88660031b161c199201013516905538808681610c9e565b8285019093013585556001949094019389929182019190810190610c8b565b601089529092509050600080516020613300833981519152601f840160051c810160208510610d40575b91849391601f8994920160051c01905b818110610d2f5750610c03565b898155859450889350600101610d22565b5080610d12565b600f80546001600160a01b0319169190911790557f0b2d6eb667d0522c3eb86e4288afecae6c11591ffd1345d4d12407e0598bca9b8680a13861099f565b50346103065780600319360112610306576008546040516001600160a01b039091168152602090f35b50346103065780610dbe36611fea565b600384929394526007602052610ddb60ff60408420541615612d45565b610de36124dc565b5050610ded6131e6565b6001600160a01b038381169390610e0630861415612cfa565b610e108387612d82565b8281871695868652601860205260408620610e2c838254612239565b9055610e3a82601554612239565b601555604051967f8ad4d3ff00da092c7ad9a573ea4f5f6a3dffc6712dc06d3f78f49b862297c4028780a46009541690600c5492823b15610f2a57630208d92960e11b86523060048701526001600160a01b03919091166024860152604485019290925260648401919091528290608490829084905af18015610f1f57610f0a575b50601154610ec991612e60565b15610ed15780f35b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881a5b9cdbdb1d995b9d607a1b6044820152606490fd5b91610f18610ec99293612088565b9190610ebc565b6040513d85823e3d90fd5b8480fd5b50346103065780600319360112610306576020610f49612f62565b604051908152f35b50346103065780600319360112610306576020602854604051908152f35b50346103065780600319360112610306576020601e54604051908152f35b5034610306578060031936011261030657602060ff602554166040519015158152f35b503461030657806003193601126103065760406024548151906001600160401b03908181168352831c166020820152f35b50346103065780600319360112610306576020601a54604051908152f35b503461030657604036600319011261030657611019611f51565b602435809281158015906110d0575b611060575b50506040519182526001600160a01b03169033906000805160206132e083398151915290602090a3602060405160018152f35b3381526001602052604081205461107983821015612a33565b6001600160a01b0384169033829003611094575b505061102d565b6040936110ab916110a6841515612a78565b612239565b3383526001602052838320558152206110c5838254612246565b90558138808061108d565b50336001600160a01b03841614611028565b503461030657604036600319011261030657606061110a611101611f51565b60243590612385565b9060405192835260208301526040820152f35b5034610306576040366003190112610306576020610f4961113c611f51565b602435906127d7565b503461030657806003193601126103065760405181602b546111668161204e565b808452906001908181169081156111f957506001146111a0575b61119c8461119081880382612103565b60405191829182612124565b0390f35b602b8352602094507f11c44e4875b74d31ff9fd779bf2566af7bd15b87fc985d01f5094b89e3669e4f5b8284106111e6575050508161119c936111909282010193611180565b80548585018701529285019281016111ca565b61119c96506111909450602092508593915060ff191682840152151560051b82010193611180565b5034610306576040366003190112610306576004356001600160401b0380821161059157366023830112156105915781600401359081116114425782604051926112756020601f19601f8601160185612103565b82845260208401923660248284010111610591578060246020930185378401015260243561ffff8116810361143e57610100918284805181010312610f2a576112bd906124cf565b6112c960408501612abd565b916112d660608601612abd565b9460808101519460a08201519260c08301519160ff8316830361143a5760e0840151930151938042116108d8578515611413577f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e266915b6001600160a01b0388168b52600460205260408b208054919060001983146113ff579161ffff6113bc9896949261086698969460018401905560405194602086015216604084015260018060a01b038a16606084015260018060a01b038c1660808401528a60a084015260c083015260e082015260e081526113ad816120cc565b60208151910120610835612909565b6001600160a01b0383811691160361087d57156113e957610303926001600160a01b039081169116612ca3565b610303926001600160a01b039081169116612c55565b634e487b7160e01b8d52601160045260248dfd5b7f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d69161132c565b8980fd5b8380fd5b634e487b7160e01b83526041600452602483fd5b50346103065780600319360112610306576005546040516001600160a01b039091168152602090f35b50346103065780600319360112610306576020601b54604051908152f35b5034610306576020366003190112610306576020906040906001600160a01b036114c5611f51565b168152602383522054604051908152f35b5034610306578060031936011261030657601454604080516001600160801b038316815260809290921c602083015290f35b50346103065760403660031901126103065761152f611525611f51565b6024359033612c55565b602060405160018152f35b5034610306576020366003190112610306576020906040906001600160a01b03611562611f51565b168152600483522054604051908152f35b5034610306578060031936011261030657600f546040516001600160a01b039091168152602090f35b50346103065780600319360112610306576020602d54604051908152f35b5034610306578060031936011261030657604051816010546115db8161204e565b808452906001908181169081156111f957506001146116045761119c8461119081880382612103565b60108352602094506000805160206133008339815191525b828410611638575050508161119c936111909282010193611180565b805485850187015292850192810161161c565b50346103065760203660031901126103065760043590600982101561030657602060ff6116778461201f565b54166040519015158152f35b5034610306576020366003190112610306576020906040906001600160a01b036116ab611f51565b168152600183522054604051908152f35b5034610306578060031936011261030657600a546040516001600160a01b039091168152602090f35b50346103065780600319360112610306576020602654604051908152f35b50346103065780600319360112610306576020601c54604051908152f35b50346103065780600319360112610306576020602c54604051908152f35b503461030657806003193601126103065760208054604051908152f35b50346103065780600319360112610306576006546001600160a01b0390818116338190036117c657806005549384167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08680a36001600160a01b0319928316176005551660065580f35b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b5034610306576020366003190112610306576020906040906001600160a01b03611832611f51565b168152601783522054604051908152f35b50346103065780600319360112610306576020601554604051908152f35b50346103065780600319360112610306576020600e54604051908152f35b50346103065780600319360112610306576020601654604051908152f35b5034610306576060366003190112610306576020610f4960443560243560043561226c565b50346103065780600319360112610306576020601154604051908152f35b5034610306578060031936011261030657600d546040516001600160a01b039091168152602090f35b50346103065780600319360112610306576020601254604051908152f35b50346103065780600319360112610306576020610f49612909565b50346103065780600319360112610306576020601954604051908152f35b50346103065780600319360112610306576014546040516001600160801b039091168152602090f35b50346103065780600319360112610306576020601354604051908152f35b5034610306576119b636611fea565b9192826119f2575b506040519182526001600160a01b039081169216906000805160206132e083398151915290602090a3602060405160018152f35b6001600160a01b03848116808352600160209081526040842054928690611a1b82861015612a33565b861693848403611a30575b50505050506119be565b838652600283526040808720338852845286205460018101611a9a575b5092600160209693611a7887946040976110a66000805160206132e08339815191529c9a1515612a78565b9285525283832055815220611a8e858254612246565b90559138808581611a26565b90918110611aee5792600160209693611a788a6000805160206132e08339815191529a9895611acb8260409a612239565b86895260028552898920338a528552898920559497509497995050939650611a4d565b60405162461bcd60e51b815260048101849052601860248201527745524332303a20616c6c6f77616e636520746f6f206c6f7760401b6044820152606490fd5b50346103065780600319360112610306576020602954604051908152f35b503461030657611b5b36611f9b565b908395949542116108d8576001600160a01b03878116808a52600460205260408a2080549196929592906000198314611c0c5782611bfd9694928d92600161086698960190556040519160208301937f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d6855260408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e0815261082a816120cc565b160361087d5761030392612c55565b634e487b7160e01b8c52601160045260248cfd5b5034610306578060031936011261030657602a546040516001600160a01b039091168152602090f35b5034610306576020366003190112610306576020906040906001600160a01b03611c71611f51565b168152601883522054604051908152f35b5034610306578060031936011261030657602090604051908152f35b5034610306576040366003190112610306576004356009811015611db657611cc4611f7d565b6008549091906001600160a01b03163303611d7a5760ff611ce48261201f565b54161515911515918214611d4057808260ff611d02611d309461201f565b54161515827feeec81de25875ce1725479bb76f720a8defdb43dea041919ae37bb4aae9847c08780a461201f565b9060ff8019835416911617905580f35b60405162461bcd60e51b81526020600482015260126024820152714d61726b65743a2073616d6520737461746560701b6044820152606490fd5b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881d5b985d5d1a1bdc9a5e995960621b6044820152606490fd5b5080fd5b50346103065760403660031901126103065761152f611dd7611f51565b6024359033612ca3565b503461030657606036600319011261030657611dfb611f51565b611e03611f7d565b611e0b611f8c565b9060018060a01b03928391611e258360055416331461216d565b15611ec9571690811590811591611ec1575b5015611e8457806005549283167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08580a36001600160a01b03199182161760055560068054909116905580f35b60405162461bcd60e51b81526020600482015260156024820152744f776e61626c653a207a65726f206164647265737360581b6044820152606490fd5b905038611e37565b9150501660018060a01b0319600654161760065580f35b50346103065780600319360112610306576040611efb6124dc565b825191151582526020820152f35b905034611db6576040366003190112611db6576040602092611f29611f51565b611f31611f67565b6001600160a01b0391821683526003865283832091168252845220548152f35b600435906001600160a01b03821682036104f857565b602435906001600160a01b03821682036104f857565b6024359081151582036104f857565b6044359081151582036104f857565b60e09060031901126104f8576001600160a01b039060043582811681036104f8579160243590811681036104f85790604435906064359060843560ff811681036104f8579060a4359060c43590565b60609060031901126104f8576001600160a01b039060043582811681036104f8579160243590811681036104f8579060443590565b6009811015612038576000526007602052604060002090565b634e487b7160e01b600052602160045260246000fd5b90600182811c9216801561207e575b602083101461206857565b634e487b7160e01b600052602260045260246000fd5b91607f169161205d565b6001600160401b03811161209b57604052565b634e487b7160e01b600052604160045260246000fd5b604081019081106001600160401b0382111761209b57604052565b61010081019081106001600160401b0382111761209b57604052565b608081019081106001600160401b0382111761209b57604052565b90601f801991011681019081106001600160401b0382111761209b57604052565b6020808252825181830181905290939260005b82811061215957505060409293506000838284010152601f8019910116010190565b818101860151848201604001528501612137565b1561217457565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b156121bf57565b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881b9bdd081d985b1a59607a1b6044820152606490fd5b818102929181159184041417156108c257565b8115612215570490565b634e487b7160e01b600052601260045260246000fd5b604d81116108c257600a0a90565b919082039182116108c257565b919082018092116108c257565b818103929160001380158285131691841216176108c257565b6014549192916122b5916122a69161229c91612292906001600160801b038316906121f8565b9060801c9061220b565b93601f54906121f8565b6122af8361222b565b9061220b565b80831061237d576122c96123059184612239565b916123006122fa6122f1601e546122eb6122e28661222b565b60205490612246565b906121f8565b6122af8461222b565b9161222b565b612253565b6509184e72a000908181029181830514901517156108c257670de0b6b3a7640000918281029281840514901517156108c257801561221557600160ff1b918083146000198314166108c257059060008212156123765781146108c257600003905b808211612371575090565b905090565b5090612366565b505050600090565b6001600160a01b039081166000818152601760209081526040822054929594939192909181156124c2576123b7613152565b906123c38615156126d4565b6009541683600c54898752601882526064604088205491604051948593849263442c159960e01b8452600484015260248301528960448301525afa9081156124b7578591612488575b509285949261246860189361244361247c9961243e61243560409a620186a060215404906121f8565b601e54906121f8565b61220b565b815190936001600160801b0391869161245e918416906121f8565b920151169061220b565b81811061248057035b978352522054612720565b9091565b505082612471565b90508381813d83116124b0575b61249f8183612103565b81010312610f2a575161247c61240c565b503d612495565b6040513d87823e3d90fd5b5050509192505080918190565b519081151582036104f857565b60018060a01b03600f54169060409081519263d6d7d52560e01b8452828460209283600483015260006010546125118161204e565b908160248601526001908582821691826000146126b057505060011461266c575b5050600083809203925af18015612661576000948591612626575b509284156125c857831561258e57505081601155817f9f9192b5edb17356c524e08d9e025c8e2f6307e6ea52fb7968faa3081f51c3c8600080a25b42601355565b60649250519062461bcd60e51b8252600482015260146024820152734d61726b65743a20696e76616c6964207261746560601b6044820152fd5b909192506125db60135460125490612246565b42116125ec57505060115490612588565b60649250519062461bcd60e51b82526004820152601460248201527313585c9ad95d0e881c985d19481d1bdbc81bdb1960621b6044820152fd5b9490508385813d831161265a575b61263e8183612103565b81010312610306575080612651856124cf565b9401513861254d565b503d612634565b83513d6000823e3d90fd5b915060106000528560002091866000935b83851061269557505050508201604401600083612532565b80548c8601604401528a97508b96509301928790820161267d565b8195506000949193506044925060ff191682840152151560051b8201019250612532565b156126db57565b60405162461bcd60e51b815260206004820152601e60248201527f4d61726b65743a2065786368616e676552617465206e6f742076616c696400006044820152606490fd5b61272b8215156126d4565b602060018060a01b0360095416916064600c54604051948593849263442c159960e01b845260048401526024830152600060448301525afa9081156127cb57600091612798575b509061243e61278492602154906121f8565b620186a0612794601e54836121f8565b0491565b906020823d82116127c3575b816127b160209383612103565b8101031261030657505161243e612772565b3d91506127a4565b6040513d6000823e3d90fd5b6001600160a01b031660008181526018602052604081205490926127fa91612720565b9183526017602052604083205480156129035781156129035781811061290357828110156128f9576014546128439183916110a691612292906001600160801b038316906121f8565b90620186a092838302928084048514901517156128e55761286892916122af91612239565b91601b5491601c549361287b8585612253565b80820291848212600160ff1b8214166128e55781830514901517156128d157058184820194851291129080158216911516176128bd5750808212612371575090565b634e487b7160e01b81526011600452602490fd5b634e487b7160e01b83526011600452602483fd5b634e487b7160e01b85526011600452602485fd5b50505050601b5490565b50505090565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03161480612a0a575b15612964577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f000000000000000000000000000000000000000000000000000000000000000082527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a0815260c081018181106001600160401b0382111761209b5760405251902090565b507f0000000000000000000000000000000000000000000000000000000000000000461461293b565b15612a3a57565b60405162461bcd60e51b815260206004820152601660248201527545524332303a2062616c616e636520746f6f206c6f7760501b6044820152606490fd5b15612a7f57565b60405162461bcd60e51b815260206004820152601660248201527545524332303a206e6f207a65726f206164647265737360501b6044820152606490fd5b51906001600160a01b03821682036104f857565b60058110156120385780612ae25750565b60018103612b2a5760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b6044820152606490fd5b60028103612b775760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606490fd5b600314612b8057565b60405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608490fd5b9291906fa2a8918ca85bafe22016d0b997e4df60600160ff1b038311612c495791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa15612c3c5781516001600160a01b03811615612c36579190565b50600190565b50604051903d90823e3d90fd5b50505050600090600390565b7fe50de2333c10a9502fcb1d8ae13a51bbf423153dfc63c2b8997665b32154afc360018060a01b038092169160009083825260036020526040822094169384825260205284604082205580a4565b909160207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259160018060a01b03809416938460005260028352604060002095169485600052825280604060002055604051908152a3565b15612d0157565b606460405162461bcd60e51b815260206004820152602060248201527f4d61726b65743a2063616e6e6f742065786563757465206f6e20697473656c666044820152fd5b15612d4c57565b60405162461bcd60e51b815260206004820152600e60248201526d13585c9ad95d0e881c185d5cd95960921b6044820152606490fd5b6001600160a01b0316338103612d96575050565b6000818152602090600382526040918282203383528152848383205410612e005783825260038152828220338352815282822054600101612dd9575b5050505050565b612df493825260038152828220903383525220918254612239565b90553880808080612dd2565b60649083519062461bcd60e51b82526004820152601460248201527313585c9ad95d0e881b9bdd08185c1c1c9bdd995960621b6044820152fd5b60405190612e47826120b1565b6014546001600160801b038116835260801c6020830152565b919060018060a01b03806000941684526020601781526040852054908115612f58576018815260408620548015612dd25781612e9a612e3a565b9460095416916064600c54604051948593849263442c159960e01b8452600484015260248301528b60448301525afa968715612f4c578097612f16575b505061245e612ef6612435612f11969798620186a060215404906121f8565b95612f0c60018060801b039485875116906121f8565b6121f8565b111590565b9096508187813d8311612f45575b612f2e8183612103565b81010312610306575094519461245e612ef6612ed7565b503d612f24565b604051903d90823e3d90fd5b5060019450505050565b60ff602554166130d3576014546001600160801b03169081156130cc57600a54604051631848f2bf60e31b8152602093916001600160a01b03919085908290600490829086165afa80156127cb578591600091613093575b50600460405180948193631a674cc560e11b8352165afa9384156127cb57600094613064575b5050612ffc9192670de0b6b3a7640000928391602854906121f8565b04908181101561305b576130136029548092612239565b838102908082048514901517156108c2576122af6130349261304f94612239565b6026549261304960275492612f0c8487612239565b04612246565b90808211612371575090565b50505060265490565b81813d831161308c575b6130788183612103565b8101031261143e57519250612ffc38612fe0565b503d61306e565b909181813d83116130c5575b6130a98183612103565b81010312611db657519082821682036103065750849038612fba565b503d61309f565b6027549150565b600a5460405163e6abad4960e01b815290602090829060049082906001600160a01b03165afa9081156127cb5760009161310b575090565b906020823d8211613131575b8161312460209383612103565b8101031261030657505190565b3d9150613117565b6001600160801b0391821690821601919082116108c257565b60006020604051613162816120b1565b82815201526001600160401b03906131818260245460401c1642612239565b9182156131d8576131d3612f0c91670de0b6b3a76400006131c86131a3612e3a565b9660018060801b03958694858a5116906301e133806131c0612f62565b0416906121f8565b041682855116613139565b168252565b5090506131e3612e3a565b90565b6040516131f2816120b1565b6024546001600160401b03908181168352818160401c1661321a602085019180835242612239565b928315612dd257602094816301e13380613232612f62565b041681528142168352613243612e3a565b670de0b6b3a764000061326860018060801b0397612f0c8985511687875116906121f8565b049561327981881682845116613139565b1680825296015160801b6001600160801b031990811690961760145551915192909416931692831760409190911b67ffffffffffffffff60401b16176024557f7484db546dcd57af0104c73c8a6968dfbaf5767f047cee0dadd0499ad7df81a0600080a356feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae672a2646970667358221220bef39f6b490096eaa1e8d926eac411159da5d2d4f5f5ff5f896ffa34eabf6b2b64736f6c63430008120033", "linkReferences": {}, "deployedLinkReferences": {} } diff --git a/src/artifacts/tapioca-bar/BBCommon.json b/src/artifacts/tapioca-bar/BBCommon.json index 262c381a..51fffea6 100644 --- a/src/artifacts/tapioca-bar/BBCommon.json +++ b/src/artifacts/tapioca-bar/BBCommon.json @@ -53,6 +53,31 @@ "name": "ApprovalBorrow", "type": "event" }, + { + "anonymous": false, + "inputs": [], + "name": "AssetOracleDataUpdated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "_oldVal", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "_newVal", + "type": "address" + } + ], + "name": "AssetOracleUpdated", + "type": "event" + }, { "anonymous": false, "inputs": [ @@ -272,25 +297,6 @@ "name": "LogBorrowCapUpdated", "type": "event" }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "uint256", - "name": "_oldVal", - "type": "uint256" - }, - { - "indexed": true, - "internalType": "uint256", - "name": "_newVal", - "type": "uint256" - } - ], - "name": "LogBorrowingFee", - "type": "event" - }, { "anonymous": false, "inputs": [ @@ -479,6 +485,37 @@ "name": "Transfer", "type": "event" }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint256", + "name": "oldMin", + "type": "uint256" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "newMin", + "type": "uint256" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "oldMax", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "newMax", + "type": "uint256" + } + ], + "name": "UpdateMinMaxMintFee", + "type": "event" + }, { "inputs": [], "name": "DOMAIN_SEPARATOR", @@ -640,27 +677,40 @@ "type": "function" }, { - "inputs": [ + "inputs": [], + "name": "assetOracle", + "outputs": [ { - "internalType": "address", + "internalType": "contract IOracle", "name": "", "type": "address" } ], - "name": "balanceOf", + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "assetOracleData", "outputs": [ { - "internalType": "uint256", + "internalType": "bytes", "name": "", - "type": "uint256" + "type": "bytes" } ], "stateMutability": "view", "type": "function" }, { - "inputs": [], - "name": "borrowOpeningFee", + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "balanceOf", "outputs": [ { "internalType": "uint256", @@ -973,6 +1023,19 @@ "stateMutability": "view", "type": "function" }, + { + "inputs": [], + "name": "maxMintFee", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, { "inputs": [], "name": "minDebtRate", @@ -999,6 +1062,19 @@ "stateMutability": "view", "type": "function" }, + { + "inputs": [], + "name": "minMintFee", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, { "inputs": [ { @@ -1266,11 +1342,6 @@ }, { "inputs": [ - { - "internalType": "uint256", - "name": "_borrowOpeningFee", - "type": "uint256" - }, { "internalType": "contract IOracle", "name": "_oracle", @@ -1553,8 +1624,8 @@ "type": "function" } ], - "bytecode": "0x6101408060405234620001895762000017816200018e565b600f81526001602082016e546170696f63612042696742616e6760881b8152602060405162000046816200018e565b8381520192603160f81b845251902091208160e052610100918183524660a0526040519160208301907f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f92838352604085015260608401524660808401523060a084015260a0835260c083019280841060018060401b03851117620001735760408490525190206080523060c052610120908152600580546001600160a01b0319163390811790915560007f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a362013880601b5562015f90601c55612710601d556032602055612ee0602155612ad09283620001ab84396080518361230b015260a051836123d6015260c051836122d5015260e0518361235a01525182612380015251816123370152f35b634e487b7160e01b600052604160045260246000fd5b600080fd5b604081019081106001600160401b03821117620001735760405256fe608080604052600436101561001357600080fd5b60003560e01c908162a02a2014611b815750806302ce728f1461196a578063078dfbe714611866578063095ea7b3146118405780630996efb7146113bd5780630c4e84f0146112a357806318160ddd146112875780631c9e379b1461124d5780631da8bf10146111915780631fb8f81a1461117357806323b872dd14610fcf578063331960ff14610fb157806334ce998a14610f8857806334d441d014610f6a5780633644e51514610f4f57806337b6b7b914610f3157806338d52e0f14610f085780633ba0b9a914610eea5780633f741adb14610ec657806340626d8b14610ea857806344de240a14610e8a578063473e3ce714610e6c57806348e4163e14610e325780634e71e0c814610d84578063529898f214610d665780635793546214610d485780636b19ad1614610d2a5780636c3d8b8f14610d0157806370a0823114610cc75780637277854714610c9157806374645ff314610b755780637dc0d1d014610b4c5780637ecebe0014610b125780637fa0b84e14610ae15780638285ef4014610aaf57806387b2793714610a755780638c5d0ed314610a575780638da5cb5b14610a2e578063910dd7c814610815578063959916dc146107f857806399a97028146107d15780639e15e89f14610797578063a9059cbb146106b0578063b0e21e8a14610692578063b27c0e7414610661578063b7113f191461063e578063bb4cfe3b14610620578063bde39c5d14610602578063c1ad5c8d146105df578063ce8849ed146105b6578063d505accf14610416578063d8dfeb45146103ed578063dd62ed3e1461039c578063de40657714610373578063e0996cb614610355578063e30c39781461032c578063ea64dd561461030e578063eec0f42e146102f0578063f791395d146102d25763f8ba4cff146102b257600080fd5b346102cd5760003660031901126102cd576102cb61297a565b005b600080fd5b346102cd5760003660031901126102cd576020602854604051908152f35b346102cd5760003660031901126102cd576020600c54604051908152f35b346102cd5760003660031901126102cd576020601f54604051908152f35b346102cd5760003660031901126102cd576006546040516001600160a01b039091168152602090f35b346102cd5760003660031901126102cd576020601d54604051908152f35b346102cd5760003660031901126102cd576009546040516001600160a01b039091168152602090f35b346102cd5760403660031901126102cd576103b5611bcd565b6103bd611be3565b9060018060a01b038091166000526002602052604060002091166000526020526020604060002054604051908152f35b346102cd5760003660031901126102cd57600b546040516001600160a01b039091168152602090f35b346102cd5761042436611c08565b9183919395949542116105715760018060a01b0392838816948560005260046020526040600020928354600019811461055b57610507956104ff956001830190556040519060208201927f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e2668452600060408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e081526104c381611cdb565b5190206104ce6122d2565b9060405190602082019261190160f01b845260228301526042820152604281526104f781611cf7565b519020612599565b91909161249a565b1603610516576102cb9261266c565b60405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152606490fd5b634e487b7160e01b600052601160045260246000fd5b60405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b346102cd5760003660031901126102cd576008546040516001600160a01b039091168152602090f35b346102cd5760003660031901126102cd5760206105fa6126c3565b604051908152f35b346102cd5760003660031901126102cd576020602954604051908152f35b346102cd5760003660031901126102cd576020601e54604051908152f35b346102cd5760003660031901126102cd57602060ff602654166040519015158152f35b346102cd5760003660031901126102cd5760406025548151906001600160401b03908181168352831c166020820152f35b346102cd5760003660031901126102cd576020601a54604051908152f35b346102cd5760403660031901126102cd576106c9611bcd565b602435908115801590610785575b61070d575b6040519182526001600160a01b0316903390600080516020612a7b83398151915290602090a3602060405160018152f35b336000526001602052604060002054610728838210156123fc565b6001600160a01b038216908333839003610745575b5050506106dc565b61075991610754841515612441565b611dff565b336000526001602052604060002055600052604060002061077b838254611e0c565b905582808361073d565b50336001600160a01b038216146106d7565b346102cd5760403660031901126102cd5760606107be6107b5611bcd565b60243590611f4b565b9060405192835260208301526040820152f35b346102cd5760403660031901126102cd5760206105fa6107ef611bcd565b602435906121a0565b346102cd5760003660031901126102cd5760208054604051908152f35b346102cd5760403660031901126102cd576001600160401b036004358181116102cd57366023820112156102cd578060040135918211610a185760405191610867601f8201601f191660200184611d12565b808352602083019136602483830101116102cd57816000926024602093018537840101526024359161ffff831683036102cd576101009182828051810103126102cd576108b390612099565b6108bf60408301612486565b916108cc60608201612486565b9460808201519460a08301519260c08101519160ff831683036102cd5760e0820151910151918442116105715785156109f2577f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e2665b6001600160a01b03881660009081526004602052604090208054909690600019811461055b5761ffff6104ff976109af9960018401905560405194602086015216604084015260018060a01b038a16606084015260018060a01b038c1660808401528a60a084015260c083015260e082015260e081526109a081611cdb565b602081519101206104ce6122d2565b6001600160a01b0383811691160361051657156109dc576102cb926001600160a01b03908116911661266c565b6102cb926001600160a01b03908116911661261e565b7f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d6610921565b634e487b7160e01b600052604160045260246000fd5b346102cd5760003660031901126102cd576005546040516001600160a01b039091168152602090f35b346102cd5760003660031901126102cd576020601b54604051908152f35b346102cd5760203660031901126102cd576001600160a01b03610a96611bcd565b1660005260246020526020604060002054604051908152f35b346102cd5760003660031901126102cd57601454604080516001600160801b038316815260809290921c602083015290f35b346102cd5760403660031901126102cd57610b07610afd611bcd565b602435903361261e565b602060405160018152f35b346102cd5760203660031901126102cd576001600160a01b03610b33611bcd565b1660005260046020526020604060002054604051908152f35b346102cd5760003660031901126102cd57600f546040516001600160a01b039091168152602090f35b346102cd5760003660031901126102cd57604051601054816000610b9883611c86565b808352600193808516908115610c705750600114610c10575b50610bbe92500382611d12565b6040519081602080825282519081818401526000935b828510610bf7575050604092506000838284010152601f80199101168101030190f35b8481018201518686016040015293810193859350610bd4565b601060009081527f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae67294602093509091905b818310610c58575050610bbe935082010184610bb1565b85548784018501529485019486945091830191610c41565b9050610bbe94506020925060ff191682840152151560051b82010184610bb1565b346102cd5760203660031901126102cd5760043560098110156102cd5760ff610cbb602092611c57565b54166040519015158152f35b346102cd5760203660031901126102cd576001600160a01b03610ce8611bcd565b1660005260016020526020604060002054604051908152f35b346102cd5760003660031901126102cd57600a546040516001600160a01b039091168152602090f35b346102cd5760003660031901126102cd576020602754604051908152f35b346102cd5760003660031901126102cd576020601c54604051908152f35b346102cd5760003660031901126102cd576020602154604051908152f35b346102cd5760003660031901126102cd576006546001600160a01b039081811633819003610dee57806005549384167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a36001600160a01b03199283161760055516600655005b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b346102cd5760203660031901126102cd576001600160a01b03610e53611bcd565b1660005260176020526020604060002054604051908152f35b346102cd5760003660031901126102cd576020601554604051908152f35b346102cd5760003660031901126102cd576020600e54604051908152f35b346102cd5760003660031901126102cd576020601654604051908152f35b346102cd5760603660031901126102cd5760206105fa604435602435600435611e32565b346102cd5760003660031901126102cd576020601154604051908152f35b346102cd5760003660031901126102cd57600d546040516001600160a01b039091168152602090f35b346102cd5760003660031901126102cd576020601254604051908152f35b346102cd5760003660031901126102cd5760206105fa6122d2565b346102cd5760003660031901126102cd576020601954604051908152f35b346102cd5760003660031901126102cd576014546040516001600160801b039091168152602090f35b346102cd5760003660031901126102cd576020601354604051908152f35b346102cd5760603660031901126102cd57610fe8611bcd565b610ff0611be3565b604435908161102d575b6040519182526001600160a01b03908116921690600080516020612a7b83398151915290602090a3602060405160018152f35b60018060a01b03808416806000526020600181528460406000205493611055828610156123fc565b85169384840361106a575b5050505050610ffa565b8360005260028352604060002033600052835260406000205460001981036110de575b5084926110b5600080516020612a7b8339815191529795936001936107546020991515612441565b926000525260406000205560005260406000206110d3858254611e0c565b905591858481611060565b9091811061113357602094926110b588600080516020612a7b83398151915298969461110c82600196611dff565b8660005260028552604060002033600052855260406000205593509395975050929461108d565b60405162461bcd60e51b815260048101849052601860248201527745524332303a20616c6c6f77616e636520746f6f206c6f7760401b6044820152606490fd5b346102cd5760003660031901126102cd576020602a54604051908152f35b346102cd5761119f36611c08565b9183919395949542116105715760018060a01b0392838816948560005260046020526040600020928354600019811461055b5761123e956104ff956001830190556040519060208201927f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d68452600060408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e081526104c381611cdb565b1603610516576102cb9261261e565b346102cd5760203660031901126102cd576001600160a01b0361126e611bcd565b1660005260186020526020604060002054604051908152f35b346102cd5760003660031901126102cd57602060405160008152f35b346102cd5760403660031901126102cd5760043560098110156102cd576112c8611bf9565b6008549091906001600160a01b031633036113815760ff6112e882611c57565b5416151591151591821461134757808260ff61130661133594611c57565b54161515827feeec81de25875ce1725479bb76f720a8defdb43dea041919ae37bb4aae9847c0600080a4611c57565b9060ff80198354169116179055600080f35b60405162461bcd60e51b81526020600482015260126024820152714d61726b65743a2073616d6520737461746560701b6044820152606490fd5b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881d5b985d5d1a1bdc9a5e995960621b6044820152606490fd5b346102cd576101803660031901126102cd5760246001600160a01b038135818116908190036102cd57604435916001600160401b03908184116102cd57366023850112156102cd5783600401359182116102cd57368583860101116102cd57606435918183168093036102cd5761143982600554163314611d33565b60043594620186a09461144e86881115611d7e565b6020968088547fc353b09af857951dccce61b43a5854fc45beceed36c50e5d4cc2e71858a8e0df600080a3875580611801575b5086826116bc575b5050508161167b575b505060843580611666575b5060a43580611651575b5060c4358061163d575b5060e4358061161c575b5061010435806115fb575b5061012435806115c9575b50610144359081611559575b50506101643591826114eb57005b601e5483106114fb575050601f55005b9060326084926040519262461bcd60e51b845260048401528201527f4d61726b65743a206c69717569646174696f6e436f6c6c61746572616c697a616044820152711d1a5bdb94985d19481d1bdbc81cdb585b1b60721b6064820152fd5b61156590821115611d7e565b601f54811161157857601e5582806114dd565b5060256084926040519262461bcd60e51b845260048401528201527f4d61726b65743a20636f6c6c61746572616c697a6174696f6e5261746520746f6044820152646f2062696760d81b6064820152fd5b806016547fae6e0ab3b95f0a53ff9660a390ccedcbbf1f2355dce974a9841af106fddcfaba600080a3601655836114d1565b611606828210611d7e565b611613601b548211611d7e565b601c55836114c6565b611627828210611d7e565b611634601c548210611d7e565b601b55836114bb565b611648828210611d7e565b601d55836114b1565b61165d82821115611d7e565b601a55836114a7565b61167282821115611d7e565b6019558361149d565b816008549182167f5a62d22209e370e38eea92cfddcd228e656e6ec139243392a760a7769f5877fd600080a36001600160a01b031916176008558380611492565b82916116c9601054611c86565b601f81116117ad575b50600090601f841160011461173a5760009361172d575b5050508160011b916000199060031b1c1916176010555b7fa6f004921c944d4b8bf6e38462b00f36a58d62495d56b51f571ab78f732c9815600080a1858086611489565b01013590508688806116e9565b915092506010600052866000209088600094601f198516955b8a8782106117925750508460019610611776575b50505050811b01601055611700565b60001960f88660031b161c199201013516905587808881611767565b8483019093013585556001909401938b929182019101611753565b91509150601060005286600020601f840160051c81018885106117fa575b91849391601f8b94920160051c01905b8181106117e857506116d2565b600081558594508a93506001016117db565b50806117cb565b600f80546001600160a01b0319169190911790557f0b2d6eb667d0522c3eb86e4288afecae6c11591ffd1345d4d12407e0598bca9b600080a187611481565b346102cd5760403660031901126102cd57610b0761185c611bcd565b602435903361266c565b346102cd5760603660031901126102cd5761187f611bcd565b611887611bf9565b6044359081151582036102cd5760018060a01b039283916118ad83600554163314611d33565b15611951571690811590811591611949575b501561190c57806005549283167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a36001600160a01b031991821617600555600680549091169055005b60405162461bcd60e51b81526020600482015260156024820152744f776e61626c653a207a65726f206164647265737360581b6044820152606490fd5b9050836118bf565b9150501660018060a01b03196006541617600655600080f35b346102cd5760003660031901126102cd5760018060a01b03600f54166040519063d6d7d52560e01b82526020918260048201526000916010546119ac81611c86565b908160248501526001908181169081600014611b5b5750600114611b1b575b50509060409181600081809603925af18015611b0f57600091600091611ad0575b508115611a73578015611a375760409281601155817f9f9192b5edb17356c524e08d9e025c8e2f6307e6ea52fb7968faa3081f51c3c8600080a25b4260135583519215158352820152f35b60405162461bcd60e51b81526004810184905260146024820152734d61726b65743a20696e76616c6964207261746560601b6044820152606490fd5b50611a8360135460125490611e0c565b4211611a9457601154604092611a27565b60405162461bcd60e51b815260048101839052601460248201527313585c9ad95d0e881c985d19481d1bdbc81bdb1960621b6044820152606490fd5b9150506040813d604011611b07575b81611aec60409383611d12565b810103126102cd5781611afe82612099565b910151836119ec565b3d9150611adf565b6040513d6000823e3d90fd5b935060106000528460002093856000955b838710611b465750505050918101604401918060406119cb565b80548688016044015295019486908201611b2c565b60ff191660448087019190915292151560051b85019092019450829150604090506119cb565b346102cd5760403660031901126102cd57602090611b9d611bcd565b611ba5611be3565b9060018060a01b03809116600052600384526040600020911660005282526040600020548152f35b600435906001600160a01b03821682036102cd57565b602435906001600160a01b03821682036102cd57565b6024359081151582036102cd57565b60e09060031901126102cd576001600160a01b039060043582811681036102cd579160243590811681036102cd5790604435906064359060843560ff811681036102cd579060a4359060c43590565b6009811015611c70576000526007602052604060002090565b634e487b7160e01b600052602160045260246000fd5b90600182811c92168015611cb6575b6020831014611ca057565b634e487b7160e01b600052602260045260246000fd5b91607f1691611c95565b604081019081106001600160401b03821117610a1857604052565b61010081019081106001600160401b03821117610a1857604052565b608081019081106001600160401b03821117610a1857604052565b90601f801991011681019081106001600160401b03821117610a1857604052565b15611d3a57565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b15611d8557565b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881b9bdd081d985b1a59607a1b6044820152606490fd5b8181029291811591840414171561055b57565b8115611ddb570490565b634e487b7160e01b600052601260045260246000fd5b604d811161055b57600a0a90565b9190820391821161055b57565b9190820180921161055b57565b8181039291600013801582851316918412161761055b57565b601454919291611e7b91611e6c91611e6291611e58906001600160801b03831690611dbe565b9060801c90611dd1565b93601f5490611dbe565b611e7583611df1565b90611dd1565b808310611f4357611e8f611ecb9184611dff565b91611ec6611ec0611eb7601e54611eb1611ea886611df1565b60215490611e0c565b90611dbe565b611e7584611df1565b91611df1565b611e19565b6509184e72a0009081810291818305149015171561055b57670de0b6b3a76400009182810292818405149015171561055b578015611ddb57600160ff1b9180831460001983141661055b5705906000821215611f3c57811461055b57600003905b808211611f37575090565b905090565b5090611f2c565b505050600090565b6001600160a01b0390811660008181526017602090815260408220549295949391929091811561208c57611f7d6128e6565b90611f898615156120a6565b6009541683600c54898752601882526064604088205491604051948593849263442c159960e01b8452600484015260248301528960448301525afa90811561208157859161204e575b509285949261202e60189361200961204299612004611ffb60409a620186a06022540490611dbe565b601e5490611dbe565b611dd1565b815190936001600160801b0391869161202491841690611dbe565b9201511690611dd1565b81811061204657035b9783525220546120f2565b9091565b505082612037565b90508381813d831161207a575b6120658183611d12565b810103126120765751612042611fd2565b8480fd5b503d61205b565b6040513d87823e3d90fd5b5050509192505080918190565b519081151582036102cd57565b156120ad57565b60405162461bcd60e51b815260206004820152601e60248201527f4d61726b65743a2065786368616e676552617465206e6f742076616c696400006044820152606490fd5b6120fd8215156120a6565b602060018060a01b0360095416916064600c54604051948593849263442c159960e01b845260048401526024830152600060448301525afa908115611b0f5760009161216a575b50906120046121569260225490611dbe565b620186a0612166601e5483611dbe565b0491565b906020823d8211612198575b8161218360209383611d12565b81010312612195575051612004612144565b80fd5b3d9150612176565b6001600160a01b031660008181526018602052604081205490926121c3916120f2565b9183526017602052604083205480156122cc5781156122cc578181106122cc57828110156122c25760145461220c91839161075491611e58906001600160801b03831690611dbe565b90620186a092838302928084048514901517156122ae576122319291611e7591611dff565b91601b5491601c54936122448585611e19565b80820291848212600160ff1b8214166122ae57818305149015171561229a57058184820194851291129080158216911516176122865750808212611f37575090565b634e487b7160e01b81526011600452602490fd5b634e487b7160e01b83526011600452602483fd5b634e487b7160e01b85526011600452602485fd5b50505050601b5490565b50505090565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031614806123d3575b1561232d577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f000000000000000000000000000000000000000000000000000000000000000082527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a0815260c081018181106001600160401b03821117610a185760405251902090565b507f00000000000000000000000000000000000000000000000000000000000000004614612304565b1561240357565b60405162461bcd60e51b815260206004820152601660248201527545524332303a2062616c616e636520746f6f206c6f7760501b6044820152606490fd5b1561244857565b60405162461bcd60e51b815260206004820152601660248201527545524332303a206e6f207a65726f206164647265737360501b6044820152606490fd5b51906001600160a01b03821682036102cd57565b6005811015611c7057806124ab5750565b600181036124f35760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b6044820152606490fd5b600281036125405760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606490fd5b60031461254957565b60405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608490fd5b9291906fa2a8918ca85bafe22016d0b997e4df60600160ff1b0383116126125791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa156126055781516001600160a01b038116156125ff579190565b50600190565b50604051903d90823e3d90fd5b50505050600090600390565b7fe50de2333c10a9502fcb1d8ae13a51bbf423153dfc63c2b8997665b32154afc360018060a01b038092169160009083825260036020526040822094169384825260205284604082205580a4565b909160207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259160018060a01b03809416938460005260028352604060002095169485600052825280604060002055604051908152a3565b60ff60265416612841576014546001600160801b031690811561283a57600a54604051631848f2bf60e31b8152602093916001600160a01b03919085908290600490829086165afa8015611b0f5785916000916127fd575b50600460405180948193631a674cc560e11b8352165afa938415611b0f576000946127ca575b505061275d9192670de0b6b3a764000092839160295490611dbe565b0490818110156127c157612774602a548092611dff565b8381029080820485149015171561055b57611e75612795926127b594611dff565b602754926127af602854926127aa8487611dff565b611dbe565b04611e0c565b90808211611f37575090565b50505060275490565b81813d83116127f6575b6127de8183611d12565b810103126127f25751925061275d38612741565b8380fd5b503d6127d4565b909181813d8311612833575b6128138183611d12565b8101031261282f5751908282168203612195575084903861271b565b5080fd5b503d612809565b6028549150565b600a5460405163e6abad4960e01b815290602090829060049082906001600160a01b03165afa908115611b0f57600091612879575090565b906020823d821161289f575b8161289260209383611d12565b8101031261219557505190565b3d9150612885565b604051906128b482611cc0565b6014546001600160801b038116835260801c6020830152565b6001600160801b03918216908216019190821161055b57565b600060206040516128f681611cc0565b82815201526001600160401b03906129158260255460401c1642611dff565b91821561296c576129676127aa91670de0b6b3a764000061295c6129376128a7565b9660018060801b03958694858a5116906301e133806129546126c3565b041690611dbe565b0416828551166128cd565b168252565b5090506129776128a7565b90565b60405161298681611cc0565b6025546001600160401b03908181168352818160401c166129ae602085019180835242611dff565b928315612a7357602094816301e133806129c66126c3565b0416815281421683526129d76128a7565b670de0b6b3a76400006129fc60018060801b03976127aa898551168787511690611dbe565b0495612a0d818816828451166128cd565b1680825296015160801b6001600160801b031990811690961760145551915192909416931692831760409190911b67ffffffffffffffff60401b16176025557f7484db546dcd57af0104c73c8a6968dfbaf5767f047cee0dadd0499ad7df81a0600080a3565b505050505056feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa26469706673582212207f4d853832bfff012f8dc8027c995fc825ef0047d0ebc6d68fdffd82c6ce097764736f6c63430008120033", - "deployedBytecode": "0x608080604052600436101561001357600080fd5b60003560e01c908162a02a2014611b815750806302ce728f1461196a578063078dfbe714611866578063095ea7b3146118405780630996efb7146113bd5780630c4e84f0146112a357806318160ddd146112875780631c9e379b1461124d5780631da8bf10146111915780631fb8f81a1461117357806323b872dd14610fcf578063331960ff14610fb157806334ce998a14610f8857806334d441d014610f6a5780633644e51514610f4f57806337b6b7b914610f3157806338d52e0f14610f085780633ba0b9a914610eea5780633f741adb14610ec657806340626d8b14610ea857806344de240a14610e8a578063473e3ce714610e6c57806348e4163e14610e325780634e71e0c814610d84578063529898f214610d665780635793546214610d485780636b19ad1614610d2a5780636c3d8b8f14610d0157806370a0823114610cc75780637277854714610c9157806374645ff314610b755780637dc0d1d014610b4c5780637ecebe0014610b125780637fa0b84e14610ae15780638285ef4014610aaf57806387b2793714610a755780638c5d0ed314610a575780638da5cb5b14610a2e578063910dd7c814610815578063959916dc146107f857806399a97028146107d15780639e15e89f14610797578063a9059cbb146106b0578063b0e21e8a14610692578063b27c0e7414610661578063b7113f191461063e578063bb4cfe3b14610620578063bde39c5d14610602578063c1ad5c8d146105df578063ce8849ed146105b6578063d505accf14610416578063d8dfeb45146103ed578063dd62ed3e1461039c578063de40657714610373578063e0996cb614610355578063e30c39781461032c578063ea64dd561461030e578063eec0f42e146102f0578063f791395d146102d25763f8ba4cff146102b257600080fd5b346102cd5760003660031901126102cd576102cb61297a565b005b600080fd5b346102cd5760003660031901126102cd576020602854604051908152f35b346102cd5760003660031901126102cd576020600c54604051908152f35b346102cd5760003660031901126102cd576020601f54604051908152f35b346102cd5760003660031901126102cd576006546040516001600160a01b039091168152602090f35b346102cd5760003660031901126102cd576020601d54604051908152f35b346102cd5760003660031901126102cd576009546040516001600160a01b039091168152602090f35b346102cd5760403660031901126102cd576103b5611bcd565b6103bd611be3565b9060018060a01b038091166000526002602052604060002091166000526020526020604060002054604051908152f35b346102cd5760003660031901126102cd57600b546040516001600160a01b039091168152602090f35b346102cd5761042436611c08565b9183919395949542116105715760018060a01b0392838816948560005260046020526040600020928354600019811461055b57610507956104ff956001830190556040519060208201927f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e2668452600060408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e081526104c381611cdb565b5190206104ce6122d2565b9060405190602082019261190160f01b845260228301526042820152604281526104f781611cf7565b519020612599565b91909161249a565b1603610516576102cb9261266c565b60405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152606490fd5b634e487b7160e01b600052601160045260246000fd5b60405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b346102cd5760003660031901126102cd576008546040516001600160a01b039091168152602090f35b346102cd5760003660031901126102cd5760206105fa6126c3565b604051908152f35b346102cd5760003660031901126102cd576020602954604051908152f35b346102cd5760003660031901126102cd576020601e54604051908152f35b346102cd5760003660031901126102cd57602060ff602654166040519015158152f35b346102cd5760003660031901126102cd5760406025548151906001600160401b03908181168352831c166020820152f35b346102cd5760003660031901126102cd576020601a54604051908152f35b346102cd5760403660031901126102cd576106c9611bcd565b602435908115801590610785575b61070d575b6040519182526001600160a01b0316903390600080516020612a7b83398151915290602090a3602060405160018152f35b336000526001602052604060002054610728838210156123fc565b6001600160a01b038216908333839003610745575b5050506106dc565b61075991610754841515612441565b611dff565b336000526001602052604060002055600052604060002061077b838254611e0c565b905582808361073d565b50336001600160a01b038216146106d7565b346102cd5760403660031901126102cd5760606107be6107b5611bcd565b60243590611f4b565b9060405192835260208301526040820152f35b346102cd5760403660031901126102cd5760206105fa6107ef611bcd565b602435906121a0565b346102cd5760003660031901126102cd5760208054604051908152f35b346102cd5760403660031901126102cd576001600160401b036004358181116102cd57366023820112156102cd578060040135918211610a185760405191610867601f8201601f191660200184611d12565b808352602083019136602483830101116102cd57816000926024602093018537840101526024359161ffff831683036102cd576101009182828051810103126102cd576108b390612099565b6108bf60408301612486565b916108cc60608201612486565b9460808201519460a08301519260c08101519160ff831683036102cd5760e0820151910151918442116105715785156109f2577f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e2665b6001600160a01b03881660009081526004602052604090208054909690600019811461055b5761ffff6104ff976109af9960018401905560405194602086015216604084015260018060a01b038a16606084015260018060a01b038c1660808401528a60a084015260c083015260e082015260e081526109a081611cdb565b602081519101206104ce6122d2565b6001600160a01b0383811691160361051657156109dc576102cb926001600160a01b03908116911661266c565b6102cb926001600160a01b03908116911661261e565b7f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d6610921565b634e487b7160e01b600052604160045260246000fd5b346102cd5760003660031901126102cd576005546040516001600160a01b039091168152602090f35b346102cd5760003660031901126102cd576020601b54604051908152f35b346102cd5760203660031901126102cd576001600160a01b03610a96611bcd565b1660005260246020526020604060002054604051908152f35b346102cd5760003660031901126102cd57601454604080516001600160801b038316815260809290921c602083015290f35b346102cd5760403660031901126102cd57610b07610afd611bcd565b602435903361261e565b602060405160018152f35b346102cd5760203660031901126102cd576001600160a01b03610b33611bcd565b1660005260046020526020604060002054604051908152f35b346102cd5760003660031901126102cd57600f546040516001600160a01b039091168152602090f35b346102cd5760003660031901126102cd57604051601054816000610b9883611c86565b808352600193808516908115610c705750600114610c10575b50610bbe92500382611d12565b6040519081602080825282519081818401526000935b828510610bf7575050604092506000838284010152601f80199101168101030190f35b8481018201518686016040015293810193859350610bd4565b601060009081527f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae67294602093509091905b818310610c58575050610bbe935082010184610bb1565b85548784018501529485019486945091830191610c41565b9050610bbe94506020925060ff191682840152151560051b82010184610bb1565b346102cd5760203660031901126102cd5760043560098110156102cd5760ff610cbb602092611c57565b54166040519015158152f35b346102cd5760203660031901126102cd576001600160a01b03610ce8611bcd565b1660005260016020526020604060002054604051908152f35b346102cd5760003660031901126102cd57600a546040516001600160a01b039091168152602090f35b346102cd5760003660031901126102cd576020602754604051908152f35b346102cd5760003660031901126102cd576020601c54604051908152f35b346102cd5760003660031901126102cd576020602154604051908152f35b346102cd5760003660031901126102cd576006546001600160a01b039081811633819003610dee57806005549384167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a36001600160a01b03199283161760055516600655005b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b346102cd5760203660031901126102cd576001600160a01b03610e53611bcd565b1660005260176020526020604060002054604051908152f35b346102cd5760003660031901126102cd576020601554604051908152f35b346102cd5760003660031901126102cd576020600e54604051908152f35b346102cd5760003660031901126102cd576020601654604051908152f35b346102cd5760603660031901126102cd5760206105fa604435602435600435611e32565b346102cd5760003660031901126102cd576020601154604051908152f35b346102cd5760003660031901126102cd57600d546040516001600160a01b039091168152602090f35b346102cd5760003660031901126102cd576020601254604051908152f35b346102cd5760003660031901126102cd5760206105fa6122d2565b346102cd5760003660031901126102cd576020601954604051908152f35b346102cd5760003660031901126102cd576014546040516001600160801b039091168152602090f35b346102cd5760003660031901126102cd576020601354604051908152f35b346102cd5760603660031901126102cd57610fe8611bcd565b610ff0611be3565b604435908161102d575b6040519182526001600160a01b03908116921690600080516020612a7b83398151915290602090a3602060405160018152f35b60018060a01b03808416806000526020600181528460406000205493611055828610156123fc565b85169384840361106a575b5050505050610ffa565b8360005260028352604060002033600052835260406000205460001981036110de575b5084926110b5600080516020612a7b8339815191529795936001936107546020991515612441565b926000525260406000205560005260406000206110d3858254611e0c565b905591858481611060565b9091811061113357602094926110b588600080516020612a7b83398151915298969461110c82600196611dff565b8660005260028552604060002033600052855260406000205593509395975050929461108d565b60405162461bcd60e51b815260048101849052601860248201527745524332303a20616c6c6f77616e636520746f6f206c6f7760401b6044820152606490fd5b346102cd5760003660031901126102cd576020602a54604051908152f35b346102cd5761119f36611c08565b9183919395949542116105715760018060a01b0392838816948560005260046020526040600020928354600019811461055b5761123e956104ff956001830190556040519060208201927f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d68452600060408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e081526104c381611cdb565b1603610516576102cb9261261e565b346102cd5760203660031901126102cd576001600160a01b0361126e611bcd565b1660005260186020526020604060002054604051908152f35b346102cd5760003660031901126102cd57602060405160008152f35b346102cd5760403660031901126102cd5760043560098110156102cd576112c8611bf9565b6008549091906001600160a01b031633036113815760ff6112e882611c57565b5416151591151591821461134757808260ff61130661133594611c57565b54161515827feeec81de25875ce1725479bb76f720a8defdb43dea041919ae37bb4aae9847c0600080a4611c57565b9060ff80198354169116179055600080f35b60405162461bcd60e51b81526020600482015260126024820152714d61726b65743a2073616d6520737461746560701b6044820152606490fd5b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881d5b985d5d1a1bdc9a5e995960621b6044820152606490fd5b346102cd576101803660031901126102cd5760246001600160a01b038135818116908190036102cd57604435916001600160401b03908184116102cd57366023850112156102cd5783600401359182116102cd57368583860101116102cd57606435918183168093036102cd5761143982600554163314611d33565b60043594620186a09461144e86881115611d7e565b6020968088547fc353b09af857951dccce61b43a5854fc45beceed36c50e5d4cc2e71858a8e0df600080a3875580611801575b5086826116bc575b5050508161167b575b505060843580611666575b5060a43580611651575b5060c4358061163d575b5060e4358061161c575b5061010435806115fb575b5061012435806115c9575b50610144359081611559575b50506101643591826114eb57005b601e5483106114fb575050601f55005b9060326084926040519262461bcd60e51b845260048401528201527f4d61726b65743a206c69717569646174696f6e436f6c6c61746572616c697a616044820152711d1a5bdb94985d19481d1bdbc81cdb585b1b60721b6064820152fd5b61156590821115611d7e565b601f54811161157857601e5582806114dd565b5060256084926040519262461bcd60e51b845260048401528201527f4d61726b65743a20636f6c6c61746572616c697a6174696f6e5261746520746f6044820152646f2062696760d81b6064820152fd5b806016547fae6e0ab3b95f0a53ff9660a390ccedcbbf1f2355dce974a9841af106fddcfaba600080a3601655836114d1565b611606828210611d7e565b611613601b548211611d7e565b601c55836114c6565b611627828210611d7e565b611634601c548210611d7e565b601b55836114bb565b611648828210611d7e565b601d55836114b1565b61165d82821115611d7e565b601a55836114a7565b61167282821115611d7e565b6019558361149d565b816008549182167f5a62d22209e370e38eea92cfddcd228e656e6ec139243392a760a7769f5877fd600080a36001600160a01b031916176008558380611492565b82916116c9601054611c86565b601f81116117ad575b50600090601f841160011461173a5760009361172d575b5050508160011b916000199060031b1c1916176010555b7fa6f004921c944d4b8bf6e38462b00f36a58d62495d56b51f571ab78f732c9815600080a1858086611489565b01013590508688806116e9565b915092506010600052866000209088600094601f198516955b8a8782106117925750508460019610611776575b50505050811b01601055611700565b60001960f88660031b161c199201013516905587808881611767565b8483019093013585556001909401938b929182019101611753565b91509150601060005286600020601f840160051c81018885106117fa575b91849391601f8b94920160051c01905b8181106117e857506116d2565b600081558594508a93506001016117db565b50806117cb565b600f80546001600160a01b0319169190911790557f0b2d6eb667d0522c3eb86e4288afecae6c11591ffd1345d4d12407e0598bca9b600080a187611481565b346102cd5760403660031901126102cd57610b0761185c611bcd565b602435903361266c565b346102cd5760603660031901126102cd5761187f611bcd565b611887611bf9565b6044359081151582036102cd5760018060a01b039283916118ad83600554163314611d33565b15611951571690811590811591611949575b501561190c57806005549283167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a36001600160a01b031991821617600555600680549091169055005b60405162461bcd60e51b81526020600482015260156024820152744f776e61626c653a207a65726f206164647265737360581b6044820152606490fd5b9050836118bf565b9150501660018060a01b03196006541617600655600080f35b346102cd5760003660031901126102cd5760018060a01b03600f54166040519063d6d7d52560e01b82526020918260048201526000916010546119ac81611c86565b908160248501526001908181169081600014611b5b5750600114611b1b575b50509060409181600081809603925af18015611b0f57600091600091611ad0575b508115611a73578015611a375760409281601155817f9f9192b5edb17356c524e08d9e025c8e2f6307e6ea52fb7968faa3081f51c3c8600080a25b4260135583519215158352820152f35b60405162461bcd60e51b81526004810184905260146024820152734d61726b65743a20696e76616c6964207261746560601b6044820152606490fd5b50611a8360135460125490611e0c565b4211611a9457601154604092611a27565b60405162461bcd60e51b815260048101839052601460248201527313585c9ad95d0e881c985d19481d1bdbc81bdb1960621b6044820152606490fd5b9150506040813d604011611b07575b81611aec60409383611d12565b810103126102cd5781611afe82612099565b910151836119ec565b3d9150611adf565b6040513d6000823e3d90fd5b935060106000528460002093856000955b838710611b465750505050918101604401918060406119cb565b80548688016044015295019486908201611b2c565b60ff191660448087019190915292151560051b85019092019450829150604090506119cb565b346102cd5760403660031901126102cd57602090611b9d611bcd565b611ba5611be3565b9060018060a01b03809116600052600384526040600020911660005282526040600020548152f35b600435906001600160a01b03821682036102cd57565b602435906001600160a01b03821682036102cd57565b6024359081151582036102cd57565b60e09060031901126102cd576001600160a01b039060043582811681036102cd579160243590811681036102cd5790604435906064359060843560ff811681036102cd579060a4359060c43590565b6009811015611c70576000526007602052604060002090565b634e487b7160e01b600052602160045260246000fd5b90600182811c92168015611cb6575b6020831014611ca057565b634e487b7160e01b600052602260045260246000fd5b91607f1691611c95565b604081019081106001600160401b03821117610a1857604052565b61010081019081106001600160401b03821117610a1857604052565b608081019081106001600160401b03821117610a1857604052565b90601f801991011681019081106001600160401b03821117610a1857604052565b15611d3a57565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b15611d8557565b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881b9bdd081d985b1a59607a1b6044820152606490fd5b8181029291811591840414171561055b57565b8115611ddb570490565b634e487b7160e01b600052601260045260246000fd5b604d811161055b57600a0a90565b9190820391821161055b57565b9190820180921161055b57565b8181039291600013801582851316918412161761055b57565b601454919291611e7b91611e6c91611e6291611e58906001600160801b03831690611dbe565b9060801c90611dd1565b93601f5490611dbe565b611e7583611df1565b90611dd1565b808310611f4357611e8f611ecb9184611dff565b91611ec6611ec0611eb7601e54611eb1611ea886611df1565b60215490611e0c565b90611dbe565b611e7584611df1565b91611df1565b611e19565b6509184e72a0009081810291818305149015171561055b57670de0b6b3a76400009182810292818405149015171561055b578015611ddb57600160ff1b9180831460001983141661055b5705906000821215611f3c57811461055b57600003905b808211611f37575090565b905090565b5090611f2c565b505050600090565b6001600160a01b0390811660008181526017602090815260408220549295949391929091811561208c57611f7d6128e6565b90611f898615156120a6565b6009541683600c54898752601882526064604088205491604051948593849263442c159960e01b8452600484015260248301528960448301525afa90811561208157859161204e575b509285949261202e60189361200961204299612004611ffb60409a620186a06022540490611dbe565b601e5490611dbe565b611dd1565b815190936001600160801b0391869161202491841690611dbe565b9201511690611dd1565b81811061204657035b9783525220546120f2565b9091565b505082612037565b90508381813d831161207a575b6120658183611d12565b810103126120765751612042611fd2565b8480fd5b503d61205b565b6040513d87823e3d90fd5b5050509192505080918190565b519081151582036102cd57565b156120ad57565b60405162461bcd60e51b815260206004820152601e60248201527f4d61726b65743a2065786368616e676552617465206e6f742076616c696400006044820152606490fd5b6120fd8215156120a6565b602060018060a01b0360095416916064600c54604051948593849263442c159960e01b845260048401526024830152600060448301525afa908115611b0f5760009161216a575b50906120046121569260225490611dbe565b620186a0612166601e5483611dbe565b0491565b906020823d8211612198575b8161218360209383611d12565b81010312612195575051612004612144565b80fd5b3d9150612176565b6001600160a01b031660008181526018602052604081205490926121c3916120f2565b9183526017602052604083205480156122cc5781156122cc578181106122cc57828110156122c25760145461220c91839161075491611e58906001600160801b03831690611dbe565b90620186a092838302928084048514901517156122ae576122319291611e7591611dff565b91601b5491601c54936122448585611e19565b80820291848212600160ff1b8214166122ae57818305149015171561229a57058184820194851291129080158216911516176122865750808212611f37575090565b634e487b7160e01b81526011600452602490fd5b634e487b7160e01b83526011600452602483fd5b634e487b7160e01b85526011600452602485fd5b50505050601b5490565b50505090565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031614806123d3575b1561232d577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f000000000000000000000000000000000000000000000000000000000000000082527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a0815260c081018181106001600160401b03821117610a185760405251902090565b507f00000000000000000000000000000000000000000000000000000000000000004614612304565b1561240357565b60405162461bcd60e51b815260206004820152601660248201527545524332303a2062616c616e636520746f6f206c6f7760501b6044820152606490fd5b1561244857565b60405162461bcd60e51b815260206004820152601660248201527545524332303a206e6f207a65726f206164647265737360501b6044820152606490fd5b51906001600160a01b03821682036102cd57565b6005811015611c7057806124ab5750565b600181036124f35760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b6044820152606490fd5b600281036125405760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606490fd5b60031461254957565b60405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608490fd5b9291906fa2a8918ca85bafe22016d0b997e4df60600160ff1b0383116126125791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa156126055781516001600160a01b038116156125ff579190565b50600190565b50604051903d90823e3d90fd5b50505050600090600390565b7fe50de2333c10a9502fcb1d8ae13a51bbf423153dfc63c2b8997665b32154afc360018060a01b038092169160009083825260036020526040822094169384825260205284604082205580a4565b909160207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259160018060a01b03809416938460005260028352604060002095169485600052825280604060002055604051908152a3565b60ff60265416612841576014546001600160801b031690811561283a57600a54604051631848f2bf60e31b8152602093916001600160a01b03919085908290600490829086165afa8015611b0f5785916000916127fd575b50600460405180948193631a674cc560e11b8352165afa938415611b0f576000946127ca575b505061275d9192670de0b6b3a764000092839160295490611dbe565b0490818110156127c157612774602a548092611dff565b8381029080820485149015171561055b57611e75612795926127b594611dff565b602754926127af602854926127aa8487611dff565b611dbe565b04611e0c565b90808211611f37575090565b50505060275490565b81813d83116127f6575b6127de8183611d12565b810103126127f25751925061275d38612741565b8380fd5b503d6127d4565b909181813d8311612833575b6128138183611d12565b8101031261282f5751908282168203612195575084903861271b565b5080fd5b503d612809565b6028549150565b600a5460405163e6abad4960e01b815290602090829060049082906001600160a01b03165afa908115611b0f57600091612879575090565b906020823d821161289f575b8161289260209383611d12565b8101031261219557505190565b3d9150612885565b604051906128b482611cc0565b6014546001600160801b038116835260801c6020830152565b6001600160801b03918216908216019190821161055b57565b600060206040516128f681611cc0565b82815201526001600160401b03906129158260255460401c1642611dff565b91821561296c576129676127aa91670de0b6b3a764000061295c6129376128a7565b9660018060801b03958694858a5116906301e133806129546126c3565b041690611dbe565b0416828551166128cd565b168252565b5090506129776128a7565b90565b60405161298681611cc0565b6025546001600160401b03908181168352818160401c166129ae602085019180835242611dff565b928315612a7357602094816301e133806129c66126c3565b0416815281421683526129d76128a7565b670de0b6b3a76400006129fc60018060801b03976127aa898551168787511690611dbe565b0495612a0d818816828451166128cd565b1680825296015160801b6001600160801b031990811690961760145551915192909416931692831760409190911b67ffffffffffffffff60401b16176025557f7484db546dcd57af0104c73c8a6968dfbaf5767f047cee0dadd0499ad7df81a0600080a3565b505050505056feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa26469706673582212207f4d853832bfff012f8dc8027c995fc825ef0047d0ebc6d68fdffd82c6ce097764736f6c63430008120033", + "bytecode": "0x61014080604052346200018a5762000017816200018f565b600f81526001602082016e546170696f63612042696742616e6760881b8152602060405162000046816200018f565b8381520192603160f81b845251902091208160e052610100918183524660a0526040519160208301907f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f92838352604085015260608401524660808401523060a084015260a0835260c083019280841060018060401b03851117620001745760408490525190206080523060c052610120908152600580546001600160a01b0319163390811790915560007f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a362013880601b5562015f90601c55612710601d55612ee06020556103e8602d55612bdf9283620001ac8439608051836123fa015260a051836124c5015260c051836123c4015260e051836124490152518261246f015251816124260152f35b634e487b7160e01b600052604160045260246000fd5b600080fd5b604081019081106001600160401b03821117620001745760405256fe608080604052600436101561001357600080fd5b60003560e01c908162a02a2014611c275750806302ce728f14611a10578063078dfbe71461190c578063095ea7b3146118e65780630c4e84f0146117cc57806318160ddd146117b05780631c9e379b146117765780631d4d3a5d1461174d5780631da8bf10146116915780631fb8f81a1461167357806323b872dd146114cf578063331960ff146114b157806334ce998a1461148857806334d441d01461146a5780633644e5151461144f57806337b6b7b91461143157806338d52e0f146114085780633ba0b9a9146113ea5780633f741adb146113c657806340626d8b146113a857806344de240a1461138a578063473e3ce71461136c57806348e4163e146113325780634e71e0c814611284578063529898f214611267578063542afda314611249578063579354621461122b5780636b19ad161461120d5780636c3d8b8f146111e457806370a08231146111aa578063727785471461117457806374645ff3146110e157806374c9e481146110c35780637dc0d1d01461109a5780637ecebe00146110605780637fa0b84e1461102f5780638285ef4014610ffd57806387b2793714610fc35780638c5d0ed314610fa55780638da5cb5b14610f7c578063910dd7c814610d63578063932bc4f814610c8557806399a9702814610c5e5780639e15e89f14610c24578063a9059cbb14610b3d578063b0e21e8a14610b1f578063b27c0e7414610aee578063b7113f1914610acb578063bb4cfe3b14610aad578063bde39c5d14610a8f578063c1ad5c8d14610a6c578063ce8849ed14610a43578063d3fb2a38146105d7578063d505accf14610437578063d8dfeb451461040e578063dd62ed3e146103bd578063de40657714610394578063e0996cb614610376578063e30c39781461034d578063ea64dd561461032f578063eec0f42e14610311578063f791395d146102f35763f8ba4cff146102d357600080fd5b346102ee5760003660031901126102ee576102ec612a69565b005b600080fd5b346102ee5760003660031901126102ee576020602754604051908152f35b346102ee5760003660031901126102ee576020600c54604051908152f35b346102ee5760003660031901126102ee576020601f54604051908152f35b346102ee5760003660031901126102ee576006546040516001600160a01b039091168152602090f35b346102ee5760003660031901126102ee576020601d54604051908152f35b346102ee5760003660031901126102ee576009546040516001600160a01b039091168152602090f35b346102ee5760403660031901126102ee576103d6611c73565b6103de611c89565b9060018060a01b038091166000526002602052604060002091166000526020526020604060002054604051908152f35b346102ee5760003660031901126102ee57600b546040516001600160a01b039091168152602090f35b346102ee5761044536611cae565b9183919395949542116105925760018060a01b0392838816948560005260046020526040600020928354600019811461057c5761052895610520956001830190556040519060208201927f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e2668452600060408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e081526104e481611d81565b5190206104ef6123c1565b9060405190602082019261190160f01b8452602283015260428201526042815261051881611d9d565b519020612688565b919091612589565b1603610537576102ec9261275b565b60405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152606490fd5b634e487b7160e01b600052601160045260246000fd5b60405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b346102ee576101603660031901126102ee576001600160a01b03600435818116908190036102ee576024916001600160401b0383358181116102ee57366023820112156102ee5780600401359182116102ee57368583830101116102ee57604435938385168095036102ee5761065284600554163314611e22565b80610a04575b5084826108a2575b50505081610861575b505060643580610849575b5060843580610831575b5060a4358061081a575b5060c435806107f6575b5060e435806107d2575b5061010435806107a0575b50610124358061072d575b506101443590816106bf57005b601e5482106106ce5750601f55005b60849060326040519162461bcd60e51b8352602060048401528201527f4d61726b65743a206c69717569646174696f6e436f6c6c61746572616c697a616044820152711d1a5bdb94985d19481d1bdbc81cdb585b1b60721b6064820152fd5b61073c620186a0821115611e6d565b601f54811161074e57601e55816106b2565b60405162461bcd60e51b8152602060048201526025818401527f4d61726b65743a20636f6c6c61746572616c697a6174696f6e5261746520746f6044820152646f2062696760d81b6064820152608490fd5b806016547fae6e0ab3b95f0a53ff9660a390ccedcbbf1f2355dce974a9841af106fddcfaba600080a3601655816106a7565b6107e0620186a08210611e6d565b6107ed601b548211611e6d565b601c558161069c565b610804620186a08210611e6d565b610811601c548210611e6d565b601b5581610692565b610828620186a08210611e6d565b601d5581610688565b610840620186a0821115611e6d565b601a558161067e565b610858620186a0821115611e6d565b60195581610674565b816008549182167f5a62d22209e370e38eea92cfddcd228e656e6ec139243392a760a7769f5877fd600080a36001600160a01b031916176008558180610669565b82916108af601054611d2c565b601f81116109a3575b50600090601f841160011461092057600093610913575b5050508160011b916000199060031b1c1916176010555b7fa6f004921c944d4b8bf6e38462b00f36a58d62495d56b51f571ab78f732c9815600080a1838084610660565b01013590508486806108cf565b60106000908152601f1985169550600080516020612b8a83398151915293509091889160205b8782106109845750508460019610610968575b50505050811b016010556108e6565b60001960f88660031b161c199201013516905585808681610959565b8285019093013585556001949094019389929182019190810190610946565b60106000529092509050600080516020612b8a833981519152601f840160051c8101602085106109fd575b91849391601f8994920160051c01905b8181106109eb57506108b8565b600081558594508893506001016109de565b50806109ce565b600f80546001600160a01b0319169190911790557f0b2d6eb667d0522c3eb86e4288afecae6c11591ffd1345d4d12407e0598bca9b600080a185610658565b346102ee5760003660031901126102ee576008546040516001600160a01b039091168152602090f35b346102ee5760003660031901126102ee576020610a876127b2565b604051908152f35b346102ee5760003660031901126102ee576020602854604051908152f35b346102ee5760003660031901126102ee576020601e54604051908152f35b346102ee5760003660031901126102ee57602060ff602554166040519015158152f35b346102ee5760003660031901126102ee5760406024548151906001600160401b03908181168352831c166020820152f35b346102ee5760003660031901126102ee576020601a54604051908152f35b346102ee5760403660031901126102ee57610b56611c73565b602435908115801590610c12575b610b9a575b6040519182526001600160a01b0316903390600080516020612b6a83398151915290602090a3602060405160018152f35b336000526001602052604060002054610bb5838210156124eb565b6001600160a01b038216908333839003610bd2575b505050610b69565b610be691610be1841515612530565b611eee565b3360005260016020526040600020556000526040600020610c08838254611efb565b9055828083610bca565b50336001600160a01b03821614610b64565b346102ee5760403660031901126102ee576060610c4b610c42611c73565b6024359061203a565b9060405192835260208301526040820152f35b346102ee5760403660031901126102ee576020610a87610c7c611c73565b6024359061228f565b346102ee5760003660031901126102ee57604051600090602b54610ca881611d2c565b808352600191808316908115610d3b5750600114610ce1575b610cdd83610cd181870382611db8565b60405191829182611dd9565b0390f35b602b600090815260209450917f11c44e4875b74d31ff9fd779bf2566af7bd15b87fc985d01f5094b89e3669e4f5b828410610d2857505050810190910190610cd181610cc1565b8054858501870152928501928101610d0f565b610cdd9550610cd193506020915091849260ff191682840152151560051b8201019350610cc1565b346102ee5760403660031901126102ee576001600160401b036004358181116102ee57366023820112156102ee578060040135918211610f665760405191610db5601f8201601f191660200184611db8565b808352602083019136602483830101116102ee57816000926024602093018537840101526024359161ffff831683036102ee576101009182828051810103126102ee57610e0190612188565b610e0d60408301612575565b91610e1a60608201612575565b9460808201519460a08301519260c08101519160ff831683036102ee5760e082015191015191844211610592578515610f40577f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e2665b6001600160a01b03881660009081526004602052604090208054909690600019811461057c5761ffff61052097610efd9960018401905560405194602086015216604084015260018060a01b038a16606084015260018060a01b038c1660808401528a60a084015260c083015260e082015260e08152610eee81611d81565b602081519101206104ef6123c1565b6001600160a01b038381169116036105375715610f2a576102ec926001600160a01b03908116911661275b565b6102ec926001600160a01b03908116911661270d565b7f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d6610e6f565b634e487b7160e01b600052604160045260246000fd5b346102ee5760003660031901126102ee576005546040516001600160a01b039091168152602090f35b346102ee5760003660031901126102ee576020601b54604051908152f35b346102ee5760203660031901126102ee576001600160a01b03610fe4611c73565b1660005260236020526020604060002054604051908152f35b346102ee5760003660031901126102ee57601454604080516001600160801b038316815260809290921c602083015290f35b346102ee5760403660031901126102ee5761105561104b611c73565b602435903361270d565b602060405160018152f35b346102ee5760203660031901126102ee576001600160a01b03611081611c73565b1660005260046020526020604060002054604051908152f35b346102ee5760003660031901126102ee57600f546040516001600160a01b039091168152602090f35b346102ee5760003660031901126102ee576020602d54604051908152f35b346102ee5760003660031901126102ee5760405160009060105461110481611d2c565b808352600191808316908115610d3b575060011461112c57610cdd83610cd181870382611db8565b601060009081526020945091600080516020612b8a8339815191525b82841061116157505050810190910190610cd181610cc1565b8054858501870152928501928101611148565b346102ee5760203660031901126102ee5760043560098110156102ee5760ff61119e602092611cfd565b54166040519015158152f35b346102ee5760203660031901126102ee576001600160a01b036111cb611c73565b1660005260016020526020604060002054604051908152f35b346102ee5760003660031901126102ee57600a546040516001600160a01b039091168152602090f35b346102ee5760003660031901126102ee576020602654604051908152f35b346102ee5760003660031901126102ee576020601c54604051908152f35b346102ee5760003660031901126102ee576020602c54604051908152f35b346102ee5760003660031901126102ee5760208054604051908152f35b346102ee5760003660031901126102ee576006546001600160a01b0390818116338190036112ee57806005549384167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a36001600160a01b03199283161760055516600655005b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b346102ee5760203660031901126102ee576001600160a01b03611353611c73565b1660005260176020526020604060002054604051908152f35b346102ee5760003660031901126102ee576020601554604051908152f35b346102ee5760003660031901126102ee576020600e54604051908152f35b346102ee5760003660031901126102ee576020601654604051908152f35b346102ee5760603660031901126102ee576020610a87604435602435600435611f21565b346102ee5760003660031901126102ee576020601154604051908152f35b346102ee5760003660031901126102ee57600d546040516001600160a01b039091168152602090f35b346102ee5760003660031901126102ee576020601254604051908152f35b346102ee5760003660031901126102ee576020610a876123c1565b346102ee5760003660031901126102ee576020601954604051908152f35b346102ee5760003660031901126102ee576014546040516001600160801b039091168152602090f35b346102ee5760003660031901126102ee576020601354604051908152f35b346102ee5760603660031901126102ee576114e8611c73565b6114f0611c89565b604435908161152d575b6040519182526001600160a01b03908116921690600080516020612b6a83398151915290602090a3602060405160018152f35b60018060a01b03808416806000526020600181528460406000205493611555828610156124eb565b85169384840361156a575b50505050506114fa565b8360005260028352604060002033600052835260406000205460001981036115de575b5084926115b5600080516020612b6a833981519152979593600193610be16020991515612530565b926000525260406000205560005260406000206115d3858254611efb565b905591858481611560565b9091811061163357602094926115b588600080516020612b6a83398151915298969461160c82600196611eee565b8660005260028552604060002033600052855260406000205593509395975050929461158d565b60405162461bcd60e51b815260048101849052601860248201527745524332303a20616c6c6f77616e636520746f6f206c6f7760401b6044820152606490fd5b346102ee5760003660031901126102ee576020602954604051908152f35b346102ee5761169f36611cae565b9183919395949542116105925760018060a01b0392838816948560005260046020526040600020928354600019811461057c5761173e95610520956001830190556040519060208201927f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d68452600060408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e081526104e481611d81565b1603610537576102ec9261270d565b346102ee5760003660031901126102ee57602a546040516001600160a01b039091168152602090f35b346102ee5760203660031901126102ee576001600160a01b03611797611c73565b1660005260186020526020604060002054604051908152f35b346102ee5760003660031901126102ee57602060405160008152f35b346102ee5760403660031901126102ee5760043560098110156102ee576117f1611c9f565b6008549091906001600160a01b031633036118aa5760ff61181182611cfd565b5416151591151591821461187057808260ff61182f61185e94611cfd565b54161515827feeec81de25875ce1725479bb76f720a8defdb43dea041919ae37bb4aae9847c0600080a4611cfd565b9060ff80198354169116179055600080f35b60405162461bcd60e51b81526020600482015260126024820152714d61726b65743a2073616d6520737461746560701b6044820152606490fd5b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881d5b985d5d1a1bdc9a5e995960621b6044820152606490fd5b346102ee5760403660031901126102ee57611055611902611c73565b602435903361275b565b346102ee5760603660031901126102ee57611925611c73565b61192d611c9f565b6044359081151582036102ee5760018060a01b0392839161195383600554163314611e22565b156119f75716908115908115916119ef575b50156119b257806005549283167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a36001600160a01b031991821617600555600680549091169055005b60405162461bcd60e51b81526020600482015260156024820152744f776e61626c653a207a65726f206164647265737360581b6044820152606490fd5b905083611965565b9150501660018060a01b03196006541617600655600080f35b346102ee5760003660031901126102ee5760018060a01b03600f54166040519063d6d7d52560e01b8252602091826004820152600091601054611a5281611d2c565b908160248501526001908181169081600014611c015750600114611bc1575b50509060409181600081809603925af18015611bb557600091600091611b76575b508115611b19578015611add5760409281601155817f9f9192b5edb17356c524e08d9e025c8e2f6307e6ea52fb7968faa3081f51c3c8600080a25b4260135583519215158352820152f35b60405162461bcd60e51b81526004810184905260146024820152734d61726b65743a20696e76616c6964207261746560601b6044820152606490fd5b50611b2960135460125490611efb565b4211611b3a57601154604092611acd565b60405162461bcd60e51b815260048101839052601460248201527313585c9ad95d0e881c985d19481d1bdbc81bdb1960621b6044820152606490fd5b9150506040813d604011611bad575b81611b9260409383611db8565b810103126102ee5781611ba482612188565b91015183611a92565b3d9150611b85565b6040513d6000823e3d90fd5b935060106000528460002093856000955b838710611bec575050505091810160440191806040611a71565b80548688016044015295019486908201611bd2565b60ff191660448087019190915292151560051b8501909201945082915060409050611a71565b346102ee5760403660031901126102ee57602090611c43611c73565b611c4b611c89565b9060018060a01b03809116600052600384526040600020911660005282526040600020548152f35b600435906001600160a01b03821682036102ee57565b602435906001600160a01b03821682036102ee57565b6024359081151582036102ee57565b60e09060031901126102ee576001600160a01b039060043582811681036102ee579160243590811681036102ee5790604435906064359060843560ff811681036102ee579060a4359060c43590565b6009811015611d16576000526007602052604060002090565b634e487b7160e01b600052602160045260246000fd5b90600182811c92168015611d5c575b6020831014611d4657565b634e487b7160e01b600052602260045260246000fd5b91607f1691611d3b565b604081019081106001600160401b03821117610f6657604052565b61010081019081106001600160401b03821117610f6657604052565b608081019081106001600160401b03821117610f6657604052565b90601f801991011681019081106001600160401b03821117610f6657604052565b6020808252825181830181905290939260005b828110611e0e57505060409293506000838284010152601f8019910116010190565b818101860151848201604001528501611dec565b15611e2957565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b15611e7457565b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881b9bdd081d985b1a59607a1b6044820152606490fd5b8181029291811591840414171561057c57565b8115611eca570490565b634e487b7160e01b600052601260045260246000fd5b604d811161057c57600a0a90565b9190820391821161057c57565b9190820180921161057c57565b8181039291600013801582851316918412161761057c57565b601454919291611f6a91611f5b91611f5191611f47906001600160801b03831690611ead565b9060801c90611ec0565b93601f5490611ead565b611f6483611ee0565b90611ec0565b80831061203257611f7e611fba9184611eee565b91611fb5611faf611fa6601e54611fa0611f9786611ee0565b60205490611efb565b90611ead565b611f6484611ee0565b91611ee0565b611f08565b6509184e72a0009081810291818305149015171561057c57670de0b6b3a76400009182810292818405149015171561057c578015611eca57600160ff1b9180831460001983141661057c570590600082121561202b57811461057c57600003905b808211612026575090565b905090565b509061201b565b505050600090565b6001600160a01b0390811660008181526017602090815260408220549295949391929091811561217b5761206c6129d5565b90612078861515612195565b6009541683600c54898752601882526064604088205491604051948593849263442c159960e01b8452600484015260248301528960448301525afa90811561217057859161213d575b509285949261211d6018936120f8612131996120f36120ea60409a620186a06021540490611ead565b601e5490611ead565b611ec0565b815190936001600160801b0391869161211391841690611ead565b9201511690611ec0565b81811061213557035b9783525220546121e1565b9091565b505082612126565b90508381813d8311612169575b6121548183611db8565b8101031261216557516121316120c1565b8480fd5b503d61214a565b6040513d87823e3d90fd5b5050509192505080918190565b519081151582036102ee57565b1561219c57565b60405162461bcd60e51b815260206004820152601e60248201527f4d61726b65743a2065786368616e676552617465206e6f742076616c696400006044820152606490fd5b6121ec821515612195565b602060018060a01b0360095416916064600c54604051948593849263442c159960e01b845260048401526024830152600060448301525afa908115611bb557600091612259575b50906120f36122459260215490611ead565b620186a0612255601e5483611ead565b0491565b906020823d8211612287575b8161227260209383611db8565b810103126122845750516120f3612233565b80fd5b3d9150612265565b6001600160a01b031660008181526018602052604081205490926122b2916121e1565b9183526017602052604083205480156123bb5781156123bb578181106123bb57828110156123b1576014546122fb918391610be191611f47906001600160801b03831690611ead565b90620186a0928383029280840485149015171561239d576123209291611f6491611eee565b91601b5491601c54936123338585611f08565b80820291848212600160ff1b82141661239d57818305149015171561238957058184820194851291129080158216911516176123755750808212612026575090565b634e487b7160e01b81526011600452602490fd5b634e487b7160e01b83526011600452602483fd5b634e487b7160e01b85526011600452602485fd5b50505050601b5490565b50505090565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031614806124c2575b1561241c577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f000000000000000000000000000000000000000000000000000000000000000082527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a0815260c081018181106001600160401b03821117610f665760405251902090565b507f000000000000000000000000000000000000000000000000000000000000000046146123f3565b156124f257565b60405162461bcd60e51b815260206004820152601660248201527545524332303a2062616c616e636520746f6f206c6f7760501b6044820152606490fd5b1561253757565b60405162461bcd60e51b815260206004820152601660248201527545524332303a206e6f207a65726f206164647265737360501b6044820152606490fd5b51906001600160a01b03821682036102ee57565b6005811015611d16578061259a5750565b600181036125e25760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b6044820152606490fd5b6002810361262f5760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606490fd5b60031461263857565b60405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608490fd5b9291906fa2a8918ca85bafe22016d0b997e4df60600160ff1b0383116127015791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa156126f45781516001600160a01b038116156126ee579190565b50600190565b50604051903d90823e3d90fd5b50505050600090600390565b7fe50de2333c10a9502fcb1d8ae13a51bbf423153dfc63c2b8997665b32154afc360018060a01b038092169160009083825260036020526040822094169384825260205284604082205580a4565b909160207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259160018060a01b03809416938460005260028352604060002095169485600052825280604060002055604051908152a3565b60ff60255416612930576014546001600160801b031690811561292957600a54604051631848f2bf60e31b8152602093916001600160a01b03919085908290600490829086165afa8015611bb55785916000916128ec575b50600460405180948193631a674cc560e11b8352165afa938415611bb5576000946128b9575b505061284c9192670de0b6b3a764000092839160285490611ead565b0490818110156128b0576128636029548092611eee565b8381029080820485149015171561057c57611f64612884926128a494611eee565b6026549261289e602754926128998487611eee565b611ead565b04611efb565b90808211612026575090565b50505060265490565b81813d83116128e5575b6128cd8183611db8565b810103126128e15751925061284c38612830565b8380fd5b503d6128c3565b909181813d8311612922575b6129028183611db8565b8101031261291e5751908282168203612284575084903861280a565b5080fd5b503d6128f8565b6027549150565b600a5460405163e6abad4960e01b815290602090829060049082906001600160a01b03165afa908115611bb557600091612968575090565b906020823d821161298e575b8161298160209383611db8565b8101031261228457505190565b3d9150612974565b604051906129a382611d66565b6014546001600160801b038116835260801c6020830152565b6001600160801b03918216908216019190821161057c57565b600060206040516129e581611d66565b82815201526001600160401b0390612a048260245460401c1642611eee565b918215612a5b57612a5661289991670de0b6b3a7640000612a4b612a26612996565b9660018060801b03958694858a5116906301e13380612a436127b2565b041690611ead565b0416828551166129bc565b168252565b509050612a66612996565b90565b604051612a7581611d66565b6024546001600160401b03908181168352818160401c16612a9d602085019180835242611eee565b928315612b6257602094816301e13380612ab56127b2565b041681528142168352612ac6612996565b670de0b6b3a7640000612aeb60018060801b0397612899898551168787511690611ead565b0495612afc818816828451166129bc565b1680825296015160801b6001600160801b031990811690961760145551915192909416931692831760409190911b67ffffffffffffffff60401b16176024557f7484db546dcd57af0104c73c8a6968dfbaf5767f047cee0dadd0499ad7df81a0600080a3565b505050505056feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae672a2646970667358221220a0cbe3086b31edd259f56d95eb68ed1e6d574fa7458606dfdfe4d71e2381e24764736f6c63430008120033", + "deployedBytecode": "0x608080604052600436101561001357600080fd5b60003560e01c908162a02a2014611c275750806302ce728f14611a10578063078dfbe71461190c578063095ea7b3146118e65780630c4e84f0146117cc57806318160ddd146117b05780631c9e379b146117765780631d4d3a5d1461174d5780631da8bf10146116915780631fb8f81a1461167357806323b872dd146114cf578063331960ff146114b157806334ce998a1461148857806334d441d01461146a5780633644e5151461144f57806337b6b7b91461143157806338d52e0f146114085780633ba0b9a9146113ea5780633f741adb146113c657806340626d8b146113a857806344de240a1461138a578063473e3ce71461136c57806348e4163e146113325780634e71e0c814611284578063529898f214611267578063542afda314611249578063579354621461122b5780636b19ad161461120d5780636c3d8b8f146111e457806370a08231146111aa578063727785471461117457806374645ff3146110e157806374c9e481146110c35780637dc0d1d01461109a5780637ecebe00146110605780637fa0b84e1461102f5780638285ef4014610ffd57806387b2793714610fc35780638c5d0ed314610fa55780638da5cb5b14610f7c578063910dd7c814610d63578063932bc4f814610c8557806399a9702814610c5e5780639e15e89f14610c24578063a9059cbb14610b3d578063b0e21e8a14610b1f578063b27c0e7414610aee578063b7113f1914610acb578063bb4cfe3b14610aad578063bde39c5d14610a8f578063c1ad5c8d14610a6c578063ce8849ed14610a43578063d3fb2a38146105d7578063d505accf14610437578063d8dfeb451461040e578063dd62ed3e146103bd578063de40657714610394578063e0996cb614610376578063e30c39781461034d578063ea64dd561461032f578063eec0f42e14610311578063f791395d146102f35763f8ba4cff146102d357600080fd5b346102ee5760003660031901126102ee576102ec612a69565b005b600080fd5b346102ee5760003660031901126102ee576020602754604051908152f35b346102ee5760003660031901126102ee576020600c54604051908152f35b346102ee5760003660031901126102ee576020601f54604051908152f35b346102ee5760003660031901126102ee576006546040516001600160a01b039091168152602090f35b346102ee5760003660031901126102ee576020601d54604051908152f35b346102ee5760003660031901126102ee576009546040516001600160a01b039091168152602090f35b346102ee5760403660031901126102ee576103d6611c73565b6103de611c89565b9060018060a01b038091166000526002602052604060002091166000526020526020604060002054604051908152f35b346102ee5760003660031901126102ee57600b546040516001600160a01b039091168152602090f35b346102ee5761044536611cae565b9183919395949542116105925760018060a01b0392838816948560005260046020526040600020928354600019811461057c5761052895610520956001830190556040519060208201927f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e2668452600060408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e081526104e481611d81565b5190206104ef6123c1565b9060405190602082019261190160f01b8452602283015260428201526042815261051881611d9d565b519020612688565b919091612589565b1603610537576102ec9261275b565b60405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152606490fd5b634e487b7160e01b600052601160045260246000fd5b60405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b346102ee576101603660031901126102ee576001600160a01b03600435818116908190036102ee576024916001600160401b0383358181116102ee57366023820112156102ee5780600401359182116102ee57368583830101116102ee57604435938385168095036102ee5761065284600554163314611e22565b80610a04575b5084826108a2575b50505081610861575b505060643580610849575b5060843580610831575b5060a4358061081a575b5060c435806107f6575b5060e435806107d2575b5061010435806107a0575b50610124358061072d575b506101443590816106bf57005b601e5482106106ce5750601f55005b60849060326040519162461bcd60e51b8352602060048401528201527f4d61726b65743a206c69717569646174696f6e436f6c6c61746572616c697a616044820152711d1a5bdb94985d19481d1bdbc81cdb585b1b60721b6064820152fd5b61073c620186a0821115611e6d565b601f54811161074e57601e55816106b2565b60405162461bcd60e51b8152602060048201526025818401527f4d61726b65743a20636f6c6c61746572616c697a6174696f6e5261746520746f6044820152646f2062696760d81b6064820152608490fd5b806016547fae6e0ab3b95f0a53ff9660a390ccedcbbf1f2355dce974a9841af106fddcfaba600080a3601655816106a7565b6107e0620186a08210611e6d565b6107ed601b548211611e6d565b601c558161069c565b610804620186a08210611e6d565b610811601c548210611e6d565b601b5581610692565b610828620186a08210611e6d565b601d5581610688565b610840620186a0821115611e6d565b601a558161067e565b610858620186a0821115611e6d565b60195581610674565b816008549182167f5a62d22209e370e38eea92cfddcd228e656e6ec139243392a760a7769f5877fd600080a36001600160a01b031916176008558180610669565b82916108af601054611d2c565b601f81116109a3575b50600090601f841160011461092057600093610913575b5050508160011b916000199060031b1c1916176010555b7fa6f004921c944d4b8bf6e38462b00f36a58d62495d56b51f571ab78f732c9815600080a1838084610660565b01013590508486806108cf565b60106000908152601f1985169550600080516020612b8a83398151915293509091889160205b8782106109845750508460019610610968575b50505050811b016010556108e6565b60001960f88660031b161c199201013516905585808681610959565b8285019093013585556001949094019389929182019190810190610946565b60106000529092509050600080516020612b8a833981519152601f840160051c8101602085106109fd575b91849391601f8994920160051c01905b8181106109eb57506108b8565b600081558594508893506001016109de565b50806109ce565b600f80546001600160a01b0319169190911790557f0b2d6eb667d0522c3eb86e4288afecae6c11591ffd1345d4d12407e0598bca9b600080a185610658565b346102ee5760003660031901126102ee576008546040516001600160a01b039091168152602090f35b346102ee5760003660031901126102ee576020610a876127b2565b604051908152f35b346102ee5760003660031901126102ee576020602854604051908152f35b346102ee5760003660031901126102ee576020601e54604051908152f35b346102ee5760003660031901126102ee57602060ff602554166040519015158152f35b346102ee5760003660031901126102ee5760406024548151906001600160401b03908181168352831c166020820152f35b346102ee5760003660031901126102ee576020601a54604051908152f35b346102ee5760403660031901126102ee57610b56611c73565b602435908115801590610c12575b610b9a575b6040519182526001600160a01b0316903390600080516020612b6a83398151915290602090a3602060405160018152f35b336000526001602052604060002054610bb5838210156124eb565b6001600160a01b038216908333839003610bd2575b505050610b69565b610be691610be1841515612530565b611eee565b3360005260016020526040600020556000526040600020610c08838254611efb565b9055828083610bca565b50336001600160a01b03821614610b64565b346102ee5760403660031901126102ee576060610c4b610c42611c73565b6024359061203a565b9060405192835260208301526040820152f35b346102ee5760403660031901126102ee576020610a87610c7c611c73565b6024359061228f565b346102ee5760003660031901126102ee57604051600090602b54610ca881611d2c565b808352600191808316908115610d3b5750600114610ce1575b610cdd83610cd181870382611db8565b60405191829182611dd9565b0390f35b602b600090815260209450917f11c44e4875b74d31ff9fd779bf2566af7bd15b87fc985d01f5094b89e3669e4f5b828410610d2857505050810190910190610cd181610cc1565b8054858501870152928501928101610d0f565b610cdd9550610cd193506020915091849260ff191682840152151560051b8201019350610cc1565b346102ee5760403660031901126102ee576001600160401b036004358181116102ee57366023820112156102ee578060040135918211610f665760405191610db5601f8201601f191660200184611db8565b808352602083019136602483830101116102ee57816000926024602093018537840101526024359161ffff831683036102ee576101009182828051810103126102ee57610e0190612188565b610e0d60408301612575565b91610e1a60608201612575565b9460808201519460a08301519260c08101519160ff831683036102ee5760e082015191015191844211610592578515610f40577f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e2665b6001600160a01b03881660009081526004602052604090208054909690600019811461057c5761ffff61052097610efd9960018401905560405194602086015216604084015260018060a01b038a16606084015260018060a01b038c1660808401528a60a084015260c083015260e082015260e08152610eee81611d81565b602081519101206104ef6123c1565b6001600160a01b038381169116036105375715610f2a576102ec926001600160a01b03908116911661275b565b6102ec926001600160a01b03908116911661270d565b7f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d6610e6f565b634e487b7160e01b600052604160045260246000fd5b346102ee5760003660031901126102ee576005546040516001600160a01b039091168152602090f35b346102ee5760003660031901126102ee576020601b54604051908152f35b346102ee5760203660031901126102ee576001600160a01b03610fe4611c73565b1660005260236020526020604060002054604051908152f35b346102ee5760003660031901126102ee57601454604080516001600160801b038316815260809290921c602083015290f35b346102ee5760403660031901126102ee5761105561104b611c73565b602435903361270d565b602060405160018152f35b346102ee5760203660031901126102ee576001600160a01b03611081611c73565b1660005260046020526020604060002054604051908152f35b346102ee5760003660031901126102ee57600f546040516001600160a01b039091168152602090f35b346102ee5760003660031901126102ee576020602d54604051908152f35b346102ee5760003660031901126102ee5760405160009060105461110481611d2c565b808352600191808316908115610d3b575060011461112c57610cdd83610cd181870382611db8565b601060009081526020945091600080516020612b8a8339815191525b82841061116157505050810190910190610cd181610cc1565b8054858501870152928501928101611148565b346102ee5760203660031901126102ee5760043560098110156102ee5760ff61119e602092611cfd565b54166040519015158152f35b346102ee5760203660031901126102ee576001600160a01b036111cb611c73565b1660005260016020526020604060002054604051908152f35b346102ee5760003660031901126102ee57600a546040516001600160a01b039091168152602090f35b346102ee5760003660031901126102ee576020602654604051908152f35b346102ee5760003660031901126102ee576020601c54604051908152f35b346102ee5760003660031901126102ee576020602c54604051908152f35b346102ee5760003660031901126102ee5760208054604051908152f35b346102ee5760003660031901126102ee576006546001600160a01b0390818116338190036112ee57806005549384167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a36001600160a01b03199283161760055516600655005b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b346102ee5760203660031901126102ee576001600160a01b03611353611c73565b1660005260176020526020604060002054604051908152f35b346102ee5760003660031901126102ee576020601554604051908152f35b346102ee5760003660031901126102ee576020600e54604051908152f35b346102ee5760003660031901126102ee576020601654604051908152f35b346102ee5760603660031901126102ee576020610a87604435602435600435611f21565b346102ee5760003660031901126102ee576020601154604051908152f35b346102ee5760003660031901126102ee57600d546040516001600160a01b039091168152602090f35b346102ee5760003660031901126102ee576020601254604051908152f35b346102ee5760003660031901126102ee576020610a876123c1565b346102ee5760003660031901126102ee576020601954604051908152f35b346102ee5760003660031901126102ee576014546040516001600160801b039091168152602090f35b346102ee5760003660031901126102ee576020601354604051908152f35b346102ee5760603660031901126102ee576114e8611c73565b6114f0611c89565b604435908161152d575b6040519182526001600160a01b03908116921690600080516020612b6a83398151915290602090a3602060405160018152f35b60018060a01b03808416806000526020600181528460406000205493611555828610156124eb565b85169384840361156a575b50505050506114fa565b8360005260028352604060002033600052835260406000205460001981036115de575b5084926115b5600080516020612b6a833981519152979593600193610be16020991515612530565b926000525260406000205560005260406000206115d3858254611efb565b905591858481611560565b9091811061163357602094926115b588600080516020612b6a83398151915298969461160c82600196611eee565b8660005260028552604060002033600052855260406000205593509395975050929461158d565b60405162461bcd60e51b815260048101849052601860248201527745524332303a20616c6c6f77616e636520746f6f206c6f7760401b6044820152606490fd5b346102ee5760003660031901126102ee576020602954604051908152f35b346102ee5761169f36611cae565b9183919395949542116105925760018060a01b0392838816948560005260046020526040600020928354600019811461057c5761173e95610520956001830190556040519060208201927f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d68452600060408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e081526104e481611d81565b1603610537576102ec9261270d565b346102ee5760003660031901126102ee57602a546040516001600160a01b039091168152602090f35b346102ee5760203660031901126102ee576001600160a01b03611797611c73565b1660005260186020526020604060002054604051908152f35b346102ee5760003660031901126102ee57602060405160008152f35b346102ee5760403660031901126102ee5760043560098110156102ee576117f1611c9f565b6008549091906001600160a01b031633036118aa5760ff61181182611cfd565b5416151591151591821461187057808260ff61182f61185e94611cfd565b54161515827feeec81de25875ce1725479bb76f720a8defdb43dea041919ae37bb4aae9847c0600080a4611cfd565b9060ff80198354169116179055600080f35b60405162461bcd60e51b81526020600482015260126024820152714d61726b65743a2073616d6520737461746560701b6044820152606490fd5b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881d5b985d5d1a1bdc9a5e995960621b6044820152606490fd5b346102ee5760403660031901126102ee57611055611902611c73565b602435903361275b565b346102ee5760603660031901126102ee57611925611c73565b61192d611c9f565b6044359081151582036102ee5760018060a01b0392839161195383600554163314611e22565b156119f75716908115908115916119ef575b50156119b257806005549283167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a36001600160a01b031991821617600555600680549091169055005b60405162461bcd60e51b81526020600482015260156024820152744f776e61626c653a207a65726f206164647265737360581b6044820152606490fd5b905083611965565b9150501660018060a01b03196006541617600655600080f35b346102ee5760003660031901126102ee5760018060a01b03600f54166040519063d6d7d52560e01b8252602091826004820152600091601054611a5281611d2c565b908160248501526001908181169081600014611c015750600114611bc1575b50509060409181600081809603925af18015611bb557600091600091611b76575b508115611b19578015611add5760409281601155817f9f9192b5edb17356c524e08d9e025c8e2f6307e6ea52fb7968faa3081f51c3c8600080a25b4260135583519215158352820152f35b60405162461bcd60e51b81526004810184905260146024820152734d61726b65743a20696e76616c6964207261746560601b6044820152606490fd5b50611b2960135460125490611efb565b4211611b3a57601154604092611acd565b60405162461bcd60e51b815260048101839052601460248201527313585c9ad95d0e881c985d19481d1bdbc81bdb1960621b6044820152606490fd5b9150506040813d604011611bad575b81611b9260409383611db8565b810103126102ee5781611ba482612188565b91015183611a92565b3d9150611b85565b6040513d6000823e3d90fd5b935060106000528460002093856000955b838710611bec575050505091810160440191806040611a71565b80548688016044015295019486908201611bd2565b60ff191660448087019190915292151560051b8501909201945082915060409050611a71565b346102ee5760403660031901126102ee57602090611c43611c73565b611c4b611c89565b9060018060a01b03809116600052600384526040600020911660005282526040600020548152f35b600435906001600160a01b03821682036102ee57565b602435906001600160a01b03821682036102ee57565b6024359081151582036102ee57565b60e09060031901126102ee576001600160a01b039060043582811681036102ee579160243590811681036102ee5790604435906064359060843560ff811681036102ee579060a4359060c43590565b6009811015611d16576000526007602052604060002090565b634e487b7160e01b600052602160045260246000fd5b90600182811c92168015611d5c575b6020831014611d4657565b634e487b7160e01b600052602260045260246000fd5b91607f1691611d3b565b604081019081106001600160401b03821117610f6657604052565b61010081019081106001600160401b03821117610f6657604052565b608081019081106001600160401b03821117610f6657604052565b90601f801991011681019081106001600160401b03821117610f6657604052565b6020808252825181830181905290939260005b828110611e0e57505060409293506000838284010152601f8019910116010190565b818101860151848201604001528501611dec565b15611e2957565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b15611e7457565b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881b9bdd081d985b1a59607a1b6044820152606490fd5b8181029291811591840414171561057c57565b8115611eca570490565b634e487b7160e01b600052601260045260246000fd5b604d811161057c57600a0a90565b9190820391821161057c57565b9190820180921161057c57565b8181039291600013801582851316918412161761057c57565b601454919291611f6a91611f5b91611f5191611f47906001600160801b03831690611ead565b9060801c90611ec0565b93601f5490611ead565b611f6483611ee0565b90611ec0565b80831061203257611f7e611fba9184611eee565b91611fb5611faf611fa6601e54611fa0611f9786611ee0565b60205490611efb565b90611ead565b611f6484611ee0565b91611ee0565b611f08565b6509184e72a0009081810291818305149015171561057c57670de0b6b3a76400009182810292818405149015171561057c578015611eca57600160ff1b9180831460001983141661057c570590600082121561202b57811461057c57600003905b808211612026575090565b905090565b509061201b565b505050600090565b6001600160a01b0390811660008181526017602090815260408220549295949391929091811561217b5761206c6129d5565b90612078861515612195565b6009541683600c54898752601882526064604088205491604051948593849263442c159960e01b8452600484015260248301528960448301525afa90811561217057859161213d575b509285949261211d6018936120f8612131996120f36120ea60409a620186a06021540490611ead565b601e5490611ead565b611ec0565b815190936001600160801b0391869161211391841690611ead565b9201511690611ec0565b81811061213557035b9783525220546121e1565b9091565b505082612126565b90508381813d8311612169575b6121548183611db8565b8101031261216557516121316120c1565b8480fd5b503d61214a565b6040513d87823e3d90fd5b5050509192505080918190565b519081151582036102ee57565b1561219c57565b60405162461bcd60e51b815260206004820152601e60248201527f4d61726b65743a2065786368616e676552617465206e6f742076616c696400006044820152606490fd5b6121ec821515612195565b602060018060a01b0360095416916064600c54604051948593849263442c159960e01b845260048401526024830152600060448301525afa908115611bb557600091612259575b50906120f36122459260215490611ead565b620186a0612255601e5483611ead565b0491565b906020823d8211612287575b8161227260209383611db8565b810103126122845750516120f3612233565b80fd5b3d9150612265565b6001600160a01b031660008181526018602052604081205490926122b2916121e1565b9183526017602052604083205480156123bb5781156123bb578181106123bb57828110156123b1576014546122fb918391610be191611f47906001600160801b03831690611ead565b90620186a0928383029280840485149015171561239d576123209291611f6491611eee565b91601b5491601c54936123338585611f08565b80820291848212600160ff1b82141661239d57818305149015171561238957058184820194851291129080158216911516176123755750808212612026575090565b634e487b7160e01b81526011600452602490fd5b634e487b7160e01b83526011600452602483fd5b634e487b7160e01b85526011600452602485fd5b50505050601b5490565b50505090565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031614806124c2575b1561241c577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f000000000000000000000000000000000000000000000000000000000000000082527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a0815260c081018181106001600160401b03821117610f665760405251902090565b507f000000000000000000000000000000000000000000000000000000000000000046146123f3565b156124f257565b60405162461bcd60e51b815260206004820152601660248201527545524332303a2062616c616e636520746f6f206c6f7760501b6044820152606490fd5b1561253757565b60405162461bcd60e51b815260206004820152601660248201527545524332303a206e6f207a65726f206164647265737360501b6044820152606490fd5b51906001600160a01b03821682036102ee57565b6005811015611d16578061259a5750565b600181036125e25760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b6044820152606490fd5b6002810361262f5760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606490fd5b60031461263857565b60405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608490fd5b9291906fa2a8918ca85bafe22016d0b997e4df60600160ff1b0383116127015791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa156126f45781516001600160a01b038116156126ee579190565b50600190565b50604051903d90823e3d90fd5b50505050600090600390565b7fe50de2333c10a9502fcb1d8ae13a51bbf423153dfc63c2b8997665b32154afc360018060a01b038092169160009083825260036020526040822094169384825260205284604082205580a4565b909160207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259160018060a01b03809416938460005260028352604060002095169485600052825280604060002055604051908152a3565b60ff60255416612930576014546001600160801b031690811561292957600a54604051631848f2bf60e31b8152602093916001600160a01b03919085908290600490829086165afa8015611bb55785916000916128ec575b50600460405180948193631a674cc560e11b8352165afa938415611bb5576000946128b9575b505061284c9192670de0b6b3a764000092839160285490611ead565b0490818110156128b0576128636029548092611eee565b8381029080820485149015171561057c57611f64612884926128a494611eee565b6026549261289e602754926128998487611eee565b611ead565b04611efb565b90808211612026575090565b50505060265490565b81813d83116128e5575b6128cd8183611db8565b810103126128e15751925061284c38612830565b8380fd5b503d6128c3565b909181813d8311612922575b6129028183611db8565b8101031261291e5751908282168203612284575084903861280a565b5080fd5b503d6128f8565b6027549150565b600a5460405163e6abad4960e01b815290602090829060049082906001600160a01b03165afa908115611bb557600091612968575090565b906020823d821161298e575b8161298160209383611db8565b8101031261228457505190565b3d9150612974565b604051906129a382611d66565b6014546001600160801b038116835260801c6020830152565b6001600160801b03918216908216019190821161057c57565b600060206040516129e581611d66565b82815201526001600160401b0390612a048260245460401c1642611eee565b918215612a5b57612a5661289991670de0b6b3a7640000612a4b612a26612996565b9660018060801b03958694858a5116906301e13380612a436127b2565b041690611ead565b0416828551166129bc565b168252565b509050612a66612996565b90565b604051612a7581611d66565b6024546001600160401b03908181168352818160401c16612a9d602085019180835242611eee565b928315612b6257602094816301e13380612ab56127b2565b041681528142168352612ac6612996565b670de0b6b3a7640000612aeb60018060801b0397612899898551168787511690611ead565b0495612afc818816828451166129bc565b1680825296015160801b6001600160801b031990811690961760145551915192909416931692831760409190911b67ffffffffffffffff60401b16176024557f7484db546dcd57af0104c73c8a6968dfbaf5767f047cee0dadd0499ad7df81a0600080a3565b505050505056feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae672a2646970667358221220a0cbe3086b31edd259f56d95eb68ed1e6d574fa7458606dfdfe4d71e2381e24764736f6c63430008120033", "linkReferences": {}, "deployedLinkReferences": {} } diff --git a/src/artifacts/tapioca-bar/BBLendingCommon.json b/src/artifacts/tapioca-bar/BBLendingCommon.json index 5ce56e38..fd596f9d 100644 --- a/src/artifacts/tapioca-bar/BBLendingCommon.json +++ b/src/artifacts/tapioca-bar/BBLendingCommon.json @@ -53,6 +53,31 @@ "name": "ApprovalBorrow", "type": "event" }, + { + "anonymous": false, + "inputs": [], + "name": "AssetOracleDataUpdated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "_oldVal", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "_newVal", + "type": "address" + } + ], + "name": "AssetOracleUpdated", + "type": "event" + }, { "anonymous": false, "inputs": [ @@ -272,25 +297,6 @@ "name": "LogBorrowCapUpdated", "type": "event" }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "uint256", - "name": "_oldVal", - "type": "uint256" - }, - { - "indexed": true, - "internalType": "uint256", - "name": "_newVal", - "type": "uint256" - } - ], - "name": "LogBorrowingFee", - "type": "event" - }, { "anonymous": false, "inputs": [ @@ -479,6 +485,37 @@ "name": "Transfer", "type": "event" }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint256", + "name": "oldMin", + "type": "uint256" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "newMin", + "type": "uint256" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "oldMax", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "newMax", + "type": "uint256" + } + ], + "name": "UpdateMinMaxMintFee", + "type": "event" + }, { "inputs": [], "name": "DOMAIN_SEPARATOR", @@ -640,27 +677,40 @@ "type": "function" }, { - "inputs": [ + "inputs": [], + "name": "assetOracle", + "outputs": [ { - "internalType": "address", + "internalType": "contract IOracle", "name": "", "type": "address" } ], - "name": "balanceOf", + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "assetOracleData", "outputs": [ { - "internalType": "uint256", + "internalType": "bytes", "name": "", - "type": "uint256" + "type": "bytes" } ], "stateMutability": "view", "type": "function" }, { - "inputs": [], - "name": "borrowOpeningFee", + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "balanceOf", "outputs": [ { "internalType": "uint256", @@ -973,6 +1023,19 @@ "stateMutability": "view", "type": "function" }, + { + "inputs": [], + "name": "maxMintFee", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, { "inputs": [], "name": "minDebtRate", @@ -999,6 +1062,19 @@ "stateMutability": "view", "type": "function" }, + { + "inputs": [], + "name": "minMintFee", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, { "inputs": [ { @@ -1266,11 +1342,6 @@ }, { "inputs": [ - { - "internalType": "uint256", - "name": "_borrowOpeningFee", - "type": "uint256" - }, { "internalType": "contract IOracle", "name": "_oracle", @@ -1553,8 +1624,8 @@ "type": "function" } ], - "bytecode": "0x6101408060405234620001895762000017816200018e565b600f81526001602082016e546170696f63612042696742616e6760881b8152602060405162000046816200018e565b8381520192603160f81b845251902091208160e052610100918183524660a0526040519160208301907f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f92838352604085015260608401524660808401523060a084015260a0835260c083019280841060018060401b03851117620001735760408490525190206080523060c052610120908152600580546001600160a01b0319163390811790915560007f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a362013880601b5562015f90601c55612710601d556032602055612ee0602155612ad09283620001ab84396080518361230b015260a051836123d6015260c051836122d5015260e0518361235a01525182612380015251816123370152f35b634e487b7160e01b600052604160045260246000fd5b600080fd5b604081019081106001600160401b03821117620001735760405256fe608080604052600436101561001357600080fd5b60003560e01c908162a02a2014611b815750806302ce728f1461196a578063078dfbe714611866578063095ea7b3146118405780630996efb7146113bd5780630c4e84f0146112a357806318160ddd146112875780631c9e379b1461124d5780631da8bf10146111915780631fb8f81a1461117357806323b872dd14610fcf578063331960ff14610fb157806334ce998a14610f8857806334d441d014610f6a5780633644e51514610f4f57806337b6b7b914610f3157806338d52e0f14610f085780633ba0b9a914610eea5780633f741adb14610ec657806340626d8b14610ea857806344de240a14610e8a578063473e3ce714610e6c57806348e4163e14610e325780634e71e0c814610d84578063529898f214610d665780635793546214610d485780636b19ad1614610d2a5780636c3d8b8f14610d0157806370a0823114610cc75780637277854714610c9157806374645ff314610b755780637dc0d1d014610b4c5780637ecebe0014610b125780637fa0b84e14610ae15780638285ef4014610aaf57806387b2793714610a755780638c5d0ed314610a575780638da5cb5b14610a2e578063910dd7c814610815578063959916dc146107f857806399a97028146107d15780639e15e89f14610797578063a9059cbb146106b0578063b0e21e8a14610692578063b27c0e7414610661578063b7113f191461063e578063bb4cfe3b14610620578063bde39c5d14610602578063c1ad5c8d146105df578063ce8849ed146105b6578063d505accf14610416578063d8dfeb45146103ed578063dd62ed3e1461039c578063de40657714610373578063e0996cb614610355578063e30c39781461032c578063ea64dd561461030e578063eec0f42e146102f0578063f791395d146102d25763f8ba4cff146102b257600080fd5b346102cd5760003660031901126102cd576102cb61297a565b005b600080fd5b346102cd5760003660031901126102cd576020602854604051908152f35b346102cd5760003660031901126102cd576020600c54604051908152f35b346102cd5760003660031901126102cd576020601f54604051908152f35b346102cd5760003660031901126102cd576006546040516001600160a01b039091168152602090f35b346102cd5760003660031901126102cd576020601d54604051908152f35b346102cd5760003660031901126102cd576009546040516001600160a01b039091168152602090f35b346102cd5760403660031901126102cd576103b5611bcd565b6103bd611be3565b9060018060a01b038091166000526002602052604060002091166000526020526020604060002054604051908152f35b346102cd5760003660031901126102cd57600b546040516001600160a01b039091168152602090f35b346102cd5761042436611c08565b9183919395949542116105715760018060a01b0392838816948560005260046020526040600020928354600019811461055b57610507956104ff956001830190556040519060208201927f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e2668452600060408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e081526104c381611cdb565b5190206104ce6122d2565b9060405190602082019261190160f01b845260228301526042820152604281526104f781611cf7565b519020612599565b91909161249a565b1603610516576102cb9261266c565b60405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152606490fd5b634e487b7160e01b600052601160045260246000fd5b60405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b346102cd5760003660031901126102cd576008546040516001600160a01b039091168152602090f35b346102cd5760003660031901126102cd5760206105fa6126c3565b604051908152f35b346102cd5760003660031901126102cd576020602954604051908152f35b346102cd5760003660031901126102cd576020601e54604051908152f35b346102cd5760003660031901126102cd57602060ff602654166040519015158152f35b346102cd5760003660031901126102cd5760406025548151906001600160401b03908181168352831c166020820152f35b346102cd5760003660031901126102cd576020601a54604051908152f35b346102cd5760403660031901126102cd576106c9611bcd565b602435908115801590610785575b61070d575b6040519182526001600160a01b0316903390600080516020612a7b83398151915290602090a3602060405160018152f35b336000526001602052604060002054610728838210156123fc565b6001600160a01b038216908333839003610745575b5050506106dc565b61075991610754841515612441565b611dff565b336000526001602052604060002055600052604060002061077b838254611e0c565b905582808361073d565b50336001600160a01b038216146106d7565b346102cd5760403660031901126102cd5760606107be6107b5611bcd565b60243590611f4b565b9060405192835260208301526040820152f35b346102cd5760403660031901126102cd5760206105fa6107ef611bcd565b602435906121a0565b346102cd5760003660031901126102cd5760208054604051908152f35b346102cd5760403660031901126102cd576001600160401b036004358181116102cd57366023820112156102cd578060040135918211610a185760405191610867601f8201601f191660200184611d12565b808352602083019136602483830101116102cd57816000926024602093018537840101526024359161ffff831683036102cd576101009182828051810103126102cd576108b390612099565b6108bf60408301612486565b916108cc60608201612486565b9460808201519460a08301519260c08101519160ff831683036102cd5760e0820151910151918442116105715785156109f2577f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e2665b6001600160a01b03881660009081526004602052604090208054909690600019811461055b5761ffff6104ff976109af9960018401905560405194602086015216604084015260018060a01b038a16606084015260018060a01b038c1660808401528a60a084015260c083015260e082015260e081526109a081611cdb565b602081519101206104ce6122d2565b6001600160a01b0383811691160361051657156109dc576102cb926001600160a01b03908116911661266c565b6102cb926001600160a01b03908116911661261e565b7f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d6610921565b634e487b7160e01b600052604160045260246000fd5b346102cd5760003660031901126102cd576005546040516001600160a01b039091168152602090f35b346102cd5760003660031901126102cd576020601b54604051908152f35b346102cd5760203660031901126102cd576001600160a01b03610a96611bcd565b1660005260246020526020604060002054604051908152f35b346102cd5760003660031901126102cd57601454604080516001600160801b038316815260809290921c602083015290f35b346102cd5760403660031901126102cd57610b07610afd611bcd565b602435903361261e565b602060405160018152f35b346102cd5760203660031901126102cd576001600160a01b03610b33611bcd565b1660005260046020526020604060002054604051908152f35b346102cd5760003660031901126102cd57600f546040516001600160a01b039091168152602090f35b346102cd5760003660031901126102cd57604051601054816000610b9883611c86565b808352600193808516908115610c705750600114610c10575b50610bbe92500382611d12565b6040519081602080825282519081818401526000935b828510610bf7575050604092506000838284010152601f80199101168101030190f35b8481018201518686016040015293810193859350610bd4565b601060009081527f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae67294602093509091905b818310610c58575050610bbe935082010184610bb1565b85548784018501529485019486945091830191610c41565b9050610bbe94506020925060ff191682840152151560051b82010184610bb1565b346102cd5760203660031901126102cd5760043560098110156102cd5760ff610cbb602092611c57565b54166040519015158152f35b346102cd5760203660031901126102cd576001600160a01b03610ce8611bcd565b1660005260016020526020604060002054604051908152f35b346102cd5760003660031901126102cd57600a546040516001600160a01b039091168152602090f35b346102cd5760003660031901126102cd576020602754604051908152f35b346102cd5760003660031901126102cd576020601c54604051908152f35b346102cd5760003660031901126102cd576020602154604051908152f35b346102cd5760003660031901126102cd576006546001600160a01b039081811633819003610dee57806005549384167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a36001600160a01b03199283161760055516600655005b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b346102cd5760203660031901126102cd576001600160a01b03610e53611bcd565b1660005260176020526020604060002054604051908152f35b346102cd5760003660031901126102cd576020601554604051908152f35b346102cd5760003660031901126102cd576020600e54604051908152f35b346102cd5760003660031901126102cd576020601654604051908152f35b346102cd5760603660031901126102cd5760206105fa604435602435600435611e32565b346102cd5760003660031901126102cd576020601154604051908152f35b346102cd5760003660031901126102cd57600d546040516001600160a01b039091168152602090f35b346102cd5760003660031901126102cd576020601254604051908152f35b346102cd5760003660031901126102cd5760206105fa6122d2565b346102cd5760003660031901126102cd576020601954604051908152f35b346102cd5760003660031901126102cd576014546040516001600160801b039091168152602090f35b346102cd5760003660031901126102cd576020601354604051908152f35b346102cd5760603660031901126102cd57610fe8611bcd565b610ff0611be3565b604435908161102d575b6040519182526001600160a01b03908116921690600080516020612a7b83398151915290602090a3602060405160018152f35b60018060a01b03808416806000526020600181528460406000205493611055828610156123fc565b85169384840361106a575b5050505050610ffa565b8360005260028352604060002033600052835260406000205460001981036110de575b5084926110b5600080516020612a7b8339815191529795936001936107546020991515612441565b926000525260406000205560005260406000206110d3858254611e0c565b905591858481611060565b9091811061113357602094926110b588600080516020612a7b83398151915298969461110c82600196611dff565b8660005260028552604060002033600052855260406000205593509395975050929461108d565b60405162461bcd60e51b815260048101849052601860248201527745524332303a20616c6c6f77616e636520746f6f206c6f7760401b6044820152606490fd5b346102cd5760003660031901126102cd576020602a54604051908152f35b346102cd5761119f36611c08565b9183919395949542116105715760018060a01b0392838816948560005260046020526040600020928354600019811461055b5761123e956104ff956001830190556040519060208201927f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d68452600060408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e081526104c381611cdb565b1603610516576102cb9261261e565b346102cd5760203660031901126102cd576001600160a01b0361126e611bcd565b1660005260186020526020604060002054604051908152f35b346102cd5760003660031901126102cd57602060405160008152f35b346102cd5760403660031901126102cd5760043560098110156102cd576112c8611bf9565b6008549091906001600160a01b031633036113815760ff6112e882611c57565b5416151591151591821461134757808260ff61130661133594611c57565b54161515827feeec81de25875ce1725479bb76f720a8defdb43dea041919ae37bb4aae9847c0600080a4611c57565b9060ff80198354169116179055600080f35b60405162461bcd60e51b81526020600482015260126024820152714d61726b65743a2073616d6520737461746560701b6044820152606490fd5b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881d5b985d5d1a1bdc9a5e995960621b6044820152606490fd5b346102cd576101803660031901126102cd5760246001600160a01b038135818116908190036102cd57604435916001600160401b03908184116102cd57366023850112156102cd5783600401359182116102cd57368583860101116102cd57606435918183168093036102cd5761143982600554163314611d33565b60043594620186a09461144e86881115611d7e565b6020968088547fc353b09af857951dccce61b43a5854fc45beceed36c50e5d4cc2e71858a8e0df600080a3875580611801575b5086826116bc575b5050508161167b575b505060843580611666575b5060a43580611651575b5060c4358061163d575b5060e4358061161c575b5061010435806115fb575b5061012435806115c9575b50610144359081611559575b50506101643591826114eb57005b601e5483106114fb575050601f55005b9060326084926040519262461bcd60e51b845260048401528201527f4d61726b65743a206c69717569646174696f6e436f6c6c61746572616c697a616044820152711d1a5bdb94985d19481d1bdbc81cdb585b1b60721b6064820152fd5b61156590821115611d7e565b601f54811161157857601e5582806114dd565b5060256084926040519262461bcd60e51b845260048401528201527f4d61726b65743a20636f6c6c61746572616c697a6174696f6e5261746520746f6044820152646f2062696760d81b6064820152fd5b806016547fae6e0ab3b95f0a53ff9660a390ccedcbbf1f2355dce974a9841af106fddcfaba600080a3601655836114d1565b611606828210611d7e565b611613601b548211611d7e565b601c55836114c6565b611627828210611d7e565b611634601c548210611d7e565b601b55836114bb565b611648828210611d7e565b601d55836114b1565b61165d82821115611d7e565b601a55836114a7565b61167282821115611d7e565b6019558361149d565b816008549182167f5a62d22209e370e38eea92cfddcd228e656e6ec139243392a760a7769f5877fd600080a36001600160a01b031916176008558380611492565b82916116c9601054611c86565b601f81116117ad575b50600090601f841160011461173a5760009361172d575b5050508160011b916000199060031b1c1916176010555b7fa6f004921c944d4b8bf6e38462b00f36a58d62495d56b51f571ab78f732c9815600080a1858086611489565b01013590508688806116e9565b915092506010600052866000209088600094601f198516955b8a8782106117925750508460019610611776575b50505050811b01601055611700565b60001960f88660031b161c199201013516905587808881611767565b8483019093013585556001909401938b929182019101611753565b91509150601060005286600020601f840160051c81018885106117fa575b91849391601f8b94920160051c01905b8181106117e857506116d2565b600081558594508a93506001016117db565b50806117cb565b600f80546001600160a01b0319169190911790557f0b2d6eb667d0522c3eb86e4288afecae6c11591ffd1345d4d12407e0598bca9b600080a187611481565b346102cd5760403660031901126102cd57610b0761185c611bcd565b602435903361266c565b346102cd5760603660031901126102cd5761187f611bcd565b611887611bf9565b6044359081151582036102cd5760018060a01b039283916118ad83600554163314611d33565b15611951571690811590811591611949575b501561190c57806005549283167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a36001600160a01b031991821617600555600680549091169055005b60405162461bcd60e51b81526020600482015260156024820152744f776e61626c653a207a65726f206164647265737360581b6044820152606490fd5b9050836118bf565b9150501660018060a01b03196006541617600655600080f35b346102cd5760003660031901126102cd5760018060a01b03600f54166040519063d6d7d52560e01b82526020918260048201526000916010546119ac81611c86565b908160248501526001908181169081600014611b5b5750600114611b1b575b50509060409181600081809603925af18015611b0f57600091600091611ad0575b508115611a73578015611a375760409281601155817f9f9192b5edb17356c524e08d9e025c8e2f6307e6ea52fb7968faa3081f51c3c8600080a25b4260135583519215158352820152f35b60405162461bcd60e51b81526004810184905260146024820152734d61726b65743a20696e76616c6964207261746560601b6044820152606490fd5b50611a8360135460125490611e0c565b4211611a9457601154604092611a27565b60405162461bcd60e51b815260048101839052601460248201527313585c9ad95d0e881c985d19481d1bdbc81bdb1960621b6044820152606490fd5b9150506040813d604011611b07575b81611aec60409383611d12565b810103126102cd5781611afe82612099565b910151836119ec565b3d9150611adf565b6040513d6000823e3d90fd5b935060106000528460002093856000955b838710611b465750505050918101604401918060406119cb565b80548688016044015295019486908201611b2c565b60ff191660448087019190915292151560051b85019092019450829150604090506119cb565b346102cd5760403660031901126102cd57602090611b9d611bcd565b611ba5611be3565b9060018060a01b03809116600052600384526040600020911660005282526040600020548152f35b600435906001600160a01b03821682036102cd57565b602435906001600160a01b03821682036102cd57565b6024359081151582036102cd57565b60e09060031901126102cd576001600160a01b039060043582811681036102cd579160243590811681036102cd5790604435906064359060843560ff811681036102cd579060a4359060c43590565b6009811015611c70576000526007602052604060002090565b634e487b7160e01b600052602160045260246000fd5b90600182811c92168015611cb6575b6020831014611ca057565b634e487b7160e01b600052602260045260246000fd5b91607f1691611c95565b604081019081106001600160401b03821117610a1857604052565b61010081019081106001600160401b03821117610a1857604052565b608081019081106001600160401b03821117610a1857604052565b90601f801991011681019081106001600160401b03821117610a1857604052565b15611d3a57565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b15611d8557565b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881b9bdd081d985b1a59607a1b6044820152606490fd5b8181029291811591840414171561055b57565b8115611ddb570490565b634e487b7160e01b600052601260045260246000fd5b604d811161055b57600a0a90565b9190820391821161055b57565b9190820180921161055b57565b8181039291600013801582851316918412161761055b57565b601454919291611e7b91611e6c91611e6291611e58906001600160801b03831690611dbe565b9060801c90611dd1565b93601f5490611dbe565b611e7583611df1565b90611dd1565b808310611f4357611e8f611ecb9184611dff565b91611ec6611ec0611eb7601e54611eb1611ea886611df1565b60215490611e0c565b90611dbe565b611e7584611df1565b91611df1565b611e19565b6509184e72a0009081810291818305149015171561055b57670de0b6b3a76400009182810292818405149015171561055b578015611ddb57600160ff1b9180831460001983141661055b5705906000821215611f3c57811461055b57600003905b808211611f37575090565b905090565b5090611f2c565b505050600090565b6001600160a01b0390811660008181526017602090815260408220549295949391929091811561208c57611f7d6128e6565b90611f898615156120a6565b6009541683600c54898752601882526064604088205491604051948593849263442c159960e01b8452600484015260248301528960448301525afa90811561208157859161204e575b509285949261202e60189361200961204299612004611ffb60409a620186a06022540490611dbe565b601e5490611dbe565b611dd1565b815190936001600160801b0391869161202491841690611dbe565b9201511690611dd1565b81811061204657035b9783525220546120f2565b9091565b505082612037565b90508381813d831161207a575b6120658183611d12565b810103126120765751612042611fd2565b8480fd5b503d61205b565b6040513d87823e3d90fd5b5050509192505080918190565b519081151582036102cd57565b156120ad57565b60405162461bcd60e51b815260206004820152601e60248201527f4d61726b65743a2065786368616e676552617465206e6f742076616c696400006044820152606490fd5b6120fd8215156120a6565b602060018060a01b0360095416916064600c54604051948593849263442c159960e01b845260048401526024830152600060448301525afa908115611b0f5760009161216a575b50906120046121569260225490611dbe565b620186a0612166601e5483611dbe565b0491565b906020823d8211612198575b8161218360209383611d12565b81010312612195575051612004612144565b80fd5b3d9150612176565b6001600160a01b031660008181526018602052604081205490926121c3916120f2565b9183526017602052604083205480156122cc5781156122cc578181106122cc57828110156122c25760145461220c91839161075491611e58906001600160801b03831690611dbe565b90620186a092838302928084048514901517156122ae576122319291611e7591611dff565b91601b5491601c54936122448585611e19565b80820291848212600160ff1b8214166122ae57818305149015171561229a57058184820194851291129080158216911516176122865750808212611f37575090565b634e487b7160e01b81526011600452602490fd5b634e487b7160e01b83526011600452602483fd5b634e487b7160e01b85526011600452602485fd5b50505050601b5490565b50505090565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031614806123d3575b1561232d577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f000000000000000000000000000000000000000000000000000000000000000082527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a0815260c081018181106001600160401b03821117610a185760405251902090565b507f00000000000000000000000000000000000000000000000000000000000000004614612304565b1561240357565b60405162461bcd60e51b815260206004820152601660248201527545524332303a2062616c616e636520746f6f206c6f7760501b6044820152606490fd5b1561244857565b60405162461bcd60e51b815260206004820152601660248201527545524332303a206e6f207a65726f206164647265737360501b6044820152606490fd5b51906001600160a01b03821682036102cd57565b6005811015611c7057806124ab5750565b600181036124f35760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b6044820152606490fd5b600281036125405760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606490fd5b60031461254957565b60405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608490fd5b9291906fa2a8918ca85bafe22016d0b997e4df60600160ff1b0383116126125791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa156126055781516001600160a01b038116156125ff579190565b50600190565b50604051903d90823e3d90fd5b50505050600090600390565b7fe50de2333c10a9502fcb1d8ae13a51bbf423153dfc63c2b8997665b32154afc360018060a01b038092169160009083825260036020526040822094169384825260205284604082205580a4565b909160207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259160018060a01b03809416938460005260028352604060002095169485600052825280604060002055604051908152a3565b60ff60265416612841576014546001600160801b031690811561283a57600a54604051631848f2bf60e31b8152602093916001600160a01b03919085908290600490829086165afa8015611b0f5785916000916127fd575b50600460405180948193631a674cc560e11b8352165afa938415611b0f576000946127ca575b505061275d9192670de0b6b3a764000092839160295490611dbe565b0490818110156127c157612774602a548092611dff565b8381029080820485149015171561055b57611e75612795926127b594611dff565b602754926127af602854926127aa8487611dff565b611dbe565b04611e0c565b90808211611f37575090565b50505060275490565b81813d83116127f6575b6127de8183611d12565b810103126127f25751925061275d38612741565b8380fd5b503d6127d4565b909181813d8311612833575b6128138183611d12565b8101031261282f5751908282168203612195575084903861271b565b5080fd5b503d612809565b6028549150565b600a5460405163e6abad4960e01b815290602090829060049082906001600160a01b03165afa908115611b0f57600091612879575090565b906020823d821161289f575b8161289260209383611d12565b8101031261219557505190565b3d9150612885565b604051906128b482611cc0565b6014546001600160801b038116835260801c6020830152565b6001600160801b03918216908216019190821161055b57565b600060206040516128f681611cc0565b82815201526001600160401b03906129158260255460401c1642611dff565b91821561296c576129676127aa91670de0b6b3a764000061295c6129376128a7565b9660018060801b03958694858a5116906301e133806129546126c3565b041690611dbe565b0416828551166128cd565b168252565b5090506129776128a7565b90565b60405161298681611cc0565b6025546001600160401b03908181168352818160401c166129ae602085019180835242611dff565b928315612a7357602094816301e133806129c66126c3565b0416815281421683526129d76128a7565b670de0b6b3a76400006129fc60018060801b03976127aa898551168787511690611dbe565b0495612a0d818816828451166128cd565b1680825296015160801b6001600160801b031990811690961760145551915192909416931692831760409190911b67ffffffffffffffff60401b16176025557f7484db546dcd57af0104c73c8a6968dfbaf5767f047cee0dadd0499ad7df81a0600080a3565b505050505056feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220b3df97947646fdd7f411fa4b47c90381d0b2eae7807678555596ade6cb44972064736f6c63430008120033", - "deployedBytecode": "0x608080604052600436101561001357600080fd5b60003560e01c908162a02a2014611b815750806302ce728f1461196a578063078dfbe714611866578063095ea7b3146118405780630996efb7146113bd5780630c4e84f0146112a357806318160ddd146112875780631c9e379b1461124d5780631da8bf10146111915780631fb8f81a1461117357806323b872dd14610fcf578063331960ff14610fb157806334ce998a14610f8857806334d441d014610f6a5780633644e51514610f4f57806337b6b7b914610f3157806338d52e0f14610f085780633ba0b9a914610eea5780633f741adb14610ec657806340626d8b14610ea857806344de240a14610e8a578063473e3ce714610e6c57806348e4163e14610e325780634e71e0c814610d84578063529898f214610d665780635793546214610d485780636b19ad1614610d2a5780636c3d8b8f14610d0157806370a0823114610cc75780637277854714610c9157806374645ff314610b755780637dc0d1d014610b4c5780637ecebe0014610b125780637fa0b84e14610ae15780638285ef4014610aaf57806387b2793714610a755780638c5d0ed314610a575780638da5cb5b14610a2e578063910dd7c814610815578063959916dc146107f857806399a97028146107d15780639e15e89f14610797578063a9059cbb146106b0578063b0e21e8a14610692578063b27c0e7414610661578063b7113f191461063e578063bb4cfe3b14610620578063bde39c5d14610602578063c1ad5c8d146105df578063ce8849ed146105b6578063d505accf14610416578063d8dfeb45146103ed578063dd62ed3e1461039c578063de40657714610373578063e0996cb614610355578063e30c39781461032c578063ea64dd561461030e578063eec0f42e146102f0578063f791395d146102d25763f8ba4cff146102b257600080fd5b346102cd5760003660031901126102cd576102cb61297a565b005b600080fd5b346102cd5760003660031901126102cd576020602854604051908152f35b346102cd5760003660031901126102cd576020600c54604051908152f35b346102cd5760003660031901126102cd576020601f54604051908152f35b346102cd5760003660031901126102cd576006546040516001600160a01b039091168152602090f35b346102cd5760003660031901126102cd576020601d54604051908152f35b346102cd5760003660031901126102cd576009546040516001600160a01b039091168152602090f35b346102cd5760403660031901126102cd576103b5611bcd565b6103bd611be3565b9060018060a01b038091166000526002602052604060002091166000526020526020604060002054604051908152f35b346102cd5760003660031901126102cd57600b546040516001600160a01b039091168152602090f35b346102cd5761042436611c08565b9183919395949542116105715760018060a01b0392838816948560005260046020526040600020928354600019811461055b57610507956104ff956001830190556040519060208201927f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e2668452600060408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e081526104c381611cdb565b5190206104ce6122d2565b9060405190602082019261190160f01b845260228301526042820152604281526104f781611cf7565b519020612599565b91909161249a565b1603610516576102cb9261266c565b60405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152606490fd5b634e487b7160e01b600052601160045260246000fd5b60405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b346102cd5760003660031901126102cd576008546040516001600160a01b039091168152602090f35b346102cd5760003660031901126102cd5760206105fa6126c3565b604051908152f35b346102cd5760003660031901126102cd576020602954604051908152f35b346102cd5760003660031901126102cd576020601e54604051908152f35b346102cd5760003660031901126102cd57602060ff602654166040519015158152f35b346102cd5760003660031901126102cd5760406025548151906001600160401b03908181168352831c166020820152f35b346102cd5760003660031901126102cd576020601a54604051908152f35b346102cd5760403660031901126102cd576106c9611bcd565b602435908115801590610785575b61070d575b6040519182526001600160a01b0316903390600080516020612a7b83398151915290602090a3602060405160018152f35b336000526001602052604060002054610728838210156123fc565b6001600160a01b038216908333839003610745575b5050506106dc565b61075991610754841515612441565b611dff565b336000526001602052604060002055600052604060002061077b838254611e0c565b905582808361073d565b50336001600160a01b038216146106d7565b346102cd5760403660031901126102cd5760606107be6107b5611bcd565b60243590611f4b565b9060405192835260208301526040820152f35b346102cd5760403660031901126102cd5760206105fa6107ef611bcd565b602435906121a0565b346102cd5760003660031901126102cd5760208054604051908152f35b346102cd5760403660031901126102cd576001600160401b036004358181116102cd57366023820112156102cd578060040135918211610a185760405191610867601f8201601f191660200184611d12565b808352602083019136602483830101116102cd57816000926024602093018537840101526024359161ffff831683036102cd576101009182828051810103126102cd576108b390612099565b6108bf60408301612486565b916108cc60608201612486565b9460808201519460a08301519260c08101519160ff831683036102cd5760e0820151910151918442116105715785156109f2577f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e2665b6001600160a01b03881660009081526004602052604090208054909690600019811461055b5761ffff6104ff976109af9960018401905560405194602086015216604084015260018060a01b038a16606084015260018060a01b038c1660808401528a60a084015260c083015260e082015260e081526109a081611cdb565b602081519101206104ce6122d2565b6001600160a01b0383811691160361051657156109dc576102cb926001600160a01b03908116911661266c565b6102cb926001600160a01b03908116911661261e565b7f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d6610921565b634e487b7160e01b600052604160045260246000fd5b346102cd5760003660031901126102cd576005546040516001600160a01b039091168152602090f35b346102cd5760003660031901126102cd576020601b54604051908152f35b346102cd5760203660031901126102cd576001600160a01b03610a96611bcd565b1660005260246020526020604060002054604051908152f35b346102cd5760003660031901126102cd57601454604080516001600160801b038316815260809290921c602083015290f35b346102cd5760403660031901126102cd57610b07610afd611bcd565b602435903361261e565b602060405160018152f35b346102cd5760203660031901126102cd576001600160a01b03610b33611bcd565b1660005260046020526020604060002054604051908152f35b346102cd5760003660031901126102cd57600f546040516001600160a01b039091168152602090f35b346102cd5760003660031901126102cd57604051601054816000610b9883611c86565b808352600193808516908115610c705750600114610c10575b50610bbe92500382611d12565b6040519081602080825282519081818401526000935b828510610bf7575050604092506000838284010152601f80199101168101030190f35b8481018201518686016040015293810193859350610bd4565b601060009081527f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae67294602093509091905b818310610c58575050610bbe935082010184610bb1565b85548784018501529485019486945091830191610c41565b9050610bbe94506020925060ff191682840152151560051b82010184610bb1565b346102cd5760203660031901126102cd5760043560098110156102cd5760ff610cbb602092611c57565b54166040519015158152f35b346102cd5760203660031901126102cd576001600160a01b03610ce8611bcd565b1660005260016020526020604060002054604051908152f35b346102cd5760003660031901126102cd57600a546040516001600160a01b039091168152602090f35b346102cd5760003660031901126102cd576020602754604051908152f35b346102cd5760003660031901126102cd576020601c54604051908152f35b346102cd5760003660031901126102cd576020602154604051908152f35b346102cd5760003660031901126102cd576006546001600160a01b039081811633819003610dee57806005549384167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a36001600160a01b03199283161760055516600655005b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b346102cd5760203660031901126102cd576001600160a01b03610e53611bcd565b1660005260176020526020604060002054604051908152f35b346102cd5760003660031901126102cd576020601554604051908152f35b346102cd5760003660031901126102cd576020600e54604051908152f35b346102cd5760003660031901126102cd576020601654604051908152f35b346102cd5760603660031901126102cd5760206105fa604435602435600435611e32565b346102cd5760003660031901126102cd576020601154604051908152f35b346102cd5760003660031901126102cd57600d546040516001600160a01b039091168152602090f35b346102cd5760003660031901126102cd576020601254604051908152f35b346102cd5760003660031901126102cd5760206105fa6122d2565b346102cd5760003660031901126102cd576020601954604051908152f35b346102cd5760003660031901126102cd576014546040516001600160801b039091168152602090f35b346102cd5760003660031901126102cd576020601354604051908152f35b346102cd5760603660031901126102cd57610fe8611bcd565b610ff0611be3565b604435908161102d575b6040519182526001600160a01b03908116921690600080516020612a7b83398151915290602090a3602060405160018152f35b60018060a01b03808416806000526020600181528460406000205493611055828610156123fc565b85169384840361106a575b5050505050610ffa565b8360005260028352604060002033600052835260406000205460001981036110de575b5084926110b5600080516020612a7b8339815191529795936001936107546020991515612441565b926000525260406000205560005260406000206110d3858254611e0c565b905591858481611060565b9091811061113357602094926110b588600080516020612a7b83398151915298969461110c82600196611dff565b8660005260028552604060002033600052855260406000205593509395975050929461108d565b60405162461bcd60e51b815260048101849052601860248201527745524332303a20616c6c6f77616e636520746f6f206c6f7760401b6044820152606490fd5b346102cd5760003660031901126102cd576020602a54604051908152f35b346102cd5761119f36611c08565b9183919395949542116105715760018060a01b0392838816948560005260046020526040600020928354600019811461055b5761123e956104ff956001830190556040519060208201927f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d68452600060408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e081526104c381611cdb565b1603610516576102cb9261261e565b346102cd5760203660031901126102cd576001600160a01b0361126e611bcd565b1660005260186020526020604060002054604051908152f35b346102cd5760003660031901126102cd57602060405160008152f35b346102cd5760403660031901126102cd5760043560098110156102cd576112c8611bf9565b6008549091906001600160a01b031633036113815760ff6112e882611c57565b5416151591151591821461134757808260ff61130661133594611c57565b54161515827feeec81de25875ce1725479bb76f720a8defdb43dea041919ae37bb4aae9847c0600080a4611c57565b9060ff80198354169116179055600080f35b60405162461bcd60e51b81526020600482015260126024820152714d61726b65743a2073616d6520737461746560701b6044820152606490fd5b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881d5b985d5d1a1bdc9a5e995960621b6044820152606490fd5b346102cd576101803660031901126102cd5760246001600160a01b038135818116908190036102cd57604435916001600160401b03908184116102cd57366023850112156102cd5783600401359182116102cd57368583860101116102cd57606435918183168093036102cd5761143982600554163314611d33565b60043594620186a09461144e86881115611d7e565b6020968088547fc353b09af857951dccce61b43a5854fc45beceed36c50e5d4cc2e71858a8e0df600080a3875580611801575b5086826116bc575b5050508161167b575b505060843580611666575b5060a43580611651575b5060c4358061163d575b5060e4358061161c575b5061010435806115fb575b5061012435806115c9575b50610144359081611559575b50506101643591826114eb57005b601e5483106114fb575050601f55005b9060326084926040519262461bcd60e51b845260048401528201527f4d61726b65743a206c69717569646174696f6e436f6c6c61746572616c697a616044820152711d1a5bdb94985d19481d1bdbc81cdb585b1b60721b6064820152fd5b61156590821115611d7e565b601f54811161157857601e5582806114dd565b5060256084926040519262461bcd60e51b845260048401528201527f4d61726b65743a20636f6c6c61746572616c697a6174696f6e5261746520746f6044820152646f2062696760d81b6064820152fd5b806016547fae6e0ab3b95f0a53ff9660a390ccedcbbf1f2355dce974a9841af106fddcfaba600080a3601655836114d1565b611606828210611d7e565b611613601b548211611d7e565b601c55836114c6565b611627828210611d7e565b611634601c548210611d7e565b601b55836114bb565b611648828210611d7e565b601d55836114b1565b61165d82821115611d7e565b601a55836114a7565b61167282821115611d7e565b6019558361149d565b816008549182167f5a62d22209e370e38eea92cfddcd228e656e6ec139243392a760a7769f5877fd600080a36001600160a01b031916176008558380611492565b82916116c9601054611c86565b601f81116117ad575b50600090601f841160011461173a5760009361172d575b5050508160011b916000199060031b1c1916176010555b7fa6f004921c944d4b8bf6e38462b00f36a58d62495d56b51f571ab78f732c9815600080a1858086611489565b01013590508688806116e9565b915092506010600052866000209088600094601f198516955b8a8782106117925750508460019610611776575b50505050811b01601055611700565b60001960f88660031b161c199201013516905587808881611767565b8483019093013585556001909401938b929182019101611753565b91509150601060005286600020601f840160051c81018885106117fa575b91849391601f8b94920160051c01905b8181106117e857506116d2565b600081558594508a93506001016117db565b50806117cb565b600f80546001600160a01b0319169190911790557f0b2d6eb667d0522c3eb86e4288afecae6c11591ffd1345d4d12407e0598bca9b600080a187611481565b346102cd5760403660031901126102cd57610b0761185c611bcd565b602435903361266c565b346102cd5760603660031901126102cd5761187f611bcd565b611887611bf9565b6044359081151582036102cd5760018060a01b039283916118ad83600554163314611d33565b15611951571690811590811591611949575b501561190c57806005549283167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a36001600160a01b031991821617600555600680549091169055005b60405162461bcd60e51b81526020600482015260156024820152744f776e61626c653a207a65726f206164647265737360581b6044820152606490fd5b9050836118bf565b9150501660018060a01b03196006541617600655600080f35b346102cd5760003660031901126102cd5760018060a01b03600f54166040519063d6d7d52560e01b82526020918260048201526000916010546119ac81611c86565b908160248501526001908181169081600014611b5b5750600114611b1b575b50509060409181600081809603925af18015611b0f57600091600091611ad0575b508115611a73578015611a375760409281601155817f9f9192b5edb17356c524e08d9e025c8e2f6307e6ea52fb7968faa3081f51c3c8600080a25b4260135583519215158352820152f35b60405162461bcd60e51b81526004810184905260146024820152734d61726b65743a20696e76616c6964207261746560601b6044820152606490fd5b50611a8360135460125490611e0c565b4211611a9457601154604092611a27565b60405162461bcd60e51b815260048101839052601460248201527313585c9ad95d0e881c985d19481d1bdbc81bdb1960621b6044820152606490fd5b9150506040813d604011611b07575b81611aec60409383611d12565b810103126102cd5781611afe82612099565b910151836119ec565b3d9150611adf565b6040513d6000823e3d90fd5b935060106000528460002093856000955b838710611b465750505050918101604401918060406119cb565b80548688016044015295019486908201611b2c565b60ff191660448087019190915292151560051b85019092019450829150604090506119cb565b346102cd5760403660031901126102cd57602090611b9d611bcd565b611ba5611be3565b9060018060a01b03809116600052600384526040600020911660005282526040600020548152f35b600435906001600160a01b03821682036102cd57565b602435906001600160a01b03821682036102cd57565b6024359081151582036102cd57565b60e09060031901126102cd576001600160a01b039060043582811681036102cd579160243590811681036102cd5790604435906064359060843560ff811681036102cd579060a4359060c43590565b6009811015611c70576000526007602052604060002090565b634e487b7160e01b600052602160045260246000fd5b90600182811c92168015611cb6575b6020831014611ca057565b634e487b7160e01b600052602260045260246000fd5b91607f1691611c95565b604081019081106001600160401b03821117610a1857604052565b61010081019081106001600160401b03821117610a1857604052565b608081019081106001600160401b03821117610a1857604052565b90601f801991011681019081106001600160401b03821117610a1857604052565b15611d3a57565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b15611d8557565b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881b9bdd081d985b1a59607a1b6044820152606490fd5b8181029291811591840414171561055b57565b8115611ddb570490565b634e487b7160e01b600052601260045260246000fd5b604d811161055b57600a0a90565b9190820391821161055b57565b9190820180921161055b57565b8181039291600013801582851316918412161761055b57565b601454919291611e7b91611e6c91611e6291611e58906001600160801b03831690611dbe565b9060801c90611dd1565b93601f5490611dbe565b611e7583611df1565b90611dd1565b808310611f4357611e8f611ecb9184611dff565b91611ec6611ec0611eb7601e54611eb1611ea886611df1565b60215490611e0c565b90611dbe565b611e7584611df1565b91611df1565b611e19565b6509184e72a0009081810291818305149015171561055b57670de0b6b3a76400009182810292818405149015171561055b578015611ddb57600160ff1b9180831460001983141661055b5705906000821215611f3c57811461055b57600003905b808211611f37575090565b905090565b5090611f2c565b505050600090565b6001600160a01b0390811660008181526017602090815260408220549295949391929091811561208c57611f7d6128e6565b90611f898615156120a6565b6009541683600c54898752601882526064604088205491604051948593849263442c159960e01b8452600484015260248301528960448301525afa90811561208157859161204e575b509285949261202e60189361200961204299612004611ffb60409a620186a06022540490611dbe565b601e5490611dbe565b611dd1565b815190936001600160801b0391869161202491841690611dbe565b9201511690611dd1565b81811061204657035b9783525220546120f2565b9091565b505082612037565b90508381813d831161207a575b6120658183611d12565b810103126120765751612042611fd2565b8480fd5b503d61205b565b6040513d87823e3d90fd5b5050509192505080918190565b519081151582036102cd57565b156120ad57565b60405162461bcd60e51b815260206004820152601e60248201527f4d61726b65743a2065786368616e676552617465206e6f742076616c696400006044820152606490fd5b6120fd8215156120a6565b602060018060a01b0360095416916064600c54604051948593849263442c159960e01b845260048401526024830152600060448301525afa908115611b0f5760009161216a575b50906120046121569260225490611dbe565b620186a0612166601e5483611dbe565b0491565b906020823d8211612198575b8161218360209383611d12565b81010312612195575051612004612144565b80fd5b3d9150612176565b6001600160a01b031660008181526018602052604081205490926121c3916120f2565b9183526017602052604083205480156122cc5781156122cc578181106122cc57828110156122c25760145461220c91839161075491611e58906001600160801b03831690611dbe565b90620186a092838302928084048514901517156122ae576122319291611e7591611dff565b91601b5491601c54936122448585611e19565b80820291848212600160ff1b8214166122ae57818305149015171561229a57058184820194851291129080158216911516176122865750808212611f37575090565b634e487b7160e01b81526011600452602490fd5b634e487b7160e01b83526011600452602483fd5b634e487b7160e01b85526011600452602485fd5b50505050601b5490565b50505090565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031614806123d3575b1561232d577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f000000000000000000000000000000000000000000000000000000000000000082527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a0815260c081018181106001600160401b03821117610a185760405251902090565b507f00000000000000000000000000000000000000000000000000000000000000004614612304565b1561240357565b60405162461bcd60e51b815260206004820152601660248201527545524332303a2062616c616e636520746f6f206c6f7760501b6044820152606490fd5b1561244857565b60405162461bcd60e51b815260206004820152601660248201527545524332303a206e6f207a65726f206164647265737360501b6044820152606490fd5b51906001600160a01b03821682036102cd57565b6005811015611c7057806124ab5750565b600181036124f35760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b6044820152606490fd5b600281036125405760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606490fd5b60031461254957565b60405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608490fd5b9291906fa2a8918ca85bafe22016d0b997e4df60600160ff1b0383116126125791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa156126055781516001600160a01b038116156125ff579190565b50600190565b50604051903d90823e3d90fd5b50505050600090600390565b7fe50de2333c10a9502fcb1d8ae13a51bbf423153dfc63c2b8997665b32154afc360018060a01b038092169160009083825260036020526040822094169384825260205284604082205580a4565b909160207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259160018060a01b03809416938460005260028352604060002095169485600052825280604060002055604051908152a3565b60ff60265416612841576014546001600160801b031690811561283a57600a54604051631848f2bf60e31b8152602093916001600160a01b03919085908290600490829086165afa8015611b0f5785916000916127fd575b50600460405180948193631a674cc560e11b8352165afa938415611b0f576000946127ca575b505061275d9192670de0b6b3a764000092839160295490611dbe565b0490818110156127c157612774602a548092611dff565b8381029080820485149015171561055b57611e75612795926127b594611dff565b602754926127af602854926127aa8487611dff565b611dbe565b04611e0c565b90808211611f37575090565b50505060275490565b81813d83116127f6575b6127de8183611d12565b810103126127f25751925061275d38612741565b8380fd5b503d6127d4565b909181813d8311612833575b6128138183611d12565b8101031261282f5751908282168203612195575084903861271b565b5080fd5b503d612809565b6028549150565b600a5460405163e6abad4960e01b815290602090829060049082906001600160a01b03165afa908115611b0f57600091612879575090565b906020823d821161289f575b8161289260209383611d12565b8101031261219557505190565b3d9150612885565b604051906128b482611cc0565b6014546001600160801b038116835260801c6020830152565b6001600160801b03918216908216019190821161055b57565b600060206040516128f681611cc0565b82815201526001600160401b03906129158260255460401c1642611dff565b91821561296c576129676127aa91670de0b6b3a764000061295c6129376128a7565b9660018060801b03958694858a5116906301e133806129546126c3565b041690611dbe565b0416828551166128cd565b168252565b5090506129776128a7565b90565b60405161298681611cc0565b6025546001600160401b03908181168352818160401c166129ae602085019180835242611dff565b928315612a7357602094816301e133806129c66126c3565b0416815281421683526129d76128a7565b670de0b6b3a76400006129fc60018060801b03976127aa898551168787511690611dbe565b0495612a0d818816828451166128cd565b1680825296015160801b6001600160801b031990811690961760145551915192909416931692831760409190911b67ffffffffffffffff60401b16176025557f7484db546dcd57af0104c73c8a6968dfbaf5767f047cee0dadd0499ad7df81a0600080a3565b505050505056feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220b3df97947646fdd7f411fa4b47c90381d0b2eae7807678555596ade6cb44972064736f6c63430008120033", + "bytecode": "0x61014080604052346200018a5762000017816200018f565b600f81526001602082016e546170696f63612042696742616e6760881b8152602060405162000046816200018f565b8381520192603160f81b845251902091208160e052610100918183524660a0526040519160208301907f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f92838352604085015260608401524660808401523060a084015260a0835260c083019280841060018060401b03851117620001745760408490525190206080523060c052610120908152600580546001600160a01b0319163390811790915560007f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a362013880601b5562015f90601c55612710601d55612ee06020556103e8602d55612bdf9283620001ac8439608051836123fa015260a051836124c5015260c051836123c4015260e051836124490152518261246f015251816124260152f35b634e487b7160e01b600052604160045260246000fd5b600080fd5b604081019081106001600160401b03821117620001745760405256fe608080604052600436101561001357600080fd5b60003560e01c908162a02a2014611c275750806302ce728f14611a10578063078dfbe71461190c578063095ea7b3146118e65780630c4e84f0146117cc57806318160ddd146117b05780631c9e379b146117765780631d4d3a5d1461174d5780631da8bf10146116915780631fb8f81a1461167357806323b872dd146114cf578063331960ff146114b157806334ce998a1461148857806334d441d01461146a5780633644e5151461144f57806337b6b7b91461143157806338d52e0f146114085780633ba0b9a9146113ea5780633f741adb146113c657806340626d8b146113a857806344de240a1461138a578063473e3ce71461136c57806348e4163e146113325780634e71e0c814611284578063529898f214611267578063542afda314611249578063579354621461122b5780636b19ad161461120d5780636c3d8b8f146111e457806370a08231146111aa578063727785471461117457806374645ff3146110e157806374c9e481146110c35780637dc0d1d01461109a5780637ecebe00146110605780637fa0b84e1461102f5780638285ef4014610ffd57806387b2793714610fc35780638c5d0ed314610fa55780638da5cb5b14610f7c578063910dd7c814610d63578063932bc4f814610c8557806399a9702814610c5e5780639e15e89f14610c24578063a9059cbb14610b3d578063b0e21e8a14610b1f578063b27c0e7414610aee578063b7113f1914610acb578063bb4cfe3b14610aad578063bde39c5d14610a8f578063c1ad5c8d14610a6c578063ce8849ed14610a43578063d3fb2a38146105d7578063d505accf14610437578063d8dfeb451461040e578063dd62ed3e146103bd578063de40657714610394578063e0996cb614610376578063e30c39781461034d578063ea64dd561461032f578063eec0f42e14610311578063f791395d146102f35763f8ba4cff146102d357600080fd5b346102ee5760003660031901126102ee576102ec612a69565b005b600080fd5b346102ee5760003660031901126102ee576020602754604051908152f35b346102ee5760003660031901126102ee576020600c54604051908152f35b346102ee5760003660031901126102ee576020601f54604051908152f35b346102ee5760003660031901126102ee576006546040516001600160a01b039091168152602090f35b346102ee5760003660031901126102ee576020601d54604051908152f35b346102ee5760003660031901126102ee576009546040516001600160a01b039091168152602090f35b346102ee5760403660031901126102ee576103d6611c73565b6103de611c89565b9060018060a01b038091166000526002602052604060002091166000526020526020604060002054604051908152f35b346102ee5760003660031901126102ee57600b546040516001600160a01b039091168152602090f35b346102ee5761044536611cae565b9183919395949542116105925760018060a01b0392838816948560005260046020526040600020928354600019811461057c5761052895610520956001830190556040519060208201927f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e2668452600060408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e081526104e481611d81565b5190206104ef6123c1565b9060405190602082019261190160f01b8452602283015260428201526042815261051881611d9d565b519020612688565b919091612589565b1603610537576102ec9261275b565b60405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152606490fd5b634e487b7160e01b600052601160045260246000fd5b60405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b346102ee576101603660031901126102ee576001600160a01b03600435818116908190036102ee576024916001600160401b0383358181116102ee57366023820112156102ee5780600401359182116102ee57368583830101116102ee57604435938385168095036102ee5761065284600554163314611e22565b80610a04575b5084826108a2575b50505081610861575b505060643580610849575b5060843580610831575b5060a4358061081a575b5060c435806107f6575b5060e435806107d2575b5061010435806107a0575b50610124358061072d575b506101443590816106bf57005b601e5482106106ce5750601f55005b60849060326040519162461bcd60e51b8352602060048401528201527f4d61726b65743a206c69717569646174696f6e436f6c6c61746572616c697a616044820152711d1a5bdb94985d19481d1bdbc81cdb585b1b60721b6064820152fd5b61073c620186a0821115611e6d565b601f54811161074e57601e55816106b2565b60405162461bcd60e51b8152602060048201526025818401527f4d61726b65743a20636f6c6c61746572616c697a6174696f6e5261746520746f6044820152646f2062696760d81b6064820152608490fd5b806016547fae6e0ab3b95f0a53ff9660a390ccedcbbf1f2355dce974a9841af106fddcfaba600080a3601655816106a7565b6107e0620186a08210611e6d565b6107ed601b548211611e6d565b601c558161069c565b610804620186a08210611e6d565b610811601c548210611e6d565b601b5581610692565b610828620186a08210611e6d565b601d5581610688565b610840620186a0821115611e6d565b601a558161067e565b610858620186a0821115611e6d565b60195581610674565b816008549182167f5a62d22209e370e38eea92cfddcd228e656e6ec139243392a760a7769f5877fd600080a36001600160a01b031916176008558180610669565b82916108af601054611d2c565b601f81116109a3575b50600090601f841160011461092057600093610913575b5050508160011b916000199060031b1c1916176010555b7fa6f004921c944d4b8bf6e38462b00f36a58d62495d56b51f571ab78f732c9815600080a1838084610660565b01013590508486806108cf565b60106000908152601f1985169550600080516020612b8a83398151915293509091889160205b8782106109845750508460019610610968575b50505050811b016010556108e6565b60001960f88660031b161c199201013516905585808681610959565b8285019093013585556001949094019389929182019190810190610946565b60106000529092509050600080516020612b8a833981519152601f840160051c8101602085106109fd575b91849391601f8994920160051c01905b8181106109eb57506108b8565b600081558594508893506001016109de565b50806109ce565b600f80546001600160a01b0319169190911790557f0b2d6eb667d0522c3eb86e4288afecae6c11591ffd1345d4d12407e0598bca9b600080a185610658565b346102ee5760003660031901126102ee576008546040516001600160a01b039091168152602090f35b346102ee5760003660031901126102ee576020610a876127b2565b604051908152f35b346102ee5760003660031901126102ee576020602854604051908152f35b346102ee5760003660031901126102ee576020601e54604051908152f35b346102ee5760003660031901126102ee57602060ff602554166040519015158152f35b346102ee5760003660031901126102ee5760406024548151906001600160401b03908181168352831c166020820152f35b346102ee5760003660031901126102ee576020601a54604051908152f35b346102ee5760403660031901126102ee57610b56611c73565b602435908115801590610c12575b610b9a575b6040519182526001600160a01b0316903390600080516020612b6a83398151915290602090a3602060405160018152f35b336000526001602052604060002054610bb5838210156124eb565b6001600160a01b038216908333839003610bd2575b505050610b69565b610be691610be1841515612530565b611eee565b3360005260016020526040600020556000526040600020610c08838254611efb565b9055828083610bca565b50336001600160a01b03821614610b64565b346102ee5760403660031901126102ee576060610c4b610c42611c73565b6024359061203a565b9060405192835260208301526040820152f35b346102ee5760403660031901126102ee576020610a87610c7c611c73565b6024359061228f565b346102ee5760003660031901126102ee57604051600090602b54610ca881611d2c565b808352600191808316908115610d3b5750600114610ce1575b610cdd83610cd181870382611db8565b60405191829182611dd9565b0390f35b602b600090815260209450917f11c44e4875b74d31ff9fd779bf2566af7bd15b87fc985d01f5094b89e3669e4f5b828410610d2857505050810190910190610cd181610cc1565b8054858501870152928501928101610d0f565b610cdd9550610cd193506020915091849260ff191682840152151560051b8201019350610cc1565b346102ee5760403660031901126102ee576001600160401b036004358181116102ee57366023820112156102ee578060040135918211610f665760405191610db5601f8201601f191660200184611db8565b808352602083019136602483830101116102ee57816000926024602093018537840101526024359161ffff831683036102ee576101009182828051810103126102ee57610e0190612188565b610e0d60408301612575565b91610e1a60608201612575565b9460808201519460a08301519260c08101519160ff831683036102ee5760e082015191015191844211610592578515610f40577f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e2665b6001600160a01b03881660009081526004602052604090208054909690600019811461057c5761ffff61052097610efd9960018401905560405194602086015216604084015260018060a01b038a16606084015260018060a01b038c1660808401528a60a084015260c083015260e082015260e08152610eee81611d81565b602081519101206104ef6123c1565b6001600160a01b038381169116036105375715610f2a576102ec926001600160a01b03908116911661275b565b6102ec926001600160a01b03908116911661270d565b7f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d6610e6f565b634e487b7160e01b600052604160045260246000fd5b346102ee5760003660031901126102ee576005546040516001600160a01b039091168152602090f35b346102ee5760003660031901126102ee576020601b54604051908152f35b346102ee5760203660031901126102ee576001600160a01b03610fe4611c73565b1660005260236020526020604060002054604051908152f35b346102ee5760003660031901126102ee57601454604080516001600160801b038316815260809290921c602083015290f35b346102ee5760403660031901126102ee5761105561104b611c73565b602435903361270d565b602060405160018152f35b346102ee5760203660031901126102ee576001600160a01b03611081611c73565b1660005260046020526020604060002054604051908152f35b346102ee5760003660031901126102ee57600f546040516001600160a01b039091168152602090f35b346102ee5760003660031901126102ee576020602d54604051908152f35b346102ee5760003660031901126102ee5760405160009060105461110481611d2c565b808352600191808316908115610d3b575060011461112c57610cdd83610cd181870382611db8565b601060009081526020945091600080516020612b8a8339815191525b82841061116157505050810190910190610cd181610cc1565b8054858501870152928501928101611148565b346102ee5760203660031901126102ee5760043560098110156102ee5760ff61119e602092611cfd565b54166040519015158152f35b346102ee5760203660031901126102ee576001600160a01b036111cb611c73565b1660005260016020526020604060002054604051908152f35b346102ee5760003660031901126102ee57600a546040516001600160a01b039091168152602090f35b346102ee5760003660031901126102ee576020602654604051908152f35b346102ee5760003660031901126102ee576020601c54604051908152f35b346102ee5760003660031901126102ee576020602c54604051908152f35b346102ee5760003660031901126102ee5760208054604051908152f35b346102ee5760003660031901126102ee576006546001600160a01b0390818116338190036112ee57806005549384167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a36001600160a01b03199283161760055516600655005b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b346102ee5760203660031901126102ee576001600160a01b03611353611c73565b1660005260176020526020604060002054604051908152f35b346102ee5760003660031901126102ee576020601554604051908152f35b346102ee5760003660031901126102ee576020600e54604051908152f35b346102ee5760003660031901126102ee576020601654604051908152f35b346102ee5760603660031901126102ee576020610a87604435602435600435611f21565b346102ee5760003660031901126102ee576020601154604051908152f35b346102ee5760003660031901126102ee57600d546040516001600160a01b039091168152602090f35b346102ee5760003660031901126102ee576020601254604051908152f35b346102ee5760003660031901126102ee576020610a876123c1565b346102ee5760003660031901126102ee576020601954604051908152f35b346102ee5760003660031901126102ee576014546040516001600160801b039091168152602090f35b346102ee5760003660031901126102ee576020601354604051908152f35b346102ee5760603660031901126102ee576114e8611c73565b6114f0611c89565b604435908161152d575b6040519182526001600160a01b03908116921690600080516020612b6a83398151915290602090a3602060405160018152f35b60018060a01b03808416806000526020600181528460406000205493611555828610156124eb565b85169384840361156a575b50505050506114fa565b8360005260028352604060002033600052835260406000205460001981036115de575b5084926115b5600080516020612b6a833981519152979593600193610be16020991515612530565b926000525260406000205560005260406000206115d3858254611efb565b905591858481611560565b9091811061163357602094926115b588600080516020612b6a83398151915298969461160c82600196611eee565b8660005260028552604060002033600052855260406000205593509395975050929461158d565b60405162461bcd60e51b815260048101849052601860248201527745524332303a20616c6c6f77616e636520746f6f206c6f7760401b6044820152606490fd5b346102ee5760003660031901126102ee576020602954604051908152f35b346102ee5761169f36611cae565b9183919395949542116105925760018060a01b0392838816948560005260046020526040600020928354600019811461057c5761173e95610520956001830190556040519060208201927f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d68452600060408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e081526104e481611d81565b1603610537576102ec9261270d565b346102ee5760003660031901126102ee57602a546040516001600160a01b039091168152602090f35b346102ee5760203660031901126102ee576001600160a01b03611797611c73565b1660005260186020526020604060002054604051908152f35b346102ee5760003660031901126102ee57602060405160008152f35b346102ee5760403660031901126102ee5760043560098110156102ee576117f1611c9f565b6008549091906001600160a01b031633036118aa5760ff61181182611cfd565b5416151591151591821461187057808260ff61182f61185e94611cfd565b54161515827feeec81de25875ce1725479bb76f720a8defdb43dea041919ae37bb4aae9847c0600080a4611cfd565b9060ff80198354169116179055600080f35b60405162461bcd60e51b81526020600482015260126024820152714d61726b65743a2073616d6520737461746560701b6044820152606490fd5b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881d5b985d5d1a1bdc9a5e995960621b6044820152606490fd5b346102ee5760403660031901126102ee57611055611902611c73565b602435903361275b565b346102ee5760603660031901126102ee57611925611c73565b61192d611c9f565b6044359081151582036102ee5760018060a01b0392839161195383600554163314611e22565b156119f75716908115908115916119ef575b50156119b257806005549283167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a36001600160a01b031991821617600555600680549091169055005b60405162461bcd60e51b81526020600482015260156024820152744f776e61626c653a207a65726f206164647265737360581b6044820152606490fd5b905083611965565b9150501660018060a01b03196006541617600655600080f35b346102ee5760003660031901126102ee5760018060a01b03600f54166040519063d6d7d52560e01b8252602091826004820152600091601054611a5281611d2c565b908160248501526001908181169081600014611c015750600114611bc1575b50509060409181600081809603925af18015611bb557600091600091611b76575b508115611b19578015611add5760409281601155817f9f9192b5edb17356c524e08d9e025c8e2f6307e6ea52fb7968faa3081f51c3c8600080a25b4260135583519215158352820152f35b60405162461bcd60e51b81526004810184905260146024820152734d61726b65743a20696e76616c6964207261746560601b6044820152606490fd5b50611b2960135460125490611efb565b4211611b3a57601154604092611acd565b60405162461bcd60e51b815260048101839052601460248201527313585c9ad95d0e881c985d19481d1bdbc81bdb1960621b6044820152606490fd5b9150506040813d604011611bad575b81611b9260409383611db8565b810103126102ee5781611ba482612188565b91015183611a92565b3d9150611b85565b6040513d6000823e3d90fd5b935060106000528460002093856000955b838710611bec575050505091810160440191806040611a71565b80548688016044015295019486908201611bd2565b60ff191660448087019190915292151560051b8501909201945082915060409050611a71565b346102ee5760403660031901126102ee57602090611c43611c73565b611c4b611c89565b9060018060a01b03809116600052600384526040600020911660005282526040600020548152f35b600435906001600160a01b03821682036102ee57565b602435906001600160a01b03821682036102ee57565b6024359081151582036102ee57565b60e09060031901126102ee576001600160a01b039060043582811681036102ee579160243590811681036102ee5790604435906064359060843560ff811681036102ee579060a4359060c43590565b6009811015611d16576000526007602052604060002090565b634e487b7160e01b600052602160045260246000fd5b90600182811c92168015611d5c575b6020831014611d4657565b634e487b7160e01b600052602260045260246000fd5b91607f1691611d3b565b604081019081106001600160401b03821117610f6657604052565b61010081019081106001600160401b03821117610f6657604052565b608081019081106001600160401b03821117610f6657604052565b90601f801991011681019081106001600160401b03821117610f6657604052565b6020808252825181830181905290939260005b828110611e0e57505060409293506000838284010152601f8019910116010190565b818101860151848201604001528501611dec565b15611e2957565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b15611e7457565b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881b9bdd081d985b1a59607a1b6044820152606490fd5b8181029291811591840414171561057c57565b8115611eca570490565b634e487b7160e01b600052601260045260246000fd5b604d811161057c57600a0a90565b9190820391821161057c57565b9190820180921161057c57565b8181039291600013801582851316918412161761057c57565b601454919291611f6a91611f5b91611f5191611f47906001600160801b03831690611ead565b9060801c90611ec0565b93601f5490611ead565b611f6483611ee0565b90611ec0565b80831061203257611f7e611fba9184611eee565b91611fb5611faf611fa6601e54611fa0611f9786611ee0565b60205490611efb565b90611ead565b611f6484611ee0565b91611ee0565b611f08565b6509184e72a0009081810291818305149015171561057c57670de0b6b3a76400009182810292818405149015171561057c578015611eca57600160ff1b9180831460001983141661057c570590600082121561202b57811461057c57600003905b808211612026575090565b905090565b509061201b565b505050600090565b6001600160a01b0390811660008181526017602090815260408220549295949391929091811561217b5761206c6129d5565b90612078861515612195565b6009541683600c54898752601882526064604088205491604051948593849263442c159960e01b8452600484015260248301528960448301525afa90811561217057859161213d575b509285949261211d6018936120f8612131996120f36120ea60409a620186a06021540490611ead565b601e5490611ead565b611ec0565b815190936001600160801b0391869161211391841690611ead565b9201511690611ec0565b81811061213557035b9783525220546121e1565b9091565b505082612126565b90508381813d8311612169575b6121548183611db8565b8101031261216557516121316120c1565b8480fd5b503d61214a565b6040513d87823e3d90fd5b5050509192505080918190565b519081151582036102ee57565b1561219c57565b60405162461bcd60e51b815260206004820152601e60248201527f4d61726b65743a2065786368616e676552617465206e6f742076616c696400006044820152606490fd5b6121ec821515612195565b602060018060a01b0360095416916064600c54604051948593849263442c159960e01b845260048401526024830152600060448301525afa908115611bb557600091612259575b50906120f36122459260215490611ead565b620186a0612255601e5483611ead565b0491565b906020823d8211612287575b8161227260209383611db8565b810103126122845750516120f3612233565b80fd5b3d9150612265565b6001600160a01b031660008181526018602052604081205490926122b2916121e1565b9183526017602052604083205480156123bb5781156123bb578181106123bb57828110156123b1576014546122fb918391610be191611f47906001600160801b03831690611ead565b90620186a0928383029280840485149015171561239d576123209291611f6491611eee565b91601b5491601c54936123338585611f08565b80820291848212600160ff1b82141661239d57818305149015171561238957058184820194851291129080158216911516176123755750808212612026575090565b634e487b7160e01b81526011600452602490fd5b634e487b7160e01b83526011600452602483fd5b634e487b7160e01b85526011600452602485fd5b50505050601b5490565b50505090565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031614806124c2575b1561241c577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f000000000000000000000000000000000000000000000000000000000000000082527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a0815260c081018181106001600160401b03821117610f665760405251902090565b507f000000000000000000000000000000000000000000000000000000000000000046146123f3565b156124f257565b60405162461bcd60e51b815260206004820152601660248201527545524332303a2062616c616e636520746f6f206c6f7760501b6044820152606490fd5b1561253757565b60405162461bcd60e51b815260206004820152601660248201527545524332303a206e6f207a65726f206164647265737360501b6044820152606490fd5b51906001600160a01b03821682036102ee57565b6005811015611d16578061259a5750565b600181036125e25760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b6044820152606490fd5b6002810361262f5760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606490fd5b60031461263857565b60405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608490fd5b9291906fa2a8918ca85bafe22016d0b997e4df60600160ff1b0383116127015791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa156126f45781516001600160a01b038116156126ee579190565b50600190565b50604051903d90823e3d90fd5b50505050600090600390565b7fe50de2333c10a9502fcb1d8ae13a51bbf423153dfc63c2b8997665b32154afc360018060a01b038092169160009083825260036020526040822094169384825260205284604082205580a4565b909160207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259160018060a01b03809416938460005260028352604060002095169485600052825280604060002055604051908152a3565b60ff60255416612930576014546001600160801b031690811561292957600a54604051631848f2bf60e31b8152602093916001600160a01b03919085908290600490829086165afa8015611bb55785916000916128ec575b50600460405180948193631a674cc560e11b8352165afa938415611bb5576000946128b9575b505061284c9192670de0b6b3a764000092839160285490611ead565b0490818110156128b0576128636029548092611eee565b8381029080820485149015171561057c57611f64612884926128a494611eee565b6026549261289e602754926128998487611eee565b611ead565b04611efb565b90808211612026575090565b50505060265490565b81813d83116128e5575b6128cd8183611db8565b810103126128e15751925061284c38612830565b8380fd5b503d6128c3565b909181813d8311612922575b6129028183611db8565b8101031261291e5751908282168203612284575084903861280a565b5080fd5b503d6128f8565b6027549150565b600a5460405163e6abad4960e01b815290602090829060049082906001600160a01b03165afa908115611bb557600091612968575090565b906020823d821161298e575b8161298160209383611db8565b8101031261228457505190565b3d9150612974565b604051906129a382611d66565b6014546001600160801b038116835260801c6020830152565b6001600160801b03918216908216019190821161057c57565b600060206040516129e581611d66565b82815201526001600160401b0390612a048260245460401c1642611eee565b918215612a5b57612a5661289991670de0b6b3a7640000612a4b612a26612996565b9660018060801b03958694858a5116906301e13380612a436127b2565b041690611ead565b0416828551166129bc565b168252565b509050612a66612996565b90565b604051612a7581611d66565b6024546001600160401b03908181168352818160401c16612a9d602085019180835242611eee565b928315612b6257602094816301e13380612ab56127b2565b041681528142168352612ac6612996565b670de0b6b3a7640000612aeb60018060801b0397612899898551168787511690611ead565b0495612afc818816828451166129bc565b1680825296015160801b6001600160801b031990811690961760145551915192909416931692831760409190911b67ffffffffffffffff60401b16176024557f7484db546dcd57af0104c73c8a6968dfbaf5767f047cee0dadd0499ad7df81a0600080a3565b505050505056feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae672a2646970667358221220421a530c998631c56a8d4e60d98acc9217a38659635c3f947a0ebf1b3b58a90464736f6c63430008120033", + "deployedBytecode": "0x608080604052600436101561001357600080fd5b60003560e01c908162a02a2014611c275750806302ce728f14611a10578063078dfbe71461190c578063095ea7b3146118e65780630c4e84f0146117cc57806318160ddd146117b05780631c9e379b146117765780631d4d3a5d1461174d5780631da8bf10146116915780631fb8f81a1461167357806323b872dd146114cf578063331960ff146114b157806334ce998a1461148857806334d441d01461146a5780633644e5151461144f57806337b6b7b91461143157806338d52e0f146114085780633ba0b9a9146113ea5780633f741adb146113c657806340626d8b146113a857806344de240a1461138a578063473e3ce71461136c57806348e4163e146113325780634e71e0c814611284578063529898f214611267578063542afda314611249578063579354621461122b5780636b19ad161461120d5780636c3d8b8f146111e457806370a08231146111aa578063727785471461117457806374645ff3146110e157806374c9e481146110c35780637dc0d1d01461109a5780637ecebe00146110605780637fa0b84e1461102f5780638285ef4014610ffd57806387b2793714610fc35780638c5d0ed314610fa55780638da5cb5b14610f7c578063910dd7c814610d63578063932bc4f814610c8557806399a9702814610c5e5780639e15e89f14610c24578063a9059cbb14610b3d578063b0e21e8a14610b1f578063b27c0e7414610aee578063b7113f1914610acb578063bb4cfe3b14610aad578063bde39c5d14610a8f578063c1ad5c8d14610a6c578063ce8849ed14610a43578063d3fb2a38146105d7578063d505accf14610437578063d8dfeb451461040e578063dd62ed3e146103bd578063de40657714610394578063e0996cb614610376578063e30c39781461034d578063ea64dd561461032f578063eec0f42e14610311578063f791395d146102f35763f8ba4cff146102d357600080fd5b346102ee5760003660031901126102ee576102ec612a69565b005b600080fd5b346102ee5760003660031901126102ee576020602754604051908152f35b346102ee5760003660031901126102ee576020600c54604051908152f35b346102ee5760003660031901126102ee576020601f54604051908152f35b346102ee5760003660031901126102ee576006546040516001600160a01b039091168152602090f35b346102ee5760003660031901126102ee576020601d54604051908152f35b346102ee5760003660031901126102ee576009546040516001600160a01b039091168152602090f35b346102ee5760403660031901126102ee576103d6611c73565b6103de611c89565b9060018060a01b038091166000526002602052604060002091166000526020526020604060002054604051908152f35b346102ee5760003660031901126102ee57600b546040516001600160a01b039091168152602090f35b346102ee5761044536611cae565b9183919395949542116105925760018060a01b0392838816948560005260046020526040600020928354600019811461057c5761052895610520956001830190556040519060208201927f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e2668452600060408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e081526104e481611d81565b5190206104ef6123c1565b9060405190602082019261190160f01b8452602283015260428201526042815261051881611d9d565b519020612688565b919091612589565b1603610537576102ec9261275b565b60405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152606490fd5b634e487b7160e01b600052601160045260246000fd5b60405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b346102ee576101603660031901126102ee576001600160a01b03600435818116908190036102ee576024916001600160401b0383358181116102ee57366023820112156102ee5780600401359182116102ee57368583830101116102ee57604435938385168095036102ee5761065284600554163314611e22565b80610a04575b5084826108a2575b50505081610861575b505060643580610849575b5060843580610831575b5060a4358061081a575b5060c435806107f6575b5060e435806107d2575b5061010435806107a0575b50610124358061072d575b506101443590816106bf57005b601e5482106106ce5750601f55005b60849060326040519162461bcd60e51b8352602060048401528201527f4d61726b65743a206c69717569646174696f6e436f6c6c61746572616c697a616044820152711d1a5bdb94985d19481d1bdbc81cdb585b1b60721b6064820152fd5b61073c620186a0821115611e6d565b601f54811161074e57601e55816106b2565b60405162461bcd60e51b8152602060048201526025818401527f4d61726b65743a20636f6c6c61746572616c697a6174696f6e5261746520746f6044820152646f2062696760d81b6064820152608490fd5b806016547fae6e0ab3b95f0a53ff9660a390ccedcbbf1f2355dce974a9841af106fddcfaba600080a3601655816106a7565b6107e0620186a08210611e6d565b6107ed601b548211611e6d565b601c558161069c565b610804620186a08210611e6d565b610811601c548210611e6d565b601b5581610692565b610828620186a08210611e6d565b601d5581610688565b610840620186a0821115611e6d565b601a558161067e565b610858620186a0821115611e6d565b60195581610674565b816008549182167f5a62d22209e370e38eea92cfddcd228e656e6ec139243392a760a7769f5877fd600080a36001600160a01b031916176008558180610669565b82916108af601054611d2c565b601f81116109a3575b50600090601f841160011461092057600093610913575b5050508160011b916000199060031b1c1916176010555b7fa6f004921c944d4b8bf6e38462b00f36a58d62495d56b51f571ab78f732c9815600080a1838084610660565b01013590508486806108cf565b60106000908152601f1985169550600080516020612b8a83398151915293509091889160205b8782106109845750508460019610610968575b50505050811b016010556108e6565b60001960f88660031b161c199201013516905585808681610959565b8285019093013585556001949094019389929182019190810190610946565b60106000529092509050600080516020612b8a833981519152601f840160051c8101602085106109fd575b91849391601f8994920160051c01905b8181106109eb57506108b8565b600081558594508893506001016109de565b50806109ce565b600f80546001600160a01b0319169190911790557f0b2d6eb667d0522c3eb86e4288afecae6c11591ffd1345d4d12407e0598bca9b600080a185610658565b346102ee5760003660031901126102ee576008546040516001600160a01b039091168152602090f35b346102ee5760003660031901126102ee576020610a876127b2565b604051908152f35b346102ee5760003660031901126102ee576020602854604051908152f35b346102ee5760003660031901126102ee576020601e54604051908152f35b346102ee5760003660031901126102ee57602060ff602554166040519015158152f35b346102ee5760003660031901126102ee5760406024548151906001600160401b03908181168352831c166020820152f35b346102ee5760003660031901126102ee576020601a54604051908152f35b346102ee5760403660031901126102ee57610b56611c73565b602435908115801590610c12575b610b9a575b6040519182526001600160a01b0316903390600080516020612b6a83398151915290602090a3602060405160018152f35b336000526001602052604060002054610bb5838210156124eb565b6001600160a01b038216908333839003610bd2575b505050610b69565b610be691610be1841515612530565b611eee565b3360005260016020526040600020556000526040600020610c08838254611efb565b9055828083610bca565b50336001600160a01b03821614610b64565b346102ee5760403660031901126102ee576060610c4b610c42611c73565b6024359061203a565b9060405192835260208301526040820152f35b346102ee5760403660031901126102ee576020610a87610c7c611c73565b6024359061228f565b346102ee5760003660031901126102ee57604051600090602b54610ca881611d2c565b808352600191808316908115610d3b5750600114610ce1575b610cdd83610cd181870382611db8565b60405191829182611dd9565b0390f35b602b600090815260209450917f11c44e4875b74d31ff9fd779bf2566af7bd15b87fc985d01f5094b89e3669e4f5b828410610d2857505050810190910190610cd181610cc1565b8054858501870152928501928101610d0f565b610cdd9550610cd193506020915091849260ff191682840152151560051b8201019350610cc1565b346102ee5760403660031901126102ee576001600160401b036004358181116102ee57366023820112156102ee578060040135918211610f665760405191610db5601f8201601f191660200184611db8565b808352602083019136602483830101116102ee57816000926024602093018537840101526024359161ffff831683036102ee576101009182828051810103126102ee57610e0190612188565b610e0d60408301612575565b91610e1a60608201612575565b9460808201519460a08301519260c08101519160ff831683036102ee5760e082015191015191844211610592578515610f40577f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e2665b6001600160a01b03881660009081526004602052604090208054909690600019811461057c5761ffff61052097610efd9960018401905560405194602086015216604084015260018060a01b038a16606084015260018060a01b038c1660808401528a60a084015260c083015260e082015260e08152610eee81611d81565b602081519101206104ef6123c1565b6001600160a01b038381169116036105375715610f2a576102ec926001600160a01b03908116911661275b565b6102ec926001600160a01b03908116911661270d565b7f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d6610e6f565b634e487b7160e01b600052604160045260246000fd5b346102ee5760003660031901126102ee576005546040516001600160a01b039091168152602090f35b346102ee5760003660031901126102ee576020601b54604051908152f35b346102ee5760203660031901126102ee576001600160a01b03610fe4611c73565b1660005260236020526020604060002054604051908152f35b346102ee5760003660031901126102ee57601454604080516001600160801b038316815260809290921c602083015290f35b346102ee5760403660031901126102ee5761105561104b611c73565b602435903361270d565b602060405160018152f35b346102ee5760203660031901126102ee576001600160a01b03611081611c73565b1660005260046020526020604060002054604051908152f35b346102ee5760003660031901126102ee57600f546040516001600160a01b039091168152602090f35b346102ee5760003660031901126102ee576020602d54604051908152f35b346102ee5760003660031901126102ee5760405160009060105461110481611d2c565b808352600191808316908115610d3b575060011461112c57610cdd83610cd181870382611db8565b601060009081526020945091600080516020612b8a8339815191525b82841061116157505050810190910190610cd181610cc1565b8054858501870152928501928101611148565b346102ee5760203660031901126102ee5760043560098110156102ee5760ff61119e602092611cfd565b54166040519015158152f35b346102ee5760203660031901126102ee576001600160a01b036111cb611c73565b1660005260016020526020604060002054604051908152f35b346102ee5760003660031901126102ee57600a546040516001600160a01b039091168152602090f35b346102ee5760003660031901126102ee576020602654604051908152f35b346102ee5760003660031901126102ee576020601c54604051908152f35b346102ee5760003660031901126102ee576020602c54604051908152f35b346102ee5760003660031901126102ee5760208054604051908152f35b346102ee5760003660031901126102ee576006546001600160a01b0390818116338190036112ee57806005549384167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a36001600160a01b03199283161760055516600655005b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b346102ee5760203660031901126102ee576001600160a01b03611353611c73565b1660005260176020526020604060002054604051908152f35b346102ee5760003660031901126102ee576020601554604051908152f35b346102ee5760003660031901126102ee576020600e54604051908152f35b346102ee5760003660031901126102ee576020601654604051908152f35b346102ee5760603660031901126102ee576020610a87604435602435600435611f21565b346102ee5760003660031901126102ee576020601154604051908152f35b346102ee5760003660031901126102ee57600d546040516001600160a01b039091168152602090f35b346102ee5760003660031901126102ee576020601254604051908152f35b346102ee5760003660031901126102ee576020610a876123c1565b346102ee5760003660031901126102ee576020601954604051908152f35b346102ee5760003660031901126102ee576014546040516001600160801b039091168152602090f35b346102ee5760003660031901126102ee576020601354604051908152f35b346102ee5760603660031901126102ee576114e8611c73565b6114f0611c89565b604435908161152d575b6040519182526001600160a01b03908116921690600080516020612b6a83398151915290602090a3602060405160018152f35b60018060a01b03808416806000526020600181528460406000205493611555828610156124eb565b85169384840361156a575b50505050506114fa565b8360005260028352604060002033600052835260406000205460001981036115de575b5084926115b5600080516020612b6a833981519152979593600193610be16020991515612530565b926000525260406000205560005260406000206115d3858254611efb565b905591858481611560565b9091811061163357602094926115b588600080516020612b6a83398151915298969461160c82600196611eee565b8660005260028552604060002033600052855260406000205593509395975050929461158d565b60405162461bcd60e51b815260048101849052601860248201527745524332303a20616c6c6f77616e636520746f6f206c6f7760401b6044820152606490fd5b346102ee5760003660031901126102ee576020602954604051908152f35b346102ee5761169f36611cae565b9183919395949542116105925760018060a01b0392838816948560005260046020526040600020928354600019811461057c5761173e95610520956001830190556040519060208201927f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d68452600060408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e081526104e481611d81565b1603610537576102ec9261270d565b346102ee5760003660031901126102ee57602a546040516001600160a01b039091168152602090f35b346102ee5760203660031901126102ee576001600160a01b03611797611c73565b1660005260186020526020604060002054604051908152f35b346102ee5760003660031901126102ee57602060405160008152f35b346102ee5760403660031901126102ee5760043560098110156102ee576117f1611c9f565b6008549091906001600160a01b031633036118aa5760ff61181182611cfd565b5416151591151591821461187057808260ff61182f61185e94611cfd565b54161515827feeec81de25875ce1725479bb76f720a8defdb43dea041919ae37bb4aae9847c0600080a4611cfd565b9060ff80198354169116179055600080f35b60405162461bcd60e51b81526020600482015260126024820152714d61726b65743a2073616d6520737461746560701b6044820152606490fd5b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881d5b985d5d1a1bdc9a5e995960621b6044820152606490fd5b346102ee5760403660031901126102ee57611055611902611c73565b602435903361275b565b346102ee5760603660031901126102ee57611925611c73565b61192d611c9f565b6044359081151582036102ee5760018060a01b0392839161195383600554163314611e22565b156119f75716908115908115916119ef575b50156119b257806005549283167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a36001600160a01b031991821617600555600680549091169055005b60405162461bcd60e51b81526020600482015260156024820152744f776e61626c653a207a65726f206164647265737360581b6044820152606490fd5b905083611965565b9150501660018060a01b03196006541617600655600080f35b346102ee5760003660031901126102ee5760018060a01b03600f54166040519063d6d7d52560e01b8252602091826004820152600091601054611a5281611d2c565b908160248501526001908181169081600014611c015750600114611bc1575b50509060409181600081809603925af18015611bb557600091600091611b76575b508115611b19578015611add5760409281601155817f9f9192b5edb17356c524e08d9e025c8e2f6307e6ea52fb7968faa3081f51c3c8600080a25b4260135583519215158352820152f35b60405162461bcd60e51b81526004810184905260146024820152734d61726b65743a20696e76616c6964207261746560601b6044820152606490fd5b50611b2960135460125490611efb565b4211611b3a57601154604092611acd565b60405162461bcd60e51b815260048101839052601460248201527313585c9ad95d0e881c985d19481d1bdbc81bdb1960621b6044820152606490fd5b9150506040813d604011611bad575b81611b9260409383611db8565b810103126102ee5781611ba482612188565b91015183611a92565b3d9150611b85565b6040513d6000823e3d90fd5b935060106000528460002093856000955b838710611bec575050505091810160440191806040611a71565b80548688016044015295019486908201611bd2565b60ff191660448087019190915292151560051b8501909201945082915060409050611a71565b346102ee5760403660031901126102ee57602090611c43611c73565b611c4b611c89565b9060018060a01b03809116600052600384526040600020911660005282526040600020548152f35b600435906001600160a01b03821682036102ee57565b602435906001600160a01b03821682036102ee57565b6024359081151582036102ee57565b60e09060031901126102ee576001600160a01b039060043582811681036102ee579160243590811681036102ee5790604435906064359060843560ff811681036102ee579060a4359060c43590565b6009811015611d16576000526007602052604060002090565b634e487b7160e01b600052602160045260246000fd5b90600182811c92168015611d5c575b6020831014611d4657565b634e487b7160e01b600052602260045260246000fd5b91607f1691611d3b565b604081019081106001600160401b03821117610f6657604052565b61010081019081106001600160401b03821117610f6657604052565b608081019081106001600160401b03821117610f6657604052565b90601f801991011681019081106001600160401b03821117610f6657604052565b6020808252825181830181905290939260005b828110611e0e57505060409293506000838284010152601f8019910116010190565b818101860151848201604001528501611dec565b15611e2957565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b15611e7457565b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881b9bdd081d985b1a59607a1b6044820152606490fd5b8181029291811591840414171561057c57565b8115611eca570490565b634e487b7160e01b600052601260045260246000fd5b604d811161057c57600a0a90565b9190820391821161057c57565b9190820180921161057c57565b8181039291600013801582851316918412161761057c57565b601454919291611f6a91611f5b91611f5191611f47906001600160801b03831690611ead565b9060801c90611ec0565b93601f5490611ead565b611f6483611ee0565b90611ec0565b80831061203257611f7e611fba9184611eee565b91611fb5611faf611fa6601e54611fa0611f9786611ee0565b60205490611efb565b90611ead565b611f6484611ee0565b91611ee0565b611f08565b6509184e72a0009081810291818305149015171561057c57670de0b6b3a76400009182810292818405149015171561057c578015611eca57600160ff1b9180831460001983141661057c570590600082121561202b57811461057c57600003905b808211612026575090565b905090565b509061201b565b505050600090565b6001600160a01b0390811660008181526017602090815260408220549295949391929091811561217b5761206c6129d5565b90612078861515612195565b6009541683600c54898752601882526064604088205491604051948593849263442c159960e01b8452600484015260248301528960448301525afa90811561217057859161213d575b509285949261211d6018936120f8612131996120f36120ea60409a620186a06021540490611ead565b601e5490611ead565b611ec0565b815190936001600160801b0391869161211391841690611ead565b9201511690611ec0565b81811061213557035b9783525220546121e1565b9091565b505082612126565b90508381813d8311612169575b6121548183611db8565b8101031261216557516121316120c1565b8480fd5b503d61214a565b6040513d87823e3d90fd5b5050509192505080918190565b519081151582036102ee57565b1561219c57565b60405162461bcd60e51b815260206004820152601e60248201527f4d61726b65743a2065786368616e676552617465206e6f742076616c696400006044820152606490fd5b6121ec821515612195565b602060018060a01b0360095416916064600c54604051948593849263442c159960e01b845260048401526024830152600060448301525afa908115611bb557600091612259575b50906120f36122459260215490611ead565b620186a0612255601e5483611ead565b0491565b906020823d8211612287575b8161227260209383611db8565b810103126122845750516120f3612233565b80fd5b3d9150612265565b6001600160a01b031660008181526018602052604081205490926122b2916121e1565b9183526017602052604083205480156123bb5781156123bb578181106123bb57828110156123b1576014546122fb918391610be191611f47906001600160801b03831690611ead565b90620186a0928383029280840485149015171561239d576123209291611f6491611eee565b91601b5491601c54936123338585611f08565b80820291848212600160ff1b82141661239d57818305149015171561238957058184820194851291129080158216911516176123755750808212612026575090565b634e487b7160e01b81526011600452602490fd5b634e487b7160e01b83526011600452602483fd5b634e487b7160e01b85526011600452602485fd5b50505050601b5490565b50505090565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031614806124c2575b1561241c577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f000000000000000000000000000000000000000000000000000000000000000082527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a0815260c081018181106001600160401b03821117610f665760405251902090565b507f000000000000000000000000000000000000000000000000000000000000000046146123f3565b156124f257565b60405162461bcd60e51b815260206004820152601660248201527545524332303a2062616c616e636520746f6f206c6f7760501b6044820152606490fd5b1561253757565b60405162461bcd60e51b815260206004820152601660248201527545524332303a206e6f207a65726f206164647265737360501b6044820152606490fd5b51906001600160a01b03821682036102ee57565b6005811015611d16578061259a5750565b600181036125e25760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b6044820152606490fd5b6002810361262f5760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606490fd5b60031461263857565b60405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608490fd5b9291906fa2a8918ca85bafe22016d0b997e4df60600160ff1b0383116127015791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa156126f45781516001600160a01b038116156126ee579190565b50600190565b50604051903d90823e3d90fd5b50505050600090600390565b7fe50de2333c10a9502fcb1d8ae13a51bbf423153dfc63c2b8997665b32154afc360018060a01b038092169160009083825260036020526040822094169384825260205284604082205580a4565b909160207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259160018060a01b03809416938460005260028352604060002095169485600052825280604060002055604051908152a3565b60ff60255416612930576014546001600160801b031690811561292957600a54604051631848f2bf60e31b8152602093916001600160a01b03919085908290600490829086165afa8015611bb55785916000916128ec575b50600460405180948193631a674cc560e11b8352165afa938415611bb5576000946128b9575b505061284c9192670de0b6b3a764000092839160285490611ead565b0490818110156128b0576128636029548092611eee565b8381029080820485149015171561057c57611f64612884926128a494611eee565b6026549261289e602754926128998487611eee565b611ead565b04611efb565b90808211612026575090565b50505060265490565b81813d83116128e5575b6128cd8183611db8565b810103126128e15751925061284c38612830565b8380fd5b503d6128c3565b909181813d8311612922575b6129028183611db8565b8101031261291e5751908282168203612284575084903861280a565b5080fd5b503d6128f8565b6027549150565b600a5460405163e6abad4960e01b815290602090829060049082906001600160a01b03165afa908115611bb557600091612968575090565b906020823d821161298e575b8161298160209383611db8565b8101031261228457505190565b3d9150612974565b604051906129a382611d66565b6014546001600160801b038116835260801c6020830152565b6001600160801b03918216908216019190821161057c57565b600060206040516129e581611d66565b82815201526001600160401b0390612a048260245460401c1642611eee565b918215612a5b57612a5661289991670de0b6b3a7640000612a4b612a26612996565b9660018060801b03958694858a5116906301e13380612a436127b2565b041690611ead565b0416828551166129bc565b168252565b509050612a66612996565b90565b604051612a7581611d66565b6024546001600160401b03908181168352818160401c16612a9d602085019180835242611eee565b928315612b6257602094816301e13380612ab56127b2565b041681528142168352612ac6612996565b670de0b6b3a7640000612aeb60018060801b0397612899898551168787511690611ead565b0495612afc818816828451166129bc565b1680825296015160801b6001600160801b031990811690961760145551915192909416931692831760409190911b67ffffffffffffffff60401b16176024557f7484db546dcd57af0104c73c8a6968dfbaf5767f047cee0dadd0499ad7df81a0600080a3565b505050505056feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae672a2646970667358221220421a530c998631c56a8d4e60d98acc9217a38659635c3f947a0ebf1b3b58a90464736f6c63430008120033", "linkReferences": {}, "deployedLinkReferences": {} } diff --git a/src/artifacts/tapioca-bar/BBLeverage.json b/src/artifacts/tapioca-bar/BBLeverage.json index 7235117e..397ab49f 100644 --- a/src/artifacts/tapioca-bar/BBLeverage.json +++ b/src/artifacts/tapioca-bar/BBLeverage.json @@ -53,6 +53,31 @@ "name": "ApprovalBorrow", "type": "event" }, + { + "anonymous": false, + "inputs": [], + "name": "AssetOracleDataUpdated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "_oldVal", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "_newVal", + "type": "address" + } + ], + "name": "AssetOracleUpdated", + "type": "event" + }, { "anonymous": false, "inputs": [ @@ -272,25 +297,6 @@ "name": "LogBorrowCapUpdated", "type": "event" }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "uint256", - "name": "_oldVal", - "type": "uint256" - }, - { - "indexed": true, - "internalType": "uint256", - "name": "_newVal", - "type": "uint256" - } - ], - "name": "LogBorrowingFee", - "type": "event" - }, { "anonymous": false, "inputs": [ @@ -479,6 +485,37 @@ "name": "Transfer", "type": "event" }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint256", + "name": "oldMin", + "type": "uint256" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "newMin", + "type": "uint256" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "oldMax", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "newMax", + "type": "uint256" + } + ], + "name": "UpdateMinMaxMintFee", + "type": "event" + }, { "inputs": [], "name": "DOMAIN_SEPARATOR", @@ -640,27 +677,40 @@ "type": "function" }, { - "inputs": [ + "inputs": [], + "name": "assetOracle", + "outputs": [ { - "internalType": "address", + "internalType": "contract IOracle", "name": "", "type": "address" } ], - "name": "balanceOf", + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "assetOracleData", "outputs": [ { - "internalType": "uint256", + "internalType": "bytes", "name": "", - "type": "uint256" + "type": "bytes" } ], "stateMutability": "view", "type": "function" }, { - "inputs": [], - "name": "borrowOpeningFee", + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "balanceOf", "outputs": [ { "internalType": "uint256", @@ -1017,6 +1067,19 @@ "stateMutability": "view", "type": "function" }, + { + "inputs": [], + "name": "maxMintFee", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, { "inputs": [], "name": "minDebtRate", @@ -1043,6 +1106,19 @@ "stateMutability": "view", "type": "function" }, + { + "inputs": [], + "name": "minMintFee", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, { "inputs": [ { @@ -1349,11 +1425,6 @@ }, { "inputs": [ - { - "internalType": "uint256", - "name": "_borrowOpeningFee", - "type": "uint256" - }, { "internalType": "contract IOracle", "name": "_oracle", @@ -1636,8 +1707,8 @@ "type": "function" } ], - "bytecode": "0x6101408060405234620001895762000017816200018e565b600f81526001602082016e546170696f63612042696742616e6760881b8152602060405162000046816200018e565b8381520192603160f81b845251902091208160e052610100918183524660a0526040519160208301907f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f92838352604085015260608401524660808401523060a084015260a0835260c083019280841060018060401b03851117620001735760408490525190206080523060c052610120908152600580546001600160a01b0319163390811790915560007f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a362013880601b5562015f90601c55612710601d556032602055612ee060215561433a9283620001ab8439608051836130c0015260a0518361318b015260c0518361308a015260e0518361310f01525182613135015251816130ec0152f35b634e487b7160e01b600052604160045260246000fd5b600080fd5b604081019081106001600160401b03821117620001735760405256fe608080604052600436101561001357600080fd5b60009060e08235811c918262a02a20146126ab5750816302ce728f14612682578163078dfbe71461257f578163095ea7b3146125585781630996efb7146120d55781630c4e84f014611fbd57816318160ddd14611fa15781631c9e379b14611f685781631da8bf1014611eb25781631ee9c8f2146116395781631fb8f81a1461161b57816323b872dd14611478578163331960ff1461145a57816334ce998a1461143157816334d441d0146114135781633644e515146113f857816337b6b7b9146113da57816338d52e0f146113b15781633ba0b9a9146113935781633f741adb1461136e57816340626d8b1461135057816344de240a14611332578163473e3ce71461131457816348e4163e146112db5781634e71e0c81461122d578163529898f21461120f57816357935462146111f157816358db9afe14610da55781636b19ad1614610d875781636c3d8b8f14610d5e57816370a0823114610d255781637277854714610ced57816374645ff314610bda5781637dc0d1d014610bb15781637ecebe0014610b785781637fa0b84e14610b465781638285ef4014610b1457816387b2793714610adb5781638c5d0ed314610abd5781638da5cb5b14610a94578163910dd7c814610814578163959916dc146107f757816399a97028146107cf5781639e15e89f14610794578163a9059cbb146106b1578163b0e21e8a14610693578163b27c0e7414610662578163b7113f191461063f578163bb4cfe3b14610621578163bde39c5d14610603578163c1ad5c8d146105e0578163ce8849ed146105b7578163d505accf1461042c57508063d8dfeb4514610403578063dd62ed3e146103b4578063de4065771461038b578063e0996cb61461036d578063e30c397814610344578063ea64dd5614610326578063eec0f42e14610308578063f791395d146102ea5763f8ba4cff146102cc57600080fd5b346102e757806003193601126102e7576102e4613740565b80f35b80fd5b50346102e757806003193601126102e7576020602854604051908152f35b50346102e757806003193601126102e7576020600c54604051908152f35b50346102e757806003193601126102e7576020601f54604051908152f35b50346102e757806003193601126102e7576006546040516001600160a01b039091168152602090f35b50346102e757806003193601126102e7576020601d54604051908152f35b50346102e757806003193601126102e7576009546040516001600160a01b039091168152602090f35b50346102e75760403660031901126102e7576103ce6126f3565b60406103d8612709565b9260018060a01b03809316815260026020522091166000526020526020604060002054604051908152f35b50346102e757806003193601126102e757600b546040516001600160a01b039091168152602090f35b9050346105b35761043c36612771565b8394969793929192421161056e5761051a926105129260018060a01b0395868b1697886000526004602052604060002091825492610479846133e1565b90556040519160208301937f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e2668552600060408501528b60608501528a8d1660808501528d60a085015260c08401528183015281526104d681612888565b5190206104e1613087565b9060405190602082019261190160f01b8452602283015260428201526042815261050a8161286d565b51902061335c565b91909161325d565b1603610529576102e49261343e565b60405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152606490fd5b60405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b5080fd5b82346102e757806003193601126102e7576008546040516001600160a01b039091168152602090f35b82346102e757806003193601126102e75760206105fb613495565b604051908152f35b82346102e757806003193601126102e7576020602954604051908152f35b82346102e757806003193601126102e7576020601e54604051908152f35b82346102e757806003193601126102e757602060ff602654166040519015158152f35b82346102e757806003193601126102e75760406025548151906001600160401b03908181168352831c166020820152f35b82346102e757806003193601126102e7576020601a54604051908152f35b82346102e75760403660031901126102e7576106cb6126f3565b60243580928115801590610782575b610712575b50506040519182526001600160a01b03169033906000805160206142e583398151915290602090a3602060405160018152f35b3381526001602052604081205461072b838210156131b1565b6001600160a01b0384169033829003610746575b50506106df565b60409361075d916107588415156131f6565b6129c2565b3383526001602052838320558152206107778382546129cf565b90558183808061073f565b50336001600160a01b038416146106da565b82346102e75760403660031901126102e75760606107bc6107b36126f3565b60243590612b0e565b9060405192835260208301526040820152f35b82346102e75760403660031901126102e75760206105fb6107ee6126f3565b60243590612f55565b82346102e757806003193601126102e75760208054604051908152f35b9050346105b35760403660031901126105b3576004356001600160401b038111610a905736602382011215610a9057806004013590610852826128c5565b9261086060405194856128a4565b82845284602092838601943660248284010111610a90578060248693018737860101526024359161ffff8316809303610a8c57610100938486805181010312610a88576108ac90612c4d565b916108b96040870161323b565b906108c66060880161323b565b9660808101519660a0820151926108df60c0840161324f565b91818401519301519360018060a01b03808097169b1698814211610a43579289888d9897946109ba9794610512978f8e600014610a1c577f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e266955b8d60005260048652604060002092835493610953856133e1565b905560405196870197885260408701528d6060870152608086015260a085015260c084015281830152815261098781612888565b519020610992613087565b90604051908a82019261190160f01b8452602283015260428201526042815261050a8161286d565b16036109d85750156109cf576102e49261343e565b6102e4926133f0565b6064906040519062461bcd60e51b82526004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152fd5b7f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d695610939565b60405162461bcd60e51b815260048101899052601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b8680fd5b8580fd5b8280fd5b82346102e757806003193601126102e7576005546040516001600160a01b039091168152602090f35b82346102e757806003193601126102e7576020601b54604051908152f35b82346102e75760203660031901126102e7576020906040906001600160a01b03610b036126f3565b168152602483522054604051908152f35b82346102e757806003193601126102e757601454604080516001600160801b038316815260809290921c602083015290f35b82346102e75760403660031901126102e757610b6d610b636126f3565b60243590336133f0565b602060405160018152f35b82346102e75760203660031901126102e7576020906040906001600160a01b03610ba06126f3565b168152600483522054604051908152f35b82346102e757806003193601126102e757600f546040516001600160a01b039091168152602090f35b82346102e757806003193601126102e7576040516010548183610bfc836127ef565b808352600193808516908115610ccc5750600114610c6f575b50610c22925003826128a4565b60405180926020908183528351918281850152815b838110610c5857505060408094508284010152601f80199101168101030190f35b808601820151878201604001528694508101610c37565b601086527f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae67293602092508691905b818310610cb4575050610c22935082010185610c15565b85548784018501529485019486945091830191610c9d565b9050610c2294506020925060ff191682840152151560051b82010185610c15565b82346102e75760203660031901126102e7576004359060098210156102e757602060ff610d19846127c0565b54166040519015158152f35b82346102e75760203660031901126102e7576020906040906001600160a01b03610d4d6126f3565b168152600183522054604051908152f35b82346102e757806003193601126102e757600a546040516001600160a01b039091168152602090f35b82346102e757806003193601126102e7576020602754604051908152f35b82346102e75760a03660031901126102e757610dbf6126f3565b610dc761271f565b916084356001600160401b0381116105b357610de7903690600401612744565b9290600660005260209460078652610e0760ff6040600020541615613840565b610e0f612c5a565b5050610e19613740565b610e2e6001600160a01b0384163014156138bd565b600a5460405163433e762d60e01b8152908790829060049082906001600160a01b03165afa9081156111a157610e7f91610e7a9187916111c4575b506001600160a01b03841690613a84565b613922565b610e8b60243584613d5c565b6001600160a01b038316845260188652604084208054610eae90602435906129c2565b9055610ebe6024356015546129c2565b6015556040516024356001600160a01b038381169086167f8ad4d3ff00da092c7ad9a573ea4f5f6a3dffc6712dc06d3f78f49b862297c4028880a460018060a01b0360095416600c54813b15610a8857630208d92960e11b835286918391829084908290610f3e90602435906001600160a01b038b163060048601613969565b03925af180156111a1579085916111ac575b5050600c54600e54604051633d9545e960e11b815260048101929092526024808301919091526000604483015235606482015260016084820181905260a48201526101408160c4816001600160a01b0386165afa9081156111a15785604094939286928291611170575b50610fde8651998a968795869463efa84c6d60e01b86526044359060048701613c71565b03926001600160a01b03165af191821561112d5780938193611139575b5061100a604435851015613d1a565b6001600160a01b0382168152601785526040812054906110318261102c61366d565b613e42565b8660018060a01b0360095416916064600e546040519485938492638eb22cdd60e01b845260048401526024830152600160448301525afa91821561112d57916110f3575b506105fb9361109b939291116110a057611090908280613ea0565b505b60115490613993565b61387d565b506110a961366d565b80516001600160801b039081166110ce5750506110c8845b8280613ea0565b50611092565b81816110e56110ee938a6110c8960151168961296b565b91511690612994565b6110c1565b929190508583813d8311611126575b61110c81836128a4565b810103126111215791519091906105fb611075565b600080fd5b503d611102565b604051903d90823e3d90fd5b90925061115f91935060403d604011611169575b61115781836128a4565b810190613c5b565b9290929185610ffb565b503d61114d565b61119491506101403d6101401161119a575b61118c81836128a4565b810190613b71565b8a610fba565b503d611182565b6040513d87823e3d90fd5b6111b590612829565b6111c0578387610f50565b8380fd5b6111e49150893d8b116111ea575b6111dc81836128a4565b810190613908565b89610e69565b503d6111d2565b82346102e757806003193601126102e7576020601c54604051908152f35b82346102e757806003193601126102e7576020602154604051908152f35b82346102e757806003193601126102e7576006546001600160a01b03908181163381900361129757806005549384167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08680a36001600160a01b0319928316176005551660065580f35b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b82346102e75760203660031901126102e7576020906040906001600160a01b036113036126f3565b168152601783522054604051908152f35b82346102e757806003193601126102e7576020601554604051908152f35b82346102e757806003193601126102e7576020600e54604051908152f35b82346102e757806003193601126102e7576020601654604051908152f35b82346102e75760603660031901126102e75760206105fb6044356024356004356129f5565b82346102e757806003193601126102e7576020601154604051908152f35b82346102e757806003193601126102e757600d546040516001600160a01b039091168152602090f35b82346102e757806003193601126102e7576020601254604051908152f35b82346102e757806003193601126102e75760206105fb613087565b82346102e757806003193601126102e7576020601954604051908152f35b82346102e757806003193601126102e7576014546040516001600160801b039091168152602090f35b82346102e757806003193601126102e7576020601354604051908152f35b82346102e75760603660031901126102e7576114926126f3565b9061149b612709565b60443591826114d9575b506040519182526001600160a01b039081169216906000805160206142e583398151915290602090a3602060405160018152f35b6001600160a01b03848116808352600160209081526040842054928690611502828610156131b1565b861693848403611517575b50505050506114a5565b83865260028352604086203360005283526040600020546000198103611585575b509260016020969361156387946040976107586000805160206142e58339815191529c9a15156131f6565b92855252838320558152206115798582546129cf565b9055918580858161150d565b909181106115db57926001602096936115638a6000805160206142e58339815191529a98956115b68260409a6129c2565b8689526002855289892033600052855289600020559497509497995050939650611538565b60405162461bcd60e51b815260048101849052601860248201527745524332303a20616c6c6f77616e636520746f6f206c6f7760401b6044820152606490fd5b82346102e757806003193601126102e7576020602a54604051908152f35b82346102e75760c03660031901126102e7576116536126f3565b608435906001600160a01b0382168203610a905760a4356001600160401b0381116111c057611686903690600401612744565b92906005855260076020526116a260ff60408720541615613840565b6116aa612c5a565b50506116b4613740565b6116c96001600160a01b0384163014156138bd565b600a5460405163433e762d60e01b815290602090829060049082906001600160a01b03165afa908115611cd75761171691610e7a918891611e93575b506001600160a01b03851690613a84565b600954600e54604051638eb22cdd60e01b81526004810182905260448035602483015260019082015293916001600160a01b0316908790602086606481865afa958615611e88578296611e54575b5085611df4575b505050620186a061178060205460243561296b565b049260018060a01b03821687526024602052604087206117a18582546129cf565b90556117ab61366d565b936117b8816024356129cf565b94600060206040516117c981612852565b828152015280516001600160801b03908116611d9857806117f081895b1682855116613693565b168252806020830192611808828a1683865116613693565b9382851690525116918a6014549160801b9116928b60018060801b03199182841681871717601455601654948515968715611d82575b5050505050505015611d3d57879460018060a01b038716865260176020526040862061186b8282546129cf565b9055604080519283526020830191909152602435916001600160a01b0385811692908916917f3a5151e57d3bc9798e7853034ac52293d1a0e12a2b44725e75b03b21f86477a69190a4600d546001600160a01b0316803b15611d39576040516340c10f1960e01b815230600482015260248035908201529085908290604490829084905af19081156111a1578591611d25575b5050600d54600e5460095460405163095ea7b360e01b81526001600160a01b039182166004820152602481018890529192166020826044818a855af1918215611c8c578792611ce2575b5060095460405163095ea7b360e01b81526001600160a01b0390911660048201526024803590820152916020918391829081604481015b03925af18015611cd757611c97575b5060095460408051634d4d7cbd60e11b815296909287926001600160a01b03908116928492909183916119ce9160243591908b1690309060048601613e13565b03925af1938415611c8c578794611c65575b50610140906119f5600e5495600c54926129cf565b604051633d9545e960e11b81526004810196909652602486019190915260006044860152606485015260016084850181905260a48501528360c4816001600160a01b0385165afa9286841561112d5760409486928291611c44575b50611a7486519889968795869463efa84c6d60e01b86526064359060048701613c71565b03926001600160a01b03165af18015611c395783928491611c14575b50611a9f606435841015613d1a565b611aa98183613d5c565b8015611b8c575b6001600160a01b03821684526018602052604084208054611ad29083906129cf565b9055611ae0816015546129cf565b601555600c546009546001600160a01b0316908590823b156105b357611b2192849183604051809681958294630208d92960e11b8452308c60048601613969565b03925af180156111a157611b78575b506020936105fb9261109b9290916001600160a01b0383169081907f9ed03113de523cebfe5e49d5f8e12894b1c0d42ce805990461726444c90eab879080a460115490613993565b611b828591612829565b6111c05784611b30565b5060018060a01b03600954166020600c54606460405180948193638eb22cdd60e01b835260048301528860248301528860448301525afa908115611c09578491611bd7575b50611ab0565b90506020813d602011611c01575b81611bf2602093836128a4565b81010312611121575184611bd1565b3d9150611be5565b6040513d86823e3d90fd5b9050611c3091925060403d6040116111695761115781836128a4565b91909184611a90565b6040513d85823e3d90fd5b611c5f91506101403d6101401161119a5761118c81836128a4565b89611a50565b610140919450611c839060403d6040116111695761115781836128a4565b905093906119e0565b6040513d89823e3d90fd5b6020813d602011611ccf575b81611cb0602093836128a4565b81010312610a8c57604091611cc76119ce92612c4d565b50915061198e565b3d9150611ca3565b6040513d88823e3d90fd5b91506020823d602011611d1d575b81611cfd602093836128a4565b81010312610a885761197f602091611d158994612c4d565b509150611948565b3d9150611cf0565b611d2e90612829565b6111c05783886118fe565b8480fd5b60405162461bcd60e51b815260206004820152601b60248201527f42696742616e673a20626f72726f7720636170207265616368656400000000006044820152606490fd5b161792161617111590508980808b81808061183e565b602082019680611dca611dbb611db1858c51168461296b565b8587511690612994565b99846110e5818851168d61296b565b10611ddb575b6117f08280926117e6565b966117f082611dea81936133e1565b9992505050611dd0565b823b156105b357604051630208d92960e11b8152928391829084908290611e2b908b906001600160a01b038b168e60048601613969565b03925af18015611c8c57611e41575b868161176b565b611e4d90969196612829565b9486611e3a565b9095506020813d602011611e80575b81611e70602093836128a4565b810103126105b357519489611764565b3d9150611e63565b6040513d84823e3d90fd5b611eac915060203d6020116111ea576111dc81836128a4565b88611705565b9050346105b357611ec236612771565b8397949697929192421161056e57611f5992610512928a60018060a01b0396878c169889835260046020526040832091825492611efe846133e1565b90556040519260208401947f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d6865260408501528b60608501528a8d1660808501528d60a085015260c08401528183015281526104d681612888565b1603610529576102e4926133f0565b82346102e75760203660031901126102e7576020906040906001600160a01b03611f906126f3565b168152601883522054604051908152f35b82346102e757806003193601126102e757602090604051908152f35b82346102e75760403660031901126102e75760043560098110156105b357611fe3612735565b6008549091906001600160a01b031633036120995760ff612003826127c0565b5416151591151591821461205f57808260ff61202161204f946127c0565b54161515827feeec81de25875ce1725479bb76f720a8defdb43dea041919ae37bb4aae9847c08780a46127c0565b9060ff8019835416911617905580f35b60405162461bcd60e51b81526020600482015260126024820152714d61726b65743a2073616d6520737461746560701b6044820152606490fd5b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881d5b985d5d1a1bdc9a5e995960621b6044820152606490fd5b82346102e7576101803660031901126102e7576001600160a01b0360243581811690819003610a90576001600160401b0391604435838111611d395761212082913690600401612744565b61212861271f565b91612138846005541633146128e0565b60043596620186a09661214d888a111561292b565b602098808a547fc353b09af857951dccce61b43a5854fc45beceed36c50e5d4cc2e71858a8e0df8d80a389558061251a575b50826123c1575b505050169081612381575b50506084358061236c575b5060a43580612357575b5060c43580612343575b5060e43580612322575b506101043580612301575b5061012435806122d0575b5061014435908161225e575b50506101643590816121ec578280f35b601e5482106121ff5750601f5581808280f35b6084906040519062461bcd60e51b82526004820152603260248201527f4d61726b65743a206c69717569646174696f6e436f6c6c61746572616c697a616044820152711d1a5bdb94985d19481d1bdbc81cdb585b1b60721b6064820152fd5b61226a9082111561292b565b601f54811161227d57601e5582806121dc565b60405162461bcd60e51b815260048101839052602560248201527f4d61726b65743a20636f6c6c61746572616c697a6174696f6e5261746520746f6044820152646f2062696760d81b6064820152608490fd5b806016547fae6e0ab3b95f0a53ff9660a390ccedcbbf1f2355dce974a9841af106fddcfaba8680a3601655836121d0565b61230c82821061292b565b612319601b54821161292b565b601c55836121c5565b61232d82821061292b565b61233a601c54821061292b565b601b55836121ba565b61234e82821061292b565b601d55836121b0565b6123638282111561292b565b601a55836121a6565b6123788282111561292b565b6019558361219c565b816008549182167f5a62d22209e370e38eea92cfddcd228e656e6ec139243392a760a7769f5877fd8780a36001600160a01b031916176008558380612191565b9091809394501161250657908392916123db6010546127ef565b601f81116124b8575b508790601f8311600114612448578891908361243d575b50508160011b916000199060031b1c1916176010555b7fa6f004921c944d4b8bf6e38462b00f36a58d62495d56b51f571ab78f732c98158680a1868080612186565b0135905088806123fb565b6010899594939295528789209089955b89601f198516881061249f575060019495965083601f19811610612485575b505050811b01601055612411565b0135600019600384901b60f8161c19169055888080612477565b8183013584559687019688965060019093019201612458565b909192935060108852868820601f840160051c81018885106124ff575b90601f87969594930160051c01905b8181106124f157506123e4565b8981558695506001016124e4565b50806124d5565b634e487b7160e01b87526041600452602487fd5b600f80546001600160a01b0319169190911790557f0b2d6eb667d0522c3eb86e4288afecae6c11591ffd1345d4d12407e0598bca9b8980a18961217f565b82346102e75760403660031901126102e757610b6d6125756126f3565b602435903361343e565b82346102e75760603660031901126102e7576125996126f3565b6125a1612735565b6044359081151582036111c05760018060a01b039283916125c7836005541633146128e0565b1561266b571690811590811591612663575b501561262657806005549283167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08580a36001600160a01b03199182161760055560068054909116905580f35b60405162461bcd60e51b81526020600482015260156024820152744f776e61626c653a207a65726f206164647265737360581b6044820152606490fd5b9050846125d9565b9150501660018060a01b0319600654161760065580f35b82346102e757806003193601126102e757604061269d612c5a565b825191151582526020820152f35b8390346105b35760403660031901126105b35760406020926126cb6126f3565b6126d3612709565b6001600160a01b0391821683526003865283832091168252845220548152f35b600435906001600160a01b038216820361112157565b602435906001600160a01b038216820361112157565b606435906001600160a01b038216820361112157565b60243590811515820361112157565b9181601f84011215611121578235916001600160401b038311611121576020838186019501011161112157565b60e0906003190112611121576001600160a01b03906004358281168103611121579160243590811681036111215790604435906064359060843560ff81168103611121579060a4359060c43590565b60098110156127d9576000526007602052604060002090565b634e487b7160e01b600052602160045260246000fd5b90600182811c9216801561281f575b602083101461280957565b634e487b7160e01b600052602260045260246000fd5b91607f16916127fe565b6001600160401b03811161283c57604052565b634e487b7160e01b600052604160045260246000fd5b604081019081106001600160401b0382111761283c57604052565b608081019081106001600160401b0382111761283c57604052565b61010081019081106001600160401b0382111761283c57604052565b90601f801991011681019081106001600160401b0382111761283c57604052565b6001600160401b03811161283c57601f01601f191660200190565b156128e757565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b1561293257565b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881b9bdd081d985b1a59607a1b6044820152606490fd5b8181029291811591840414171561297e57565b634e487b7160e01b600052601160045260246000fd5b811561299e570490565b634e487b7160e01b600052601260045260246000fd5b604d811161297e57600a0a90565b9190820391821161297e57565b9190820180921161297e57565b8181039291600013801582851316918412161761297e57565b601454919291612a3e91612a2f91612a2591612a1b906001600160801b0383169061296b565b9060801c90612994565b93601f549061296b565b612a38836129b4565b90612994565b808310612b0657612a52612a8e91846129c2565b91612a89612a83612a7a601e54612a74612a6b866129b4565b602154906129cf565b9061296b565b612a38846129b4565b916129b4565b6129dc565b6509184e72a0009081810291818305149015171561297e57670de0b6b3a76400009182810292818405149015171561297e57801561299e57600160ff1b9180831460001983141661297e5705906000821215612aff57811461297e57600003905b808211612afa575090565b905090565b5090612aef565b505050600090565b6001600160a01b03908116600081815260176020908152604082205492959493919290918115612c4057612b406136ac565b90612b4c861515612e52565b6009541683600c54898752601882526064604088205491604051948593849263442c159960e01b8452600484015260248301528960448301525afa9081156111a1578591612c11575b5092859492612bf1601893612bcc612c0599612bc7612bbe60409a620186a0602254049061296b565b601e549061296b565b612994565b815190936001600160801b03918691612be79184169061296b565b9201511690612994565b818110612c0957035b978352522054612e9e565b9091565b505082612bfa565b90508381813d8311612c39575b612c2881836128a4565b81010312611d395751612c05612b95565b503d612c1e565b5050509192505080918190565b5190811515820361112157565b60018060a01b03600f54169060409081519263d6d7d52560e01b845282846020928360048301526000601054612c8f816127ef565b90816024860152600190858282169182600014612e2e575050600114612dea575b5050600083809203925af18015612ddf576000948591612da4575b50928415612d46578315612d0c57505081601155817f9f9192b5edb17356c524e08d9e025c8e2f6307e6ea52fb7968faa3081f51c3c8600080a25b42601355565b60649250519062461bcd60e51b8252600482015260146024820152734d61726b65743a20696e76616c6964207261746560601b6044820152fd5b90919250612d59601354601254906129cf565b4211612d6a57505060115490612d06565b60649250519062461bcd60e51b82526004820152601460248201527313585c9ad95d0e881c985d19481d1bdbc81bdb1960621b6044820152fd5b9490508385813d8311612dd8575b612dbc81836128a4565b810103126102e7575080612dcf85612c4d565b94015138612ccb565b503d612db2565b83513d6000823e3d90fd5b915060106000528560002091866000935b838510612e1357505050508201604401600083612cb0565b80548c8601604401528a97508b965093019287908201612dfb565b8195506000949193506044925060ff191682840152151560051b8201019250612cb0565b15612e5957565b60405162461bcd60e51b815260206004820152601e60248201527f4d61726b65743a2065786368616e676552617465206e6f742076616c696400006044820152606490fd5b612ea9821515612e52565b602060018060a01b0360095416916064600c54604051948593849263442c159960e01b845260048401526024830152600060448301525afa908115612f4957600091612f16575b5090612bc7612f02926022549061296b565b620186a0612f12601e548361296b565b0491565b906020823d8211612f41575b81612f2f602093836128a4565b810103126102e7575051612bc7612ef0565b3d9150612f22565b6040513d6000823e3d90fd5b6001600160a01b03166000818152601860205260408120549092612f7891612e9e565b91835260176020526040832054801561308157811561308157818110613081578281101561307757601454612fc191839161075891612a1b906001600160801b0383169061296b565b90620186a0928383029280840485149015171561306357612fe69291612a38916129c2565b91601b5491601c5493612ff985856129dc565b80820291848212600160ff1b82141661306357818305149015171561304f570581848201948512911290801582169115161761303b5750808212612afa575090565b634e487b7160e01b81526011600452602490fd5b634e487b7160e01b83526011600452602483fd5b634e487b7160e01b85526011600452602485fd5b50505050601b5490565b50505090565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03161480613188575b156130e2577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f000000000000000000000000000000000000000000000000000000000000000082527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a0815260c081018181106001600160401b0382111761283c5760405251902090565b507f000000000000000000000000000000000000000000000000000000000000000046146130b9565b156131b857565b60405162461bcd60e51b815260206004820152601660248201527545524332303a2062616c616e636520746f6f206c6f7760501b6044820152606490fd5b156131fd57565b60405162461bcd60e51b815260206004820152601660248201527545524332303a206e6f207a65726f206164647265737360501b6044820152606490fd5b51906001600160a01b038216820361112157565b519060ff8216820361112157565b60058110156127d9578061326e5750565b600181036132b65760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b6044820152606490fd5b600281036133035760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606490fd5b60031461330c57565b60405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608490fd5b9291906fa2a8918ca85bafe22016d0b997e4df60600160ff1b0383116133d55791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa156133c85781516001600160a01b038116156133c2579190565b50600190565b50604051903d90823e3d90fd5b50505050600090600390565b600019811461297e5760010190565b7fe50de2333c10a9502fcb1d8ae13a51bbf423153dfc63c2b8997665b32154afc360018060a01b038092169160009083825260036020526040822094169384825260205284604082205580a4565b909160207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259160018060a01b03809416938460005260028352604060002095169485600052825280604060002055604051908152a3565b60ff60265416613607576014546001600160801b031690811561360057600a54604051631848f2bf60e31b8152602093916001600160a01b03919085908290600490829086165afa8015612f495785916000916135cb575b50600460405180948193631a674cc560e11b8352165afa938415612f495760009461359c575b505061352f9192670de0b6b3a76400009283916029549061296b565b04908181101561359357613546602a5480926129c2565b8381029080820485149015171561297e57612a3861356792613587946129c2565b602754926135816028549261357c84876129c2565b61296b565b046129cf565b90808211612afa575090565b50505060275490565b81813d83116135c4575b6135b081836128a4565b810103126111c05751925061352f38613513565b503d6135a6565b9182813d83116135f9575b6135e081836128a4565b810103126102e757506135f3859161323b565b386134ed565b503d6135d6565b6028549150565b600a5460405163e6abad4960e01b815290602090829060049082906001600160a01b03165afa908115612f495760009161363f575090565b906020823d8211613665575b81613658602093836128a4565b810103126102e757505190565b3d915061364b565b6040519061367a82612852565b6014546001600160801b038116835260801c6020830152565b6001600160801b03918216908216019190821161297e57565b600060206040516136bc81612852565b82815201526001600160401b03906136db8260255460401c16426129c2565b9182156137325761372d61357c91670de0b6b3a76400006137226136fd61366d565b9660018060801b03958694858a5116906301e1338061371a613495565b04169061296b565b041682855116613693565b168252565b50905061373d61366d565b90565b60405161374c81612852565b6025546001600160401b03908181168352818160401c166137746020850191808352426129c2565b92831561383957602094816301e1338061378c613495565b04168152814216835261379d61366d565b670de0b6b3a76400006137c260018060801b039761357c89855116878751169061296b565b04956137d381881682845116613693565b1680825296015160801b6001600160801b031990811690961760145551915192909416931692831760409190911b67ffffffffffffffff60401b16176025557f7484db546dcd57af0104c73c8a6968dfbaf5767f047cee0dadd0499ad7df81a0600080a3565b5050505050565b1561384757565b60405162461bcd60e51b815260206004820152600e60248201526d13585c9ad95d0e881c185d5cd95960921b6044820152606490fd5b1561388457565b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881a5b9cdbdb1d995b9d607a1b6044820152606490fd5b156138c457565b606460405162461bcd60e51b815260206004820152602060248201527f4d61726b65743a2063616e6e6f742065786563757465206f6e20697473656c666044820152fd5b90816020910312611121575161ffff811681036111215790565b1561392957565b60405162461bcd60e51b81526020600482015260186024820152772134b3a130b7339d1024b73b30b634b21039bbb0b83832b960411b6044820152606490fd5b6001600160a01b039182168152911660208201526040810191909152606081019190915260800190565b919060018060a01b03806000941684526020601781526040852054908115613a7a57601881526040862054801561383957816139cd61366d565b9460095416916064600c54604051948593849263442c159960e01b8452600484015260248301528b60448301525afa96871561112d578097613a44575b5050612be7613a29612bbe613a3f969798620186a0602254049061296b565b9561357c60018060801b0394858751169061296b565b111590565b9096508187813d8311613a73575b613a5c81836128a4565b810103126102e75750945194612be7613a29613a0a565b503d613a52565b5060019450505050565b600a5460405163dbd01de160e01b815260209290916001600160a01b039084908490600490829085165afa8015612f49578493600091613b33575b50918161ffff936044936040519889968795633a304d8b60e21b8752166004860152166024840152165afa908115612f4957600091613aff575b50905090565b82813d8311613b2c575b613b1381836128a4565b810103126102e75750613b2590612c4d565b8038613af9565b503d613b09565b9091929381813d8311613b6a575b613b4b81836128a4565b810103126105b357519082821682036102e75750839291906044613abf565b503d613b41565b809103906101408212611121576040805192606084018481106001600160401b0382111761283c578083526080821261112157613bad8161286d565b613bb68461323b565b815260208401516080860152613bcd83850161323b565b60a0860152606084015160c086015284526080607f198201126111215781908151613bf78161286d565b6080850151815260a0850151602082015260c08501518382015260e08501516060820152602086015260ff19011261112157613c50610120825193613c3b85612852565b613c486101008201612c4d565b855201612c4d565b602083015282015290565b9190826040910312611121576020825192015190565b939492909160206040845194606060018060a01b0396878151168a5284810151858b0152878482015116848b015201516060890152606083820151805160808b01528481015160a08b01528381015160c08b0152015160e08901520151805115156101008801520151151561012086015261014085015216610160830152806101a080610180850152830152806101c093848401376000828201840152601f01601f1916010190565b15613d2157565b60405162461bcd60e51b8152602060048201526013602482015272084d2ce84c2dcce7440dcdee840cadcdeeaced606b1b6044820152606490fd5b6001600160a01b0316338103613d70575050565b6000818152602090600382526040918282203383528152848383205410613dd95783825260038152828220338352815282822054600101613db2575050505050565b613dcd938252600381528282209033835252209182546129c2565b90553880808080613839565b60649083519062461bcd60e51b82526004820152601460248201527313585c9ad95d0e881b9bdd08185c1c1c9bdd995960621b6044820152fd5b9081526001600160a01b0391821660208201529116604082015260608101919091526000608082015260a00190565b60208101805190939291906001600160801b03908116613e63575090925050565b90816110e581613e86613e7c613e8f968651168861296b565b828a511690612994565b9751168761296b565b10613e9657565b9061373d906133e1565b92909260018060a01b0392838516906000948286526020906017825260409788882054808511614167575b50831561412b5783613edc91614188565b94838610156140ef57879885895260248452808920613efc8882546129c2565b9055613f0661366d565b9689858351613f1481612852565b8281520152613f238689613e42565b9760018060801b0380613f3b818c168285511661416f565b16825286820190613f51818a168284511661416f565b9181831690528a9251169060018060801b03199060801b1617601455878b5260178652828b20613f828882546129c2565b9055613fb3838a809d886009541690600e549084518096819582946311a5cc7760e31b84528d309160048601613e13565b03925af180156140e55790613fe09392916140c9575b50613fd4888b6129c2565b806140a6575b506129c2565b80614018575b507fc8e512d8f188ca059984b5853d2bf653da902696b8512785b182b2c813789a6e94959697989950519485521692a4565b8a9084600d541690813b15610a90578351632770a7eb60e21b8152306004820152602481019190915291908290604490829084905af1801561409c577fc8e512d8f188ca059984b5853d2bf653da902696b8512785b182b2c813789a6e969798999a9b5061408d575b8a999897969550613fe6565b61409690612829565b38614081565b82513d8d823e3d90fd5b6140c391506140bc620186a091601a549061296b565b048a6129c2565b38613fda565b6140df90853d87116111695761115781836128a4565b50613fc9565b84513d8f823e3d90fd5b885162461bcd60e51b815260048101849052601560248201527442423a2072657061796d656e7420746f6f206c6f7760581b6044820152606490fd5b885162461bcd60e51b815260048101849052601560248201527453474c3a206e6f7468696e6720746f20726570617960581b6044820152606490fd5b935038613ecb565b6001600160801b03918216908216039190821161297e57565b6001600160a01b03908116600081815260176020908152604080832054939590949293919282821461429257848091600d541687518681019063313ce56760e01b8252600481526141d881612852565b51915afa3d1561428a573d906141ed826128c5565b916141fa885193846128a4565b82523d868684013e5b80614280575b15614272578381805181010312611d39579060ff61422b85614234940161324f565b169283916142a1565b80156142695760249291612a38612a8361425893898852868652888820549061296b565b948352522054808211612afa575090565b50505091505090565b506142349060ff601261422b565b5083815114614209565b606090614203565b50505060249192935052205490565b91821580156142dc575b612b06576001810180911161297e576142ca92612a74612bc7926129b4565b6005810180911161297e57600a900490565b5081156142ab56feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220ba5de1c696bde8c6406a28642161fb2dd455abad6c65e2a30a68c1cb0a161a0464736f6c63430008120033", - "deployedBytecode": "0x608080604052600436101561001357600080fd5b60009060e08235811c918262a02a20146126ab5750816302ce728f14612682578163078dfbe71461257f578163095ea7b3146125585781630996efb7146120d55781630c4e84f014611fbd57816318160ddd14611fa15781631c9e379b14611f685781631da8bf1014611eb25781631ee9c8f2146116395781631fb8f81a1461161b57816323b872dd14611478578163331960ff1461145a57816334ce998a1461143157816334d441d0146114135781633644e515146113f857816337b6b7b9146113da57816338d52e0f146113b15781633ba0b9a9146113935781633f741adb1461136e57816340626d8b1461135057816344de240a14611332578163473e3ce71461131457816348e4163e146112db5781634e71e0c81461122d578163529898f21461120f57816357935462146111f157816358db9afe14610da55781636b19ad1614610d875781636c3d8b8f14610d5e57816370a0823114610d255781637277854714610ced57816374645ff314610bda5781637dc0d1d014610bb15781637ecebe0014610b785781637fa0b84e14610b465781638285ef4014610b1457816387b2793714610adb5781638c5d0ed314610abd5781638da5cb5b14610a94578163910dd7c814610814578163959916dc146107f757816399a97028146107cf5781639e15e89f14610794578163a9059cbb146106b1578163b0e21e8a14610693578163b27c0e7414610662578163b7113f191461063f578163bb4cfe3b14610621578163bde39c5d14610603578163c1ad5c8d146105e0578163ce8849ed146105b7578163d505accf1461042c57508063d8dfeb4514610403578063dd62ed3e146103b4578063de4065771461038b578063e0996cb61461036d578063e30c397814610344578063ea64dd5614610326578063eec0f42e14610308578063f791395d146102ea5763f8ba4cff146102cc57600080fd5b346102e757806003193601126102e7576102e4613740565b80f35b80fd5b50346102e757806003193601126102e7576020602854604051908152f35b50346102e757806003193601126102e7576020600c54604051908152f35b50346102e757806003193601126102e7576020601f54604051908152f35b50346102e757806003193601126102e7576006546040516001600160a01b039091168152602090f35b50346102e757806003193601126102e7576020601d54604051908152f35b50346102e757806003193601126102e7576009546040516001600160a01b039091168152602090f35b50346102e75760403660031901126102e7576103ce6126f3565b60406103d8612709565b9260018060a01b03809316815260026020522091166000526020526020604060002054604051908152f35b50346102e757806003193601126102e757600b546040516001600160a01b039091168152602090f35b9050346105b35761043c36612771565b8394969793929192421161056e5761051a926105129260018060a01b0395868b1697886000526004602052604060002091825492610479846133e1565b90556040519160208301937f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e2668552600060408501528b60608501528a8d1660808501528d60a085015260c08401528183015281526104d681612888565b5190206104e1613087565b9060405190602082019261190160f01b8452602283015260428201526042815261050a8161286d565b51902061335c565b91909161325d565b1603610529576102e49261343e565b60405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152606490fd5b60405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b5080fd5b82346102e757806003193601126102e7576008546040516001600160a01b039091168152602090f35b82346102e757806003193601126102e75760206105fb613495565b604051908152f35b82346102e757806003193601126102e7576020602954604051908152f35b82346102e757806003193601126102e7576020601e54604051908152f35b82346102e757806003193601126102e757602060ff602654166040519015158152f35b82346102e757806003193601126102e75760406025548151906001600160401b03908181168352831c166020820152f35b82346102e757806003193601126102e7576020601a54604051908152f35b82346102e75760403660031901126102e7576106cb6126f3565b60243580928115801590610782575b610712575b50506040519182526001600160a01b03169033906000805160206142e583398151915290602090a3602060405160018152f35b3381526001602052604081205461072b838210156131b1565b6001600160a01b0384169033829003610746575b50506106df565b60409361075d916107588415156131f6565b6129c2565b3383526001602052838320558152206107778382546129cf565b90558183808061073f565b50336001600160a01b038416146106da565b82346102e75760403660031901126102e75760606107bc6107b36126f3565b60243590612b0e565b9060405192835260208301526040820152f35b82346102e75760403660031901126102e75760206105fb6107ee6126f3565b60243590612f55565b82346102e757806003193601126102e75760208054604051908152f35b9050346105b35760403660031901126105b3576004356001600160401b038111610a905736602382011215610a9057806004013590610852826128c5565b9261086060405194856128a4565b82845284602092838601943660248284010111610a90578060248693018737860101526024359161ffff8316809303610a8c57610100938486805181010312610a88576108ac90612c4d565b916108b96040870161323b565b906108c66060880161323b565b9660808101519660a0820151926108df60c0840161324f565b91818401519301519360018060a01b03808097169b1698814211610a43579289888d9897946109ba9794610512978f8e600014610a1c577f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e266955b8d60005260048652604060002092835493610953856133e1565b905560405196870197885260408701528d6060870152608086015260a085015260c084015281830152815261098781612888565b519020610992613087565b90604051908a82019261190160f01b8452602283015260428201526042815261050a8161286d565b16036109d85750156109cf576102e49261343e565b6102e4926133f0565b6064906040519062461bcd60e51b82526004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152fd5b7f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d695610939565b60405162461bcd60e51b815260048101899052601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b8680fd5b8580fd5b8280fd5b82346102e757806003193601126102e7576005546040516001600160a01b039091168152602090f35b82346102e757806003193601126102e7576020601b54604051908152f35b82346102e75760203660031901126102e7576020906040906001600160a01b03610b036126f3565b168152602483522054604051908152f35b82346102e757806003193601126102e757601454604080516001600160801b038316815260809290921c602083015290f35b82346102e75760403660031901126102e757610b6d610b636126f3565b60243590336133f0565b602060405160018152f35b82346102e75760203660031901126102e7576020906040906001600160a01b03610ba06126f3565b168152600483522054604051908152f35b82346102e757806003193601126102e757600f546040516001600160a01b039091168152602090f35b82346102e757806003193601126102e7576040516010548183610bfc836127ef565b808352600193808516908115610ccc5750600114610c6f575b50610c22925003826128a4565b60405180926020908183528351918281850152815b838110610c5857505060408094508284010152601f80199101168101030190f35b808601820151878201604001528694508101610c37565b601086527f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae67293602092508691905b818310610cb4575050610c22935082010185610c15565b85548784018501529485019486945091830191610c9d565b9050610c2294506020925060ff191682840152151560051b82010185610c15565b82346102e75760203660031901126102e7576004359060098210156102e757602060ff610d19846127c0565b54166040519015158152f35b82346102e75760203660031901126102e7576020906040906001600160a01b03610d4d6126f3565b168152600183522054604051908152f35b82346102e757806003193601126102e757600a546040516001600160a01b039091168152602090f35b82346102e757806003193601126102e7576020602754604051908152f35b82346102e75760a03660031901126102e757610dbf6126f3565b610dc761271f565b916084356001600160401b0381116105b357610de7903690600401612744565b9290600660005260209460078652610e0760ff6040600020541615613840565b610e0f612c5a565b5050610e19613740565b610e2e6001600160a01b0384163014156138bd565b600a5460405163433e762d60e01b8152908790829060049082906001600160a01b03165afa9081156111a157610e7f91610e7a9187916111c4575b506001600160a01b03841690613a84565b613922565b610e8b60243584613d5c565b6001600160a01b038316845260188652604084208054610eae90602435906129c2565b9055610ebe6024356015546129c2565b6015556040516024356001600160a01b038381169086167f8ad4d3ff00da092c7ad9a573ea4f5f6a3dffc6712dc06d3f78f49b862297c4028880a460018060a01b0360095416600c54813b15610a8857630208d92960e11b835286918391829084908290610f3e90602435906001600160a01b038b163060048601613969565b03925af180156111a1579085916111ac575b5050600c54600e54604051633d9545e960e11b815260048101929092526024808301919091526000604483015235606482015260016084820181905260a48201526101408160c4816001600160a01b0386165afa9081156111a15785604094939286928291611170575b50610fde8651998a968795869463efa84c6d60e01b86526044359060048701613c71565b03926001600160a01b03165af191821561112d5780938193611139575b5061100a604435851015613d1a565b6001600160a01b0382168152601785526040812054906110318261102c61366d565b613e42565b8660018060a01b0360095416916064600e546040519485938492638eb22cdd60e01b845260048401526024830152600160448301525afa91821561112d57916110f3575b506105fb9361109b939291116110a057611090908280613ea0565b505b60115490613993565b61387d565b506110a961366d565b80516001600160801b039081166110ce5750506110c8845b8280613ea0565b50611092565b81816110e56110ee938a6110c8960151168961296b565b91511690612994565b6110c1565b929190508583813d8311611126575b61110c81836128a4565b810103126111215791519091906105fb611075565b600080fd5b503d611102565b604051903d90823e3d90fd5b90925061115f91935060403d604011611169575b61115781836128a4565b810190613c5b565b9290929185610ffb565b503d61114d565b61119491506101403d6101401161119a575b61118c81836128a4565b810190613b71565b8a610fba565b503d611182565b6040513d87823e3d90fd5b6111b590612829565b6111c0578387610f50565b8380fd5b6111e49150893d8b116111ea575b6111dc81836128a4565b810190613908565b89610e69565b503d6111d2565b82346102e757806003193601126102e7576020601c54604051908152f35b82346102e757806003193601126102e7576020602154604051908152f35b82346102e757806003193601126102e7576006546001600160a01b03908181163381900361129757806005549384167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08680a36001600160a01b0319928316176005551660065580f35b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b82346102e75760203660031901126102e7576020906040906001600160a01b036113036126f3565b168152601783522054604051908152f35b82346102e757806003193601126102e7576020601554604051908152f35b82346102e757806003193601126102e7576020600e54604051908152f35b82346102e757806003193601126102e7576020601654604051908152f35b82346102e75760603660031901126102e75760206105fb6044356024356004356129f5565b82346102e757806003193601126102e7576020601154604051908152f35b82346102e757806003193601126102e757600d546040516001600160a01b039091168152602090f35b82346102e757806003193601126102e7576020601254604051908152f35b82346102e757806003193601126102e75760206105fb613087565b82346102e757806003193601126102e7576020601954604051908152f35b82346102e757806003193601126102e7576014546040516001600160801b039091168152602090f35b82346102e757806003193601126102e7576020601354604051908152f35b82346102e75760603660031901126102e7576114926126f3565b9061149b612709565b60443591826114d9575b506040519182526001600160a01b039081169216906000805160206142e583398151915290602090a3602060405160018152f35b6001600160a01b03848116808352600160209081526040842054928690611502828610156131b1565b861693848403611517575b50505050506114a5565b83865260028352604086203360005283526040600020546000198103611585575b509260016020969361156387946040976107586000805160206142e58339815191529c9a15156131f6565b92855252838320558152206115798582546129cf565b9055918580858161150d565b909181106115db57926001602096936115638a6000805160206142e58339815191529a98956115b68260409a6129c2565b8689526002855289892033600052855289600020559497509497995050939650611538565b60405162461bcd60e51b815260048101849052601860248201527745524332303a20616c6c6f77616e636520746f6f206c6f7760401b6044820152606490fd5b82346102e757806003193601126102e7576020602a54604051908152f35b82346102e75760c03660031901126102e7576116536126f3565b608435906001600160a01b0382168203610a905760a4356001600160401b0381116111c057611686903690600401612744565b92906005855260076020526116a260ff60408720541615613840565b6116aa612c5a565b50506116b4613740565b6116c96001600160a01b0384163014156138bd565b600a5460405163433e762d60e01b815290602090829060049082906001600160a01b03165afa908115611cd75761171691610e7a918891611e93575b506001600160a01b03851690613a84565b600954600e54604051638eb22cdd60e01b81526004810182905260448035602483015260019082015293916001600160a01b0316908790602086606481865afa958615611e88578296611e54575b5085611df4575b505050620186a061178060205460243561296b565b049260018060a01b03821687526024602052604087206117a18582546129cf565b90556117ab61366d565b936117b8816024356129cf565b94600060206040516117c981612852565b828152015280516001600160801b03908116611d9857806117f081895b1682855116613693565b168252806020830192611808828a1683865116613693565b9382851690525116918a6014549160801b9116928b60018060801b03199182841681871717601455601654948515968715611d82575b5050505050505015611d3d57879460018060a01b038716865260176020526040862061186b8282546129cf565b9055604080519283526020830191909152602435916001600160a01b0385811692908916917f3a5151e57d3bc9798e7853034ac52293d1a0e12a2b44725e75b03b21f86477a69190a4600d546001600160a01b0316803b15611d39576040516340c10f1960e01b815230600482015260248035908201529085908290604490829084905af19081156111a1578591611d25575b5050600d54600e5460095460405163095ea7b360e01b81526001600160a01b039182166004820152602481018890529192166020826044818a855af1918215611c8c578792611ce2575b5060095460405163095ea7b360e01b81526001600160a01b0390911660048201526024803590820152916020918391829081604481015b03925af18015611cd757611c97575b5060095460408051634d4d7cbd60e11b815296909287926001600160a01b03908116928492909183916119ce9160243591908b1690309060048601613e13565b03925af1938415611c8c578794611c65575b50610140906119f5600e5495600c54926129cf565b604051633d9545e960e11b81526004810196909652602486019190915260006044860152606485015260016084850181905260a48501528360c4816001600160a01b0385165afa9286841561112d5760409486928291611c44575b50611a7486519889968795869463efa84c6d60e01b86526064359060048701613c71565b03926001600160a01b03165af18015611c395783928491611c14575b50611a9f606435841015613d1a565b611aa98183613d5c565b8015611b8c575b6001600160a01b03821684526018602052604084208054611ad29083906129cf565b9055611ae0816015546129cf565b601555600c546009546001600160a01b0316908590823b156105b357611b2192849183604051809681958294630208d92960e11b8452308c60048601613969565b03925af180156111a157611b78575b506020936105fb9261109b9290916001600160a01b0383169081907f9ed03113de523cebfe5e49d5f8e12894b1c0d42ce805990461726444c90eab879080a460115490613993565b611b828591612829565b6111c05784611b30565b5060018060a01b03600954166020600c54606460405180948193638eb22cdd60e01b835260048301528860248301528860448301525afa908115611c09578491611bd7575b50611ab0565b90506020813d602011611c01575b81611bf2602093836128a4565b81010312611121575184611bd1565b3d9150611be5565b6040513d86823e3d90fd5b9050611c3091925060403d6040116111695761115781836128a4565b91909184611a90565b6040513d85823e3d90fd5b611c5f91506101403d6101401161119a5761118c81836128a4565b89611a50565b610140919450611c839060403d6040116111695761115781836128a4565b905093906119e0565b6040513d89823e3d90fd5b6020813d602011611ccf575b81611cb0602093836128a4565b81010312610a8c57604091611cc76119ce92612c4d565b50915061198e565b3d9150611ca3565b6040513d88823e3d90fd5b91506020823d602011611d1d575b81611cfd602093836128a4565b81010312610a885761197f602091611d158994612c4d565b509150611948565b3d9150611cf0565b611d2e90612829565b6111c05783886118fe565b8480fd5b60405162461bcd60e51b815260206004820152601b60248201527f42696742616e673a20626f72726f7720636170207265616368656400000000006044820152606490fd5b161792161617111590508980808b81808061183e565b602082019680611dca611dbb611db1858c51168461296b565b8587511690612994565b99846110e5818851168d61296b565b10611ddb575b6117f08280926117e6565b966117f082611dea81936133e1565b9992505050611dd0565b823b156105b357604051630208d92960e11b8152928391829084908290611e2b908b906001600160a01b038b168e60048601613969565b03925af18015611c8c57611e41575b868161176b565b611e4d90969196612829565b9486611e3a565b9095506020813d602011611e80575b81611e70602093836128a4565b810103126105b357519489611764565b3d9150611e63565b6040513d84823e3d90fd5b611eac915060203d6020116111ea576111dc81836128a4565b88611705565b9050346105b357611ec236612771565b8397949697929192421161056e57611f5992610512928a60018060a01b0396878c169889835260046020526040832091825492611efe846133e1565b90556040519260208401947f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d6865260408501528b60608501528a8d1660808501528d60a085015260c08401528183015281526104d681612888565b1603610529576102e4926133f0565b82346102e75760203660031901126102e7576020906040906001600160a01b03611f906126f3565b168152601883522054604051908152f35b82346102e757806003193601126102e757602090604051908152f35b82346102e75760403660031901126102e75760043560098110156105b357611fe3612735565b6008549091906001600160a01b031633036120995760ff612003826127c0565b5416151591151591821461205f57808260ff61202161204f946127c0565b54161515827feeec81de25875ce1725479bb76f720a8defdb43dea041919ae37bb4aae9847c08780a46127c0565b9060ff8019835416911617905580f35b60405162461bcd60e51b81526020600482015260126024820152714d61726b65743a2073616d6520737461746560701b6044820152606490fd5b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881d5b985d5d1a1bdc9a5e995960621b6044820152606490fd5b82346102e7576101803660031901126102e7576001600160a01b0360243581811690819003610a90576001600160401b0391604435838111611d395761212082913690600401612744565b61212861271f565b91612138846005541633146128e0565b60043596620186a09661214d888a111561292b565b602098808a547fc353b09af857951dccce61b43a5854fc45beceed36c50e5d4cc2e71858a8e0df8d80a389558061251a575b50826123c1575b505050169081612381575b50506084358061236c575b5060a43580612357575b5060c43580612343575b5060e43580612322575b506101043580612301575b5061012435806122d0575b5061014435908161225e575b50506101643590816121ec578280f35b601e5482106121ff5750601f5581808280f35b6084906040519062461bcd60e51b82526004820152603260248201527f4d61726b65743a206c69717569646174696f6e436f6c6c61746572616c697a616044820152711d1a5bdb94985d19481d1bdbc81cdb585b1b60721b6064820152fd5b61226a9082111561292b565b601f54811161227d57601e5582806121dc565b60405162461bcd60e51b815260048101839052602560248201527f4d61726b65743a20636f6c6c61746572616c697a6174696f6e5261746520746f6044820152646f2062696760d81b6064820152608490fd5b806016547fae6e0ab3b95f0a53ff9660a390ccedcbbf1f2355dce974a9841af106fddcfaba8680a3601655836121d0565b61230c82821061292b565b612319601b54821161292b565b601c55836121c5565b61232d82821061292b565b61233a601c54821061292b565b601b55836121ba565b61234e82821061292b565b601d55836121b0565b6123638282111561292b565b601a55836121a6565b6123788282111561292b565b6019558361219c565b816008549182167f5a62d22209e370e38eea92cfddcd228e656e6ec139243392a760a7769f5877fd8780a36001600160a01b031916176008558380612191565b9091809394501161250657908392916123db6010546127ef565b601f81116124b8575b508790601f8311600114612448578891908361243d575b50508160011b916000199060031b1c1916176010555b7fa6f004921c944d4b8bf6e38462b00f36a58d62495d56b51f571ab78f732c98158680a1868080612186565b0135905088806123fb565b6010899594939295528789209089955b89601f198516881061249f575060019495965083601f19811610612485575b505050811b01601055612411565b0135600019600384901b60f8161c19169055888080612477565b8183013584559687019688965060019093019201612458565b909192935060108852868820601f840160051c81018885106124ff575b90601f87969594930160051c01905b8181106124f157506123e4565b8981558695506001016124e4565b50806124d5565b634e487b7160e01b87526041600452602487fd5b600f80546001600160a01b0319169190911790557f0b2d6eb667d0522c3eb86e4288afecae6c11591ffd1345d4d12407e0598bca9b8980a18961217f565b82346102e75760403660031901126102e757610b6d6125756126f3565b602435903361343e565b82346102e75760603660031901126102e7576125996126f3565b6125a1612735565b6044359081151582036111c05760018060a01b039283916125c7836005541633146128e0565b1561266b571690811590811591612663575b501561262657806005549283167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08580a36001600160a01b03199182161760055560068054909116905580f35b60405162461bcd60e51b81526020600482015260156024820152744f776e61626c653a207a65726f206164647265737360581b6044820152606490fd5b9050846125d9565b9150501660018060a01b0319600654161760065580f35b82346102e757806003193601126102e757604061269d612c5a565b825191151582526020820152f35b8390346105b35760403660031901126105b35760406020926126cb6126f3565b6126d3612709565b6001600160a01b0391821683526003865283832091168252845220548152f35b600435906001600160a01b038216820361112157565b602435906001600160a01b038216820361112157565b606435906001600160a01b038216820361112157565b60243590811515820361112157565b9181601f84011215611121578235916001600160401b038311611121576020838186019501011161112157565b60e0906003190112611121576001600160a01b03906004358281168103611121579160243590811681036111215790604435906064359060843560ff81168103611121579060a4359060c43590565b60098110156127d9576000526007602052604060002090565b634e487b7160e01b600052602160045260246000fd5b90600182811c9216801561281f575b602083101461280957565b634e487b7160e01b600052602260045260246000fd5b91607f16916127fe565b6001600160401b03811161283c57604052565b634e487b7160e01b600052604160045260246000fd5b604081019081106001600160401b0382111761283c57604052565b608081019081106001600160401b0382111761283c57604052565b61010081019081106001600160401b0382111761283c57604052565b90601f801991011681019081106001600160401b0382111761283c57604052565b6001600160401b03811161283c57601f01601f191660200190565b156128e757565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b1561293257565b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881b9bdd081d985b1a59607a1b6044820152606490fd5b8181029291811591840414171561297e57565b634e487b7160e01b600052601160045260246000fd5b811561299e570490565b634e487b7160e01b600052601260045260246000fd5b604d811161297e57600a0a90565b9190820391821161297e57565b9190820180921161297e57565b8181039291600013801582851316918412161761297e57565b601454919291612a3e91612a2f91612a2591612a1b906001600160801b0383169061296b565b9060801c90612994565b93601f549061296b565b612a38836129b4565b90612994565b808310612b0657612a52612a8e91846129c2565b91612a89612a83612a7a601e54612a74612a6b866129b4565b602154906129cf565b9061296b565b612a38846129b4565b916129b4565b6129dc565b6509184e72a0009081810291818305149015171561297e57670de0b6b3a76400009182810292818405149015171561297e57801561299e57600160ff1b9180831460001983141661297e5705906000821215612aff57811461297e57600003905b808211612afa575090565b905090565b5090612aef565b505050600090565b6001600160a01b03908116600081815260176020908152604082205492959493919290918115612c4057612b406136ac565b90612b4c861515612e52565b6009541683600c54898752601882526064604088205491604051948593849263442c159960e01b8452600484015260248301528960448301525afa9081156111a1578591612c11575b5092859492612bf1601893612bcc612c0599612bc7612bbe60409a620186a0602254049061296b565b601e549061296b565b612994565b815190936001600160801b03918691612be79184169061296b565b9201511690612994565b818110612c0957035b978352522054612e9e565b9091565b505082612bfa565b90508381813d8311612c39575b612c2881836128a4565b81010312611d395751612c05612b95565b503d612c1e565b5050509192505080918190565b5190811515820361112157565b60018060a01b03600f54169060409081519263d6d7d52560e01b845282846020928360048301526000601054612c8f816127ef565b90816024860152600190858282169182600014612e2e575050600114612dea575b5050600083809203925af18015612ddf576000948591612da4575b50928415612d46578315612d0c57505081601155817f9f9192b5edb17356c524e08d9e025c8e2f6307e6ea52fb7968faa3081f51c3c8600080a25b42601355565b60649250519062461bcd60e51b8252600482015260146024820152734d61726b65743a20696e76616c6964207261746560601b6044820152fd5b90919250612d59601354601254906129cf565b4211612d6a57505060115490612d06565b60649250519062461bcd60e51b82526004820152601460248201527313585c9ad95d0e881c985d19481d1bdbc81bdb1960621b6044820152fd5b9490508385813d8311612dd8575b612dbc81836128a4565b810103126102e7575080612dcf85612c4d565b94015138612ccb565b503d612db2565b83513d6000823e3d90fd5b915060106000528560002091866000935b838510612e1357505050508201604401600083612cb0565b80548c8601604401528a97508b965093019287908201612dfb565b8195506000949193506044925060ff191682840152151560051b8201019250612cb0565b15612e5957565b60405162461bcd60e51b815260206004820152601e60248201527f4d61726b65743a2065786368616e676552617465206e6f742076616c696400006044820152606490fd5b612ea9821515612e52565b602060018060a01b0360095416916064600c54604051948593849263442c159960e01b845260048401526024830152600060448301525afa908115612f4957600091612f16575b5090612bc7612f02926022549061296b565b620186a0612f12601e548361296b565b0491565b906020823d8211612f41575b81612f2f602093836128a4565b810103126102e7575051612bc7612ef0565b3d9150612f22565b6040513d6000823e3d90fd5b6001600160a01b03166000818152601860205260408120549092612f7891612e9e565b91835260176020526040832054801561308157811561308157818110613081578281101561307757601454612fc191839161075891612a1b906001600160801b0383169061296b565b90620186a0928383029280840485149015171561306357612fe69291612a38916129c2565b91601b5491601c5493612ff985856129dc565b80820291848212600160ff1b82141661306357818305149015171561304f570581848201948512911290801582169115161761303b5750808212612afa575090565b634e487b7160e01b81526011600452602490fd5b634e487b7160e01b83526011600452602483fd5b634e487b7160e01b85526011600452602485fd5b50505050601b5490565b50505090565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03161480613188575b156130e2577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f000000000000000000000000000000000000000000000000000000000000000082527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a0815260c081018181106001600160401b0382111761283c5760405251902090565b507f000000000000000000000000000000000000000000000000000000000000000046146130b9565b156131b857565b60405162461bcd60e51b815260206004820152601660248201527545524332303a2062616c616e636520746f6f206c6f7760501b6044820152606490fd5b156131fd57565b60405162461bcd60e51b815260206004820152601660248201527545524332303a206e6f207a65726f206164647265737360501b6044820152606490fd5b51906001600160a01b038216820361112157565b519060ff8216820361112157565b60058110156127d9578061326e5750565b600181036132b65760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b6044820152606490fd5b600281036133035760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606490fd5b60031461330c57565b60405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608490fd5b9291906fa2a8918ca85bafe22016d0b997e4df60600160ff1b0383116133d55791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa156133c85781516001600160a01b038116156133c2579190565b50600190565b50604051903d90823e3d90fd5b50505050600090600390565b600019811461297e5760010190565b7fe50de2333c10a9502fcb1d8ae13a51bbf423153dfc63c2b8997665b32154afc360018060a01b038092169160009083825260036020526040822094169384825260205284604082205580a4565b909160207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259160018060a01b03809416938460005260028352604060002095169485600052825280604060002055604051908152a3565b60ff60265416613607576014546001600160801b031690811561360057600a54604051631848f2bf60e31b8152602093916001600160a01b03919085908290600490829086165afa8015612f495785916000916135cb575b50600460405180948193631a674cc560e11b8352165afa938415612f495760009461359c575b505061352f9192670de0b6b3a76400009283916029549061296b565b04908181101561359357613546602a5480926129c2565b8381029080820485149015171561297e57612a3861356792613587946129c2565b602754926135816028549261357c84876129c2565b61296b565b046129cf565b90808211612afa575090565b50505060275490565b81813d83116135c4575b6135b081836128a4565b810103126111c05751925061352f38613513565b503d6135a6565b9182813d83116135f9575b6135e081836128a4565b810103126102e757506135f3859161323b565b386134ed565b503d6135d6565b6028549150565b600a5460405163e6abad4960e01b815290602090829060049082906001600160a01b03165afa908115612f495760009161363f575090565b906020823d8211613665575b81613658602093836128a4565b810103126102e757505190565b3d915061364b565b6040519061367a82612852565b6014546001600160801b038116835260801c6020830152565b6001600160801b03918216908216019190821161297e57565b600060206040516136bc81612852565b82815201526001600160401b03906136db8260255460401c16426129c2565b9182156137325761372d61357c91670de0b6b3a76400006137226136fd61366d565b9660018060801b03958694858a5116906301e1338061371a613495565b04169061296b565b041682855116613693565b168252565b50905061373d61366d565b90565b60405161374c81612852565b6025546001600160401b03908181168352818160401c166137746020850191808352426129c2565b92831561383957602094816301e1338061378c613495565b04168152814216835261379d61366d565b670de0b6b3a76400006137c260018060801b039761357c89855116878751169061296b565b04956137d381881682845116613693565b1680825296015160801b6001600160801b031990811690961760145551915192909416931692831760409190911b67ffffffffffffffff60401b16176025557f7484db546dcd57af0104c73c8a6968dfbaf5767f047cee0dadd0499ad7df81a0600080a3565b5050505050565b1561384757565b60405162461bcd60e51b815260206004820152600e60248201526d13585c9ad95d0e881c185d5cd95960921b6044820152606490fd5b1561388457565b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881a5b9cdbdb1d995b9d607a1b6044820152606490fd5b156138c457565b606460405162461bcd60e51b815260206004820152602060248201527f4d61726b65743a2063616e6e6f742065786563757465206f6e20697473656c666044820152fd5b90816020910312611121575161ffff811681036111215790565b1561392957565b60405162461bcd60e51b81526020600482015260186024820152772134b3a130b7339d1024b73b30b634b21039bbb0b83832b960411b6044820152606490fd5b6001600160a01b039182168152911660208201526040810191909152606081019190915260800190565b919060018060a01b03806000941684526020601781526040852054908115613a7a57601881526040862054801561383957816139cd61366d565b9460095416916064600c54604051948593849263442c159960e01b8452600484015260248301528b60448301525afa96871561112d578097613a44575b5050612be7613a29612bbe613a3f969798620186a0602254049061296b565b9561357c60018060801b0394858751169061296b565b111590565b9096508187813d8311613a73575b613a5c81836128a4565b810103126102e75750945194612be7613a29613a0a565b503d613a52565b5060019450505050565b600a5460405163dbd01de160e01b815260209290916001600160a01b039084908490600490829085165afa8015612f49578493600091613b33575b50918161ffff936044936040519889968795633a304d8b60e21b8752166004860152166024840152165afa908115612f4957600091613aff575b50905090565b82813d8311613b2c575b613b1381836128a4565b810103126102e75750613b2590612c4d565b8038613af9565b503d613b09565b9091929381813d8311613b6a575b613b4b81836128a4565b810103126105b357519082821682036102e75750839291906044613abf565b503d613b41565b809103906101408212611121576040805192606084018481106001600160401b0382111761283c578083526080821261112157613bad8161286d565b613bb68461323b565b815260208401516080860152613bcd83850161323b565b60a0860152606084015160c086015284526080607f198201126111215781908151613bf78161286d565b6080850151815260a0850151602082015260c08501518382015260e08501516060820152602086015260ff19011261112157613c50610120825193613c3b85612852565b613c486101008201612c4d565b855201612c4d565b602083015282015290565b9190826040910312611121576020825192015190565b939492909160206040845194606060018060a01b0396878151168a5284810151858b0152878482015116848b015201516060890152606083820151805160808b01528481015160a08b01528381015160c08b0152015160e08901520151805115156101008801520151151561012086015261014085015216610160830152806101a080610180850152830152806101c093848401376000828201840152601f01601f1916010190565b15613d2157565b60405162461bcd60e51b8152602060048201526013602482015272084d2ce84c2dcce7440dcdee840cadcdeeaced606b1b6044820152606490fd5b6001600160a01b0316338103613d70575050565b6000818152602090600382526040918282203383528152848383205410613dd95783825260038152828220338352815282822054600101613db2575050505050565b613dcd938252600381528282209033835252209182546129c2565b90553880808080613839565b60649083519062461bcd60e51b82526004820152601460248201527313585c9ad95d0e881b9bdd08185c1c1c9bdd995960621b6044820152fd5b9081526001600160a01b0391821660208201529116604082015260608101919091526000608082015260a00190565b60208101805190939291906001600160801b03908116613e63575090925050565b90816110e581613e86613e7c613e8f968651168861296b565b828a511690612994565b9751168761296b565b10613e9657565b9061373d906133e1565b92909260018060a01b0392838516906000948286526020906017825260409788882054808511614167575b50831561412b5783613edc91614188565b94838610156140ef57879885895260248452808920613efc8882546129c2565b9055613f0661366d565b9689858351613f1481612852565b8281520152613f238689613e42565b9760018060801b0380613f3b818c168285511661416f565b16825286820190613f51818a168284511661416f565b9181831690528a9251169060018060801b03199060801b1617601455878b5260178652828b20613f828882546129c2565b9055613fb3838a809d886009541690600e549084518096819582946311a5cc7760e31b84528d309160048601613e13565b03925af180156140e55790613fe09392916140c9575b50613fd4888b6129c2565b806140a6575b506129c2565b80614018575b507fc8e512d8f188ca059984b5853d2bf653da902696b8512785b182b2c813789a6e94959697989950519485521692a4565b8a9084600d541690813b15610a90578351632770a7eb60e21b8152306004820152602481019190915291908290604490829084905af1801561409c577fc8e512d8f188ca059984b5853d2bf653da902696b8512785b182b2c813789a6e969798999a9b5061408d575b8a999897969550613fe6565b61409690612829565b38614081565b82513d8d823e3d90fd5b6140c391506140bc620186a091601a549061296b565b048a6129c2565b38613fda565b6140df90853d87116111695761115781836128a4565b50613fc9565b84513d8f823e3d90fd5b885162461bcd60e51b815260048101849052601560248201527442423a2072657061796d656e7420746f6f206c6f7760581b6044820152606490fd5b885162461bcd60e51b815260048101849052601560248201527453474c3a206e6f7468696e6720746f20726570617960581b6044820152606490fd5b935038613ecb565b6001600160801b03918216908216039190821161297e57565b6001600160a01b03908116600081815260176020908152604080832054939590949293919282821461429257848091600d541687518681019063313ce56760e01b8252600481526141d881612852565b51915afa3d1561428a573d906141ed826128c5565b916141fa885193846128a4565b82523d868684013e5b80614280575b15614272578381805181010312611d39579060ff61422b85614234940161324f565b169283916142a1565b80156142695760249291612a38612a8361425893898852868652888820549061296b565b948352522054808211612afa575090565b50505091505090565b506142349060ff601261422b565b5083815114614209565b606090614203565b50505060249192935052205490565b91821580156142dc575b612b06576001810180911161297e576142ca92612a74612bc7926129b4565b6005810180911161297e57600a900490565b5081156142ab56feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220ba5de1c696bde8c6406a28642161fb2dd455abad6c65e2a30a68c1cb0a161a0464736f6c63430008120033", + "bytecode": "0x61014080604052346200018a5762000017816200018f565b600f81526001602082016e546170696f63612042696742616e6760881b8152602060405162000046816200018f565b8381520192603160f81b845251902091208160e052610100918183524660a0526040519160208301907f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f92838352604085015260608401524660808401523060a084015260a0835260c083019280841060018060401b03851117620001745760408490525190206080523060c052610120908152600580546001600160a01b0319163390811790915560007f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a362013880601b5562015f90601c55612710601d55612ee06020556103e8602d556145bd9283620001ac8439608051836131bd015260a05183613288015260c05183613187015260e0518361320c01525182613232015251816131e90152f35b634e487b7160e01b600052604160045260246000fd5b600080fd5b604081019081106001600160401b03821117620001745760405256fe608080604052600436101561001357600080fd5b60009060e08235811c918262a02a201461275d5750816302ce728f14612734578163078dfbe714612631578163095ea7b31461260a5781630c4e84f0146124f257816318160ddd146124d65781631c9e379b1461249d5781631d4d3a5d146124745781631da8bf10146123be5781631ee9c8f214611b355781631fb8f81a14611b1757816323b872dd14611974578163331960ff1461195657816334ce998a1461192d57816334d441d01461190f5781633644e515146118f457816337b6b7b9146118d657816338d52e0f146118ad5781633ba0b9a91461188f5781633f741adb1461186a57816340626d8b1461184c57816344de240a1461182e578163473e3ce71461181057816348e4163e146117d75781634e71e0c814611729578163529898f21461170c578163542afda3146116ee57816357935462146116d057816358db9afe146112825781636b19ad16146112645781636c3d8b8f1461123b57816370a082311461120257816372778547146111ca57816374645ff31461113757816374c9e481146111195781637dc0d1d0146110f05781637ecebe00146110b75781637fa0b84e146110855781638285ef401461105357816387b279371461101a5781638c5d0ed314610ffc5781638da5cb5b14610fd3578163910dd7c814610d53578163932bc4f814610c7557816399a9702814610c4d5781639e15e89f14610c12578163a9059cbb14610b2f578163b0e21e8a14610b11578163b27c0e7414610ae0578163b7113f1914610abd578163bb4cfe3b14610a9f578163bde39c5d14610a81578163c1ad5c8d14610a5e578163ce8849ed14610a35578163d3fb2a38146105d8578163d505accf1461044d57508063d8dfeb4514610424578063dd62ed3e146103d5578063de406577146103ac578063e0996cb61461038e578063e30c397814610365578063ea64dd5614610347578063eec0f42e14610329578063f791395d1461030b5763f8ba4cff146102ed57600080fd5b34610308578060031936011261030857610305613830565b80f35b80fd5b50346103085780600319360112610308576020602754604051908152f35b50346103085780600319360112610308576020600c54604051908152f35b50346103085780600319360112610308576020601f54604051908152f35b50346103085780600319360112610308576006546040516001600160a01b039091168152602090f35b50346103085780600319360112610308576020601d54604051908152f35b50346103085780600319360112610308576009546040516001600160a01b039091168152602090f35b5034610308576040366003190112610308576103ef6127a5565b60406103f96127bb565b9260018060a01b03809316815260026020522091166000526020526020604060002054604051908152f35b5034610308578060031936011261030857600b546040516001600160a01b039091168152602090f35b9050346105d45761045d366127e0565b8394969793929192421161058f5761053b926105339260018060a01b0395868b169788600052600460205260406000209182549261049a846134d1565b90556040519160208301937f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e2668552600060408501528b60608501528a8d1660808501528d60a085015260c08401528183015281526104f781612924565b519020610502613184565b9060405190602082019261190160f01b8452602283015260428201526042815261052b81612909565b519020613459565b91909161335a565b160361054a576103059261352e565b60405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152606490fd5b60405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b5080fd5b823461030857610160366003190112610308576001600160a01b0390600435828116908190036105d4576001600160401b0392602435848111610a315761062390369060040161282f565b909460443593838516809503610a2c57610642846005541633146129c5565b806109ee575b5081610895575b50509080929350610855575b50506064358061083d575b5060843580610825575b5060a4358061080e575b5060c435806107ea575b5060e435806107c6575b506101043580610795575b506101243580610721575b5061014435806106b2575080f35b601e5481106106c157601f5580f35b60405162461bcd60e51b815260206004820152603260248201527f4d61726b65743a206c69717569646174696f6e436f6c6c61746572616c697a616044820152711d1a5bdb94985d19481d1bdbc81cdb585b1b60721b6064820152608490fd5b610730620186a0821115612a10565b601f54811161074257601e55816106a4565b60405162461bcd60e51b815260206004820152602560248201527f4d61726b65743a20636f6c6c61746572616c697a6174696f6e5261746520746f6044820152646f2062696760d81b6064820152608490fd5b806016547fae6e0ab3b95f0a53ff9660a390ccedcbbf1f2355dce974a9841af106fddcfaba8480a360165581610699565b6107d4620186a08210612a10565b6107e1601b548211612a10565b601c558161068e565b6107f8620186a08210612a10565b610805601c548210612a10565b601b5581610684565b61081c620186a08210612a10565b601d558161067a565b610834620186a0821115612a10565b601a5581610670565b61084c620186a0821115612a10565b60195581610666565b816008549182167f5a62d22209e370e38eea92cfddcd228e656e6ec139243392a760a7769f5877fd8580a36001600160a01b03191617600855818061065b565b81116109da576108a660105461288b565b601f811161098b575b5083601f8211600114610917578495829394959261090c575b50508160011b916000199060031b1c1916176010555b7fa6f004921c944d4b8bf6e38462b00f36a58d62495d56b51f571ab78f732c98158380a1908291848061064f565b0135905085806108c8565b60108552601f19821695600080516020614568833981519152918660205b8982106109735750508360019596979810610959575b505050811b016010556108de565b0135600019600384901b60f8161c1916905585808061094b565b80600184968294958701358155019501920190610935565b60108552600080516020614568833981519152601f830160051c8101602084106109d3575b601f90920160051c01905b8181106109c857506108af565b8581556001016109bb565b50806109b0565b634e487b7160e01b84526041600452602484fd5b600f80546001600160a01b0319169190911790557f0b2d6eb667d0522c3eb86e4288afecae6c11591ffd1345d4d12407e0598bca9b8580a186610648565b600080fd5b8380fd5b82346103085780600319360112610308576008546040516001600160a01b039091168152602090f35b82346103085780600319360112610308576020610a79613585565b604051908152f35b82346103085780600319360112610308576020602854604051908152f35b82346103085780600319360112610308576020601e54604051908152f35b8234610308578060031936011261030857602060ff602554166040519015158152f35b823461030857806003193601126103085760406024548151906001600160401b03908181168352831c166020820152f35b82346103085780600319360112610308576020601a54604051908152f35b823461030857604036600319011261030857610b496127a5565b60243580928115801590610c00575b610b90575b50506040519182526001600160a01b031690339060008051602061454883398151915290602090a3602060405160018152f35b33815260016020526040812054610ba9838210156132ae565b6001600160a01b0384169033829003610bc4575b5050610b5d565b604093610bdb91610bd68415156132f3565b612aa7565b338352600160205283832055815220610bf5838254612ab4565b905581838080610bbd565b50336001600160a01b03841614610b58565b8234610308576040366003190112610308576060610c3a610c316127a5565b60243590612bf3565b9060405192835260208301526040820152f35b8234610308576040366003190112610308576020610a79610c6c6127a5565b60243590613052565b8234610308578060031936011261030857604051600090602b54610c988161288b565b808352600191808316908115610d2b5750600114610cd1575b610ccd83610cc181870382612940565b60405191829182612961565b0390f35b602b600090815260209450917f11c44e4875b74d31ff9fd779bf2566af7bd15b87fc985d01f5094b89e3669e4f5b828410610d1857505050810190910190610cc181610cb1565b8054858501870152928501928101610cff565b610ccd9550610cc193506020915091849260ff191682840152151560051b8201019350610cb1565b9050346105d45760403660031901126105d4576004356001600160401b038111610fcf5736602382011215610fcf57806004013590610d91826129aa565b92610d9f6040519485612940565b82845284602092838601943660248284010111610fcf578060248693018737860101526024359161ffff8316809303610fcb57610100938486805181010312610fc757610deb90612d32565b91610df860408701613338565b90610e0560608801613338565b9660808101519660a082015192610e1e60c0840161334c565b91818401519301519360018060a01b03808097169b1698814211610f82579289888d989794610ef99794610533978f8e600014610f5b577f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e266955b8d60005260048652604060002092835493610e92856134d1565b905560405196870197885260408701528d6060870152608086015260a085015260c0840152818301528152610ec681612924565b519020610ed1613184565b90604051908a82019261190160f01b8452602283015260428201526042815261052b81612909565b1603610f17575015610f0e576103059261352e565b610305926134e0565b6064906040519062461bcd60e51b82526004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152fd5b7f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d695610e78565b60405162461bcd60e51b815260048101899052601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b8680fd5b8580fd5b8280fd5b82346103085780600319360112610308576005546040516001600160a01b039091168152602090f35b82346103085780600319360112610308576020601b54604051908152f35b8234610308576020366003190112610308576020906040906001600160a01b036110426127a5565b168152602383522054604051908152f35b8234610308578060031936011261030857601454604080516001600160801b038316815260809290921c602083015290f35b8234610308576040366003190112610308576110ac6110a26127a5565b60243590336134e0565b602060405160018152f35b8234610308576020366003190112610308576020906040906001600160a01b036110df6127a5565b168152600483522054604051908152f35b8234610308578060031936011261030857600f546040516001600160a01b039091168152602090f35b82346103085780600319360112610308576020602d54604051908152f35b823461030857806003193601126103085760405160009060105461115a8161288b565b808352600191808316908115610d2b575060011461118257610ccd83610cc181870382612940565b6010600090815260209450916000805160206145688339815191525b8284106111b757505050810190910190610cc181610cb1565b805485850187015292850192810161119e565b82346103085760203660031901126103085760043590600982101561030857602060ff6111f68461285c565b54166040519015158152f35b8234610308576020366003190112610308576020906040906001600160a01b0361122a6127a5565b168152600183522054604051908152f35b8234610308578060031936011261030857600a546040516001600160a01b039091168152602090f35b82346103085780600319360112610308576020602654604051908152f35b82346103085760a03660031901126103085761129c6127a5565b606435916001600160a01b0383168303610a2c576084356001600160401b0381116105d4576112cf90369060040161282f565b92906006600052602094600786526112ef60ff6040600020541615613930565b6112f7612df7565b5050611301613830565b6113166001600160a01b0384163014156139ad565b600a5460405163433e762d60e01b8152908790829060049082906001600160a01b03165afa90811561168457611367916113629187916116a3575b506001600160a01b03841690613b74565b613a12565b61137360243584613e4c565b6001600160a01b0383168452601886526040842080546113969060243590612aa7565b90556113a6602435601554612aa7565b6015556040516024356001600160a01b038381169086167f8ad4d3ff00da092c7ad9a573ea4f5f6a3dffc6712dc06d3f78f49b862297c4028880a460018060a01b0360095416600c54813b15610fc757630208d92960e11b83528691839182908490829061142690602435906001600160a01b038b163060048601613a59565b03925af180156116845790859161168f575b5050600c54600e54604051633d9545e960e11b815260048101929092526024808301919091526000604483015235606482015260016084820181905260a48201526101408160c4816001600160a01b0386165afa9081156116845785604094939286928291611653575b506114c68651998a968795869463efa84c6d60e01b86526044359060048701613d61565b03926001600160a01b03165af1918215611610578093819361161c575b506114f2604435851015613e0a565b6001600160a01b0382168152601785526040812054906115198261151461375d565b6140a5565b8660018060a01b0360095416916064600e546040519485938492638eb22cdd60e01b845260048401526024830152600160448301525afa91821561161057916115db575b50610a79936115839392911161158857611578908280614103565b505b60115490613a83565b61396d565b5061159161375d565b80516001600160801b039081166115b65750506115b0845b8280614103565b5061157a565b81816115cd6115d6938a6115b09601511689612a50565b91511690612a79565b6115a9565b929190508583813d8311611609575b6115f48183612940565b81010312610a2c579151909190610a7961155d565b503d6115ea565b604051903d90823e3d90fd5b90925061164291935060403d60401161164c575b61163a8183612940565b810190613d4b565b92909291856114e3565b503d611630565b61167791506101403d6101401161167d575b61166f8183612940565b810190613c61565b8a6114a2565b503d611665565b6040513d87823e3d90fd5b611698906128c5565b610a31578387611438565b6116c39150893d8b116116c9575b6116bb8183612940565b8101906139f8565b89611351565b503d6116b1565b82346103085780600319360112610308576020601c54604051908152f35b82346103085780600319360112610308576020602c54604051908152f35b823461030857806003193601126103085760208054604051908152f35b82346103085780600319360112610308576006546001600160a01b03908181163381900361179357806005549384167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08680a36001600160a01b0319928316176005551660065580f35b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b8234610308576020366003190112610308576020906040906001600160a01b036117ff6127a5565b168152601783522054604051908152f35b82346103085780600319360112610308576020601554604051908152f35b82346103085780600319360112610308576020600e54604051908152f35b82346103085780600319360112610308576020601654604051908152f35b8234610308576060366003190112610308576020610a79604435602435600435612ada565b82346103085780600319360112610308576020601154604051908152f35b8234610308578060031936011261030857600d546040516001600160a01b039091168152602090f35b82346103085780600319360112610308576020601254604051908152f35b82346103085780600319360112610308576020610a79613184565b82346103085780600319360112610308576020601954604051908152f35b82346103085780600319360112610308576014546040516001600160801b039091168152602090f35b82346103085780600319360112610308576020601354604051908152f35b82346103085760603660031901126103085761198e6127a5565b906119976127bb565b60443591826119d5575b506040519182526001600160a01b0390811692169060008051602061454883398151915290602090a3602060405160018152f35b6001600160a01b038481168083526001602090815260408420549286906119fe828610156132ae565b861693848403611a13575b50505050506119a1565b83865260028352604086203360005283526040600020546000198103611a81575b5092600160209693611a5f8794604097610bd66000805160206145488339815191529c9a15156132f3565b9285525283832055815220611a75858254612ab4565b90559185808581611a09565b90918110611ad75792600160209693611a5f8a6000805160206145488339815191529a9895611ab28260409a612aa7565b8689526002855289892033600052855289600020559497509497995050939650611a34565b60405162461bcd60e51b815260048101849052601860248201527745524332303a20616c6c6f77616e636520746f6f206c6f7760401b6044820152606490fd5b82346103085780600319360112610308576020602954604051908152f35b82346103085760c036600319011261030857611b4f6127a5565b608435906001600160a01b0382168203610fcf5760a4356001600160401b038111610a3157611b8290369060040161282f565b9290600585526007602052611b9e60ff60408720541615613930565b611ba6612df7565b5050611bb0613830565b611bc56001600160a01b0384163014156139ad565b600a5460405163433e762d60e01b815290602090829060049082906001600160a01b03165afa9081156121ca57611c129161136291889161239f575b506001600160a01b03851690613b74565b600954600e54604051638eb22cdd60e01b81526004810182905260448035602483015260019082015293916001600160a01b0316908790602086606481865afa958615612394578296612360575b50856122f5575b505050611c75602435613f32565b9260018060a01b0382168752602360205260408720611c95858254612ab4565b9055611c9f61375d565b93611cac81602435612ab4565b9460006020604051611cbd816128ee565b828152015280516001600160801b039081166122995780611ce481895b1682855116613783565b168252806020830192611cfc828a1683865116613783565b9382851690525116918a6014549160801b9116928b60018060801b03199182841681871717601455601654948515968715612283575b505050505050501561223e57879460018060a01b0387168652601760205260408620611d5f828254612ab4565b9055604080519283526020830191909152602435916001600160a01b0385811692908916917f3a5151e57d3bc9798e7853034ac52293d1a0e12a2b44725e75b03b21f86477a69190a4600d546001600160a01b0316803b1561223a576040516340c10f1960e01b815230600482015260248035908201529085908290604490829084905af1908115611684578591612226575b5050600d54600e5460095460405163095ea7b360e01b8082526001600160a01b0392831660048301526024820189905291909316926020816044818b885af1801561221b576121d5575b506009546040519182526001600160a01b031660048201526024803590820152916020908390818981604481015b03925af19182156121ca578692612187575b5060095460408051634d4d7cbd60e11b815297909288926001600160a01b0390811692849290918391611ebc9160243591908c1690309060048601613f03565b03925af1801561215957611f27958291612166575b50611ee2600e5491600c5494612ab4565b60405180978192633d9545e960e11b83526101409687956004850160a091949360019360c0830196835260208301526000604083015260608201528260808201520152565b03816001600160a01b0387165afa8015612159576040958793839261213c575b5050611f6c86519889968795869463efa84c6d60e01b86526064359060048701613d61565b03926001600160a01b03165af18015612131578392849161210c575b50611f97606435841015613e0a565b611fa18183613e4c565b8015612084575b6001600160a01b03821684526018602052604084208054611fca908390612ab4565b9055611fd881601554612ab4565b601555600c546009546001600160a01b0316908590823b156105d45761201992849183604051809681958294630208d92960e11b8452308c60048601613a59565b03925af1801561168457612070575b50602093610a79926115839290916001600160a01b0383169081907f9ed03113de523cebfe5e49d5f8e12894b1c0d42ce805990461726444c90eab879080a460115490613a83565b61207a85916128c5565b610a315784612028565b5060018060a01b03600954166020600c54606460405180948193638eb22cdd60e01b835260048301528860248301528860448301525afa9081156121015784916120cf575b50611fa8565b90506020813d6020116120f9575b816120ea60209383612940565b81010312610a2c5751846120c9565b3d91506120dd565b6040513d86823e3d90fd5b905061212891925060403d60401161164c5761163a8183612940565b91909184611f88565b6040513d85823e3d90fd5b6121529250803d1061167d5761166f8183612940565b8980611f47565b50604051903d90823e3d90fd5b61217f915060403d60401161164c5761163a8183612940565b905089611ed1565b91506020823d6020116121c2575b816121a260209383612940565b81010312610fcb57611ebc6040916121ba8894612d32565b509150611e7c565b3d9150612195565b6040513d88823e3d90fd5b906020823d602011612213575b816121ef60209383612940565b8101031261220f57611e6a93612206602093612d32565b50935090611e3c565b8780fd5b3d91506121e2565b6040513d8a823e3d90fd5b61222f906128c5565b610a31578388611df2565b8480fd5b60405162461bcd60e51b815260206004820152601b60248201527f42696742616e673a20626f72726f7720636170207265616368656400000000006044820152606490fd5b161792161617111590508980808b818080611d32565b6020820196806122cb6122bc6122b2858c511684612a50565b8587511690612a79565b99846115cd818851168d612a50565b106122dc575b611ce4828092611cda565b96611ce4826122eb81936134d1565b99925050506122d1565b823b156105d457604051630208d92960e11b815292839182908490829061232c908b906001600160a01b038b168e60048601613a59565b03925af1801561235557612342575b8681611c67565b61234e909691966128c5565b948661233b565b6040513d89823e3d90fd5b9095506020813d60201161238c575b8161237c60209383612940565b810103126105d457519489611c60565b3d915061236f565b6040513d84823e3d90fd5b6123b8915060203d6020116116c9576116bb8183612940565b88611c01565b9050346105d4576123ce366127e0565b8397949697929192421161058f5761246592610533928a60018060a01b0396878c16988983526004602052604083209182549261240a846134d1565b90556040519260208401947f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d6865260408501528b60608501528a8d1660808501528d60a085015260c08401528183015281526104f781612924565b160361054a57610305926134e0565b8234610308578060031936011261030857602a546040516001600160a01b039091168152602090f35b8234610308576020366003190112610308576020906040906001600160a01b036124c56127a5565b168152601883522054604051908152f35b8234610308578060031936011261030857602090604051908152f35b82346103085760403660031901126103085760043560098110156105d4576125186127d1565b6008549091906001600160a01b031633036125ce5760ff6125388261285c565b5416151591151591821461259457808260ff6125566125849461285c565b54161515827feeec81de25875ce1725479bb76f720a8defdb43dea041919ae37bb4aae9847c08780a461285c565b9060ff8019835416911617905580f35b60405162461bcd60e51b81526020600482015260126024820152714d61726b65743a2073616d6520737461746560701b6044820152606490fd5b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881d5b985d5d1a1bdc9a5e995960621b6044820152606490fd5b8234610308576040366003190112610308576110ac6126276127a5565b602435903361352e565b82346103085760603660031901126103085761264b6127a5565b6126536127d1565b604435908115158203610a315760018060a01b03928391612679836005541633146129c5565b1561271d571690811590811591612715575b50156126d857806005549283167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08580a36001600160a01b03199182161760055560068054909116905580f35b60405162461bcd60e51b81526020600482015260156024820152744f776e61626c653a207a65726f206164647265737360581b6044820152606490fd5b90508461268b565b9150501660018060a01b0319600654161760065580f35b8234610308578060031936011261030857604061274f612df7565b825191151582526020820152f35b8390346105d45760403660031901126105d457604060209261277d6127a5565b6127856127bb565b6001600160a01b0391821683526003865283832091168252845220548152f35b600435906001600160a01b0382168203610a2c57565b602435906001600160a01b0382168203610a2c57565b602435908115158203610a2c57565b60e0906003190112610a2c576001600160a01b03906004358281168103610a2c57916024359081168103610a2c5790604435906064359060843560ff81168103610a2c579060a4359060c43590565b9181601f84011215610a2c578235916001600160401b038311610a2c5760208381860195010111610a2c57565b6009811015612875576000526007602052604060002090565b634e487b7160e01b600052602160045260246000fd5b90600182811c921680156128bb575b60208310146128a557565b634e487b7160e01b600052602260045260246000fd5b91607f169161289a565b6001600160401b0381116128d857604052565b634e487b7160e01b600052604160045260246000fd5b604081019081106001600160401b038211176128d857604052565b608081019081106001600160401b038211176128d857604052565b61010081019081106001600160401b038211176128d857604052565b90601f801991011681019081106001600160401b038211176128d857604052565b6020808252825181830181905290939260005b82811061299657505060409293506000838284010152601f8019910116010190565b818101860151848201604001528501612974565b6001600160401b0381116128d857601f01601f191660200190565b156129cc57565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b15612a1757565b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881b9bdd081d985b1a59607a1b6044820152606490fd5b81810292918115918404141715612a6357565b634e487b7160e01b600052601160045260246000fd5b8115612a83570490565b634e487b7160e01b600052601260045260246000fd5b604d8111612a6357600a0a90565b91908203918211612a6357565b91908201809211612a6357565b81810392916000138015828513169184121617612a6357565b601454919291612b2391612b1491612b0a91612b00906001600160801b03831690612a50565b9060801c90612a79565b93601f5490612a50565b612b1d83612a99565b90612a79565b808310612beb57612b37612b739184612aa7565b91612b6e612b68612b5f601e54612b59612b5086612a99565b60205490612ab4565b90612a50565b612b1d84612a99565b91612a99565b612ac1565b6509184e72a00090818102918183051490151715612a6357670de0b6b3a764000091828102928184051490151715612a63578015612a8357600160ff1b91808314600019831416612a635705906000821215612be4578114612a6357600003905b808211612bdf575090565b905090565b5090612bd4565b505050600090565b6001600160a01b03908116600081815260176020908152604082205492959493919290918115612d2557612c2561379c565b90612c31861515612f4f565b6009541683600c54898752601882526064604088205491604051948593849263442c159960e01b8452600484015260248301528960448301525afa908115611684578591612cf6575b5092859492612cd6601893612cb1612cea99612cac612ca360409a620186a06021540490612a50565b601e5490612a50565b612a79565b815190936001600160801b03918691612ccc91841690612a50565b9201511690612a79565b818110612cee57035b978352522054612f9b565b9091565b505082612cdf565b90508381813d8311612d1e575b612d0d8183612940565b8101031261223a5751612cea612c7a565b503d612d03565b5050509192505080918190565b51908115158203610a2c57565b9190826040910312610a2c576020612d5683612d32565b92015190565b602080825260009160105491612d718361288b565b9283828401526001908181169081600014612dd45750600114612d96575b5050505090565b929350601060005280600020926000935b858510612dc05750505060409250010138808080612d8f565b805485850160400152938201938101612da7565b925050506040935060ff929192191683830152151560051b010138808080612d8f565b600f546040805163d6d7d52560e01b81529290916001600160a01b0316828480612e2360048201612d5c565b0381600080955af18015612f435781948291612f10575b50928415612eb3578315612e7957507f9f9192b5edb17356c524e08d9e025c8e2f6307e6ea52fb7968faa3081f51c3c883918260115580a25b42601355565b5162461bcd60e51b81526020600482015260146024820152734d61726b65743a20696e76616c6964207261746560601b6044820152606490fd5b91925050612ec660135460125490612ab4565b4211612ed6575060115490612e73565b5162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881c985d19481d1bdbc81bdb1960621b6044820152606490fd5b9050612f33919450833d8511612f3c575b612f2b8183612940565b810190612d3f565b93909338612e3a565b503d612f21565b508251903d90823e3d90fd5b15612f5657565b60405162461bcd60e51b815260206004820152601e60248201527f4d61726b65743a2065786368616e676552617465206e6f742076616c696400006044820152606490fd5b612fa6821515612f4f565b602060018060a01b0360095416916064600c54604051948593849263442c159960e01b845260048401526024830152600060448301525afa90811561304657600091613013575b5090612cac612fff9260215490612a50565b620186a061300f601e5483612a50565b0491565b906020823d821161303e575b8161302c60209383612940565b81010312610308575051612cac612fed565b3d915061301f565b6040513d6000823e3d90fd5b6001600160a01b0316600081815260186020526040812054909261307591612f9b565b91835260176020526040832054801561317e57811561317e5781811061317e5782811015613174576014546130be918391610bd691612b00906001600160801b03831690612a50565b90620186a09283830292808404851490151715613160576130e39291612b1d91612aa7565b91601b5491601c54936130f68585612ac1565b80820291848212600160ff1b82141661316057818305149015171561314c57058184820194851291129080158216911516176131385750808212612bdf575090565b634e487b7160e01b81526011600452602490fd5b634e487b7160e01b83526011600452602483fd5b634e487b7160e01b85526011600452602485fd5b50505050601b5490565b50505090565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03161480613285575b156131df577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f000000000000000000000000000000000000000000000000000000000000000082527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a0815260c081018181106001600160401b038211176128d85760405251902090565b507f000000000000000000000000000000000000000000000000000000000000000046146131b6565b156132b557565b60405162461bcd60e51b815260206004820152601660248201527545524332303a2062616c616e636520746f6f206c6f7760501b6044820152606490fd5b156132fa57565b60405162461bcd60e51b815260206004820152601660248201527545524332303a206e6f207a65726f206164647265737360501b6044820152606490fd5b51906001600160a01b0382168203610a2c57565b519060ff82168203610a2c57565b6005811015612875578061336b5750565b600181036133b35760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b6044820152606490fd5b600281036134005760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606490fd5b60031461340957565b60405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608490fd5b9291906fa2a8918ca85bafe22016d0b997e4df60600160ff1b0383116134c55791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa156121595781516001600160a01b038116156134bf579190565b50600190565b50505050600090600390565b6000198114612a635760010190565b7fe50de2333c10a9502fcb1d8ae13a51bbf423153dfc63c2b8997665b32154afc360018060a01b038092169160009083825260036020526040822094169384825260205284604082205580a4565b909160207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259160018060a01b03809416938460005260028352604060002095169485600052825280604060002055604051908152a3565b60ff602554166136f7576014546001600160801b03169081156136f057600a54604051631848f2bf60e31b8152602093916001600160a01b03919085908290600490829086165afa80156130465785916000916136bb575b50600460405180948193631a674cc560e11b8352165afa9384156130465760009461368c575b505061361f9192670de0b6b3a764000092839160285490612a50565b049081811015613683576136366029548092612aa7565b83810290808204851490151715612a6357612b1d6136579261367794612aa7565b602654926136716027549261366c8487612aa7565b612a50565b04612ab4565b90808211612bdf575090565b50505060265490565b81813d83116136b4575b6136a08183612940565b81010312610a315751925061361f38613603565b503d613696565b9182813d83116136e9575b6136d08183612940565b8101031261030857506136e38591613338565b386135dd565b503d6136c6565b6027549150565b600a5460405163e6abad4960e01b815290602090829060049082906001600160a01b03165afa9081156130465760009161372f575090565b906020823d8211613755575b8161374860209383612940565b8101031261030857505190565b3d915061373b565b6040519061376a826128ee565b6014546001600160801b038116835260801c6020830152565b6001600160801b039182169082160191908211612a6357565b600060206040516137ac816128ee565b82815201526001600160401b03906137cb8260245460401c1642612aa7565b9182156138225761381d61366c91670de0b6b3a76400006138126137ed61375d565b9660018060801b03958694858a5116906301e1338061380a613585565b041690612a50565b041682855116613783565b168252565b50905061382d61375d565b90565b60405161383c816128ee565b6024546001600160401b03908181168352818160401c16613864602085019180835242612aa7565b92831561392957602094816301e1338061387c613585565b04168152814216835261388d61375d565b670de0b6b3a76400006138b260018060801b039761366c898551168787511690612a50565b04956138c381881682845116613783565b1680825296015160801b6001600160801b031990811690961760145551915192909416931692831760409190911b67ffffffffffffffff60401b16176024557f7484db546dcd57af0104c73c8a6968dfbaf5767f047cee0dadd0499ad7df81a0600080a3565b5050505050565b1561393757565b60405162461bcd60e51b815260206004820152600e60248201526d13585c9ad95d0e881c185d5cd95960921b6044820152606490fd5b1561397457565b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881a5b9cdbdb1d995b9d607a1b6044820152606490fd5b156139b457565b606460405162461bcd60e51b815260206004820152602060248201527f4d61726b65743a2063616e6e6f742065786563757465206f6e20697473656c666044820152fd5b90816020910312610a2c575161ffff81168103610a2c5790565b15613a1957565b60405162461bcd60e51b81526020600482015260186024820152772134b3a130b7339d1024b73b30b634b21039bbb0b83832b960411b6044820152606490fd5b6001600160a01b039182168152911660208201526040810191909152606081019190915260800190565b919060018060a01b03806000941684526020601781526040852054908115613b6a5760188152604086205480156139295781613abd61375d565b9460095416916064600c54604051948593849263442c159960e01b8452600484015260248301528b60448301525afa968715611610578097613b34575b5050612ccc613b19612ca3613b2f969798620186a06021540490612a50565b9561366c60018060801b03948587511690612a50565b111590565b9096508187813d8311613b63575b613b4c8183612940565b810103126103085750945194612ccc613b19613afa565b503d613b42565b5060019450505050565b600a5460405163dbd01de160e01b815260209290916001600160a01b039084908490600490829085165afa8015613046578493600091613c23575b50918161ffff936044936040519889968795633a304d8b60e21b8752166004860152166024840152165afa90811561304657600091613bef575b50905090565b82813d8311613c1c575b613c038183612940565b810103126103085750613c1590612d32565b8038613be9565b503d613bf9565b9091929381813d8311613c5a575b613c3b8183612940565b810103126105d457519082821682036103085750839291906044613baf565b503d613c31565b809103906101408212610a2c576040805192606084018481106001600160401b038211176128d85780835260808212610a2c57613c9d81612909565b613ca684613338565b815260208401516080860152613cbd838501613338565b60a0860152606084015160c086015284526080607f19820112610a2c5781908151613ce781612909565b6080850151815260a0850151602082015260c08501518382015260e08501516060820152602086015260ff190112610a2c57613d40610120825193613d2b856128ee565b613d386101008201612d32565b855201612d32565b602083015282015290565b9190826040910312610a2c576020825192015190565b939492909160206040845194606060018060a01b0396878151168a5284810151858b0152878482015116848b015201516060890152606083820151805160808b01528481015160a08b01528381015160c08b0152015160e08901520151805115156101008801520151151561012086015261014085015216610160830152806101a080610180850152830152806101c093848401376000828201840152601f01601f1916010190565b15613e1157565b60405162461bcd60e51b8152602060048201526013602482015272084d2ce84c2dcce7440dcdee840cadcdeeaced606b1b6044820152606490fd5b6001600160a01b0316338103613e60575050565b6000818152602090600382526040918282203383528152848383205410613ec95783825260038152828220338352815282822054600101613ea2575050505050565b613ebd93825260038152828220903383525220918254612aa7565b90553880808080613929565b60649083519062461bcd60e51b82526004820152601460248201527313585c9ad95d0e881b9bdd08185c1c1c9bdd995960621b6044820152fd5b9081526001600160a01b0391821660208201529116604082015260608101919091526000608082015260a00190565b801561409f57602a546040805163d6d7d52560e01b81526001600160a01b03909216929190808280613f6660048201612d5c565b0381600080985af19182156140955784908593614073575b50156140245750670e27c49886e6000081101561401b57670d99a8cec7e2000081111561401257602d5490670d99a8cec7e1ffff198101908111613ffe5790668e1bc9bf040000613fd8613fdf93612b59602c5485612aa7565b0490612aa7565b9081613fea57505090565b620186a0925090613ffa91612a50565b0490565b634e487b7160e01b84526011600452602484fd5b505050602d5490565b505050602c5490565b5162461bcd60e51b8152602060048201526024808201527f42696742616e673a202061737365742773206f7261636c652063616c6c2066616044820152631a5b195960e21b6064820152608490fd5b90508161408d9293503d8411612f3c57612f2b8183612940565b919038613f7e565b81513d86823e3d90fd5b50600090565b60208101805190939291906001600160801b039081166140c6575090925050565b90816115cd816140e96140df6140f29686511688612a50565b828a511690612a79565b97511687612a50565b106140f957565b9061382d906134d1565b92909260018060a01b03928385169060009482865260209060178252604097888820548085116143ca575b50831561438e578361413f916143eb565b94838610156143525787988589526023845280892061415f888254612aa7565b905561416961375d565b9689858351614177816128ee565b828152015261418686896140a5565b9760018060801b038061419e818c16828551166143d2565b168252868201906141b4818a16828451166143d2565b9181831690528a9251169060018060801b03199060801b1617601455878b5260178652828b206141e5888254612aa7565b9055614216838a809d886009541690600e549084518096819582946311a5cc7760e31b84528d309160048601613f03565b03925af18015614348579061424393929161432c575b50614237888b612aa7565b80614309575b50612aa7565b8061427b575b507fc8e512d8f188ca059984b5853d2bf653da902696b8512785b182b2c813789a6e94959697989950519485521692a4565b8a9084600d541690813b15610fcf578351632770a7eb60e21b8152306004820152602481019190915291908290604490829084905af180156142ff577fc8e512d8f188ca059984b5853d2bf653da902696b8512785b182b2c813789a6e969798999a9b506142f0575b8a999897969550614249565b6142f9906128c5565b386142e4565b82513d8d823e3d90fd5b614326915061431f620186a091601a5490612a50565b048a612aa7565b3861423d565b61434290853d871161164c5761163a8183612940565b5061422c565b84513d8f823e3d90fd5b885162461bcd60e51b815260048101849052601560248201527442423a2072657061796d656e7420746f6f206c6f7760581b6044820152606490fd5b885162461bcd60e51b815260048101849052601560248201527453474c3a206e6f7468696e6720746f20726570617960581b6044820152606490fd5b93503861412e565b6001600160801b039182169082160391908211612a6357565b6001600160a01b0390811660008181526017602090815260408083205493959094929391928282146144f557848091600d541687518681019063313ce56760e01b82526004815261443b816128ee565b51915afa3d156144ed573d90614450826129aa565b9161445d88519384612940565b82523d868684013e5b806144e3575b156144d557838180518101031261223a579060ff61448e85614497940161334c565b16928391614504565b80156144cc5760239291612b1d612b686144bb938988528686528888205490612a50565b948352522054808211612bdf575090565b50505091505090565b506144979060ff601261448e565b508381511461446c565b606090614466565b50505060239192935052205490565b918215801561453f575b612beb5760018101809111612a635761452d92612b59612cac92612a99565b60058101809111612a6357600a900490565b50811561450e56feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae672a2646970667358221220c7deb7235e9f54a8e6e04aa952925a28656e8f828ba8927ff1e71014692abd0e64736f6c63430008120033", + "deployedBytecode": "0x608080604052600436101561001357600080fd5b60009060e08235811c918262a02a201461275d5750816302ce728f14612734578163078dfbe714612631578163095ea7b31461260a5781630c4e84f0146124f257816318160ddd146124d65781631c9e379b1461249d5781631d4d3a5d146124745781631da8bf10146123be5781631ee9c8f214611b355781631fb8f81a14611b1757816323b872dd14611974578163331960ff1461195657816334ce998a1461192d57816334d441d01461190f5781633644e515146118f457816337b6b7b9146118d657816338d52e0f146118ad5781633ba0b9a91461188f5781633f741adb1461186a57816340626d8b1461184c57816344de240a1461182e578163473e3ce71461181057816348e4163e146117d75781634e71e0c814611729578163529898f21461170c578163542afda3146116ee57816357935462146116d057816358db9afe146112825781636b19ad16146112645781636c3d8b8f1461123b57816370a082311461120257816372778547146111ca57816374645ff31461113757816374c9e481146111195781637dc0d1d0146110f05781637ecebe00146110b75781637fa0b84e146110855781638285ef401461105357816387b279371461101a5781638c5d0ed314610ffc5781638da5cb5b14610fd3578163910dd7c814610d53578163932bc4f814610c7557816399a9702814610c4d5781639e15e89f14610c12578163a9059cbb14610b2f578163b0e21e8a14610b11578163b27c0e7414610ae0578163b7113f1914610abd578163bb4cfe3b14610a9f578163bde39c5d14610a81578163c1ad5c8d14610a5e578163ce8849ed14610a35578163d3fb2a38146105d8578163d505accf1461044d57508063d8dfeb4514610424578063dd62ed3e146103d5578063de406577146103ac578063e0996cb61461038e578063e30c397814610365578063ea64dd5614610347578063eec0f42e14610329578063f791395d1461030b5763f8ba4cff146102ed57600080fd5b34610308578060031936011261030857610305613830565b80f35b80fd5b50346103085780600319360112610308576020602754604051908152f35b50346103085780600319360112610308576020600c54604051908152f35b50346103085780600319360112610308576020601f54604051908152f35b50346103085780600319360112610308576006546040516001600160a01b039091168152602090f35b50346103085780600319360112610308576020601d54604051908152f35b50346103085780600319360112610308576009546040516001600160a01b039091168152602090f35b5034610308576040366003190112610308576103ef6127a5565b60406103f96127bb565b9260018060a01b03809316815260026020522091166000526020526020604060002054604051908152f35b5034610308578060031936011261030857600b546040516001600160a01b039091168152602090f35b9050346105d45761045d366127e0565b8394969793929192421161058f5761053b926105339260018060a01b0395868b169788600052600460205260406000209182549261049a846134d1565b90556040519160208301937f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e2668552600060408501528b60608501528a8d1660808501528d60a085015260c08401528183015281526104f781612924565b519020610502613184565b9060405190602082019261190160f01b8452602283015260428201526042815261052b81612909565b519020613459565b91909161335a565b160361054a576103059261352e565b60405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152606490fd5b60405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b5080fd5b823461030857610160366003190112610308576001600160a01b0390600435828116908190036105d4576001600160401b0392602435848111610a315761062390369060040161282f565b909460443593838516809503610a2c57610642846005541633146129c5565b806109ee575b5081610895575b50509080929350610855575b50506064358061083d575b5060843580610825575b5060a4358061080e575b5060c435806107ea575b5060e435806107c6575b506101043580610795575b506101243580610721575b5061014435806106b2575080f35b601e5481106106c157601f5580f35b60405162461bcd60e51b815260206004820152603260248201527f4d61726b65743a206c69717569646174696f6e436f6c6c61746572616c697a616044820152711d1a5bdb94985d19481d1bdbc81cdb585b1b60721b6064820152608490fd5b610730620186a0821115612a10565b601f54811161074257601e55816106a4565b60405162461bcd60e51b815260206004820152602560248201527f4d61726b65743a20636f6c6c61746572616c697a6174696f6e5261746520746f6044820152646f2062696760d81b6064820152608490fd5b806016547fae6e0ab3b95f0a53ff9660a390ccedcbbf1f2355dce974a9841af106fddcfaba8480a360165581610699565b6107d4620186a08210612a10565b6107e1601b548211612a10565b601c558161068e565b6107f8620186a08210612a10565b610805601c548210612a10565b601b5581610684565b61081c620186a08210612a10565b601d558161067a565b610834620186a0821115612a10565b601a5581610670565b61084c620186a0821115612a10565b60195581610666565b816008549182167f5a62d22209e370e38eea92cfddcd228e656e6ec139243392a760a7769f5877fd8580a36001600160a01b03191617600855818061065b565b81116109da576108a660105461288b565b601f811161098b575b5083601f8211600114610917578495829394959261090c575b50508160011b916000199060031b1c1916176010555b7fa6f004921c944d4b8bf6e38462b00f36a58d62495d56b51f571ab78f732c98158380a1908291848061064f565b0135905085806108c8565b60108552601f19821695600080516020614568833981519152918660205b8982106109735750508360019596979810610959575b505050811b016010556108de565b0135600019600384901b60f8161c1916905585808061094b565b80600184968294958701358155019501920190610935565b60108552600080516020614568833981519152601f830160051c8101602084106109d3575b601f90920160051c01905b8181106109c857506108af565b8581556001016109bb565b50806109b0565b634e487b7160e01b84526041600452602484fd5b600f80546001600160a01b0319169190911790557f0b2d6eb667d0522c3eb86e4288afecae6c11591ffd1345d4d12407e0598bca9b8580a186610648565b600080fd5b8380fd5b82346103085780600319360112610308576008546040516001600160a01b039091168152602090f35b82346103085780600319360112610308576020610a79613585565b604051908152f35b82346103085780600319360112610308576020602854604051908152f35b82346103085780600319360112610308576020601e54604051908152f35b8234610308578060031936011261030857602060ff602554166040519015158152f35b823461030857806003193601126103085760406024548151906001600160401b03908181168352831c166020820152f35b82346103085780600319360112610308576020601a54604051908152f35b823461030857604036600319011261030857610b496127a5565b60243580928115801590610c00575b610b90575b50506040519182526001600160a01b031690339060008051602061454883398151915290602090a3602060405160018152f35b33815260016020526040812054610ba9838210156132ae565b6001600160a01b0384169033829003610bc4575b5050610b5d565b604093610bdb91610bd68415156132f3565b612aa7565b338352600160205283832055815220610bf5838254612ab4565b905581838080610bbd565b50336001600160a01b03841614610b58565b8234610308576040366003190112610308576060610c3a610c316127a5565b60243590612bf3565b9060405192835260208301526040820152f35b8234610308576040366003190112610308576020610a79610c6c6127a5565b60243590613052565b8234610308578060031936011261030857604051600090602b54610c988161288b565b808352600191808316908115610d2b5750600114610cd1575b610ccd83610cc181870382612940565b60405191829182612961565b0390f35b602b600090815260209450917f11c44e4875b74d31ff9fd779bf2566af7bd15b87fc985d01f5094b89e3669e4f5b828410610d1857505050810190910190610cc181610cb1565b8054858501870152928501928101610cff565b610ccd9550610cc193506020915091849260ff191682840152151560051b8201019350610cb1565b9050346105d45760403660031901126105d4576004356001600160401b038111610fcf5736602382011215610fcf57806004013590610d91826129aa565b92610d9f6040519485612940565b82845284602092838601943660248284010111610fcf578060248693018737860101526024359161ffff8316809303610fcb57610100938486805181010312610fc757610deb90612d32565b91610df860408701613338565b90610e0560608801613338565b9660808101519660a082015192610e1e60c0840161334c565b91818401519301519360018060a01b03808097169b1698814211610f82579289888d989794610ef99794610533978f8e600014610f5b577f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e266955b8d60005260048652604060002092835493610e92856134d1565b905560405196870197885260408701528d6060870152608086015260a085015260c0840152818301528152610ec681612924565b519020610ed1613184565b90604051908a82019261190160f01b8452602283015260428201526042815261052b81612909565b1603610f17575015610f0e576103059261352e565b610305926134e0565b6064906040519062461bcd60e51b82526004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152fd5b7f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d695610e78565b60405162461bcd60e51b815260048101899052601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b8680fd5b8580fd5b8280fd5b82346103085780600319360112610308576005546040516001600160a01b039091168152602090f35b82346103085780600319360112610308576020601b54604051908152f35b8234610308576020366003190112610308576020906040906001600160a01b036110426127a5565b168152602383522054604051908152f35b8234610308578060031936011261030857601454604080516001600160801b038316815260809290921c602083015290f35b8234610308576040366003190112610308576110ac6110a26127a5565b60243590336134e0565b602060405160018152f35b8234610308576020366003190112610308576020906040906001600160a01b036110df6127a5565b168152600483522054604051908152f35b8234610308578060031936011261030857600f546040516001600160a01b039091168152602090f35b82346103085780600319360112610308576020602d54604051908152f35b823461030857806003193601126103085760405160009060105461115a8161288b565b808352600191808316908115610d2b575060011461118257610ccd83610cc181870382612940565b6010600090815260209450916000805160206145688339815191525b8284106111b757505050810190910190610cc181610cb1565b805485850187015292850192810161119e565b82346103085760203660031901126103085760043590600982101561030857602060ff6111f68461285c565b54166040519015158152f35b8234610308576020366003190112610308576020906040906001600160a01b0361122a6127a5565b168152600183522054604051908152f35b8234610308578060031936011261030857600a546040516001600160a01b039091168152602090f35b82346103085780600319360112610308576020602654604051908152f35b82346103085760a03660031901126103085761129c6127a5565b606435916001600160a01b0383168303610a2c576084356001600160401b0381116105d4576112cf90369060040161282f565b92906006600052602094600786526112ef60ff6040600020541615613930565b6112f7612df7565b5050611301613830565b6113166001600160a01b0384163014156139ad565b600a5460405163433e762d60e01b8152908790829060049082906001600160a01b03165afa90811561168457611367916113629187916116a3575b506001600160a01b03841690613b74565b613a12565b61137360243584613e4c565b6001600160a01b0383168452601886526040842080546113969060243590612aa7565b90556113a6602435601554612aa7565b6015556040516024356001600160a01b038381169086167f8ad4d3ff00da092c7ad9a573ea4f5f6a3dffc6712dc06d3f78f49b862297c4028880a460018060a01b0360095416600c54813b15610fc757630208d92960e11b83528691839182908490829061142690602435906001600160a01b038b163060048601613a59565b03925af180156116845790859161168f575b5050600c54600e54604051633d9545e960e11b815260048101929092526024808301919091526000604483015235606482015260016084820181905260a48201526101408160c4816001600160a01b0386165afa9081156116845785604094939286928291611653575b506114c68651998a968795869463efa84c6d60e01b86526044359060048701613d61565b03926001600160a01b03165af1918215611610578093819361161c575b506114f2604435851015613e0a565b6001600160a01b0382168152601785526040812054906115198261151461375d565b6140a5565b8660018060a01b0360095416916064600e546040519485938492638eb22cdd60e01b845260048401526024830152600160448301525afa91821561161057916115db575b50610a79936115839392911161158857611578908280614103565b505b60115490613a83565b61396d565b5061159161375d565b80516001600160801b039081166115b65750506115b0845b8280614103565b5061157a565b81816115cd6115d6938a6115b09601511689612a50565b91511690612a79565b6115a9565b929190508583813d8311611609575b6115f48183612940565b81010312610a2c579151909190610a7961155d565b503d6115ea565b604051903d90823e3d90fd5b90925061164291935060403d60401161164c575b61163a8183612940565b810190613d4b565b92909291856114e3565b503d611630565b61167791506101403d6101401161167d575b61166f8183612940565b810190613c61565b8a6114a2565b503d611665565b6040513d87823e3d90fd5b611698906128c5565b610a31578387611438565b6116c39150893d8b116116c9575b6116bb8183612940565b8101906139f8565b89611351565b503d6116b1565b82346103085780600319360112610308576020601c54604051908152f35b82346103085780600319360112610308576020602c54604051908152f35b823461030857806003193601126103085760208054604051908152f35b82346103085780600319360112610308576006546001600160a01b03908181163381900361179357806005549384167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08680a36001600160a01b0319928316176005551660065580f35b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b8234610308576020366003190112610308576020906040906001600160a01b036117ff6127a5565b168152601783522054604051908152f35b82346103085780600319360112610308576020601554604051908152f35b82346103085780600319360112610308576020600e54604051908152f35b82346103085780600319360112610308576020601654604051908152f35b8234610308576060366003190112610308576020610a79604435602435600435612ada565b82346103085780600319360112610308576020601154604051908152f35b8234610308578060031936011261030857600d546040516001600160a01b039091168152602090f35b82346103085780600319360112610308576020601254604051908152f35b82346103085780600319360112610308576020610a79613184565b82346103085780600319360112610308576020601954604051908152f35b82346103085780600319360112610308576014546040516001600160801b039091168152602090f35b82346103085780600319360112610308576020601354604051908152f35b82346103085760603660031901126103085761198e6127a5565b906119976127bb565b60443591826119d5575b506040519182526001600160a01b0390811692169060008051602061454883398151915290602090a3602060405160018152f35b6001600160a01b038481168083526001602090815260408420549286906119fe828610156132ae565b861693848403611a13575b50505050506119a1565b83865260028352604086203360005283526040600020546000198103611a81575b5092600160209693611a5f8794604097610bd66000805160206145488339815191529c9a15156132f3565b9285525283832055815220611a75858254612ab4565b90559185808581611a09565b90918110611ad75792600160209693611a5f8a6000805160206145488339815191529a9895611ab28260409a612aa7565b8689526002855289892033600052855289600020559497509497995050939650611a34565b60405162461bcd60e51b815260048101849052601860248201527745524332303a20616c6c6f77616e636520746f6f206c6f7760401b6044820152606490fd5b82346103085780600319360112610308576020602954604051908152f35b82346103085760c036600319011261030857611b4f6127a5565b608435906001600160a01b0382168203610fcf5760a4356001600160401b038111610a3157611b8290369060040161282f565b9290600585526007602052611b9e60ff60408720541615613930565b611ba6612df7565b5050611bb0613830565b611bc56001600160a01b0384163014156139ad565b600a5460405163433e762d60e01b815290602090829060049082906001600160a01b03165afa9081156121ca57611c129161136291889161239f575b506001600160a01b03851690613b74565b600954600e54604051638eb22cdd60e01b81526004810182905260448035602483015260019082015293916001600160a01b0316908790602086606481865afa958615612394578296612360575b50856122f5575b505050611c75602435613f32565b9260018060a01b0382168752602360205260408720611c95858254612ab4565b9055611c9f61375d565b93611cac81602435612ab4565b9460006020604051611cbd816128ee565b828152015280516001600160801b039081166122995780611ce481895b1682855116613783565b168252806020830192611cfc828a1683865116613783565b9382851690525116918a6014549160801b9116928b60018060801b03199182841681871717601455601654948515968715612283575b505050505050501561223e57879460018060a01b0387168652601760205260408620611d5f828254612ab4565b9055604080519283526020830191909152602435916001600160a01b0385811692908916917f3a5151e57d3bc9798e7853034ac52293d1a0e12a2b44725e75b03b21f86477a69190a4600d546001600160a01b0316803b1561223a576040516340c10f1960e01b815230600482015260248035908201529085908290604490829084905af1908115611684578591612226575b5050600d54600e5460095460405163095ea7b360e01b8082526001600160a01b0392831660048301526024820189905291909316926020816044818b885af1801561221b576121d5575b506009546040519182526001600160a01b031660048201526024803590820152916020908390818981604481015b03925af19182156121ca578692612187575b5060095460408051634d4d7cbd60e11b815297909288926001600160a01b0390811692849290918391611ebc9160243591908c1690309060048601613f03565b03925af1801561215957611f27958291612166575b50611ee2600e5491600c5494612ab4565b60405180978192633d9545e960e11b83526101409687956004850160a091949360019360c0830196835260208301526000604083015260608201528260808201520152565b03816001600160a01b0387165afa8015612159576040958793839261213c575b5050611f6c86519889968795869463efa84c6d60e01b86526064359060048701613d61565b03926001600160a01b03165af18015612131578392849161210c575b50611f97606435841015613e0a565b611fa18183613e4c565b8015612084575b6001600160a01b03821684526018602052604084208054611fca908390612ab4565b9055611fd881601554612ab4565b601555600c546009546001600160a01b0316908590823b156105d45761201992849183604051809681958294630208d92960e11b8452308c60048601613a59565b03925af1801561168457612070575b50602093610a79926115839290916001600160a01b0383169081907f9ed03113de523cebfe5e49d5f8e12894b1c0d42ce805990461726444c90eab879080a460115490613a83565b61207a85916128c5565b610a315784612028565b5060018060a01b03600954166020600c54606460405180948193638eb22cdd60e01b835260048301528860248301528860448301525afa9081156121015784916120cf575b50611fa8565b90506020813d6020116120f9575b816120ea60209383612940565b81010312610a2c5751846120c9565b3d91506120dd565b6040513d86823e3d90fd5b905061212891925060403d60401161164c5761163a8183612940565b91909184611f88565b6040513d85823e3d90fd5b6121529250803d1061167d5761166f8183612940565b8980611f47565b50604051903d90823e3d90fd5b61217f915060403d60401161164c5761163a8183612940565b905089611ed1565b91506020823d6020116121c2575b816121a260209383612940565b81010312610fcb57611ebc6040916121ba8894612d32565b509150611e7c565b3d9150612195565b6040513d88823e3d90fd5b906020823d602011612213575b816121ef60209383612940565b8101031261220f57611e6a93612206602093612d32565b50935090611e3c565b8780fd5b3d91506121e2565b6040513d8a823e3d90fd5b61222f906128c5565b610a31578388611df2565b8480fd5b60405162461bcd60e51b815260206004820152601b60248201527f42696742616e673a20626f72726f7720636170207265616368656400000000006044820152606490fd5b161792161617111590508980808b818080611d32565b6020820196806122cb6122bc6122b2858c511684612a50565b8587511690612a79565b99846115cd818851168d612a50565b106122dc575b611ce4828092611cda565b96611ce4826122eb81936134d1565b99925050506122d1565b823b156105d457604051630208d92960e11b815292839182908490829061232c908b906001600160a01b038b168e60048601613a59565b03925af1801561235557612342575b8681611c67565b61234e909691966128c5565b948661233b565b6040513d89823e3d90fd5b9095506020813d60201161238c575b8161237c60209383612940565b810103126105d457519489611c60565b3d915061236f565b6040513d84823e3d90fd5b6123b8915060203d6020116116c9576116bb8183612940565b88611c01565b9050346105d4576123ce366127e0565b8397949697929192421161058f5761246592610533928a60018060a01b0396878c16988983526004602052604083209182549261240a846134d1565b90556040519260208401947f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d6865260408501528b60608501528a8d1660808501528d60a085015260c08401528183015281526104f781612924565b160361054a57610305926134e0565b8234610308578060031936011261030857602a546040516001600160a01b039091168152602090f35b8234610308576020366003190112610308576020906040906001600160a01b036124c56127a5565b168152601883522054604051908152f35b8234610308578060031936011261030857602090604051908152f35b82346103085760403660031901126103085760043560098110156105d4576125186127d1565b6008549091906001600160a01b031633036125ce5760ff6125388261285c565b5416151591151591821461259457808260ff6125566125849461285c565b54161515827feeec81de25875ce1725479bb76f720a8defdb43dea041919ae37bb4aae9847c08780a461285c565b9060ff8019835416911617905580f35b60405162461bcd60e51b81526020600482015260126024820152714d61726b65743a2073616d6520737461746560701b6044820152606490fd5b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881d5b985d5d1a1bdc9a5e995960621b6044820152606490fd5b8234610308576040366003190112610308576110ac6126276127a5565b602435903361352e565b82346103085760603660031901126103085761264b6127a5565b6126536127d1565b604435908115158203610a315760018060a01b03928391612679836005541633146129c5565b1561271d571690811590811591612715575b50156126d857806005549283167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08580a36001600160a01b03199182161760055560068054909116905580f35b60405162461bcd60e51b81526020600482015260156024820152744f776e61626c653a207a65726f206164647265737360581b6044820152606490fd5b90508461268b565b9150501660018060a01b0319600654161760065580f35b8234610308578060031936011261030857604061274f612df7565b825191151582526020820152f35b8390346105d45760403660031901126105d457604060209261277d6127a5565b6127856127bb565b6001600160a01b0391821683526003865283832091168252845220548152f35b600435906001600160a01b0382168203610a2c57565b602435906001600160a01b0382168203610a2c57565b602435908115158203610a2c57565b60e0906003190112610a2c576001600160a01b03906004358281168103610a2c57916024359081168103610a2c5790604435906064359060843560ff81168103610a2c579060a4359060c43590565b9181601f84011215610a2c578235916001600160401b038311610a2c5760208381860195010111610a2c57565b6009811015612875576000526007602052604060002090565b634e487b7160e01b600052602160045260246000fd5b90600182811c921680156128bb575b60208310146128a557565b634e487b7160e01b600052602260045260246000fd5b91607f169161289a565b6001600160401b0381116128d857604052565b634e487b7160e01b600052604160045260246000fd5b604081019081106001600160401b038211176128d857604052565b608081019081106001600160401b038211176128d857604052565b61010081019081106001600160401b038211176128d857604052565b90601f801991011681019081106001600160401b038211176128d857604052565b6020808252825181830181905290939260005b82811061299657505060409293506000838284010152601f8019910116010190565b818101860151848201604001528501612974565b6001600160401b0381116128d857601f01601f191660200190565b156129cc57565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b15612a1757565b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881b9bdd081d985b1a59607a1b6044820152606490fd5b81810292918115918404141715612a6357565b634e487b7160e01b600052601160045260246000fd5b8115612a83570490565b634e487b7160e01b600052601260045260246000fd5b604d8111612a6357600a0a90565b91908203918211612a6357565b91908201809211612a6357565b81810392916000138015828513169184121617612a6357565b601454919291612b2391612b1491612b0a91612b00906001600160801b03831690612a50565b9060801c90612a79565b93601f5490612a50565b612b1d83612a99565b90612a79565b808310612beb57612b37612b739184612aa7565b91612b6e612b68612b5f601e54612b59612b5086612a99565b60205490612ab4565b90612a50565b612b1d84612a99565b91612a99565b612ac1565b6509184e72a00090818102918183051490151715612a6357670de0b6b3a764000091828102928184051490151715612a63578015612a8357600160ff1b91808314600019831416612a635705906000821215612be4578114612a6357600003905b808211612bdf575090565b905090565b5090612bd4565b505050600090565b6001600160a01b03908116600081815260176020908152604082205492959493919290918115612d2557612c2561379c565b90612c31861515612f4f565b6009541683600c54898752601882526064604088205491604051948593849263442c159960e01b8452600484015260248301528960448301525afa908115611684578591612cf6575b5092859492612cd6601893612cb1612cea99612cac612ca360409a620186a06021540490612a50565b601e5490612a50565b612a79565b815190936001600160801b03918691612ccc91841690612a50565b9201511690612a79565b818110612cee57035b978352522054612f9b565b9091565b505082612cdf565b90508381813d8311612d1e575b612d0d8183612940565b8101031261223a5751612cea612c7a565b503d612d03565b5050509192505080918190565b51908115158203610a2c57565b9190826040910312610a2c576020612d5683612d32565b92015190565b602080825260009160105491612d718361288b565b9283828401526001908181169081600014612dd45750600114612d96575b5050505090565b929350601060005280600020926000935b858510612dc05750505060409250010138808080612d8f565b805485850160400152938201938101612da7565b925050506040935060ff929192191683830152151560051b010138808080612d8f565b600f546040805163d6d7d52560e01b81529290916001600160a01b0316828480612e2360048201612d5c565b0381600080955af18015612f435781948291612f10575b50928415612eb3578315612e7957507f9f9192b5edb17356c524e08d9e025c8e2f6307e6ea52fb7968faa3081f51c3c883918260115580a25b42601355565b5162461bcd60e51b81526020600482015260146024820152734d61726b65743a20696e76616c6964207261746560601b6044820152606490fd5b91925050612ec660135460125490612ab4565b4211612ed6575060115490612e73565b5162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881c985d19481d1bdbc81bdb1960621b6044820152606490fd5b9050612f33919450833d8511612f3c575b612f2b8183612940565b810190612d3f565b93909338612e3a565b503d612f21565b508251903d90823e3d90fd5b15612f5657565b60405162461bcd60e51b815260206004820152601e60248201527f4d61726b65743a2065786368616e676552617465206e6f742076616c696400006044820152606490fd5b612fa6821515612f4f565b602060018060a01b0360095416916064600c54604051948593849263442c159960e01b845260048401526024830152600060448301525afa90811561304657600091613013575b5090612cac612fff9260215490612a50565b620186a061300f601e5483612a50565b0491565b906020823d821161303e575b8161302c60209383612940565b81010312610308575051612cac612fed565b3d915061301f565b6040513d6000823e3d90fd5b6001600160a01b0316600081815260186020526040812054909261307591612f9b565b91835260176020526040832054801561317e57811561317e5781811061317e5782811015613174576014546130be918391610bd691612b00906001600160801b03831690612a50565b90620186a09283830292808404851490151715613160576130e39291612b1d91612aa7565b91601b5491601c54936130f68585612ac1565b80820291848212600160ff1b82141661316057818305149015171561314c57058184820194851291129080158216911516176131385750808212612bdf575090565b634e487b7160e01b81526011600452602490fd5b634e487b7160e01b83526011600452602483fd5b634e487b7160e01b85526011600452602485fd5b50505050601b5490565b50505090565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03161480613285575b156131df577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f000000000000000000000000000000000000000000000000000000000000000082527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a0815260c081018181106001600160401b038211176128d85760405251902090565b507f000000000000000000000000000000000000000000000000000000000000000046146131b6565b156132b557565b60405162461bcd60e51b815260206004820152601660248201527545524332303a2062616c616e636520746f6f206c6f7760501b6044820152606490fd5b156132fa57565b60405162461bcd60e51b815260206004820152601660248201527545524332303a206e6f207a65726f206164647265737360501b6044820152606490fd5b51906001600160a01b0382168203610a2c57565b519060ff82168203610a2c57565b6005811015612875578061336b5750565b600181036133b35760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b6044820152606490fd5b600281036134005760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606490fd5b60031461340957565b60405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608490fd5b9291906fa2a8918ca85bafe22016d0b997e4df60600160ff1b0383116134c55791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa156121595781516001600160a01b038116156134bf579190565b50600190565b50505050600090600390565b6000198114612a635760010190565b7fe50de2333c10a9502fcb1d8ae13a51bbf423153dfc63c2b8997665b32154afc360018060a01b038092169160009083825260036020526040822094169384825260205284604082205580a4565b909160207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259160018060a01b03809416938460005260028352604060002095169485600052825280604060002055604051908152a3565b60ff602554166136f7576014546001600160801b03169081156136f057600a54604051631848f2bf60e31b8152602093916001600160a01b03919085908290600490829086165afa80156130465785916000916136bb575b50600460405180948193631a674cc560e11b8352165afa9384156130465760009461368c575b505061361f9192670de0b6b3a764000092839160285490612a50565b049081811015613683576136366029548092612aa7565b83810290808204851490151715612a6357612b1d6136579261367794612aa7565b602654926136716027549261366c8487612aa7565b612a50565b04612ab4565b90808211612bdf575090565b50505060265490565b81813d83116136b4575b6136a08183612940565b81010312610a315751925061361f38613603565b503d613696565b9182813d83116136e9575b6136d08183612940565b8101031261030857506136e38591613338565b386135dd565b503d6136c6565b6027549150565b600a5460405163e6abad4960e01b815290602090829060049082906001600160a01b03165afa9081156130465760009161372f575090565b906020823d8211613755575b8161374860209383612940565b8101031261030857505190565b3d915061373b565b6040519061376a826128ee565b6014546001600160801b038116835260801c6020830152565b6001600160801b039182169082160191908211612a6357565b600060206040516137ac816128ee565b82815201526001600160401b03906137cb8260245460401c1642612aa7565b9182156138225761381d61366c91670de0b6b3a76400006138126137ed61375d565b9660018060801b03958694858a5116906301e1338061380a613585565b041690612a50565b041682855116613783565b168252565b50905061382d61375d565b90565b60405161383c816128ee565b6024546001600160401b03908181168352818160401c16613864602085019180835242612aa7565b92831561392957602094816301e1338061387c613585565b04168152814216835261388d61375d565b670de0b6b3a76400006138b260018060801b039761366c898551168787511690612a50565b04956138c381881682845116613783565b1680825296015160801b6001600160801b031990811690961760145551915192909416931692831760409190911b67ffffffffffffffff60401b16176024557f7484db546dcd57af0104c73c8a6968dfbaf5767f047cee0dadd0499ad7df81a0600080a3565b5050505050565b1561393757565b60405162461bcd60e51b815260206004820152600e60248201526d13585c9ad95d0e881c185d5cd95960921b6044820152606490fd5b1561397457565b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881a5b9cdbdb1d995b9d607a1b6044820152606490fd5b156139b457565b606460405162461bcd60e51b815260206004820152602060248201527f4d61726b65743a2063616e6e6f742065786563757465206f6e20697473656c666044820152fd5b90816020910312610a2c575161ffff81168103610a2c5790565b15613a1957565b60405162461bcd60e51b81526020600482015260186024820152772134b3a130b7339d1024b73b30b634b21039bbb0b83832b960411b6044820152606490fd5b6001600160a01b039182168152911660208201526040810191909152606081019190915260800190565b919060018060a01b03806000941684526020601781526040852054908115613b6a5760188152604086205480156139295781613abd61375d565b9460095416916064600c54604051948593849263442c159960e01b8452600484015260248301528b60448301525afa968715611610578097613b34575b5050612ccc613b19612ca3613b2f969798620186a06021540490612a50565b9561366c60018060801b03948587511690612a50565b111590565b9096508187813d8311613b63575b613b4c8183612940565b810103126103085750945194612ccc613b19613afa565b503d613b42565b5060019450505050565b600a5460405163dbd01de160e01b815260209290916001600160a01b039084908490600490829085165afa8015613046578493600091613c23575b50918161ffff936044936040519889968795633a304d8b60e21b8752166004860152166024840152165afa90811561304657600091613bef575b50905090565b82813d8311613c1c575b613c038183612940565b810103126103085750613c1590612d32565b8038613be9565b503d613bf9565b9091929381813d8311613c5a575b613c3b8183612940565b810103126105d457519082821682036103085750839291906044613baf565b503d613c31565b809103906101408212610a2c576040805192606084018481106001600160401b038211176128d85780835260808212610a2c57613c9d81612909565b613ca684613338565b815260208401516080860152613cbd838501613338565b60a0860152606084015160c086015284526080607f19820112610a2c5781908151613ce781612909565b6080850151815260a0850151602082015260c08501518382015260e08501516060820152602086015260ff190112610a2c57613d40610120825193613d2b856128ee565b613d386101008201612d32565b855201612d32565b602083015282015290565b9190826040910312610a2c576020825192015190565b939492909160206040845194606060018060a01b0396878151168a5284810151858b0152878482015116848b015201516060890152606083820151805160808b01528481015160a08b01528381015160c08b0152015160e08901520151805115156101008801520151151561012086015261014085015216610160830152806101a080610180850152830152806101c093848401376000828201840152601f01601f1916010190565b15613e1157565b60405162461bcd60e51b8152602060048201526013602482015272084d2ce84c2dcce7440dcdee840cadcdeeaced606b1b6044820152606490fd5b6001600160a01b0316338103613e60575050565b6000818152602090600382526040918282203383528152848383205410613ec95783825260038152828220338352815282822054600101613ea2575050505050565b613ebd93825260038152828220903383525220918254612aa7565b90553880808080613929565b60649083519062461bcd60e51b82526004820152601460248201527313585c9ad95d0e881b9bdd08185c1c1c9bdd995960621b6044820152fd5b9081526001600160a01b0391821660208201529116604082015260608101919091526000608082015260a00190565b801561409f57602a546040805163d6d7d52560e01b81526001600160a01b03909216929190808280613f6660048201612d5c565b0381600080985af19182156140955784908593614073575b50156140245750670e27c49886e6000081101561401b57670d99a8cec7e2000081111561401257602d5490670d99a8cec7e1ffff198101908111613ffe5790668e1bc9bf040000613fd8613fdf93612b59602c5485612aa7565b0490612aa7565b9081613fea57505090565b620186a0925090613ffa91612a50565b0490565b634e487b7160e01b84526011600452602484fd5b505050602d5490565b505050602c5490565b5162461bcd60e51b8152602060048201526024808201527f42696742616e673a202061737365742773206f7261636c652063616c6c2066616044820152631a5b195960e21b6064820152608490fd5b90508161408d9293503d8411612f3c57612f2b8183612940565b919038613f7e565b81513d86823e3d90fd5b50600090565b60208101805190939291906001600160801b039081166140c6575090925050565b90816115cd816140e96140df6140f29686511688612a50565b828a511690612a79565b97511687612a50565b106140f957565b9061382d906134d1565b92909260018060a01b03928385169060009482865260209060178252604097888820548085116143ca575b50831561438e578361413f916143eb565b94838610156143525787988589526023845280892061415f888254612aa7565b905561416961375d565b9689858351614177816128ee565b828152015261418686896140a5565b9760018060801b038061419e818c16828551166143d2565b168252868201906141b4818a16828451166143d2565b9181831690528a9251169060018060801b03199060801b1617601455878b5260178652828b206141e5888254612aa7565b9055614216838a809d886009541690600e549084518096819582946311a5cc7760e31b84528d309160048601613f03565b03925af18015614348579061424393929161432c575b50614237888b612aa7565b80614309575b50612aa7565b8061427b575b507fc8e512d8f188ca059984b5853d2bf653da902696b8512785b182b2c813789a6e94959697989950519485521692a4565b8a9084600d541690813b15610fcf578351632770a7eb60e21b8152306004820152602481019190915291908290604490829084905af180156142ff577fc8e512d8f188ca059984b5853d2bf653da902696b8512785b182b2c813789a6e969798999a9b506142f0575b8a999897969550614249565b6142f9906128c5565b386142e4565b82513d8d823e3d90fd5b614326915061431f620186a091601a5490612a50565b048a612aa7565b3861423d565b61434290853d871161164c5761163a8183612940565b5061422c565b84513d8f823e3d90fd5b885162461bcd60e51b815260048101849052601560248201527442423a2072657061796d656e7420746f6f206c6f7760581b6044820152606490fd5b885162461bcd60e51b815260048101849052601560248201527453474c3a206e6f7468696e6720746f20726570617960581b6044820152606490fd5b93503861412e565b6001600160801b039182169082160391908211612a6357565b6001600160a01b0390811660008181526017602090815260408083205493959094929391928282146144f557848091600d541687518681019063313ce56760e01b82526004815261443b816128ee565b51915afa3d156144ed573d90614450826129aa565b9161445d88519384612940565b82523d868684013e5b806144e3575b156144d557838180518101031261223a579060ff61448e85614497940161334c565b16928391614504565b80156144cc5760239291612b1d612b686144bb938988528686528888205490612a50565b948352522054808211612bdf575090565b50505091505090565b506144979060ff601261448e565b508381511461446c565b606090614466565b50505060239192935052205490565b918215801561453f575b612beb5760018101809111612a635761452d92612b59612cac92612a99565b60058101809111612a6357600a900490565b50811561450e56feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae672a2646970667358221220c7deb7235e9f54a8e6e04aa952925a28656e8f828ba8927ff1e71014692abd0e64736f6c63430008120033", "linkReferences": {}, "deployedLinkReferences": {} } diff --git a/src/artifacts/tapioca-bar/BBLiquidation.json b/src/artifacts/tapioca-bar/BBLiquidation.json index 564bdea7..33ba52f7 100644 --- a/src/artifacts/tapioca-bar/BBLiquidation.json +++ b/src/artifacts/tapioca-bar/BBLiquidation.json @@ -53,6 +53,31 @@ "name": "ApprovalBorrow", "type": "event" }, + { + "anonymous": false, + "inputs": [], + "name": "AssetOracleDataUpdated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "_oldVal", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "_newVal", + "type": "address" + } + ], + "name": "AssetOracleUpdated", + "type": "event" + }, { "anonymous": false, "inputs": [ @@ -272,25 +297,6 @@ "name": "LogBorrowCapUpdated", "type": "event" }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "uint256", - "name": "_oldVal", - "type": "uint256" - }, - { - "indexed": true, - "internalType": "uint256", - "name": "_newVal", - "type": "uint256" - } - ], - "name": "LogBorrowingFee", - "type": "event" - }, { "anonymous": false, "inputs": [ @@ -479,6 +485,37 @@ "name": "Transfer", "type": "event" }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint256", + "name": "oldMin", + "type": "uint256" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "newMin", + "type": "uint256" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "oldMax", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "newMax", + "type": "uint256" + } + ], + "name": "UpdateMinMaxMintFee", + "type": "event" + }, { "inputs": [], "name": "DOMAIN_SEPARATOR", @@ -640,27 +677,40 @@ "type": "function" }, { - "inputs": [ + "inputs": [], + "name": "assetOracle", + "outputs": [ { - "internalType": "address", + "internalType": "contract IOracle", "name": "", "type": "address" } ], - "name": "balanceOf", + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "assetOracleData", "outputs": [ { - "internalType": "uint256", + "internalType": "bytes", "name": "", - "type": "uint256" + "type": "bytes" } ], "stateMutability": "view", "type": "function" }, { - "inputs": [], - "name": "borrowOpeningFee", + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "balanceOf", "outputs": [ { "internalType": "uint256", @@ -1029,6 +1079,19 @@ "stateMutability": "view", "type": "function" }, + { + "inputs": [], + "name": "maxMintFee", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, { "inputs": [], "name": "minDebtRate", @@ -1055,6 +1118,19 @@ "stateMutability": "view", "type": "function" }, + { + "inputs": [], + "name": "minMintFee", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, { "inputs": [ { @@ -1322,11 +1398,6 @@ }, { "inputs": [ - { - "internalType": "uint256", - "name": "_borrowOpeningFee", - "type": "uint256" - }, { "internalType": "contract IOracle", "name": "_oracle", @@ -1609,8 +1680,8 @@ "type": "function" } ], - "bytecode": "0x6101408060405234620001895762000017816200018e565b600f81526001602082016e546170696f63612042696742616e6760881b8152602060405162000046816200018e565b8381520192603160f81b845251902091208160e052610100918183524660a0526040519160208301907f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f92838352604085015260608401524660808401523060a084015260a0835260c083019280841060018060401b03851117620001735760408490525190206080523060c052610120908152600580546001600160a01b0319163390811790915560007f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a362013880601b5562015f90601c55612710601d556032602055612ee06021556142be9283620001ab8439608051836135b0015260a0518361367b015260c0518361357a015260e051836135ff01525182613625015251816135dc0152f35b634e487b7160e01b600052604160045260246000fd5b600080fd5b604081019081106001600160401b03821117620001735760405256fe608080604052600436101561001357600080fd5b60e0600035811c918262a02a2014612b995750816302ce728f14612a3d578163078dfbe714612939578163095ea7b3146129135781630996efb7146124ae5781630c4e84f01461239457816318160ddd146123785781631c9e379b1461233e5781631da8bf10146122875781631fb8f81a1461226957816323b872dd146120c5578163331960ff146120a757816334ce998a1461207e57816334d441d0146120605781633644e5151461204557816337b6b7b91461202757816338d52e0f14611ffe5781633ba0b9a914611fe05781633f741adb14611fbc57816340626d8b14611f9e57816344de240a14611f80578163473e3ce714611f6257816348e4163e14611f285781634e71e0c814611e7a578163529898f214611e5c5781635793546214611e3e5781636b19ad1614611e205781636c3d8b8f14611df757816370a0823114611dbd5781637277854714611d8757816374645ff314611ca55781637dc0d1d014611c7c5781637ecebe0014611c425781637fa0b84e14611c115781638285ef4014611bdf57816387b2793714611ba55781638c5d0ed314611b875781638da5cb5b14611b5e578163910dd7c81461190e578163959916dc146118f157816399a97028146118ca5781639e15e89f14611881578163a28e6b82146113c4578163a9059cbb146112dd578163b0e21e8a146112bf578163b27c0e741461128e578163b7113f191461126b578163bb4cfe3b1461124d578163bde39c5d1461122f578163c1ad5c8d1461120c578163ce8849ed146111e3578163d505accf1461105e57508063d8dfeb4514611035578063dd62ed3e14610fe4578063de40657714610fbb578063e0996cb614610f9d578063e30c397814610f74578063e5644d8b14610344578063ea64dd5614610326578063eec0f42e14610308578063f791395d146102ea5763f8ba4cff146102ca57600080fd5b346102e55760003660031901126102e5576102e3613c2e565b005b600080fd5b346102e55760003660031901126102e5576020602854604051908152f35b346102e55760003660031901126102e5576020600c54604051908152f35b346102e55760003660031901126102e5576020601f54604051908152f35b346102e55760803660031901126102e5576004356001600160401b0381116102e557610374903690600401612e0a565b906024356001600160401b0381116102e557610394903690600401612e0a565b6044356001600160401b0381116102e5576103b3903690600401612e0a565b9290916064356001600160401b0381116102e5576103d5903690600401612e0a565b9490916004600052600760205260ff60406000205416610f3e578715610efe57808803610ec357610407828914613d84565b610412828714613d84565b600f546040805163d6d7d52560e01b8152959186906001600160a01b031681600081610440600482016132d8565b03925af19485156109fa57600090600096610e8f575b508581610e85575b5015610e7b57846011555b8415610e2b57610477613c2e565b60009860005b8181106104c6578a1561048c57005b60405162461bcd60e51b815260206004820152601260248201527110908e881b9bc81d5cd95c9cc8199bdd5b9960721b6044820152606490fd5b6104d181838c61414b565b356001600160a01b03811681036102e5576104ec888261415b565b15610501575b506104fc906138c3565b61047d565b9a61050b906138c3565b9a61051782868661414b565b359061052483888c61414b565b35906001600160a01b03821682036102e5578b8410156109b7578360051b890135601e198a3603018112156102e5578901926001600160401b038435116102e5578335360360208501136102e55761057c8b8361346d565b938b15610de65760018060a01b03600954166020600c5460018060a01b03861660005260188252606460406000205491604051948593849263442c159960e01b845260048401526024830152600060448301525afa9081156109fa578d90600092610db0575b506105f36105f89260225490612ec5565b612eee565b9360018060a01b038416600052601760205261061985604060002054612fa2565b80601d5480610d91575b5080851115610d8a575b6001600160a01b0386166000908152601760205260409020549081811115610d81575080965b1115610d48578d9381811115610d4157505b6001600160a01b0385166000908152601760205260409020549081811115610d3657506106928180612f1c565b6001600160a01b0386166000908152601760205260409020556106b3613b5b565b6020810180519091906001600160801b0316610d04575050602081965b60646106f66106ed60018060a01b036009541698600c5494612ec5565b60225490612eee565b916040519788938492638eb22cdd60e01b845260048401526024830152600060448301525afa9384156109fa57600094610cd0575b506001600160a01b0385166000908152601860205260409020548411610c8f5760018060a01b0385166000526018602052604060002061076c858254612f1c565b90558515610c5c576014805490916107b56001600160801b036107938a8216828616613d6b565b16926001600160801b0319926001600160801b0316908316841760801c613d6b565b60801b16179055601580548480821115610c52576107d291612f1c565b905b5560018060a01b0360095416906020600e54606460405180958193638eb22cdd60e01b835260048301528a6024830152600160448301525afa9182156109fa57600092610c1c575b5061083261083992933690602081359101612dd3565b9084613de1565b50818110610bd75781811115610bc35761086561085d61086d93620186a093612f1c565b965b87612ec5565b048095612f1c565b9184610a3f575b600d5460095460405163095ea7b360e01b81526001600160a01b039182166004820152600060248201819052909260209284926044928492165af180156109fa57610a06575b50600d546001600160a01b0316803b156102e557604051632770a7eb60e21b815230600482015260248101869052906000908290604490829084905af180156109fa576109cd575b506040519061091082612d05565b60018252602036818401378151156109b7576001600160a01b03166020820190815260405191518291906000905b808210610995575050508190039020604080519384526020840194909452928201526104fc9392919033907f85b91d472e69b2cfe848ed50eb5d8582ae96c22057b6e46250255dd6f6c3519290606090a4906104f2565b82516001600160a01b031684526020938401939092019160019091019061093e565b634e487b7160e01b600052603260045260246000fd5b6001600160401b0381116109e45760405238610902565b634e487b7160e01b600052604160045260246000fd5b6040513d6000823e3d90fd5b6020813d602011610a37575b81610a1f60209383612d57565b810103126102e557610a30906132ae565b50386108ba565b3d9150610a12565b600d5460095460405163095ea7b360e01b81526001600160a01b039182166004820152600060248201819052909260209284926044928492165af180156109fa57610b8a575b50600d5460095460405163095ea7b360e01b81526001600160a01b03918216600482015260001960248201529160209183916044918391600091165af180156109fa57610b51575b506000604060018060a01b036009541660a4600e5483519485938492634d4d7cbd60e11b845260048401523060248401523360448401528160648401528b60848401525af180156109fa57610b23575b50610874565b610b449060403d604011610b4a575b610b3c8183612d57565b810190613dcb565b50610b1d565b503d610b32565b6020813d602011610b82575b81610b6a60209383612d57565b810103126102e557610b7b906132ae565b5038610acd565b3d9150610b5d565b6020813d602011610bbb575b81610ba360209383612d57565b810103126102e557610bb4906132ae565b5038610a85565b3d9150610b96565b505061086d620186a061086560009661085f565b60405162461bcd60e51b815260206004820152601f60248201527f42696742616e673a20617373657420616d6f756e74206e6f742076616c6964006044820152606490fd5b91506020823d602011610c4a575b81610c3760209383612d57565b810103126102e55790519061083261081c565b3d9150610c2a565b50506000906107d4565b60405162461bcd60e51b815260206004820152600b60248201526a10908e881cdbdb1d995b9d60aa1b6044820152606490fd5b60405162461bcd60e51b815260206004820152601960248201527810908e881b9bdd08195b9bdd59da0818dbdb1b185d195c985b603a1b6044820152606490fd5b9093506020813d602011610cfc575b81610cec60209383612d57565b810103126102e55751923861072b565b3d9150610cdf565b51602091610d3091610d1f906001600160801b031685612ec5565b90516001600160801b031690612eee565b966106d0565b610692908092612f1c565b9050610665565b60405162461bcd60e51b8152602060048201526011602482015270109a59d0985b99ce88189859081919589d607a1b6044820152606490fd5b90508096610653565b508361062d565b90620186a0610da3610daa9383612ec5565b0490612f29565b38610623565b9150506020813d602011610dde575b81610dcc60209383612d57565b810103126102e557518c6105f36105e2565b3d9150610dbf565b60405162461bcd60e51b815260206004820152601f60248201527f42696742616e673a2065786368616e676552617465206e6f742076616c6964006044820152606490fd5b60405162461bcd60e51b815260206004820152602260248201527f42423a2063757272656e742065786368616e676552617465206e6f742076616c6044820152611a5960f21b6064820152608490fd5b6011549450610469565b905015158a61045e565b9050610eb491955060403d604011610ebc575b610eac8183612d57565b8101906132bb565b94908a610456565b503d610ea2565b60405162461bcd60e51b8152602060048201526013602482015272084847440d8cadccee8d040dad2e6dac2e8c6d606b1b6044820152606490fd5b60405162461bcd60e51b815260206004820152601860248201527742423a206e6f7468696e6720746f206c697175696461746560401b6044820152606490fd5b60405162461bcd60e51b815260206004820152600e60248201526d13585c9ad95d0e881c185d5cd95960921b6044820152606490fd5b346102e55760003660031901126102e5576006546040516001600160a01b039091168152602090f35b346102e55760003660031901126102e5576020601d54604051908152f35b346102e55760003660031901126102e5576009546040516001600160a01b039091168152602090f35b346102e55760403660031901126102e557610ffd612be5565b611005612bfb565b9060018060a01b038091166000526002602052604060002091166000526020526020604060002054604051908152f35b346102e55760003660031901126102e557600b546040516001600160a01b039091168152602090f35b346102e55761106c36612c4d565b8394969793929192421161119e5761114a926111429260018060a01b0395868b16978860005260046020526040600020918254926110a9846138c3565b90556040519160208301937f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e2668552600060408501528b60608501528a8d1660808501528d60a085015260c084015281830152815261110681612d20565b519020611111613577565b9060405190602082019261190160f01b8452602283015260428201526042815261113a81612d3c565b51902061383e565b91909161373f565b1603611159576102e392613920565b60405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152606490fd5b60405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b346102e55760003660031901126102e5576008546040516001600160a01b039091168152602090f35b346102e55760003660031901126102e5576020611227613977565b604051908152f35b346102e55760003660031901126102e5576020602954604051908152f35b346102e55760003660031901126102e5576020601e54604051908152f35b346102e55760003660031901126102e557602060ff602654166040519015158152f35b346102e55760003660031901126102e55760406025548151906001600160401b03908181168352831c166020820152f35b346102e55760003660031901126102e5576020601a54604051908152f35b346102e55760403660031901126102e5576112f6612be5565b6024359081158015906113b2575b61133a575b6040519182526001600160a01b031690339060008051602061426983398151915290602090a3602060405160018152f35b336000526001602052604060002054611355838210156136a1565b6001600160a01b038216908333839003611372575b505050611309565b611386916113818415156136e6565b612f1c565b33600052600160205260406000205560005260406000206113a8838254612f29565b905582808361136a565b50336001600160a01b03821614611304565b346102e55760803660031901126102e5576113dd612be5565b6113e5612bfb565b604435916001600160a01b03919082841684036102e5576064356001600160401b0381116102e55761141b903690600401612c20565b94909161142d85600554163314612e3a565b600f546040805163d6d7d52560e01b8152918290881681600081611453600482016132d8565b03925af19081156109fa5760009060009261185f575b508181611855575b501561184c57806011555b156117f757849061148b613c2e565b169182600052602095601787526114b1604060002054620186a0610da360215483612ec5565b8787600954169160646114cd6106ed600c549360115490612ec5565b916040519485938492638eb22cdd60e01b845260048401526024830152600060448301525afa9081156109fa576000916117ca575b50846000526018885260406000205411611787578585600061166f61167d611634898d9961162e869a879a60188e868b5281815260408b2054966115fb611547613b5b565b828e52601784526115d66115ad8f60409020549260008760405161156a81612d05565b82815201528681019360018060801b03928382818094868a838151161560001461173a575050816115a0915b1682885116613d6b565b1685521682875116613d6b565b169384905251601480546001600160801b0319166001600160801b039390921692909216179055565b601480546001600160801b031660809290921b6001600160801b031916919091179055565b808c52601782528b604081205582825261161b60408d2054601554612f1c565b6015558b52528860408120553691612dd3565b91613de1565b600d5460405163a9059cbb60e01b8c82019081526001600160a01b039098166024820152604481019290925290961695928391506064820190565b03601f198101835282612d57565b51925af13d15611733573d61169181612db8565b9061169f6040519283612d57565b81523d60008483013e5b816116fb575b50156116b757005b6064906040519062461bcd60e51b82526004820152601c60248201527f426f72696e6745524332303a205472616e73666572206661696c6564000000006044820152fd5b80915051828115918215611714575b50509050826116af565b83809293500103126102e5578161172b91016132ae565b80828461170a565b60606116a9565b6115a09261177361176986611760611756828098511686612ec5565b8287511690612eee565b94511684612ec5565b848c511690612eee565b101561159657611782906138c3565b611596565b6064876040519062461bcd60e51b825280600483015260248201527f42696742616e673a2043616e6e6f7420666f726365206c6971756964617465646044820152fd5b90508781813d83116117f0575b6117e18183612d57565b810103126102e5575188611502565b503d6117d7565b60405162461bcd60e51b815260206004820152602760248201527f42696742616e673a2063757272656e742065786368616e676552617465206e6f6044820152661d081d985b1a5960ca1b6064820152608490fd5b5060115461147c565b9050151588611471565b905061187a915060403d604011610ebc57610eac8183612d57565b9088611469565b346102e55760403660031901126102e5576118c66118a96118a0612be5565b60243590613165565b604080519384526020840192909252908201529081906060820190565b0390f35b346102e55760403660031901126102e55760206112276118e8612be5565b6024359061346d565b346102e55760003660031901126102e55760208054604051908152f35b346102e55760403660031901126102e5576004356001600160401b0381116102e557366023820112156102e55761194f903690602481600401359101612dd3565b9060243561ffff81168091036102e5576101009182848051810103126102e557602061197c8186016132ae565b916119896040870161372b565b906119966060880161372b565b9660808101519660a08201519260c08301519160ff831683036102e557838201519301516001600160a01b039586169a861698909490428210611b19579289888d989794611a909794611142978f8e600014611af2577f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e266955b8d60005260048652604060002092835493611a29856138c3565b905560405196870197885260408701528d6060870152608086015260a085015260c0840152818301528152611a5d81612d20565b519020611a68613577565b90604051908a82019261190160f01b8452602283015260428201526042815261113a81612d3c565b1603611aae575015611aa5576102e392613920565b6102e3926138d2565b6064906040519062461bcd60e51b82526004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152fd5b7f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d695611a0f565b60405162461bcd60e51b815260048101899052601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b346102e55760003660031901126102e5576005546040516001600160a01b039091168152602090f35b346102e55760003660031901126102e5576020601b54604051908152f35b346102e55760203660031901126102e5576001600160a01b03611bc6612be5565b1660005260246020526020604060002054604051908152f35b346102e55760003660031901126102e557601454604080516001600160801b038316815260809290921c602083015290f35b346102e55760403660031901126102e557611c37611c2d612be5565b60243590336138d2565b602060405160018152f35b346102e55760203660031901126102e5576001600160a01b03611c63612be5565b1660005260046020526020604060002054604051908152f35b346102e55760003660031901126102e557600f546040516001600160a01b039091168152602090f35b346102e55760003660031901126102e557604051600090601054611cc881612ccb565b808352600191808316908115611d5f5750600114611d05575b6118c683611cf181870382612d57565b604051918291602083526020830190612d78565b6010600090815260209450917f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae6725b828410611d4c57505050810190910190611cf181611ce1565b8054858501870152928501928101611d33565b6118c69550611cf193506020915091849260ff191682840152151560051b8201019350611ce1565b346102e55760203660031901126102e55760043560098110156102e55760ff611db1602092612c9c565b54166040519015158152f35b346102e55760203660031901126102e5576001600160a01b03611dde612be5565b1660005260016020526020604060002054604051908152f35b346102e55760003660031901126102e557600a546040516001600160a01b039091168152602090f35b346102e55760003660031901126102e5576020602754604051908152f35b346102e55760003660031901126102e5576020601c54604051908152f35b346102e55760003660031901126102e5576020602154604051908152f35b346102e55760003660031901126102e5576006546001600160a01b039081811633819003611ee457806005549384167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a36001600160a01b03199283161760055516600655005b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b346102e55760203660031901126102e5576001600160a01b03611f49612be5565b1660005260176020526020604060002054604051908152f35b346102e55760003660031901126102e5576020601554604051908152f35b346102e55760003660031901126102e5576020600e54604051908152f35b346102e55760003660031901126102e5576020601654604051908152f35b346102e55760603660031901126102e557602061122760443560243560043561309e565b346102e55760003660031901126102e5576020601154604051908152f35b346102e55760003660031901126102e557600d546040516001600160a01b039091168152602090f35b346102e55760003660031901126102e5576020601254604051908152f35b346102e55760003660031901126102e5576020611227613577565b346102e55760003660031901126102e5576020601954604051908152f35b346102e55760003660031901126102e5576014546040516001600160801b039091168152602090f35b346102e55760003660031901126102e5576020601354604051908152f35b346102e55760603660031901126102e5576120de612be5565b6120e6612bfb565b6044359081612123575b6040519182526001600160a01b0390811692169060008051602061426983398151915290602090a3602060405160018152f35b60018060a01b0380841680600052602060018152846040600020549361214b828610156136a1565b851693848403612160575b50505050506120f0565b8360005260028352604060002033600052835260406000205460001981036121d4575b5084926121ab60008051602061426983398151915297959360019361138160209915156136e6565b926000525260406000205560005260406000206121c9858254612f29565b905591858481612156565b9091811061222957602094926121ab8860008051602061426983398151915298969461220282600196612f1c565b86600052600285526040600020336000528552604060002055935093959750509294612183565b60405162461bcd60e51b815260048101849052601860248201527745524332303a20616c6c6f77616e636520746f6f206c6f7760401b6044820152606490fd5b346102e55760003660031901126102e5576020602a54604051908152f35b346102e55761229536612c4d565b8394969793929192421161119e5761232f926111429260018060a01b0395868b16978860005260046020526040600020918254926122d2846138c3565b90556040519160208301937f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d68552600060408501528b60608501528a8d1660808501528d60a085015260c084015281830152815261110681612d20565b1603611159576102e3926138d2565b346102e55760203660031901126102e5576001600160a01b0361235f612be5565b1660005260186020526020604060002054604051908152f35b346102e55760003660031901126102e557602060405160008152f35b346102e55760403660031901126102e55760043560098110156102e5576123b9612c11565b6008549091906001600160a01b031633036124725760ff6123d982612c9c565b5416151591151591821461243857808260ff6123f761242694612c9c565b54161515827feeec81de25875ce1725479bb76f720a8defdb43dea041919ae37bb4aae9847c0600080a4612c9c565b9060ff80198354169116179055600080f35b60405162461bcd60e51b81526020600482015260126024820152714d61726b65743a2073616d6520737461746560701b6044820152606490fd5b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881d5b985d5d1a1bdc9a5e995960621b6044820152606490fd5b346102e5576101803660031901126102e5576001600160a01b03602435818116908190036102e5576001600160401b03916044358381116102e5576124f7903690600401612c20565b6064358084169392908490036102e55761251683600554163314612e3a565b60043595620186a09561252b87891115612e85565b6020978089547fc353b09af857951dccce61b43a5854fc45beceed36c50e5d4cc2e71858a8e0df600080a38855806128d4575b508261279a575b50505081612759575b505060843580612744575b5060a4358061272f575b5060c4358061271b575b5060e435806126fa575b5061010435806126d9575b5061012435806126a7575b50610144359081612635575b50506101643590816125c757005b601e5482106125d65750601f55005b6084906040519062461bcd60e51b82526004820152603260248201527f4d61726b65743a206c69717569646174696f6e436f6c6c61746572616c697a616044820152711d1a5bdb94985d19481d1bdbc81cdb585b1b60721b6064820152fd5b61264190821115612e85565b601f54811161265457601e5581806125b9565b60405162461bcd60e51b815260048101839052602560248201527f4d61726b65743a20636f6c6c61746572616c697a6174696f6e5261746520746f6044820152646f2062696760d81b6064820152608490fd5b806016547fae6e0ab3b95f0a53ff9660a390ccedcbbf1f2355dce974a9841af106fddcfaba600080a3601655826125ad565b6126e4828210612e85565b6126f1601b548211612e85565b601c55826125a2565b612705828210612e85565b612712601c548210612e85565b601b5582612597565b612726828210612e85565b601d558261258d565b61273b82821115612e85565b601a5582612583565b61275082821115612e85565b60195582612579565b816008549182167f5a62d22209e370e38eea92cfddcd228e656e6ec139243392a760a7769f5877fd600080a36001600160a01b03191617600855828061256e565b82116109e45781906127ad601054612ccb565b601f8111612887575b50600090601f831160011461281b57600092612810575b50508160011b916000199060031b1c1916176010555b7fa6f004921c944d4b8bf6e38462b00f36a58d62495d56b51f571ab78f732c9815600080a1848080612565565b0135905086806127cd565b909250601060005286600020906000935b88601f198516861061287157506001945083601f19811610612857575b505050811b016010556127e3565b0135600019600384901b60f8161c19169055868080612849565b828201358455948501946001909301920161282c565b909150601060005286600020601f840160051c81018885106128cd575b90601f8594930160051c01905b8181106128be57506127b6565b600081558493506001016128b1565b50806128a4565b600f80546001600160a01b0319169190911790557f0b2d6eb667d0522c3eb86e4288afecae6c11591ffd1345d4d12407e0598bca9b600080a18761255e565b346102e55760403660031901126102e557611c3761292f612be5565b6024359033613920565b346102e55760603660031901126102e557612952612be5565b61295a612c11565b6044359081151582036102e55760018060a01b0392839161298083600554163314612e3a565b15612a24571690811590811591612a1c575b50156129df57806005549283167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a36001600160a01b031991821617600555600680549091169055005b60405162461bcd60e51b81526020600482015260156024820152744f776e61626c653a207a65726f206164647265737360581b6044820152606490fd5b905083612992565b9150501660018060a01b03196006541617600655600080f35b346102e55760003660031901126102e557600f546040805163d6d7d52560e01b81529182906001600160a01b031681600081612a7b600482016132d8565b03925af180156109fa57600091600091612b78575b50908015612b1a578115612ade5781604092601155807f9f9192b5edb17356c524e08d9e025c8e2f6307e6ea52fb7968faa3081f51c3c8600080a25b42601355825191151582526020820152f35b60405162461bcd60e51b81526020600482015260146024820152734d61726b65743a20696e76616c6964207261746560601b6044820152606490fd5b9050612b2b60135460125490612f29565b4211612b3c57604090601154612acc565b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881c985d19481d1bdbc81bdb1960621b6044820152606490fd5b9050612b93915060403d604011610ebc57610eac8183612d57565b82612a90565b346102e55760403660031901126102e557602090612bb5612be5565b612bbd612bfb565b9060018060a01b03809116600052600384526040600020911660005282526040600020548152f35b600435906001600160a01b03821682036102e557565b602435906001600160a01b03821682036102e557565b6024359081151582036102e557565b9181601f840112156102e5578235916001600160401b0383116102e557602083818601950101116102e557565b60e09060031901126102e5576001600160a01b039060043582811681036102e5579160243590811681036102e55790604435906064359060843560ff811681036102e5579060a4359060c43590565b6009811015612cb5576000526007602052604060002090565b634e487b7160e01b600052602160045260246000fd5b90600182811c92168015612cfb575b6020831014612ce557565b634e487b7160e01b600052602260045260246000fd5b91607f1691612cda565b604081019081106001600160401b038211176109e457604052565b61010081019081106001600160401b038211176109e457604052565b608081019081106001600160401b038211176109e457604052565b90601f801991011681019081106001600160401b038211176109e457604052565b919082519283825260005b848110612da4575050826000602080949584010152601f8019910116010190565b602081830181015184830182015201612d83565b6001600160401b0381116109e457601f01601f191660200190565b929192612ddf82612db8565b91612ded6040519384612d57565b8294818452818301116102e5578281602093846000960137010152565b9181601f840112156102e5578235916001600160401b0383116102e5576020808501948460051b0101116102e557565b15612e4157565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b15612e8c57565b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881b9bdd081d985b1a59607a1b6044820152606490fd5b81810292918115918404141715612ed857565b634e487b7160e01b600052601160045260246000fd5b8115612ef8570490565b634e487b7160e01b600052601260045260246000fd5b604d8111612ed857600a0a90565b91908203918211612ed857565b91908201809211612ed857565b81810392916000138015828513169184121617612ed857565b906509184e72a00091828102928184051490151715612ed857565b90670de0b6b3a764000091828102928184051490151715612ed857565b8115612ef857600160ff1b8114600019831416612ed8570590565b601454612fdd91612fcc9190612fc2906001600160801b03831690612ec5565b9060801c90612eee565b91620186a0918291601f5490612ec5565b0480831061309657612fef9083612f1c565b601e54602154830190818411612ed857839161300a91612ec5565b0491828103906000809412818312811691831390151617613082579061303b61303561304093612f4f565b91612f6a565b612f87565b908082121561307b57600160ff1b82146130675703905b808211613062575090565b905090565b634e487b7160e01b81526011600452602490fd5b5090613057565b634e487b7160e01b83526011600452602483fd5b505050600090565b6014549192916130dd916130ce916130c491612fc2906001600160801b03831690612ec5565b93601f5490612ec5565b6130d783612f0e565b90612eee565b908183106130965761303b6130356131376130fb61313c9587612f1c565b9361313261312c613123601e5461311d61311486612f0e565b60215490612f29565b90612ec5565b6130d784612f0e565b91612f0e565b612f36565b612f4f565b600081121561315f57600160ff1b8114612ed85760000390808211613062575090565b90613057565b6001600160a01b039081166000818152601760209081526040822054929594939192909181156132a157613197613b9a565b906131a3861515613373565b6009541683600c54898752601882526064604088205491604051948593849263442c159960e01b8452600484015260248301528960448301525afa908115613296578591613263575b509285949261324360189361321e613257996105f361321560409a620186a06022540490612ec5565b601e5490612ec5565b815190936001600160801b0391869161323991841690612ec5565b9201511690612eee565b81811061325b57035b9783525220546133bf565b9091565b50508261324c565b90508381813d831161328f575b61327a8183612d57565b8101031261328b57516132576131ec565b8480fd5b503d613270565b6040513d87823e3d90fd5b5050509192505080918190565b519081151582036102e557565b91908260409103126102e55760206132d2836132ae565b92015190565b6020808252600091601054916132ed83612ccb565b92838284015260019081811690816000146133505750600114613312575b5050505090565b929350601060005280600020926000935b85851061333c575050506040925001013880808061330b565b805485850160400152938201938101613323565b925050506040935060ff929192191683830152151560051b01013880808061330b565b1561337a57565b60405162461bcd60e51b815260206004820152601e60248201527f4d61726b65743a2065786368616e676552617465206e6f742076616c696400006044820152606490fd5b6133ca821515613373565b602060018060a01b0360095416916064600c54604051948593849263442c159960e01b845260048401526024830152600060448301525afa9081156109fa57600091613437575b50906105f36134239260225490612ec5565b620186a0613433601e5483612ec5565b0491565b906020823d8211613465575b8161345060209383612d57565b810103126134625750516105f3613411565b80fd5b3d9150613443565b6001600160a01b03166000818152601860205260408120549092613490916133bf565b918352601760205260408320548015613571578115613571578181106135715782811015613567576014546134d991839161138191612fc2906001600160801b03831690612ec5565b90620186a09283830292808404851490151715613553576134fe92916130d791612f1c565b91601b5491601c54936135118585612f36565b80820291848212600160ff1b82141661355357818305149015171561308257058184820194851291129080158216911516176130675750808212613062575090565b634e487b7160e01b85526011600452602485fd5b50505050601b5490565b50505090565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03161480613678575b156135d2577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f000000000000000000000000000000000000000000000000000000000000000082527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a0815260c081018181106001600160401b038211176109e45760405251902090565b507f000000000000000000000000000000000000000000000000000000000000000046146135a9565b156136a857565b60405162461bcd60e51b815260206004820152601660248201527545524332303a2062616c616e636520746f6f206c6f7760501b6044820152606490fd5b156136ed57565b60405162461bcd60e51b815260206004820152601660248201527545524332303a206e6f207a65726f206164647265737360501b6044820152606490fd5b51906001600160a01b03821682036102e557565b6005811015612cb557806137505750565b600181036137985760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b6044820152606490fd5b600281036137e55760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606490fd5b6003146137ee57565b60405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608490fd5b9291906fa2a8918ca85bafe22016d0b997e4df60600160ff1b0383116138b75791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa156138aa5781516001600160a01b038116156138a4579190565b50600190565b50604051903d90823e3d90fd5b50505050600090600390565b6000198114612ed85760010190565b7fe50de2333c10a9502fcb1d8ae13a51bbf423153dfc63c2b8997665b32154afc360018060a01b038092169160009083825260036020526040822094169384825260205284604082205580a4565b909160207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259160018060a01b03809416938460005260028352604060002095169485600052825280604060002055604051908152a3565b60ff60265416613af5576014546001600160801b0316908115613aee57600a54604051631848f2bf60e31b8152602093916001600160a01b03919085908290600490829086165afa80156109fa578591600091613ab1575b50600460405180948193631a674cc560e11b8352165afa9384156109fa57600094613a7e575b5050613a119192670de0b6b3a764000092839160295490612ec5565b049081811015613a7557613a28602a548092612f1c565b83810290808204851490151715612ed8576130d7613a4992613a6994612f1c565b60275492613a6360285492613a5e8487612f1c565b612ec5565b04612f29565b90808211613062575090565b50505060275490565b81813d8311613aaa575b613a928183612d57565b81010312613aa657519250613a11386139f5565b8380fd5b503d613a88565b909181813d8311613ae7575b613ac78183612d57565b81010312613ae3575190828216820361346257508490386139cf565b5080fd5b503d613abd565b6028549150565b600a5460405163e6abad4960e01b815290602090829060049082906001600160a01b03165afa9081156109fa57600091613b2d575090565b906020823d8211613b53575b81613b4660209383612d57565b8101031261346257505190565b3d9150613b39565b60405190613b6882612d05565b6014546001600160801b038116835260801c6020830152565b6001600160801b039182169082160191908211612ed857565b60006020604051613baa81612d05565b82815201526001600160401b0390613bc98260255460401c1642612f1c565b918215613c2057613c1b613a5e91670de0b6b3a7640000613c10613beb613b5b565b9660018060801b03958694858a5116906301e13380613c08613977565b041690612ec5565b041682855116613b81565b168252565b509050613c2b613b5b565b90565b604051613c3a81612d05565b602554906001600160401b038281809416835260401c1691613c63602083019380855242612f1c565b918215613d6557816301e13380613c78613977565b041681528142168452613d16613c8c613b5b565b936020670de0b6b3a7640000613cb460018060801b0393613a5e858a51168989511690612ec5565b0495613cee83613cc9818a1682855116613b81565b16808352601480546001600160801b0319166001600160801b03909216919091179055565b0151601480546001600160801b03169290911660801b6001600160801b031916919091179055565b51169182602554916001600160401b0360401b905160401b169160018060801b03191617176025557f7484db546dcd57af0104c73c8a6968dfbaf5767f047cee0dadd0499ad7df81a0600080a3565b50505050565b6001600160801b039182169082160391908211612ed857565b15613d8b57565b60405162461bcd60e51b8152602060048201526018602482015277084d2ce84c2dcce7440d8cadccee8d040dad2e6dac2e8c6d60431b6044820152606490fd5b91908260409103126102e5576020825192015190565b91909160018060a01b0392836009541690600c5460409485519063442c159960e01b82526004928084840152602496878401526000958660448501526020958685606481855afa94851561414157918b8b928a948598614103575b509060a4911694835194859384926311a5cc7760e31b84528b8401528d30908401528760448401528960648401528160848401525af180156140f9576140dd575b5088600d5416908851926370a0823160e01b94858552308786015287858b81875afa9485156140d35789888d948f948c97958f95859b614087575b5090613ef99291600b54169751998a9889978896635cd3dc1560e01b885233908801528601526044850152606484015260a0608484015260a4830190612d78565b03925af1801561407d57614045575b508388600d54169287895180958193825230888301525afa801561403b57859061400a575b613f379250612f1c565b958615613fbd5790606483926009541691600e54928989519889958694638eb22cdd60e01b86528501528301528660448301525afa938415613fb257508193613f81575b50505091565b9091809350813d8311613fab575b613f998183612d57565b81010312613462575051388080613f7b565b503d613f8f565b51913d9150823e3d90fd5b508360849286519262461bcd60e51b8452830152808201527f42696742616e673a206f6e436f6c6c61746572616c52656365697665722066616044820152631a5b195960e21b6064820152fd5b50908381813d8311614034575b6140218183612d57565b8101031261328b5790613f379151613f2d565b503d614017565b87513d87823e3d90fd5b8481813d8311614076575b61405a8183612d57565b810103126140725761406b906132ae565b5038613f08565b8580fd5b503d614050565b88513d88823e3d90fd5b96999a50509550959250505081813d83116140cc575b6140a78183612d57565b810103126140c85792898988613ef98f9897968f968d98519a909192613eb8565b8880fd5b503d61409d565b8b513d8b823e3d90fd5b6140f390893d8b11610b4a57610b3c8183612d57565b50613e7d565b89513d89823e3d90fd5b935096505091508681813d831161413a575b61411f8183612d57565b8101031261413657519387918a918c9060a4613e3c565b8780fd5b503d614115565b8a513d8a823e3d90fd5b91908110156109b75760051b0190565b919060018060a01b0380600094168452602060178152604085205490811561425e5760188152604086205480156142575781614195613b5b565b9460095416916064600c54604051948593849263442c159960e01b8452600484015260248301528b60448301525afa96871561424b578097614215575b50506132396141fa6141f1614210969798620186a06022540490612ec5565b601f5490612ec5565b95613a5e60018060801b03948587511690612ec5565b111590565b9096508187813d8311614244575b61422d8183612d57565b8101031261346257509451946132396141fa6141d2565b503d614223565b604051903d90823e3d90fd5b5050505050565b506001945050505056feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220523d90d7b87f7ccc4f9c69d66891d95c682aff7eb563a096c491db5ad22924cc64736f6c63430008120033", - "deployedBytecode": "0x608080604052600436101561001357600080fd5b60e0600035811c918262a02a2014612b995750816302ce728f14612a3d578163078dfbe714612939578163095ea7b3146129135781630996efb7146124ae5781630c4e84f01461239457816318160ddd146123785781631c9e379b1461233e5781631da8bf10146122875781631fb8f81a1461226957816323b872dd146120c5578163331960ff146120a757816334ce998a1461207e57816334d441d0146120605781633644e5151461204557816337b6b7b91461202757816338d52e0f14611ffe5781633ba0b9a914611fe05781633f741adb14611fbc57816340626d8b14611f9e57816344de240a14611f80578163473e3ce714611f6257816348e4163e14611f285781634e71e0c814611e7a578163529898f214611e5c5781635793546214611e3e5781636b19ad1614611e205781636c3d8b8f14611df757816370a0823114611dbd5781637277854714611d8757816374645ff314611ca55781637dc0d1d014611c7c5781637ecebe0014611c425781637fa0b84e14611c115781638285ef4014611bdf57816387b2793714611ba55781638c5d0ed314611b875781638da5cb5b14611b5e578163910dd7c81461190e578163959916dc146118f157816399a97028146118ca5781639e15e89f14611881578163a28e6b82146113c4578163a9059cbb146112dd578163b0e21e8a146112bf578163b27c0e741461128e578163b7113f191461126b578163bb4cfe3b1461124d578163bde39c5d1461122f578163c1ad5c8d1461120c578163ce8849ed146111e3578163d505accf1461105e57508063d8dfeb4514611035578063dd62ed3e14610fe4578063de40657714610fbb578063e0996cb614610f9d578063e30c397814610f74578063e5644d8b14610344578063ea64dd5614610326578063eec0f42e14610308578063f791395d146102ea5763f8ba4cff146102ca57600080fd5b346102e55760003660031901126102e5576102e3613c2e565b005b600080fd5b346102e55760003660031901126102e5576020602854604051908152f35b346102e55760003660031901126102e5576020600c54604051908152f35b346102e55760003660031901126102e5576020601f54604051908152f35b346102e55760803660031901126102e5576004356001600160401b0381116102e557610374903690600401612e0a565b906024356001600160401b0381116102e557610394903690600401612e0a565b6044356001600160401b0381116102e5576103b3903690600401612e0a565b9290916064356001600160401b0381116102e5576103d5903690600401612e0a565b9490916004600052600760205260ff60406000205416610f3e578715610efe57808803610ec357610407828914613d84565b610412828714613d84565b600f546040805163d6d7d52560e01b8152959186906001600160a01b031681600081610440600482016132d8565b03925af19485156109fa57600090600096610e8f575b508581610e85575b5015610e7b57846011555b8415610e2b57610477613c2e565b60009860005b8181106104c6578a1561048c57005b60405162461bcd60e51b815260206004820152601260248201527110908e881b9bc81d5cd95c9cc8199bdd5b9960721b6044820152606490fd5b6104d181838c61414b565b356001600160a01b03811681036102e5576104ec888261415b565b15610501575b506104fc906138c3565b61047d565b9a61050b906138c3565b9a61051782868661414b565b359061052483888c61414b565b35906001600160a01b03821682036102e5578b8410156109b7578360051b890135601e198a3603018112156102e5578901926001600160401b038435116102e5578335360360208501136102e55761057c8b8361346d565b938b15610de65760018060a01b03600954166020600c5460018060a01b03861660005260188252606460406000205491604051948593849263442c159960e01b845260048401526024830152600060448301525afa9081156109fa578d90600092610db0575b506105f36105f89260225490612ec5565b612eee565b9360018060a01b038416600052601760205261061985604060002054612fa2565b80601d5480610d91575b5080851115610d8a575b6001600160a01b0386166000908152601760205260409020549081811115610d81575080965b1115610d48578d9381811115610d4157505b6001600160a01b0385166000908152601760205260409020549081811115610d3657506106928180612f1c565b6001600160a01b0386166000908152601760205260409020556106b3613b5b565b6020810180519091906001600160801b0316610d04575050602081965b60646106f66106ed60018060a01b036009541698600c5494612ec5565b60225490612eee565b916040519788938492638eb22cdd60e01b845260048401526024830152600060448301525afa9384156109fa57600094610cd0575b506001600160a01b0385166000908152601860205260409020548411610c8f5760018060a01b0385166000526018602052604060002061076c858254612f1c565b90558515610c5c576014805490916107b56001600160801b036107938a8216828616613d6b565b16926001600160801b0319926001600160801b0316908316841760801c613d6b565b60801b16179055601580548480821115610c52576107d291612f1c565b905b5560018060a01b0360095416906020600e54606460405180958193638eb22cdd60e01b835260048301528a6024830152600160448301525afa9182156109fa57600092610c1c575b5061083261083992933690602081359101612dd3565b9084613de1565b50818110610bd75781811115610bc35761086561085d61086d93620186a093612f1c565b965b87612ec5565b048095612f1c565b9184610a3f575b600d5460095460405163095ea7b360e01b81526001600160a01b039182166004820152600060248201819052909260209284926044928492165af180156109fa57610a06575b50600d546001600160a01b0316803b156102e557604051632770a7eb60e21b815230600482015260248101869052906000908290604490829084905af180156109fa576109cd575b506040519061091082612d05565b60018252602036818401378151156109b7576001600160a01b03166020820190815260405191518291906000905b808210610995575050508190039020604080519384526020840194909452928201526104fc9392919033907f85b91d472e69b2cfe848ed50eb5d8582ae96c22057b6e46250255dd6f6c3519290606090a4906104f2565b82516001600160a01b031684526020938401939092019160019091019061093e565b634e487b7160e01b600052603260045260246000fd5b6001600160401b0381116109e45760405238610902565b634e487b7160e01b600052604160045260246000fd5b6040513d6000823e3d90fd5b6020813d602011610a37575b81610a1f60209383612d57565b810103126102e557610a30906132ae565b50386108ba565b3d9150610a12565b600d5460095460405163095ea7b360e01b81526001600160a01b039182166004820152600060248201819052909260209284926044928492165af180156109fa57610b8a575b50600d5460095460405163095ea7b360e01b81526001600160a01b03918216600482015260001960248201529160209183916044918391600091165af180156109fa57610b51575b506000604060018060a01b036009541660a4600e5483519485938492634d4d7cbd60e11b845260048401523060248401523360448401528160648401528b60848401525af180156109fa57610b23575b50610874565b610b449060403d604011610b4a575b610b3c8183612d57565b810190613dcb565b50610b1d565b503d610b32565b6020813d602011610b82575b81610b6a60209383612d57565b810103126102e557610b7b906132ae565b5038610acd565b3d9150610b5d565b6020813d602011610bbb575b81610ba360209383612d57565b810103126102e557610bb4906132ae565b5038610a85565b3d9150610b96565b505061086d620186a061086560009661085f565b60405162461bcd60e51b815260206004820152601f60248201527f42696742616e673a20617373657420616d6f756e74206e6f742076616c6964006044820152606490fd5b91506020823d602011610c4a575b81610c3760209383612d57565b810103126102e55790519061083261081c565b3d9150610c2a565b50506000906107d4565b60405162461bcd60e51b815260206004820152600b60248201526a10908e881cdbdb1d995b9d60aa1b6044820152606490fd5b60405162461bcd60e51b815260206004820152601960248201527810908e881b9bdd08195b9bdd59da0818dbdb1b185d195c985b603a1b6044820152606490fd5b9093506020813d602011610cfc575b81610cec60209383612d57565b810103126102e55751923861072b565b3d9150610cdf565b51602091610d3091610d1f906001600160801b031685612ec5565b90516001600160801b031690612eee565b966106d0565b610692908092612f1c565b9050610665565b60405162461bcd60e51b8152602060048201526011602482015270109a59d0985b99ce88189859081919589d607a1b6044820152606490fd5b90508096610653565b508361062d565b90620186a0610da3610daa9383612ec5565b0490612f29565b38610623565b9150506020813d602011610dde575b81610dcc60209383612d57565b810103126102e557518c6105f36105e2565b3d9150610dbf565b60405162461bcd60e51b815260206004820152601f60248201527f42696742616e673a2065786368616e676552617465206e6f742076616c6964006044820152606490fd5b60405162461bcd60e51b815260206004820152602260248201527f42423a2063757272656e742065786368616e676552617465206e6f742076616c6044820152611a5960f21b6064820152608490fd5b6011549450610469565b905015158a61045e565b9050610eb491955060403d604011610ebc575b610eac8183612d57565b8101906132bb565b94908a610456565b503d610ea2565b60405162461bcd60e51b8152602060048201526013602482015272084847440d8cadccee8d040dad2e6dac2e8c6d606b1b6044820152606490fd5b60405162461bcd60e51b815260206004820152601860248201527742423a206e6f7468696e6720746f206c697175696461746560401b6044820152606490fd5b60405162461bcd60e51b815260206004820152600e60248201526d13585c9ad95d0e881c185d5cd95960921b6044820152606490fd5b346102e55760003660031901126102e5576006546040516001600160a01b039091168152602090f35b346102e55760003660031901126102e5576020601d54604051908152f35b346102e55760003660031901126102e5576009546040516001600160a01b039091168152602090f35b346102e55760403660031901126102e557610ffd612be5565b611005612bfb565b9060018060a01b038091166000526002602052604060002091166000526020526020604060002054604051908152f35b346102e55760003660031901126102e557600b546040516001600160a01b039091168152602090f35b346102e55761106c36612c4d565b8394969793929192421161119e5761114a926111429260018060a01b0395868b16978860005260046020526040600020918254926110a9846138c3565b90556040519160208301937f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e2668552600060408501528b60608501528a8d1660808501528d60a085015260c084015281830152815261110681612d20565b519020611111613577565b9060405190602082019261190160f01b8452602283015260428201526042815261113a81612d3c565b51902061383e565b91909161373f565b1603611159576102e392613920565b60405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152606490fd5b60405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b346102e55760003660031901126102e5576008546040516001600160a01b039091168152602090f35b346102e55760003660031901126102e5576020611227613977565b604051908152f35b346102e55760003660031901126102e5576020602954604051908152f35b346102e55760003660031901126102e5576020601e54604051908152f35b346102e55760003660031901126102e557602060ff602654166040519015158152f35b346102e55760003660031901126102e55760406025548151906001600160401b03908181168352831c166020820152f35b346102e55760003660031901126102e5576020601a54604051908152f35b346102e55760403660031901126102e5576112f6612be5565b6024359081158015906113b2575b61133a575b6040519182526001600160a01b031690339060008051602061426983398151915290602090a3602060405160018152f35b336000526001602052604060002054611355838210156136a1565b6001600160a01b038216908333839003611372575b505050611309565b611386916113818415156136e6565b612f1c565b33600052600160205260406000205560005260406000206113a8838254612f29565b905582808361136a565b50336001600160a01b03821614611304565b346102e55760803660031901126102e5576113dd612be5565b6113e5612bfb565b604435916001600160a01b03919082841684036102e5576064356001600160401b0381116102e55761141b903690600401612c20565b94909161142d85600554163314612e3a565b600f546040805163d6d7d52560e01b8152918290881681600081611453600482016132d8565b03925af19081156109fa5760009060009261185f575b508181611855575b501561184c57806011555b156117f757849061148b613c2e565b169182600052602095601787526114b1604060002054620186a0610da360215483612ec5565b8787600954169160646114cd6106ed600c549360115490612ec5565b916040519485938492638eb22cdd60e01b845260048401526024830152600060448301525afa9081156109fa576000916117ca575b50846000526018885260406000205411611787578585600061166f61167d611634898d9961162e869a879a60188e868b5281815260408b2054966115fb611547613b5b565b828e52601784526115d66115ad8f60409020549260008760405161156a81612d05565b82815201528681019360018060801b03928382818094868a838151161560001461173a575050816115a0915b1682885116613d6b565b1685521682875116613d6b565b169384905251601480546001600160801b0319166001600160801b039390921692909216179055565b601480546001600160801b031660809290921b6001600160801b031916919091179055565b808c52601782528b604081205582825261161b60408d2054601554612f1c565b6015558b52528860408120553691612dd3565b91613de1565b600d5460405163a9059cbb60e01b8c82019081526001600160a01b039098166024820152604481019290925290961695928391506064820190565b03601f198101835282612d57565b51925af13d15611733573d61169181612db8565b9061169f6040519283612d57565b81523d60008483013e5b816116fb575b50156116b757005b6064906040519062461bcd60e51b82526004820152601c60248201527f426f72696e6745524332303a205472616e73666572206661696c6564000000006044820152fd5b80915051828115918215611714575b50509050826116af565b83809293500103126102e5578161172b91016132ae565b80828461170a565b60606116a9565b6115a09261177361176986611760611756828098511686612ec5565b8287511690612eee565b94511684612ec5565b848c511690612eee565b101561159657611782906138c3565b611596565b6064876040519062461bcd60e51b825280600483015260248201527f42696742616e673a2043616e6e6f7420666f726365206c6971756964617465646044820152fd5b90508781813d83116117f0575b6117e18183612d57565b810103126102e5575188611502565b503d6117d7565b60405162461bcd60e51b815260206004820152602760248201527f42696742616e673a2063757272656e742065786368616e676552617465206e6f6044820152661d081d985b1a5960ca1b6064820152608490fd5b5060115461147c565b9050151588611471565b905061187a915060403d604011610ebc57610eac8183612d57565b9088611469565b346102e55760403660031901126102e5576118c66118a96118a0612be5565b60243590613165565b604080519384526020840192909252908201529081906060820190565b0390f35b346102e55760403660031901126102e55760206112276118e8612be5565b6024359061346d565b346102e55760003660031901126102e55760208054604051908152f35b346102e55760403660031901126102e5576004356001600160401b0381116102e557366023820112156102e55761194f903690602481600401359101612dd3565b9060243561ffff81168091036102e5576101009182848051810103126102e557602061197c8186016132ae565b916119896040870161372b565b906119966060880161372b565b9660808101519660a08201519260c08301519160ff831683036102e557838201519301516001600160a01b039586169a861698909490428210611b19579289888d989794611a909794611142978f8e600014611af2577f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e266955b8d60005260048652604060002092835493611a29856138c3565b905560405196870197885260408701528d6060870152608086015260a085015260c0840152818301528152611a5d81612d20565b519020611a68613577565b90604051908a82019261190160f01b8452602283015260428201526042815261113a81612d3c565b1603611aae575015611aa5576102e392613920565b6102e3926138d2565b6064906040519062461bcd60e51b82526004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152fd5b7f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d695611a0f565b60405162461bcd60e51b815260048101899052601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b346102e55760003660031901126102e5576005546040516001600160a01b039091168152602090f35b346102e55760003660031901126102e5576020601b54604051908152f35b346102e55760203660031901126102e5576001600160a01b03611bc6612be5565b1660005260246020526020604060002054604051908152f35b346102e55760003660031901126102e557601454604080516001600160801b038316815260809290921c602083015290f35b346102e55760403660031901126102e557611c37611c2d612be5565b60243590336138d2565b602060405160018152f35b346102e55760203660031901126102e5576001600160a01b03611c63612be5565b1660005260046020526020604060002054604051908152f35b346102e55760003660031901126102e557600f546040516001600160a01b039091168152602090f35b346102e55760003660031901126102e557604051600090601054611cc881612ccb565b808352600191808316908115611d5f5750600114611d05575b6118c683611cf181870382612d57565b604051918291602083526020830190612d78565b6010600090815260209450917f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae6725b828410611d4c57505050810190910190611cf181611ce1565b8054858501870152928501928101611d33565b6118c69550611cf193506020915091849260ff191682840152151560051b8201019350611ce1565b346102e55760203660031901126102e55760043560098110156102e55760ff611db1602092612c9c565b54166040519015158152f35b346102e55760203660031901126102e5576001600160a01b03611dde612be5565b1660005260016020526020604060002054604051908152f35b346102e55760003660031901126102e557600a546040516001600160a01b039091168152602090f35b346102e55760003660031901126102e5576020602754604051908152f35b346102e55760003660031901126102e5576020601c54604051908152f35b346102e55760003660031901126102e5576020602154604051908152f35b346102e55760003660031901126102e5576006546001600160a01b039081811633819003611ee457806005549384167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a36001600160a01b03199283161760055516600655005b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b346102e55760203660031901126102e5576001600160a01b03611f49612be5565b1660005260176020526020604060002054604051908152f35b346102e55760003660031901126102e5576020601554604051908152f35b346102e55760003660031901126102e5576020600e54604051908152f35b346102e55760003660031901126102e5576020601654604051908152f35b346102e55760603660031901126102e557602061122760443560243560043561309e565b346102e55760003660031901126102e5576020601154604051908152f35b346102e55760003660031901126102e557600d546040516001600160a01b039091168152602090f35b346102e55760003660031901126102e5576020601254604051908152f35b346102e55760003660031901126102e5576020611227613577565b346102e55760003660031901126102e5576020601954604051908152f35b346102e55760003660031901126102e5576014546040516001600160801b039091168152602090f35b346102e55760003660031901126102e5576020601354604051908152f35b346102e55760603660031901126102e5576120de612be5565b6120e6612bfb565b6044359081612123575b6040519182526001600160a01b0390811692169060008051602061426983398151915290602090a3602060405160018152f35b60018060a01b0380841680600052602060018152846040600020549361214b828610156136a1565b851693848403612160575b50505050506120f0565b8360005260028352604060002033600052835260406000205460001981036121d4575b5084926121ab60008051602061426983398151915297959360019361138160209915156136e6565b926000525260406000205560005260406000206121c9858254612f29565b905591858481612156565b9091811061222957602094926121ab8860008051602061426983398151915298969461220282600196612f1c565b86600052600285526040600020336000528552604060002055935093959750509294612183565b60405162461bcd60e51b815260048101849052601860248201527745524332303a20616c6c6f77616e636520746f6f206c6f7760401b6044820152606490fd5b346102e55760003660031901126102e5576020602a54604051908152f35b346102e55761229536612c4d565b8394969793929192421161119e5761232f926111429260018060a01b0395868b16978860005260046020526040600020918254926122d2846138c3565b90556040519160208301937f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d68552600060408501528b60608501528a8d1660808501528d60a085015260c084015281830152815261110681612d20565b1603611159576102e3926138d2565b346102e55760203660031901126102e5576001600160a01b0361235f612be5565b1660005260186020526020604060002054604051908152f35b346102e55760003660031901126102e557602060405160008152f35b346102e55760403660031901126102e55760043560098110156102e5576123b9612c11565b6008549091906001600160a01b031633036124725760ff6123d982612c9c565b5416151591151591821461243857808260ff6123f761242694612c9c565b54161515827feeec81de25875ce1725479bb76f720a8defdb43dea041919ae37bb4aae9847c0600080a4612c9c565b9060ff80198354169116179055600080f35b60405162461bcd60e51b81526020600482015260126024820152714d61726b65743a2073616d6520737461746560701b6044820152606490fd5b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881d5b985d5d1a1bdc9a5e995960621b6044820152606490fd5b346102e5576101803660031901126102e5576001600160a01b03602435818116908190036102e5576001600160401b03916044358381116102e5576124f7903690600401612c20565b6064358084169392908490036102e55761251683600554163314612e3a565b60043595620186a09561252b87891115612e85565b6020978089547fc353b09af857951dccce61b43a5854fc45beceed36c50e5d4cc2e71858a8e0df600080a38855806128d4575b508261279a575b50505081612759575b505060843580612744575b5060a4358061272f575b5060c4358061271b575b5060e435806126fa575b5061010435806126d9575b5061012435806126a7575b50610144359081612635575b50506101643590816125c757005b601e5482106125d65750601f55005b6084906040519062461bcd60e51b82526004820152603260248201527f4d61726b65743a206c69717569646174696f6e436f6c6c61746572616c697a616044820152711d1a5bdb94985d19481d1bdbc81cdb585b1b60721b6064820152fd5b61264190821115612e85565b601f54811161265457601e5581806125b9565b60405162461bcd60e51b815260048101839052602560248201527f4d61726b65743a20636f6c6c61746572616c697a6174696f6e5261746520746f6044820152646f2062696760d81b6064820152608490fd5b806016547fae6e0ab3b95f0a53ff9660a390ccedcbbf1f2355dce974a9841af106fddcfaba600080a3601655826125ad565b6126e4828210612e85565b6126f1601b548211612e85565b601c55826125a2565b612705828210612e85565b612712601c548210612e85565b601b5582612597565b612726828210612e85565b601d558261258d565b61273b82821115612e85565b601a5582612583565b61275082821115612e85565b60195582612579565b816008549182167f5a62d22209e370e38eea92cfddcd228e656e6ec139243392a760a7769f5877fd600080a36001600160a01b03191617600855828061256e565b82116109e45781906127ad601054612ccb565b601f8111612887575b50600090601f831160011461281b57600092612810575b50508160011b916000199060031b1c1916176010555b7fa6f004921c944d4b8bf6e38462b00f36a58d62495d56b51f571ab78f732c9815600080a1848080612565565b0135905086806127cd565b909250601060005286600020906000935b88601f198516861061287157506001945083601f19811610612857575b505050811b016010556127e3565b0135600019600384901b60f8161c19169055868080612849565b828201358455948501946001909301920161282c565b909150601060005286600020601f840160051c81018885106128cd575b90601f8594930160051c01905b8181106128be57506127b6565b600081558493506001016128b1565b50806128a4565b600f80546001600160a01b0319169190911790557f0b2d6eb667d0522c3eb86e4288afecae6c11591ffd1345d4d12407e0598bca9b600080a18761255e565b346102e55760403660031901126102e557611c3761292f612be5565b6024359033613920565b346102e55760603660031901126102e557612952612be5565b61295a612c11565b6044359081151582036102e55760018060a01b0392839161298083600554163314612e3a565b15612a24571690811590811591612a1c575b50156129df57806005549283167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a36001600160a01b031991821617600555600680549091169055005b60405162461bcd60e51b81526020600482015260156024820152744f776e61626c653a207a65726f206164647265737360581b6044820152606490fd5b905083612992565b9150501660018060a01b03196006541617600655600080f35b346102e55760003660031901126102e557600f546040805163d6d7d52560e01b81529182906001600160a01b031681600081612a7b600482016132d8565b03925af180156109fa57600091600091612b78575b50908015612b1a578115612ade5781604092601155807f9f9192b5edb17356c524e08d9e025c8e2f6307e6ea52fb7968faa3081f51c3c8600080a25b42601355825191151582526020820152f35b60405162461bcd60e51b81526020600482015260146024820152734d61726b65743a20696e76616c6964207261746560601b6044820152606490fd5b9050612b2b60135460125490612f29565b4211612b3c57604090601154612acc565b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881c985d19481d1bdbc81bdb1960621b6044820152606490fd5b9050612b93915060403d604011610ebc57610eac8183612d57565b82612a90565b346102e55760403660031901126102e557602090612bb5612be5565b612bbd612bfb565b9060018060a01b03809116600052600384526040600020911660005282526040600020548152f35b600435906001600160a01b03821682036102e557565b602435906001600160a01b03821682036102e557565b6024359081151582036102e557565b9181601f840112156102e5578235916001600160401b0383116102e557602083818601950101116102e557565b60e09060031901126102e5576001600160a01b039060043582811681036102e5579160243590811681036102e55790604435906064359060843560ff811681036102e5579060a4359060c43590565b6009811015612cb5576000526007602052604060002090565b634e487b7160e01b600052602160045260246000fd5b90600182811c92168015612cfb575b6020831014612ce557565b634e487b7160e01b600052602260045260246000fd5b91607f1691612cda565b604081019081106001600160401b038211176109e457604052565b61010081019081106001600160401b038211176109e457604052565b608081019081106001600160401b038211176109e457604052565b90601f801991011681019081106001600160401b038211176109e457604052565b919082519283825260005b848110612da4575050826000602080949584010152601f8019910116010190565b602081830181015184830182015201612d83565b6001600160401b0381116109e457601f01601f191660200190565b929192612ddf82612db8565b91612ded6040519384612d57565b8294818452818301116102e5578281602093846000960137010152565b9181601f840112156102e5578235916001600160401b0383116102e5576020808501948460051b0101116102e557565b15612e4157565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b15612e8c57565b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881b9bdd081d985b1a59607a1b6044820152606490fd5b81810292918115918404141715612ed857565b634e487b7160e01b600052601160045260246000fd5b8115612ef8570490565b634e487b7160e01b600052601260045260246000fd5b604d8111612ed857600a0a90565b91908203918211612ed857565b91908201809211612ed857565b81810392916000138015828513169184121617612ed857565b906509184e72a00091828102928184051490151715612ed857565b90670de0b6b3a764000091828102928184051490151715612ed857565b8115612ef857600160ff1b8114600019831416612ed8570590565b601454612fdd91612fcc9190612fc2906001600160801b03831690612ec5565b9060801c90612eee565b91620186a0918291601f5490612ec5565b0480831061309657612fef9083612f1c565b601e54602154830190818411612ed857839161300a91612ec5565b0491828103906000809412818312811691831390151617613082579061303b61303561304093612f4f565b91612f6a565b612f87565b908082121561307b57600160ff1b82146130675703905b808211613062575090565b905090565b634e487b7160e01b81526011600452602490fd5b5090613057565b634e487b7160e01b83526011600452602483fd5b505050600090565b6014549192916130dd916130ce916130c491612fc2906001600160801b03831690612ec5565b93601f5490612ec5565b6130d783612f0e565b90612eee565b908183106130965761303b6130356131376130fb61313c9587612f1c565b9361313261312c613123601e5461311d61311486612f0e565b60215490612f29565b90612ec5565b6130d784612f0e565b91612f0e565b612f36565b612f4f565b600081121561315f57600160ff1b8114612ed85760000390808211613062575090565b90613057565b6001600160a01b039081166000818152601760209081526040822054929594939192909181156132a157613197613b9a565b906131a3861515613373565b6009541683600c54898752601882526064604088205491604051948593849263442c159960e01b8452600484015260248301528960448301525afa908115613296578591613263575b509285949261324360189361321e613257996105f361321560409a620186a06022540490612ec5565b601e5490612ec5565b815190936001600160801b0391869161323991841690612ec5565b9201511690612eee565b81811061325b57035b9783525220546133bf565b9091565b50508261324c565b90508381813d831161328f575b61327a8183612d57565b8101031261328b57516132576131ec565b8480fd5b503d613270565b6040513d87823e3d90fd5b5050509192505080918190565b519081151582036102e557565b91908260409103126102e55760206132d2836132ae565b92015190565b6020808252600091601054916132ed83612ccb565b92838284015260019081811690816000146133505750600114613312575b5050505090565b929350601060005280600020926000935b85851061333c575050506040925001013880808061330b565b805485850160400152938201938101613323565b925050506040935060ff929192191683830152151560051b01013880808061330b565b1561337a57565b60405162461bcd60e51b815260206004820152601e60248201527f4d61726b65743a2065786368616e676552617465206e6f742076616c696400006044820152606490fd5b6133ca821515613373565b602060018060a01b0360095416916064600c54604051948593849263442c159960e01b845260048401526024830152600060448301525afa9081156109fa57600091613437575b50906105f36134239260225490612ec5565b620186a0613433601e5483612ec5565b0491565b906020823d8211613465575b8161345060209383612d57565b810103126134625750516105f3613411565b80fd5b3d9150613443565b6001600160a01b03166000818152601860205260408120549092613490916133bf565b918352601760205260408320548015613571578115613571578181106135715782811015613567576014546134d991839161138191612fc2906001600160801b03831690612ec5565b90620186a09283830292808404851490151715613553576134fe92916130d791612f1c565b91601b5491601c54936135118585612f36565b80820291848212600160ff1b82141661355357818305149015171561308257058184820194851291129080158216911516176130675750808212613062575090565b634e487b7160e01b85526011600452602485fd5b50505050601b5490565b50505090565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03161480613678575b156135d2577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f000000000000000000000000000000000000000000000000000000000000000082527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a0815260c081018181106001600160401b038211176109e45760405251902090565b507f000000000000000000000000000000000000000000000000000000000000000046146135a9565b156136a857565b60405162461bcd60e51b815260206004820152601660248201527545524332303a2062616c616e636520746f6f206c6f7760501b6044820152606490fd5b156136ed57565b60405162461bcd60e51b815260206004820152601660248201527545524332303a206e6f207a65726f206164647265737360501b6044820152606490fd5b51906001600160a01b03821682036102e557565b6005811015612cb557806137505750565b600181036137985760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b6044820152606490fd5b600281036137e55760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606490fd5b6003146137ee57565b60405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608490fd5b9291906fa2a8918ca85bafe22016d0b997e4df60600160ff1b0383116138b75791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa156138aa5781516001600160a01b038116156138a4579190565b50600190565b50604051903d90823e3d90fd5b50505050600090600390565b6000198114612ed85760010190565b7fe50de2333c10a9502fcb1d8ae13a51bbf423153dfc63c2b8997665b32154afc360018060a01b038092169160009083825260036020526040822094169384825260205284604082205580a4565b909160207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259160018060a01b03809416938460005260028352604060002095169485600052825280604060002055604051908152a3565b60ff60265416613af5576014546001600160801b0316908115613aee57600a54604051631848f2bf60e31b8152602093916001600160a01b03919085908290600490829086165afa80156109fa578591600091613ab1575b50600460405180948193631a674cc560e11b8352165afa9384156109fa57600094613a7e575b5050613a119192670de0b6b3a764000092839160295490612ec5565b049081811015613a7557613a28602a548092612f1c565b83810290808204851490151715612ed8576130d7613a4992613a6994612f1c565b60275492613a6360285492613a5e8487612f1c565b612ec5565b04612f29565b90808211613062575090565b50505060275490565b81813d8311613aaa575b613a928183612d57565b81010312613aa657519250613a11386139f5565b8380fd5b503d613a88565b909181813d8311613ae7575b613ac78183612d57565b81010312613ae3575190828216820361346257508490386139cf565b5080fd5b503d613abd565b6028549150565b600a5460405163e6abad4960e01b815290602090829060049082906001600160a01b03165afa9081156109fa57600091613b2d575090565b906020823d8211613b53575b81613b4660209383612d57565b8101031261346257505190565b3d9150613b39565b60405190613b6882612d05565b6014546001600160801b038116835260801c6020830152565b6001600160801b039182169082160191908211612ed857565b60006020604051613baa81612d05565b82815201526001600160401b0390613bc98260255460401c1642612f1c565b918215613c2057613c1b613a5e91670de0b6b3a7640000613c10613beb613b5b565b9660018060801b03958694858a5116906301e13380613c08613977565b041690612ec5565b041682855116613b81565b168252565b509050613c2b613b5b565b90565b604051613c3a81612d05565b602554906001600160401b038281809416835260401c1691613c63602083019380855242612f1c565b918215613d6557816301e13380613c78613977565b041681528142168452613d16613c8c613b5b565b936020670de0b6b3a7640000613cb460018060801b0393613a5e858a51168989511690612ec5565b0495613cee83613cc9818a1682855116613b81565b16808352601480546001600160801b0319166001600160801b03909216919091179055565b0151601480546001600160801b03169290911660801b6001600160801b031916919091179055565b51169182602554916001600160401b0360401b905160401b169160018060801b03191617176025557f7484db546dcd57af0104c73c8a6968dfbaf5767f047cee0dadd0499ad7df81a0600080a3565b50505050565b6001600160801b039182169082160391908211612ed857565b15613d8b57565b60405162461bcd60e51b8152602060048201526018602482015277084d2ce84c2dcce7440d8cadccee8d040dad2e6dac2e8c6d60431b6044820152606490fd5b91908260409103126102e5576020825192015190565b91909160018060a01b0392836009541690600c5460409485519063442c159960e01b82526004928084840152602496878401526000958660448501526020958685606481855afa94851561414157918b8b928a948598614103575b509060a4911694835194859384926311a5cc7760e31b84528b8401528d30908401528760448401528960648401528160848401525af180156140f9576140dd575b5088600d5416908851926370a0823160e01b94858552308786015287858b81875afa9485156140d35789888d948f948c97958f95859b614087575b5090613ef99291600b54169751998a9889978896635cd3dc1560e01b885233908801528601526044850152606484015260a0608484015260a4830190612d78565b03925af1801561407d57614045575b508388600d54169287895180958193825230888301525afa801561403b57859061400a575b613f379250612f1c565b958615613fbd5790606483926009541691600e54928989519889958694638eb22cdd60e01b86528501528301528660448301525afa938415613fb257508193613f81575b50505091565b9091809350813d8311613fab575b613f998183612d57565b81010312613462575051388080613f7b565b503d613f8f565b51913d9150823e3d90fd5b508360849286519262461bcd60e51b8452830152808201527f42696742616e673a206f6e436f6c6c61746572616c52656365697665722066616044820152631a5b195960e21b6064820152fd5b50908381813d8311614034575b6140218183612d57565b8101031261328b5790613f379151613f2d565b503d614017565b87513d87823e3d90fd5b8481813d8311614076575b61405a8183612d57565b810103126140725761406b906132ae565b5038613f08565b8580fd5b503d614050565b88513d88823e3d90fd5b96999a50509550959250505081813d83116140cc575b6140a78183612d57565b810103126140c85792898988613ef98f9897968f968d98519a909192613eb8565b8880fd5b503d61409d565b8b513d8b823e3d90fd5b6140f390893d8b11610b4a57610b3c8183612d57565b50613e7d565b89513d89823e3d90fd5b935096505091508681813d831161413a575b61411f8183612d57565b8101031261413657519387918a918c9060a4613e3c565b8780fd5b503d614115565b8a513d8a823e3d90fd5b91908110156109b75760051b0190565b919060018060a01b0380600094168452602060178152604085205490811561425e5760188152604086205480156142575781614195613b5b565b9460095416916064600c54604051948593849263442c159960e01b8452600484015260248301528b60448301525afa96871561424b578097614215575b50506132396141fa6141f1614210969798620186a06022540490612ec5565b601f5490612ec5565b95613a5e60018060801b03948587511690612ec5565b111590565b9096508187813d8311614244575b61422d8183612d57565b8101031261346257509451946132396141fa6141d2565b503d614223565b604051903d90823e3d90fd5b5050505050565b506001945050505056feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220523d90d7b87f7ccc4f9c69d66891d95c682aff7eb563a096c491db5ad22924cc64736f6c63430008120033", + "bytecode": "0x61014080604052346200018a5762000017816200018f565b600f81526001602082016e546170696f63612042696742616e6760881b8152602060405162000046816200018f565b8381520192603160f81b845251902091208160e052610100918183524660a0526040519160208301907f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f92838352604085015260608401524660808401523060a084015260a0835260c083019280841060018060401b03851117620001745760408490525190206080523060c052610120908152600580546001600160a01b0319163390811790915560007f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a362013880601b5562015f90601c55612710601d55612ee06020556103e8602d556143b69283620001ac843960805183613688015260a05183613753015260c05183613652015260e051836136d7015251826136fd015251816136b40152f35b634e487b7160e01b600052604160045260246000fd5b600080fd5b604081019081106001600160401b03821117620001745760405256fe608080604052600436101561001357600080fd5b60e0600035811c918262a02a2014612c715750816302ce728f14612b15578163078dfbe714612a11578163095ea7b3146129eb5781630c4e84f0146128d157816318160ddd146128b55781631c9e379b1461287b5781631d4d3a5d146128525781631da8bf101461279b5781631fb8f81a1461277d57816323b872dd146125d9578163331960ff146125bb57816334ce998a1461259257816334d441d0146125745781633644e5151461255957816337b6b7b91461253b57816338d52e0f146125125781633ba0b9a9146124f45781633f741adb146124d057816340626d8b146124b257816344de240a14612494578163473e3ce71461247657816348e4163e1461243c5781634e71e0c81461238e578163529898f214612371578163542afda31461235357816357935462146123355781636b19ad16146123175781636c3d8b8f146122ee57816370a08231146122b4578163727785471461227e57816374645ff3146121eb57816374c9e481146121cd5781637dc0d1d0146121a45781637ecebe001461216a5781637fa0b84e146121395781638285ef401461210757816387b27937146120cd5781638c5d0ed3146120af5781638da5cb5b14612086578163910dd7c814611e36578163932bc4f814611d5457816399a9702814611d2d5781639e15e89f14611ce4578163a28e6b8214611828578163a9059cbb14611741578163b0e21e8a14611723578163b27c0e74146116f2578163b7113f19146116cf578163bb4cfe3b146116b1578163bde39c5d14611693578163c1ad5c8d14611670578163ce8849ed14611647578163d3fb2a3814611204578163d505accf1461107f57508063d8dfeb4514611056578063dd62ed3e14611005578063de40657714610fdc578063e0996cb614610fbe578063e30c397814610f95578063e5644d8b14610365578063ea64dd5614610347578063eec0f42e14610329578063f791395d1461030b5763f8ba4cff146102eb57600080fd5b3461030657600036600319011261030657610304613d06565b005b600080fd5b34610306576000366003190112610306576020602754604051908152f35b34610306576000366003190112610306576020600c54604051908152f35b34610306576000366003190112610306576020601f54604051908152f35b34610306576080366003190112610306576004356001600160401b03811161030657610395903690600401612ee2565b906024356001600160401b038111610306576103b5903690600401612ee2565b6044356001600160401b038111610306576103d4903690600401612ee2565b9290916064356001600160401b038111610306576103f6903690600401612ee2565b9490916004600052600760205260ff60406000205416610f5f578715610f1f57808803610ee457610428828914613e5c565b610433828714613e5c565b600f546040805163d6d7d52560e01b8152959186906001600160a01b031681600081610461600482016133b0565b03925af1948515610a1b57600090600096610eb0575b508581610ea6575b5015610e9c57846011555b8415610e4c57610498613d06565b60009860005b8181106104e7578a156104ad57005b60405162461bcd60e51b815260206004820152601260248201527110908e881b9bc81d5cd95c9cc8199bdd5b9960721b6044820152606490fd5b6104f281838c614223565b356001600160a01b03811681036103065761050d8882614233565b15610522575b5061051d9061399b565b61049e565b9a61052c9061399b565b9a610538828686614223565b359061054583888c614223565b35906001600160a01b0382168203610306578b8410156109d8578360051b890135601e198a360301811215610306578901926001600160401b03843511610306578335360360208501136103065761059d8b83613545565b938b15610e075760018060a01b03600954166020600c5460018060a01b03861660005260188252606460406000205491604051948593849263442c159960e01b845260048401526024830152600060448301525afa908115610a1b578d90600092610dd1575b506106146106199260215490612f9d565b612fc6565b9360018060a01b038416600052601760205261063a8560406000205461307a565b80601d5480610db2575b5080851115610dab575b6001600160a01b0386166000908152601760205260409020549081811115610da2575080965b1115610d69578d9381811115610d6257505b6001600160a01b0385166000908152601760205260409020549081811115610d5757506106b38180612ff4565b6001600160a01b0386166000908152601760205260409020556106d4613c33565b6020810180519091906001600160801b0316610d25575050602081965b606461071761070e60018060a01b036009541698600c5494612f9d565b60215490612fc6565b916040519788938492638eb22cdd60e01b845260048401526024830152600060448301525afa938415610a1b57600094610cf1575b506001600160a01b0385166000908152601860205260409020548411610cb05760018060a01b0385166000526018602052604060002061078d858254612ff4565b90558515610c7d576014805490916107d66001600160801b036107b48a8216828616613e43565b16926001600160801b0319926001600160801b0316908316841760801c613e43565b60801b16179055601580548480821115610c73576107f391612ff4565b905b5560018060a01b0360095416906020600e54606460405180958193638eb22cdd60e01b835260048301528a6024830152600160448301525afa918215610a1b57600092610c3d575b5061085361085a92933690602081359101612e7e565b9084613eb9565b50818110610bf85781811115610be45761088661087e61088e93620186a093612ff4565b965b87612f9d565b048095612ff4565b9184610a60575b600d5460095460405163095ea7b360e01b81526001600160a01b039182166004820152600060248201819052909260209284926044928492165af18015610a1b57610a27575b50600d546001600160a01b0316803b1561030657604051632770a7eb60e21b815230600482015260248101869052906000908290604490829084905af18015610a1b576109ee575b506040519061093182612db0565b60018252602036818401378151156109d8576001600160a01b03166020820190815260405191518291906000905b8082106109b65750505081900390206040805193845260208401949094529282015261051d9392919033907f85b91d472e69b2cfe848ed50eb5d8582ae96c22057b6e46250255dd6f6c3519290606090a490610513565b82516001600160a01b031684526020938401939092019160019091019061095f565b634e487b7160e01b600052603260045260246000fd5b6001600160401b038111610a055760405238610923565b634e487b7160e01b600052604160045260246000fd5b6040513d6000823e3d90fd5b6020813d602011610a58575b81610a4060209383612e02565b8101031261030657610a5190613386565b50386108db565b3d9150610a33565b600d5460095460405163095ea7b360e01b81526001600160a01b039182166004820152600060248201819052909260209284926044928492165af18015610a1b57610bab575b50600d5460095460405163095ea7b360e01b81526001600160a01b03918216600482015260001960248201529160209183916044918391600091165af18015610a1b57610b72575b506000604060018060a01b036009541660a4600e5483519485938492634d4d7cbd60e11b845260048401523060248401523360448401528160648401528b60848401525af18015610a1b57610b44575b50610895565b610b659060403d604011610b6b575b610b5d8183612e02565b810190613ea3565b50610b3e565b503d610b53565b6020813d602011610ba3575b81610b8b60209383612e02565b8101031261030657610b9c90613386565b5038610aee565b3d9150610b7e565b6020813d602011610bdc575b81610bc460209383612e02565b8101031261030657610bd590613386565b5038610aa6565b3d9150610bb7565b505061088e620186a0610886600096610880565b60405162461bcd60e51b815260206004820152601f60248201527f42696742616e673a20617373657420616d6f756e74206e6f742076616c6964006044820152606490fd5b91506020823d602011610c6b575b81610c5860209383612e02565b810103126103065790519061085361083d565b3d9150610c4b565b50506000906107f5565b60405162461bcd60e51b815260206004820152600b60248201526a10908e881cdbdb1d995b9d60aa1b6044820152606490fd5b60405162461bcd60e51b815260206004820152601960248201527810908e881b9bdd08195b9bdd59da0818dbdb1b185d195c985b603a1b6044820152606490fd5b9093506020813d602011610d1d575b81610d0d60209383612e02565b810103126103065751923861074c565b3d9150610d00565b51602091610d5191610d40906001600160801b031685612f9d565b90516001600160801b031690612fc6565b966106f1565b6106b3908092612ff4565b9050610686565b60405162461bcd60e51b8152602060048201526011602482015270109a59d0985b99ce88189859081919589d607a1b6044820152606490fd5b90508096610674565b508361064e565b90620186a0610dc4610dcb9383612f9d565b0490613001565b38610644565b9150506020813d602011610dff575b81610ded60209383612e02565b8101031261030657518c610614610603565b3d9150610de0565b60405162461bcd60e51b815260206004820152601f60248201527f42696742616e673a2065786368616e676552617465206e6f742076616c6964006044820152606490fd5b60405162461bcd60e51b815260206004820152602260248201527f42423a2063757272656e742065786368616e676552617465206e6f742076616c6044820152611a5960f21b6064820152608490fd5b601154945061048a565b905015158a61047f565b9050610ed591955060403d604011610edd575b610ecd8183612e02565b810190613393565b94908a610477565b503d610ec3565b60405162461bcd60e51b8152602060048201526013602482015272084847440d8cadccee8d040dad2e6dac2e8c6d606b1b6044820152606490fd5b60405162461bcd60e51b815260206004820152601860248201527742423a206e6f7468696e6720746f206c697175696461746560401b6044820152606490fd5b60405162461bcd60e51b815260206004820152600e60248201526d13585c9ad95d0e881c185d5cd95960921b6044820152606490fd5b34610306576000366003190112610306576006546040516001600160a01b039091168152602090f35b34610306576000366003190112610306576020601d54604051908152f35b34610306576000366003190112610306576009546040516001600160a01b039091168152602090f35b346103065760403660031901126103065761101e612cbd565b611026612cd3565b9060018060a01b038091166000526002602052604060002091166000526020526020604060002054604051908152f35b3461030657600036600319011261030657600b546040516001600160a01b039091168152602090f35b346103065761108d36612cf8565b839496979392919242116111bf5761116b926111639260018060a01b0395868b16978860005260046020526040600020918254926110ca8461399b565b90556040519160208301937f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e2668552600060408501528b60608501528a8d1660808501528d60a085015260c084015281830152815261112781612dcb565b51902061113261364f565b9060405190602082019261190160f01b8452602283015260428201526042815261115b81612de7565b519020613916565b919091613817565b160361117a57610304926139f8565b60405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152606490fd5b60405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b3461030657610160366003190112610306576001600160a01b0360043581811690819003610306576001600160401b03916024358381116103065761124d903690600401612eb5565b9093604435938385168095036103065761126c84600554163314612f12565b80611608575b50816114bd575b50509080925061147c575b505060643580611464575b506084358061144c575b5060a43580611435575b5060c43580611411575b5060e435806113ed575b5061010435806113bb575b506101243580611347575b5061014435806112d957005b601e5481106112e757601f55005b60405162461bcd60e51b815260206004820152603260248201527f4d61726b65743a206c69717569646174696f6e436f6c6c61746572616c697a616044820152711d1a5bdb94985d19481d1bdbc81cdb585b1b60721b6064820152608490fd5b611356620186a0821115612f5d565b601f54811161136857601e55806112cd565b60405162461bcd60e51b815260206004820152602560248201527f4d61726b65743a20636f6c6c61746572616c697a6174696f6e5261746520746f6044820152646f2062696760d81b6064820152608490fd5b806016547fae6e0ab3b95f0a53ff9660a390ccedcbbf1f2355dce974a9841af106fddcfaba600080a3601655806112c2565b6113fb620186a08210612f5d565b611408601b548211612f5d565b601c55806112b7565b61141f620186a08210612f5d565b61142c601c548210612f5d565b601b55806112ad565b611443620186a08210612f5d565b601d55806112a3565b61145b620186a0821115612f5d565b601a5580611299565b611473620186a0821115612f5d565b6019558061128f565b816008549182167f5a62d22209e370e38eea92cfddcd228e656e6ec139243392a760a7769f5877fd600080a36001600160a01b031916176008558080611284565b8111610a05576114ce601054612d76565b601f81116115b7575b506000601f82116001146115405781929394600092611535575b50508160011b916000199060031b1c1916176010555b7fa6f004921c944d4b8bf6e38462b00f36a58d62495d56b51f571ab78f732c9815600080a181908380611279565b0135905084806114f1565b60106000908152601f1983169560008051602061436183398151915292909160205b88821061159f57505083600195969710611585575b505050811b01601055611507565b0135600019600384901b60f8161c19169055848080611577565b80600184968294958701358155019501920190611562565b6010600052600080516020614361833981519152601f830160051c810160208410611601575b601f90920160051c01905b8181106115f557506114d7565b600081556001016115e8565b50806115dd565b600f80546001600160a01b0319169190911790557f0b2d6eb667d0522c3eb86e4288afecae6c11591ffd1345d4d12407e0598bca9b600080a185611272565b34610306576000366003190112610306576008546040516001600160a01b039091168152602090f35b3461030657600036600319011261030657602061168b613a4f565b604051908152f35b34610306576000366003190112610306576020602854604051908152f35b34610306576000366003190112610306576020601e54604051908152f35b3461030657600036600319011261030657602060ff602554166040519015158152f35b346103065760003660031901126103065760406024548151906001600160401b03908181168352831c166020820152f35b34610306576000366003190112610306576020601a54604051908152f35b346103065760403660031901126103065761175a612cbd565b602435908115801590611816575b61179e575b6040519182526001600160a01b031690339060008051602061434183398151915290602090a3602060405160018152f35b3360005260016020526040600020546117b983821015613779565b6001600160a01b0382169083338390036117d6575b50505061176d565b6117ea916117e58415156137be565b612ff4565b336000526001602052604060002055600052604060002061180c838254613001565b90558280836117ce565b50336001600160a01b03821614611768565b3461030657608036600319011261030657611841612cbd565b611849612cd3565b604435916001600160a01b0391908284168403610306576064356001600160401b0381116103065761187f903690600401612eb5565b94909161189185600554163314612f12565b600f546040805163d6d7d52560e01b81529182908816816000816118b7600482016133b0565b03925af1908115610a1b57600090600092611cc2575b508181611cb8575b5015611caf57806011555b15611c5a5784906118ef613d06565b16918260005260209560178752611914604060002054620186a0610dc48a5483612f9d565b87876009541691606461193061070e600c549360115490612f9d565b916040519485938492638eb22cdd60e01b845260048401526024830152600060448301525afa908115610a1b57600091611c2d575b50846000526018885260406000205411611bea5785856000611ad2611ae0611a97898d99611a91869a879a60188e868b5281815260408b205496611a5e6119aa613c33565b828e5260178452611a39611a108f6040902054926000876040516119cd81612db0565b82815201528681019360018060801b03928382818094868a8381511615600014611b9d57505081611a03915b1682885116613e43565b1685521682875116613e43565b169384905251601480546001600160801b0319166001600160801b039390921692909216179055565b601480546001600160801b031660809290921b6001600160801b031916919091179055565b808c52601782528b6040812055828252611a7e60408d2054601554612ff4565b6015558b52528860408120553691612e7e565b91613eb9565b600d5460405163a9059cbb60e01b8c82019081526001600160a01b039098166024820152604481019290925290961695928391506064820190565b03601f198101835282612e02565b51925af13d15611b96573d611af481612e63565b90611b026040519283612e02565b81523d60008483013e5b81611b5e575b5015611b1a57005b6064906040519062461bcd60e51b82526004820152601c60248201527f426f72696e6745524332303a205472616e73666572206661696c6564000000006044820152fd5b80915051828115918215611b77575b5050905082611b12565b83809293500103126103065781611b8e9101613386565b808284611b6d565b6060611b0c565b611a0392611bd6611bcc86611bc3611bb9828098511686612f9d565b8287511690612fc6565b94511684612f9d565b848c511690612fc6565b10156119f957611be59061399b565b6119f9565b6064876040519062461bcd60e51b825280600483015260248201527f42696742616e673a2043616e6e6f7420666f726365206c6971756964617465646044820152fd5b90508781813d8311611c53575b611c448183612e02565b81010312610306575188611965565b503d611c3a565b60405162461bcd60e51b815260206004820152602760248201527f42696742616e673a2063757272656e742065786368616e676552617465206e6f6044820152661d081d985b1a5960ca1b6064820152608490fd5b506011546118e0565b90501515886118d5565b9050611cdd915060403d604011610edd57610ecd8183612e02565b90886118cd565b3461030657604036600319011261030657611d29611d0c611d03612cbd565b6024359061323d565b604080519384526020840192909252908201529081906060820190565b0390f35b3461030657604036600319011261030657602061168b611d4b612cbd565b60243590613545565b3461030657600036600319011261030657604051600090602b54611d7781612d76565b808352600191808316908115611e0e5750600114611db4575b611d2983611da081870382612e02565b604051918291602083526020830190612e23565b602b600090815260209450917f11c44e4875b74d31ff9fd779bf2566af7bd15b87fc985d01f5094b89e3669e4f5b828410611dfb57505050810190910190611da081611d90565b8054858501870152928501928101611de2565b611d299550611da093506020915091849260ff191682840152151560051b8201019350611d90565b34610306576040366003190112610306576004356001600160401b038111610306573660238201121561030657611e77903690602481600401359101612e7e565b9060243561ffff811680910361030657610100918284805181010312610306576020611ea4818601613386565b91611eb160408701613803565b90611ebe60608801613803565b9660808101519660a08201519260c08301519160ff8316830361030657838201519301516001600160a01b039586169a861698909490428210612041579289888d989794611fb89794611163978f8e60001461201a577f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e266955b8d60005260048652604060002092835493611f518561399b565b905560405196870197885260408701528d6060870152608086015260a085015260c0840152818301528152611f8581612dcb565b519020611f9061364f565b90604051908a82019261190160f01b8452602283015260428201526042815261115b81612de7565b1603611fd6575015611fcd57610304926139f8565b610304926139aa565b6064906040519062461bcd60e51b82526004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152fd5b7f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d695611f37565b60405162461bcd60e51b815260048101899052601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b34610306576000366003190112610306576005546040516001600160a01b039091168152602090f35b34610306576000366003190112610306576020601b54604051908152f35b34610306576020366003190112610306576001600160a01b036120ee612cbd565b1660005260236020526020604060002054604051908152f35b3461030657600036600319011261030657601454604080516001600160801b038316815260809290921c602083015290f35b346103065760403660031901126103065761215f612155612cbd565b60243590336139aa565b602060405160018152f35b34610306576020366003190112610306576001600160a01b0361218b612cbd565b1660005260046020526020604060002054604051908152f35b3461030657600036600319011261030657600f546040516001600160a01b039091168152602090f35b34610306576000366003190112610306576020602d54604051908152f35b346103065760003660031901126103065760405160009060105461220e81612d76565b808352600191808316908115611e0e575060011461223657611d2983611da081870382612e02565b6010600090815260209450916000805160206143618339815191525b82841061226b57505050810190910190611da081611d90565b8054858501870152928501928101612252565b346103065760203660031901126103065760043560098110156103065760ff6122a8602092612d47565b54166040519015158152f35b34610306576020366003190112610306576001600160a01b036122d5612cbd565b1660005260016020526020604060002054604051908152f35b3461030657600036600319011261030657600a546040516001600160a01b039091168152602090f35b34610306576000366003190112610306576020602654604051908152f35b34610306576000366003190112610306576020601c54604051908152f35b34610306576000366003190112610306576020602c54604051908152f35b346103065760003660031901126103065760208054604051908152f35b34610306576000366003190112610306576006546001600160a01b0390818116338190036123f857806005549384167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a36001600160a01b03199283161760055516600655005b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b34610306576020366003190112610306576001600160a01b0361245d612cbd565b1660005260176020526020604060002054604051908152f35b34610306576000366003190112610306576020601554604051908152f35b34610306576000366003190112610306576020600e54604051908152f35b34610306576000366003190112610306576020601654604051908152f35b3461030657606036600319011261030657602061168b604435602435600435613176565b34610306576000366003190112610306576020601154604051908152f35b3461030657600036600319011261030657600d546040516001600160a01b039091168152602090f35b34610306576000366003190112610306576020601254604051908152f35b3461030657600036600319011261030657602061168b61364f565b34610306576000366003190112610306576020601954604051908152f35b34610306576000366003190112610306576014546040516001600160801b039091168152602090f35b34610306576000366003190112610306576020601354604051908152f35b34610306576060366003190112610306576125f2612cbd565b6125fa612cd3565b6044359081612637575b6040519182526001600160a01b0390811692169060008051602061434183398151915290602090a3602060405160018152f35b60018060a01b0380841680600052602060018152846040600020549361265f82861015613779565b851693848403612674575b5050505050612604565b8360005260028352604060002033600052835260406000205460001981036126e8575b5084926126bf6000805160206143418339815191529795936001936117e560209915156137be565b926000525260406000205560005260406000206126dd858254613001565b90559185848161266a565b9091811061273d57602094926126bf8860008051602061434183398151915298969461271682600196612ff4565b86600052600285526040600020336000528552604060002055935093959750509294612697565b60405162461bcd60e51b815260048101849052601860248201527745524332303a20616c6c6f77616e636520746f6f206c6f7760401b6044820152606490fd5b34610306576000366003190112610306576020602954604051908152f35b34610306576127a936612cf8565b839496979392919242116111bf57612843926111639260018060a01b0395868b16978860005260046020526040600020918254926127e68461399b565b90556040519160208301937f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d68552600060408501528b60608501528a8d1660808501528d60a085015260c084015281830152815261112781612dcb565b160361117a57610304926139aa565b3461030657600036600319011261030657602a546040516001600160a01b039091168152602090f35b34610306576020366003190112610306576001600160a01b0361289c612cbd565b1660005260186020526020604060002054604051908152f35b3461030657600036600319011261030657602060405160008152f35b34610306576040366003190112610306576004356009811015610306576128f6612ce9565b6008549091906001600160a01b031633036129af5760ff61291682612d47565b5416151591151591821461297557808260ff61293461296394612d47565b54161515827feeec81de25875ce1725479bb76f720a8defdb43dea041919ae37bb4aae9847c0600080a4612d47565b9060ff80198354169116179055600080f35b60405162461bcd60e51b81526020600482015260126024820152714d61726b65743a2073616d6520737461746560701b6044820152606490fd5b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881d5b985d5d1a1bdc9a5e995960621b6044820152606490fd5b346103065760403660031901126103065761215f612a07612cbd565b60243590336139f8565b3461030657606036600319011261030657612a2a612cbd565b612a32612ce9565b6044359081151582036103065760018060a01b03928391612a5883600554163314612f12565b15612afc571690811590811591612af4575b5015612ab757806005549283167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a36001600160a01b031991821617600555600680549091169055005b60405162461bcd60e51b81526020600482015260156024820152744f776e61626c653a207a65726f206164647265737360581b6044820152606490fd5b905083612a6a565b9150501660018060a01b03196006541617600655600080f35b3461030657600036600319011261030657600f546040805163d6d7d52560e01b81529182906001600160a01b031681600081612b53600482016133b0565b03925af18015610a1b57600091600091612c50575b50908015612bf2578115612bb65781604092601155807f9f9192b5edb17356c524e08d9e025c8e2f6307e6ea52fb7968faa3081f51c3c8600080a25b42601355825191151582526020820152f35b60405162461bcd60e51b81526020600482015260146024820152734d61726b65743a20696e76616c6964207261746560601b6044820152606490fd5b9050612c0360135460125490613001565b4211612c1457604090601154612ba4565b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881c985d19481d1bdbc81bdb1960621b6044820152606490fd5b9050612c6b915060403d604011610edd57610ecd8183612e02565b82612b68565b3461030657604036600319011261030657602090612c8d612cbd565b612c95612cd3565b9060018060a01b03809116600052600384526040600020911660005282526040600020548152f35b600435906001600160a01b038216820361030657565b602435906001600160a01b038216820361030657565b60243590811515820361030657565b60e0906003190112610306576001600160a01b03906004358281168103610306579160243590811681036103065790604435906064359060843560ff81168103610306579060a4359060c43590565b6009811015612d60576000526007602052604060002090565b634e487b7160e01b600052602160045260246000fd5b90600182811c92168015612da6575b6020831014612d9057565b634e487b7160e01b600052602260045260246000fd5b91607f1691612d85565b604081019081106001600160401b03821117610a0557604052565b61010081019081106001600160401b03821117610a0557604052565b608081019081106001600160401b03821117610a0557604052565b90601f801991011681019081106001600160401b03821117610a0557604052565b919082519283825260005b848110612e4f575050826000602080949584010152601f8019910116010190565b602081830181015184830182015201612e2e565b6001600160401b038111610a0557601f01601f191660200190565b929192612e8a82612e63565b91612e986040519384612e02565b829481845281830111610306578281602093846000960137010152565b9181601f84011215610306578235916001600160401b038311610306576020838186019501011161030657565b9181601f84011215610306578235916001600160401b038311610306576020808501948460051b01011161030657565b15612f1957565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b15612f6457565b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881b9bdd081d985b1a59607a1b6044820152606490fd5b81810292918115918404141715612fb057565b634e487b7160e01b600052601160045260246000fd5b8115612fd0570490565b634e487b7160e01b600052601260045260246000fd5b604d8111612fb057600a0a90565b91908203918211612fb057565b91908201809211612fb057565b81810392916000138015828513169184121617612fb057565b906509184e72a00091828102928184051490151715612fb057565b90670de0b6b3a764000091828102928184051490151715612fb057565b8115612fd057600160ff1b8114600019831416612fb0570590565b6014546130b5916130a4919061309a906001600160801b03831690612f9d565b9060801c90612fc6565b91620186a0918291601f5490612f9d565b0480831061316e576130c79083612ff4565b601e54602054830190818411612fb05783916130e291612f9d565b049182810390600080941281831281169183139015161761315a579061311361310d61311893613027565b91613042565b61305f565b908082121561315357600160ff1b821461313f5703905b80821161313a575090565b905090565b634e487b7160e01b81526011600452602490fd5b509061312f565b634e487b7160e01b83526011600452602483fd5b505050600090565b6014549192916131b5916131a69161319c9161309a906001600160801b03831690612f9d565b93601f5490612f9d565b6131af83612fe6565b90612fc6565b9081831061316e5761311361310d61320f6131d36132149587612ff4565b9361320a6132046131fb601e546131f56131ec86612fe6565b60205490613001565b90612f9d565b6131af84612fe6565b91612fe6565b61300e565b613027565b600081121561323757600160ff1b8114612fb0576000039080821161313a575090565b9061312f565b6001600160a01b039081166000818152601760209081526040822054929594939192909181156133795761326f613c72565b9061327b86151561344b565b6009541683600c54898752601882526064604088205491604051948593849263442c159960e01b8452600484015260248301528960448301525afa90811561336e57859161333b575b509285949261331b6018936132f661332f996106146132ed60409a620186a06021540490612f9d565b601e5490612f9d565b815190936001600160801b0391869161331191841690612f9d565b9201511690612fc6565b81811061333357035b978352522054613497565b9091565b505082613324565b90508381813d8311613367575b6133528183612e02565b81010312613363575161332f6132c4565b8480fd5b503d613348565b6040513d87823e3d90fd5b5050509192505080918190565b5190811515820361030657565b91908260409103126103065760206133aa83613386565b92015190565b6020808252600091601054916133c583612d76565b928382840152600190818116908160001461342857506001146133ea575b5050505090565b929350601060005280600020926000935b85851061341457505050604092500101388080806133e3565b8054858501604001529382019381016133fb565b925050506040935060ff929192191683830152151560051b0101388080806133e3565b1561345257565b60405162461bcd60e51b815260206004820152601e60248201527f4d61726b65743a2065786368616e676552617465206e6f742076616c696400006044820152606490fd5b6134a282151561344b565b602060018060a01b0360095416916064600c54604051948593849263442c159960e01b845260048401526024830152600060448301525afa908115610a1b5760009161350f575b50906106146134fb9260215490612f9d565b620186a061350b601e5483612f9d565b0491565b906020823d821161353d575b8161352860209383612e02565b8101031261353a5750516106146134e9565b80fd5b3d915061351b565b6001600160a01b0316600081815260186020526040812054909261356891613497565b91835260176020526040832054801561364957811561364957818110613649578281101561363f576014546135b19183916117e59161309a906001600160801b03831690612f9d565b90620186a0928383029280840485149015171561362b576135d692916131af91612ff4565b91601b5491601c54936135e9858561300e565b80820291848212600160ff1b82141661362b57818305149015171561315a570581848201948512911290801582169115161761313f575080821261313a575090565b634e487b7160e01b85526011600452602485fd5b50505050601b5490565b50505090565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03161480613750575b156136aa577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f000000000000000000000000000000000000000000000000000000000000000082527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a0815260c081018181106001600160401b03821117610a055760405251902090565b507f00000000000000000000000000000000000000000000000000000000000000004614613681565b1561378057565b60405162461bcd60e51b815260206004820152601660248201527545524332303a2062616c616e636520746f6f206c6f7760501b6044820152606490fd5b156137c557565b60405162461bcd60e51b815260206004820152601660248201527545524332303a206e6f207a65726f206164647265737360501b6044820152606490fd5b51906001600160a01b038216820361030657565b6005811015612d6057806138285750565b600181036138705760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b6044820152606490fd5b600281036138bd5760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606490fd5b6003146138c657565b60405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608490fd5b9291906fa2a8918ca85bafe22016d0b997e4df60600160ff1b03831161398f5791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa156139825781516001600160a01b0381161561397c579190565b50600190565b50604051903d90823e3d90fd5b50505050600090600390565b6000198114612fb05760010190565b7fe50de2333c10a9502fcb1d8ae13a51bbf423153dfc63c2b8997665b32154afc360018060a01b038092169160009083825260036020526040822094169384825260205284604082205580a4565b909160207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259160018060a01b03809416938460005260028352604060002095169485600052825280604060002055604051908152a3565b60ff60255416613bcd576014546001600160801b0316908115613bc657600a54604051631848f2bf60e31b8152602093916001600160a01b03919085908290600490829086165afa8015610a1b578591600091613b89575b50600460405180948193631a674cc560e11b8352165afa938415610a1b57600094613b56575b5050613ae99192670de0b6b3a764000092839160285490612f9d565b049081811015613b4d57613b006029548092612ff4565b83810290808204851490151715612fb0576131af613b2192613b4194612ff4565b60265492613b3b60275492613b368487612ff4565b612f9d565b04613001565b9080821161313a575090565b50505060265490565b81813d8311613b82575b613b6a8183612e02565b81010312613b7e57519250613ae938613acd565b8380fd5b503d613b60565b909181813d8311613bbf575b613b9f8183612e02565b81010312613bbb575190828216820361353a5750849038613aa7565b5080fd5b503d613b95565b6027549150565b600a5460405163e6abad4960e01b815290602090829060049082906001600160a01b03165afa908115610a1b57600091613c05575090565b906020823d8211613c2b575b81613c1e60209383612e02565b8101031261353a57505190565b3d9150613c11565b60405190613c4082612db0565b6014546001600160801b038116835260801c6020830152565b6001600160801b039182169082160191908211612fb057565b60006020604051613c8281612db0565b82815201526001600160401b0390613ca18260245460401c1642612ff4565b918215613cf857613cf3613b3691670de0b6b3a7640000613ce8613cc3613c33565b9660018060801b03958694858a5116906301e13380613ce0613a4f565b041690612f9d565b041682855116613c59565b168252565b509050613d03613c33565b90565b604051613d1281612db0565b602454906001600160401b038281809416835260401c1691613d3b602083019380855242612ff4565b918215613e3d57816301e13380613d50613a4f565b041681528142168452613dee613d64613c33565b936020670de0b6b3a7640000613d8c60018060801b0393613b36858a51168989511690612f9d565b0495613dc683613da1818a1682855116613c59565b16808352601480546001600160801b0319166001600160801b03909216919091179055565b0151601480546001600160801b03169290911660801b6001600160801b031916919091179055565b51169182602454916001600160401b0360401b905160401b169160018060801b03191617176024557f7484db546dcd57af0104c73c8a6968dfbaf5767f047cee0dadd0499ad7df81a0600080a3565b50505050565b6001600160801b039182169082160391908211612fb057565b15613e6357565b60405162461bcd60e51b8152602060048201526018602482015277084d2ce84c2dcce7440d8cadccee8d040dad2e6dac2e8c6d60431b6044820152606490fd5b9190826040910312610306576020825192015190565b91909160018060a01b0392836009541690600c5460409485519063442c159960e01b82526004928084840152602496878401526000958660448501526020958685606481855afa94851561421957918b8b928a9485986141db575b509060a4911694835194859384926311a5cc7760e31b84528b8401528d30908401528760448401528960648401528160848401525af180156141d1576141b5575b5088600d5416908851926370a0823160e01b94858552308786015287858b81875afa9485156141ab5789888d948f948c97958f95859b61415f575b5090613fd19291600b54169751998a9889978896635cd3dc1560e01b885233908801528601526044850152606484015260a0608484015260a4830190612e23565b03925af180156141555761411d575b508388600d54169287895180958193825230888301525afa80156141135785906140e2575b61400f9250612ff4565b9586156140955790606483926009541691600e54928989519889958694638eb22cdd60e01b86528501528301528660448301525afa93841561408a57508193614059575b50505091565b9091809350813d8311614083575b6140718183612e02565b8101031261353a575051388080614053565b503d614067565b51913d9150823e3d90fd5b508360849286519262461bcd60e51b8452830152808201527f42696742616e673a206f6e436f6c6c61746572616c52656365697665722066616044820152631a5b195960e21b6064820152fd5b50908381813d831161410c575b6140f98183612e02565b81010312613363579061400f9151614005565b503d6140ef565b87513d87823e3d90fd5b8481813d831161414e575b6141328183612e02565b8101031261414a5761414390613386565b5038613fe0565b8580fd5b503d614128565b88513d88823e3d90fd5b96999a50509550959250505081813d83116141a4575b61417f8183612e02565b810103126141a05792898988613fd18f9897968f968d98519a909192613f90565b8880fd5b503d614175565b8b513d8b823e3d90fd5b6141cb90893d8b11610b6b57610b5d8183612e02565b50613f55565b89513d89823e3d90fd5b935096505091508681813d8311614212575b6141f78183612e02565b8101031261420e57519387918a918c9060a4613f14565b8780fd5b503d6141ed565b8a513d8a823e3d90fd5b91908110156109d85760051b0190565b919060018060a01b0380600094168452602060178152604085205490811561433657601881526040862054801561432f578161426d613c33565b9460095416916064600c54604051948593849263442c159960e01b8452600484015260248301528b60448301525afa9687156143235780976142ed575b50506133116142d26142c96142e8969798620186a06021540490612f9d565b601f5490612f9d565b95613b3660018060801b03948587511690612f9d565b111590565b9096508187813d831161431c575b6143058183612e02565b8101031261353a57509451946133116142d26142aa565b503d6142fb565b604051903d90823e3d90fd5b5050505050565b506001945050505056feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae672a264697066735822122026d7281b9d5c6add42eb74ad5c11d713ae9c41a17f450c2287e4258e6fd718c364736f6c63430008120033", + "deployedBytecode": "0x608080604052600436101561001357600080fd5b60e0600035811c918262a02a2014612c715750816302ce728f14612b15578163078dfbe714612a11578163095ea7b3146129eb5781630c4e84f0146128d157816318160ddd146128b55781631c9e379b1461287b5781631d4d3a5d146128525781631da8bf101461279b5781631fb8f81a1461277d57816323b872dd146125d9578163331960ff146125bb57816334ce998a1461259257816334d441d0146125745781633644e5151461255957816337b6b7b91461253b57816338d52e0f146125125781633ba0b9a9146124f45781633f741adb146124d057816340626d8b146124b257816344de240a14612494578163473e3ce71461247657816348e4163e1461243c5781634e71e0c81461238e578163529898f214612371578163542afda31461235357816357935462146123355781636b19ad16146123175781636c3d8b8f146122ee57816370a08231146122b4578163727785471461227e57816374645ff3146121eb57816374c9e481146121cd5781637dc0d1d0146121a45781637ecebe001461216a5781637fa0b84e146121395781638285ef401461210757816387b27937146120cd5781638c5d0ed3146120af5781638da5cb5b14612086578163910dd7c814611e36578163932bc4f814611d5457816399a9702814611d2d5781639e15e89f14611ce4578163a28e6b8214611828578163a9059cbb14611741578163b0e21e8a14611723578163b27c0e74146116f2578163b7113f19146116cf578163bb4cfe3b146116b1578163bde39c5d14611693578163c1ad5c8d14611670578163ce8849ed14611647578163d3fb2a3814611204578163d505accf1461107f57508063d8dfeb4514611056578063dd62ed3e14611005578063de40657714610fdc578063e0996cb614610fbe578063e30c397814610f95578063e5644d8b14610365578063ea64dd5614610347578063eec0f42e14610329578063f791395d1461030b5763f8ba4cff146102eb57600080fd5b3461030657600036600319011261030657610304613d06565b005b600080fd5b34610306576000366003190112610306576020602754604051908152f35b34610306576000366003190112610306576020600c54604051908152f35b34610306576000366003190112610306576020601f54604051908152f35b34610306576080366003190112610306576004356001600160401b03811161030657610395903690600401612ee2565b906024356001600160401b038111610306576103b5903690600401612ee2565b6044356001600160401b038111610306576103d4903690600401612ee2565b9290916064356001600160401b038111610306576103f6903690600401612ee2565b9490916004600052600760205260ff60406000205416610f5f578715610f1f57808803610ee457610428828914613e5c565b610433828714613e5c565b600f546040805163d6d7d52560e01b8152959186906001600160a01b031681600081610461600482016133b0565b03925af1948515610a1b57600090600096610eb0575b508581610ea6575b5015610e9c57846011555b8415610e4c57610498613d06565b60009860005b8181106104e7578a156104ad57005b60405162461bcd60e51b815260206004820152601260248201527110908e881b9bc81d5cd95c9cc8199bdd5b9960721b6044820152606490fd5b6104f281838c614223565b356001600160a01b03811681036103065761050d8882614233565b15610522575b5061051d9061399b565b61049e565b9a61052c9061399b565b9a610538828686614223565b359061054583888c614223565b35906001600160a01b0382168203610306578b8410156109d8578360051b890135601e198a360301811215610306578901926001600160401b03843511610306578335360360208501136103065761059d8b83613545565b938b15610e075760018060a01b03600954166020600c5460018060a01b03861660005260188252606460406000205491604051948593849263442c159960e01b845260048401526024830152600060448301525afa908115610a1b578d90600092610dd1575b506106146106199260215490612f9d565b612fc6565b9360018060a01b038416600052601760205261063a8560406000205461307a565b80601d5480610db2575b5080851115610dab575b6001600160a01b0386166000908152601760205260409020549081811115610da2575080965b1115610d69578d9381811115610d6257505b6001600160a01b0385166000908152601760205260409020549081811115610d5757506106b38180612ff4565b6001600160a01b0386166000908152601760205260409020556106d4613c33565b6020810180519091906001600160801b0316610d25575050602081965b606461071761070e60018060a01b036009541698600c5494612f9d565b60215490612fc6565b916040519788938492638eb22cdd60e01b845260048401526024830152600060448301525afa938415610a1b57600094610cf1575b506001600160a01b0385166000908152601860205260409020548411610cb05760018060a01b0385166000526018602052604060002061078d858254612ff4565b90558515610c7d576014805490916107d66001600160801b036107b48a8216828616613e43565b16926001600160801b0319926001600160801b0316908316841760801c613e43565b60801b16179055601580548480821115610c73576107f391612ff4565b905b5560018060a01b0360095416906020600e54606460405180958193638eb22cdd60e01b835260048301528a6024830152600160448301525afa918215610a1b57600092610c3d575b5061085361085a92933690602081359101612e7e565b9084613eb9565b50818110610bf85781811115610be45761088661087e61088e93620186a093612ff4565b965b87612f9d565b048095612ff4565b9184610a60575b600d5460095460405163095ea7b360e01b81526001600160a01b039182166004820152600060248201819052909260209284926044928492165af18015610a1b57610a27575b50600d546001600160a01b0316803b1561030657604051632770a7eb60e21b815230600482015260248101869052906000908290604490829084905af18015610a1b576109ee575b506040519061093182612db0565b60018252602036818401378151156109d8576001600160a01b03166020820190815260405191518291906000905b8082106109b65750505081900390206040805193845260208401949094529282015261051d9392919033907f85b91d472e69b2cfe848ed50eb5d8582ae96c22057b6e46250255dd6f6c3519290606090a490610513565b82516001600160a01b031684526020938401939092019160019091019061095f565b634e487b7160e01b600052603260045260246000fd5b6001600160401b038111610a055760405238610923565b634e487b7160e01b600052604160045260246000fd5b6040513d6000823e3d90fd5b6020813d602011610a58575b81610a4060209383612e02565b8101031261030657610a5190613386565b50386108db565b3d9150610a33565b600d5460095460405163095ea7b360e01b81526001600160a01b039182166004820152600060248201819052909260209284926044928492165af18015610a1b57610bab575b50600d5460095460405163095ea7b360e01b81526001600160a01b03918216600482015260001960248201529160209183916044918391600091165af18015610a1b57610b72575b506000604060018060a01b036009541660a4600e5483519485938492634d4d7cbd60e11b845260048401523060248401523360448401528160648401528b60848401525af18015610a1b57610b44575b50610895565b610b659060403d604011610b6b575b610b5d8183612e02565b810190613ea3565b50610b3e565b503d610b53565b6020813d602011610ba3575b81610b8b60209383612e02565b8101031261030657610b9c90613386565b5038610aee565b3d9150610b7e565b6020813d602011610bdc575b81610bc460209383612e02565b8101031261030657610bd590613386565b5038610aa6565b3d9150610bb7565b505061088e620186a0610886600096610880565b60405162461bcd60e51b815260206004820152601f60248201527f42696742616e673a20617373657420616d6f756e74206e6f742076616c6964006044820152606490fd5b91506020823d602011610c6b575b81610c5860209383612e02565b810103126103065790519061085361083d565b3d9150610c4b565b50506000906107f5565b60405162461bcd60e51b815260206004820152600b60248201526a10908e881cdbdb1d995b9d60aa1b6044820152606490fd5b60405162461bcd60e51b815260206004820152601960248201527810908e881b9bdd08195b9bdd59da0818dbdb1b185d195c985b603a1b6044820152606490fd5b9093506020813d602011610d1d575b81610d0d60209383612e02565b810103126103065751923861074c565b3d9150610d00565b51602091610d5191610d40906001600160801b031685612f9d565b90516001600160801b031690612fc6565b966106f1565b6106b3908092612ff4565b9050610686565b60405162461bcd60e51b8152602060048201526011602482015270109a59d0985b99ce88189859081919589d607a1b6044820152606490fd5b90508096610674565b508361064e565b90620186a0610dc4610dcb9383612f9d565b0490613001565b38610644565b9150506020813d602011610dff575b81610ded60209383612e02565b8101031261030657518c610614610603565b3d9150610de0565b60405162461bcd60e51b815260206004820152601f60248201527f42696742616e673a2065786368616e676552617465206e6f742076616c6964006044820152606490fd5b60405162461bcd60e51b815260206004820152602260248201527f42423a2063757272656e742065786368616e676552617465206e6f742076616c6044820152611a5960f21b6064820152608490fd5b601154945061048a565b905015158a61047f565b9050610ed591955060403d604011610edd575b610ecd8183612e02565b810190613393565b94908a610477565b503d610ec3565b60405162461bcd60e51b8152602060048201526013602482015272084847440d8cadccee8d040dad2e6dac2e8c6d606b1b6044820152606490fd5b60405162461bcd60e51b815260206004820152601860248201527742423a206e6f7468696e6720746f206c697175696461746560401b6044820152606490fd5b60405162461bcd60e51b815260206004820152600e60248201526d13585c9ad95d0e881c185d5cd95960921b6044820152606490fd5b34610306576000366003190112610306576006546040516001600160a01b039091168152602090f35b34610306576000366003190112610306576020601d54604051908152f35b34610306576000366003190112610306576009546040516001600160a01b039091168152602090f35b346103065760403660031901126103065761101e612cbd565b611026612cd3565b9060018060a01b038091166000526002602052604060002091166000526020526020604060002054604051908152f35b3461030657600036600319011261030657600b546040516001600160a01b039091168152602090f35b346103065761108d36612cf8565b839496979392919242116111bf5761116b926111639260018060a01b0395868b16978860005260046020526040600020918254926110ca8461399b565b90556040519160208301937f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e2668552600060408501528b60608501528a8d1660808501528d60a085015260c084015281830152815261112781612dcb565b51902061113261364f565b9060405190602082019261190160f01b8452602283015260428201526042815261115b81612de7565b519020613916565b919091613817565b160361117a57610304926139f8565b60405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152606490fd5b60405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b3461030657610160366003190112610306576001600160a01b0360043581811690819003610306576001600160401b03916024358381116103065761124d903690600401612eb5565b9093604435938385168095036103065761126c84600554163314612f12565b80611608575b50816114bd575b50509080925061147c575b505060643580611464575b506084358061144c575b5060a43580611435575b5060c43580611411575b5060e435806113ed575b5061010435806113bb575b506101243580611347575b5061014435806112d957005b601e5481106112e757601f55005b60405162461bcd60e51b815260206004820152603260248201527f4d61726b65743a206c69717569646174696f6e436f6c6c61746572616c697a616044820152711d1a5bdb94985d19481d1bdbc81cdb585b1b60721b6064820152608490fd5b611356620186a0821115612f5d565b601f54811161136857601e55806112cd565b60405162461bcd60e51b815260206004820152602560248201527f4d61726b65743a20636f6c6c61746572616c697a6174696f6e5261746520746f6044820152646f2062696760d81b6064820152608490fd5b806016547fae6e0ab3b95f0a53ff9660a390ccedcbbf1f2355dce974a9841af106fddcfaba600080a3601655806112c2565b6113fb620186a08210612f5d565b611408601b548211612f5d565b601c55806112b7565b61141f620186a08210612f5d565b61142c601c548210612f5d565b601b55806112ad565b611443620186a08210612f5d565b601d55806112a3565b61145b620186a0821115612f5d565b601a5580611299565b611473620186a0821115612f5d565b6019558061128f565b816008549182167f5a62d22209e370e38eea92cfddcd228e656e6ec139243392a760a7769f5877fd600080a36001600160a01b031916176008558080611284565b8111610a05576114ce601054612d76565b601f81116115b7575b506000601f82116001146115405781929394600092611535575b50508160011b916000199060031b1c1916176010555b7fa6f004921c944d4b8bf6e38462b00f36a58d62495d56b51f571ab78f732c9815600080a181908380611279565b0135905084806114f1565b60106000908152601f1983169560008051602061436183398151915292909160205b88821061159f57505083600195969710611585575b505050811b01601055611507565b0135600019600384901b60f8161c19169055848080611577565b80600184968294958701358155019501920190611562565b6010600052600080516020614361833981519152601f830160051c810160208410611601575b601f90920160051c01905b8181106115f557506114d7565b600081556001016115e8565b50806115dd565b600f80546001600160a01b0319169190911790557f0b2d6eb667d0522c3eb86e4288afecae6c11591ffd1345d4d12407e0598bca9b600080a185611272565b34610306576000366003190112610306576008546040516001600160a01b039091168152602090f35b3461030657600036600319011261030657602061168b613a4f565b604051908152f35b34610306576000366003190112610306576020602854604051908152f35b34610306576000366003190112610306576020601e54604051908152f35b3461030657600036600319011261030657602060ff602554166040519015158152f35b346103065760003660031901126103065760406024548151906001600160401b03908181168352831c166020820152f35b34610306576000366003190112610306576020601a54604051908152f35b346103065760403660031901126103065761175a612cbd565b602435908115801590611816575b61179e575b6040519182526001600160a01b031690339060008051602061434183398151915290602090a3602060405160018152f35b3360005260016020526040600020546117b983821015613779565b6001600160a01b0382169083338390036117d6575b50505061176d565b6117ea916117e58415156137be565b612ff4565b336000526001602052604060002055600052604060002061180c838254613001565b90558280836117ce565b50336001600160a01b03821614611768565b3461030657608036600319011261030657611841612cbd565b611849612cd3565b604435916001600160a01b0391908284168403610306576064356001600160401b0381116103065761187f903690600401612eb5565b94909161189185600554163314612f12565b600f546040805163d6d7d52560e01b81529182908816816000816118b7600482016133b0565b03925af1908115610a1b57600090600092611cc2575b508181611cb8575b5015611caf57806011555b15611c5a5784906118ef613d06565b16918260005260209560178752611914604060002054620186a0610dc48a5483612f9d565b87876009541691606461193061070e600c549360115490612f9d565b916040519485938492638eb22cdd60e01b845260048401526024830152600060448301525afa908115610a1b57600091611c2d575b50846000526018885260406000205411611bea5785856000611ad2611ae0611a97898d99611a91869a879a60188e868b5281815260408b205496611a5e6119aa613c33565b828e5260178452611a39611a108f6040902054926000876040516119cd81612db0565b82815201528681019360018060801b03928382818094868a8381511615600014611b9d57505081611a03915b1682885116613e43565b1685521682875116613e43565b169384905251601480546001600160801b0319166001600160801b039390921692909216179055565b601480546001600160801b031660809290921b6001600160801b031916919091179055565b808c52601782528b6040812055828252611a7e60408d2054601554612ff4565b6015558b52528860408120553691612e7e565b91613eb9565b600d5460405163a9059cbb60e01b8c82019081526001600160a01b039098166024820152604481019290925290961695928391506064820190565b03601f198101835282612e02565b51925af13d15611b96573d611af481612e63565b90611b026040519283612e02565b81523d60008483013e5b81611b5e575b5015611b1a57005b6064906040519062461bcd60e51b82526004820152601c60248201527f426f72696e6745524332303a205472616e73666572206661696c6564000000006044820152fd5b80915051828115918215611b77575b5050905082611b12565b83809293500103126103065781611b8e9101613386565b808284611b6d565b6060611b0c565b611a0392611bd6611bcc86611bc3611bb9828098511686612f9d565b8287511690612fc6565b94511684612f9d565b848c511690612fc6565b10156119f957611be59061399b565b6119f9565b6064876040519062461bcd60e51b825280600483015260248201527f42696742616e673a2043616e6e6f7420666f726365206c6971756964617465646044820152fd5b90508781813d8311611c53575b611c448183612e02565b81010312610306575188611965565b503d611c3a565b60405162461bcd60e51b815260206004820152602760248201527f42696742616e673a2063757272656e742065786368616e676552617465206e6f6044820152661d081d985b1a5960ca1b6064820152608490fd5b506011546118e0565b90501515886118d5565b9050611cdd915060403d604011610edd57610ecd8183612e02565b90886118cd565b3461030657604036600319011261030657611d29611d0c611d03612cbd565b6024359061323d565b604080519384526020840192909252908201529081906060820190565b0390f35b3461030657604036600319011261030657602061168b611d4b612cbd565b60243590613545565b3461030657600036600319011261030657604051600090602b54611d7781612d76565b808352600191808316908115611e0e5750600114611db4575b611d2983611da081870382612e02565b604051918291602083526020830190612e23565b602b600090815260209450917f11c44e4875b74d31ff9fd779bf2566af7bd15b87fc985d01f5094b89e3669e4f5b828410611dfb57505050810190910190611da081611d90565b8054858501870152928501928101611de2565b611d299550611da093506020915091849260ff191682840152151560051b8201019350611d90565b34610306576040366003190112610306576004356001600160401b038111610306573660238201121561030657611e77903690602481600401359101612e7e565b9060243561ffff811680910361030657610100918284805181010312610306576020611ea4818601613386565b91611eb160408701613803565b90611ebe60608801613803565b9660808101519660a08201519260c08301519160ff8316830361030657838201519301516001600160a01b039586169a861698909490428210612041579289888d989794611fb89794611163978f8e60001461201a577f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e266955b8d60005260048652604060002092835493611f518561399b565b905560405196870197885260408701528d6060870152608086015260a085015260c0840152818301528152611f8581612dcb565b519020611f9061364f565b90604051908a82019261190160f01b8452602283015260428201526042815261115b81612de7565b1603611fd6575015611fcd57610304926139f8565b610304926139aa565b6064906040519062461bcd60e51b82526004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152fd5b7f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d695611f37565b60405162461bcd60e51b815260048101899052601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b34610306576000366003190112610306576005546040516001600160a01b039091168152602090f35b34610306576000366003190112610306576020601b54604051908152f35b34610306576020366003190112610306576001600160a01b036120ee612cbd565b1660005260236020526020604060002054604051908152f35b3461030657600036600319011261030657601454604080516001600160801b038316815260809290921c602083015290f35b346103065760403660031901126103065761215f612155612cbd565b60243590336139aa565b602060405160018152f35b34610306576020366003190112610306576001600160a01b0361218b612cbd565b1660005260046020526020604060002054604051908152f35b3461030657600036600319011261030657600f546040516001600160a01b039091168152602090f35b34610306576000366003190112610306576020602d54604051908152f35b346103065760003660031901126103065760405160009060105461220e81612d76565b808352600191808316908115611e0e575060011461223657611d2983611da081870382612e02565b6010600090815260209450916000805160206143618339815191525b82841061226b57505050810190910190611da081611d90565b8054858501870152928501928101612252565b346103065760203660031901126103065760043560098110156103065760ff6122a8602092612d47565b54166040519015158152f35b34610306576020366003190112610306576001600160a01b036122d5612cbd565b1660005260016020526020604060002054604051908152f35b3461030657600036600319011261030657600a546040516001600160a01b039091168152602090f35b34610306576000366003190112610306576020602654604051908152f35b34610306576000366003190112610306576020601c54604051908152f35b34610306576000366003190112610306576020602c54604051908152f35b346103065760003660031901126103065760208054604051908152f35b34610306576000366003190112610306576006546001600160a01b0390818116338190036123f857806005549384167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a36001600160a01b03199283161760055516600655005b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b34610306576020366003190112610306576001600160a01b0361245d612cbd565b1660005260176020526020604060002054604051908152f35b34610306576000366003190112610306576020601554604051908152f35b34610306576000366003190112610306576020600e54604051908152f35b34610306576000366003190112610306576020601654604051908152f35b3461030657606036600319011261030657602061168b604435602435600435613176565b34610306576000366003190112610306576020601154604051908152f35b3461030657600036600319011261030657600d546040516001600160a01b039091168152602090f35b34610306576000366003190112610306576020601254604051908152f35b3461030657600036600319011261030657602061168b61364f565b34610306576000366003190112610306576020601954604051908152f35b34610306576000366003190112610306576014546040516001600160801b039091168152602090f35b34610306576000366003190112610306576020601354604051908152f35b34610306576060366003190112610306576125f2612cbd565b6125fa612cd3565b6044359081612637575b6040519182526001600160a01b0390811692169060008051602061434183398151915290602090a3602060405160018152f35b60018060a01b0380841680600052602060018152846040600020549361265f82861015613779565b851693848403612674575b5050505050612604565b8360005260028352604060002033600052835260406000205460001981036126e8575b5084926126bf6000805160206143418339815191529795936001936117e560209915156137be565b926000525260406000205560005260406000206126dd858254613001565b90559185848161266a565b9091811061273d57602094926126bf8860008051602061434183398151915298969461271682600196612ff4565b86600052600285526040600020336000528552604060002055935093959750509294612697565b60405162461bcd60e51b815260048101849052601860248201527745524332303a20616c6c6f77616e636520746f6f206c6f7760401b6044820152606490fd5b34610306576000366003190112610306576020602954604051908152f35b34610306576127a936612cf8565b839496979392919242116111bf57612843926111639260018060a01b0395868b16978860005260046020526040600020918254926127e68461399b565b90556040519160208301937f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d68552600060408501528b60608501528a8d1660808501528d60a085015260c084015281830152815261112781612dcb565b160361117a57610304926139aa565b3461030657600036600319011261030657602a546040516001600160a01b039091168152602090f35b34610306576020366003190112610306576001600160a01b0361289c612cbd565b1660005260186020526020604060002054604051908152f35b3461030657600036600319011261030657602060405160008152f35b34610306576040366003190112610306576004356009811015610306576128f6612ce9565b6008549091906001600160a01b031633036129af5760ff61291682612d47565b5416151591151591821461297557808260ff61293461296394612d47565b54161515827feeec81de25875ce1725479bb76f720a8defdb43dea041919ae37bb4aae9847c0600080a4612d47565b9060ff80198354169116179055600080f35b60405162461bcd60e51b81526020600482015260126024820152714d61726b65743a2073616d6520737461746560701b6044820152606490fd5b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881d5b985d5d1a1bdc9a5e995960621b6044820152606490fd5b346103065760403660031901126103065761215f612a07612cbd565b60243590336139f8565b3461030657606036600319011261030657612a2a612cbd565b612a32612ce9565b6044359081151582036103065760018060a01b03928391612a5883600554163314612f12565b15612afc571690811590811591612af4575b5015612ab757806005549283167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a36001600160a01b031991821617600555600680549091169055005b60405162461bcd60e51b81526020600482015260156024820152744f776e61626c653a207a65726f206164647265737360581b6044820152606490fd5b905083612a6a565b9150501660018060a01b03196006541617600655600080f35b3461030657600036600319011261030657600f546040805163d6d7d52560e01b81529182906001600160a01b031681600081612b53600482016133b0565b03925af18015610a1b57600091600091612c50575b50908015612bf2578115612bb65781604092601155807f9f9192b5edb17356c524e08d9e025c8e2f6307e6ea52fb7968faa3081f51c3c8600080a25b42601355825191151582526020820152f35b60405162461bcd60e51b81526020600482015260146024820152734d61726b65743a20696e76616c6964207261746560601b6044820152606490fd5b9050612c0360135460125490613001565b4211612c1457604090601154612ba4565b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881c985d19481d1bdbc81bdb1960621b6044820152606490fd5b9050612c6b915060403d604011610edd57610ecd8183612e02565b82612b68565b3461030657604036600319011261030657602090612c8d612cbd565b612c95612cd3565b9060018060a01b03809116600052600384526040600020911660005282526040600020548152f35b600435906001600160a01b038216820361030657565b602435906001600160a01b038216820361030657565b60243590811515820361030657565b60e0906003190112610306576001600160a01b03906004358281168103610306579160243590811681036103065790604435906064359060843560ff81168103610306579060a4359060c43590565b6009811015612d60576000526007602052604060002090565b634e487b7160e01b600052602160045260246000fd5b90600182811c92168015612da6575b6020831014612d9057565b634e487b7160e01b600052602260045260246000fd5b91607f1691612d85565b604081019081106001600160401b03821117610a0557604052565b61010081019081106001600160401b03821117610a0557604052565b608081019081106001600160401b03821117610a0557604052565b90601f801991011681019081106001600160401b03821117610a0557604052565b919082519283825260005b848110612e4f575050826000602080949584010152601f8019910116010190565b602081830181015184830182015201612e2e565b6001600160401b038111610a0557601f01601f191660200190565b929192612e8a82612e63565b91612e986040519384612e02565b829481845281830111610306578281602093846000960137010152565b9181601f84011215610306578235916001600160401b038311610306576020838186019501011161030657565b9181601f84011215610306578235916001600160401b038311610306576020808501948460051b01011161030657565b15612f1957565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b15612f6457565b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881b9bdd081d985b1a59607a1b6044820152606490fd5b81810292918115918404141715612fb057565b634e487b7160e01b600052601160045260246000fd5b8115612fd0570490565b634e487b7160e01b600052601260045260246000fd5b604d8111612fb057600a0a90565b91908203918211612fb057565b91908201809211612fb057565b81810392916000138015828513169184121617612fb057565b906509184e72a00091828102928184051490151715612fb057565b90670de0b6b3a764000091828102928184051490151715612fb057565b8115612fd057600160ff1b8114600019831416612fb0570590565b6014546130b5916130a4919061309a906001600160801b03831690612f9d565b9060801c90612fc6565b91620186a0918291601f5490612f9d565b0480831061316e576130c79083612ff4565b601e54602054830190818411612fb05783916130e291612f9d565b049182810390600080941281831281169183139015161761315a579061311361310d61311893613027565b91613042565b61305f565b908082121561315357600160ff1b821461313f5703905b80821161313a575090565b905090565b634e487b7160e01b81526011600452602490fd5b509061312f565b634e487b7160e01b83526011600452602483fd5b505050600090565b6014549192916131b5916131a69161319c9161309a906001600160801b03831690612f9d565b93601f5490612f9d565b6131af83612fe6565b90612fc6565b9081831061316e5761311361310d61320f6131d36132149587612ff4565b9361320a6132046131fb601e546131f56131ec86612fe6565b60205490613001565b90612f9d565b6131af84612fe6565b91612fe6565b61300e565b613027565b600081121561323757600160ff1b8114612fb0576000039080821161313a575090565b9061312f565b6001600160a01b039081166000818152601760209081526040822054929594939192909181156133795761326f613c72565b9061327b86151561344b565b6009541683600c54898752601882526064604088205491604051948593849263442c159960e01b8452600484015260248301528960448301525afa90811561336e57859161333b575b509285949261331b6018936132f661332f996106146132ed60409a620186a06021540490612f9d565b601e5490612f9d565b815190936001600160801b0391869161331191841690612f9d565b9201511690612fc6565b81811061333357035b978352522054613497565b9091565b505082613324565b90508381813d8311613367575b6133528183612e02565b81010312613363575161332f6132c4565b8480fd5b503d613348565b6040513d87823e3d90fd5b5050509192505080918190565b5190811515820361030657565b91908260409103126103065760206133aa83613386565b92015190565b6020808252600091601054916133c583612d76565b928382840152600190818116908160001461342857506001146133ea575b5050505090565b929350601060005280600020926000935b85851061341457505050604092500101388080806133e3565b8054858501604001529382019381016133fb565b925050506040935060ff929192191683830152151560051b0101388080806133e3565b1561345257565b60405162461bcd60e51b815260206004820152601e60248201527f4d61726b65743a2065786368616e676552617465206e6f742076616c696400006044820152606490fd5b6134a282151561344b565b602060018060a01b0360095416916064600c54604051948593849263442c159960e01b845260048401526024830152600060448301525afa908115610a1b5760009161350f575b50906106146134fb9260215490612f9d565b620186a061350b601e5483612f9d565b0491565b906020823d821161353d575b8161352860209383612e02565b8101031261353a5750516106146134e9565b80fd5b3d915061351b565b6001600160a01b0316600081815260186020526040812054909261356891613497565b91835260176020526040832054801561364957811561364957818110613649578281101561363f576014546135b19183916117e59161309a906001600160801b03831690612f9d565b90620186a0928383029280840485149015171561362b576135d692916131af91612ff4565b91601b5491601c54936135e9858561300e565b80820291848212600160ff1b82141661362b57818305149015171561315a570581848201948512911290801582169115161761313f575080821261313a575090565b634e487b7160e01b85526011600452602485fd5b50505050601b5490565b50505090565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03161480613750575b156136aa577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f000000000000000000000000000000000000000000000000000000000000000082527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a0815260c081018181106001600160401b03821117610a055760405251902090565b507f00000000000000000000000000000000000000000000000000000000000000004614613681565b1561378057565b60405162461bcd60e51b815260206004820152601660248201527545524332303a2062616c616e636520746f6f206c6f7760501b6044820152606490fd5b156137c557565b60405162461bcd60e51b815260206004820152601660248201527545524332303a206e6f207a65726f206164647265737360501b6044820152606490fd5b51906001600160a01b038216820361030657565b6005811015612d6057806138285750565b600181036138705760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b6044820152606490fd5b600281036138bd5760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606490fd5b6003146138c657565b60405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608490fd5b9291906fa2a8918ca85bafe22016d0b997e4df60600160ff1b03831161398f5791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa156139825781516001600160a01b0381161561397c579190565b50600190565b50604051903d90823e3d90fd5b50505050600090600390565b6000198114612fb05760010190565b7fe50de2333c10a9502fcb1d8ae13a51bbf423153dfc63c2b8997665b32154afc360018060a01b038092169160009083825260036020526040822094169384825260205284604082205580a4565b909160207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259160018060a01b03809416938460005260028352604060002095169485600052825280604060002055604051908152a3565b60ff60255416613bcd576014546001600160801b0316908115613bc657600a54604051631848f2bf60e31b8152602093916001600160a01b03919085908290600490829086165afa8015610a1b578591600091613b89575b50600460405180948193631a674cc560e11b8352165afa938415610a1b57600094613b56575b5050613ae99192670de0b6b3a764000092839160285490612f9d565b049081811015613b4d57613b006029548092612ff4565b83810290808204851490151715612fb0576131af613b2192613b4194612ff4565b60265492613b3b60275492613b368487612ff4565b612f9d565b04613001565b9080821161313a575090565b50505060265490565b81813d8311613b82575b613b6a8183612e02565b81010312613b7e57519250613ae938613acd565b8380fd5b503d613b60565b909181813d8311613bbf575b613b9f8183612e02565b81010312613bbb575190828216820361353a5750849038613aa7565b5080fd5b503d613b95565b6027549150565b600a5460405163e6abad4960e01b815290602090829060049082906001600160a01b03165afa908115610a1b57600091613c05575090565b906020823d8211613c2b575b81613c1e60209383612e02565b8101031261353a57505190565b3d9150613c11565b60405190613c4082612db0565b6014546001600160801b038116835260801c6020830152565b6001600160801b039182169082160191908211612fb057565b60006020604051613c8281612db0565b82815201526001600160401b0390613ca18260245460401c1642612ff4565b918215613cf857613cf3613b3691670de0b6b3a7640000613ce8613cc3613c33565b9660018060801b03958694858a5116906301e13380613ce0613a4f565b041690612f9d565b041682855116613c59565b168252565b509050613d03613c33565b90565b604051613d1281612db0565b602454906001600160401b038281809416835260401c1691613d3b602083019380855242612ff4565b918215613e3d57816301e13380613d50613a4f565b041681528142168452613dee613d64613c33565b936020670de0b6b3a7640000613d8c60018060801b0393613b36858a51168989511690612f9d565b0495613dc683613da1818a1682855116613c59565b16808352601480546001600160801b0319166001600160801b03909216919091179055565b0151601480546001600160801b03169290911660801b6001600160801b031916919091179055565b51169182602454916001600160401b0360401b905160401b169160018060801b03191617176024557f7484db546dcd57af0104c73c8a6968dfbaf5767f047cee0dadd0499ad7df81a0600080a3565b50505050565b6001600160801b039182169082160391908211612fb057565b15613e6357565b60405162461bcd60e51b8152602060048201526018602482015277084d2ce84c2dcce7440d8cadccee8d040dad2e6dac2e8c6d60431b6044820152606490fd5b9190826040910312610306576020825192015190565b91909160018060a01b0392836009541690600c5460409485519063442c159960e01b82526004928084840152602496878401526000958660448501526020958685606481855afa94851561421957918b8b928a9485986141db575b509060a4911694835194859384926311a5cc7760e31b84528b8401528d30908401528760448401528960648401528160848401525af180156141d1576141b5575b5088600d5416908851926370a0823160e01b94858552308786015287858b81875afa9485156141ab5789888d948f948c97958f95859b61415f575b5090613fd19291600b54169751998a9889978896635cd3dc1560e01b885233908801528601526044850152606484015260a0608484015260a4830190612e23565b03925af180156141555761411d575b508388600d54169287895180958193825230888301525afa80156141135785906140e2575b61400f9250612ff4565b9586156140955790606483926009541691600e54928989519889958694638eb22cdd60e01b86528501528301528660448301525afa93841561408a57508193614059575b50505091565b9091809350813d8311614083575b6140718183612e02565b8101031261353a575051388080614053565b503d614067565b51913d9150823e3d90fd5b508360849286519262461bcd60e51b8452830152808201527f42696742616e673a206f6e436f6c6c61746572616c52656365697665722066616044820152631a5b195960e21b6064820152fd5b50908381813d831161410c575b6140f98183612e02565b81010312613363579061400f9151614005565b503d6140ef565b87513d87823e3d90fd5b8481813d831161414e575b6141328183612e02565b8101031261414a5761414390613386565b5038613fe0565b8580fd5b503d614128565b88513d88823e3d90fd5b96999a50509550959250505081813d83116141a4575b61417f8183612e02565b810103126141a05792898988613fd18f9897968f968d98519a909192613f90565b8880fd5b503d614175565b8b513d8b823e3d90fd5b6141cb90893d8b11610b6b57610b5d8183612e02565b50613f55565b89513d89823e3d90fd5b935096505091508681813d8311614212575b6141f78183612e02565b8101031261420e57519387918a918c9060a4613f14565b8780fd5b503d6141ed565b8a513d8a823e3d90fd5b91908110156109d85760051b0190565b919060018060a01b0380600094168452602060178152604085205490811561433657601881526040862054801561432f578161426d613c33565b9460095416916064600c54604051948593849263442c159960e01b8452600484015260248301528b60448301525afa9687156143235780976142ed575b50506133116142d26142c96142e8969798620186a06021540490612f9d565b601f5490612f9d565b95613b3660018060801b03948587511690612f9d565b111590565b9096508187813d831161431c575b6143058183612e02565b8101031261353a57509451946133116142d26142aa565b503d6142fb565b604051903d90823e3d90fd5b5050505050565b506001945050505056feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae672a264697066735822122026d7281b9d5c6add42eb74ad5c11d713ae9c41a17f450c2287e4258e6fd718c364736f6c63430008120033", "linkReferences": {}, "deployedLinkReferences": {} } diff --git a/src/artifacts/tapioca-bar/BBStorage.json b/src/artifacts/tapioca-bar/BBStorage.json index 2e443e7a..9b294f53 100644 --- a/src/artifacts/tapioca-bar/BBStorage.json +++ b/src/artifacts/tapioca-bar/BBStorage.json @@ -58,6 +58,31 @@ "name": "ApprovalBorrow", "type": "event" }, + { + "anonymous": false, + "inputs": [], + "name": "AssetOracleDataUpdated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "_oldVal", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "_newVal", + "type": "address" + } + ], + "name": "AssetOracleUpdated", + "type": "event" + }, { "anonymous": false, "inputs": [ @@ -277,25 +302,6 @@ "name": "LogBorrowCapUpdated", "type": "event" }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "uint256", - "name": "_oldVal", - "type": "uint256" - }, - { - "indexed": true, - "internalType": "uint256", - "name": "_newVal", - "type": "uint256" - } - ], - "name": "LogBorrowingFee", - "type": "event" - }, { "anonymous": false, "inputs": [ @@ -484,6 +490,37 @@ "name": "Transfer", "type": "event" }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint256", + "name": "oldMin", + "type": "uint256" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "newMin", + "type": "uint256" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "oldMax", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "newMax", + "type": "uint256" + } + ], + "name": "UpdateMinMaxMintFee", + "type": "event" + }, { "inputs": [], "name": "DOMAIN_SEPARATOR", @@ -638,27 +675,40 @@ "type": "function" }, { - "inputs": [ + "inputs": [], + "name": "assetOracle", + "outputs": [ { - "internalType": "address", + "internalType": "contract IOracle", "name": "", "type": "address" } ], - "name": "balanceOf", + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "assetOracleData", "outputs": [ { - "internalType": "uint256", + "internalType": "bytes", "name": "", - "type": "uint256" + "type": "bytes" } ], "stateMutability": "view", "type": "function" }, { - "inputs": [], - "name": "borrowOpeningFee", + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "balanceOf", "outputs": [ { "internalType": "uint256", @@ -945,6 +995,19 @@ "stateMutability": "view", "type": "function" }, + { + "inputs": [], + "name": "maxMintFee", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, { "inputs": [], "name": "minDebtRate", @@ -971,6 +1034,19 @@ "stateMutability": "view", "type": "function" }, + { + "inputs": [], + "name": "minMintFee", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, { "inputs": [ { @@ -1238,11 +1314,6 @@ }, { "inputs": [ - { - "internalType": "uint256", - "name": "_borrowOpeningFee", - "type": "uint256" - }, { "internalType": "contract IOracle", "name": "_oracle", @@ -1525,8 +1596,8 @@ "type": "function" } ], - "bytecode": "0x6101408060405234620001895762000017816200018e565b600f81526001602082016e546170696f63612042696742616e6760881b8152602060405162000046816200018e565b8381520192603160f81b845251902091208160e052610100918183524660a0526040519160208301907f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f92838352604085015260608401524660808401523060a084015260a0835260c083019280841060018060401b03851117620001735760408490525190206080523060c052610120908152600580546001600160a01b0319163390811790915560007f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a362013880601b5562015f90601c55612710601d556032602055612ee06021556126a39283620001ab843960805183612295015260a05183612360015260c0518361225f015260e051836122e40152518261230a015251816122c10152f35b634e487b7160e01b600052604160045260246000fd5b600080fd5b604081019081106001600160401b03821117620001735760405256fe608080604052600436101561001357600080fd5b60003560e01c908162a02a2014611b035750806302ce728f146118ec578063078dfbe7146117e8578063095ea7b3146117c25780630996efb71461133f5780630c4e84f01461122557806318160ddd146112095780631c9e379b146111cf5780631da8bf10146111135780631fb8f81a146110f557806323b872dd14610f51578063331960ff14610f3357806334d441d014610f155780633644e51514610efa57806337b6b7b914610edc57806338d52e0f14610eb35780633ba0b9a914610e955780633f741adb14610e7157806340626d8b14610e5357806344de240a14610e35578063473e3ce714610e1757806348e4163e14610ddd5780634e71e0c814610d2f578063529898f214610d115780635793546214610cf35780636b19ad1614610cd55780636c3d8b8f14610cac57806370a0823114610c725780637277854714610c3c57806374645ff314610b205780637dc0d1d014610af75780637ecebe0014610abd5780637fa0b84e14610a8c5780638285ef4014610a5a57806387b2793714610a205780638c5d0ed314610a025780638da5cb5b146109d9578063910dd7c8146107c0578063959916dc146107a357806399a97028146107745780639e15e89f1461073a578063a9059cbb14610653578063b0e21e8a14610635578063b27c0e7414610604578063b7113f19146105e1578063bb4cfe3b146105c3578063bde39c5d146105a5578063ce8849ed1461057c578063d505accf146103da578063d8dfeb45146103b1578063dd62ed3e14610360578063de40657714610337578063e0996cb614610319578063e30c3978146102f0578063ea64dd56146102d2578063eec0f42e146102b45763f791395d1461029157600080fd5b346102af5760003660031901126102af576020602854604051908152f35b600080fd5b346102af5760003660031901126102af576020600c54604051908152f35b346102af5760003660031901126102af576020601f54604051908152f35b346102af5760003660031901126102af576006546040516001600160a01b039091168152602090f35b346102af5760003660031901126102af576020601d54604051908152f35b346102af5760003660031901126102af576009546040516001600160a01b039091168152602090f35b346102af5760403660031901126102af57610379611b4f565b610381611b65565b9060018060a01b038091166000526002602052604060002091166000526020526020604060002054604051908152f35b346102af5760003660031901126102af57600b546040516001600160a01b039091168152602090f35b346102af576103e836611b8a565b9183919395949542116105375760018060a01b03928388169485600052600460205260406000209283546000198114610521576104cb956104c3956001830190556040519060208201927f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e2668452600060408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e0815261048781611c42565b51902061049261225c565b9060405190602082019261190160f01b845260228301526042820152604281526104bb81611c5e565b519020612523565b919091612424565b16036104dc576104da926125f6565b005b60405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152606490fd5b634e487b7160e01b600052601160045260246000fd5b60405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b346102af5760003660031901126102af576008546040516001600160a01b039091168152602090f35b346102af5760003660031901126102af576020602954604051908152f35b346102af5760003660031901126102af576020601e54604051908152f35b346102af5760003660031901126102af57602060ff602654166040519015158152f35b346102af5760003660031901126102af5760406025548151906001600160401b03908181168352831c166020820152f35b346102af5760003660031901126102af576020601a54604051908152f35b346102af5760403660031901126102af5761066c611b4f565b602435908115801590610728575b6106b0575b6040519182526001600160a01b031690339060008051602061264e83398151915290602090a3602060405160018152f35b3360005260016020526040600020546106cb83821015612386565b6001600160a01b0382169083338390036106e8575b50505061067f565b6106fc916106f78415156123cb565b611d66565b336000526001602052604060002055600052604060002061071e838254611d73565b90558280836106e0565b50336001600160a01b0382161461067a565b346102af5760403660031901126102af576060610761610758611b4f565b60243590611eb2565b9060405192835260208301526040820152f35b346102af5760403660031901126102af57602061079b610792611b4f565b6024359061212a565b604051908152f35b346102af5760003660031901126102af5760208054604051908152f35b346102af5760403660031901126102af576001600160401b036004358181116102af57366023820112156102af5780600401359182116109c35760405191610812601f8201601f191660200184611c79565b808352602083019136602483830101116102af57816000926024602093018537840101526024359161ffff831683036102af576101009182828051810103126102af5761085e90612023565b61086a60408301612410565b9161087760608201612410565b9460808201519460a08301519260c08101519160ff831683036102af5760e08201519101519184421161053757851561099d577f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e2665b6001600160a01b0388166000908152600460205260409020805490969060001981146105215761ffff6104c39761095a9960018401905560405194602086015216604084015260018060a01b038a16606084015260018060a01b038c1660808401528a60a084015260c083015260e082015260e0815261094b81611c42565b6020815191012061049261225c565b6001600160a01b038381169116036104dc5715610987576104da926001600160a01b0390811691166125f6565b6104da926001600160a01b0390811691166125a8565b7f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d66108cc565b634e487b7160e01b600052604160045260246000fd5b346102af5760003660031901126102af576005546040516001600160a01b039091168152602090f35b346102af5760003660031901126102af576020601b54604051908152f35b346102af5760203660031901126102af576001600160a01b03610a41611b4f565b1660005260246020526020604060002054604051908152f35b346102af5760003660031901126102af57601454604080516001600160801b038316815260809290921c602083015290f35b346102af5760403660031901126102af57610ab2610aa8611b4f565b60243590336125a8565b602060405160018152f35b346102af5760203660031901126102af576001600160a01b03610ade611b4f565b1660005260046020526020604060002054604051908152f35b346102af5760003660031901126102af57600f546040516001600160a01b039091168152602090f35b346102af5760003660031901126102af57604051601054816000610b4383611c08565b808352600193808516908115610c1b5750600114610bbb575b50610b6992500382611c79565b6040519081602080825282519081818401526000935b828510610ba2575050604092506000838284010152601f80199101168101030190f35b8481018201518686016040015293810193859350610b7f565b601060009081527f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae67294602093509091905b818310610c03575050610b69935082010184610b5c565b85548784018501529485019486945091830191610bec565b9050610b6994506020925060ff191682840152151560051b82010184610b5c565b346102af5760203660031901126102af5760043560098110156102af5760ff610c66602092611bd9565b54166040519015158152f35b346102af5760203660031901126102af576001600160a01b03610c93611b4f565b1660005260016020526020604060002054604051908152f35b346102af5760003660031901126102af57600a546040516001600160a01b039091168152602090f35b346102af5760003660031901126102af576020602754604051908152f35b346102af5760003660031901126102af576020601c54604051908152f35b346102af5760003660031901126102af576020602154604051908152f35b346102af5760003660031901126102af576006546001600160a01b039081811633819003610d9957806005549384167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a36001600160a01b03199283161760055516600655005b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b346102af5760203660031901126102af576001600160a01b03610dfe611b4f565b1660005260176020526020604060002054604051908152f35b346102af5760003660031901126102af576020601554604051908152f35b346102af5760003660031901126102af576020600e54604051908152f35b346102af5760003660031901126102af576020601654604051908152f35b346102af5760603660031901126102af57602061079b604435602435600435611d99565b346102af5760003660031901126102af576020601154604051908152f35b346102af5760003660031901126102af57600d546040516001600160a01b039091168152602090f35b346102af5760003660031901126102af576020601254604051908152f35b346102af5760003660031901126102af57602061079b61225c565b346102af5760003660031901126102af576020601954604051908152f35b346102af5760003660031901126102af576020601354604051908152f35b346102af5760603660031901126102af57610f6a611b4f565b610f72611b65565b6044359081610faf575b6040519182526001600160a01b0390811692169060008051602061264e83398151915290602090a3602060405160018152f35b60018060a01b03808416806000526020600181528460406000205493610fd782861015612386565b851693848403610fec575b5050505050610f7c565b836000526002835260406000203360005283526040600020546000198103611060575b50849261103760008051602061264e8339815191529795936001936106f760209915156123cb565b92600052526040600020556000526040600020611055858254611d73565b905591858481610fe2565b909181106110b557602094926110378860008051602061264e83398151915298969461108e82600196611d66565b8660005260028552604060002033600052855260406000205593509395975050929461100f565b60405162461bcd60e51b815260048101849052601860248201527745524332303a20616c6c6f77616e636520746f6f206c6f7760401b6044820152606490fd5b346102af5760003660031901126102af576020602a54604051908152f35b346102af5761112136611b8a565b9183919395949542116105375760018060a01b03928388169485600052600460205260406000209283546000198114610521576111c0956104c3956001830190556040519060208201927f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d68452600060408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e0815261048781611c42565b16036104dc576104da926125a8565b346102af5760203660031901126102af576001600160a01b036111f0611b4f565b1660005260186020526020604060002054604051908152f35b346102af5760003660031901126102af57602060405160008152f35b346102af5760403660031901126102af5760043560098110156102af5761124a611b7b565b6008549091906001600160a01b031633036113035760ff61126a82611bd9565b541615159115159182146112c957808260ff6112886112b794611bd9565b54161515827feeec81de25875ce1725479bb76f720a8defdb43dea041919ae37bb4aae9847c0600080a4611bd9565b9060ff80198354169116179055600080f35b60405162461bcd60e51b81526020600482015260126024820152714d61726b65743a2073616d6520737461746560701b6044820152606490fd5b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881d5b985d5d1a1bdc9a5e995960621b6044820152606490fd5b346102af576101803660031901126102af5760246001600160a01b038135818116908190036102af57604435916001600160401b03908184116102af57366023850112156102af5783600401359182116102af57368583860101116102af57606435918183168093036102af576113bb82600554163314611c9a565b60043594620186a0946113d086881115611ce5565b6020968088547fc353b09af857951dccce61b43a5854fc45beceed36c50e5d4cc2e71858a8e0df600080a3875580611783575b50868261163e575b505050816115fd575b5050608435806115e8575b5060a435806115d3575b5060c435806115bf575b5060e4358061159e575b50610104358061157d575b50610124358061154b575b506101443590816114db575b505061016435918261146d57005b601e54831061147d575050601f55005b9060326084926040519262461bcd60e51b845260048401528201527f4d61726b65743a206c69717569646174696f6e436f6c6c61746572616c697a616044820152711d1a5bdb94985d19481d1bdbc81cdb585b1b60721b6064820152fd5b6114e790821115611ce5565b601f5481116114fa57601e55828061145f565b5060256084926040519262461bcd60e51b845260048401528201527f4d61726b65743a20636f6c6c61746572616c697a6174696f6e5261746520746f6044820152646f2062696760d81b6064820152fd5b806016547fae6e0ab3b95f0a53ff9660a390ccedcbbf1f2355dce974a9841af106fddcfaba600080a360165583611453565b611588828210611ce5565b611595601b548211611ce5565b601c5583611448565b6115a9828210611ce5565b6115b6601c548210611ce5565b601b558361143d565b6115ca828210611ce5565b601d5583611433565b6115df82821115611ce5565b601a5583611429565b6115f482821115611ce5565b6019558361141f565b816008549182167f5a62d22209e370e38eea92cfddcd228e656e6ec139243392a760a7769f5877fd600080a36001600160a01b031916176008558380611414565b829161164b601054611c08565b601f811161172f575b50600090601f84116001146116bc576000936116af575b5050508160011b916000199060031b1c1916176010555b7fa6f004921c944d4b8bf6e38462b00f36a58d62495d56b51f571ab78f732c9815600080a185808661140b565b010135905086888061166b565b915092506010600052866000209088600094601f198516955b8a87821061171457505084600196106116f8575b50505050811b01601055611682565b60001960f88660031b161c1992010135169055878088816116e9565b8483019093013585556001909401938b9291820191016116d5565b91509150601060005286600020601f840160051c810188851061177c575b91849391601f8b94920160051c01905b81811061176a5750611654565b600081558594508a935060010161175d565b508061174d565b600f80546001600160a01b0319169190911790557f0b2d6eb667d0522c3eb86e4288afecae6c11591ffd1345d4d12407e0598bca9b600080a187611403565b346102af5760403660031901126102af57610ab26117de611b4f565b60243590336125f6565b346102af5760603660031901126102af57611801611b4f565b611809611b7b565b6044359081151582036102af5760018060a01b0392839161182f83600554163314611c9a565b156118d35716908115908115916118cb575b501561188e57806005549283167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a36001600160a01b031991821617600555600680549091169055005b60405162461bcd60e51b81526020600482015260156024820152744f776e61626c653a207a65726f206164647265737360581b6044820152606490fd5b905083611841565b9150501660018060a01b03196006541617600655600080f35b346102af5760003660031901126102af5760018060a01b03600f54166040519063d6d7d52560e01b825260209182600482015260009160105461192e81611c08565b908160248501526001908181169081600014611add5750600114611a9d575b50509060409181600081809603925af18015611a9157600091600091611a52575b5081156119f55780156119b95760409281601155817f9f9192b5edb17356c524e08d9e025c8e2f6307e6ea52fb7968faa3081f51c3c8600080a25b4260135583519215158352820152f35b60405162461bcd60e51b81526004810184905260146024820152734d61726b65743a20696e76616c6964207261746560601b6044820152606490fd5b50611a0560135460125490611d73565b4211611a16576011546040926119a9565b60405162461bcd60e51b815260048101839052601460248201527313585c9ad95d0e881c985d19481d1bdbc81bdb1960621b6044820152606490fd5b9150506040813d604011611a89575b81611a6e60409383611c79565b810103126102af5781611a8082612023565b9101518361196e565b3d9150611a61565b6040513d6000823e3d90fd5b935060106000528460002093856000955b838710611ac857505050509181016044019180604061194d565b80548688016044015295019486908201611aae565b60ff191660448087019190915292151560051b850190920194508291506040905061194d565b346102af5760403660031901126102af57602090611b1f611b4f565b611b27611b65565b9060018060a01b03809116600052600384526040600020911660005282526040600020548152f35b600435906001600160a01b03821682036102af57565b602435906001600160a01b03821682036102af57565b6024359081151582036102af57565b60e09060031901126102af576001600160a01b039060043582811681036102af579160243590811681036102af5790604435906064359060843560ff811681036102af579060a4359060c43590565b6009811015611bf2576000526007602052604060002090565b634e487b7160e01b600052602160045260246000fd5b90600182811c92168015611c38575b6020831014611c2257565b634e487b7160e01b600052602260045260246000fd5b91607f1691611c17565b61010081019081106001600160401b038211176109c357604052565b608081019081106001600160401b038211176109c357604052565b90601f801991011681019081106001600160401b038211176109c357604052565b15611ca157565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b15611cec57565b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881b9bdd081d985b1a59607a1b6044820152606490fd5b8181029291811591840414171561052157565b8115611d42570490565b634e487b7160e01b600052601260045260246000fd5b604d811161052157600a0a90565b9190820391821161052157565b9190820180921161052157565b8181039291600013801582851316918412161761052157565b601454919291611de291611dd391611dc991611dbf906001600160801b03831690611d25565b9060801c90611d38565b93601f5490611d25565b611ddc83611d58565b90611d38565b808310611eaa57611df6611e329184611d66565b91611e2d611e27611e1e601e54611e18611e0f86611d58565b60215490611d73565b90611d25565b611ddc84611d58565b91611d58565b611d80565b6509184e72a0009081810291818305149015171561052157670de0b6b3a764000091828102928184051490151715610521578015611d4257600160ff1b918083146000198314166105215705906000821215611ea357811461052157600003905b808211611e9e575090565b905090565b5090611e93565b505050600090565b9160018060a01b0380931691600093838552602060178152604091828720549081156120165783518481018181106001600160401b03821117612002578552888152888480830193828552611f08891515612030565b600954166064600c548c85526018845289852054928a51958694859363442c159960e01b85526004850152602484015260448301525afa908115611ff8578a91611fc5575b50611fb9979899949260189492611f9c611f878a611f82611f79611fa597620186a06022540490611d25565b601e5490611d25565b611d38565b915191946001600160801b0392831690611d25565b91511690611d38565b818110611fbd57035b97835252205461207c565b9091565b505082611fae565b90508481813d8311611ff1575b611fdc8183611c79565b81010312611fed5751611fb9611f4d565b8980fd5b503d611fd2565b86513d8c823e3d90fd5b634e487b7160e01b8a52604160045260248afd5b5086955085949350505050565b519081151582036102af57565b1561203757565b60405162461bcd60e51b815260206004820152601e60248201527f4d61726b65743a2065786368616e676552617465206e6f742076616c696400006044820152606490fd5b612087821515612030565b602060018060a01b0360095416916064600c54604051948593849263442c159960e01b845260048401526024830152600060448301525afa908115611a91576000916120f4575b5090611f826120e09260225490611d25565b620186a06120f0601e5483611d25565b0491565b906020823d8211612122575b8161210d60209383611c79565b8101031261211f575051611f826120ce565b80fd5b3d9150612100565b6001600160a01b0316600081815260186020526040812054909261214d9161207c565b91835260176020526040832054801561225657811561225657818110612256578281101561224c576014546121969183916106f791611dbf906001600160801b03831690611d25565b90620186a09283830292808404851490151715612238576121bb9291611ddc91611d66565b91601b5491601c54936121ce8585611d80565b80820291848212600160ff1b82141661223857818305149015171561222457058184820194851291129080158216911516176122105750808212611e9e575090565b634e487b7160e01b81526011600452602490fd5b634e487b7160e01b83526011600452602483fd5b634e487b7160e01b85526011600452602485fd5b50505050601b5490565b50505090565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316148061235d575b156122b7577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f000000000000000000000000000000000000000000000000000000000000000082527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a0815260c081018181106001600160401b038211176109c35760405251902090565b507f0000000000000000000000000000000000000000000000000000000000000000461461228e565b1561238d57565b60405162461bcd60e51b815260206004820152601660248201527545524332303a2062616c616e636520746f6f206c6f7760501b6044820152606490fd5b156123d257565b60405162461bcd60e51b815260206004820152601660248201527545524332303a206e6f207a65726f206164647265737360501b6044820152606490fd5b51906001600160a01b03821682036102af57565b6005811015611bf257806124355750565b6001810361247d5760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b6044820152606490fd5b600281036124ca5760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606490fd5b6003146124d357565b60405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608490fd5b9291906fa2a8918ca85bafe22016d0b997e4df60600160ff1b03831161259c5791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa1561258f5781516001600160a01b03811615612589579190565b50600190565b50604051903d90823e3d90fd5b50505050600090600390565b7fe50de2333c10a9502fcb1d8ae13a51bbf423153dfc63c2b8997665b32154afc360018060a01b038092169160009083825260036020526040822094169384825260205284604082205580a4565b909160207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259160018060a01b03809416938460005260028352604060002095169485600052825280604060002055604051908152a356feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220cef69c40fb4296475ba7bcb509e584a5593e3543945ad8150b372ea5fb30509764736f6c63430008120033", - "deployedBytecode": "0x608080604052600436101561001357600080fd5b60003560e01c908162a02a2014611b035750806302ce728f146118ec578063078dfbe7146117e8578063095ea7b3146117c25780630996efb71461133f5780630c4e84f01461122557806318160ddd146112095780631c9e379b146111cf5780631da8bf10146111135780631fb8f81a146110f557806323b872dd14610f51578063331960ff14610f3357806334d441d014610f155780633644e51514610efa57806337b6b7b914610edc57806338d52e0f14610eb35780633ba0b9a914610e955780633f741adb14610e7157806340626d8b14610e5357806344de240a14610e35578063473e3ce714610e1757806348e4163e14610ddd5780634e71e0c814610d2f578063529898f214610d115780635793546214610cf35780636b19ad1614610cd55780636c3d8b8f14610cac57806370a0823114610c725780637277854714610c3c57806374645ff314610b205780637dc0d1d014610af75780637ecebe0014610abd5780637fa0b84e14610a8c5780638285ef4014610a5a57806387b2793714610a205780638c5d0ed314610a025780638da5cb5b146109d9578063910dd7c8146107c0578063959916dc146107a357806399a97028146107745780639e15e89f1461073a578063a9059cbb14610653578063b0e21e8a14610635578063b27c0e7414610604578063b7113f19146105e1578063bb4cfe3b146105c3578063bde39c5d146105a5578063ce8849ed1461057c578063d505accf146103da578063d8dfeb45146103b1578063dd62ed3e14610360578063de40657714610337578063e0996cb614610319578063e30c3978146102f0578063ea64dd56146102d2578063eec0f42e146102b45763f791395d1461029157600080fd5b346102af5760003660031901126102af576020602854604051908152f35b600080fd5b346102af5760003660031901126102af576020600c54604051908152f35b346102af5760003660031901126102af576020601f54604051908152f35b346102af5760003660031901126102af576006546040516001600160a01b039091168152602090f35b346102af5760003660031901126102af576020601d54604051908152f35b346102af5760003660031901126102af576009546040516001600160a01b039091168152602090f35b346102af5760403660031901126102af57610379611b4f565b610381611b65565b9060018060a01b038091166000526002602052604060002091166000526020526020604060002054604051908152f35b346102af5760003660031901126102af57600b546040516001600160a01b039091168152602090f35b346102af576103e836611b8a565b9183919395949542116105375760018060a01b03928388169485600052600460205260406000209283546000198114610521576104cb956104c3956001830190556040519060208201927f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e2668452600060408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e0815261048781611c42565b51902061049261225c565b9060405190602082019261190160f01b845260228301526042820152604281526104bb81611c5e565b519020612523565b919091612424565b16036104dc576104da926125f6565b005b60405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152606490fd5b634e487b7160e01b600052601160045260246000fd5b60405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b346102af5760003660031901126102af576008546040516001600160a01b039091168152602090f35b346102af5760003660031901126102af576020602954604051908152f35b346102af5760003660031901126102af576020601e54604051908152f35b346102af5760003660031901126102af57602060ff602654166040519015158152f35b346102af5760003660031901126102af5760406025548151906001600160401b03908181168352831c166020820152f35b346102af5760003660031901126102af576020601a54604051908152f35b346102af5760403660031901126102af5761066c611b4f565b602435908115801590610728575b6106b0575b6040519182526001600160a01b031690339060008051602061264e83398151915290602090a3602060405160018152f35b3360005260016020526040600020546106cb83821015612386565b6001600160a01b0382169083338390036106e8575b50505061067f565b6106fc916106f78415156123cb565b611d66565b336000526001602052604060002055600052604060002061071e838254611d73565b90558280836106e0565b50336001600160a01b0382161461067a565b346102af5760403660031901126102af576060610761610758611b4f565b60243590611eb2565b9060405192835260208301526040820152f35b346102af5760403660031901126102af57602061079b610792611b4f565b6024359061212a565b604051908152f35b346102af5760003660031901126102af5760208054604051908152f35b346102af5760403660031901126102af576001600160401b036004358181116102af57366023820112156102af5780600401359182116109c35760405191610812601f8201601f191660200184611c79565b808352602083019136602483830101116102af57816000926024602093018537840101526024359161ffff831683036102af576101009182828051810103126102af5761085e90612023565b61086a60408301612410565b9161087760608201612410565b9460808201519460a08301519260c08101519160ff831683036102af5760e08201519101519184421161053757851561099d577f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e2665b6001600160a01b0388166000908152600460205260409020805490969060001981146105215761ffff6104c39761095a9960018401905560405194602086015216604084015260018060a01b038a16606084015260018060a01b038c1660808401528a60a084015260c083015260e082015260e0815261094b81611c42565b6020815191012061049261225c565b6001600160a01b038381169116036104dc5715610987576104da926001600160a01b0390811691166125f6565b6104da926001600160a01b0390811691166125a8565b7f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d66108cc565b634e487b7160e01b600052604160045260246000fd5b346102af5760003660031901126102af576005546040516001600160a01b039091168152602090f35b346102af5760003660031901126102af576020601b54604051908152f35b346102af5760203660031901126102af576001600160a01b03610a41611b4f565b1660005260246020526020604060002054604051908152f35b346102af5760003660031901126102af57601454604080516001600160801b038316815260809290921c602083015290f35b346102af5760403660031901126102af57610ab2610aa8611b4f565b60243590336125a8565b602060405160018152f35b346102af5760203660031901126102af576001600160a01b03610ade611b4f565b1660005260046020526020604060002054604051908152f35b346102af5760003660031901126102af57600f546040516001600160a01b039091168152602090f35b346102af5760003660031901126102af57604051601054816000610b4383611c08565b808352600193808516908115610c1b5750600114610bbb575b50610b6992500382611c79565b6040519081602080825282519081818401526000935b828510610ba2575050604092506000838284010152601f80199101168101030190f35b8481018201518686016040015293810193859350610b7f565b601060009081527f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae67294602093509091905b818310610c03575050610b69935082010184610b5c565b85548784018501529485019486945091830191610bec565b9050610b6994506020925060ff191682840152151560051b82010184610b5c565b346102af5760203660031901126102af5760043560098110156102af5760ff610c66602092611bd9565b54166040519015158152f35b346102af5760203660031901126102af576001600160a01b03610c93611b4f565b1660005260016020526020604060002054604051908152f35b346102af5760003660031901126102af57600a546040516001600160a01b039091168152602090f35b346102af5760003660031901126102af576020602754604051908152f35b346102af5760003660031901126102af576020601c54604051908152f35b346102af5760003660031901126102af576020602154604051908152f35b346102af5760003660031901126102af576006546001600160a01b039081811633819003610d9957806005549384167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a36001600160a01b03199283161760055516600655005b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b346102af5760203660031901126102af576001600160a01b03610dfe611b4f565b1660005260176020526020604060002054604051908152f35b346102af5760003660031901126102af576020601554604051908152f35b346102af5760003660031901126102af576020600e54604051908152f35b346102af5760003660031901126102af576020601654604051908152f35b346102af5760603660031901126102af57602061079b604435602435600435611d99565b346102af5760003660031901126102af576020601154604051908152f35b346102af5760003660031901126102af57600d546040516001600160a01b039091168152602090f35b346102af5760003660031901126102af576020601254604051908152f35b346102af5760003660031901126102af57602061079b61225c565b346102af5760003660031901126102af576020601954604051908152f35b346102af5760003660031901126102af576020601354604051908152f35b346102af5760603660031901126102af57610f6a611b4f565b610f72611b65565b6044359081610faf575b6040519182526001600160a01b0390811692169060008051602061264e83398151915290602090a3602060405160018152f35b60018060a01b03808416806000526020600181528460406000205493610fd782861015612386565b851693848403610fec575b5050505050610f7c565b836000526002835260406000203360005283526040600020546000198103611060575b50849261103760008051602061264e8339815191529795936001936106f760209915156123cb565b92600052526040600020556000526040600020611055858254611d73565b905591858481610fe2565b909181106110b557602094926110378860008051602061264e83398151915298969461108e82600196611d66565b8660005260028552604060002033600052855260406000205593509395975050929461100f565b60405162461bcd60e51b815260048101849052601860248201527745524332303a20616c6c6f77616e636520746f6f206c6f7760401b6044820152606490fd5b346102af5760003660031901126102af576020602a54604051908152f35b346102af5761112136611b8a565b9183919395949542116105375760018060a01b03928388169485600052600460205260406000209283546000198114610521576111c0956104c3956001830190556040519060208201927f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d68452600060408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e0815261048781611c42565b16036104dc576104da926125a8565b346102af5760203660031901126102af576001600160a01b036111f0611b4f565b1660005260186020526020604060002054604051908152f35b346102af5760003660031901126102af57602060405160008152f35b346102af5760403660031901126102af5760043560098110156102af5761124a611b7b565b6008549091906001600160a01b031633036113035760ff61126a82611bd9565b541615159115159182146112c957808260ff6112886112b794611bd9565b54161515827feeec81de25875ce1725479bb76f720a8defdb43dea041919ae37bb4aae9847c0600080a4611bd9565b9060ff80198354169116179055600080f35b60405162461bcd60e51b81526020600482015260126024820152714d61726b65743a2073616d6520737461746560701b6044820152606490fd5b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881d5b985d5d1a1bdc9a5e995960621b6044820152606490fd5b346102af576101803660031901126102af5760246001600160a01b038135818116908190036102af57604435916001600160401b03908184116102af57366023850112156102af5783600401359182116102af57368583860101116102af57606435918183168093036102af576113bb82600554163314611c9a565b60043594620186a0946113d086881115611ce5565b6020968088547fc353b09af857951dccce61b43a5854fc45beceed36c50e5d4cc2e71858a8e0df600080a3875580611783575b50868261163e575b505050816115fd575b5050608435806115e8575b5060a435806115d3575b5060c435806115bf575b5060e4358061159e575b50610104358061157d575b50610124358061154b575b506101443590816114db575b505061016435918261146d57005b601e54831061147d575050601f55005b9060326084926040519262461bcd60e51b845260048401528201527f4d61726b65743a206c69717569646174696f6e436f6c6c61746572616c697a616044820152711d1a5bdb94985d19481d1bdbc81cdb585b1b60721b6064820152fd5b6114e790821115611ce5565b601f5481116114fa57601e55828061145f565b5060256084926040519262461bcd60e51b845260048401528201527f4d61726b65743a20636f6c6c61746572616c697a6174696f6e5261746520746f6044820152646f2062696760d81b6064820152fd5b806016547fae6e0ab3b95f0a53ff9660a390ccedcbbf1f2355dce974a9841af106fddcfaba600080a360165583611453565b611588828210611ce5565b611595601b548211611ce5565b601c5583611448565b6115a9828210611ce5565b6115b6601c548210611ce5565b601b558361143d565b6115ca828210611ce5565b601d5583611433565b6115df82821115611ce5565b601a5583611429565b6115f482821115611ce5565b6019558361141f565b816008549182167f5a62d22209e370e38eea92cfddcd228e656e6ec139243392a760a7769f5877fd600080a36001600160a01b031916176008558380611414565b829161164b601054611c08565b601f811161172f575b50600090601f84116001146116bc576000936116af575b5050508160011b916000199060031b1c1916176010555b7fa6f004921c944d4b8bf6e38462b00f36a58d62495d56b51f571ab78f732c9815600080a185808661140b565b010135905086888061166b565b915092506010600052866000209088600094601f198516955b8a87821061171457505084600196106116f8575b50505050811b01601055611682565b60001960f88660031b161c1992010135169055878088816116e9565b8483019093013585556001909401938b9291820191016116d5565b91509150601060005286600020601f840160051c810188851061177c575b91849391601f8b94920160051c01905b81811061176a5750611654565b600081558594508a935060010161175d565b508061174d565b600f80546001600160a01b0319169190911790557f0b2d6eb667d0522c3eb86e4288afecae6c11591ffd1345d4d12407e0598bca9b600080a187611403565b346102af5760403660031901126102af57610ab26117de611b4f565b60243590336125f6565b346102af5760603660031901126102af57611801611b4f565b611809611b7b565b6044359081151582036102af5760018060a01b0392839161182f83600554163314611c9a565b156118d35716908115908115916118cb575b501561188e57806005549283167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a36001600160a01b031991821617600555600680549091169055005b60405162461bcd60e51b81526020600482015260156024820152744f776e61626c653a207a65726f206164647265737360581b6044820152606490fd5b905083611841565b9150501660018060a01b03196006541617600655600080f35b346102af5760003660031901126102af5760018060a01b03600f54166040519063d6d7d52560e01b825260209182600482015260009160105461192e81611c08565b908160248501526001908181169081600014611add5750600114611a9d575b50509060409181600081809603925af18015611a9157600091600091611a52575b5081156119f55780156119b95760409281601155817f9f9192b5edb17356c524e08d9e025c8e2f6307e6ea52fb7968faa3081f51c3c8600080a25b4260135583519215158352820152f35b60405162461bcd60e51b81526004810184905260146024820152734d61726b65743a20696e76616c6964207261746560601b6044820152606490fd5b50611a0560135460125490611d73565b4211611a16576011546040926119a9565b60405162461bcd60e51b815260048101839052601460248201527313585c9ad95d0e881c985d19481d1bdbc81bdb1960621b6044820152606490fd5b9150506040813d604011611a89575b81611a6e60409383611c79565b810103126102af5781611a8082612023565b9101518361196e565b3d9150611a61565b6040513d6000823e3d90fd5b935060106000528460002093856000955b838710611ac857505050509181016044019180604061194d565b80548688016044015295019486908201611aae565b60ff191660448087019190915292151560051b850190920194508291506040905061194d565b346102af5760403660031901126102af57602090611b1f611b4f565b611b27611b65565b9060018060a01b03809116600052600384526040600020911660005282526040600020548152f35b600435906001600160a01b03821682036102af57565b602435906001600160a01b03821682036102af57565b6024359081151582036102af57565b60e09060031901126102af576001600160a01b039060043582811681036102af579160243590811681036102af5790604435906064359060843560ff811681036102af579060a4359060c43590565b6009811015611bf2576000526007602052604060002090565b634e487b7160e01b600052602160045260246000fd5b90600182811c92168015611c38575b6020831014611c2257565b634e487b7160e01b600052602260045260246000fd5b91607f1691611c17565b61010081019081106001600160401b038211176109c357604052565b608081019081106001600160401b038211176109c357604052565b90601f801991011681019081106001600160401b038211176109c357604052565b15611ca157565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b15611cec57565b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881b9bdd081d985b1a59607a1b6044820152606490fd5b8181029291811591840414171561052157565b8115611d42570490565b634e487b7160e01b600052601260045260246000fd5b604d811161052157600a0a90565b9190820391821161052157565b9190820180921161052157565b8181039291600013801582851316918412161761052157565b601454919291611de291611dd391611dc991611dbf906001600160801b03831690611d25565b9060801c90611d38565b93601f5490611d25565b611ddc83611d58565b90611d38565b808310611eaa57611df6611e329184611d66565b91611e2d611e27611e1e601e54611e18611e0f86611d58565b60215490611d73565b90611d25565b611ddc84611d58565b91611d58565b611d80565b6509184e72a0009081810291818305149015171561052157670de0b6b3a764000091828102928184051490151715610521578015611d4257600160ff1b918083146000198314166105215705906000821215611ea357811461052157600003905b808211611e9e575090565b905090565b5090611e93565b505050600090565b9160018060a01b0380931691600093838552602060178152604091828720549081156120165783518481018181106001600160401b03821117612002578552888152888480830193828552611f08891515612030565b600954166064600c548c85526018845289852054928a51958694859363442c159960e01b85526004850152602484015260448301525afa908115611ff8578a91611fc5575b50611fb9979899949260189492611f9c611f878a611f82611f79611fa597620186a06022540490611d25565b601e5490611d25565b611d38565b915191946001600160801b0392831690611d25565b91511690611d38565b818110611fbd57035b97835252205461207c565b9091565b505082611fae565b90508481813d8311611ff1575b611fdc8183611c79565b81010312611fed5751611fb9611f4d565b8980fd5b503d611fd2565b86513d8c823e3d90fd5b634e487b7160e01b8a52604160045260248afd5b5086955085949350505050565b519081151582036102af57565b1561203757565b60405162461bcd60e51b815260206004820152601e60248201527f4d61726b65743a2065786368616e676552617465206e6f742076616c696400006044820152606490fd5b612087821515612030565b602060018060a01b0360095416916064600c54604051948593849263442c159960e01b845260048401526024830152600060448301525afa908115611a91576000916120f4575b5090611f826120e09260225490611d25565b620186a06120f0601e5483611d25565b0491565b906020823d8211612122575b8161210d60209383611c79565b8101031261211f575051611f826120ce565b80fd5b3d9150612100565b6001600160a01b0316600081815260186020526040812054909261214d9161207c565b91835260176020526040832054801561225657811561225657818110612256578281101561224c576014546121969183916106f791611dbf906001600160801b03831690611d25565b90620186a09283830292808404851490151715612238576121bb9291611ddc91611d66565b91601b5491601c54936121ce8585611d80565b80820291848212600160ff1b82141661223857818305149015171561222457058184820194851291129080158216911516176122105750808212611e9e575090565b634e487b7160e01b81526011600452602490fd5b634e487b7160e01b83526011600452602483fd5b634e487b7160e01b85526011600452602485fd5b50505050601b5490565b50505090565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316148061235d575b156122b7577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f000000000000000000000000000000000000000000000000000000000000000082527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a0815260c081018181106001600160401b038211176109c35760405251902090565b507f0000000000000000000000000000000000000000000000000000000000000000461461228e565b1561238d57565b60405162461bcd60e51b815260206004820152601660248201527545524332303a2062616c616e636520746f6f206c6f7760501b6044820152606490fd5b156123d257565b60405162461bcd60e51b815260206004820152601660248201527545524332303a206e6f207a65726f206164647265737360501b6044820152606490fd5b51906001600160a01b03821682036102af57565b6005811015611bf257806124355750565b6001810361247d5760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b6044820152606490fd5b600281036124ca5760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606490fd5b6003146124d357565b60405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608490fd5b9291906fa2a8918ca85bafe22016d0b997e4df60600160ff1b03831161259c5791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa1561258f5781516001600160a01b03811615612589579190565b50600190565b50604051903d90823e3d90fd5b50505050600090600390565b7fe50de2333c10a9502fcb1d8ae13a51bbf423153dfc63c2b8997665b32154afc360018060a01b038092169160009083825260036020526040822094169384825260205284604082205580a4565b909160207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259160018060a01b03809416938460005260028352604060002095169485600052825280604060002055604051908152a356feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220cef69c40fb4296475ba7bcb509e584a5593e3543945ad8150b372ea5fb30509764736f6c63430008120033", + "bytecode": "0x61014080604052346200018a5762000017816200018f565b600f81526001602082016e546170696f63612042696742616e6760881b8152602060405162000046816200018f565b8381520192603160f81b845251902091208160e052610100918183524660a0526040519160208301907f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f92838352604085015260608401524660808401523060a084015260a0835260c083019280841060018060401b03851117620001745760408490525190206080523060c052610120908152600580546001600160a01b0319163390811790915560007f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a362013880601b5562015f90601c55612710601d55612ee06020556103e8602d556127b29283620001ac843960805183612384015260a0518361244f015260c0518361234e015260e051836123d3015251826123f9015251816123b00152f35b634e487b7160e01b600052604160045260246000fd5b600080fd5b604081019081106001600160401b03821117620001745760405256fe608080604052600436101561001357600080fd5b60003560e01c908162a02a2014611ba95750806302ce728f14611992578063078dfbe71461188e578063095ea7b3146118685780630c4e84f01461174e57806318160ddd146117325780631c9e379b146116f85780631d4d3a5d146116cf5780631da8bf10146116135780631fb8f81a146115f557806323b872dd14611451578063331960ff1461143357806334d441d0146114155780633644e515146113fa57806337b6b7b9146113dc57806338d52e0f146113b35780633ba0b9a9146113955780633f741adb1461137157806340626d8b1461135357806344de240a14611335578063473e3ce71461131757806348e4163e146112dd5780634e71e0c81461122f578063529898f214611212578063542afda3146111f457806357935462146111d65780636b19ad16146111b85780636c3d8b8f1461118f57806370a0823114611155578063727785471461111f57806374645ff31461108c57806374c9e4811461106e5780637dc0d1d0146110455780637ecebe001461100b5780637fa0b84e14610fda5780638285ef4014610fa857806387b2793714610f6e5780638c5d0ed314610f505780638da5cb5b14610f27578063910dd7c814610d0e578063932bc4f814610c3057806399a9702814610c015780639e15e89f14610bc7578063a9059cbb14610ae0578063b0e21e8a14610ac2578063b27c0e7414610a91578063b7113f1914610a6e578063bb4cfe3b14610a50578063bde39c5d14610a32578063ce8849ed14610a09578063d3fb2a381461059d578063d505accf146103fb578063d8dfeb45146103d2578063dd62ed3e14610381578063de40657714610358578063e0996cb61461033a578063e30c397814610311578063ea64dd56146102f3578063eec0f42e146102d55763f791395d146102b257600080fd5b346102d05760003660031901126102d0576020602754604051908152f35b600080fd5b346102d05760003660031901126102d0576020600c54604051908152f35b346102d05760003660031901126102d0576020601f54604051908152f35b346102d05760003660031901126102d0576006546040516001600160a01b039091168152602090f35b346102d05760003660031901126102d0576020601d54604051908152f35b346102d05760003660031901126102d0576009546040516001600160a01b039091168152602090f35b346102d05760403660031901126102d05761039a611bf5565b6103a2611c0b565b9060018060a01b038091166000526002602052604060002091166000526020526020604060002054604051908152f35b346102d05760003660031901126102d057600b546040516001600160a01b039091168152602090f35b346102d05761040936611c30565b9183919395949542116105585760018060a01b03928388169485600052600460205260406000209283546000198114610542576104ec956104e4956001830190556040519060208201927f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e2668452600060408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e081526104a881611ce8565b5190206104b361234b565b9060405190602082019261190160f01b845260228301526042820152604281526104dc81611d04565b519020612612565b919091612513565b16036104fd576104fb926126e5565b005b60405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152606490fd5b634e487b7160e01b600052601160045260246000fd5b60405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b346102d0576101603660031901126102d0576001600160a01b03600435818116908190036102d0576024916001600160401b0383358181116102d057366023820112156102d05780600401359182116102d057368583830101116102d057604435938385168095036102d05761061884600554163314611d89565b806109ca575b508482610868575b50505081610827575b50506064358061080f575b50608435806107f7575b5060a435806107e0575b5060c435806107bc575b5060e43580610798575b506101043580610766575b5061012435806106f3575b5061014435908161068557005b601e5482106106945750601f55005b60849060326040519162461bcd60e51b8352602060048401528201527f4d61726b65743a206c69717569646174696f6e436f6c6c61746572616c697a616044820152711d1a5bdb94985d19481d1bdbc81cdb585b1b60721b6064820152fd5b610702620186a0821115611dd4565b601f54811161071457601e5581610678565b60405162461bcd60e51b8152602060048201526025818401527f4d61726b65743a20636f6c6c61746572616c697a6174696f6e5261746520746f6044820152646f2062696760d81b6064820152608490fd5b806016547fae6e0ab3b95f0a53ff9660a390ccedcbbf1f2355dce974a9841af106fddcfaba600080a36016558161066d565b6107a6620186a08210611dd4565b6107b3601b548211611dd4565b601c5581610662565b6107ca620186a08210611dd4565b6107d7601c548210611dd4565b601b5581610658565b6107ee620186a08210611dd4565b601d558161064e565b610806620186a0821115611dd4565b601a5581610644565b61081e620186a0821115611dd4565b6019558161063a565b816008549182167f5a62d22209e370e38eea92cfddcd228e656e6ec139243392a760a7769f5877fd600080a36001600160a01b03191617600855818061062f565b8291610875601054611cae565b601f8111610969575b50600090601f84116001146108e6576000936108d9575b5050508160011b916000199060031b1c1916176010555b7fa6f004921c944d4b8bf6e38462b00f36a58d62495d56b51f571ab78f732c9815600080a1838084610626565b0101359050848680610895565b60106000908152601f198516955060008051602061275d83398151915293509091889160205b87821061094a575050846001961061092e575b50505050811b016010556108ac565b60001960f88660031b161c19920101351690558580868161091f565b828501909301358555600194909401938992918201919081019061090c565b6010600052909250905060008051602061275d833981519152601f840160051c8101602085106109c3575b91849391601f8994920160051c01905b8181106109b1575061087e565b600081558594508893506001016109a4565b5080610994565b600f80546001600160a01b0319169190911790557f0b2d6eb667d0522c3eb86e4288afecae6c11591ffd1345d4d12407e0598bca9b600080a18561061e565b346102d05760003660031901126102d0576008546040516001600160a01b039091168152602090f35b346102d05760003660031901126102d0576020602854604051908152f35b346102d05760003660031901126102d0576020601e54604051908152f35b346102d05760003660031901126102d057602060ff602554166040519015158152f35b346102d05760003660031901126102d05760406024548151906001600160401b03908181168352831c166020820152f35b346102d05760003660031901126102d0576020601a54604051908152f35b346102d05760403660031901126102d057610af9611bf5565b602435908115801590610bb5575b610b3d575b6040519182526001600160a01b031690339060008051602061273d83398151915290602090a3602060405160018152f35b336000526001602052604060002054610b5883821015612475565b6001600160a01b038216908333839003610b75575b505050610b0c565b610b8991610b848415156124ba565b611e55565b3360005260016020526040600020556000526040600020610bab838254611e62565b9055828083610b6d565b50336001600160a01b03821614610b07565b346102d05760403660031901126102d0576060610bee610be5611bf5565b60243590611fa1565b9060405192835260208301526040820152f35b346102d05760403660031901126102d0576020610c28610c1f611bf5565b60243590612219565b604051908152f35b346102d05760003660031901126102d057604051600090602b54610c5381611cae565b808352600191808316908115610ce65750600114610c8c575b610c8883610c7c81870382611d1f565b60405191829182611d40565b0390f35b602b600090815260209450917f11c44e4875b74d31ff9fd779bf2566af7bd15b87fc985d01f5094b89e3669e4f5b828410610cd357505050810190910190610c7c81610c6c565b8054858501870152928501928101610cba565b610c889550610c7c93506020915091849260ff191682840152151560051b8201019350610c6c565b346102d05760403660031901126102d0576001600160401b036004358181116102d057366023820112156102d0578060040135918211610f115760405191610d60601f8201601f191660200184611d1f565b808352602083019136602483830101116102d057816000926024602093018537840101526024359161ffff831683036102d0576101009182828051810103126102d057610dac90612112565b610db8604083016124ff565b91610dc5606082016124ff565b9460808201519460a08301519260c08101519160ff831683036102d05760e082015191015191844211610558578515610eeb577f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e2665b6001600160a01b0388166000908152600460205260409020805490969060001981146105425761ffff6104e497610ea89960018401905560405194602086015216604084015260018060a01b038a16606084015260018060a01b038c1660808401528a60a084015260c083015260e082015260e08152610e9981611ce8565b602081519101206104b361234b565b6001600160a01b038381169116036104fd5715610ed5576104fb926001600160a01b0390811691166126e5565b6104fb926001600160a01b039081169116612697565b7f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d6610e1a565b634e487b7160e01b600052604160045260246000fd5b346102d05760003660031901126102d0576005546040516001600160a01b039091168152602090f35b346102d05760003660031901126102d0576020601b54604051908152f35b346102d05760203660031901126102d0576001600160a01b03610f8f611bf5565b1660005260236020526020604060002054604051908152f35b346102d05760003660031901126102d057601454604080516001600160801b038316815260809290921c602083015290f35b346102d05760403660031901126102d057611000610ff6611bf5565b6024359033612697565b602060405160018152f35b346102d05760203660031901126102d0576001600160a01b0361102c611bf5565b1660005260046020526020604060002054604051908152f35b346102d05760003660031901126102d057600f546040516001600160a01b039091168152602090f35b346102d05760003660031901126102d0576020602d54604051908152f35b346102d05760003660031901126102d0576040516000906010546110af81611cae565b808352600191808316908115610ce657506001146110d757610c8883610c7c81870382611d1f565b60106000908152602094509160008051602061275d8339815191525b82841061110c57505050810190910190610c7c81610c6c565b80548585018701529285019281016110f3565b346102d05760203660031901126102d05760043560098110156102d05760ff611149602092611c7f565b54166040519015158152f35b346102d05760203660031901126102d0576001600160a01b03611176611bf5565b1660005260016020526020604060002054604051908152f35b346102d05760003660031901126102d057600a546040516001600160a01b039091168152602090f35b346102d05760003660031901126102d0576020602654604051908152f35b346102d05760003660031901126102d0576020601c54604051908152f35b346102d05760003660031901126102d0576020602c54604051908152f35b346102d05760003660031901126102d05760208054604051908152f35b346102d05760003660031901126102d0576006546001600160a01b03908181163381900361129957806005549384167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a36001600160a01b03199283161760055516600655005b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b346102d05760203660031901126102d0576001600160a01b036112fe611bf5565b1660005260176020526020604060002054604051908152f35b346102d05760003660031901126102d0576020601554604051908152f35b346102d05760003660031901126102d0576020600e54604051908152f35b346102d05760003660031901126102d0576020601654604051908152f35b346102d05760603660031901126102d0576020610c28604435602435600435611e88565b346102d05760003660031901126102d0576020601154604051908152f35b346102d05760003660031901126102d057600d546040516001600160a01b039091168152602090f35b346102d05760003660031901126102d0576020601254604051908152f35b346102d05760003660031901126102d0576020610c2861234b565b346102d05760003660031901126102d0576020601954604051908152f35b346102d05760003660031901126102d0576020601354604051908152f35b346102d05760603660031901126102d05761146a611bf5565b611472611c0b565b60443590816114af575b6040519182526001600160a01b0390811692169060008051602061273d83398151915290602090a3602060405160018152f35b60018060a01b038084168060005260206001815284604060002054936114d782861015612475565b8516938484036114ec575b505050505061147c565b836000526002835260406000203360005283526040600020546000198103611560575b50849261153760008051602061273d833981519152979593600193610b8460209915156124ba565b92600052526040600020556000526040600020611555858254611e62565b9055918584816114e2565b909181106115b557602094926115378860008051602061273d83398151915298969461158e82600196611e55565b8660005260028552604060002033600052855260406000205593509395975050929461150f565b60405162461bcd60e51b815260048101849052601860248201527745524332303a20616c6c6f77616e636520746f6f206c6f7760401b6044820152606490fd5b346102d05760003660031901126102d0576020602954604051908152f35b346102d05761162136611c30565b9183919395949542116105585760018060a01b03928388169485600052600460205260406000209283546000198114610542576116c0956104e4956001830190556040519060208201927f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d68452600060408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e081526104a881611ce8565b16036104fd576104fb92612697565b346102d05760003660031901126102d057602a546040516001600160a01b039091168152602090f35b346102d05760203660031901126102d0576001600160a01b03611719611bf5565b1660005260186020526020604060002054604051908152f35b346102d05760003660031901126102d057602060405160008152f35b346102d05760403660031901126102d05760043560098110156102d057611773611c21565b6008549091906001600160a01b0316330361182c5760ff61179382611c7f565b541615159115159182146117f257808260ff6117b16117e094611c7f565b54161515827feeec81de25875ce1725479bb76f720a8defdb43dea041919ae37bb4aae9847c0600080a4611c7f565b9060ff80198354169116179055600080f35b60405162461bcd60e51b81526020600482015260126024820152714d61726b65743a2073616d6520737461746560701b6044820152606490fd5b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881d5b985d5d1a1bdc9a5e995960621b6044820152606490fd5b346102d05760403660031901126102d057611000611884611bf5565b60243590336126e5565b346102d05760603660031901126102d0576118a7611bf5565b6118af611c21565b6044359081151582036102d05760018060a01b039283916118d583600554163314611d89565b15611979571690811590811591611971575b501561193457806005549283167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a36001600160a01b031991821617600555600680549091169055005b60405162461bcd60e51b81526020600482015260156024820152744f776e61626c653a207a65726f206164647265737360581b6044820152606490fd5b9050836118e7565b9150501660018060a01b03196006541617600655600080f35b346102d05760003660031901126102d05760018060a01b03600f54166040519063d6d7d52560e01b82526020918260048201526000916010546119d481611cae565b908160248501526001908181169081600014611b835750600114611b43575b50509060409181600081809603925af18015611b3757600091600091611af8575b508115611a9b578015611a5f5760409281601155817f9f9192b5edb17356c524e08d9e025c8e2f6307e6ea52fb7968faa3081f51c3c8600080a25b4260135583519215158352820152f35b60405162461bcd60e51b81526004810184905260146024820152734d61726b65743a20696e76616c6964207261746560601b6044820152606490fd5b50611aab60135460125490611e62565b4211611abc57601154604092611a4f565b60405162461bcd60e51b815260048101839052601460248201527313585c9ad95d0e881c985d19481d1bdbc81bdb1960621b6044820152606490fd5b9150506040813d604011611b2f575b81611b1460409383611d1f565b810103126102d05781611b2682612112565b91015183611a14565b3d9150611b07565b6040513d6000823e3d90fd5b935060106000528460002093856000955b838710611b6e5750505050918101604401918060406119f3565b80548688016044015295019486908201611b54565b60ff191660448087019190915292151560051b85019092019450829150604090506119f3565b346102d05760403660031901126102d057602090611bc5611bf5565b611bcd611c0b565b9060018060a01b03809116600052600384526040600020911660005282526040600020548152f35b600435906001600160a01b03821682036102d057565b602435906001600160a01b03821682036102d057565b6024359081151582036102d057565b60e09060031901126102d0576001600160a01b039060043582811681036102d0579160243590811681036102d05790604435906064359060843560ff811681036102d0579060a4359060c43590565b6009811015611c98576000526007602052604060002090565b634e487b7160e01b600052602160045260246000fd5b90600182811c92168015611cde575b6020831014611cc857565b634e487b7160e01b600052602260045260246000fd5b91607f1691611cbd565b61010081019081106001600160401b03821117610f1157604052565b608081019081106001600160401b03821117610f1157604052565b90601f801991011681019081106001600160401b03821117610f1157604052565b6020808252825181830181905290939260005b828110611d7557505060409293506000838284010152601f8019910116010190565b818101860151848201604001528501611d53565b15611d9057565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b15611ddb57565b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881b9bdd081d985b1a59607a1b6044820152606490fd5b8181029291811591840414171561054257565b8115611e31570490565b634e487b7160e01b600052601260045260246000fd5b604d811161054257600a0a90565b9190820391821161054257565b9190820180921161054257565b8181039291600013801582851316918412161761054257565b601454919291611ed191611ec291611eb891611eae906001600160801b03831690611e14565b9060801c90611e27565b93601f5490611e14565b611ecb83611e47565b90611e27565b808310611f9957611ee5611f219184611e55565b91611f1c611f16611f0d601e54611f07611efe86611e47565b60205490611e62565b90611e14565b611ecb84611e47565b91611e47565b611e6f565b6509184e72a0009081810291818305149015171561054257670de0b6b3a764000091828102928184051490151715610542578015611e3157600160ff1b918083146000198314166105425705906000821215611f9257811461054257600003905b808211611f8d575090565b905090565b5090611f82565b505050600090565b9160018060a01b0380931691600093838552602060178152604091828720549081156121055783518481018181106001600160401b038211176120f1578552888152888480830193828552611ff789151561211f565b600954166064600c548c85526018845289852054928a51958694859363442c159960e01b85526004850152602484015260448301525afa9081156120e7578a916120b4575b506120a897989994926018949261208b6120768a61207161206861209497620186a06021540490611e14565b601e5490611e14565b611e27565b915191946001600160801b0392831690611e14565b91511690611e27565b8181106120ac57035b97835252205461216b565b9091565b50508261209d565b90508481813d83116120e0575b6120cb8183611d1f565b810103126120dc57516120a861203c565b8980fd5b503d6120c1565b86513d8c823e3d90fd5b634e487b7160e01b8a52604160045260248afd5b5086955085949350505050565b519081151582036102d057565b1561212657565b60405162461bcd60e51b815260206004820152601e60248201527f4d61726b65743a2065786368616e676552617465206e6f742076616c696400006044820152606490fd5b61217682151561211f565b602060018060a01b0360095416916064600c54604051948593849263442c159960e01b845260048401526024830152600060448301525afa908115611b37576000916121e3575b50906120716121cf9260215490611e14565b620186a06121df601e5483611e14565b0491565b906020823d8211612211575b816121fc60209383611d1f565b8101031261220e5750516120716121bd565b80fd5b3d91506121ef565b6001600160a01b0316600081815260186020526040812054909261223c9161216b565b91835260176020526040832054801561234557811561234557818110612345578281101561233b57601454612285918391610b8491611eae906001600160801b03831690611e14565b90620186a09283830292808404851490151715612327576122aa9291611ecb91611e55565b91601b5491601c54936122bd8585611e6f565b80820291848212600160ff1b82141661232757818305149015171561231357058184820194851291129080158216911516176122ff5750808212611f8d575090565b634e487b7160e01b81526011600452602490fd5b634e487b7160e01b83526011600452602483fd5b634e487b7160e01b85526011600452602485fd5b50505050601b5490565b50505090565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316148061244c575b156123a6577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f000000000000000000000000000000000000000000000000000000000000000082527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a0815260c081018181106001600160401b03821117610f115760405251902090565b507f0000000000000000000000000000000000000000000000000000000000000000461461237d565b1561247c57565b60405162461bcd60e51b815260206004820152601660248201527545524332303a2062616c616e636520746f6f206c6f7760501b6044820152606490fd5b156124c157565b60405162461bcd60e51b815260206004820152601660248201527545524332303a206e6f207a65726f206164647265737360501b6044820152606490fd5b51906001600160a01b03821682036102d057565b6005811015611c9857806125245750565b6001810361256c5760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b6044820152606490fd5b600281036125b95760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606490fd5b6003146125c257565b60405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608490fd5b9291906fa2a8918ca85bafe22016d0b997e4df60600160ff1b03831161268b5791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa1561267e5781516001600160a01b03811615612678579190565b50600190565b50604051903d90823e3d90fd5b50505050600090600390565b7fe50de2333c10a9502fcb1d8ae13a51bbf423153dfc63c2b8997665b32154afc360018060a01b038092169160009083825260036020526040822094169384825260205284604082205580a4565b909160207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259160018060a01b03809416938460005260028352604060002095169485600052825280604060002055604051908152a356feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae672a2646970667358221220a1f57aa74ba0e0d61c5f384052bbd0214403e2555455c840b50acfdc9c6ed70b64736f6c63430008120033", + "deployedBytecode": "0x608080604052600436101561001357600080fd5b60003560e01c908162a02a2014611ba95750806302ce728f14611992578063078dfbe71461188e578063095ea7b3146118685780630c4e84f01461174e57806318160ddd146117325780631c9e379b146116f85780631d4d3a5d146116cf5780631da8bf10146116135780631fb8f81a146115f557806323b872dd14611451578063331960ff1461143357806334d441d0146114155780633644e515146113fa57806337b6b7b9146113dc57806338d52e0f146113b35780633ba0b9a9146113955780633f741adb1461137157806340626d8b1461135357806344de240a14611335578063473e3ce71461131757806348e4163e146112dd5780634e71e0c81461122f578063529898f214611212578063542afda3146111f457806357935462146111d65780636b19ad16146111b85780636c3d8b8f1461118f57806370a0823114611155578063727785471461111f57806374645ff31461108c57806374c9e4811461106e5780637dc0d1d0146110455780637ecebe001461100b5780637fa0b84e14610fda5780638285ef4014610fa857806387b2793714610f6e5780638c5d0ed314610f505780638da5cb5b14610f27578063910dd7c814610d0e578063932bc4f814610c3057806399a9702814610c015780639e15e89f14610bc7578063a9059cbb14610ae0578063b0e21e8a14610ac2578063b27c0e7414610a91578063b7113f1914610a6e578063bb4cfe3b14610a50578063bde39c5d14610a32578063ce8849ed14610a09578063d3fb2a381461059d578063d505accf146103fb578063d8dfeb45146103d2578063dd62ed3e14610381578063de40657714610358578063e0996cb61461033a578063e30c397814610311578063ea64dd56146102f3578063eec0f42e146102d55763f791395d146102b257600080fd5b346102d05760003660031901126102d0576020602754604051908152f35b600080fd5b346102d05760003660031901126102d0576020600c54604051908152f35b346102d05760003660031901126102d0576020601f54604051908152f35b346102d05760003660031901126102d0576006546040516001600160a01b039091168152602090f35b346102d05760003660031901126102d0576020601d54604051908152f35b346102d05760003660031901126102d0576009546040516001600160a01b039091168152602090f35b346102d05760403660031901126102d05761039a611bf5565b6103a2611c0b565b9060018060a01b038091166000526002602052604060002091166000526020526020604060002054604051908152f35b346102d05760003660031901126102d057600b546040516001600160a01b039091168152602090f35b346102d05761040936611c30565b9183919395949542116105585760018060a01b03928388169485600052600460205260406000209283546000198114610542576104ec956104e4956001830190556040519060208201927f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e2668452600060408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e081526104a881611ce8565b5190206104b361234b565b9060405190602082019261190160f01b845260228301526042820152604281526104dc81611d04565b519020612612565b919091612513565b16036104fd576104fb926126e5565b005b60405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152606490fd5b634e487b7160e01b600052601160045260246000fd5b60405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b346102d0576101603660031901126102d0576001600160a01b03600435818116908190036102d0576024916001600160401b0383358181116102d057366023820112156102d05780600401359182116102d057368583830101116102d057604435938385168095036102d05761061884600554163314611d89565b806109ca575b508482610868575b50505081610827575b50506064358061080f575b50608435806107f7575b5060a435806107e0575b5060c435806107bc575b5060e43580610798575b506101043580610766575b5061012435806106f3575b5061014435908161068557005b601e5482106106945750601f55005b60849060326040519162461bcd60e51b8352602060048401528201527f4d61726b65743a206c69717569646174696f6e436f6c6c61746572616c697a616044820152711d1a5bdb94985d19481d1bdbc81cdb585b1b60721b6064820152fd5b610702620186a0821115611dd4565b601f54811161071457601e5581610678565b60405162461bcd60e51b8152602060048201526025818401527f4d61726b65743a20636f6c6c61746572616c697a6174696f6e5261746520746f6044820152646f2062696760d81b6064820152608490fd5b806016547fae6e0ab3b95f0a53ff9660a390ccedcbbf1f2355dce974a9841af106fddcfaba600080a36016558161066d565b6107a6620186a08210611dd4565b6107b3601b548211611dd4565b601c5581610662565b6107ca620186a08210611dd4565b6107d7601c548210611dd4565b601b5581610658565b6107ee620186a08210611dd4565b601d558161064e565b610806620186a0821115611dd4565b601a5581610644565b61081e620186a0821115611dd4565b6019558161063a565b816008549182167f5a62d22209e370e38eea92cfddcd228e656e6ec139243392a760a7769f5877fd600080a36001600160a01b03191617600855818061062f565b8291610875601054611cae565b601f8111610969575b50600090601f84116001146108e6576000936108d9575b5050508160011b916000199060031b1c1916176010555b7fa6f004921c944d4b8bf6e38462b00f36a58d62495d56b51f571ab78f732c9815600080a1838084610626565b0101359050848680610895565b60106000908152601f198516955060008051602061275d83398151915293509091889160205b87821061094a575050846001961061092e575b50505050811b016010556108ac565b60001960f88660031b161c19920101351690558580868161091f565b828501909301358555600194909401938992918201919081019061090c565b6010600052909250905060008051602061275d833981519152601f840160051c8101602085106109c3575b91849391601f8994920160051c01905b8181106109b1575061087e565b600081558594508893506001016109a4565b5080610994565b600f80546001600160a01b0319169190911790557f0b2d6eb667d0522c3eb86e4288afecae6c11591ffd1345d4d12407e0598bca9b600080a18561061e565b346102d05760003660031901126102d0576008546040516001600160a01b039091168152602090f35b346102d05760003660031901126102d0576020602854604051908152f35b346102d05760003660031901126102d0576020601e54604051908152f35b346102d05760003660031901126102d057602060ff602554166040519015158152f35b346102d05760003660031901126102d05760406024548151906001600160401b03908181168352831c166020820152f35b346102d05760003660031901126102d0576020601a54604051908152f35b346102d05760403660031901126102d057610af9611bf5565b602435908115801590610bb5575b610b3d575b6040519182526001600160a01b031690339060008051602061273d83398151915290602090a3602060405160018152f35b336000526001602052604060002054610b5883821015612475565b6001600160a01b038216908333839003610b75575b505050610b0c565b610b8991610b848415156124ba565b611e55565b3360005260016020526040600020556000526040600020610bab838254611e62565b9055828083610b6d565b50336001600160a01b03821614610b07565b346102d05760403660031901126102d0576060610bee610be5611bf5565b60243590611fa1565b9060405192835260208301526040820152f35b346102d05760403660031901126102d0576020610c28610c1f611bf5565b60243590612219565b604051908152f35b346102d05760003660031901126102d057604051600090602b54610c5381611cae565b808352600191808316908115610ce65750600114610c8c575b610c8883610c7c81870382611d1f565b60405191829182611d40565b0390f35b602b600090815260209450917f11c44e4875b74d31ff9fd779bf2566af7bd15b87fc985d01f5094b89e3669e4f5b828410610cd357505050810190910190610c7c81610c6c565b8054858501870152928501928101610cba565b610c889550610c7c93506020915091849260ff191682840152151560051b8201019350610c6c565b346102d05760403660031901126102d0576001600160401b036004358181116102d057366023820112156102d0578060040135918211610f115760405191610d60601f8201601f191660200184611d1f565b808352602083019136602483830101116102d057816000926024602093018537840101526024359161ffff831683036102d0576101009182828051810103126102d057610dac90612112565b610db8604083016124ff565b91610dc5606082016124ff565b9460808201519460a08301519260c08101519160ff831683036102d05760e082015191015191844211610558578515610eeb577f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e2665b6001600160a01b0388166000908152600460205260409020805490969060001981146105425761ffff6104e497610ea89960018401905560405194602086015216604084015260018060a01b038a16606084015260018060a01b038c1660808401528a60a084015260c083015260e082015260e08152610e9981611ce8565b602081519101206104b361234b565b6001600160a01b038381169116036104fd5715610ed5576104fb926001600160a01b0390811691166126e5565b6104fb926001600160a01b039081169116612697565b7f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d6610e1a565b634e487b7160e01b600052604160045260246000fd5b346102d05760003660031901126102d0576005546040516001600160a01b039091168152602090f35b346102d05760003660031901126102d0576020601b54604051908152f35b346102d05760203660031901126102d0576001600160a01b03610f8f611bf5565b1660005260236020526020604060002054604051908152f35b346102d05760003660031901126102d057601454604080516001600160801b038316815260809290921c602083015290f35b346102d05760403660031901126102d057611000610ff6611bf5565b6024359033612697565b602060405160018152f35b346102d05760203660031901126102d0576001600160a01b0361102c611bf5565b1660005260046020526020604060002054604051908152f35b346102d05760003660031901126102d057600f546040516001600160a01b039091168152602090f35b346102d05760003660031901126102d0576020602d54604051908152f35b346102d05760003660031901126102d0576040516000906010546110af81611cae565b808352600191808316908115610ce657506001146110d757610c8883610c7c81870382611d1f565b60106000908152602094509160008051602061275d8339815191525b82841061110c57505050810190910190610c7c81610c6c565b80548585018701529285019281016110f3565b346102d05760203660031901126102d05760043560098110156102d05760ff611149602092611c7f565b54166040519015158152f35b346102d05760203660031901126102d0576001600160a01b03611176611bf5565b1660005260016020526020604060002054604051908152f35b346102d05760003660031901126102d057600a546040516001600160a01b039091168152602090f35b346102d05760003660031901126102d0576020602654604051908152f35b346102d05760003660031901126102d0576020601c54604051908152f35b346102d05760003660031901126102d0576020602c54604051908152f35b346102d05760003660031901126102d05760208054604051908152f35b346102d05760003660031901126102d0576006546001600160a01b03908181163381900361129957806005549384167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a36001600160a01b03199283161760055516600655005b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b346102d05760203660031901126102d0576001600160a01b036112fe611bf5565b1660005260176020526020604060002054604051908152f35b346102d05760003660031901126102d0576020601554604051908152f35b346102d05760003660031901126102d0576020600e54604051908152f35b346102d05760003660031901126102d0576020601654604051908152f35b346102d05760603660031901126102d0576020610c28604435602435600435611e88565b346102d05760003660031901126102d0576020601154604051908152f35b346102d05760003660031901126102d057600d546040516001600160a01b039091168152602090f35b346102d05760003660031901126102d0576020601254604051908152f35b346102d05760003660031901126102d0576020610c2861234b565b346102d05760003660031901126102d0576020601954604051908152f35b346102d05760003660031901126102d0576020601354604051908152f35b346102d05760603660031901126102d05761146a611bf5565b611472611c0b565b60443590816114af575b6040519182526001600160a01b0390811692169060008051602061273d83398151915290602090a3602060405160018152f35b60018060a01b038084168060005260206001815284604060002054936114d782861015612475565b8516938484036114ec575b505050505061147c565b836000526002835260406000203360005283526040600020546000198103611560575b50849261153760008051602061273d833981519152979593600193610b8460209915156124ba565b92600052526040600020556000526040600020611555858254611e62565b9055918584816114e2565b909181106115b557602094926115378860008051602061273d83398151915298969461158e82600196611e55565b8660005260028552604060002033600052855260406000205593509395975050929461150f565b60405162461bcd60e51b815260048101849052601860248201527745524332303a20616c6c6f77616e636520746f6f206c6f7760401b6044820152606490fd5b346102d05760003660031901126102d0576020602954604051908152f35b346102d05761162136611c30565b9183919395949542116105585760018060a01b03928388169485600052600460205260406000209283546000198114610542576116c0956104e4956001830190556040519060208201927f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d68452600060408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e081526104a881611ce8565b16036104fd576104fb92612697565b346102d05760003660031901126102d057602a546040516001600160a01b039091168152602090f35b346102d05760203660031901126102d0576001600160a01b03611719611bf5565b1660005260186020526020604060002054604051908152f35b346102d05760003660031901126102d057602060405160008152f35b346102d05760403660031901126102d05760043560098110156102d057611773611c21565b6008549091906001600160a01b0316330361182c5760ff61179382611c7f565b541615159115159182146117f257808260ff6117b16117e094611c7f565b54161515827feeec81de25875ce1725479bb76f720a8defdb43dea041919ae37bb4aae9847c0600080a4611c7f565b9060ff80198354169116179055600080f35b60405162461bcd60e51b81526020600482015260126024820152714d61726b65743a2073616d6520737461746560701b6044820152606490fd5b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881d5b985d5d1a1bdc9a5e995960621b6044820152606490fd5b346102d05760403660031901126102d057611000611884611bf5565b60243590336126e5565b346102d05760603660031901126102d0576118a7611bf5565b6118af611c21565b6044359081151582036102d05760018060a01b039283916118d583600554163314611d89565b15611979571690811590811591611971575b501561193457806005549283167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a36001600160a01b031991821617600555600680549091169055005b60405162461bcd60e51b81526020600482015260156024820152744f776e61626c653a207a65726f206164647265737360581b6044820152606490fd5b9050836118e7565b9150501660018060a01b03196006541617600655600080f35b346102d05760003660031901126102d05760018060a01b03600f54166040519063d6d7d52560e01b82526020918260048201526000916010546119d481611cae565b908160248501526001908181169081600014611b835750600114611b43575b50509060409181600081809603925af18015611b3757600091600091611af8575b508115611a9b578015611a5f5760409281601155817f9f9192b5edb17356c524e08d9e025c8e2f6307e6ea52fb7968faa3081f51c3c8600080a25b4260135583519215158352820152f35b60405162461bcd60e51b81526004810184905260146024820152734d61726b65743a20696e76616c6964207261746560601b6044820152606490fd5b50611aab60135460125490611e62565b4211611abc57601154604092611a4f565b60405162461bcd60e51b815260048101839052601460248201527313585c9ad95d0e881c985d19481d1bdbc81bdb1960621b6044820152606490fd5b9150506040813d604011611b2f575b81611b1460409383611d1f565b810103126102d05781611b2682612112565b91015183611a14565b3d9150611b07565b6040513d6000823e3d90fd5b935060106000528460002093856000955b838710611b6e5750505050918101604401918060406119f3565b80548688016044015295019486908201611b54565b60ff191660448087019190915292151560051b85019092019450829150604090506119f3565b346102d05760403660031901126102d057602090611bc5611bf5565b611bcd611c0b565b9060018060a01b03809116600052600384526040600020911660005282526040600020548152f35b600435906001600160a01b03821682036102d057565b602435906001600160a01b03821682036102d057565b6024359081151582036102d057565b60e09060031901126102d0576001600160a01b039060043582811681036102d0579160243590811681036102d05790604435906064359060843560ff811681036102d0579060a4359060c43590565b6009811015611c98576000526007602052604060002090565b634e487b7160e01b600052602160045260246000fd5b90600182811c92168015611cde575b6020831014611cc857565b634e487b7160e01b600052602260045260246000fd5b91607f1691611cbd565b61010081019081106001600160401b03821117610f1157604052565b608081019081106001600160401b03821117610f1157604052565b90601f801991011681019081106001600160401b03821117610f1157604052565b6020808252825181830181905290939260005b828110611d7557505060409293506000838284010152601f8019910116010190565b818101860151848201604001528501611d53565b15611d9057565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b15611ddb57565b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881b9bdd081d985b1a59607a1b6044820152606490fd5b8181029291811591840414171561054257565b8115611e31570490565b634e487b7160e01b600052601260045260246000fd5b604d811161054257600a0a90565b9190820391821161054257565b9190820180921161054257565b8181039291600013801582851316918412161761054257565b601454919291611ed191611ec291611eb891611eae906001600160801b03831690611e14565b9060801c90611e27565b93601f5490611e14565b611ecb83611e47565b90611e27565b808310611f9957611ee5611f219184611e55565b91611f1c611f16611f0d601e54611f07611efe86611e47565b60205490611e62565b90611e14565b611ecb84611e47565b91611e47565b611e6f565b6509184e72a0009081810291818305149015171561054257670de0b6b3a764000091828102928184051490151715610542578015611e3157600160ff1b918083146000198314166105425705906000821215611f9257811461054257600003905b808211611f8d575090565b905090565b5090611f82565b505050600090565b9160018060a01b0380931691600093838552602060178152604091828720549081156121055783518481018181106001600160401b038211176120f1578552888152888480830193828552611ff789151561211f565b600954166064600c548c85526018845289852054928a51958694859363442c159960e01b85526004850152602484015260448301525afa9081156120e7578a916120b4575b506120a897989994926018949261208b6120768a61207161206861209497620186a06021540490611e14565b601e5490611e14565b611e27565b915191946001600160801b0392831690611e14565b91511690611e27565b8181106120ac57035b97835252205461216b565b9091565b50508261209d565b90508481813d83116120e0575b6120cb8183611d1f565b810103126120dc57516120a861203c565b8980fd5b503d6120c1565b86513d8c823e3d90fd5b634e487b7160e01b8a52604160045260248afd5b5086955085949350505050565b519081151582036102d057565b1561212657565b60405162461bcd60e51b815260206004820152601e60248201527f4d61726b65743a2065786368616e676552617465206e6f742076616c696400006044820152606490fd5b61217682151561211f565b602060018060a01b0360095416916064600c54604051948593849263442c159960e01b845260048401526024830152600060448301525afa908115611b37576000916121e3575b50906120716121cf9260215490611e14565b620186a06121df601e5483611e14565b0491565b906020823d8211612211575b816121fc60209383611d1f565b8101031261220e5750516120716121bd565b80fd5b3d91506121ef565b6001600160a01b0316600081815260186020526040812054909261223c9161216b565b91835260176020526040832054801561234557811561234557818110612345578281101561233b57601454612285918391610b8491611eae906001600160801b03831690611e14565b90620186a09283830292808404851490151715612327576122aa9291611ecb91611e55565b91601b5491601c54936122bd8585611e6f565b80820291848212600160ff1b82141661232757818305149015171561231357058184820194851291129080158216911516176122ff5750808212611f8d575090565b634e487b7160e01b81526011600452602490fd5b634e487b7160e01b83526011600452602483fd5b634e487b7160e01b85526011600452602485fd5b50505050601b5490565b50505090565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316148061244c575b156123a6577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f000000000000000000000000000000000000000000000000000000000000000082527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a0815260c081018181106001600160401b03821117610f115760405251902090565b507f0000000000000000000000000000000000000000000000000000000000000000461461237d565b1561247c57565b60405162461bcd60e51b815260206004820152601660248201527545524332303a2062616c616e636520746f6f206c6f7760501b6044820152606490fd5b156124c157565b60405162461bcd60e51b815260206004820152601660248201527545524332303a206e6f207a65726f206164647265737360501b6044820152606490fd5b51906001600160a01b03821682036102d057565b6005811015611c9857806125245750565b6001810361256c5760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b6044820152606490fd5b600281036125b95760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606490fd5b6003146125c257565b60405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608490fd5b9291906fa2a8918ca85bafe22016d0b997e4df60600160ff1b03831161268b5791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa1561267e5781516001600160a01b03811615612678579190565b50600190565b50604051903d90823e3d90fd5b50505050600090600390565b7fe50de2333c10a9502fcb1d8ae13a51bbf423153dfc63c2b8997665b32154afc360018060a01b038092169160009083825260036020526040822094169384825260205284604082205580a4565b909160207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259160018060a01b03809416938460005260028352604060002095169485600052825280604060002055604051908152a356feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae672a2646970667358221220a1f57aa74ba0e0d61c5f384052bbd0214403e2555455c840b50acfdc9c6ed70b64736f6c63430008120033", "linkReferences": {}, "deployedLinkReferences": {} } diff --git a/src/artifacts/tapioca-bar/BigBang.json b/src/artifacts/tapioca-bar/BigBang.json index e7ad2c91..2d6673ab 100644 --- a/src/artifacts/tapioca-bar/BigBang.json +++ b/src/artifacts/tapioca-bar/BigBang.json @@ -53,6 +53,31 @@ "name": "ApprovalBorrow", "type": "event" }, + { + "anonymous": false, + "inputs": [], + "name": "AssetOracleDataUpdated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "_oldVal", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "_newVal", + "type": "address" + } + ], + "name": "AssetOracleUpdated", + "type": "event" + }, { "anonymous": false, "inputs": [ @@ -272,25 +297,6 @@ "name": "LogBorrowCapUpdated", "type": "event" }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "uint256", - "name": "_oldVal", - "type": "uint256" - }, - { - "indexed": true, - "internalType": "uint256", - "name": "_newVal", - "type": "uint256" - } - ], - "name": "LogBorrowingFee", - "type": "event" - }, { "anonymous": false, "inputs": [ @@ -479,6 +485,37 @@ "name": "Transfer", "type": "event" }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint256", + "name": "oldMin", + "type": "uint256" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "newMin", + "type": "uint256" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "oldMax", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "newMax", + "type": "uint256" + } + ], + "name": "UpdateMinMaxMintFee", + "type": "event" + }, { "inputs": [], "name": "DOMAIN_SEPARATOR", @@ -672,6 +709,32 @@ "stateMutability": "view", "type": "function" }, + { + "inputs": [], + "name": "assetOracle", + "outputs": [ + { + "internalType": "contract IOracle", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "assetOracleData", + "outputs": [ + { + "internalType": "bytes", + "name": "", + "type": "bytes" + } + ], + "stateMutability": "view", + "type": "function" + }, { "inputs": [ { @@ -738,19 +801,6 @@ "stateMutability": "view", "type": "function" }, - { - "inputs": [], - "name": "borrowOpeningFee", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, { "inputs": [ { @@ -1234,6 +1284,19 @@ "stateMutability": "view", "type": "function" }, + { + "inputs": [], + "name": "maxMintFee", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, { "inputs": [], "name": "minDebtRate", @@ -1260,6 +1323,19 @@ "stateMutability": "view", "type": "function" }, + { + "inputs": [], + "name": "minMintFee", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, { "inputs": [ { @@ -1652,6 +1728,24 @@ "stateMutability": "nonpayable", "type": "function" }, + { + "inputs": [ + { + "internalType": "address", + "name": "_oracle", + "type": "address" + }, + { + "internalType": "bytes", + "name": "_oracleData", + "type": "bytes" + } + ], + "name": "setAssetOracle", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, { "inputs": [ { @@ -1682,11 +1776,6 @@ }, { "inputs": [ - { - "internalType": "uint256", - "name": "_borrowOpeningFee", - "type": "uint256" - }, { "internalType": "contract IOracle", "name": "_oracle", @@ -1748,6 +1837,24 @@ "stateMutability": "nonpayable", "type": "function" }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_min", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "_max", + "type": "uint256" + } + ], + "name": "setMinAndMaxMintFee", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, { "inputs": [], "name": "totalBorrow", @@ -1973,8 +2080,8 @@ "type": "receive" } ], - "bytecode": "0x6101408060405234620001895762000017816200018e565b600f81526001602082016e546170696f63612042696742616e6760881b8152602060405162000046816200018e565b8381520192603160f81b845251902091208160e052610100918183524660a0526040519160208301907f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f92838352604085015260608401524660808401523060a084015260a0835260c083019280841060018060401b03851117620001735760408490525190206080523060c052610120908152600580546001600160a01b0319163390811790915560007f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a362013880601b5562015f90601c55612710601d556032602055612ee06021556145619283620001ab843960805183613123015260a051836131de015260c051836130ed015260e05183613172015251826131980152518161314f0152f35b634e487b7160e01b600052604160045260246000fd5b600080fd5b604081019081106001600160401b03821117620001735760405256fe6080604052600436101561001b575b361561001957600080fd5b005b60003560e01c8062a02a20146104ea57806302ce728f146104e5578063078dfbe7146104e0578063095ea7b3146104db5780630996efb7146104d65780630c4e84f0146104d157806318160ddd146104cc5780631c9e379b146104c75780631da8bf10146104c25780631ee9c8f2146104bd5780631fb8f81a146104b857806323b872dd146104b357806325384fd8146104ae57806327c811a8146104a9578063331960ff146104a457806334ce998a1461049f57806334d441d01461049a5780633644e5151461049557806337b6b7b91461049057806338d52e0f1461048b5780633ba0b9a9146104865780633f741adb1461048157806340626d8b1461047c57806344de240a14610477578063473e3ce71461047257806348e4163e1461046d5780634ddf47d4146104685780634e71e0c8146104635780635224372c1461045e578063529898f214610459578063579354621461045457806358db9afe1461044f5780635d5f73ef1461044a5780636b19ad16146104455780636c3d8b8f1461044057806370a082311461043b578063727785471461043657806374645ff3146104315780637dc0d1d01461042c5780637ecebe00146104275780637fa0b84e146104225780638285ef401461041d57806387b27937146104185780638c5d0ed3146104135780638da5cb5b1461040e578063910dd7c814610409578063959916dc1461040457806399a97028146103ff5780639e15e89f146103fa578063a28e6b82146103f5578063a9059cbb146103f0578063aa7d9665146103eb578063af405b4c146103e6578063b0e21e8a146103e1578063b25ea8fb146103dc578063b27c0e74146103d7578063b7113f19146103d2578063bb4cfe3b146103cd578063bde39c5d146103c8578063c1ad5c8d146103c3578063c861a526146103be578063cce19f81146103b9578063cd0211eb146103b4578063ce8849ed146103af578063d505accf146103aa578063d8dfeb45146103a5578063dd62ed3e146103a0578063de4065771461039b578063e0996cb614610396578063e30c397814610391578063e5644d8b1461038c578063e9a4925214610387578063ea64dd5614610382578063eec0f42e1461037d578063f5b33dfa14610378578063f791395d146103735763f8ba4cff0361000e57612369565b61234b565b612322565b612304565b6122e6565b612262565b6121d9565b6121b0565b612192565b612169565b61212d565b612104565b612056565b61202d565b611fab565b611f57565b611f2e565b611f13565b611ef5565b611ed7565b611eb4565b611e83565b611df7565b611dd9565b611ba7565b611a94565b6119a7565b6118fd565b6118bf565b611894565b611877565b6117f6565b6117b2565b611794565b611757565b611725565b6116fb565b6116be565b611695565b6115bc565b61145d565b6113e2565b6113b9565b61139b565b611372565b6112cf565b6112b1565b611293565b611220565b61113e565b610fb0565b610f73565b610f55565b610f37565b610f19565b610ef5565b610ed7565b610eae565b610e90565b610e6d565b610e4f565b610e26565b610e08565b610c06565b610bdd565b610bc7565b610b7d565b610aaa565b610981565b6108f4565b6108d8565b6107e1565b610757565b6106e8565b6105a5565b610572565b61052d565b6001600160a01b0381160361050057565b600080fd5b60409060031901126105005760043561051d816104ef565b9060243561052a816104ef565b90565b3461050057602061056961054036610505565b6001600160a01b0391821660009081526003855260408082209290931681526020919091522090565b54604051908152f35b3461050057600036600319011261050057604061058d612df3565b825191151582526020820152f35b8015150361050057565b34610500576060366003190112610500576004356105c2816104ef565b602435906105cf8261059b565b604435916105dc8361059b565b6005546001600160a01b0391906105f69083163314612382565b156106cf578116918215908115916106c7575b501561068a576005546106789290610631906001600160a01b03165b6001600160a01b031690565b7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b600680546001600160a01b0319169055005b60405162461bcd60e51b81526020600482015260156024820152744f776e61626c653a207a65726f206164647265737360581b6044820152606490fd5b905038610609565b60068054919092166001600160a01b0319909116179055005b3461050057604036600319011261050057610712600435610708816104ef565b6024359033613623565b602060405160018152f35b3590610728826104ef565b565b9181601f84011215610500578235916001600160401b038311610500576020838186019501011161050057565b346105005761018036600319011261050057602435610775816104ef565b604435906001600160401b0382116105005761079861001992369060040161072a565b90606435926107a6846104ef565b610164359361014435936101243593610104359360e4359360c4359360a43593608435936004356123cd565b60043590600982101561050057565b34610500576040366003190112610500576107fa6107d2565b6024356108068161059b565b6008546001600160a01b0316330361089c5761088b8261083a61083561082e61001996611444565b5460ff1690565b151590565b610849841515918214156128b5565b61085561082e83611444565b61085e83611435565b1515827feeec81de25875ce1725479bb76f720a8defdb43dea041919ae37bb4aae9847c0600080a4611444565b9060ff801983541691151516179055565b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881d5b985d5d1a1bdc9a5e995960621b6044820152606490fd5b3461050057600036600319011261050057602060405160008152f35b3461050057602036600319011261050057600435610911816104ef565b60018060a01b031660005260186020526020604060002054604051908152f35b60ff81160361050057565b60e090600319011261050057600435610954816104ef565b90602435610961816104ef565b90604435906064359060843561097681610931565b9060a4359060c43590565b346105005761098f3661093c565b9592809594959291924211610a655761001996610a6093610a4d93610a40878a610a388b610a2a610a45996109c3866135a8565b60405195869460208601988991959493909260c09360e08401977f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d685526000602086015260018060a01b038092166040860152166060840152608083015260a08201520152565b03601f198101835282611542565b519020613552565b6134da565b9190916133bf565b6001600160a01b0383811691161461335a565b6135d0565b60405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b346105005760c036600319011261050057600435610ac7816104ef565b608435610ad3816104ef565b60a435906001600160401b03821161050057610b7992610b55610b5a92610a2a610b04610b6996369060040161072a565b604051958694630f74e47960e11b602087015260018060a01b0380921660248701526024356044870152604435606487015260643560848701521660a485015260c060c485015260e48401916141d4565b614415565b60208082518301019101612f2f565b6040519081529081906020820190565b0390f35b34610500576000366003190112610500576020602a54604051908152f35b606090600319011261050057600435610bb3816104ef565b90602435610bc0816104ef565b9060443590565b3461050057610bd536610b9b565b50505061438d565b3461050057600036600319011261050057602c546040516001600160a01b039091168152602090f35b34610500576080366003190112610500576004356024356044359060643592610c3a60018060a01b03600554163314612382565b600c54600a5460049190602090610c59906001600160a01b0316610625565b6040516364cfdbb760e11b815293849182905afa908115610e0357610c9492600092610dd3575b501460ff8019602654169115151617602655565b610ca7610ca360265460ff1690565b1590565b610cad57005b610cb561390a565b80610d8e575b5080610d49575b5080610d11575b5080610cd157005b80610ce3620186a061001993106143d9565b806021547f1f1d0e9e5e3fd195010504141e7472fc7f53e44d7cd3f236f0892778039c6326600080a3602155565b80610d43916029547fd00c912c9d1f75ac893827b7bb73eb82874daea46c2eaa6d2bd89f0c8ee57366600080a3602955565b38610cc9565b610d8890610d5a60285482116143d9565b806027547f5391ae26cacff12a54d10d45f0f04678de8bb9c9b2f784eb7074dac7cc0f8fd9600080a3602755565b38610cc2565b610dcd90610d9f60275482106143d9565b806028547fa54af2279046b0207f426565497319c4e274479ce71cb53598ec2391459be3f3600080a3602855565b38610cbb565b610df591925060203d8111610dfc575b610ded8183611542565b810190612f2f565b9038610c80565b503d610de3565b612d61565b34610500576000366003190112610500576020601354604051908152f35b34610500576000366003190112610500576014546040516001600160801b039091168152602090f35b34610500576000366003190112610500576020601954604051908152f35b34610500576000366003190112610500576020610e886130ea565b604051908152f35b34610500576000366003190112610500576020601254604051908152f35b3461050057600036600319011261050057600d546040516001600160a01b039091168152602090f35b34610500576000366003190112610500576020601154604051908152f35b34610500576060366003190112610500576020610e88604435602435600435612a46565b34610500576000366003190112610500576020601654604051908152f35b34610500576000366003190112610500576020600e54604051908152f35b34610500576000366003190112610500576020601554604051908152f35b3461050057602036600319011261050057600435610f90816104ef565b60018060a01b031660005260176020526020604060002054604051908152f35b34610500576020366003190112610500576004356001600160401b03811161050057610fe090369060040161072a565b60ff6023541661110357816101e0918101031261050057806110c66110076110e59361071d565b6110136020840161071d565b61101f6040850161071d565b916110a661102f6060870161071d565b9361103c6080880161071d565b9361104960a0890161071d565b9361105660e08a0161071d565b602b80546001600160a01b03199081166001600160a01b0394851617909155602d8054821695841695909517909455602c8054851693831693909317909255602e80549093169616959095179055565b6101c0850135926101a0860135926101008701359260c088013591613ca3565b6101808101359061016081013590610120610140820135910135613b29565b6110f162015180601255565b610019600160ff196023541617602355565b60405162461bcd60e51b815260206004820152601360248201527213585c9ad95d0e881a5b9a5d1a585b1a5e9959606a1b6044820152606490fd5b346105005760008060031936011261121d576006546001600160a01b0316338190036111d9576005546111c691908190611180906001600160a01b0316610625565b7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08580a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b600680546001600160a01b031916905580f35b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b80fd5b34610500576040611287611278610a2a61127361123c36610b9b565b87516314890dcb60e21b60208201526001600160a01b03938416602482015292909116604483015260648201529182906084820190565b6144ad565b602080825183010191016141be565b82519182526020820152f35b34610500576000366003190112610500576020602154604051908152f35b34610500576000366003190112610500576020601c54604051908152f35b346105005760a0366003190112610500576004356112ec816104ef565b6064356112f8816104ef565b608435906001600160401b03821161050057610b7992610b55610b5a92610a2a611329610b6996369060040161072a565b604051958694632c6dcd7f60e11b602087015260018060a01b0380921660248701526024356044870152604435606487015216608485015260a060a485015260c48401916141d4565b3461050057600036600319011261050057602b546040516001600160a01b039091168152602090f35b34610500576000366003190112610500576020602754604051908152f35b3461050057600036600319011261050057600a546040516001600160a01b039091168152602090f35b34610500576020366003190112610500576004356113ff816104ef565b60018060a01b031660005260016020526020604060002054604051908152f35b634e487b7160e01b600052602160045260246000fd5b6009111561143f57565b61141f565b600981101561143f576000526007602052604060002090565b34610500576020366003190112610500576114766107d2565b600981101561143f576000526007602052602060ff604060002054166040519015158152f35b90600182811c921680156114cc575b60208310146114b657565b634e487b7160e01b600052602260045260246000fd5b91607f16916114ab565b634e487b7160e01b600052604160045260246000fd5b604081019081106001600160401b0382111761150757604052565b6114d6565b60c081019081106001600160401b0382111761150757604052565b60e081019081106001600160401b0382111761150757604052565b90601f801991011681019081106001600160401b0382111761150757604052565b60005b8381106115765750506000910152565b8181015183820152602001611566565b9060209161159f81518092818552858086019101611563565b601f01601f1916010190565b90602061052a928181520190611586565b346105005760008060031936011261121d57604051816010546115de8161149c565b8084529060019081811690811561166d5750600114611614575b610b798461160881880382611542565b604051918291826115ab565b60108352602094507f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae6725b82841061165a5750505081610b799361160892820101936115f8565b805485850187015292850192810161163e565b610b7996506116089450602092508593915060ff191682840152151560051b820101936115f8565b3461050057600036600319011261050057600f546040516001600160a01b039091168152602090f35b34610500576020366003190112610500576004356116db816104ef565b60018060a01b031660005260046020526020604060002054604051908152f35b346105005760403660031901126105005761071260043561171b816104ef565b60243590336135d0565b3461050057600036600319011261050057601454604080516001600160801b038316815260809290921c602083015290f35b3461050057602036600319011261050057600435611774816104ef565b60018060a01b031660005260246020526020604060002054604051908152f35b34610500576000366003190112610500576020601b54604051908152f35b34610500576000366003190112610500576005546040516001600160a01b039091168152602090f35b6001600160401b03811161150757601f01601f191660200190565b34610500576040366003190112610500576004356001600160401b0381116105005736602382011215610500578060040135611831816117db565b9161183f6040519384611542565b81835236602483830101116105005781600092602460209301838601378301015260243561ffff811681036105005761001991613204565b346105005760003660031901126105005760208054604051908152f35b34610500576040366003190112610500576020610e886004356118b6816104ef565b60243590613007565b346105005760403660031901126105005760606118ea6004356118e1816104ef565b60243590612b2a565b9060405192835260208301526040820152f35b346105005760803660031901126105005760043561191a816104ef565b602435611926816104ef565b60443590611933826104ef565b606435926001600160401b03841161050057610a2a6119a29261195d61001996369060040161072a565b60405163514735c160e11b60208201526001600160a01b03958616602482015292851660448401529390951660648201526080608482015293849260a48401916141d4565b6144d7565b34610500576040366003190112610500576119c36004356104ef565b61438d565b9181601f84011215610500578235916001600160401b038311610500576020808501948460051b01011161050057565b906040820191604081528151809352606081019260208093019060005b818110611a7e57505050818184039101528251908183528083019281808460051b8301019501936000915b848310611a505750505050505090565b9091929394958480611a6e600193601f198682030187528a51611586565b9801930193019194939290611a40565b8251151586529484019491840191600101611a15565b346105005760408060031936011261050057600480356001600160401b03811161050057611ac590369083016119c8565b9290602435611ad38161059b565b611adc85613fa9565b93611ae686613fdb565b95600090815b818110611b0157865180610b798b8b836119f8565b8280611b0e83858a61403b565b90611b1d8b5180938193614081565b0390305af4611b2a61408f565b90801580611ba0575b611b79578291611b54611b5992611b4d611b74968e6140bf565b9015159052565b6140d3565b611b63828c6140bf565b52611b6e818b6140bf565b50613599565b611aec565b8886611b9c611b87856140d3565b925162461bcd60e51b815292839283016115ab565b0390fd5b5086611b33565b346105005760008060031936011261121d57611bce60018060a01b03600554163314612382565b600d54611be3906001600160a01b0316610625565b604080516370a0823160e01b815230600482015260209390928484602481845afa908115610e0357611c5f948392611dba575b50600954611c2c906001600160a01b0316610625565b600e548551638eb22cdd60e01b815260048101919091526024810184905260006044820152958790879081906064820190565b0381845afa958615610e03578496611d9b575b5085611c83575b8451868152602090f35b845163095ea7b360e01b81526001600160a01b03919091166004820152602481019290925290919085908390604490829085905af1908115610e0357611d259584938693611d6d575b5050600954611ce3906001600160a01b0316610625565b600e548451634d4d7cbd60e11b8152600481019190915230602482015233604482015260006064820152608481019390935291958692918391829060a4820190565b03925af1928315610e0357610b7993611d41575b808080611c79565b611d6090823d8411611d66575b611d588183611542565b8101906141be565b50611d39565b503d611d4e565b81611d8c92903d10611d94575b611d848183611542565b8101906143c4565b503880611ccc565b503d611d7a565b611db3919650873d8911610dfc57610ded8183611542565b9438611c72565b611dd2919250863d8811610dfc57610ded8183611542565b9038611c16565b34610500576000366003190112610500576020601a54604051908152f35b3461050057604036600319011261050057602435611e14816104ef565b611e2960018060a01b03600554163314612382565b60008080808094600435905af1611e3e61408f565b5015611e475780f35b60405162461bcd60e51b815260206004820152601460248201527321211d103a3930b739b332b9103330b4b632b21760611b6044820152606490fd5b346105005760003660031901126105005760406025548151906001600160401b03908181168352831c166020820152f35b3461050057600036600319011261050057602060ff602654166040519015158152f35b34610500576000366003190112610500576020601e54604051908152f35b34610500576000366003190112610500576020602954604051908152f35b34610500576000366003190112610500576020610e88613692565b3461050057600036600319011261050057602d546040516001600160a01b039091168152602090f35b3461050057610019610a2a611fa6611f6e36610b9b565b60405163cce19f8160e01b60208201526001600160a01b03938416602482015292909116604483015260648201529182906084820190565b614501565b3461050057608036600319011261050057610b79610b69610b5a600435611fd1816104ef565b60243590611fde826104ef565b60443590611feb8261059b565b6040519263cd0211eb60e01b602085015260018060a01b038092166024850152166044830152151560648201526064356084820152608481526112738161150c565b34610500576000366003190112610500576008546040516001600160a01b039091168152602090f35b34610500576120643661093c565b9592809594959291924211610a6557610019966120ff93610a4d93610a40878a610a388b610a2a610a4599612098866135a8565b60405195869460208601988991959493909260c09360e08401977f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e26685526000602086015260018060a01b038092166040860152166060840152608083015260a08201520152565b613623565b3461050057600036600319011261050057600b546040516001600160a01b039091168152602090f35b3461050057602061056961214036610505565b6001600160a01b0391821660009081526002855260408082209290931681526020919091522090565b34610500576000366003190112610500576009546040516001600160a01b039091168152602090f35b34610500576000366003190112610500576020601d54604051908152f35b34610500576000366003190112610500576006546040516001600160a01b039091168152602090f35b34610500576080366003190112610500576001600160401b036004358181116105005761220a9036906004016119c8565b90602435838111610500576122239036906004016119c8565b906044358581116105005761223c9036906004016119c8565b9290916064359687116105005761225a6100199736906004016119c8565b9690956142c6565b346105005760a036600319011261050057610019600435612282816104ef565b6024359061228f826104ef565b6044359061229c8261059b565b604051926374d2492960e11b602085015260018060a01b03809216602485015216604483015215156064820152606435608482015260843560a482015260a48152611fa681611527565b34610500576000366003190112610500576020601f54604051908152f35b34610500576000366003190112610500576020600c54604051908152f35b3461050057600036600319011261050057602e546040516001600160a01b039091168152602090f35b34610500576000366003190112610500576020602854604051908152f35b346105005760003660031901126105005761001961390a565b1561238957565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b98969492909a9997959391600160a01b6001900391826005541633146123f290612382565b620186a09c6124038e8d1115612683565b6020549b8060009d7fc353b09af857951dccce61b43a5854fc45beceed36c50e5d4cc2e71858a8e0df8f80a360205583811661263a575b5080612606575b50508116908161259f575b505080612584575b5080612569575b508061254f575b5080612528575b5080612501575b50806124c9575b5050806124a0575b5050806124895750565b6107289061249b601e5482101561284e565b601f55565b6124af6124c292821115612683565b6124bd601f548211156127f4565b601e55565b388061247f565b806124fa927fae6e0ab3b95f0a53ff9660a390ccedcbbf1f2355dce974a9841af106fddcfaba6016549180a3601655565b3880612477565b80612510866125229310612683565b61251d601b548211612683565b601c55565b38612470565b80612537876125499310612683565b612544601c548210612683565b601b55565b38612469565b8061255e886125639310612683565b601d55565b38612462565b806125798961257e931115612683565b601a55565b3861245b565b806125948a612599931115612683565b601955565b38612454565b6008546125ff92906125b9906001600160a01b0316610625565b7f5a62d22209e370e38eea92cfddcd228e656e6ec139243392a760a7769f5877fd8b80a3600880546001600160a01b0319166001600160a01b0392909216919091179055565b388061244c565b61260f91612717565b7fa6f004921c944d4b8bf6e38462b00f36a58d62495d56b51f571ab78f732c98158980a13880612441565b600f80546001600160a01b0319166001600160a01b039092169190911790557f0b2d6eb667d0522c3eb86e4288afecae6c11591ffd1345d4d12407e0598bca9b8b80a13861243a565b1561268a57565b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881b9bdd081d985b1a59607a1b6044820152606490fd5b601f81116126cf575050565b6000906010825260208220906020601f850160051c8301941061270d575b601f0160051c01915b82811061270257505050565b8181556001016126f6565b90925082906126ed565b91906001600160401b0381116115075761273b8161273660105461149c565b6126c3565b6000601f82116001146127755781929360009261276a575b50508160011b916000199060031b1c191617601055565b013590503880612753565b6010600052601f198216937f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae67291805b8681106127dc57508360019596106127c2575b505050811b01601055565b0135600019600384901b60f8161c191690553880806127b7565b909260206001819286860135815501940191016127a4565b156127fb57565b60405162461bcd60e51b815260206004820152602560248201527f4d61726b65743a20636f6c6c61746572616c697a6174696f6e5261746520746f6044820152646f2062696760d81b6064820152608490fd5b1561285557565b60405162461bcd60e51b815260206004820152603260248201527f4d61726b65743a206c69717569646174696f6e436f6c6c61746572616c697a616044820152711d1a5bdb94985d19481d1bdbc81cdb585b1b60721b6064820152608490fd5b156128bc57565b60405162461bcd60e51b81526020600482015260126024820152714d61726b65743a2073616d6520737461746560701b6044820152606490fd5b634e487b7160e01b600052601160045260246000fd5b90620186a09182810292818404149015171561292457565b6128f6565b90670de0b6b3a76400009182810292818404149015171561292457565b8181029291811591840414171561292457565b634e487b7160e01b600052601260045260246000fd5b8115612979570490565b612959565b604d811161292457600a0a90565b9190820391821161292457565b9190820180921161292457565b8181039291600013801582851316918412161761292457565b906509184e72a0009182810292818405149015171561292457565b90670de0b6b3a76400009182810292818405149015171561292457565b818102929160008212600160ff1b82141661292457818405149015171561292457565b811561297957600160ff1b8114600019831416612924570590565b600160ff1b81146129245760000390565b60145491929190612a61906001600160801b03831690612946565b9060801c90811561297957612a8e91612a7f910493601f5490612946565b612a888361297e565b9061296f565b90818310612b2257612af3612aed612ae8612aac612af8958761298c565b93612ae3612add612ad4601e54612ace612ac58661297e565b60215490612999565b90612946565b612a888461297e565b9161297e565b6129a6565b6129bf565b916129da565b612a1a565b6000811215612b1c57612b0a90612a35565b905b808211612b17575090565b905090565b90612b0c565b505050600090565b6001600160a01b03811660009081526017602052604081205491939290918015612c9c57612bc890612b5a613877565b93612b66841515612ee3565b600954602090612b7e906001600160a01b0316610625565b600c546001600160a01b038a1660009081526018602052604080822054905163442c159960e01b815260048101939093526024830152604482015294859190829081906064820190565b03915afa928315610e0357612c7395612a88612c2b6020612c37612c188a612c13612c0a612c6d9c612c469a8c91612c7f575b50602254620186a09004612ace565b601e5490612946565b61296f565b8551909890612ace906001600160801b03165b6001600160801b031690565b9301516001600160801b031690565b90828210612c775750035b6001600160a01b03909516600090815260186020526040902090565b54612f3e565b9091565b915050612c51565b612c969150873d8111610dfc57610ded8183611542565b38612bfb565b505080919250918190565b91908260409103126105005760208251612cc08161059b565b92015190565b602080825260009160105491612cdb8361149c565b9283828401526001908181169081600014612d3e5750600114612d00575b5050505090565b929350601060005280600020926000935b858510612d2a5750505060409250010138808080612cf9565b805485850160400152938201938101612d11565b925050506040935060ff929192191683830152151560051b010138808080612cf9565b6040513d6000823e3d90fd5b15612d7457565b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881c985d19481d1bdbc81bdb1960621b6044820152606490fd5b15612db757565b60405162461bcd60e51b81526020600482015260146024820152734d61726b65743a20696e76616c6964207261746560601b6044820152606490fd5b600f54612e08906001600160a01b0316610625565b6040805163d6d7d52560e01b81529291839081600081612e2a60048201612cc6565b03925af18015610e03576000928391612eaf575b50908215612e8a57612e51821515612db0565b612e5a82601155565b817f9f9192b5edb17356c524e08d9e025c8e2f6307e6ea52fb7968faa3081f51c3c8600080a25b61072842601355565b9050612ea6612e9e60135460125490612999565b421115612d6d565b60115490612e81565b9050612ed391925060403d8111612edc575b612ecb8183611542565b810190612ca7565b91909138612e3e565b503d612ec1565b15612eea57565b60405162461bcd60e51b815260206004820152601e60248201527f4d61726b65743a2065786368616e676552617465206e6f742076616c696400006044820152606490fd5b90816020910312610500575190565b612f936020831592612f508415612ee3565b600954600c5460405163442c159960e01b81526004810191909152602481019290925260006044830152909283916001600160a01b031690829081906064820190565b03915afa8015610e0357612fb391600091612fcd575b5060225490612946565b906129795704620186a0612fc9601e5483612946565b0491565b612fe5915060203d8111610dfc57610ded8183611542565b38612fa9565b9190916000838201938412911290801582169115161761292457565b9061302b61304991612c6d8460018060a01b03166000526018602052604060002090565b6001600160a01b039093166000908152601760205260409020909291565b548015612b22578215612b2257828110612b2257818110156130e157826130a161309c6130a795613097612a889561308d6014549160018060801b03831690612946565b9060801c9061296f565b61298c565b61290c565b9261298c565b6130d5601b54916130d06130c7601c54926130c284876129a6565b6129f7565b620186a0900590565b612feb565b90808212612b17575090565b505050601b5490565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031614806131db575b15613145577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f000000000000000000000000000000000000000000000000000000000000000082527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a081526131d58161150c565b51902090565b507f0000000000000000000000000000000000000000000000000000000000000000461461311c565b6101009081818051810103126105005760208101516132228161059b565b604082015192613231846104ef565b606083015194613240866104ef565b60808401519460a085015160c08601519361325a85610931565b60e08701519601516001600160a01b0392831698831696428310610a655761331c956133108a8c610a388199610a2a613315998f8f600014613333577f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e266965b6132c2876135a8565b60408051602081019a8b5261ffff909716908701526001600160a01b03978816606087015296909116608085015260a084015260c083019490945260e0820193909352918290610100820190565b6133a6565b161461335a565b1561332a5761072892613623565b610728926135d0565b7f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d6966132b9565b1561336157565b60405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152606490fd5b9161052a9391610a45936134da565b6005111561143f57565b6133c8816133b5565b806133d05750565b6133d9816133b5565b600181036134215760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b6044820152606490fd5b61342a816133b5565b600281036134775760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606490fd5b806134836003926133b5565b1461348a57565b60405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608490fd5b9291906fa2a8918ca85bafe22016d0b997e4df60600160ff1b0383116135465791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa15610e035781516001600160a01b03811615613540579190565b50600190565b50505050600090600390565b61355a6130ea565b9060405190602082019261190160f01b84526022830152604282015260428152608081018181106001600160401b038211176115075760405251902090565b60001981146129245760010190565b6001600160a01b031660009081526004602052604090208054906135cb82613599565b905590565b6001600160a01b03908116600081815260036020908152604080832095909416808352949052918220849055907fe50de2333c10a9502fcb1d8ae13a51bbf423153dfc63c2b8997665b32154afc39080a4565b6001600160a01b0390811660008181526002602090815260408083208686168452825290912091937f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259391928690556040519586521693a3565b90816020910312610500575161052a816104ef565b60265460ff166137df576014546001600160801b031680156137d857600a546136c3906001600160a01b0316610625565b6040518091631848f2bf60e31b825281600460209384935afa918215610e035760049282916000916137ab575b50604051631a674cc560e11b815293849182906001600160a01b03165afa8015610e035761373d9261372f9260009261378e575b505060295490612946565b670de0b6b3a7640000900490565b8082101561378657612a88613761926130a161375c602a54809361298c565b612929565b612b0a6027549161378161372f6028549261377c848761298c565b612946565b612999565b505060275490565b6137a49250803d10610dfc57610ded8183611542565b3880613724565b6137cb9150823d84116137d1575b6137c38183611542565b81019061367d565b386136f0565b503d6137b9565b5060285490565b600a546004906020906137fa906001600160a01b0316610625565b60405163e6abad4960e01b815292839182905afa908115610e0357600091613820575090565b61052a915060203d8111610dfc57610ded8183611542565b60405190613845826114ec565b6014546001600160801b038116835260801c6020830152565b6001600160801b03918216908216019190821161292457565b60006020604051613887816114ec565b82815201526001600160401b03908160255460401c1691824203924284116129245742146138ff576138fa61377c91670de0b6b3a76400006138ef6138ca613838565b9660018060801b03958694858a5116906301e133806138e7613692565b041690612946565b04168285511661385e565b168252565b50905061052a613838565b604051613916816114ec565b6025546001600160401b038181809316845260401c1661393d60208401918083524261298c565b928315613a905761398f613a679261397f61397261396661395c613692565b6301e13380900490565b6001600160401b031690565b6001600160401b03168452565b8442166001600160401b03169052565b613a226139cf61372f6139a0613838565b805190979061377c906139bb906001600160801b0316612c2b565b612ace61396688516001600160401b031690565b85519095906139fb906139ee906001600160801b03808a16911661385e565b6001600160801b03168252565b805160209091015160801b6001600160801b0319166001600160801b039190911617601455565b613a5a816001600160401b038151166025549160206001600160401b0360401b91015160401b169160018060801b0319161717602555565b516001600160401b031690565b16907f7484db546dcd57af0104c73c8a6968dfbaf5767f047cee0dadd0499ad7df81a0600080a3565b50505050565b15613a9d57565b60405162461bcd60e51b815260206004820152601860248201527710908e881919589d081c985d195cc81b9bdd081d985b1a5960421b6044820152606490fd5b15613ae457565b60405162461bcd60e51b815260206004820152601b60248201527f42423a206d617820646562742072617465206e6f742076616c696400000000006044820152606490fd5b9291906004600c546020613b47610625600a5460018060a01b031690565b6040516364cfdbb760e11b815293849182905afa908115610e0357613b8192600092610dd357501460ff8019602654169115151617602655565b613b90610ca360265460ff1690565b613b9a5750505050565b613bc1613bc692613bbc613bcb96602854151580613bf8575b613bd457602955565b602755565b602855565b602a55565b38808080613a90565b613bdf838610613a96565b613bf3670de0b6b3a7640000841115613add565b602955565b506027541515613bb3565b15613c0a57565b60405162461bcd60e51b815260206004820152600c60248201526b21211d103130b2103830b4b960a11b6044820152606490fd5b15613c4557565b60405162461bcd60e51b815260206004820152603060248201527f42423a206c69717569646174696f6e20636f6c6c61746572616c697a6174696f60448201526f1b881c985d19481b9bdd081d985b1a5960821b6064820152608490fd5b600a80546001600160a01b0319166001600160a01b03831617905593959493929160405163de40657760e01b81526020946001600160a01b039086908390600490829085165afa8015610e035781613d2391600494600091613f75575b5060098054919092166001600160a01b03166001600160a01b0319909116179055565b600a54613d5e90613d3c906001600160a01b0316610625565b600580546001600160a01b0319166001600160a01b0392909216919091179055565b600a548690613d75906001600160a01b0316610625565b604051631192124760e11b815293849182905afa8015610e0357613dd892600091613f58575b50818516151580613f4d575b80613f42575b613db690613c03565b600d8054919092166001600160a01b03166001600160a01b0319909116179055565b600a546004908590613df2906001600160a01b0316610625565b6040516386c8e21d60e01b815292839182905afa928315610e0357613e2b613e5294613e4d93613e7498600092613f25575b5050600e55565b600b80546001600160a01b0319166001600160a01b0392909216919091179055565b600c55565b600f80546001600160a01b0319166001600160a01b0392909216919091179055565b613e7c612df3565b5050613e8a62015f90601955565b613e946000601a55565b8015613f1857601e555b8015613f0b57601f555b613eb7601f54601e5410613c3e565b8015613ef9576022555b613ecd62013880601b55565b613ed962015f90601c55565b613ee4612710601d55565b613eee6032602055565b610728612ee0602155565b50613ec1670de0b6b3a7640000602255565b50613ea86201388061249b565b50613e9e620124f86124bd565b613f3b9250803d10610dfc57610ded8183611542565b3880613e24565b508582161515613dad565b508181161515613da7565b613f6f9150873d89116137d1576137c38183611542565b38613d9b565b613f8c9150893d8b116137d1576137c38183611542565b38613d00565b6001600160401b0381116115075760051b60200190565b90613fb382613f92565b613fc06040519182611542565b8281528092613fd1601f1991613f92565b0190602036910137565b90613fe582613f92565b613ff26040519182611542565b8281528092614003601f1991613f92565b019060005b82811061401457505050565b806060602080938501015201614008565b634e487b7160e01b600052603260045260246000fd5b919081101561407c5760051b81013590601e19813603018212156105005701908135916001600160401b038311610500576020018236038113610500579190565b614025565b908092918237016000815290565b3d156140ba573d906140a0826117db565b916140ae6040519384611542565b82523d6000602084013e565b606090565b805182101561407c5760209160051b010190565b6103e881511161418a57604481511061415757600481015181019060208160248401930312610500576024810151906001600160401b03821161050057018160438201121561050057602481015161412a816117db565b926141386040519485611542565b818452604482840101116105005761052a916044602085019101611563565b50604051614164816114ec565b60168152754d61726b65743a206e6f2072657475726e206461746160501b602082015290565b50604051614197816114ec565b60178152764d61726b65743a20726561736f6e20746f6f206c6f6e6760481b602082015290565b9190826040910312610500576020825192015190565b908060209392818452848401376000828201840152601f01601f1916010190565b91908082526020809201929160005b828110614212575050505090565b9091929382806001928735614226816104ef565b848060a01b03168152019501910192919092614204565b9082818152602080910193818360051b82010194846000925b858410614267575050505050505090565b90919293949596601f198282030184528735601e19843603018112156105005783018681019190356001600160401b038111610500578036038313610500576142b5889283926001956141d4565b990194019401929594939190614256565b9295969094969391936040519660209663e5644d8b60e01b888a01528060a48a01608060248c01525260c48901959060005b89828210614365575050505087850360231990810160448a0152818652936001600160fb1b03821161050057614362996119a2988a98610a2a986143539560051b809284830137018981036003190160648b015201916141f5565b9285840301608486015261423d565b50565b808499600193949535614377816104ef565b848060a01b0316815201980191019190916142f8565b60405162461bcd60e51b815260206004820152600f60248201526e10908e881b9bdd08185b1b1bddd959608a1b6044820152606490fd5b90816020910312610500575161052a8161059b565b156143e057565b60405162461bcd60e51b815260206004820152600d60248201526c10908e881b9bdd081d985b1a59609a1b6044820152606490fd5b602e546001600160a01b0316801561447357816000929160208493519201905af49061443f61408f565b911561444757565b611b9c614453836140d3565b60405162461bcd60e51b8152602060048201529182916024830190611586565b60405162461bcd60e51b815260206004820152601260248201527110908e881b5bd91d5b19481b9bdd081cd95d60721b6044820152606490fd5b602c546001600160a01b0316801561447357816000929160208493519201905af49061443f61408f565b602b546001600160a01b0316801561447357816000929160208493519201905af49061443f61408f565b602d546001600160a01b0316801561447357816000929160208493519201905af49061443f61408f56fea2646970667358221220b63894d9978b72d2529a331d40e003a465dd466fe2b8b17cea564b21b9bd66d164736f6c63430008120033", - "deployedBytecode": "0x6080604052600436101561001b575b361561001957600080fd5b005b60003560e01c8062a02a20146104ea57806302ce728f146104e5578063078dfbe7146104e0578063095ea7b3146104db5780630996efb7146104d65780630c4e84f0146104d157806318160ddd146104cc5780631c9e379b146104c75780631da8bf10146104c25780631ee9c8f2146104bd5780631fb8f81a146104b857806323b872dd146104b357806325384fd8146104ae57806327c811a8146104a9578063331960ff146104a457806334ce998a1461049f57806334d441d01461049a5780633644e5151461049557806337b6b7b91461049057806338d52e0f1461048b5780633ba0b9a9146104865780633f741adb1461048157806340626d8b1461047c57806344de240a14610477578063473e3ce71461047257806348e4163e1461046d5780634ddf47d4146104685780634e71e0c8146104635780635224372c1461045e578063529898f214610459578063579354621461045457806358db9afe1461044f5780635d5f73ef1461044a5780636b19ad16146104455780636c3d8b8f1461044057806370a082311461043b578063727785471461043657806374645ff3146104315780637dc0d1d01461042c5780637ecebe00146104275780637fa0b84e146104225780638285ef401461041d57806387b27937146104185780638c5d0ed3146104135780638da5cb5b1461040e578063910dd7c814610409578063959916dc1461040457806399a97028146103ff5780639e15e89f146103fa578063a28e6b82146103f5578063a9059cbb146103f0578063aa7d9665146103eb578063af405b4c146103e6578063b0e21e8a146103e1578063b25ea8fb146103dc578063b27c0e74146103d7578063b7113f19146103d2578063bb4cfe3b146103cd578063bde39c5d146103c8578063c1ad5c8d146103c3578063c861a526146103be578063cce19f81146103b9578063cd0211eb146103b4578063ce8849ed146103af578063d505accf146103aa578063d8dfeb45146103a5578063dd62ed3e146103a0578063de4065771461039b578063e0996cb614610396578063e30c397814610391578063e5644d8b1461038c578063e9a4925214610387578063ea64dd5614610382578063eec0f42e1461037d578063f5b33dfa14610378578063f791395d146103735763f8ba4cff0361000e57612369565b61234b565b612322565b612304565b6122e6565b612262565b6121d9565b6121b0565b612192565b612169565b61212d565b612104565b612056565b61202d565b611fab565b611f57565b611f2e565b611f13565b611ef5565b611ed7565b611eb4565b611e83565b611df7565b611dd9565b611ba7565b611a94565b6119a7565b6118fd565b6118bf565b611894565b611877565b6117f6565b6117b2565b611794565b611757565b611725565b6116fb565b6116be565b611695565b6115bc565b61145d565b6113e2565b6113b9565b61139b565b611372565b6112cf565b6112b1565b611293565b611220565b61113e565b610fb0565b610f73565b610f55565b610f37565b610f19565b610ef5565b610ed7565b610eae565b610e90565b610e6d565b610e4f565b610e26565b610e08565b610c06565b610bdd565b610bc7565b610b7d565b610aaa565b610981565b6108f4565b6108d8565b6107e1565b610757565b6106e8565b6105a5565b610572565b61052d565b6001600160a01b0381160361050057565b600080fd5b60409060031901126105005760043561051d816104ef565b9060243561052a816104ef565b90565b3461050057602061056961054036610505565b6001600160a01b0391821660009081526003855260408082209290931681526020919091522090565b54604051908152f35b3461050057600036600319011261050057604061058d612df3565b825191151582526020820152f35b8015150361050057565b34610500576060366003190112610500576004356105c2816104ef565b602435906105cf8261059b565b604435916105dc8361059b565b6005546001600160a01b0391906105f69083163314612382565b156106cf578116918215908115916106c7575b501561068a576005546106789290610631906001600160a01b03165b6001600160a01b031690565b7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b600680546001600160a01b0319169055005b60405162461bcd60e51b81526020600482015260156024820152744f776e61626c653a207a65726f206164647265737360581b6044820152606490fd5b905038610609565b60068054919092166001600160a01b0319909116179055005b3461050057604036600319011261050057610712600435610708816104ef565b6024359033613623565b602060405160018152f35b3590610728826104ef565b565b9181601f84011215610500578235916001600160401b038311610500576020838186019501011161050057565b346105005761018036600319011261050057602435610775816104ef565b604435906001600160401b0382116105005761079861001992369060040161072a565b90606435926107a6846104ef565b610164359361014435936101243593610104359360e4359360c4359360a43593608435936004356123cd565b60043590600982101561050057565b34610500576040366003190112610500576107fa6107d2565b6024356108068161059b565b6008546001600160a01b0316330361089c5761088b8261083a61083561082e61001996611444565b5460ff1690565b151590565b610849841515918214156128b5565b61085561082e83611444565b61085e83611435565b1515827feeec81de25875ce1725479bb76f720a8defdb43dea041919ae37bb4aae9847c0600080a4611444565b9060ff801983541691151516179055565b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881d5b985d5d1a1bdc9a5e995960621b6044820152606490fd5b3461050057600036600319011261050057602060405160008152f35b3461050057602036600319011261050057600435610911816104ef565b60018060a01b031660005260186020526020604060002054604051908152f35b60ff81160361050057565b60e090600319011261050057600435610954816104ef565b90602435610961816104ef565b90604435906064359060843561097681610931565b9060a4359060c43590565b346105005761098f3661093c565b9592809594959291924211610a655761001996610a6093610a4d93610a40878a610a388b610a2a610a45996109c3866135a8565b60405195869460208601988991959493909260c09360e08401977f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d685526000602086015260018060a01b038092166040860152166060840152608083015260a08201520152565b03601f198101835282611542565b519020613552565b6134da565b9190916133bf565b6001600160a01b0383811691161461335a565b6135d0565b60405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b346105005760c036600319011261050057600435610ac7816104ef565b608435610ad3816104ef565b60a435906001600160401b03821161050057610b7992610b55610b5a92610a2a610b04610b6996369060040161072a565b604051958694630f74e47960e11b602087015260018060a01b0380921660248701526024356044870152604435606487015260643560848701521660a485015260c060c485015260e48401916141d4565b614415565b60208082518301019101612f2f565b6040519081529081906020820190565b0390f35b34610500576000366003190112610500576020602a54604051908152f35b606090600319011261050057600435610bb3816104ef565b90602435610bc0816104ef565b9060443590565b3461050057610bd536610b9b565b50505061438d565b3461050057600036600319011261050057602c546040516001600160a01b039091168152602090f35b34610500576080366003190112610500576004356024356044359060643592610c3a60018060a01b03600554163314612382565b600c54600a5460049190602090610c59906001600160a01b0316610625565b6040516364cfdbb760e11b815293849182905afa908115610e0357610c9492600092610dd3575b501460ff8019602654169115151617602655565b610ca7610ca360265460ff1690565b1590565b610cad57005b610cb561390a565b80610d8e575b5080610d49575b5080610d11575b5080610cd157005b80610ce3620186a061001993106143d9565b806021547f1f1d0e9e5e3fd195010504141e7472fc7f53e44d7cd3f236f0892778039c6326600080a3602155565b80610d43916029547fd00c912c9d1f75ac893827b7bb73eb82874daea46c2eaa6d2bd89f0c8ee57366600080a3602955565b38610cc9565b610d8890610d5a60285482116143d9565b806027547f5391ae26cacff12a54d10d45f0f04678de8bb9c9b2f784eb7074dac7cc0f8fd9600080a3602755565b38610cc2565b610dcd90610d9f60275482106143d9565b806028547fa54af2279046b0207f426565497319c4e274479ce71cb53598ec2391459be3f3600080a3602855565b38610cbb565b610df591925060203d8111610dfc575b610ded8183611542565b810190612f2f565b9038610c80565b503d610de3565b612d61565b34610500576000366003190112610500576020601354604051908152f35b34610500576000366003190112610500576014546040516001600160801b039091168152602090f35b34610500576000366003190112610500576020601954604051908152f35b34610500576000366003190112610500576020610e886130ea565b604051908152f35b34610500576000366003190112610500576020601254604051908152f35b3461050057600036600319011261050057600d546040516001600160a01b039091168152602090f35b34610500576000366003190112610500576020601154604051908152f35b34610500576060366003190112610500576020610e88604435602435600435612a46565b34610500576000366003190112610500576020601654604051908152f35b34610500576000366003190112610500576020600e54604051908152f35b34610500576000366003190112610500576020601554604051908152f35b3461050057602036600319011261050057600435610f90816104ef565b60018060a01b031660005260176020526020604060002054604051908152f35b34610500576020366003190112610500576004356001600160401b03811161050057610fe090369060040161072a565b60ff6023541661110357816101e0918101031261050057806110c66110076110e59361071d565b6110136020840161071d565b61101f6040850161071d565b916110a661102f6060870161071d565b9361103c6080880161071d565b9361104960a0890161071d565b9361105660e08a0161071d565b602b80546001600160a01b03199081166001600160a01b0394851617909155602d8054821695841695909517909455602c8054851693831693909317909255602e80549093169616959095179055565b6101c0850135926101a0860135926101008701359260c088013591613ca3565b6101808101359061016081013590610120610140820135910135613b29565b6110f162015180601255565b610019600160ff196023541617602355565b60405162461bcd60e51b815260206004820152601360248201527213585c9ad95d0e881a5b9a5d1a585b1a5e9959606a1b6044820152606490fd5b346105005760008060031936011261121d576006546001600160a01b0316338190036111d9576005546111c691908190611180906001600160a01b0316610625565b7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08580a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b600680546001600160a01b031916905580f35b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b80fd5b34610500576040611287611278610a2a61127361123c36610b9b565b87516314890dcb60e21b60208201526001600160a01b03938416602482015292909116604483015260648201529182906084820190565b6144ad565b602080825183010191016141be565b82519182526020820152f35b34610500576000366003190112610500576020602154604051908152f35b34610500576000366003190112610500576020601c54604051908152f35b346105005760a0366003190112610500576004356112ec816104ef565b6064356112f8816104ef565b608435906001600160401b03821161050057610b7992610b55610b5a92610a2a611329610b6996369060040161072a565b604051958694632c6dcd7f60e11b602087015260018060a01b0380921660248701526024356044870152604435606487015216608485015260a060a485015260c48401916141d4565b3461050057600036600319011261050057602b546040516001600160a01b039091168152602090f35b34610500576000366003190112610500576020602754604051908152f35b3461050057600036600319011261050057600a546040516001600160a01b039091168152602090f35b34610500576020366003190112610500576004356113ff816104ef565b60018060a01b031660005260016020526020604060002054604051908152f35b634e487b7160e01b600052602160045260246000fd5b6009111561143f57565b61141f565b600981101561143f576000526007602052604060002090565b34610500576020366003190112610500576114766107d2565b600981101561143f576000526007602052602060ff604060002054166040519015158152f35b90600182811c921680156114cc575b60208310146114b657565b634e487b7160e01b600052602260045260246000fd5b91607f16916114ab565b634e487b7160e01b600052604160045260246000fd5b604081019081106001600160401b0382111761150757604052565b6114d6565b60c081019081106001600160401b0382111761150757604052565b60e081019081106001600160401b0382111761150757604052565b90601f801991011681019081106001600160401b0382111761150757604052565b60005b8381106115765750506000910152565b8181015183820152602001611566565b9060209161159f81518092818552858086019101611563565b601f01601f1916010190565b90602061052a928181520190611586565b346105005760008060031936011261121d57604051816010546115de8161149c565b8084529060019081811690811561166d5750600114611614575b610b798461160881880382611542565b604051918291826115ab565b60108352602094507f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae6725b82841061165a5750505081610b799361160892820101936115f8565b805485850187015292850192810161163e565b610b7996506116089450602092508593915060ff191682840152151560051b820101936115f8565b3461050057600036600319011261050057600f546040516001600160a01b039091168152602090f35b34610500576020366003190112610500576004356116db816104ef565b60018060a01b031660005260046020526020604060002054604051908152f35b346105005760403660031901126105005761071260043561171b816104ef565b60243590336135d0565b3461050057600036600319011261050057601454604080516001600160801b038316815260809290921c602083015290f35b3461050057602036600319011261050057600435611774816104ef565b60018060a01b031660005260246020526020604060002054604051908152f35b34610500576000366003190112610500576020601b54604051908152f35b34610500576000366003190112610500576005546040516001600160a01b039091168152602090f35b6001600160401b03811161150757601f01601f191660200190565b34610500576040366003190112610500576004356001600160401b0381116105005736602382011215610500578060040135611831816117db565b9161183f6040519384611542565b81835236602483830101116105005781600092602460209301838601378301015260243561ffff811681036105005761001991613204565b346105005760003660031901126105005760208054604051908152f35b34610500576040366003190112610500576020610e886004356118b6816104ef565b60243590613007565b346105005760403660031901126105005760606118ea6004356118e1816104ef565b60243590612b2a565b9060405192835260208301526040820152f35b346105005760803660031901126105005760043561191a816104ef565b602435611926816104ef565b60443590611933826104ef565b606435926001600160401b03841161050057610a2a6119a29261195d61001996369060040161072a565b60405163514735c160e11b60208201526001600160a01b03958616602482015292851660448401529390951660648201526080608482015293849260a48401916141d4565b6144d7565b34610500576040366003190112610500576119c36004356104ef565b61438d565b9181601f84011215610500578235916001600160401b038311610500576020808501948460051b01011161050057565b906040820191604081528151809352606081019260208093019060005b818110611a7e57505050818184039101528251908183528083019281808460051b8301019501936000915b848310611a505750505050505090565b9091929394958480611a6e600193601f198682030187528a51611586565b9801930193019194939290611a40565b8251151586529484019491840191600101611a15565b346105005760408060031936011261050057600480356001600160401b03811161050057611ac590369083016119c8565b9290602435611ad38161059b565b611adc85613fa9565b93611ae686613fdb565b95600090815b818110611b0157865180610b798b8b836119f8565b8280611b0e83858a61403b565b90611b1d8b5180938193614081565b0390305af4611b2a61408f565b90801580611ba0575b611b79578291611b54611b5992611b4d611b74968e6140bf565b9015159052565b6140d3565b611b63828c6140bf565b52611b6e818b6140bf565b50613599565b611aec565b8886611b9c611b87856140d3565b925162461bcd60e51b815292839283016115ab565b0390fd5b5086611b33565b346105005760008060031936011261121d57611bce60018060a01b03600554163314612382565b600d54611be3906001600160a01b0316610625565b604080516370a0823160e01b815230600482015260209390928484602481845afa908115610e0357611c5f948392611dba575b50600954611c2c906001600160a01b0316610625565b600e548551638eb22cdd60e01b815260048101919091526024810184905260006044820152958790879081906064820190565b0381845afa958615610e03578496611d9b575b5085611c83575b8451868152602090f35b845163095ea7b360e01b81526001600160a01b03919091166004820152602481019290925290919085908390604490829085905af1908115610e0357611d259584938693611d6d575b5050600954611ce3906001600160a01b0316610625565b600e548451634d4d7cbd60e11b8152600481019190915230602482015233604482015260006064820152608481019390935291958692918391829060a4820190565b03925af1928315610e0357610b7993611d41575b808080611c79565b611d6090823d8411611d66575b611d588183611542565b8101906141be565b50611d39565b503d611d4e565b81611d8c92903d10611d94575b611d848183611542565b8101906143c4565b503880611ccc565b503d611d7a565b611db3919650873d8911610dfc57610ded8183611542565b9438611c72565b611dd2919250863d8811610dfc57610ded8183611542565b9038611c16565b34610500576000366003190112610500576020601a54604051908152f35b3461050057604036600319011261050057602435611e14816104ef565b611e2960018060a01b03600554163314612382565b60008080808094600435905af1611e3e61408f565b5015611e475780f35b60405162461bcd60e51b815260206004820152601460248201527321211d103a3930b739b332b9103330b4b632b21760611b6044820152606490fd5b346105005760003660031901126105005760406025548151906001600160401b03908181168352831c166020820152f35b3461050057600036600319011261050057602060ff602654166040519015158152f35b34610500576000366003190112610500576020601e54604051908152f35b34610500576000366003190112610500576020602954604051908152f35b34610500576000366003190112610500576020610e88613692565b3461050057600036600319011261050057602d546040516001600160a01b039091168152602090f35b3461050057610019610a2a611fa6611f6e36610b9b565b60405163cce19f8160e01b60208201526001600160a01b03938416602482015292909116604483015260648201529182906084820190565b614501565b3461050057608036600319011261050057610b79610b69610b5a600435611fd1816104ef565b60243590611fde826104ef565b60443590611feb8261059b565b6040519263cd0211eb60e01b602085015260018060a01b038092166024850152166044830152151560648201526064356084820152608481526112738161150c565b34610500576000366003190112610500576008546040516001600160a01b039091168152602090f35b34610500576120643661093c565b9592809594959291924211610a6557610019966120ff93610a4d93610a40878a610a388b610a2a610a4599612098866135a8565b60405195869460208601988991959493909260c09360e08401977f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e26685526000602086015260018060a01b038092166040860152166060840152608083015260a08201520152565b613623565b3461050057600036600319011261050057600b546040516001600160a01b039091168152602090f35b3461050057602061056961214036610505565b6001600160a01b0391821660009081526002855260408082209290931681526020919091522090565b34610500576000366003190112610500576009546040516001600160a01b039091168152602090f35b34610500576000366003190112610500576020601d54604051908152f35b34610500576000366003190112610500576006546040516001600160a01b039091168152602090f35b34610500576080366003190112610500576001600160401b036004358181116105005761220a9036906004016119c8565b90602435838111610500576122239036906004016119c8565b906044358581116105005761223c9036906004016119c8565b9290916064359687116105005761225a6100199736906004016119c8565b9690956142c6565b346105005760a036600319011261050057610019600435612282816104ef565b6024359061228f826104ef565b6044359061229c8261059b565b604051926374d2492960e11b602085015260018060a01b03809216602485015216604483015215156064820152606435608482015260843560a482015260a48152611fa681611527565b34610500576000366003190112610500576020601f54604051908152f35b34610500576000366003190112610500576020600c54604051908152f35b3461050057600036600319011261050057602e546040516001600160a01b039091168152602090f35b34610500576000366003190112610500576020602854604051908152f35b346105005760003660031901126105005761001961390a565b1561238957565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b98969492909a9997959391600160a01b6001900391826005541633146123f290612382565b620186a09c6124038e8d1115612683565b6020549b8060009d7fc353b09af857951dccce61b43a5854fc45beceed36c50e5d4cc2e71858a8e0df8f80a360205583811661263a575b5080612606575b50508116908161259f575b505080612584575b5080612569575b508061254f575b5080612528575b5080612501575b50806124c9575b5050806124a0575b5050806124895750565b6107289061249b601e5482101561284e565b601f55565b6124af6124c292821115612683565b6124bd601f548211156127f4565b601e55565b388061247f565b806124fa927fae6e0ab3b95f0a53ff9660a390ccedcbbf1f2355dce974a9841af106fddcfaba6016549180a3601655565b3880612477565b80612510866125229310612683565b61251d601b548211612683565b601c55565b38612470565b80612537876125499310612683565b612544601c548210612683565b601b55565b38612469565b8061255e886125639310612683565b601d55565b38612462565b806125798961257e931115612683565b601a55565b3861245b565b806125948a612599931115612683565b601955565b38612454565b6008546125ff92906125b9906001600160a01b0316610625565b7f5a62d22209e370e38eea92cfddcd228e656e6ec139243392a760a7769f5877fd8b80a3600880546001600160a01b0319166001600160a01b0392909216919091179055565b388061244c565b61260f91612717565b7fa6f004921c944d4b8bf6e38462b00f36a58d62495d56b51f571ab78f732c98158980a13880612441565b600f80546001600160a01b0319166001600160a01b039092169190911790557f0b2d6eb667d0522c3eb86e4288afecae6c11591ffd1345d4d12407e0598bca9b8b80a13861243a565b1561268a57565b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881b9bdd081d985b1a59607a1b6044820152606490fd5b601f81116126cf575050565b6000906010825260208220906020601f850160051c8301941061270d575b601f0160051c01915b82811061270257505050565b8181556001016126f6565b90925082906126ed565b91906001600160401b0381116115075761273b8161273660105461149c565b6126c3565b6000601f82116001146127755781929360009261276a575b50508160011b916000199060031b1c191617601055565b013590503880612753565b6010600052601f198216937f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae67291805b8681106127dc57508360019596106127c2575b505050811b01601055565b0135600019600384901b60f8161c191690553880806127b7565b909260206001819286860135815501940191016127a4565b156127fb57565b60405162461bcd60e51b815260206004820152602560248201527f4d61726b65743a20636f6c6c61746572616c697a6174696f6e5261746520746f6044820152646f2062696760d81b6064820152608490fd5b1561285557565b60405162461bcd60e51b815260206004820152603260248201527f4d61726b65743a206c69717569646174696f6e436f6c6c61746572616c697a616044820152711d1a5bdb94985d19481d1bdbc81cdb585b1b60721b6064820152608490fd5b156128bc57565b60405162461bcd60e51b81526020600482015260126024820152714d61726b65743a2073616d6520737461746560701b6044820152606490fd5b634e487b7160e01b600052601160045260246000fd5b90620186a09182810292818404149015171561292457565b6128f6565b90670de0b6b3a76400009182810292818404149015171561292457565b8181029291811591840414171561292457565b634e487b7160e01b600052601260045260246000fd5b8115612979570490565b612959565b604d811161292457600a0a90565b9190820391821161292457565b9190820180921161292457565b8181039291600013801582851316918412161761292457565b906509184e72a0009182810292818405149015171561292457565b90670de0b6b3a76400009182810292818405149015171561292457565b818102929160008212600160ff1b82141661292457818405149015171561292457565b811561297957600160ff1b8114600019831416612924570590565b600160ff1b81146129245760000390565b60145491929190612a61906001600160801b03831690612946565b9060801c90811561297957612a8e91612a7f910493601f5490612946565b612a888361297e565b9061296f565b90818310612b2257612af3612aed612ae8612aac612af8958761298c565b93612ae3612add612ad4601e54612ace612ac58661297e565b60215490612999565b90612946565b612a888461297e565b9161297e565b6129a6565b6129bf565b916129da565b612a1a565b6000811215612b1c57612b0a90612a35565b905b808211612b17575090565b905090565b90612b0c565b505050600090565b6001600160a01b03811660009081526017602052604081205491939290918015612c9c57612bc890612b5a613877565b93612b66841515612ee3565b600954602090612b7e906001600160a01b0316610625565b600c546001600160a01b038a1660009081526018602052604080822054905163442c159960e01b815260048101939093526024830152604482015294859190829081906064820190565b03915afa928315610e0357612c7395612a88612c2b6020612c37612c188a612c13612c0a612c6d9c612c469a8c91612c7f575b50602254620186a09004612ace565b601e5490612946565b61296f565b8551909890612ace906001600160801b03165b6001600160801b031690565b9301516001600160801b031690565b90828210612c775750035b6001600160a01b03909516600090815260186020526040902090565b54612f3e565b9091565b915050612c51565b612c969150873d8111610dfc57610ded8183611542565b38612bfb565b505080919250918190565b91908260409103126105005760208251612cc08161059b565b92015190565b602080825260009160105491612cdb8361149c565b9283828401526001908181169081600014612d3e5750600114612d00575b5050505090565b929350601060005280600020926000935b858510612d2a5750505060409250010138808080612cf9565b805485850160400152938201938101612d11565b925050506040935060ff929192191683830152151560051b010138808080612cf9565b6040513d6000823e3d90fd5b15612d7457565b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881c985d19481d1bdbc81bdb1960621b6044820152606490fd5b15612db757565b60405162461bcd60e51b81526020600482015260146024820152734d61726b65743a20696e76616c6964207261746560601b6044820152606490fd5b600f54612e08906001600160a01b0316610625565b6040805163d6d7d52560e01b81529291839081600081612e2a60048201612cc6565b03925af18015610e03576000928391612eaf575b50908215612e8a57612e51821515612db0565b612e5a82601155565b817f9f9192b5edb17356c524e08d9e025c8e2f6307e6ea52fb7968faa3081f51c3c8600080a25b61072842601355565b9050612ea6612e9e60135460125490612999565b421115612d6d565b60115490612e81565b9050612ed391925060403d8111612edc575b612ecb8183611542565b810190612ca7565b91909138612e3e565b503d612ec1565b15612eea57565b60405162461bcd60e51b815260206004820152601e60248201527f4d61726b65743a2065786368616e676552617465206e6f742076616c696400006044820152606490fd5b90816020910312610500575190565b612f936020831592612f508415612ee3565b600954600c5460405163442c159960e01b81526004810191909152602481019290925260006044830152909283916001600160a01b031690829081906064820190565b03915afa8015610e0357612fb391600091612fcd575b5060225490612946565b906129795704620186a0612fc9601e5483612946565b0491565b612fe5915060203d8111610dfc57610ded8183611542565b38612fa9565b9190916000838201938412911290801582169115161761292457565b9061302b61304991612c6d8460018060a01b03166000526018602052604060002090565b6001600160a01b039093166000908152601760205260409020909291565b548015612b22578215612b2257828110612b2257818110156130e157826130a161309c6130a795613097612a889561308d6014549160018060801b03831690612946565b9060801c9061296f565b61298c565b61290c565b9261298c565b6130d5601b54916130d06130c7601c54926130c284876129a6565b6129f7565b620186a0900590565b612feb565b90808212612b17575090565b505050601b5490565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031614806131db575b15613145577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f000000000000000000000000000000000000000000000000000000000000000082527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a081526131d58161150c565b51902090565b507f0000000000000000000000000000000000000000000000000000000000000000461461311c565b6101009081818051810103126105005760208101516132228161059b565b604082015192613231846104ef565b606083015194613240866104ef565b60808401519460a085015160c08601519361325a85610931565b60e08701519601516001600160a01b0392831698831696428310610a655761331c956133108a8c610a388199610a2a613315998f8f600014613333577f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e266965b6132c2876135a8565b60408051602081019a8b5261ffff909716908701526001600160a01b03978816606087015296909116608085015260a084015260c083019490945260e0820193909352918290610100820190565b6133a6565b161461335a565b1561332a5761072892613623565b610728926135d0565b7f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d6966132b9565b1561336157565b60405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152606490fd5b9161052a9391610a45936134da565b6005111561143f57565b6133c8816133b5565b806133d05750565b6133d9816133b5565b600181036134215760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b6044820152606490fd5b61342a816133b5565b600281036134775760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606490fd5b806134836003926133b5565b1461348a57565b60405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608490fd5b9291906fa2a8918ca85bafe22016d0b997e4df60600160ff1b0383116135465791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa15610e035781516001600160a01b03811615613540579190565b50600190565b50505050600090600390565b61355a6130ea565b9060405190602082019261190160f01b84526022830152604282015260428152608081018181106001600160401b038211176115075760405251902090565b60001981146129245760010190565b6001600160a01b031660009081526004602052604090208054906135cb82613599565b905590565b6001600160a01b03908116600081815260036020908152604080832095909416808352949052918220849055907fe50de2333c10a9502fcb1d8ae13a51bbf423153dfc63c2b8997665b32154afc39080a4565b6001600160a01b0390811660008181526002602090815260408083208686168452825290912091937f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259391928690556040519586521693a3565b90816020910312610500575161052a816104ef565b60265460ff166137df576014546001600160801b031680156137d857600a546136c3906001600160a01b0316610625565b6040518091631848f2bf60e31b825281600460209384935afa918215610e035760049282916000916137ab575b50604051631a674cc560e11b815293849182906001600160a01b03165afa8015610e035761373d9261372f9260009261378e575b505060295490612946565b670de0b6b3a7640000900490565b8082101561378657612a88613761926130a161375c602a54809361298c565b612929565b612b0a6027549161378161372f6028549261377c848761298c565b612946565b612999565b505060275490565b6137a49250803d10610dfc57610ded8183611542565b3880613724565b6137cb9150823d84116137d1575b6137c38183611542565b81019061367d565b386136f0565b503d6137b9565b5060285490565b600a546004906020906137fa906001600160a01b0316610625565b60405163e6abad4960e01b815292839182905afa908115610e0357600091613820575090565b61052a915060203d8111610dfc57610ded8183611542565b60405190613845826114ec565b6014546001600160801b038116835260801c6020830152565b6001600160801b03918216908216019190821161292457565b60006020604051613887816114ec565b82815201526001600160401b03908160255460401c1691824203924284116129245742146138ff576138fa61377c91670de0b6b3a76400006138ef6138ca613838565b9660018060801b03958694858a5116906301e133806138e7613692565b041690612946565b04168285511661385e565b168252565b50905061052a613838565b604051613916816114ec565b6025546001600160401b038181809316845260401c1661393d60208401918083524261298c565b928315613a905761398f613a679261397f61397261396661395c613692565b6301e13380900490565b6001600160401b031690565b6001600160401b03168452565b8442166001600160401b03169052565b613a226139cf61372f6139a0613838565b805190979061377c906139bb906001600160801b0316612c2b565b612ace61396688516001600160401b031690565b85519095906139fb906139ee906001600160801b03808a16911661385e565b6001600160801b03168252565b805160209091015160801b6001600160801b0319166001600160801b039190911617601455565b613a5a816001600160401b038151166025549160206001600160401b0360401b91015160401b169160018060801b0319161717602555565b516001600160401b031690565b16907f7484db546dcd57af0104c73c8a6968dfbaf5767f047cee0dadd0499ad7df81a0600080a3565b50505050565b15613a9d57565b60405162461bcd60e51b815260206004820152601860248201527710908e881919589d081c985d195cc81b9bdd081d985b1a5960421b6044820152606490fd5b15613ae457565b60405162461bcd60e51b815260206004820152601b60248201527f42423a206d617820646562742072617465206e6f742076616c696400000000006044820152606490fd5b9291906004600c546020613b47610625600a5460018060a01b031690565b6040516364cfdbb760e11b815293849182905afa908115610e0357613b8192600092610dd357501460ff8019602654169115151617602655565b613b90610ca360265460ff1690565b613b9a5750505050565b613bc1613bc692613bbc613bcb96602854151580613bf8575b613bd457602955565b602755565b602855565b602a55565b38808080613a90565b613bdf838610613a96565b613bf3670de0b6b3a7640000841115613add565b602955565b506027541515613bb3565b15613c0a57565b60405162461bcd60e51b815260206004820152600c60248201526b21211d103130b2103830b4b960a11b6044820152606490fd5b15613c4557565b60405162461bcd60e51b815260206004820152603060248201527f42423a206c69717569646174696f6e20636f6c6c61746572616c697a6174696f60448201526f1b881c985d19481b9bdd081d985b1a5960821b6064820152608490fd5b600a80546001600160a01b0319166001600160a01b03831617905593959493929160405163de40657760e01b81526020946001600160a01b039086908390600490829085165afa8015610e035781613d2391600494600091613f75575b5060098054919092166001600160a01b03166001600160a01b0319909116179055565b600a54613d5e90613d3c906001600160a01b0316610625565b600580546001600160a01b0319166001600160a01b0392909216919091179055565b600a548690613d75906001600160a01b0316610625565b604051631192124760e11b815293849182905afa8015610e0357613dd892600091613f58575b50818516151580613f4d575b80613f42575b613db690613c03565b600d8054919092166001600160a01b03166001600160a01b0319909116179055565b600a546004908590613df2906001600160a01b0316610625565b6040516386c8e21d60e01b815292839182905afa928315610e0357613e2b613e5294613e4d93613e7498600092613f25575b5050600e55565b600b80546001600160a01b0319166001600160a01b0392909216919091179055565b600c55565b600f80546001600160a01b0319166001600160a01b0392909216919091179055565b613e7c612df3565b5050613e8a62015f90601955565b613e946000601a55565b8015613f1857601e555b8015613f0b57601f555b613eb7601f54601e5410613c3e565b8015613ef9576022555b613ecd62013880601b55565b613ed962015f90601c55565b613ee4612710601d55565b613eee6032602055565b610728612ee0602155565b50613ec1670de0b6b3a7640000602255565b50613ea86201388061249b565b50613e9e620124f86124bd565b613f3b9250803d10610dfc57610ded8183611542565b3880613e24565b508582161515613dad565b508181161515613da7565b613f6f9150873d89116137d1576137c38183611542565b38613d9b565b613f8c9150893d8b116137d1576137c38183611542565b38613d00565b6001600160401b0381116115075760051b60200190565b90613fb382613f92565b613fc06040519182611542565b8281528092613fd1601f1991613f92565b0190602036910137565b90613fe582613f92565b613ff26040519182611542565b8281528092614003601f1991613f92565b019060005b82811061401457505050565b806060602080938501015201614008565b634e487b7160e01b600052603260045260246000fd5b919081101561407c5760051b81013590601e19813603018212156105005701908135916001600160401b038311610500576020018236038113610500579190565b614025565b908092918237016000815290565b3d156140ba573d906140a0826117db565b916140ae6040519384611542565b82523d6000602084013e565b606090565b805182101561407c5760209160051b010190565b6103e881511161418a57604481511061415757600481015181019060208160248401930312610500576024810151906001600160401b03821161050057018160438201121561050057602481015161412a816117db565b926141386040519485611542565b818452604482840101116105005761052a916044602085019101611563565b50604051614164816114ec565b60168152754d61726b65743a206e6f2072657475726e206461746160501b602082015290565b50604051614197816114ec565b60178152764d61726b65743a20726561736f6e20746f6f206c6f6e6760481b602082015290565b9190826040910312610500576020825192015190565b908060209392818452848401376000828201840152601f01601f1916010190565b91908082526020809201929160005b828110614212575050505090565b9091929382806001928735614226816104ef565b848060a01b03168152019501910192919092614204565b9082818152602080910193818360051b82010194846000925b858410614267575050505050505090565b90919293949596601f198282030184528735601e19843603018112156105005783018681019190356001600160401b038111610500578036038313610500576142b5889283926001956141d4565b990194019401929594939190614256565b9295969094969391936040519660209663e5644d8b60e01b888a01528060a48a01608060248c01525260c48901959060005b89828210614365575050505087850360231990810160448a0152818652936001600160fb1b03821161050057614362996119a2988a98610a2a986143539560051b809284830137018981036003190160648b015201916141f5565b9285840301608486015261423d565b50565b808499600193949535614377816104ef565b848060a01b0316815201980191019190916142f8565b60405162461bcd60e51b815260206004820152600f60248201526e10908e881b9bdd08185b1b1bddd959608a1b6044820152606490fd5b90816020910312610500575161052a8161059b565b156143e057565b60405162461bcd60e51b815260206004820152600d60248201526c10908e881b9bdd081d985b1a59609a1b6044820152606490fd5b602e546001600160a01b0316801561447357816000929160208493519201905af49061443f61408f565b911561444757565b611b9c614453836140d3565b60405162461bcd60e51b8152602060048201529182916024830190611586565b60405162461bcd60e51b815260206004820152601260248201527110908e881b5bd91d5b19481b9bdd081cd95d60721b6044820152606490fd5b602c546001600160a01b0316801561447357816000929160208493519201905af49061443f61408f565b602b546001600160a01b0316801561447357816000929160208493519201905af49061443f61408f565b602d546001600160a01b0316801561447357816000929160208493519201905af49061443f61408f56fea2646970667358221220b63894d9978b72d2529a331d40e003a465dd466fe2b8b17cea564b21b9bd66d164736f6c63430008120033", + "bytecode": "0x61014080604052346200018a5762000017816200018f565b600f81526001602082016e546170696f63612042696742616e6760881b8152602060405162000046816200018f565b8381520192603160f81b845251902091208160e052610100918183524660a0526040519160208301907f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f92838352604085015260608401524660808401523060a084015260a0835260c083019280841060018060401b03851117620001745760408490525190206080523060c052610120908152600580546001600160a01b0319163390811790915560007f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a362013880601b5562015f90601c55612710601d55612ee06020556103e8602d556148c59283620001ac843960805183613497015260a05183613552015260c05183613461015260e051836134e60152518261350c015251816134c30152f35b634e487b7160e01b600052604160045260246000fd5b600080fd5b604081019081106001600160401b03821117620001745760405256fe6080604052600436101561001b575b361561001957600080fd5b005b60003560e01c8062a02a201461053a57806302ce728f14610535578063078dfbe714610530578063095ea7b31461052b5780630c4e84f01461052657806318160ddd146105215780631c9e379b1461051c5780631d4d3a5d146105175780631da8bf10146105125780631ee9c8f21461050d5780631fb8f81a1461050857806323b872dd1461050357806325384fd8146104fe57806327c811a8146104f9578063331960ff146104f457806334ce998a146104ef57806334d441d0146104ea5780633644e515146104e557806337b6b7b9146104e057806338d52e0f146104db5780633ba0b9a9146104d65780633f741adb146104d157806340626d8b146104cc57806344de240a146104c7578063473e3ce7146104c257806348e4163e146104bd5780634ddf47d4146104b85780634e71e0c8146104b35780635224372c146104ae578063529898f2146104a9578063542afda3146104a4578063579354621461049f57806358db9afe1461049a5780635d5f73ef146104955780636b19ad16146104905780636c3d8b8f1461048b57806370a0823114610486578063727785471461048157806374645ff31461047c57806374c9e481146104775780637dc0d1d0146104725780637ecebe001461046d5780637fa0b84e146104685780638285ef401461046357806387b279371461045e5780638c5d0ed3146104595780638da5cb5b14610454578063910dd7c81461044f578063932bc4f81461044a57806399a97028146104455780639e15e89f14610440578063a28e6b821461043b578063a9059cbb14610436578063aa7d966514610431578063af405b4c1461042c578063b0e21e8a14610427578063b25ea8fb14610422578063b27c0e741461041d578063b7113f1914610418578063bb4cfe3b14610413578063bde39c5d1461040e578063c1ad5c8d14610409578063c861a52614610404578063c9c7d837146103ff578063cce19f81146103fa578063cd0211eb146103f5578063ce8849ed146103f0578063d3fb2a38146103eb578063d505accf146103e6578063d8dfeb45146103e1578063dd62ed3e146103dc578063de406577146103d7578063e0996cb6146103d2578063e30c3978146103cd578063e5644d8b146103c8578063e9a49252146103c3578063ea64dd56146103be578063eec0f42e146103b9578063f5b33dfa146103b4578063f791395d146103af578063f88188cb146103aa5763f8ba4cff0361000e57612862565b6127fb565b6127dd565b6127b4565b612796565b612778565b6126f4565b61266b565b612642565b612624565b6125fb565b6125bf565b612596565b6124e8565b612203565b6121cd565b61214b565b6120f7565b61201f565b611ff6565b611fdb565b611fbd565b611f9f565b611f7c565b611f4b565b611ebf565b611ea1565b611c6f565b611b5c565b611a6f565b6119c5565b611987565b61195c565b6118b8565b611837565b6117f3565b6117d5565b611798565b611766565b61173c565b6116ff565b6116d6565b6116b8565b6115df565b611480565b611405565b6113dc565b6113be565b611395565b6112f2565b6112d4565b6112b6565b611299565b611226565b611144565b610fa1565b610f64565b610f46565b610f28565b610f0a565b610ee6565b610ec8565b610e9f565b610e81565b610e5e565b610e40565b610e17565b610df9565b610bf7565b610bce565b610bb8565b610b6e565b610a9b565b610945565b6108cc565b61088f565b610873565b61077c565b610738565b6105f5565b6105c2565b61057d565b6001600160a01b0381160361055057565b600080fd5b60409060031901126105505760043561056d8161053f565b9060243561057a8161053f565b90565b346105505760206105b961059036610555565b6001600160a01b0391821660009081526003855260408082209290931681526020919091522090565b54604051908152f35b346105505760003660031901126105505760406105dd613167565b825191151582526020820152f35b8015150361055057565b34610550576060366003190112610550576004356106128161053f565b6024359061061f826105eb565b6044359161062c836105eb565b6005546001600160a01b039190610646908316331461287b565b1561071f57811691821590811591610717575b50156106da576005546106c89290610681906001600160a01b03165b6001600160a01b031690565b7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b600680546001600160a01b0319169055005b60405162461bcd60e51b81526020600482015260156024820152744f776e61626c653a207a65726f206164647265737360581b6044820152606490fd5b905038610659565b60068054919092166001600160a01b0319909116179055005b34610550576040366003190112610550576107626004356107588161053f565b6024359033613997565b602060405160018152f35b60043590600982101561055057565b346105505760403660031901126105505761079561076d565b6024356107a1816105eb565b6008546001600160a01b0316330361083757610826826107d56107d06107c961001996611467565b5460ff1690565b151590565b6107e484151591821415612c29565b6107f06107c983611467565b6107f983611458565b1515827feeec81de25875ce1725479bb76f720a8defdb43dea041919ae37bb4aae9847c0600080a4611467565b9060ff801983541691151516179055565b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881d5b985d5d1a1bdc9a5e995960621b6044820152606490fd5b3461055057600036600319011261055057602060405160008152f35b34610550576020366003190112610550576004356108ac8161053f565b60018060a01b031660005260186020526020604060002054604051908152f35b3461055057600036600319011261055057602a546040516001600160a01b039091168152602090f35b60ff81160361055057565b60e0906003190112610550576004356109188161053f565b906024356109258161053f565b90604435906064359060843561093a816108f5565b9060a4359060c43590565b346105505761095336610900565b9592809594959291924211610a295761001996610a2493610a1193610a04878a6109fc8b6109ee610a09996109878661391c565b60405195869460208601988991959493909260c09360e08401977f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d685526000602086015260018060a01b038092166040860152166060840152608083015260a08201520152565b03601f198101835282611565565b5190206138c6565b61384e565b919091613733565b6001600160a01b038381169116146136ce565b613944565b60405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b9181601f84011215610550578235916001600160401b038311610550576020838186019501011161055057565b346105505760c036600319011261055057600435610ab88161053f565b608435610ac48161053f565b60a435906001600160401b03821161055057610b6a92610b46610b4b926109ee610af5610b5a963690600401610a6e565b604051958694630f74e47960e11b602087015260018060a01b0380921660248701526024356044870152604435606487015260643560848701521660a485015260c060c485015260e484019161453e565b614779565b602080825183010191016132a3565b6040519081529081906020820190565b0390f35b34610550576000366003190112610550576020602954604051908152f35b606090600319011261055057600435610ba48161053f565b90602435610bb18161053f565b9060443590565b3461055057610bc636610b8c565b5050506146f1565b3461055057600036600319011261055057602f546040516001600160a01b039091168152602090f35b34610550576080366003190112610550576004356024356044359060643592610c2b60018060a01b0360055416331461287b565b600c54600a5460049190602090610c4a906001600160a01b0316610675565b6040516364cfdbb760e11b815293849182905afa908115610df457610c8592600092610dc4575b501460ff8019602554169115151617602555565b610c98610c9460255460ff1690565b1590565b610c9e57005b610ca6613c7e565b80610d7f575b5080610d3a575b5080610d02575b5080610cc257005b80610cd4620186a0610019931061473d565b806020547f1f1d0e9e5e3fd195010504141e7472fc7f53e44d7cd3f236f0892778039c6326600080a3602055565b80610d34916028547fd00c912c9d1f75ac893827b7bb73eb82874daea46c2eaa6d2bd89f0c8ee57366600080a3602855565b38610cba565b610d7990610d4b602754821161473d565b806026547f5391ae26cacff12a54d10d45f0f04678de8bb9c9b2f784eb7074dac7cc0f8fd9600080a3602655565b38610cb3565b610dbe90610d90602654821061473d565b806027547fa54af2279046b0207f426565497319c4e274479ce71cb53598ec2391459be3f3600080a3602755565b38610cac565b610de691925060203d8111610ded575b610dde8183611565565b8101906132a3565b9038610c71565b503d610dd4565b6130d5565b34610550576000366003190112610550576020601354604051908152f35b34610550576000366003190112610550576014546040516001600160801b039091168152602090f35b34610550576000366003190112610550576020601954604051908152f35b34610550576000366003190112610550576020610e7961345e565b604051908152f35b34610550576000366003190112610550576020601254604051908152f35b3461055057600036600319011261055057600d546040516001600160a01b039091168152602090f35b34610550576000366003190112610550576020601154604051908152f35b34610550576060366003190112610550576020610e79604435602435600435612dba565b34610550576000366003190112610550576020601654604051908152f35b34610550576000366003190112610550576020600e54604051908152f35b34610550576000366003190112610550576020601554604051908152f35b3461055057602036600319011261055057600435610f818161053f565b60018060a01b031660005260176020526020604060002054604051908152f35b34610550576020366003190112610550576004356001600160401b03811161055057610fd1903690600401610a6e565b60ff6022541661110957816101e0918101031261055057806110b7610ff86110d6936121f6565b611004602084016121f6565b611010604085016121f6565b91611097611020606087016121f6565b9361102d608088016121f6565b9361103a60a089016121f6565b9361104760e08a016121f6565b602e80546001600160a01b03199081166001600160a01b039485161790915560308054821695841695909517909455602f8054851693831693909317909255603180549093169616959095179055565b6101c0850135926101a0860135926101008701359260c088013591614017565b6101808101359061016081013590610120610140820135910135613e9d565b6110e262015180601255565b6110ec6000602c55565b6110f76103e8602d55565b610019600160ff196022541617602255565b60405162461bcd60e51b815260206004820152601360248201527213585c9ad95d0e881a5b9a5d1a585b1a5e9959606a1b6044820152606490fd5b3461055057600080600319360112611223576006546001600160a01b0316338190036111df576005546111cc91908190611186906001600160a01b0316610675565b7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08580a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b600680546001600160a01b031916905580f35b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b80fd5b3461055057604061128d61127e6109ee61127961124236610b8c565b87516314890dcb60e21b60208201526001600160a01b03938416602482015292909116604483015260648201529182906084820190565b614811565b60208082518301019101614528565b82519182526020820152f35b346105505760003660031901126105505760208054604051908152f35b34610550576000366003190112610550576020602c54604051908152f35b34610550576000366003190112610550576020601c54604051908152f35b346105505760a03660031901126105505760043561130f8161053f565b60643561131b8161053f565b608435906001600160401b03821161055057610b6a92610b46610b4b926109ee61134c610b5a963690600401610a6e565b604051958694632c6dcd7f60e11b602087015260018060a01b0380921660248701526024356044870152604435606487015216608485015260a060a485015260c484019161453e565b3461055057600036600319011261055057602e546040516001600160a01b039091168152602090f35b34610550576000366003190112610550576020602654604051908152f35b3461055057600036600319011261055057600a546040516001600160a01b039091168152602090f35b34610550576020366003190112610550576004356114228161053f565b60018060a01b031660005260016020526020604060002054604051908152f35b634e487b7160e01b600052602160045260246000fd5b6009111561146257565b611442565b6009811015611462576000526007602052604060002090565b346105505760203660031901126105505761149961076d565b6009811015611462576000526007602052602060ff604060002054166040519015158152f35b90600182811c921680156114ef575b60208310146114d957565b634e487b7160e01b600052602260045260246000fd5b91607f16916114ce565b634e487b7160e01b600052604160045260246000fd5b604081019081106001600160401b0382111761152a57604052565b6114f9565b60c081019081106001600160401b0382111761152a57604052565b60e081019081106001600160401b0382111761152a57604052565b90601f801991011681019081106001600160401b0382111761152a57604052565b60005b8381106115995750506000910152565b8181015183820152602001611589565b906020916115c281518092818552858086019101611586565b601f01601f1916010190565b90602061057a9281815201906115a9565b34610550576000806003193601126112235760405181601054611601816114bf565b808452906001908181169081156116905750600114611637575b610b6a8461162b81880382611565565b604051918291826115ce565b60108352602094507f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae6725b82841061167d5750505081610b6a9361162b928201019361161b565b8054858501870152928501928101611661565b610b6a965061162b9450602092508593915060ff191682840152151560051b8201019361161b565b34610550576000366003190112610550576020602d54604051908152f35b3461055057600036600319011261055057600f546040516001600160a01b039091168152602090f35b346105505760203660031901126105505760043561171c8161053f565b60018060a01b031660005260046020526020604060002054604051908152f35b346105505760403660031901126105505761076260043561175c8161053f565b6024359033613944565b3461055057600036600319011261055057601454604080516001600160801b038316815260809290921c602083015290f35b34610550576020366003190112610550576004356117b58161053f565b60018060a01b031660005260236020526020604060002054604051908152f35b34610550576000366003190112610550576020601b54604051908152f35b34610550576000366003190112610550576005546040516001600160a01b039091168152602090f35b6001600160401b03811161152a57601f01601f191660200190565b34610550576040366003190112610550576004356001600160401b03811161055057366023820112156105505780600401356118728161181c565b916118806040519384611565565b81835236602483830101116105505781600092602460209301838601378301015260243561ffff811681036105505761001991613578565b34610550576000806003193601126112235760405181602b546118da816114bf565b80845290600190818116908115611690575060011461190357610b6a8461162b81880382611565565b602b8352602094507f11c44e4875b74d31ff9fd779bf2566af7bd15b87fc985d01f5094b89e3669e4f5b8284106119495750505081610b6a9361162b928201019361161b565b805485850187015292850192810161192d565b34610550576040366003190112610550576020610e7960043561197e8161053f565b6024359061337b565b346105505760403660031901126105505760606119b26004356119a98161053f565b60243590612e9e565b9060405192835260208301526040820152f35b34610550576080366003190112610550576004356119e28161053f565b6024356119ee8161053f565b604435906119fb8261053f565b606435926001600160401b038411610550576109ee611a6a92611a25610019963690600401610a6e565b60405163514735c160e11b60208201526001600160a01b03958616602482015292851660448401529390951660648201526080608482015293849260a484019161453e565b61483b565b3461055057604036600319011261055057611a8b60043561053f565b6146f1565b9181601f84011215610550578235916001600160401b038311610550576020808501948460051b01011161055057565b906040820191604081528151809352606081019260208093019060005b818110611b4657505050818184039101528251908183528083019281808460051b8301019501936000915b848310611b185750505050505090565b9091929394958480611b36600193601f198682030187528a516115a9565b9801930193019194939290611b08565b8251151586529484019491840191600101611add565b346105505760408060031936011261055057600480356001600160401b03811161055057611b8d9036908301611a90565b9290602435611b9b816105eb565b611ba485614313565b93611bae86614345565b95600090815b818110611bc957865180610b6a8b8b83611ac0565b8280611bd683858a6143a5565b90611be58b51809381936143eb565b0390305af4611bf26143f9565b90801580611c68575b611c41578291611c1c611c2192611c15611c3c968e614429565b9015159052565b61443d565b611c2b828c614429565b52611c36818b614429565b5061390d565b611bb4565b8886611c64611c4f8561443d565b925162461bcd60e51b815292839283016115ce565b0390fd5b5086611bfb565b346105505760008060031936011261122357611c9660018060a01b0360055416331461287b565b600d54611cab906001600160a01b0316610675565b604080516370a0823160e01b815230600482015260209390928484602481845afa908115610df457611d27948392611e82575b50600954611cf4906001600160a01b0316610675565b600e548551638eb22cdd60e01b815260048101919091526024810184905260006044820152958790879081906064820190565b0381845afa958615610df4578496611e63575b5085611d4b575b8451868152602090f35b845163095ea7b360e01b81526001600160a01b03919091166004820152602481019290925290919085908390604490829085905af1908115610df457611ded9584938693611e35575b5050600954611dab906001600160a01b0316610675565b600e548451634d4d7cbd60e11b8152600481019190915230602482015233604482015260006064820152608481019390935291958692918391829060a4820190565b03925af1928315610df457610b6a93611e09575b808080611d41565b611e2890823d8411611e2e575b611e208183611565565b810190614528565b50611e01565b503d611e16565b81611e5492903d10611e5c575b611e4c8183611565565b810190614728565b503880611d94565b503d611e42565b611e7b919650873d8911610ded57610dde8183611565565b9438611d3a565b611e9a919250863d8811610ded57610dde8183611565565b9038611cde565b34610550576000366003190112610550576020601a54604051908152f35b3461055057604036600319011261055057602435611edc8161053f565b611ef160018060a01b0360055416331461287b565b60008080808094600435905af1611f066143f9565b5015611f0f5780f35b60405162461bcd60e51b815260206004820152601460248201527321211d103a3930b739b332b9103330b4b632b21760611b6044820152606490fd5b346105505760003660031901126105505760406024548151906001600160401b03908181168352831c166020820152f35b3461055057600036600319011261055057602060ff602554166040519015158152f35b34610550576000366003190112610550576020601e54604051908152f35b34610550576000366003190112610550576020602854604051908152f35b34610550576000366003190112610550576020610e79613a06565b34610550576000366003190112610550576030546040516001600160a01b039091168152602090f35b346105505760403660031901126105505760043561203c8161053f565b6024356001600160401b0381116105505761205b903690600401610a6e565b909160018060a01b0380916120758260055416331461287b565b1690816120b6575b50508061208657005b61208f9161296e565b7f01ac0e23e087c4b2e9f1a163db44f946de9dd51461fe7a401c523fc8d5db1c29600080a1005b81602a549182167f126a75207b8b11156ec1f4a0ad246f458582451fc5bee4b8a729a1a68886e132600080a36001600160a01b03191617602a55388061207d565b34610550576100196109ee61214661210e36610b8c565b60405163cce19f8160e01b60208201526001600160a01b03938416602482015292909116604483015260648201529182906084820190565b614865565b3461055057608036600319011261055057610b6a610b5a610b4b6004356121718161053f565b6024359061217e8261053f565b6044359061218b826105eb565b6040519263cd0211eb60e01b602085015260018060a01b038092166024850152166044830152151560648201526064356084820152608481526112798161152f565b34610550576000366003190112610550576008546040516001600160a01b039091168152602090f35b35906122018261053f565b565b3461055057610160366003190112610550576004356122218161053f565b6024356001600160401b03811161055057612240903690600401610a6e565b9160443561224d8161053f565b60643560843560a4359060c4359260e4359461010435966101243598610144359a60018060a01b03926122858460055416331461287b565b83811661249e575b5080612469575b505081169081612401575b5050806123e3575b50806123c5575b50806123a8575b508061237e575b5080612354575b508061231c575b50806122f0575b50806122d957005b610019906122eb601e54821015612bc2565b601f55565b80612303620186a0612316931115612b28565b612311601f54821115612b68565b601e55565b386122d1565b8061234e916016547fae6e0ab3b95f0a53ff9660a390ccedcbbf1f2355dce974a9841af106fddcfaba600080a3601655565b386122ca565b80612366620186a06123789310612b28565b612373601b548211612b28565b601c55565b386122c3565b80612390620186a06123a29310612b28565b61239d601c548210612b28565b601b55565b386122bc565b806123ba620186a06123bf9310612b28565b601d55565b386122b5565b806123d8620186a06123dd931115612b28565b601a55565b386122ae565b806123f6620186a06123fb931115612b28565b601955565b386122a7565b600854612462929061241b906001600160a01b0316610675565b7f5a62d22209e370e38eea92cfddcd228e656e6ec139243392a760a7769f5877fd600080a3600880546001600160a01b0319166001600160a01b0392909216919091179055565b388061229f565b61247291612a4b565b7fa6f004921c944d4b8bf6e38462b00f36a58d62495d56b51f571ab78f732c9815600080a13880612294565b600f80546001600160a01b0319166001600160a01b039092169190911790557f0b2d6eb667d0522c3eb86e4288afecae6c11591ffd1345d4d12407e0598bca9b600080a13861228d565b34610550576124f636610900565b9592809594959291924211610a29576100199661259193610a1193610a04878a6109fc8b6109ee610a099961252a8661391c565b60405195869460208601988991959493909260c09360e08401977f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e26685526000602086015260018060a01b038092166040860152166060840152608083015260a08201520152565b613997565b3461055057600036600319011261055057600b546040516001600160a01b039091168152602090f35b346105505760206105b96125d236610555565b6001600160a01b0391821660009081526002855260408082209290931681526020919091522090565b34610550576000366003190112610550576009546040516001600160a01b039091168152602090f35b34610550576000366003190112610550576020601d54604051908152f35b34610550576000366003190112610550576006546040516001600160a01b039091168152602090f35b34610550576080366003190112610550576001600160401b036004358181116105505761269c903690600401611a90565b90602435838111610550576126b5903690600401611a90565b90604435858111610550576126ce903690600401611a90565b929091606435968711610550576126ec610019973690600401611a90565b96909561462a565b346105505760a0366003190112610550576100196004356127148161053f565b602435906127218261053f565b6044359061272e826105eb565b604051926374d2492960e11b602085015260018060a01b03809216602485015216604483015215156064820152606435608482015260843560a482015260a481526121468161154a565b34610550576000366003190112610550576020601f54604051908152f35b34610550576000366003190112610550576020600c54604051908152f35b34610550576000366003190112610550576031546040516001600160a01b039091168152602090f35b34610550576000366003190112610550576020602754604051908152f35b34610550576040366003190112610550576004356024359061282860018060a01b0360055416331461287b565b602c5481602d54917f1eafaac7ca8c5e231c2378dbf01de74321ec7c0c9b113ecc54b2cbd513ec6b5e6020604051878152a4602c55602d55005b3461055057600036600319011261055057610019613c7e565b1561288257565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b601f81116128d2575050565b600090602b825260208220906020601f850160051c83019410612910575b601f0160051c01915b82811061290557505050565b8181556001016128f9565b90925082906128f0565b601f8111612926575050565b6000906010825260208220906020601f850160051c83019410612964575b601f0160051c01915b82811061295957505050565b81815560010161294d565b9092508290612944565b91906001600160401b03811161152a576129928161298d602b546114bf565b6128c6565b6000601f82116001146129cc578192936000926129c1575b50508160011b916000199060031b1c191617602b55565b0135905038806129aa565b602b600052601f198216937f11c44e4875b74d31ff9fd779bf2566af7bd15b87fc985d01f5094b89e3669e4f91805b868110612a335750836001959610612a19575b505050811b01602b55565b0135600019600384901b60f8161c19169055388080612a0e565b909260206001819286860135815501940191016129fb565b91906001600160401b03811161152a57612a6f81612a6a6010546114bf565b61291a565b6000601f8211600114612aa957819293600092612a9e575b50508160011b916000199060031b1c191617601055565b013590503880612a87565b6010600052601f198216937f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae67291805b868110612b105750836001959610612af6575b505050811b01601055565b0135600019600384901b60f8161c19169055388080612aeb565b90926020600181928686013581550194019101612ad8565b15612b2f57565b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881b9bdd081d985b1a59607a1b6044820152606490fd5b15612b6f57565b60405162461bcd60e51b815260206004820152602560248201527f4d61726b65743a20636f6c6c61746572616c697a6174696f6e5261746520746f6044820152646f2062696760d81b6064820152608490fd5b15612bc957565b60405162461bcd60e51b815260206004820152603260248201527f4d61726b65743a206c69717569646174696f6e436f6c6c61746572616c697a616044820152711d1a5bdb94985d19481d1bdbc81cdb585b1b60721b6064820152608490fd5b15612c3057565b60405162461bcd60e51b81526020600482015260126024820152714d61726b65743a2073616d6520737461746560701b6044820152606490fd5b634e487b7160e01b600052601160045260246000fd5b90620186a091828102928184041490151715612c9857565b612c6a565b90670de0b6b3a764000091828102928184041490151715612c9857565b81810292918115918404141715612c9857565b634e487b7160e01b600052601260045260246000fd5b8115612ced570490565b612ccd565b604d8111612c9857600a0a90565b91908203918211612c9857565b91908201809211612c9857565b81810392916000138015828513169184121617612c9857565b906509184e72a00091828102928184051490151715612c9857565b90670de0b6b3a764000091828102928184051490151715612c9857565b818102929160008212600160ff1b821416612c98578184051490151715612c9857565b8115612ced57600160ff1b8114600019831416612c98570590565b600160ff1b8114612c985760000390565b60145491929190612dd5906001600160801b03831690612cba565b9060801c908115612ced57612e0291612df3910493601f5490612cba565b612dfc83612cf2565b90612ce3565b90818310612e9657612e67612e61612e5c612e20612e6c9587612d00565b93612e57612e51612e48601e54612e42612e3986612cf2565b60205490612d0d565b90612cba565b612dfc84612cf2565b91612cf2565b612d1a565b612d33565b91612d4e565b612d8e565b6000811215612e9057612e7e90612da9565b905b808211612e8b575090565b905090565b90612e80565b505050600090565b6001600160a01b0381166000908152601760205260408120549193929091801561301057612f3c90612ece613beb565b93612eda841515613257565b600954602090612ef2906001600160a01b0316610675565b600c546001600160a01b038a1660009081526018602052604080822054905163442c159960e01b815260048101939093526024830152604482015294859190829081906064820190565b03915afa928315610df457612fe795612dfc612f9f6020612fab612f8c8a612f87612f7e612fe19c612fba9a8c91612ff3575b50602154620186a09004612e42565b601e5490612cba565b612ce3565b8551909890612e42906001600160801b03165b6001600160801b031690565b9301516001600160801b031690565b90828210612feb5750035b6001600160a01b03909516600090815260186020526040902090565b546132b2565b9091565b915050612fc5565b61300a9150873d8111610ded57610dde8183611565565b38612f6f565b505080919250918190565b91908260409103126105505760208251613034816105eb565b92015190565b60208082526000916010549161304f836114bf565b92838284015260019081811690816000146130b25750600114613074575b5050505090565b929350601060005280600020926000935b85851061309e575050506040925001013880808061306d565b805485850160400152938201938101613085565b925050506040935060ff929192191683830152151560051b01013880808061306d565b6040513d6000823e3d90fd5b156130e857565b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881c985d19481d1bdbc81bdb1960621b6044820152606490fd5b1561312b57565b60405162461bcd60e51b81526020600482015260146024820152734d61726b65743a20696e76616c6964207261746560601b6044820152606490fd5b600f5461317c906001600160a01b0316610675565b6040805163d6d7d52560e01b8152929183908160008161319e6004820161303a565b03925af18015610df4576000928391613223575b509082156131fe576131c5821515613124565b6131ce82601155565b817f9f9192b5edb17356c524e08d9e025c8e2f6307e6ea52fb7968faa3081f51c3c8600080a25b61220142601355565b905061321a61321260135460125490612d0d565b4211156130e1565b601154906131f5565b905061324791925060403d8111613250575b61323f8183611565565b81019061301b565b919091386131b2565b503d613235565b1561325e57565b60405162461bcd60e51b815260206004820152601e60248201527f4d61726b65743a2065786368616e676552617465206e6f742076616c696400006044820152606490fd5b90816020910312610550575190565b61330760208315926132c48415613257565b600954600c5460405163442c159960e01b81526004810191909152602481019290925260006044830152909283916001600160a01b031690829081906064820190565b03915afa8015610df45761332791600091613341575b5060215490612cba565b90612ced5704620186a061333d601e5483612cba565b0491565b613359915060203d8111610ded57610dde8183611565565b3861331d565b91909160008382019384129112908015821691151617612c9857565b9061339f6133bd91612fe18460018060a01b03166000526018602052604060002090565b6001600160a01b039093166000908152601760205260409020909291565b548015612e96578215612e9657828110612e965781811015613455578261341561341061341b9561340b612dfc956134016014549160018060801b03831690612cba565b9060801c90612ce3565b612d00565b612c80565b92612d00565b613449601b549161344461343b601c54926134368487612d1a565b612d6b565b620186a0900590565b61335f565b90808212612e8b575090565b505050601b5490565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316148061354f575b156134b9577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f000000000000000000000000000000000000000000000000000000000000000082527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a081526135498161152f565b51902090565b507f00000000000000000000000000000000000000000000000000000000000000004614613490565b610100908181805181010312610550576020810151613596816105eb565b6040820151926135a58461053f565b6060830151946135b48661053f565b60808401519460a085015160c0860151936135ce856108f5565b60e08701519601516001600160a01b0392831698831696428310610a2957613690956136848a8c6109fc81996109ee613689998f8f6000146136a7577f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e266965b6136368761391c565b60408051602081019a8b5261ffff909716908701526001600160a01b03978816606087015296909116608085015260a084015260c083019490945260e0820193909352918290610100820190565b61371a565b16146136ce565b1561369e5761220192613997565b61220192613944565b7f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d69661362d565b156136d557565b60405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152606490fd5b9161057a9391610a099361384e565b6005111561146257565b61373c81613729565b806137445750565b61374d81613729565b600181036137955760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b6044820152606490fd5b61379e81613729565b600281036137eb5760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606490fd5b806137f7600392613729565b146137fe57565b60405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608490fd5b9291906fa2a8918ca85bafe22016d0b997e4df60600160ff1b0383116138ba5791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa15610df45781516001600160a01b038116156138b4579190565b50600190565b50505050600090600390565b6138ce61345e565b9060405190602082019261190160f01b84526022830152604282015260428152608081018181106001600160401b0382111761152a5760405251902090565b6000198114612c985760010190565b6001600160a01b0316600090815260046020526040902080549061393f8261390d565b905590565b6001600160a01b03908116600081815260036020908152604080832095909416808352949052918220849055907fe50de2333c10a9502fcb1d8ae13a51bbf423153dfc63c2b8997665b32154afc39080a4565b6001600160a01b0390811660008181526002602090815260408083208686168452825290912091937f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259391928690556040519586521693a3565b90816020910312610550575161057a8161053f565b60255460ff16613b53576014546001600160801b03168015613b4c57600a54613a37906001600160a01b0316610675565b6040518091631848f2bf60e31b825281600460209384935afa918215610df4576004928291600091613b1f575b50604051631a674cc560e11b815293849182906001600160a01b03165afa8015610df457613ab192613aa392600092613b02575b505060285490612cba565b670de0b6b3a7640000900490565b80821015613afa57612dfc613ad592613415613ad06029548093612d00565b612c9d565b612e7e60265491613af5613aa360275492613af08487612d00565b612cba565b612d0d565b505060265490565b613b189250803d10610ded57610dde8183611565565b3880613a98565b613b3f9150823d8411613b45575b613b378183611565565b8101906139f1565b38613a64565b503d613b2d565b5060275490565b600a54600490602090613b6e906001600160a01b0316610675565b60405163e6abad4960e01b815292839182905afa908115610df457600091613b94575090565b61057a915060203d8111610ded57610dde8183611565565b60405190613bb98261150f565b6014546001600160801b038116835260801c6020830152565b6001600160801b039182169082160191908211612c9857565b60006020604051613bfb8161150f565b82815201526001600160401b03908160245460401c169182420392428411612c98574214613c7357613c6e613af091670de0b6b3a7640000613c63613c3e613bac565b9660018060801b03958694858a5116906301e13380613c5b613a06565b041690612cba565b041682855116613bd2565b168252565b50905061057a613bac565b604051613c8a8161150f565b6024546001600160401b038181809316845260401c16613cb1602084019180835242612d00565b928315613e0457613d03613ddb92613cf3613ce6613cda613cd0613a06565b6301e13380900490565b6001600160401b031690565b6001600160401b03168452565b8442166001600160401b03169052565b613d96613d43613aa3613d14613bac565b8051909790613af090613d2f906001600160801b0316612f9f565b612e42613cda88516001600160401b031690565b8551909590613d6f90613d62906001600160801b03808a169116613bd2565b6001600160801b03168252565b805160209091015160801b6001600160801b0319166001600160801b039190911617601455565b613dce816001600160401b038151166024549160206001600160401b0360401b91015160401b169160018060801b0319161717602455565b516001600160401b031690565b16907f7484db546dcd57af0104c73c8a6968dfbaf5767f047cee0dadd0499ad7df81a0600080a3565b50505050565b15613e1157565b60405162461bcd60e51b815260206004820152601860248201527710908e881919589d081c985d195cc81b9bdd081d985b1a5960421b6044820152606490fd5b15613e5857565b60405162461bcd60e51b815260206004820152601b60248201527f42423a206d617820646562742072617465206e6f742076616c696400000000006044820152606490fd5b9291906004600c546020613ebb610675600a5460018060a01b031690565b6040516364cfdbb760e11b815293849182905afa908115610df457613ef592600092610dc457501460ff8019602554169115151617602555565b613f04610c9460255460ff1690565b613f0e5750505050565b613f35613f3a92613f30613f3f96602754151580613f6c575b613f4857602855565b602655565b602755565b602955565b38808080613e04565b613f53838610613e0a565b613f67670de0b6b3a7640000841115613e51565b602855565b506026541515613f27565b15613f7e57565b60405162461bcd60e51b815260206004820152600c60248201526b21211d103130b2103830b4b960a11b6044820152606490fd5b15613fb957565b60405162461bcd60e51b815260206004820152603060248201527f42423a206c69717569646174696f6e20636f6c6c61746572616c697a6174696f60448201526f1b881c985d19481b9bdd081d985b1a5960821b6064820152608490fd5b600a80546001600160a01b0319166001600160a01b03831617905593959493929160405163de40657760e01b81526020946001600160a01b039086908390600490829085165afa8015610df45781614097916004946000916142df575b5060098054919092166001600160a01b03166001600160a01b0319909116179055565b600a546140d2906140b0906001600160a01b0316610675565b600580546001600160a01b0319166001600160a01b0392909216919091179055565b600a5486906140e9906001600160a01b0316610675565b604051631192124760e11b815293849182905afa8015610df45761414c926000916142c2575b508185161515806142b7575b806142ac575b61412a90613f77565b600d8054919092166001600160a01b03166001600160a01b0319909116179055565b600a546004908590614166906001600160a01b0316610675565b6040516386c8e21d60e01b815292839182905afa928315610df45761419f6141c6946141c1936141e89860009261428f575b5050600e55565b600b80546001600160a01b0319166001600160a01b0392909216919091179055565b600c55565b600f80546001600160a01b0319166001600160a01b0392909216919091179055565b6141f0613167565b50506141fe62015f90601955565b6142086000601a55565b801561428257601e555b801561427557601f555b61422b601f54601e5410613fb2565b8015614263576021555b61424162013880601b55565b61424d62015f90601c55565b614258612710601d55565b612201612ee0602055565b50614235670de0b6b3a7640000602155565b5061421c620138806122eb565b50614212620124f8612311565b6142a59250803d10610ded57610dde8183611565565b3880614198565b508582161515614121565b50818116151561411b565b6142d99150873d8911613b4557613b378183611565565b3861410f565b6142f69150893d8b11613b4557613b378183611565565b38614074565b6001600160401b03811161152a5760051b60200190565b9061431d826142fc565b61432a6040519182611565565b828152809261433b601f19916142fc565b0190602036910137565b9061434f826142fc565b61435c6040519182611565565b828152809261436d601f19916142fc565b019060005b82811061437e57505050565b806060602080938501015201614372565b634e487b7160e01b600052603260045260246000fd5b91908110156143e65760051b81013590601e19813603018212156105505701908135916001600160401b038311610550576020018236038113610550579190565b61438f565b908092918237016000815290565b3d15614424573d9061440a8261181c565b916144186040519384611565565b82523d6000602084013e565b606090565b80518210156143e65760209160051b010190565b6103e88151116144f45760448151106144c157600481015181019060208160248401930312610550576024810151906001600160401b0382116105505701816043820112156105505760248101516144948161181c565b926144a26040519485611565565b818452604482840101116105505761057a916044602085019101611586565b506040516144ce8161150f565b60168152754d61726b65743a206e6f2072657475726e206461746160501b602082015290565b506040516145018161150f565b60178152764d61726b65743a20726561736f6e20746f6f206c6f6e6760481b602082015290565b9190826040910312610550576020825192015190565b908060209392818452848401376000828201840152601f01601f1916010190565b91908082526020809201929160005b82811061457c575050505090565b90919293828060019287356145908161053f565b848060a01b0316815201950191019291909261456e565b90808352602080930192838260051b850194846000925b8584106145cf575050505050505090565b9091929394959681810384528735601e19843603018112156105505783018681019190356001600160401b038111610550578036038313610550576146198892839260019561453e565b9901940194019295949391906145be565b9295969094969391936040519660209663e5644d8b60e01b888a01528060a48a01608060248c01525260c48901959060005b898282106146c9575050505087850360231990810160448a0152818652936001600160fb1b038211610550576146c699611a6a988a986109ee986146b79560051b809284830137018981036003190160648b0152019161455f565b928584030160848601526145a7565b50565b8084996001939495356146db8161053f565b848060a01b03168152019801910191909161465c565b60405162461bcd60e51b815260206004820152600f60248201526e10908e881b9bdd08185b1b1bddd959608a1b6044820152606490fd5b90816020910312610550575161057a816105eb565b1561474457565b60405162461bcd60e51b815260206004820152600d60248201526c10908e881b9bdd081d985b1a59609a1b6044820152606490fd5b6031546001600160a01b031680156147d757816000929160208493519201905af4906147a36143f9565b91156147ab57565b611c646147b78361443d565b60405162461bcd60e51b81526020600482015291829160248301906115a9565b60405162461bcd60e51b815260206004820152601260248201527110908e881b5bd91d5b19481b9bdd081cd95d60721b6044820152606490fd5b602f546001600160a01b031680156147d757816000929160208493519201905af4906147a36143f9565b602e546001600160a01b031680156147d757816000929160208493519201905af4906147a36143f9565b6030546001600160a01b031680156147d757816000929160208493519201905af4906147a36143f956fea26469706673582212207be7e320bb2984fbf65472f8cfd2c46711293c44db184c62ca0c381f1e9bef8f64736f6c63430008120033", + "deployedBytecode": "0x6080604052600436101561001b575b361561001957600080fd5b005b60003560e01c8062a02a201461053a57806302ce728f14610535578063078dfbe714610530578063095ea7b31461052b5780630c4e84f01461052657806318160ddd146105215780631c9e379b1461051c5780631d4d3a5d146105175780631da8bf10146105125780631ee9c8f21461050d5780631fb8f81a1461050857806323b872dd1461050357806325384fd8146104fe57806327c811a8146104f9578063331960ff146104f457806334ce998a146104ef57806334d441d0146104ea5780633644e515146104e557806337b6b7b9146104e057806338d52e0f146104db5780633ba0b9a9146104d65780633f741adb146104d157806340626d8b146104cc57806344de240a146104c7578063473e3ce7146104c257806348e4163e146104bd5780634ddf47d4146104b85780634e71e0c8146104b35780635224372c146104ae578063529898f2146104a9578063542afda3146104a4578063579354621461049f57806358db9afe1461049a5780635d5f73ef146104955780636b19ad16146104905780636c3d8b8f1461048b57806370a0823114610486578063727785471461048157806374645ff31461047c57806374c9e481146104775780637dc0d1d0146104725780637ecebe001461046d5780637fa0b84e146104685780638285ef401461046357806387b279371461045e5780638c5d0ed3146104595780638da5cb5b14610454578063910dd7c81461044f578063932bc4f81461044a57806399a97028146104455780639e15e89f14610440578063a28e6b821461043b578063a9059cbb14610436578063aa7d966514610431578063af405b4c1461042c578063b0e21e8a14610427578063b25ea8fb14610422578063b27c0e741461041d578063b7113f1914610418578063bb4cfe3b14610413578063bde39c5d1461040e578063c1ad5c8d14610409578063c861a52614610404578063c9c7d837146103ff578063cce19f81146103fa578063cd0211eb146103f5578063ce8849ed146103f0578063d3fb2a38146103eb578063d505accf146103e6578063d8dfeb45146103e1578063dd62ed3e146103dc578063de406577146103d7578063e0996cb6146103d2578063e30c3978146103cd578063e5644d8b146103c8578063e9a49252146103c3578063ea64dd56146103be578063eec0f42e146103b9578063f5b33dfa146103b4578063f791395d146103af578063f88188cb146103aa5763f8ba4cff0361000e57612862565b6127fb565b6127dd565b6127b4565b612796565b612778565b6126f4565b61266b565b612642565b612624565b6125fb565b6125bf565b612596565b6124e8565b612203565b6121cd565b61214b565b6120f7565b61201f565b611ff6565b611fdb565b611fbd565b611f9f565b611f7c565b611f4b565b611ebf565b611ea1565b611c6f565b611b5c565b611a6f565b6119c5565b611987565b61195c565b6118b8565b611837565b6117f3565b6117d5565b611798565b611766565b61173c565b6116ff565b6116d6565b6116b8565b6115df565b611480565b611405565b6113dc565b6113be565b611395565b6112f2565b6112d4565b6112b6565b611299565b611226565b611144565b610fa1565b610f64565b610f46565b610f28565b610f0a565b610ee6565b610ec8565b610e9f565b610e81565b610e5e565b610e40565b610e17565b610df9565b610bf7565b610bce565b610bb8565b610b6e565b610a9b565b610945565b6108cc565b61088f565b610873565b61077c565b610738565b6105f5565b6105c2565b61057d565b6001600160a01b0381160361055057565b600080fd5b60409060031901126105505760043561056d8161053f565b9060243561057a8161053f565b90565b346105505760206105b961059036610555565b6001600160a01b0391821660009081526003855260408082209290931681526020919091522090565b54604051908152f35b346105505760003660031901126105505760406105dd613167565b825191151582526020820152f35b8015150361055057565b34610550576060366003190112610550576004356106128161053f565b6024359061061f826105eb565b6044359161062c836105eb565b6005546001600160a01b039190610646908316331461287b565b1561071f57811691821590811591610717575b50156106da576005546106c89290610681906001600160a01b03165b6001600160a01b031690565b7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b600680546001600160a01b0319169055005b60405162461bcd60e51b81526020600482015260156024820152744f776e61626c653a207a65726f206164647265737360581b6044820152606490fd5b905038610659565b60068054919092166001600160a01b0319909116179055005b34610550576040366003190112610550576107626004356107588161053f565b6024359033613997565b602060405160018152f35b60043590600982101561055057565b346105505760403660031901126105505761079561076d565b6024356107a1816105eb565b6008546001600160a01b0316330361083757610826826107d56107d06107c961001996611467565b5460ff1690565b151590565b6107e484151591821415612c29565b6107f06107c983611467565b6107f983611458565b1515827feeec81de25875ce1725479bb76f720a8defdb43dea041919ae37bb4aae9847c0600080a4611467565b9060ff801983541691151516179055565b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881d5b985d5d1a1bdc9a5e995960621b6044820152606490fd5b3461055057600036600319011261055057602060405160008152f35b34610550576020366003190112610550576004356108ac8161053f565b60018060a01b031660005260186020526020604060002054604051908152f35b3461055057600036600319011261055057602a546040516001600160a01b039091168152602090f35b60ff81160361055057565b60e0906003190112610550576004356109188161053f565b906024356109258161053f565b90604435906064359060843561093a816108f5565b9060a4359060c43590565b346105505761095336610900565b9592809594959291924211610a295761001996610a2493610a1193610a04878a6109fc8b6109ee610a09996109878661391c565b60405195869460208601988991959493909260c09360e08401977f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d685526000602086015260018060a01b038092166040860152166060840152608083015260a08201520152565b03601f198101835282611565565b5190206138c6565b61384e565b919091613733565b6001600160a01b038381169116146136ce565b613944565b60405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b9181601f84011215610550578235916001600160401b038311610550576020838186019501011161055057565b346105505760c036600319011261055057600435610ab88161053f565b608435610ac48161053f565b60a435906001600160401b03821161055057610b6a92610b46610b4b926109ee610af5610b5a963690600401610a6e565b604051958694630f74e47960e11b602087015260018060a01b0380921660248701526024356044870152604435606487015260643560848701521660a485015260c060c485015260e484019161453e565b614779565b602080825183010191016132a3565b6040519081529081906020820190565b0390f35b34610550576000366003190112610550576020602954604051908152f35b606090600319011261055057600435610ba48161053f565b90602435610bb18161053f565b9060443590565b3461055057610bc636610b8c565b5050506146f1565b3461055057600036600319011261055057602f546040516001600160a01b039091168152602090f35b34610550576080366003190112610550576004356024356044359060643592610c2b60018060a01b0360055416331461287b565b600c54600a5460049190602090610c4a906001600160a01b0316610675565b6040516364cfdbb760e11b815293849182905afa908115610df457610c8592600092610dc4575b501460ff8019602554169115151617602555565b610c98610c9460255460ff1690565b1590565b610c9e57005b610ca6613c7e565b80610d7f575b5080610d3a575b5080610d02575b5080610cc257005b80610cd4620186a0610019931061473d565b806020547f1f1d0e9e5e3fd195010504141e7472fc7f53e44d7cd3f236f0892778039c6326600080a3602055565b80610d34916028547fd00c912c9d1f75ac893827b7bb73eb82874daea46c2eaa6d2bd89f0c8ee57366600080a3602855565b38610cba565b610d7990610d4b602754821161473d565b806026547f5391ae26cacff12a54d10d45f0f04678de8bb9c9b2f784eb7074dac7cc0f8fd9600080a3602655565b38610cb3565b610dbe90610d90602654821061473d565b806027547fa54af2279046b0207f426565497319c4e274479ce71cb53598ec2391459be3f3600080a3602755565b38610cac565b610de691925060203d8111610ded575b610dde8183611565565b8101906132a3565b9038610c71565b503d610dd4565b6130d5565b34610550576000366003190112610550576020601354604051908152f35b34610550576000366003190112610550576014546040516001600160801b039091168152602090f35b34610550576000366003190112610550576020601954604051908152f35b34610550576000366003190112610550576020610e7961345e565b604051908152f35b34610550576000366003190112610550576020601254604051908152f35b3461055057600036600319011261055057600d546040516001600160a01b039091168152602090f35b34610550576000366003190112610550576020601154604051908152f35b34610550576060366003190112610550576020610e79604435602435600435612dba565b34610550576000366003190112610550576020601654604051908152f35b34610550576000366003190112610550576020600e54604051908152f35b34610550576000366003190112610550576020601554604051908152f35b3461055057602036600319011261055057600435610f818161053f565b60018060a01b031660005260176020526020604060002054604051908152f35b34610550576020366003190112610550576004356001600160401b03811161055057610fd1903690600401610a6e565b60ff6022541661110957816101e0918101031261055057806110b7610ff86110d6936121f6565b611004602084016121f6565b611010604085016121f6565b91611097611020606087016121f6565b9361102d608088016121f6565b9361103a60a089016121f6565b9361104760e08a016121f6565b602e80546001600160a01b03199081166001600160a01b039485161790915560308054821695841695909517909455602f8054851693831693909317909255603180549093169616959095179055565b6101c0850135926101a0860135926101008701359260c088013591614017565b6101808101359061016081013590610120610140820135910135613e9d565b6110e262015180601255565b6110ec6000602c55565b6110f76103e8602d55565b610019600160ff196022541617602255565b60405162461bcd60e51b815260206004820152601360248201527213585c9ad95d0e881a5b9a5d1a585b1a5e9959606a1b6044820152606490fd5b3461055057600080600319360112611223576006546001600160a01b0316338190036111df576005546111cc91908190611186906001600160a01b0316610675565b7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08580a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b600680546001600160a01b031916905580f35b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b80fd5b3461055057604061128d61127e6109ee61127961124236610b8c565b87516314890dcb60e21b60208201526001600160a01b03938416602482015292909116604483015260648201529182906084820190565b614811565b60208082518301019101614528565b82519182526020820152f35b346105505760003660031901126105505760208054604051908152f35b34610550576000366003190112610550576020602c54604051908152f35b34610550576000366003190112610550576020601c54604051908152f35b346105505760a03660031901126105505760043561130f8161053f565b60643561131b8161053f565b608435906001600160401b03821161055057610b6a92610b46610b4b926109ee61134c610b5a963690600401610a6e565b604051958694632c6dcd7f60e11b602087015260018060a01b0380921660248701526024356044870152604435606487015216608485015260a060a485015260c484019161453e565b3461055057600036600319011261055057602e546040516001600160a01b039091168152602090f35b34610550576000366003190112610550576020602654604051908152f35b3461055057600036600319011261055057600a546040516001600160a01b039091168152602090f35b34610550576020366003190112610550576004356114228161053f565b60018060a01b031660005260016020526020604060002054604051908152f35b634e487b7160e01b600052602160045260246000fd5b6009111561146257565b611442565b6009811015611462576000526007602052604060002090565b346105505760203660031901126105505761149961076d565b6009811015611462576000526007602052602060ff604060002054166040519015158152f35b90600182811c921680156114ef575b60208310146114d957565b634e487b7160e01b600052602260045260246000fd5b91607f16916114ce565b634e487b7160e01b600052604160045260246000fd5b604081019081106001600160401b0382111761152a57604052565b6114f9565b60c081019081106001600160401b0382111761152a57604052565b60e081019081106001600160401b0382111761152a57604052565b90601f801991011681019081106001600160401b0382111761152a57604052565b60005b8381106115995750506000910152565b8181015183820152602001611589565b906020916115c281518092818552858086019101611586565b601f01601f1916010190565b90602061057a9281815201906115a9565b34610550576000806003193601126112235760405181601054611601816114bf565b808452906001908181169081156116905750600114611637575b610b6a8461162b81880382611565565b604051918291826115ce565b60108352602094507f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae6725b82841061167d5750505081610b6a9361162b928201019361161b565b8054858501870152928501928101611661565b610b6a965061162b9450602092508593915060ff191682840152151560051b8201019361161b565b34610550576000366003190112610550576020602d54604051908152f35b3461055057600036600319011261055057600f546040516001600160a01b039091168152602090f35b346105505760203660031901126105505760043561171c8161053f565b60018060a01b031660005260046020526020604060002054604051908152f35b346105505760403660031901126105505761076260043561175c8161053f565b6024359033613944565b3461055057600036600319011261055057601454604080516001600160801b038316815260809290921c602083015290f35b34610550576020366003190112610550576004356117b58161053f565b60018060a01b031660005260236020526020604060002054604051908152f35b34610550576000366003190112610550576020601b54604051908152f35b34610550576000366003190112610550576005546040516001600160a01b039091168152602090f35b6001600160401b03811161152a57601f01601f191660200190565b34610550576040366003190112610550576004356001600160401b03811161055057366023820112156105505780600401356118728161181c565b916118806040519384611565565b81835236602483830101116105505781600092602460209301838601378301015260243561ffff811681036105505761001991613578565b34610550576000806003193601126112235760405181602b546118da816114bf565b80845290600190818116908115611690575060011461190357610b6a8461162b81880382611565565b602b8352602094507f11c44e4875b74d31ff9fd779bf2566af7bd15b87fc985d01f5094b89e3669e4f5b8284106119495750505081610b6a9361162b928201019361161b565b805485850187015292850192810161192d565b34610550576040366003190112610550576020610e7960043561197e8161053f565b6024359061337b565b346105505760403660031901126105505760606119b26004356119a98161053f565b60243590612e9e565b9060405192835260208301526040820152f35b34610550576080366003190112610550576004356119e28161053f565b6024356119ee8161053f565b604435906119fb8261053f565b606435926001600160401b038411610550576109ee611a6a92611a25610019963690600401610a6e565b60405163514735c160e11b60208201526001600160a01b03958616602482015292851660448401529390951660648201526080608482015293849260a484019161453e565b61483b565b3461055057604036600319011261055057611a8b60043561053f565b6146f1565b9181601f84011215610550578235916001600160401b038311610550576020808501948460051b01011161055057565b906040820191604081528151809352606081019260208093019060005b818110611b4657505050818184039101528251908183528083019281808460051b8301019501936000915b848310611b185750505050505090565b9091929394958480611b36600193601f198682030187528a516115a9565b9801930193019194939290611b08565b8251151586529484019491840191600101611add565b346105505760408060031936011261055057600480356001600160401b03811161055057611b8d9036908301611a90565b9290602435611b9b816105eb565b611ba485614313565b93611bae86614345565b95600090815b818110611bc957865180610b6a8b8b83611ac0565b8280611bd683858a6143a5565b90611be58b51809381936143eb565b0390305af4611bf26143f9565b90801580611c68575b611c41578291611c1c611c2192611c15611c3c968e614429565b9015159052565b61443d565b611c2b828c614429565b52611c36818b614429565b5061390d565b611bb4565b8886611c64611c4f8561443d565b925162461bcd60e51b815292839283016115ce565b0390fd5b5086611bfb565b346105505760008060031936011261122357611c9660018060a01b0360055416331461287b565b600d54611cab906001600160a01b0316610675565b604080516370a0823160e01b815230600482015260209390928484602481845afa908115610df457611d27948392611e82575b50600954611cf4906001600160a01b0316610675565b600e548551638eb22cdd60e01b815260048101919091526024810184905260006044820152958790879081906064820190565b0381845afa958615610df4578496611e63575b5085611d4b575b8451868152602090f35b845163095ea7b360e01b81526001600160a01b03919091166004820152602481019290925290919085908390604490829085905af1908115610df457611ded9584938693611e35575b5050600954611dab906001600160a01b0316610675565b600e548451634d4d7cbd60e11b8152600481019190915230602482015233604482015260006064820152608481019390935291958692918391829060a4820190565b03925af1928315610df457610b6a93611e09575b808080611d41565b611e2890823d8411611e2e575b611e208183611565565b810190614528565b50611e01565b503d611e16565b81611e5492903d10611e5c575b611e4c8183611565565b810190614728565b503880611d94565b503d611e42565b611e7b919650873d8911610ded57610dde8183611565565b9438611d3a565b611e9a919250863d8811610ded57610dde8183611565565b9038611cde565b34610550576000366003190112610550576020601a54604051908152f35b3461055057604036600319011261055057602435611edc8161053f565b611ef160018060a01b0360055416331461287b565b60008080808094600435905af1611f066143f9565b5015611f0f5780f35b60405162461bcd60e51b815260206004820152601460248201527321211d103a3930b739b332b9103330b4b632b21760611b6044820152606490fd5b346105505760003660031901126105505760406024548151906001600160401b03908181168352831c166020820152f35b3461055057600036600319011261055057602060ff602554166040519015158152f35b34610550576000366003190112610550576020601e54604051908152f35b34610550576000366003190112610550576020602854604051908152f35b34610550576000366003190112610550576020610e79613a06565b34610550576000366003190112610550576030546040516001600160a01b039091168152602090f35b346105505760403660031901126105505760043561203c8161053f565b6024356001600160401b0381116105505761205b903690600401610a6e565b909160018060a01b0380916120758260055416331461287b565b1690816120b6575b50508061208657005b61208f9161296e565b7f01ac0e23e087c4b2e9f1a163db44f946de9dd51461fe7a401c523fc8d5db1c29600080a1005b81602a549182167f126a75207b8b11156ec1f4a0ad246f458582451fc5bee4b8a729a1a68886e132600080a36001600160a01b03191617602a55388061207d565b34610550576100196109ee61214661210e36610b8c565b60405163cce19f8160e01b60208201526001600160a01b03938416602482015292909116604483015260648201529182906084820190565b614865565b3461055057608036600319011261055057610b6a610b5a610b4b6004356121718161053f565b6024359061217e8261053f565b6044359061218b826105eb565b6040519263cd0211eb60e01b602085015260018060a01b038092166024850152166044830152151560648201526064356084820152608481526112798161152f565b34610550576000366003190112610550576008546040516001600160a01b039091168152602090f35b35906122018261053f565b565b3461055057610160366003190112610550576004356122218161053f565b6024356001600160401b03811161055057612240903690600401610a6e565b9160443561224d8161053f565b60643560843560a4359060c4359260e4359461010435966101243598610144359a60018060a01b03926122858460055416331461287b565b83811661249e575b5080612469575b505081169081612401575b5050806123e3575b50806123c5575b50806123a8575b508061237e575b5080612354575b508061231c575b50806122f0575b50806122d957005b610019906122eb601e54821015612bc2565b601f55565b80612303620186a0612316931115612b28565b612311601f54821115612b68565b601e55565b386122d1565b8061234e916016547fae6e0ab3b95f0a53ff9660a390ccedcbbf1f2355dce974a9841af106fddcfaba600080a3601655565b386122ca565b80612366620186a06123789310612b28565b612373601b548211612b28565b601c55565b386122c3565b80612390620186a06123a29310612b28565b61239d601c548210612b28565b601b55565b386122bc565b806123ba620186a06123bf9310612b28565b601d55565b386122b5565b806123d8620186a06123dd931115612b28565b601a55565b386122ae565b806123f6620186a06123fb931115612b28565b601955565b386122a7565b600854612462929061241b906001600160a01b0316610675565b7f5a62d22209e370e38eea92cfddcd228e656e6ec139243392a760a7769f5877fd600080a3600880546001600160a01b0319166001600160a01b0392909216919091179055565b388061229f565b61247291612a4b565b7fa6f004921c944d4b8bf6e38462b00f36a58d62495d56b51f571ab78f732c9815600080a13880612294565b600f80546001600160a01b0319166001600160a01b039092169190911790557f0b2d6eb667d0522c3eb86e4288afecae6c11591ffd1345d4d12407e0598bca9b600080a13861228d565b34610550576124f636610900565b9592809594959291924211610a29576100199661259193610a1193610a04878a6109fc8b6109ee610a099961252a8661391c565b60405195869460208601988991959493909260c09360e08401977f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e26685526000602086015260018060a01b038092166040860152166060840152608083015260a08201520152565b613997565b3461055057600036600319011261055057600b546040516001600160a01b039091168152602090f35b346105505760206105b96125d236610555565b6001600160a01b0391821660009081526002855260408082209290931681526020919091522090565b34610550576000366003190112610550576009546040516001600160a01b039091168152602090f35b34610550576000366003190112610550576020601d54604051908152f35b34610550576000366003190112610550576006546040516001600160a01b039091168152602090f35b34610550576080366003190112610550576001600160401b036004358181116105505761269c903690600401611a90565b90602435838111610550576126b5903690600401611a90565b90604435858111610550576126ce903690600401611a90565b929091606435968711610550576126ec610019973690600401611a90565b96909561462a565b346105505760a0366003190112610550576100196004356127148161053f565b602435906127218261053f565b6044359061272e826105eb565b604051926374d2492960e11b602085015260018060a01b03809216602485015216604483015215156064820152606435608482015260843560a482015260a481526121468161154a565b34610550576000366003190112610550576020601f54604051908152f35b34610550576000366003190112610550576020600c54604051908152f35b34610550576000366003190112610550576031546040516001600160a01b039091168152602090f35b34610550576000366003190112610550576020602754604051908152f35b34610550576040366003190112610550576004356024359061282860018060a01b0360055416331461287b565b602c5481602d54917f1eafaac7ca8c5e231c2378dbf01de74321ec7c0c9b113ecc54b2cbd513ec6b5e6020604051878152a4602c55602d55005b3461055057600036600319011261055057610019613c7e565b1561288257565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b601f81116128d2575050565b600090602b825260208220906020601f850160051c83019410612910575b601f0160051c01915b82811061290557505050565b8181556001016128f9565b90925082906128f0565b601f8111612926575050565b6000906010825260208220906020601f850160051c83019410612964575b601f0160051c01915b82811061295957505050565b81815560010161294d565b9092508290612944565b91906001600160401b03811161152a576129928161298d602b546114bf565b6128c6565b6000601f82116001146129cc578192936000926129c1575b50508160011b916000199060031b1c191617602b55565b0135905038806129aa565b602b600052601f198216937f11c44e4875b74d31ff9fd779bf2566af7bd15b87fc985d01f5094b89e3669e4f91805b868110612a335750836001959610612a19575b505050811b01602b55565b0135600019600384901b60f8161c19169055388080612a0e565b909260206001819286860135815501940191016129fb565b91906001600160401b03811161152a57612a6f81612a6a6010546114bf565b61291a565b6000601f8211600114612aa957819293600092612a9e575b50508160011b916000199060031b1c191617601055565b013590503880612a87565b6010600052601f198216937f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae67291805b868110612b105750836001959610612af6575b505050811b01601055565b0135600019600384901b60f8161c19169055388080612aeb565b90926020600181928686013581550194019101612ad8565b15612b2f57565b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881b9bdd081d985b1a59607a1b6044820152606490fd5b15612b6f57565b60405162461bcd60e51b815260206004820152602560248201527f4d61726b65743a20636f6c6c61746572616c697a6174696f6e5261746520746f6044820152646f2062696760d81b6064820152608490fd5b15612bc957565b60405162461bcd60e51b815260206004820152603260248201527f4d61726b65743a206c69717569646174696f6e436f6c6c61746572616c697a616044820152711d1a5bdb94985d19481d1bdbc81cdb585b1b60721b6064820152608490fd5b15612c3057565b60405162461bcd60e51b81526020600482015260126024820152714d61726b65743a2073616d6520737461746560701b6044820152606490fd5b634e487b7160e01b600052601160045260246000fd5b90620186a091828102928184041490151715612c9857565b612c6a565b90670de0b6b3a764000091828102928184041490151715612c9857565b81810292918115918404141715612c9857565b634e487b7160e01b600052601260045260246000fd5b8115612ced570490565b612ccd565b604d8111612c9857600a0a90565b91908203918211612c9857565b91908201809211612c9857565b81810392916000138015828513169184121617612c9857565b906509184e72a00091828102928184051490151715612c9857565b90670de0b6b3a764000091828102928184051490151715612c9857565b818102929160008212600160ff1b821416612c98578184051490151715612c9857565b8115612ced57600160ff1b8114600019831416612c98570590565b600160ff1b8114612c985760000390565b60145491929190612dd5906001600160801b03831690612cba565b9060801c908115612ced57612e0291612df3910493601f5490612cba565b612dfc83612cf2565b90612ce3565b90818310612e9657612e67612e61612e5c612e20612e6c9587612d00565b93612e57612e51612e48601e54612e42612e3986612cf2565b60205490612d0d565b90612cba565b612dfc84612cf2565b91612cf2565b612d1a565b612d33565b91612d4e565b612d8e565b6000811215612e9057612e7e90612da9565b905b808211612e8b575090565b905090565b90612e80565b505050600090565b6001600160a01b0381166000908152601760205260408120549193929091801561301057612f3c90612ece613beb565b93612eda841515613257565b600954602090612ef2906001600160a01b0316610675565b600c546001600160a01b038a1660009081526018602052604080822054905163442c159960e01b815260048101939093526024830152604482015294859190829081906064820190565b03915afa928315610df457612fe795612dfc612f9f6020612fab612f8c8a612f87612f7e612fe19c612fba9a8c91612ff3575b50602154620186a09004612e42565b601e5490612cba565b612ce3565b8551909890612e42906001600160801b03165b6001600160801b031690565b9301516001600160801b031690565b90828210612feb5750035b6001600160a01b03909516600090815260186020526040902090565b546132b2565b9091565b915050612fc5565b61300a9150873d8111610ded57610dde8183611565565b38612f6f565b505080919250918190565b91908260409103126105505760208251613034816105eb565b92015190565b60208082526000916010549161304f836114bf565b92838284015260019081811690816000146130b25750600114613074575b5050505090565b929350601060005280600020926000935b85851061309e575050506040925001013880808061306d565b805485850160400152938201938101613085565b925050506040935060ff929192191683830152151560051b01013880808061306d565b6040513d6000823e3d90fd5b156130e857565b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881c985d19481d1bdbc81bdb1960621b6044820152606490fd5b1561312b57565b60405162461bcd60e51b81526020600482015260146024820152734d61726b65743a20696e76616c6964207261746560601b6044820152606490fd5b600f5461317c906001600160a01b0316610675565b6040805163d6d7d52560e01b8152929183908160008161319e6004820161303a565b03925af18015610df4576000928391613223575b509082156131fe576131c5821515613124565b6131ce82601155565b817f9f9192b5edb17356c524e08d9e025c8e2f6307e6ea52fb7968faa3081f51c3c8600080a25b61220142601355565b905061321a61321260135460125490612d0d565b4211156130e1565b601154906131f5565b905061324791925060403d8111613250575b61323f8183611565565b81019061301b565b919091386131b2565b503d613235565b1561325e57565b60405162461bcd60e51b815260206004820152601e60248201527f4d61726b65743a2065786368616e676552617465206e6f742076616c696400006044820152606490fd5b90816020910312610550575190565b61330760208315926132c48415613257565b600954600c5460405163442c159960e01b81526004810191909152602481019290925260006044830152909283916001600160a01b031690829081906064820190565b03915afa8015610df45761332791600091613341575b5060215490612cba565b90612ced5704620186a061333d601e5483612cba565b0491565b613359915060203d8111610ded57610dde8183611565565b3861331d565b91909160008382019384129112908015821691151617612c9857565b9061339f6133bd91612fe18460018060a01b03166000526018602052604060002090565b6001600160a01b039093166000908152601760205260409020909291565b548015612e96578215612e9657828110612e965781811015613455578261341561341061341b9561340b612dfc956134016014549160018060801b03831690612cba565b9060801c90612ce3565b612d00565b612c80565b92612d00565b613449601b549161344461343b601c54926134368487612d1a565b612d6b565b620186a0900590565b61335f565b90808212612e8b575090565b505050601b5490565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316148061354f575b156134b9577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f000000000000000000000000000000000000000000000000000000000000000082527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a081526135498161152f565b51902090565b507f00000000000000000000000000000000000000000000000000000000000000004614613490565b610100908181805181010312610550576020810151613596816105eb565b6040820151926135a58461053f565b6060830151946135b48661053f565b60808401519460a085015160c0860151936135ce856108f5565b60e08701519601516001600160a01b0392831698831696428310610a2957613690956136848a8c6109fc81996109ee613689998f8f6000146136a7577f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e266965b6136368761391c565b60408051602081019a8b5261ffff909716908701526001600160a01b03978816606087015296909116608085015260a084015260c083019490945260e0820193909352918290610100820190565b61371a565b16146136ce565b1561369e5761220192613997565b61220192613944565b7f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d69661362d565b156136d557565b60405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152606490fd5b9161057a9391610a099361384e565b6005111561146257565b61373c81613729565b806137445750565b61374d81613729565b600181036137955760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b6044820152606490fd5b61379e81613729565b600281036137eb5760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606490fd5b806137f7600392613729565b146137fe57565b60405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608490fd5b9291906fa2a8918ca85bafe22016d0b997e4df60600160ff1b0383116138ba5791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa15610df45781516001600160a01b038116156138b4579190565b50600190565b50505050600090600390565b6138ce61345e565b9060405190602082019261190160f01b84526022830152604282015260428152608081018181106001600160401b0382111761152a5760405251902090565b6000198114612c985760010190565b6001600160a01b0316600090815260046020526040902080549061393f8261390d565b905590565b6001600160a01b03908116600081815260036020908152604080832095909416808352949052918220849055907fe50de2333c10a9502fcb1d8ae13a51bbf423153dfc63c2b8997665b32154afc39080a4565b6001600160a01b0390811660008181526002602090815260408083208686168452825290912091937f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259391928690556040519586521693a3565b90816020910312610550575161057a8161053f565b60255460ff16613b53576014546001600160801b03168015613b4c57600a54613a37906001600160a01b0316610675565b6040518091631848f2bf60e31b825281600460209384935afa918215610df4576004928291600091613b1f575b50604051631a674cc560e11b815293849182906001600160a01b03165afa8015610df457613ab192613aa392600092613b02575b505060285490612cba565b670de0b6b3a7640000900490565b80821015613afa57612dfc613ad592613415613ad06029548093612d00565b612c9d565b612e7e60265491613af5613aa360275492613af08487612d00565b612cba565b612d0d565b505060265490565b613b189250803d10610ded57610dde8183611565565b3880613a98565b613b3f9150823d8411613b45575b613b378183611565565b8101906139f1565b38613a64565b503d613b2d565b5060275490565b600a54600490602090613b6e906001600160a01b0316610675565b60405163e6abad4960e01b815292839182905afa908115610df457600091613b94575090565b61057a915060203d8111610ded57610dde8183611565565b60405190613bb98261150f565b6014546001600160801b038116835260801c6020830152565b6001600160801b039182169082160191908211612c9857565b60006020604051613bfb8161150f565b82815201526001600160401b03908160245460401c169182420392428411612c98574214613c7357613c6e613af091670de0b6b3a7640000613c63613c3e613bac565b9660018060801b03958694858a5116906301e13380613c5b613a06565b041690612cba565b041682855116613bd2565b168252565b50905061057a613bac565b604051613c8a8161150f565b6024546001600160401b038181809316845260401c16613cb1602084019180835242612d00565b928315613e0457613d03613ddb92613cf3613ce6613cda613cd0613a06565b6301e13380900490565b6001600160401b031690565b6001600160401b03168452565b8442166001600160401b03169052565b613d96613d43613aa3613d14613bac565b8051909790613af090613d2f906001600160801b0316612f9f565b612e42613cda88516001600160401b031690565b8551909590613d6f90613d62906001600160801b03808a169116613bd2565b6001600160801b03168252565b805160209091015160801b6001600160801b0319166001600160801b039190911617601455565b613dce816001600160401b038151166024549160206001600160401b0360401b91015160401b169160018060801b0319161717602455565b516001600160401b031690565b16907f7484db546dcd57af0104c73c8a6968dfbaf5767f047cee0dadd0499ad7df81a0600080a3565b50505050565b15613e1157565b60405162461bcd60e51b815260206004820152601860248201527710908e881919589d081c985d195cc81b9bdd081d985b1a5960421b6044820152606490fd5b15613e5857565b60405162461bcd60e51b815260206004820152601b60248201527f42423a206d617820646562742072617465206e6f742076616c696400000000006044820152606490fd5b9291906004600c546020613ebb610675600a5460018060a01b031690565b6040516364cfdbb760e11b815293849182905afa908115610df457613ef592600092610dc457501460ff8019602554169115151617602555565b613f04610c9460255460ff1690565b613f0e5750505050565b613f35613f3a92613f30613f3f96602754151580613f6c575b613f4857602855565b602655565b602755565b602955565b38808080613e04565b613f53838610613e0a565b613f67670de0b6b3a7640000841115613e51565b602855565b506026541515613f27565b15613f7e57565b60405162461bcd60e51b815260206004820152600c60248201526b21211d103130b2103830b4b960a11b6044820152606490fd5b15613fb957565b60405162461bcd60e51b815260206004820152603060248201527f42423a206c69717569646174696f6e20636f6c6c61746572616c697a6174696f60448201526f1b881c985d19481b9bdd081d985b1a5960821b6064820152608490fd5b600a80546001600160a01b0319166001600160a01b03831617905593959493929160405163de40657760e01b81526020946001600160a01b039086908390600490829085165afa8015610df45781614097916004946000916142df575b5060098054919092166001600160a01b03166001600160a01b0319909116179055565b600a546140d2906140b0906001600160a01b0316610675565b600580546001600160a01b0319166001600160a01b0392909216919091179055565b600a5486906140e9906001600160a01b0316610675565b604051631192124760e11b815293849182905afa8015610df45761414c926000916142c2575b508185161515806142b7575b806142ac575b61412a90613f77565b600d8054919092166001600160a01b03166001600160a01b0319909116179055565b600a546004908590614166906001600160a01b0316610675565b6040516386c8e21d60e01b815292839182905afa928315610df45761419f6141c6946141c1936141e89860009261428f575b5050600e55565b600b80546001600160a01b0319166001600160a01b0392909216919091179055565b600c55565b600f80546001600160a01b0319166001600160a01b0392909216919091179055565b6141f0613167565b50506141fe62015f90601955565b6142086000601a55565b801561428257601e555b801561427557601f555b61422b601f54601e5410613fb2565b8015614263576021555b61424162013880601b55565b61424d62015f90601c55565b614258612710601d55565b612201612ee0602055565b50614235670de0b6b3a7640000602155565b5061421c620138806122eb565b50614212620124f8612311565b6142a59250803d10610ded57610dde8183611565565b3880614198565b508582161515614121565b50818116151561411b565b6142d99150873d8911613b4557613b378183611565565b3861410f565b6142f69150893d8b11613b4557613b378183611565565b38614074565b6001600160401b03811161152a5760051b60200190565b9061431d826142fc565b61432a6040519182611565565b828152809261433b601f19916142fc565b0190602036910137565b9061434f826142fc565b61435c6040519182611565565b828152809261436d601f19916142fc565b019060005b82811061437e57505050565b806060602080938501015201614372565b634e487b7160e01b600052603260045260246000fd5b91908110156143e65760051b81013590601e19813603018212156105505701908135916001600160401b038311610550576020018236038113610550579190565b61438f565b908092918237016000815290565b3d15614424573d9061440a8261181c565b916144186040519384611565565b82523d6000602084013e565b606090565b80518210156143e65760209160051b010190565b6103e88151116144f45760448151106144c157600481015181019060208160248401930312610550576024810151906001600160401b0382116105505701816043820112156105505760248101516144948161181c565b926144a26040519485611565565b818452604482840101116105505761057a916044602085019101611586565b506040516144ce8161150f565b60168152754d61726b65743a206e6f2072657475726e206461746160501b602082015290565b506040516145018161150f565b60178152764d61726b65743a20726561736f6e20746f6f206c6f6e6760481b602082015290565b9190826040910312610550576020825192015190565b908060209392818452848401376000828201840152601f01601f1916010190565b91908082526020809201929160005b82811061457c575050505090565b90919293828060019287356145908161053f565b848060a01b0316815201950191019291909261456e565b90808352602080930192838260051b850194846000925b8584106145cf575050505050505090565b9091929394959681810384528735601e19843603018112156105505783018681019190356001600160401b038111610550578036038313610550576146198892839260019561453e565b9901940194019295949391906145be565b9295969094969391936040519660209663e5644d8b60e01b888a01528060a48a01608060248c01525260c48901959060005b898282106146c9575050505087850360231990810160448a0152818652936001600160fb1b038211610550576146c699611a6a988a986109ee986146b79560051b809284830137018981036003190160648b0152019161455f565b928584030160848601526145a7565b50565b8084996001939495356146db8161053f565b848060a01b03168152019801910191909161465c565b60405162461bcd60e51b815260206004820152600f60248201526e10908e881b9bdd08185b1b1bddd959608a1b6044820152606490fd5b90816020910312610550575161057a816105eb565b1561474457565b60405162461bcd60e51b815260206004820152600d60248201526c10908e881b9bdd081d985b1a59609a1b6044820152606490fd5b6031546001600160a01b031680156147d757816000929160208493519201905af4906147a36143f9565b91156147ab57565b611c646147b78361443d565b60405162461bcd60e51b81526020600482015291829160248301906115a9565b60405162461bcd60e51b815260206004820152601260248201527110908e881b5bd91d5b19481b9bdd081cd95d60721b6044820152606490fd5b602f546001600160a01b031680156147d757816000929160208493519201905af4906147a36143f9565b602e546001600160a01b031680156147d757816000929160208493519201905af4906147a36143f9565b6030546001600160a01b031680156147d757816000929160208493519201905af4906147a36143f956fea26469706673582212207be7e320bb2984fbf65472f8cfd2c46711293c44db184c62ca0c381f1e9bef8f64736f6c63430008120033", "linkReferences": {}, "deployedLinkReferences": {} } diff --git a/src/artifacts/tapioca-bar/Market.json b/src/artifacts/tapioca-bar/Market.json index 2e04c687..0b56ea80 100644 --- a/src/artifacts/tapioca-bar/Market.json +++ b/src/artifacts/tapioca-bar/Market.json @@ -172,25 +172,6 @@ "name": "LogBorrowCapUpdated", "type": "event" }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "uint256", - "name": "_oldVal", - "type": "uint256" - }, - { - "indexed": true, - "internalType": "uint256", - "name": "_newVal", - "type": "uint256" - } - ], - "name": "LogBorrowingFee", - "type": "event" - }, { "anonymous": false, "inputs": [ @@ -439,19 +420,6 @@ "stateMutability": "view", "type": "function" }, - { - "inputs": [], - "name": "borrowOpeningFee", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, { "inputs": [], "name": "callerFee", @@ -937,11 +905,6 @@ }, { "inputs": [ - { - "internalType": "uint256", - "name": "_borrowOpeningFee", - "type": "uint256" - }, { "internalType": "contract IOracle", "name": "_oracle", diff --git a/src/artifacts/tapioca-bar/SGLBorrow.json b/src/artifacts/tapioca-bar/SGLBorrow.json index 9c226d19..049c627e 100644 --- a/src/artifacts/tapioca-bar/SGLBorrow.json +++ b/src/artifacts/tapioca-bar/SGLBorrow.json @@ -1595,11 +1595,6 @@ }, { "inputs": [ - { - "internalType": "uint256", - "name": "_borrowOpeningFee", - "type": "uint256" - }, { "internalType": "contract IOracle", "name": "_oracle", @@ -1926,8 +1921,8 @@ "type": "function" } ], - "bytecode": "0x6101408060405234620001e5576200001781620001ea565b601381526001602082017f546170696f63612053696e67756c617269747900000000000000000000000000815260206040516200005481620001ea565b8381520192603160f81b845251902091208160e052610100918183524660a0526040519160208301907f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f92838352604085015260608401524660808401523060a084015260a0835260c083019280841060018060401b03851117620001cf5760408490525190206080523060c052610120908152600580546001600160a01b0319163390811790915560007f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a362013880601b5562015f90601c55612710601d556032602055612ee06021557f0bd4060688a1800ae986e4840aebc924bb40b5bf44de4583df2257220b54b77c6027557f7d1dc38e60930664f8cbf495da6556ca091d2f92d6550877750c049864b182306028556161a860295561405f928362000207843960805183612b6e015260a05183612c39015260c05183612b38015260e05183612bbd01525182612be301525181612b9a0152f35b634e487b7160e01b600052604160045260246000fd5b600080fd5b604081019081106001600160401b03821117620001cf5760405256fe608060408181526004918236101561001657600080fd5b60009260e08435811c928362a02a20146120bb5750826302ce728f1461209257826306fdde0314611fda578263078dfbe714611ed5578263095ea7b314611eaa5782630996efb714611a2e5782630c4e84f01461191757826318160ddd146118f45782631c9e379b146118bb5782631da8bf101461180157826323b872dd14611679578263313ce56714611642578263331960ff1461162257826334d441d0146116025782633644e515146115e457826337b6b7b9146115c457826338d52e0f1461159a5782633ba0b9a91461157a5782633f741adb1461155157826340626d8b1461153157826344de240a14611511578263473e3ce7146114f157826348e4163e146114b85782634d7f2a34146114985782634e71e0c8146113e35782635224372c1461132c578263529898f21461130c57826352f353eb146112e357826355140232146112ba57826355c2ab941461129057826357935462146112705782635dfe04e81461120f5782636c3d8b8f146111e557826370a08231146111ac578263727785471461117457826374645ff3146111475782637dc0d1d01461111d5782637ecebe00146110e65782637fa0b84e146110b4578263821226e8146110945782638285ef40146110605782638c5d0ed3146110405782638da5cb5b14611016578263910dd7c814610d95578263959916dc14610d7657826395d89b4114610cbd57826399a9702814610c8c5782639c5d719214610c6c5782639e15e89f14610c30578263a9059cbb14610b54578263b0e21e8a14610b34578263b27c0e7414610af8578263bb4cfe3b14610ad8578263cd0211eb1461066b578263ce8849ed14610641578263d505accf146104ba5750508063d8dfeb4514610492578063dd62ed3e14610445578063de4065771461041d578063e0996cb6146103ff578063e30c3978146103d7578063ea64dd56146103b9578063eec0f42e1461039b578063f42760b71461037d578063f8ba4cff1461035e578063f9557ccb146103285763ffe04c661461030757600080fd5b34610324578160031936011261032457602090602a549051908152f35b5080fd5b503461032457816003193601126103245760255490516001600160801b038216815260809190911c6020820152604090f35b0390f35b823461037a578060031936011261037a57610377613d21565b80f35b80fd5b5034610324578160031936011261032457602090602b549051908152f35b5034610324578160031936011261032457602090600c549051908152f35b5034610324578160031936011261032457602090601f549051908152f35b503461032457816003193601126103245760065490516001600160a01b039091168152602090f35b5034610324578160031936011261032457602090601d549051908152f35b503461032457816003193601126103245760095490516001600160a01b039091168152602090f35b5034610324578060031936011261032457602091610461612101565b8261046a612117565b6001600160a01b03928316845260028652922091166000908152908352819020549051908152f35b5034610324578160031936011261032457600b5490516001600160a01b039091168152602090f35b8492503461063d576104cb36612193565b9183949895979342116105fa579161059d916105a5938c8b8b60018060a01b0398898d169a8b93846000528d602052856000209081549161050b83612e8f565b90558c87519560208701977f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e266895260008a890152606088015216608086015260a085015260c084015281830152815261056381612364565b51902061056e612b35565b915190602082019261190160f01b8452602283015260428201526042815261059581612380565b519020612e0a565b919091612d0b565b16036105b75750610377939450612eec565b606490602087519162461bcd60e51b8352820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152fd5b8a5162461bcd60e51b8152602081880152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b8280fd5b5050503461032457816003193601126103245760085490516001600160a01b039091168152602090f35b5083833461032457608036600319011261032457610687612101565b61068f612117565b90610698612184565b936064359160018252602095600787526106b860ff878520541615612f43565b6001600160a01b0385811695909390610715906106d730891415612f80565b6106df6126c6565b50506106e9613d21565b6106fa876106f56134b9565b613755565b905060115460ff61070e89600d541661344b565b1692613602565b8015610a95576107259084613685565b8581526017885286812054808611610a8d575b508415610a5257879861078198610751876106f56134b9565b8151601480546001600160801b0319166001600160801b03928316179055909b909290918391905b015116613cfc565b87835260178b528883206107968882546124b9565b90558560095416600e54928a5193638eb22cdd60e01b855280828601528c6024860152600160448601528d85606481865afa94851561095e578c918f918897610a1c575b506025548616948915610968575060448b60095416935180948193627eeac760e11b8352308884015260248301525afa801561095e5783908790610928575b61082392506124b9565b84116108f55750927fc8e512d8f188ca059984b5853d2bf653da902696b8512785b182b2c813789a6e95928c95926108638d9b9a99965b82841690613828565b1660018060801b0319602554161760255584841690818352602687528b83206027549081855288528c84205482116000146108d057505081526026855289812060275482528552808a8120555b50156108cb575080600954165b87519485521692a451908152f35b6108bd565b90918352602687528b832090835286526108ee8b83209182546124b9565b90556108b0565b8a5162461bcd60e51b81529081018d9052600d60248201526c0a68e987440e8dede40daeac6d609b1b6044820152606490fd5b50508d81813d8311610957575b61093f818361239b565b8101031261095257826108239151610819565b600080fd5b503d610935565b8c513d88823e3d90fd5b9250929050813b15610a18578c51630208d92960e11b81526001600160a01b038a169181019182523060208301526040820193909352606081018690528691839182908490829060800103925af18015610a0e57928c9a999895927fc8e512d8f188ca059984b5853d2bf653da902696b8512785b182b2c813789a6e9895928f98956109f9575b506108639061085a565b93610a076108639295612305565b93906109ef565b8b513d87823e3d90fd5b8680fd5b9250955081813d8311610a4b575b610a34818361239b565b81010312610a47578d8c915195386107da565b8580fd5b503d610a2a565b865162461bcd60e51b8152808a01899052601560248201527453474c3a206e6f7468696e6720746f20726570617960581b6044820152606490fd5b945089610738565b875162461bcd60e51b8152808b018a9052601d60248201527f53474c3a20616c6c6f77616e63655368617265206e6f742076616c69640000006044820152606490fd5b50505034610324578160031936011261032457602090601e549051908152f35b50505034610324578160031936011261032457606090602454908051916001600160401b03808216845281831c16602084015260801c90820152f35b50505034610324578160031936011261032457602090601a549051908152f35b50505034610324578060031936011261032457602091610b72612101565b82602435928315801590610c1e575b610bb1575b50519182526001600160a01b031690339060008051602061400a833981519152908590a35160018152f35b3381526001865281812054610bc885821015612c5f565b6001600160a01b038416908533839003610be5575b505050610b86565b610bf991610bf4841515612ca4565b6124b9565b3383526001885283832055815220610c128382546124c6565b90558238808085610bdd565b50336001600160a01b03841614610b81565b50505034610324578060031936011261032457606090610c5a610c51612101565b60243590612605565b91929081519384526020840152820152f35b50505034610324578160031936011261032457602090602c549051908152f35b50505034610324578060031936011261032457602090610cb6610cad612101565b60243590612a03565b9051908152f35b5090503461063d578260031936011261063d5791808061035a9460018060a01b03600b541690855160208101916395d89b4160e01b83528152610cff8161232e565b51915afa610d0b61341b565b915015610d6757610d1b90613e98565b905b610d5560238251809462746d2d60e81b6020830152610d45815180926020868601910161212d565b810103600381018552018361239b565b51918291602083526020830190612150565b50610d70613e41565b90610d1d565b5050503461032457816003193601126103245760209081549051908152f35b849184346110125780600319360112611012578135926001600160401b03841161100e573660238501121561100e578383013592610dd2846123bc565b94610ddf8451968761239b565b8486528660209182880196366024828401011161063d578060248593018937880101526024359361ffff851680950361100a5761010095868880518101031261100657610e2b906126b9565b93610e37828901612ce9565b90610e4460608a01612ce9565b9860808101519860a082015192610e5d60c08401612cfd565b91818401519301519360018060a01b03808097169d169a814211610fc357928d8f819897948f948f8f968f918f959a8f8c8195610f399f9c61059d9f50600014610f9c577f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e2669a5b825289522093845494610ed686612e8f565b905580519788019889528701528d6060870152608086015260a085015260c0840152818301528152610f0781612364565b519020610f12612b35565b908951908b82019261190160f01b8452602283015260428201526042815261059581612380565b1603610f5b57505050600014610f525761037792612eec565b61037792612e9e565b5162461bcd60e51b815291820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e61747572650000604482015260649150fd5b7f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d69a610ec4565b875162461bcd60e51b8152808b018a9052601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b8880fd5b8780fd5b8480fd5b8380fd5b5050503461032457816003193601126103245760055490516001600160a01b039091168152602090f35b50505034610324578160031936011261032457602090601b549051908152f35b5050503461032457816003193601126103245760145490516001600160801b038216815260809190911c6020820152604090f35b50505034610324578160031936011261032457602090602e549051908152f35b505050346103245780600319360112610324576020906110df6110d5612101565b6024359033612e9e565b5160018152f35b5090503461063d57602036600319011261063d5760209282916001600160a01b0361110f612101565b168252845220549051908152f35b50505034610324578160031936011261032457600f5490516001600160a01b039091168152602090f35b50505034610324578160031936011261032457805161035a91610d558261116d81612280565b038361239b565b5090503461063d57602036600319011261063d573591600983101561037a575060ff6111a1602093612217565b541690519015158152f35b505050346103245760203660031901126103245760209181906001600160a01b036111d5612101565b1681526001845220549051908152f35b50505034610324578160031936011261032457600a5490516001600160a01b039091168152602090f35b5050503461032457816003193601126103245760809061122d613809565b50611236613841565b50949593505050508051926001600160401b03808251168552602082015116602085015281600180871b0391015116908301526060820152f35b50505034610324578160031936011261032457602090601c549051908152f35b50505034610324578160031936011261032457602d548151911c6001600160401b03168152602090f35b505050346103245781600319360112610324576020906001600160401b03602d54169051908152f35b505050346103245781600319360112610324576020906001600160401b03602f54169051908152f35b505050346103245781600319360112610324576020906021549051908152f35b5090503461063d5761139a9061138e60ff849561136161134b366121e2565b9491989093808052600760205220541615612f43565b6113696126c6565b5050611373613d21565b6113886001600160a01b038216301415612f80565b85612fcb565b92909360115490613505565b156113ac575082519182526020820152f35b606490602085519162461bcd60e51b8352820152601160248201527013585c9ad95d0e881a5b9cdbdb1d995b9d607a1b6044820152fd5b8482853461063d578260031936011261063d576006546001600160a01b03929091838316919033839003611455575050806005549384167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08680a36001600160a01b0319928316176005551660065580f35b906020606492519162461bcd60e51b8352820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b505050346103245781600319360112610324576020906029549051908152f35b505050346103245760203660031901126103245760209181906001600160a01b036114e1612101565b1681526017845220549051908152f35b505050346103245781600319360112610324576020906015549051908152f35b50505034610324578160031936011261032457602090600e549051908152f35b505050346103245781600319360112610324576020906016549051908152f35b5082843461037a57606036600319011261037a5750610cb66020926044359060243590356124ec565b505050346103245781600319360112610324576020906011549051908152f35b50505034610324578160031936011261032457600d5490516001600160a01b039091168152602090f35b505050346103245781600319360112610324576020906012549051908152f35b50505034610324578160031936011261032457602090610cb6612b35565b505050346103245781600319360112610324576020906019549051908152f35b505050346103245781600319360112610324576020906013549051908152f35b50505034610324578160031936011261032457600d546020919060ff90611671906001600160a01b031661344b565b915191168152f35b5082843461037a5761168a366121e2565b9192826116c4575b508351918252602094506001600160a01b0390811692169060008051602061400a833981519152908590a35160018152f35b6001600160a01b0384811680835260016020908152878420549198929091906116ef87831015612c5f565b851692838a03611703575b50505050611692565b89855260028352888520338652835288852054906001820161176d575b5050928260209960018a9461174c8a8e99610bf460008051602061400a8339815191529c9a1515612ca4565b92855252838320558152206117628582546124c6565b9055918780806116fa565b8782106117c357509260209960018a9461174c8a8e999661179e8260008051602061400a8339815191529d9b6124b9565b86895260028552898920338a5285528989205596995050509450509981949650611720565b895162461bcd60e51b8152908101849052601860248201527745524332303a20616c6c6f77616e636520746f6f206c6f7760401b6044820152606490fd5b8492503461063d5761181236612193565b9397949690928042116105fa579386936118a9938c8c8961059d968e9a8e60018060a01b03809c169c8d948587526020528c8787209283549361185485612e8f565b905588519660208801987f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d68a528a890152606088015216608086015260a085015260c084015281830152815261056381612364565b16036105b75750610377939450612e9e565b505050346103245760203660031901126103245760209181906001600160a01b036118e4612101565b1681526018845220549051908152f35b5050503461032457816003193601126103245760209060255460801c9051908152f35b5090503461063d578160031936011261063d5780359060098210156110125761193e612175565b6008549093906001600160a01b031633036119f45760ff61195e84612217565b541615159315159384146119bc575050808260ff61197e6119ac94612217565b54161515827feeec81de25875ce1725479bb76f720a8defdb43dea041919ae37bb4aae9847c08780a4612217565b9060ff8019835416911617905580f35b906020606492519162461bcd60e51b835282015260126024820152714d61726b65743a2073616d6520737461746560701b6044820152fd5b906020606492519162461bcd60e51b8352820152601460248201527313585c9ad95d0e881d5b985d5d1a1bdc9a5e995960621b6044820152fd5b5090503461063d5761018036600319011261063d5760246001600160a01b03813581811690819003610a4757604435916001600160401b039081841161100a573660238501121561100a578386013591821161100a573685838601011161100a576064359181831680930361100657611aac826005541633146123d7565b863594620186a094611ac086881115612422565b602096808c7fc353b09af857951dccce61b43a5854fc45beceed36c50e5d4cc2e71858a8e0df8a549180a3875580611e6c575b508682611d31575b50505081611cf1575b505060843580611cdc575b5060a43580611cc7575b5060c43580611cb3575b5060e43580611c92575b506101043580611c71575b506101243580611c40575b50610144359081611bd2575b5050610164359384611b5f578580f35b601e548510611b785750505050601f5538808080808580f35b5162461bcd60e51b8152928301526032908201527f4d61726b65743a206c69717569646174696f6e436f6c6c61746572616c697a616044820152711d1a5bdb94985d19481d1bdbc81cdb585b1b60721b6064820152608490fd5b611bde90821115612422565b601f548111611bf157601e553880611b4f565b5090602591608494519362461bcd60e51b85528401528201527f4d61726b65743a20636f6c6c61746572616c697a6174696f6e5261746520746f6044820152646f2062696760d81b6064820152fd5b806016547fae6e0ab3b95f0a53ff9660a390ccedcbbf1f2355dce974a9841af106fddcfaba8980a360165538611b43565b611c7c828210612422565b611c89601b548211612422565b601c5538611b38565b611c9d828210612422565b611caa601c548210612422565b601b5538611b2d565b611cbe828210612422565b601d5538611b23565b611cd382821115612422565b601a5538611b19565b611ce882821115612422565b60195538611b0f565b816008549182167f5a62d22209e370e38eea92cfddcd228e656e6ec139243392a760a7769f5877fd8a80a36001600160a01b031916176008553880611b04565b8291611d3e601054612246565b601f8111611e1b575b508b90601f8411600114611dac578c93611d9f575b5050508160011b916000199060031b1c1916176010555b7fa6f004921c944d4b8bf6e38462b00f36a58d62495d56b51f571ab78f732c98158880a1388086611afb565b0101359050863880611d5c565b60108d52888d20601f198516955092509089908d5b8a878210611e005750508460019610611de4575b50505050811b01601055611d73565b60001960f88660031b161c199201013516905538808881611dd5565b8483019093013585556001909401938b929182019101611dc1565b9150915060108b52868b20601f840160051c8101888510611e65575b91849391601f8b94920160051c01905b818110611e545750611d47565b8d81558594508a9350600101611e47565b5080611e37565b600f80546001600160a01b0319169190911790557f0b2d6eb667d0522c3eb86e4288afecae6c11591ffd1345d4d12407e0598bca9b8a80a138611af3565b505050346103245780600319360112610324576020906110df611ecb612101565b6024359033612eec565b8482853461063d57606036600319011261063d57611ef1612101565b91611efa612175565b91611f03612184565b9260018060a01b03948591611f1d836005541633146123d7565b15611fc1571692831590811591611fb9575b5015611f7e575050806005549283167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08580a36001600160a01b03199182161760055560068054909116905580f35b906020606492519162461bcd60e51b835282015260156024820152744f776e61626c653a207a65726f206164647265737360581b6044820152fd5b905086611f2f565b93505050501660018060a01b0319600654161760065580f35b5090503461063d578260031936011261063d5791808061035a9460018060a01b03600b541690855160208101916306fdde0360e01b8352815261201c8161232e565b51915afa61202861341b565b9150156120835761203890613e98565b905b610d5560348251809473546170696f63612053696e67756c61726974792d60601b6020830152612073815180926020868601910161212d565b810103601481018552018361239b565b5061208c613e41565b9061203a565b83853461037a578060031936011261037a57506120ad6126c6565b825191151582526020820152f35b8590853461063d578060031936011261063d576020926120d9612101565b6120e1612117565b6001600160a01b0391821683526003865283832091168252845220548152f35b600435906001600160a01b038216820361095257565b602435906001600160a01b038216820361095257565b60005b8381106121405750506000910152565b8181015183820152602001612130565b906020916121698151809281855285808601910161212d565b601f01601f1916010190565b60243590811515820361095257565b60443590811515820361095257565b60e0906003190112610952576001600160a01b03906004358281168103610952579160243590811681036109525790604435906064359060843560ff81168103610952579060a4359060c43590565b6060906003190112610952576001600160a01b0390600435828116810361095257916024359081168103610952579060443590565b6009811015612230576000526007602052604060002090565b634e487b7160e01b600052602160045260246000fd5b90600182811c92168015612276575b602083101461226057565b634e487b7160e01b600052602260045260246000fd5b91607f1691612255565b6010546000929161229082612246565b9081815260019283811690816000146122ea57506001146122b057505050565b9092935060106000526020928360002092846000945b8386106122d65750505050010190565b8054858701830152940193859082016122c6565b91935050602093945060ff191683830152151560051b010190565b6001600160401b03811161231857604052565b634e487b7160e01b600052604160045260246000fd5b604081019081106001600160401b0382111761231857604052565b606081019081106001600160401b0382111761231857604052565b61010081019081106001600160401b0382111761231857604052565b608081019081106001600160401b0382111761231857604052565b90601f801991011681019081106001600160401b0382111761231857604052565b6001600160401b03811161231857601f01601f191660200190565b156123de57565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b1561242957565b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881b9bdd081d985b1a59607a1b6044820152606490fd5b8181029291811591840414171561247557565b634e487b7160e01b600052601160045260246000fd5b8115612495570490565b634e487b7160e01b600052601260045260246000fd5b604d811161247557600a0a90565b9190820391821161247557565b9190820180921161247557565b8181039291600013801582851316918412161761247557565b601454919291612535916125269161251c91612512906001600160801b03831690612462565b9060801c9061248b565b93601f5490612462565b61252f836124ab565b9061248b565b8083106125fd5761254961258591846124b9565b9161258061257a612571601e5461256b612562866124ab565b602154906124c6565b90612462565b61252f846124ab565b916124ab565b6124d3565b6509184e72a0009081810291818305149015171561247557670de0b6b3a76400009182810292818405149015171561247557801561249557600160ff1b9180831460001983141661247557059060008212156125f657811461247557600003905b8082116125f1575090565b905090565b50906125e6565b505050600090565b6001600160a01b0381166000818152601760205260408120549194939290919081156126ad57916040916126896126a1959483602086516126458161232e565b828152015261266386612656613841565b505050505093905061287a565b815190936001600160801b039160209161267f91841690612462565b920151169061248b565b8181106126a557035b9581526018602052205461294c565b9091565b505080612692565b50509192505080918190565b5190811515820361095257565b600f546040805163d6d7d52560e01b8152602060048201529290916001600160a01b03168284806126f960248201612280565b0381600080955af1801561282257819482916127e6575b5092841561278957831561274f57507f9f9192b5edb17356c524e08d9e025c8e2f6307e6ea52fb7968faa3081f51c3c883918260115580a25b42601355565b5162461bcd60e51b81526020600482015260146024820152734d61726b65743a20696e76616c6964207261746560601b6044820152606490fd5b9192505061279c601354601254906124c6565b42116127ac575060115490612749565b5162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881c985d19481d1bdbc81bdb1960621b6044820152606490fd5b809550848092503d831161281b575b6127ff818361239b565b8101031261037a576020612812856126b9565b94015138612710565b503d6127f5565b508251903d90823e3d90fd5b1561283557565b60405162461bcd60e51b815260206004820152601e60248201527f4d61726b65743a2065786368616e676552617465206e6f742076616c696400006044820152606490fd5b61288582151561282e565b60018060a01b036020816009541691600c5490600094168452601882526064604085205491604051948593849263442c159960e01b8452600484015260248301528660448301525afa918215612940578092612908575b5050906129006128f761290593620186a06022540490612462565b601e5490612462565b61248b565b90565b9091506020823d8211612938575b816129236020938361239b565b8101031261037a5750516129006128f76128dc565b3d9150612916565b604051903d90823e3d90fd5b61295782151561282e565b602060018060a01b0360095416916064600c54604051948593849263442c159960e01b845260048401526024830152600060448301525afa9081156129f7576000916129c4575b50906129006129b09260225490612462565b620186a06129c0601e5483612462565b0491565b906020823d82116129ef575b816129dd6020938361239b565b8101031261037a57505161290061299e565b3d91506129d0565b6040513d6000823e3d90fd5b6001600160a01b03166000818152601860205260408120549092612a269161294c565b918352601760205260408320548015612b2f578115612b2f57818110612b2f5782811015612b2557601454612a6f918391610bf491612512906001600160801b03831690612462565b90620186a09283830292808404851490151715612b1157612a94929161252f916124b9565b91601b5491601c5493612aa785856124d3565b80820291848212600160ff1b821416612b11578183051490151715612afd5705818482019485129112908015821691151617612ae957508082126125f1575090565b634e487b7160e01b81526011600452602490fd5b634e487b7160e01b83526011600452602483fd5b634e487b7160e01b85526011600452602485fd5b50505050601b5490565b50505090565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03161480612c36575b15612b90577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f000000000000000000000000000000000000000000000000000000000000000082527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a0815260c081018181106001600160401b038211176123185760405251902090565b507f00000000000000000000000000000000000000000000000000000000000000004614612b67565b15612c6657565b60405162461bcd60e51b815260206004820152601660248201527545524332303a2062616c616e636520746f6f206c6f7760501b6044820152606490fd5b15612cab57565b60405162461bcd60e51b815260206004820152601660248201527545524332303a206e6f207a65726f206164647265737360501b6044820152606490fd5b51906001600160a01b038216820361095257565b519060ff8216820361095257565b60058110156122305780612d1c5750565b60018103612d645760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b6044820152606490fd5b60028103612db15760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606490fd5b600314612dba57565b60405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608490fd5b9291906fa2a8918ca85bafe22016d0b997e4df60600160ff1b038311612e835791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa15612e765781516001600160a01b03811615612e70579190565b50600190565b50604051903d90823e3d90fd5b50505050600090600390565b60001981146124755760010190565b7fe50de2333c10a9502fcb1d8ae13a51bbf423153dfc63c2b8997665b32154afc360018060a01b038092169160009083825260036020526040822094169384825260205284604082205580a4565b909160207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259160018060a01b03809416938460005260028352604060002095169485600052825280604060002055604051908152a3565b15612f4a57565b60405162461bcd60e51b815260206004820152600e60248201526d13585c9ad95d0e881c185d5cd95960921b6044820152606490fd5b15612f8757565b606460405162461bcd60e51b815260206004820152602060248201527f4d61726b65743a2063616e6e6f742065786563757465206f6e20697473656c666044820152fd5b919091811561341057620186a09260209084612fe8835486612462565b049461301e612ffa60115497876124c6565b600d546001600160a01b0398919060ff90613016908b1661344b565b169187613602565b80156133c15761302e9085613685565b613039835486612462565b04946130436134b9565b958361304f82886124c6565b91604096875161305e8161232e565b6000808252970187905289516001600160801b039490851661335257996130dc908b906130d79087908161309881865b1682845116613828565b168152816130ae818a8401961682875116613828565b169384905251601480546001600160801b0319166001600160801b039390921692909216179055565b613cfc565b6016548015908115613343575b50156133055784899116808852601784528888206131088c82546124c6565b90558851908382528b858301527f3a5151e57d3bc9798e7853034ac52293d1a0e12a2b44725e75b03b21f86477a68a888a1693a4806132e4575b50808360095416976064600e5489519a8b938492638eb22cdd60e01b8452600484015260248301528960448301525afa9687156132da5785976132ab575b506131896134df565b818101916103e884845116106132775750906131d98392836131b3613200968c168284511661373c565b1690819052602580546001600160801b0319166001600160801b03909216919091179055565b51602580546001600160801b03169290911660801b6001600160801b031916919091179055565b6009541690600e5490823b15611012578451630208d92960e11b81523060048201526001600160a01b0391909116602482015260448101919091526064810185905292919081908490608490829084905af191821561326d57505061326457509091565b6126a190612305565b51903d90823e3d90fd5b60649088519062461bcd60e51b82526004820152600e60248201526d14d1d30e881b5a5b881b1a5b5a5d60921b6044820152fd5b9080975081813d83116132d3575b6132c3818361239b565b8101031261100e57519538613180565b503d6132b9565b86513d87823e3d90fd5b83600a54168652600182526132fd8787209182546124c6565b905538613142565b875162461bcd60e51b815260048101849052601760248201527614d1d30e88189bdc9c9bddc818d85c081c995858da1959604a1b6044820152606490fd5b905084601454161115386130e9565b998a859b858301878151166133679083612462565b888551166133749161248b565b9d8e8186511661338391612462565b91511661338f9161248b565b106133aa575b6130d7866130dc93818f94816130989161308e565b85806133b781949e612e8f565b9d93505050613395565b60405162461bcd60e51b815260048101859052602160248201527f42696742616e673a20616c6c6f77616e63655368617265206e6f742076616c696044820152601960fa1b6064820152608490fd5b505050600090600090565b3d15613446573d9061342c826123bc565b9161343a604051938461239b565b82523d6000602084013e565b606090565b60008091604051602081019063313ce56760e01b82526004815261346e8161232e565b51916001600160a01b03165afa61348361341b565b90806134ae575b156134a8576020818051810103126109525760206129059101612cfd565b50601290565b50602081511461348a565b604051906134c68261232e565b6014546001600160801b038116835260801c6020830152565b604051906134ec8261232e565b6025546001600160801b038116835260801c6020830152565b919060018060a01b038060009416845260206017815260408520549081156135f85760188152604086205480156135f1578161353f6134b9565b9460095416916064600c54604051948593849263442c159960e01b8452600484015260248301528b60448301525afa9687156129405780976135bb575b505061267f61359b6128f76135b6969798620186a06022540490612462565b956135b160018060801b03948587511690612462565b612462565b111590565b9096508187813d83116135ea575b6135d3818361239b565b8101031261037a575094519461267f61359b61357c565b503d6135c9565b5050505050565b5060019450505050565b61257a9061362285612905969561361c61252f968561287a565b90613642565b6001600160a01b0390911660009081526018602052604090205490612462565b918215801561367d575b6125fd57600181018091116124755761366b9261256b612900926124ab565b6005810180911161247557600a900490565b50811561364c565b6001600160a01b0316338103613699575050565b600081815260209060038252604091828220338352815284838320541061370257838252600381528282203383528152828220546001016136db575050505050565b6136f6938252600381528282209033835252209182546124b9565b905538808080806135f1565b60649083519062461bcd60e51b82526004820152601460248201527313585c9ad95d0e881b9bdd08185c1c1c9bdd995960621b6044820152fd5b6001600160801b03918216908216039190821161247557565b919091600060206040516137688161232e565b82815201526020810180516001600160801b039081166137ac576137a581865b81613798818a168289511661373c565b168652168284511661373c565b1690529190565b6137c66137bc8285511687612462565b828451169061248b565b94806137e26137d88486511689612462565b848751169061248b565b106137f2575b816137a591613788565b94816138006137a592612e8f565b969150506137e8565b6040519061381682612349565b60006040838281528260208201520152565b6001600160801b03918216908216019190821161247557565b613849613809565b506000602060405161385a8161232e565b82815201526000602060405161386f8161232e565b82815201526040519061388182612349565b602454916001600160401b038316815260208101926001600160401b038160401c16845260801c604082015280926138b76134b9565b926138c06134df565b92600060018060a01b0360095416600e549460018060801b038751166040519063442c159960e01b8252876004830152602482015260006044820152602081606481865afa80156129f757600090613cc8575b895161392992506001600160801b0316906124c6565b80613c93575060005b6139476001600160401b0382935116426124b9565b948515613c69575050426001600160401b031660208a8101919091528801516001600160801b031615613c1f57506020670de0b6b3a76400006139a4856135b18c6001600160401b038d60018060801b0390511691511690612462565b895191900496906001600160801b03906139c390828a16908316613828565b168952875160405163442c159960e01b815260048101929092526001600160801b031660248201526000604482015291829060649082905afa80156129f757600090613beb575b8751613a2092506001600160801b0316906124c6565b92613a4e84612900620186a0613a38601a548a612462565b60208c01516001600160801b0316919004612462565b6040890180519195916001600160801b038088169291613a719084908316613828565b16905260208801805190916001600160801b0391613a9191908316613828565b16905280613bb6575060005b602a5490938482811015613b3157613ab590836124b9565b90670de0b6b3a7640000820291808304670de0b6b3a7640000149015171561247557612900613b09613b03613af56001600160401b0396613b139661248b565b936135b1602e549580612462565b836124c6565b91848d5116612462565b168089526001600160401b03602d5416809110613b2d5750565b8852565b909150602b54808211613b4357505050565b613b4c916124b9565b670de0b6b3a7640000810290808204670de0b6b3a76400001490151715612475576001600160401b0391612900613b8f613b03613af5613b9895602c549061248b565b848d5116612462565b81602d5460401c16808211613bae575b50168852565b905038613ba8565b87516001600160801b0316670de0b6b3a764000081810292918084049091149015171561247557613be69161248b565b613a9d565b506020813d602011613c17575b81613c056020938361239b565b8101031261095257613a209051613a0a565b3d9150613bf8565b9697939450509350506001600160401b038151166001600160401b03602f5416809103613c5d575b509392613c526134df565b926000926000929190565b81526001925038613c47565b975098505050505092505091613c7d6134b9565b91613c866134df565b9160009160009190600090565b88516001600160801b0316670de0b6b3a764000081810292918084049091149015171561247557613cc39161248b565b613932565b506020813d602011613cf4575b81613ce26020938361239b565b81010312610952576139299051613913565b3d9150613cd5565b601480546001600160801b031660809290921b6001600160801b031916919091179055565b613e05602080613ddb613d32613841565b9396959390929015613e07575050506001600160401b03602f54166000807f33af5ce86e8438eff54589f85332916444457dfa8685493fbd579b809097026b88604051838152a45b805185820151604092830151921b67ffffffffffffffff60401b166001600160401b03919091161760809190911b6001600160801b0319908116919091176024558151601480549092166001600160801b0391821617909155948591610779565b8051910151821660801b6001600160801b0319166001600160801b03929091169190911617602555565b565b7f33af5ce86e8438eff54589f85332916444457dfa8685493fbd579b809097026b886001600160401b0386511694604051908152a4613d7a565b60405190613e4e8261232e565b60038252623f3f3f60e81b6020830152565b908151811015613e71570160200190565b634e487b7160e01b600052603260045260246000fd5b60ff1660ff81146124755760010190565b805160408110613f1057508051810190602081818401930312610952576020810151906001600160401b038211610952570181603f82011215610952576020810151613ee3816123bc565b92613ef1604051948561239b565b818452604082840101116109525761290591604060208501910161212d565b602092908303613ffe576000805b60ff81168581109081613fdf575b5015613f4057613f3b90613e87565b613f1e565b9260ff80941692613f50846123bc565b93613f5e604051958661239b565b808552613f6d601f19916123bc565b013687860137825b85811687811080613fc2575b15613fb757613fb29190613fac6001600160f81b0319613fa18388613e60565b5116871a9188613e60565b53613e87565b613f75565b505094505050905090565b506001600160f81b0319613fd68286613e60565b51161515613f81565b6001600160f81b03199150613ff49086613e60565b5116151538613f2c565b915050612905613e4156feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa26469706673582212205a0ea79bfcad6d87bd83d70b1333f631d7d9132008417c59c641375ff004f2d564736f6c63430008120033", - "deployedBytecode": "0x608060408181526004918236101561001657600080fd5b60009260e08435811c928362a02a20146120bb5750826302ce728f1461209257826306fdde0314611fda578263078dfbe714611ed5578263095ea7b314611eaa5782630996efb714611a2e5782630c4e84f01461191757826318160ddd146118f45782631c9e379b146118bb5782631da8bf101461180157826323b872dd14611679578263313ce56714611642578263331960ff1461162257826334d441d0146116025782633644e515146115e457826337b6b7b9146115c457826338d52e0f1461159a5782633ba0b9a91461157a5782633f741adb1461155157826340626d8b1461153157826344de240a14611511578263473e3ce7146114f157826348e4163e146114b85782634d7f2a34146114985782634e71e0c8146113e35782635224372c1461132c578263529898f21461130c57826352f353eb146112e357826355140232146112ba57826355c2ab941461129057826357935462146112705782635dfe04e81461120f5782636c3d8b8f146111e557826370a08231146111ac578263727785471461117457826374645ff3146111475782637dc0d1d01461111d5782637ecebe00146110e65782637fa0b84e146110b4578263821226e8146110945782638285ef40146110605782638c5d0ed3146110405782638da5cb5b14611016578263910dd7c814610d95578263959916dc14610d7657826395d89b4114610cbd57826399a9702814610c8c5782639c5d719214610c6c5782639e15e89f14610c30578263a9059cbb14610b54578263b0e21e8a14610b34578263b27c0e7414610af8578263bb4cfe3b14610ad8578263cd0211eb1461066b578263ce8849ed14610641578263d505accf146104ba5750508063d8dfeb4514610492578063dd62ed3e14610445578063de4065771461041d578063e0996cb6146103ff578063e30c3978146103d7578063ea64dd56146103b9578063eec0f42e1461039b578063f42760b71461037d578063f8ba4cff1461035e578063f9557ccb146103285763ffe04c661461030757600080fd5b34610324578160031936011261032457602090602a549051908152f35b5080fd5b503461032457816003193601126103245760255490516001600160801b038216815260809190911c6020820152604090f35b0390f35b823461037a578060031936011261037a57610377613d21565b80f35b80fd5b5034610324578160031936011261032457602090602b549051908152f35b5034610324578160031936011261032457602090600c549051908152f35b5034610324578160031936011261032457602090601f549051908152f35b503461032457816003193601126103245760065490516001600160a01b039091168152602090f35b5034610324578160031936011261032457602090601d549051908152f35b503461032457816003193601126103245760095490516001600160a01b039091168152602090f35b5034610324578060031936011261032457602091610461612101565b8261046a612117565b6001600160a01b03928316845260028652922091166000908152908352819020549051908152f35b5034610324578160031936011261032457600b5490516001600160a01b039091168152602090f35b8492503461063d576104cb36612193565b9183949895979342116105fa579161059d916105a5938c8b8b60018060a01b0398898d169a8b93846000528d602052856000209081549161050b83612e8f565b90558c87519560208701977f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e266895260008a890152606088015216608086015260a085015260c084015281830152815261056381612364565b51902061056e612b35565b915190602082019261190160f01b8452602283015260428201526042815261059581612380565b519020612e0a565b919091612d0b565b16036105b75750610377939450612eec565b606490602087519162461bcd60e51b8352820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152fd5b8a5162461bcd60e51b8152602081880152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b8280fd5b5050503461032457816003193601126103245760085490516001600160a01b039091168152602090f35b5083833461032457608036600319011261032457610687612101565b61068f612117565b90610698612184565b936064359160018252602095600787526106b860ff878520541615612f43565b6001600160a01b0385811695909390610715906106d730891415612f80565b6106df6126c6565b50506106e9613d21565b6106fa876106f56134b9565b613755565b905060115460ff61070e89600d541661344b565b1692613602565b8015610a95576107259084613685565b8581526017885286812054808611610a8d575b508415610a5257879861078198610751876106f56134b9565b8151601480546001600160801b0319166001600160801b03928316179055909b909290918391905b015116613cfc565b87835260178b528883206107968882546124b9565b90558560095416600e54928a5193638eb22cdd60e01b855280828601528c6024860152600160448601528d85606481865afa94851561095e578c918f918897610a1c575b506025548616948915610968575060448b60095416935180948193627eeac760e11b8352308884015260248301525afa801561095e5783908790610928575b61082392506124b9565b84116108f55750927fc8e512d8f188ca059984b5853d2bf653da902696b8512785b182b2c813789a6e95928c95926108638d9b9a99965b82841690613828565b1660018060801b0319602554161760255584841690818352602687528b83206027549081855288528c84205482116000146108d057505081526026855289812060275482528552808a8120555b50156108cb575080600954165b87519485521692a451908152f35b6108bd565b90918352602687528b832090835286526108ee8b83209182546124b9565b90556108b0565b8a5162461bcd60e51b81529081018d9052600d60248201526c0a68e987440e8dede40daeac6d609b1b6044820152606490fd5b50508d81813d8311610957575b61093f818361239b565b8101031261095257826108239151610819565b600080fd5b503d610935565b8c513d88823e3d90fd5b9250929050813b15610a18578c51630208d92960e11b81526001600160a01b038a169181019182523060208301526040820193909352606081018690528691839182908490829060800103925af18015610a0e57928c9a999895927fc8e512d8f188ca059984b5853d2bf653da902696b8512785b182b2c813789a6e9895928f98956109f9575b506108639061085a565b93610a076108639295612305565b93906109ef565b8b513d87823e3d90fd5b8680fd5b9250955081813d8311610a4b575b610a34818361239b565b81010312610a47578d8c915195386107da565b8580fd5b503d610a2a565b865162461bcd60e51b8152808a01899052601560248201527453474c3a206e6f7468696e6720746f20726570617960581b6044820152606490fd5b945089610738565b875162461bcd60e51b8152808b018a9052601d60248201527f53474c3a20616c6c6f77616e63655368617265206e6f742076616c69640000006044820152606490fd5b50505034610324578160031936011261032457602090601e549051908152f35b50505034610324578160031936011261032457606090602454908051916001600160401b03808216845281831c16602084015260801c90820152f35b50505034610324578160031936011261032457602090601a549051908152f35b50505034610324578060031936011261032457602091610b72612101565b82602435928315801590610c1e575b610bb1575b50519182526001600160a01b031690339060008051602061400a833981519152908590a35160018152f35b3381526001865281812054610bc885821015612c5f565b6001600160a01b038416908533839003610be5575b505050610b86565b610bf991610bf4841515612ca4565b6124b9565b3383526001885283832055815220610c128382546124c6565b90558238808085610bdd565b50336001600160a01b03841614610b81565b50505034610324578060031936011261032457606090610c5a610c51612101565b60243590612605565b91929081519384526020840152820152f35b50505034610324578160031936011261032457602090602c549051908152f35b50505034610324578060031936011261032457602090610cb6610cad612101565b60243590612a03565b9051908152f35b5090503461063d578260031936011261063d5791808061035a9460018060a01b03600b541690855160208101916395d89b4160e01b83528152610cff8161232e565b51915afa610d0b61341b565b915015610d6757610d1b90613e98565b905b610d5560238251809462746d2d60e81b6020830152610d45815180926020868601910161212d565b810103600381018552018361239b565b51918291602083526020830190612150565b50610d70613e41565b90610d1d565b5050503461032457816003193601126103245760209081549051908152f35b849184346110125780600319360112611012578135926001600160401b03841161100e573660238501121561100e578383013592610dd2846123bc565b94610ddf8451968761239b565b8486528660209182880196366024828401011161063d578060248593018937880101526024359361ffff851680950361100a5761010095868880518101031261100657610e2b906126b9565b93610e37828901612ce9565b90610e4460608a01612ce9565b9860808101519860a082015192610e5d60c08401612cfd565b91818401519301519360018060a01b03808097169d169a814211610fc357928d8f819897948f948f8f968f918f959a8f8c8195610f399f9c61059d9f50600014610f9c577f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e2669a5b825289522093845494610ed686612e8f565b905580519788019889528701528d6060870152608086015260a085015260c0840152818301528152610f0781612364565b519020610f12612b35565b908951908b82019261190160f01b8452602283015260428201526042815261059581612380565b1603610f5b57505050600014610f525761037792612eec565b61037792612e9e565b5162461bcd60e51b815291820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e61747572650000604482015260649150fd5b7f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d69a610ec4565b875162461bcd60e51b8152808b018a9052601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b8880fd5b8780fd5b8480fd5b8380fd5b5050503461032457816003193601126103245760055490516001600160a01b039091168152602090f35b50505034610324578160031936011261032457602090601b549051908152f35b5050503461032457816003193601126103245760145490516001600160801b038216815260809190911c6020820152604090f35b50505034610324578160031936011261032457602090602e549051908152f35b505050346103245780600319360112610324576020906110df6110d5612101565b6024359033612e9e565b5160018152f35b5090503461063d57602036600319011261063d5760209282916001600160a01b0361110f612101565b168252845220549051908152f35b50505034610324578160031936011261032457600f5490516001600160a01b039091168152602090f35b50505034610324578160031936011261032457805161035a91610d558261116d81612280565b038361239b565b5090503461063d57602036600319011261063d573591600983101561037a575060ff6111a1602093612217565b541690519015158152f35b505050346103245760203660031901126103245760209181906001600160a01b036111d5612101565b1681526001845220549051908152f35b50505034610324578160031936011261032457600a5490516001600160a01b039091168152602090f35b5050503461032457816003193601126103245760809061122d613809565b50611236613841565b50949593505050508051926001600160401b03808251168552602082015116602085015281600180871b0391015116908301526060820152f35b50505034610324578160031936011261032457602090601c549051908152f35b50505034610324578160031936011261032457602d548151911c6001600160401b03168152602090f35b505050346103245781600319360112610324576020906001600160401b03602d54169051908152f35b505050346103245781600319360112610324576020906001600160401b03602f54169051908152f35b505050346103245781600319360112610324576020906021549051908152f35b5090503461063d5761139a9061138e60ff849561136161134b366121e2565b9491989093808052600760205220541615612f43565b6113696126c6565b5050611373613d21565b6113886001600160a01b038216301415612f80565b85612fcb565b92909360115490613505565b156113ac575082519182526020820152f35b606490602085519162461bcd60e51b8352820152601160248201527013585c9ad95d0e881a5b9cdbdb1d995b9d607a1b6044820152fd5b8482853461063d578260031936011261063d576006546001600160a01b03929091838316919033839003611455575050806005549384167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08680a36001600160a01b0319928316176005551660065580f35b906020606492519162461bcd60e51b8352820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b505050346103245781600319360112610324576020906029549051908152f35b505050346103245760203660031901126103245760209181906001600160a01b036114e1612101565b1681526017845220549051908152f35b505050346103245781600319360112610324576020906015549051908152f35b50505034610324578160031936011261032457602090600e549051908152f35b505050346103245781600319360112610324576020906016549051908152f35b5082843461037a57606036600319011261037a5750610cb66020926044359060243590356124ec565b505050346103245781600319360112610324576020906011549051908152f35b50505034610324578160031936011261032457600d5490516001600160a01b039091168152602090f35b505050346103245781600319360112610324576020906012549051908152f35b50505034610324578160031936011261032457602090610cb6612b35565b505050346103245781600319360112610324576020906019549051908152f35b505050346103245781600319360112610324576020906013549051908152f35b50505034610324578160031936011261032457600d546020919060ff90611671906001600160a01b031661344b565b915191168152f35b5082843461037a5761168a366121e2565b9192826116c4575b508351918252602094506001600160a01b0390811692169060008051602061400a833981519152908590a35160018152f35b6001600160a01b0384811680835260016020908152878420549198929091906116ef87831015612c5f565b851692838a03611703575b50505050611692565b89855260028352888520338652835288852054906001820161176d575b5050928260209960018a9461174c8a8e99610bf460008051602061400a8339815191529c9a1515612ca4565b92855252838320558152206117628582546124c6565b9055918780806116fa565b8782106117c357509260209960018a9461174c8a8e999661179e8260008051602061400a8339815191529d9b6124b9565b86895260028552898920338a5285528989205596995050509450509981949650611720565b895162461bcd60e51b8152908101849052601860248201527745524332303a20616c6c6f77616e636520746f6f206c6f7760401b6044820152606490fd5b8492503461063d5761181236612193565b9397949690928042116105fa579386936118a9938c8c8961059d968e9a8e60018060a01b03809c169c8d948587526020528c8787209283549361185485612e8f565b905588519660208801987f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d68a528a890152606088015216608086015260a085015260c084015281830152815261056381612364565b16036105b75750610377939450612e9e565b505050346103245760203660031901126103245760209181906001600160a01b036118e4612101565b1681526018845220549051908152f35b5050503461032457816003193601126103245760209060255460801c9051908152f35b5090503461063d578160031936011261063d5780359060098210156110125761193e612175565b6008549093906001600160a01b031633036119f45760ff61195e84612217565b541615159315159384146119bc575050808260ff61197e6119ac94612217565b54161515827feeec81de25875ce1725479bb76f720a8defdb43dea041919ae37bb4aae9847c08780a4612217565b9060ff8019835416911617905580f35b906020606492519162461bcd60e51b835282015260126024820152714d61726b65743a2073616d6520737461746560701b6044820152fd5b906020606492519162461bcd60e51b8352820152601460248201527313585c9ad95d0e881d5b985d5d1a1bdc9a5e995960621b6044820152fd5b5090503461063d5761018036600319011261063d5760246001600160a01b03813581811690819003610a4757604435916001600160401b039081841161100a573660238501121561100a578386013591821161100a573685838601011161100a576064359181831680930361100657611aac826005541633146123d7565b863594620186a094611ac086881115612422565b602096808c7fc353b09af857951dccce61b43a5854fc45beceed36c50e5d4cc2e71858a8e0df8a549180a3875580611e6c575b508682611d31575b50505081611cf1575b505060843580611cdc575b5060a43580611cc7575b5060c43580611cb3575b5060e43580611c92575b506101043580611c71575b506101243580611c40575b50610144359081611bd2575b5050610164359384611b5f578580f35b601e548510611b785750505050601f5538808080808580f35b5162461bcd60e51b8152928301526032908201527f4d61726b65743a206c69717569646174696f6e436f6c6c61746572616c697a616044820152711d1a5bdb94985d19481d1bdbc81cdb585b1b60721b6064820152608490fd5b611bde90821115612422565b601f548111611bf157601e553880611b4f565b5090602591608494519362461bcd60e51b85528401528201527f4d61726b65743a20636f6c6c61746572616c697a6174696f6e5261746520746f6044820152646f2062696760d81b6064820152fd5b806016547fae6e0ab3b95f0a53ff9660a390ccedcbbf1f2355dce974a9841af106fddcfaba8980a360165538611b43565b611c7c828210612422565b611c89601b548211612422565b601c5538611b38565b611c9d828210612422565b611caa601c548210612422565b601b5538611b2d565b611cbe828210612422565b601d5538611b23565b611cd382821115612422565b601a5538611b19565b611ce882821115612422565b60195538611b0f565b816008549182167f5a62d22209e370e38eea92cfddcd228e656e6ec139243392a760a7769f5877fd8a80a36001600160a01b031916176008553880611b04565b8291611d3e601054612246565b601f8111611e1b575b508b90601f8411600114611dac578c93611d9f575b5050508160011b916000199060031b1c1916176010555b7fa6f004921c944d4b8bf6e38462b00f36a58d62495d56b51f571ab78f732c98158880a1388086611afb565b0101359050863880611d5c565b60108d52888d20601f198516955092509089908d5b8a878210611e005750508460019610611de4575b50505050811b01601055611d73565b60001960f88660031b161c199201013516905538808881611dd5565b8483019093013585556001909401938b929182019101611dc1565b9150915060108b52868b20601f840160051c8101888510611e65575b91849391601f8b94920160051c01905b818110611e545750611d47565b8d81558594508a9350600101611e47565b5080611e37565b600f80546001600160a01b0319169190911790557f0b2d6eb667d0522c3eb86e4288afecae6c11591ffd1345d4d12407e0598bca9b8a80a138611af3565b505050346103245780600319360112610324576020906110df611ecb612101565b6024359033612eec565b8482853461063d57606036600319011261063d57611ef1612101565b91611efa612175565b91611f03612184565b9260018060a01b03948591611f1d836005541633146123d7565b15611fc1571692831590811591611fb9575b5015611f7e575050806005549283167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08580a36001600160a01b03199182161760055560068054909116905580f35b906020606492519162461bcd60e51b835282015260156024820152744f776e61626c653a207a65726f206164647265737360581b6044820152fd5b905086611f2f565b93505050501660018060a01b0319600654161760065580f35b5090503461063d578260031936011261063d5791808061035a9460018060a01b03600b541690855160208101916306fdde0360e01b8352815261201c8161232e565b51915afa61202861341b565b9150156120835761203890613e98565b905b610d5560348251809473546170696f63612053696e67756c61726974792d60601b6020830152612073815180926020868601910161212d565b810103601481018552018361239b565b5061208c613e41565b9061203a565b83853461037a578060031936011261037a57506120ad6126c6565b825191151582526020820152f35b8590853461063d578060031936011261063d576020926120d9612101565b6120e1612117565b6001600160a01b0391821683526003865283832091168252845220548152f35b600435906001600160a01b038216820361095257565b602435906001600160a01b038216820361095257565b60005b8381106121405750506000910152565b8181015183820152602001612130565b906020916121698151809281855285808601910161212d565b601f01601f1916010190565b60243590811515820361095257565b60443590811515820361095257565b60e0906003190112610952576001600160a01b03906004358281168103610952579160243590811681036109525790604435906064359060843560ff81168103610952579060a4359060c43590565b6060906003190112610952576001600160a01b0390600435828116810361095257916024359081168103610952579060443590565b6009811015612230576000526007602052604060002090565b634e487b7160e01b600052602160045260246000fd5b90600182811c92168015612276575b602083101461226057565b634e487b7160e01b600052602260045260246000fd5b91607f1691612255565b6010546000929161229082612246565b9081815260019283811690816000146122ea57506001146122b057505050565b9092935060106000526020928360002092846000945b8386106122d65750505050010190565b8054858701830152940193859082016122c6565b91935050602093945060ff191683830152151560051b010190565b6001600160401b03811161231857604052565b634e487b7160e01b600052604160045260246000fd5b604081019081106001600160401b0382111761231857604052565b606081019081106001600160401b0382111761231857604052565b61010081019081106001600160401b0382111761231857604052565b608081019081106001600160401b0382111761231857604052565b90601f801991011681019081106001600160401b0382111761231857604052565b6001600160401b03811161231857601f01601f191660200190565b156123de57565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b1561242957565b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881b9bdd081d985b1a59607a1b6044820152606490fd5b8181029291811591840414171561247557565b634e487b7160e01b600052601160045260246000fd5b8115612495570490565b634e487b7160e01b600052601260045260246000fd5b604d811161247557600a0a90565b9190820391821161247557565b9190820180921161247557565b8181039291600013801582851316918412161761247557565b601454919291612535916125269161251c91612512906001600160801b03831690612462565b9060801c9061248b565b93601f5490612462565b61252f836124ab565b9061248b565b8083106125fd5761254961258591846124b9565b9161258061257a612571601e5461256b612562866124ab565b602154906124c6565b90612462565b61252f846124ab565b916124ab565b6124d3565b6509184e72a0009081810291818305149015171561247557670de0b6b3a76400009182810292818405149015171561247557801561249557600160ff1b9180831460001983141661247557059060008212156125f657811461247557600003905b8082116125f1575090565b905090565b50906125e6565b505050600090565b6001600160a01b0381166000818152601760205260408120549194939290919081156126ad57916040916126896126a1959483602086516126458161232e565b828152015261266386612656613841565b505050505093905061287a565b815190936001600160801b039160209161267f91841690612462565b920151169061248b565b8181106126a557035b9581526018602052205461294c565b9091565b505080612692565b50509192505080918190565b5190811515820361095257565b600f546040805163d6d7d52560e01b8152602060048201529290916001600160a01b03168284806126f960248201612280565b0381600080955af1801561282257819482916127e6575b5092841561278957831561274f57507f9f9192b5edb17356c524e08d9e025c8e2f6307e6ea52fb7968faa3081f51c3c883918260115580a25b42601355565b5162461bcd60e51b81526020600482015260146024820152734d61726b65743a20696e76616c6964207261746560601b6044820152606490fd5b9192505061279c601354601254906124c6565b42116127ac575060115490612749565b5162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881c985d19481d1bdbc81bdb1960621b6044820152606490fd5b809550848092503d831161281b575b6127ff818361239b565b8101031261037a576020612812856126b9565b94015138612710565b503d6127f5565b508251903d90823e3d90fd5b1561283557565b60405162461bcd60e51b815260206004820152601e60248201527f4d61726b65743a2065786368616e676552617465206e6f742076616c696400006044820152606490fd5b61288582151561282e565b60018060a01b036020816009541691600c5490600094168452601882526064604085205491604051948593849263442c159960e01b8452600484015260248301528660448301525afa918215612940578092612908575b5050906129006128f761290593620186a06022540490612462565b601e5490612462565b61248b565b90565b9091506020823d8211612938575b816129236020938361239b565b8101031261037a5750516129006128f76128dc565b3d9150612916565b604051903d90823e3d90fd5b61295782151561282e565b602060018060a01b0360095416916064600c54604051948593849263442c159960e01b845260048401526024830152600060448301525afa9081156129f7576000916129c4575b50906129006129b09260225490612462565b620186a06129c0601e5483612462565b0491565b906020823d82116129ef575b816129dd6020938361239b565b8101031261037a57505161290061299e565b3d91506129d0565b6040513d6000823e3d90fd5b6001600160a01b03166000818152601860205260408120549092612a269161294c565b918352601760205260408320548015612b2f578115612b2f57818110612b2f5782811015612b2557601454612a6f918391610bf491612512906001600160801b03831690612462565b90620186a09283830292808404851490151715612b1157612a94929161252f916124b9565b91601b5491601c5493612aa785856124d3565b80820291848212600160ff1b821416612b11578183051490151715612afd5705818482019485129112908015821691151617612ae957508082126125f1575090565b634e487b7160e01b81526011600452602490fd5b634e487b7160e01b83526011600452602483fd5b634e487b7160e01b85526011600452602485fd5b50505050601b5490565b50505090565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03161480612c36575b15612b90577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f000000000000000000000000000000000000000000000000000000000000000082527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a0815260c081018181106001600160401b038211176123185760405251902090565b507f00000000000000000000000000000000000000000000000000000000000000004614612b67565b15612c6657565b60405162461bcd60e51b815260206004820152601660248201527545524332303a2062616c616e636520746f6f206c6f7760501b6044820152606490fd5b15612cab57565b60405162461bcd60e51b815260206004820152601660248201527545524332303a206e6f207a65726f206164647265737360501b6044820152606490fd5b51906001600160a01b038216820361095257565b519060ff8216820361095257565b60058110156122305780612d1c5750565b60018103612d645760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b6044820152606490fd5b60028103612db15760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606490fd5b600314612dba57565b60405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608490fd5b9291906fa2a8918ca85bafe22016d0b997e4df60600160ff1b038311612e835791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa15612e765781516001600160a01b03811615612e70579190565b50600190565b50604051903d90823e3d90fd5b50505050600090600390565b60001981146124755760010190565b7fe50de2333c10a9502fcb1d8ae13a51bbf423153dfc63c2b8997665b32154afc360018060a01b038092169160009083825260036020526040822094169384825260205284604082205580a4565b909160207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259160018060a01b03809416938460005260028352604060002095169485600052825280604060002055604051908152a3565b15612f4a57565b60405162461bcd60e51b815260206004820152600e60248201526d13585c9ad95d0e881c185d5cd95960921b6044820152606490fd5b15612f8757565b606460405162461bcd60e51b815260206004820152602060248201527f4d61726b65743a2063616e6e6f742065786563757465206f6e20697473656c666044820152fd5b919091811561341057620186a09260209084612fe8835486612462565b049461301e612ffa60115497876124c6565b600d546001600160a01b0398919060ff90613016908b1661344b565b169187613602565b80156133c15761302e9085613685565b613039835486612462565b04946130436134b9565b958361304f82886124c6565b91604096875161305e8161232e565b6000808252970187905289516001600160801b039490851661335257996130dc908b906130d79087908161309881865b1682845116613828565b168152816130ae818a8401961682875116613828565b169384905251601480546001600160801b0319166001600160801b039390921692909216179055565b613cfc565b6016548015908115613343575b50156133055784899116808852601784528888206131088c82546124c6565b90558851908382528b858301527f3a5151e57d3bc9798e7853034ac52293d1a0e12a2b44725e75b03b21f86477a68a888a1693a4806132e4575b50808360095416976064600e5489519a8b938492638eb22cdd60e01b8452600484015260248301528960448301525afa9687156132da5785976132ab575b506131896134df565b818101916103e884845116106132775750906131d98392836131b3613200968c168284511661373c565b1690819052602580546001600160801b0319166001600160801b03909216919091179055565b51602580546001600160801b03169290911660801b6001600160801b031916919091179055565b6009541690600e5490823b15611012578451630208d92960e11b81523060048201526001600160a01b0391909116602482015260448101919091526064810185905292919081908490608490829084905af191821561326d57505061326457509091565b6126a190612305565b51903d90823e3d90fd5b60649088519062461bcd60e51b82526004820152600e60248201526d14d1d30e881b5a5b881b1a5b5a5d60921b6044820152fd5b9080975081813d83116132d3575b6132c3818361239b565b8101031261100e57519538613180565b503d6132b9565b86513d87823e3d90fd5b83600a54168652600182526132fd8787209182546124c6565b905538613142565b875162461bcd60e51b815260048101849052601760248201527614d1d30e88189bdc9c9bddc818d85c081c995858da1959604a1b6044820152606490fd5b905084601454161115386130e9565b998a859b858301878151166133679083612462565b888551166133749161248b565b9d8e8186511661338391612462565b91511661338f9161248b565b106133aa575b6130d7866130dc93818f94816130989161308e565b85806133b781949e612e8f565b9d93505050613395565b60405162461bcd60e51b815260048101859052602160248201527f42696742616e673a20616c6c6f77616e63655368617265206e6f742076616c696044820152601960fa1b6064820152608490fd5b505050600090600090565b3d15613446573d9061342c826123bc565b9161343a604051938461239b565b82523d6000602084013e565b606090565b60008091604051602081019063313ce56760e01b82526004815261346e8161232e565b51916001600160a01b03165afa61348361341b565b90806134ae575b156134a8576020818051810103126109525760206129059101612cfd565b50601290565b50602081511461348a565b604051906134c68261232e565b6014546001600160801b038116835260801c6020830152565b604051906134ec8261232e565b6025546001600160801b038116835260801c6020830152565b919060018060a01b038060009416845260206017815260408520549081156135f85760188152604086205480156135f1578161353f6134b9565b9460095416916064600c54604051948593849263442c159960e01b8452600484015260248301528b60448301525afa9687156129405780976135bb575b505061267f61359b6128f76135b6969798620186a06022540490612462565b956135b160018060801b03948587511690612462565b612462565b111590565b9096508187813d83116135ea575b6135d3818361239b565b8101031261037a575094519461267f61359b61357c565b503d6135c9565b5050505050565b5060019450505050565b61257a9061362285612905969561361c61252f968561287a565b90613642565b6001600160a01b0390911660009081526018602052604090205490612462565b918215801561367d575b6125fd57600181018091116124755761366b9261256b612900926124ab565b6005810180911161247557600a900490565b50811561364c565b6001600160a01b0316338103613699575050565b600081815260209060038252604091828220338352815284838320541061370257838252600381528282203383528152828220546001016136db575050505050565b6136f6938252600381528282209033835252209182546124b9565b905538808080806135f1565b60649083519062461bcd60e51b82526004820152601460248201527313585c9ad95d0e881b9bdd08185c1c1c9bdd995960621b6044820152fd5b6001600160801b03918216908216039190821161247557565b919091600060206040516137688161232e565b82815201526020810180516001600160801b039081166137ac576137a581865b81613798818a168289511661373c565b168652168284511661373c565b1690529190565b6137c66137bc8285511687612462565b828451169061248b565b94806137e26137d88486511689612462565b848751169061248b565b106137f2575b816137a591613788565b94816138006137a592612e8f565b969150506137e8565b6040519061381682612349565b60006040838281528260208201520152565b6001600160801b03918216908216019190821161247557565b613849613809565b506000602060405161385a8161232e565b82815201526000602060405161386f8161232e565b82815201526040519061388182612349565b602454916001600160401b038316815260208101926001600160401b038160401c16845260801c604082015280926138b76134b9565b926138c06134df565b92600060018060a01b0360095416600e549460018060801b038751166040519063442c159960e01b8252876004830152602482015260006044820152602081606481865afa80156129f757600090613cc8575b895161392992506001600160801b0316906124c6565b80613c93575060005b6139476001600160401b0382935116426124b9565b948515613c69575050426001600160401b031660208a8101919091528801516001600160801b031615613c1f57506020670de0b6b3a76400006139a4856135b18c6001600160401b038d60018060801b0390511691511690612462565b895191900496906001600160801b03906139c390828a16908316613828565b168952875160405163442c159960e01b815260048101929092526001600160801b031660248201526000604482015291829060649082905afa80156129f757600090613beb575b8751613a2092506001600160801b0316906124c6565b92613a4e84612900620186a0613a38601a548a612462565b60208c01516001600160801b0316919004612462565b6040890180519195916001600160801b038088169291613a719084908316613828565b16905260208801805190916001600160801b0391613a9191908316613828565b16905280613bb6575060005b602a5490938482811015613b3157613ab590836124b9565b90670de0b6b3a7640000820291808304670de0b6b3a7640000149015171561247557612900613b09613b03613af56001600160401b0396613b139661248b565b936135b1602e549580612462565b836124c6565b91848d5116612462565b168089526001600160401b03602d5416809110613b2d5750565b8852565b909150602b54808211613b4357505050565b613b4c916124b9565b670de0b6b3a7640000810290808204670de0b6b3a76400001490151715612475576001600160401b0391612900613b8f613b03613af5613b9895602c549061248b565b848d5116612462565b81602d5460401c16808211613bae575b50168852565b905038613ba8565b87516001600160801b0316670de0b6b3a764000081810292918084049091149015171561247557613be69161248b565b613a9d565b506020813d602011613c17575b81613c056020938361239b565b8101031261095257613a209051613a0a565b3d9150613bf8565b9697939450509350506001600160401b038151166001600160401b03602f5416809103613c5d575b509392613c526134df565b926000926000929190565b81526001925038613c47565b975098505050505092505091613c7d6134b9565b91613c866134df565b9160009160009190600090565b88516001600160801b0316670de0b6b3a764000081810292918084049091149015171561247557613cc39161248b565b613932565b506020813d602011613cf4575b81613ce26020938361239b565b81010312610952576139299051613913565b3d9150613cd5565b601480546001600160801b031660809290921b6001600160801b031916919091179055565b613e05602080613ddb613d32613841565b9396959390929015613e07575050506001600160401b03602f54166000807f33af5ce86e8438eff54589f85332916444457dfa8685493fbd579b809097026b88604051838152a45b805185820151604092830151921b67ffffffffffffffff60401b166001600160401b03919091161760809190911b6001600160801b0319908116919091176024558151601480549092166001600160801b0391821617909155948591610779565b8051910151821660801b6001600160801b0319166001600160801b03929091169190911617602555565b565b7f33af5ce86e8438eff54589f85332916444457dfa8685493fbd579b809097026b886001600160401b0386511694604051908152a4613d7a565b60405190613e4e8261232e565b60038252623f3f3f60e81b6020830152565b908151811015613e71570160200190565b634e487b7160e01b600052603260045260246000fd5b60ff1660ff81146124755760010190565b805160408110613f1057508051810190602081818401930312610952576020810151906001600160401b038211610952570181603f82011215610952576020810151613ee3816123bc565b92613ef1604051948561239b565b818452604082840101116109525761290591604060208501910161212d565b602092908303613ffe576000805b60ff81168581109081613fdf575b5015613f4057613f3b90613e87565b613f1e565b9260ff80941692613f50846123bc565b93613f5e604051958661239b565b808552613f6d601f19916123bc565b013687860137825b85811687811080613fc2575b15613fb757613fb29190613fac6001600160f81b0319613fa18388613e60565b5116871a9188613e60565b53613e87565b613f75565b505094505050905090565b506001600160f81b0319613fd68286613e60565b51161515613f81565b6001600160f81b03199150613ff49086613e60565b5116151538613f2c565b915050612905613e4156feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa26469706673582212205a0ea79bfcad6d87bd83d70b1333f631d7d9132008417c59c641375ff004f2d564736f6c63430008120033", + "bytecode": "0x6101408060405234620001e5576200001781620001ea565b601381526001602082017f546170696f63612053696e67756c617269747900000000000000000000000000815260206040516200005481620001ea565b8381520192603160f81b845251902091208160e052610100918183524660a0526040519160208301907f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f92838352604085015260608401524660808401523060a084015260a0835260c083019280841060018060401b03851117620001cf5760408490525190206080523060c052610120908152600580546001600160a01b0319163390811790915560007f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a362013880601b5562015f90601c55612710601d55612ee06020557f0bd4060688a1800ae986e4840aebc924bb40b5bf44de4583df2257220b54b77c6026557f7d1dc38e60930664f8cbf495da6556ca091d2f92d6550877750c049864b182306027556161a86028556032602f5561407c928362000207843960805183612b7e015260a05183612c49015260c05183612b48015260e05183612bcd01525182612bf301525181612baa0152f35b634e487b7160e01b600052604160045260246000fd5b600080fd5b604081019081106001600160401b03821117620001cf5760405256fe608060408181526004918236101561001657600080fd5b60009260e08435811c928362a02a20146120cb5750826302ce728f146120a257826306fdde0314611fea578263078dfbe714611ee5578263095ea7b314611eba5782630c4e84f014611da357826318160ddd14611d805782631c9e379b14611d475782631da8bf1014611c8d57826323b872dd14611b05578263313ce56714611ace578263331960ff14611aae57826334d441d014611a8e5782633644e51514611a7057826337b6b7b914611a5057826338d52e0f14611a265782633ba0b9a914611a065782633f741adb146119dd57826340626d8b146119bd57826344de240a1461199d578263473e3ce71461197d57826348e4163e146119445782634d7f2a34146119245782634e71e0c81461186f5782635224372c146117b8578263529898f21461179957826352f353eb14611770578263551402321461174757826355c2ab941461171d57826357935462146116fd5782635dfe04e81461169c5782636c3d8b8f1461167257826370a0823114611639578263727785471461160157826374645ff3146115d45782637dc0d1d0146115aa5782637ecebe00146115735782637fa0b84e14611541578263821226e8146115215782638285ef40146114ed5782638c5d0ed3146114cd5782638da5cb5b146114a3578263910dd7c81461122a578263959916dc1461120a57826395d89b411461115157826399a97028146111205782639c5d7192146111005782639e15e89f146110c4578263a9059cbb14610fe8578263b0e21e8a14610fc8578263b27c0e7414610f8c578263bb4cfe3b14610f6c578263cd0211eb14610b04578263ce8849ed14610ada578263d3fb2a3814610641578263d505accf146104ba5750508063d8dfeb4514610492578063dd62ed3e14610445578063de4065771461041d578063e0996cb6146103ff578063e30c3978146103d7578063ea64dd56146103b9578063eec0f42e1461039b578063f42760b71461037d578063f8ba4cff1461035e578063f9557ccb146103285763ffe04c661461030757600080fd5b346103245781600319360112610324576020906029549051908152f35b5080fd5b503461032457816003193601126103245760245490516001600160801b038216815260809190911c6020820152604090f35b0390f35b823461037a578060031936011261037a57610377613d3e565b80f35b80fd5b5034610324578160031936011261032457602090602a549051908152f35b5034610324578160031936011261032457602090600c549051908152f35b5034610324578160031936011261032457602090601f549051908152f35b503461032457816003193601126103245760065490516001600160a01b039091168152602090f35b5034610324578160031936011261032457602090601d549051908152f35b503461032457816003193601126103245760095490516001600160a01b039091168152602090f35b5034610324578060031936011261032457602091610461612111565b8261046a612127565b6001600160a01b03928316845260028652922091166000908152908352819020549051908152f35b5034610324578160031936011261032457600b5490516001600160a01b039091168152602090f35b8492503461063d576104cb366121a3565b9183949895979342116105fa579161059d916105a5938c8b8b60018060a01b0398898d169a8b93846000528d602052856000209081549161050b83612e9f565b90558c87519560208701977f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e266895260008a890152606088015216608086015260a085015260c084015281830152815261056381612374565b51902061056e612b45565b915190602082019261190160f01b8452602283015260428201526042815261059581612390565b519020612e1a565b919091612d1b565b16036105b75750610377939450612efc565b606490602087519162461bcd60e51b8352820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152fd5b8a5162461bcd60e51b8152602081880152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b8280fd5b5090503461063d5761016036600319011261063d576001600160a01b03813581811690819003610ad6576024916001600160401b038335818111610ad25736602382011215610ad25780860135918211610ad25736858383010111610ad25760443593838516809503610acd576106bd846005541633146123e7565b80610a8f575b508482610911575b505050816108d1575b5050606435806108b9575b50608435806108a1575b5060a4358061088a575b5060c43580610866575b5060e43580610842575b506101043580610811575b5061012435806107a0575b5061014435928361072c578480f35b601e54841061074357505050601f55388080808480f35b608492916020603292519362461bcd60e51b85528401528201527f4d61726b65743a206c69717569646174696f6e436f6c6c61746572616c697a616044820152711d1a5bdb94985d19481d1bdbc81cdb585b1b60721b6064820152fd5b6107af620186a0821115612432565b601f5481116107c157601e553861071d565b506025906020608494519362461bcd60e51b85528401528201527f4d61726b65743a20636f6c6c61746572616c697a6174696f6e5261746520746f6044820152646f2062696760d81b6064820152fd5b806016547fae6e0ab3b95f0a53ff9660a390ccedcbbf1f2355dce974a9841af106fddcfaba8780a360165538610712565b610850620186a08210612432565b61085d601b548211612432565b601c5538610707565b610874620186a08210612432565b610881601c548210612432565b601b55386106fd565b610898620186a08210612432565b601d55386106f3565b6108b0620186a0821115612432565b601a55386106e9565b6108c8620186a0821115612432565b601955386106df565b816008549182167f5a62d22209e370e38eea92cfddcd228e656e6ec139243392a760a7769f5877fd8880a36001600160a01b0319161760085538806106d4565b829161091e601054612256565b601f8111610a1e575b508990601f841160011461098c578a9361097f575b5050508160011b916000199060031b1c1916176010555b7fa6f004921c944d4b8bf6e38462b00f36a58d62495d56b51f571ab78f732c98158680a13880846106cb565b010135905084388061093c565b60108b52601f19841694507f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae67292509087908b60205b8782106109ff57505084600196106109e3575b50505050811b01601055610953565b60001960f88660031b161c1992010135169055388086816109d4565b82850190930135855560019490940193899291820191908101906109c1565b60108b5290925090507f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae672601f840160051c810160208510610a88575b91849391601f8994920160051c01905b818110610a775750610927565b8b8155859450889350600101610a6a565b5080610a5a565b600f80546001600160a01b0319169190911790557f0b2d6eb667d0522c3eb86e4288afecae6c11591ffd1345d4d12407e0598bca9b8880a1386106c3565b600080fd5b8780fd5b8480fd5b5050503461032457816003193601126103245760085490516001600160a01b039091168152602090f35b5083833461032457608036600319011261032457610b20612111565b610b28612127565b90610b31612194565b93606435916001825260209560078752610b5160ff878520541615612f53565b6001600160a01b0385811695909390610bae90610b7030891415612f90565b610b786126d6565b5050610b82613d3e565b610b9387610b8e6134cc565b613768565b905060115460ff610ba789600d541661345e565b1692613615565b8015610f2957610bbe9084613698565b8581526017885286812054808611610f21575b508415610ee6578798610c1a98610bea87610b8e6134cc565b8151601480546001600160801b0319166001600160801b03928316179055909b909290918391905b015116613d19565b87835260178b52888320610c2f8882546124c9565b90558560095416600e54928a5193638eb22cdd60e01b855280828601528c6024860152600160448601528d85606481865afa948515610df2578c918f918897610eb0575b506024548616948915610dfc575060448b60095416935180948193627eeac760e11b8352308884015260248301525afa8015610df25783908790610dc1575b610cbc92506124c9565b8411610d8e5750927fc8e512d8f188ca059984b5853d2bf653da902696b8512785b182b2c813789a6e95928c9592610cfc8d9b9a99965b8284169061383b565b1660018060801b0319602454161760245584841690818352602587528b83206026549081855288528c8420548211600014610d6957505081526025855289812060265482528552808a8120555b5015610d64575080600954165b87519485521692a451908152f35b610d56565b90918352602587528b83209083528652610d878b83209182546124c9565b9055610d49565b8a5162461bcd60e51b81529081018d9052600d60248201526c0a68e987440e8dede40daeac6d609b1b6044820152606490fd5b50508d81813d8311610deb575b610dd881836123ab565b81010312610acd5782610cbc9151610cb2565b503d610dce565b8c513d88823e3d90fd5b9250929050813b15610eac578c51630208d92960e11b81526001600160a01b038a169181019182523060208301526040820193909352606081018690528691839182908490829060800103925af18015610ea257928c9a999895927fc8e512d8f188ca059984b5853d2bf653da902696b8512785b182b2c813789a6e9895928f9895610e8d575b50610cfc90610cf3565b93610e9b610cfc9295612315565b9390610e83565b8b513d87823e3d90fd5b8680fd5b9250955081813d8311610edf575b610ec881836123ab565b81010312610edb578d8c91519538610c73565b8580fd5b503d610ebe565b865162461bcd60e51b8152808a01899052601560248201527453474c3a206e6f7468696e6720746f20726570617960581b6044820152606490fd5b945089610bd1565b875162461bcd60e51b8152808b018a9052601d60248201527f53474c3a20616c6c6f77616e63655368617265206e6f742076616c69640000006044820152606490fd5b50505034610324578160031936011261032457602090601e549051908152f35b50505034610324578160031936011261032457606090602354908051916001600160401b03808216845281831c16602084015260801c90820152f35b50505034610324578160031936011261032457602090601a549051908152f35b50505034610324578060031936011261032457602091611006612111565b826024359283158015906110b2575b611045575b50519182526001600160a01b0316903390600080516020614027833981519152908590a35160018152f35b338152600186528181205461105c85821015612c6f565b6001600160a01b038416908533839003611079575b50505061101a565b61108d91611088841515612cb4565b6124c9565b33835260018852838320558152206110a68382546124d6565b90558238808085611071565b50336001600160a01b03841614611015565b505050346103245780600319360112610324576060906110ee6110e5612111565b60243590612615565b91929081519384526020840152820152f35b50505034610324578160031936011261032457602090602b549051908152f35b5050503461032457806003193601126103245760209061114a611141612111565b60243590612a13565b9051908152f35b5090503461063d578260031936011261063d5791808061035a9460018060a01b03600b541690855160208101916395d89b4160e01b835281526111938161233e565b51915afa61119f61342e565b9150156111fb576111af90613eb5565b905b6111e960238251809462746d2d60e81b60208301526111d9815180926020868601910161213d565b81010360038101855201836123ab565b51918291602083526020830190612160565b50611204613e5e565b906111b1565b50505034610324578160031936011261032457602090602f549051908152f35b8491843461149f578060031936011261149f578135926001600160401b038411610ad65736602385011215610ad6578383013592611267846123cc565b94611274845196876123ab565b8486528660209182880196366024828401011161063d578060248593018937880101526024359361ffff8516809503610ad25761010095868880518101031261149b576112c0906126c9565b936112cc828901612cf9565b906112d960608a01612cf9565b9860808101519860a0820151926112f260c08401612d0d565b91818401519301519360018060a01b03808097169d169a81421161145857928d8f819897948f948f8f968f918f959a8f8c81956113ce9f9c61059d9f50600014611431577f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e2669a5b82528952209384549461136b86612e9f565b905580519788019889528701528d6060870152608086015260a085015260c084015281830152815261139c81612374565b5190206113a7612b45565b908951908b82019261190160f01b8452602283015260428201526042815261059581612390565b16036113f0575050506000146113e75761037792612efc565b61037792612eae565b5162461bcd60e51b815291820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e61747572650000604482015260649150fd5b7f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d69a611359565b875162461bcd60e51b8152808b018a9052601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b8880fd5b8380fd5b5050503461032457816003193601126103245760055490516001600160a01b039091168152602090f35b50505034610324578160031936011261032457602090601b549051908152f35b5050503461032457816003193601126103245760145490516001600160801b038216815260809190911c6020820152604090f35b50505034610324578160031936011261032457602090602d549051908152f35b5050503461032457806003193601126103245760209061156c611562612111565b6024359033612eae565b5160018152f35b5090503461063d57602036600319011261063d5760209282916001600160a01b0361159c612111565b168252845220549051908152f35b50505034610324578160031936011261032457600f5490516001600160a01b039091168152602090f35b50505034610324578160031936011261032457805161035a916111e9826115fa81612290565b03836123ab565b5090503461063d57602036600319011261063d573591600983101561037a575060ff61162e602093612227565b541690519015158152f35b505050346103245760203660031901126103245760209181906001600160a01b03611662612111565b1681526001845220549051908152f35b50505034610324578160031936011261032457600a5490516001600160a01b039091168152602090f35b505050346103245781600319360112610324576080906116ba61381c565b506116c3613854565b50949593505050508051926001600160401b03808251168552602082015116602085015281600180871b0391015116908301526060820152f35b50505034610324578160031936011261032457602090601c549051908152f35b50505034610324578160031936011261032457602c548151911c6001600160401b03168152602090f35b505050346103245781600319360112610324576020906001600160401b03602c54169051908152f35b505050346103245781600319360112610324576020906001600160401b03602e54169051908152f35b5050503461032457816003193601126103245760209081549051908152f35b5090503461063d576118269061181a60ff84956117ed6117d7366121f2565b9491989093808052600760205220541615612f53565b6117f56126d6565b50506117ff613d3e565b6118146001600160a01b038216301415612f90565b85612fdb565b92909360115490613518565b15611838575082519182526020820152f35b606490602085519162461bcd60e51b8352820152601160248201527013585c9ad95d0e881a5b9cdbdb1d995b9d607a1b6044820152fd5b8482853461063d578260031936011261063d576006546001600160a01b039290918383169190338390036118e1575050806005549384167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08680a36001600160a01b0319928316176005551660065580f35b906020606492519162461bcd60e51b8352820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b505050346103245781600319360112610324576020906028549051908152f35b505050346103245760203660031901126103245760209181906001600160a01b0361196d612111565b1681526017845220549051908152f35b505050346103245781600319360112610324576020906015549051908152f35b50505034610324578160031936011261032457602090600e549051908152f35b505050346103245781600319360112610324576020906016549051908152f35b5082843461037a57606036600319011261037a575061114a6020926044359060243590356124fc565b505050346103245781600319360112610324576020906011549051908152f35b50505034610324578160031936011261032457600d5490516001600160a01b039091168152602090f35b505050346103245781600319360112610324576020906012549051908152f35b5050503461032457816003193601126103245760209061114a612b45565b505050346103245781600319360112610324576020906019549051908152f35b505050346103245781600319360112610324576020906013549051908152f35b50505034610324578160031936011261032457600d546020919060ff90611afd906001600160a01b031661345e565b915191168152f35b5082843461037a57611b16366121f2565b919282611b50575b508351918252602094506001600160a01b03908116921690600080516020614027833981519152908590a35160018152f35b6001600160a01b038481168083526001602090815287842054919892909190611b7b87831015612c6f565b851692838a03611b8f575b50505050611b1e565b898552600283528885203386528352888520549060018201611bf9575b5050928260209960018a94611bd88a8e996110886000805160206140278339815191529c9a1515612cb4565b9285525283832055815220611bee8582546124d6565b905591878080611b86565b878210611c4f57509260209960018a94611bd88a8e9996611c2a826000805160206140278339815191529d9b6124c9565b86895260028552898920338a5285528989205596995050509450509981949650611bac565b895162461bcd60e51b8152908101849052601860248201527745524332303a20616c6c6f77616e636520746f6f206c6f7760401b6044820152606490fd5b8492503461063d57611c9e366121a3565b9397949690928042116105fa57938693611d35938c8c8961059d968e9a8e60018060a01b03809c169c8d948587526020528c87872092835493611ce085612e9f565b905588519660208801987f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d68a528a890152606088015216608086015260a085015260c084015281830152815261056381612374565b16036105b75750610377939450612eae565b505050346103245760203660031901126103245760209181906001600160a01b03611d70612111565b1681526018845220549051908152f35b5050503461032457816003193601126103245760209060245460801c9051908152f35b5090503461063d578160031936011261063d57803590600982101561149f57611dca612185565b6008549093906001600160a01b03163303611e805760ff611dea84612227565b54161515931515938414611e48575050808260ff611e0a611e3894612227565b54161515827feeec81de25875ce1725479bb76f720a8defdb43dea041919ae37bb4aae9847c08780a4612227565b9060ff8019835416911617905580f35b906020606492519162461bcd60e51b835282015260126024820152714d61726b65743a2073616d6520737461746560701b6044820152fd5b906020606492519162461bcd60e51b8352820152601460248201527313585c9ad95d0e881d5b985d5d1a1bdc9a5e995960621b6044820152fd5b5050503461032457806003193601126103245760209061156c611edb612111565b6024359033612efc565b8482853461063d57606036600319011261063d57611f01612111565b91611f0a612185565b91611f13612194565b9260018060a01b03948591611f2d836005541633146123e7565b15611fd1571692831590811591611fc9575b5015611f8e575050806005549283167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08580a36001600160a01b03199182161760055560068054909116905580f35b906020606492519162461bcd60e51b835282015260156024820152744f776e61626c653a207a65726f206164647265737360581b6044820152fd5b905086611f3f565b93505050501660018060a01b0319600654161760065580f35b5090503461063d578260031936011261063d5791808061035a9460018060a01b03600b541690855160208101916306fdde0360e01b8352815261202c8161233e565b51915afa61203861342e565b9150156120935761204890613eb5565b905b6111e960348251809473546170696f63612053696e67756c61726974792d60601b6020830152612083815180926020868601910161213d565b81010360148101855201836123ab565b5061209c613e5e565b9061204a565b83853461037a578060031936011261037a57506120bd6126d6565b825191151582526020820152f35b8590853461063d578060031936011261063d576020926120e9612111565b6120f1612127565b6001600160a01b0391821683526003865283832091168252845220548152f35b600435906001600160a01b0382168203610acd57565b602435906001600160a01b0382168203610acd57565b60005b8381106121505750506000910152565b8181015183820152602001612140565b906020916121798151809281855285808601910161213d565b601f01601f1916010190565b602435908115158203610acd57565b604435908115158203610acd57565b60e0906003190112610acd576001600160a01b03906004358281168103610acd57916024359081168103610acd5790604435906064359060843560ff81168103610acd579060a4359060c43590565b6060906003190112610acd576001600160a01b03906004358281168103610acd57916024359081168103610acd579060443590565b6009811015612240576000526007602052604060002090565b634e487b7160e01b600052602160045260246000fd5b90600182811c92168015612286575b602083101461227057565b634e487b7160e01b600052602260045260246000fd5b91607f1691612265565b601054600092916122a082612256565b9081815260019283811690816000146122fa57506001146122c057505050565b9092935060106000526020928360002092846000945b8386106122e65750505050010190565b8054858701830152940193859082016122d6565b91935050602093945060ff191683830152151560051b010190565b6001600160401b03811161232857604052565b634e487b7160e01b600052604160045260246000fd5b604081019081106001600160401b0382111761232857604052565b606081019081106001600160401b0382111761232857604052565b61010081019081106001600160401b0382111761232857604052565b608081019081106001600160401b0382111761232857604052565b90601f801991011681019081106001600160401b0382111761232857604052565b6001600160401b03811161232857601f01601f191660200190565b156123ee57565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b1561243957565b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881b9bdd081d985b1a59607a1b6044820152606490fd5b8181029291811591840414171561248557565b634e487b7160e01b600052601160045260246000fd5b81156124a5570490565b634e487b7160e01b600052601260045260246000fd5b604d811161248557600a0a90565b9190820391821161248557565b9190820180921161248557565b8181039291600013801582851316918412161761248557565b601454919291612545916125369161252c91612522906001600160801b03831690612472565b9060801c9061249b565b93601f5490612472565b61253f836124bb565b9061249b565b80831061260d5761255961259591846124c9565b9161259061258a612581601e5461257b612572866124bb565b602054906124d6565b90612472565b61253f846124bb565b916124bb565b6124e3565b6509184e72a0009081810291818305149015171561248557670de0b6b3a7640000918281029281840514901517156124855780156124a557600160ff1b91808314600019831416612485570590600082121561260657811461248557600003905b808211612601575090565b905090565b50906125f6565b505050600090565b6001600160a01b0381166000818152601760205260408120549194939290919081156126bd57916040916126996126b1959483602086516126558161233e565b828152015261267386612666613854565b505050505093905061288a565b815190936001600160801b039160209161268f91841690612472565b920151169061249b565b8181106126b557035b9581526018602052205461295c565b9091565b5050806126a2565b50509192505080918190565b51908115158203610acd57565b600f546040805163d6d7d52560e01b8152602060048201529290916001600160a01b031682848061270960248201612290565b0381600080955af1801561283257819482916127f6575b5092841561279957831561275f57507f9f9192b5edb17356c524e08d9e025c8e2f6307e6ea52fb7968faa3081f51c3c883918260115580a25b42601355565b5162461bcd60e51b81526020600482015260146024820152734d61726b65743a20696e76616c6964207261746560601b6044820152606490fd5b919250506127ac601354601254906124d6565b42116127bc575060115490612759565b5162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881c985d19481d1bdbc81bdb1960621b6044820152606490fd5b809550848092503d831161282b575b61280f81836123ab565b8101031261037a576020612822856126c9565b94015138612720565b503d612805565b508251903d90823e3d90fd5b1561284557565b60405162461bcd60e51b815260206004820152601e60248201527f4d61726b65743a2065786368616e676552617465206e6f742076616c696400006044820152606490fd5b61289582151561283e565b60018060a01b036020816009541691600c5490600094168452601882526064604085205491604051948593849263442c159960e01b8452600484015260248301528660448301525afa918215612950578092612918575b50509061291061290761291593620186a06021540490612472565b601e5490612472565b61249b565b90565b9091506020823d8211612948575b81612933602093836123ab565b8101031261037a5750516129106129076128ec565b3d9150612926565b604051903d90823e3d90fd5b61296782151561283e565b602060018060a01b0360095416916064600c54604051948593849263442c159960e01b845260048401526024830152600060448301525afa908115612a07576000916129d4575b50906129106129c09260215490612472565b620186a06129d0601e5483612472565b0491565b906020823d82116129ff575b816129ed602093836123ab565b8101031261037a5750516129106129ae565b3d91506129e0565b6040513d6000823e3d90fd5b6001600160a01b03166000818152601860205260408120549092612a369161295c565b918352601760205260408320548015612b3f578115612b3f57818110612b3f5782811015612b3557601454612a7f91839161108891612522906001600160801b03831690612472565b90620186a09283830292808404851490151715612b2157612aa4929161253f916124c9565b91601b5491601c5493612ab785856124e3565b80820291848212600160ff1b821416612b21578183051490151715612b0d5705818482019485129112908015821691151617612af95750808212612601575090565b634e487b7160e01b81526011600452602490fd5b634e487b7160e01b83526011600452602483fd5b634e487b7160e01b85526011600452602485fd5b50505050601b5490565b50505090565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03161480612c46575b15612ba0577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f000000000000000000000000000000000000000000000000000000000000000082527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a0815260c081018181106001600160401b038211176123285760405251902090565b507f00000000000000000000000000000000000000000000000000000000000000004614612b77565b15612c7657565b60405162461bcd60e51b815260206004820152601660248201527545524332303a2062616c616e636520746f6f206c6f7760501b6044820152606490fd5b15612cbb57565b60405162461bcd60e51b815260206004820152601660248201527545524332303a206e6f207a65726f206164647265737360501b6044820152606490fd5b51906001600160a01b0382168203610acd57565b519060ff82168203610acd57565b60058110156122405780612d2c5750565b60018103612d745760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b6044820152606490fd5b60028103612dc15760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606490fd5b600314612dca57565b60405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608490fd5b9291906fa2a8918ca85bafe22016d0b997e4df60600160ff1b038311612e935791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa15612e865781516001600160a01b03811615612e80579190565b50600190565b50604051903d90823e3d90fd5b50505050600090600390565b60001981146124855760010190565b7fe50de2333c10a9502fcb1d8ae13a51bbf423153dfc63c2b8997665b32154afc360018060a01b038092169160009083825260036020526040822094169384825260205284604082205580a4565b909160207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259160018060a01b03809416938460005260028352604060002095169485600052825280604060002055604051908152a3565b15612f5a57565b60405162461bcd60e51b815260206004820152600e60248201526d13585c9ad95d0e881c185d5cd95960921b6044820152606490fd5b15612f9757565b606460405162461bcd60e51b815260206004820152602060248201527f4d61726b65743a2063616e6e6f742065786563757465206f6e20697473656c666044820152fd5b9190811561342357620186a09283612ff5602f5485612472565b049361302b61300760115496866124d6565b600d546001600160a01b0397919060ff90613023908a1661345e565b169185613615565b80156133d45761303b9083613698565b613047602f5485612472565b04916130516134cc565b9461305c84866124d6565b60409485519061306b8261233e565b60008083526020928301819052895190966001600160801b03949091851661336557996130ef908b906130ea908790816130ab81865b168284511661383b565b168152816130c1818a840196168287511661383b565b169384905251601480546001600160801b0319166001600160801b039390921692909216179055565b613d19565b6016548015908115613356575b501561331857848991168088526017845288882061311b8c82546124d6565b90558851908382528b858301527f3a5151e57d3bc9798e7853034ac52293d1a0e12a2b44725e75b03b21f86477a68a888a1693a4806132f7575b50808360095416976064600e5489519a8b938492638eb22cdd60e01b8452600484015260248301528960448301525afa9687156132ed5785976132be575b5061319c6134f2565b818101916103e8848451161061328a5750906131ec8392836131c6613213968c168284511661374f565b1690819052602480546001600160801b0319166001600160801b03909216919091179055565b51602480546001600160801b03169290911660801b6001600160801b031916919091179055565b6009541690600e5490823b1561149f578451630208d92960e11b81523060048201526001600160a01b0391909116602482015260448101919091526064810185905292919081908490608490829084905af191821561328057505061327757509091565b6126b190612315565b51903d90823e3d90fd5b60649088519062461bcd60e51b82526004820152600e60248201526d14d1d30e881b5a5b881b1a5b5a5d60921b6044820152fd5b9080975081813d83116132e6575b6132d681836123ab565b81010312610ad657519538613193565b503d6132cc565b86513d87823e3d90fd5b83600a54168652600182526133108787209182546124d6565b905538613155565b875162461bcd60e51b815260048101849052601760248201527614d1d30e88189bdc9c9bddc818d85c081c995858da1959604a1b6044820152606490fd5b905084601454161115386130fc565b998a859b8583018781511661337a9083612472565b888551166133879161249b565b9d8e8186511661339691612472565b9151166133a29161249b565b106133bd575b6130ea866130ef93818f94816130ab916130a1565b85806133ca81949e612e9f565b9d935050506133a8565b60405162461bcd60e51b815260206004820152602160248201527f42696742616e673a20616c6c6f77616e63655368617265206e6f742076616c696044820152601960fa1b6064820152608490fd5b505050600090600090565b3d15613459573d9061343f826123cc565b9161344d60405193846123ab565b82523d6000602084013e565b606090565b60008091604051602081019063313ce56760e01b8252600481526134818161233e565b51916001600160a01b03165afa61349661342e565b90806134c1575b156134bb57602081805181010312610acd5760206129159101612d0d565b50601290565b50602081511461349d565b604051906134d98261233e565b6014546001600160801b038116835260801c6020830152565b604051906134ff8261233e565b6024546001600160801b038116835260801c6020830152565b919060018060a01b0380600094168452602060178152604085205490811561360b57601881526040862054801561360457816135526134cc565b9460095416916064600c54604051948593849263442c159960e01b8452600484015260248301528b60448301525afa9687156129505780976135ce575b505061268f6135ae6129076135c9969798620186a06021540490612472565b956135c460018060801b03948587511690612472565b612472565b111590565b9096508187813d83116135fd575b6135e681836123ab565b8101031261037a575094519461268f6135ae61358f565b503d6135dc565b5050505050565b5060019450505050565b61258a9061363585612915969561362f61253f968561288a565b90613655565b6001600160a01b0390911660009081526018602052604090205490612472565b9182158015613690575b61260d57600181018091116124855761367e9261257b612910926124bb565b6005810180911161248557600a900490565b50811561365f565b6001600160a01b03163381036136ac575050565b600081815260209060038252604091828220338352815284838320541061371557838252600381528282203383528152828220546001016136ee575050505050565b613709938252600381528282209033835252209182546124c9565b90553880808080613604565b60649083519062461bcd60e51b82526004820152601460248201527313585c9ad95d0e881b9bdd08185c1c1c9bdd995960621b6044820152fd5b6001600160801b03918216908216039190821161248557565b9190916000602060405161377b8161233e565b82815201526020810180516001600160801b039081166137bf576137b881865b816137ab818a168289511661374f565b168652168284511661374f565b1690529190565b6137d96137cf8285511687612472565b828451169061249b565b94806137f56137eb8486511689612472565b848751169061249b565b10613805575b816137b89161379b565b94816138136137b892612e9f565b969150506137fb565b6040519061382982612359565b60006040838281528260208201520152565b6001600160801b03918216908216019190821161248557565b61385c61381c565b506000602060405161386d8161233e565b8281520152600060206040516138828161233e565b828152015260405161389381612359565b6023546001600160401b03811682526001600160401b038160401c16602083015260801c604082015280916138c66134cc565b916138cf6134f2565b600954600e54825160405163442c159960e01b8152600481018390526001600160801b03909116602482015260006044820181905293959194919391926001600160a01b031690602081606481855afa8015612a0757600090613ce5575b885161394392506001600160801b0316906124d6565b80613cb0575060005b806139646001600160401b03602087015116426124c9565b948515613c86575050426001600160401b031660208a8101919091528801516001600160801b031615613c3c57506020670de0b6b3a76400006139c1856135c48c6001600160401b038d60018060801b0390511691511690612472565b895191900496906001600160801b03906139e090828a1690831661383b565b168952875160405163442c159960e01b815260048101929092526001600160801b031660248201526000604482015291829060649082905afa8015612a0757600090613c08575b8751613a3d92506001600160801b0316906124d6565b92613a6b84612910620186a0613a55601a548a612472565b60208c01516001600160801b0316919004612472565b6040890180519195916001600160801b038088169291613a8e908490831661383b565b16905260208801805190916001600160801b0391613aae9190831661383b565b16905280613bd3575060005b60295490938482811015613b4e57613ad290836124c9565b90670de0b6b3a7640000820291808304670de0b6b3a7640000149015171561248557612910613b26613b20613b126001600160401b0396613b309661249b565b936135c4602d549580612472565b836124d6565b91848d5116612472565b168089526001600160401b03602c5416809110613b4a5750565b8852565b909150602a54808211613b6057505050565b613b69916124c9565b670de0b6b3a7640000810290808204670de0b6b3a76400001490151715612485576001600160401b0391612910613bac613b20613b12613bb595602b549061249b565b848d5116612472565b81602c5460401c16808211613bcb575b50168852565b905038613bc5565b87516001600160801b0316670de0b6b3a764000081810292918084049091149015171561248557613c039161249b565b613aba565b506020813d602011613c34575b81613c22602093836123ab565b81010312610acd57613a3d9051613a27565b3d9150613c15565b9697939450509350506001600160401b038151166001600160401b03602e5416809103613c7a575b509392613c6f6134f2565b926000926000929190565b81526001925038613c64565b975098505050505092505091613c9a6134cc565b91613ca36134f2565b9160009160009190600090565b87516001600160801b0316670de0b6b3a764000081810292918084049091149015171561248557613ce09161249b565b61394c565b506020813d602011613d11575b81613cff602093836123ab565b81010312610acd57613943905161392d565b3d9150613cf2565b601480546001600160801b031660809290921b6001600160801b031916919091179055565b613e22602080613df8613d4f613854565b9396959390929015613e24575050506001600160401b03602e54166000807f33af5ce86e8438eff54589f85332916444457dfa8685493fbd579b809097026b88604051838152a45b805185820151604092830151921b67ffffffffffffffff60401b166001600160401b03919091161760809190911b6001600160801b0319908116919091176023558151601480549092166001600160801b0391821617909155948591610c12565b8051910151821660801b6001600160801b0319166001600160801b03929091169190911617602455565b565b7f33af5ce86e8438eff54589f85332916444457dfa8685493fbd579b809097026b886001600160401b0386511694604051908152a4613d97565b60405190613e6b8261233e565b60038252623f3f3f60e81b6020830152565b908151811015613e8e570160200190565b634e487b7160e01b600052603260045260246000fd5b60ff1660ff81146124855760010190565b805160408110613f2d57508051810190602081818401930312610acd576020810151906001600160401b038211610acd570181603f82011215610acd576020810151613f00816123cc565b92613f0e60405194856123ab565b81845260408284010111610acd5761291591604060208501910161213d565b60209290830361401b576000805b60ff81168581109081613ffc575b5015613f5d57613f5890613ea4565b613f3b565b9260ff80941692613f6d846123cc565b93613f7b60405195866123ab565b808552613f8a601f19916123cc565b013687860137825b85811687811080613fdf575b15613fd457613fcf9190613fc96001600160f81b0319613fbe8388613e7d565b5116871a9188613e7d565b53613ea4565b613f92565b505094505050905090565b506001600160f81b0319613ff38286613e7d565b51161515613f9e565b6001600160f81b031991506140119086613e7d565b5116151538613f49565b915050612915613e5e56feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220457eee7610cc68599fce8b1a9000e3d857d63e416048e92b9d7bd9f8cb2a6a0d64736f6c63430008120033", + "deployedBytecode": "0x608060408181526004918236101561001657600080fd5b60009260e08435811c928362a02a20146120cb5750826302ce728f146120a257826306fdde0314611fea578263078dfbe714611ee5578263095ea7b314611eba5782630c4e84f014611da357826318160ddd14611d805782631c9e379b14611d475782631da8bf1014611c8d57826323b872dd14611b05578263313ce56714611ace578263331960ff14611aae57826334d441d014611a8e5782633644e51514611a7057826337b6b7b914611a5057826338d52e0f14611a265782633ba0b9a914611a065782633f741adb146119dd57826340626d8b146119bd57826344de240a1461199d578263473e3ce71461197d57826348e4163e146119445782634d7f2a34146119245782634e71e0c81461186f5782635224372c146117b8578263529898f21461179957826352f353eb14611770578263551402321461174757826355c2ab941461171d57826357935462146116fd5782635dfe04e81461169c5782636c3d8b8f1461167257826370a0823114611639578263727785471461160157826374645ff3146115d45782637dc0d1d0146115aa5782637ecebe00146115735782637fa0b84e14611541578263821226e8146115215782638285ef40146114ed5782638c5d0ed3146114cd5782638da5cb5b146114a3578263910dd7c81461122a578263959916dc1461120a57826395d89b411461115157826399a97028146111205782639c5d7192146111005782639e15e89f146110c4578263a9059cbb14610fe8578263b0e21e8a14610fc8578263b27c0e7414610f8c578263bb4cfe3b14610f6c578263cd0211eb14610b04578263ce8849ed14610ada578263d3fb2a3814610641578263d505accf146104ba5750508063d8dfeb4514610492578063dd62ed3e14610445578063de4065771461041d578063e0996cb6146103ff578063e30c3978146103d7578063ea64dd56146103b9578063eec0f42e1461039b578063f42760b71461037d578063f8ba4cff1461035e578063f9557ccb146103285763ffe04c661461030757600080fd5b346103245781600319360112610324576020906029549051908152f35b5080fd5b503461032457816003193601126103245760245490516001600160801b038216815260809190911c6020820152604090f35b0390f35b823461037a578060031936011261037a57610377613d3e565b80f35b80fd5b5034610324578160031936011261032457602090602a549051908152f35b5034610324578160031936011261032457602090600c549051908152f35b5034610324578160031936011261032457602090601f549051908152f35b503461032457816003193601126103245760065490516001600160a01b039091168152602090f35b5034610324578160031936011261032457602090601d549051908152f35b503461032457816003193601126103245760095490516001600160a01b039091168152602090f35b5034610324578060031936011261032457602091610461612111565b8261046a612127565b6001600160a01b03928316845260028652922091166000908152908352819020549051908152f35b5034610324578160031936011261032457600b5490516001600160a01b039091168152602090f35b8492503461063d576104cb366121a3565b9183949895979342116105fa579161059d916105a5938c8b8b60018060a01b0398898d169a8b93846000528d602052856000209081549161050b83612e9f565b90558c87519560208701977f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e266895260008a890152606088015216608086015260a085015260c084015281830152815261056381612374565b51902061056e612b45565b915190602082019261190160f01b8452602283015260428201526042815261059581612390565b519020612e1a565b919091612d1b565b16036105b75750610377939450612efc565b606490602087519162461bcd60e51b8352820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152fd5b8a5162461bcd60e51b8152602081880152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b8280fd5b5090503461063d5761016036600319011261063d576001600160a01b03813581811690819003610ad6576024916001600160401b038335818111610ad25736602382011215610ad25780860135918211610ad25736858383010111610ad25760443593838516809503610acd576106bd846005541633146123e7565b80610a8f575b508482610911575b505050816108d1575b5050606435806108b9575b50608435806108a1575b5060a4358061088a575b5060c43580610866575b5060e43580610842575b506101043580610811575b5061012435806107a0575b5061014435928361072c578480f35b601e54841061074357505050601f55388080808480f35b608492916020603292519362461bcd60e51b85528401528201527f4d61726b65743a206c69717569646174696f6e436f6c6c61746572616c697a616044820152711d1a5bdb94985d19481d1bdbc81cdb585b1b60721b6064820152fd5b6107af620186a0821115612432565b601f5481116107c157601e553861071d565b506025906020608494519362461bcd60e51b85528401528201527f4d61726b65743a20636f6c6c61746572616c697a6174696f6e5261746520746f6044820152646f2062696760d81b6064820152fd5b806016547fae6e0ab3b95f0a53ff9660a390ccedcbbf1f2355dce974a9841af106fddcfaba8780a360165538610712565b610850620186a08210612432565b61085d601b548211612432565b601c5538610707565b610874620186a08210612432565b610881601c548210612432565b601b55386106fd565b610898620186a08210612432565b601d55386106f3565b6108b0620186a0821115612432565b601a55386106e9565b6108c8620186a0821115612432565b601955386106df565b816008549182167f5a62d22209e370e38eea92cfddcd228e656e6ec139243392a760a7769f5877fd8880a36001600160a01b0319161760085538806106d4565b829161091e601054612256565b601f8111610a1e575b508990601f841160011461098c578a9361097f575b5050508160011b916000199060031b1c1916176010555b7fa6f004921c944d4b8bf6e38462b00f36a58d62495d56b51f571ab78f732c98158680a13880846106cb565b010135905084388061093c565b60108b52601f19841694507f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae67292509087908b60205b8782106109ff57505084600196106109e3575b50505050811b01601055610953565b60001960f88660031b161c1992010135169055388086816109d4565b82850190930135855560019490940193899291820191908101906109c1565b60108b5290925090507f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae672601f840160051c810160208510610a88575b91849391601f8994920160051c01905b818110610a775750610927565b8b8155859450889350600101610a6a565b5080610a5a565b600f80546001600160a01b0319169190911790557f0b2d6eb667d0522c3eb86e4288afecae6c11591ffd1345d4d12407e0598bca9b8880a1386106c3565b600080fd5b8780fd5b8480fd5b5050503461032457816003193601126103245760085490516001600160a01b039091168152602090f35b5083833461032457608036600319011261032457610b20612111565b610b28612127565b90610b31612194565b93606435916001825260209560078752610b5160ff878520541615612f53565b6001600160a01b0385811695909390610bae90610b7030891415612f90565b610b786126d6565b5050610b82613d3e565b610b9387610b8e6134cc565b613768565b905060115460ff610ba789600d541661345e565b1692613615565b8015610f2957610bbe9084613698565b8581526017885286812054808611610f21575b508415610ee6578798610c1a98610bea87610b8e6134cc565b8151601480546001600160801b0319166001600160801b03928316179055909b909290918391905b015116613d19565b87835260178b52888320610c2f8882546124c9565b90558560095416600e54928a5193638eb22cdd60e01b855280828601528c6024860152600160448601528d85606481865afa948515610df2578c918f918897610eb0575b506024548616948915610dfc575060448b60095416935180948193627eeac760e11b8352308884015260248301525afa8015610df25783908790610dc1575b610cbc92506124c9565b8411610d8e5750927fc8e512d8f188ca059984b5853d2bf653da902696b8512785b182b2c813789a6e95928c9592610cfc8d9b9a99965b8284169061383b565b1660018060801b0319602454161760245584841690818352602587528b83206026549081855288528c8420548211600014610d6957505081526025855289812060265482528552808a8120555b5015610d64575080600954165b87519485521692a451908152f35b610d56565b90918352602587528b83209083528652610d878b83209182546124c9565b9055610d49565b8a5162461bcd60e51b81529081018d9052600d60248201526c0a68e987440e8dede40daeac6d609b1b6044820152606490fd5b50508d81813d8311610deb575b610dd881836123ab565b81010312610acd5782610cbc9151610cb2565b503d610dce565b8c513d88823e3d90fd5b9250929050813b15610eac578c51630208d92960e11b81526001600160a01b038a169181019182523060208301526040820193909352606081018690528691839182908490829060800103925af18015610ea257928c9a999895927fc8e512d8f188ca059984b5853d2bf653da902696b8512785b182b2c813789a6e9895928f9895610e8d575b50610cfc90610cf3565b93610e9b610cfc9295612315565b9390610e83565b8b513d87823e3d90fd5b8680fd5b9250955081813d8311610edf575b610ec881836123ab565b81010312610edb578d8c91519538610c73565b8580fd5b503d610ebe565b865162461bcd60e51b8152808a01899052601560248201527453474c3a206e6f7468696e6720746f20726570617960581b6044820152606490fd5b945089610bd1565b875162461bcd60e51b8152808b018a9052601d60248201527f53474c3a20616c6c6f77616e63655368617265206e6f742076616c69640000006044820152606490fd5b50505034610324578160031936011261032457602090601e549051908152f35b50505034610324578160031936011261032457606090602354908051916001600160401b03808216845281831c16602084015260801c90820152f35b50505034610324578160031936011261032457602090601a549051908152f35b50505034610324578060031936011261032457602091611006612111565b826024359283158015906110b2575b611045575b50519182526001600160a01b0316903390600080516020614027833981519152908590a35160018152f35b338152600186528181205461105c85821015612c6f565b6001600160a01b038416908533839003611079575b50505061101a565b61108d91611088841515612cb4565b6124c9565b33835260018852838320558152206110a68382546124d6565b90558238808085611071565b50336001600160a01b03841614611015565b505050346103245780600319360112610324576060906110ee6110e5612111565b60243590612615565b91929081519384526020840152820152f35b50505034610324578160031936011261032457602090602b549051908152f35b5050503461032457806003193601126103245760209061114a611141612111565b60243590612a13565b9051908152f35b5090503461063d578260031936011261063d5791808061035a9460018060a01b03600b541690855160208101916395d89b4160e01b835281526111938161233e565b51915afa61119f61342e565b9150156111fb576111af90613eb5565b905b6111e960238251809462746d2d60e81b60208301526111d9815180926020868601910161213d565b81010360038101855201836123ab565b51918291602083526020830190612160565b50611204613e5e565b906111b1565b50505034610324578160031936011261032457602090602f549051908152f35b8491843461149f578060031936011261149f578135926001600160401b038411610ad65736602385011215610ad6578383013592611267846123cc565b94611274845196876123ab565b8486528660209182880196366024828401011161063d578060248593018937880101526024359361ffff8516809503610ad25761010095868880518101031261149b576112c0906126c9565b936112cc828901612cf9565b906112d960608a01612cf9565b9860808101519860a0820151926112f260c08401612d0d565b91818401519301519360018060a01b03808097169d169a81421161145857928d8f819897948f948f8f968f918f959a8f8c81956113ce9f9c61059d9f50600014611431577f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e2669a5b82528952209384549461136b86612e9f565b905580519788019889528701528d6060870152608086015260a085015260c084015281830152815261139c81612374565b5190206113a7612b45565b908951908b82019261190160f01b8452602283015260428201526042815261059581612390565b16036113f0575050506000146113e75761037792612efc565b61037792612eae565b5162461bcd60e51b815291820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e61747572650000604482015260649150fd5b7f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d69a611359565b875162461bcd60e51b8152808b018a9052601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b8880fd5b8380fd5b5050503461032457816003193601126103245760055490516001600160a01b039091168152602090f35b50505034610324578160031936011261032457602090601b549051908152f35b5050503461032457816003193601126103245760145490516001600160801b038216815260809190911c6020820152604090f35b50505034610324578160031936011261032457602090602d549051908152f35b5050503461032457806003193601126103245760209061156c611562612111565b6024359033612eae565b5160018152f35b5090503461063d57602036600319011261063d5760209282916001600160a01b0361159c612111565b168252845220549051908152f35b50505034610324578160031936011261032457600f5490516001600160a01b039091168152602090f35b50505034610324578160031936011261032457805161035a916111e9826115fa81612290565b03836123ab565b5090503461063d57602036600319011261063d573591600983101561037a575060ff61162e602093612227565b541690519015158152f35b505050346103245760203660031901126103245760209181906001600160a01b03611662612111565b1681526001845220549051908152f35b50505034610324578160031936011261032457600a5490516001600160a01b039091168152602090f35b505050346103245781600319360112610324576080906116ba61381c565b506116c3613854565b50949593505050508051926001600160401b03808251168552602082015116602085015281600180871b0391015116908301526060820152f35b50505034610324578160031936011261032457602090601c549051908152f35b50505034610324578160031936011261032457602c548151911c6001600160401b03168152602090f35b505050346103245781600319360112610324576020906001600160401b03602c54169051908152f35b505050346103245781600319360112610324576020906001600160401b03602e54169051908152f35b5050503461032457816003193601126103245760209081549051908152f35b5090503461063d576118269061181a60ff84956117ed6117d7366121f2565b9491989093808052600760205220541615612f53565b6117f56126d6565b50506117ff613d3e565b6118146001600160a01b038216301415612f90565b85612fdb565b92909360115490613518565b15611838575082519182526020820152f35b606490602085519162461bcd60e51b8352820152601160248201527013585c9ad95d0e881a5b9cdbdb1d995b9d607a1b6044820152fd5b8482853461063d578260031936011261063d576006546001600160a01b039290918383169190338390036118e1575050806005549384167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08680a36001600160a01b0319928316176005551660065580f35b906020606492519162461bcd60e51b8352820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b505050346103245781600319360112610324576020906028549051908152f35b505050346103245760203660031901126103245760209181906001600160a01b0361196d612111565b1681526017845220549051908152f35b505050346103245781600319360112610324576020906015549051908152f35b50505034610324578160031936011261032457602090600e549051908152f35b505050346103245781600319360112610324576020906016549051908152f35b5082843461037a57606036600319011261037a575061114a6020926044359060243590356124fc565b505050346103245781600319360112610324576020906011549051908152f35b50505034610324578160031936011261032457600d5490516001600160a01b039091168152602090f35b505050346103245781600319360112610324576020906012549051908152f35b5050503461032457816003193601126103245760209061114a612b45565b505050346103245781600319360112610324576020906019549051908152f35b505050346103245781600319360112610324576020906013549051908152f35b50505034610324578160031936011261032457600d546020919060ff90611afd906001600160a01b031661345e565b915191168152f35b5082843461037a57611b16366121f2565b919282611b50575b508351918252602094506001600160a01b03908116921690600080516020614027833981519152908590a35160018152f35b6001600160a01b038481168083526001602090815287842054919892909190611b7b87831015612c6f565b851692838a03611b8f575b50505050611b1e565b898552600283528885203386528352888520549060018201611bf9575b5050928260209960018a94611bd88a8e996110886000805160206140278339815191529c9a1515612cb4565b9285525283832055815220611bee8582546124d6565b905591878080611b86565b878210611c4f57509260209960018a94611bd88a8e9996611c2a826000805160206140278339815191529d9b6124c9565b86895260028552898920338a5285528989205596995050509450509981949650611bac565b895162461bcd60e51b8152908101849052601860248201527745524332303a20616c6c6f77616e636520746f6f206c6f7760401b6044820152606490fd5b8492503461063d57611c9e366121a3565b9397949690928042116105fa57938693611d35938c8c8961059d968e9a8e60018060a01b03809c169c8d948587526020528c87872092835493611ce085612e9f565b905588519660208801987f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d68a528a890152606088015216608086015260a085015260c084015281830152815261056381612374565b16036105b75750610377939450612eae565b505050346103245760203660031901126103245760209181906001600160a01b03611d70612111565b1681526018845220549051908152f35b5050503461032457816003193601126103245760209060245460801c9051908152f35b5090503461063d578160031936011261063d57803590600982101561149f57611dca612185565b6008549093906001600160a01b03163303611e805760ff611dea84612227565b54161515931515938414611e48575050808260ff611e0a611e3894612227565b54161515827feeec81de25875ce1725479bb76f720a8defdb43dea041919ae37bb4aae9847c08780a4612227565b9060ff8019835416911617905580f35b906020606492519162461bcd60e51b835282015260126024820152714d61726b65743a2073616d6520737461746560701b6044820152fd5b906020606492519162461bcd60e51b8352820152601460248201527313585c9ad95d0e881d5b985d5d1a1bdc9a5e995960621b6044820152fd5b5050503461032457806003193601126103245760209061156c611edb612111565b6024359033612efc565b8482853461063d57606036600319011261063d57611f01612111565b91611f0a612185565b91611f13612194565b9260018060a01b03948591611f2d836005541633146123e7565b15611fd1571692831590811591611fc9575b5015611f8e575050806005549283167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08580a36001600160a01b03199182161760055560068054909116905580f35b906020606492519162461bcd60e51b835282015260156024820152744f776e61626c653a207a65726f206164647265737360581b6044820152fd5b905086611f3f565b93505050501660018060a01b0319600654161760065580f35b5090503461063d578260031936011261063d5791808061035a9460018060a01b03600b541690855160208101916306fdde0360e01b8352815261202c8161233e565b51915afa61203861342e565b9150156120935761204890613eb5565b905b6111e960348251809473546170696f63612053696e67756c61726974792d60601b6020830152612083815180926020868601910161213d565b81010360148101855201836123ab565b5061209c613e5e565b9061204a565b83853461037a578060031936011261037a57506120bd6126d6565b825191151582526020820152f35b8590853461063d578060031936011261063d576020926120e9612111565b6120f1612127565b6001600160a01b0391821683526003865283832091168252845220548152f35b600435906001600160a01b0382168203610acd57565b602435906001600160a01b0382168203610acd57565b60005b8381106121505750506000910152565b8181015183820152602001612140565b906020916121798151809281855285808601910161213d565b601f01601f1916010190565b602435908115158203610acd57565b604435908115158203610acd57565b60e0906003190112610acd576001600160a01b03906004358281168103610acd57916024359081168103610acd5790604435906064359060843560ff81168103610acd579060a4359060c43590565b6060906003190112610acd576001600160a01b03906004358281168103610acd57916024359081168103610acd579060443590565b6009811015612240576000526007602052604060002090565b634e487b7160e01b600052602160045260246000fd5b90600182811c92168015612286575b602083101461227057565b634e487b7160e01b600052602260045260246000fd5b91607f1691612265565b601054600092916122a082612256565b9081815260019283811690816000146122fa57506001146122c057505050565b9092935060106000526020928360002092846000945b8386106122e65750505050010190565b8054858701830152940193859082016122d6565b91935050602093945060ff191683830152151560051b010190565b6001600160401b03811161232857604052565b634e487b7160e01b600052604160045260246000fd5b604081019081106001600160401b0382111761232857604052565b606081019081106001600160401b0382111761232857604052565b61010081019081106001600160401b0382111761232857604052565b608081019081106001600160401b0382111761232857604052565b90601f801991011681019081106001600160401b0382111761232857604052565b6001600160401b03811161232857601f01601f191660200190565b156123ee57565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b1561243957565b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881b9bdd081d985b1a59607a1b6044820152606490fd5b8181029291811591840414171561248557565b634e487b7160e01b600052601160045260246000fd5b81156124a5570490565b634e487b7160e01b600052601260045260246000fd5b604d811161248557600a0a90565b9190820391821161248557565b9190820180921161248557565b8181039291600013801582851316918412161761248557565b601454919291612545916125369161252c91612522906001600160801b03831690612472565b9060801c9061249b565b93601f5490612472565b61253f836124bb565b9061249b565b80831061260d5761255961259591846124c9565b9161259061258a612581601e5461257b612572866124bb565b602054906124d6565b90612472565b61253f846124bb565b916124bb565b6124e3565b6509184e72a0009081810291818305149015171561248557670de0b6b3a7640000918281029281840514901517156124855780156124a557600160ff1b91808314600019831416612485570590600082121561260657811461248557600003905b808211612601575090565b905090565b50906125f6565b505050600090565b6001600160a01b0381166000818152601760205260408120549194939290919081156126bd57916040916126996126b1959483602086516126558161233e565b828152015261267386612666613854565b505050505093905061288a565b815190936001600160801b039160209161268f91841690612472565b920151169061249b565b8181106126b557035b9581526018602052205461295c565b9091565b5050806126a2565b50509192505080918190565b51908115158203610acd57565b600f546040805163d6d7d52560e01b8152602060048201529290916001600160a01b031682848061270960248201612290565b0381600080955af1801561283257819482916127f6575b5092841561279957831561275f57507f9f9192b5edb17356c524e08d9e025c8e2f6307e6ea52fb7968faa3081f51c3c883918260115580a25b42601355565b5162461bcd60e51b81526020600482015260146024820152734d61726b65743a20696e76616c6964207261746560601b6044820152606490fd5b919250506127ac601354601254906124d6565b42116127bc575060115490612759565b5162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881c985d19481d1bdbc81bdb1960621b6044820152606490fd5b809550848092503d831161282b575b61280f81836123ab565b8101031261037a576020612822856126c9565b94015138612720565b503d612805565b508251903d90823e3d90fd5b1561284557565b60405162461bcd60e51b815260206004820152601e60248201527f4d61726b65743a2065786368616e676552617465206e6f742076616c696400006044820152606490fd5b61289582151561283e565b60018060a01b036020816009541691600c5490600094168452601882526064604085205491604051948593849263442c159960e01b8452600484015260248301528660448301525afa918215612950578092612918575b50509061291061290761291593620186a06021540490612472565b601e5490612472565b61249b565b90565b9091506020823d8211612948575b81612933602093836123ab565b8101031261037a5750516129106129076128ec565b3d9150612926565b604051903d90823e3d90fd5b61296782151561283e565b602060018060a01b0360095416916064600c54604051948593849263442c159960e01b845260048401526024830152600060448301525afa908115612a07576000916129d4575b50906129106129c09260215490612472565b620186a06129d0601e5483612472565b0491565b906020823d82116129ff575b816129ed602093836123ab565b8101031261037a5750516129106129ae565b3d91506129e0565b6040513d6000823e3d90fd5b6001600160a01b03166000818152601860205260408120549092612a369161295c565b918352601760205260408320548015612b3f578115612b3f57818110612b3f5782811015612b3557601454612a7f91839161108891612522906001600160801b03831690612472565b90620186a09283830292808404851490151715612b2157612aa4929161253f916124c9565b91601b5491601c5493612ab785856124e3565b80820291848212600160ff1b821416612b21578183051490151715612b0d5705818482019485129112908015821691151617612af95750808212612601575090565b634e487b7160e01b81526011600452602490fd5b634e487b7160e01b83526011600452602483fd5b634e487b7160e01b85526011600452602485fd5b50505050601b5490565b50505090565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03161480612c46575b15612ba0577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f000000000000000000000000000000000000000000000000000000000000000082527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a0815260c081018181106001600160401b038211176123285760405251902090565b507f00000000000000000000000000000000000000000000000000000000000000004614612b77565b15612c7657565b60405162461bcd60e51b815260206004820152601660248201527545524332303a2062616c616e636520746f6f206c6f7760501b6044820152606490fd5b15612cbb57565b60405162461bcd60e51b815260206004820152601660248201527545524332303a206e6f207a65726f206164647265737360501b6044820152606490fd5b51906001600160a01b0382168203610acd57565b519060ff82168203610acd57565b60058110156122405780612d2c5750565b60018103612d745760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b6044820152606490fd5b60028103612dc15760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606490fd5b600314612dca57565b60405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608490fd5b9291906fa2a8918ca85bafe22016d0b997e4df60600160ff1b038311612e935791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa15612e865781516001600160a01b03811615612e80579190565b50600190565b50604051903d90823e3d90fd5b50505050600090600390565b60001981146124855760010190565b7fe50de2333c10a9502fcb1d8ae13a51bbf423153dfc63c2b8997665b32154afc360018060a01b038092169160009083825260036020526040822094169384825260205284604082205580a4565b909160207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259160018060a01b03809416938460005260028352604060002095169485600052825280604060002055604051908152a3565b15612f5a57565b60405162461bcd60e51b815260206004820152600e60248201526d13585c9ad95d0e881c185d5cd95960921b6044820152606490fd5b15612f9757565b606460405162461bcd60e51b815260206004820152602060248201527f4d61726b65743a2063616e6e6f742065786563757465206f6e20697473656c666044820152fd5b9190811561342357620186a09283612ff5602f5485612472565b049361302b61300760115496866124d6565b600d546001600160a01b0397919060ff90613023908a1661345e565b169185613615565b80156133d45761303b9083613698565b613047602f5485612472565b04916130516134cc565b9461305c84866124d6565b60409485519061306b8261233e565b60008083526020928301819052895190966001600160801b03949091851661336557996130ef908b906130ea908790816130ab81865b168284511661383b565b168152816130c1818a840196168287511661383b565b169384905251601480546001600160801b0319166001600160801b039390921692909216179055565b613d19565b6016548015908115613356575b501561331857848991168088526017845288882061311b8c82546124d6565b90558851908382528b858301527f3a5151e57d3bc9798e7853034ac52293d1a0e12a2b44725e75b03b21f86477a68a888a1693a4806132f7575b50808360095416976064600e5489519a8b938492638eb22cdd60e01b8452600484015260248301528960448301525afa9687156132ed5785976132be575b5061319c6134f2565b818101916103e8848451161061328a5750906131ec8392836131c6613213968c168284511661374f565b1690819052602480546001600160801b0319166001600160801b03909216919091179055565b51602480546001600160801b03169290911660801b6001600160801b031916919091179055565b6009541690600e5490823b1561149f578451630208d92960e11b81523060048201526001600160a01b0391909116602482015260448101919091526064810185905292919081908490608490829084905af191821561328057505061327757509091565b6126b190612315565b51903d90823e3d90fd5b60649088519062461bcd60e51b82526004820152600e60248201526d14d1d30e881b5a5b881b1a5b5a5d60921b6044820152fd5b9080975081813d83116132e6575b6132d681836123ab565b81010312610ad657519538613193565b503d6132cc565b86513d87823e3d90fd5b83600a54168652600182526133108787209182546124d6565b905538613155565b875162461bcd60e51b815260048101849052601760248201527614d1d30e88189bdc9c9bddc818d85c081c995858da1959604a1b6044820152606490fd5b905084601454161115386130fc565b998a859b8583018781511661337a9083612472565b888551166133879161249b565b9d8e8186511661339691612472565b9151166133a29161249b565b106133bd575b6130ea866130ef93818f94816130ab916130a1565b85806133ca81949e612e9f565b9d935050506133a8565b60405162461bcd60e51b815260206004820152602160248201527f42696742616e673a20616c6c6f77616e63655368617265206e6f742076616c696044820152601960fa1b6064820152608490fd5b505050600090600090565b3d15613459573d9061343f826123cc565b9161344d60405193846123ab565b82523d6000602084013e565b606090565b60008091604051602081019063313ce56760e01b8252600481526134818161233e565b51916001600160a01b03165afa61349661342e565b90806134c1575b156134bb57602081805181010312610acd5760206129159101612d0d565b50601290565b50602081511461349d565b604051906134d98261233e565b6014546001600160801b038116835260801c6020830152565b604051906134ff8261233e565b6024546001600160801b038116835260801c6020830152565b919060018060a01b0380600094168452602060178152604085205490811561360b57601881526040862054801561360457816135526134cc565b9460095416916064600c54604051948593849263442c159960e01b8452600484015260248301528b60448301525afa9687156129505780976135ce575b505061268f6135ae6129076135c9969798620186a06021540490612472565b956135c460018060801b03948587511690612472565b612472565b111590565b9096508187813d83116135fd575b6135e681836123ab565b8101031261037a575094519461268f6135ae61358f565b503d6135dc565b5050505050565b5060019450505050565b61258a9061363585612915969561362f61253f968561288a565b90613655565b6001600160a01b0390911660009081526018602052604090205490612472565b9182158015613690575b61260d57600181018091116124855761367e9261257b612910926124bb565b6005810180911161248557600a900490565b50811561365f565b6001600160a01b03163381036136ac575050565b600081815260209060038252604091828220338352815284838320541061371557838252600381528282203383528152828220546001016136ee575050505050565b613709938252600381528282209033835252209182546124c9565b90553880808080613604565b60649083519062461bcd60e51b82526004820152601460248201527313585c9ad95d0e881b9bdd08185c1c1c9bdd995960621b6044820152fd5b6001600160801b03918216908216039190821161248557565b9190916000602060405161377b8161233e565b82815201526020810180516001600160801b039081166137bf576137b881865b816137ab818a168289511661374f565b168652168284511661374f565b1690529190565b6137d96137cf8285511687612472565b828451169061249b565b94806137f56137eb8486511689612472565b848751169061249b565b10613805575b816137b89161379b565b94816138136137b892612e9f565b969150506137fb565b6040519061382982612359565b60006040838281528260208201520152565b6001600160801b03918216908216019190821161248557565b61385c61381c565b506000602060405161386d8161233e565b8281520152600060206040516138828161233e565b828152015260405161389381612359565b6023546001600160401b03811682526001600160401b038160401c16602083015260801c604082015280916138c66134cc565b916138cf6134f2565b600954600e54825160405163442c159960e01b8152600481018390526001600160801b03909116602482015260006044820181905293959194919391926001600160a01b031690602081606481855afa8015612a0757600090613ce5575b885161394392506001600160801b0316906124d6565b80613cb0575060005b806139646001600160401b03602087015116426124c9565b948515613c86575050426001600160401b031660208a8101919091528801516001600160801b031615613c3c57506020670de0b6b3a76400006139c1856135c48c6001600160401b038d60018060801b0390511691511690612472565b895191900496906001600160801b03906139e090828a1690831661383b565b168952875160405163442c159960e01b815260048101929092526001600160801b031660248201526000604482015291829060649082905afa8015612a0757600090613c08575b8751613a3d92506001600160801b0316906124d6565b92613a6b84612910620186a0613a55601a548a612472565b60208c01516001600160801b0316919004612472565b6040890180519195916001600160801b038088169291613a8e908490831661383b565b16905260208801805190916001600160801b0391613aae9190831661383b565b16905280613bd3575060005b60295490938482811015613b4e57613ad290836124c9565b90670de0b6b3a7640000820291808304670de0b6b3a7640000149015171561248557612910613b26613b20613b126001600160401b0396613b309661249b565b936135c4602d549580612472565b836124d6565b91848d5116612472565b168089526001600160401b03602c5416809110613b4a5750565b8852565b909150602a54808211613b6057505050565b613b69916124c9565b670de0b6b3a7640000810290808204670de0b6b3a76400001490151715612485576001600160401b0391612910613bac613b20613b12613bb595602b549061249b565b848d5116612472565b81602c5460401c16808211613bcb575b50168852565b905038613bc5565b87516001600160801b0316670de0b6b3a764000081810292918084049091149015171561248557613c039161249b565b613aba565b506020813d602011613c34575b81613c22602093836123ab565b81010312610acd57613a3d9051613a27565b3d9150613c15565b9697939450509350506001600160401b038151166001600160401b03602e5416809103613c7a575b509392613c6f6134f2565b926000926000929190565b81526001925038613c64565b975098505050505092505091613c9a6134cc565b91613ca36134f2565b9160009160009190600090565b87516001600160801b0316670de0b6b3a764000081810292918084049091149015171561248557613ce09161249b565b61394c565b506020813d602011613d11575b81613cff602093836123ab565b81010312610acd57613943905161392d565b3d9150613cf2565b601480546001600160801b031660809290921b6001600160801b031916919091179055565b613e22602080613df8613d4f613854565b9396959390929015613e24575050506001600160401b03602e54166000807f33af5ce86e8438eff54589f85332916444457dfa8685493fbd579b809097026b88604051838152a45b805185820151604092830151921b67ffffffffffffffff60401b166001600160401b03919091161760809190911b6001600160801b0319908116919091176023558151601480549092166001600160801b0391821617909155948591610c12565b8051910151821660801b6001600160801b0319166001600160801b03929091169190911617602455565b565b7f33af5ce86e8438eff54589f85332916444457dfa8685493fbd579b809097026b886001600160401b0386511694604051908152a4613d97565b60405190613e6b8261233e565b60038252623f3f3f60e81b6020830152565b908151811015613e8e570160200190565b634e487b7160e01b600052603260045260246000fd5b60ff1660ff81146124855760010190565b805160408110613f2d57508051810190602081818401930312610acd576020810151906001600160401b038211610acd570181603f82011215610acd576020810151613f00816123cc565b92613f0e60405194856123ab565b81845260408284010111610acd5761291591604060208501910161213d565b60209290830361401b576000805b60ff81168581109081613ffc575b5015613f5d57613f5890613ea4565b613f3b565b9260ff80941692613f6d846123cc565b93613f7b60405195866123ab565b808552613f8a601f19916123cc565b013687860137825b85811687811080613fdf575b15613fd457613fcf9190613fc96001600160f81b0319613fbe8388613e7d565b5116871a9188613e7d565b53613ea4565b613f92565b505094505050905090565b506001600160f81b0319613ff38286613e7d565b51161515613f9e565b6001600160f81b031991506140119086613e7d565b5116151538613f49565b915050612915613e5e56feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220457eee7610cc68599fce8b1a9000e3d857d63e416048e92b9d7bd9f8cb2a6a0d64736f6c63430008120033", "linkReferences": {}, "deployedLinkReferences": {} } diff --git a/src/artifacts/tapioca-bar/SGLCollateral.json b/src/artifacts/tapioca-bar/SGLCollateral.json index da9818fb..ddba8b28 100644 --- a/src/artifacts/tapioca-bar/SGLCollateral.json +++ b/src/artifacts/tapioca-bar/SGLCollateral.json @@ -1583,11 +1583,6 @@ }, { "inputs": [ - { - "internalType": "uint256", - "name": "_borrowOpeningFee", - "type": "uint256" - }, { "internalType": "contract IOracle", "name": "_oracle", @@ -1914,8 +1909,8 @@ "type": "function" } ], - "bytecode": "0x6101408060405234620001e5576200001781620001ea565b601381526001602082017f546170696f63612053696e67756c617269747900000000000000000000000000815260206040516200005481620001ea565b8381520192603160f81b845251902091208160e052610100918183524660a0526040519160208301907f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f92838352604085015260608401524660808401523060a084015260a0835260c083019280841060018060401b03851117620001cf5760408490525190206080523060c052610120908152600580546001600160a01b0319163390811790915560007f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a362013880601b5562015f90601c55612710601d556032602055612ee06021557f0bd4060688a1800ae986e4840aebc924bb40b5bf44de4583df2257220b54b77c6027557f7d1dc38e60930664f8cbf495da6556ca091d2f92d6550877750c049864b182306028556161a86029556139b1928362000207843960805183612b2d015260a05183612bf8015260c05183612af7015260e05183612b7c01525182612ba201525181612b590152f35b634e487b7160e01b600052604160045260246000fd5b600080fd5b604081019081106001600160401b03821117620001cf5760405256fe608080604052600436101561001357600080fd5b600090813560e01c908162a02a20146120b55750806302ce728f1461208c57806306fdde0314611fd5578063078dfbe714611ed6578063095ea7b314611eaf5780630996efb714611a2e5780630c4e84f01461191657806318160ddd146118f55780631c9e379b146118bc5780631da8bf10146117e857806323b872dd14611661578063313ce567146115cf578063331960ff146115b157806334d441d0146115935780633644e5151461157857806337b6b7b91461155a57806338d52e0f146115315780633ba0b9a9146115135780633f741adb146114ee57806340626d8b146114d057806344de240a146114b2578063473e3ce71461149457806348e4163e1461145b5780634d7f2a341461143d5780634e71e0c81461138f578063529898f21461137157806352f353eb1461134a578063551402321461132357806355c2ab94146112f957806357935462146112db5780635dfe04e81461127c5780636c3d8b8f1461125357806370a082311461121a57806372778547146111e257806374645ff3146111b75780637dc0d1d01461118e5780637ecebe00146111555780637fa0b84e14611123578063821226e8146111055780638285ef40146110d35780638c5d0ed3146110b55780638da5cb5b1461108c578063910dd7c814610e73578063959916dc14610e5657806395d89b4114610d9c57806399a9702814610d6c5780639c5d719214610d4e5780639e15e89f14610d13578063a9059cbb14610c30578063b0e21e8a14610c12578063b27c0e7414610bd7578063bb4cfe3b14610bb9578063cce19f81146109cd578063ce8849ed146109a4578063d505accf14610803578063d8dfeb45146107da578063dd62ed3e1461078b578063de40657714610762578063e0996cb614610744578063e30c39781461071b578063e9a49252146103cd578063ea64dd56146103af578063eec0f42e14610391578063f42760b714610373578063f8ba4cff14610357578063f9557ccb146103215763ffe04c661461030157600080fd5b3461031e578060031936011261031e576020602a54604051908152f35b80fd5b503461031e578060031936011261031e57602554604080516001600160801b038316815260809290921c602083015290f35b0390f35b503461031e578060031936011261031e57610370613674565b80f35b503461031e578060031936011261031e576020602b54604051908152f35b503461031e578060031936011261031e576020600c54604051908152f35b503461031e578060031936011261031e576020601f54604051908152f35b503461031e5760a036600319011261031e576103e76120fd565b6103ef612113565b906103f8612180565b916064359160843593600260005260206007815261041e60ff6040600020541615612ef3565b6001600160a01b039384169461043630871415612f30565b861561069d575b6104478785612f7b565b861561061c575b5084875260188152604087206104658782546124ac565b905560155461047487826124ac565b601555600c5490888415610596575082866009541692604460405180958193627eeac760e11b835230600484015260248301525afa801561058b578990610557575b6104c0925061249f565b8611610523575b848752602681526040872090602854885252604086206104e88682546124ac565b90551561051e575080600954165b167f9ed03113de523cebfe5e49d5f8e12894b1c0d42ce805990461726444c90eab878480a480f35b6104f6565b6064906040519062461bcd60e51b82526004820152600d60248201526c0a68e987440e8dede40daeac6d609b1b6044820152fd5b508282813d8311610584575b61056d8183612397565b8101031261057f576104c091516104b6565b600080fd5b503d610563565b6040513d8b823e3d90fd5b9190508560095416803b1561061857604051630208d92960e11b81526001600160a01b038716600482015230602482015260448101929092526064820189905282908290608490829084905af1801561060d576105f5575b50506104c7565b6105fe90612301565b6106095786386105ee565b8680fd5b6040513d84823e3d90fd5b8280fd5b908096508460095416916064600c546040519485938492638eb22cdd60e01b8452600484015260248301528b60448301525afa908115610692578791610665575b50943861044e565b90508581813d831161068b575b61067c8183612397565b8101031261057f57513861065d565b503d610672565b6040513d89823e3d90fd5b9550836009541681600c54606460405180948193638eb22cdd60e01b835260048301528b60248301528c60448301525afa9081156107105788916106e3575b509561043d565b90508181813d8311610709575b6106fa8183612397565b8101031261057f5751386106dc565b503d6106f0565b6040513d8a823e3d90fd5b503461031e578060031936011261031e576006546040516001600160a01b039091168152602090f35b503461031e578060031936011261031e576020601d54604051908152f35b503461031e578060031936011261031e576009546040516001600160a01b039091168152602090f35b503461031e57604036600319011261031e576107a56120fd565b60406107af612113565b9260018060a01b03809316815260026020522091166000526020526020604060002054604051908152f35b503461031e578060031936011261031e57600b546040516001600160a01b039091168152602090f35b503461031e576108123661218f565b91839193959495421161095f5760018060a01b03928388169485600052600460205260406000209283546000198114610949576108f5956108ed956001830190556040519060208201927f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e2668452600060408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e081526108b181612360565b5190206108bc612af4565b9060405190602082019261190160f01b845260228301526042820152604281526108e58161237c565b519020612dc9565b919091612cca565b16036109045761037092612e9c565b60405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152606490fd5b634e487b7160e01b600052601160045260246000fd5b60405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b503461031e578060031936011261031e576008546040516001600160a01b039091168152602090f35b503461031e576109dc366121de565b90929160038352602091600783526109fb60ff60408620541615612ef3565b610a03612757565b5050610a0d613674565b610a178183612f7b565b6001600160a01b0385811695909190610a3230881415612f30565b828416928387526018865260408720610a4c84825461249f565b9055610a5a8360155461249f565b6015556009541690600c5490823b15610bb557604051630208d92960e11b81523060048201526001600160a01b039190911660248201526044810191909152606481018390529086908290608490829084905af18015610baa57610b93575b50808596837f8ad4d3ff00da092c7ad9a573ea4f5f6a3dffc6712dc06d3f78f49b862297c40288610b2b9899a4818652602685526040862060285490818852865260408720548211600014610b6c57505084526026835260408420602854855283528360408120555b6011549061307f565b15610b34575080f35b6064906040519062461bcd60e51b82526004820152601160248201527013585c9ad95d0e881a5b9cdbdb1d995b9d607a1b6044820152fd5b9091865260268552604086209086528452610b8c6040862091825461249f565b9055610b22565b610b2b9495610ba28392612301565b959450610ab9565b6040513d88823e3d90fd5b8780fd5b503461031e578060031936011261031e576020601e54604051908152f35b503461031e578060031936011261031e576060602454604051906001600160401b0380821683528160401c16602083015260801c6040820152f35b503461031e578060031936011261031e576020601a54604051908152f35b503461031e57604036600319011261031e57610c4a6120fd565b60243580928115801590610d01575b610c91575b50506040519182526001600160a01b031690339060008051602061395c83398151915290602090a3602060405160018152f35b33815260016020526040812054610caa83821015612c1e565b6001600160a01b0384169033829003610cc5575b5050610c5e565b604093610cdc91610cd7841515612c63565b61249f565b338352600160205283832055815220610cf68382546124ac565b905581388080610cbe565b50336001600160a01b03841614610c59565b503461031e57604036600319011261031e576060610d3b610d326120fd565b602435906125eb565b9060405192835260208301526040820152f35b503461031e578060031936011261031e576020602c54604051908152f35b503461031e57604036600319011261031e576020610d94610d8b6120fd565b602435906129c2565b604051908152f35b503461031e578060031936011261031e57808060018060a01b03600b541660405160208101906395d89b4160e01b825260048152610dd98161232a565b51915afa610de5613760565b915015610e4557610df8610353916137e7565b610e316023604051809362746d2d60e81b6020830152610e218151809260208686019101612129565b8101036003810184520182612397565b60405191829160208352602083019061214c565b50610353610e51613790565b610df8565b503461031e578060031936011261031e5760208054604051908152f35b503461031e57604036600319011261031e576004356001600160401b038111611088573660238201121561108857806004013582610eb0826123b8565b92610ebe6040519485612397565b82845260208401923660248284010111610618578060246020930185378401015260243561ffff811681036110845761010091828480518101031261108057610f069061274a565b610f1260408501612ca8565b91610f1f60608601612ca8565b9460808101519460a082015192610f3860c08401612cbc565b9160e08401519301519380421161095f578515611059577f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e266915b6001600160a01b0388168b52600460205260408b20805491906000198314611045579161ffff611002989694926108ed98969460018401905560405194602086015216604084015260018060a01b038a16606084015260018060a01b038c1660808401528a60a084015260c083015260e082015260e08152610ff381612360565b602081519101206108bc612af4565b6001600160a01b03838116911603610904571561102f57610370926001600160a01b039081169116612e9c565b610370926001600160a01b039081169116612e4e565b634e487b7160e01b8d52601160045260248dfd5b7f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d691610f72565b8480fd5b8380fd5b5080fd5b503461031e578060031936011261031e576005546040516001600160a01b039091168152602090f35b503461031e578060031936011261031e576020601b54604051908152f35b503461031e578060031936011261031e57601454604080516001600160801b038316815260809290921c602083015290f35b503461031e578060031936011261031e576020602e54604051908152f35b503461031e57604036600319011261031e5761114a6111406120fd565b6024359033612e4e565b602060405160018152f35b503461031e57602036600319011261031e576020906040906001600160a01b0361117d6120fd565b168152600483522054604051908152f35b503461031e578060031936011261031e57600f546040516001600160a01b039091168152602090f35b503461031e578060031936011261031e57610353604051610e31816111db8161227c565b0382612397565b503461031e57602036600319011261031e5760043590600982101561031e57602060ff61120e84612213565b54166040519015158152f35b503461031e57602036600319011261031e576020906040906001600160a01b036112426120fd565b168152600183522054604051908152f35b503461031e578060031936011261031e57600a546040516001600160a01b039091168152602090f35b503461031e578060031936011261031e57611295613181565b5060806112a06131b9565b509350505050604051916001600160401b0380825116845260208201511660208401526040600180861b039101511660408301526060820152f35b503461031e578060031936011261031e576020601c54604051908152f35b503461031e578060031936011261031e5760206001600160401b03602d5460401c16604051908152f35b503461031e578060031936011261031e5760206001600160401b03602d5416604051908152f35b503461031e578060031936011261031e5760206001600160401b03602f5416604051908152f35b503461031e578060031936011261031e576020602154604051908152f35b503461031e578060031936011261031e576006546001600160a01b0390818116338190036113f957806005549384167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08680a36001600160a01b0319928316176005551660065580f35b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b503461031e578060031936011261031e576020602954604051908152f35b503461031e57602036600319011261031e576020906040906001600160a01b036114836120fd565b168152601783522054604051908152f35b503461031e578060031936011261031e576020601554604051908152f35b503461031e578060031936011261031e576020600e54604051908152f35b503461031e578060031936011261031e576020601654604051908152f35b503461031e57606036600319011261031e576020610d946044356024356004356124d2565b503461031e578060031936011261031e576020601154604051908152f35b503461031e578060031936011261031e57600d546040516001600160a01b039091168152602090f35b503461031e578060031936011261031e576020601254604051908152f35b503461031e578060031936011261031e576020610d94612af4565b503461031e578060031936011261031e576020601954604051908152f35b503461031e578060031936011261031e576020601354604051908152f35b503461031e578060031936011261031e57808060018060a01b03600d5416604051602081019063313ce56760e01b82526004815261160c8161232a565b51915afa90611619613760565b9180611656575b1561164b5760208280518101031261031e57506116406020809201612cbc565b60ff60405191168152f35b505060206012611640565b506020825114611620565b503461031e57611670366121de565b9192826116ac575b506040519182526001600160a01b0390811692169060008051602061395c83398151915290602090a3602060405160018152f35b6001600160a01b038481168083526001602090815260408420549286906116d582861015612c1e565b8616938484036116ea575b5050505050611678565b838652600283526040808720338852845286205460018101611754575b50926001602096936117328794604097610cd760008051602061395c8339815191529c9a1515612c63565b92855252838320558152206117488582546124ac565b905591388085816116e0565b909181106117a857926001602096936117328a60008051602061395c8339815191529a98956117858260409a61249f565b86895260028552898920338a528552898920559497509497995050939650611707565b60405162461bcd60e51b815260048101849052601860248201527745524332303a20616c6c6f77616e636520746f6f206c6f7760401b6044820152606490fd5b503461031e576117f73661218f565b9083959495421161095f576001600160a01b03878116808a52600460205260408a20805491969295929060001983146118a857826118999694928d9260016108ed98960190556040519160208301937f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d6855260408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e081526108b181612360565b16036109045761037092612e4e565b634e487b7160e01b8c52601160045260248cfd5b503461031e57602036600319011261031e576020906040906001600160a01b036118e46120fd565b168152601883522054604051908152f35b503461031e578060031936011261031e57602060255460801c604051908152f35b503461031e57604036600319011261031e5760043560098110156110885761193c612171565b6008549091906001600160a01b031633036119f25760ff61195c82612213565b541615159115159182146119b857808260ff61197a6119a894612213565b54161515827feeec81de25875ce1725479bb76f720a8defdb43dea041919ae37bb4aae9847c08780a4612213565b9060ff8019835416911617905580f35b60405162461bcd60e51b81526020600482015260126024820152714d61726b65743a2073616d6520737461746560701b6044820152606490fd5b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881d5b985d5d1a1bdc9a5e995960621b6044820152606490fd5b503461031e5761018036600319011261031e5760246001600160a01b0381358181169081900361108457604435916001600160401b0390818411611eab5736602385011215611eab578360040135918211611eab5736858386010111611eab576064359181831680930361060957611aab826005541633146123d3565b60043594620186a094611ac08688111561241e565b6020968088547fc353b09af857951dccce61b43a5854fc45beceed36c50e5d4cc2e71858a8e0df8c80a3875580611e6d575b508682611d32575b50505081611cf2575b505060843580611cdd575b5060a43580611cc8575b5060c43580611cb4575b5060e43580611c93575b506101043580611c72575b506101243580611c41575b50610144359081611bd1575b5050610164359182611b5e578380f35b601e548310611b73575050601f553880808380f35b9060326084926040519262461bcd60e51b845260048401528201527f4d61726b65743a206c69717569646174696f6e436f6c6c61746572616c697a616044820152711d1a5bdb94985d19481d1bdbc81cdb585b1b60721b6064820152fd5b611bdd9082111561241e565b601f548111611bf057601e553880611b4e565b5060256084926040519262461bcd60e51b845260048401528201527f4d61726b65743a20636f6c6c61746572616c697a6174696f6e5261746520746f6044820152646f2062696760d81b6064820152fd5b806016547fae6e0ab3b95f0a53ff9660a390ccedcbbf1f2355dce974a9841af106fddcfaba8780a360165538611b42565b611c7d82821061241e565b611c8a601b54821161241e565b601c5538611b37565b611c9e82821061241e565b611cab601c54821061241e565b601b5538611b2c565b611cbf82821061241e565b601d5538611b22565b611cd48282111561241e565b601a5538611b18565b611ce98282111561241e565b60195538611b0e565b816008549182167f5a62d22209e370e38eea92cfddcd228e656e6ec139243392a760a7769f5877fd8880a36001600160a01b031916176008553880611b03565b8291611d3f601054612242565b601f8111611e1c575b508990601f8411600114611dad578a93611da0575b5050508160011b916000199060031b1c1916176010555b7fa6f004921c944d4b8bf6e38462b00f36a58d62495d56b51f571ab78f732c98158680a1388086611afa565b0101359050863880611d5d565b60108b52888b20601f198516955092509089908b5b8a878210611e015750508460019610611de5575b50505050811b01601055611d74565b60001960f88660031b161c199201013516905538808881611dd6565b8483019093013585556001909401938b929182019101611dc2565b9150915060108952868920601f840160051c8101888510611e66575b91849391601f8b94920160051c01905b818110611e555750611d48565b8b81558594508a9350600101611e48565b5080611e38565b600f80546001600160a01b0319169190911790557f0b2d6eb667d0522c3eb86e4288afecae6c11591ffd1345d4d12407e0598bca9b8880a138611af2565b8580fd5b503461031e57604036600319011261031e5761114a611ecc6120fd565b6024359033612e9c565b503461031e57606036600319011261031e57611ef06120fd565b611ef8612171565b611f00612180565b9060018060a01b03928391611f1a836005541633146123d3565b15611fbe571690811590811591611fb6575b5015611f7957806005549283167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08580a36001600160a01b03199182161760055560068054909116905580f35b60405162461bcd60e51b81526020600482015260156024820152744f776e61626c653a207a65726f206164647265737360581b6044820152606490fd5b905038611f2c565b9150501660018060a01b0319600654161760065580f35b503461031e578060031936011261031e57808060018060a01b03600b541660405160208101906306fdde0360e01b8252600481526120128161232a565b51915afa61201e613760565b91501561207b57612031610353916137e7565b610e316034604051809373546170696f63612053696e67756c61726974792d60601b602083015261206b8151809260208686019101612129565b8101036014810184520182612397565b50610353612087613790565b612031565b503461031e578060031936011261031e5760406120a7612757565b825191151582526020820152f35b9050346110885760403660031901126110885760406020926120d56120fd565b6120dd612113565b6001600160a01b0391821683526003865283832091168252845220548152f35b600435906001600160a01b038216820361057f57565b602435906001600160a01b038216820361057f57565b60005b83811061213c5750506000910152565b818101518382015260200161212c565b9060209161216581518092818552858086019101612129565b601f01601f1916010190565b60243590811515820361057f57565b60443590811515820361057f57565b60e090600319011261057f576001600160a01b0390600435828116810361057f5791602435908116810361057f5790604435906064359060843560ff8116810361057f579060a4359060c43590565b606090600319011261057f576001600160a01b0390600435828116810361057f5791602435908116810361057f579060443590565b600981101561222c576000526007602052604060002090565b634e487b7160e01b600052602160045260246000fd5b90600182811c92168015612272575b602083101461225c57565b634e487b7160e01b600052602260045260246000fd5b91607f1691612251565b6010546000929161228c82612242565b9081815260019283811690816000146122e657506001146122ac57505050565b9092935060106000526020928360002092846000945b8386106122d25750505050010190565b8054858701830152940193859082016122c2565b91935050602093945060ff191683830152151560051b010190565b6001600160401b03811161231457604052565b634e487b7160e01b600052604160045260246000fd5b604081019081106001600160401b0382111761231457604052565b606081019081106001600160401b0382111761231457604052565b61010081019081106001600160401b0382111761231457604052565b608081019081106001600160401b0382111761231457604052565b90601f801991011681019081106001600160401b0382111761231457604052565b6001600160401b03811161231457601f01601f191660200190565b156123da57565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b1561242557565b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881b9bdd081d985b1a59607a1b6044820152606490fd5b8181029291811591840414171561094957565b811561247b570490565b634e487b7160e01b600052601260045260246000fd5b604d811161094957600a0a90565b9190820391821161094957565b9190820180921161094957565b8181039291600013801582851316918412161761094957565b60145491929161251b9161250c91612502916124f8906001600160801b0383169061245e565b9060801c90612471565b93601f549061245e565b61251583612491565b90612471565b8083106125e35761252f61256b918461249f565b91612566612560612557601e5461255161254886612491565b602154906124ac565b9061245e565b61251584612491565b91612491565b6124b9565b6509184e72a0009081810291818305149015171561094957670de0b6b3a76400009182810292818405149015171561094957801561247b57600160ff1b9180831460001983141661094957059060008212156125dc57811461094957600003905b8082116125d7575090565b905090565b50906125cc565b505050600090565b9160018060a01b03809316916000938385526020601781526040918287205490811561273d578783855161261e8161232a565b828152015261262b6131b9565b505050505091905061263e8615156128bf565b6009541683600c54898b52601882526064878c2054918851948593849263442c159960e01b8452600484015260248301528d60448301525afa908115612733578991612700575b50916126e06126f497989994926126bb886126b66126ad601898620186a0602254049061245e565b601e549061245e565b612471565b815190936001600160801b039186916126d69184169061245e565b9201511690612471565b8181106126f857035b97835252205461290b565b9091565b5050826126e9565b90508381813d831161272c575b6127178183612397565b8101031261272857516126e0612685565b8880fd5b503d61270d565b85513d8b823e3d90fd5b5086955085949350505050565b5190811515820361057f57565b600f546040805163d6d7d52560e01b8152602060048201529290916001600160a01b031682848061278a6024820161227c565b0381600080955af180156128b35781948291612877575b5092841561281a5783156127e057507f9f9192b5edb17356c524e08d9e025c8e2f6307e6ea52fb7968faa3081f51c3c883918260115580a25b42601355565b5162461bcd60e51b81526020600482015260146024820152734d61726b65743a20696e76616c6964207261746560601b6044820152606490fd5b9192505061282d601354601254906124ac565b421161283d5750601154906127da565b5162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881c985d19481d1bdbc81bdb1960621b6044820152606490fd5b809550848092503d83116128ac575b6128908183612397565b8101031261031e5760206128a38561274a565b940151386127a1565b503d612886565b508251903d90823e3d90fd5b156128c657565b60405162461bcd60e51b815260206004820152601e60248201527f4d61726b65743a2065786368616e676552617465206e6f742076616c696400006044820152606490fd5b6129168215156128bf565b602060018060a01b0360095416916064600c54604051948593849263442c159960e01b845260048401526024830152600060448301525afa9081156129b657600091612983575b50906126b661296f926022549061245e565b620186a061297f601e548361245e565b0491565b906020823d82116129ae575b8161299c60209383612397565b8101031261031e5750516126b661295d565b3d915061298f565b6040513d6000823e3d90fd5b6001600160a01b031660008181526018602052604081205490926129e59161290b565b918352601760205260408320548015612aee578115612aee57818110612aee5782811015612ae457601454612a2e918391610cd7916124f8906001600160801b0383169061245e565b90620186a09283830292808404851490151715612ad057612a5392916125159161249f565b91601b5491601c5493612a6685856124b9565b80820291848212600160ff1b821416612ad0578183051490151715612abc5705818482019485129112908015821691151617612aa857508082126125d7575090565b634e487b7160e01b81526011600452602490fd5b634e487b7160e01b83526011600452602483fd5b634e487b7160e01b85526011600452602485fd5b50505050601b5490565b50505090565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03161480612bf5575b15612b4f577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f000000000000000000000000000000000000000000000000000000000000000082527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a0815260c081018181106001600160401b038211176123145760405251902090565b507f00000000000000000000000000000000000000000000000000000000000000004614612b26565b15612c2557565b60405162461bcd60e51b815260206004820152601660248201527545524332303a2062616c616e636520746f6f206c6f7760501b6044820152606490fd5b15612c6a57565b60405162461bcd60e51b815260206004820152601660248201527545524332303a206e6f207a65726f206164647265737360501b6044820152606490fd5b51906001600160a01b038216820361057f57565b519060ff8216820361057f57565b600581101561222c5780612cdb5750565b60018103612d235760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b6044820152606490fd5b60028103612d705760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606490fd5b600314612d7957565b60405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608490fd5b9291906fa2a8918ca85bafe22016d0b997e4df60600160ff1b038311612e425791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa15612e355781516001600160a01b03811615612e2f579190565b50600190565b50604051903d90823e3d90fd5b50505050600090600390565b7fe50de2333c10a9502fcb1d8ae13a51bbf423153dfc63c2b8997665b32154afc360018060a01b038092169160009083825260036020526040822094169384825260205284604082205580a4565b909160207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259160018060a01b03809416938460005260028352604060002095169485600052825280604060002055604051908152a3565b15612efa57565b60405162461bcd60e51b815260206004820152600e60248201526d13585c9ad95d0e881c185d5cd95960921b6044820152606490fd5b15612f3757565b606460405162461bcd60e51b815260206004820152602060248201527f4d61726b65743a2063616e6e6f742065786563757465206f6e20697473656c666044820152fd5b6001600160a01b0316338103612f8f575050565b6000818152602090600382526040918282203383528152848383205410612ff95783825260038152828220338352815282822054600101612fd2575b5050505050565b612fed9382526003815282822090338352522091825461249f565b90553880808080612fcb565b60649083519062461bcd60e51b82526004820152601460248201527313585c9ad95d0e881b9bdd08185c1c1c9bdd995960621b6044820152fd5b604051906130408261232a565b6014546001600160801b038116835260801c6020830152565b604051906130668261232a565b6025546001600160801b038116835260801c6020830152565b919060018060a01b03806000941684526020601781526040852054908115613177576018815260408620548015612fcb57816130b9613033565b9460095416916064600c54604051948593849263442c159960e01b8452600484015260248301528b60448301525afa96871561316b578097613135575b50506126d66131156126ad613130969798620186a0602254049061245e565b9561312b60018060801b0394858751169061245e565b61245e565b111590565b9096508187813d8311613164575b61314d8183612397565b8101031261031e57509451946126d66131156130f6565b503d613143565b604051903d90823e3d90fd5b5060019450505050565b6040519061318e82612345565b60006040838281528260208201520152565b6001600160801b03918216908216019190821161094957565b6131c1613181565b50600060206040516131d28161232a565b8281520152600060206040516131e78161232a565b8281520152604051906131f982612345565b602454916001600160401b038316815260208101926001600160401b038160401c16845260801c6040820152809261322f613033565b92613238613059565b92600060018060a01b0360095416600e549460018060801b038751166040519063442c159960e01b8252876004830152602482015260006044820152602081606481865afa80156129b657600090613640575b89516132a192506001600160801b0316906124ac565b8061360b575060005b6132bf6001600160401b03829351164261249f565b9485156135e1575050426001600160401b031660208a8101919091528801516001600160801b03161561359757506020670de0b6b3a764000061331c8561312b8c6001600160401b038d60018060801b039051169151169061245e565b895191900496906001600160801b039061333b90828a169083166131a0565b168952875160405163442c159960e01b815260048101929092526001600160801b031660248201526000604482015291829060649082905afa80156129b657600090613563575b875161339892506001600160801b0316906124ac565b926133c6846126b6620186a06133b0601a548a61245e565b60208c01516001600160801b031691900461245e565b6040890180519195916001600160801b0380881692916133e990849083166131a0565b16905260208801805190916001600160801b0391613409919083166131a0565b1690528061352e575060005b602a54909384828110156134a95761342d908361249f565b90670de0b6b3a7640000820291808304670de0b6b3a76400001490151715610949576126b661348161347b61346d6001600160401b039661348b96612471565b9361312b602e54958061245e565b836124ac565b91848d511661245e565b168089526001600160401b03602d54168091106134a55750565b8852565b909150602b548082116134bb57505050565b6134c49161249f565b670de0b6b3a7640000810290808204670de0b6b3a76400001490151715610949576001600160401b03916126b661350761347b61346d61351095602c5490612471565b848d511661245e565b81602d5460401c16808211613526575b50168852565b905038613520565b87516001600160801b0316670de0b6b3a76400008181029291808404909114901517156109495761355e91612471565b613415565b506020813d60201161358f575b8161357d60209383612397565b8101031261057f576133989051613382565b3d9150613570565b9697939450509350506001600160401b038151166001600160401b03602f54168091036135d5575b5093926135ca613059565b926000926000929190565b815260019250386135bf565b9750985050505050925050916135f5613033565b916135fe613059565b9160009160009190600090565b88516001600160801b0316670de0b6b3a76400008181029291808404909114901517156109495761363b91612471565b6132aa565b506020813d60201161366c575b8161365a60209383612397565b8101031261057f576132a1905161328b565b3d915061364d565b602060406136806131b9565b9397959390929015613727575050506001600160401b03602f54166000807f33af5ce86e8438eff54589f85332916444457dfa8685493fbd579b809097026b868851838152a45b6001600160401b03815116838201519160018060801b0319958691015160801b16916001600160401b0360401b9060401b16171760245560018060801b039083838383511692015160801b161760145583511692015160801b1617602555565b7f33af5ce86e8438eff54589f85332916444457dfa8685493fbd579b809097026b866001600160401b03865116948951908152a46136c7565b3d1561378b573d90613771826123b8565b9161377f6040519384612397565b82523d6000602084013e565b606090565b6040519061379d8261232a565b60038252623f3f3f60e81b6020830152565b9081518110156137c0570160200190565b634e487b7160e01b600052603260045260246000fd5b60ff1660ff81146109495760010190565b8051604081106138625750805181019060208181840193031261057f576020810151906001600160401b03821161057f570181603f8201121561057f576020810151613832816123b8565b926138406040519485612397565b8184526040828401011161057f5761385f916040602085019101612129565b90565b602092908303613950576000805b60ff81168581109081613931575b50156138925761388d906137d6565b613870565b9260ff809416926138a2846123b8565b936138b06040519586612397565b8085526138bf601f19916123b8565b013687860137825b85811687811080613914575b156139095761390491906138fe6001600160f81b03196138f383886137af565b5116871a91886137af565b536137d6565b6138c7565b505094505050905090565b506001600160f81b031961392882866137af565b511615156138d3565b6001600160f81b0319915061394690866137af565b511615153861387e565b91505061385f61379056feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa26469706673582212202a72a721d65bf335e9be3a4064c251679e50f6b2d87134faff5f08152fb0d7f164736f6c63430008120033", - "deployedBytecode": "0x608080604052600436101561001357600080fd5b600090813560e01c908162a02a20146120b55750806302ce728f1461208c57806306fdde0314611fd5578063078dfbe714611ed6578063095ea7b314611eaf5780630996efb714611a2e5780630c4e84f01461191657806318160ddd146118f55780631c9e379b146118bc5780631da8bf10146117e857806323b872dd14611661578063313ce567146115cf578063331960ff146115b157806334d441d0146115935780633644e5151461157857806337b6b7b91461155a57806338d52e0f146115315780633ba0b9a9146115135780633f741adb146114ee57806340626d8b146114d057806344de240a146114b2578063473e3ce71461149457806348e4163e1461145b5780634d7f2a341461143d5780634e71e0c81461138f578063529898f21461137157806352f353eb1461134a578063551402321461132357806355c2ab94146112f957806357935462146112db5780635dfe04e81461127c5780636c3d8b8f1461125357806370a082311461121a57806372778547146111e257806374645ff3146111b75780637dc0d1d01461118e5780637ecebe00146111555780637fa0b84e14611123578063821226e8146111055780638285ef40146110d35780638c5d0ed3146110b55780638da5cb5b1461108c578063910dd7c814610e73578063959916dc14610e5657806395d89b4114610d9c57806399a9702814610d6c5780639c5d719214610d4e5780639e15e89f14610d13578063a9059cbb14610c30578063b0e21e8a14610c12578063b27c0e7414610bd7578063bb4cfe3b14610bb9578063cce19f81146109cd578063ce8849ed146109a4578063d505accf14610803578063d8dfeb45146107da578063dd62ed3e1461078b578063de40657714610762578063e0996cb614610744578063e30c39781461071b578063e9a49252146103cd578063ea64dd56146103af578063eec0f42e14610391578063f42760b714610373578063f8ba4cff14610357578063f9557ccb146103215763ffe04c661461030157600080fd5b3461031e578060031936011261031e576020602a54604051908152f35b80fd5b503461031e578060031936011261031e57602554604080516001600160801b038316815260809290921c602083015290f35b0390f35b503461031e578060031936011261031e57610370613674565b80f35b503461031e578060031936011261031e576020602b54604051908152f35b503461031e578060031936011261031e576020600c54604051908152f35b503461031e578060031936011261031e576020601f54604051908152f35b503461031e5760a036600319011261031e576103e76120fd565b6103ef612113565b906103f8612180565b916064359160843593600260005260206007815261041e60ff6040600020541615612ef3565b6001600160a01b039384169461043630871415612f30565b861561069d575b6104478785612f7b565b861561061c575b5084875260188152604087206104658782546124ac565b905560155461047487826124ac565b601555600c5490888415610596575082866009541692604460405180958193627eeac760e11b835230600484015260248301525afa801561058b578990610557575b6104c0925061249f565b8611610523575b848752602681526040872090602854885252604086206104e88682546124ac565b90551561051e575080600954165b167f9ed03113de523cebfe5e49d5f8e12894b1c0d42ce805990461726444c90eab878480a480f35b6104f6565b6064906040519062461bcd60e51b82526004820152600d60248201526c0a68e987440e8dede40daeac6d609b1b6044820152fd5b508282813d8311610584575b61056d8183612397565b8101031261057f576104c091516104b6565b600080fd5b503d610563565b6040513d8b823e3d90fd5b9190508560095416803b1561061857604051630208d92960e11b81526001600160a01b038716600482015230602482015260448101929092526064820189905282908290608490829084905af1801561060d576105f5575b50506104c7565b6105fe90612301565b6106095786386105ee565b8680fd5b6040513d84823e3d90fd5b8280fd5b908096508460095416916064600c546040519485938492638eb22cdd60e01b8452600484015260248301528b60448301525afa908115610692578791610665575b50943861044e565b90508581813d831161068b575b61067c8183612397565b8101031261057f57513861065d565b503d610672565b6040513d89823e3d90fd5b9550836009541681600c54606460405180948193638eb22cdd60e01b835260048301528b60248301528c60448301525afa9081156107105788916106e3575b509561043d565b90508181813d8311610709575b6106fa8183612397565b8101031261057f5751386106dc565b503d6106f0565b6040513d8a823e3d90fd5b503461031e578060031936011261031e576006546040516001600160a01b039091168152602090f35b503461031e578060031936011261031e576020601d54604051908152f35b503461031e578060031936011261031e576009546040516001600160a01b039091168152602090f35b503461031e57604036600319011261031e576107a56120fd565b60406107af612113565b9260018060a01b03809316815260026020522091166000526020526020604060002054604051908152f35b503461031e578060031936011261031e57600b546040516001600160a01b039091168152602090f35b503461031e576108123661218f565b91839193959495421161095f5760018060a01b03928388169485600052600460205260406000209283546000198114610949576108f5956108ed956001830190556040519060208201927f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e2668452600060408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e081526108b181612360565b5190206108bc612af4565b9060405190602082019261190160f01b845260228301526042820152604281526108e58161237c565b519020612dc9565b919091612cca565b16036109045761037092612e9c565b60405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152606490fd5b634e487b7160e01b600052601160045260246000fd5b60405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b503461031e578060031936011261031e576008546040516001600160a01b039091168152602090f35b503461031e576109dc366121de565b90929160038352602091600783526109fb60ff60408620541615612ef3565b610a03612757565b5050610a0d613674565b610a178183612f7b565b6001600160a01b0385811695909190610a3230881415612f30565b828416928387526018865260408720610a4c84825461249f565b9055610a5a8360155461249f565b6015556009541690600c5490823b15610bb557604051630208d92960e11b81523060048201526001600160a01b039190911660248201526044810191909152606481018390529086908290608490829084905af18015610baa57610b93575b50808596837f8ad4d3ff00da092c7ad9a573ea4f5f6a3dffc6712dc06d3f78f49b862297c40288610b2b9899a4818652602685526040862060285490818852865260408720548211600014610b6c57505084526026835260408420602854855283528360408120555b6011549061307f565b15610b34575080f35b6064906040519062461bcd60e51b82526004820152601160248201527013585c9ad95d0e881a5b9cdbdb1d995b9d607a1b6044820152fd5b9091865260268552604086209086528452610b8c6040862091825461249f565b9055610b22565b610b2b9495610ba28392612301565b959450610ab9565b6040513d88823e3d90fd5b8780fd5b503461031e578060031936011261031e576020601e54604051908152f35b503461031e578060031936011261031e576060602454604051906001600160401b0380821683528160401c16602083015260801c6040820152f35b503461031e578060031936011261031e576020601a54604051908152f35b503461031e57604036600319011261031e57610c4a6120fd565b60243580928115801590610d01575b610c91575b50506040519182526001600160a01b031690339060008051602061395c83398151915290602090a3602060405160018152f35b33815260016020526040812054610caa83821015612c1e565b6001600160a01b0384169033829003610cc5575b5050610c5e565b604093610cdc91610cd7841515612c63565b61249f565b338352600160205283832055815220610cf68382546124ac565b905581388080610cbe565b50336001600160a01b03841614610c59565b503461031e57604036600319011261031e576060610d3b610d326120fd565b602435906125eb565b9060405192835260208301526040820152f35b503461031e578060031936011261031e576020602c54604051908152f35b503461031e57604036600319011261031e576020610d94610d8b6120fd565b602435906129c2565b604051908152f35b503461031e578060031936011261031e57808060018060a01b03600b541660405160208101906395d89b4160e01b825260048152610dd98161232a565b51915afa610de5613760565b915015610e4557610df8610353916137e7565b610e316023604051809362746d2d60e81b6020830152610e218151809260208686019101612129565b8101036003810184520182612397565b60405191829160208352602083019061214c565b50610353610e51613790565b610df8565b503461031e578060031936011261031e5760208054604051908152f35b503461031e57604036600319011261031e576004356001600160401b038111611088573660238201121561108857806004013582610eb0826123b8565b92610ebe6040519485612397565b82845260208401923660248284010111610618578060246020930185378401015260243561ffff811681036110845761010091828480518101031261108057610f069061274a565b610f1260408501612ca8565b91610f1f60608601612ca8565b9460808101519460a082015192610f3860c08401612cbc565b9160e08401519301519380421161095f578515611059577f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e266915b6001600160a01b0388168b52600460205260408b20805491906000198314611045579161ffff611002989694926108ed98969460018401905560405194602086015216604084015260018060a01b038a16606084015260018060a01b038c1660808401528a60a084015260c083015260e082015260e08152610ff381612360565b602081519101206108bc612af4565b6001600160a01b03838116911603610904571561102f57610370926001600160a01b039081169116612e9c565b610370926001600160a01b039081169116612e4e565b634e487b7160e01b8d52601160045260248dfd5b7f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d691610f72565b8480fd5b8380fd5b5080fd5b503461031e578060031936011261031e576005546040516001600160a01b039091168152602090f35b503461031e578060031936011261031e576020601b54604051908152f35b503461031e578060031936011261031e57601454604080516001600160801b038316815260809290921c602083015290f35b503461031e578060031936011261031e576020602e54604051908152f35b503461031e57604036600319011261031e5761114a6111406120fd565b6024359033612e4e565b602060405160018152f35b503461031e57602036600319011261031e576020906040906001600160a01b0361117d6120fd565b168152600483522054604051908152f35b503461031e578060031936011261031e57600f546040516001600160a01b039091168152602090f35b503461031e578060031936011261031e57610353604051610e31816111db8161227c565b0382612397565b503461031e57602036600319011261031e5760043590600982101561031e57602060ff61120e84612213565b54166040519015158152f35b503461031e57602036600319011261031e576020906040906001600160a01b036112426120fd565b168152600183522054604051908152f35b503461031e578060031936011261031e57600a546040516001600160a01b039091168152602090f35b503461031e578060031936011261031e57611295613181565b5060806112a06131b9565b509350505050604051916001600160401b0380825116845260208201511660208401526040600180861b039101511660408301526060820152f35b503461031e578060031936011261031e576020601c54604051908152f35b503461031e578060031936011261031e5760206001600160401b03602d5460401c16604051908152f35b503461031e578060031936011261031e5760206001600160401b03602d5416604051908152f35b503461031e578060031936011261031e5760206001600160401b03602f5416604051908152f35b503461031e578060031936011261031e576020602154604051908152f35b503461031e578060031936011261031e576006546001600160a01b0390818116338190036113f957806005549384167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08680a36001600160a01b0319928316176005551660065580f35b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b503461031e578060031936011261031e576020602954604051908152f35b503461031e57602036600319011261031e576020906040906001600160a01b036114836120fd565b168152601783522054604051908152f35b503461031e578060031936011261031e576020601554604051908152f35b503461031e578060031936011261031e576020600e54604051908152f35b503461031e578060031936011261031e576020601654604051908152f35b503461031e57606036600319011261031e576020610d946044356024356004356124d2565b503461031e578060031936011261031e576020601154604051908152f35b503461031e578060031936011261031e57600d546040516001600160a01b039091168152602090f35b503461031e578060031936011261031e576020601254604051908152f35b503461031e578060031936011261031e576020610d94612af4565b503461031e578060031936011261031e576020601954604051908152f35b503461031e578060031936011261031e576020601354604051908152f35b503461031e578060031936011261031e57808060018060a01b03600d5416604051602081019063313ce56760e01b82526004815261160c8161232a565b51915afa90611619613760565b9180611656575b1561164b5760208280518101031261031e57506116406020809201612cbc565b60ff60405191168152f35b505060206012611640565b506020825114611620565b503461031e57611670366121de565b9192826116ac575b506040519182526001600160a01b0390811692169060008051602061395c83398151915290602090a3602060405160018152f35b6001600160a01b038481168083526001602090815260408420549286906116d582861015612c1e565b8616938484036116ea575b5050505050611678565b838652600283526040808720338852845286205460018101611754575b50926001602096936117328794604097610cd760008051602061395c8339815191529c9a1515612c63565b92855252838320558152206117488582546124ac565b905591388085816116e0565b909181106117a857926001602096936117328a60008051602061395c8339815191529a98956117858260409a61249f565b86895260028552898920338a528552898920559497509497995050939650611707565b60405162461bcd60e51b815260048101849052601860248201527745524332303a20616c6c6f77616e636520746f6f206c6f7760401b6044820152606490fd5b503461031e576117f73661218f565b9083959495421161095f576001600160a01b03878116808a52600460205260408a20805491969295929060001983146118a857826118999694928d9260016108ed98960190556040519160208301937f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d6855260408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e081526108b181612360565b16036109045761037092612e4e565b634e487b7160e01b8c52601160045260248cfd5b503461031e57602036600319011261031e576020906040906001600160a01b036118e46120fd565b168152601883522054604051908152f35b503461031e578060031936011261031e57602060255460801c604051908152f35b503461031e57604036600319011261031e5760043560098110156110885761193c612171565b6008549091906001600160a01b031633036119f25760ff61195c82612213565b541615159115159182146119b857808260ff61197a6119a894612213565b54161515827feeec81de25875ce1725479bb76f720a8defdb43dea041919ae37bb4aae9847c08780a4612213565b9060ff8019835416911617905580f35b60405162461bcd60e51b81526020600482015260126024820152714d61726b65743a2073616d6520737461746560701b6044820152606490fd5b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881d5b985d5d1a1bdc9a5e995960621b6044820152606490fd5b503461031e5761018036600319011261031e5760246001600160a01b0381358181169081900361108457604435916001600160401b0390818411611eab5736602385011215611eab578360040135918211611eab5736858386010111611eab576064359181831680930361060957611aab826005541633146123d3565b60043594620186a094611ac08688111561241e565b6020968088547fc353b09af857951dccce61b43a5854fc45beceed36c50e5d4cc2e71858a8e0df8c80a3875580611e6d575b508682611d32575b50505081611cf2575b505060843580611cdd575b5060a43580611cc8575b5060c43580611cb4575b5060e43580611c93575b506101043580611c72575b506101243580611c41575b50610144359081611bd1575b5050610164359182611b5e578380f35b601e548310611b73575050601f553880808380f35b9060326084926040519262461bcd60e51b845260048401528201527f4d61726b65743a206c69717569646174696f6e436f6c6c61746572616c697a616044820152711d1a5bdb94985d19481d1bdbc81cdb585b1b60721b6064820152fd5b611bdd9082111561241e565b601f548111611bf057601e553880611b4e565b5060256084926040519262461bcd60e51b845260048401528201527f4d61726b65743a20636f6c6c61746572616c697a6174696f6e5261746520746f6044820152646f2062696760d81b6064820152fd5b806016547fae6e0ab3b95f0a53ff9660a390ccedcbbf1f2355dce974a9841af106fddcfaba8780a360165538611b42565b611c7d82821061241e565b611c8a601b54821161241e565b601c5538611b37565b611c9e82821061241e565b611cab601c54821061241e565b601b5538611b2c565b611cbf82821061241e565b601d5538611b22565b611cd48282111561241e565b601a5538611b18565b611ce98282111561241e565b60195538611b0e565b816008549182167f5a62d22209e370e38eea92cfddcd228e656e6ec139243392a760a7769f5877fd8880a36001600160a01b031916176008553880611b03565b8291611d3f601054612242565b601f8111611e1c575b508990601f8411600114611dad578a93611da0575b5050508160011b916000199060031b1c1916176010555b7fa6f004921c944d4b8bf6e38462b00f36a58d62495d56b51f571ab78f732c98158680a1388086611afa565b0101359050863880611d5d565b60108b52888b20601f198516955092509089908b5b8a878210611e015750508460019610611de5575b50505050811b01601055611d74565b60001960f88660031b161c199201013516905538808881611dd6565b8483019093013585556001909401938b929182019101611dc2565b9150915060108952868920601f840160051c8101888510611e66575b91849391601f8b94920160051c01905b818110611e555750611d48565b8b81558594508a9350600101611e48565b5080611e38565b600f80546001600160a01b0319169190911790557f0b2d6eb667d0522c3eb86e4288afecae6c11591ffd1345d4d12407e0598bca9b8880a138611af2565b8580fd5b503461031e57604036600319011261031e5761114a611ecc6120fd565b6024359033612e9c565b503461031e57606036600319011261031e57611ef06120fd565b611ef8612171565b611f00612180565b9060018060a01b03928391611f1a836005541633146123d3565b15611fbe571690811590811591611fb6575b5015611f7957806005549283167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08580a36001600160a01b03199182161760055560068054909116905580f35b60405162461bcd60e51b81526020600482015260156024820152744f776e61626c653a207a65726f206164647265737360581b6044820152606490fd5b905038611f2c565b9150501660018060a01b0319600654161760065580f35b503461031e578060031936011261031e57808060018060a01b03600b541660405160208101906306fdde0360e01b8252600481526120128161232a565b51915afa61201e613760565b91501561207b57612031610353916137e7565b610e316034604051809373546170696f63612053696e67756c61726974792d60601b602083015261206b8151809260208686019101612129565b8101036014810184520182612397565b50610353612087613790565b612031565b503461031e578060031936011261031e5760406120a7612757565b825191151582526020820152f35b9050346110885760403660031901126110885760406020926120d56120fd565b6120dd612113565b6001600160a01b0391821683526003865283832091168252845220548152f35b600435906001600160a01b038216820361057f57565b602435906001600160a01b038216820361057f57565b60005b83811061213c5750506000910152565b818101518382015260200161212c565b9060209161216581518092818552858086019101612129565b601f01601f1916010190565b60243590811515820361057f57565b60443590811515820361057f57565b60e090600319011261057f576001600160a01b0390600435828116810361057f5791602435908116810361057f5790604435906064359060843560ff8116810361057f579060a4359060c43590565b606090600319011261057f576001600160a01b0390600435828116810361057f5791602435908116810361057f579060443590565b600981101561222c576000526007602052604060002090565b634e487b7160e01b600052602160045260246000fd5b90600182811c92168015612272575b602083101461225c57565b634e487b7160e01b600052602260045260246000fd5b91607f1691612251565b6010546000929161228c82612242565b9081815260019283811690816000146122e657506001146122ac57505050565b9092935060106000526020928360002092846000945b8386106122d25750505050010190565b8054858701830152940193859082016122c2565b91935050602093945060ff191683830152151560051b010190565b6001600160401b03811161231457604052565b634e487b7160e01b600052604160045260246000fd5b604081019081106001600160401b0382111761231457604052565b606081019081106001600160401b0382111761231457604052565b61010081019081106001600160401b0382111761231457604052565b608081019081106001600160401b0382111761231457604052565b90601f801991011681019081106001600160401b0382111761231457604052565b6001600160401b03811161231457601f01601f191660200190565b156123da57565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b1561242557565b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881b9bdd081d985b1a59607a1b6044820152606490fd5b8181029291811591840414171561094957565b811561247b570490565b634e487b7160e01b600052601260045260246000fd5b604d811161094957600a0a90565b9190820391821161094957565b9190820180921161094957565b8181039291600013801582851316918412161761094957565b60145491929161251b9161250c91612502916124f8906001600160801b0383169061245e565b9060801c90612471565b93601f549061245e565b61251583612491565b90612471565b8083106125e35761252f61256b918461249f565b91612566612560612557601e5461255161254886612491565b602154906124ac565b9061245e565b61251584612491565b91612491565b6124b9565b6509184e72a0009081810291818305149015171561094957670de0b6b3a76400009182810292818405149015171561094957801561247b57600160ff1b9180831460001983141661094957059060008212156125dc57811461094957600003905b8082116125d7575090565b905090565b50906125cc565b505050600090565b9160018060a01b03809316916000938385526020601781526040918287205490811561273d578783855161261e8161232a565b828152015261262b6131b9565b505050505091905061263e8615156128bf565b6009541683600c54898b52601882526064878c2054918851948593849263442c159960e01b8452600484015260248301528d60448301525afa908115612733578991612700575b50916126e06126f497989994926126bb886126b66126ad601898620186a0602254049061245e565b601e549061245e565b612471565b815190936001600160801b039186916126d69184169061245e565b9201511690612471565b8181106126f857035b97835252205461290b565b9091565b5050826126e9565b90508381813d831161272c575b6127178183612397565b8101031261272857516126e0612685565b8880fd5b503d61270d565b85513d8b823e3d90fd5b5086955085949350505050565b5190811515820361057f57565b600f546040805163d6d7d52560e01b8152602060048201529290916001600160a01b031682848061278a6024820161227c565b0381600080955af180156128b35781948291612877575b5092841561281a5783156127e057507f9f9192b5edb17356c524e08d9e025c8e2f6307e6ea52fb7968faa3081f51c3c883918260115580a25b42601355565b5162461bcd60e51b81526020600482015260146024820152734d61726b65743a20696e76616c6964207261746560601b6044820152606490fd5b9192505061282d601354601254906124ac565b421161283d5750601154906127da565b5162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881c985d19481d1bdbc81bdb1960621b6044820152606490fd5b809550848092503d83116128ac575b6128908183612397565b8101031261031e5760206128a38561274a565b940151386127a1565b503d612886565b508251903d90823e3d90fd5b156128c657565b60405162461bcd60e51b815260206004820152601e60248201527f4d61726b65743a2065786368616e676552617465206e6f742076616c696400006044820152606490fd5b6129168215156128bf565b602060018060a01b0360095416916064600c54604051948593849263442c159960e01b845260048401526024830152600060448301525afa9081156129b657600091612983575b50906126b661296f926022549061245e565b620186a061297f601e548361245e565b0491565b906020823d82116129ae575b8161299c60209383612397565b8101031261031e5750516126b661295d565b3d915061298f565b6040513d6000823e3d90fd5b6001600160a01b031660008181526018602052604081205490926129e59161290b565b918352601760205260408320548015612aee578115612aee57818110612aee5782811015612ae457601454612a2e918391610cd7916124f8906001600160801b0383169061245e565b90620186a09283830292808404851490151715612ad057612a5392916125159161249f565b91601b5491601c5493612a6685856124b9565b80820291848212600160ff1b821416612ad0578183051490151715612abc5705818482019485129112908015821691151617612aa857508082126125d7575090565b634e487b7160e01b81526011600452602490fd5b634e487b7160e01b83526011600452602483fd5b634e487b7160e01b85526011600452602485fd5b50505050601b5490565b50505090565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03161480612bf5575b15612b4f577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f000000000000000000000000000000000000000000000000000000000000000082527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a0815260c081018181106001600160401b038211176123145760405251902090565b507f00000000000000000000000000000000000000000000000000000000000000004614612b26565b15612c2557565b60405162461bcd60e51b815260206004820152601660248201527545524332303a2062616c616e636520746f6f206c6f7760501b6044820152606490fd5b15612c6a57565b60405162461bcd60e51b815260206004820152601660248201527545524332303a206e6f207a65726f206164647265737360501b6044820152606490fd5b51906001600160a01b038216820361057f57565b519060ff8216820361057f57565b600581101561222c5780612cdb5750565b60018103612d235760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b6044820152606490fd5b60028103612d705760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606490fd5b600314612d7957565b60405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608490fd5b9291906fa2a8918ca85bafe22016d0b997e4df60600160ff1b038311612e425791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa15612e355781516001600160a01b03811615612e2f579190565b50600190565b50604051903d90823e3d90fd5b50505050600090600390565b7fe50de2333c10a9502fcb1d8ae13a51bbf423153dfc63c2b8997665b32154afc360018060a01b038092169160009083825260036020526040822094169384825260205284604082205580a4565b909160207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259160018060a01b03809416938460005260028352604060002095169485600052825280604060002055604051908152a3565b15612efa57565b60405162461bcd60e51b815260206004820152600e60248201526d13585c9ad95d0e881c185d5cd95960921b6044820152606490fd5b15612f3757565b606460405162461bcd60e51b815260206004820152602060248201527f4d61726b65743a2063616e6e6f742065786563757465206f6e20697473656c666044820152fd5b6001600160a01b0316338103612f8f575050565b6000818152602090600382526040918282203383528152848383205410612ff95783825260038152828220338352815282822054600101612fd2575b5050505050565b612fed9382526003815282822090338352522091825461249f565b90553880808080612fcb565b60649083519062461bcd60e51b82526004820152601460248201527313585c9ad95d0e881b9bdd08185c1c1c9bdd995960621b6044820152fd5b604051906130408261232a565b6014546001600160801b038116835260801c6020830152565b604051906130668261232a565b6025546001600160801b038116835260801c6020830152565b919060018060a01b03806000941684526020601781526040852054908115613177576018815260408620548015612fcb57816130b9613033565b9460095416916064600c54604051948593849263442c159960e01b8452600484015260248301528b60448301525afa96871561316b578097613135575b50506126d66131156126ad613130969798620186a0602254049061245e565b9561312b60018060801b0394858751169061245e565b61245e565b111590565b9096508187813d8311613164575b61314d8183612397565b8101031261031e57509451946126d66131156130f6565b503d613143565b604051903d90823e3d90fd5b5060019450505050565b6040519061318e82612345565b60006040838281528260208201520152565b6001600160801b03918216908216019190821161094957565b6131c1613181565b50600060206040516131d28161232a565b8281520152600060206040516131e78161232a565b8281520152604051906131f982612345565b602454916001600160401b038316815260208101926001600160401b038160401c16845260801c6040820152809261322f613033565b92613238613059565b92600060018060a01b0360095416600e549460018060801b038751166040519063442c159960e01b8252876004830152602482015260006044820152602081606481865afa80156129b657600090613640575b89516132a192506001600160801b0316906124ac565b8061360b575060005b6132bf6001600160401b03829351164261249f565b9485156135e1575050426001600160401b031660208a8101919091528801516001600160801b03161561359757506020670de0b6b3a764000061331c8561312b8c6001600160401b038d60018060801b039051169151169061245e565b895191900496906001600160801b039061333b90828a169083166131a0565b168952875160405163442c159960e01b815260048101929092526001600160801b031660248201526000604482015291829060649082905afa80156129b657600090613563575b875161339892506001600160801b0316906124ac565b926133c6846126b6620186a06133b0601a548a61245e565b60208c01516001600160801b031691900461245e565b6040890180519195916001600160801b0380881692916133e990849083166131a0565b16905260208801805190916001600160801b0391613409919083166131a0565b1690528061352e575060005b602a54909384828110156134a95761342d908361249f565b90670de0b6b3a7640000820291808304670de0b6b3a76400001490151715610949576126b661348161347b61346d6001600160401b039661348b96612471565b9361312b602e54958061245e565b836124ac565b91848d511661245e565b168089526001600160401b03602d54168091106134a55750565b8852565b909150602b548082116134bb57505050565b6134c49161249f565b670de0b6b3a7640000810290808204670de0b6b3a76400001490151715610949576001600160401b03916126b661350761347b61346d61351095602c5490612471565b848d511661245e565b81602d5460401c16808211613526575b50168852565b905038613520565b87516001600160801b0316670de0b6b3a76400008181029291808404909114901517156109495761355e91612471565b613415565b506020813d60201161358f575b8161357d60209383612397565b8101031261057f576133989051613382565b3d9150613570565b9697939450509350506001600160401b038151166001600160401b03602f54168091036135d5575b5093926135ca613059565b926000926000929190565b815260019250386135bf565b9750985050505050925050916135f5613033565b916135fe613059565b9160009160009190600090565b88516001600160801b0316670de0b6b3a76400008181029291808404909114901517156109495761363b91612471565b6132aa565b506020813d60201161366c575b8161365a60209383612397565b8101031261057f576132a1905161328b565b3d915061364d565b602060406136806131b9565b9397959390929015613727575050506001600160401b03602f54166000807f33af5ce86e8438eff54589f85332916444457dfa8685493fbd579b809097026b868851838152a45b6001600160401b03815116838201519160018060801b0319958691015160801b16916001600160401b0360401b9060401b16171760245560018060801b039083838383511692015160801b161760145583511692015160801b1617602555565b7f33af5ce86e8438eff54589f85332916444457dfa8685493fbd579b809097026b866001600160401b03865116948951908152a46136c7565b3d1561378b573d90613771826123b8565b9161377f6040519384612397565b82523d6000602084013e565b606090565b6040519061379d8261232a565b60038252623f3f3f60e81b6020830152565b9081518110156137c0570160200190565b634e487b7160e01b600052603260045260246000fd5b60ff1660ff81146109495760010190565b8051604081106138625750805181019060208181840193031261057f576020810151906001600160401b03821161057f570181603f8201121561057f576020810151613832816123b8565b926138406040519485612397565b8184526040828401011161057f5761385f916040602085019101612129565b90565b602092908303613950576000805b60ff81168581109081613931575b50156138925761388d906137d6565b613870565b9260ff809416926138a2846123b8565b936138b06040519586612397565b8085526138bf601f19916123b8565b013687860137825b85811687811080613914575b156139095761390491906138fe6001600160f81b03196138f383886137af565b5116871a91886137af565b536137d6565b6138c7565b505094505050905090565b506001600160f81b031961392882866137af565b511615156138d3565b6001600160f81b0319915061394690866137af565b511615153861387e565b91505061385f61379056feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa26469706673582212202a72a721d65bf335e9be3a4064c251679e50f6b2d87134faff5f08152fb0d7f164736f6c63430008120033", + "bytecode": "0x6101408060405234620001e5576200001781620001ea565b601381526001602082017f546170696f63612053696e67756c617269747900000000000000000000000000815260206040516200005481620001ea565b8381520192603160f81b845251902091208160e052610100918183524660a0526040519160208301907f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f92838352604085015260608401524660808401523060a084015260a0835260c083019280841060018060401b03851117620001cf5760408490525190206080523060c052610120908152600580546001600160a01b0319163390811790915560007f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a362013880601b5562015f90601c55612710601d55612ee06020557f0bd4060688a1800ae986e4840aebc924bb40b5bf44de4583df2257220b54b77c6026557f7d1dc38e60930664f8cbf495da6556ca091d2f92d6550877750c049864b182306027556161a86028556032602f556139ca928362000207843960805183612b3c015260a05183612c07015260c05183612b06015260e05183612b8b01525182612bb101525181612b680152f35b634e487b7160e01b600052604160045260246000fd5b600080fd5b604081019081106001600160401b03821117620001cf5760405256fe608080604052600436101561001357600080fd5b600090813560e01c908162a02a20146120c45750806302ce728f1461209b57806306fdde0314611fe4578063078dfbe714611ee5578063095ea7b314611ebe5780630c4e84f014611da657806318160ddd14611d855780631c9e379b14611d4c5780631da8bf1014611c7857806323b872dd14611af1578063313ce56714611a5f578063331960ff14611a4157806334d441d014611a235780633644e51514611a0857806337b6b7b9146119ea57806338d52e0f146119c15780633ba0b9a9146119a35780633f741adb1461197e57806340626d8b1461196057806344de240a14611942578063473e3ce71461192457806348e4163e146118eb5780634d7f2a34146118cd5780634e71e0c81461181f578063529898f21461180257806352f353eb146117db57806355140232146117b457806355c2ab941461178a578063579354621461176c5780635dfe04e81461170d5780636c3d8b8f146116e457806370a08231146116ab578063727785471461167357806374645ff3146116485780637dc0d1d01461161f5780637ecebe00146115e65780637fa0b84e146115b4578063821226e8146115965780638285ef40146115645780638c5d0ed3146115465780638da5cb5b1461151d578063910dd7c814611304578063959916dc146112e657806395d89b411461122c57806399a97028146111fc5780639c5d7192146111de5780639e15e89f146111a3578063a9059cbb146110c0578063b0e21e8a146110a2578063b27c0e7414611067578063bb4cfe3b14611049578063cce19f8114610e5d578063ce8849ed14610e34578063d3fb2a38146109a4578063d505accf14610803578063d8dfeb45146107da578063dd62ed3e1461078b578063de40657714610762578063e0996cb614610744578063e30c39781461071b578063e9a49252146103cd578063ea64dd56146103af578063eec0f42e14610391578063f42760b714610373578063f8ba4cff14610357578063f9557ccb146103215763ffe04c661461030157600080fd5b3461031e578060031936011261031e576020602954604051908152f35b80fd5b503461031e578060031936011261031e57602454604080516001600160801b038316815260809290921c602083015290f35b0390f35b503461031e578060031936011261031e5761037061368d565b80f35b503461031e578060031936011261031e576020602a54604051908152f35b503461031e578060031936011261031e576020600c54604051908152f35b503461031e578060031936011261031e576020601f54604051908152f35b503461031e5760a036600319011261031e576103e761210c565b6103ef612122565b906103f861218f565b916064359160843593600260005260206007815261041e60ff6040600020541615612f02565b6001600160a01b039384169461043630871415612f3f565b861561069d575b6104478785612f8a565b861561061c575b5084875260188152604087206104658782546124bb565b905560155461047487826124bb565b601555600c5490888415610596575082866009541692604460405180958193627eeac760e11b835230600484015260248301525afa801561058b578990610557575b6104c092506124ae565b8611610523575b848752602581526040872090602754885252604086206104e88682546124bb565b90551561051e575080600954165b167f9ed03113de523cebfe5e49d5f8e12894b1c0d42ce805990461726444c90eab878480a480f35b6104f6565b6064906040519062461bcd60e51b82526004820152600d60248201526c0a68e987440e8dede40daeac6d609b1b6044820152fd5b508282813d8311610584575b61056d81836123a6565b8101031261057f576104c091516104b6565b600080fd5b503d610563565b6040513d8b823e3d90fd5b9190508560095416803b1561061857604051630208d92960e11b81526001600160a01b038716600482015230602482015260448101929092526064820189905282908290608490829084905af1801561060d576105f5575b50506104c7565b6105fe90612310565b6106095786386105ee565b8680fd5b6040513d84823e3d90fd5b8280fd5b908096508460095416916064600c546040519485938492638eb22cdd60e01b8452600484015260248301528b60448301525afa908115610692578791610665575b50943861044e565b90508581813d831161068b575b61067c81836123a6565b8101031261057f57513861065d565b503d610672565b6040513d89823e3d90fd5b9550836009541681600c54606460405180948193638eb22cdd60e01b835260048301528b60248301528c60448301525afa9081156107105788916106e3575b509561043d565b90508181813d8311610709575b6106fa81836123a6565b8101031261057f5751386106dc565b503d6106f0565b6040513d8a823e3d90fd5b503461031e578060031936011261031e576006546040516001600160a01b039091168152602090f35b503461031e578060031936011261031e576020601d54604051908152f35b503461031e578060031936011261031e576009546040516001600160a01b039091168152602090f35b503461031e57604036600319011261031e576107a561210c565b60406107af612122565b9260018060a01b03809316815260026020522091166000526020526020604060002054604051908152f35b503461031e578060031936011261031e57600b546040516001600160a01b039091168152602090f35b503461031e576108123661219e565b91839193959495421161095f5760018060a01b03928388169485600052600460205260406000209283546000198114610949576108f5956108ed956001830190556040519060208201927f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e2668452600060408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e081526108b18161236f565b5190206108bc612b03565b9060405190602082019261190160f01b845260228301526042820152604281526108e58161238b565b519020612dd8565b919091612cd9565b16036109045761037092612eab565b60405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152606490fd5b634e487b7160e01b600052601160045260246000fd5b60405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b503461031e5761016036600319011261031e576001600160a01b0360043581811690819003610618576024916001600160401b038335818111610e305736602382011215610e30578060040135918211610e305736858383010111610e30576044359383851680950361057f57610a20846005541633146123e2565b80610df2575b508482610c74575b50505081610c34575b505060643580610c1c575b5060843580610c04575b5060a43580610bed575b5060c43580610bc9575b5060e43580610ba5575b506101043580610b74575b506101243580610b01575b50610144359081610a8f578280f35b601e548210610aa25750601f5538808280f35b60849060326040519162461bcd60e51b8352602060048401528201527f4d61726b65743a206c69717569646174696f6e436f6c6c61746572616c697a616044820152711d1a5bdb94985d19481d1bdbc81cdb585b1b60721b6064820152fd5b610b10620186a082111561242d565b601f548111610b2257601e5538610a80565b60405162461bcd60e51b8152602060048201526025818401527f4d61726b65743a20636f6c6c61746572616c697a6174696f6e5261746520746f6044820152646f2062696760d81b6064820152608490fd5b806016547fae6e0ab3b95f0a53ff9660a390ccedcbbf1f2355dce974a9841af106fddcfaba8580a360165538610a75565b610bb3620186a0821061242d565b610bc0601b54821161242d565b601c5538610a6a565b610bd7620186a0821061242d565b610be4601c54821061242d565b601b5538610a60565b610bfb620186a0821061242d565b601d5538610a56565b610c13620186a082111561242d565b601a5538610a4c565b610c2b620186a082111561242d565b60195538610a42565b816008549182167f5a62d22209e370e38eea92cfddcd228e656e6ec139243392a760a7769f5877fd8680a36001600160a01b031916176008553880610a37565b8291610c81601054612251565b601f8111610d81575b508790601f8411600114610cef578893610ce2575b5050508160011b916000199060031b1c1916176010555b7fa6f004921c944d4b8bf6e38462b00f36a58d62495d56b51f571ab78f732c98158480a1388084610a2e565b0101359050843880610c9f565b60108952601f19841694507f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae67292509087908960205b878210610d625750508460019610610d46575b50505050811b01601055610cb6565b60001960f88660031b161c199201013516905538808681610d37565b8285019093013585556001949094019389929182019190810190610d24565b6010895290925090507f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae672601f840160051c810160208510610deb575b91849391601f8994920160051c01905b818110610dda5750610c8a565b898155859450889350600101610dcd565b5080610dbd565b600f80546001600160a01b0319169190911790557f0b2d6eb667d0522c3eb86e4288afecae6c11591ffd1345d4d12407e0598bca9b8680a138610a26565b8580fd5b503461031e578060031936011261031e576008546040516001600160a01b039091168152602090f35b503461031e57610e6c366121ed565b9092916003835260209160078352610e8b60ff60408620541615612f02565b610e93612766565b5050610e9d61368d565b610ea78183612f8a565b6001600160a01b0385811695909190610ec230881415612f3f565b828416928387526018865260408720610edc8482546124ae565b9055610eea836015546124ae565b6015556009541690600c5490823b1561104557604051630208d92960e11b81523060048201526001600160a01b039190911660248201526044810191909152606481018390529086908290608490829084905af1801561103a57611023575b50808596837f8ad4d3ff00da092c7ad9a573ea4f5f6a3dffc6712dc06d3f78f49b862297c40288610fbb9899a4818652602585526040862060275490818852865260408720548211600014610ffc57505084526025835260408420602754855283528360408120555b6011549061308e565b15610fc4575080f35b6064906040519062461bcd60e51b82526004820152601160248201527013585c9ad95d0e881a5b9cdbdb1d995b9d607a1b6044820152fd5b909186526025855260408620908652845261101c604086209182546124ae565b9055610fb2565b610fbb94956110328392612310565b959450610f49565b6040513d88823e3d90fd5b8780fd5b503461031e578060031936011261031e576020601e54604051908152f35b503461031e578060031936011261031e576060602354604051906001600160401b0380821683528160401c16602083015260801c6040820152f35b503461031e578060031936011261031e576020601a54604051908152f35b503461031e57604036600319011261031e576110da61210c565b60243580928115801590611191575b611121575b50506040519182526001600160a01b031690339060008051602061397583398151915290602090a3602060405160018152f35b3381526001602052604081205461113a83821015612c2d565b6001600160a01b0384169033829003611155575b50506110ee565b60409361116c91611167841515612c72565b6124ae565b3383526001602052838320558152206111868382546124bb565b90558138808061114e565b50336001600160a01b038416146110e9565b503461031e57604036600319011261031e5760606111cb6111c261210c565b602435906125fa565b9060405192835260208301526040820152f35b503461031e578060031936011261031e576020602b54604051908152f35b503461031e57604036600319011261031e57602061122461121b61210c565b602435906129d1565b604051908152f35b503461031e578060031936011261031e57808060018060a01b03600b541660405160208101906395d89b4160e01b82526004815261126981612339565b51915afa611275613779565b9150156112d55761128861035391613800565b6112c16023604051809362746d2d60e81b60208301526112b18151809260208686019101612138565b81010360038101845201826123a6565b60405191829160208352602083019061215b565b506103536112e16137a9565b611288565b503461031e578060031936011261031e576020602f54604051908152f35b503461031e57604036600319011261031e576004356001600160401b038111611519573660238201121561151957806004013582611341826123c7565b9261134f60405194856123a6565b82845260208401923660248284010111610618578060246020930185378401015260243561ffff81168103611515576101009182848051810103126115115761139790612759565b6113a360408501612cb7565b916113b060608601612cb7565b9460808101519460a0820151926113c960c08401612ccb565b9160e08401519301519380421161095f5785156114ea577f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e266915b6001600160a01b0388168b52600460205260408b208054919060001983146114d6579161ffff611493989694926108ed98969460018401905560405194602086015216604084015260018060a01b038a16606084015260018060a01b038c1660808401528a60a084015260c083015260e082015260e081526114848161236f565b602081519101206108bc612b03565b6001600160a01b0383811691160361090457156114c057610370926001600160a01b039081169116612eab565b610370926001600160a01b039081169116612e5d565b634e487b7160e01b8d52601160045260248dfd5b7f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d691611403565b8480fd5b8380fd5b5080fd5b503461031e578060031936011261031e576005546040516001600160a01b039091168152602090f35b503461031e578060031936011261031e576020601b54604051908152f35b503461031e578060031936011261031e57601454604080516001600160801b038316815260809290921c602083015290f35b503461031e578060031936011261031e576020602d54604051908152f35b503461031e57604036600319011261031e576115db6115d161210c565b6024359033612e5d565b602060405160018152f35b503461031e57602036600319011261031e576020906040906001600160a01b0361160e61210c565b168152600483522054604051908152f35b503461031e578060031936011261031e57600f546040516001600160a01b039091168152602090f35b503461031e578060031936011261031e576103536040516112c18161166c8161228b565b03826123a6565b503461031e57602036600319011261031e5760043590600982101561031e57602060ff61169f84612222565b54166040519015158152f35b503461031e57602036600319011261031e576020906040906001600160a01b036116d361210c565b168152600183522054604051908152f35b503461031e578060031936011261031e57600a546040516001600160a01b039091168152602090f35b503461031e578060031936011261031e57611726613190565b5060806117316131c8565b509350505050604051916001600160401b0380825116845260208201511660208401526040600180861b039101511660408301526060820152f35b503461031e578060031936011261031e576020601c54604051908152f35b503461031e578060031936011261031e5760206001600160401b03602c5460401c16604051908152f35b503461031e578060031936011261031e5760206001600160401b03602c5416604051908152f35b503461031e578060031936011261031e5760206001600160401b03602e5416604051908152f35b503461031e578060031936011261031e5760208054604051908152f35b503461031e578060031936011261031e576006546001600160a01b03908181163381900361188957806005549384167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08680a36001600160a01b0319928316176005551660065580f35b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b503461031e578060031936011261031e576020602854604051908152f35b503461031e57602036600319011261031e576020906040906001600160a01b0361191361210c565b168152601783522054604051908152f35b503461031e578060031936011261031e576020601554604051908152f35b503461031e578060031936011261031e576020600e54604051908152f35b503461031e578060031936011261031e576020601654604051908152f35b503461031e57606036600319011261031e5760206112246044356024356004356124e1565b503461031e578060031936011261031e576020601154604051908152f35b503461031e578060031936011261031e57600d546040516001600160a01b039091168152602090f35b503461031e578060031936011261031e576020601254604051908152f35b503461031e578060031936011261031e576020611224612b03565b503461031e578060031936011261031e576020601954604051908152f35b503461031e578060031936011261031e576020601354604051908152f35b503461031e578060031936011261031e57808060018060a01b03600d5416604051602081019063313ce56760e01b825260048152611a9c81612339565b51915afa90611aa9613779565b9180611ae6575b15611adb5760208280518101031261031e5750611ad06020809201612ccb565b60ff60405191168152f35b505060206012611ad0565b506020825114611ab0565b503461031e57611b00366121ed565b919282611b3c575b506040519182526001600160a01b0390811692169060008051602061397583398151915290602090a3602060405160018152f35b6001600160a01b03848116808352600160209081526040842054928690611b6582861015612c2d565b861693848403611b7a575b5050505050611b08565b838652600283526040808720338852845286205460018101611be4575b5092600160209693611bc287946040976111676000805160206139758339815191529c9a1515612c72565b9285525283832055815220611bd88582546124bb565b90559138808581611b70565b90918110611c385792600160209693611bc28a6000805160206139758339815191529a9895611c158260409a6124ae565b86895260028552898920338a528552898920559497509497995050939650611b97565b60405162461bcd60e51b815260048101849052601860248201527745524332303a20616c6c6f77616e636520746f6f206c6f7760401b6044820152606490fd5b503461031e57611c873661219e565b9083959495421161095f576001600160a01b03878116808a52600460205260408a2080549196929592906000198314611d385782611d299694928d9260016108ed98960190556040519160208301937f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d6855260408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e081526108b18161236f565b16036109045761037092612e5d565b634e487b7160e01b8c52601160045260248cfd5b503461031e57602036600319011261031e576020906040906001600160a01b03611d7461210c565b168152601883522054604051908152f35b503461031e578060031936011261031e57602060245460801c604051908152f35b503461031e57604036600319011261031e57600435600981101561151957611dcc612180565b6008549091906001600160a01b03163303611e825760ff611dec82612222565b54161515911515918214611e4857808260ff611e0a611e3894612222565b54161515827feeec81de25875ce1725479bb76f720a8defdb43dea041919ae37bb4aae9847c08780a4612222565b9060ff8019835416911617905580f35b60405162461bcd60e51b81526020600482015260126024820152714d61726b65743a2073616d6520737461746560701b6044820152606490fd5b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881d5b985d5d1a1bdc9a5e995960621b6044820152606490fd5b503461031e57604036600319011261031e576115db611edb61210c565b6024359033612eab565b503461031e57606036600319011261031e57611eff61210c565b611f07612180565b611f0f61218f565b9060018060a01b03928391611f29836005541633146123e2565b15611fcd571690811590811591611fc5575b5015611f8857806005549283167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08580a36001600160a01b03199182161760055560068054909116905580f35b60405162461bcd60e51b81526020600482015260156024820152744f776e61626c653a207a65726f206164647265737360581b6044820152606490fd5b905038611f3b565b9150501660018060a01b0319600654161760065580f35b503461031e578060031936011261031e57808060018060a01b03600b541660405160208101906306fdde0360e01b82526004815261202181612339565b51915afa61202d613779565b91501561208a5761204061035391613800565b6112c16034604051809373546170696f63612053696e67756c61726974792d60601b602083015261207a8151809260208686019101612138565b81010360148101845201826123a6565b506103536120966137a9565b612040565b503461031e578060031936011261031e5760406120b6612766565b825191151582526020820152f35b9050346115195760403660031901126115195760406020926120e461210c565b6120ec612122565b6001600160a01b0391821683526003865283832091168252845220548152f35b600435906001600160a01b038216820361057f57565b602435906001600160a01b038216820361057f57565b60005b83811061214b5750506000910152565b818101518382015260200161213b565b9060209161217481518092818552858086019101612138565b601f01601f1916010190565b60243590811515820361057f57565b60443590811515820361057f57565b60e090600319011261057f576001600160a01b0390600435828116810361057f5791602435908116810361057f5790604435906064359060843560ff8116810361057f579060a4359060c43590565b606090600319011261057f576001600160a01b0390600435828116810361057f5791602435908116810361057f579060443590565b600981101561223b576000526007602052604060002090565b634e487b7160e01b600052602160045260246000fd5b90600182811c92168015612281575b602083101461226b57565b634e487b7160e01b600052602260045260246000fd5b91607f1691612260565b6010546000929161229b82612251565b9081815260019283811690816000146122f557506001146122bb57505050565b9092935060106000526020928360002092846000945b8386106122e15750505050010190565b8054858701830152940193859082016122d1565b91935050602093945060ff191683830152151560051b010190565b6001600160401b03811161232357604052565b634e487b7160e01b600052604160045260246000fd5b604081019081106001600160401b0382111761232357604052565b606081019081106001600160401b0382111761232357604052565b61010081019081106001600160401b0382111761232357604052565b608081019081106001600160401b0382111761232357604052565b90601f801991011681019081106001600160401b0382111761232357604052565b6001600160401b03811161232357601f01601f191660200190565b156123e957565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b1561243457565b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881b9bdd081d985b1a59607a1b6044820152606490fd5b8181029291811591840414171561094957565b811561248a570490565b634e487b7160e01b600052601260045260246000fd5b604d811161094957600a0a90565b9190820391821161094957565b9190820180921161094957565b8181039291600013801582851316918412161761094957565b60145491929161252a9161251b9161251191612507906001600160801b0383169061246d565b9060801c90612480565b93601f549061246d565b612524836124a0565b90612480565b8083106125f25761253e61257a91846124ae565b9161257561256f612566601e54612560612557866124a0565b602054906124bb565b9061246d565b612524846124a0565b916124a0565b6124c8565b6509184e72a0009081810291818305149015171561094957670de0b6b3a76400009182810292818405149015171561094957801561248a57600160ff1b9180831460001983141661094957059060008212156125eb57811461094957600003905b8082116125e6575090565b905090565b50906125db565b505050600090565b9160018060a01b03809316916000938385526020601781526040918287205490811561274c578783855161262d81612339565b828152015261263a6131c8565b505050505091905061264d8615156128ce565b6009541683600c54898b52601882526064878c2054918851948593849263442c159960e01b8452600484015260248301528d60448301525afa90811561274257899161270f575b50916126ef61270397989994926126ca886126c56126bc601898620186a0602154049061246d565b601e549061246d565b612480565b815190936001600160801b039186916126e59184169061246d565b9201511690612480565b81811061270757035b97835252205461291a565b9091565b5050826126f8565b90508381813d831161273b575b61272681836123a6565b8101031261273757516126ef612694565b8880fd5b503d61271c565b85513d8b823e3d90fd5b5086955085949350505050565b5190811515820361057f57565b600f546040805163d6d7d52560e01b8152602060048201529290916001600160a01b03168284806127996024820161228b565b0381600080955af180156128c25781948291612886575b509284156128295783156127ef57507f9f9192b5edb17356c524e08d9e025c8e2f6307e6ea52fb7968faa3081f51c3c883918260115580a25b42601355565b5162461bcd60e51b81526020600482015260146024820152734d61726b65743a20696e76616c6964207261746560601b6044820152606490fd5b9192505061283c601354601254906124bb565b421161284c5750601154906127e9565b5162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881c985d19481d1bdbc81bdb1960621b6044820152606490fd5b809550848092503d83116128bb575b61289f81836123a6565b8101031261031e5760206128b285612759565b940151386127b0565b503d612895565b508251903d90823e3d90fd5b156128d557565b60405162461bcd60e51b815260206004820152601e60248201527f4d61726b65743a2065786368616e676552617465206e6f742076616c696400006044820152606490fd5b6129258215156128ce565b602060018060a01b0360095416916064600c54604051948593849263442c159960e01b845260048401526024830152600060448301525afa9081156129c557600091612992575b50906126c561297e926021549061246d565b620186a061298e601e548361246d565b0491565b906020823d82116129bd575b816129ab602093836123a6565b8101031261031e5750516126c561296c565b3d915061299e565b6040513d6000823e3d90fd5b6001600160a01b031660008181526018602052604081205490926129f49161291a565b918352601760205260408320548015612afd578115612afd57818110612afd5782811015612af357601454612a3d91839161116791612507906001600160801b0383169061246d565b90620186a09283830292808404851490151715612adf57612a629291612524916124ae565b91601b5491601c5493612a7585856124c8565b80820291848212600160ff1b821416612adf578183051490151715612acb5705818482019485129112908015821691151617612ab757508082126125e6575090565b634e487b7160e01b81526011600452602490fd5b634e487b7160e01b83526011600452602483fd5b634e487b7160e01b85526011600452602485fd5b50505050601b5490565b50505090565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03161480612c04575b15612b5e577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f000000000000000000000000000000000000000000000000000000000000000082527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a0815260c081018181106001600160401b038211176123235760405251902090565b507f00000000000000000000000000000000000000000000000000000000000000004614612b35565b15612c3457565b60405162461bcd60e51b815260206004820152601660248201527545524332303a2062616c616e636520746f6f206c6f7760501b6044820152606490fd5b15612c7957565b60405162461bcd60e51b815260206004820152601660248201527545524332303a206e6f207a65726f206164647265737360501b6044820152606490fd5b51906001600160a01b038216820361057f57565b519060ff8216820361057f57565b600581101561223b5780612cea5750565b60018103612d325760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b6044820152606490fd5b60028103612d7f5760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606490fd5b600314612d8857565b60405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608490fd5b9291906fa2a8918ca85bafe22016d0b997e4df60600160ff1b038311612e515791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa15612e445781516001600160a01b03811615612e3e579190565b50600190565b50604051903d90823e3d90fd5b50505050600090600390565b7fe50de2333c10a9502fcb1d8ae13a51bbf423153dfc63c2b8997665b32154afc360018060a01b038092169160009083825260036020526040822094169384825260205284604082205580a4565b909160207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259160018060a01b03809416938460005260028352604060002095169485600052825280604060002055604051908152a3565b15612f0957565b60405162461bcd60e51b815260206004820152600e60248201526d13585c9ad95d0e881c185d5cd95960921b6044820152606490fd5b15612f4657565b606460405162461bcd60e51b815260206004820152602060248201527f4d61726b65743a2063616e6e6f742065786563757465206f6e20697473656c666044820152fd5b6001600160a01b0316338103612f9e575050565b60008181526020906003825260409182822033835281528483832054106130085783825260038152828220338352815282822054600101612fe1575b5050505050565b612ffc938252600381528282209033835252209182546124ae565b90553880808080612fda565b60649083519062461bcd60e51b82526004820152601460248201527313585c9ad95d0e881b9bdd08185c1c1c9bdd995960621b6044820152fd5b6040519061304f82612339565b6014546001600160801b038116835260801c6020830152565b6040519061307582612339565b6024546001600160801b038116835260801c6020830152565b919060018060a01b03806000941684526020601781526040852054908115613186576018815260408620548015612fda57816130c8613042565b9460095416916064600c54604051948593849263442c159960e01b8452600484015260248301528b60448301525afa96871561317a578097613144575b50506126e56131246126bc61313f969798620186a0602154049061246d565b9561313a60018060801b0394858751169061246d565b61246d565b111590565b9096508187813d8311613173575b61315c81836123a6565b8101031261031e57509451946126e5613124613105565b503d613152565b604051903d90823e3d90fd5b5060019450505050565b6040519061319d82612354565b60006040838281528260208201520152565b6001600160801b03918216908216019190821161094957565b6131d0613190565b50600060206040516131e181612339565b8281520152600060206040516131f681612339565b828152015260405161320781612354565b6023546001600160401b03811682526001600160401b038160401c16602083015260801c6040820152809161323a613042565b91613243613068565b600954600e54825160405163442c159960e01b8152600481018390526001600160801b03909116602482015260006044820181905293959194919391926001600160a01b031690602081606481855afa80156129c557600090613659575b88516132b792506001600160801b0316906124bb565b80613624575060005b806132d86001600160401b03602087015116426124ae565b9485156135fa575050426001600160401b031660208a8101919091528801516001600160801b0316156135b057506020670de0b6b3a76400006133358561313a8c6001600160401b038d60018060801b039051169151169061246d565b895191900496906001600160801b039061335490828a169083166131af565b168952875160405163442c159960e01b815260048101929092526001600160801b031660248201526000604482015291829060649082905afa80156129c55760009061357c575b87516133b192506001600160801b0316906124bb565b926133df846126c5620186a06133c9601a548a61246d565b60208c01516001600160801b031691900461246d565b6040890180519195916001600160801b03808816929161340290849083166131af565b16905260208801805190916001600160801b0391613422919083166131af565b16905280613547575060005b602954909384828110156134c25761344690836124ae565b90670de0b6b3a7640000820291808304670de0b6b3a76400001490151715610949576126c561349a6134946134866001600160401b03966134a496612480565b9361313a602d54958061246d565b836124bb565b91848d511661246d565b168089526001600160401b03602c54168091106134be5750565b8852565b909150602a548082116134d457505050565b6134dd916124ae565b670de0b6b3a7640000810290808204670de0b6b3a76400001490151715610949576001600160401b03916126c561352061349461348661352995602b5490612480565b848d511661246d565b81602c5460401c1680821161353f575b50168852565b905038613539565b87516001600160801b0316670de0b6b3a76400008181029291808404909114901517156109495761357791612480565b61342e565b506020813d6020116135a8575b81613596602093836123a6565b8101031261057f576133b1905161339b565b3d9150613589565b9697939450509350506001600160401b038151166001600160401b03602e54168091036135ee575b5093926135e3613068565b926000926000929190565b815260019250386135d8565b97509850505050509250509161360e613042565b91613617613068565b9160009160009190600090565b87516001600160801b0316670de0b6b3a76400008181029291808404909114901517156109495761365491612480565b6132c0565b506020813d602011613685575b81613673602093836123a6565b8101031261057f576132b790516132a1565b3d9150613666565b602060406136996131c8565b9397959390929015613740575050506001600160401b03602e54166000807f33af5ce86e8438eff54589f85332916444457dfa8685493fbd579b809097026b868851838152a45b6001600160401b03815116838201519160018060801b0319958691015160801b16916001600160401b0360401b9060401b16171760235560018060801b039083838383511692015160801b161760145583511692015160801b1617602455565b7f33af5ce86e8438eff54589f85332916444457dfa8685493fbd579b809097026b866001600160401b03865116948951908152a46136e0565b3d156137a4573d9061378a826123c7565b9161379860405193846123a6565b82523d6000602084013e565b606090565b604051906137b682612339565b60038252623f3f3f60e81b6020830152565b9081518110156137d9570160200190565b634e487b7160e01b600052603260045260246000fd5b60ff1660ff81146109495760010190565b80516040811061387b5750805181019060208181840193031261057f576020810151906001600160401b03821161057f570181603f8201121561057f57602081015161384b816123c7565b9261385960405194856123a6565b8184526040828401011161057f57613878916040602085019101612138565b90565b602092908303613969576000805b60ff8116858110908161394a575b50156138ab576138a6906137ef565b613889565b9260ff809416926138bb846123c7565b936138c960405195866123a6565b8085526138d8601f19916123c7565b013687860137825b8581168781108061392d575b156139225761391d91906139176001600160f81b031961390c83886137c8565b5116871a91886137c8565b536137ef565b6138e0565b505094505050905090565b506001600160f81b031961394182866137c8565b511615156138ec565b6001600160f81b0319915061395f90866137c8565b5116151538613897565b9150506138786137a956feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220b1bf97fefb2a28e789adf6d8f76790365fe56f5052cdc53826c08fce9eb6784664736f6c63430008120033", + "deployedBytecode": "0x608080604052600436101561001357600080fd5b600090813560e01c908162a02a20146120c45750806302ce728f1461209b57806306fdde0314611fe4578063078dfbe714611ee5578063095ea7b314611ebe5780630c4e84f014611da657806318160ddd14611d855780631c9e379b14611d4c5780631da8bf1014611c7857806323b872dd14611af1578063313ce56714611a5f578063331960ff14611a4157806334d441d014611a235780633644e51514611a0857806337b6b7b9146119ea57806338d52e0f146119c15780633ba0b9a9146119a35780633f741adb1461197e57806340626d8b1461196057806344de240a14611942578063473e3ce71461192457806348e4163e146118eb5780634d7f2a34146118cd5780634e71e0c81461181f578063529898f21461180257806352f353eb146117db57806355140232146117b457806355c2ab941461178a578063579354621461176c5780635dfe04e81461170d5780636c3d8b8f146116e457806370a08231146116ab578063727785471461167357806374645ff3146116485780637dc0d1d01461161f5780637ecebe00146115e65780637fa0b84e146115b4578063821226e8146115965780638285ef40146115645780638c5d0ed3146115465780638da5cb5b1461151d578063910dd7c814611304578063959916dc146112e657806395d89b411461122c57806399a97028146111fc5780639c5d7192146111de5780639e15e89f146111a3578063a9059cbb146110c0578063b0e21e8a146110a2578063b27c0e7414611067578063bb4cfe3b14611049578063cce19f8114610e5d578063ce8849ed14610e34578063d3fb2a38146109a4578063d505accf14610803578063d8dfeb45146107da578063dd62ed3e1461078b578063de40657714610762578063e0996cb614610744578063e30c39781461071b578063e9a49252146103cd578063ea64dd56146103af578063eec0f42e14610391578063f42760b714610373578063f8ba4cff14610357578063f9557ccb146103215763ffe04c661461030157600080fd5b3461031e578060031936011261031e576020602954604051908152f35b80fd5b503461031e578060031936011261031e57602454604080516001600160801b038316815260809290921c602083015290f35b0390f35b503461031e578060031936011261031e5761037061368d565b80f35b503461031e578060031936011261031e576020602a54604051908152f35b503461031e578060031936011261031e576020600c54604051908152f35b503461031e578060031936011261031e576020601f54604051908152f35b503461031e5760a036600319011261031e576103e761210c565b6103ef612122565b906103f861218f565b916064359160843593600260005260206007815261041e60ff6040600020541615612f02565b6001600160a01b039384169461043630871415612f3f565b861561069d575b6104478785612f8a565b861561061c575b5084875260188152604087206104658782546124bb565b905560155461047487826124bb565b601555600c5490888415610596575082866009541692604460405180958193627eeac760e11b835230600484015260248301525afa801561058b578990610557575b6104c092506124ae565b8611610523575b848752602581526040872090602754885252604086206104e88682546124bb565b90551561051e575080600954165b167f9ed03113de523cebfe5e49d5f8e12894b1c0d42ce805990461726444c90eab878480a480f35b6104f6565b6064906040519062461bcd60e51b82526004820152600d60248201526c0a68e987440e8dede40daeac6d609b1b6044820152fd5b508282813d8311610584575b61056d81836123a6565b8101031261057f576104c091516104b6565b600080fd5b503d610563565b6040513d8b823e3d90fd5b9190508560095416803b1561061857604051630208d92960e11b81526001600160a01b038716600482015230602482015260448101929092526064820189905282908290608490829084905af1801561060d576105f5575b50506104c7565b6105fe90612310565b6106095786386105ee565b8680fd5b6040513d84823e3d90fd5b8280fd5b908096508460095416916064600c546040519485938492638eb22cdd60e01b8452600484015260248301528b60448301525afa908115610692578791610665575b50943861044e565b90508581813d831161068b575b61067c81836123a6565b8101031261057f57513861065d565b503d610672565b6040513d89823e3d90fd5b9550836009541681600c54606460405180948193638eb22cdd60e01b835260048301528b60248301528c60448301525afa9081156107105788916106e3575b509561043d565b90508181813d8311610709575b6106fa81836123a6565b8101031261057f5751386106dc565b503d6106f0565b6040513d8a823e3d90fd5b503461031e578060031936011261031e576006546040516001600160a01b039091168152602090f35b503461031e578060031936011261031e576020601d54604051908152f35b503461031e578060031936011261031e576009546040516001600160a01b039091168152602090f35b503461031e57604036600319011261031e576107a561210c565b60406107af612122565b9260018060a01b03809316815260026020522091166000526020526020604060002054604051908152f35b503461031e578060031936011261031e57600b546040516001600160a01b039091168152602090f35b503461031e576108123661219e565b91839193959495421161095f5760018060a01b03928388169485600052600460205260406000209283546000198114610949576108f5956108ed956001830190556040519060208201927f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e2668452600060408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e081526108b18161236f565b5190206108bc612b03565b9060405190602082019261190160f01b845260228301526042820152604281526108e58161238b565b519020612dd8565b919091612cd9565b16036109045761037092612eab565b60405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152606490fd5b634e487b7160e01b600052601160045260246000fd5b60405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b503461031e5761016036600319011261031e576001600160a01b0360043581811690819003610618576024916001600160401b038335818111610e305736602382011215610e30578060040135918211610e305736858383010111610e30576044359383851680950361057f57610a20846005541633146123e2565b80610df2575b508482610c74575b50505081610c34575b505060643580610c1c575b5060843580610c04575b5060a43580610bed575b5060c43580610bc9575b5060e43580610ba5575b506101043580610b74575b506101243580610b01575b50610144359081610a8f578280f35b601e548210610aa25750601f5538808280f35b60849060326040519162461bcd60e51b8352602060048401528201527f4d61726b65743a206c69717569646174696f6e436f6c6c61746572616c697a616044820152711d1a5bdb94985d19481d1bdbc81cdb585b1b60721b6064820152fd5b610b10620186a082111561242d565b601f548111610b2257601e5538610a80565b60405162461bcd60e51b8152602060048201526025818401527f4d61726b65743a20636f6c6c61746572616c697a6174696f6e5261746520746f6044820152646f2062696760d81b6064820152608490fd5b806016547fae6e0ab3b95f0a53ff9660a390ccedcbbf1f2355dce974a9841af106fddcfaba8580a360165538610a75565b610bb3620186a0821061242d565b610bc0601b54821161242d565b601c5538610a6a565b610bd7620186a0821061242d565b610be4601c54821061242d565b601b5538610a60565b610bfb620186a0821061242d565b601d5538610a56565b610c13620186a082111561242d565b601a5538610a4c565b610c2b620186a082111561242d565b60195538610a42565b816008549182167f5a62d22209e370e38eea92cfddcd228e656e6ec139243392a760a7769f5877fd8680a36001600160a01b031916176008553880610a37565b8291610c81601054612251565b601f8111610d81575b508790601f8411600114610cef578893610ce2575b5050508160011b916000199060031b1c1916176010555b7fa6f004921c944d4b8bf6e38462b00f36a58d62495d56b51f571ab78f732c98158480a1388084610a2e565b0101359050843880610c9f565b60108952601f19841694507f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae67292509087908960205b878210610d625750508460019610610d46575b50505050811b01601055610cb6565b60001960f88660031b161c199201013516905538808681610d37565b8285019093013585556001949094019389929182019190810190610d24565b6010895290925090507f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae672601f840160051c810160208510610deb575b91849391601f8994920160051c01905b818110610dda5750610c8a565b898155859450889350600101610dcd565b5080610dbd565b600f80546001600160a01b0319169190911790557f0b2d6eb667d0522c3eb86e4288afecae6c11591ffd1345d4d12407e0598bca9b8680a138610a26565b8580fd5b503461031e578060031936011261031e576008546040516001600160a01b039091168152602090f35b503461031e57610e6c366121ed565b9092916003835260209160078352610e8b60ff60408620541615612f02565b610e93612766565b5050610e9d61368d565b610ea78183612f8a565b6001600160a01b0385811695909190610ec230881415612f3f565b828416928387526018865260408720610edc8482546124ae565b9055610eea836015546124ae565b6015556009541690600c5490823b1561104557604051630208d92960e11b81523060048201526001600160a01b039190911660248201526044810191909152606481018390529086908290608490829084905af1801561103a57611023575b50808596837f8ad4d3ff00da092c7ad9a573ea4f5f6a3dffc6712dc06d3f78f49b862297c40288610fbb9899a4818652602585526040862060275490818852865260408720548211600014610ffc57505084526025835260408420602754855283528360408120555b6011549061308e565b15610fc4575080f35b6064906040519062461bcd60e51b82526004820152601160248201527013585c9ad95d0e881a5b9cdbdb1d995b9d607a1b6044820152fd5b909186526025855260408620908652845261101c604086209182546124ae565b9055610fb2565b610fbb94956110328392612310565b959450610f49565b6040513d88823e3d90fd5b8780fd5b503461031e578060031936011261031e576020601e54604051908152f35b503461031e578060031936011261031e576060602354604051906001600160401b0380821683528160401c16602083015260801c6040820152f35b503461031e578060031936011261031e576020601a54604051908152f35b503461031e57604036600319011261031e576110da61210c565b60243580928115801590611191575b611121575b50506040519182526001600160a01b031690339060008051602061397583398151915290602090a3602060405160018152f35b3381526001602052604081205461113a83821015612c2d565b6001600160a01b0384169033829003611155575b50506110ee565b60409361116c91611167841515612c72565b6124ae565b3383526001602052838320558152206111868382546124bb565b90558138808061114e565b50336001600160a01b038416146110e9565b503461031e57604036600319011261031e5760606111cb6111c261210c565b602435906125fa565b9060405192835260208301526040820152f35b503461031e578060031936011261031e576020602b54604051908152f35b503461031e57604036600319011261031e57602061122461121b61210c565b602435906129d1565b604051908152f35b503461031e578060031936011261031e57808060018060a01b03600b541660405160208101906395d89b4160e01b82526004815261126981612339565b51915afa611275613779565b9150156112d55761128861035391613800565b6112c16023604051809362746d2d60e81b60208301526112b18151809260208686019101612138565b81010360038101845201826123a6565b60405191829160208352602083019061215b565b506103536112e16137a9565b611288565b503461031e578060031936011261031e576020602f54604051908152f35b503461031e57604036600319011261031e576004356001600160401b038111611519573660238201121561151957806004013582611341826123c7565b9261134f60405194856123a6565b82845260208401923660248284010111610618578060246020930185378401015260243561ffff81168103611515576101009182848051810103126115115761139790612759565b6113a360408501612cb7565b916113b060608601612cb7565b9460808101519460a0820151926113c960c08401612ccb565b9160e08401519301519380421161095f5785156114ea577f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e266915b6001600160a01b0388168b52600460205260408b208054919060001983146114d6579161ffff611493989694926108ed98969460018401905560405194602086015216604084015260018060a01b038a16606084015260018060a01b038c1660808401528a60a084015260c083015260e082015260e081526114848161236f565b602081519101206108bc612b03565b6001600160a01b0383811691160361090457156114c057610370926001600160a01b039081169116612eab565b610370926001600160a01b039081169116612e5d565b634e487b7160e01b8d52601160045260248dfd5b7f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d691611403565b8480fd5b8380fd5b5080fd5b503461031e578060031936011261031e576005546040516001600160a01b039091168152602090f35b503461031e578060031936011261031e576020601b54604051908152f35b503461031e578060031936011261031e57601454604080516001600160801b038316815260809290921c602083015290f35b503461031e578060031936011261031e576020602d54604051908152f35b503461031e57604036600319011261031e576115db6115d161210c565b6024359033612e5d565b602060405160018152f35b503461031e57602036600319011261031e576020906040906001600160a01b0361160e61210c565b168152600483522054604051908152f35b503461031e578060031936011261031e57600f546040516001600160a01b039091168152602090f35b503461031e578060031936011261031e576103536040516112c18161166c8161228b565b03826123a6565b503461031e57602036600319011261031e5760043590600982101561031e57602060ff61169f84612222565b54166040519015158152f35b503461031e57602036600319011261031e576020906040906001600160a01b036116d361210c565b168152600183522054604051908152f35b503461031e578060031936011261031e57600a546040516001600160a01b039091168152602090f35b503461031e578060031936011261031e57611726613190565b5060806117316131c8565b509350505050604051916001600160401b0380825116845260208201511660208401526040600180861b039101511660408301526060820152f35b503461031e578060031936011261031e576020601c54604051908152f35b503461031e578060031936011261031e5760206001600160401b03602c5460401c16604051908152f35b503461031e578060031936011261031e5760206001600160401b03602c5416604051908152f35b503461031e578060031936011261031e5760206001600160401b03602e5416604051908152f35b503461031e578060031936011261031e5760208054604051908152f35b503461031e578060031936011261031e576006546001600160a01b03908181163381900361188957806005549384167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08680a36001600160a01b0319928316176005551660065580f35b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b503461031e578060031936011261031e576020602854604051908152f35b503461031e57602036600319011261031e576020906040906001600160a01b0361191361210c565b168152601783522054604051908152f35b503461031e578060031936011261031e576020601554604051908152f35b503461031e578060031936011261031e576020600e54604051908152f35b503461031e578060031936011261031e576020601654604051908152f35b503461031e57606036600319011261031e5760206112246044356024356004356124e1565b503461031e578060031936011261031e576020601154604051908152f35b503461031e578060031936011261031e57600d546040516001600160a01b039091168152602090f35b503461031e578060031936011261031e576020601254604051908152f35b503461031e578060031936011261031e576020611224612b03565b503461031e578060031936011261031e576020601954604051908152f35b503461031e578060031936011261031e576020601354604051908152f35b503461031e578060031936011261031e57808060018060a01b03600d5416604051602081019063313ce56760e01b825260048152611a9c81612339565b51915afa90611aa9613779565b9180611ae6575b15611adb5760208280518101031261031e5750611ad06020809201612ccb565b60ff60405191168152f35b505060206012611ad0565b506020825114611ab0565b503461031e57611b00366121ed565b919282611b3c575b506040519182526001600160a01b0390811692169060008051602061397583398151915290602090a3602060405160018152f35b6001600160a01b03848116808352600160209081526040842054928690611b6582861015612c2d565b861693848403611b7a575b5050505050611b08565b838652600283526040808720338852845286205460018101611be4575b5092600160209693611bc287946040976111676000805160206139758339815191529c9a1515612c72565b9285525283832055815220611bd88582546124bb565b90559138808581611b70565b90918110611c385792600160209693611bc28a6000805160206139758339815191529a9895611c158260409a6124ae565b86895260028552898920338a528552898920559497509497995050939650611b97565b60405162461bcd60e51b815260048101849052601860248201527745524332303a20616c6c6f77616e636520746f6f206c6f7760401b6044820152606490fd5b503461031e57611c873661219e565b9083959495421161095f576001600160a01b03878116808a52600460205260408a2080549196929592906000198314611d385782611d299694928d9260016108ed98960190556040519160208301937f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d6855260408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e081526108b18161236f565b16036109045761037092612e5d565b634e487b7160e01b8c52601160045260248cfd5b503461031e57602036600319011261031e576020906040906001600160a01b03611d7461210c565b168152601883522054604051908152f35b503461031e578060031936011261031e57602060245460801c604051908152f35b503461031e57604036600319011261031e57600435600981101561151957611dcc612180565b6008549091906001600160a01b03163303611e825760ff611dec82612222565b54161515911515918214611e4857808260ff611e0a611e3894612222565b54161515827feeec81de25875ce1725479bb76f720a8defdb43dea041919ae37bb4aae9847c08780a4612222565b9060ff8019835416911617905580f35b60405162461bcd60e51b81526020600482015260126024820152714d61726b65743a2073616d6520737461746560701b6044820152606490fd5b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881d5b985d5d1a1bdc9a5e995960621b6044820152606490fd5b503461031e57604036600319011261031e576115db611edb61210c565b6024359033612eab565b503461031e57606036600319011261031e57611eff61210c565b611f07612180565b611f0f61218f565b9060018060a01b03928391611f29836005541633146123e2565b15611fcd571690811590811591611fc5575b5015611f8857806005549283167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08580a36001600160a01b03199182161760055560068054909116905580f35b60405162461bcd60e51b81526020600482015260156024820152744f776e61626c653a207a65726f206164647265737360581b6044820152606490fd5b905038611f3b565b9150501660018060a01b0319600654161760065580f35b503461031e578060031936011261031e57808060018060a01b03600b541660405160208101906306fdde0360e01b82526004815261202181612339565b51915afa61202d613779565b91501561208a5761204061035391613800565b6112c16034604051809373546170696f63612053696e67756c61726974792d60601b602083015261207a8151809260208686019101612138565b81010360148101845201826123a6565b506103536120966137a9565b612040565b503461031e578060031936011261031e5760406120b6612766565b825191151582526020820152f35b9050346115195760403660031901126115195760406020926120e461210c565b6120ec612122565b6001600160a01b0391821683526003865283832091168252845220548152f35b600435906001600160a01b038216820361057f57565b602435906001600160a01b038216820361057f57565b60005b83811061214b5750506000910152565b818101518382015260200161213b565b9060209161217481518092818552858086019101612138565b601f01601f1916010190565b60243590811515820361057f57565b60443590811515820361057f57565b60e090600319011261057f576001600160a01b0390600435828116810361057f5791602435908116810361057f5790604435906064359060843560ff8116810361057f579060a4359060c43590565b606090600319011261057f576001600160a01b0390600435828116810361057f5791602435908116810361057f579060443590565b600981101561223b576000526007602052604060002090565b634e487b7160e01b600052602160045260246000fd5b90600182811c92168015612281575b602083101461226b57565b634e487b7160e01b600052602260045260246000fd5b91607f1691612260565b6010546000929161229b82612251565b9081815260019283811690816000146122f557506001146122bb57505050565b9092935060106000526020928360002092846000945b8386106122e15750505050010190565b8054858701830152940193859082016122d1565b91935050602093945060ff191683830152151560051b010190565b6001600160401b03811161232357604052565b634e487b7160e01b600052604160045260246000fd5b604081019081106001600160401b0382111761232357604052565b606081019081106001600160401b0382111761232357604052565b61010081019081106001600160401b0382111761232357604052565b608081019081106001600160401b0382111761232357604052565b90601f801991011681019081106001600160401b0382111761232357604052565b6001600160401b03811161232357601f01601f191660200190565b156123e957565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b1561243457565b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881b9bdd081d985b1a59607a1b6044820152606490fd5b8181029291811591840414171561094957565b811561248a570490565b634e487b7160e01b600052601260045260246000fd5b604d811161094957600a0a90565b9190820391821161094957565b9190820180921161094957565b8181039291600013801582851316918412161761094957565b60145491929161252a9161251b9161251191612507906001600160801b0383169061246d565b9060801c90612480565b93601f549061246d565b612524836124a0565b90612480565b8083106125f25761253e61257a91846124ae565b9161257561256f612566601e54612560612557866124a0565b602054906124bb565b9061246d565b612524846124a0565b916124a0565b6124c8565b6509184e72a0009081810291818305149015171561094957670de0b6b3a76400009182810292818405149015171561094957801561248a57600160ff1b9180831460001983141661094957059060008212156125eb57811461094957600003905b8082116125e6575090565b905090565b50906125db565b505050600090565b9160018060a01b03809316916000938385526020601781526040918287205490811561274c578783855161262d81612339565b828152015261263a6131c8565b505050505091905061264d8615156128ce565b6009541683600c54898b52601882526064878c2054918851948593849263442c159960e01b8452600484015260248301528d60448301525afa90811561274257899161270f575b50916126ef61270397989994926126ca886126c56126bc601898620186a0602154049061246d565b601e549061246d565b612480565b815190936001600160801b039186916126e59184169061246d565b9201511690612480565b81811061270757035b97835252205461291a565b9091565b5050826126f8565b90508381813d831161273b575b61272681836123a6565b8101031261273757516126ef612694565b8880fd5b503d61271c565b85513d8b823e3d90fd5b5086955085949350505050565b5190811515820361057f57565b600f546040805163d6d7d52560e01b8152602060048201529290916001600160a01b03168284806127996024820161228b565b0381600080955af180156128c25781948291612886575b509284156128295783156127ef57507f9f9192b5edb17356c524e08d9e025c8e2f6307e6ea52fb7968faa3081f51c3c883918260115580a25b42601355565b5162461bcd60e51b81526020600482015260146024820152734d61726b65743a20696e76616c6964207261746560601b6044820152606490fd5b9192505061283c601354601254906124bb565b421161284c5750601154906127e9565b5162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881c985d19481d1bdbc81bdb1960621b6044820152606490fd5b809550848092503d83116128bb575b61289f81836123a6565b8101031261031e5760206128b285612759565b940151386127b0565b503d612895565b508251903d90823e3d90fd5b156128d557565b60405162461bcd60e51b815260206004820152601e60248201527f4d61726b65743a2065786368616e676552617465206e6f742076616c696400006044820152606490fd5b6129258215156128ce565b602060018060a01b0360095416916064600c54604051948593849263442c159960e01b845260048401526024830152600060448301525afa9081156129c557600091612992575b50906126c561297e926021549061246d565b620186a061298e601e548361246d565b0491565b906020823d82116129bd575b816129ab602093836123a6565b8101031261031e5750516126c561296c565b3d915061299e565b6040513d6000823e3d90fd5b6001600160a01b031660008181526018602052604081205490926129f49161291a565b918352601760205260408320548015612afd578115612afd57818110612afd5782811015612af357601454612a3d91839161116791612507906001600160801b0383169061246d565b90620186a09283830292808404851490151715612adf57612a629291612524916124ae565b91601b5491601c5493612a7585856124c8565b80820291848212600160ff1b821416612adf578183051490151715612acb5705818482019485129112908015821691151617612ab757508082126125e6575090565b634e487b7160e01b81526011600452602490fd5b634e487b7160e01b83526011600452602483fd5b634e487b7160e01b85526011600452602485fd5b50505050601b5490565b50505090565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03161480612c04575b15612b5e577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f000000000000000000000000000000000000000000000000000000000000000082527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a0815260c081018181106001600160401b038211176123235760405251902090565b507f00000000000000000000000000000000000000000000000000000000000000004614612b35565b15612c3457565b60405162461bcd60e51b815260206004820152601660248201527545524332303a2062616c616e636520746f6f206c6f7760501b6044820152606490fd5b15612c7957565b60405162461bcd60e51b815260206004820152601660248201527545524332303a206e6f207a65726f206164647265737360501b6044820152606490fd5b51906001600160a01b038216820361057f57565b519060ff8216820361057f57565b600581101561223b5780612cea5750565b60018103612d325760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b6044820152606490fd5b60028103612d7f5760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606490fd5b600314612d8857565b60405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608490fd5b9291906fa2a8918ca85bafe22016d0b997e4df60600160ff1b038311612e515791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa15612e445781516001600160a01b03811615612e3e579190565b50600190565b50604051903d90823e3d90fd5b50505050600090600390565b7fe50de2333c10a9502fcb1d8ae13a51bbf423153dfc63c2b8997665b32154afc360018060a01b038092169160009083825260036020526040822094169384825260205284604082205580a4565b909160207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259160018060a01b03809416938460005260028352604060002095169485600052825280604060002055604051908152a3565b15612f0957565b60405162461bcd60e51b815260206004820152600e60248201526d13585c9ad95d0e881c185d5cd95960921b6044820152606490fd5b15612f4657565b606460405162461bcd60e51b815260206004820152602060248201527f4d61726b65743a2063616e6e6f742065786563757465206f6e20697473656c666044820152fd5b6001600160a01b0316338103612f9e575050565b60008181526020906003825260409182822033835281528483832054106130085783825260038152828220338352815282822054600101612fe1575b5050505050565b612ffc938252600381528282209033835252209182546124ae565b90553880808080612fda565b60649083519062461bcd60e51b82526004820152601460248201527313585c9ad95d0e881b9bdd08185c1c1c9bdd995960621b6044820152fd5b6040519061304f82612339565b6014546001600160801b038116835260801c6020830152565b6040519061307582612339565b6024546001600160801b038116835260801c6020830152565b919060018060a01b03806000941684526020601781526040852054908115613186576018815260408620548015612fda57816130c8613042565b9460095416916064600c54604051948593849263442c159960e01b8452600484015260248301528b60448301525afa96871561317a578097613144575b50506126e56131246126bc61313f969798620186a0602154049061246d565b9561313a60018060801b0394858751169061246d565b61246d565b111590565b9096508187813d8311613173575b61315c81836123a6565b8101031261031e57509451946126e5613124613105565b503d613152565b604051903d90823e3d90fd5b5060019450505050565b6040519061319d82612354565b60006040838281528260208201520152565b6001600160801b03918216908216019190821161094957565b6131d0613190565b50600060206040516131e181612339565b8281520152600060206040516131f681612339565b828152015260405161320781612354565b6023546001600160401b03811682526001600160401b038160401c16602083015260801c6040820152809161323a613042565b91613243613068565b600954600e54825160405163442c159960e01b8152600481018390526001600160801b03909116602482015260006044820181905293959194919391926001600160a01b031690602081606481855afa80156129c557600090613659575b88516132b792506001600160801b0316906124bb565b80613624575060005b806132d86001600160401b03602087015116426124ae565b9485156135fa575050426001600160401b031660208a8101919091528801516001600160801b0316156135b057506020670de0b6b3a76400006133358561313a8c6001600160401b038d60018060801b039051169151169061246d565b895191900496906001600160801b039061335490828a169083166131af565b168952875160405163442c159960e01b815260048101929092526001600160801b031660248201526000604482015291829060649082905afa80156129c55760009061357c575b87516133b192506001600160801b0316906124bb565b926133df846126c5620186a06133c9601a548a61246d565b60208c01516001600160801b031691900461246d565b6040890180519195916001600160801b03808816929161340290849083166131af565b16905260208801805190916001600160801b0391613422919083166131af565b16905280613547575060005b602954909384828110156134c25761344690836124ae565b90670de0b6b3a7640000820291808304670de0b6b3a76400001490151715610949576126c561349a6134946134866001600160401b03966134a496612480565b9361313a602d54958061246d565b836124bb565b91848d511661246d565b168089526001600160401b03602c54168091106134be5750565b8852565b909150602a548082116134d457505050565b6134dd916124ae565b670de0b6b3a7640000810290808204670de0b6b3a76400001490151715610949576001600160401b03916126c561352061349461348661352995602b5490612480565b848d511661246d565b81602c5460401c1680821161353f575b50168852565b905038613539565b87516001600160801b0316670de0b6b3a76400008181029291808404909114901517156109495761357791612480565b61342e565b506020813d6020116135a8575b81613596602093836123a6565b8101031261057f576133b1905161339b565b3d9150613589565b9697939450509350506001600160401b038151166001600160401b03602e54168091036135ee575b5093926135e3613068565b926000926000929190565b815260019250386135d8565b97509850505050509250509161360e613042565b91613617613068565b9160009160009190600090565b87516001600160801b0316670de0b6b3a76400008181029291808404909114901517156109495761365491612480565b6132c0565b506020813d602011613685575b81613673602093836123a6565b8101031261057f576132b790516132a1565b3d9150613666565b602060406136996131c8565b9397959390929015613740575050506001600160401b03602e54166000807f33af5ce86e8438eff54589f85332916444457dfa8685493fbd579b809097026b868851838152a45b6001600160401b03815116838201519160018060801b0319958691015160801b16916001600160401b0360401b9060401b16171760235560018060801b039083838383511692015160801b161760145583511692015160801b1617602455565b7f33af5ce86e8438eff54589f85332916444457dfa8685493fbd579b809097026b866001600160401b03865116948951908152a46136e0565b3d156137a4573d9061378a826123c7565b9161379860405193846123a6565b82523d6000602084013e565b606090565b604051906137b682612339565b60038252623f3f3f60e81b6020830152565b9081518110156137d9570160200190565b634e487b7160e01b600052603260045260246000fd5b60ff1660ff81146109495760010190565b80516040811061387b5750805181019060208181840193031261057f576020810151906001600160401b03821161057f570181603f8201121561057f57602081015161384b816123c7565b9261385960405194856123a6565b8184526040828401011161057f57613878916040602085019101612138565b90565b602092908303613969576000805b60ff8116858110908161394a575b50156138ab576138a6906137ef565b613889565b9260ff809416926138bb846123c7565b936138c960405195866123a6565b8085526138d8601f19916123c7565b013687860137825b8581168781108061392d575b156139225761391d91906139176001600160f81b031961390c83886137c8565b5116871a91886137c8565b536137ef565b6138e0565b505094505050905090565b506001600160f81b031961394182866137c8565b511615156138ec565b6001600160f81b0319915061395f90866137c8565b5116151538613897565b9150506138786137a956feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220b1bf97fefb2a28e789adf6d8f76790365fe56f5052cdc53826c08fce9eb6784664736f6c63430008120033", "linkReferences": {}, "deployedLinkReferences": {} } diff --git a/src/artifacts/tapioca-bar/SGLCommon.json b/src/artifacts/tapioca-bar/SGLCommon.json index 3cdd04cd..3b8bde84 100644 --- a/src/artifacts/tapioca-bar/SGLCommon.json +++ b/src/artifacts/tapioca-bar/SGLCommon.json @@ -1527,11 +1527,6 @@ }, { "inputs": [ - { - "internalType": "uint256", - "name": "_borrowOpeningFee", - "type": "uint256" - }, { "internalType": "contract IOracle", "name": "_oracle", @@ -1858,8 +1853,8 @@ "type": "function" } ], - "bytecode": "0x6101408060405234620001e5576200001781620001ea565b601381526001602082017f546170696f63612053696e67756c617269747900000000000000000000000000815260206040516200005481620001ea565b8381520192603160f81b845251902091208160e052610100918183524660a0526040519160208301907f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f92838352604085015260608401524660808401523060a084015260a0835260c083019280841060018060401b03851117620001cf5760408490525190206080523060c052610120908152600580546001600160a01b0319163390811790915560007f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a362013880601b5562015f90601c55612710601d556032602055612ee06021557f0bd4060688a1800ae986e4840aebc924bb40b5bf44de4583df2257220b54b77c6027557f7d1dc38e60930664f8cbf495da6556ca091d2f92d6550877750c049864b182306028556161a86029556131df928362000207843960805183612684015260a0518361274f015260c0518361264e015260e051836126d3015251826126f9015251816126b00152f35b634e487b7160e01b600052604160045260246000fd5b600080fd5b604081019081106001600160401b03821117620001cf5760405256fe608080604052600436101561001357600080fd5b600090813560e01c908162a02a2014611db05750806302ce728f14611c2857806306fdde0314611b71578063078dfbe714611a6e578063095ea7b314611a475780630996efb7146115c25780630c4e84f0146114aa57806318160ddd146114895780631c9e379b146114505780631da8bf101461139057806323b872dd146111f3578063313ce56714611161578063331960ff1461114357806334d441d0146111255780633644e5151461110a57806337b6b7b9146110ec57806338d52e0f146110c35780633ba0b9a9146110a55780633f741adb1461108057806340626d8b1461106257806344de240a14611044578063473e3ce71461102657806348e4163e14610fed5780634d7f2a3414610fcf5780634e71e0c814610f21578063529898f214610f0357806352f353eb14610edc5780635514023214610eb557806355c2ab9414610e8b5780635793546214610e6d5780635dfe04e814610e0e5780636c3d8b8f14610de557806370a0823114610dac5780637277854714610d7457806374645ff314610d495780637dc0d1d014610d205780637ecebe0014610ce75780637fa0b84e14610cb5578063821226e814610c975780638285ef4014610c655780638c5d0ed314610c475780638da5cb5b14610c1e578063910dd7c814610a01578063959916dc146109e457806395d89b411461092a57806399a97028146108fa5780639c5d7192146108dc5780639e15e89f146108a1578063a9059cbb146107be578063b0e21e8a146107a0578063b27c0e7414610765578063bb4cfe3b14610747578063ce8849ed1461071e578063d505accf14610579578063d8dfeb4514610550578063dd62ed3e14610505578063de406577146104dc578063e0996cb6146104be578063e30c397814610495578063ea64dd5614610477578063eec0f42e14610459578063f42760b71461043b578063f8ba4cff14610341578063f9557ccb1461030b5763ffe04c66146102eb57600080fd5b346103085780600319360112610308576020602a54604051908152f35b80fd5b5034610308578060031936011261030857602554604080516001600160801b038316815260809290921c602083015290f35b0390f35b50346103085780600319360112610308576020604061035e612ace565b9397959390929015610402575050506001600160401b03602f541686807f33af5ce86e8438eff54589f85332916444457dfa8685493fbd579b809097026b868851838152a45b6001600160401b038151166001600160401b03851b84830151861b169160018060801b0319958691015160801b1691171760245560018060801b039083838383511692015160801b161760145583511692015160801b161760255580f35b7f33af5ce86e8438eff54589f85332916444457dfa8685493fbd579b809097026b866001600160401b03865116948951908152a46103a4565b50346103085780600319360112610308576020602b54604051908152f35b50346103085780600319360112610308576020600c54604051908152f35b50346103085780600319360112610308576020601f54604051908152f35b50346103085780600319360112610308576006546040516001600160a01b039091168152602090f35b50346103085780600319360112610308576020601d54604051908152f35b50346103085780600319360112610308576009546040516001600160a01b039091168152602090f35b5034610308576040366003190112610308576040602091610524611df8565b61052c611e13565b6001600160a01b039182168352600285528383209116825283522054604051908152f35b5034610308578060031936011261030857600b546040516001600160a01b039091168152602090f35b50346103085761058836611e80565b908395949542116106d9576001600160a01b03878116808a52600460205260408a20805491969295929060001983146106c5578261066e9694928d92600161066698960190556040519160208301937f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e266855260408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e0815261062a81612009565b51902061063561264b565b9060405190602082019261190160f01b8452602283015260428201526042815261065e81612025565b519020612920565b919091612821565b16036106805761067d926129f3565b80f35b60405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152606490fd5b634e487b7160e01b8c52601160045260248cfd5b60405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b50346103085780600319360112610308576008546040516001600160a01b039091168152602090f35b50346103085780600319360112610308576020601e54604051908152f35b50346103085780600319360112610308576060602454604051906001600160401b0380821683528160401c16602083015260801c6040820152f35b50346103085780600319360112610308576020601a54604051908152f35b5034610308576040366003190112610308576107d8611df8565b6024358092811580159061088f575b61081f575b50506040519182526001600160a01b031690339060008051602061318a83398151915290602090a3602060405160018152f35b3381526001602052604081205461083883821015612775565b6001600160a01b0384169033829003610853575b50506107ec565b60409361086a916108658415156127ba565b61215e565b33835260016020528383205581522061088483825461216b565b90558138808061084c565b50336001600160a01b038416146107e7565b50346103085760403660031901126103085760606108c96108c0611df8565b602435906122aa565b9060405192835260208301526040820152f35b50346103085780600319360112610308576020602c54604051908152f35b5034610308576040366003190112610308576020610922610919611df8565b60243590612519565b604051908152f35b5034610308578060031936011261030857808060018060a01b03600b541660405160208101906395d89b4160e01b82526004815261096781611fee565b51915afa610973612f8e565b9150156109d35761098661033d91613015565b6109bf6023604051809362746d2d60e81b60208301526109af8151809260208686019101611e29565b8101036003810184520182612040565b604051918291602083526020830190611e4c565b5061033d6109df612fbe565b610986565b503461030857806003193601126103085760208054604051908152f35b5034610308576040366003190112610308576004356001600160401b038111610c1a5736602382011215610c1a57806004013582610a3e82612061565b92610a4c6040519485612040565b82845260208401923660248284010111610c16578060246020930185378401015260243561ffff81168103610c1257610100918284805181010312610c0e57610a9490612409565b610aa0604085016127ff565b91610aad606086016127ff565b9460808101519460a082015192610ac660c08401612813565b9160e0840151930151938042116106d9578515610be7577f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e266915b6001600160a01b0388168b52600460205260408b20805491906000198314610bd3579161ffff610b909896949261066698969460018401905560405194602086015216604084015260018060a01b038a16606084015260018060a01b038c1660808401528a60a084015260c083015260e082015260e08152610b8181612009565b6020815191012061063561264b565b6001600160a01b038381169116036106805715610bbd5761067d926001600160a01b0390811691166129f3565b61067d926001600160a01b0390811691166129a5565b634e487b7160e01b8d52601160045260248dfd5b7f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d691610b00565b8480fd5b8380fd5b8280fd5b5080fd5b50346103085780600319360112610308576005546040516001600160a01b039091168152602090f35b50346103085780600319360112610308576020601b54604051908152f35b5034610308578060031936011261030857601454604080516001600160801b038316815260809290921c602083015290f35b50346103085780600319360112610308576020602e54604051908152f35b503461030857604036600319011261030857610cdc610cd2611df8565b60243590336129a5565b602060405160018152f35b5034610308576020366003190112610308576020906040906001600160a01b03610d0f611df8565b168152600483522054604051908152f35b5034610308578060031936011261030857600f546040516001600160a01b039091168152602090f35b503461030857806003193601126103085761033d6040516109bf81610d6d81611f38565b0382612040565b50346103085760203660031901126103085760043590600982101561030857602060ff610da084611ecf565b54166040519015158152f35b5034610308576020366003190112610308576020906040906001600160a01b03610dd4611df8565b168152600183522054604051908152f35b5034610308578060031936011261030857600a546040516001600160a01b039091168152602090f35b5034610308578060031936011261030857610e27612a4a565b506080610e32612ace565b509350505050604051916001600160401b0380825116845260208201511660208401526040600180861b039101511660408301526060820152f35b50346103085780600319360112610308576020601c54604051908152f35b503461030857806003193601126103085760206001600160401b03602d5460401c16604051908152f35b503461030857806003193601126103085760206001600160401b03602d5416604051908152f35b503461030857806003193601126103085760206001600160401b03602f5416604051908152f35b50346103085780600319360112610308576020602154604051908152f35b50346103085780600319360112610308576006546001600160a01b039081811633819003610f8b57806005549384167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08680a36001600160a01b0319928316176005551660065580f35b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b50346103085780600319360112610308576020602954604051908152f35b5034610308576020366003190112610308576020906040906001600160a01b03611015611df8565b168152601783522054604051908152f35b50346103085780600319360112610308576020601554604051908152f35b50346103085780600319360112610308576020600e54604051908152f35b50346103085780600319360112610308576020601654604051908152f35b5034610308576060366003190112610308576020610922604435602435600435612191565b50346103085780600319360112610308576020601154604051908152f35b5034610308578060031936011261030857600d546040516001600160a01b039091168152602090f35b50346103085780600319360112610308576020601254604051908152f35b5034610308578060031936011261030857602061092261264b565b50346103085780600319360112610308576020601954604051908152f35b50346103085780600319360112610308576020601354604051908152f35b5034610308578060031936011261030857808060018060a01b03600d5416604051602081019063313ce56760e01b82526004815261119e81611fee565b51915afa906111ab612f8e565b91806111e8575b156111dd5760208280518101031261030857506111d26020809201612813565b60ff60405191168152f35b5050602060126111d2565b5060208251146111b2565b50346103085760603660031901126103085761120d611df8565b90611216611e13565b6044359182611254575b506040519182526001600160a01b0390811692169060008051602061318a83398151915290602090a3602060405160018152f35b6001600160a01b0384811680835260016020908152604084205492869061127d82861015612775565b861693848403611292575b5050505050611220565b8386526002835260408087203388528452862054600181016112fc575b50926001602096936112da879460409761086560008051602061318a8339815191529c9a15156127ba565b92855252838320558152206112f085825461216b565b90559138808581611288565b9091811061135057926001602096936112da8a60008051602061318a8339815191529a989561132d8260409a61215e565b86895260028552898920338a5285528989205594975094979950509396506112af565b60405162461bcd60e51b815260048101849052601860248201527745524332303a20616c6c6f77616e636520746f6f206c6f7760401b6044820152606490fd5b50346103085761139f36611e80565b908395949542116106d9576001600160a01b03878116808a52600460205260408a20805491969295929060001983146106c557826114419694928d92600161066698960190556040519160208301937f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d6855260408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e0815261062a81612009565b16036106805761067d926129a5565b5034610308576020366003190112610308576020906040906001600160a01b03611478611df8565b168152601883522054604051908152f35b5034610308578060031936011261030857602060255460801c604051908152f35b5034610308576040366003190112610308576004356009811015610c1a576114d0611e71565b6008549091906001600160a01b031633036115865760ff6114f082611ecf565b5416151591151591821461154c57808260ff61150e61153c94611ecf565b54161515827feeec81de25875ce1725479bb76f720a8defdb43dea041919ae37bb4aae9847c08780a4611ecf565b9060ff8019835416911617905580f35b60405162461bcd60e51b81526020600482015260126024820152714d61726b65743a2073616d6520737461746560701b6044820152606490fd5b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881d5b985d5d1a1bdc9a5e995960621b6044820152606490fd5b5034610308576101803660031901126103085760246001600160a01b03813581811690819003610c1257604435916001600160401b0390818411611a435736602385011215611a43578360040135918211611a435736858386010111611a435760643591818316809303611a3f5761163f8260055416331461207c565b60043594620186a094611654868811156120c7565b6020968088547fc353b09af857951dccce61b43a5854fc45beceed36c50e5d4cc2e71858a8e0df8c80a3875580611a01575b5086826118c6575b50505081611886575b505060843580611871575b5060a4358061185c575b5060c43580611848575b5060e43580611827575b506101043580611806575b5061012435806117d5575b50610144359081611765575b50506101643591826116f2578380f35b601e548310611707575050601f553880808380f35b9060326084926040519262461bcd60e51b845260048401528201527f4d61726b65743a206c69717569646174696f6e436f6c6c61746572616c697a616044820152711d1a5bdb94985d19481d1bdbc81cdb585b1b60721b6064820152fd5b611771908211156120c7565b601f54811161178457601e5538806116e2565b5060256084926040519262461bcd60e51b845260048401528201527f4d61726b65743a20636f6c6c61746572616c697a6174696f6e5261746520746f6044820152646f2062696760d81b6064820152fd5b806016547fae6e0ab3b95f0a53ff9660a390ccedcbbf1f2355dce974a9841af106fddcfaba8780a3601655386116d6565b6118118282106120c7565b61181e601b5482116120c7565b601c55386116cb565b6118328282106120c7565b61183f601c5482106120c7565b601b55386116c0565b6118538282106120c7565b601d55386116b6565b611868828211156120c7565b601a55386116ac565b61187d828211156120c7565b601955386116a2565b816008549182167f5a62d22209e370e38eea92cfddcd228e656e6ec139243392a760a7769f5877fd8880a36001600160a01b031916176008553880611697565b82916118d3601054611efe565b601f81116119b0575b508990601f8411600114611941578a93611934575b5050508160011b916000199060031b1c1916176010555b7fa6f004921c944d4b8bf6e38462b00f36a58d62495d56b51f571ab78f732c98158680a138808661168e565b01013590508638806118f1565b60108b52888b20601f198516955092509089908b5b8a8782106119955750508460019610611979575b50505050811b01601055611908565b60001960f88660031b161c19920101351690553880888161196a565b8483019093013585556001909401938b929182019101611956565b9150915060108952868920601f840160051c81018885106119fa575b91849391601f8b94920160051c01905b8181106119e957506118dc565b8b81558594508a93506001016119dc565b50806119cc565b600f80546001600160a01b0319169190911790557f0b2d6eb667d0522c3eb86e4288afecae6c11591ffd1345d4d12407e0598bca9b8880a138611686565b8680fd5b8580fd5b503461030857604036600319011261030857610cdc611a64611df8565b60243590336129f3565b503461030857606036600319011261030857611a88611df8565b611a90611e71565b604435908115158203610c125760018060a01b03928391611ab68360055416331461207c565b15611b5a571690811590811591611b52575b5015611b1557806005549283167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08580a36001600160a01b03199182161760055560068054909116905580f35b60405162461bcd60e51b81526020600482015260156024820152744f776e61626c653a207a65726f206164647265737360581b6044820152606490fd5b905038611ac8565b9150501660018060a01b0319600654161760065580f35b5034610308578060031936011261030857808060018060a01b03600b541660405160208101906306fdde0360e01b825260048152611bae81611fee565b51915afa611bba612f8e565b915015611c1757611bcd61033d91613015565b6109bf6034604051809373546170696f63612053696e67756c61726974792d60601b6020830152611c078151809260208686019101611e29565b8101036014810184520182612040565b5061033d611c23612fbe565b611bcd565b5034610308578060031936011261030857600f546040805163d6d7d52560e01b8152602060048201529182906001600160a01b0316818581611c6c60248201611f38565b03925af18015611da55782918391611d65575b508115611d06578015611cca57807f9f9192b5edb17356c524e08d9e025c8e2f6307e6ea52fb7968faa3081f51c3c86040948260115580a25b42601355825191151582526020820152f35b60405162461bcd60e51b81526020600482015260146024820152734d61726b65743a20696e76616c6964207261746560601b6044820152606490fd5b509050611d186013546012549061216b565b4211611d2957604090601154611cb8565b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881c985d19481d1bdbc81bdb1960621b6044820152606490fd5b9150506040813d604011611d9d575b81611d8160409383612040565b81010312610c1a576020611d9482612409565b91015138611c7f565b3d9150611d74565b6040513d84823e3d90fd5b905034610c1a576040366003190112610c1a576040602092611dd0611df8565b611dd8611e13565b6001600160a01b0391821683526003865283832091168252845220548152f35b600435906001600160a01b0382168203611e0e57565b600080fd5b602435906001600160a01b0382168203611e0e57565b60005b838110611e3c5750506000910152565b8181015183820152602001611e2c565b90602091611e6581518092818552858086019101611e29565b601f01601f1916010190565b602435908115158203611e0e57565b60e0906003190112611e0e576001600160a01b03906004358281168103611e0e57916024359081168103611e0e5790604435906064359060843560ff81168103611e0e579060a4359060c43590565b6009811015611ee8576000526007602052604060002090565b634e487b7160e01b600052602160045260246000fd5b90600182811c92168015611f2e575b6020831014611f1857565b634e487b7160e01b600052602260045260246000fd5b91607f1691611f0d565b60105460009291611f4882611efe565b908181526001928381169081600014611fa25750600114611f6857505050565b9092935060106000526020928360002092846000945b838610611f8e5750505050010190565b805485870183015294019385908201611f7e565b91935050602093945060ff191683830152151560051b010190565b606081019081106001600160401b03821117611fd857604052565b634e487b7160e01b600052604160045260246000fd5b604081019081106001600160401b03821117611fd857604052565b61010081019081106001600160401b03821117611fd857604052565b608081019081106001600160401b03821117611fd857604052565b90601f801991011681019081106001600160401b03821117611fd857604052565b6001600160401b038111611fd857601f01601f191660200190565b1561208357565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b156120ce57565b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881b9bdd081d985b1a59607a1b6044820152606490fd5b8181029291811591840414171561211a57565b634e487b7160e01b600052601160045260246000fd5b811561213a570490565b634e487b7160e01b600052601260045260246000fd5b604d811161211a57600a0a90565b9190820391821161211a57565b9190820180921161211a57565b8181039291600013801582851316918412161761211a57565b6014549192916121da916121cb916121c1916121b7906001600160801b03831690612107565b9060801c90612130565b93601f5490612107565b6121d483612150565b90612130565b8083106122a2576121ee61222a918461215e565b9161222561221f612216601e5461221061220786612150565b6021549061216b565b90612107565b6121d484612150565b91612150565b612178565b6509184e72a0009081810291818305149015171561211a57670de0b6b3a76400009182810292818405149015171561211a57801561213a57600160ff1b9180831460001983141661211a570590600082121561229b57811461211a57600003905b808211612296575090565b905090565b509061228b565b505050600090565b9160018060a01b0380931691600093838552602060178152604091828720549081156123fc57878385516122dd81611fee565b82815201526122ea612ace565b50505050509190506122fd861515612416565b6009541683600c54898b52601882526064878c2054918851948593849263442c159960e01b8452600484015260248301528d60448301525afa9081156123f25789916123bf575b509161239f6123b3979899949261237a8861237561236c601898620186a06022540490612107565b601e5490612107565b612130565b815190936001600160801b0391869161239591841690612107565b9201511690612130565b8181106123b757035b978352522054612462565b9091565b5050826123a8565b90508381813d83116123eb575b6123d68183612040565b810103126123e7575161239f612344565b8880fd5b503d6123cc565b85513d8b823e3d90fd5b5086955085949350505050565b51908115158203611e0e57565b1561241d57565b60405162461bcd60e51b815260206004820152601e60248201527f4d61726b65743a2065786368616e676552617465206e6f742076616c696400006044820152606490fd5b61246d821515612416565b602060018060a01b0360095416916064600c54604051948593849263442c159960e01b845260048401526024830152600060448301525afa90811561250d576000916124da575b50906123756124c69260225490612107565b620186a06124d6601e5483612107565b0491565b906020823d8211612505575b816124f360209383612040565b810103126103085750516123756124b4565b3d91506124e6565b6040513d6000823e3d90fd5b6001600160a01b0316600081815260186020526040812054909261253c91612462565b91835260176020526040832054801561264557811561264557818110612645578281101561263b57601454612585918391610865916121b7906001600160801b03831690612107565b90620186a09283830292808404851490151715612627576125aa92916121d49161215e565b91601b5491601c54936125bd8585612178565b80820291848212600160ff1b82141661262757818305149015171561261357058184820194851291129080158216911516176125ff5750808212612296575090565b634e487b7160e01b81526011600452602490fd5b634e487b7160e01b83526011600452602483fd5b634e487b7160e01b85526011600452602485fd5b50505050601b5490565b50505090565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316148061274c575b156126a6577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f000000000000000000000000000000000000000000000000000000000000000082527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a0815260c081018181106001600160401b03821117611fd85760405251902090565b507f0000000000000000000000000000000000000000000000000000000000000000461461267d565b1561277c57565b60405162461bcd60e51b815260206004820152601660248201527545524332303a2062616c616e636520746f6f206c6f7760501b6044820152606490fd5b156127c157565b60405162461bcd60e51b815260206004820152601660248201527545524332303a206e6f207a65726f206164647265737360501b6044820152606490fd5b51906001600160a01b0382168203611e0e57565b519060ff82168203611e0e57565b6005811015611ee857806128325750565b6001810361287a5760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b6044820152606490fd5b600281036128c75760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606490fd5b6003146128d057565b60405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608490fd5b9291906fa2a8918ca85bafe22016d0b997e4df60600160ff1b0383116129995791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa1561298c5781516001600160a01b03811615612986579190565b50600190565b50604051903d90823e3d90fd5b50505050600090600390565b7fe50de2333c10a9502fcb1d8ae13a51bbf423153dfc63c2b8997665b32154afc360018060a01b038092169160009083825260036020526040822094169384825260205284604082205580a4565b909160207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259160018060a01b03809416938460005260028352604060002095169485600052825280604060002055604051908152a3565b60405190612a5782611fbd565b60006040838281528260208201520152565b60405190612a7682611fee565b6014546001600160801b038116835260801c6020830152565b60405190612a9c82611fee565b6025546001600160801b038116835260801c6020830152565b6001600160801b03918216908216019190821161211a57565b612ad6612a4a565b5060006020604051612ae781611fee565b828152015260006020604051612afc81611fee565b828152015260405190612b0e82611fbd565b602454916001600160401b038316815260208101926001600160401b038160401c16845260801c60408201528092612b44612a69565b92612b4d612a8f565b92600060018060a01b0360095416600e549460018060801b038751166040519063442c159960e01b8252876004830152602482015260006044820152602081606481865afa801561250d57600090612f5a575b8951612bb692506001600160801b03169061216b565b80612f25575060005b612bd46001600160401b03829351164261215e565b948515612efb575050426001600160401b031660208a8101919091528801516001600160801b031615612eb157506020670de0b6b3a7640000612c3685612c318c6001600160401b038d60018060801b0390511691511690612107565b612107565b895191900496906001600160801b0390612c5590828a16908316612ab5565b168952875160405163442c159960e01b815260048101929092526001600160801b031660248201526000604482015291829060649082905afa801561250d57600090612e7d575b8751612cb292506001600160801b03169061216b565b92612ce084612375620186a0612cca601a548a612107565b60208c01516001600160801b0316919004612107565b6040890180519195916001600160801b038088169291612d039084908316612ab5565b16905260208801805190916001600160801b0391612d2391908316612ab5565b16905280612e48575060005b602a5490938482811015612dc357612d47908361215e565b90670de0b6b3a7640000820291808304670de0b6b3a7640000149015171561211a57612375612d9b612d95612d876001600160401b0396612da596612130565b93612c31602e549580612107565b8361216b565b91848d5116612107565b168089526001600160401b03602d5416809110612dbf5750565b8852565b909150602b54808211612dd557505050565b612dde9161215e565b670de0b6b3a7640000810290808204670de0b6b3a7640000149015171561211a576001600160401b0391612375612e21612d95612d87612e2a95602c5490612130565b848d5116612107565b81602d5460401c16808211612e40575b50168852565b905038612e3a565b87516001600160801b0316670de0b6b3a764000081810292918084049091149015171561211a57612e7891612130565b612d2f565b506020813d602011612ea9575b81612e9760209383612040565b81010312611e0e57612cb29051612c9c565b3d9150612e8a565b9697939450509350506001600160401b038151166001600160401b03602f5416809103612eef575b509392612ee4612a8f565b926000926000929190565b81526001925038612ed9565b975098505050505092505091612f0f612a69565b91612f18612a8f565b9160009160009190600090565b88516001600160801b0316670de0b6b3a764000081810292918084049091149015171561211a57612f5591612130565b612bbf565b506020813d602011612f86575b81612f7460209383612040565b81010312611e0e57612bb69051612ba0565b3d9150612f67565b3d15612fb9573d90612f9f82612061565b91612fad6040519384612040565b82523d6000602084013e565b606090565b60405190612fcb82611fee565b60038252623f3f3f60e81b6020830152565b908151811015612fee570160200190565b634e487b7160e01b600052603260045260246000fd5b60ff1660ff811461211a5760010190565b80516040811061309057508051810190602081818401930312611e0e576020810151906001600160401b038211611e0e570181603f82011215611e0e57602081015161306081612061565b9261306e6040519485612040565b81845260408284010111611e0e5761308d916040602085019101611e29565b90565b60209290830361317e576000805b60ff8116858110908161315f575b50156130c0576130bb90613004565b61309e565b9260ff809416926130d084612061565b936130de6040519586612040565b8085526130ed601f1991612061565b013687860137825b85811687811080613142575b1561313757613132919061312c6001600160f81b03196131218388612fdd565b5116871a9188612fdd565b53613004565b6130f5565b505094505050905090565b506001600160f81b03196131568286612fdd565b51161515613101565b6001600160f81b031991506131749086612fdd565b51161515386130ac565b91505061308d612fbe56feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220eb500fb6012a489866ad5ba43ee1b8bd8cad1bbaf6d19dc56a7aa0a2ad6b05e564736f6c63430008120033", - "deployedBytecode": "0x608080604052600436101561001357600080fd5b600090813560e01c908162a02a2014611db05750806302ce728f14611c2857806306fdde0314611b71578063078dfbe714611a6e578063095ea7b314611a475780630996efb7146115c25780630c4e84f0146114aa57806318160ddd146114895780631c9e379b146114505780631da8bf101461139057806323b872dd146111f3578063313ce56714611161578063331960ff1461114357806334d441d0146111255780633644e5151461110a57806337b6b7b9146110ec57806338d52e0f146110c35780633ba0b9a9146110a55780633f741adb1461108057806340626d8b1461106257806344de240a14611044578063473e3ce71461102657806348e4163e14610fed5780634d7f2a3414610fcf5780634e71e0c814610f21578063529898f214610f0357806352f353eb14610edc5780635514023214610eb557806355c2ab9414610e8b5780635793546214610e6d5780635dfe04e814610e0e5780636c3d8b8f14610de557806370a0823114610dac5780637277854714610d7457806374645ff314610d495780637dc0d1d014610d205780637ecebe0014610ce75780637fa0b84e14610cb5578063821226e814610c975780638285ef4014610c655780638c5d0ed314610c475780638da5cb5b14610c1e578063910dd7c814610a01578063959916dc146109e457806395d89b411461092a57806399a97028146108fa5780639c5d7192146108dc5780639e15e89f146108a1578063a9059cbb146107be578063b0e21e8a146107a0578063b27c0e7414610765578063bb4cfe3b14610747578063ce8849ed1461071e578063d505accf14610579578063d8dfeb4514610550578063dd62ed3e14610505578063de406577146104dc578063e0996cb6146104be578063e30c397814610495578063ea64dd5614610477578063eec0f42e14610459578063f42760b71461043b578063f8ba4cff14610341578063f9557ccb1461030b5763ffe04c66146102eb57600080fd5b346103085780600319360112610308576020602a54604051908152f35b80fd5b5034610308578060031936011261030857602554604080516001600160801b038316815260809290921c602083015290f35b0390f35b50346103085780600319360112610308576020604061035e612ace565b9397959390929015610402575050506001600160401b03602f541686807f33af5ce86e8438eff54589f85332916444457dfa8685493fbd579b809097026b868851838152a45b6001600160401b038151166001600160401b03851b84830151861b169160018060801b0319958691015160801b1691171760245560018060801b039083838383511692015160801b161760145583511692015160801b161760255580f35b7f33af5ce86e8438eff54589f85332916444457dfa8685493fbd579b809097026b866001600160401b03865116948951908152a46103a4565b50346103085780600319360112610308576020602b54604051908152f35b50346103085780600319360112610308576020600c54604051908152f35b50346103085780600319360112610308576020601f54604051908152f35b50346103085780600319360112610308576006546040516001600160a01b039091168152602090f35b50346103085780600319360112610308576020601d54604051908152f35b50346103085780600319360112610308576009546040516001600160a01b039091168152602090f35b5034610308576040366003190112610308576040602091610524611df8565b61052c611e13565b6001600160a01b039182168352600285528383209116825283522054604051908152f35b5034610308578060031936011261030857600b546040516001600160a01b039091168152602090f35b50346103085761058836611e80565b908395949542116106d9576001600160a01b03878116808a52600460205260408a20805491969295929060001983146106c5578261066e9694928d92600161066698960190556040519160208301937f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e266855260408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e0815261062a81612009565b51902061063561264b565b9060405190602082019261190160f01b8452602283015260428201526042815261065e81612025565b519020612920565b919091612821565b16036106805761067d926129f3565b80f35b60405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152606490fd5b634e487b7160e01b8c52601160045260248cfd5b60405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b50346103085780600319360112610308576008546040516001600160a01b039091168152602090f35b50346103085780600319360112610308576020601e54604051908152f35b50346103085780600319360112610308576060602454604051906001600160401b0380821683528160401c16602083015260801c6040820152f35b50346103085780600319360112610308576020601a54604051908152f35b5034610308576040366003190112610308576107d8611df8565b6024358092811580159061088f575b61081f575b50506040519182526001600160a01b031690339060008051602061318a83398151915290602090a3602060405160018152f35b3381526001602052604081205461083883821015612775565b6001600160a01b0384169033829003610853575b50506107ec565b60409361086a916108658415156127ba565b61215e565b33835260016020528383205581522061088483825461216b565b90558138808061084c565b50336001600160a01b038416146107e7565b50346103085760403660031901126103085760606108c96108c0611df8565b602435906122aa565b9060405192835260208301526040820152f35b50346103085780600319360112610308576020602c54604051908152f35b5034610308576040366003190112610308576020610922610919611df8565b60243590612519565b604051908152f35b5034610308578060031936011261030857808060018060a01b03600b541660405160208101906395d89b4160e01b82526004815261096781611fee565b51915afa610973612f8e565b9150156109d35761098661033d91613015565b6109bf6023604051809362746d2d60e81b60208301526109af8151809260208686019101611e29565b8101036003810184520182612040565b604051918291602083526020830190611e4c565b5061033d6109df612fbe565b610986565b503461030857806003193601126103085760208054604051908152f35b5034610308576040366003190112610308576004356001600160401b038111610c1a5736602382011215610c1a57806004013582610a3e82612061565b92610a4c6040519485612040565b82845260208401923660248284010111610c16578060246020930185378401015260243561ffff81168103610c1257610100918284805181010312610c0e57610a9490612409565b610aa0604085016127ff565b91610aad606086016127ff565b9460808101519460a082015192610ac660c08401612813565b9160e0840151930151938042116106d9578515610be7577f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e266915b6001600160a01b0388168b52600460205260408b20805491906000198314610bd3579161ffff610b909896949261066698969460018401905560405194602086015216604084015260018060a01b038a16606084015260018060a01b038c1660808401528a60a084015260c083015260e082015260e08152610b8181612009565b6020815191012061063561264b565b6001600160a01b038381169116036106805715610bbd5761067d926001600160a01b0390811691166129f3565b61067d926001600160a01b0390811691166129a5565b634e487b7160e01b8d52601160045260248dfd5b7f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d691610b00565b8480fd5b8380fd5b8280fd5b5080fd5b50346103085780600319360112610308576005546040516001600160a01b039091168152602090f35b50346103085780600319360112610308576020601b54604051908152f35b5034610308578060031936011261030857601454604080516001600160801b038316815260809290921c602083015290f35b50346103085780600319360112610308576020602e54604051908152f35b503461030857604036600319011261030857610cdc610cd2611df8565b60243590336129a5565b602060405160018152f35b5034610308576020366003190112610308576020906040906001600160a01b03610d0f611df8565b168152600483522054604051908152f35b5034610308578060031936011261030857600f546040516001600160a01b039091168152602090f35b503461030857806003193601126103085761033d6040516109bf81610d6d81611f38565b0382612040565b50346103085760203660031901126103085760043590600982101561030857602060ff610da084611ecf565b54166040519015158152f35b5034610308576020366003190112610308576020906040906001600160a01b03610dd4611df8565b168152600183522054604051908152f35b5034610308578060031936011261030857600a546040516001600160a01b039091168152602090f35b5034610308578060031936011261030857610e27612a4a565b506080610e32612ace565b509350505050604051916001600160401b0380825116845260208201511660208401526040600180861b039101511660408301526060820152f35b50346103085780600319360112610308576020601c54604051908152f35b503461030857806003193601126103085760206001600160401b03602d5460401c16604051908152f35b503461030857806003193601126103085760206001600160401b03602d5416604051908152f35b503461030857806003193601126103085760206001600160401b03602f5416604051908152f35b50346103085780600319360112610308576020602154604051908152f35b50346103085780600319360112610308576006546001600160a01b039081811633819003610f8b57806005549384167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08680a36001600160a01b0319928316176005551660065580f35b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b50346103085780600319360112610308576020602954604051908152f35b5034610308576020366003190112610308576020906040906001600160a01b03611015611df8565b168152601783522054604051908152f35b50346103085780600319360112610308576020601554604051908152f35b50346103085780600319360112610308576020600e54604051908152f35b50346103085780600319360112610308576020601654604051908152f35b5034610308576060366003190112610308576020610922604435602435600435612191565b50346103085780600319360112610308576020601154604051908152f35b5034610308578060031936011261030857600d546040516001600160a01b039091168152602090f35b50346103085780600319360112610308576020601254604051908152f35b5034610308578060031936011261030857602061092261264b565b50346103085780600319360112610308576020601954604051908152f35b50346103085780600319360112610308576020601354604051908152f35b5034610308578060031936011261030857808060018060a01b03600d5416604051602081019063313ce56760e01b82526004815261119e81611fee565b51915afa906111ab612f8e565b91806111e8575b156111dd5760208280518101031261030857506111d26020809201612813565b60ff60405191168152f35b5050602060126111d2565b5060208251146111b2565b50346103085760603660031901126103085761120d611df8565b90611216611e13565b6044359182611254575b506040519182526001600160a01b0390811692169060008051602061318a83398151915290602090a3602060405160018152f35b6001600160a01b0384811680835260016020908152604084205492869061127d82861015612775565b861693848403611292575b5050505050611220565b8386526002835260408087203388528452862054600181016112fc575b50926001602096936112da879460409761086560008051602061318a8339815191529c9a15156127ba565b92855252838320558152206112f085825461216b565b90559138808581611288565b9091811061135057926001602096936112da8a60008051602061318a8339815191529a989561132d8260409a61215e565b86895260028552898920338a5285528989205594975094979950509396506112af565b60405162461bcd60e51b815260048101849052601860248201527745524332303a20616c6c6f77616e636520746f6f206c6f7760401b6044820152606490fd5b50346103085761139f36611e80565b908395949542116106d9576001600160a01b03878116808a52600460205260408a20805491969295929060001983146106c557826114419694928d92600161066698960190556040519160208301937f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d6855260408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e0815261062a81612009565b16036106805761067d926129a5565b5034610308576020366003190112610308576020906040906001600160a01b03611478611df8565b168152601883522054604051908152f35b5034610308578060031936011261030857602060255460801c604051908152f35b5034610308576040366003190112610308576004356009811015610c1a576114d0611e71565b6008549091906001600160a01b031633036115865760ff6114f082611ecf565b5416151591151591821461154c57808260ff61150e61153c94611ecf565b54161515827feeec81de25875ce1725479bb76f720a8defdb43dea041919ae37bb4aae9847c08780a4611ecf565b9060ff8019835416911617905580f35b60405162461bcd60e51b81526020600482015260126024820152714d61726b65743a2073616d6520737461746560701b6044820152606490fd5b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881d5b985d5d1a1bdc9a5e995960621b6044820152606490fd5b5034610308576101803660031901126103085760246001600160a01b03813581811690819003610c1257604435916001600160401b0390818411611a435736602385011215611a43578360040135918211611a435736858386010111611a435760643591818316809303611a3f5761163f8260055416331461207c565b60043594620186a094611654868811156120c7565b6020968088547fc353b09af857951dccce61b43a5854fc45beceed36c50e5d4cc2e71858a8e0df8c80a3875580611a01575b5086826118c6575b50505081611886575b505060843580611871575b5060a4358061185c575b5060c43580611848575b5060e43580611827575b506101043580611806575b5061012435806117d5575b50610144359081611765575b50506101643591826116f2578380f35b601e548310611707575050601f553880808380f35b9060326084926040519262461bcd60e51b845260048401528201527f4d61726b65743a206c69717569646174696f6e436f6c6c61746572616c697a616044820152711d1a5bdb94985d19481d1bdbc81cdb585b1b60721b6064820152fd5b611771908211156120c7565b601f54811161178457601e5538806116e2565b5060256084926040519262461bcd60e51b845260048401528201527f4d61726b65743a20636f6c6c61746572616c697a6174696f6e5261746520746f6044820152646f2062696760d81b6064820152fd5b806016547fae6e0ab3b95f0a53ff9660a390ccedcbbf1f2355dce974a9841af106fddcfaba8780a3601655386116d6565b6118118282106120c7565b61181e601b5482116120c7565b601c55386116cb565b6118328282106120c7565b61183f601c5482106120c7565b601b55386116c0565b6118538282106120c7565b601d55386116b6565b611868828211156120c7565b601a55386116ac565b61187d828211156120c7565b601955386116a2565b816008549182167f5a62d22209e370e38eea92cfddcd228e656e6ec139243392a760a7769f5877fd8880a36001600160a01b031916176008553880611697565b82916118d3601054611efe565b601f81116119b0575b508990601f8411600114611941578a93611934575b5050508160011b916000199060031b1c1916176010555b7fa6f004921c944d4b8bf6e38462b00f36a58d62495d56b51f571ab78f732c98158680a138808661168e565b01013590508638806118f1565b60108b52888b20601f198516955092509089908b5b8a8782106119955750508460019610611979575b50505050811b01601055611908565b60001960f88660031b161c19920101351690553880888161196a565b8483019093013585556001909401938b929182019101611956565b9150915060108952868920601f840160051c81018885106119fa575b91849391601f8b94920160051c01905b8181106119e957506118dc565b8b81558594508a93506001016119dc565b50806119cc565b600f80546001600160a01b0319169190911790557f0b2d6eb667d0522c3eb86e4288afecae6c11591ffd1345d4d12407e0598bca9b8880a138611686565b8680fd5b8580fd5b503461030857604036600319011261030857610cdc611a64611df8565b60243590336129f3565b503461030857606036600319011261030857611a88611df8565b611a90611e71565b604435908115158203610c125760018060a01b03928391611ab68360055416331461207c565b15611b5a571690811590811591611b52575b5015611b1557806005549283167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08580a36001600160a01b03199182161760055560068054909116905580f35b60405162461bcd60e51b81526020600482015260156024820152744f776e61626c653a207a65726f206164647265737360581b6044820152606490fd5b905038611ac8565b9150501660018060a01b0319600654161760065580f35b5034610308578060031936011261030857808060018060a01b03600b541660405160208101906306fdde0360e01b825260048152611bae81611fee565b51915afa611bba612f8e565b915015611c1757611bcd61033d91613015565b6109bf6034604051809373546170696f63612053696e67756c61726974792d60601b6020830152611c078151809260208686019101611e29565b8101036014810184520182612040565b5061033d611c23612fbe565b611bcd565b5034610308578060031936011261030857600f546040805163d6d7d52560e01b8152602060048201529182906001600160a01b0316818581611c6c60248201611f38565b03925af18015611da55782918391611d65575b508115611d06578015611cca57807f9f9192b5edb17356c524e08d9e025c8e2f6307e6ea52fb7968faa3081f51c3c86040948260115580a25b42601355825191151582526020820152f35b60405162461bcd60e51b81526020600482015260146024820152734d61726b65743a20696e76616c6964207261746560601b6044820152606490fd5b509050611d186013546012549061216b565b4211611d2957604090601154611cb8565b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881c985d19481d1bdbc81bdb1960621b6044820152606490fd5b9150506040813d604011611d9d575b81611d8160409383612040565b81010312610c1a576020611d9482612409565b91015138611c7f565b3d9150611d74565b6040513d84823e3d90fd5b905034610c1a576040366003190112610c1a576040602092611dd0611df8565b611dd8611e13565b6001600160a01b0391821683526003865283832091168252845220548152f35b600435906001600160a01b0382168203611e0e57565b600080fd5b602435906001600160a01b0382168203611e0e57565b60005b838110611e3c5750506000910152565b8181015183820152602001611e2c565b90602091611e6581518092818552858086019101611e29565b601f01601f1916010190565b602435908115158203611e0e57565b60e0906003190112611e0e576001600160a01b03906004358281168103611e0e57916024359081168103611e0e5790604435906064359060843560ff81168103611e0e579060a4359060c43590565b6009811015611ee8576000526007602052604060002090565b634e487b7160e01b600052602160045260246000fd5b90600182811c92168015611f2e575b6020831014611f1857565b634e487b7160e01b600052602260045260246000fd5b91607f1691611f0d565b60105460009291611f4882611efe565b908181526001928381169081600014611fa25750600114611f6857505050565b9092935060106000526020928360002092846000945b838610611f8e5750505050010190565b805485870183015294019385908201611f7e565b91935050602093945060ff191683830152151560051b010190565b606081019081106001600160401b03821117611fd857604052565b634e487b7160e01b600052604160045260246000fd5b604081019081106001600160401b03821117611fd857604052565b61010081019081106001600160401b03821117611fd857604052565b608081019081106001600160401b03821117611fd857604052565b90601f801991011681019081106001600160401b03821117611fd857604052565b6001600160401b038111611fd857601f01601f191660200190565b1561208357565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b156120ce57565b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881b9bdd081d985b1a59607a1b6044820152606490fd5b8181029291811591840414171561211a57565b634e487b7160e01b600052601160045260246000fd5b811561213a570490565b634e487b7160e01b600052601260045260246000fd5b604d811161211a57600a0a90565b9190820391821161211a57565b9190820180921161211a57565b8181039291600013801582851316918412161761211a57565b6014549192916121da916121cb916121c1916121b7906001600160801b03831690612107565b9060801c90612130565b93601f5490612107565b6121d483612150565b90612130565b8083106122a2576121ee61222a918461215e565b9161222561221f612216601e5461221061220786612150565b6021549061216b565b90612107565b6121d484612150565b91612150565b612178565b6509184e72a0009081810291818305149015171561211a57670de0b6b3a76400009182810292818405149015171561211a57801561213a57600160ff1b9180831460001983141661211a570590600082121561229b57811461211a57600003905b808211612296575090565b905090565b509061228b565b505050600090565b9160018060a01b0380931691600093838552602060178152604091828720549081156123fc57878385516122dd81611fee565b82815201526122ea612ace565b50505050509190506122fd861515612416565b6009541683600c54898b52601882526064878c2054918851948593849263442c159960e01b8452600484015260248301528d60448301525afa9081156123f25789916123bf575b509161239f6123b3979899949261237a8861237561236c601898620186a06022540490612107565b601e5490612107565b612130565b815190936001600160801b0391869161239591841690612107565b9201511690612130565b8181106123b757035b978352522054612462565b9091565b5050826123a8565b90508381813d83116123eb575b6123d68183612040565b810103126123e7575161239f612344565b8880fd5b503d6123cc565b85513d8b823e3d90fd5b5086955085949350505050565b51908115158203611e0e57565b1561241d57565b60405162461bcd60e51b815260206004820152601e60248201527f4d61726b65743a2065786368616e676552617465206e6f742076616c696400006044820152606490fd5b61246d821515612416565b602060018060a01b0360095416916064600c54604051948593849263442c159960e01b845260048401526024830152600060448301525afa90811561250d576000916124da575b50906123756124c69260225490612107565b620186a06124d6601e5483612107565b0491565b906020823d8211612505575b816124f360209383612040565b810103126103085750516123756124b4565b3d91506124e6565b6040513d6000823e3d90fd5b6001600160a01b0316600081815260186020526040812054909261253c91612462565b91835260176020526040832054801561264557811561264557818110612645578281101561263b57601454612585918391610865916121b7906001600160801b03831690612107565b90620186a09283830292808404851490151715612627576125aa92916121d49161215e565b91601b5491601c54936125bd8585612178565b80820291848212600160ff1b82141661262757818305149015171561261357058184820194851291129080158216911516176125ff5750808212612296575090565b634e487b7160e01b81526011600452602490fd5b634e487b7160e01b83526011600452602483fd5b634e487b7160e01b85526011600452602485fd5b50505050601b5490565b50505090565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316148061274c575b156126a6577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f000000000000000000000000000000000000000000000000000000000000000082527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a0815260c081018181106001600160401b03821117611fd85760405251902090565b507f0000000000000000000000000000000000000000000000000000000000000000461461267d565b1561277c57565b60405162461bcd60e51b815260206004820152601660248201527545524332303a2062616c616e636520746f6f206c6f7760501b6044820152606490fd5b156127c157565b60405162461bcd60e51b815260206004820152601660248201527545524332303a206e6f207a65726f206164647265737360501b6044820152606490fd5b51906001600160a01b0382168203611e0e57565b519060ff82168203611e0e57565b6005811015611ee857806128325750565b6001810361287a5760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b6044820152606490fd5b600281036128c75760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606490fd5b6003146128d057565b60405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608490fd5b9291906fa2a8918ca85bafe22016d0b997e4df60600160ff1b0383116129995791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa1561298c5781516001600160a01b03811615612986579190565b50600190565b50604051903d90823e3d90fd5b50505050600090600390565b7fe50de2333c10a9502fcb1d8ae13a51bbf423153dfc63c2b8997665b32154afc360018060a01b038092169160009083825260036020526040822094169384825260205284604082205580a4565b909160207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259160018060a01b03809416938460005260028352604060002095169485600052825280604060002055604051908152a3565b60405190612a5782611fbd565b60006040838281528260208201520152565b60405190612a7682611fee565b6014546001600160801b038116835260801c6020830152565b60405190612a9c82611fee565b6025546001600160801b038116835260801c6020830152565b6001600160801b03918216908216019190821161211a57565b612ad6612a4a565b5060006020604051612ae781611fee565b828152015260006020604051612afc81611fee565b828152015260405190612b0e82611fbd565b602454916001600160401b038316815260208101926001600160401b038160401c16845260801c60408201528092612b44612a69565b92612b4d612a8f565b92600060018060a01b0360095416600e549460018060801b038751166040519063442c159960e01b8252876004830152602482015260006044820152602081606481865afa801561250d57600090612f5a575b8951612bb692506001600160801b03169061216b565b80612f25575060005b612bd46001600160401b03829351164261215e565b948515612efb575050426001600160401b031660208a8101919091528801516001600160801b031615612eb157506020670de0b6b3a7640000612c3685612c318c6001600160401b038d60018060801b0390511691511690612107565b612107565b895191900496906001600160801b0390612c5590828a16908316612ab5565b168952875160405163442c159960e01b815260048101929092526001600160801b031660248201526000604482015291829060649082905afa801561250d57600090612e7d575b8751612cb292506001600160801b03169061216b565b92612ce084612375620186a0612cca601a548a612107565b60208c01516001600160801b0316919004612107565b6040890180519195916001600160801b038088169291612d039084908316612ab5565b16905260208801805190916001600160801b0391612d2391908316612ab5565b16905280612e48575060005b602a5490938482811015612dc357612d47908361215e565b90670de0b6b3a7640000820291808304670de0b6b3a7640000149015171561211a57612375612d9b612d95612d876001600160401b0396612da596612130565b93612c31602e549580612107565b8361216b565b91848d5116612107565b168089526001600160401b03602d5416809110612dbf5750565b8852565b909150602b54808211612dd557505050565b612dde9161215e565b670de0b6b3a7640000810290808204670de0b6b3a7640000149015171561211a576001600160401b0391612375612e21612d95612d87612e2a95602c5490612130565b848d5116612107565b81602d5460401c16808211612e40575b50168852565b905038612e3a565b87516001600160801b0316670de0b6b3a764000081810292918084049091149015171561211a57612e7891612130565b612d2f565b506020813d602011612ea9575b81612e9760209383612040565b81010312611e0e57612cb29051612c9c565b3d9150612e8a565b9697939450509350506001600160401b038151166001600160401b03602f5416809103612eef575b509392612ee4612a8f565b926000926000929190565b81526001925038612ed9565b975098505050505092505091612f0f612a69565b91612f18612a8f565b9160009160009190600090565b88516001600160801b0316670de0b6b3a764000081810292918084049091149015171561211a57612f5591612130565b612bbf565b506020813d602011612f86575b81612f7460209383612040565b81010312611e0e57612bb69051612ba0565b3d9150612f67565b3d15612fb9573d90612f9f82612061565b91612fad6040519384612040565b82523d6000602084013e565b606090565b60405190612fcb82611fee565b60038252623f3f3f60e81b6020830152565b908151811015612fee570160200190565b634e487b7160e01b600052603260045260246000fd5b60ff1660ff811461211a5760010190565b80516040811061309057508051810190602081818401930312611e0e576020810151906001600160401b038211611e0e570181603f82011215611e0e57602081015161306081612061565b9261306e6040519485612040565b81845260408284010111611e0e5761308d916040602085019101611e29565b90565b60209290830361317e576000805b60ff8116858110908161315f575b50156130c0576130bb90613004565b61309e565b9260ff809416926130d084612061565b936130de6040519586612040565b8085526130ed601f1991612061565b013687860137825b85811687811080613142575b1561313757613132919061312c6001600160f81b03196131218388612fdd565b5116871a9188612fdd565b53613004565b6130f5565b505094505050905090565b506001600160f81b03196131568286612fdd565b51161515613101565b6001600160f81b031991506131749086612fdd565b51161515386130ac565b91505061308d612fbe56feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220eb500fb6012a489866ad5ba43ee1b8bd8cad1bbaf6d19dc56a7aa0a2ad6b05e564736f6c63430008120033", + "bytecode": "0x6101408060405234620001e5576200001781620001ea565b601381526001602082017f546170696f63612053696e67756c617269747900000000000000000000000000815260206040516200005481620001ea565b8381520192603160f81b845251902091208160e052610100918183524660a0526040519160208301907f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f92838352604085015260608401524660808401523060a084015260a0835260c083019280841060018060401b03851117620001cf5760408490525190206080523060c052610120908152600580546001600160a01b0319163390811790915560007f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a362013880601b5562015f90601c55612710601d55612ee06020557f0bd4060688a1800ae986e4840aebc924bb40b5bf44de4583df2257220b54b77c6026557f7d1dc38e60930664f8cbf495da6556ca091d2f92d6550877750c049864b182306027556161a86028556032602f556131f8928362000207843960805183612693015260a0518361275e015260c0518361265d015260e051836126e201525182612708015251816126bf0152f35b634e487b7160e01b600052604160045260246000fd5b600080fd5b604081019081106001600160401b03821117620001cf5760405256fe608080604052600436101561001357600080fd5b600090813560e01c908162a02a2014611dbf5750806302ce728f14611c3757806306fdde0314611b80578063078dfbe714611a7d578063095ea7b314611a565780630c4e84f01461193e57806318160ddd1461191d5780631c9e379b146118e45780631da8bf101461182457806323b872dd14611687578063313ce567146115f5578063331960ff146115d757806334d441d0146115b95780633644e5151461159e57806337b6b7b91461158057806338d52e0f146115575780633ba0b9a9146115395780633f741adb1461151457806340626d8b146114f657806344de240a146114d8578063473e3ce7146114ba57806348e4163e146114815780634d7f2a34146114635780634e71e0c8146113b5578063529898f21461139857806352f353eb14611371578063551402321461134a57806355c2ab941461132057806357935462146113025780635dfe04e8146112a35780636c3d8b8f1461127a57806370a0823114611241578063727785471461120957806374645ff3146111de5780637dc0d1d0146111b55780637ecebe001461117c5780637fa0b84e1461114a578063821226e81461112c5780638285ef40146110fa5780638c5d0ed3146110dc5780638da5cb5b146110b3578063910dd7c814610e9a578063959916dc14610e7c57806395d89b4114610dc257806399a9702814610d925780639c5d719214610d745780639e15e89f14610d39578063a9059cbb14610c56578063b0e21e8a14610c38578063b27c0e7414610bfd578063bb4cfe3b14610bdf578063ce8849ed14610bb6578063d3fb2a381461071e578063d505accf14610579578063d8dfeb4514610550578063dd62ed3e14610505578063de406577146104dc578063e0996cb6146104be578063e30c397814610495578063ea64dd5614610477578063eec0f42e14610459578063f42760b71461043b578063f8ba4cff14610341578063f9557ccb1461030b5763ffe04c66146102eb57600080fd5b346103085780600319360112610308576020602954604051908152f35b80fd5b5034610308578060031936011261030857602454604080516001600160801b038316815260809290921c602083015290f35b0390f35b50346103085780600319360112610308576020604061035e612add565b9397959390929015610402575050506001600160401b03602e541686807f33af5ce86e8438eff54589f85332916444457dfa8685493fbd579b809097026b868851838152a45b6001600160401b038151166001600160401b03851b84830151861b169160018060801b0319958691015160801b1691171760235560018060801b039083838383511692015160801b161760145583511692015160801b161760245580f35b7f33af5ce86e8438eff54589f85332916444457dfa8685493fbd579b809097026b866001600160401b03865116948951908152a46103a4565b50346103085780600319360112610308576020602a54604051908152f35b50346103085780600319360112610308576020600c54604051908152f35b50346103085780600319360112610308576020601f54604051908152f35b50346103085780600319360112610308576006546040516001600160a01b039091168152602090f35b50346103085780600319360112610308576020601d54604051908152f35b50346103085780600319360112610308576009546040516001600160a01b039091168152602090f35b5034610308576040366003190112610308576040602091610524611e07565b61052c611e22565b6001600160a01b039182168352600285528383209116825283522054604051908152f35b5034610308578060031936011261030857600b546040516001600160a01b039091168152602090f35b50346103085761058836611e8f565b908395949542116106d9576001600160a01b03878116808a52600460205260408a20805491969295929060001983146106c5578261066e9694928d92600161066698960190556040519160208301937f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e266855260408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e0815261062a81612018565b51902061063561265a565b9060405190602082019261190160f01b8452602283015260428201526042815261065e81612034565b51902061292f565b919091612830565b16036106805761067d92612a02565b80f35b60405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152606490fd5b634e487b7160e01b8c52601160045260248cfd5b60405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b503461030857610160366003190112610308576001600160a01b0360043581811690819003610bb2576024916001600160401b038335818111610bae5736602382011215610bae578060040135918211610bae5736858383010111610bae5760443593838516809503610baa5761079a8460055416331461208b565b80610b6c575b5084826109ee575b505050816109ae575b505060643580610996575b506084358061097e575b5060a43580610967575b5060c43580610943575b5060e4358061091f575b5061010435806108ee575b50610124358061087b575b50610144359081610809578280f35b601e54821061081c5750601f5538808280f35b60849060326040519162461bcd60e51b8352602060048401528201527f4d61726b65743a206c69717569646174696f6e436f6c6c61746572616c697a616044820152711d1a5bdb94985d19481d1bdbc81cdb585b1b60721b6064820152fd5b61088a620186a08211156120d6565b601f54811161089c57601e55386107fa565b60405162461bcd60e51b8152602060048201526025818401527f4d61726b65743a20636f6c6c61746572616c697a6174696f6e5261746520746f6044820152646f2062696760d81b6064820152608490fd5b806016547fae6e0ab3b95f0a53ff9660a390ccedcbbf1f2355dce974a9841af106fddcfaba8580a3601655386107ef565b61092d620186a082106120d6565b61093a601b5482116120d6565b601c55386107e4565b610951620186a082106120d6565b61095e601c5482106120d6565b601b55386107da565b610975620186a082106120d6565b601d55386107d0565b61098d620186a08211156120d6565b601a55386107c6565b6109a5620186a08211156120d6565b601955386107bc565b816008549182167f5a62d22209e370e38eea92cfddcd228e656e6ec139243392a760a7769f5877fd8680a36001600160a01b0319161760085538806107b1565b82916109fb601054611f0d565b601f8111610afb575b508790601f8411600114610a69578893610a5c575b5050508160011b916000199060031b1c1916176010555b7fa6f004921c944d4b8bf6e38462b00f36a58d62495d56b51f571ab78f732c98158480a13880846107a8565b0101359050843880610a19565b60108952601f19841694507f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae67292509087908960205b878210610adc5750508460019610610ac0575b50505050811b01601055610a30565b60001960f88660031b161c199201013516905538808681610ab1565b8285019093013585556001949094019389929182019190810190610a9e565b6010895290925090507f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae672601f840160051c810160208510610b65575b91849391601f8994920160051c01905b818110610b545750610a04565b898155859450889350600101610b47565b5080610b37565b600f80546001600160a01b0319169190911790557f0b2d6eb667d0522c3eb86e4288afecae6c11591ffd1345d4d12407e0598bca9b8680a1386107a0565b8680fd5b8580fd5b8280fd5b50346103085780600319360112610308576008546040516001600160a01b039091168152602090f35b50346103085780600319360112610308576020601e54604051908152f35b50346103085780600319360112610308576060602354604051906001600160401b0380821683528160401c16602083015260801c6040820152f35b50346103085780600319360112610308576020601a54604051908152f35b503461030857604036600319011261030857610c70611e07565b60243580928115801590610d27575b610cb7575b50506040519182526001600160a01b03169033906000805160206131a383398151915290602090a3602060405160018152f35b33815260016020526040812054610cd083821015612784565b6001600160a01b0384169033829003610ceb575b5050610c84565b604093610d0291610cfd8415156127c9565b61216d565b338352600160205283832055815220610d1c83825461217a565b905581388080610ce4565b50336001600160a01b03841614610c7f565b5034610308576040366003190112610308576060610d61610d58611e07565b602435906122b9565b9060405192835260208301526040820152f35b50346103085780600319360112610308576020602b54604051908152f35b5034610308576040366003190112610308576020610dba610db1611e07565b60243590612528565b604051908152f35b5034610308578060031936011261030857808060018060a01b03600b541660405160208101906395d89b4160e01b825260048152610dff81611ffd565b51915afa610e0b612fa7565b915015610e6b57610e1e61033d9161302e565b610e576023604051809362746d2d60e81b6020830152610e478151809260208686019101611e38565b810103600381018452018261204f565b604051918291602083526020830190611e5b565b5061033d610e77612fd7565b610e1e565b50346103085780600319360112610308576020602f54604051908152f35b5034610308576040366003190112610308576004356001600160401b0381116110af57366023820112156110af57806004013582610ed782612070565b92610ee5604051948561204f565b82845260208401923660248284010111610bb2578060246020930185378401015260243561ffff811681036110ab576101009182848051810103126110a757610f2d90612418565b610f396040850161280e565b91610f466060860161280e565b9460808101519460a082015192610f5f60c08401612822565b9160e0840151930151938042116106d9578515611080577f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e266915b6001600160a01b0388168b52600460205260408b2080549190600019831461106c579161ffff6110299896949261066698969460018401905560405194602086015216604084015260018060a01b038a16606084015260018060a01b038c1660808401528a60a084015260c083015260e082015260e0815261101a81612018565b6020815191012061063561265a565b6001600160a01b0383811691160361068057156110565761067d926001600160a01b039081169116612a02565b61067d926001600160a01b0390811691166129b4565b634e487b7160e01b8d52601160045260248dfd5b7f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d691610f99565b8480fd5b8380fd5b5080fd5b50346103085780600319360112610308576005546040516001600160a01b039091168152602090f35b50346103085780600319360112610308576020601b54604051908152f35b5034610308578060031936011261030857601454604080516001600160801b038316815260809290921c602083015290f35b50346103085780600319360112610308576020602d54604051908152f35b503461030857604036600319011261030857611171611167611e07565b60243590336129b4565b602060405160018152f35b5034610308576020366003190112610308576020906040906001600160a01b036111a4611e07565b168152600483522054604051908152f35b5034610308578060031936011261030857600f546040516001600160a01b039091168152602090f35b503461030857806003193601126103085761033d604051610e578161120281611f47565b038261204f565b50346103085760203660031901126103085760043590600982101561030857602060ff61123584611ede565b54166040519015158152f35b5034610308576020366003190112610308576020906040906001600160a01b03611269611e07565b168152600183522054604051908152f35b5034610308578060031936011261030857600a546040516001600160a01b039091168152602090f35b50346103085780600319360112610308576112bc612a59565b5060806112c7612add565b509350505050604051916001600160401b0380825116845260208201511660208401526040600180861b039101511660408301526060820152f35b50346103085780600319360112610308576020601c54604051908152f35b503461030857806003193601126103085760206001600160401b03602c5460401c16604051908152f35b503461030857806003193601126103085760206001600160401b03602c5416604051908152f35b503461030857806003193601126103085760206001600160401b03602e5416604051908152f35b503461030857806003193601126103085760208054604051908152f35b50346103085780600319360112610308576006546001600160a01b03908181163381900361141f57806005549384167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08680a36001600160a01b0319928316176005551660065580f35b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b50346103085780600319360112610308576020602854604051908152f35b5034610308576020366003190112610308576020906040906001600160a01b036114a9611e07565b168152601783522054604051908152f35b50346103085780600319360112610308576020601554604051908152f35b50346103085780600319360112610308576020600e54604051908152f35b50346103085780600319360112610308576020601654604051908152f35b5034610308576060366003190112610308576020610dba6044356024356004356121a0565b50346103085780600319360112610308576020601154604051908152f35b5034610308578060031936011261030857600d546040516001600160a01b039091168152602090f35b50346103085780600319360112610308576020601254604051908152f35b50346103085780600319360112610308576020610dba61265a565b50346103085780600319360112610308576020601954604051908152f35b50346103085780600319360112610308576020601354604051908152f35b5034610308578060031936011261030857808060018060a01b03600d5416604051602081019063313ce56760e01b82526004815261163281611ffd565b51915afa9061163f612fa7565b918061167c575b156116715760208280518101031261030857506116666020809201612822565b60ff60405191168152f35b505060206012611666565b506020825114611646565b5034610308576060366003190112610308576116a1611e07565b906116aa611e22565b60443591826116e8575b506040519182526001600160a01b039081169216906000805160206131a383398151915290602090a3602060405160018152f35b6001600160a01b0384811680835260016020908152604084205492869061171182861015612784565b861693848403611726575b50505050506116b4565b838652600283526040808720338852845286205460018101611790575b509260016020969361176e8794604097610cfd6000805160206131a38339815191529c9a15156127c9565b928552528383205581522061178485825461217a565b9055913880858161171c565b909181106117e4579260016020969361176e8a6000805160206131a38339815191529a98956117c18260409a61216d565b86895260028552898920338a528552898920559497509497995050939650611743565b60405162461bcd60e51b815260048101849052601860248201527745524332303a20616c6c6f77616e636520746f6f206c6f7760401b6044820152606490fd5b50346103085761183336611e8f565b908395949542116106d9576001600160a01b03878116808a52600460205260408a20805491969295929060001983146106c557826118d59694928d92600161066698960190556040519160208301937f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d6855260408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e0815261062a81612018565b16036106805761067d926129b4565b5034610308576020366003190112610308576020906040906001600160a01b0361190c611e07565b168152601883522054604051908152f35b5034610308578060031936011261030857602060245460801c604051908152f35b50346103085760403660031901126103085760043560098110156110af57611964611e80565b6008549091906001600160a01b03163303611a1a5760ff61198482611ede565b541615159115159182146119e057808260ff6119a26119d094611ede565b54161515827feeec81de25875ce1725479bb76f720a8defdb43dea041919ae37bb4aae9847c08780a4611ede565b9060ff8019835416911617905580f35b60405162461bcd60e51b81526020600482015260126024820152714d61726b65743a2073616d6520737461746560701b6044820152606490fd5b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881d5b985d5d1a1bdc9a5e995960621b6044820152606490fd5b503461030857604036600319011261030857611171611a73611e07565b6024359033612a02565b503461030857606036600319011261030857611a97611e07565b611a9f611e80565b6044359081151582036110ab5760018060a01b03928391611ac58360055416331461208b565b15611b69571690811590811591611b61575b5015611b2457806005549283167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08580a36001600160a01b03199182161760055560068054909116905580f35b60405162461bcd60e51b81526020600482015260156024820152744f776e61626c653a207a65726f206164647265737360581b6044820152606490fd5b905038611ad7565b9150501660018060a01b0319600654161760065580f35b5034610308578060031936011261030857808060018060a01b03600b541660405160208101906306fdde0360e01b825260048152611bbd81611ffd565b51915afa611bc9612fa7565b915015611c2657611bdc61033d9161302e565b610e576034604051809373546170696f63612053696e67756c61726974792d60601b6020830152611c168151809260208686019101611e38565b810103601481018452018261204f565b5061033d611c32612fd7565b611bdc565b5034610308578060031936011261030857600f546040805163d6d7d52560e01b8152602060048201529182906001600160a01b0316818581611c7b60248201611f47565b03925af18015611db45782918391611d74575b508115611d15578015611cd957807f9f9192b5edb17356c524e08d9e025c8e2f6307e6ea52fb7968faa3081f51c3c86040948260115580a25b42601355825191151582526020820152f35b60405162461bcd60e51b81526020600482015260146024820152734d61726b65743a20696e76616c6964207261746560601b6044820152606490fd5b509050611d276013546012549061217a565b4211611d3857604090601154611cc7565b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881c985d19481d1bdbc81bdb1960621b6044820152606490fd5b9150506040813d604011611dac575b81611d906040938361204f565b810103126110af576020611da382612418565b91015138611c8e565b3d9150611d83565b6040513d84823e3d90fd5b9050346110af5760403660031901126110af576040602092611ddf611e07565b611de7611e22565b6001600160a01b0391821683526003865283832091168252845220548152f35b600435906001600160a01b0382168203611e1d57565b600080fd5b602435906001600160a01b0382168203611e1d57565b60005b838110611e4b5750506000910152565b8181015183820152602001611e3b565b90602091611e7481518092818552858086019101611e38565b601f01601f1916010190565b602435908115158203611e1d57565b60e0906003190112611e1d576001600160a01b03906004358281168103611e1d57916024359081168103611e1d5790604435906064359060843560ff81168103611e1d579060a4359060c43590565b6009811015611ef7576000526007602052604060002090565b634e487b7160e01b600052602160045260246000fd5b90600182811c92168015611f3d575b6020831014611f2757565b634e487b7160e01b600052602260045260246000fd5b91607f1691611f1c565b60105460009291611f5782611f0d565b908181526001928381169081600014611fb15750600114611f7757505050565b9092935060106000526020928360002092846000945b838610611f9d5750505050010190565b805485870183015294019385908201611f8d565b91935050602093945060ff191683830152151560051b010190565b606081019081106001600160401b03821117611fe757604052565b634e487b7160e01b600052604160045260246000fd5b604081019081106001600160401b03821117611fe757604052565b61010081019081106001600160401b03821117611fe757604052565b608081019081106001600160401b03821117611fe757604052565b90601f801991011681019081106001600160401b03821117611fe757604052565b6001600160401b038111611fe757601f01601f191660200190565b1561209257565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b156120dd57565b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881b9bdd081d985b1a59607a1b6044820152606490fd5b8181029291811591840414171561212957565b634e487b7160e01b600052601160045260246000fd5b8115612149570490565b634e487b7160e01b600052601260045260246000fd5b604d811161212957600a0a90565b9190820391821161212957565b9190820180921161212957565b8181039291600013801582851316918412161761212957565b6014549192916121e9916121da916121d0916121c6906001600160801b03831690612116565b9060801c9061213f565b93601f5490612116565b6121e38361215f565b9061213f565b8083106122b1576121fd612239918461216d565b9161223461222e612225601e5461221f6122168661215f565b6020549061217a565b90612116565b6121e38461215f565b9161215f565b612187565b6509184e72a0009081810291818305149015171561212957670de0b6b3a76400009182810292818405149015171561212957801561214957600160ff1b9180831460001983141661212957059060008212156122aa57811461212957600003905b8082116122a5575090565b905090565b509061229a565b505050600090565b9160018060a01b03809316916000938385526020601781526040918287205490811561240b57878385516122ec81611ffd565b82815201526122f9612add565b505050505091905061230c861515612425565b6009541683600c54898b52601882526064878c2054918851948593849263442c159960e01b8452600484015260248301528d60448301525afa9081156124015789916123ce575b50916123ae6123c297989994926123898861238461237b601898620186a06021540490612116565b601e5490612116565b61213f565b815190936001600160801b039186916123a491841690612116565b920151169061213f565b8181106123c657035b978352522054612471565b9091565b5050826123b7565b90508381813d83116123fa575b6123e5818361204f565b810103126123f657516123ae612353565b8880fd5b503d6123db565b85513d8b823e3d90fd5b5086955085949350505050565b51908115158203611e1d57565b1561242c57565b60405162461bcd60e51b815260206004820152601e60248201527f4d61726b65743a2065786368616e676552617465206e6f742076616c696400006044820152606490fd5b61247c821515612425565b602060018060a01b0360095416916064600c54604051948593849263442c159960e01b845260048401526024830152600060448301525afa90811561251c576000916124e9575b50906123846124d59260215490612116565b620186a06124e5601e5483612116565b0491565b906020823d8211612514575b816125026020938361204f565b810103126103085750516123846124c3565b3d91506124f5565b6040513d6000823e3d90fd5b6001600160a01b0316600081815260186020526040812054909261254b91612471565b91835260176020526040832054801561265457811561265457818110612654578281101561264a57601454612594918391610cfd916121c6906001600160801b03831690612116565b90620186a09283830292808404851490151715612636576125b992916121e39161216d565b91601b5491601c54936125cc8585612187565b80820291848212600160ff1b821416612636578183051490151715612622570581848201948512911290801582169115161761260e57508082126122a5575090565b634e487b7160e01b81526011600452602490fd5b634e487b7160e01b83526011600452602483fd5b634e487b7160e01b85526011600452602485fd5b50505050601b5490565b50505090565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316148061275b575b156126b5577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f000000000000000000000000000000000000000000000000000000000000000082527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a0815260c081018181106001600160401b03821117611fe75760405251902090565b507f0000000000000000000000000000000000000000000000000000000000000000461461268c565b1561278b57565b60405162461bcd60e51b815260206004820152601660248201527545524332303a2062616c616e636520746f6f206c6f7760501b6044820152606490fd5b156127d057565b60405162461bcd60e51b815260206004820152601660248201527545524332303a206e6f207a65726f206164647265737360501b6044820152606490fd5b51906001600160a01b0382168203611e1d57565b519060ff82168203611e1d57565b6005811015611ef757806128415750565b600181036128895760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b6044820152606490fd5b600281036128d65760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606490fd5b6003146128df57565b60405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608490fd5b9291906fa2a8918ca85bafe22016d0b997e4df60600160ff1b0383116129a85791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa1561299b5781516001600160a01b03811615612995579190565b50600190565b50604051903d90823e3d90fd5b50505050600090600390565b7fe50de2333c10a9502fcb1d8ae13a51bbf423153dfc63c2b8997665b32154afc360018060a01b038092169160009083825260036020526040822094169384825260205284604082205580a4565b909160207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259160018060a01b03809416938460005260028352604060002095169485600052825280604060002055604051908152a3565b60405190612a6682611fcc565b60006040838281528260208201520152565b60405190612a8582611ffd565b6014546001600160801b038116835260801c6020830152565b60405190612aab82611ffd565b6024546001600160801b038116835260801c6020830152565b6001600160801b03918216908216019190821161212957565b612ae5612a59565b5060006020604051612af681611ffd565b828152015260006020604051612b0b81611ffd565b8281520152604051612b1c81611fcc565b6023546001600160401b03811682526001600160401b038160401c16602083015260801c60408201528091612b4f612a78565b91612b58612a9e565b600954600e54825160405163442c159960e01b8152600481018390526001600160801b03909116602482015260006044820181905293959194919391926001600160a01b031690602081606481855afa801561251c57600090612f73575b8851612bcc92506001600160801b03169061217a565b80612f3e575060005b80612bed6001600160401b036020870151164261216d565b948515612f14575050426001600160401b031660208a8101919091528801516001600160801b031615612eca57506020670de0b6b3a7640000612c4f85612c4a8c6001600160401b038d60018060801b0390511691511690612116565b612116565b895191900496906001600160801b0390612c6e90828a16908316612ac4565b168952875160405163442c159960e01b815260048101929092526001600160801b031660248201526000604482015291829060649082905afa801561251c57600090612e96575b8751612ccb92506001600160801b03169061217a565b92612cf984612384620186a0612ce3601a548a612116565b60208c01516001600160801b0316919004612116565b6040890180519195916001600160801b038088169291612d1c9084908316612ac4565b16905260208801805190916001600160801b0391612d3c91908316612ac4565b16905280612e61575060005b60295490938482811015612ddc57612d60908361216d565b90670de0b6b3a7640000820291808304670de0b6b3a7640000149015171561212957612384612db4612dae612da06001600160401b0396612dbe9661213f565b93612c4a602d549580612116565b8361217a565b91848d5116612116565b168089526001600160401b03602c5416809110612dd85750565b8852565b909150602a54808211612dee57505050565b612df79161216d565b670de0b6b3a7640000810290808204670de0b6b3a76400001490151715612129576001600160401b0391612384612e3a612dae612da0612e4395602b549061213f565b848d5116612116565b81602c5460401c16808211612e59575b50168852565b905038612e53565b87516001600160801b0316670de0b6b3a764000081810292918084049091149015171561212957612e919161213f565b612d48565b506020813d602011612ec2575b81612eb06020938361204f565b81010312611e1d57612ccb9051612cb5565b3d9150612ea3565b9697939450509350506001600160401b038151166001600160401b03602e5416809103612f08575b509392612efd612a9e565b926000926000929190565b81526001925038612ef2565b975098505050505092505091612f28612a78565b91612f31612a9e565b9160009160009190600090565b87516001600160801b0316670de0b6b3a764000081810292918084049091149015171561212957612f6e9161213f565b612bd5565b506020813d602011612f9f575b81612f8d6020938361204f565b81010312611e1d57612bcc9051612bb6565b3d9150612f80565b3d15612fd2573d90612fb882612070565b91612fc6604051938461204f565b82523d6000602084013e565b606090565b60405190612fe482611ffd565b60038252623f3f3f60e81b6020830152565b908151811015613007570160200190565b634e487b7160e01b600052603260045260246000fd5b60ff1660ff81146121295760010190565b8051604081106130a957508051810190602081818401930312611e1d576020810151906001600160401b038211611e1d570181603f82011215611e1d57602081015161307981612070565b92613087604051948561204f565b81845260408284010111611e1d576130a6916040602085019101611e38565b90565b602092908303613197576000805b60ff81168581109081613178575b50156130d9576130d49061301d565b6130b7565b9260ff809416926130e984612070565b936130f7604051958661204f565b808552613106601f1991612070565b013687860137825b8581168781108061315b575b156131505761314b91906131456001600160f81b031961313a8388612ff6565b5116871a9188612ff6565b5361301d565b61310e565b505094505050905090565b506001600160f81b031961316f8286612ff6565b5116151561311a565b6001600160f81b0319915061318d9086612ff6565b51161515386130c5565b9150506130a6612fd756feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa264697066735822122013f4fadcc6d8a5582ff6b55236431f484dc8018dcb0d56a344cccb04b2758aa264736f6c63430008120033", + "deployedBytecode": "0x608080604052600436101561001357600080fd5b600090813560e01c908162a02a2014611dbf5750806302ce728f14611c3757806306fdde0314611b80578063078dfbe714611a7d578063095ea7b314611a565780630c4e84f01461193e57806318160ddd1461191d5780631c9e379b146118e45780631da8bf101461182457806323b872dd14611687578063313ce567146115f5578063331960ff146115d757806334d441d0146115b95780633644e5151461159e57806337b6b7b91461158057806338d52e0f146115575780633ba0b9a9146115395780633f741adb1461151457806340626d8b146114f657806344de240a146114d8578063473e3ce7146114ba57806348e4163e146114815780634d7f2a34146114635780634e71e0c8146113b5578063529898f21461139857806352f353eb14611371578063551402321461134a57806355c2ab941461132057806357935462146113025780635dfe04e8146112a35780636c3d8b8f1461127a57806370a0823114611241578063727785471461120957806374645ff3146111de5780637dc0d1d0146111b55780637ecebe001461117c5780637fa0b84e1461114a578063821226e81461112c5780638285ef40146110fa5780638c5d0ed3146110dc5780638da5cb5b146110b3578063910dd7c814610e9a578063959916dc14610e7c57806395d89b4114610dc257806399a9702814610d925780639c5d719214610d745780639e15e89f14610d39578063a9059cbb14610c56578063b0e21e8a14610c38578063b27c0e7414610bfd578063bb4cfe3b14610bdf578063ce8849ed14610bb6578063d3fb2a381461071e578063d505accf14610579578063d8dfeb4514610550578063dd62ed3e14610505578063de406577146104dc578063e0996cb6146104be578063e30c397814610495578063ea64dd5614610477578063eec0f42e14610459578063f42760b71461043b578063f8ba4cff14610341578063f9557ccb1461030b5763ffe04c66146102eb57600080fd5b346103085780600319360112610308576020602954604051908152f35b80fd5b5034610308578060031936011261030857602454604080516001600160801b038316815260809290921c602083015290f35b0390f35b50346103085780600319360112610308576020604061035e612add565b9397959390929015610402575050506001600160401b03602e541686807f33af5ce86e8438eff54589f85332916444457dfa8685493fbd579b809097026b868851838152a45b6001600160401b038151166001600160401b03851b84830151861b169160018060801b0319958691015160801b1691171760235560018060801b039083838383511692015160801b161760145583511692015160801b161760245580f35b7f33af5ce86e8438eff54589f85332916444457dfa8685493fbd579b809097026b866001600160401b03865116948951908152a46103a4565b50346103085780600319360112610308576020602a54604051908152f35b50346103085780600319360112610308576020600c54604051908152f35b50346103085780600319360112610308576020601f54604051908152f35b50346103085780600319360112610308576006546040516001600160a01b039091168152602090f35b50346103085780600319360112610308576020601d54604051908152f35b50346103085780600319360112610308576009546040516001600160a01b039091168152602090f35b5034610308576040366003190112610308576040602091610524611e07565b61052c611e22565b6001600160a01b039182168352600285528383209116825283522054604051908152f35b5034610308578060031936011261030857600b546040516001600160a01b039091168152602090f35b50346103085761058836611e8f565b908395949542116106d9576001600160a01b03878116808a52600460205260408a20805491969295929060001983146106c5578261066e9694928d92600161066698960190556040519160208301937f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e266855260408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e0815261062a81612018565b51902061063561265a565b9060405190602082019261190160f01b8452602283015260428201526042815261065e81612034565b51902061292f565b919091612830565b16036106805761067d92612a02565b80f35b60405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152606490fd5b634e487b7160e01b8c52601160045260248cfd5b60405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b503461030857610160366003190112610308576001600160a01b0360043581811690819003610bb2576024916001600160401b038335818111610bae5736602382011215610bae578060040135918211610bae5736858383010111610bae5760443593838516809503610baa5761079a8460055416331461208b565b80610b6c575b5084826109ee575b505050816109ae575b505060643580610996575b506084358061097e575b5060a43580610967575b5060c43580610943575b5060e4358061091f575b5061010435806108ee575b50610124358061087b575b50610144359081610809578280f35b601e54821061081c5750601f5538808280f35b60849060326040519162461bcd60e51b8352602060048401528201527f4d61726b65743a206c69717569646174696f6e436f6c6c61746572616c697a616044820152711d1a5bdb94985d19481d1bdbc81cdb585b1b60721b6064820152fd5b61088a620186a08211156120d6565b601f54811161089c57601e55386107fa565b60405162461bcd60e51b8152602060048201526025818401527f4d61726b65743a20636f6c6c61746572616c697a6174696f6e5261746520746f6044820152646f2062696760d81b6064820152608490fd5b806016547fae6e0ab3b95f0a53ff9660a390ccedcbbf1f2355dce974a9841af106fddcfaba8580a3601655386107ef565b61092d620186a082106120d6565b61093a601b5482116120d6565b601c55386107e4565b610951620186a082106120d6565b61095e601c5482106120d6565b601b55386107da565b610975620186a082106120d6565b601d55386107d0565b61098d620186a08211156120d6565b601a55386107c6565b6109a5620186a08211156120d6565b601955386107bc565b816008549182167f5a62d22209e370e38eea92cfddcd228e656e6ec139243392a760a7769f5877fd8680a36001600160a01b0319161760085538806107b1565b82916109fb601054611f0d565b601f8111610afb575b508790601f8411600114610a69578893610a5c575b5050508160011b916000199060031b1c1916176010555b7fa6f004921c944d4b8bf6e38462b00f36a58d62495d56b51f571ab78f732c98158480a13880846107a8565b0101359050843880610a19565b60108952601f19841694507f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae67292509087908960205b878210610adc5750508460019610610ac0575b50505050811b01601055610a30565b60001960f88660031b161c199201013516905538808681610ab1565b8285019093013585556001949094019389929182019190810190610a9e565b6010895290925090507f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae672601f840160051c810160208510610b65575b91849391601f8994920160051c01905b818110610b545750610a04565b898155859450889350600101610b47565b5080610b37565b600f80546001600160a01b0319169190911790557f0b2d6eb667d0522c3eb86e4288afecae6c11591ffd1345d4d12407e0598bca9b8680a1386107a0565b8680fd5b8580fd5b8280fd5b50346103085780600319360112610308576008546040516001600160a01b039091168152602090f35b50346103085780600319360112610308576020601e54604051908152f35b50346103085780600319360112610308576060602354604051906001600160401b0380821683528160401c16602083015260801c6040820152f35b50346103085780600319360112610308576020601a54604051908152f35b503461030857604036600319011261030857610c70611e07565b60243580928115801590610d27575b610cb7575b50506040519182526001600160a01b03169033906000805160206131a383398151915290602090a3602060405160018152f35b33815260016020526040812054610cd083821015612784565b6001600160a01b0384169033829003610ceb575b5050610c84565b604093610d0291610cfd8415156127c9565b61216d565b338352600160205283832055815220610d1c83825461217a565b905581388080610ce4565b50336001600160a01b03841614610c7f565b5034610308576040366003190112610308576060610d61610d58611e07565b602435906122b9565b9060405192835260208301526040820152f35b50346103085780600319360112610308576020602b54604051908152f35b5034610308576040366003190112610308576020610dba610db1611e07565b60243590612528565b604051908152f35b5034610308578060031936011261030857808060018060a01b03600b541660405160208101906395d89b4160e01b825260048152610dff81611ffd565b51915afa610e0b612fa7565b915015610e6b57610e1e61033d9161302e565b610e576023604051809362746d2d60e81b6020830152610e478151809260208686019101611e38565b810103600381018452018261204f565b604051918291602083526020830190611e5b565b5061033d610e77612fd7565b610e1e565b50346103085780600319360112610308576020602f54604051908152f35b5034610308576040366003190112610308576004356001600160401b0381116110af57366023820112156110af57806004013582610ed782612070565b92610ee5604051948561204f565b82845260208401923660248284010111610bb2578060246020930185378401015260243561ffff811681036110ab576101009182848051810103126110a757610f2d90612418565b610f396040850161280e565b91610f466060860161280e565b9460808101519460a082015192610f5f60c08401612822565b9160e0840151930151938042116106d9578515611080577f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e266915b6001600160a01b0388168b52600460205260408b2080549190600019831461106c579161ffff6110299896949261066698969460018401905560405194602086015216604084015260018060a01b038a16606084015260018060a01b038c1660808401528a60a084015260c083015260e082015260e0815261101a81612018565b6020815191012061063561265a565b6001600160a01b0383811691160361068057156110565761067d926001600160a01b039081169116612a02565b61067d926001600160a01b0390811691166129b4565b634e487b7160e01b8d52601160045260248dfd5b7f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d691610f99565b8480fd5b8380fd5b5080fd5b50346103085780600319360112610308576005546040516001600160a01b039091168152602090f35b50346103085780600319360112610308576020601b54604051908152f35b5034610308578060031936011261030857601454604080516001600160801b038316815260809290921c602083015290f35b50346103085780600319360112610308576020602d54604051908152f35b503461030857604036600319011261030857611171611167611e07565b60243590336129b4565b602060405160018152f35b5034610308576020366003190112610308576020906040906001600160a01b036111a4611e07565b168152600483522054604051908152f35b5034610308578060031936011261030857600f546040516001600160a01b039091168152602090f35b503461030857806003193601126103085761033d604051610e578161120281611f47565b038261204f565b50346103085760203660031901126103085760043590600982101561030857602060ff61123584611ede565b54166040519015158152f35b5034610308576020366003190112610308576020906040906001600160a01b03611269611e07565b168152600183522054604051908152f35b5034610308578060031936011261030857600a546040516001600160a01b039091168152602090f35b50346103085780600319360112610308576112bc612a59565b5060806112c7612add565b509350505050604051916001600160401b0380825116845260208201511660208401526040600180861b039101511660408301526060820152f35b50346103085780600319360112610308576020601c54604051908152f35b503461030857806003193601126103085760206001600160401b03602c5460401c16604051908152f35b503461030857806003193601126103085760206001600160401b03602c5416604051908152f35b503461030857806003193601126103085760206001600160401b03602e5416604051908152f35b503461030857806003193601126103085760208054604051908152f35b50346103085780600319360112610308576006546001600160a01b03908181163381900361141f57806005549384167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08680a36001600160a01b0319928316176005551660065580f35b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b50346103085780600319360112610308576020602854604051908152f35b5034610308576020366003190112610308576020906040906001600160a01b036114a9611e07565b168152601783522054604051908152f35b50346103085780600319360112610308576020601554604051908152f35b50346103085780600319360112610308576020600e54604051908152f35b50346103085780600319360112610308576020601654604051908152f35b5034610308576060366003190112610308576020610dba6044356024356004356121a0565b50346103085780600319360112610308576020601154604051908152f35b5034610308578060031936011261030857600d546040516001600160a01b039091168152602090f35b50346103085780600319360112610308576020601254604051908152f35b50346103085780600319360112610308576020610dba61265a565b50346103085780600319360112610308576020601954604051908152f35b50346103085780600319360112610308576020601354604051908152f35b5034610308578060031936011261030857808060018060a01b03600d5416604051602081019063313ce56760e01b82526004815261163281611ffd565b51915afa9061163f612fa7565b918061167c575b156116715760208280518101031261030857506116666020809201612822565b60ff60405191168152f35b505060206012611666565b506020825114611646565b5034610308576060366003190112610308576116a1611e07565b906116aa611e22565b60443591826116e8575b506040519182526001600160a01b039081169216906000805160206131a383398151915290602090a3602060405160018152f35b6001600160a01b0384811680835260016020908152604084205492869061171182861015612784565b861693848403611726575b50505050506116b4565b838652600283526040808720338852845286205460018101611790575b509260016020969361176e8794604097610cfd6000805160206131a38339815191529c9a15156127c9565b928552528383205581522061178485825461217a565b9055913880858161171c565b909181106117e4579260016020969361176e8a6000805160206131a38339815191529a98956117c18260409a61216d565b86895260028552898920338a528552898920559497509497995050939650611743565b60405162461bcd60e51b815260048101849052601860248201527745524332303a20616c6c6f77616e636520746f6f206c6f7760401b6044820152606490fd5b50346103085761183336611e8f565b908395949542116106d9576001600160a01b03878116808a52600460205260408a20805491969295929060001983146106c557826118d59694928d92600161066698960190556040519160208301937f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d6855260408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e0815261062a81612018565b16036106805761067d926129b4565b5034610308576020366003190112610308576020906040906001600160a01b0361190c611e07565b168152601883522054604051908152f35b5034610308578060031936011261030857602060245460801c604051908152f35b50346103085760403660031901126103085760043560098110156110af57611964611e80565b6008549091906001600160a01b03163303611a1a5760ff61198482611ede565b541615159115159182146119e057808260ff6119a26119d094611ede565b54161515827feeec81de25875ce1725479bb76f720a8defdb43dea041919ae37bb4aae9847c08780a4611ede565b9060ff8019835416911617905580f35b60405162461bcd60e51b81526020600482015260126024820152714d61726b65743a2073616d6520737461746560701b6044820152606490fd5b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881d5b985d5d1a1bdc9a5e995960621b6044820152606490fd5b503461030857604036600319011261030857611171611a73611e07565b6024359033612a02565b503461030857606036600319011261030857611a97611e07565b611a9f611e80565b6044359081151582036110ab5760018060a01b03928391611ac58360055416331461208b565b15611b69571690811590811591611b61575b5015611b2457806005549283167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08580a36001600160a01b03199182161760055560068054909116905580f35b60405162461bcd60e51b81526020600482015260156024820152744f776e61626c653a207a65726f206164647265737360581b6044820152606490fd5b905038611ad7565b9150501660018060a01b0319600654161760065580f35b5034610308578060031936011261030857808060018060a01b03600b541660405160208101906306fdde0360e01b825260048152611bbd81611ffd565b51915afa611bc9612fa7565b915015611c2657611bdc61033d9161302e565b610e576034604051809373546170696f63612053696e67756c61726974792d60601b6020830152611c168151809260208686019101611e38565b810103601481018452018261204f565b5061033d611c32612fd7565b611bdc565b5034610308578060031936011261030857600f546040805163d6d7d52560e01b8152602060048201529182906001600160a01b0316818581611c7b60248201611f47565b03925af18015611db45782918391611d74575b508115611d15578015611cd957807f9f9192b5edb17356c524e08d9e025c8e2f6307e6ea52fb7968faa3081f51c3c86040948260115580a25b42601355825191151582526020820152f35b60405162461bcd60e51b81526020600482015260146024820152734d61726b65743a20696e76616c6964207261746560601b6044820152606490fd5b509050611d276013546012549061217a565b4211611d3857604090601154611cc7565b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881c985d19481d1bdbc81bdb1960621b6044820152606490fd5b9150506040813d604011611dac575b81611d906040938361204f565b810103126110af576020611da382612418565b91015138611c8e565b3d9150611d83565b6040513d84823e3d90fd5b9050346110af5760403660031901126110af576040602092611ddf611e07565b611de7611e22565b6001600160a01b0391821683526003865283832091168252845220548152f35b600435906001600160a01b0382168203611e1d57565b600080fd5b602435906001600160a01b0382168203611e1d57565b60005b838110611e4b5750506000910152565b8181015183820152602001611e3b565b90602091611e7481518092818552858086019101611e38565b601f01601f1916010190565b602435908115158203611e1d57565b60e0906003190112611e1d576001600160a01b03906004358281168103611e1d57916024359081168103611e1d5790604435906064359060843560ff81168103611e1d579060a4359060c43590565b6009811015611ef7576000526007602052604060002090565b634e487b7160e01b600052602160045260246000fd5b90600182811c92168015611f3d575b6020831014611f2757565b634e487b7160e01b600052602260045260246000fd5b91607f1691611f1c565b60105460009291611f5782611f0d565b908181526001928381169081600014611fb15750600114611f7757505050565b9092935060106000526020928360002092846000945b838610611f9d5750505050010190565b805485870183015294019385908201611f8d565b91935050602093945060ff191683830152151560051b010190565b606081019081106001600160401b03821117611fe757604052565b634e487b7160e01b600052604160045260246000fd5b604081019081106001600160401b03821117611fe757604052565b61010081019081106001600160401b03821117611fe757604052565b608081019081106001600160401b03821117611fe757604052565b90601f801991011681019081106001600160401b03821117611fe757604052565b6001600160401b038111611fe757601f01601f191660200190565b1561209257565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b156120dd57565b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881b9bdd081d985b1a59607a1b6044820152606490fd5b8181029291811591840414171561212957565b634e487b7160e01b600052601160045260246000fd5b8115612149570490565b634e487b7160e01b600052601260045260246000fd5b604d811161212957600a0a90565b9190820391821161212957565b9190820180921161212957565b8181039291600013801582851316918412161761212957565b6014549192916121e9916121da916121d0916121c6906001600160801b03831690612116565b9060801c9061213f565b93601f5490612116565b6121e38361215f565b9061213f565b8083106122b1576121fd612239918461216d565b9161223461222e612225601e5461221f6122168661215f565b6020549061217a565b90612116565b6121e38461215f565b9161215f565b612187565b6509184e72a0009081810291818305149015171561212957670de0b6b3a76400009182810292818405149015171561212957801561214957600160ff1b9180831460001983141661212957059060008212156122aa57811461212957600003905b8082116122a5575090565b905090565b509061229a565b505050600090565b9160018060a01b03809316916000938385526020601781526040918287205490811561240b57878385516122ec81611ffd565b82815201526122f9612add565b505050505091905061230c861515612425565b6009541683600c54898b52601882526064878c2054918851948593849263442c159960e01b8452600484015260248301528d60448301525afa9081156124015789916123ce575b50916123ae6123c297989994926123898861238461237b601898620186a06021540490612116565b601e5490612116565b61213f565b815190936001600160801b039186916123a491841690612116565b920151169061213f565b8181106123c657035b978352522054612471565b9091565b5050826123b7565b90508381813d83116123fa575b6123e5818361204f565b810103126123f657516123ae612353565b8880fd5b503d6123db565b85513d8b823e3d90fd5b5086955085949350505050565b51908115158203611e1d57565b1561242c57565b60405162461bcd60e51b815260206004820152601e60248201527f4d61726b65743a2065786368616e676552617465206e6f742076616c696400006044820152606490fd5b61247c821515612425565b602060018060a01b0360095416916064600c54604051948593849263442c159960e01b845260048401526024830152600060448301525afa90811561251c576000916124e9575b50906123846124d59260215490612116565b620186a06124e5601e5483612116565b0491565b906020823d8211612514575b816125026020938361204f565b810103126103085750516123846124c3565b3d91506124f5565b6040513d6000823e3d90fd5b6001600160a01b0316600081815260186020526040812054909261254b91612471565b91835260176020526040832054801561265457811561265457818110612654578281101561264a57601454612594918391610cfd916121c6906001600160801b03831690612116565b90620186a09283830292808404851490151715612636576125b992916121e39161216d565b91601b5491601c54936125cc8585612187565b80820291848212600160ff1b821416612636578183051490151715612622570581848201948512911290801582169115161761260e57508082126122a5575090565b634e487b7160e01b81526011600452602490fd5b634e487b7160e01b83526011600452602483fd5b634e487b7160e01b85526011600452602485fd5b50505050601b5490565b50505090565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316148061275b575b156126b5577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f000000000000000000000000000000000000000000000000000000000000000082527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a0815260c081018181106001600160401b03821117611fe75760405251902090565b507f0000000000000000000000000000000000000000000000000000000000000000461461268c565b1561278b57565b60405162461bcd60e51b815260206004820152601660248201527545524332303a2062616c616e636520746f6f206c6f7760501b6044820152606490fd5b156127d057565b60405162461bcd60e51b815260206004820152601660248201527545524332303a206e6f207a65726f206164647265737360501b6044820152606490fd5b51906001600160a01b0382168203611e1d57565b519060ff82168203611e1d57565b6005811015611ef757806128415750565b600181036128895760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b6044820152606490fd5b600281036128d65760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606490fd5b6003146128df57565b60405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608490fd5b9291906fa2a8918ca85bafe22016d0b997e4df60600160ff1b0383116129a85791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa1561299b5781516001600160a01b03811615612995579190565b50600190565b50604051903d90823e3d90fd5b50505050600090600390565b7fe50de2333c10a9502fcb1d8ae13a51bbf423153dfc63c2b8997665b32154afc360018060a01b038092169160009083825260036020526040822094169384825260205284604082205580a4565b909160207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259160018060a01b03809416938460005260028352604060002095169485600052825280604060002055604051908152a3565b60405190612a6682611fcc565b60006040838281528260208201520152565b60405190612a8582611ffd565b6014546001600160801b038116835260801c6020830152565b60405190612aab82611ffd565b6024546001600160801b038116835260801c6020830152565b6001600160801b03918216908216019190821161212957565b612ae5612a59565b5060006020604051612af681611ffd565b828152015260006020604051612b0b81611ffd565b8281520152604051612b1c81611fcc565b6023546001600160401b03811682526001600160401b038160401c16602083015260801c60408201528091612b4f612a78565b91612b58612a9e565b600954600e54825160405163442c159960e01b8152600481018390526001600160801b03909116602482015260006044820181905293959194919391926001600160a01b031690602081606481855afa801561251c57600090612f73575b8851612bcc92506001600160801b03169061217a565b80612f3e575060005b80612bed6001600160401b036020870151164261216d565b948515612f14575050426001600160401b031660208a8101919091528801516001600160801b031615612eca57506020670de0b6b3a7640000612c4f85612c4a8c6001600160401b038d60018060801b0390511691511690612116565b612116565b895191900496906001600160801b0390612c6e90828a16908316612ac4565b168952875160405163442c159960e01b815260048101929092526001600160801b031660248201526000604482015291829060649082905afa801561251c57600090612e96575b8751612ccb92506001600160801b03169061217a565b92612cf984612384620186a0612ce3601a548a612116565b60208c01516001600160801b0316919004612116565b6040890180519195916001600160801b038088169291612d1c9084908316612ac4565b16905260208801805190916001600160801b0391612d3c91908316612ac4565b16905280612e61575060005b60295490938482811015612ddc57612d60908361216d565b90670de0b6b3a7640000820291808304670de0b6b3a7640000149015171561212957612384612db4612dae612da06001600160401b0396612dbe9661213f565b93612c4a602d549580612116565b8361217a565b91848d5116612116565b168089526001600160401b03602c5416809110612dd85750565b8852565b909150602a54808211612dee57505050565b612df79161216d565b670de0b6b3a7640000810290808204670de0b6b3a76400001490151715612129576001600160401b0391612384612e3a612dae612da0612e4395602b549061213f565b848d5116612116565b81602c5460401c16808211612e59575b50168852565b905038612e53565b87516001600160801b0316670de0b6b3a764000081810292918084049091149015171561212957612e919161213f565b612d48565b506020813d602011612ec2575b81612eb06020938361204f565b81010312611e1d57612ccb9051612cb5565b3d9150612ea3565b9697939450509350506001600160401b038151166001600160401b03602e5416809103612f08575b509392612efd612a9e565b926000926000929190565b81526001925038612ef2565b975098505050505092505091612f28612a78565b91612f31612a9e565b9160009160009190600090565b87516001600160801b0316670de0b6b3a764000081810292918084049091149015171561212957612f6e9161213f565b612bd5565b506020813d602011612f9f575b81612f8d6020938361204f565b81010312611e1d57612bcc9051612bb6565b3d9150612f80565b3d15612fd2573d90612fb882612070565b91612fc6604051938461204f565b82523d6000602084013e565b606090565b60405190612fe482611ffd565b60038252623f3f3f60e81b6020830152565b908151811015613007570160200190565b634e487b7160e01b600052603260045260246000fd5b60ff1660ff81146121295760010190565b8051604081106130a957508051810190602081818401930312611e1d576020810151906001600160401b038211611e1d570181603f82011215611e1d57602081015161307981612070565b92613087604051948561204f565b81845260408284010111611e1d576130a6916040602085019101611e38565b90565b602092908303613197576000805b60ff81168581109081613178575b50156130d9576130d49061301d565b6130b7565b9260ff809416926130e984612070565b936130f7604051958661204f565b808552613106601f1991612070565b013687860137825b8581168781108061315b575b156131505761314b91906131456001600160f81b031961313a8388612ff6565b5116871a9188612ff6565b5361301d565b61310e565b505094505050905090565b506001600160f81b031961316f8286612ff6565b5116151561311a565b6001600160f81b0319915061318d9086612ff6565b51161515386130c5565b9150506130a6612fd756feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa264697066735822122013f4fadcc6d8a5582ff6b55236431f484dc8018dcb0d56a344cccb04b2758aa264736f6c63430008120033", "linkReferences": {}, "deployedLinkReferences": {} } diff --git a/src/artifacts/tapioca-bar/SGLLendingCommon.json b/src/artifacts/tapioca-bar/SGLLendingCommon.json index 76b34331..bebe2da1 100644 --- a/src/artifacts/tapioca-bar/SGLLendingCommon.json +++ b/src/artifacts/tapioca-bar/SGLLendingCommon.json @@ -1527,11 +1527,6 @@ }, { "inputs": [ - { - "internalType": "uint256", - "name": "_borrowOpeningFee", - "type": "uint256" - }, { "internalType": "contract IOracle", "name": "_oracle", @@ -1858,8 +1853,8 @@ "type": "function" } ], - "bytecode": "0x6101408060405234620001e5576200001781620001ea565b601381526001602082017f546170696f63612053696e67756c617269747900000000000000000000000000815260206040516200005481620001ea565b8381520192603160f81b845251902091208160e052610100918183524660a0526040519160208301907f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f92838352604085015260608401524660808401523060a084015260a0835260c083019280841060018060401b03851117620001cf5760408490525190206080523060c052610120908152600580546001600160a01b0319163390811790915560007f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a362013880601b5562015f90601c55612710601d556032602055612ee06021557f0bd4060688a1800ae986e4840aebc924bb40b5bf44de4583df2257220b54b77c6027557f7d1dc38e60930664f8cbf495da6556ca091d2f92d6550877750c049864b182306028556161a86029556131df928362000207843960805183612684015260a0518361274f015260c0518361264e015260e051836126d3015251826126f9015251816126b00152f35b634e487b7160e01b600052604160045260246000fd5b600080fd5b604081019081106001600160401b03821117620001cf5760405256fe608080604052600436101561001357600080fd5b600090813560e01c908162a02a2014611db05750806302ce728f14611c2857806306fdde0314611b71578063078dfbe714611a6e578063095ea7b314611a475780630996efb7146115c25780630c4e84f0146114aa57806318160ddd146114895780631c9e379b146114505780631da8bf101461139057806323b872dd146111f3578063313ce56714611161578063331960ff1461114357806334d441d0146111255780633644e5151461110a57806337b6b7b9146110ec57806338d52e0f146110c35780633ba0b9a9146110a55780633f741adb1461108057806340626d8b1461106257806344de240a14611044578063473e3ce71461102657806348e4163e14610fed5780634d7f2a3414610fcf5780634e71e0c814610f21578063529898f214610f0357806352f353eb14610edc5780635514023214610eb557806355c2ab9414610e8b5780635793546214610e6d5780635dfe04e814610e0e5780636c3d8b8f14610de557806370a0823114610dac5780637277854714610d7457806374645ff314610d495780637dc0d1d014610d205780637ecebe0014610ce75780637fa0b84e14610cb5578063821226e814610c975780638285ef4014610c655780638c5d0ed314610c475780638da5cb5b14610c1e578063910dd7c814610a01578063959916dc146109e457806395d89b411461092a57806399a97028146108fa5780639c5d7192146108dc5780639e15e89f146108a1578063a9059cbb146107be578063b0e21e8a146107a0578063b27c0e7414610765578063bb4cfe3b14610747578063ce8849ed1461071e578063d505accf14610579578063d8dfeb4514610550578063dd62ed3e14610505578063de406577146104dc578063e0996cb6146104be578063e30c397814610495578063ea64dd5614610477578063eec0f42e14610459578063f42760b71461043b578063f8ba4cff14610341578063f9557ccb1461030b5763ffe04c66146102eb57600080fd5b346103085780600319360112610308576020602a54604051908152f35b80fd5b5034610308578060031936011261030857602554604080516001600160801b038316815260809290921c602083015290f35b0390f35b50346103085780600319360112610308576020604061035e612ace565b9397959390929015610402575050506001600160401b03602f541686807f33af5ce86e8438eff54589f85332916444457dfa8685493fbd579b809097026b868851838152a45b6001600160401b038151166001600160401b03851b84830151861b169160018060801b0319958691015160801b1691171760245560018060801b039083838383511692015160801b161760145583511692015160801b161760255580f35b7f33af5ce86e8438eff54589f85332916444457dfa8685493fbd579b809097026b866001600160401b03865116948951908152a46103a4565b50346103085780600319360112610308576020602b54604051908152f35b50346103085780600319360112610308576020600c54604051908152f35b50346103085780600319360112610308576020601f54604051908152f35b50346103085780600319360112610308576006546040516001600160a01b039091168152602090f35b50346103085780600319360112610308576020601d54604051908152f35b50346103085780600319360112610308576009546040516001600160a01b039091168152602090f35b5034610308576040366003190112610308576040602091610524611df8565b61052c611e13565b6001600160a01b039182168352600285528383209116825283522054604051908152f35b5034610308578060031936011261030857600b546040516001600160a01b039091168152602090f35b50346103085761058836611e80565b908395949542116106d9576001600160a01b03878116808a52600460205260408a20805491969295929060001983146106c5578261066e9694928d92600161066698960190556040519160208301937f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e266855260408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e0815261062a81612009565b51902061063561264b565b9060405190602082019261190160f01b8452602283015260428201526042815261065e81612025565b519020612920565b919091612821565b16036106805761067d926129f3565b80f35b60405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152606490fd5b634e487b7160e01b8c52601160045260248cfd5b60405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b50346103085780600319360112610308576008546040516001600160a01b039091168152602090f35b50346103085780600319360112610308576020601e54604051908152f35b50346103085780600319360112610308576060602454604051906001600160401b0380821683528160401c16602083015260801c6040820152f35b50346103085780600319360112610308576020601a54604051908152f35b5034610308576040366003190112610308576107d8611df8565b6024358092811580159061088f575b61081f575b50506040519182526001600160a01b031690339060008051602061318a83398151915290602090a3602060405160018152f35b3381526001602052604081205461083883821015612775565b6001600160a01b0384169033829003610853575b50506107ec565b60409361086a916108658415156127ba565b61215e565b33835260016020528383205581522061088483825461216b565b90558138808061084c565b50336001600160a01b038416146107e7565b50346103085760403660031901126103085760606108c96108c0611df8565b602435906122aa565b9060405192835260208301526040820152f35b50346103085780600319360112610308576020602c54604051908152f35b5034610308576040366003190112610308576020610922610919611df8565b60243590612519565b604051908152f35b5034610308578060031936011261030857808060018060a01b03600b541660405160208101906395d89b4160e01b82526004815261096781611fee565b51915afa610973612f8e565b9150156109d35761098661033d91613015565b6109bf6023604051809362746d2d60e81b60208301526109af8151809260208686019101611e29565b8101036003810184520182612040565b604051918291602083526020830190611e4c565b5061033d6109df612fbe565b610986565b503461030857806003193601126103085760208054604051908152f35b5034610308576040366003190112610308576004356001600160401b038111610c1a5736602382011215610c1a57806004013582610a3e82612061565b92610a4c6040519485612040565b82845260208401923660248284010111610c16578060246020930185378401015260243561ffff81168103610c1257610100918284805181010312610c0e57610a9490612409565b610aa0604085016127ff565b91610aad606086016127ff565b9460808101519460a082015192610ac660c08401612813565b9160e0840151930151938042116106d9578515610be7577f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e266915b6001600160a01b0388168b52600460205260408b20805491906000198314610bd3579161ffff610b909896949261066698969460018401905560405194602086015216604084015260018060a01b038a16606084015260018060a01b038c1660808401528a60a084015260c083015260e082015260e08152610b8181612009565b6020815191012061063561264b565b6001600160a01b038381169116036106805715610bbd5761067d926001600160a01b0390811691166129f3565b61067d926001600160a01b0390811691166129a5565b634e487b7160e01b8d52601160045260248dfd5b7f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d691610b00565b8480fd5b8380fd5b8280fd5b5080fd5b50346103085780600319360112610308576005546040516001600160a01b039091168152602090f35b50346103085780600319360112610308576020601b54604051908152f35b5034610308578060031936011261030857601454604080516001600160801b038316815260809290921c602083015290f35b50346103085780600319360112610308576020602e54604051908152f35b503461030857604036600319011261030857610cdc610cd2611df8565b60243590336129a5565b602060405160018152f35b5034610308576020366003190112610308576020906040906001600160a01b03610d0f611df8565b168152600483522054604051908152f35b5034610308578060031936011261030857600f546040516001600160a01b039091168152602090f35b503461030857806003193601126103085761033d6040516109bf81610d6d81611f38565b0382612040565b50346103085760203660031901126103085760043590600982101561030857602060ff610da084611ecf565b54166040519015158152f35b5034610308576020366003190112610308576020906040906001600160a01b03610dd4611df8565b168152600183522054604051908152f35b5034610308578060031936011261030857600a546040516001600160a01b039091168152602090f35b5034610308578060031936011261030857610e27612a4a565b506080610e32612ace565b509350505050604051916001600160401b0380825116845260208201511660208401526040600180861b039101511660408301526060820152f35b50346103085780600319360112610308576020601c54604051908152f35b503461030857806003193601126103085760206001600160401b03602d5460401c16604051908152f35b503461030857806003193601126103085760206001600160401b03602d5416604051908152f35b503461030857806003193601126103085760206001600160401b03602f5416604051908152f35b50346103085780600319360112610308576020602154604051908152f35b50346103085780600319360112610308576006546001600160a01b039081811633819003610f8b57806005549384167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08680a36001600160a01b0319928316176005551660065580f35b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b50346103085780600319360112610308576020602954604051908152f35b5034610308576020366003190112610308576020906040906001600160a01b03611015611df8565b168152601783522054604051908152f35b50346103085780600319360112610308576020601554604051908152f35b50346103085780600319360112610308576020600e54604051908152f35b50346103085780600319360112610308576020601654604051908152f35b5034610308576060366003190112610308576020610922604435602435600435612191565b50346103085780600319360112610308576020601154604051908152f35b5034610308578060031936011261030857600d546040516001600160a01b039091168152602090f35b50346103085780600319360112610308576020601254604051908152f35b5034610308578060031936011261030857602061092261264b565b50346103085780600319360112610308576020601954604051908152f35b50346103085780600319360112610308576020601354604051908152f35b5034610308578060031936011261030857808060018060a01b03600d5416604051602081019063313ce56760e01b82526004815261119e81611fee565b51915afa906111ab612f8e565b91806111e8575b156111dd5760208280518101031261030857506111d26020809201612813565b60ff60405191168152f35b5050602060126111d2565b5060208251146111b2565b50346103085760603660031901126103085761120d611df8565b90611216611e13565b6044359182611254575b506040519182526001600160a01b0390811692169060008051602061318a83398151915290602090a3602060405160018152f35b6001600160a01b0384811680835260016020908152604084205492869061127d82861015612775565b861693848403611292575b5050505050611220565b8386526002835260408087203388528452862054600181016112fc575b50926001602096936112da879460409761086560008051602061318a8339815191529c9a15156127ba565b92855252838320558152206112f085825461216b565b90559138808581611288565b9091811061135057926001602096936112da8a60008051602061318a8339815191529a989561132d8260409a61215e565b86895260028552898920338a5285528989205594975094979950509396506112af565b60405162461bcd60e51b815260048101849052601860248201527745524332303a20616c6c6f77616e636520746f6f206c6f7760401b6044820152606490fd5b50346103085761139f36611e80565b908395949542116106d9576001600160a01b03878116808a52600460205260408a20805491969295929060001983146106c557826114419694928d92600161066698960190556040519160208301937f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d6855260408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e0815261062a81612009565b16036106805761067d926129a5565b5034610308576020366003190112610308576020906040906001600160a01b03611478611df8565b168152601883522054604051908152f35b5034610308578060031936011261030857602060255460801c604051908152f35b5034610308576040366003190112610308576004356009811015610c1a576114d0611e71565b6008549091906001600160a01b031633036115865760ff6114f082611ecf565b5416151591151591821461154c57808260ff61150e61153c94611ecf565b54161515827feeec81de25875ce1725479bb76f720a8defdb43dea041919ae37bb4aae9847c08780a4611ecf565b9060ff8019835416911617905580f35b60405162461bcd60e51b81526020600482015260126024820152714d61726b65743a2073616d6520737461746560701b6044820152606490fd5b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881d5b985d5d1a1bdc9a5e995960621b6044820152606490fd5b5034610308576101803660031901126103085760246001600160a01b03813581811690819003610c1257604435916001600160401b0390818411611a435736602385011215611a43578360040135918211611a435736858386010111611a435760643591818316809303611a3f5761163f8260055416331461207c565b60043594620186a094611654868811156120c7565b6020968088547fc353b09af857951dccce61b43a5854fc45beceed36c50e5d4cc2e71858a8e0df8c80a3875580611a01575b5086826118c6575b50505081611886575b505060843580611871575b5060a4358061185c575b5060c43580611848575b5060e43580611827575b506101043580611806575b5061012435806117d5575b50610144359081611765575b50506101643591826116f2578380f35b601e548310611707575050601f553880808380f35b9060326084926040519262461bcd60e51b845260048401528201527f4d61726b65743a206c69717569646174696f6e436f6c6c61746572616c697a616044820152711d1a5bdb94985d19481d1bdbc81cdb585b1b60721b6064820152fd5b611771908211156120c7565b601f54811161178457601e5538806116e2565b5060256084926040519262461bcd60e51b845260048401528201527f4d61726b65743a20636f6c6c61746572616c697a6174696f6e5261746520746f6044820152646f2062696760d81b6064820152fd5b806016547fae6e0ab3b95f0a53ff9660a390ccedcbbf1f2355dce974a9841af106fddcfaba8780a3601655386116d6565b6118118282106120c7565b61181e601b5482116120c7565b601c55386116cb565b6118328282106120c7565b61183f601c5482106120c7565b601b55386116c0565b6118538282106120c7565b601d55386116b6565b611868828211156120c7565b601a55386116ac565b61187d828211156120c7565b601955386116a2565b816008549182167f5a62d22209e370e38eea92cfddcd228e656e6ec139243392a760a7769f5877fd8880a36001600160a01b031916176008553880611697565b82916118d3601054611efe565b601f81116119b0575b508990601f8411600114611941578a93611934575b5050508160011b916000199060031b1c1916176010555b7fa6f004921c944d4b8bf6e38462b00f36a58d62495d56b51f571ab78f732c98158680a138808661168e565b01013590508638806118f1565b60108b52888b20601f198516955092509089908b5b8a8782106119955750508460019610611979575b50505050811b01601055611908565b60001960f88660031b161c19920101351690553880888161196a565b8483019093013585556001909401938b929182019101611956565b9150915060108952868920601f840160051c81018885106119fa575b91849391601f8b94920160051c01905b8181106119e957506118dc565b8b81558594508a93506001016119dc565b50806119cc565b600f80546001600160a01b0319169190911790557f0b2d6eb667d0522c3eb86e4288afecae6c11591ffd1345d4d12407e0598bca9b8880a138611686565b8680fd5b8580fd5b503461030857604036600319011261030857610cdc611a64611df8565b60243590336129f3565b503461030857606036600319011261030857611a88611df8565b611a90611e71565b604435908115158203610c125760018060a01b03928391611ab68360055416331461207c565b15611b5a571690811590811591611b52575b5015611b1557806005549283167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08580a36001600160a01b03199182161760055560068054909116905580f35b60405162461bcd60e51b81526020600482015260156024820152744f776e61626c653a207a65726f206164647265737360581b6044820152606490fd5b905038611ac8565b9150501660018060a01b0319600654161760065580f35b5034610308578060031936011261030857808060018060a01b03600b541660405160208101906306fdde0360e01b825260048152611bae81611fee565b51915afa611bba612f8e565b915015611c1757611bcd61033d91613015565b6109bf6034604051809373546170696f63612053696e67756c61726974792d60601b6020830152611c078151809260208686019101611e29565b8101036014810184520182612040565b5061033d611c23612fbe565b611bcd565b5034610308578060031936011261030857600f546040805163d6d7d52560e01b8152602060048201529182906001600160a01b0316818581611c6c60248201611f38565b03925af18015611da55782918391611d65575b508115611d06578015611cca57807f9f9192b5edb17356c524e08d9e025c8e2f6307e6ea52fb7968faa3081f51c3c86040948260115580a25b42601355825191151582526020820152f35b60405162461bcd60e51b81526020600482015260146024820152734d61726b65743a20696e76616c6964207261746560601b6044820152606490fd5b509050611d186013546012549061216b565b4211611d2957604090601154611cb8565b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881c985d19481d1bdbc81bdb1960621b6044820152606490fd5b9150506040813d604011611d9d575b81611d8160409383612040565b81010312610c1a576020611d9482612409565b91015138611c7f565b3d9150611d74565b6040513d84823e3d90fd5b905034610c1a576040366003190112610c1a576040602092611dd0611df8565b611dd8611e13565b6001600160a01b0391821683526003865283832091168252845220548152f35b600435906001600160a01b0382168203611e0e57565b600080fd5b602435906001600160a01b0382168203611e0e57565b60005b838110611e3c5750506000910152565b8181015183820152602001611e2c565b90602091611e6581518092818552858086019101611e29565b601f01601f1916010190565b602435908115158203611e0e57565b60e0906003190112611e0e576001600160a01b03906004358281168103611e0e57916024359081168103611e0e5790604435906064359060843560ff81168103611e0e579060a4359060c43590565b6009811015611ee8576000526007602052604060002090565b634e487b7160e01b600052602160045260246000fd5b90600182811c92168015611f2e575b6020831014611f1857565b634e487b7160e01b600052602260045260246000fd5b91607f1691611f0d565b60105460009291611f4882611efe565b908181526001928381169081600014611fa25750600114611f6857505050565b9092935060106000526020928360002092846000945b838610611f8e5750505050010190565b805485870183015294019385908201611f7e565b91935050602093945060ff191683830152151560051b010190565b606081019081106001600160401b03821117611fd857604052565b634e487b7160e01b600052604160045260246000fd5b604081019081106001600160401b03821117611fd857604052565b61010081019081106001600160401b03821117611fd857604052565b608081019081106001600160401b03821117611fd857604052565b90601f801991011681019081106001600160401b03821117611fd857604052565b6001600160401b038111611fd857601f01601f191660200190565b1561208357565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b156120ce57565b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881b9bdd081d985b1a59607a1b6044820152606490fd5b8181029291811591840414171561211a57565b634e487b7160e01b600052601160045260246000fd5b811561213a570490565b634e487b7160e01b600052601260045260246000fd5b604d811161211a57600a0a90565b9190820391821161211a57565b9190820180921161211a57565b8181039291600013801582851316918412161761211a57565b6014549192916121da916121cb916121c1916121b7906001600160801b03831690612107565b9060801c90612130565b93601f5490612107565b6121d483612150565b90612130565b8083106122a2576121ee61222a918461215e565b9161222561221f612216601e5461221061220786612150565b6021549061216b565b90612107565b6121d484612150565b91612150565b612178565b6509184e72a0009081810291818305149015171561211a57670de0b6b3a76400009182810292818405149015171561211a57801561213a57600160ff1b9180831460001983141661211a570590600082121561229b57811461211a57600003905b808211612296575090565b905090565b509061228b565b505050600090565b9160018060a01b0380931691600093838552602060178152604091828720549081156123fc57878385516122dd81611fee565b82815201526122ea612ace565b50505050509190506122fd861515612416565b6009541683600c54898b52601882526064878c2054918851948593849263442c159960e01b8452600484015260248301528d60448301525afa9081156123f25789916123bf575b509161239f6123b3979899949261237a8861237561236c601898620186a06022540490612107565b601e5490612107565b612130565b815190936001600160801b0391869161239591841690612107565b9201511690612130565b8181106123b757035b978352522054612462565b9091565b5050826123a8565b90508381813d83116123eb575b6123d68183612040565b810103126123e7575161239f612344565b8880fd5b503d6123cc565b85513d8b823e3d90fd5b5086955085949350505050565b51908115158203611e0e57565b1561241d57565b60405162461bcd60e51b815260206004820152601e60248201527f4d61726b65743a2065786368616e676552617465206e6f742076616c696400006044820152606490fd5b61246d821515612416565b602060018060a01b0360095416916064600c54604051948593849263442c159960e01b845260048401526024830152600060448301525afa90811561250d576000916124da575b50906123756124c69260225490612107565b620186a06124d6601e5483612107565b0491565b906020823d8211612505575b816124f360209383612040565b810103126103085750516123756124b4565b3d91506124e6565b6040513d6000823e3d90fd5b6001600160a01b0316600081815260186020526040812054909261253c91612462565b91835260176020526040832054801561264557811561264557818110612645578281101561263b57601454612585918391610865916121b7906001600160801b03831690612107565b90620186a09283830292808404851490151715612627576125aa92916121d49161215e565b91601b5491601c54936125bd8585612178565b80820291848212600160ff1b82141661262757818305149015171561261357058184820194851291129080158216911516176125ff5750808212612296575090565b634e487b7160e01b81526011600452602490fd5b634e487b7160e01b83526011600452602483fd5b634e487b7160e01b85526011600452602485fd5b50505050601b5490565b50505090565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316148061274c575b156126a6577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f000000000000000000000000000000000000000000000000000000000000000082527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a0815260c081018181106001600160401b03821117611fd85760405251902090565b507f0000000000000000000000000000000000000000000000000000000000000000461461267d565b1561277c57565b60405162461bcd60e51b815260206004820152601660248201527545524332303a2062616c616e636520746f6f206c6f7760501b6044820152606490fd5b156127c157565b60405162461bcd60e51b815260206004820152601660248201527545524332303a206e6f207a65726f206164647265737360501b6044820152606490fd5b51906001600160a01b0382168203611e0e57565b519060ff82168203611e0e57565b6005811015611ee857806128325750565b6001810361287a5760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b6044820152606490fd5b600281036128c75760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606490fd5b6003146128d057565b60405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608490fd5b9291906fa2a8918ca85bafe22016d0b997e4df60600160ff1b0383116129995791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa1561298c5781516001600160a01b03811615612986579190565b50600190565b50604051903d90823e3d90fd5b50505050600090600390565b7fe50de2333c10a9502fcb1d8ae13a51bbf423153dfc63c2b8997665b32154afc360018060a01b038092169160009083825260036020526040822094169384825260205284604082205580a4565b909160207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259160018060a01b03809416938460005260028352604060002095169485600052825280604060002055604051908152a3565b60405190612a5782611fbd565b60006040838281528260208201520152565b60405190612a7682611fee565b6014546001600160801b038116835260801c6020830152565b60405190612a9c82611fee565b6025546001600160801b038116835260801c6020830152565b6001600160801b03918216908216019190821161211a57565b612ad6612a4a565b5060006020604051612ae781611fee565b828152015260006020604051612afc81611fee565b828152015260405190612b0e82611fbd565b602454916001600160401b038316815260208101926001600160401b038160401c16845260801c60408201528092612b44612a69565b92612b4d612a8f565b92600060018060a01b0360095416600e549460018060801b038751166040519063442c159960e01b8252876004830152602482015260006044820152602081606481865afa801561250d57600090612f5a575b8951612bb692506001600160801b03169061216b565b80612f25575060005b612bd46001600160401b03829351164261215e565b948515612efb575050426001600160401b031660208a8101919091528801516001600160801b031615612eb157506020670de0b6b3a7640000612c3685612c318c6001600160401b038d60018060801b0390511691511690612107565b612107565b895191900496906001600160801b0390612c5590828a16908316612ab5565b168952875160405163442c159960e01b815260048101929092526001600160801b031660248201526000604482015291829060649082905afa801561250d57600090612e7d575b8751612cb292506001600160801b03169061216b565b92612ce084612375620186a0612cca601a548a612107565b60208c01516001600160801b0316919004612107565b6040890180519195916001600160801b038088169291612d039084908316612ab5565b16905260208801805190916001600160801b0391612d2391908316612ab5565b16905280612e48575060005b602a5490938482811015612dc357612d47908361215e565b90670de0b6b3a7640000820291808304670de0b6b3a7640000149015171561211a57612375612d9b612d95612d876001600160401b0396612da596612130565b93612c31602e549580612107565b8361216b565b91848d5116612107565b168089526001600160401b03602d5416809110612dbf5750565b8852565b909150602b54808211612dd557505050565b612dde9161215e565b670de0b6b3a7640000810290808204670de0b6b3a7640000149015171561211a576001600160401b0391612375612e21612d95612d87612e2a95602c5490612130565b848d5116612107565b81602d5460401c16808211612e40575b50168852565b905038612e3a565b87516001600160801b0316670de0b6b3a764000081810292918084049091149015171561211a57612e7891612130565b612d2f565b506020813d602011612ea9575b81612e9760209383612040565b81010312611e0e57612cb29051612c9c565b3d9150612e8a565b9697939450509350506001600160401b038151166001600160401b03602f5416809103612eef575b509392612ee4612a8f565b926000926000929190565b81526001925038612ed9565b975098505050505092505091612f0f612a69565b91612f18612a8f565b9160009160009190600090565b88516001600160801b0316670de0b6b3a764000081810292918084049091149015171561211a57612f5591612130565b612bbf565b506020813d602011612f86575b81612f7460209383612040565b81010312611e0e57612bb69051612ba0565b3d9150612f67565b3d15612fb9573d90612f9f82612061565b91612fad6040519384612040565b82523d6000602084013e565b606090565b60405190612fcb82611fee565b60038252623f3f3f60e81b6020830152565b908151811015612fee570160200190565b634e487b7160e01b600052603260045260246000fd5b60ff1660ff811461211a5760010190565b80516040811061309057508051810190602081818401930312611e0e576020810151906001600160401b038211611e0e570181603f82011215611e0e57602081015161306081612061565b9261306e6040519485612040565b81845260408284010111611e0e5761308d916040602085019101611e29565b90565b60209290830361317e576000805b60ff8116858110908161315f575b50156130c0576130bb90613004565b61309e565b9260ff809416926130d084612061565b936130de6040519586612040565b8085526130ed601f1991612061565b013687860137825b85811687811080613142575b1561313757613132919061312c6001600160f81b03196131218388612fdd565b5116871a9188612fdd565b53613004565b6130f5565b505094505050905090565b506001600160f81b03196131568286612fdd565b51161515613101565b6001600160f81b031991506131749086612fdd565b51161515386130ac565b91505061308d612fbe56feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa26469706673582212208c00405a475d552cd75310f06b1473cab1724710a68e1023789d1b4e2da3230864736f6c63430008120033", - "deployedBytecode": "0x608080604052600436101561001357600080fd5b600090813560e01c908162a02a2014611db05750806302ce728f14611c2857806306fdde0314611b71578063078dfbe714611a6e578063095ea7b314611a475780630996efb7146115c25780630c4e84f0146114aa57806318160ddd146114895780631c9e379b146114505780631da8bf101461139057806323b872dd146111f3578063313ce56714611161578063331960ff1461114357806334d441d0146111255780633644e5151461110a57806337b6b7b9146110ec57806338d52e0f146110c35780633ba0b9a9146110a55780633f741adb1461108057806340626d8b1461106257806344de240a14611044578063473e3ce71461102657806348e4163e14610fed5780634d7f2a3414610fcf5780634e71e0c814610f21578063529898f214610f0357806352f353eb14610edc5780635514023214610eb557806355c2ab9414610e8b5780635793546214610e6d5780635dfe04e814610e0e5780636c3d8b8f14610de557806370a0823114610dac5780637277854714610d7457806374645ff314610d495780637dc0d1d014610d205780637ecebe0014610ce75780637fa0b84e14610cb5578063821226e814610c975780638285ef4014610c655780638c5d0ed314610c475780638da5cb5b14610c1e578063910dd7c814610a01578063959916dc146109e457806395d89b411461092a57806399a97028146108fa5780639c5d7192146108dc5780639e15e89f146108a1578063a9059cbb146107be578063b0e21e8a146107a0578063b27c0e7414610765578063bb4cfe3b14610747578063ce8849ed1461071e578063d505accf14610579578063d8dfeb4514610550578063dd62ed3e14610505578063de406577146104dc578063e0996cb6146104be578063e30c397814610495578063ea64dd5614610477578063eec0f42e14610459578063f42760b71461043b578063f8ba4cff14610341578063f9557ccb1461030b5763ffe04c66146102eb57600080fd5b346103085780600319360112610308576020602a54604051908152f35b80fd5b5034610308578060031936011261030857602554604080516001600160801b038316815260809290921c602083015290f35b0390f35b50346103085780600319360112610308576020604061035e612ace565b9397959390929015610402575050506001600160401b03602f541686807f33af5ce86e8438eff54589f85332916444457dfa8685493fbd579b809097026b868851838152a45b6001600160401b038151166001600160401b03851b84830151861b169160018060801b0319958691015160801b1691171760245560018060801b039083838383511692015160801b161760145583511692015160801b161760255580f35b7f33af5ce86e8438eff54589f85332916444457dfa8685493fbd579b809097026b866001600160401b03865116948951908152a46103a4565b50346103085780600319360112610308576020602b54604051908152f35b50346103085780600319360112610308576020600c54604051908152f35b50346103085780600319360112610308576020601f54604051908152f35b50346103085780600319360112610308576006546040516001600160a01b039091168152602090f35b50346103085780600319360112610308576020601d54604051908152f35b50346103085780600319360112610308576009546040516001600160a01b039091168152602090f35b5034610308576040366003190112610308576040602091610524611df8565b61052c611e13565b6001600160a01b039182168352600285528383209116825283522054604051908152f35b5034610308578060031936011261030857600b546040516001600160a01b039091168152602090f35b50346103085761058836611e80565b908395949542116106d9576001600160a01b03878116808a52600460205260408a20805491969295929060001983146106c5578261066e9694928d92600161066698960190556040519160208301937f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e266855260408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e0815261062a81612009565b51902061063561264b565b9060405190602082019261190160f01b8452602283015260428201526042815261065e81612025565b519020612920565b919091612821565b16036106805761067d926129f3565b80f35b60405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152606490fd5b634e487b7160e01b8c52601160045260248cfd5b60405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b50346103085780600319360112610308576008546040516001600160a01b039091168152602090f35b50346103085780600319360112610308576020601e54604051908152f35b50346103085780600319360112610308576060602454604051906001600160401b0380821683528160401c16602083015260801c6040820152f35b50346103085780600319360112610308576020601a54604051908152f35b5034610308576040366003190112610308576107d8611df8565b6024358092811580159061088f575b61081f575b50506040519182526001600160a01b031690339060008051602061318a83398151915290602090a3602060405160018152f35b3381526001602052604081205461083883821015612775565b6001600160a01b0384169033829003610853575b50506107ec565b60409361086a916108658415156127ba565b61215e565b33835260016020528383205581522061088483825461216b565b90558138808061084c565b50336001600160a01b038416146107e7565b50346103085760403660031901126103085760606108c96108c0611df8565b602435906122aa565b9060405192835260208301526040820152f35b50346103085780600319360112610308576020602c54604051908152f35b5034610308576040366003190112610308576020610922610919611df8565b60243590612519565b604051908152f35b5034610308578060031936011261030857808060018060a01b03600b541660405160208101906395d89b4160e01b82526004815261096781611fee565b51915afa610973612f8e565b9150156109d35761098661033d91613015565b6109bf6023604051809362746d2d60e81b60208301526109af8151809260208686019101611e29565b8101036003810184520182612040565b604051918291602083526020830190611e4c565b5061033d6109df612fbe565b610986565b503461030857806003193601126103085760208054604051908152f35b5034610308576040366003190112610308576004356001600160401b038111610c1a5736602382011215610c1a57806004013582610a3e82612061565b92610a4c6040519485612040565b82845260208401923660248284010111610c16578060246020930185378401015260243561ffff81168103610c1257610100918284805181010312610c0e57610a9490612409565b610aa0604085016127ff565b91610aad606086016127ff565b9460808101519460a082015192610ac660c08401612813565b9160e0840151930151938042116106d9578515610be7577f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e266915b6001600160a01b0388168b52600460205260408b20805491906000198314610bd3579161ffff610b909896949261066698969460018401905560405194602086015216604084015260018060a01b038a16606084015260018060a01b038c1660808401528a60a084015260c083015260e082015260e08152610b8181612009565b6020815191012061063561264b565b6001600160a01b038381169116036106805715610bbd5761067d926001600160a01b0390811691166129f3565b61067d926001600160a01b0390811691166129a5565b634e487b7160e01b8d52601160045260248dfd5b7f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d691610b00565b8480fd5b8380fd5b8280fd5b5080fd5b50346103085780600319360112610308576005546040516001600160a01b039091168152602090f35b50346103085780600319360112610308576020601b54604051908152f35b5034610308578060031936011261030857601454604080516001600160801b038316815260809290921c602083015290f35b50346103085780600319360112610308576020602e54604051908152f35b503461030857604036600319011261030857610cdc610cd2611df8565b60243590336129a5565b602060405160018152f35b5034610308576020366003190112610308576020906040906001600160a01b03610d0f611df8565b168152600483522054604051908152f35b5034610308578060031936011261030857600f546040516001600160a01b039091168152602090f35b503461030857806003193601126103085761033d6040516109bf81610d6d81611f38565b0382612040565b50346103085760203660031901126103085760043590600982101561030857602060ff610da084611ecf565b54166040519015158152f35b5034610308576020366003190112610308576020906040906001600160a01b03610dd4611df8565b168152600183522054604051908152f35b5034610308578060031936011261030857600a546040516001600160a01b039091168152602090f35b5034610308578060031936011261030857610e27612a4a565b506080610e32612ace565b509350505050604051916001600160401b0380825116845260208201511660208401526040600180861b039101511660408301526060820152f35b50346103085780600319360112610308576020601c54604051908152f35b503461030857806003193601126103085760206001600160401b03602d5460401c16604051908152f35b503461030857806003193601126103085760206001600160401b03602d5416604051908152f35b503461030857806003193601126103085760206001600160401b03602f5416604051908152f35b50346103085780600319360112610308576020602154604051908152f35b50346103085780600319360112610308576006546001600160a01b039081811633819003610f8b57806005549384167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08680a36001600160a01b0319928316176005551660065580f35b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b50346103085780600319360112610308576020602954604051908152f35b5034610308576020366003190112610308576020906040906001600160a01b03611015611df8565b168152601783522054604051908152f35b50346103085780600319360112610308576020601554604051908152f35b50346103085780600319360112610308576020600e54604051908152f35b50346103085780600319360112610308576020601654604051908152f35b5034610308576060366003190112610308576020610922604435602435600435612191565b50346103085780600319360112610308576020601154604051908152f35b5034610308578060031936011261030857600d546040516001600160a01b039091168152602090f35b50346103085780600319360112610308576020601254604051908152f35b5034610308578060031936011261030857602061092261264b565b50346103085780600319360112610308576020601954604051908152f35b50346103085780600319360112610308576020601354604051908152f35b5034610308578060031936011261030857808060018060a01b03600d5416604051602081019063313ce56760e01b82526004815261119e81611fee565b51915afa906111ab612f8e565b91806111e8575b156111dd5760208280518101031261030857506111d26020809201612813565b60ff60405191168152f35b5050602060126111d2565b5060208251146111b2565b50346103085760603660031901126103085761120d611df8565b90611216611e13565b6044359182611254575b506040519182526001600160a01b0390811692169060008051602061318a83398151915290602090a3602060405160018152f35b6001600160a01b0384811680835260016020908152604084205492869061127d82861015612775565b861693848403611292575b5050505050611220565b8386526002835260408087203388528452862054600181016112fc575b50926001602096936112da879460409761086560008051602061318a8339815191529c9a15156127ba565b92855252838320558152206112f085825461216b565b90559138808581611288565b9091811061135057926001602096936112da8a60008051602061318a8339815191529a989561132d8260409a61215e565b86895260028552898920338a5285528989205594975094979950509396506112af565b60405162461bcd60e51b815260048101849052601860248201527745524332303a20616c6c6f77616e636520746f6f206c6f7760401b6044820152606490fd5b50346103085761139f36611e80565b908395949542116106d9576001600160a01b03878116808a52600460205260408a20805491969295929060001983146106c557826114419694928d92600161066698960190556040519160208301937f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d6855260408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e0815261062a81612009565b16036106805761067d926129a5565b5034610308576020366003190112610308576020906040906001600160a01b03611478611df8565b168152601883522054604051908152f35b5034610308578060031936011261030857602060255460801c604051908152f35b5034610308576040366003190112610308576004356009811015610c1a576114d0611e71565b6008549091906001600160a01b031633036115865760ff6114f082611ecf565b5416151591151591821461154c57808260ff61150e61153c94611ecf565b54161515827feeec81de25875ce1725479bb76f720a8defdb43dea041919ae37bb4aae9847c08780a4611ecf565b9060ff8019835416911617905580f35b60405162461bcd60e51b81526020600482015260126024820152714d61726b65743a2073616d6520737461746560701b6044820152606490fd5b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881d5b985d5d1a1bdc9a5e995960621b6044820152606490fd5b5034610308576101803660031901126103085760246001600160a01b03813581811690819003610c1257604435916001600160401b0390818411611a435736602385011215611a43578360040135918211611a435736858386010111611a435760643591818316809303611a3f5761163f8260055416331461207c565b60043594620186a094611654868811156120c7565b6020968088547fc353b09af857951dccce61b43a5854fc45beceed36c50e5d4cc2e71858a8e0df8c80a3875580611a01575b5086826118c6575b50505081611886575b505060843580611871575b5060a4358061185c575b5060c43580611848575b5060e43580611827575b506101043580611806575b5061012435806117d5575b50610144359081611765575b50506101643591826116f2578380f35b601e548310611707575050601f553880808380f35b9060326084926040519262461bcd60e51b845260048401528201527f4d61726b65743a206c69717569646174696f6e436f6c6c61746572616c697a616044820152711d1a5bdb94985d19481d1bdbc81cdb585b1b60721b6064820152fd5b611771908211156120c7565b601f54811161178457601e5538806116e2565b5060256084926040519262461bcd60e51b845260048401528201527f4d61726b65743a20636f6c6c61746572616c697a6174696f6e5261746520746f6044820152646f2062696760d81b6064820152fd5b806016547fae6e0ab3b95f0a53ff9660a390ccedcbbf1f2355dce974a9841af106fddcfaba8780a3601655386116d6565b6118118282106120c7565b61181e601b5482116120c7565b601c55386116cb565b6118328282106120c7565b61183f601c5482106120c7565b601b55386116c0565b6118538282106120c7565b601d55386116b6565b611868828211156120c7565b601a55386116ac565b61187d828211156120c7565b601955386116a2565b816008549182167f5a62d22209e370e38eea92cfddcd228e656e6ec139243392a760a7769f5877fd8880a36001600160a01b031916176008553880611697565b82916118d3601054611efe565b601f81116119b0575b508990601f8411600114611941578a93611934575b5050508160011b916000199060031b1c1916176010555b7fa6f004921c944d4b8bf6e38462b00f36a58d62495d56b51f571ab78f732c98158680a138808661168e565b01013590508638806118f1565b60108b52888b20601f198516955092509089908b5b8a8782106119955750508460019610611979575b50505050811b01601055611908565b60001960f88660031b161c19920101351690553880888161196a565b8483019093013585556001909401938b929182019101611956565b9150915060108952868920601f840160051c81018885106119fa575b91849391601f8b94920160051c01905b8181106119e957506118dc565b8b81558594508a93506001016119dc565b50806119cc565b600f80546001600160a01b0319169190911790557f0b2d6eb667d0522c3eb86e4288afecae6c11591ffd1345d4d12407e0598bca9b8880a138611686565b8680fd5b8580fd5b503461030857604036600319011261030857610cdc611a64611df8565b60243590336129f3565b503461030857606036600319011261030857611a88611df8565b611a90611e71565b604435908115158203610c125760018060a01b03928391611ab68360055416331461207c565b15611b5a571690811590811591611b52575b5015611b1557806005549283167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08580a36001600160a01b03199182161760055560068054909116905580f35b60405162461bcd60e51b81526020600482015260156024820152744f776e61626c653a207a65726f206164647265737360581b6044820152606490fd5b905038611ac8565b9150501660018060a01b0319600654161760065580f35b5034610308578060031936011261030857808060018060a01b03600b541660405160208101906306fdde0360e01b825260048152611bae81611fee565b51915afa611bba612f8e565b915015611c1757611bcd61033d91613015565b6109bf6034604051809373546170696f63612053696e67756c61726974792d60601b6020830152611c078151809260208686019101611e29565b8101036014810184520182612040565b5061033d611c23612fbe565b611bcd565b5034610308578060031936011261030857600f546040805163d6d7d52560e01b8152602060048201529182906001600160a01b0316818581611c6c60248201611f38565b03925af18015611da55782918391611d65575b508115611d06578015611cca57807f9f9192b5edb17356c524e08d9e025c8e2f6307e6ea52fb7968faa3081f51c3c86040948260115580a25b42601355825191151582526020820152f35b60405162461bcd60e51b81526020600482015260146024820152734d61726b65743a20696e76616c6964207261746560601b6044820152606490fd5b509050611d186013546012549061216b565b4211611d2957604090601154611cb8565b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881c985d19481d1bdbc81bdb1960621b6044820152606490fd5b9150506040813d604011611d9d575b81611d8160409383612040565b81010312610c1a576020611d9482612409565b91015138611c7f565b3d9150611d74565b6040513d84823e3d90fd5b905034610c1a576040366003190112610c1a576040602092611dd0611df8565b611dd8611e13565b6001600160a01b0391821683526003865283832091168252845220548152f35b600435906001600160a01b0382168203611e0e57565b600080fd5b602435906001600160a01b0382168203611e0e57565b60005b838110611e3c5750506000910152565b8181015183820152602001611e2c565b90602091611e6581518092818552858086019101611e29565b601f01601f1916010190565b602435908115158203611e0e57565b60e0906003190112611e0e576001600160a01b03906004358281168103611e0e57916024359081168103611e0e5790604435906064359060843560ff81168103611e0e579060a4359060c43590565b6009811015611ee8576000526007602052604060002090565b634e487b7160e01b600052602160045260246000fd5b90600182811c92168015611f2e575b6020831014611f1857565b634e487b7160e01b600052602260045260246000fd5b91607f1691611f0d565b60105460009291611f4882611efe565b908181526001928381169081600014611fa25750600114611f6857505050565b9092935060106000526020928360002092846000945b838610611f8e5750505050010190565b805485870183015294019385908201611f7e565b91935050602093945060ff191683830152151560051b010190565b606081019081106001600160401b03821117611fd857604052565b634e487b7160e01b600052604160045260246000fd5b604081019081106001600160401b03821117611fd857604052565b61010081019081106001600160401b03821117611fd857604052565b608081019081106001600160401b03821117611fd857604052565b90601f801991011681019081106001600160401b03821117611fd857604052565b6001600160401b038111611fd857601f01601f191660200190565b1561208357565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b156120ce57565b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881b9bdd081d985b1a59607a1b6044820152606490fd5b8181029291811591840414171561211a57565b634e487b7160e01b600052601160045260246000fd5b811561213a570490565b634e487b7160e01b600052601260045260246000fd5b604d811161211a57600a0a90565b9190820391821161211a57565b9190820180921161211a57565b8181039291600013801582851316918412161761211a57565b6014549192916121da916121cb916121c1916121b7906001600160801b03831690612107565b9060801c90612130565b93601f5490612107565b6121d483612150565b90612130565b8083106122a2576121ee61222a918461215e565b9161222561221f612216601e5461221061220786612150565b6021549061216b565b90612107565b6121d484612150565b91612150565b612178565b6509184e72a0009081810291818305149015171561211a57670de0b6b3a76400009182810292818405149015171561211a57801561213a57600160ff1b9180831460001983141661211a570590600082121561229b57811461211a57600003905b808211612296575090565b905090565b509061228b565b505050600090565b9160018060a01b0380931691600093838552602060178152604091828720549081156123fc57878385516122dd81611fee565b82815201526122ea612ace565b50505050509190506122fd861515612416565b6009541683600c54898b52601882526064878c2054918851948593849263442c159960e01b8452600484015260248301528d60448301525afa9081156123f25789916123bf575b509161239f6123b3979899949261237a8861237561236c601898620186a06022540490612107565b601e5490612107565b612130565b815190936001600160801b0391869161239591841690612107565b9201511690612130565b8181106123b757035b978352522054612462565b9091565b5050826123a8565b90508381813d83116123eb575b6123d68183612040565b810103126123e7575161239f612344565b8880fd5b503d6123cc565b85513d8b823e3d90fd5b5086955085949350505050565b51908115158203611e0e57565b1561241d57565b60405162461bcd60e51b815260206004820152601e60248201527f4d61726b65743a2065786368616e676552617465206e6f742076616c696400006044820152606490fd5b61246d821515612416565b602060018060a01b0360095416916064600c54604051948593849263442c159960e01b845260048401526024830152600060448301525afa90811561250d576000916124da575b50906123756124c69260225490612107565b620186a06124d6601e5483612107565b0491565b906020823d8211612505575b816124f360209383612040565b810103126103085750516123756124b4565b3d91506124e6565b6040513d6000823e3d90fd5b6001600160a01b0316600081815260186020526040812054909261253c91612462565b91835260176020526040832054801561264557811561264557818110612645578281101561263b57601454612585918391610865916121b7906001600160801b03831690612107565b90620186a09283830292808404851490151715612627576125aa92916121d49161215e565b91601b5491601c54936125bd8585612178565b80820291848212600160ff1b82141661262757818305149015171561261357058184820194851291129080158216911516176125ff5750808212612296575090565b634e487b7160e01b81526011600452602490fd5b634e487b7160e01b83526011600452602483fd5b634e487b7160e01b85526011600452602485fd5b50505050601b5490565b50505090565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316148061274c575b156126a6577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f000000000000000000000000000000000000000000000000000000000000000082527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a0815260c081018181106001600160401b03821117611fd85760405251902090565b507f0000000000000000000000000000000000000000000000000000000000000000461461267d565b1561277c57565b60405162461bcd60e51b815260206004820152601660248201527545524332303a2062616c616e636520746f6f206c6f7760501b6044820152606490fd5b156127c157565b60405162461bcd60e51b815260206004820152601660248201527545524332303a206e6f207a65726f206164647265737360501b6044820152606490fd5b51906001600160a01b0382168203611e0e57565b519060ff82168203611e0e57565b6005811015611ee857806128325750565b6001810361287a5760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b6044820152606490fd5b600281036128c75760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606490fd5b6003146128d057565b60405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608490fd5b9291906fa2a8918ca85bafe22016d0b997e4df60600160ff1b0383116129995791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa1561298c5781516001600160a01b03811615612986579190565b50600190565b50604051903d90823e3d90fd5b50505050600090600390565b7fe50de2333c10a9502fcb1d8ae13a51bbf423153dfc63c2b8997665b32154afc360018060a01b038092169160009083825260036020526040822094169384825260205284604082205580a4565b909160207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259160018060a01b03809416938460005260028352604060002095169485600052825280604060002055604051908152a3565b60405190612a5782611fbd565b60006040838281528260208201520152565b60405190612a7682611fee565b6014546001600160801b038116835260801c6020830152565b60405190612a9c82611fee565b6025546001600160801b038116835260801c6020830152565b6001600160801b03918216908216019190821161211a57565b612ad6612a4a565b5060006020604051612ae781611fee565b828152015260006020604051612afc81611fee565b828152015260405190612b0e82611fbd565b602454916001600160401b038316815260208101926001600160401b038160401c16845260801c60408201528092612b44612a69565b92612b4d612a8f565b92600060018060a01b0360095416600e549460018060801b038751166040519063442c159960e01b8252876004830152602482015260006044820152602081606481865afa801561250d57600090612f5a575b8951612bb692506001600160801b03169061216b565b80612f25575060005b612bd46001600160401b03829351164261215e565b948515612efb575050426001600160401b031660208a8101919091528801516001600160801b031615612eb157506020670de0b6b3a7640000612c3685612c318c6001600160401b038d60018060801b0390511691511690612107565b612107565b895191900496906001600160801b0390612c5590828a16908316612ab5565b168952875160405163442c159960e01b815260048101929092526001600160801b031660248201526000604482015291829060649082905afa801561250d57600090612e7d575b8751612cb292506001600160801b03169061216b565b92612ce084612375620186a0612cca601a548a612107565b60208c01516001600160801b0316919004612107565b6040890180519195916001600160801b038088169291612d039084908316612ab5565b16905260208801805190916001600160801b0391612d2391908316612ab5565b16905280612e48575060005b602a5490938482811015612dc357612d47908361215e565b90670de0b6b3a7640000820291808304670de0b6b3a7640000149015171561211a57612375612d9b612d95612d876001600160401b0396612da596612130565b93612c31602e549580612107565b8361216b565b91848d5116612107565b168089526001600160401b03602d5416809110612dbf5750565b8852565b909150602b54808211612dd557505050565b612dde9161215e565b670de0b6b3a7640000810290808204670de0b6b3a7640000149015171561211a576001600160401b0391612375612e21612d95612d87612e2a95602c5490612130565b848d5116612107565b81602d5460401c16808211612e40575b50168852565b905038612e3a565b87516001600160801b0316670de0b6b3a764000081810292918084049091149015171561211a57612e7891612130565b612d2f565b506020813d602011612ea9575b81612e9760209383612040565b81010312611e0e57612cb29051612c9c565b3d9150612e8a565b9697939450509350506001600160401b038151166001600160401b03602f5416809103612eef575b509392612ee4612a8f565b926000926000929190565b81526001925038612ed9565b975098505050505092505091612f0f612a69565b91612f18612a8f565b9160009160009190600090565b88516001600160801b0316670de0b6b3a764000081810292918084049091149015171561211a57612f5591612130565b612bbf565b506020813d602011612f86575b81612f7460209383612040565b81010312611e0e57612bb69051612ba0565b3d9150612f67565b3d15612fb9573d90612f9f82612061565b91612fad6040519384612040565b82523d6000602084013e565b606090565b60405190612fcb82611fee565b60038252623f3f3f60e81b6020830152565b908151811015612fee570160200190565b634e487b7160e01b600052603260045260246000fd5b60ff1660ff811461211a5760010190565b80516040811061309057508051810190602081818401930312611e0e576020810151906001600160401b038211611e0e570181603f82011215611e0e57602081015161306081612061565b9261306e6040519485612040565b81845260408284010111611e0e5761308d916040602085019101611e29565b90565b60209290830361317e576000805b60ff8116858110908161315f575b50156130c0576130bb90613004565b61309e565b9260ff809416926130d084612061565b936130de6040519586612040565b8085526130ed601f1991612061565b013687860137825b85811687811080613142575b1561313757613132919061312c6001600160f81b03196131218388612fdd565b5116871a9188612fdd565b53613004565b6130f5565b505094505050905090565b506001600160f81b03196131568286612fdd565b51161515613101565b6001600160f81b031991506131749086612fdd565b51161515386130ac565b91505061308d612fbe56feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa26469706673582212208c00405a475d552cd75310f06b1473cab1724710a68e1023789d1b4e2da3230864736f6c63430008120033", + "bytecode": "0x6101408060405234620001e5576200001781620001ea565b601381526001602082017f546170696f63612053696e67756c617269747900000000000000000000000000815260206040516200005481620001ea565b8381520192603160f81b845251902091208160e052610100918183524660a0526040519160208301907f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f92838352604085015260608401524660808401523060a084015260a0835260c083019280841060018060401b03851117620001cf5760408490525190206080523060c052610120908152600580546001600160a01b0319163390811790915560007f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a362013880601b5562015f90601c55612710601d55612ee06020557f0bd4060688a1800ae986e4840aebc924bb40b5bf44de4583df2257220b54b77c6026557f7d1dc38e60930664f8cbf495da6556ca091d2f92d6550877750c049864b182306027556161a86028556032602f556131f8928362000207843960805183612693015260a0518361275e015260c0518361265d015260e051836126e201525182612708015251816126bf0152f35b634e487b7160e01b600052604160045260246000fd5b600080fd5b604081019081106001600160401b03821117620001cf5760405256fe608080604052600436101561001357600080fd5b600090813560e01c908162a02a2014611dbf5750806302ce728f14611c3757806306fdde0314611b80578063078dfbe714611a7d578063095ea7b314611a565780630c4e84f01461193e57806318160ddd1461191d5780631c9e379b146118e45780631da8bf101461182457806323b872dd14611687578063313ce567146115f5578063331960ff146115d757806334d441d0146115b95780633644e5151461159e57806337b6b7b91461158057806338d52e0f146115575780633ba0b9a9146115395780633f741adb1461151457806340626d8b146114f657806344de240a146114d8578063473e3ce7146114ba57806348e4163e146114815780634d7f2a34146114635780634e71e0c8146113b5578063529898f21461139857806352f353eb14611371578063551402321461134a57806355c2ab941461132057806357935462146113025780635dfe04e8146112a35780636c3d8b8f1461127a57806370a0823114611241578063727785471461120957806374645ff3146111de5780637dc0d1d0146111b55780637ecebe001461117c5780637fa0b84e1461114a578063821226e81461112c5780638285ef40146110fa5780638c5d0ed3146110dc5780638da5cb5b146110b3578063910dd7c814610e9a578063959916dc14610e7c57806395d89b4114610dc257806399a9702814610d925780639c5d719214610d745780639e15e89f14610d39578063a9059cbb14610c56578063b0e21e8a14610c38578063b27c0e7414610bfd578063bb4cfe3b14610bdf578063ce8849ed14610bb6578063d3fb2a381461071e578063d505accf14610579578063d8dfeb4514610550578063dd62ed3e14610505578063de406577146104dc578063e0996cb6146104be578063e30c397814610495578063ea64dd5614610477578063eec0f42e14610459578063f42760b71461043b578063f8ba4cff14610341578063f9557ccb1461030b5763ffe04c66146102eb57600080fd5b346103085780600319360112610308576020602954604051908152f35b80fd5b5034610308578060031936011261030857602454604080516001600160801b038316815260809290921c602083015290f35b0390f35b50346103085780600319360112610308576020604061035e612add565b9397959390929015610402575050506001600160401b03602e541686807f33af5ce86e8438eff54589f85332916444457dfa8685493fbd579b809097026b868851838152a45b6001600160401b038151166001600160401b03851b84830151861b169160018060801b0319958691015160801b1691171760235560018060801b039083838383511692015160801b161760145583511692015160801b161760245580f35b7f33af5ce86e8438eff54589f85332916444457dfa8685493fbd579b809097026b866001600160401b03865116948951908152a46103a4565b50346103085780600319360112610308576020602a54604051908152f35b50346103085780600319360112610308576020600c54604051908152f35b50346103085780600319360112610308576020601f54604051908152f35b50346103085780600319360112610308576006546040516001600160a01b039091168152602090f35b50346103085780600319360112610308576020601d54604051908152f35b50346103085780600319360112610308576009546040516001600160a01b039091168152602090f35b5034610308576040366003190112610308576040602091610524611e07565b61052c611e22565b6001600160a01b039182168352600285528383209116825283522054604051908152f35b5034610308578060031936011261030857600b546040516001600160a01b039091168152602090f35b50346103085761058836611e8f565b908395949542116106d9576001600160a01b03878116808a52600460205260408a20805491969295929060001983146106c5578261066e9694928d92600161066698960190556040519160208301937f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e266855260408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e0815261062a81612018565b51902061063561265a565b9060405190602082019261190160f01b8452602283015260428201526042815261065e81612034565b51902061292f565b919091612830565b16036106805761067d92612a02565b80f35b60405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152606490fd5b634e487b7160e01b8c52601160045260248cfd5b60405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b503461030857610160366003190112610308576001600160a01b0360043581811690819003610bb2576024916001600160401b038335818111610bae5736602382011215610bae578060040135918211610bae5736858383010111610bae5760443593838516809503610baa5761079a8460055416331461208b565b80610b6c575b5084826109ee575b505050816109ae575b505060643580610996575b506084358061097e575b5060a43580610967575b5060c43580610943575b5060e4358061091f575b5061010435806108ee575b50610124358061087b575b50610144359081610809578280f35b601e54821061081c5750601f5538808280f35b60849060326040519162461bcd60e51b8352602060048401528201527f4d61726b65743a206c69717569646174696f6e436f6c6c61746572616c697a616044820152711d1a5bdb94985d19481d1bdbc81cdb585b1b60721b6064820152fd5b61088a620186a08211156120d6565b601f54811161089c57601e55386107fa565b60405162461bcd60e51b8152602060048201526025818401527f4d61726b65743a20636f6c6c61746572616c697a6174696f6e5261746520746f6044820152646f2062696760d81b6064820152608490fd5b806016547fae6e0ab3b95f0a53ff9660a390ccedcbbf1f2355dce974a9841af106fddcfaba8580a3601655386107ef565b61092d620186a082106120d6565b61093a601b5482116120d6565b601c55386107e4565b610951620186a082106120d6565b61095e601c5482106120d6565b601b55386107da565b610975620186a082106120d6565b601d55386107d0565b61098d620186a08211156120d6565b601a55386107c6565b6109a5620186a08211156120d6565b601955386107bc565b816008549182167f5a62d22209e370e38eea92cfddcd228e656e6ec139243392a760a7769f5877fd8680a36001600160a01b0319161760085538806107b1565b82916109fb601054611f0d565b601f8111610afb575b508790601f8411600114610a69578893610a5c575b5050508160011b916000199060031b1c1916176010555b7fa6f004921c944d4b8bf6e38462b00f36a58d62495d56b51f571ab78f732c98158480a13880846107a8565b0101359050843880610a19565b60108952601f19841694507f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae67292509087908960205b878210610adc5750508460019610610ac0575b50505050811b01601055610a30565b60001960f88660031b161c199201013516905538808681610ab1565b8285019093013585556001949094019389929182019190810190610a9e565b6010895290925090507f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae672601f840160051c810160208510610b65575b91849391601f8994920160051c01905b818110610b545750610a04565b898155859450889350600101610b47565b5080610b37565b600f80546001600160a01b0319169190911790557f0b2d6eb667d0522c3eb86e4288afecae6c11591ffd1345d4d12407e0598bca9b8680a1386107a0565b8680fd5b8580fd5b8280fd5b50346103085780600319360112610308576008546040516001600160a01b039091168152602090f35b50346103085780600319360112610308576020601e54604051908152f35b50346103085780600319360112610308576060602354604051906001600160401b0380821683528160401c16602083015260801c6040820152f35b50346103085780600319360112610308576020601a54604051908152f35b503461030857604036600319011261030857610c70611e07565b60243580928115801590610d27575b610cb7575b50506040519182526001600160a01b03169033906000805160206131a383398151915290602090a3602060405160018152f35b33815260016020526040812054610cd083821015612784565b6001600160a01b0384169033829003610ceb575b5050610c84565b604093610d0291610cfd8415156127c9565b61216d565b338352600160205283832055815220610d1c83825461217a565b905581388080610ce4565b50336001600160a01b03841614610c7f565b5034610308576040366003190112610308576060610d61610d58611e07565b602435906122b9565b9060405192835260208301526040820152f35b50346103085780600319360112610308576020602b54604051908152f35b5034610308576040366003190112610308576020610dba610db1611e07565b60243590612528565b604051908152f35b5034610308578060031936011261030857808060018060a01b03600b541660405160208101906395d89b4160e01b825260048152610dff81611ffd565b51915afa610e0b612fa7565b915015610e6b57610e1e61033d9161302e565b610e576023604051809362746d2d60e81b6020830152610e478151809260208686019101611e38565b810103600381018452018261204f565b604051918291602083526020830190611e5b565b5061033d610e77612fd7565b610e1e565b50346103085780600319360112610308576020602f54604051908152f35b5034610308576040366003190112610308576004356001600160401b0381116110af57366023820112156110af57806004013582610ed782612070565b92610ee5604051948561204f565b82845260208401923660248284010111610bb2578060246020930185378401015260243561ffff811681036110ab576101009182848051810103126110a757610f2d90612418565b610f396040850161280e565b91610f466060860161280e565b9460808101519460a082015192610f5f60c08401612822565b9160e0840151930151938042116106d9578515611080577f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e266915b6001600160a01b0388168b52600460205260408b2080549190600019831461106c579161ffff6110299896949261066698969460018401905560405194602086015216604084015260018060a01b038a16606084015260018060a01b038c1660808401528a60a084015260c083015260e082015260e0815261101a81612018565b6020815191012061063561265a565b6001600160a01b0383811691160361068057156110565761067d926001600160a01b039081169116612a02565b61067d926001600160a01b0390811691166129b4565b634e487b7160e01b8d52601160045260248dfd5b7f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d691610f99565b8480fd5b8380fd5b5080fd5b50346103085780600319360112610308576005546040516001600160a01b039091168152602090f35b50346103085780600319360112610308576020601b54604051908152f35b5034610308578060031936011261030857601454604080516001600160801b038316815260809290921c602083015290f35b50346103085780600319360112610308576020602d54604051908152f35b503461030857604036600319011261030857611171611167611e07565b60243590336129b4565b602060405160018152f35b5034610308576020366003190112610308576020906040906001600160a01b036111a4611e07565b168152600483522054604051908152f35b5034610308578060031936011261030857600f546040516001600160a01b039091168152602090f35b503461030857806003193601126103085761033d604051610e578161120281611f47565b038261204f565b50346103085760203660031901126103085760043590600982101561030857602060ff61123584611ede565b54166040519015158152f35b5034610308576020366003190112610308576020906040906001600160a01b03611269611e07565b168152600183522054604051908152f35b5034610308578060031936011261030857600a546040516001600160a01b039091168152602090f35b50346103085780600319360112610308576112bc612a59565b5060806112c7612add565b509350505050604051916001600160401b0380825116845260208201511660208401526040600180861b039101511660408301526060820152f35b50346103085780600319360112610308576020601c54604051908152f35b503461030857806003193601126103085760206001600160401b03602c5460401c16604051908152f35b503461030857806003193601126103085760206001600160401b03602c5416604051908152f35b503461030857806003193601126103085760206001600160401b03602e5416604051908152f35b503461030857806003193601126103085760208054604051908152f35b50346103085780600319360112610308576006546001600160a01b03908181163381900361141f57806005549384167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08680a36001600160a01b0319928316176005551660065580f35b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b50346103085780600319360112610308576020602854604051908152f35b5034610308576020366003190112610308576020906040906001600160a01b036114a9611e07565b168152601783522054604051908152f35b50346103085780600319360112610308576020601554604051908152f35b50346103085780600319360112610308576020600e54604051908152f35b50346103085780600319360112610308576020601654604051908152f35b5034610308576060366003190112610308576020610dba6044356024356004356121a0565b50346103085780600319360112610308576020601154604051908152f35b5034610308578060031936011261030857600d546040516001600160a01b039091168152602090f35b50346103085780600319360112610308576020601254604051908152f35b50346103085780600319360112610308576020610dba61265a565b50346103085780600319360112610308576020601954604051908152f35b50346103085780600319360112610308576020601354604051908152f35b5034610308578060031936011261030857808060018060a01b03600d5416604051602081019063313ce56760e01b82526004815261163281611ffd565b51915afa9061163f612fa7565b918061167c575b156116715760208280518101031261030857506116666020809201612822565b60ff60405191168152f35b505060206012611666565b506020825114611646565b5034610308576060366003190112610308576116a1611e07565b906116aa611e22565b60443591826116e8575b506040519182526001600160a01b039081169216906000805160206131a383398151915290602090a3602060405160018152f35b6001600160a01b0384811680835260016020908152604084205492869061171182861015612784565b861693848403611726575b50505050506116b4565b838652600283526040808720338852845286205460018101611790575b509260016020969361176e8794604097610cfd6000805160206131a38339815191529c9a15156127c9565b928552528383205581522061178485825461217a565b9055913880858161171c565b909181106117e4579260016020969361176e8a6000805160206131a38339815191529a98956117c18260409a61216d565b86895260028552898920338a528552898920559497509497995050939650611743565b60405162461bcd60e51b815260048101849052601860248201527745524332303a20616c6c6f77616e636520746f6f206c6f7760401b6044820152606490fd5b50346103085761183336611e8f565b908395949542116106d9576001600160a01b03878116808a52600460205260408a20805491969295929060001983146106c557826118d59694928d92600161066698960190556040519160208301937f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d6855260408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e0815261062a81612018565b16036106805761067d926129b4565b5034610308576020366003190112610308576020906040906001600160a01b0361190c611e07565b168152601883522054604051908152f35b5034610308578060031936011261030857602060245460801c604051908152f35b50346103085760403660031901126103085760043560098110156110af57611964611e80565b6008549091906001600160a01b03163303611a1a5760ff61198482611ede565b541615159115159182146119e057808260ff6119a26119d094611ede565b54161515827feeec81de25875ce1725479bb76f720a8defdb43dea041919ae37bb4aae9847c08780a4611ede565b9060ff8019835416911617905580f35b60405162461bcd60e51b81526020600482015260126024820152714d61726b65743a2073616d6520737461746560701b6044820152606490fd5b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881d5b985d5d1a1bdc9a5e995960621b6044820152606490fd5b503461030857604036600319011261030857611171611a73611e07565b6024359033612a02565b503461030857606036600319011261030857611a97611e07565b611a9f611e80565b6044359081151582036110ab5760018060a01b03928391611ac58360055416331461208b565b15611b69571690811590811591611b61575b5015611b2457806005549283167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08580a36001600160a01b03199182161760055560068054909116905580f35b60405162461bcd60e51b81526020600482015260156024820152744f776e61626c653a207a65726f206164647265737360581b6044820152606490fd5b905038611ad7565b9150501660018060a01b0319600654161760065580f35b5034610308578060031936011261030857808060018060a01b03600b541660405160208101906306fdde0360e01b825260048152611bbd81611ffd565b51915afa611bc9612fa7565b915015611c2657611bdc61033d9161302e565b610e576034604051809373546170696f63612053696e67756c61726974792d60601b6020830152611c168151809260208686019101611e38565b810103601481018452018261204f565b5061033d611c32612fd7565b611bdc565b5034610308578060031936011261030857600f546040805163d6d7d52560e01b8152602060048201529182906001600160a01b0316818581611c7b60248201611f47565b03925af18015611db45782918391611d74575b508115611d15578015611cd957807f9f9192b5edb17356c524e08d9e025c8e2f6307e6ea52fb7968faa3081f51c3c86040948260115580a25b42601355825191151582526020820152f35b60405162461bcd60e51b81526020600482015260146024820152734d61726b65743a20696e76616c6964207261746560601b6044820152606490fd5b509050611d276013546012549061217a565b4211611d3857604090601154611cc7565b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881c985d19481d1bdbc81bdb1960621b6044820152606490fd5b9150506040813d604011611dac575b81611d906040938361204f565b810103126110af576020611da382612418565b91015138611c8e565b3d9150611d83565b6040513d84823e3d90fd5b9050346110af5760403660031901126110af576040602092611ddf611e07565b611de7611e22565b6001600160a01b0391821683526003865283832091168252845220548152f35b600435906001600160a01b0382168203611e1d57565b600080fd5b602435906001600160a01b0382168203611e1d57565b60005b838110611e4b5750506000910152565b8181015183820152602001611e3b565b90602091611e7481518092818552858086019101611e38565b601f01601f1916010190565b602435908115158203611e1d57565b60e0906003190112611e1d576001600160a01b03906004358281168103611e1d57916024359081168103611e1d5790604435906064359060843560ff81168103611e1d579060a4359060c43590565b6009811015611ef7576000526007602052604060002090565b634e487b7160e01b600052602160045260246000fd5b90600182811c92168015611f3d575b6020831014611f2757565b634e487b7160e01b600052602260045260246000fd5b91607f1691611f1c565b60105460009291611f5782611f0d565b908181526001928381169081600014611fb15750600114611f7757505050565b9092935060106000526020928360002092846000945b838610611f9d5750505050010190565b805485870183015294019385908201611f8d565b91935050602093945060ff191683830152151560051b010190565b606081019081106001600160401b03821117611fe757604052565b634e487b7160e01b600052604160045260246000fd5b604081019081106001600160401b03821117611fe757604052565b61010081019081106001600160401b03821117611fe757604052565b608081019081106001600160401b03821117611fe757604052565b90601f801991011681019081106001600160401b03821117611fe757604052565b6001600160401b038111611fe757601f01601f191660200190565b1561209257565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b156120dd57565b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881b9bdd081d985b1a59607a1b6044820152606490fd5b8181029291811591840414171561212957565b634e487b7160e01b600052601160045260246000fd5b8115612149570490565b634e487b7160e01b600052601260045260246000fd5b604d811161212957600a0a90565b9190820391821161212957565b9190820180921161212957565b8181039291600013801582851316918412161761212957565b6014549192916121e9916121da916121d0916121c6906001600160801b03831690612116565b9060801c9061213f565b93601f5490612116565b6121e38361215f565b9061213f565b8083106122b1576121fd612239918461216d565b9161223461222e612225601e5461221f6122168661215f565b6020549061217a565b90612116565b6121e38461215f565b9161215f565b612187565b6509184e72a0009081810291818305149015171561212957670de0b6b3a76400009182810292818405149015171561212957801561214957600160ff1b9180831460001983141661212957059060008212156122aa57811461212957600003905b8082116122a5575090565b905090565b509061229a565b505050600090565b9160018060a01b03809316916000938385526020601781526040918287205490811561240b57878385516122ec81611ffd565b82815201526122f9612add565b505050505091905061230c861515612425565b6009541683600c54898b52601882526064878c2054918851948593849263442c159960e01b8452600484015260248301528d60448301525afa9081156124015789916123ce575b50916123ae6123c297989994926123898861238461237b601898620186a06021540490612116565b601e5490612116565b61213f565b815190936001600160801b039186916123a491841690612116565b920151169061213f565b8181106123c657035b978352522054612471565b9091565b5050826123b7565b90508381813d83116123fa575b6123e5818361204f565b810103126123f657516123ae612353565b8880fd5b503d6123db565b85513d8b823e3d90fd5b5086955085949350505050565b51908115158203611e1d57565b1561242c57565b60405162461bcd60e51b815260206004820152601e60248201527f4d61726b65743a2065786368616e676552617465206e6f742076616c696400006044820152606490fd5b61247c821515612425565b602060018060a01b0360095416916064600c54604051948593849263442c159960e01b845260048401526024830152600060448301525afa90811561251c576000916124e9575b50906123846124d59260215490612116565b620186a06124e5601e5483612116565b0491565b906020823d8211612514575b816125026020938361204f565b810103126103085750516123846124c3565b3d91506124f5565b6040513d6000823e3d90fd5b6001600160a01b0316600081815260186020526040812054909261254b91612471565b91835260176020526040832054801561265457811561265457818110612654578281101561264a57601454612594918391610cfd916121c6906001600160801b03831690612116565b90620186a09283830292808404851490151715612636576125b992916121e39161216d565b91601b5491601c54936125cc8585612187565b80820291848212600160ff1b821416612636578183051490151715612622570581848201948512911290801582169115161761260e57508082126122a5575090565b634e487b7160e01b81526011600452602490fd5b634e487b7160e01b83526011600452602483fd5b634e487b7160e01b85526011600452602485fd5b50505050601b5490565b50505090565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316148061275b575b156126b5577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f000000000000000000000000000000000000000000000000000000000000000082527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a0815260c081018181106001600160401b03821117611fe75760405251902090565b507f0000000000000000000000000000000000000000000000000000000000000000461461268c565b1561278b57565b60405162461bcd60e51b815260206004820152601660248201527545524332303a2062616c616e636520746f6f206c6f7760501b6044820152606490fd5b156127d057565b60405162461bcd60e51b815260206004820152601660248201527545524332303a206e6f207a65726f206164647265737360501b6044820152606490fd5b51906001600160a01b0382168203611e1d57565b519060ff82168203611e1d57565b6005811015611ef757806128415750565b600181036128895760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b6044820152606490fd5b600281036128d65760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606490fd5b6003146128df57565b60405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608490fd5b9291906fa2a8918ca85bafe22016d0b997e4df60600160ff1b0383116129a85791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa1561299b5781516001600160a01b03811615612995579190565b50600190565b50604051903d90823e3d90fd5b50505050600090600390565b7fe50de2333c10a9502fcb1d8ae13a51bbf423153dfc63c2b8997665b32154afc360018060a01b038092169160009083825260036020526040822094169384825260205284604082205580a4565b909160207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259160018060a01b03809416938460005260028352604060002095169485600052825280604060002055604051908152a3565b60405190612a6682611fcc565b60006040838281528260208201520152565b60405190612a8582611ffd565b6014546001600160801b038116835260801c6020830152565b60405190612aab82611ffd565b6024546001600160801b038116835260801c6020830152565b6001600160801b03918216908216019190821161212957565b612ae5612a59565b5060006020604051612af681611ffd565b828152015260006020604051612b0b81611ffd565b8281520152604051612b1c81611fcc565b6023546001600160401b03811682526001600160401b038160401c16602083015260801c60408201528091612b4f612a78565b91612b58612a9e565b600954600e54825160405163442c159960e01b8152600481018390526001600160801b03909116602482015260006044820181905293959194919391926001600160a01b031690602081606481855afa801561251c57600090612f73575b8851612bcc92506001600160801b03169061217a565b80612f3e575060005b80612bed6001600160401b036020870151164261216d565b948515612f14575050426001600160401b031660208a8101919091528801516001600160801b031615612eca57506020670de0b6b3a7640000612c4f85612c4a8c6001600160401b038d60018060801b0390511691511690612116565b612116565b895191900496906001600160801b0390612c6e90828a16908316612ac4565b168952875160405163442c159960e01b815260048101929092526001600160801b031660248201526000604482015291829060649082905afa801561251c57600090612e96575b8751612ccb92506001600160801b03169061217a565b92612cf984612384620186a0612ce3601a548a612116565b60208c01516001600160801b0316919004612116565b6040890180519195916001600160801b038088169291612d1c9084908316612ac4565b16905260208801805190916001600160801b0391612d3c91908316612ac4565b16905280612e61575060005b60295490938482811015612ddc57612d60908361216d565b90670de0b6b3a7640000820291808304670de0b6b3a7640000149015171561212957612384612db4612dae612da06001600160401b0396612dbe9661213f565b93612c4a602d549580612116565b8361217a565b91848d5116612116565b168089526001600160401b03602c5416809110612dd85750565b8852565b909150602a54808211612dee57505050565b612df79161216d565b670de0b6b3a7640000810290808204670de0b6b3a76400001490151715612129576001600160401b0391612384612e3a612dae612da0612e4395602b549061213f565b848d5116612116565b81602c5460401c16808211612e59575b50168852565b905038612e53565b87516001600160801b0316670de0b6b3a764000081810292918084049091149015171561212957612e919161213f565b612d48565b506020813d602011612ec2575b81612eb06020938361204f565b81010312611e1d57612ccb9051612cb5565b3d9150612ea3565b9697939450509350506001600160401b038151166001600160401b03602e5416809103612f08575b509392612efd612a9e565b926000926000929190565b81526001925038612ef2565b975098505050505092505091612f28612a78565b91612f31612a9e565b9160009160009190600090565b87516001600160801b0316670de0b6b3a764000081810292918084049091149015171561212957612f6e9161213f565b612bd5565b506020813d602011612f9f575b81612f8d6020938361204f565b81010312611e1d57612bcc9051612bb6565b3d9150612f80565b3d15612fd2573d90612fb882612070565b91612fc6604051938461204f565b82523d6000602084013e565b606090565b60405190612fe482611ffd565b60038252623f3f3f60e81b6020830152565b908151811015613007570160200190565b634e487b7160e01b600052603260045260246000fd5b60ff1660ff81146121295760010190565b8051604081106130a957508051810190602081818401930312611e1d576020810151906001600160401b038211611e1d570181603f82011215611e1d57602081015161307981612070565b92613087604051948561204f565b81845260408284010111611e1d576130a6916040602085019101611e38565b90565b602092908303613197576000805b60ff81168581109081613178575b50156130d9576130d49061301d565b6130b7565b9260ff809416926130e984612070565b936130f7604051958661204f565b808552613106601f1991612070565b013687860137825b8581168781108061315b575b156131505761314b91906131456001600160f81b031961313a8388612ff6565b5116871a9188612ff6565b5361301d565b61310e565b505094505050905090565b506001600160f81b031961316f8286612ff6565b5116151561311a565b6001600160f81b0319915061318d9086612ff6565b51161515386130c5565b9150506130a6612fd756feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa26469706673582212209cb35f7a6fa2711bdb911fbb1801dbf316a9429fa6646759b4239276fd4f8da564736f6c63430008120033", + "deployedBytecode": "0x608080604052600436101561001357600080fd5b600090813560e01c908162a02a2014611dbf5750806302ce728f14611c3757806306fdde0314611b80578063078dfbe714611a7d578063095ea7b314611a565780630c4e84f01461193e57806318160ddd1461191d5780631c9e379b146118e45780631da8bf101461182457806323b872dd14611687578063313ce567146115f5578063331960ff146115d757806334d441d0146115b95780633644e5151461159e57806337b6b7b91461158057806338d52e0f146115575780633ba0b9a9146115395780633f741adb1461151457806340626d8b146114f657806344de240a146114d8578063473e3ce7146114ba57806348e4163e146114815780634d7f2a34146114635780634e71e0c8146113b5578063529898f21461139857806352f353eb14611371578063551402321461134a57806355c2ab941461132057806357935462146113025780635dfe04e8146112a35780636c3d8b8f1461127a57806370a0823114611241578063727785471461120957806374645ff3146111de5780637dc0d1d0146111b55780637ecebe001461117c5780637fa0b84e1461114a578063821226e81461112c5780638285ef40146110fa5780638c5d0ed3146110dc5780638da5cb5b146110b3578063910dd7c814610e9a578063959916dc14610e7c57806395d89b4114610dc257806399a9702814610d925780639c5d719214610d745780639e15e89f14610d39578063a9059cbb14610c56578063b0e21e8a14610c38578063b27c0e7414610bfd578063bb4cfe3b14610bdf578063ce8849ed14610bb6578063d3fb2a381461071e578063d505accf14610579578063d8dfeb4514610550578063dd62ed3e14610505578063de406577146104dc578063e0996cb6146104be578063e30c397814610495578063ea64dd5614610477578063eec0f42e14610459578063f42760b71461043b578063f8ba4cff14610341578063f9557ccb1461030b5763ffe04c66146102eb57600080fd5b346103085780600319360112610308576020602954604051908152f35b80fd5b5034610308578060031936011261030857602454604080516001600160801b038316815260809290921c602083015290f35b0390f35b50346103085780600319360112610308576020604061035e612add565b9397959390929015610402575050506001600160401b03602e541686807f33af5ce86e8438eff54589f85332916444457dfa8685493fbd579b809097026b868851838152a45b6001600160401b038151166001600160401b03851b84830151861b169160018060801b0319958691015160801b1691171760235560018060801b039083838383511692015160801b161760145583511692015160801b161760245580f35b7f33af5ce86e8438eff54589f85332916444457dfa8685493fbd579b809097026b866001600160401b03865116948951908152a46103a4565b50346103085780600319360112610308576020602a54604051908152f35b50346103085780600319360112610308576020600c54604051908152f35b50346103085780600319360112610308576020601f54604051908152f35b50346103085780600319360112610308576006546040516001600160a01b039091168152602090f35b50346103085780600319360112610308576020601d54604051908152f35b50346103085780600319360112610308576009546040516001600160a01b039091168152602090f35b5034610308576040366003190112610308576040602091610524611e07565b61052c611e22565b6001600160a01b039182168352600285528383209116825283522054604051908152f35b5034610308578060031936011261030857600b546040516001600160a01b039091168152602090f35b50346103085761058836611e8f565b908395949542116106d9576001600160a01b03878116808a52600460205260408a20805491969295929060001983146106c5578261066e9694928d92600161066698960190556040519160208301937f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e266855260408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e0815261062a81612018565b51902061063561265a565b9060405190602082019261190160f01b8452602283015260428201526042815261065e81612034565b51902061292f565b919091612830565b16036106805761067d92612a02565b80f35b60405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152606490fd5b634e487b7160e01b8c52601160045260248cfd5b60405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b503461030857610160366003190112610308576001600160a01b0360043581811690819003610bb2576024916001600160401b038335818111610bae5736602382011215610bae578060040135918211610bae5736858383010111610bae5760443593838516809503610baa5761079a8460055416331461208b565b80610b6c575b5084826109ee575b505050816109ae575b505060643580610996575b506084358061097e575b5060a43580610967575b5060c43580610943575b5060e4358061091f575b5061010435806108ee575b50610124358061087b575b50610144359081610809578280f35b601e54821061081c5750601f5538808280f35b60849060326040519162461bcd60e51b8352602060048401528201527f4d61726b65743a206c69717569646174696f6e436f6c6c61746572616c697a616044820152711d1a5bdb94985d19481d1bdbc81cdb585b1b60721b6064820152fd5b61088a620186a08211156120d6565b601f54811161089c57601e55386107fa565b60405162461bcd60e51b8152602060048201526025818401527f4d61726b65743a20636f6c6c61746572616c697a6174696f6e5261746520746f6044820152646f2062696760d81b6064820152608490fd5b806016547fae6e0ab3b95f0a53ff9660a390ccedcbbf1f2355dce974a9841af106fddcfaba8580a3601655386107ef565b61092d620186a082106120d6565b61093a601b5482116120d6565b601c55386107e4565b610951620186a082106120d6565b61095e601c5482106120d6565b601b55386107da565b610975620186a082106120d6565b601d55386107d0565b61098d620186a08211156120d6565b601a55386107c6565b6109a5620186a08211156120d6565b601955386107bc565b816008549182167f5a62d22209e370e38eea92cfddcd228e656e6ec139243392a760a7769f5877fd8680a36001600160a01b0319161760085538806107b1565b82916109fb601054611f0d565b601f8111610afb575b508790601f8411600114610a69578893610a5c575b5050508160011b916000199060031b1c1916176010555b7fa6f004921c944d4b8bf6e38462b00f36a58d62495d56b51f571ab78f732c98158480a13880846107a8565b0101359050843880610a19565b60108952601f19841694507f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae67292509087908960205b878210610adc5750508460019610610ac0575b50505050811b01601055610a30565b60001960f88660031b161c199201013516905538808681610ab1565b8285019093013585556001949094019389929182019190810190610a9e565b6010895290925090507f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae672601f840160051c810160208510610b65575b91849391601f8994920160051c01905b818110610b545750610a04565b898155859450889350600101610b47565b5080610b37565b600f80546001600160a01b0319169190911790557f0b2d6eb667d0522c3eb86e4288afecae6c11591ffd1345d4d12407e0598bca9b8680a1386107a0565b8680fd5b8580fd5b8280fd5b50346103085780600319360112610308576008546040516001600160a01b039091168152602090f35b50346103085780600319360112610308576020601e54604051908152f35b50346103085780600319360112610308576060602354604051906001600160401b0380821683528160401c16602083015260801c6040820152f35b50346103085780600319360112610308576020601a54604051908152f35b503461030857604036600319011261030857610c70611e07565b60243580928115801590610d27575b610cb7575b50506040519182526001600160a01b03169033906000805160206131a383398151915290602090a3602060405160018152f35b33815260016020526040812054610cd083821015612784565b6001600160a01b0384169033829003610ceb575b5050610c84565b604093610d0291610cfd8415156127c9565b61216d565b338352600160205283832055815220610d1c83825461217a565b905581388080610ce4565b50336001600160a01b03841614610c7f565b5034610308576040366003190112610308576060610d61610d58611e07565b602435906122b9565b9060405192835260208301526040820152f35b50346103085780600319360112610308576020602b54604051908152f35b5034610308576040366003190112610308576020610dba610db1611e07565b60243590612528565b604051908152f35b5034610308578060031936011261030857808060018060a01b03600b541660405160208101906395d89b4160e01b825260048152610dff81611ffd565b51915afa610e0b612fa7565b915015610e6b57610e1e61033d9161302e565b610e576023604051809362746d2d60e81b6020830152610e478151809260208686019101611e38565b810103600381018452018261204f565b604051918291602083526020830190611e5b565b5061033d610e77612fd7565b610e1e565b50346103085780600319360112610308576020602f54604051908152f35b5034610308576040366003190112610308576004356001600160401b0381116110af57366023820112156110af57806004013582610ed782612070565b92610ee5604051948561204f565b82845260208401923660248284010111610bb2578060246020930185378401015260243561ffff811681036110ab576101009182848051810103126110a757610f2d90612418565b610f396040850161280e565b91610f466060860161280e565b9460808101519460a082015192610f5f60c08401612822565b9160e0840151930151938042116106d9578515611080577f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e266915b6001600160a01b0388168b52600460205260408b2080549190600019831461106c579161ffff6110299896949261066698969460018401905560405194602086015216604084015260018060a01b038a16606084015260018060a01b038c1660808401528a60a084015260c083015260e082015260e0815261101a81612018565b6020815191012061063561265a565b6001600160a01b0383811691160361068057156110565761067d926001600160a01b039081169116612a02565b61067d926001600160a01b0390811691166129b4565b634e487b7160e01b8d52601160045260248dfd5b7f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d691610f99565b8480fd5b8380fd5b5080fd5b50346103085780600319360112610308576005546040516001600160a01b039091168152602090f35b50346103085780600319360112610308576020601b54604051908152f35b5034610308578060031936011261030857601454604080516001600160801b038316815260809290921c602083015290f35b50346103085780600319360112610308576020602d54604051908152f35b503461030857604036600319011261030857611171611167611e07565b60243590336129b4565b602060405160018152f35b5034610308576020366003190112610308576020906040906001600160a01b036111a4611e07565b168152600483522054604051908152f35b5034610308578060031936011261030857600f546040516001600160a01b039091168152602090f35b503461030857806003193601126103085761033d604051610e578161120281611f47565b038261204f565b50346103085760203660031901126103085760043590600982101561030857602060ff61123584611ede565b54166040519015158152f35b5034610308576020366003190112610308576020906040906001600160a01b03611269611e07565b168152600183522054604051908152f35b5034610308578060031936011261030857600a546040516001600160a01b039091168152602090f35b50346103085780600319360112610308576112bc612a59565b5060806112c7612add565b509350505050604051916001600160401b0380825116845260208201511660208401526040600180861b039101511660408301526060820152f35b50346103085780600319360112610308576020601c54604051908152f35b503461030857806003193601126103085760206001600160401b03602c5460401c16604051908152f35b503461030857806003193601126103085760206001600160401b03602c5416604051908152f35b503461030857806003193601126103085760206001600160401b03602e5416604051908152f35b503461030857806003193601126103085760208054604051908152f35b50346103085780600319360112610308576006546001600160a01b03908181163381900361141f57806005549384167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08680a36001600160a01b0319928316176005551660065580f35b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b50346103085780600319360112610308576020602854604051908152f35b5034610308576020366003190112610308576020906040906001600160a01b036114a9611e07565b168152601783522054604051908152f35b50346103085780600319360112610308576020601554604051908152f35b50346103085780600319360112610308576020600e54604051908152f35b50346103085780600319360112610308576020601654604051908152f35b5034610308576060366003190112610308576020610dba6044356024356004356121a0565b50346103085780600319360112610308576020601154604051908152f35b5034610308578060031936011261030857600d546040516001600160a01b039091168152602090f35b50346103085780600319360112610308576020601254604051908152f35b50346103085780600319360112610308576020610dba61265a565b50346103085780600319360112610308576020601954604051908152f35b50346103085780600319360112610308576020601354604051908152f35b5034610308578060031936011261030857808060018060a01b03600d5416604051602081019063313ce56760e01b82526004815261163281611ffd565b51915afa9061163f612fa7565b918061167c575b156116715760208280518101031261030857506116666020809201612822565b60ff60405191168152f35b505060206012611666565b506020825114611646565b5034610308576060366003190112610308576116a1611e07565b906116aa611e22565b60443591826116e8575b506040519182526001600160a01b039081169216906000805160206131a383398151915290602090a3602060405160018152f35b6001600160a01b0384811680835260016020908152604084205492869061171182861015612784565b861693848403611726575b50505050506116b4565b838652600283526040808720338852845286205460018101611790575b509260016020969361176e8794604097610cfd6000805160206131a38339815191529c9a15156127c9565b928552528383205581522061178485825461217a565b9055913880858161171c565b909181106117e4579260016020969361176e8a6000805160206131a38339815191529a98956117c18260409a61216d565b86895260028552898920338a528552898920559497509497995050939650611743565b60405162461bcd60e51b815260048101849052601860248201527745524332303a20616c6c6f77616e636520746f6f206c6f7760401b6044820152606490fd5b50346103085761183336611e8f565b908395949542116106d9576001600160a01b03878116808a52600460205260408a20805491969295929060001983146106c557826118d59694928d92600161066698960190556040519160208301937f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d6855260408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e0815261062a81612018565b16036106805761067d926129b4565b5034610308576020366003190112610308576020906040906001600160a01b0361190c611e07565b168152601883522054604051908152f35b5034610308578060031936011261030857602060245460801c604051908152f35b50346103085760403660031901126103085760043560098110156110af57611964611e80565b6008549091906001600160a01b03163303611a1a5760ff61198482611ede565b541615159115159182146119e057808260ff6119a26119d094611ede565b54161515827feeec81de25875ce1725479bb76f720a8defdb43dea041919ae37bb4aae9847c08780a4611ede565b9060ff8019835416911617905580f35b60405162461bcd60e51b81526020600482015260126024820152714d61726b65743a2073616d6520737461746560701b6044820152606490fd5b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881d5b985d5d1a1bdc9a5e995960621b6044820152606490fd5b503461030857604036600319011261030857611171611a73611e07565b6024359033612a02565b503461030857606036600319011261030857611a97611e07565b611a9f611e80565b6044359081151582036110ab5760018060a01b03928391611ac58360055416331461208b565b15611b69571690811590811591611b61575b5015611b2457806005549283167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08580a36001600160a01b03199182161760055560068054909116905580f35b60405162461bcd60e51b81526020600482015260156024820152744f776e61626c653a207a65726f206164647265737360581b6044820152606490fd5b905038611ad7565b9150501660018060a01b0319600654161760065580f35b5034610308578060031936011261030857808060018060a01b03600b541660405160208101906306fdde0360e01b825260048152611bbd81611ffd565b51915afa611bc9612fa7565b915015611c2657611bdc61033d9161302e565b610e576034604051809373546170696f63612053696e67756c61726974792d60601b6020830152611c168151809260208686019101611e38565b810103601481018452018261204f565b5061033d611c32612fd7565b611bdc565b5034610308578060031936011261030857600f546040805163d6d7d52560e01b8152602060048201529182906001600160a01b0316818581611c7b60248201611f47565b03925af18015611db45782918391611d74575b508115611d15578015611cd957807f9f9192b5edb17356c524e08d9e025c8e2f6307e6ea52fb7968faa3081f51c3c86040948260115580a25b42601355825191151582526020820152f35b60405162461bcd60e51b81526020600482015260146024820152734d61726b65743a20696e76616c6964207261746560601b6044820152606490fd5b509050611d276013546012549061217a565b4211611d3857604090601154611cc7565b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881c985d19481d1bdbc81bdb1960621b6044820152606490fd5b9150506040813d604011611dac575b81611d906040938361204f565b810103126110af576020611da382612418565b91015138611c8e565b3d9150611d83565b6040513d84823e3d90fd5b9050346110af5760403660031901126110af576040602092611ddf611e07565b611de7611e22565b6001600160a01b0391821683526003865283832091168252845220548152f35b600435906001600160a01b0382168203611e1d57565b600080fd5b602435906001600160a01b0382168203611e1d57565b60005b838110611e4b5750506000910152565b8181015183820152602001611e3b565b90602091611e7481518092818552858086019101611e38565b601f01601f1916010190565b602435908115158203611e1d57565b60e0906003190112611e1d576001600160a01b03906004358281168103611e1d57916024359081168103611e1d5790604435906064359060843560ff81168103611e1d579060a4359060c43590565b6009811015611ef7576000526007602052604060002090565b634e487b7160e01b600052602160045260246000fd5b90600182811c92168015611f3d575b6020831014611f2757565b634e487b7160e01b600052602260045260246000fd5b91607f1691611f1c565b60105460009291611f5782611f0d565b908181526001928381169081600014611fb15750600114611f7757505050565b9092935060106000526020928360002092846000945b838610611f9d5750505050010190565b805485870183015294019385908201611f8d565b91935050602093945060ff191683830152151560051b010190565b606081019081106001600160401b03821117611fe757604052565b634e487b7160e01b600052604160045260246000fd5b604081019081106001600160401b03821117611fe757604052565b61010081019081106001600160401b03821117611fe757604052565b608081019081106001600160401b03821117611fe757604052565b90601f801991011681019081106001600160401b03821117611fe757604052565b6001600160401b038111611fe757601f01601f191660200190565b1561209257565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b156120dd57565b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881b9bdd081d985b1a59607a1b6044820152606490fd5b8181029291811591840414171561212957565b634e487b7160e01b600052601160045260246000fd5b8115612149570490565b634e487b7160e01b600052601260045260246000fd5b604d811161212957600a0a90565b9190820391821161212957565b9190820180921161212957565b8181039291600013801582851316918412161761212957565b6014549192916121e9916121da916121d0916121c6906001600160801b03831690612116565b9060801c9061213f565b93601f5490612116565b6121e38361215f565b9061213f565b8083106122b1576121fd612239918461216d565b9161223461222e612225601e5461221f6122168661215f565b6020549061217a565b90612116565b6121e38461215f565b9161215f565b612187565b6509184e72a0009081810291818305149015171561212957670de0b6b3a76400009182810292818405149015171561212957801561214957600160ff1b9180831460001983141661212957059060008212156122aa57811461212957600003905b8082116122a5575090565b905090565b509061229a565b505050600090565b9160018060a01b03809316916000938385526020601781526040918287205490811561240b57878385516122ec81611ffd565b82815201526122f9612add565b505050505091905061230c861515612425565b6009541683600c54898b52601882526064878c2054918851948593849263442c159960e01b8452600484015260248301528d60448301525afa9081156124015789916123ce575b50916123ae6123c297989994926123898861238461237b601898620186a06021540490612116565b601e5490612116565b61213f565b815190936001600160801b039186916123a491841690612116565b920151169061213f565b8181106123c657035b978352522054612471565b9091565b5050826123b7565b90508381813d83116123fa575b6123e5818361204f565b810103126123f657516123ae612353565b8880fd5b503d6123db565b85513d8b823e3d90fd5b5086955085949350505050565b51908115158203611e1d57565b1561242c57565b60405162461bcd60e51b815260206004820152601e60248201527f4d61726b65743a2065786368616e676552617465206e6f742076616c696400006044820152606490fd5b61247c821515612425565b602060018060a01b0360095416916064600c54604051948593849263442c159960e01b845260048401526024830152600060448301525afa90811561251c576000916124e9575b50906123846124d59260215490612116565b620186a06124e5601e5483612116565b0491565b906020823d8211612514575b816125026020938361204f565b810103126103085750516123846124c3565b3d91506124f5565b6040513d6000823e3d90fd5b6001600160a01b0316600081815260186020526040812054909261254b91612471565b91835260176020526040832054801561265457811561265457818110612654578281101561264a57601454612594918391610cfd916121c6906001600160801b03831690612116565b90620186a09283830292808404851490151715612636576125b992916121e39161216d565b91601b5491601c54936125cc8585612187565b80820291848212600160ff1b821416612636578183051490151715612622570581848201948512911290801582169115161761260e57508082126122a5575090565b634e487b7160e01b81526011600452602490fd5b634e487b7160e01b83526011600452602483fd5b634e487b7160e01b85526011600452602485fd5b50505050601b5490565b50505090565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316148061275b575b156126b5577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f000000000000000000000000000000000000000000000000000000000000000082527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a0815260c081018181106001600160401b03821117611fe75760405251902090565b507f0000000000000000000000000000000000000000000000000000000000000000461461268c565b1561278b57565b60405162461bcd60e51b815260206004820152601660248201527545524332303a2062616c616e636520746f6f206c6f7760501b6044820152606490fd5b156127d057565b60405162461bcd60e51b815260206004820152601660248201527545524332303a206e6f207a65726f206164647265737360501b6044820152606490fd5b51906001600160a01b0382168203611e1d57565b519060ff82168203611e1d57565b6005811015611ef757806128415750565b600181036128895760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b6044820152606490fd5b600281036128d65760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606490fd5b6003146128df57565b60405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608490fd5b9291906fa2a8918ca85bafe22016d0b997e4df60600160ff1b0383116129a85791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa1561299b5781516001600160a01b03811615612995579190565b50600190565b50604051903d90823e3d90fd5b50505050600090600390565b7fe50de2333c10a9502fcb1d8ae13a51bbf423153dfc63c2b8997665b32154afc360018060a01b038092169160009083825260036020526040822094169384825260205284604082205580a4565b909160207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259160018060a01b03809416938460005260028352604060002095169485600052825280604060002055604051908152a3565b60405190612a6682611fcc565b60006040838281528260208201520152565b60405190612a8582611ffd565b6014546001600160801b038116835260801c6020830152565b60405190612aab82611ffd565b6024546001600160801b038116835260801c6020830152565b6001600160801b03918216908216019190821161212957565b612ae5612a59565b5060006020604051612af681611ffd565b828152015260006020604051612b0b81611ffd565b8281520152604051612b1c81611fcc565b6023546001600160401b03811682526001600160401b038160401c16602083015260801c60408201528091612b4f612a78565b91612b58612a9e565b600954600e54825160405163442c159960e01b8152600481018390526001600160801b03909116602482015260006044820181905293959194919391926001600160a01b031690602081606481855afa801561251c57600090612f73575b8851612bcc92506001600160801b03169061217a565b80612f3e575060005b80612bed6001600160401b036020870151164261216d565b948515612f14575050426001600160401b031660208a8101919091528801516001600160801b031615612eca57506020670de0b6b3a7640000612c4f85612c4a8c6001600160401b038d60018060801b0390511691511690612116565b612116565b895191900496906001600160801b0390612c6e90828a16908316612ac4565b168952875160405163442c159960e01b815260048101929092526001600160801b031660248201526000604482015291829060649082905afa801561251c57600090612e96575b8751612ccb92506001600160801b03169061217a565b92612cf984612384620186a0612ce3601a548a612116565b60208c01516001600160801b0316919004612116565b6040890180519195916001600160801b038088169291612d1c9084908316612ac4565b16905260208801805190916001600160801b0391612d3c91908316612ac4565b16905280612e61575060005b60295490938482811015612ddc57612d60908361216d565b90670de0b6b3a7640000820291808304670de0b6b3a7640000149015171561212957612384612db4612dae612da06001600160401b0396612dbe9661213f565b93612c4a602d549580612116565b8361217a565b91848d5116612116565b168089526001600160401b03602c5416809110612dd85750565b8852565b909150602a54808211612dee57505050565b612df79161216d565b670de0b6b3a7640000810290808204670de0b6b3a76400001490151715612129576001600160401b0391612384612e3a612dae612da0612e4395602b549061213f565b848d5116612116565b81602c5460401c16808211612e59575b50168852565b905038612e53565b87516001600160801b0316670de0b6b3a764000081810292918084049091149015171561212957612e919161213f565b612d48565b506020813d602011612ec2575b81612eb06020938361204f565b81010312611e1d57612ccb9051612cb5565b3d9150612ea3565b9697939450509350506001600160401b038151166001600160401b03602e5416809103612f08575b509392612efd612a9e565b926000926000929190565b81526001925038612ef2565b975098505050505092505091612f28612a78565b91612f31612a9e565b9160009160009190600090565b87516001600160801b0316670de0b6b3a764000081810292918084049091149015171561212957612f6e9161213f565b612bd5565b506020813d602011612f9f575b81612f8d6020938361204f565b81010312611e1d57612bcc9051612bb6565b3d9150612f80565b3d15612fd2573d90612fb882612070565b91612fc6604051938461204f565b82523d6000602084013e565b606090565b60405190612fe482611ffd565b60038252623f3f3f60e81b6020830152565b908151811015613007570160200190565b634e487b7160e01b600052603260045260246000fd5b60ff1660ff81146121295760010190565b8051604081106130a957508051810190602081818401930312611e1d576020810151906001600160401b038211611e1d570181603f82011215611e1d57602081015161307981612070565b92613087604051948561204f565b81845260408284010111611e1d576130a6916040602085019101611e38565b90565b602092908303613197576000805b60ff81168581109081613178575b50156130d9576130d49061301d565b6130b7565b9260ff809416926130e984612070565b936130f7604051958661204f565b808552613106601f1991612070565b013687860137825b8581168781108061315b575b156131505761314b91906131456001600160f81b031961313a8388612ff6565b5116871a9188612ff6565b5361301d565b61310e565b505094505050905090565b506001600160f81b031961316f8286612ff6565b5116151561311a565b6001600160f81b0319915061318d9086612ff6565b51161515386130c5565b9150506130a6612fd756feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa26469706673582212209cb35f7a6fa2711bdb911fbb1801dbf316a9429fa6646759b4239276fd4f8da564736f6c63430008120033", "linkReferences": {}, "deployedLinkReferences": {} } diff --git a/src/artifacts/tapioca-bar/SGLLeverage.json b/src/artifacts/tapioca-bar/SGLLeverage.json index 1d62ba03..11ea9634 100644 --- a/src/artifacts/tapioca-bar/SGLLeverage.json +++ b/src/artifacts/tapioca-bar/SGLLeverage.json @@ -1843,11 +1843,6 @@ }, { "inputs": [ - { - "internalType": "uint256", - "name": "_borrowOpeningFee", - "type": "uint256" - }, { "internalType": "contract IOracle", "name": "_oracle", @@ -2174,8 +2169,8 @@ "type": "function" } ], - "bytecode": "0x6101408060405234620001e5576200001781620001ea565b601381526001602082017f546170696f63612053696e67756c617269747900000000000000000000000000815260206040516200005481620001ea565b8381520192603160f81b845251902091208160e052610100918183524660a0526040519160208301907f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f92838352604085015260608401524660808401523060a084015260a0835260c083019280841060018060401b03851117620001cf5760408490525190206080523060c052610120908152600580546001600160a01b0319163390811790915560007f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a362013880601b5562015f90601c55612710601d556032602055612ee06021557f0bd4060688a1800ae986e4840aebc924bb40b5bf44de4583df2257220b54b77c6027557f7d1dc38e60930664f8cbf495da6556ca091d2f92d6550877750c049864b182306028556161a86029556154339283620002078439608051836139fe015260a05183613ac9015260c051836139c8015260e05183613a4d01525182613a7301525181613a2a0152f35b634e487b7160e01b600052604160045260246000fd5b600080fd5b604081019081106001600160401b03821117620001cf5760405256fe608080604052600436101561001357600080fd5b600090813560e01c908162a02a2014612f315750806302ce728f14612f0857806306fdde0314612e51578063078dfbe714612d52578063095ea7b314612d2b5780630996efb7146128a85780630c4e84f01461279057806318160ddd1461276f5780631c9e379b146127365780631da8bf10146126815780631ee9c8f21461221757806323b872dd146120745780632a9399d914611c60578063313ce56714611c2c578063331960ff14611c0e57806334d441d014611bf05780633644e51514611bd557806337b6b7b914611bb757806338d52e0f14611b8e5780633ba0b9a914611b705780633f741adb14611b4b57806340626d8b14611b2d57806344de240a14611b0f578063473e3ce714611af157806348e4163e14611ab85780634d7f2a3414611a9a5780634e71e0c8146119ec578063529898f2146119ce57806352f353eb146119a7578063551402321461198057806355c2ab9414611956578063579354621461193857806358db9afe146114eb5780635dfe04e81461148c5780636c3d8b8f1461146357806370a082311461142a57806372778547146113f257806374645ff3146113245780637dc0d1d0146112fb5780637ecebe00146112c25780637fa0b84e14611290578063821226e8146112725780638285ef40146112405780638c5d0ed3146112225780638da5cb5b146111f9578063910dd7c814610f80578063959916dc14610f6357806395d89b4114610ea957806399a9702814610e795780639c5d719214610e5b5780639e15e89f14610e20578063a9059cbb14610d3d578063b0e21e8a14610d1f578063b27c0e7414610ce4578063bb4cfe3b14610cc6578063ce8849ed14610c9d578063d49dffa714610651578063d505accf146104cb578063d8dfeb45146104a2578063dd62ed3e14610453578063de4065771461042a578063e0996cb61461040c578063e30c3978146103e3578063ea64dd56146103c5578063eec0f42e146103a7578063f42760b714610389578063f8ba4cff1461036d578063f9557ccb146103375763ffe04c661461031757600080fd5b346103345780600319360112610334576020602a54604051908152f35b80fd5b5034610334578060031936011261033457602554604080516001600160801b038316815260809290921c602083015290f35b0390f35b503461033457806003193601126103345761038661432f565b80f35b50346103345780600319360112610334576020602b54604051908152f35b50346103345780600319360112610334576020600c54604051908152f35b50346103345780600319360112610334576020601f54604051908152f35b50346103345780600319360112610334576006546040516001600160a01b039091168152602090f35b50346103345780600319360112610334576020601d54604051908152f35b50346103345780600319360112610334576009546040516001600160a01b039091168152602090f35b50346103345760403660031901126103345761046d612f79565b6040610477612f8f565b9260018060a01b03809316815260026020522091166000526020526020604060002054604051908152f35b5034610334578060031936011261033457600b546040516001600160a01b039091168152602090f35b5034610334576104da36613062565b9083959495421161060c576105b8916105b09160018060a01b0394858a169687600052600460205260406000209081549161051483613d12565b90556040519060208201927f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e2668452600060408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e0815261057481613194565b51902061057f6139c5565b9060405190602082019261190160f01b845260228301526042820152604281526105a881613179565b519020613c9a565b919091613b9b565b16036105c75761038692613d6f565b60405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152606490fd5b60405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b5061014036600319011261033457610667612f79565b606435151560643503610a5f576001600160401b038060843511610c9957606060843536036003190112610c995760a43511610a505760e060a43536036003190112610a505760803660c3190112610a5057600560005260076020527fbcdda56b5d08466ec462cbbe0adfa57cb0a15fcc8940ef68f702f21b787bc935546106f29060ff1615614452565b6106fa6134de565b505061070461432f565b6107196001600160a01b0382163014156144cf565b610727604460a4350161451a565b60c4356001600160a01b0381169003610a5f5761074a61074f9160c43590614893565b614529565b60243580610afd575b506107da6107ac6107d46107ce6107b2620186a061077a602054604435613286565b0461078a601154916044356132ea565b600d5460ff906107a2906001600160a01b0316614633565b1695869289613722565b90614799565b6001600160a01b03861687526018602052604087205490613286565b916132cf565b906132af565b336001600160a01b03831603610aa9575b6107f590826147dc565b610836604061080760443584806149c3565b905060018060a01b0360095416600e548684518096819582946311a5cc7760e31b84528a309160048601614582565b03925af1908115610a9e578391610a6e575b50600d546001600160a01b03169060643515610a6857475b823b15610a645760405191633cb7ea1d60e11b8352600483015260018060a01b0384166024830152610100604483015260a4356004013561010483015261ffff6108ae602460a435016131ec565b1661012483015261ffff6108c6604460a435016131ec565b166101448301526001600160a01b036108e360a435606401612fbb565b166101648301526109af61094161091a610907608460a4350160a4356004016145b1565b60e06101848801526101e48701916145e2565b61092d60a480350160a4356004016145b1565b86830361010319016101a4880152906145e2565b6001600160a01b0361095760a43560c401612fbb565b166101c4850152838103600319016064850152606061099f6004608435016001600160a01b0361098682612fbb565b16845260843560248101356020860152604401906145b1565b91909281604082015201916145e2565b6001600160a01b0360c4358116608485015290939060e43590811690819003610a5f5760a4840152610104356001600160a01b03811690819003610a5f5760c4840152610124356001600160a01b0381169190829003610a5f5783879593818795819560e483015203925af18015610a5457610a3c575b50610386610a3783601154906146a1565b61448f565b610a459061311a565b610a50578138610a26565b5080fd5b6040513d84823e3d90fd5b600080fd5b8480fd5b34610860565b610a90915060403d604011610a97575b610a8881836131b0565b81019061456c565b5038610848565b503d610a7e565b6040513d85823e3d90fd5b806107eb5760405162461bcd60e51b815260206004820152602160248201527f42696742616e673a20616c6c6f77616e63655368617265206e6f742076616c696044820152601960fa1b6064820152608490fd5b602060018060a01b0360095416916064600c546040519485938492638eb22cdd60e01b8452600484015260248301528760448301525afa908115610a9e578391610c67575b50610b4d81836147dc565b8015610bdb575b60018060a01b03821660005260186020526040600020610b758282546132ea565b9055610b83816015546132ea565b60155560018060a01b038216600052602660205260406000206028546000526020526040600020610bb58282546132ea565b90556001600160a01b038216806000805160206153be833981519152600080a438610758565b5060018060a01b03600954166020600c54606460405180948193638eb22cdd60e01b8352600483015260006024830152600060448301525afa908115610c5b57600091610c29575b50610b54565b906020823d602011610c53575b81610c43602093836131b0565b8101031261033457505138610c23565b3d9150610c36565b6040513d6000823e3d90fd5b90506020813d602011610c91575b81610c82602093836131b0565b81010312610a5f575138610b42565b3d9150610c75565b8280fd5b50346103345780600319360112610334576008546040516001600160a01b039091168152602090f35b50346103345780600319360112610334576020601e54604051908152f35b50346103345780600319360112610334576060602454604051906001600160401b0380821683528160401c16602083015260801c6040820152f35b50346103345780600319360112610334576020601a54604051908152f35b503461033457604036600319011261033457610d57612f79565b60243580928115801590610e0e575b610d9e575b50506040519182526001600160a01b03169033906000805160206153de83398151915290602090a3602060405160018152f35b33815260016020526040812054610db783821015613aef565b6001600160a01b0384169033829003610dd2575b5050610d6b565b604093610de991610de4841515613b34565b6132dd565b338352600160205283832055815220610e038382546132ea565b905581388080610dcb565b50336001600160a01b03841614610d66565b5034610334576040366003190112610334576060610e48610e3f612f79565b6024359061341d565b9060405192835260208301526040820152f35b50346103345780600319360112610334576020602c54604051908152f35b5034610334576040366003190112610334576020610ea1610e98612f79565b60243590613893565b604051908152f35b5034610334578060031936011261033457808060018060a01b03600b541660405160208101906395d89b4160e01b825260048152610ee68161315e565b51915afa610ef2614603565b915015610f5257610f056103699161524c565b610f3e6023604051809362746d2d60e81b6020830152610f2e8151809260208686019101612fcf565b81010360038101845201826131b0565b604051918291602083526020830190612ff2565b50610369610f5e6151f5565b610f05565b503461033457806003193601126103345760208054604051908152f35b5034610334576040366003190112610334576004356001600160401b038111610a505736602382011215610a5057806004013590610fbd826131d1565b90610fcb60405192836131b0565b82825283602091828401943660248284010111610c99578060248593018737840101526024359061ffff8216809203610a5f576101009384848051810103126111f557611017906134d1565b9061102460408501613b79565b61103060608601613b79565b9560808601519560a08101519161104960c08301613b8d565b9060e08301519201519260018060a01b03808096169a16978142116111b057926105b09289888d989794611127978e8d600014611189577f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e266945b8c600052600485526040600020928354936110bd85613d12565b905560405195860196875260408601528c6060860152608085015260a084015260c083015260e082015260e081526110f481613194565b5190206110ff6139c5565b90604051908a82019261190160f01b845260228301526042820152604281526105a881613179565b160361114557501561113c5761038692613d6f565b61038692613d21565b6064906040519062461bcd60e51b82526004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152fd5b7f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d6946110a3565b60405162461bcd60e51b815260048101889052601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b8580fd5b50346103345780600319360112610334576005546040516001600160a01b039091168152602090f35b50346103345780600319360112610334576020601b54604051908152f35b5034610334578060031936011261033457601454604080516001600160801b038316815260809290921c602083015290f35b50346103345780600319360112610334576020602e54604051908152f35b5034610334576040366003190112610334576112b76112ad612f79565b6024359033613d21565b602060405160018152f35b5034610334576020366003190112610334576020906040906001600160a01b036112ea612f79565b168152600483522054604051908152f35b5034610334578060031936011261033457600f546040516001600160a01b039091168152602090f35b5034610334578060031936011261033457604051600090601054611347816130e0565b8083526001918083169081156113ca5750600114611370575b61036983610f3e818703826131b0565b6010600090815260209450917f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae6725b8284106113b757505050810190910190610f3e81611360565b805485850187015292850192810161139e565b6103699550610f3e93506020915091849260ff191682840152151560051b8201019350611360565b50346103345760203660031901126103345760043590600982101561033457602060ff61141e846130b1565b54166040519015158152f35b5034610334576020366003190112610334576020906040906001600160a01b03611452612f79565b168152600183522054604051908152f35b5034610334578060031936011261033457600a546040516001600160a01b039091168152602090f35b50346103345780600319360112610334576114a5613dc6565b5060806114b0613e4a565b509350505050604051916001600160401b0380825116845260208201511660208401526040600180861b039101511660408301526060820152f35b50346103345760a036600319011261033457611505612f79565b60243590611511612fa5565b906084356001600160401b038111610a6457611531903690600401613035565b93909460066000526020956007875261155260ff6040600020541615614452565b61155a6134de565b505061156461432f565b6001600160a01b03848116959093600491611581308914156144cf565b8986600a54166040519485809263433e762d60e01b82525afa92831561192d5790869186946118f4575b506115bc9161074a91168094614893565b6115c681876147dc565b600087815260188a52604081206115de8382546132dd565b90556115ec826015546132dd565b6015558560095416600c54813b15610c99578361162492849283604051809681958294630208d92960e11b84528c3060048601614980565b03925af18015610a54576118e5575b508183897f8ad4d3ff00da092c7ad9a573ea4f5f6a3dffc6712dc06d3f78f49b862297c4028480a487815260268a5260408120602854908183528b52604082205483116000146118bf575087815260268a526040812060285482528a5260408120555b600c54600e54604051633d9545e960e11b81526004810192909252602482015260006044820152606481019190915260016084820181905260a48201526101408160c481855afa9081156118b45784604094939288928291611883575b5061171786519b8c968795869463efa84c6d60e01b86526044359060048701614e29565b03925af1938415611876578195829561184f575b5061173a604435871015614ebb565b8152601786526040812054918661175884611753613de5565b614ef9565b9160095416916064600e546040519485938492638eb22cdd60e01b845260048401526024830152600160448301525afa918215611843579161180e575b50610ea193610a37939291116117bb576117b0908280614f57565b505b601154906146a1565b506117c4613de5565b80516001600160801b039081166117e95750506117e3845b8280614f57565b506117b2565b8181611800611809938a6117e39601511689613286565b915116906132af565b6117dc565b929190508583813d831161183c575b61182781836131b0565b81010312610a5f579151909190610ea1611795565b503d61181d565b604051903d90823e3d90fd5b90945061186c91955060403d604011610a9757610a8881836131b0565b949094933861172b565b50604051903d90823e3d90fd5b6118a791506101403d610140116118ad575b61189f81836131b0565b810190614d4e565b386116f3565b503d611895565b6040513d86823e3d90fd5b9060409189825260268c528282209082528b52206118de8282546132dd565b9055611696565b6118ee9061311a565b38611633565b61074a9194509161191d6115bc938d803d10611926575b61191581836131b0565b810190614d34565b949150916115ab565b503d61190b565b6040513d87823e3d90fd5b50346103345780600319360112610334576020601c54604051908152f35b503461033457806003193601126103345760206001600160401b03602d5460401c16604051908152f35b503461033457806003193601126103345760206001600160401b03602d5416604051908152f35b503461033457806003193601126103345760206001600160401b03602f5416604051908152f35b50346103345780600319360112610334576020602154604051908152f35b50346103345780600319360112610334576006546001600160a01b039081811633819003611a5657806005549384167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08680a36001600160a01b0319928316176005551660065580f35b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b50346103345780600319360112610334576020602954604051908152f35b5034610334576020366003190112610334576020906040906001600160a01b03611ae0612f79565b168152601783522054604051908152f35b50346103345780600319360112610334576020601554604051908152f35b50346103345780600319360112610334576020600e54604051908152f35b50346103345780600319360112610334576020601654604051908152f35b5034610334576060366003190112610334576020610ea1604435602435600435613310565b50346103345780600319360112610334576020601154604051908152f35b5034610334578060031936011261033457600d546040516001600160a01b039091168152602090f35b50346103345780600319360112610334576020601254604051908152f35b50346103345780600319360112610334576020610ea16139c5565b50346103345780600319360112610334576020601954604051908152f35b50346103345780600319360112610334576020601354604051908152f35b5034610334578060031936011261033457600d54602090611c55906001600160a01b0316614633565b60ff60405191168152f35b5060031961012036820112610a5057611c77612f79565b90611c80613026565b90606435916001600160401b03908184116111f55760608385360301126111f5576084359182116111f55760e08383360301126111f55760803660a31901126111f557600660005260209060078252611ce160ff6040600020541615614452565b611ce96134de565b5050611cf361432f565b6001600160a01b0386811693909290611d0e308614156144cf565b6044810191611d1c8361451a565b9760a435868116998a8203610a5f57611d389161074a91614893565b856009541697828c6064600c546040519c8d938492638eb22cdd60e01b84526004840152602435602484015260448301525afa98891561200e578b908d9a612041575b5089611d8c611e469b6040936147dc565b896000526018855281600020611da38282546132dd565b9055611db1816015546132dd565b60155580308b7f8ad4d3ff00da092c7ad9a573ea4f5f6a3dffc6712dc06d3f78f49b862297c402600080a48960005260268552816000206028549081600052865282600020548211600014612019575089600052602685528160002060285460005285526000828120555b8d896009541690600c54908451809e819582946311a5cc7760e31b84523090309060048601614582565b03925af198891561200e578c99611fec575b50600b5487169515611fe55747975b863b15611fe15760405199633cb7ea1d60e11b8b5260048b015260248a01526044890161010090528684600401610104968135888d015261ffff908c8260248a01611eb1906131ec565b16906101240152611ec1906131ec565b166101448c015281611ed560648801612fbb565b166101648c0152611ee960848701826145b1565b6101848d0160e090526101e48d0190611f01926145e2565b9060a48701611f0f916145b1565b8c830361010319016101a48e0152611f2792916145e2565b9460c401611f3490612fbb565b166101c48a0152888403016064890152806004019186611f5384612fbb565b168452602482013590840152604401611f6b916145b1565b606060408401819052611f7f9301916145e2565b95608486015260c435838116809103610a5f5760a486015260e435838116809103610a5f5760c486015235918216809203610a5f5783879593818795819560e483015203925af18015610a5457610a3c5750610386610a3783601154906146a1565b8c80fd5b3497611e67565b61200691995060403d604011610a9757610a8881836131b0565b509738611e58565b6040513d8e823e3d90fd5b8a60005260268652826000209060005285528160002061203a8282546132dd565b9055611e1c565b809a50848092503d831161206d575b61205a81836131b0565b81010312610a5f579751978a6040611d7b565b503d612050565b50346103345760603660031901126103345761208e612f79565b90612097612f8f565b60443591826120d5575b506040519182526001600160a01b039081169216906000805160206153de83398151915290602090a3602060405160018152f35b6001600160a01b038481168083526001602090815260408420549286906120fe82861015613aef565b861693848403612113575b50505050506120a1565b83865260028352604086203360005283526040600020546000198103612181575b509260016020969361215f8794604097610de46000805160206153de8339815191529c9a1515613b34565b92855252838320558152206121758582546132ea565b90559138808581612109565b909181106121d7579260016020969361215f8a6000805160206153de8339815191529a98956121b28260409a6132dd565b8689526002855289892033600052855289600020559497509497995050939650612134565b60405162461bcd60e51b815260048101849052601860248201527745524332303a20616c6c6f77616e636520746f6f206c6f7760401b6044820152606490fd5b50346103345760c036600319011261033457612231612f79565b60643591906001600160a01b03608435818116929083900361267d5760a4356001600160401b038111610a645761226c903690600401613035565b9093600586526020966007885261228a60ff60408920541615614452565b6122926134de565b505061229c61432f565b848416916122ac308414156144cf565b60048987600a54166040519283809263433e762d60e01b82525afa90811561267257826122e49261074a928c91612655575b50614893565b856009541693600e549060405191638eb22cdd60e01b968784528160048501526044356024850152600160448501528c84606481845afa93841561200e578c94612626575b50836125cc575b5050612399612342602435858a6149c3565b9050612354600e5491600c54956132ea565b60405180938192633d9545e960e11b83526101409788956004850160a091949360019360c0830196835260208301526000604083015260608201528260808201520152565b0381875afa9283156125c15788936040959387938e93849361259c575b50506123d89087519d8e978896879563efa84c6d60e01b875260048701614e29565b03925af1958615612591578796612568575b506123f790871015614ebb565b61240185846147dc565b8491600095156124f8575b5080855260188752604085206124238382546132ea565b9055612431826015546132ea565b601555600c54948460095416803b15610a5f578360009161246b9883604051809b81958294630208d92960e11b8452308d60048601614980565b03925af1948515610c5b57610ea196610a37966124d6575b506000805160206153be8339815191529083835260268a526040832060285484528a52604083206124b58682546132ea565b905582156124d05780600954165b169180a4601154906146a1565b856124c3565b6124e191925061311a565b6000906000805160206153be833981519152612483565b909150868460095416916064600c54916040519485938492835260048301528960248301528960448301525afa90811561192d57859161253b575b50903861240c565b90508681813d8311612561575b61255281836131b0565b81010312610a64575138612533565b503d612548565b6123f7975061258791965060403d604011610a9757610a8881836131b0565b96909695906123ea565b6040513d89823e3d90fd5b6123d892935090816125b992903d106118ad5761189f81836131b0565b9190386123b6565b6040513d8d823e3d90fd5b803b156126225783918c9186838c6125fa60405197889687958694630208d92960e11b865260048601614980565b03925af180156125c15761260f575b80612330565b61261b909a919a61311a565b9838612609565b8b80fd5b9093508c81813d831161264e575b61263e81836131b0565b8101031261262257519238612329565b503d612634565b61266c91508d803d106119265761191581836131b0565b386122de565b6040513d8b823e3d90fd5b8380fd5b50346103345761269036613062565b9083959495421161060c57612727916105b09160018060a01b03948a868b1697888252600460205260408220908154916126c983613d12565b90556040519160208301937f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d6855260408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e0815261057481613194565b16036105c75761038692613d21565b5034610334576020366003190112610334576020906040906001600160a01b0361275e612f79565b168152601883522054604051908152f35b5034610334578060031936011261033457602060255460801c604051908152f35b5034610334576040366003190112610334576004356009811015610a50576127b6613017565b6008549091906001600160a01b0316330361286c5760ff6127d6826130b1565b5416151591151591821461283257808260ff6127f4612822946130b1565b54161515827feeec81de25875ce1725479bb76f720a8defdb43dea041919ae37bb4aae9847c08780a46130b1565b9060ff8019835416911617905580f35b60405162461bcd60e51b81526020600482015260126024820152714d61726b65743a2073616d6520737461746560701b6044820152606490fd5b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881d5b985d5d1a1bdc9a5e995960621b6044820152606490fd5b503461033457610180366003190112610334576001600160a01b0360243581811690819003610c99576001600160401b0391604435838111610a64576128f382913690600401613035565b6128fb612fa5565b9161290b846005541633146131fb565b60043596620186a096612920888a1115613246565b602098808a547fc353b09af857951dccce61b43a5854fc45beceed36c50e5d4cc2e71858a8e0df8d80a3895580612ced575b5082612b94575b505050169081612b54575b505060843580612b3f575b5060a43580612b2a575b5060c43580612b16575b5060e43580612af5575b506101043580612ad4575b506101243580612aa3575b50610144359081612a31575b50506101643590816129bf578280f35b601e5482106129d25750601f5538808280f35b6084906040519062461bcd60e51b82526004820152603260248201527f4d61726b65743a206c69717569646174696f6e436f6c6c61746572616c697a616044820152711d1a5bdb94985d19481d1bdbc81cdb585b1b60721b6064820152fd5b612a3d90821115613246565b601f548111612a5057601e5538806129af565b60405162461bcd60e51b815260048101839052602560248201527f4d61726b65743a20636f6c6c61746572616c697a6174696f6e5261746520746f6044820152646f2062696760d81b6064820152608490fd5b806016547fae6e0ab3b95f0a53ff9660a390ccedcbbf1f2355dce974a9841af106fddcfaba8680a3601655386129a3565b612adf828210613246565b612aec601b548211613246565b601c5538612998565b612b00828210613246565b612b0d601c548210613246565b601b553861298d565b612b21828210613246565b601d5538612983565b612b3682821115613246565b601a5538612979565b612b4b82821115613246565b6019553861296f565b816008549182167f5a62d22209e370e38eea92cfddcd228e656e6ec139243392a760a7769f5877fd8780a36001600160a01b031916176008553880612964565b90918093945011612cd95790839291612bae6010546130e0565b601f8111612c8b575b508790601f8311600114612c1b5788919083612c10575b50508160011b916000199060031b1c1916176010555b7fa6f004921c944d4b8bf6e38462b00f36a58d62495d56b51f571ab78f732c98158680a1388080612959565b013590503880612bce565b6010899594939295528789209089955b89601f1985168810612c72575060019495965083601f19811610612c58575b505050811b01601055612be4565b0135600019600384901b60f8161c19169055388080612c4a565b8183013584559687019688965060019093019201612c2b565b909192935060108852868820601f840160051c8101888510612cd2575b90601f87969594930160051c01905b818110612cc45750612bb7565b898155869550600101612cb7565b5080612ca8565b634e487b7160e01b87526041600452602487fd5b600f80546001600160a01b0319169190911790557f0b2d6eb667d0522c3eb86e4288afecae6c11591ffd1345d4d12407e0598bca9b8980a138612952565b5034610334576040366003190112610334576112b7612d48612f79565b6024359033613d6f565b503461033457606036600319011261033457612d6c612f79565b612d74613017565b612d7c613026565b9060018060a01b03928391612d96836005541633146131fb565b15612e3a571690811590811591612e32575b5015612df557806005549283167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08580a36001600160a01b03199182161760055560068054909116905580f35b60405162461bcd60e51b81526020600482015260156024820152744f776e61626c653a207a65726f206164647265737360581b6044820152606490fd5b905038612da8565b9150501660018060a01b0319600654161760065580f35b5034610334578060031936011261033457808060018060a01b03600b541660405160208101906306fdde0360e01b825260048152612e8e8161315e565b51915afa612e9a614603565b915015612ef757612ead6103699161524c565b610f3e6034604051809373546170696f63612053696e67756c61726974792d60601b6020830152612ee78151809260208686019101612fcf565b81010360148101845201826131b0565b50610369612f036151f5565b612ead565b50346103345780600319360112610334576040612f236134de565b825191151582526020820152f35b905034610a50576040366003190112610a50576040602092612f51612f79565b612f59612f8f565b6001600160a01b0391821683526003865283832091168252845220548152f35b600435906001600160a01b0382168203610a5f57565b602435906001600160a01b0382168203610a5f57565b606435906001600160a01b0382168203610a5f57565b35906001600160a01b0382168203610a5f57565b60005b838110612fe25750506000910152565b8181015183820152602001612fd2565b9060209161300b81518092818552858086019101612fcf565b601f01601f1916010190565b602435908115158203610a5f57565b604435908115158203610a5f57565b9181601f84011215610a5f578235916001600160401b038311610a5f5760208381860195010111610a5f57565b60e0906003190112610a5f576001600160a01b03906004358281168103610a5f57916024359081168103610a5f5790604435906064359060843560ff81168103610a5f579060a4359060c43590565b60098110156130ca576000526007602052604060002090565b634e487b7160e01b600052602160045260246000fd5b90600182811c92168015613110575b60208310146130fa57565b634e487b7160e01b600052602260045260246000fd5b91607f16916130ef565b6001600160401b03811161312d57604052565b634e487b7160e01b600052604160045260246000fd5b606081019081106001600160401b0382111761312d57604052565b604081019081106001600160401b0382111761312d57604052565b608081019081106001600160401b0382111761312d57604052565b61010081019081106001600160401b0382111761312d57604052565b90601f801991011681019081106001600160401b0382111761312d57604052565b6001600160401b03811161312d57601f01601f191660200190565b359061ffff82168203610a5f57565b1561320257565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b1561324d57565b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881b9bdd081d985b1a59607a1b6044820152606490fd5b8181029291811591840414171561329957565b634e487b7160e01b600052601160045260246000fd5b81156132b9570490565b634e487b7160e01b600052601260045260246000fd5b604d811161329957600a0a90565b9190820391821161329957565b9190820180921161329957565b8181039291600013801582851316918412161761329957565b6014549192916133539161334a9161334091613336906001600160801b03831690613286565b9060801c906132af565b93601f5490613286565b6107d4836132cf565b8083106134155761336761339d91846132dd565b916133986107ce61338f601e54613389613380866132cf565b602154906132ea565b90613286565b6107d4846132cf565b6132f7565b6509184e72a0009081810291818305149015171561329957670de0b6b3a7640000918281029281840514901517156132995780156132b957600160ff1b91808314600019831416613299570590600082121561340e57811461329957600003905b808211613409575090565b905090565b50906133fe565b505050600090565b6001600160a01b0381166000818152601760205260408120549194939290919081156134c557916040916134a16134b99594836020865161345d8161315e565b828152015261347b8661346e613e4a565b5050505050939050613722565b815190936001600160801b039160209161349791841690613286565b92015116906132af565b8181106134bd57035b958152601860205220546137e8565b9091565b5050806134aa565b50509192505080918190565b51908115158203610a5f57565b60018060a01b03600f54169060409081519263d6d7d52560e01b845282846020928360048301526000601054613513816130e0565b908160248601526001908582821691826000146136b257505060011461366e575b5050600083809203925af18015613663576000948591613628575b509284156135ca57831561359057505081601155817f9f9192b5edb17356c524e08d9e025c8e2f6307e6ea52fb7968faa3081f51c3c8600080a25b42601355565b60649250519062461bcd60e51b8252600482015260146024820152734d61726b65743a20696e76616c6964207261746560601b6044820152fd5b909192506135dd601354601254906132ea565b42116135ee5750506011549061358a565b60649250519062461bcd60e51b82526004820152601460248201527313585c9ad95d0e881c985d19481d1bdbc81bdb1960621b6044820152fd5b9490508385813d831161365c575b61364081836131b0565b81010312610334575080613653856134d1565b9401513861354f565b503d613636565b83513d6000823e3d90fd5b915060106000528560002091866000935b83851061369757505050508201604401600083613534565b80548c8601604401528a97508b96509301928790820161367f565b8195506000949193506044925060ff191682840152151560051b8201019250613534565b156136dd57565b60405162461bcd60e51b815260206004820152601e60248201527f4d61726b65743a2065786368616e676552617465206e6f742076616c696400006044820152606490fd5b61372d8215156136d6565b60018060a01b036020816009541691600c5490600094168452601882526064604085205491604051948593849263442c159960e01b8452600484015260248301528660448301525afa9182156118435780926137b0575b5050906137a861379f6137ad93620186a06022540490613286565b601e5490613286565b6132af565b90565b9091506020823d82116137e0575b816137cb602093836131b0565b810103126103345750516137a861379f613784565b3d91506137be565b6137f38215156136d6565b602060018060a01b0360095416916064600c54604051948593849263442c159960e01b845260048401526024830152600060448301525afa908115610c5b57600091613860575b50906137a861384c9260225490613286565b620186a061385c601e5483613286565b0491565b906020823d821161388b575b81613879602093836131b0565b810103126103345750516137a861383a565b3d915061386c565b6001600160a01b031660008181526018602052604081205490926138b6916137e8565b9183526017602052604083205480156139bf5781156139bf578181106139bf57828110156139b5576014546138ff918391610de491613336906001600160801b03831690613286565b90620186a092838302928084048514901517156139a15761392492916107d4916132dd565b91601b5491601c549361393785856132f7565b80820291848212600160ff1b8214166139a157818305149015171561398d57058184820194851291129080158216911516176139795750808212613409575090565b634e487b7160e01b81526011600452602490fd5b634e487b7160e01b83526011600452602483fd5b634e487b7160e01b85526011600452602485fd5b50505050601b5490565b50505090565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03161480613ac6575b15613a20577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f000000000000000000000000000000000000000000000000000000000000000082527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a0815260c081018181106001600160401b0382111761312d5760405251902090565b507f000000000000000000000000000000000000000000000000000000000000000046146139f7565b15613af657565b60405162461bcd60e51b815260206004820152601660248201527545524332303a2062616c616e636520746f6f206c6f7760501b6044820152606490fd5b15613b3b57565b60405162461bcd60e51b815260206004820152601660248201527545524332303a206e6f207a65726f206164647265737360501b6044820152606490fd5b51906001600160a01b0382168203610a5f57565b519060ff82168203610a5f57565b60058110156130ca5780613bac5750565b60018103613bf45760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b6044820152606490fd5b60028103613c415760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606490fd5b600314613c4a57565b60405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608490fd5b9291906fa2a8918ca85bafe22016d0b997e4df60600160ff1b038311613d065791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa156118765781516001600160a01b03811615613d00579190565b50600190565b50505050600090600390565b60001981146132995760010190565b7fe50de2333c10a9502fcb1d8ae13a51bbf423153dfc63c2b8997665b32154afc360018060a01b038092169160009083825260036020526040822094169384825260205284604082205580a4565b909160207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259160018060a01b03809416938460005260028352604060002095169485600052825280604060002055604051908152a3565b60405190613dd382613143565b60006040838281528260208201520152565b60405190613df28261315e565b6014546001600160801b038116835260801c6020830152565b60405190613e188261315e565b6025546001600160801b038116835260801c6020830152565b6001600160801b03918216908216019190821161329957565b613e52613dc6565b5060006020604051613e638161315e565b828152015260006020604051613e788161315e565b828152015260405190613e8a82613143565b602454916001600160401b038316815260208101926001600160401b038160401c16845260801c60408201528092613ec0613de5565b92613ec9613e0b565b92600060018060a01b0360095416600e549460018060801b038751166040519063442c159960e01b8252876004830152602482015260006044820152602081606481865afa8015610c5b576000906142d6575b8951613f3292506001600160801b0316906132ea565b806142a1575060005b613f506001600160401b0382935116426132dd565b948515614277575050426001600160401b031660208a8101919091528801516001600160801b03161561422d57506020670de0b6b3a7640000613fb285613fad8c6001600160401b038d60018060801b0390511691511690613286565b613286565b895191900496906001600160801b0390613fd190828a16908316613e31565b168952875160405163442c159960e01b815260048101929092526001600160801b031660248201526000604482015291829060649082905afa8015610c5b576000906141f9575b875161402e92506001600160801b0316906132ea565b9261405c846137a8620186a0614046601a548a613286565b60208c01516001600160801b0316919004613286565b6040890180519195916001600160801b03808816929161407f9084908316613e31565b16905260208801805190916001600160801b039161409f91908316613e31565b169052806141c4575060005b602a549093848281101561413f576140c390836132dd565b90670de0b6b3a7640000820291808304670de0b6b3a76400001490151715613299576137a86141176141116141036001600160401b0396614121966132af565b93613fad602e549580613286565b836132ea565b91848d5116613286565b168089526001600160401b03602d541680911061413b5750565b8852565b909150602b5480821161415157505050565b61415a916132dd565b670de0b6b3a7640000810290808204670de0b6b3a76400001490151715613299576001600160401b03916137a861419d6141116141036141a695602c54906132af565b848d5116613286565b81602d5460401c168082116141bc575b50168852565b9050386141b6565b87516001600160801b0316670de0b6b3a7640000818102929180840490911490151715613299576141f4916132af565b6140ab565b506020813d602011614225575b81614213602093836131b0565b81010312610a5f5761402e9051614018565b3d9150614206565b9697939450509350506001600160401b038151166001600160401b03602f541680910361426b575b509392614260613e0b565b926000926000929190565b81526001925038614255565b97509850505050509250509161428b613de5565b91614294613e0b565b9160009160009190600090565b88516001600160801b0316670de0b6b3a7640000818102929180840490911490151715613299576142d1916132af565b613f3b565b506020813d602011614302575b816142f0602093836131b0565b81010312610a5f57613f329051613f1c565b3d91506142e3565b601480546001600160801b031660809290921b6001600160801b031916919091179055565b6144166020806143ec614340613e4a565b9396959390929015614418575050506001600160401b03602f54166000807f33af5ce86e8438eff54589f85332916444457dfa8685493fbd579b809097026b88604051838152a45b805185820151604092830151921b67ffffffffffffffff60401b166001600160401b03919091161760809190911b6001600160801b0319908116919091176024558151601480549092166001600160801b039182161790915594859101511661430a565b8051910151821660801b6001600160801b0319166001600160801b03929091169190911617602555565b565b7f33af5ce86e8438eff54589f85332916444457dfa8685493fbd579b809097026b886001600160401b0386511694604051908152a4614388565b1561445957565b60405162461bcd60e51b815260206004820152600e60248201526d13585c9ad95d0e881c185d5cd95960921b6044820152606490fd5b1561449657565b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881a5b9cdbdb1d995b9d607a1b6044820152606490fd5b156144d657565b606460405162461bcd60e51b815260206004820152602060248201527f4d61726b65743a2063616e6e6f742065786563757465206f6e20697473656c666044820152fd5b3561ffff81168103610a5f5790565b1561453057565b60405162461bcd60e51b815260206004820152601460248201527329a3a61d1024b73b30b634b21039bbb0b83832b960611b6044820152606490fd5b9190826040910312610a5f576020825192015190565b9081526001600160a01b0391821660208201529116604082015260006060820152608081019190915260a00190565b9035601e1982360301811215610a5f5701602081359101916001600160401b038211610a5f578136038313610a5f57565b908060209392818452848401376000828201840152601f01601f1916010190565b3d1561462e573d90614614826131d1565b9161462260405193846131b0565b82523d6000602084013e565b606090565b60008091604051602081019063313ce56760e01b8252600481526146568161315e565b51916001600160a01b03165afa61466b614603565b9080614696575b1561469057602081805181010312610a5f5760206137ad9101613b8d565b50601290565b506020815114614672565b919060018060a01b0380600094168452602060178152604085205490811561478f57601881526040862054801561478857816146db613de5565b9460095416916064600c54604051948593849263442c159960e01b8452600484015260248301528b60448301525afa968715611843578097614752575b505061349761473761379f61474d969798620186a06022540490613286565b95613fad60018060801b03948587511690613286565b111590565b9096508187813d8311614781575b61476a81836131b0565b810103126103345750945194613497614737614718565b503d614760565b5050505050565b5060019450505050565b91821580156147d4575b6134155760018101809111613299576147c2926133896137a8926132cf565b6005810180911161329957600a900490565b5081156147a3565b6001600160a01b03163381036147f0575050565b60008181526020906003825260409182822033835281528483832054106148595783825260038152828220338352815282822054600101614832575050505050565b61484d938252600381528282209033835252209182546132dd565b90553880808080614788565b60649083519062461bcd60e51b82526004820152601460248201527313585c9ad95d0e881b9bdd08185c1c1c9bdd995960621b6044820152fd5b600a5460405163dbd01de160e01b815260209290916001600160a01b039084908490600490829085165afa8015610c5b578493600091614942575b50918161ffff936044936040519889968795633a304d8b60e21b8752166004860152166024840152165afa908115610c5b5760009161490e575b50905090565b82813d831161493b575b61492281836131b0565b810103126103345750614934906134d1565b8038614908565b503d614918565b9091929381813d8311614979575b61495a81836131b0565b81010312610a50575190828216820361033457508392919060446148ce565b503d614950565b6001600160a01b039182168152911660208201526040810191909152606081019190915260800190565b6001600160801b03918216908216039190821161329957565b929060208093620186a06149d8835483613286565b04926149e2613de5565b966149ed85846132ea565b60409586516149fb8161315e565b6000808252960186905289516001600160801b0392908316614cd45782614a298c8280855b16915116613e31565b168b52614a6d8a8c0184614a4281851682845116613e31565b16809152614a6885849e511660018060801b031660018060801b03196014541617601455565b61430a565b6016548015908115614cc5575b5015614c8757859060018060a01b0380951680895260178c52898920614aa18382546132ea565b90558951918483528c8301527f3a5151e57d3bc9798e7853034ac52293d1a0e12a2b44725e75b03b21f86477a68a87891693a480614c66575b50878260095416946064600e5489519788938492638eb22cdd60e01b8452600484015260248301528960448301525afa938415614c5c578594614c2d575b508397614b23613e0b565b818101916103e88484511610614bf9575090614b73839283614b4d614b9a968a16828451166149aa565b1690819052602580546001600160801b0319166001600160801b03909216919091179055565b51602580546001600160801b03169290911660801b6001600160801b031916919091179055565b6009541690600e5490823b15610a64579184939184879694614bd2985198899586948593630208d92960e11b85523060048601614980565b03925af1918215614bef575050614be65750565b6144169061311a565b51903d90823e3d90fd5b60649089519062461bcd60e51b82526004820152600e60248201526d14d1d30e881b5a5b881b1a5b5a5d60921b6044820152fd5b9093508781813d8311614c55575b614c4581836131b0565b81010312610a6457519238614b18565b503d614c3b565b86513d87823e3d90fd5b82600a5416865260018952614c7f8787209182546132ea565b905538614ada565b875162461bcd60e51b8152600481018b9052601760248201527614d1d30e88189bdc9c9bddc818d85c081c995858da1959604a1b6044820152606490fd5b90508360145416111538614a7a565b828b8b81019280614d07614cf8614cee8688511684613286565b86865116906132af565b95856118008187511689613286565b10614d19575b908280614a2993614a20565b92908280614d29614a2994613d12565b959293505050614d0d565b90816020910312610a5f575161ffff81168103610a5f5790565b809103906101408212610a5f576040805192614d6984613143565b60808112610a5f578151614d7c81613179565b614d8584613b79565b815260208401516020820152614d9c838501613b79565b838201526060840151606082015284526080607f19820112610a5f5781908151614dc581613179565b6080850151815260a0850151602082015260c08501518382015260e08501516060820152602086015260ff190112610a5f57614e1e610120825193614e098561315e565b614e1661010082016134d1565b8552016134d1565b602083015282015290565b91926137ad959360206040845194606060018060a01b039687815116895284810151858a0152878482015116848a015201516060880152606083820151805160808a01528481015160a08a01528381015160c08a0152015160e088015201518051151561010087015201511515610120850152610140840152166101608201526101a0908161018082015201916145e2565b15614ec257565b60405162461bcd60e51b815260206004820152600f60248201526e0a68e987440dcdee840cadcdeeaced608b1b6044820152606490fd5b60208101805190939291906001600160801b03908116614f1a575090925050565b908161180081614f3d614f33614f469686511688613286565b828a5116906132af565b97511687613286565b10614f4d57565b906137ad90613d12565b92919060009160018060a01b0394858316845260206017815260408520548084116151ed575b5082156151b157614f8c613de5565b968582604051614f9b8161315e565b8281520152614faa8489614ef9565b9560018060801b039384614fc3818a16828d51166149aa565b168a52615002848b0186614fdc818a16828451166149aa565b16809152614a68878b9d511660018060801b031660018060801b03196014541617601455565b8287168252601784526040822061501a8782546132dd565b90558260095416600e549560405190638eb22cdd60e01b82528760048301528a6024830152600160448301528682606481865afa91821561192d578592615182575b5080602554169492803b15610a5f57826000916150929a83604051809d81958294630208d92960e11b8452308d60048601614980565b03925af1948515610c5b577fc8e512d8f188ca059984b5853d2bf653da902696b8512785b182b2c813789a6e98879661516c575b506150d49082841690613e31565b1660018060801b031960255416176025558383169081835260268752604083206027549081855288526040842054821160001461514557505081526026855260408120602754825285528060408120555b1561513f57508060095416955b60405195865216941692a4565b95615132565b9091835260268752604083209083528652615165604083209182546132dd565b9055615125565b61517791945061311a565b6000926150d46150c6565b9091508681813d83116151aa575b61519a81836131b0565b81010312610a645751903861505c565b503d615190565b6064906040519062461bcd60e51b82526004820152601560248201527453474c3a206e6f7468696e6720746f20726570617960581b6044820152fd5b925038614f7d565b604051906152028261315e565b60038252623f3f3f60e81b6020830152565b908151811015615225570160200190565b634e487b7160e01b600052603260045260246000fd5b60ff1660ff81146132995760010190565b8051604081106152c457508051810190602081818401930312610a5f576020810151906001600160401b038211610a5f570181603f82011215610a5f576020810151615297816131d1565b926152a560405194856131b0565b81845260408284010111610a5f576137ad916040602085019101612fcf565b6020929083036153b2576000805b60ff81168581109081615393575b50156152f4576152ef9061523b565b6152d2565b9260ff80941692615304846131d1565b9361531260405195866131b0565b808552615321601f19916131d1565b013687860137825b85811687811080615376575b1561536b5761536691906153606001600160f81b03196153558388615214565b5116871a9188615214565b5361523b565b615329565b505094505050905090565b506001600160f81b031961538a8286615214565b51161515615335565b6001600160f81b031991506153a89086615214565b51161515386152e0565b9150506137ad6151f556fe9ed03113de523cebfe5e49d5f8e12894b1c0d42ce805990461726444c90eab87ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa26469706673582212203847b1355984ac073ba1856ae43f8376e31cd4b28609edd9d6701120f9eb9a9864736f6c63430008120033", - "deployedBytecode": "0x608080604052600436101561001357600080fd5b600090813560e01c908162a02a2014612f315750806302ce728f14612f0857806306fdde0314612e51578063078dfbe714612d52578063095ea7b314612d2b5780630996efb7146128a85780630c4e84f01461279057806318160ddd1461276f5780631c9e379b146127365780631da8bf10146126815780631ee9c8f21461221757806323b872dd146120745780632a9399d914611c60578063313ce56714611c2c578063331960ff14611c0e57806334d441d014611bf05780633644e51514611bd557806337b6b7b914611bb757806338d52e0f14611b8e5780633ba0b9a914611b705780633f741adb14611b4b57806340626d8b14611b2d57806344de240a14611b0f578063473e3ce714611af157806348e4163e14611ab85780634d7f2a3414611a9a5780634e71e0c8146119ec578063529898f2146119ce57806352f353eb146119a7578063551402321461198057806355c2ab9414611956578063579354621461193857806358db9afe146114eb5780635dfe04e81461148c5780636c3d8b8f1461146357806370a082311461142a57806372778547146113f257806374645ff3146113245780637dc0d1d0146112fb5780637ecebe00146112c25780637fa0b84e14611290578063821226e8146112725780638285ef40146112405780638c5d0ed3146112225780638da5cb5b146111f9578063910dd7c814610f80578063959916dc14610f6357806395d89b4114610ea957806399a9702814610e795780639c5d719214610e5b5780639e15e89f14610e20578063a9059cbb14610d3d578063b0e21e8a14610d1f578063b27c0e7414610ce4578063bb4cfe3b14610cc6578063ce8849ed14610c9d578063d49dffa714610651578063d505accf146104cb578063d8dfeb45146104a2578063dd62ed3e14610453578063de4065771461042a578063e0996cb61461040c578063e30c3978146103e3578063ea64dd56146103c5578063eec0f42e146103a7578063f42760b714610389578063f8ba4cff1461036d578063f9557ccb146103375763ffe04c661461031757600080fd5b346103345780600319360112610334576020602a54604051908152f35b80fd5b5034610334578060031936011261033457602554604080516001600160801b038316815260809290921c602083015290f35b0390f35b503461033457806003193601126103345761038661432f565b80f35b50346103345780600319360112610334576020602b54604051908152f35b50346103345780600319360112610334576020600c54604051908152f35b50346103345780600319360112610334576020601f54604051908152f35b50346103345780600319360112610334576006546040516001600160a01b039091168152602090f35b50346103345780600319360112610334576020601d54604051908152f35b50346103345780600319360112610334576009546040516001600160a01b039091168152602090f35b50346103345760403660031901126103345761046d612f79565b6040610477612f8f565b9260018060a01b03809316815260026020522091166000526020526020604060002054604051908152f35b5034610334578060031936011261033457600b546040516001600160a01b039091168152602090f35b5034610334576104da36613062565b9083959495421161060c576105b8916105b09160018060a01b0394858a169687600052600460205260406000209081549161051483613d12565b90556040519060208201927f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e2668452600060408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e0815261057481613194565b51902061057f6139c5565b9060405190602082019261190160f01b845260228301526042820152604281526105a881613179565b519020613c9a565b919091613b9b565b16036105c75761038692613d6f565b60405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152606490fd5b60405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b5061014036600319011261033457610667612f79565b606435151560643503610a5f576001600160401b038060843511610c9957606060843536036003190112610c995760a43511610a505760e060a43536036003190112610a505760803660c3190112610a5057600560005260076020527fbcdda56b5d08466ec462cbbe0adfa57cb0a15fcc8940ef68f702f21b787bc935546106f29060ff1615614452565b6106fa6134de565b505061070461432f565b6107196001600160a01b0382163014156144cf565b610727604460a4350161451a565b60c4356001600160a01b0381169003610a5f5761074a61074f9160c43590614893565b614529565b60243580610afd575b506107da6107ac6107d46107ce6107b2620186a061077a602054604435613286565b0461078a601154916044356132ea565b600d5460ff906107a2906001600160a01b0316614633565b1695869289613722565b90614799565b6001600160a01b03861687526018602052604087205490613286565b916132cf565b906132af565b336001600160a01b03831603610aa9575b6107f590826147dc565b610836604061080760443584806149c3565b905060018060a01b0360095416600e548684518096819582946311a5cc7760e31b84528a309160048601614582565b03925af1908115610a9e578391610a6e575b50600d546001600160a01b03169060643515610a6857475b823b15610a645760405191633cb7ea1d60e11b8352600483015260018060a01b0384166024830152610100604483015260a4356004013561010483015261ffff6108ae602460a435016131ec565b1661012483015261ffff6108c6604460a435016131ec565b166101448301526001600160a01b036108e360a435606401612fbb565b166101648301526109af61094161091a610907608460a4350160a4356004016145b1565b60e06101848801526101e48701916145e2565b61092d60a480350160a4356004016145b1565b86830361010319016101a4880152906145e2565b6001600160a01b0361095760a43560c401612fbb565b166101c4850152838103600319016064850152606061099f6004608435016001600160a01b0361098682612fbb565b16845260843560248101356020860152604401906145b1565b91909281604082015201916145e2565b6001600160a01b0360c4358116608485015290939060e43590811690819003610a5f5760a4840152610104356001600160a01b03811690819003610a5f5760c4840152610124356001600160a01b0381169190829003610a5f5783879593818795819560e483015203925af18015610a5457610a3c575b50610386610a3783601154906146a1565b61448f565b610a459061311a565b610a50578138610a26565b5080fd5b6040513d84823e3d90fd5b600080fd5b8480fd5b34610860565b610a90915060403d604011610a97575b610a8881836131b0565b81019061456c565b5038610848565b503d610a7e565b6040513d85823e3d90fd5b806107eb5760405162461bcd60e51b815260206004820152602160248201527f42696742616e673a20616c6c6f77616e63655368617265206e6f742076616c696044820152601960fa1b6064820152608490fd5b602060018060a01b0360095416916064600c546040519485938492638eb22cdd60e01b8452600484015260248301528760448301525afa908115610a9e578391610c67575b50610b4d81836147dc565b8015610bdb575b60018060a01b03821660005260186020526040600020610b758282546132ea565b9055610b83816015546132ea565b60155560018060a01b038216600052602660205260406000206028546000526020526040600020610bb58282546132ea565b90556001600160a01b038216806000805160206153be833981519152600080a438610758565b5060018060a01b03600954166020600c54606460405180948193638eb22cdd60e01b8352600483015260006024830152600060448301525afa908115610c5b57600091610c29575b50610b54565b906020823d602011610c53575b81610c43602093836131b0565b8101031261033457505138610c23565b3d9150610c36565b6040513d6000823e3d90fd5b90506020813d602011610c91575b81610c82602093836131b0565b81010312610a5f575138610b42565b3d9150610c75565b8280fd5b50346103345780600319360112610334576008546040516001600160a01b039091168152602090f35b50346103345780600319360112610334576020601e54604051908152f35b50346103345780600319360112610334576060602454604051906001600160401b0380821683528160401c16602083015260801c6040820152f35b50346103345780600319360112610334576020601a54604051908152f35b503461033457604036600319011261033457610d57612f79565b60243580928115801590610e0e575b610d9e575b50506040519182526001600160a01b03169033906000805160206153de83398151915290602090a3602060405160018152f35b33815260016020526040812054610db783821015613aef565b6001600160a01b0384169033829003610dd2575b5050610d6b565b604093610de991610de4841515613b34565b6132dd565b338352600160205283832055815220610e038382546132ea565b905581388080610dcb565b50336001600160a01b03841614610d66565b5034610334576040366003190112610334576060610e48610e3f612f79565b6024359061341d565b9060405192835260208301526040820152f35b50346103345780600319360112610334576020602c54604051908152f35b5034610334576040366003190112610334576020610ea1610e98612f79565b60243590613893565b604051908152f35b5034610334578060031936011261033457808060018060a01b03600b541660405160208101906395d89b4160e01b825260048152610ee68161315e565b51915afa610ef2614603565b915015610f5257610f056103699161524c565b610f3e6023604051809362746d2d60e81b6020830152610f2e8151809260208686019101612fcf565b81010360038101845201826131b0565b604051918291602083526020830190612ff2565b50610369610f5e6151f5565b610f05565b503461033457806003193601126103345760208054604051908152f35b5034610334576040366003190112610334576004356001600160401b038111610a505736602382011215610a5057806004013590610fbd826131d1565b90610fcb60405192836131b0565b82825283602091828401943660248284010111610c99578060248593018737840101526024359061ffff8216809203610a5f576101009384848051810103126111f557611017906134d1565b9061102460408501613b79565b61103060608601613b79565b9560808601519560a08101519161104960c08301613b8d565b9060e08301519201519260018060a01b03808096169a16978142116111b057926105b09289888d989794611127978e8d600014611189577f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e266945b8c600052600485526040600020928354936110bd85613d12565b905560405195860196875260408601528c6060860152608085015260a084015260c083015260e082015260e081526110f481613194565b5190206110ff6139c5565b90604051908a82019261190160f01b845260228301526042820152604281526105a881613179565b160361114557501561113c5761038692613d6f565b61038692613d21565b6064906040519062461bcd60e51b82526004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152fd5b7f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d6946110a3565b60405162461bcd60e51b815260048101889052601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b8580fd5b50346103345780600319360112610334576005546040516001600160a01b039091168152602090f35b50346103345780600319360112610334576020601b54604051908152f35b5034610334578060031936011261033457601454604080516001600160801b038316815260809290921c602083015290f35b50346103345780600319360112610334576020602e54604051908152f35b5034610334576040366003190112610334576112b76112ad612f79565b6024359033613d21565b602060405160018152f35b5034610334576020366003190112610334576020906040906001600160a01b036112ea612f79565b168152600483522054604051908152f35b5034610334578060031936011261033457600f546040516001600160a01b039091168152602090f35b5034610334578060031936011261033457604051600090601054611347816130e0565b8083526001918083169081156113ca5750600114611370575b61036983610f3e818703826131b0565b6010600090815260209450917f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae6725b8284106113b757505050810190910190610f3e81611360565b805485850187015292850192810161139e565b6103699550610f3e93506020915091849260ff191682840152151560051b8201019350611360565b50346103345760203660031901126103345760043590600982101561033457602060ff61141e846130b1565b54166040519015158152f35b5034610334576020366003190112610334576020906040906001600160a01b03611452612f79565b168152600183522054604051908152f35b5034610334578060031936011261033457600a546040516001600160a01b039091168152602090f35b50346103345780600319360112610334576114a5613dc6565b5060806114b0613e4a565b509350505050604051916001600160401b0380825116845260208201511660208401526040600180861b039101511660408301526060820152f35b50346103345760a036600319011261033457611505612f79565b60243590611511612fa5565b906084356001600160401b038111610a6457611531903690600401613035565b93909460066000526020956007875261155260ff6040600020541615614452565b61155a6134de565b505061156461432f565b6001600160a01b03848116959093600491611581308914156144cf565b8986600a54166040519485809263433e762d60e01b82525afa92831561192d5790869186946118f4575b506115bc9161074a91168094614893565b6115c681876147dc565b600087815260188a52604081206115de8382546132dd565b90556115ec826015546132dd565b6015558560095416600c54813b15610c99578361162492849283604051809681958294630208d92960e11b84528c3060048601614980565b03925af18015610a54576118e5575b508183897f8ad4d3ff00da092c7ad9a573ea4f5f6a3dffc6712dc06d3f78f49b862297c4028480a487815260268a5260408120602854908183528b52604082205483116000146118bf575087815260268a526040812060285482528a5260408120555b600c54600e54604051633d9545e960e11b81526004810192909252602482015260006044820152606481019190915260016084820181905260a48201526101408160c481855afa9081156118b45784604094939288928291611883575b5061171786519b8c968795869463efa84c6d60e01b86526044359060048701614e29565b03925af1938415611876578195829561184f575b5061173a604435871015614ebb565b8152601786526040812054918661175884611753613de5565b614ef9565b9160095416916064600e546040519485938492638eb22cdd60e01b845260048401526024830152600160448301525afa918215611843579161180e575b50610ea193610a37939291116117bb576117b0908280614f57565b505b601154906146a1565b506117c4613de5565b80516001600160801b039081166117e95750506117e3845b8280614f57565b506117b2565b8181611800611809938a6117e39601511689613286565b915116906132af565b6117dc565b929190508583813d831161183c575b61182781836131b0565b81010312610a5f579151909190610ea1611795565b503d61181d565b604051903d90823e3d90fd5b90945061186c91955060403d604011610a9757610a8881836131b0565b949094933861172b565b50604051903d90823e3d90fd5b6118a791506101403d610140116118ad575b61189f81836131b0565b810190614d4e565b386116f3565b503d611895565b6040513d86823e3d90fd5b9060409189825260268c528282209082528b52206118de8282546132dd565b9055611696565b6118ee9061311a565b38611633565b61074a9194509161191d6115bc938d803d10611926575b61191581836131b0565b810190614d34565b949150916115ab565b503d61190b565b6040513d87823e3d90fd5b50346103345780600319360112610334576020601c54604051908152f35b503461033457806003193601126103345760206001600160401b03602d5460401c16604051908152f35b503461033457806003193601126103345760206001600160401b03602d5416604051908152f35b503461033457806003193601126103345760206001600160401b03602f5416604051908152f35b50346103345780600319360112610334576020602154604051908152f35b50346103345780600319360112610334576006546001600160a01b039081811633819003611a5657806005549384167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08680a36001600160a01b0319928316176005551660065580f35b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b50346103345780600319360112610334576020602954604051908152f35b5034610334576020366003190112610334576020906040906001600160a01b03611ae0612f79565b168152601783522054604051908152f35b50346103345780600319360112610334576020601554604051908152f35b50346103345780600319360112610334576020600e54604051908152f35b50346103345780600319360112610334576020601654604051908152f35b5034610334576060366003190112610334576020610ea1604435602435600435613310565b50346103345780600319360112610334576020601154604051908152f35b5034610334578060031936011261033457600d546040516001600160a01b039091168152602090f35b50346103345780600319360112610334576020601254604051908152f35b50346103345780600319360112610334576020610ea16139c5565b50346103345780600319360112610334576020601954604051908152f35b50346103345780600319360112610334576020601354604051908152f35b5034610334578060031936011261033457600d54602090611c55906001600160a01b0316614633565b60ff60405191168152f35b5060031961012036820112610a5057611c77612f79565b90611c80613026565b90606435916001600160401b03908184116111f55760608385360301126111f5576084359182116111f55760e08383360301126111f55760803660a31901126111f557600660005260209060078252611ce160ff6040600020541615614452565b611ce96134de565b5050611cf361432f565b6001600160a01b0386811693909290611d0e308614156144cf565b6044810191611d1c8361451a565b9760a435868116998a8203610a5f57611d389161074a91614893565b856009541697828c6064600c546040519c8d938492638eb22cdd60e01b84526004840152602435602484015260448301525afa98891561200e578b908d9a612041575b5089611d8c611e469b6040936147dc565b896000526018855281600020611da38282546132dd565b9055611db1816015546132dd565b60155580308b7f8ad4d3ff00da092c7ad9a573ea4f5f6a3dffc6712dc06d3f78f49b862297c402600080a48960005260268552816000206028549081600052865282600020548211600014612019575089600052602685528160002060285460005285526000828120555b8d896009541690600c54908451809e819582946311a5cc7760e31b84523090309060048601614582565b03925af198891561200e578c99611fec575b50600b5487169515611fe55747975b863b15611fe15760405199633cb7ea1d60e11b8b5260048b015260248a01526044890161010090528684600401610104968135888d015261ffff908c8260248a01611eb1906131ec565b16906101240152611ec1906131ec565b166101448c015281611ed560648801612fbb565b166101648c0152611ee960848701826145b1565b6101848d0160e090526101e48d0190611f01926145e2565b9060a48701611f0f916145b1565b8c830361010319016101a48e0152611f2792916145e2565b9460c401611f3490612fbb565b166101c48a0152888403016064890152806004019186611f5384612fbb565b168452602482013590840152604401611f6b916145b1565b606060408401819052611f7f9301916145e2565b95608486015260c435838116809103610a5f5760a486015260e435838116809103610a5f5760c486015235918216809203610a5f5783879593818795819560e483015203925af18015610a5457610a3c5750610386610a3783601154906146a1565b8c80fd5b3497611e67565b61200691995060403d604011610a9757610a8881836131b0565b509738611e58565b6040513d8e823e3d90fd5b8a60005260268652826000209060005285528160002061203a8282546132dd565b9055611e1c565b809a50848092503d831161206d575b61205a81836131b0565b81010312610a5f579751978a6040611d7b565b503d612050565b50346103345760603660031901126103345761208e612f79565b90612097612f8f565b60443591826120d5575b506040519182526001600160a01b039081169216906000805160206153de83398151915290602090a3602060405160018152f35b6001600160a01b038481168083526001602090815260408420549286906120fe82861015613aef565b861693848403612113575b50505050506120a1565b83865260028352604086203360005283526040600020546000198103612181575b509260016020969361215f8794604097610de46000805160206153de8339815191529c9a1515613b34565b92855252838320558152206121758582546132ea565b90559138808581612109565b909181106121d7579260016020969361215f8a6000805160206153de8339815191529a98956121b28260409a6132dd565b8689526002855289892033600052855289600020559497509497995050939650612134565b60405162461bcd60e51b815260048101849052601860248201527745524332303a20616c6c6f77616e636520746f6f206c6f7760401b6044820152606490fd5b50346103345760c036600319011261033457612231612f79565b60643591906001600160a01b03608435818116929083900361267d5760a4356001600160401b038111610a645761226c903690600401613035565b9093600586526020966007885261228a60ff60408920541615614452565b6122926134de565b505061229c61432f565b848416916122ac308414156144cf565b60048987600a54166040519283809263433e762d60e01b82525afa90811561267257826122e49261074a928c91612655575b50614893565b856009541693600e549060405191638eb22cdd60e01b968784528160048501526044356024850152600160448501528c84606481845afa93841561200e578c94612626575b50836125cc575b5050612399612342602435858a6149c3565b9050612354600e5491600c54956132ea565b60405180938192633d9545e960e11b83526101409788956004850160a091949360019360c0830196835260208301526000604083015260608201528260808201520152565b0381875afa9283156125c15788936040959387938e93849361259c575b50506123d89087519d8e978896879563efa84c6d60e01b875260048701614e29565b03925af1958615612591578796612568575b506123f790871015614ebb565b61240185846147dc565b8491600095156124f8575b5080855260188752604085206124238382546132ea565b9055612431826015546132ea565b601555600c54948460095416803b15610a5f578360009161246b9883604051809b81958294630208d92960e11b8452308d60048601614980565b03925af1948515610c5b57610ea196610a37966124d6575b506000805160206153be8339815191529083835260268a526040832060285484528a52604083206124b58682546132ea565b905582156124d05780600954165b169180a4601154906146a1565b856124c3565b6124e191925061311a565b6000906000805160206153be833981519152612483565b909150868460095416916064600c54916040519485938492835260048301528960248301528960448301525afa90811561192d57859161253b575b50903861240c565b90508681813d8311612561575b61255281836131b0565b81010312610a64575138612533565b503d612548565b6123f7975061258791965060403d604011610a9757610a8881836131b0565b96909695906123ea565b6040513d89823e3d90fd5b6123d892935090816125b992903d106118ad5761189f81836131b0565b9190386123b6565b6040513d8d823e3d90fd5b803b156126225783918c9186838c6125fa60405197889687958694630208d92960e11b865260048601614980565b03925af180156125c15761260f575b80612330565b61261b909a919a61311a565b9838612609565b8b80fd5b9093508c81813d831161264e575b61263e81836131b0565b8101031261262257519238612329565b503d612634565b61266c91508d803d106119265761191581836131b0565b386122de565b6040513d8b823e3d90fd5b8380fd5b50346103345761269036613062565b9083959495421161060c57612727916105b09160018060a01b03948a868b1697888252600460205260408220908154916126c983613d12565b90556040519160208301937f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d6855260408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e0815261057481613194565b16036105c75761038692613d21565b5034610334576020366003190112610334576020906040906001600160a01b0361275e612f79565b168152601883522054604051908152f35b5034610334578060031936011261033457602060255460801c604051908152f35b5034610334576040366003190112610334576004356009811015610a50576127b6613017565b6008549091906001600160a01b0316330361286c5760ff6127d6826130b1565b5416151591151591821461283257808260ff6127f4612822946130b1565b54161515827feeec81de25875ce1725479bb76f720a8defdb43dea041919ae37bb4aae9847c08780a46130b1565b9060ff8019835416911617905580f35b60405162461bcd60e51b81526020600482015260126024820152714d61726b65743a2073616d6520737461746560701b6044820152606490fd5b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881d5b985d5d1a1bdc9a5e995960621b6044820152606490fd5b503461033457610180366003190112610334576001600160a01b0360243581811690819003610c99576001600160401b0391604435838111610a64576128f382913690600401613035565b6128fb612fa5565b9161290b846005541633146131fb565b60043596620186a096612920888a1115613246565b602098808a547fc353b09af857951dccce61b43a5854fc45beceed36c50e5d4cc2e71858a8e0df8d80a3895580612ced575b5082612b94575b505050169081612b54575b505060843580612b3f575b5060a43580612b2a575b5060c43580612b16575b5060e43580612af5575b506101043580612ad4575b506101243580612aa3575b50610144359081612a31575b50506101643590816129bf578280f35b601e5482106129d25750601f5538808280f35b6084906040519062461bcd60e51b82526004820152603260248201527f4d61726b65743a206c69717569646174696f6e436f6c6c61746572616c697a616044820152711d1a5bdb94985d19481d1bdbc81cdb585b1b60721b6064820152fd5b612a3d90821115613246565b601f548111612a5057601e5538806129af565b60405162461bcd60e51b815260048101839052602560248201527f4d61726b65743a20636f6c6c61746572616c697a6174696f6e5261746520746f6044820152646f2062696760d81b6064820152608490fd5b806016547fae6e0ab3b95f0a53ff9660a390ccedcbbf1f2355dce974a9841af106fddcfaba8680a3601655386129a3565b612adf828210613246565b612aec601b548211613246565b601c5538612998565b612b00828210613246565b612b0d601c548210613246565b601b553861298d565b612b21828210613246565b601d5538612983565b612b3682821115613246565b601a5538612979565b612b4b82821115613246565b6019553861296f565b816008549182167f5a62d22209e370e38eea92cfddcd228e656e6ec139243392a760a7769f5877fd8780a36001600160a01b031916176008553880612964565b90918093945011612cd95790839291612bae6010546130e0565b601f8111612c8b575b508790601f8311600114612c1b5788919083612c10575b50508160011b916000199060031b1c1916176010555b7fa6f004921c944d4b8bf6e38462b00f36a58d62495d56b51f571ab78f732c98158680a1388080612959565b013590503880612bce565b6010899594939295528789209089955b89601f1985168810612c72575060019495965083601f19811610612c58575b505050811b01601055612be4565b0135600019600384901b60f8161c19169055388080612c4a565b8183013584559687019688965060019093019201612c2b565b909192935060108852868820601f840160051c8101888510612cd2575b90601f87969594930160051c01905b818110612cc45750612bb7565b898155869550600101612cb7565b5080612ca8565b634e487b7160e01b87526041600452602487fd5b600f80546001600160a01b0319169190911790557f0b2d6eb667d0522c3eb86e4288afecae6c11591ffd1345d4d12407e0598bca9b8980a138612952565b5034610334576040366003190112610334576112b7612d48612f79565b6024359033613d6f565b503461033457606036600319011261033457612d6c612f79565b612d74613017565b612d7c613026565b9060018060a01b03928391612d96836005541633146131fb565b15612e3a571690811590811591612e32575b5015612df557806005549283167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08580a36001600160a01b03199182161760055560068054909116905580f35b60405162461bcd60e51b81526020600482015260156024820152744f776e61626c653a207a65726f206164647265737360581b6044820152606490fd5b905038612da8565b9150501660018060a01b0319600654161760065580f35b5034610334578060031936011261033457808060018060a01b03600b541660405160208101906306fdde0360e01b825260048152612e8e8161315e565b51915afa612e9a614603565b915015612ef757612ead6103699161524c565b610f3e6034604051809373546170696f63612053696e67756c61726974792d60601b6020830152612ee78151809260208686019101612fcf565b81010360148101845201826131b0565b50610369612f036151f5565b612ead565b50346103345780600319360112610334576040612f236134de565b825191151582526020820152f35b905034610a50576040366003190112610a50576040602092612f51612f79565b612f59612f8f565b6001600160a01b0391821683526003865283832091168252845220548152f35b600435906001600160a01b0382168203610a5f57565b602435906001600160a01b0382168203610a5f57565b606435906001600160a01b0382168203610a5f57565b35906001600160a01b0382168203610a5f57565b60005b838110612fe25750506000910152565b8181015183820152602001612fd2565b9060209161300b81518092818552858086019101612fcf565b601f01601f1916010190565b602435908115158203610a5f57565b604435908115158203610a5f57565b9181601f84011215610a5f578235916001600160401b038311610a5f5760208381860195010111610a5f57565b60e0906003190112610a5f576001600160a01b03906004358281168103610a5f57916024359081168103610a5f5790604435906064359060843560ff81168103610a5f579060a4359060c43590565b60098110156130ca576000526007602052604060002090565b634e487b7160e01b600052602160045260246000fd5b90600182811c92168015613110575b60208310146130fa57565b634e487b7160e01b600052602260045260246000fd5b91607f16916130ef565b6001600160401b03811161312d57604052565b634e487b7160e01b600052604160045260246000fd5b606081019081106001600160401b0382111761312d57604052565b604081019081106001600160401b0382111761312d57604052565b608081019081106001600160401b0382111761312d57604052565b61010081019081106001600160401b0382111761312d57604052565b90601f801991011681019081106001600160401b0382111761312d57604052565b6001600160401b03811161312d57601f01601f191660200190565b359061ffff82168203610a5f57565b1561320257565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b1561324d57565b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881b9bdd081d985b1a59607a1b6044820152606490fd5b8181029291811591840414171561329957565b634e487b7160e01b600052601160045260246000fd5b81156132b9570490565b634e487b7160e01b600052601260045260246000fd5b604d811161329957600a0a90565b9190820391821161329957565b9190820180921161329957565b8181039291600013801582851316918412161761329957565b6014549192916133539161334a9161334091613336906001600160801b03831690613286565b9060801c906132af565b93601f5490613286565b6107d4836132cf565b8083106134155761336761339d91846132dd565b916133986107ce61338f601e54613389613380866132cf565b602154906132ea565b90613286565b6107d4846132cf565b6132f7565b6509184e72a0009081810291818305149015171561329957670de0b6b3a7640000918281029281840514901517156132995780156132b957600160ff1b91808314600019831416613299570590600082121561340e57811461329957600003905b808211613409575090565b905090565b50906133fe565b505050600090565b6001600160a01b0381166000818152601760205260408120549194939290919081156134c557916040916134a16134b99594836020865161345d8161315e565b828152015261347b8661346e613e4a565b5050505050939050613722565b815190936001600160801b039160209161349791841690613286565b92015116906132af565b8181106134bd57035b958152601860205220546137e8565b9091565b5050806134aa565b50509192505080918190565b51908115158203610a5f57565b60018060a01b03600f54169060409081519263d6d7d52560e01b845282846020928360048301526000601054613513816130e0565b908160248601526001908582821691826000146136b257505060011461366e575b5050600083809203925af18015613663576000948591613628575b509284156135ca57831561359057505081601155817f9f9192b5edb17356c524e08d9e025c8e2f6307e6ea52fb7968faa3081f51c3c8600080a25b42601355565b60649250519062461bcd60e51b8252600482015260146024820152734d61726b65743a20696e76616c6964207261746560601b6044820152fd5b909192506135dd601354601254906132ea565b42116135ee5750506011549061358a565b60649250519062461bcd60e51b82526004820152601460248201527313585c9ad95d0e881c985d19481d1bdbc81bdb1960621b6044820152fd5b9490508385813d831161365c575b61364081836131b0565b81010312610334575080613653856134d1565b9401513861354f565b503d613636565b83513d6000823e3d90fd5b915060106000528560002091866000935b83851061369757505050508201604401600083613534565b80548c8601604401528a97508b96509301928790820161367f565b8195506000949193506044925060ff191682840152151560051b8201019250613534565b156136dd57565b60405162461bcd60e51b815260206004820152601e60248201527f4d61726b65743a2065786368616e676552617465206e6f742076616c696400006044820152606490fd5b61372d8215156136d6565b60018060a01b036020816009541691600c5490600094168452601882526064604085205491604051948593849263442c159960e01b8452600484015260248301528660448301525afa9182156118435780926137b0575b5050906137a861379f6137ad93620186a06022540490613286565b601e5490613286565b6132af565b90565b9091506020823d82116137e0575b816137cb602093836131b0565b810103126103345750516137a861379f613784565b3d91506137be565b6137f38215156136d6565b602060018060a01b0360095416916064600c54604051948593849263442c159960e01b845260048401526024830152600060448301525afa908115610c5b57600091613860575b50906137a861384c9260225490613286565b620186a061385c601e5483613286565b0491565b906020823d821161388b575b81613879602093836131b0565b810103126103345750516137a861383a565b3d915061386c565b6001600160a01b031660008181526018602052604081205490926138b6916137e8565b9183526017602052604083205480156139bf5781156139bf578181106139bf57828110156139b5576014546138ff918391610de491613336906001600160801b03831690613286565b90620186a092838302928084048514901517156139a15761392492916107d4916132dd565b91601b5491601c549361393785856132f7565b80820291848212600160ff1b8214166139a157818305149015171561398d57058184820194851291129080158216911516176139795750808212613409575090565b634e487b7160e01b81526011600452602490fd5b634e487b7160e01b83526011600452602483fd5b634e487b7160e01b85526011600452602485fd5b50505050601b5490565b50505090565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03161480613ac6575b15613a20577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f000000000000000000000000000000000000000000000000000000000000000082527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a0815260c081018181106001600160401b0382111761312d5760405251902090565b507f000000000000000000000000000000000000000000000000000000000000000046146139f7565b15613af657565b60405162461bcd60e51b815260206004820152601660248201527545524332303a2062616c616e636520746f6f206c6f7760501b6044820152606490fd5b15613b3b57565b60405162461bcd60e51b815260206004820152601660248201527545524332303a206e6f207a65726f206164647265737360501b6044820152606490fd5b51906001600160a01b0382168203610a5f57565b519060ff82168203610a5f57565b60058110156130ca5780613bac5750565b60018103613bf45760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b6044820152606490fd5b60028103613c415760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606490fd5b600314613c4a57565b60405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608490fd5b9291906fa2a8918ca85bafe22016d0b997e4df60600160ff1b038311613d065791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa156118765781516001600160a01b03811615613d00579190565b50600190565b50505050600090600390565b60001981146132995760010190565b7fe50de2333c10a9502fcb1d8ae13a51bbf423153dfc63c2b8997665b32154afc360018060a01b038092169160009083825260036020526040822094169384825260205284604082205580a4565b909160207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259160018060a01b03809416938460005260028352604060002095169485600052825280604060002055604051908152a3565b60405190613dd382613143565b60006040838281528260208201520152565b60405190613df28261315e565b6014546001600160801b038116835260801c6020830152565b60405190613e188261315e565b6025546001600160801b038116835260801c6020830152565b6001600160801b03918216908216019190821161329957565b613e52613dc6565b5060006020604051613e638161315e565b828152015260006020604051613e788161315e565b828152015260405190613e8a82613143565b602454916001600160401b038316815260208101926001600160401b038160401c16845260801c60408201528092613ec0613de5565b92613ec9613e0b565b92600060018060a01b0360095416600e549460018060801b038751166040519063442c159960e01b8252876004830152602482015260006044820152602081606481865afa8015610c5b576000906142d6575b8951613f3292506001600160801b0316906132ea565b806142a1575060005b613f506001600160401b0382935116426132dd565b948515614277575050426001600160401b031660208a8101919091528801516001600160801b03161561422d57506020670de0b6b3a7640000613fb285613fad8c6001600160401b038d60018060801b0390511691511690613286565b613286565b895191900496906001600160801b0390613fd190828a16908316613e31565b168952875160405163442c159960e01b815260048101929092526001600160801b031660248201526000604482015291829060649082905afa8015610c5b576000906141f9575b875161402e92506001600160801b0316906132ea565b9261405c846137a8620186a0614046601a548a613286565b60208c01516001600160801b0316919004613286565b6040890180519195916001600160801b03808816929161407f9084908316613e31565b16905260208801805190916001600160801b039161409f91908316613e31565b169052806141c4575060005b602a549093848281101561413f576140c390836132dd565b90670de0b6b3a7640000820291808304670de0b6b3a76400001490151715613299576137a86141176141116141036001600160401b0396614121966132af565b93613fad602e549580613286565b836132ea565b91848d5116613286565b168089526001600160401b03602d541680911061413b5750565b8852565b909150602b5480821161415157505050565b61415a916132dd565b670de0b6b3a7640000810290808204670de0b6b3a76400001490151715613299576001600160401b03916137a861419d6141116141036141a695602c54906132af565b848d5116613286565b81602d5460401c168082116141bc575b50168852565b9050386141b6565b87516001600160801b0316670de0b6b3a7640000818102929180840490911490151715613299576141f4916132af565b6140ab565b506020813d602011614225575b81614213602093836131b0565b81010312610a5f5761402e9051614018565b3d9150614206565b9697939450509350506001600160401b038151166001600160401b03602f541680910361426b575b509392614260613e0b565b926000926000929190565b81526001925038614255565b97509850505050509250509161428b613de5565b91614294613e0b565b9160009160009190600090565b88516001600160801b0316670de0b6b3a7640000818102929180840490911490151715613299576142d1916132af565b613f3b565b506020813d602011614302575b816142f0602093836131b0565b81010312610a5f57613f329051613f1c565b3d91506142e3565b601480546001600160801b031660809290921b6001600160801b031916919091179055565b6144166020806143ec614340613e4a565b9396959390929015614418575050506001600160401b03602f54166000807f33af5ce86e8438eff54589f85332916444457dfa8685493fbd579b809097026b88604051838152a45b805185820151604092830151921b67ffffffffffffffff60401b166001600160401b03919091161760809190911b6001600160801b0319908116919091176024558151601480549092166001600160801b039182161790915594859101511661430a565b8051910151821660801b6001600160801b0319166001600160801b03929091169190911617602555565b565b7f33af5ce86e8438eff54589f85332916444457dfa8685493fbd579b809097026b886001600160401b0386511694604051908152a4614388565b1561445957565b60405162461bcd60e51b815260206004820152600e60248201526d13585c9ad95d0e881c185d5cd95960921b6044820152606490fd5b1561449657565b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881a5b9cdbdb1d995b9d607a1b6044820152606490fd5b156144d657565b606460405162461bcd60e51b815260206004820152602060248201527f4d61726b65743a2063616e6e6f742065786563757465206f6e20697473656c666044820152fd5b3561ffff81168103610a5f5790565b1561453057565b60405162461bcd60e51b815260206004820152601460248201527329a3a61d1024b73b30b634b21039bbb0b83832b960611b6044820152606490fd5b9190826040910312610a5f576020825192015190565b9081526001600160a01b0391821660208201529116604082015260006060820152608081019190915260a00190565b9035601e1982360301811215610a5f5701602081359101916001600160401b038211610a5f578136038313610a5f57565b908060209392818452848401376000828201840152601f01601f1916010190565b3d1561462e573d90614614826131d1565b9161462260405193846131b0565b82523d6000602084013e565b606090565b60008091604051602081019063313ce56760e01b8252600481526146568161315e565b51916001600160a01b03165afa61466b614603565b9080614696575b1561469057602081805181010312610a5f5760206137ad9101613b8d565b50601290565b506020815114614672565b919060018060a01b0380600094168452602060178152604085205490811561478f57601881526040862054801561478857816146db613de5565b9460095416916064600c54604051948593849263442c159960e01b8452600484015260248301528b60448301525afa968715611843578097614752575b505061349761473761379f61474d969798620186a06022540490613286565b95613fad60018060801b03948587511690613286565b111590565b9096508187813d8311614781575b61476a81836131b0565b810103126103345750945194613497614737614718565b503d614760565b5050505050565b5060019450505050565b91821580156147d4575b6134155760018101809111613299576147c2926133896137a8926132cf565b6005810180911161329957600a900490565b5081156147a3565b6001600160a01b03163381036147f0575050565b60008181526020906003825260409182822033835281528483832054106148595783825260038152828220338352815282822054600101614832575050505050565b61484d938252600381528282209033835252209182546132dd565b90553880808080614788565b60649083519062461bcd60e51b82526004820152601460248201527313585c9ad95d0e881b9bdd08185c1c1c9bdd995960621b6044820152fd5b600a5460405163dbd01de160e01b815260209290916001600160a01b039084908490600490829085165afa8015610c5b578493600091614942575b50918161ffff936044936040519889968795633a304d8b60e21b8752166004860152166024840152165afa908115610c5b5760009161490e575b50905090565b82813d831161493b575b61492281836131b0565b810103126103345750614934906134d1565b8038614908565b503d614918565b9091929381813d8311614979575b61495a81836131b0565b81010312610a50575190828216820361033457508392919060446148ce565b503d614950565b6001600160a01b039182168152911660208201526040810191909152606081019190915260800190565b6001600160801b03918216908216039190821161329957565b929060208093620186a06149d8835483613286565b04926149e2613de5565b966149ed85846132ea565b60409586516149fb8161315e565b6000808252960186905289516001600160801b0392908316614cd45782614a298c8280855b16915116613e31565b168b52614a6d8a8c0184614a4281851682845116613e31565b16809152614a6885849e511660018060801b031660018060801b03196014541617601455565b61430a565b6016548015908115614cc5575b5015614c8757859060018060a01b0380951680895260178c52898920614aa18382546132ea565b90558951918483528c8301527f3a5151e57d3bc9798e7853034ac52293d1a0e12a2b44725e75b03b21f86477a68a87891693a480614c66575b50878260095416946064600e5489519788938492638eb22cdd60e01b8452600484015260248301528960448301525afa938415614c5c578594614c2d575b508397614b23613e0b565b818101916103e88484511610614bf9575090614b73839283614b4d614b9a968a16828451166149aa565b1690819052602580546001600160801b0319166001600160801b03909216919091179055565b51602580546001600160801b03169290911660801b6001600160801b031916919091179055565b6009541690600e5490823b15610a64579184939184879694614bd2985198899586948593630208d92960e11b85523060048601614980565b03925af1918215614bef575050614be65750565b6144169061311a565b51903d90823e3d90fd5b60649089519062461bcd60e51b82526004820152600e60248201526d14d1d30e881b5a5b881b1a5b5a5d60921b6044820152fd5b9093508781813d8311614c55575b614c4581836131b0565b81010312610a6457519238614b18565b503d614c3b565b86513d87823e3d90fd5b82600a5416865260018952614c7f8787209182546132ea565b905538614ada565b875162461bcd60e51b8152600481018b9052601760248201527614d1d30e88189bdc9c9bddc818d85c081c995858da1959604a1b6044820152606490fd5b90508360145416111538614a7a565b828b8b81019280614d07614cf8614cee8688511684613286565b86865116906132af565b95856118008187511689613286565b10614d19575b908280614a2993614a20565b92908280614d29614a2994613d12565b959293505050614d0d565b90816020910312610a5f575161ffff81168103610a5f5790565b809103906101408212610a5f576040805192614d6984613143565b60808112610a5f578151614d7c81613179565b614d8584613b79565b815260208401516020820152614d9c838501613b79565b838201526060840151606082015284526080607f19820112610a5f5781908151614dc581613179565b6080850151815260a0850151602082015260c08501518382015260e08501516060820152602086015260ff190112610a5f57614e1e610120825193614e098561315e565b614e1661010082016134d1565b8552016134d1565b602083015282015290565b91926137ad959360206040845194606060018060a01b039687815116895284810151858a0152878482015116848a015201516060880152606083820151805160808a01528481015160a08a01528381015160c08a0152015160e088015201518051151561010087015201511515610120850152610140840152166101608201526101a0908161018082015201916145e2565b15614ec257565b60405162461bcd60e51b815260206004820152600f60248201526e0a68e987440dcdee840cadcdeeaced608b1b6044820152606490fd5b60208101805190939291906001600160801b03908116614f1a575090925050565b908161180081614f3d614f33614f469686511688613286565b828a5116906132af565b97511687613286565b10614f4d57565b906137ad90613d12565b92919060009160018060a01b0394858316845260206017815260408520548084116151ed575b5082156151b157614f8c613de5565b968582604051614f9b8161315e565b8281520152614faa8489614ef9565b9560018060801b039384614fc3818a16828d51166149aa565b168a52615002848b0186614fdc818a16828451166149aa565b16809152614a68878b9d511660018060801b031660018060801b03196014541617601455565b8287168252601784526040822061501a8782546132dd565b90558260095416600e549560405190638eb22cdd60e01b82528760048301528a6024830152600160448301528682606481865afa91821561192d578592615182575b5080602554169492803b15610a5f57826000916150929a83604051809d81958294630208d92960e11b8452308d60048601614980565b03925af1948515610c5b577fc8e512d8f188ca059984b5853d2bf653da902696b8512785b182b2c813789a6e98879661516c575b506150d49082841690613e31565b1660018060801b031960255416176025558383169081835260268752604083206027549081855288526040842054821160001461514557505081526026855260408120602754825285528060408120555b1561513f57508060095416955b60405195865216941692a4565b95615132565b9091835260268752604083209083528652615165604083209182546132dd565b9055615125565b61517791945061311a565b6000926150d46150c6565b9091508681813d83116151aa575b61519a81836131b0565b81010312610a645751903861505c565b503d615190565b6064906040519062461bcd60e51b82526004820152601560248201527453474c3a206e6f7468696e6720746f20726570617960581b6044820152fd5b925038614f7d565b604051906152028261315e565b60038252623f3f3f60e81b6020830152565b908151811015615225570160200190565b634e487b7160e01b600052603260045260246000fd5b60ff1660ff81146132995760010190565b8051604081106152c457508051810190602081818401930312610a5f576020810151906001600160401b038211610a5f570181603f82011215610a5f576020810151615297816131d1565b926152a560405194856131b0565b81845260408284010111610a5f576137ad916040602085019101612fcf565b6020929083036153b2576000805b60ff81168581109081615393575b50156152f4576152ef9061523b565b6152d2565b9260ff80941692615304846131d1565b9361531260405195866131b0565b808552615321601f19916131d1565b013687860137825b85811687811080615376575b1561536b5761536691906153606001600160f81b03196153558388615214565b5116871a9188615214565b5361523b565b615329565b505094505050905090565b506001600160f81b031961538a8286615214565b51161515615335565b6001600160f81b031991506153a89086615214565b51161515386152e0565b9150506137ad6151f556fe9ed03113de523cebfe5e49d5f8e12894b1c0d42ce805990461726444c90eab87ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa26469706673582212203847b1355984ac073ba1856ae43f8376e31cd4b28609edd9d6701120f9eb9a9864736f6c63430008120033", + "bytecode": "0x6101408060405234620001e5576200001781620001ea565b601381526001602082017f546170696f63612053696e67756c617269747900000000000000000000000000815260206040516200005481620001ea565b8381520192603160f81b845251902091208160e052610100918183524660a0526040519160208301907f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f92838352604085015260608401524660808401523060a084015260a0835260c083019280841060018060401b03851117620001cf5760408490525190206080523060c052610120908152600580546001600160a01b0319163390811790915560007f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a362013880601b5562015f90601c55612710601d55612ee06020557f0bd4060688a1800ae986e4840aebc924bb40b5bf44de4583df2257220b54b77c6026557f7d1dc38e60930664f8cbf495da6556ca091d2f92d6550877750c049864b182306027556161a86028556032602f55615349928362000207843960805183613904015260a051836139cf015260c051836138ce015260e0518361395301525182613979015251816139300152f35b634e487b7160e01b600052604160045260246000fd5b600080fd5b604081019081106001600160401b03821117620001cf5760405256fe608080604052600436101561001357600080fd5b600090813560e01c908162a02a2014612e585750806302ce728f14612e2f57806306fdde0314612d78578063078dfbe714612c79578063095ea7b314612c525780630c4e84f014612b3a57806318160ddd14612b195780631c9e379b14612ae05780631da8bf1014612a2b5780631ee9c8f2146125e357806323b872dd146124405780632a9399d91461202c578063313ce56714611ff8578063331960ff14611fda57806334d441d014611fbc5780633644e51514611fa157806337b6b7b914611f8357806338d52e0f14611f5a5780633ba0b9a914611f3c5780633f741adb14611f1757806340626d8b14611ef957806344de240a14611edb578063473e3ce714611ebd57806348e4163e14611e845780634d7f2a3414611e665780634e71e0c814611db8578063529898f214611d9b57806352f353eb14611d745780635514023214611d4d57806355c2ab9414611d235780635793546214611d0557806358db9afe146118c55780635dfe04e8146118665780636c3d8b8f1461183d57806370a082311461180457806372778547146117cc57806374645ff3146117a15780637dc0d1d0146117785780637ecebe001461173f5780637fa0b84e1461170d578063821226e8146116ef5780638285ef40146116bd5780638c5d0ed31461169f5780638da5cb5b14611676578063910dd7c8146113fd578063959916dc146113df57806395d89b411461132557806399a97028146112f55780639c5d7192146112d75780639e15e89f1461129c578063a9059cbb146111b9578063b0e21e8a1461119b578063b27c0e7414611160578063bb4cfe3b14611142578063ce8849ed14611119578063d3fb2a3814610c9d578063d49dffa714610651578063d505accf146104cb578063d8dfeb45146104a2578063dd62ed3e14610453578063de4065771461042a578063e0996cb61461040c578063e30c3978146103e3578063ea64dd56146103c5578063eec0f42e146103a7578063f42760b714610389578063f8ba4cff1461036d578063f9557ccb146103375763ffe04c661461031757600080fd5b346103345780600319360112610334576020602954604051908152f35b80fd5b5034610334578060031936011261033457602454604080516001600160801b038316815260809290921c602083015290f35b0390f35b503461033457806003193601126103345761038661423f565b80f35b50346103345780600319360112610334576020602a54604051908152f35b50346103345780600319360112610334576020600c54604051908152f35b50346103345780600319360112610334576020601f54604051908152f35b50346103345780600319360112610334576006546040516001600160a01b039091168152602090f35b50346103345780600319360112610334576020601d54604051908152f35b50346103345780600319360112610334576009546040516001600160a01b039091168152602090f35b50346103345760403660031901126103345761046d612ea0565b6040610477612eb6565b9260018060a01b03809316815260026020522091166000526020526020604060002054604051908152f35b5034610334578060031936011261033457600b546040516001600160a01b039091168152602090f35b5034610334576104da36612f46565b9083959495421161060c576105b8916105b09160018060a01b0394858a169687600052600460205260406000209081549161051483613c18565b90556040519060208201927f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e2668452600060408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e081526105748161312a565b51902061057f6138cb565b9060405190602082019261190160f01b845260228301526042820152604281526105a88161310f565b519020613ba0565b919091613aa1565b16036105c75761038692613c75565b60405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152606490fd5b60405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b5061014036600319011261033457610667612ea0565b606435151560643503610a5f576001600160401b038060843511610c9957606060843536036003190112610c995760a43511610a505760e060a43536036003190112610a505760803660c3190112610a5057600560005260076020527fbcdda56b5d08466ec462cbbe0adfa57cb0a15fcc8940ef68f702f21b787bc935546106f29060ff1615614362565b6106fa613474565b505061070461423f565b6107196001600160a01b0382163014156143df565b610727604460a4350161442a565b60c4356001600160a01b0381169003610a5f5761074a61074f9160c435906147a3565b614439565b60243580610afd575b506107da6107ac6107d46107ce6107b2620186a061077a602f5460443561321c565b0461078a60115491604435613280565b600d5460ff906107a2906001600160a01b0316614543565b1695869289613628565b906146a9565b6001600160a01b0386168752601860205260408720549061321c565b91613265565b90613245565b336001600160a01b03831603610aa9575b6107f590826146ec565b610836604061080760443584806148d3565b905060018060a01b0360095416600e548684518096819582946311a5cc7760e31b84528a309160048601614492565b03925af1908115610a9e578391610a6e575b50600d546001600160a01b03169060643515610a6857475b823b15610a645760405191633cb7ea1d60e11b8352600483015260018060a01b0384166024830152610100604483015260a4356004013561010483015261ffff6108ae602460a43501613182565b1661012483015261ffff6108c6604460a43501613182565b166101448301526001600160a01b036108e360a435606401612ecc565b166101648301526109af61094161091a610907608460a4350160a4356004016144c1565b60e06101848801526101e48701916144f2565b61092d60a480350160a4356004016144c1565b86830361010319016101a4880152906144f2565b6001600160a01b0361095760a43560c401612ecc565b166101c4850152838103600319016064850152606061099f6004608435016001600160a01b0361098682612ecc565b16845260843560248101356020860152604401906144c1565b91909281604082015201916144f2565b6001600160a01b0360c4358116608485015290939060e43590811690819003610a5f5760a4840152610104356001600160a01b03811690819003610a5f5760c4840152610124356001600160a01b0381169190829003610a5f5783879593818795819560e483015203925af18015610a5457610a3c575b50610386610a3783601154906145b1565b61439f565b610a45906130b0565b610a50578138610a26565b5080fd5b6040513d84823e3d90fd5b600080fd5b8480fd5b34610860565b610a90915060403d604011610a97575b610a888183613146565b81019061447c565b5038610848565b503d610a7e565b6040513d85823e3d90fd5b806107eb5760405162461bcd60e51b815260206004820152602160248201527f42696742616e673a20616c6c6f77616e63655368617265206e6f742076616c696044820152601960fa1b6064820152608490fd5b602060018060a01b0360095416916064600c546040519485938492638eb22cdd60e01b8452600484015260248301528760448301525afa908115610a9e578391610c67575b50610b4d81836146ec565b8015610bdb575b60018060a01b03821660005260186020526040600020610b75828254613280565b9055610b8381601554613280565b60155560018060a01b038216600052602560205260406000206027546000526020526040600020610bb5828254613280565b90556001600160a01b038216806000805160206152d4833981519152600080a438610758565b5060018060a01b03600954166020600c54606460405180948193638eb22cdd60e01b8352600483015260006024830152600060448301525afa908115610c5b57600091610c29575b50610b54565b906020823d602011610c53575b81610c4360209383613146565b8101031261033457505138610c23565b3d9150610c36565b6040513d6000823e3d90fd5b90506020813d602011610c91575b81610c8260209383613146565b81010312610a5f575138610b42565b3d9150610c75565b8280fd5b503461033457610160366003190112610334576001600160a01b039060043582811690819003610a50576001600160401b039260243584811161111557610ce8903690600401612f95565b909460443593838516809503610a5f57610d0784600554163314613191565b806110d7575b5081610f5a575b50509080929350610f1a575b505060643580610f02575b5060843580610eea575b5060a43580610ed3575b5060c43580610eaf575b5060e43580610e8b575b506101043580610e5a575b506101243580610de6575b506101443580610d77575080f35b601e548110610d8657601f5580f35b60405162461bcd60e51b815260206004820152603260248201527f4d61726b65743a206c69717569646174696f6e436f6c6c61746572616c697a616044820152711d1a5bdb94985d19481d1bdbc81cdb585b1b60721b6064820152608490fd5b610df5620186a08211156131dc565b601f548111610e0757601e5538610d69565b60405162461bcd60e51b815260206004820152602560248201527f4d61726b65743a20636f6c6c61746572616c697a6174696f6e5261746520746f6044820152646f2062696760d81b6064820152608490fd5b806016547fae6e0ab3b95f0a53ff9660a390ccedcbbf1f2355dce974a9841af106fddcfaba8480a360165538610d5e565b610e99620186a082106131dc565b610ea6601b5482116131dc565b601c5538610d53565b610ebd620186a082106131dc565b610eca601c5482106131dc565b601b5538610d49565b610ee1620186a082106131dc565b601d5538610d3f565b610ef9620186a08211156131dc565b601a5538610d35565b610f11620186a08211156131dc565b60195538610d2b565b816008549182167f5a62d22209e370e38eea92cfddcd228e656e6ec139243392a760a7769f5877fd8580a36001600160a01b031916176008553880610d20565b81116110c357610f6b601054612ff1565b601f8111611062575b5083601f8211600114610fdc5784958293949592610fd1575b50508160011b916000199060031b1c1916176010555b7fa6f004921c944d4b8bf6e38462b00f36a58d62495d56b51f571ab78f732c98158380a19082913880610d14565b013590503880610f8d565b60108552601f198216957f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae672918660205b89821061104a5750508360019596979810611030575b505050811b01601055610fa3565b0135600019600384901b60f8161c19169055388080611022565b8060018496829495870135815501950192019061100c565b601085527f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae672601f830160051c8101602084106110bc575b601f90920160051c01905b8181106110b15750610f74565b8581556001016110a4565b5080611099565b634e487b7160e01b84526041600452602484fd5b600f80546001600160a01b0319169190911790557f0b2d6eb667d0522c3eb86e4288afecae6c11591ffd1345d4d12407e0598bca9b8580a138610d0d565b8380fd5b50346103345780600319360112610334576008546040516001600160a01b039091168152602090f35b50346103345780600319360112610334576020601e54604051908152f35b50346103345780600319360112610334576060602354604051906001600160401b0380821683528160401c16602083015260801c6040820152f35b50346103345780600319360112610334576020601a54604051908152f35b5034610334576040366003190112610334576111d3612ea0565b6024358092811580159061128a575b61121a575b50506040519182526001600160a01b03169033906000805160206152f483398151915290602090a3602060405160018152f35b33815260016020526040812054611233838210156139f5565b6001600160a01b038416903382900361124e575b50506111e7565b60409361126591611260841515613a3a565b613273565b33835260016020528383205581522061127f838254613280565b905581388080611247565b50336001600160a01b038416146111e2565b50346103345760403660031901126103345760606112c46112bb612ea0565b602435906133b3565b9060405192835260208301526040820152f35b50346103345780600319360112610334576020602b54604051908152f35b503461033457604036600319011261033457602061131d611314612ea0565b60243590613799565b604051908152f35b5034610334578060031936011261033457808060018060a01b03600b541660405160208101906395d89b4160e01b825260048152611362816130f4565b51915afa61136e614513565b9150156113ce5761138161036991615162565b6113ba6023604051809362746d2d60e81b60208301526113aa8151809260208686019101612ee0565b8101036003810184520182613146565b604051918291602083526020830190612f03565b506103696113da61510b565b611381565b50346103345780600319360112610334576020602f54604051908152f35b5034610334576040366003190112610334576004356001600160401b038111610a505736602382011215610a505780600401359061143a82613167565b906114486040519283613146565b82825283602091828401943660248284010111610c99578060248593018737840101526024359061ffff8216809203610a5f576101009384848051810103126116725761149490613467565b906114a160408501613a7f565b6114ad60608601613a7f565b9560808601519560a0810151916114c660c08301613a93565b9060e08301519201519260018060a01b03808096169a169781421161162d57926105b09289888d9897946115a4978e8d600014611606577f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e266945b8c6000526004855260406000209283549361153a85613c18565b905560405195860196875260408601528c6060860152608085015260a084015260c083015260e082015260e081526115718161312a565b51902061157c6138cb565b90604051908a82019261190160f01b845260228301526042820152604281526105a88161310f565b16036115c25750156115b95761038692613c75565b61038692613c27565b6064906040519062461bcd60e51b82526004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152fd5b7f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d694611520565b60405162461bcd60e51b815260048101889052601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b8580fd5b50346103345780600319360112610334576005546040516001600160a01b039091168152602090f35b50346103345780600319360112610334576020601b54604051908152f35b5034610334578060031936011261033457601454604080516001600160801b038316815260809290921c602083015290f35b50346103345780600319360112610334576020602d54604051908152f35b50346103345760403660031901126103345761173461172a612ea0565b6024359033613c27565b602060405160018152f35b5034610334576020366003190112610334576020906040906001600160a01b03611767612ea0565b168152600483522054604051908152f35b5034610334578060031936011261033457600f546040516001600160a01b039091168152602090f35b50346103345780600319360112610334576103696040516113ba816117c58161302b565b0382613146565b50346103345760203660031901126103345760043590600982101561033457602060ff6117f884612fc2565b54166040519015158152f35b5034610334576020366003190112610334576020906040906001600160a01b0361182c612ea0565b168152600183522054604051908152f35b5034610334578060031936011261033457600a546040516001600160a01b039091168152602090f35b503461033457806003193601126103345761187f613ccc565b50608061188a613d50565b509350505050604051916001600160401b0380825116845260208201511660208401526040600180861b039101511660408301526060820152f35b50346103345760a0366003190112610334576118df612ea0565b6001600160a01b036064358181169392602435929091859003610a5f576084356001600160401b038111610a645761191b903690600401612f95565b949060066000526020966007885261193b60ff6040600020541615614362565b611943613474565b505061194d61423f565b8385169561195d308814156143df565b60048986600a54166040519283809263433e762d60e01b82525afa908115611cfa57836119959261074a928891611ccd575b506147a3565b61199f81876146ec565b600087815260188a52604081206119b7838254613273565b90556119c582601554613273565b6015558560095416600c54813b15610c9957836119fd92849283604051809681958294630208d92960e11b84528c3060048601614890565b03925af18015610a5457611cbe575b508183897f8ad4d3ff00da092c7ad9a573ea4f5f6a3dffc6712dc06d3f78f49b862297c4028480a487815260258a5260408120602754908183528b5260408220548311600014611c98575087815260258a526040812060275482528a5260408120555b600c54600e54604051633d9545e960e11b81526004810192909252602482015260006044820152606481019190915260016084820181905260a48201526101408160c481855afa908115611c8d5784604094939288928291611c5c575b50611af086519b8c968795869463efa84c6d60e01b86526044359060048701614d3f565b03925af1938415611c4f5781958295611c28575b50611b13604435871015614dd1565b81526017865260408120549186611b3184611b2c613ceb565b614e0f565b9160095416916064600e546040519485938492638eb22cdd60e01b845260048401526024830152600160448301525afa918215611c1c5791611be7575b5061131d93610a3793929111611b9457611b89908280614e6d565b505b601154906145b1565b50611b9d613ceb565b80516001600160801b03908116611bc2575050611bbc845b8280614e6d565b50611b8b565b8181611bd9611be2938a611bbc960151168961321c565b91511690613245565b611bb5565b929190508583813d8311611c15575b611c008183613146565b81010312610a5f57915190919061131d611b6e565b503d611bf6565b604051903d90823e3d90fd5b909450611c4591955060403d604011610a9757610a888183613146565b9490949338611b04565b50604051903d90823e3d90fd5b611c8091506101403d61014011611c86575b611c788183613146565b810190614c64565b38611acc565b503d611c6e565b6040513d86823e3d90fd5b9060409189825260258c528282209082528b5220611cb7828254613273565b9055611a6f565b611cc7906130b0565b38611a0c565b611ced91508d803d10611cf3575b611ce58183613146565b810190614c4a565b3861198f565b503d611cdb565b6040513d87823e3d90fd5b50346103345780600319360112610334576020601c54604051908152f35b503461033457806003193601126103345760206001600160401b03602c5460401c16604051908152f35b503461033457806003193601126103345760206001600160401b03602c5416604051908152f35b503461033457806003193601126103345760206001600160401b03602e5416604051908152f35b503461033457806003193601126103345760208054604051908152f35b50346103345780600319360112610334576006546001600160a01b039081811633819003611e2257806005549384167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08680a36001600160a01b0319928316176005551660065580f35b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b50346103345780600319360112610334576020602854604051908152f35b5034610334576020366003190112610334576020906040906001600160a01b03611eac612ea0565b168152601783522054604051908152f35b50346103345780600319360112610334576020601554604051908152f35b50346103345780600319360112610334576020600e54604051908152f35b50346103345780600319360112610334576020601654604051908152f35b503461033457606036600319011261033457602061131d6044356024356004356132a6565b50346103345780600319360112610334576020601154604051908152f35b5034610334578060031936011261033457600d546040516001600160a01b039091168152602090f35b50346103345780600319360112610334576020601254604051908152f35b5034610334578060031936011261033457602061131d6138cb565b50346103345780600319360112610334576020601954604051908152f35b50346103345780600319360112610334576020601354604051908152f35b5034610334578060031936011261033457600d54602090612021906001600160a01b0316614543565b60ff60405191168152f35b5060031961012036820112610a5057612043612ea0565b9061204c612f37565b90606435916001600160401b0390818411611672576060838536030112611672576084359182116116725760e08383360301126116725760803660a3190112611672576006600052602090600782526120ad60ff6040600020541615614362565b6120b5613474565b50506120bf61423f565b6001600160a01b03868116939092906120da308614156143df565b60448101916120e88361442a565b9760a435868116998a8203610a5f576121049161074a916147a3565b856009541697828c6064600c546040519c8d938492638eb22cdd60e01b84526004840152602435602484015260448301525afa9889156123da578b908d9a61240d575b50896121586122129b6040936146ec565b89600052601885528160002061216f828254613273565b905561217d81601554613273565b60155580308b7f8ad4d3ff00da092c7ad9a573ea4f5f6a3dffc6712dc06d3f78f49b862297c402600080a489600052602585528160002060275490816000528652826000205482116000146123e5575089600052602585528160002060275460005285526000828120555b8d896009541690600c54908451809e819582946311a5cc7760e31b84523090309060048601614492565b03925af19889156123da578c996123b8575b50600b54871695156123b15747975b863b156123ad5760405199633cb7ea1d60e11b8b5260048b015260248a01526044890161010090528684600401610104968135888d015261ffff908c8260248a0161227d90613182565b1690610124015261228d90613182565b166101448c0152816122a160648801612ecc565b166101648c01526122b560848701826144c1565b6101848d0160e090526101e48d01906122cd926144f2565b9060a487016122db916144c1565b8c830361010319016101a48e01526122f392916144f2565b9460c40161230090612ecc565b166101c48a015288840301606489015280600401918661231f84612ecc565b168452602482013590840152604401612337916144c1565b60606040840181905261234b9301916144f2565b95608486015260c435838116809103610a5f5760a486015260e435838116809103610a5f5760c486015235918216809203610a5f5783879593818795819560e483015203925af18015610a5457610a3c5750610386610a3783601154906145b1565b8c80fd5b3497612233565b6123d291995060403d604011610a9757610a888183613146565b509738612224565b6040513d8e823e3d90fd5b8a600052602586528260002090600052855281600020612406828254613273565b90556121e8565b809a50848092503d8311612439575b6124268183613146565b81010312610a5f579751978a6040612147565b503d61241c565b50346103345760603660031901126103345761245a612ea0565b90612463612eb6565b60443591826124a1575b506040519182526001600160a01b039081169216906000805160206152f483398151915290602090a3602060405160018152f35b6001600160a01b038481168083526001602090815260408420549286906124ca828610156139f5565b8616938484036124df575b505050505061246d565b8386526002835260408620336000528352604060002054600019810361254d575b509260016020969361252b87946040976112606000805160206152f48339815191529c9a1515613a3a565b9285525283832055815220612541858254613280565b905591388085816124d5565b909181106125a3579260016020969361252b8a6000805160206152f48339815191529a989561257e8260409a613273565b8689526002855289892033600052855289600020559497509497995050939650612500565b60405162461bcd60e51b815260048101849052601860248201527745524332303a20616c6c6f77616e636520746f6f206c6f7760401b6044820152606490fd5b50346103345760c0366003190112610334576125fd612ea0565b60643591906001600160a01b0360843581811692908390036111155760a4356001600160401b038111610a6457612638903690600401612f95565b9093600586526020966007885261265660ff60408920541615614362565b61265e613474565b505061266861423f565b84841691612678308414156143df565b60048987600a54166040519283809263433e762d60e01b82525afa908115612a2057826126af9261074a928c91611ccd57506147a3565b856009541693600e549060405191638eb22cdd60e01b968784528160048501526044356024850152600160448501528c84606481845afa9384156123da578c946129f1575b5083612997575b505061276461270d602435858a6148d3565b905061271f600e5491600c5495613280565b60405180938192633d9545e960e11b83526101409788956004850160a091949360019360c0830196835260208301526000604083015260608201528260808201520152565b0381875afa92831561298c5788936040959387938e938493612967575b50506127a39087519d8e978896879563efa84c6d60e01b875260048701614d3f565b03925af195861561295c578796612933575b506127c290871015614dd1565b6127cc85846146ec565b8491600095156128c3575b5080855260188752604085206127ee838254613280565b90556127fc82601554613280565b601555600c54948460095416803b15610a5f57836000916128369883604051809b81958294630208d92960e11b8452308d60048601614890565b03925af1948515610c5b5761131d96610a37966128a1575b506000805160206152d48339815191529083835260258a526040832060275484528a5260408320612880868254613280565b9055821561289b5780600954165b169180a4601154906145b1565b8561288e565b6128ac9192506130b0565b6000906000805160206152d483398151915261284e565b909150868460095416916064600c54916040519485938492835260048301528960248301528960448301525afa908115611cfa578591612906575b5090386127d7565b90508681813d831161292c575b61291d8183613146565b81010312610a645751386128fe565b503d612913565b6127c2975061295291965060403d604011610a9757610a888183613146565b96909695906127b5565b6040513d89823e3d90fd5b6127a3929350908161298492903d10611c8657611c788183613146565b919038612781565b6040513d8d823e3d90fd5b803b156129ed5783918c9186838c6129c560405197889687958694630208d92960e11b865260048601614890565b03925af1801561298c576129da575b806126fb565b6129e6909a919a6130b0565b98386129d4565b8b80fd5b9093508c81813d8311612a19575b612a098183613146565b810103126129ed575192386126f4565b503d6129ff565b6040513d8b823e3d90fd5b503461033457612a3a36612f46565b9083959495421161060c57612ad1916105b09160018060a01b03948a868b169788825260046020526040822090815491612a7383613c18565b90556040519160208301937f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d6855260408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e081526105748161312a565b16036105c75761038692613c27565b5034610334576020366003190112610334576020906040906001600160a01b03612b08612ea0565b168152601883522054604051908152f35b5034610334578060031936011261033457602060245460801c604051908152f35b5034610334576040366003190112610334576004356009811015610a5057612b60612f28565b6008549091906001600160a01b03163303612c165760ff612b8082612fc2565b54161515911515918214612bdc57808260ff612b9e612bcc94612fc2565b54161515827feeec81de25875ce1725479bb76f720a8defdb43dea041919ae37bb4aae9847c08780a4612fc2565b9060ff8019835416911617905580f35b60405162461bcd60e51b81526020600482015260126024820152714d61726b65743a2073616d6520737461746560701b6044820152606490fd5b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881d5b985d5d1a1bdc9a5e995960621b6044820152606490fd5b503461033457604036600319011261033457611734612c6f612ea0565b6024359033613c75565b503461033457606036600319011261033457612c93612ea0565b612c9b612f28565b612ca3612f37565b9060018060a01b03928391612cbd83600554163314613191565b15612d61571690811590811591612d59575b5015612d1c57806005549283167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08580a36001600160a01b03199182161760055560068054909116905580f35b60405162461bcd60e51b81526020600482015260156024820152744f776e61626c653a207a65726f206164647265737360581b6044820152606490fd5b905038612ccf565b9150501660018060a01b0319600654161760065580f35b5034610334578060031936011261033457808060018060a01b03600b541660405160208101906306fdde0360e01b825260048152612db5816130f4565b51915afa612dc1614513565b915015612e1e57612dd461036991615162565b6113ba6034604051809373546170696f63612053696e67756c61726974792d60601b6020830152612e0e8151809260208686019101612ee0565b8101036014810184520182613146565b50610369612e2a61510b565b612dd4565b50346103345780600319360112610334576040612e4a613474565b825191151582526020820152f35b905034610a50576040366003190112610a50576040602092612e78612ea0565b612e80612eb6565b6001600160a01b0391821683526003865283832091168252845220548152f35b600435906001600160a01b0382168203610a5f57565b602435906001600160a01b0382168203610a5f57565b35906001600160a01b0382168203610a5f57565b60005b838110612ef35750506000910152565b8181015183820152602001612ee3565b90602091612f1c81518092818552858086019101612ee0565b601f01601f1916010190565b602435908115158203610a5f57565b604435908115158203610a5f57565b60e0906003190112610a5f576001600160a01b03906004358281168103610a5f57916024359081168103610a5f5790604435906064359060843560ff81168103610a5f579060a4359060c43590565b9181601f84011215610a5f578235916001600160401b038311610a5f5760208381860195010111610a5f57565b6009811015612fdb576000526007602052604060002090565b634e487b7160e01b600052602160045260246000fd5b90600182811c92168015613021575b602083101461300b57565b634e487b7160e01b600052602260045260246000fd5b91607f1691613000565b6010546000929161303b82612ff1565b908181526001928381169081600014613095575060011461305b57505050565b9092935060106000526020928360002092846000945b8386106130815750505050010190565b805485870183015294019385908201613071565b91935050602093945060ff191683830152151560051b010190565b6001600160401b0381116130c357604052565b634e487b7160e01b600052604160045260246000fd5b606081019081106001600160401b038211176130c357604052565b604081019081106001600160401b038211176130c357604052565b608081019081106001600160401b038211176130c357604052565b61010081019081106001600160401b038211176130c357604052565b90601f801991011681019081106001600160401b038211176130c357604052565b6001600160401b0381116130c357601f01601f191660200190565b359061ffff82168203610a5f57565b1561319857565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b156131e357565b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881b9bdd081d985b1a59607a1b6044820152606490fd5b8181029291811591840414171561322f57565b634e487b7160e01b600052601160045260246000fd5b811561324f570490565b634e487b7160e01b600052601260045260246000fd5b604d811161322f57600a0a90565b9190820391821161322f57565b9190820180921161322f57565b8181039291600013801582851316918412161761322f57565b6014549192916132e9916132e0916132d6916132cc906001600160801b0383169061321c565b9060801c90613245565b93601f549061321c565b6107d483613265565b8083106133ab576132fd6133339184613273565b9161332e6107ce613325601e5461331f61331686613265565b60205490613280565b9061321c565b6107d484613265565b61328d565b6509184e72a0009081810291818305149015171561322f57670de0b6b3a76400009182810292818405149015171561322f57801561324f57600160ff1b9180831460001983141661322f57059060008212156133a457811461322f57600003905b80821161339f575090565b905090565b5090613394565b505050600090565b6001600160a01b03811660008181526017602052604081205491949392909190811561345b579160409161343761344f959483602086516133f3816130f4565b828152015261341186613404613d50565b5050505050939050613628565b815190936001600160801b039160209161342d9184169061321c565b9201511690613245565b81811061345357035b958152601860205220546136ee565b9091565b505080613440565b50509192505080918190565b51908115158203610a5f57565b600f546040805163d6d7d52560e01b8152602060048201529290916001600160a01b03168284806134a76024820161302b565b0381600080955af180156135d05781948291613594575b509284156135375783156134fd57507f9f9192b5edb17356c524e08d9e025c8e2f6307e6ea52fb7968faa3081f51c3c883918260115580a25b42601355565b5162461bcd60e51b81526020600482015260146024820152734d61726b65743a20696e76616c6964207261746560601b6044820152606490fd5b9192505061354a60135460125490613280565b421161355a5750601154906134f7565b5162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881c985d19481d1bdbc81bdb1960621b6044820152606490fd5b809550848092503d83116135c9575b6135ad8183613146565b810103126103345760206135c085613467565b940151386134be565b503d6135a3565b508251903d90823e3d90fd5b156135e357565b60405162461bcd60e51b815260206004820152601e60248201527f4d61726b65743a2065786368616e676552617465206e6f742076616c696400006044820152606490fd5b6136338215156135dc565b60018060a01b036020816009541691600c5490600094168452601882526064604085205491604051948593849263442c159960e01b8452600484015260248301528660448301525afa918215611c1c5780926136b6575b5050906136ae6136a56136b393620186a0602154049061321c565b601e549061321c565b613245565b90565b9091506020823d82116136e6575b816136d160209383613146565b810103126103345750516136ae6136a561368a565b3d91506136c4565b6136f98215156135dc565b602060018060a01b0360095416916064600c54604051948593849263442c159960e01b845260048401526024830152600060448301525afa908115610c5b57600091613766575b50906136ae613752926021549061321c565b620186a0613762601e548361321c565b0491565b906020823d8211613791575b8161377f60209383613146565b810103126103345750516136ae613740565b3d9150613772565b6001600160a01b031660008181526018602052604081205490926137bc916136ee565b9183526017602052604083205480156138c55781156138c5578181106138c557828110156138bb57601454613805918391611260916132cc906001600160801b0383169061321c565b90620186a092838302928084048514901517156138a75761382a92916107d491613273565b91601b5491601c549361383d858561328d565b80820291848212600160ff1b8214166138a7578183051490151715613893570581848201948512911290801582169115161761387f575080821261339f575090565b634e487b7160e01b81526011600452602490fd5b634e487b7160e01b83526011600452602483fd5b634e487b7160e01b85526011600452602485fd5b50505050601b5490565b50505090565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031614806139cc575b15613926577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f000000000000000000000000000000000000000000000000000000000000000082527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a0815260c081018181106001600160401b038211176130c35760405251902090565b507f000000000000000000000000000000000000000000000000000000000000000046146138fd565b156139fc57565b60405162461bcd60e51b815260206004820152601660248201527545524332303a2062616c616e636520746f6f206c6f7760501b6044820152606490fd5b15613a4157565b60405162461bcd60e51b815260206004820152601660248201527545524332303a206e6f207a65726f206164647265737360501b6044820152606490fd5b51906001600160a01b0382168203610a5f57565b519060ff82168203610a5f57565b6005811015612fdb5780613ab25750565b60018103613afa5760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b6044820152606490fd5b60028103613b475760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606490fd5b600314613b5057565b60405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608490fd5b9291906fa2a8918ca85bafe22016d0b997e4df60600160ff1b038311613c0c5791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa15611c4f5781516001600160a01b03811615613c06579190565b50600190565b50505050600090600390565b600019811461322f5760010190565b7fe50de2333c10a9502fcb1d8ae13a51bbf423153dfc63c2b8997665b32154afc360018060a01b038092169160009083825260036020526040822094169384825260205284604082205580a4565b909160207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259160018060a01b03809416938460005260028352604060002095169485600052825280604060002055604051908152a3565b60405190613cd9826130d9565b60006040838281528260208201520152565b60405190613cf8826130f4565b6014546001600160801b038116835260801c6020830152565b60405190613d1e826130f4565b6024546001600160801b038116835260801c6020830152565b6001600160801b03918216908216019190821161322f57565b613d58613ccc565b5060006020604051613d69816130f4565b828152015260006020604051613d7e816130f4565b8281520152604051613d8f816130d9565b6023546001600160401b03811682526001600160401b038160401c16602083015260801c60408201528091613dc2613ceb565b91613dcb613d11565b600954600e54825160405163442c159960e01b8152600481018390526001600160801b03909116602482015260006044820181905293959194919391926001600160a01b031690602081606481855afa8015610c5b576000906141e6575b8851613e3f92506001600160801b031690613280565b806141b1575060005b80613e606001600160401b0360208701511642613273565b948515614187575050426001600160401b031660208a8101919091528801516001600160801b03161561413d57506020670de0b6b3a7640000613ec285613ebd8c6001600160401b038d60018060801b039051169151169061321c565b61321c565b895191900496906001600160801b0390613ee190828a16908316613d37565b168952875160405163442c159960e01b815260048101929092526001600160801b031660248201526000604482015291829060649082905afa8015610c5b57600090614109575b8751613f3e92506001600160801b031690613280565b92613f6c846136ae620186a0613f56601a548a61321c565b60208c01516001600160801b031691900461321c565b6040890180519195916001600160801b038088169291613f8f9084908316613d37565b16905260208801805190916001600160801b0391613faf91908316613d37565b169052806140d4575060005b6029549093848281101561404f57613fd39083613273565b90670de0b6b3a7640000820291808304670de0b6b3a7640000149015171561322f576136ae6140276140216140136001600160401b039661403196613245565b93613ebd602d54958061321c565b83613280565b91848d511661321c565b168089526001600160401b03602c541680911061404b5750565b8852565b909150602a5480821161406157505050565b61406a91613273565b670de0b6b3a7640000810290808204670de0b6b3a7640000149015171561322f576001600160401b03916136ae6140ad6140216140136140b695602b5490613245565b848d511661321c565b81602c5460401c168082116140cc575b50168852565b9050386140c6565b87516001600160801b0316670de0b6b3a764000081810292918084049091149015171561322f5761410491613245565b613fbb565b506020813d602011614135575b8161412360209383613146565b81010312610a5f57613f3e9051613f28565b3d9150614116565b9697939450509350506001600160401b038151166001600160401b03602e541680910361417b575b509392614170613d11565b926000926000929190565b81526001925038614165565b97509850505050509250509161419b613ceb565b916141a4613d11565b9160009160009190600090565b87516001600160801b0316670de0b6b3a764000081810292918084049091149015171561322f576141e191613245565b613e48565b506020813d602011614212575b8161420060209383613146565b81010312610a5f57613e3f9051613e29565b3d91506141f3565b601480546001600160801b031660809290921b6001600160801b031916919091179055565b6143266020806142fc614250613d50565b9396959390929015614328575050506001600160401b03602e54166000807f33af5ce86e8438eff54589f85332916444457dfa8685493fbd579b809097026b88604051838152a45b805185820151604092830151921b67ffffffffffffffff60401b166001600160401b03919091161760809190911b6001600160801b0319908116919091176023558151601480549092166001600160801b039182161790915594859101511661421a565b8051910151821660801b6001600160801b0319166001600160801b03929091169190911617602455565b565b7f33af5ce86e8438eff54589f85332916444457dfa8685493fbd579b809097026b886001600160401b0386511694604051908152a4614298565b1561436957565b60405162461bcd60e51b815260206004820152600e60248201526d13585c9ad95d0e881c185d5cd95960921b6044820152606490fd5b156143a657565b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881a5b9cdbdb1d995b9d607a1b6044820152606490fd5b156143e657565b606460405162461bcd60e51b815260206004820152602060248201527f4d61726b65743a2063616e6e6f742065786563757465206f6e20697473656c666044820152fd5b3561ffff81168103610a5f5790565b1561444057565b60405162461bcd60e51b815260206004820152601460248201527329a3a61d1024b73b30b634b21039bbb0b83832b960611b6044820152606490fd5b9190826040910312610a5f576020825192015190565b9081526001600160a01b0391821660208201529116604082015260006060820152608081019190915260a00190565b9035601e1982360301811215610a5f5701602081359101916001600160401b038211610a5f578136038313610a5f57565b908060209392818452848401376000828201840152601f01601f1916010190565b3d1561453e573d9061452482613167565b916145326040519384613146565b82523d6000602084013e565b606090565b60008091604051602081019063313ce56760e01b825260048152614566816130f4565b51916001600160a01b03165afa61457b614513565b90806145a6575b156145a057602081805181010312610a5f5760206136b39101613a93565b50601290565b506020815114614582565b919060018060a01b0380600094168452602060178152604085205490811561469f57601881526040862054801561469857816145eb613ceb565b9460095416916064600c54604051948593849263442c159960e01b8452600484015260248301528b60448301525afa968715611c1c578097614662575b505061342d6146476136a561465d969798620186a0602154049061321c565b95613ebd60018060801b0394858751169061321c565b111590565b9096508187813d8311614691575b61467a8183613146565b81010312610334575094519461342d614647614628565b503d614670565b5050505050565b5060019450505050565b91821580156146e4575b6133ab576001810180911161322f576146d29261331f6136ae92613265565b6005810180911161322f57600a900490565b5081156146b3565b6001600160a01b0316338103614700575050565b60008181526020906003825260409182822033835281528483832054106147695783825260038152828220338352815282822054600101614742575050505050565b61475d93825260038152828220903383525220918254613273565b90553880808080614698565b60649083519062461bcd60e51b82526004820152601460248201527313585c9ad95d0e881b9bdd08185c1c1c9bdd995960621b6044820152fd5b600a5460405163dbd01de160e01b815260209290916001600160a01b039084908490600490829085165afa8015610c5b578493600091614852575b50918161ffff936044936040519889968795633a304d8b60e21b8752166004860152166024840152165afa908115610c5b5760009161481e575b50905090565b82813d831161484b575b6148328183613146565b81010312610334575061484490613467565b8038614818565b503d614828565b9091929381813d8311614889575b61486a8183613146565b81010312610a50575190828216820361033457508392919060446147de565b503d614860565b6001600160a01b039182168152911660208201526040810191909152606081019190915260800190565b6001600160801b03918216908216039190821161322f57565b92909192620186a06148e7602f548661321c565b046148f0613ceb565b946148fb8282613280565b9460409384519661490b886130f4565b60008089526020988901819052895190956001600160801b039290918316614bea578261493f8c8280855b16915116613d37565b168b526149838a8c018461495881851682845116613d37565b1680915261497e85849e511660018060801b031660018060801b03196014541617601455565b61421a565b6016548015908115614bdb575b5015614b9d57859060018060a01b0380951680895260178c528989206149b7838254613280565b90558951918483528c8301527f3a5151e57d3bc9798e7853034ac52293d1a0e12a2b44725e75b03b21f86477a68a87891693a480614b7c575b50878260095416946064600e5489519788938492638eb22cdd60e01b8452600484015260248301528960448301525afa938415614b72578594614b43575b508397614a39613d11565b818101916103e88484511610614b0f575090614a89839283614a63614ab0968a16828451166148ba565b1690819052602480546001600160801b0319166001600160801b03909216919091179055565b51602480546001600160801b03169290911660801b6001600160801b031916919091179055565b6009541690600e5490823b15610a64579184939184879694614ae8985198899586948593630208d92960e11b85523060048601614890565b03925af1918215614b05575050614afc5750565b614326906130b0565b51903d90823e3d90fd5b60649089519062461bcd60e51b82526004820152600e60248201526d14d1d30e881b5a5b881b1a5b5a5d60921b6044820152fd5b9093508781813d8311614b6b575b614b5b8183613146565b81010312610a6457519238614a2e565b503d614b51565b86513d87823e3d90fd5b82600a5416865260018952614b95878720918254613280565b9055386149f0565b875162461bcd60e51b8152600481018b9052601760248201527614d1d30e88189bdc9c9bddc818d85c081c995858da1959604a1b6044820152606490fd5b90508360145416111538614990565b828b8b81019280614c1d614c0e614c04868851168461321c565b8686511690613245565b9585611bd9818751168961321c565b10614c2f575b90828061493f93614936565b92908280614c3f61493f94613c18565b959293505050614c23565b90816020910312610a5f575161ffff81168103610a5f5790565b809103906101408212610a5f576040805192614c7f846130d9565b60808112610a5f578151614c928161310f565b614c9b84613a7f565b815260208401516020820152614cb2838501613a7f565b838201526060840151606082015284526080607f19820112610a5f5781908151614cdb8161310f565b6080850151815260a0850151602082015260c08501518382015260e08501516060820152602086015260ff190112610a5f57614d34610120825193614d1f856130f4565b614d2c6101008201613467565b855201613467565b602083015282015290565b91926136b3959360206040845194606060018060a01b039687815116895284810151858a0152878482015116848a015201516060880152606083820151805160808a01528481015160a08a01528381015160c08a0152015160e088015201518051151561010087015201511515610120850152610140840152166101608201526101a0908161018082015201916144f2565b15614dd857565b60405162461bcd60e51b815260206004820152600f60248201526e0a68e987440dcdee840cadcdeeaced608b1b6044820152606490fd5b60208101805190939291906001600160801b03908116614e30575090925050565b9081611bd981614e53614e49614e5c968651168861321c565b828a511690613245565b9751168761321c565b10614e6357565b906136b390613c18565b92919060009160018060a01b039485831684526020601781526040852054808411615103575b5082156150c757614ea2613ceb565b968582604051614eb1816130f4565b8281520152614ec08489614e0f565b9560018060801b039384614ed9818a16828d51166148ba565b168a52614f18848b0186614ef2818a16828451166148ba565b1680915261497e878b9d511660018060801b031660018060801b03196014541617601455565b82871682526017845260408220614f30878254613273565b90558260095416600e549560405190638eb22cdd60e01b82528760048301528a6024830152600160448301528682606481865afa918215611cfa578592615098575b5080602454169492803b15610a5f5782600091614fa89a83604051809d81958294630208d92960e11b8452308d60048601614890565b03925af1948515610c5b577fc8e512d8f188ca059984b5853d2bf653da902696b8512785b182b2c813789a6e988796615082575b50614fea9082841690613d37565b1660018060801b031960245416176024558383169081835260258752604083206026549081855288526040842054821160001461505b57505081526025855260408120602654825285528060408120555b1561505557508060095416955b60405195865216941692a4565b95615048565b909183526025875260408320908352865261507b60408320918254613273565b905561503b565b61508d9194506130b0565b600092614fea614fdc565b9091508681813d83116150c0575b6150b08183613146565b81010312610a6457519038614f72565b503d6150a6565b6064906040519062461bcd60e51b82526004820152601560248201527453474c3a206e6f7468696e6720746f20726570617960581b6044820152fd5b925038614e93565b60405190615118826130f4565b60038252623f3f3f60e81b6020830152565b90815181101561513b570160200190565b634e487b7160e01b600052603260045260246000fd5b60ff1660ff811461322f5760010190565b8051604081106151da57508051810190602081818401930312610a5f576020810151906001600160401b038211610a5f570181603f82011215610a5f5760208101516151ad81613167565b926151bb6040519485613146565b81845260408284010111610a5f576136b3916040602085019101612ee0565b6020929083036152c8576000805b60ff811685811090816152a9575b501561520a5761520590615151565b6151e8565b9260ff8094169261521a84613167565b936152286040519586613146565b808552615237601f1991613167565b013687860137825b8581168781108061528c575b156152815761527c91906152766001600160f81b031961526b838861512a565b5116871a918861512a565b53615151565b61523f565b505094505050905090565b506001600160f81b03196152a0828661512a565b5116151561524b565b6001600160f81b031991506152be908661512a565b51161515386151f6565b9150506136b361510b56fe9ed03113de523cebfe5e49d5f8e12894b1c0d42ce805990461726444c90eab87ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa264697066735822122031ecdd56d2974cea8d52e59827623447bd12db91d83dc789de7f160f3febe1e164736f6c63430008120033", + "deployedBytecode": "0x608080604052600436101561001357600080fd5b600090813560e01c908162a02a2014612e585750806302ce728f14612e2f57806306fdde0314612d78578063078dfbe714612c79578063095ea7b314612c525780630c4e84f014612b3a57806318160ddd14612b195780631c9e379b14612ae05780631da8bf1014612a2b5780631ee9c8f2146125e357806323b872dd146124405780632a9399d91461202c578063313ce56714611ff8578063331960ff14611fda57806334d441d014611fbc5780633644e51514611fa157806337b6b7b914611f8357806338d52e0f14611f5a5780633ba0b9a914611f3c5780633f741adb14611f1757806340626d8b14611ef957806344de240a14611edb578063473e3ce714611ebd57806348e4163e14611e845780634d7f2a3414611e665780634e71e0c814611db8578063529898f214611d9b57806352f353eb14611d745780635514023214611d4d57806355c2ab9414611d235780635793546214611d0557806358db9afe146118c55780635dfe04e8146118665780636c3d8b8f1461183d57806370a082311461180457806372778547146117cc57806374645ff3146117a15780637dc0d1d0146117785780637ecebe001461173f5780637fa0b84e1461170d578063821226e8146116ef5780638285ef40146116bd5780638c5d0ed31461169f5780638da5cb5b14611676578063910dd7c8146113fd578063959916dc146113df57806395d89b411461132557806399a97028146112f55780639c5d7192146112d75780639e15e89f1461129c578063a9059cbb146111b9578063b0e21e8a1461119b578063b27c0e7414611160578063bb4cfe3b14611142578063ce8849ed14611119578063d3fb2a3814610c9d578063d49dffa714610651578063d505accf146104cb578063d8dfeb45146104a2578063dd62ed3e14610453578063de4065771461042a578063e0996cb61461040c578063e30c3978146103e3578063ea64dd56146103c5578063eec0f42e146103a7578063f42760b714610389578063f8ba4cff1461036d578063f9557ccb146103375763ffe04c661461031757600080fd5b346103345780600319360112610334576020602954604051908152f35b80fd5b5034610334578060031936011261033457602454604080516001600160801b038316815260809290921c602083015290f35b0390f35b503461033457806003193601126103345761038661423f565b80f35b50346103345780600319360112610334576020602a54604051908152f35b50346103345780600319360112610334576020600c54604051908152f35b50346103345780600319360112610334576020601f54604051908152f35b50346103345780600319360112610334576006546040516001600160a01b039091168152602090f35b50346103345780600319360112610334576020601d54604051908152f35b50346103345780600319360112610334576009546040516001600160a01b039091168152602090f35b50346103345760403660031901126103345761046d612ea0565b6040610477612eb6565b9260018060a01b03809316815260026020522091166000526020526020604060002054604051908152f35b5034610334578060031936011261033457600b546040516001600160a01b039091168152602090f35b5034610334576104da36612f46565b9083959495421161060c576105b8916105b09160018060a01b0394858a169687600052600460205260406000209081549161051483613c18565b90556040519060208201927f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e2668452600060408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e081526105748161312a565b51902061057f6138cb565b9060405190602082019261190160f01b845260228301526042820152604281526105a88161310f565b519020613ba0565b919091613aa1565b16036105c75761038692613c75565b60405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152606490fd5b60405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b5061014036600319011261033457610667612ea0565b606435151560643503610a5f576001600160401b038060843511610c9957606060843536036003190112610c995760a43511610a505760e060a43536036003190112610a505760803660c3190112610a5057600560005260076020527fbcdda56b5d08466ec462cbbe0adfa57cb0a15fcc8940ef68f702f21b787bc935546106f29060ff1615614362565b6106fa613474565b505061070461423f565b6107196001600160a01b0382163014156143df565b610727604460a4350161442a565b60c4356001600160a01b0381169003610a5f5761074a61074f9160c435906147a3565b614439565b60243580610afd575b506107da6107ac6107d46107ce6107b2620186a061077a602f5460443561321c565b0461078a60115491604435613280565b600d5460ff906107a2906001600160a01b0316614543565b1695869289613628565b906146a9565b6001600160a01b0386168752601860205260408720549061321c565b91613265565b90613245565b336001600160a01b03831603610aa9575b6107f590826146ec565b610836604061080760443584806148d3565b905060018060a01b0360095416600e548684518096819582946311a5cc7760e31b84528a309160048601614492565b03925af1908115610a9e578391610a6e575b50600d546001600160a01b03169060643515610a6857475b823b15610a645760405191633cb7ea1d60e11b8352600483015260018060a01b0384166024830152610100604483015260a4356004013561010483015261ffff6108ae602460a43501613182565b1661012483015261ffff6108c6604460a43501613182565b166101448301526001600160a01b036108e360a435606401612ecc565b166101648301526109af61094161091a610907608460a4350160a4356004016144c1565b60e06101848801526101e48701916144f2565b61092d60a480350160a4356004016144c1565b86830361010319016101a4880152906144f2565b6001600160a01b0361095760a43560c401612ecc565b166101c4850152838103600319016064850152606061099f6004608435016001600160a01b0361098682612ecc565b16845260843560248101356020860152604401906144c1565b91909281604082015201916144f2565b6001600160a01b0360c4358116608485015290939060e43590811690819003610a5f5760a4840152610104356001600160a01b03811690819003610a5f5760c4840152610124356001600160a01b0381169190829003610a5f5783879593818795819560e483015203925af18015610a5457610a3c575b50610386610a3783601154906145b1565b61439f565b610a45906130b0565b610a50578138610a26565b5080fd5b6040513d84823e3d90fd5b600080fd5b8480fd5b34610860565b610a90915060403d604011610a97575b610a888183613146565b81019061447c565b5038610848565b503d610a7e565b6040513d85823e3d90fd5b806107eb5760405162461bcd60e51b815260206004820152602160248201527f42696742616e673a20616c6c6f77616e63655368617265206e6f742076616c696044820152601960fa1b6064820152608490fd5b602060018060a01b0360095416916064600c546040519485938492638eb22cdd60e01b8452600484015260248301528760448301525afa908115610a9e578391610c67575b50610b4d81836146ec565b8015610bdb575b60018060a01b03821660005260186020526040600020610b75828254613280565b9055610b8381601554613280565b60155560018060a01b038216600052602560205260406000206027546000526020526040600020610bb5828254613280565b90556001600160a01b038216806000805160206152d4833981519152600080a438610758565b5060018060a01b03600954166020600c54606460405180948193638eb22cdd60e01b8352600483015260006024830152600060448301525afa908115610c5b57600091610c29575b50610b54565b906020823d602011610c53575b81610c4360209383613146565b8101031261033457505138610c23565b3d9150610c36565b6040513d6000823e3d90fd5b90506020813d602011610c91575b81610c8260209383613146565b81010312610a5f575138610b42565b3d9150610c75565b8280fd5b503461033457610160366003190112610334576001600160a01b039060043582811690819003610a50576001600160401b039260243584811161111557610ce8903690600401612f95565b909460443593838516809503610a5f57610d0784600554163314613191565b806110d7575b5081610f5a575b50509080929350610f1a575b505060643580610f02575b5060843580610eea575b5060a43580610ed3575b5060c43580610eaf575b5060e43580610e8b575b506101043580610e5a575b506101243580610de6575b506101443580610d77575080f35b601e548110610d8657601f5580f35b60405162461bcd60e51b815260206004820152603260248201527f4d61726b65743a206c69717569646174696f6e436f6c6c61746572616c697a616044820152711d1a5bdb94985d19481d1bdbc81cdb585b1b60721b6064820152608490fd5b610df5620186a08211156131dc565b601f548111610e0757601e5538610d69565b60405162461bcd60e51b815260206004820152602560248201527f4d61726b65743a20636f6c6c61746572616c697a6174696f6e5261746520746f6044820152646f2062696760d81b6064820152608490fd5b806016547fae6e0ab3b95f0a53ff9660a390ccedcbbf1f2355dce974a9841af106fddcfaba8480a360165538610d5e565b610e99620186a082106131dc565b610ea6601b5482116131dc565b601c5538610d53565b610ebd620186a082106131dc565b610eca601c5482106131dc565b601b5538610d49565b610ee1620186a082106131dc565b601d5538610d3f565b610ef9620186a08211156131dc565b601a5538610d35565b610f11620186a08211156131dc565b60195538610d2b565b816008549182167f5a62d22209e370e38eea92cfddcd228e656e6ec139243392a760a7769f5877fd8580a36001600160a01b031916176008553880610d20565b81116110c357610f6b601054612ff1565b601f8111611062575b5083601f8211600114610fdc5784958293949592610fd1575b50508160011b916000199060031b1c1916176010555b7fa6f004921c944d4b8bf6e38462b00f36a58d62495d56b51f571ab78f732c98158380a19082913880610d14565b013590503880610f8d565b60108552601f198216957f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae672918660205b89821061104a5750508360019596979810611030575b505050811b01601055610fa3565b0135600019600384901b60f8161c19169055388080611022565b8060018496829495870135815501950192019061100c565b601085527f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae672601f830160051c8101602084106110bc575b601f90920160051c01905b8181106110b15750610f74565b8581556001016110a4565b5080611099565b634e487b7160e01b84526041600452602484fd5b600f80546001600160a01b0319169190911790557f0b2d6eb667d0522c3eb86e4288afecae6c11591ffd1345d4d12407e0598bca9b8580a138610d0d565b8380fd5b50346103345780600319360112610334576008546040516001600160a01b039091168152602090f35b50346103345780600319360112610334576020601e54604051908152f35b50346103345780600319360112610334576060602354604051906001600160401b0380821683528160401c16602083015260801c6040820152f35b50346103345780600319360112610334576020601a54604051908152f35b5034610334576040366003190112610334576111d3612ea0565b6024358092811580159061128a575b61121a575b50506040519182526001600160a01b03169033906000805160206152f483398151915290602090a3602060405160018152f35b33815260016020526040812054611233838210156139f5565b6001600160a01b038416903382900361124e575b50506111e7565b60409361126591611260841515613a3a565b613273565b33835260016020528383205581522061127f838254613280565b905581388080611247565b50336001600160a01b038416146111e2565b50346103345760403660031901126103345760606112c46112bb612ea0565b602435906133b3565b9060405192835260208301526040820152f35b50346103345780600319360112610334576020602b54604051908152f35b503461033457604036600319011261033457602061131d611314612ea0565b60243590613799565b604051908152f35b5034610334578060031936011261033457808060018060a01b03600b541660405160208101906395d89b4160e01b825260048152611362816130f4565b51915afa61136e614513565b9150156113ce5761138161036991615162565b6113ba6023604051809362746d2d60e81b60208301526113aa8151809260208686019101612ee0565b8101036003810184520182613146565b604051918291602083526020830190612f03565b506103696113da61510b565b611381565b50346103345780600319360112610334576020602f54604051908152f35b5034610334576040366003190112610334576004356001600160401b038111610a505736602382011215610a505780600401359061143a82613167565b906114486040519283613146565b82825283602091828401943660248284010111610c99578060248593018737840101526024359061ffff8216809203610a5f576101009384848051810103126116725761149490613467565b906114a160408501613a7f565b6114ad60608601613a7f565b9560808601519560a0810151916114c660c08301613a93565b9060e08301519201519260018060a01b03808096169a169781421161162d57926105b09289888d9897946115a4978e8d600014611606577f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e266945b8c6000526004855260406000209283549361153a85613c18565b905560405195860196875260408601528c6060860152608085015260a084015260c083015260e082015260e081526115718161312a565b51902061157c6138cb565b90604051908a82019261190160f01b845260228301526042820152604281526105a88161310f565b16036115c25750156115b95761038692613c75565b61038692613c27565b6064906040519062461bcd60e51b82526004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152fd5b7f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d694611520565b60405162461bcd60e51b815260048101889052601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b8580fd5b50346103345780600319360112610334576005546040516001600160a01b039091168152602090f35b50346103345780600319360112610334576020601b54604051908152f35b5034610334578060031936011261033457601454604080516001600160801b038316815260809290921c602083015290f35b50346103345780600319360112610334576020602d54604051908152f35b50346103345760403660031901126103345761173461172a612ea0565b6024359033613c27565b602060405160018152f35b5034610334576020366003190112610334576020906040906001600160a01b03611767612ea0565b168152600483522054604051908152f35b5034610334578060031936011261033457600f546040516001600160a01b039091168152602090f35b50346103345780600319360112610334576103696040516113ba816117c58161302b565b0382613146565b50346103345760203660031901126103345760043590600982101561033457602060ff6117f884612fc2565b54166040519015158152f35b5034610334576020366003190112610334576020906040906001600160a01b0361182c612ea0565b168152600183522054604051908152f35b5034610334578060031936011261033457600a546040516001600160a01b039091168152602090f35b503461033457806003193601126103345761187f613ccc565b50608061188a613d50565b509350505050604051916001600160401b0380825116845260208201511660208401526040600180861b039101511660408301526060820152f35b50346103345760a0366003190112610334576118df612ea0565b6001600160a01b036064358181169392602435929091859003610a5f576084356001600160401b038111610a645761191b903690600401612f95565b949060066000526020966007885261193b60ff6040600020541615614362565b611943613474565b505061194d61423f565b8385169561195d308814156143df565b60048986600a54166040519283809263433e762d60e01b82525afa908115611cfa57836119959261074a928891611ccd575b506147a3565b61199f81876146ec565b600087815260188a52604081206119b7838254613273565b90556119c582601554613273565b6015558560095416600c54813b15610c9957836119fd92849283604051809681958294630208d92960e11b84528c3060048601614890565b03925af18015610a5457611cbe575b508183897f8ad4d3ff00da092c7ad9a573ea4f5f6a3dffc6712dc06d3f78f49b862297c4028480a487815260258a5260408120602754908183528b5260408220548311600014611c98575087815260258a526040812060275482528a5260408120555b600c54600e54604051633d9545e960e11b81526004810192909252602482015260006044820152606481019190915260016084820181905260a48201526101408160c481855afa908115611c8d5784604094939288928291611c5c575b50611af086519b8c968795869463efa84c6d60e01b86526044359060048701614d3f565b03925af1938415611c4f5781958295611c28575b50611b13604435871015614dd1565b81526017865260408120549186611b3184611b2c613ceb565b614e0f565b9160095416916064600e546040519485938492638eb22cdd60e01b845260048401526024830152600160448301525afa918215611c1c5791611be7575b5061131d93610a3793929111611b9457611b89908280614e6d565b505b601154906145b1565b50611b9d613ceb565b80516001600160801b03908116611bc2575050611bbc845b8280614e6d565b50611b8b565b8181611bd9611be2938a611bbc960151168961321c565b91511690613245565b611bb5565b929190508583813d8311611c15575b611c008183613146565b81010312610a5f57915190919061131d611b6e565b503d611bf6565b604051903d90823e3d90fd5b909450611c4591955060403d604011610a9757610a888183613146565b9490949338611b04565b50604051903d90823e3d90fd5b611c8091506101403d61014011611c86575b611c788183613146565b810190614c64565b38611acc565b503d611c6e565b6040513d86823e3d90fd5b9060409189825260258c528282209082528b5220611cb7828254613273565b9055611a6f565b611cc7906130b0565b38611a0c565b611ced91508d803d10611cf3575b611ce58183613146565b810190614c4a565b3861198f565b503d611cdb565b6040513d87823e3d90fd5b50346103345780600319360112610334576020601c54604051908152f35b503461033457806003193601126103345760206001600160401b03602c5460401c16604051908152f35b503461033457806003193601126103345760206001600160401b03602c5416604051908152f35b503461033457806003193601126103345760206001600160401b03602e5416604051908152f35b503461033457806003193601126103345760208054604051908152f35b50346103345780600319360112610334576006546001600160a01b039081811633819003611e2257806005549384167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08680a36001600160a01b0319928316176005551660065580f35b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b50346103345780600319360112610334576020602854604051908152f35b5034610334576020366003190112610334576020906040906001600160a01b03611eac612ea0565b168152601783522054604051908152f35b50346103345780600319360112610334576020601554604051908152f35b50346103345780600319360112610334576020600e54604051908152f35b50346103345780600319360112610334576020601654604051908152f35b503461033457606036600319011261033457602061131d6044356024356004356132a6565b50346103345780600319360112610334576020601154604051908152f35b5034610334578060031936011261033457600d546040516001600160a01b039091168152602090f35b50346103345780600319360112610334576020601254604051908152f35b5034610334578060031936011261033457602061131d6138cb565b50346103345780600319360112610334576020601954604051908152f35b50346103345780600319360112610334576020601354604051908152f35b5034610334578060031936011261033457600d54602090612021906001600160a01b0316614543565b60ff60405191168152f35b5060031961012036820112610a5057612043612ea0565b9061204c612f37565b90606435916001600160401b0390818411611672576060838536030112611672576084359182116116725760e08383360301126116725760803660a3190112611672576006600052602090600782526120ad60ff6040600020541615614362565b6120b5613474565b50506120bf61423f565b6001600160a01b03868116939092906120da308614156143df565b60448101916120e88361442a565b9760a435868116998a8203610a5f576121049161074a916147a3565b856009541697828c6064600c546040519c8d938492638eb22cdd60e01b84526004840152602435602484015260448301525afa9889156123da578b908d9a61240d575b50896121586122129b6040936146ec565b89600052601885528160002061216f828254613273565b905561217d81601554613273565b60155580308b7f8ad4d3ff00da092c7ad9a573ea4f5f6a3dffc6712dc06d3f78f49b862297c402600080a489600052602585528160002060275490816000528652826000205482116000146123e5575089600052602585528160002060275460005285526000828120555b8d896009541690600c54908451809e819582946311a5cc7760e31b84523090309060048601614492565b03925af19889156123da578c996123b8575b50600b54871695156123b15747975b863b156123ad5760405199633cb7ea1d60e11b8b5260048b015260248a01526044890161010090528684600401610104968135888d015261ffff908c8260248a0161227d90613182565b1690610124015261228d90613182565b166101448c0152816122a160648801612ecc565b166101648c01526122b560848701826144c1565b6101848d0160e090526101e48d01906122cd926144f2565b9060a487016122db916144c1565b8c830361010319016101a48e01526122f392916144f2565b9460c40161230090612ecc565b166101c48a015288840301606489015280600401918661231f84612ecc565b168452602482013590840152604401612337916144c1565b60606040840181905261234b9301916144f2565b95608486015260c435838116809103610a5f5760a486015260e435838116809103610a5f5760c486015235918216809203610a5f5783879593818795819560e483015203925af18015610a5457610a3c5750610386610a3783601154906145b1565b8c80fd5b3497612233565b6123d291995060403d604011610a9757610a888183613146565b509738612224565b6040513d8e823e3d90fd5b8a600052602586528260002090600052855281600020612406828254613273565b90556121e8565b809a50848092503d8311612439575b6124268183613146565b81010312610a5f579751978a6040612147565b503d61241c565b50346103345760603660031901126103345761245a612ea0565b90612463612eb6565b60443591826124a1575b506040519182526001600160a01b039081169216906000805160206152f483398151915290602090a3602060405160018152f35b6001600160a01b038481168083526001602090815260408420549286906124ca828610156139f5565b8616938484036124df575b505050505061246d565b8386526002835260408620336000528352604060002054600019810361254d575b509260016020969361252b87946040976112606000805160206152f48339815191529c9a1515613a3a565b9285525283832055815220612541858254613280565b905591388085816124d5565b909181106125a3579260016020969361252b8a6000805160206152f48339815191529a989561257e8260409a613273565b8689526002855289892033600052855289600020559497509497995050939650612500565b60405162461bcd60e51b815260048101849052601860248201527745524332303a20616c6c6f77616e636520746f6f206c6f7760401b6044820152606490fd5b50346103345760c0366003190112610334576125fd612ea0565b60643591906001600160a01b0360843581811692908390036111155760a4356001600160401b038111610a6457612638903690600401612f95565b9093600586526020966007885261265660ff60408920541615614362565b61265e613474565b505061266861423f565b84841691612678308414156143df565b60048987600a54166040519283809263433e762d60e01b82525afa908115612a2057826126af9261074a928c91611ccd57506147a3565b856009541693600e549060405191638eb22cdd60e01b968784528160048501526044356024850152600160448501528c84606481845afa9384156123da578c946129f1575b5083612997575b505061276461270d602435858a6148d3565b905061271f600e5491600c5495613280565b60405180938192633d9545e960e11b83526101409788956004850160a091949360019360c0830196835260208301526000604083015260608201528260808201520152565b0381875afa92831561298c5788936040959387938e938493612967575b50506127a39087519d8e978896879563efa84c6d60e01b875260048701614d3f565b03925af195861561295c578796612933575b506127c290871015614dd1565b6127cc85846146ec565b8491600095156128c3575b5080855260188752604085206127ee838254613280565b90556127fc82601554613280565b601555600c54948460095416803b15610a5f57836000916128369883604051809b81958294630208d92960e11b8452308d60048601614890565b03925af1948515610c5b5761131d96610a37966128a1575b506000805160206152d48339815191529083835260258a526040832060275484528a5260408320612880868254613280565b9055821561289b5780600954165b169180a4601154906145b1565b8561288e565b6128ac9192506130b0565b6000906000805160206152d483398151915261284e565b909150868460095416916064600c54916040519485938492835260048301528960248301528960448301525afa908115611cfa578591612906575b5090386127d7565b90508681813d831161292c575b61291d8183613146565b81010312610a645751386128fe565b503d612913565b6127c2975061295291965060403d604011610a9757610a888183613146565b96909695906127b5565b6040513d89823e3d90fd5b6127a3929350908161298492903d10611c8657611c788183613146565b919038612781565b6040513d8d823e3d90fd5b803b156129ed5783918c9186838c6129c560405197889687958694630208d92960e11b865260048601614890565b03925af1801561298c576129da575b806126fb565b6129e6909a919a6130b0565b98386129d4565b8b80fd5b9093508c81813d8311612a19575b612a098183613146565b810103126129ed575192386126f4565b503d6129ff565b6040513d8b823e3d90fd5b503461033457612a3a36612f46565b9083959495421161060c57612ad1916105b09160018060a01b03948a868b169788825260046020526040822090815491612a7383613c18565b90556040519160208301937f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d6855260408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e081526105748161312a565b16036105c75761038692613c27565b5034610334576020366003190112610334576020906040906001600160a01b03612b08612ea0565b168152601883522054604051908152f35b5034610334578060031936011261033457602060245460801c604051908152f35b5034610334576040366003190112610334576004356009811015610a5057612b60612f28565b6008549091906001600160a01b03163303612c165760ff612b8082612fc2565b54161515911515918214612bdc57808260ff612b9e612bcc94612fc2565b54161515827feeec81de25875ce1725479bb76f720a8defdb43dea041919ae37bb4aae9847c08780a4612fc2565b9060ff8019835416911617905580f35b60405162461bcd60e51b81526020600482015260126024820152714d61726b65743a2073616d6520737461746560701b6044820152606490fd5b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881d5b985d5d1a1bdc9a5e995960621b6044820152606490fd5b503461033457604036600319011261033457611734612c6f612ea0565b6024359033613c75565b503461033457606036600319011261033457612c93612ea0565b612c9b612f28565b612ca3612f37565b9060018060a01b03928391612cbd83600554163314613191565b15612d61571690811590811591612d59575b5015612d1c57806005549283167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08580a36001600160a01b03199182161760055560068054909116905580f35b60405162461bcd60e51b81526020600482015260156024820152744f776e61626c653a207a65726f206164647265737360581b6044820152606490fd5b905038612ccf565b9150501660018060a01b0319600654161760065580f35b5034610334578060031936011261033457808060018060a01b03600b541660405160208101906306fdde0360e01b825260048152612db5816130f4565b51915afa612dc1614513565b915015612e1e57612dd461036991615162565b6113ba6034604051809373546170696f63612053696e67756c61726974792d60601b6020830152612e0e8151809260208686019101612ee0565b8101036014810184520182613146565b50610369612e2a61510b565b612dd4565b50346103345780600319360112610334576040612e4a613474565b825191151582526020820152f35b905034610a50576040366003190112610a50576040602092612e78612ea0565b612e80612eb6565b6001600160a01b0391821683526003865283832091168252845220548152f35b600435906001600160a01b0382168203610a5f57565b602435906001600160a01b0382168203610a5f57565b35906001600160a01b0382168203610a5f57565b60005b838110612ef35750506000910152565b8181015183820152602001612ee3565b90602091612f1c81518092818552858086019101612ee0565b601f01601f1916010190565b602435908115158203610a5f57565b604435908115158203610a5f57565b60e0906003190112610a5f576001600160a01b03906004358281168103610a5f57916024359081168103610a5f5790604435906064359060843560ff81168103610a5f579060a4359060c43590565b9181601f84011215610a5f578235916001600160401b038311610a5f5760208381860195010111610a5f57565b6009811015612fdb576000526007602052604060002090565b634e487b7160e01b600052602160045260246000fd5b90600182811c92168015613021575b602083101461300b57565b634e487b7160e01b600052602260045260246000fd5b91607f1691613000565b6010546000929161303b82612ff1565b908181526001928381169081600014613095575060011461305b57505050565b9092935060106000526020928360002092846000945b8386106130815750505050010190565b805485870183015294019385908201613071565b91935050602093945060ff191683830152151560051b010190565b6001600160401b0381116130c357604052565b634e487b7160e01b600052604160045260246000fd5b606081019081106001600160401b038211176130c357604052565b604081019081106001600160401b038211176130c357604052565b608081019081106001600160401b038211176130c357604052565b61010081019081106001600160401b038211176130c357604052565b90601f801991011681019081106001600160401b038211176130c357604052565b6001600160401b0381116130c357601f01601f191660200190565b359061ffff82168203610a5f57565b1561319857565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b156131e357565b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881b9bdd081d985b1a59607a1b6044820152606490fd5b8181029291811591840414171561322f57565b634e487b7160e01b600052601160045260246000fd5b811561324f570490565b634e487b7160e01b600052601260045260246000fd5b604d811161322f57600a0a90565b9190820391821161322f57565b9190820180921161322f57565b8181039291600013801582851316918412161761322f57565b6014549192916132e9916132e0916132d6916132cc906001600160801b0383169061321c565b9060801c90613245565b93601f549061321c565b6107d483613265565b8083106133ab576132fd6133339184613273565b9161332e6107ce613325601e5461331f61331686613265565b60205490613280565b9061321c565b6107d484613265565b61328d565b6509184e72a0009081810291818305149015171561322f57670de0b6b3a76400009182810292818405149015171561322f57801561324f57600160ff1b9180831460001983141661322f57059060008212156133a457811461322f57600003905b80821161339f575090565b905090565b5090613394565b505050600090565b6001600160a01b03811660008181526017602052604081205491949392909190811561345b579160409161343761344f959483602086516133f3816130f4565b828152015261341186613404613d50565b5050505050939050613628565b815190936001600160801b039160209161342d9184169061321c565b9201511690613245565b81811061345357035b958152601860205220546136ee565b9091565b505080613440565b50509192505080918190565b51908115158203610a5f57565b600f546040805163d6d7d52560e01b8152602060048201529290916001600160a01b03168284806134a76024820161302b565b0381600080955af180156135d05781948291613594575b509284156135375783156134fd57507f9f9192b5edb17356c524e08d9e025c8e2f6307e6ea52fb7968faa3081f51c3c883918260115580a25b42601355565b5162461bcd60e51b81526020600482015260146024820152734d61726b65743a20696e76616c6964207261746560601b6044820152606490fd5b9192505061354a60135460125490613280565b421161355a5750601154906134f7565b5162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881c985d19481d1bdbc81bdb1960621b6044820152606490fd5b809550848092503d83116135c9575b6135ad8183613146565b810103126103345760206135c085613467565b940151386134be565b503d6135a3565b508251903d90823e3d90fd5b156135e357565b60405162461bcd60e51b815260206004820152601e60248201527f4d61726b65743a2065786368616e676552617465206e6f742076616c696400006044820152606490fd5b6136338215156135dc565b60018060a01b036020816009541691600c5490600094168452601882526064604085205491604051948593849263442c159960e01b8452600484015260248301528660448301525afa918215611c1c5780926136b6575b5050906136ae6136a56136b393620186a0602154049061321c565b601e549061321c565b613245565b90565b9091506020823d82116136e6575b816136d160209383613146565b810103126103345750516136ae6136a561368a565b3d91506136c4565b6136f98215156135dc565b602060018060a01b0360095416916064600c54604051948593849263442c159960e01b845260048401526024830152600060448301525afa908115610c5b57600091613766575b50906136ae613752926021549061321c565b620186a0613762601e548361321c565b0491565b906020823d8211613791575b8161377f60209383613146565b810103126103345750516136ae613740565b3d9150613772565b6001600160a01b031660008181526018602052604081205490926137bc916136ee565b9183526017602052604083205480156138c55781156138c5578181106138c557828110156138bb57601454613805918391611260916132cc906001600160801b0383169061321c565b90620186a092838302928084048514901517156138a75761382a92916107d491613273565b91601b5491601c549361383d858561328d565b80820291848212600160ff1b8214166138a7578183051490151715613893570581848201948512911290801582169115161761387f575080821261339f575090565b634e487b7160e01b81526011600452602490fd5b634e487b7160e01b83526011600452602483fd5b634e487b7160e01b85526011600452602485fd5b50505050601b5490565b50505090565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031614806139cc575b15613926577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f000000000000000000000000000000000000000000000000000000000000000082527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a0815260c081018181106001600160401b038211176130c35760405251902090565b507f000000000000000000000000000000000000000000000000000000000000000046146138fd565b156139fc57565b60405162461bcd60e51b815260206004820152601660248201527545524332303a2062616c616e636520746f6f206c6f7760501b6044820152606490fd5b15613a4157565b60405162461bcd60e51b815260206004820152601660248201527545524332303a206e6f207a65726f206164647265737360501b6044820152606490fd5b51906001600160a01b0382168203610a5f57565b519060ff82168203610a5f57565b6005811015612fdb5780613ab25750565b60018103613afa5760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b6044820152606490fd5b60028103613b475760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606490fd5b600314613b5057565b60405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608490fd5b9291906fa2a8918ca85bafe22016d0b997e4df60600160ff1b038311613c0c5791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa15611c4f5781516001600160a01b03811615613c06579190565b50600190565b50505050600090600390565b600019811461322f5760010190565b7fe50de2333c10a9502fcb1d8ae13a51bbf423153dfc63c2b8997665b32154afc360018060a01b038092169160009083825260036020526040822094169384825260205284604082205580a4565b909160207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259160018060a01b03809416938460005260028352604060002095169485600052825280604060002055604051908152a3565b60405190613cd9826130d9565b60006040838281528260208201520152565b60405190613cf8826130f4565b6014546001600160801b038116835260801c6020830152565b60405190613d1e826130f4565b6024546001600160801b038116835260801c6020830152565b6001600160801b03918216908216019190821161322f57565b613d58613ccc565b5060006020604051613d69816130f4565b828152015260006020604051613d7e816130f4565b8281520152604051613d8f816130d9565b6023546001600160401b03811682526001600160401b038160401c16602083015260801c60408201528091613dc2613ceb565b91613dcb613d11565b600954600e54825160405163442c159960e01b8152600481018390526001600160801b03909116602482015260006044820181905293959194919391926001600160a01b031690602081606481855afa8015610c5b576000906141e6575b8851613e3f92506001600160801b031690613280565b806141b1575060005b80613e606001600160401b0360208701511642613273565b948515614187575050426001600160401b031660208a8101919091528801516001600160801b03161561413d57506020670de0b6b3a7640000613ec285613ebd8c6001600160401b038d60018060801b039051169151169061321c565b61321c565b895191900496906001600160801b0390613ee190828a16908316613d37565b168952875160405163442c159960e01b815260048101929092526001600160801b031660248201526000604482015291829060649082905afa8015610c5b57600090614109575b8751613f3e92506001600160801b031690613280565b92613f6c846136ae620186a0613f56601a548a61321c565b60208c01516001600160801b031691900461321c565b6040890180519195916001600160801b038088169291613f8f9084908316613d37565b16905260208801805190916001600160801b0391613faf91908316613d37565b169052806140d4575060005b6029549093848281101561404f57613fd39083613273565b90670de0b6b3a7640000820291808304670de0b6b3a7640000149015171561322f576136ae6140276140216140136001600160401b039661403196613245565b93613ebd602d54958061321c565b83613280565b91848d511661321c565b168089526001600160401b03602c541680911061404b5750565b8852565b909150602a5480821161406157505050565b61406a91613273565b670de0b6b3a7640000810290808204670de0b6b3a7640000149015171561322f576001600160401b03916136ae6140ad6140216140136140b695602b5490613245565b848d511661321c565b81602c5460401c168082116140cc575b50168852565b9050386140c6565b87516001600160801b0316670de0b6b3a764000081810292918084049091149015171561322f5761410491613245565b613fbb565b506020813d602011614135575b8161412360209383613146565b81010312610a5f57613f3e9051613f28565b3d9150614116565b9697939450509350506001600160401b038151166001600160401b03602e541680910361417b575b509392614170613d11565b926000926000929190565b81526001925038614165565b97509850505050509250509161419b613ceb565b916141a4613d11565b9160009160009190600090565b87516001600160801b0316670de0b6b3a764000081810292918084049091149015171561322f576141e191613245565b613e48565b506020813d602011614212575b8161420060209383613146565b81010312610a5f57613e3f9051613e29565b3d91506141f3565b601480546001600160801b031660809290921b6001600160801b031916919091179055565b6143266020806142fc614250613d50565b9396959390929015614328575050506001600160401b03602e54166000807f33af5ce86e8438eff54589f85332916444457dfa8685493fbd579b809097026b88604051838152a45b805185820151604092830151921b67ffffffffffffffff60401b166001600160401b03919091161760809190911b6001600160801b0319908116919091176023558151601480549092166001600160801b039182161790915594859101511661421a565b8051910151821660801b6001600160801b0319166001600160801b03929091169190911617602455565b565b7f33af5ce86e8438eff54589f85332916444457dfa8685493fbd579b809097026b886001600160401b0386511694604051908152a4614298565b1561436957565b60405162461bcd60e51b815260206004820152600e60248201526d13585c9ad95d0e881c185d5cd95960921b6044820152606490fd5b156143a657565b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881a5b9cdbdb1d995b9d607a1b6044820152606490fd5b156143e657565b606460405162461bcd60e51b815260206004820152602060248201527f4d61726b65743a2063616e6e6f742065786563757465206f6e20697473656c666044820152fd5b3561ffff81168103610a5f5790565b1561444057565b60405162461bcd60e51b815260206004820152601460248201527329a3a61d1024b73b30b634b21039bbb0b83832b960611b6044820152606490fd5b9190826040910312610a5f576020825192015190565b9081526001600160a01b0391821660208201529116604082015260006060820152608081019190915260a00190565b9035601e1982360301811215610a5f5701602081359101916001600160401b038211610a5f578136038313610a5f57565b908060209392818452848401376000828201840152601f01601f1916010190565b3d1561453e573d9061452482613167565b916145326040519384613146565b82523d6000602084013e565b606090565b60008091604051602081019063313ce56760e01b825260048152614566816130f4565b51916001600160a01b03165afa61457b614513565b90806145a6575b156145a057602081805181010312610a5f5760206136b39101613a93565b50601290565b506020815114614582565b919060018060a01b0380600094168452602060178152604085205490811561469f57601881526040862054801561469857816145eb613ceb565b9460095416916064600c54604051948593849263442c159960e01b8452600484015260248301528b60448301525afa968715611c1c578097614662575b505061342d6146476136a561465d969798620186a0602154049061321c565b95613ebd60018060801b0394858751169061321c565b111590565b9096508187813d8311614691575b61467a8183613146565b81010312610334575094519461342d614647614628565b503d614670565b5050505050565b5060019450505050565b91821580156146e4575b6133ab576001810180911161322f576146d29261331f6136ae92613265565b6005810180911161322f57600a900490565b5081156146b3565b6001600160a01b0316338103614700575050565b60008181526020906003825260409182822033835281528483832054106147695783825260038152828220338352815282822054600101614742575050505050565b61475d93825260038152828220903383525220918254613273565b90553880808080614698565b60649083519062461bcd60e51b82526004820152601460248201527313585c9ad95d0e881b9bdd08185c1c1c9bdd995960621b6044820152fd5b600a5460405163dbd01de160e01b815260209290916001600160a01b039084908490600490829085165afa8015610c5b578493600091614852575b50918161ffff936044936040519889968795633a304d8b60e21b8752166004860152166024840152165afa908115610c5b5760009161481e575b50905090565b82813d831161484b575b6148328183613146565b81010312610334575061484490613467565b8038614818565b503d614828565b9091929381813d8311614889575b61486a8183613146565b81010312610a50575190828216820361033457508392919060446147de565b503d614860565b6001600160a01b039182168152911660208201526040810191909152606081019190915260800190565b6001600160801b03918216908216039190821161322f57565b92909192620186a06148e7602f548661321c565b046148f0613ceb565b946148fb8282613280565b9460409384519661490b886130f4565b60008089526020988901819052895190956001600160801b039290918316614bea578261493f8c8280855b16915116613d37565b168b526149838a8c018461495881851682845116613d37565b1680915261497e85849e511660018060801b031660018060801b03196014541617601455565b61421a565b6016548015908115614bdb575b5015614b9d57859060018060a01b0380951680895260178c528989206149b7838254613280565b90558951918483528c8301527f3a5151e57d3bc9798e7853034ac52293d1a0e12a2b44725e75b03b21f86477a68a87891693a480614b7c575b50878260095416946064600e5489519788938492638eb22cdd60e01b8452600484015260248301528960448301525afa938415614b72578594614b43575b508397614a39613d11565b818101916103e88484511610614b0f575090614a89839283614a63614ab0968a16828451166148ba565b1690819052602480546001600160801b0319166001600160801b03909216919091179055565b51602480546001600160801b03169290911660801b6001600160801b031916919091179055565b6009541690600e5490823b15610a64579184939184879694614ae8985198899586948593630208d92960e11b85523060048601614890565b03925af1918215614b05575050614afc5750565b614326906130b0565b51903d90823e3d90fd5b60649089519062461bcd60e51b82526004820152600e60248201526d14d1d30e881b5a5b881b1a5b5a5d60921b6044820152fd5b9093508781813d8311614b6b575b614b5b8183613146565b81010312610a6457519238614a2e565b503d614b51565b86513d87823e3d90fd5b82600a5416865260018952614b95878720918254613280565b9055386149f0565b875162461bcd60e51b8152600481018b9052601760248201527614d1d30e88189bdc9c9bddc818d85c081c995858da1959604a1b6044820152606490fd5b90508360145416111538614990565b828b8b81019280614c1d614c0e614c04868851168461321c565b8686511690613245565b9585611bd9818751168961321c565b10614c2f575b90828061493f93614936565b92908280614c3f61493f94613c18565b959293505050614c23565b90816020910312610a5f575161ffff81168103610a5f5790565b809103906101408212610a5f576040805192614c7f846130d9565b60808112610a5f578151614c928161310f565b614c9b84613a7f565b815260208401516020820152614cb2838501613a7f565b838201526060840151606082015284526080607f19820112610a5f5781908151614cdb8161310f565b6080850151815260a0850151602082015260c08501518382015260e08501516060820152602086015260ff190112610a5f57614d34610120825193614d1f856130f4565b614d2c6101008201613467565b855201613467565b602083015282015290565b91926136b3959360206040845194606060018060a01b039687815116895284810151858a0152878482015116848a015201516060880152606083820151805160808a01528481015160a08a01528381015160c08a0152015160e088015201518051151561010087015201511515610120850152610140840152166101608201526101a0908161018082015201916144f2565b15614dd857565b60405162461bcd60e51b815260206004820152600f60248201526e0a68e987440dcdee840cadcdeeaced608b1b6044820152606490fd5b60208101805190939291906001600160801b03908116614e30575090925050565b9081611bd981614e53614e49614e5c968651168861321c565b828a511690613245565b9751168761321c565b10614e6357565b906136b390613c18565b92919060009160018060a01b039485831684526020601781526040852054808411615103575b5082156150c757614ea2613ceb565b968582604051614eb1816130f4565b8281520152614ec08489614e0f565b9560018060801b039384614ed9818a16828d51166148ba565b168a52614f18848b0186614ef2818a16828451166148ba565b1680915261497e878b9d511660018060801b031660018060801b03196014541617601455565b82871682526017845260408220614f30878254613273565b90558260095416600e549560405190638eb22cdd60e01b82528760048301528a6024830152600160448301528682606481865afa918215611cfa578592615098575b5080602454169492803b15610a5f5782600091614fa89a83604051809d81958294630208d92960e11b8452308d60048601614890565b03925af1948515610c5b577fc8e512d8f188ca059984b5853d2bf653da902696b8512785b182b2c813789a6e988796615082575b50614fea9082841690613d37565b1660018060801b031960245416176024558383169081835260258752604083206026549081855288526040842054821160001461505b57505081526025855260408120602654825285528060408120555b1561505557508060095416955b60405195865216941692a4565b95615048565b909183526025875260408320908352865261507b60408320918254613273565b905561503b565b61508d9194506130b0565b600092614fea614fdc565b9091508681813d83116150c0575b6150b08183613146565b81010312610a6457519038614f72565b503d6150a6565b6064906040519062461bcd60e51b82526004820152601560248201527453474c3a206e6f7468696e6720746f20726570617960581b6044820152fd5b925038614e93565b60405190615118826130f4565b60038252623f3f3f60e81b6020830152565b90815181101561513b570160200190565b634e487b7160e01b600052603260045260246000fd5b60ff1660ff811461322f5760010190565b8051604081106151da57508051810190602081818401930312610a5f576020810151906001600160401b038211610a5f570181603f82011215610a5f5760208101516151ad81613167565b926151bb6040519485613146565b81845260408284010111610a5f576136b3916040602085019101612ee0565b6020929083036152c8576000805b60ff811685811090816152a9575b501561520a5761520590615151565b6151e8565b9260ff8094169261521a84613167565b936152286040519586613146565b808552615237601f1991613167565b013687860137825b8581168781108061528c575b156152815761527c91906152766001600160f81b031961526b838861512a565b5116871a918861512a565b53615151565b61523f565b505094505050905090565b506001600160f81b03196152a0828661512a565b5116151561524b565b6001600160f81b031991506152be908661512a565b51161515386151f6565b9150506136b361510b56fe9ed03113de523cebfe5e49d5f8e12894b1c0d42ce805990461726444c90eab87ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa264697066735822122031ecdd56d2974cea8d52e59827623447bd12db91d83dc789de7f160f3febe1e164736f6c63430008120033", "linkReferences": {}, "deployedLinkReferences": {} } diff --git a/src/artifacts/tapioca-bar/SGLLiquidation.json b/src/artifacts/tapioca-bar/SGLLiquidation.json index 001f4bde..d9207994 100644 --- a/src/artifacts/tapioca-bar/SGLLiquidation.json +++ b/src/artifacts/tapioca-bar/SGLLiquidation.json @@ -1583,11 +1583,6 @@ }, { "inputs": [ - { - "internalType": "uint256", - "name": "_borrowOpeningFee", - "type": "uint256" - }, { "internalType": "contract IOracle", "name": "_oracle", @@ -1914,8 +1909,8 @@ "type": "function" } ], - "bytecode": "0x6101408060405234620001e5576200001781620001ea565b601381526001602082017f546170696f63612053696e67756c617269747900000000000000000000000000815260206040516200005481620001ea565b8381520192603160f81b845251902091208160e052610100918183524660a0526040519160208301907f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f92838352604085015260608401524660808401523060a084015260a0835260c083019280841060018060401b03851117620001cf5760408490525190206080523060c052610120908152600580546001600160a01b0319163390811790915560007f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a362013880601b5562015f90601c55612710601d556032602055612ee06021557f0bd4060688a1800ae986e4840aebc924bb40b5bf44de4583df2257220b54b77c6027557f7d1dc38e60930664f8cbf495da6556ca091d2f92d6550877750c049864b182306028556161a8602955614b569283620002078439608051836139df015260a05183613aaa015260c051836139a9015260e05183613a2e01525182613a5401525181613a0b0152f35b634e487b7160e01b600052604160045260246000fd5b600080fd5b604081019081106001600160401b03821117620001cf5760405256fe608080604052600436101561001357600080fd5b60e0600035811c918262a02a2014612faa5750816302ce728f14612e4757816306fdde0314612d90578163078dfbe714612c8c578163095ea7b314612c665781630996efb7146127eb5781630c4e84f0146126d157816318160ddd146126b05781631c9e379b146126765781631da8bf10146125bf57816323b872dd1461241b578163313ce5671461238b578163331960ff1461236d57816334d441d01461234f5781633644e5151461233457816337b6b7b91461231657816338d52e0f146122ed5781633ba0b9a9146122cf5781633f741adb146122ab57816340626d8b1461228d57816344de240a1461226f578163473e3ce71461225157816348e4163e146122175781634d7f2a34146121f95781634e71e0c81461214b578163529898f21461212d57816352f353eb1461210657816355140232146120df57816355c2ab94146120b557816357935462146120975781635dfe04e8146120385781636c3d8b8f1461200f57816370a0823114611fd55781637277854714611f9f57816374645ff314611f745781637dc0d1d014611f4b5781637ecebe0014611f115781637fa0b84e14611ee0578163821226e814611ec25781638285ef4014611e905781638c5d0ed314611e725781638da5cb5b14611e49578163910dd7c814611bff578163959916dc14611be257816395d89b4114611b2857816399a9702814611af95781639c5d719214611adb5781639e15e89f14611a96578163a28e6b82146115d0578163a9059cbb146114ee578163b0e21e8a146114d0578163b27c0e7414611495578163bb4cfe3b14611477578163ce8849ed1461144e578163d505accf146112c957508063d8dfeb45146112a0578063dd62ed3e1461124f578063de40657714611226578063e0996cb614611208578063e30c3978146111df578063e5644d8b146103cf578063ea64dd56146103b1578063eec0f42e14610393578063f42760b714610375578063f8ba4cff1461035a578063f9557ccb146103245763ffe04c661461030157600080fd5b3461031f57600036600319011261031f576020602a54604051908152f35b600080fd5b3461031f57600036600319011261031f57602554604080516001600160801b038316815260809290921c602083015290f35b0390f35b3461031f57600036600319011261031f576103736142f8565b005b3461031f57600036600319011261031f576020602b54604051908152f35b3461031f57600036600319011261031f576020600c54604051908152f35b3461031f57600036600319011261031f576020601f54604051908152f35b3461031f57608036600319011261031f576004356001600160401b03811161031f576103ff9036906004016132c3565b906024356001600160401b03811161031f5761041f9036906004016132c3565b6044356001600160401b03811161031f5761043e9036906004016132c3565b90916064356001600160401b03811161031f5761045f9036906004016132c3565b9290916004600052600760205260ff604060002054166111a95787156111695780880361112e57610491828914614445565b61049c828514614445565b600f546040805163d6d7d52560e01b815260206004820152979188906001600160a01b0316816000816104d16024820161315e565b03925af1968715610bed576000906000986110fa575b5087816110f0575b50156110e657866011555b6105026142f8565b60009860005b818110610552578a1561051757005b60405162461bcd60e51b815260206004820152601360248201527214d1d30e881b9bc81d5cd95c9cc8199bdd5b99606a1b6044820152606490fd5b61055d81838c6147ff565b356001600160a01b038116810361031f576105788a8261480f565b1561058d575b5061058890613d00565b610508565b9a61059790613d00565b9a6105a38286866147ff565b35906105b083888c6147ff565b35906001600160a01b038216820361031f5789841015610b90578360051b890135601e198a36030181121561031f578901926001600160401b0384351161031f5783353603602085011361031f576106088d8361389c565b918d156110a15760018060a01b03600954166020600c5460018060a01b03841660005260188252606460406000205491604051948593849263442c159960e01b845260048401526024830152600060448301525afa908115610bed578f9060009261106b575b5061067f610684926022549061337e565b6133a7565b9360018060a01b03821660005260176020526106a58560406000205461345b565b80601d548061104c575b5080851115611045575b6001600160a01b038416600090815260176020526040902054908181111561103c575080965b1115611007578f938181111561100057505b6001600160a01b0383166000908152601760205260409020549081811115610ff5575061071e81806133d5565b6001600160a01b03841660009081526017602052604090205561073f613dd3565b60208101516001600160801b0316610fc05750602081965b606461077d61077460018060a01b036009541698600c549461337e565b602254906133a7565b916040519788938492638eb22cdd60e01b845260048401526024830152600060448301525afa938415610bed57600094610f8c575b506001600160a01b0383166000908152601860205260409020548411610f475760018060a01b038316600052601860205260406000206107f38582546133d5565b90558515610f13576014549061083a6001600160801b0361081889821682861661442c565b16926001600160801b0319926001600160801b0316908316841760801c61442c565b60801b161760145560018060a01b0360095416956020600e546064604051809a8193638eb22cdd60e01b835260048301528a6024830152600160448301525afa968715610bed57600097610edb575b50869161096b610972926015805488808211600014610ed1576108ab916133d5565b905b5560018060a01b0386166000526026806020526040600020602890815490816000526020526040600020548a11600014610e9c575060018060a01b0388166000528160205260406000209054600052602052600060408120555b60018060a01b03871660005280602052604060002090602791825490816000526020526040600020548811600014610e68575060018060a01b03881660005260205260406000209054600052602052600060408120555b369060208135910161328c565b90856144a2565b5010610e2357600954600e54604051627eeac760e11b815230600482015260248101919091526001600160a01b039091169390602081604481885afa8015610bed57600090610def575b6025546109d392506001600160801b0316906133d5565b9580871115610ddf576109f56109ed620186a092896133d5565b925b8361337e565b0495610a0187836133d5565b9485610c71575b5086610bf9575b610a2987610a248760018060801b03946133d5565b6133d5565b602554916001600160801b0391610a439116828416613e1f565b6001600160801b0319909216911617602555600d5460095460405163095ea7b360e01b81526001600160a01b039182166004820152600060248201819052909260209284926044928492165af18015610bed5787918691610ba6575b50610a2490610aad936133d5565b6040516000815230907f30a8c4f9ab5af7e1309ca87c32377d1a83366c5990472dbf9d262450eae14e3860203092a460405190610ae9826131fe565b6001825260203681840137815115610b90576001600160a01b03166020820190815260405191518291906000905b808210610b6e575050508190039020604080519384526020840194909452928201526105889392919033907f85b91d472e69b2cfe848ed50eb5d8582ae96c22057b6e46250255dd6f6c3519290606090a49061057e565b82516001600160a01b0316845260209384019390920191600190910190610b17565b634e487b7160e01b600052603260045260246000fd5b9150506020813d602011610be5575b81610bc260209383613250565b8101031261031f57610a2485610aad93610bdc8a94613778565b50935090610a9f565b3d9150610bb5565b6040513d6000823e3d90fd5b610c2e60408860018060a01b0360095416600e5460008451809681958294634d4d7cbd60e11b8452339030906004860161491c565b03925af18015610bed57610c43575b50610a0f565b610c649060403d604011610c6a575b610c5c8183613250565b81019061448c565b50610c3d565b503d610c52565b600d5460405163095ea7b360e01b8152600481019290925260006024830181905260209183916044918391906001600160a01b03165af18015610bed57610da6575b50600d5460095460405163095ea7b360e01b81526001600160a01b03918216600482015260001960248201529160209183916044918391600091165af18015610bed57610d6d575b50600954600e54600a5460408051634d4d7cbd60e11b815293909284926001600160a01b039283169284926000928492610d40928f929091169030906004860161491c565b03925af18015610bed5715610a0857610d679060403d604011610c6a57610c5c8183613250565b50610a08565b6020813d602011610d9e575b81610d8660209383613250565b8101031261031f57610d9790613778565b5038610cfb565b3d9150610d79565b6020813d602011610dd7575b81610dbf60209383613250565b8101031261031f57610dd090613778565b5038610cb3565b3d9150610db2565b50620186a06109f56000926109ef565b506020813d602011610e1b575b81610e0960209383613250565b8101031261031f576109d390516109bc565b3d9150610dfc565b60405162461bcd60e51b815260206004820152601b60248201527f53474c3a20617373657420616d6f756e74206e6f742076616c696400000000006044820152606490fd5b915060018060a01b0388166000526020526040600020906000526020526040600020610e958682546133d5565b905561095e565b905060018060a01b038816600052816020526040600020906000526020526040600020610eca8982546133d5565b9055610907565b50506000906108ad565b909196506020813d602011610f0b575b81610ef860209383613250565b8101031261031f57519590610972610889565b3d9150610eeb565b60405162461bcd60e51b815260206004820152600c60248201526b14d1d30e881cdbdb1d995b9d60a21b6044820152606490fd5b60405162461bcd60e51b815260206004820152601a60248201527f53474c3a206e6f7420656e6f75676820636f6c6c61746572616c0000000000006044820152606490fd5b9093506020813d602011610fb8575b81610fa860209383613250565b8101031261031f575192386107b2565b3d9150610f9b565b8051602091610fef91610fdc906001600160801b03168561337e565b908301516001600160801b0316906133a7565b96610757565b61071e9080926133d5565b90506106f1565b60405162461bcd60e51b815260206004820152600d60248201526c14d1d30e88189859081919589d609a1b6044820152606490fd5b905080966106df565b50836106b9565b90620186a061105e611065938361337e565b04906133e2565b386106af565b9150506020813d602011611099575b8161108760209383613250565b8101031261031f57518e61067f61066e565b3d915061107a565b60405162461bcd60e51b815260206004820152601b60248201527f53474c3a2065786368616e676552617465206e6f742076616c696400000000006044820152606490fd5b60115496506104fa565b905015158a6104ef565b905061111f91975060403d604011611127575b6111178183613250565b810190613785565b96908a6104e7565b503d61110d565b60405162461bcd60e51b8152602060048201526013602482015272084847440d8cadccee8d040dad2e6dac2e8c6d606b1b6044820152606490fd5b60405162461bcd60e51b815260206004820152601860248201527742423a206e6f7468696e6720746f206c697175696461746560401b6044820152606490fd5b60405162461bcd60e51b815260206004820152600e60248201526d13585c9ad95d0e881c185d5cd95960921b6044820152606490fd5b3461031f57600036600319011261031f576006546040516001600160a01b039091168152602090f35b3461031f57600036600319011261031f576020601d54604051908152f35b3461031f57600036600319011261031f576009546040516001600160a01b039091168152602090f35b3461031f57604036600319011261031f57611268612ff6565b61127061300c565b9060018060a01b038091166000526002602052604060002091166000526020526020604060002054604051908152f35b3461031f57600036600319011261031f57600b546040516001600160a01b039091168152602090f35b3461031f576112d7366130a6565b83949697939291924211611409576113b5926113ad9260018060a01b0395868b169788600052600460205260406000209182549261131484613d00565b90556040519160208301937f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e2668552600060408501528b60608501528a8d1660808501528d60a085015260c084015281830152815261137181613219565b51902061137c6139a6565b9060405190602082019261190160f01b845260228301526042820152604281526113a581613235565b519020613c7b565b919091613b7c565b16036113c45761037392613d5d565b60405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152606490fd5b60405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b3461031f57600036600319011261031f576008546040516001600160a01b039091168152602090f35b3461031f57600036600319011261031f576020601e54604051908152f35b3461031f57600036600319011261031f576060602454604051906001600160401b0380821683528160401c16602083015260801c6040820152f35b3461031f57600036600319011261031f576020601a54604051908152f35b3461031f57604036600319011261031f57611507612ff6565b6024359081158015906115be575b61154b575b6040519182526001600160a01b0316903390600080516020614b0183398151915290602090a3602060405160018152f35b33600052600160205260406000205461156683821015613ad0565b6001600160a01b038216908333839003611583575b50505061151a565b61159291610a24841515613b15565b33600052600160205260406000205560005260406000206115b48382546133e2565b905582808361157b565b50336001600160a01b03821614611515565b3461031f57608036600319011261031f576115e9612ff6565b6115f161300c565b60443591906001600160a01b0390818416840361031f57606435936001600160401b03851161031f5761162b61166a953690600401613079565b919061163c856005541633146132f3565b84600f54169560405163d6d7d52560e01b81526040816020998a60048301528160008160249e8f820161315e565b03925af1908115610bed57600090600092611a74575b508181611a6a575b5015611a6157806011555b15611a125785906116a26142f8565b169283600052601787526116c5604060002054620186a061105e6021548361337e565b878960648960095416936116e2610774600c54926011549061337e565b946040519586948593638eb22cdd60e01b85526004850152830152600060448301525afa908115610bed576000916119e5575b508460005260188852604060002054116119a3576118c26118778560009896956118718a9997966118b49660268e8d9a8b526018815260408b20549661181061175c613dd3565b828e52601784526117eb6117c28f60409020549260008760405161177f816131fe565b82815201528681019360018060801b03928382818094868a8381511615600014611956575050816117b5915b168288511661442c565b168552168287511661442c565b169384905251601480546001600160801b0319166001600160801b039390921692909216179055565b601480546001600160801b031660809290921b6001600160801b031916919091179055565b808c52601782528b604081205582825260408c206027548d5282528b6040812055808c526018825261184860408d20546015546133d5565b6015558b52601881528a6040812055528d60408a20906028548b5252886040812055369161328c565b916144a2565b600d546040805163a9059cbb60e01b8d82019081526001600160a01b039099168e8201908152602081019490945291909816979094859350910190565b03601f198101835282613250565b51925af16118ce6143fc565b8161191e575b50156118dc57005b601c6064926040519262461bcd60e51b845260048401528201527f426f72696e6745524332303a205472616e73666572206661696c6564000000006044820152fd5b80915051828115918215611937575b50509050836118d4565b838092935001031261031f578161194e9101613778565b80828561192d565b6117b59261198f6119858661197c61197282809851168661337e565b82875116906133a7565b9451168461337e565b848c5116906133a7565b10156117ab5761199e90613d00565b6117ab565b606488886040519162461bcd60e51b83528160048401528201527f42696742616e673a2043616e6e6f7420666f726365206c6971756964617465646044820152fd5b90508781813d8311611a0b575b6119fc8183613250565b8101031261031f575189611715565b503d6119f2565b60405162461bcd60e51b8152600481018890526022818a01527f42423a2063757272656e742065786368616e676552617465206e6f742076616c6044820152611a5960f21b6064820152608490fd5b50601154611693565b905015158a611688565b9050611a8f915060403d604011611127576111178183613250565b908a611680565b3461031f57604036600319011261031f57610356611abe611ab5612ff6565b6024359061361e565b604080519384526020840192909252908201529081906060820190565b3461031f57600036600319011261031f576020602c54604051908152f35b3461031f57604036600319011261031f576020611b20611b17612ff6565b6024359061389c565b604051908152f35b3461031f57600036600319011261031f5760008060018060a01b03600b541660405160208101906395d89b4160e01b825260048152611b66816131fe565b51915afa611b726143fc565b9015611bd157611b846103569161498c565b611bbd6023604051809362746d2d60e81b6020830152611bad8151809260208686019101613022565b8101036003810184520182613250565b604051918291602083526020830190613045565b50610356611bdd61494b565b611b84565b3461031f57600036600319011261031f5760208054604051908152f35b3461031f57604036600319011261031f576004356001600160401b03811161031f573660238201121561031f57611c4090369060248160040135910161328c565b9060243561ffff811680910361031f5761010091828480518101031261031f576020611c6d818601613778565b91611c7a60408701613b5a565b90611c8760608801613b5a565b9660808101519660a082015192611ca060c08401613b6e565b91818401519301519360018060a01b03808097169b1698814211611e04579289888d989794611d7b97946113ad978f8e600014611ddd577f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e266955b8d60005260048652604060002092835493611d1485613d00565b905560405196870197885260408701528d6060870152608086015260a085015260c0840152818301528152611d4881613219565b519020611d536139a6565b90604051908a82019261190160f01b845260228301526042820152604281526113a581613235565b1603611d99575015611d905761037392613d5d565b61037392613d0f565b6064906040519062461bcd60e51b82526004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152fd5b7f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d695611cfa565b60405162461bcd60e51b815260048101899052601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b3461031f57600036600319011261031f576005546040516001600160a01b039091168152602090f35b3461031f57600036600319011261031f576020601b54604051908152f35b3461031f57600036600319011261031f57601454604080516001600160801b038316815260809290921c602083015290f35b3461031f57600036600319011261031f576020602e54604051908152f35b3461031f57604036600319011261031f57611f06611efc612ff6565b6024359033613d0f565b602060405160018152f35b3461031f57602036600319011261031f576001600160a01b03611f32612ff6565b1660005260046020526020604060002054604051908152f35b3461031f57600036600319011261031f57600f546040516001600160a01b039091168152602090f35b3461031f57600036600319011261031f57610356604051611bbd81611f988161315e565b0382613250565b3461031f57602036600319011261031f57600435600981101561031f5760ff611fc96020926130f5565b54166040519015158152f35b3461031f57602036600319011261031f576001600160a01b03611ff6612ff6565b1660005260016020526020604060002054604051908152f35b3461031f57600036600319011261031f57600a546040516001600160a01b039091168152602090f35b3461031f57600036600319011261031f57612051613db4565b50608061205c613e38565b509350505050604051916001600160401b0380825116845260208201511660208401526040600180861b039101511660408301526060820152f35b3461031f57600036600319011261031f576020601c54604051908152f35b3461031f57600036600319011261031f5760206001600160401b03602d5460401c16604051908152f35b3461031f57600036600319011261031f5760206001600160401b03602d5416604051908152f35b3461031f57600036600319011261031f5760206001600160401b03602f5416604051908152f35b3461031f57600036600319011261031f576020602154604051908152f35b3461031f57600036600319011261031f576006546001600160a01b0390818116338190036121b557806005549384167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a36001600160a01b03199283161760055516600655005b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b3461031f57600036600319011261031f576020602954604051908152f35b3461031f57602036600319011261031f576001600160a01b03612238612ff6565b1660005260176020526020604060002054604051908152f35b3461031f57600036600319011261031f576020601554604051908152f35b3461031f57600036600319011261031f576020600e54604051908152f35b3461031f57600036600319011261031f576020601654604051908152f35b3461031f57606036600319011261031f576020611b20604435602435600435613557565b3461031f57600036600319011261031f576020601154604051908152f35b3461031f57600036600319011261031f57600d546040516001600160a01b039091168152602090f35b3461031f57600036600319011261031f576020601254604051908152f35b3461031f57600036600319011261031f576020611b206139a6565b3461031f57600036600319011261031f576020601954604051908152f35b3461031f57600036600319011261031f576020601354604051908152f35b3461031f57600036600319011261031f5760008060018060a01b03600d5416604051602081019063313ce56760e01b8252600481526123c9816131fe565b51915afa6123d56143fc565b9080612410575b156124065760208180518101031261031f576123fb6020809201613b6e565b60ff60405191168152f35b50602060126123fb565b5060208151146123dc565b3461031f57606036600319011261031f57612434612ff6565b61243c61300c565b6044359081612479575b6040519182526001600160a01b03908116921690600080516020614b0183398151915290602090a3602060405160018152f35b60018060a01b038084168060005260206001815284604060002054936124a182861015613ad0565b8516938484036124b6575b5050505050612446565b83600052600283526040600020336000528352604060002054600019810361252a575b508492612501600080516020614b01833981519152979593600193610a246020991515613b15565b9260005252604060002055600052604060002061251f8582546133e2565b9055918584816124ac565b9091811061257f576020949261250188600080516020614b01833981519152989694612558826001966133d5565b866000526002855260406000203360005285526040600020559350939597505092946124d9565b60405162461bcd60e51b815260048101849052601860248201527745524332303a20616c6c6f77616e636520746f6f206c6f7760401b6044820152606490fd5b3461031f576125cd366130a6565b8394969793929192421161140957612667926113ad9260018060a01b0395868b169788600052600460205260406000209182549261260a84613d00565b90556040519160208301937f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d68552600060408501528b60608501528a8d1660808501528d60a085015260c084015281830152815261137181613219565b16036113c45761037392613d0f565b3461031f57602036600319011261031f576001600160a01b03612697612ff6565b1660005260186020526020604060002054604051908152f35b3461031f57600036600319011261031f57602060255460801c604051908152f35b3461031f57604036600319011261031f57600435600981101561031f576126f661306a565b6008549091906001600160a01b031633036127af5760ff612716826130f5565b5416151591151591821461277557808260ff612734612763946130f5565b54161515827feeec81de25875ce1725479bb76f720a8defdb43dea041919ae37bb4aae9847c0600080a46130f5565b9060ff80198354169116179055600080f35b60405162461bcd60e51b81526020600482015260126024820152714d61726b65743a2073616d6520737461746560701b6044820152606490fd5b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881d5b985d5d1a1bdc9a5e995960621b6044820152606490fd5b3461031f5761018036600319011261031f576001600160a01b036024358181169081900361031f576001600160401b039160443583811161031f57612834903690600401613079565b60643580841693929084900361031f57612853836005541633146132f3565b60043595620186a0956128688789111561333e565b6020978089547fc353b09af857951dccce61b43a5854fc45beceed36c50e5d4cc2e71858a8e0df600080a3885580612c27575b5082612ad7575b50505081612a96575b505060843580612a81575b5060a43580612a6c575b5060c43580612a58575b5060e43580612a37575b506101043580612a16575b5061012435806129e4575b50610144359081612972575b505061016435908161290457005b601e5482106129135750601f55005b6084906040519062461bcd60e51b82526004820152603260248201527f4d61726b65743a206c69717569646174696f6e436f6c6c61746572616c697a616044820152711d1a5bdb94985d19481d1bdbc81cdb585b1b60721b6064820152fd5b61297e9082111561333e565b601f54811161299157601e5581806128f6565b60405162461bcd60e51b815260048101839052602560248201527f4d61726b65743a20636f6c6c61746572616c697a6174696f6e5261746520746f6044820152646f2062696760d81b6064820152608490fd5b806016547fae6e0ab3b95f0a53ff9660a390ccedcbbf1f2355dce974a9841af106fddcfaba600080a3601655826128ea565b612a2182821061333e565b612a2e601b54821161333e565b601c55826128df565b612a4282821061333e565b612a4f601c54821061333e565b601b55826128d4565b612a6382821061333e565b601d55826128ca565b612a788282111561333e565b601a55826128c0565b612a8d8282111561333e565b601955826128b6565b816008549182167f5a62d22209e370e38eea92cfddcd228e656e6ec139243392a760a7769f5877fd600080a36001600160a01b0319161760085582806128ab565b8211612c11578190612aea601054613124565b601f8111612bc4575b50600090601f8311600114612b5857600092612b4d575b50508160011b916000199060031b1c1916176010555b7fa6f004921c944d4b8bf6e38462b00f36a58d62495d56b51f571ab78f732c9815600080a18480806128a2565b013590508680612b0a565b909250601060005286600020906000935b88601f1985168610612bae57506001945083601f19811610612b94575b505050811b01601055612b20565b0135600019600384901b60f8161c19169055868080612b86565b8282013584559485019460019093019201612b69565b909150601060005286600020601f840160051c8101888510612c0a575b90601f8594930160051c01905b818110612bfb5750612af3565b60008155849350600101612bee565b5080612be1565b634e487b7160e01b600052604160045260246000fd5b600f80546001600160a01b0319169190911790557f0b2d6eb667d0522c3eb86e4288afecae6c11591ffd1345d4d12407e0598bca9b600080a18761289b565b3461031f57604036600319011261031f57611f06612c82612ff6565b6024359033613d5d565b3461031f57606036600319011261031f57612ca5612ff6565b612cad61306a565b60443590811515820361031f5760018060a01b03928391612cd3836005541633146132f3565b15612d77571690811590811591612d6f575b5015612d3257806005549283167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a36001600160a01b031991821617600555600680549091169055005b60405162461bcd60e51b81526020600482015260156024820152744f776e61626c653a207a65726f206164647265737360581b6044820152606490fd5b905083612ce5565b9150501660018060a01b03196006541617600655600080f35b3461031f57600036600319011261031f5760008060018060a01b03600b541660405160208101906306fdde0360e01b825260048152612dce816131fe565b51915afa612dda6143fc565b9015612e3657612dec6103569161498c565b611bbd6034604051809373546170696f63612053696e67756c61726974792d60601b6020830152612e268151809260208686019101613022565b8101036014810184520182613250565b50610356612e4261494b565b612dec565b3461031f57600036600319011261031f57600f546040805163d6d7d52560e01b8152602060048201529182906001600160a01b031681600081612e8c6024820161315e565b03925af18015610bed57600091600091612f89575b50908015612f2b578115612eef5781604092601155807f9f9192b5edb17356c524e08d9e025c8e2f6307e6ea52fb7968faa3081f51c3c8600080a25b42601355825191151582526020820152f35b60405162461bcd60e51b81526020600482015260146024820152734d61726b65743a20696e76616c6964207261746560601b6044820152606490fd5b9050612f3c601354601254906133e2565b4211612f4d57604090601154612edd565b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881c985d19481d1bdbc81bdb1960621b6044820152606490fd5b9050612fa4915060403d604011611127576111178183613250565b82612ea1565b3461031f57604036600319011261031f57602090612fc6612ff6565b612fce61300c565b9060018060a01b03809116600052600384526040600020911660005282526040600020548152f35b600435906001600160a01b038216820361031f57565b602435906001600160a01b038216820361031f57565b60005b8381106130355750506000910152565b8181015183820152602001613025565b9060209161305e81518092818552858086019101613022565b601f01601f1916010190565b60243590811515820361031f57565b9181601f8401121561031f578235916001600160401b03831161031f576020838186019501011161031f57565b60e090600319011261031f576001600160a01b0390600435828116810361031f5791602435908116810361031f5790604435906064359060843560ff8116810361031f579060a4359060c43590565b600981101561310e576000526007602052604060002090565b634e487b7160e01b600052602160045260246000fd5b90600182811c92168015613154575b602083101461313e57565b634e487b7160e01b600052602260045260246000fd5b91607f1691613133565b6010546000929161316e82613124565b9081815260019283811690816000146131c8575060011461318e57505050565b9092935060106000526020928360002092846000945b8386106131b45750505050010190565b8054858701830152940193859082016131a4565b91935050602093945060ff191683830152151560051b010190565b606081019081106001600160401b03821117612c1157604052565b604081019081106001600160401b03821117612c1157604052565b61010081019081106001600160401b03821117612c1157604052565b608081019081106001600160401b03821117612c1157604052565b90601f801991011681019081106001600160401b03821117612c1157604052565b6001600160401b038111612c1157601f01601f191660200190565b92919261329882613271565b916132a66040519384613250565b82948184528183011161031f578281602093846000960137010152565b9181601f8401121561031f578235916001600160401b03831161031f576020808501948460051b01011161031f57565b156132fa57565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b1561334557565b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881b9bdd081d985b1a59607a1b6044820152606490fd5b8181029291811591840414171561339157565b634e487b7160e01b600052601160045260246000fd5b81156133b1570490565b634e487b7160e01b600052601260045260246000fd5b604d811161339157600a0a90565b9190820391821161339157565b9190820180921161339157565b8181039291600013801582851316918412161761339157565b906509184e72a0009182810292818405149015171561339157565b90670de0b6b3a76400009182810292818405149015171561339157565b81156133b157600160ff1b8114600019831416613391570590565b60145461349691613485919061347b906001600160801b0383169061337e565b9060801c906133a7565b91620186a0918291601f549061337e565b0480831061354f576134a890836133d5565b601e546021548301908184116133915783916134c39161337e565b049182810390600080941281831281169183139015161761353b57906134f46134ee6134f993613408565b91613423565b613440565b908082121561353457600160ff1b82146135205703905b80821161351b575090565b905090565b634e487b7160e01b81526011600452602490fd5b5090613510565b634e487b7160e01b83526011600452602483fd5b505050600090565b601454919291613596916135879161357d9161347b906001600160801b0383169061337e565b93601f549061337e565b613590836133c7565b906133a7565b9081831061354f576134f46134ee6135f06135b46135f595876133d5565b936135eb6135e56135dc601e546135d66135cd866133c7565b602154906133e2565b9061337e565b613590846133c7565b916133c7565b6133ef565b613408565b600081121561361857600160ff1b8114613391576000039080821161351b575090565b90613510565b9160018060a01b03809316916000938385526020601781526040918287205490811561376b5787838551613651816131fe565b828152015261365e613e38565b50505050509190506136718615156137a2565b6009541683600c54898b52601882526064878c2054918851948593849263442c159960e01b8452600484015260248301528d60448301525afa90811561376157899161372e575b509161370e61372297989994926136e98861067f6136e0601898620186a0602254049061337e565b601e549061337e565b815190936001600160801b039186916137049184169061337e565b92015116906133a7565b81811061372657035b9783525220546137ee565b9091565b505082613717565b90508381813d831161375a575b6137458183613250565b81010312613756575161370e6136b8565b8880fd5b503d61373b565b85513d8b823e3d90fd5b5086955085949350505050565b5190811515820361031f57565b919082604091031261031f57602061379c83613778565b92015190565b156137a957565b60405162461bcd60e51b815260206004820152601e60248201527f4d61726b65743a2065786368616e676552617465206e6f742076616c696400006044820152606490fd5b6137f98215156137a2565b602060018060a01b0360095416916064600c54604051948593849263442c159960e01b845260048401526024830152600060448301525afa908115610bed57600091613866575b509061067f613852926022549061337e565b620186a0613862601e548361337e565b0491565b906020823d8211613894575b8161387f60209383613250565b8101031261389157505161067f613840565b80fd5b3d9150613872565b6001600160a01b031660008181526018602052604081205490926138bf916137ee565b9183526017602052604083205480156139a05781156139a0578181106139a0578281101561399657601454613908918391610a249161347b906001600160801b0383169061337e565b90620186a092838302928084048514901517156139825761392d9291613590916133d5565b91601b5491601c549361394085856133ef565b80820291848212600160ff1b82141661398257818305149015171561353b5705818482019485129112908015821691151617613520575080821261351b575090565b634e487b7160e01b85526011600452602485fd5b50505050601b5490565b50505090565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03161480613aa7575b15613a01577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f000000000000000000000000000000000000000000000000000000000000000082527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a0815260c081018181106001600160401b03821117612c115760405251902090565b507f000000000000000000000000000000000000000000000000000000000000000046146139d8565b15613ad757565b60405162461bcd60e51b815260206004820152601660248201527545524332303a2062616c616e636520746f6f206c6f7760501b6044820152606490fd5b15613b1c57565b60405162461bcd60e51b815260206004820152601660248201527545524332303a206e6f207a65726f206164647265737360501b6044820152606490fd5b51906001600160a01b038216820361031f57565b519060ff8216820361031f57565b600581101561310e5780613b8d5750565b60018103613bd55760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b6044820152606490fd5b60028103613c225760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606490fd5b600314613c2b57565b60405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608490fd5b9291906fa2a8918ca85bafe22016d0b997e4df60600160ff1b038311613cf45791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa15613ce75781516001600160a01b03811615613ce1579190565b50600190565b50604051903d90823e3d90fd5b50505050600090600390565b60001981146133915760010190565b7fe50de2333c10a9502fcb1d8ae13a51bbf423153dfc63c2b8997665b32154afc360018060a01b038092169160009083825260036020526040822094169384825260205284604082205580a4565b909160207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259160018060a01b03809416938460005260028352604060002095169485600052825280604060002055604051908152a3565b60405190613dc1826131e3565b60006040838281528260208201520152565b60405190613de0826131fe565b6014546001600160801b038116835260801c6020830152565b60405190613e06826131fe565b6025546001600160801b038116835260801c6020830152565b6001600160801b03918216908216019190821161339157565b613e40613db4565b5060006020604051613e51816131fe565b828152015260006020604051613e66816131fe565b828152015260405190613e78826131e3565b602454916001600160401b038316815260208101926001600160401b038160401c16845260801c60408201528092613eae613dd3565b92613eb7613df9565b92600060018060a01b0360095416600e549460018060801b038751166040519063442c159960e01b8252876004830152602482015260006044820152602081606481865afa8015610bed576000906142c4575b8951613f2092506001600160801b0316906133e2565b8061428f575060005b613f3e6001600160401b0382935116426133d5565b948515614265575050426001600160401b031660208a8101919091528801516001600160801b03161561421b57506020670de0b6b3a7640000613fa085613f9b8c6001600160401b038d60018060801b039051169151169061337e565b61337e565b895191900496906001600160801b0390613fbf90828a16908316613e1f565b168952875160405163442c159960e01b815260048101929092526001600160801b031660248201526000604482015291829060649082905afa8015610bed576000906141e7575b875161401c92506001600160801b0316906133e2565b9261404a8461067f620186a0614034601a548a61337e565b60208c01516001600160801b031691900461337e565b6040890180519195916001600160801b03808816929161406d9084908316613e1f565b16905260208801805190916001600160801b039161408d91908316613e1f565b169052806141b2575060005b602a549093848281101561412d576140b190836133d5565b90670de0b6b3a7640000820291808304670de0b6b3a764000014901517156133915761067f6141056140ff6140f16001600160401b039661410f966133a7565b93613f9b602e54958061337e565b836133e2565b91848d511661337e565b168089526001600160401b03602d54168091106141295750565b8852565b909150602b5480821161413f57505050565b614148916133d5565b670de0b6b3a7640000810290808204670de0b6b3a76400001490151715613391576001600160401b039161067f61418b6140ff6140f161419495602c54906133a7565b848d511661337e565b81602d5460401c168082116141aa575b50168852565b9050386141a4565b87516001600160801b0316670de0b6b3a7640000818102929180840490911490151715613391576141e2916133a7565b614099565b506020813d602011614213575b8161420160209383613250565b8101031261031f5761401c9051614006565b3d91506141f4565b9697939450509350506001600160401b038151166001600160401b03602f5416809103614259575b50939261424e613df9565b926000926000929190565b81526001925038614243565b975098505050505092505091614279613dd3565b91614282613df9565b9160009160009190600090565b88516001600160801b0316670de0b6b3a7640000818102929180840490911490151715613391576142bf916133a7565b613f29565b506020813d6020116142f0575b816142de60209383613250565b8101031261031f57613f209051613f0a565b3d91506142d1565b6143b36040602080614308613e38565b93999593909290156143c3575050506001600160401b03602f54166000807f33af5ce86e8438eff54589f85332916444457dfa8685493fbd579b809097026b878a51838152a45b80518482015196909101516001600160801b0319608091821b81166001600160401b0390931667ffffffffffffffff60401b60409990991b9890981697909717919091176024558151919093015190921b84166001600160801b0392831617601455565b83511692015160801b1617602555565b7f33af5ce86e8438eff54589f85332916444457dfa8685493fbd579b809097026b876001600160401b03865116948b51908152a461434f565b3d15614427573d9061440d82613271565b9161441b6040519384613250565b82523d6000602084013e565b606090565b6001600160801b03918216908216039190821161339157565b1561444c57565b60405162461bcd60e51b8152602060048201526018602482015277084d2ce84c2dcce7440d8cadccee8d040dad2e6dac2e8c6d60431b6044820152606490fd5b919082604091031261031f576020825192015190565b91909160018060a01b0392836009541690600c5460409485519063442c159960e01b82526004928084840152602496878401526000958660448501526020958685606481855afa9485156147f557918b8b928a9485986147b7575b509060a4911694835194859384926311a5cc7760e31b84528b8401528d30908401528760448401528960648401528160848401525af180156147ad57614791575b5088600d5416908851926370a0823160e01b94858552308786015287858b81875afa9485156147875789888d948f948c97958f95859b61473f575b50906145ba9291600b54169751998a9889978896635cd3dc1560e01b885233908801528601526044850152606484015260a0608484015260a4830190613045565b03925af18015614735576146fd575b508388600d54169287895180958193825230888301525afa80156146f35785906146be575b6145f892506133d5565b95861561467e5790606483926009541691600e54928989519889958694638eb22cdd60e01b86528501528301528660448301525afa93841561467357508193614642575b50505091565b9091809350813d831161466c575b61465a8183613250565b8101031261389157505138808061463c565b503d614650565b51913d9150823e3d90fd5b50818460649387519362461bcd60e51b85528401528201527f53474c3a206f6e436f6c6c61746572616c5265636569766572206661696c65646044820152fd5b50908381813d83116146ec575b6146d58183613250565b810103126146e857906145f891516145ee565b8480fd5b503d6146cb565b87513d87823e3d90fd5b8481813d831161472e575b6147128183613250565b8101031261472a5761472390613778565b50386145c9565b8580fd5b503d614708565b88513d88823e3d90fd5b96999a50509550959250505081813d8311614780575b61475f8183613250565b8101031261375657928989886145ba8f9897968f968d98519a909192614579565b503d614755565b8b513d8b823e3d90fd5b6147a790893d8b11610c6a57610c5c8183613250565b5061453e565b89513d89823e3d90fd5b935096505091508681813d83116147ee575b6147d38183613250565b810103126147ea57519387918a918c9060a46144fd565b8780fd5b503d6147c9565b8a513d8a823e3d90fd5b9190811015610b905760051b0190565b919060018060a01b0380600094168452602060178152604085205490811561491257601881526040862054801561490b5781614849613dd3565b9460095416916064600c54604051948593849263442c159960e01b8452600484015260248301528b60448301525afa9687156148ff5780976148c9575b50506137046148ae6148a56148c4969798620186a0602254049061337e565b601f549061337e565b95613f9b60018060801b0394858751169061337e565b111590565b9096508187813d83116148f8575b6148e18183613250565b8101031261389157509451946137046148ae614886565b503d6148d7565b604051903d90823e3d90fd5b5050505050565b5060019450505050565b9081526001600160a01b0391821660208201529116604082015260006060820152608081019190915260a00190565b60405190614958826131fe565b60038252623f3f3f60e81b6020830152565b908151811015610b90570160200190565b60ff1660ff81146133915760010190565b805160408110614a075750805181019060208181840193031261031f576020810151906001600160401b03821161031f570181603f8201121561031f5760208101516149d781613271565b926149e56040519485613250565b8184526040828401011161031f57614a04916040602085019101613022565b90565b602092908303614af5576000805b60ff81168581109081614ad6575b5015614a3757614a329061497b565b614a15565b9260ff80941692614a4784613271565b93614a556040519586613250565b808552614a64601f1991613271565b013687860137825b85811687811080614ab9575b15614aae57614aa99190614aa36001600160f81b0319614a98838861496a565b5116871a918861496a565b5361497b565b614a6c565b505094505050905090565b506001600160f81b0319614acd828661496a565b51161515614a78565b6001600160f81b03199150614aeb908661496a565b5116151538614a23565b915050614a0461494b56feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa26469706673582212207b12888fbe7633bd2c9a1e7f4f95574950e6de79e28d8cc01460eab816d1c2f064736f6c63430008120033", - "deployedBytecode": "0x608080604052600436101561001357600080fd5b60e0600035811c918262a02a2014612faa5750816302ce728f14612e4757816306fdde0314612d90578163078dfbe714612c8c578163095ea7b314612c665781630996efb7146127eb5781630c4e84f0146126d157816318160ddd146126b05781631c9e379b146126765781631da8bf10146125bf57816323b872dd1461241b578163313ce5671461238b578163331960ff1461236d57816334d441d01461234f5781633644e5151461233457816337b6b7b91461231657816338d52e0f146122ed5781633ba0b9a9146122cf5781633f741adb146122ab57816340626d8b1461228d57816344de240a1461226f578163473e3ce71461225157816348e4163e146122175781634d7f2a34146121f95781634e71e0c81461214b578163529898f21461212d57816352f353eb1461210657816355140232146120df57816355c2ab94146120b557816357935462146120975781635dfe04e8146120385781636c3d8b8f1461200f57816370a0823114611fd55781637277854714611f9f57816374645ff314611f745781637dc0d1d014611f4b5781637ecebe0014611f115781637fa0b84e14611ee0578163821226e814611ec25781638285ef4014611e905781638c5d0ed314611e725781638da5cb5b14611e49578163910dd7c814611bff578163959916dc14611be257816395d89b4114611b2857816399a9702814611af95781639c5d719214611adb5781639e15e89f14611a96578163a28e6b82146115d0578163a9059cbb146114ee578163b0e21e8a146114d0578163b27c0e7414611495578163bb4cfe3b14611477578163ce8849ed1461144e578163d505accf146112c957508063d8dfeb45146112a0578063dd62ed3e1461124f578063de40657714611226578063e0996cb614611208578063e30c3978146111df578063e5644d8b146103cf578063ea64dd56146103b1578063eec0f42e14610393578063f42760b714610375578063f8ba4cff1461035a578063f9557ccb146103245763ffe04c661461030157600080fd5b3461031f57600036600319011261031f576020602a54604051908152f35b600080fd5b3461031f57600036600319011261031f57602554604080516001600160801b038316815260809290921c602083015290f35b0390f35b3461031f57600036600319011261031f576103736142f8565b005b3461031f57600036600319011261031f576020602b54604051908152f35b3461031f57600036600319011261031f576020600c54604051908152f35b3461031f57600036600319011261031f576020601f54604051908152f35b3461031f57608036600319011261031f576004356001600160401b03811161031f576103ff9036906004016132c3565b906024356001600160401b03811161031f5761041f9036906004016132c3565b6044356001600160401b03811161031f5761043e9036906004016132c3565b90916064356001600160401b03811161031f5761045f9036906004016132c3565b9290916004600052600760205260ff604060002054166111a95787156111695780880361112e57610491828914614445565b61049c828514614445565b600f546040805163d6d7d52560e01b815260206004820152979188906001600160a01b0316816000816104d16024820161315e565b03925af1968715610bed576000906000986110fa575b5087816110f0575b50156110e657866011555b6105026142f8565b60009860005b818110610552578a1561051757005b60405162461bcd60e51b815260206004820152601360248201527214d1d30e881b9bc81d5cd95c9cc8199bdd5b99606a1b6044820152606490fd5b61055d81838c6147ff565b356001600160a01b038116810361031f576105788a8261480f565b1561058d575b5061058890613d00565b610508565b9a61059790613d00565b9a6105a38286866147ff565b35906105b083888c6147ff565b35906001600160a01b038216820361031f5789841015610b90578360051b890135601e198a36030181121561031f578901926001600160401b0384351161031f5783353603602085011361031f576106088d8361389c565b918d156110a15760018060a01b03600954166020600c5460018060a01b03841660005260188252606460406000205491604051948593849263442c159960e01b845260048401526024830152600060448301525afa908115610bed578f9060009261106b575b5061067f610684926022549061337e565b6133a7565b9360018060a01b03821660005260176020526106a58560406000205461345b565b80601d548061104c575b5080851115611045575b6001600160a01b038416600090815260176020526040902054908181111561103c575080965b1115611007578f938181111561100057505b6001600160a01b0383166000908152601760205260409020549081811115610ff5575061071e81806133d5565b6001600160a01b03841660009081526017602052604090205561073f613dd3565b60208101516001600160801b0316610fc05750602081965b606461077d61077460018060a01b036009541698600c549461337e565b602254906133a7565b916040519788938492638eb22cdd60e01b845260048401526024830152600060448301525afa938415610bed57600094610f8c575b506001600160a01b0383166000908152601860205260409020548411610f475760018060a01b038316600052601860205260406000206107f38582546133d5565b90558515610f13576014549061083a6001600160801b0361081889821682861661442c565b16926001600160801b0319926001600160801b0316908316841760801c61442c565b60801b161760145560018060a01b0360095416956020600e546064604051809a8193638eb22cdd60e01b835260048301528a6024830152600160448301525afa968715610bed57600097610edb575b50869161096b610972926015805488808211600014610ed1576108ab916133d5565b905b5560018060a01b0386166000526026806020526040600020602890815490816000526020526040600020548a11600014610e9c575060018060a01b0388166000528160205260406000209054600052602052600060408120555b60018060a01b03871660005280602052604060002090602791825490816000526020526040600020548811600014610e68575060018060a01b03881660005260205260406000209054600052602052600060408120555b369060208135910161328c565b90856144a2565b5010610e2357600954600e54604051627eeac760e11b815230600482015260248101919091526001600160a01b039091169390602081604481885afa8015610bed57600090610def575b6025546109d392506001600160801b0316906133d5565b9580871115610ddf576109f56109ed620186a092896133d5565b925b8361337e565b0495610a0187836133d5565b9485610c71575b5086610bf9575b610a2987610a248760018060801b03946133d5565b6133d5565b602554916001600160801b0391610a439116828416613e1f565b6001600160801b0319909216911617602555600d5460095460405163095ea7b360e01b81526001600160a01b039182166004820152600060248201819052909260209284926044928492165af18015610bed5787918691610ba6575b50610a2490610aad936133d5565b6040516000815230907f30a8c4f9ab5af7e1309ca87c32377d1a83366c5990472dbf9d262450eae14e3860203092a460405190610ae9826131fe565b6001825260203681840137815115610b90576001600160a01b03166020820190815260405191518291906000905b808210610b6e575050508190039020604080519384526020840194909452928201526105889392919033907f85b91d472e69b2cfe848ed50eb5d8582ae96c22057b6e46250255dd6f6c3519290606090a49061057e565b82516001600160a01b0316845260209384019390920191600190910190610b17565b634e487b7160e01b600052603260045260246000fd5b9150506020813d602011610be5575b81610bc260209383613250565b8101031261031f57610a2485610aad93610bdc8a94613778565b50935090610a9f565b3d9150610bb5565b6040513d6000823e3d90fd5b610c2e60408860018060a01b0360095416600e5460008451809681958294634d4d7cbd60e11b8452339030906004860161491c565b03925af18015610bed57610c43575b50610a0f565b610c649060403d604011610c6a575b610c5c8183613250565b81019061448c565b50610c3d565b503d610c52565b600d5460405163095ea7b360e01b8152600481019290925260006024830181905260209183916044918391906001600160a01b03165af18015610bed57610da6575b50600d5460095460405163095ea7b360e01b81526001600160a01b03918216600482015260001960248201529160209183916044918391600091165af18015610bed57610d6d575b50600954600e54600a5460408051634d4d7cbd60e11b815293909284926001600160a01b039283169284926000928492610d40928f929091169030906004860161491c565b03925af18015610bed5715610a0857610d679060403d604011610c6a57610c5c8183613250565b50610a08565b6020813d602011610d9e575b81610d8660209383613250565b8101031261031f57610d9790613778565b5038610cfb565b3d9150610d79565b6020813d602011610dd7575b81610dbf60209383613250565b8101031261031f57610dd090613778565b5038610cb3565b3d9150610db2565b50620186a06109f56000926109ef565b506020813d602011610e1b575b81610e0960209383613250565b8101031261031f576109d390516109bc565b3d9150610dfc565b60405162461bcd60e51b815260206004820152601b60248201527f53474c3a20617373657420616d6f756e74206e6f742076616c696400000000006044820152606490fd5b915060018060a01b0388166000526020526040600020906000526020526040600020610e958682546133d5565b905561095e565b905060018060a01b038816600052816020526040600020906000526020526040600020610eca8982546133d5565b9055610907565b50506000906108ad565b909196506020813d602011610f0b575b81610ef860209383613250565b8101031261031f57519590610972610889565b3d9150610eeb565b60405162461bcd60e51b815260206004820152600c60248201526b14d1d30e881cdbdb1d995b9d60a21b6044820152606490fd5b60405162461bcd60e51b815260206004820152601a60248201527f53474c3a206e6f7420656e6f75676820636f6c6c61746572616c0000000000006044820152606490fd5b9093506020813d602011610fb8575b81610fa860209383613250565b8101031261031f575192386107b2565b3d9150610f9b565b8051602091610fef91610fdc906001600160801b03168561337e565b908301516001600160801b0316906133a7565b96610757565b61071e9080926133d5565b90506106f1565b60405162461bcd60e51b815260206004820152600d60248201526c14d1d30e88189859081919589d609a1b6044820152606490fd5b905080966106df565b50836106b9565b90620186a061105e611065938361337e565b04906133e2565b386106af565b9150506020813d602011611099575b8161108760209383613250565b8101031261031f57518e61067f61066e565b3d915061107a565b60405162461bcd60e51b815260206004820152601b60248201527f53474c3a2065786368616e676552617465206e6f742076616c696400000000006044820152606490fd5b60115496506104fa565b905015158a6104ef565b905061111f91975060403d604011611127575b6111178183613250565b810190613785565b96908a6104e7565b503d61110d565b60405162461bcd60e51b8152602060048201526013602482015272084847440d8cadccee8d040dad2e6dac2e8c6d606b1b6044820152606490fd5b60405162461bcd60e51b815260206004820152601860248201527742423a206e6f7468696e6720746f206c697175696461746560401b6044820152606490fd5b60405162461bcd60e51b815260206004820152600e60248201526d13585c9ad95d0e881c185d5cd95960921b6044820152606490fd5b3461031f57600036600319011261031f576006546040516001600160a01b039091168152602090f35b3461031f57600036600319011261031f576020601d54604051908152f35b3461031f57600036600319011261031f576009546040516001600160a01b039091168152602090f35b3461031f57604036600319011261031f57611268612ff6565b61127061300c565b9060018060a01b038091166000526002602052604060002091166000526020526020604060002054604051908152f35b3461031f57600036600319011261031f57600b546040516001600160a01b039091168152602090f35b3461031f576112d7366130a6565b83949697939291924211611409576113b5926113ad9260018060a01b0395868b169788600052600460205260406000209182549261131484613d00565b90556040519160208301937f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e2668552600060408501528b60608501528a8d1660808501528d60a085015260c084015281830152815261137181613219565b51902061137c6139a6565b9060405190602082019261190160f01b845260228301526042820152604281526113a581613235565b519020613c7b565b919091613b7c565b16036113c45761037392613d5d565b60405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152606490fd5b60405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b3461031f57600036600319011261031f576008546040516001600160a01b039091168152602090f35b3461031f57600036600319011261031f576020601e54604051908152f35b3461031f57600036600319011261031f576060602454604051906001600160401b0380821683528160401c16602083015260801c6040820152f35b3461031f57600036600319011261031f576020601a54604051908152f35b3461031f57604036600319011261031f57611507612ff6565b6024359081158015906115be575b61154b575b6040519182526001600160a01b0316903390600080516020614b0183398151915290602090a3602060405160018152f35b33600052600160205260406000205461156683821015613ad0565b6001600160a01b038216908333839003611583575b50505061151a565b61159291610a24841515613b15565b33600052600160205260406000205560005260406000206115b48382546133e2565b905582808361157b565b50336001600160a01b03821614611515565b3461031f57608036600319011261031f576115e9612ff6565b6115f161300c565b60443591906001600160a01b0390818416840361031f57606435936001600160401b03851161031f5761162b61166a953690600401613079565b919061163c856005541633146132f3565b84600f54169560405163d6d7d52560e01b81526040816020998a60048301528160008160249e8f820161315e565b03925af1908115610bed57600090600092611a74575b508181611a6a575b5015611a6157806011555b15611a125785906116a26142f8565b169283600052601787526116c5604060002054620186a061105e6021548361337e565b878960648960095416936116e2610774600c54926011549061337e565b946040519586948593638eb22cdd60e01b85526004850152830152600060448301525afa908115610bed576000916119e5575b508460005260188852604060002054116119a3576118c26118778560009896956118718a9997966118b49660268e8d9a8b526018815260408b20549661181061175c613dd3565b828e52601784526117eb6117c28f60409020549260008760405161177f816131fe565b82815201528681019360018060801b03928382818094868a8381511615600014611956575050816117b5915b168288511661442c565b168552168287511661442c565b169384905251601480546001600160801b0319166001600160801b039390921692909216179055565b601480546001600160801b031660809290921b6001600160801b031916919091179055565b808c52601782528b604081205582825260408c206027548d5282528b6040812055808c526018825261184860408d20546015546133d5565b6015558b52601881528a6040812055528d60408a20906028548b5252886040812055369161328c565b916144a2565b600d546040805163a9059cbb60e01b8d82019081526001600160a01b039099168e8201908152602081019490945291909816979094859350910190565b03601f198101835282613250565b51925af16118ce6143fc565b8161191e575b50156118dc57005b601c6064926040519262461bcd60e51b845260048401528201527f426f72696e6745524332303a205472616e73666572206661696c6564000000006044820152fd5b80915051828115918215611937575b50509050836118d4565b838092935001031261031f578161194e9101613778565b80828561192d565b6117b59261198f6119858661197c61197282809851168661337e565b82875116906133a7565b9451168461337e565b848c5116906133a7565b10156117ab5761199e90613d00565b6117ab565b606488886040519162461bcd60e51b83528160048401528201527f42696742616e673a2043616e6e6f7420666f726365206c6971756964617465646044820152fd5b90508781813d8311611a0b575b6119fc8183613250565b8101031261031f575189611715565b503d6119f2565b60405162461bcd60e51b8152600481018890526022818a01527f42423a2063757272656e742065786368616e676552617465206e6f742076616c6044820152611a5960f21b6064820152608490fd5b50601154611693565b905015158a611688565b9050611a8f915060403d604011611127576111178183613250565b908a611680565b3461031f57604036600319011261031f57610356611abe611ab5612ff6565b6024359061361e565b604080519384526020840192909252908201529081906060820190565b3461031f57600036600319011261031f576020602c54604051908152f35b3461031f57604036600319011261031f576020611b20611b17612ff6565b6024359061389c565b604051908152f35b3461031f57600036600319011261031f5760008060018060a01b03600b541660405160208101906395d89b4160e01b825260048152611b66816131fe565b51915afa611b726143fc565b9015611bd157611b846103569161498c565b611bbd6023604051809362746d2d60e81b6020830152611bad8151809260208686019101613022565b8101036003810184520182613250565b604051918291602083526020830190613045565b50610356611bdd61494b565b611b84565b3461031f57600036600319011261031f5760208054604051908152f35b3461031f57604036600319011261031f576004356001600160401b03811161031f573660238201121561031f57611c4090369060248160040135910161328c565b9060243561ffff811680910361031f5761010091828480518101031261031f576020611c6d818601613778565b91611c7a60408701613b5a565b90611c8760608801613b5a565b9660808101519660a082015192611ca060c08401613b6e565b91818401519301519360018060a01b03808097169b1698814211611e04579289888d989794611d7b97946113ad978f8e600014611ddd577f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e266955b8d60005260048652604060002092835493611d1485613d00565b905560405196870197885260408701528d6060870152608086015260a085015260c0840152818301528152611d4881613219565b519020611d536139a6565b90604051908a82019261190160f01b845260228301526042820152604281526113a581613235565b1603611d99575015611d905761037392613d5d565b61037392613d0f565b6064906040519062461bcd60e51b82526004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152fd5b7f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d695611cfa565b60405162461bcd60e51b815260048101899052601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b3461031f57600036600319011261031f576005546040516001600160a01b039091168152602090f35b3461031f57600036600319011261031f576020601b54604051908152f35b3461031f57600036600319011261031f57601454604080516001600160801b038316815260809290921c602083015290f35b3461031f57600036600319011261031f576020602e54604051908152f35b3461031f57604036600319011261031f57611f06611efc612ff6565b6024359033613d0f565b602060405160018152f35b3461031f57602036600319011261031f576001600160a01b03611f32612ff6565b1660005260046020526020604060002054604051908152f35b3461031f57600036600319011261031f57600f546040516001600160a01b039091168152602090f35b3461031f57600036600319011261031f57610356604051611bbd81611f988161315e565b0382613250565b3461031f57602036600319011261031f57600435600981101561031f5760ff611fc96020926130f5565b54166040519015158152f35b3461031f57602036600319011261031f576001600160a01b03611ff6612ff6565b1660005260016020526020604060002054604051908152f35b3461031f57600036600319011261031f57600a546040516001600160a01b039091168152602090f35b3461031f57600036600319011261031f57612051613db4565b50608061205c613e38565b509350505050604051916001600160401b0380825116845260208201511660208401526040600180861b039101511660408301526060820152f35b3461031f57600036600319011261031f576020601c54604051908152f35b3461031f57600036600319011261031f5760206001600160401b03602d5460401c16604051908152f35b3461031f57600036600319011261031f5760206001600160401b03602d5416604051908152f35b3461031f57600036600319011261031f5760206001600160401b03602f5416604051908152f35b3461031f57600036600319011261031f576020602154604051908152f35b3461031f57600036600319011261031f576006546001600160a01b0390818116338190036121b557806005549384167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a36001600160a01b03199283161760055516600655005b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b3461031f57600036600319011261031f576020602954604051908152f35b3461031f57602036600319011261031f576001600160a01b03612238612ff6565b1660005260176020526020604060002054604051908152f35b3461031f57600036600319011261031f576020601554604051908152f35b3461031f57600036600319011261031f576020600e54604051908152f35b3461031f57600036600319011261031f576020601654604051908152f35b3461031f57606036600319011261031f576020611b20604435602435600435613557565b3461031f57600036600319011261031f576020601154604051908152f35b3461031f57600036600319011261031f57600d546040516001600160a01b039091168152602090f35b3461031f57600036600319011261031f576020601254604051908152f35b3461031f57600036600319011261031f576020611b206139a6565b3461031f57600036600319011261031f576020601954604051908152f35b3461031f57600036600319011261031f576020601354604051908152f35b3461031f57600036600319011261031f5760008060018060a01b03600d5416604051602081019063313ce56760e01b8252600481526123c9816131fe565b51915afa6123d56143fc565b9080612410575b156124065760208180518101031261031f576123fb6020809201613b6e565b60ff60405191168152f35b50602060126123fb565b5060208151146123dc565b3461031f57606036600319011261031f57612434612ff6565b61243c61300c565b6044359081612479575b6040519182526001600160a01b03908116921690600080516020614b0183398151915290602090a3602060405160018152f35b60018060a01b038084168060005260206001815284604060002054936124a182861015613ad0565b8516938484036124b6575b5050505050612446565b83600052600283526040600020336000528352604060002054600019810361252a575b508492612501600080516020614b01833981519152979593600193610a246020991515613b15565b9260005252604060002055600052604060002061251f8582546133e2565b9055918584816124ac565b9091811061257f576020949261250188600080516020614b01833981519152989694612558826001966133d5565b866000526002855260406000203360005285526040600020559350939597505092946124d9565b60405162461bcd60e51b815260048101849052601860248201527745524332303a20616c6c6f77616e636520746f6f206c6f7760401b6044820152606490fd5b3461031f576125cd366130a6565b8394969793929192421161140957612667926113ad9260018060a01b0395868b169788600052600460205260406000209182549261260a84613d00565b90556040519160208301937f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d68552600060408501528b60608501528a8d1660808501528d60a085015260c084015281830152815261137181613219565b16036113c45761037392613d0f565b3461031f57602036600319011261031f576001600160a01b03612697612ff6565b1660005260186020526020604060002054604051908152f35b3461031f57600036600319011261031f57602060255460801c604051908152f35b3461031f57604036600319011261031f57600435600981101561031f576126f661306a565b6008549091906001600160a01b031633036127af5760ff612716826130f5565b5416151591151591821461277557808260ff612734612763946130f5565b54161515827feeec81de25875ce1725479bb76f720a8defdb43dea041919ae37bb4aae9847c0600080a46130f5565b9060ff80198354169116179055600080f35b60405162461bcd60e51b81526020600482015260126024820152714d61726b65743a2073616d6520737461746560701b6044820152606490fd5b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881d5b985d5d1a1bdc9a5e995960621b6044820152606490fd5b3461031f5761018036600319011261031f576001600160a01b036024358181169081900361031f576001600160401b039160443583811161031f57612834903690600401613079565b60643580841693929084900361031f57612853836005541633146132f3565b60043595620186a0956128688789111561333e565b6020978089547fc353b09af857951dccce61b43a5854fc45beceed36c50e5d4cc2e71858a8e0df600080a3885580612c27575b5082612ad7575b50505081612a96575b505060843580612a81575b5060a43580612a6c575b5060c43580612a58575b5060e43580612a37575b506101043580612a16575b5061012435806129e4575b50610144359081612972575b505061016435908161290457005b601e5482106129135750601f55005b6084906040519062461bcd60e51b82526004820152603260248201527f4d61726b65743a206c69717569646174696f6e436f6c6c61746572616c697a616044820152711d1a5bdb94985d19481d1bdbc81cdb585b1b60721b6064820152fd5b61297e9082111561333e565b601f54811161299157601e5581806128f6565b60405162461bcd60e51b815260048101839052602560248201527f4d61726b65743a20636f6c6c61746572616c697a6174696f6e5261746520746f6044820152646f2062696760d81b6064820152608490fd5b806016547fae6e0ab3b95f0a53ff9660a390ccedcbbf1f2355dce974a9841af106fddcfaba600080a3601655826128ea565b612a2182821061333e565b612a2e601b54821161333e565b601c55826128df565b612a4282821061333e565b612a4f601c54821061333e565b601b55826128d4565b612a6382821061333e565b601d55826128ca565b612a788282111561333e565b601a55826128c0565b612a8d8282111561333e565b601955826128b6565b816008549182167f5a62d22209e370e38eea92cfddcd228e656e6ec139243392a760a7769f5877fd600080a36001600160a01b0319161760085582806128ab565b8211612c11578190612aea601054613124565b601f8111612bc4575b50600090601f8311600114612b5857600092612b4d575b50508160011b916000199060031b1c1916176010555b7fa6f004921c944d4b8bf6e38462b00f36a58d62495d56b51f571ab78f732c9815600080a18480806128a2565b013590508680612b0a565b909250601060005286600020906000935b88601f1985168610612bae57506001945083601f19811610612b94575b505050811b01601055612b20565b0135600019600384901b60f8161c19169055868080612b86565b8282013584559485019460019093019201612b69565b909150601060005286600020601f840160051c8101888510612c0a575b90601f8594930160051c01905b818110612bfb5750612af3565b60008155849350600101612bee565b5080612be1565b634e487b7160e01b600052604160045260246000fd5b600f80546001600160a01b0319169190911790557f0b2d6eb667d0522c3eb86e4288afecae6c11591ffd1345d4d12407e0598bca9b600080a18761289b565b3461031f57604036600319011261031f57611f06612c82612ff6565b6024359033613d5d565b3461031f57606036600319011261031f57612ca5612ff6565b612cad61306a565b60443590811515820361031f5760018060a01b03928391612cd3836005541633146132f3565b15612d77571690811590811591612d6f575b5015612d3257806005549283167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a36001600160a01b031991821617600555600680549091169055005b60405162461bcd60e51b81526020600482015260156024820152744f776e61626c653a207a65726f206164647265737360581b6044820152606490fd5b905083612ce5565b9150501660018060a01b03196006541617600655600080f35b3461031f57600036600319011261031f5760008060018060a01b03600b541660405160208101906306fdde0360e01b825260048152612dce816131fe565b51915afa612dda6143fc565b9015612e3657612dec6103569161498c565b611bbd6034604051809373546170696f63612053696e67756c61726974792d60601b6020830152612e268151809260208686019101613022565b8101036014810184520182613250565b50610356612e4261494b565b612dec565b3461031f57600036600319011261031f57600f546040805163d6d7d52560e01b8152602060048201529182906001600160a01b031681600081612e8c6024820161315e565b03925af18015610bed57600091600091612f89575b50908015612f2b578115612eef5781604092601155807f9f9192b5edb17356c524e08d9e025c8e2f6307e6ea52fb7968faa3081f51c3c8600080a25b42601355825191151582526020820152f35b60405162461bcd60e51b81526020600482015260146024820152734d61726b65743a20696e76616c6964207261746560601b6044820152606490fd5b9050612f3c601354601254906133e2565b4211612f4d57604090601154612edd565b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881c985d19481d1bdbc81bdb1960621b6044820152606490fd5b9050612fa4915060403d604011611127576111178183613250565b82612ea1565b3461031f57604036600319011261031f57602090612fc6612ff6565b612fce61300c565b9060018060a01b03809116600052600384526040600020911660005282526040600020548152f35b600435906001600160a01b038216820361031f57565b602435906001600160a01b038216820361031f57565b60005b8381106130355750506000910152565b8181015183820152602001613025565b9060209161305e81518092818552858086019101613022565b601f01601f1916010190565b60243590811515820361031f57565b9181601f8401121561031f578235916001600160401b03831161031f576020838186019501011161031f57565b60e090600319011261031f576001600160a01b0390600435828116810361031f5791602435908116810361031f5790604435906064359060843560ff8116810361031f579060a4359060c43590565b600981101561310e576000526007602052604060002090565b634e487b7160e01b600052602160045260246000fd5b90600182811c92168015613154575b602083101461313e57565b634e487b7160e01b600052602260045260246000fd5b91607f1691613133565b6010546000929161316e82613124565b9081815260019283811690816000146131c8575060011461318e57505050565b9092935060106000526020928360002092846000945b8386106131b45750505050010190565b8054858701830152940193859082016131a4565b91935050602093945060ff191683830152151560051b010190565b606081019081106001600160401b03821117612c1157604052565b604081019081106001600160401b03821117612c1157604052565b61010081019081106001600160401b03821117612c1157604052565b608081019081106001600160401b03821117612c1157604052565b90601f801991011681019081106001600160401b03821117612c1157604052565b6001600160401b038111612c1157601f01601f191660200190565b92919261329882613271565b916132a66040519384613250565b82948184528183011161031f578281602093846000960137010152565b9181601f8401121561031f578235916001600160401b03831161031f576020808501948460051b01011161031f57565b156132fa57565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b1561334557565b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881b9bdd081d985b1a59607a1b6044820152606490fd5b8181029291811591840414171561339157565b634e487b7160e01b600052601160045260246000fd5b81156133b1570490565b634e487b7160e01b600052601260045260246000fd5b604d811161339157600a0a90565b9190820391821161339157565b9190820180921161339157565b8181039291600013801582851316918412161761339157565b906509184e72a0009182810292818405149015171561339157565b90670de0b6b3a76400009182810292818405149015171561339157565b81156133b157600160ff1b8114600019831416613391570590565b60145461349691613485919061347b906001600160801b0383169061337e565b9060801c906133a7565b91620186a0918291601f549061337e565b0480831061354f576134a890836133d5565b601e546021548301908184116133915783916134c39161337e565b049182810390600080941281831281169183139015161761353b57906134f46134ee6134f993613408565b91613423565b613440565b908082121561353457600160ff1b82146135205703905b80821161351b575090565b905090565b634e487b7160e01b81526011600452602490fd5b5090613510565b634e487b7160e01b83526011600452602483fd5b505050600090565b601454919291613596916135879161357d9161347b906001600160801b0383169061337e565b93601f549061337e565b613590836133c7565b906133a7565b9081831061354f576134f46134ee6135f06135b46135f595876133d5565b936135eb6135e56135dc601e546135d66135cd866133c7565b602154906133e2565b9061337e565b613590846133c7565b916133c7565b6133ef565b613408565b600081121561361857600160ff1b8114613391576000039080821161351b575090565b90613510565b9160018060a01b03809316916000938385526020601781526040918287205490811561376b5787838551613651816131fe565b828152015261365e613e38565b50505050509190506136718615156137a2565b6009541683600c54898b52601882526064878c2054918851948593849263442c159960e01b8452600484015260248301528d60448301525afa90811561376157899161372e575b509161370e61372297989994926136e98861067f6136e0601898620186a0602254049061337e565b601e549061337e565b815190936001600160801b039186916137049184169061337e565b92015116906133a7565b81811061372657035b9783525220546137ee565b9091565b505082613717565b90508381813d831161375a575b6137458183613250565b81010312613756575161370e6136b8565b8880fd5b503d61373b565b85513d8b823e3d90fd5b5086955085949350505050565b5190811515820361031f57565b919082604091031261031f57602061379c83613778565b92015190565b156137a957565b60405162461bcd60e51b815260206004820152601e60248201527f4d61726b65743a2065786368616e676552617465206e6f742076616c696400006044820152606490fd5b6137f98215156137a2565b602060018060a01b0360095416916064600c54604051948593849263442c159960e01b845260048401526024830152600060448301525afa908115610bed57600091613866575b509061067f613852926022549061337e565b620186a0613862601e548361337e565b0491565b906020823d8211613894575b8161387f60209383613250565b8101031261389157505161067f613840565b80fd5b3d9150613872565b6001600160a01b031660008181526018602052604081205490926138bf916137ee565b9183526017602052604083205480156139a05781156139a0578181106139a0578281101561399657601454613908918391610a249161347b906001600160801b0383169061337e565b90620186a092838302928084048514901517156139825761392d9291613590916133d5565b91601b5491601c549361394085856133ef565b80820291848212600160ff1b82141661398257818305149015171561353b5705818482019485129112908015821691151617613520575080821261351b575090565b634e487b7160e01b85526011600452602485fd5b50505050601b5490565b50505090565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03161480613aa7575b15613a01577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f000000000000000000000000000000000000000000000000000000000000000082527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a0815260c081018181106001600160401b03821117612c115760405251902090565b507f000000000000000000000000000000000000000000000000000000000000000046146139d8565b15613ad757565b60405162461bcd60e51b815260206004820152601660248201527545524332303a2062616c616e636520746f6f206c6f7760501b6044820152606490fd5b15613b1c57565b60405162461bcd60e51b815260206004820152601660248201527545524332303a206e6f207a65726f206164647265737360501b6044820152606490fd5b51906001600160a01b038216820361031f57565b519060ff8216820361031f57565b600581101561310e5780613b8d5750565b60018103613bd55760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b6044820152606490fd5b60028103613c225760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606490fd5b600314613c2b57565b60405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608490fd5b9291906fa2a8918ca85bafe22016d0b997e4df60600160ff1b038311613cf45791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa15613ce75781516001600160a01b03811615613ce1579190565b50600190565b50604051903d90823e3d90fd5b50505050600090600390565b60001981146133915760010190565b7fe50de2333c10a9502fcb1d8ae13a51bbf423153dfc63c2b8997665b32154afc360018060a01b038092169160009083825260036020526040822094169384825260205284604082205580a4565b909160207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259160018060a01b03809416938460005260028352604060002095169485600052825280604060002055604051908152a3565b60405190613dc1826131e3565b60006040838281528260208201520152565b60405190613de0826131fe565b6014546001600160801b038116835260801c6020830152565b60405190613e06826131fe565b6025546001600160801b038116835260801c6020830152565b6001600160801b03918216908216019190821161339157565b613e40613db4565b5060006020604051613e51816131fe565b828152015260006020604051613e66816131fe565b828152015260405190613e78826131e3565b602454916001600160401b038316815260208101926001600160401b038160401c16845260801c60408201528092613eae613dd3565b92613eb7613df9565b92600060018060a01b0360095416600e549460018060801b038751166040519063442c159960e01b8252876004830152602482015260006044820152602081606481865afa8015610bed576000906142c4575b8951613f2092506001600160801b0316906133e2565b8061428f575060005b613f3e6001600160401b0382935116426133d5565b948515614265575050426001600160401b031660208a8101919091528801516001600160801b03161561421b57506020670de0b6b3a7640000613fa085613f9b8c6001600160401b038d60018060801b039051169151169061337e565b61337e565b895191900496906001600160801b0390613fbf90828a16908316613e1f565b168952875160405163442c159960e01b815260048101929092526001600160801b031660248201526000604482015291829060649082905afa8015610bed576000906141e7575b875161401c92506001600160801b0316906133e2565b9261404a8461067f620186a0614034601a548a61337e565b60208c01516001600160801b031691900461337e565b6040890180519195916001600160801b03808816929161406d9084908316613e1f565b16905260208801805190916001600160801b039161408d91908316613e1f565b169052806141b2575060005b602a549093848281101561412d576140b190836133d5565b90670de0b6b3a7640000820291808304670de0b6b3a764000014901517156133915761067f6141056140ff6140f16001600160401b039661410f966133a7565b93613f9b602e54958061337e565b836133e2565b91848d511661337e565b168089526001600160401b03602d54168091106141295750565b8852565b909150602b5480821161413f57505050565b614148916133d5565b670de0b6b3a7640000810290808204670de0b6b3a76400001490151715613391576001600160401b039161067f61418b6140ff6140f161419495602c54906133a7565b848d511661337e565b81602d5460401c168082116141aa575b50168852565b9050386141a4565b87516001600160801b0316670de0b6b3a7640000818102929180840490911490151715613391576141e2916133a7565b614099565b506020813d602011614213575b8161420160209383613250565b8101031261031f5761401c9051614006565b3d91506141f4565b9697939450509350506001600160401b038151166001600160401b03602f5416809103614259575b50939261424e613df9565b926000926000929190565b81526001925038614243565b975098505050505092505091614279613dd3565b91614282613df9565b9160009160009190600090565b88516001600160801b0316670de0b6b3a7640000818102929180840490911490151715613391576142bf916133a7565b613f29565b506020813d6020116142f0575b816142de60209383613250565b8101031261031f57613f209051613f0a565b3d91506142d1565b6143b36040602080614308613e38565b93999593909290156143c3575050506001600160401b03602f54166000807f33af5ce86e8438eff54589f85332916444457dfa8685493fbd579b809097026b878a51838152a45b80518482015196909101516001600160801b0319608091821b81166001600160401b0390931667ffffffffffffffff60401b60409990991b9890981697909717919091176024558151919093015190921b84166001600160801b0392831617601455565b83511692015160801b1617602555565b7f33af5ce86e8438eff54589f85332916444457dfa8685493fbd579b809097026b876001600160401b03865116948b51908152a461434f565b3d15614427573d9061440d82613271565b9161441b6040519384613250565b82523d6000602084013e565b606090565b6001600160801b03918216908216039190821161339157565b1561444c57565b60405162461bcd60e51b8152602060048201526018602482015277084d2ce84c2dcce7440d8cadccee8d040dad2e6dac2e8c6d60431b6044820152606490fd5b919082604091031261031f576020825192015190565b91909160018060a01b0392836009541690600c5460409485519063442c159960e01b82526004928084840152602496878401526000958660448501526020958685606481855afa9485156147f557918b8b928a9485986147b7575b509060a4911694835194859384926311a5cc7760e31b84528b8401528d30908401528760448401528960648401528160848401525af180156147ad57614791575b5088600d5416908851926370a0823160e01b94858552308786015287858b81875afa9485156147875789888d948f948c97958f95859b61473f575b50906145ba9291600b54169751998a9889978896635cd3dc1560e01b885233908801528601526044850152606484015260a0608484015260a4830190613045565b03925af18015614735576146fd575b508388600d54169287895180958193825230888301525afa80156146f35785906146be575b6145f892506133d5565b95861561467e5790606483926009541691600e54928989519889958694638eb22cdd60e01b86528501528301528660448301525afa93841561467357508193614642575b50505091565b9091809350813d831161466c575b61465a8183613250565b8101031261389157505138808061463c565b503d614650565b51913d9150823e3d90fd5b50818460649387519362461bcd60e51b85528401528201527f53474c3a206f6e436f6c6c61746572616c5265636569766572206661696c65646044820152fd5b50908381813d83116146ec575b6146d58183613250565b810103126146e857906145f891516145ee565b8480fd5b503d6146cb565b87513d87823e3d90fd5b8481813d831161472e575b6147128183613250565b8101031261472a5761472390613778565b50386145c9565b8580fd5b503d614708565b88513d88823e3d90fd5b96999a50509550959250505081813d8311614780575b61475f8183613250565b8101031261375657928989886145ba8f9897968f968d98519a909192614579565b503d614755565b8b513d8b823e3d90fd5b6147a790893d8b11610c6a57610c5c8183613250565b5061453e565b89513d89823e3d90fd5b935096505091508681813d83116147ee575b6147d38183613250565b810103126147ea57519387918a918c9060a46144fd565b8780fd5b503d6147c9565b8a513d8a823e3d90fd5b9190811015610b905760051b0190565b919060018060a01b0380600094168452602060178152604085205490811561491257601881526040862054801561490b5781614849613dd3565b9460095416916064600c54604051948593849263442c159960e01b8452600484015260248301528b60448301525afa9687156148ff5780976148c9575b50506137046148ae6148a56148c4969798620186a0602254049061337e565b601f549061337e565b95613f9b60018060801b0394858751169061337e565b111590565b9096508187813d83116148f8575b6148e18183613250565b8101031261389157509451946137046148ae614886565b503d6148d7565b604051903d90823e3d90fd5b5050505050565b5060019450505050565b9081526001600160a01b0391821660208201529116604082015260006060820152608081019190915260a00190565b60405190614958826131fe565b60038252623f3f3f60e81b6020830152565b908151811015610b90570160200190565b60ff1660ff81146133915760010190565b805160408110614a075750805181019060208181840193031261031f576020810151906001600160401b03821161031f570181603f8201121561031f5760208101516149d781613271565b926149e56040519485613250565b8184526040828401011161031f57614a04916040602085019101613022565b90565b602092908303614af5576000805b60ff81168581109081614ad6575b5015614a3757614a329061497b565b614a15565b9260ff80941692614a4784613271565b93614a556040519586613250565b808552614a64601f1991613271565b013687860137825b85811687811080614ab9575b15614aae57614aa99190614aa36001600160f81b0319614a98838861496a565b5116871a918861496a565b5361497b565b614a6c565b505094505050905090565b506001600160f81b0319614acd828661496a565b51161515614a78565b6001600160f81b03199150614aeb908661496a565b5116151538614a23565b915050614a0461494b56feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa26469706673582212207b12888fbe7633bd2c9a1e7f4f95574950e6de79e28d8cc01460eab816d1c2f064736f6c63430008120033", + "bytecode": "0x6101408060405234620001e5576200001781620001ea565b601381526001602082017f546170696f63612053696e67756c617269747900000000000000000000000000815260206040516200005481620001ea565b8381520192603160f81b845251902091208160e052610100918183524660a0526040519160208301907f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f92838352604085015260608401524660808401523060a084015260a0835260c083019280841060018060401b03851117620001cf5760408490525190206080523060c052610120908152600580546001600160a01b0319163390811790915560007f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a362013880601b5562015f90601c55612710601d55612ee06020557f0bd4060688a1800ae986e4840aebc924bb40b5bf44de4583df2257220b54b77c6026557f7d1dc38e60930664f8cbf495da6556ca091d2f92d6550877750c049864b182306027556161a86028556032602f55614bf0928362000207843960805183613a4f015260a05183613b1a015260c05183613a19015260e05183613a9e01525182613ac401525181613a7b0152f35b634e487b7160e01b600052604160045260246000fd5b600080fd5b604081019081106001600160401b03821117620001cf5760405256fe608080604052600436101561001357600080fd5b60e0600035811c918262a02a201461301a5750816302ce728f14612eb757816306fdde0314612e00578163078dfbe714612cfc578163095ea7b314612cd65781630c4e84f014612bbc57816318160ddd14612b9b5781631c9e379b14612b615781631da8bf1014612aaa57816323b872dd14612906578163313ce56714612876578163331960ff1461285857816334d441d01461283a5781633644e5151461281f57816337b6b7b91461280157816338d52e0f146127d85781633ba0b9a9146127ba5781633f741adb1461279657816340626d8b1461277857816344de240a1461275a578163473e3ce71461273c57816348e4163e146127025781634d7f2a34146126e45781634e71e0c814612636578163529898f21461261957816352f353eb146125f257816355140232146125cb57816355c2ab94146125a157816357935462146125835781635dfe04e8146125245781636c3d8b8f146124fb57816370a08231146124c1578163727785471461248b57816374645ff3146124605781637dc0d1d0146124375781637ecebe00146123fd5781637fa0b84e146123cc578163821226e8146123ae5781638285ef401461237c5781638c5d0ed31461235e5781638da5cb5b14612335578163910dd7c8146120eb578163959916dc146120cd57816395d89b411461201357816399a9702814611fe45781639c5d719214611fc65781639e15e89f14611f81578163a28e6b8214611abc578163a9059cbb146119da578163b0e21e8a146119bc578163b27c0e7414611981578163bb4cfe3b14611963578163ce8849ed1461193a578163d3fb2a38146114e1578163d505accf1461135c57508063d8dfeb4514611333578063dd62ed3e146112e2578063de406577146112b9578063e0996cb61461129b578063e30c397814611272578063e5644d8b146103cf578063ea64dd56146103b1578063eec0f42e14610393578063f42760b714610375578063f8ba4cff1461035a578063f9557ccb146103245763ffe04c661461030157600080fd5b3461031f57600036600319011261031f576020602954604051908152f35b600080fd5b3461031f57600036600319011261031f57602454604080516001600160801b038316815260809290921c602083015290f35b0390f35b3461031f57600036600319011261031f57610373614372565b005b3461031f57600036600319011261031f576020602a54604051908152f35b3461031f57600036600319011261031f576020600c54604051908152f35b3461031f57600036600319011261031f576020601f54604051908152f35b3461031f57608036600319011261031f576004356001600160401b03811161031f576103ff903690600401613333565b906024356001600160401b03811161031f5761041f903690600401613333565b6044356001600160401b03811161031f5761043e903690600401613333565b90916064356001600160401b03811161031f5761045f903690600401613333565b9290916004600052600760205260ff6040600020541661123c5787156111fc578088036111c1576104918289146144bf565b61049c8285146144bf565b600f5460405163d6d7d52560e01b8152602060048201526010549097916001600160a01b03169088906000906104d181613167565b9081602485015260018116908160001461119f5750600114611156575b50918160008160409503925af1968715610c1557600090600098611122575b508781611118575b501561110e57866011555b610528614372565b60009860005b818110610578578a1561053d57005b60405162461bcd60e51b815260206004820152601360248201527214d1d30e881b9bc81d5cd95c9cc8199bdd5b99606a1b6044820152606490fd5b61058381838c614879565b356001600160a01b038116810361031f5761059e8a82614889565b156105b3575b506105ae90613d70565b61052e565b9a6105bd90613d70565b9a6105c9828686614879565b35906105d683888c614879565b35906001600160a01b038216820361031f5789841015610bb8578360051b890135601e198a36030181121561031f578901926001600160401b0384351161031f5783353603602085011361031f5761062e8d8361390c565b918d156110c95760018060a01b03600954166020600c5460018060a01b03841660005260188252606460406000205491604051948593849263442c159960e01b845260048401526024830152600060448301525afa908115610c15578f90600092611093575b506106a56106aa92602154906133ee565b613417565b9360018060a01b03821660005260176020526106cb856040600020546134cb565b80601d5480611074575b508085111561106d575b6001600160a01b0384166000908152601760205260409020549081811115611064575080965b111561102f578f938181111561102857505b6001600160a01b038316600090815260176020526040902054908181111561101d57506107448180613445565b6001600160a01b038416600090815260176020526040902055610765613e43565b60208101516001600160801b0316610fe85750602081965b60646107a361079a60018060a01b036009541698600c54946133ee565b60215490613417565b916040519788938492638eb22cdd60e01b845260048401526024830152600060448301525afa938415610c1557600094610fb4575b506001600160a01b0383166000908152601860205260409020548411610f6f5760018060a01b03831660005260186020526040600020610819858254613445565b90558515610f3b57601454906108606001600160801b0361083e8982168286166144a6565b16926001600160801b0319926001600160801b0316908316841760801c6144a6565b60801b161760145560018060a01b0360095416956020600e546064604051809a8193638eb22cdd60e01b835260048301528a6024830152600160448301525afa968715610c1557600097610f03575b508691610991610998926015805488808211600014610ef9576108d191613445565b905b5560018060a01b0386166000526025806020526040600020602790815490816000526020526040600020548a11600014610ec4575060018060a01b0388166000528160205260406000209054600052602052600060408120555b60018060a01b03871660005280602052604060002090602691825490816000526020526040600020548811600014610e90575060018060a01b03881660005260205260406000209054600052602052600060408120555b36906020813591016132cf565b908561451c565b5010610e4b57600954600e54604051627eeac760e11b815230600482015260248101919091526001600160a01b039091169390602081604481885afa8015610c1557600090610e17575b6024546109f992506001600160801b031690613445565b9580871115610e0757610a1b610a13620186a09289613445565b925b836133ee565b0495610a278783613445565b9485610c99575b5086610c21575b610a4f87610a4a8760018060801b0394613445565b613445565b602454916001600160801b0391610a699116828416613e8f565b6001600160801b03199092169116176024908155600d5460095460405163095ea7b360e01b81526001600160a01b039182166004820152600093810184905292602092849260449284929091165af18015610c155787918691610bce575b50610a4a90610ad593613445565b6040516000815230907f30a8c4f9ab5af7e1309ca87c32377d1a83366c5990472dbf9d262450eae14e3860203092a460405190610b1182613241565b6001825260203681840137815115610bb8576001600160a01b03166020820190815260405191518291906000905b808210610b96575050508190039020604080519384526020840194909452928201526105ae9392919033907f85b91d472e69b2cfe848ed50eb5d8582ae96c22057b6e46250255dd6f6c3519290606090a4906105a4565b82516001600160a01b0316845260209384019390920191600190910190610b3f565b634e487b7160e01b600052603260045260246000fd5b9150506020813d602011610c0d575b81610bea60209383613293565b8101031261031f57610a4a85610ad593610c048a946137e8565b50935090610ac7565b3d9150610bdd565b6040513d6000823e3d90fd5b610c5660408860018060a01b0360095416600e5460008451809681958294634d4d7cbd60e11b84523390309060048601614996565b03925af18015610c1557610c6b575b50610a35565b610c8c9060403d604011610c92575b610c848183613293565b810190614506565b50610c65565b503d610c7a565b600d5460405163095ea7b360e01b8152600481019290925260006024830181905260209183916044918391906001600160a01b03165af18015610c1557610dce575b50600d5460095460405163095ea7b360e01b81526001600160a01b03918216600482015260001960248201529160209183916044918391600091165af18015610c1557610d95575b50600954600e54600a5460408051634d4d7cbd60e11b815293909284926001600160a01b039283169284926000928492610d68928f9290911690309060048601614996565b03925af18015610c155715610a2e57610d8f9060403d604011610c9257610c848183613293565b50610a2e565b6020813d602011610dc6575b81610dae60209383613293565b8101031261031f57610dbf906137e8565b5038610d23565b3d9150610da1565b6020813d602011610dff575b81610de760209383613293565b8101031261031f57610df8906137e8565b5038610cdb565b3d9150610dda565b50620186a0610a1b600092610a15565b506020813d602011610e43575b81610e3160209383613293565b8101031261031f576109f990516109e2565b3d9150610e24565b60405162461bcd60e51b815260206004820152601b60248201527f53474c3a20617373657420616d6f756e74206e6f742076616c696400000000006044820152606490fd5b915060018060a01b0388166000526020526040600020906000526020526040600020610ebd868254613445565b9055610984565b905060018060a01b038816600052816020526040600020906000526020526040600020610ef2898254613445565b905561092d565b50506000906108d3565b909196506020813d602011610f33575b81610f2060209383613293565b8101031261031f575195906109986108af565b3d9150610f13565b60405162461bcd60e51b815260206004820152600c60248201526b14d1d30e881cdbdb1d995b9d60a21b6044820152606490fd5b60405162461bcd60e51b815260206004820152601a60248201527f53474c3a206e6f7420656e6f75676820636f6c6c61746572616c0000000000006044820152606490fd5b9093506020813d602011610fe0575b81610fd060209383613293565b8101031261031f575192386107d8565b3d9150610fc3565b805160209161101791611004906001600160801b0316856133ee565b908301516001600160801b031690613417565b9661077d565b610744908092613445565b9050610717565b60405162461bcd60e51b815260206004820152600d60248201526c14d1d30e88189859081919589d609a1b6044820152606490fd5b90508096610705565b50836106df565b90620186a061108661108d93836133ee565b0490613452565b386106d5565b9150506020813d6020116110c1575b816110af60209383613293565b8101031261031f57518e6106a5610694565b3d91506110a2565b60405162461bcd60e51b815260206004820152601b60248201527f53474c3a2065786368616e676552617465206e6f742076616c696400000000006044820152606490fd5b6011549650610520565b905015158a610515565b905061114791975060403d60401161114f575b61113f8183613293565b8101906137f5565b96908a61050d565b503d611135565b601060009081529150600080516020614b9b8339815191525b8183106111835750508101604401816104ee565b8060209294604485600194549201015201910190918a9261116f565b60ff191660448581019190915291151560051b840190910191508290506104ee565b60405162461bcd60e51b8152602060048201526013602482015272084847440d8cadccee8d040dad2e6dac2e8c6d606b1b6044820152606490fd5b60405162461bcd60e51b815260206004820152601860248201527742423a206e6f7468696e6720746f206c697175696461746560401b6044820152606490fd5b60405162461bcd60e51b815260206004820152600e60248201526d13585c9ad95d0e881c185d5cd95960921b6044820152606490fd5b3461031f57600036600319011261031f576006546040516001600160a01b039091168152602090f35b3461031f57600036600319011261031f576020601d54604051908152f35b3461031f57600036600319011261031f576009546040516001600160a01b039091168152602090f35b3461031f57604036600319011261031f576112fb613066565b61130361307c565b9060018060a01b038091166000526002602052604060002091166000526020526020604060002054604051908152f35b3461031f57600036600319011261031f57600b546040516001600160a01b039091168152602090f35b3461031f5761136a366130e9565b8394969793929192421161149c57611448926114409260018060a01b0395868b16978860005260046020526040600020918254926113a784613d70565b90556040519160208301937f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e2668552600060408501528b60608501528a8d1660808501528d60a085015260c08401528183015281526114048161325c565b51902061140f613a16565b9060405190602082019261190160f01b8452602283015260428201526042815261143881613278565b519020613ceb565b919091613bec565b16036114575761037392613dcd565b60405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152606490fd5b60405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b3461031f5761016036600319011261031f576001600160a01b036004358181169081900361031f576001600160401b039160243583811161031f5761152a903690600401613306565b90936044359383851680950361031f5761154984600554163314613363565b806118fb575b508161179a575b505090809250611759575b505060643580611741575b5060843580611729575b5060a43580611712575b5060c435806116ee575b5060e435806116ca575b506101043580611698575b506101243580611624575b5061014435806115b657005b601e5481106115c457601f55005b60405162461bcd60e51b815260206004820152603260248201527f4d61726b65743a206c69717569646174696f6e436f6c6c61746572616c697a616044820152711d1a5bdb94985d19481d1bdbc81cdb585b1b60721b6064820152608490fd5b611633620186a08211156133ae565b601f54811161164557601e55806115aa565b60405162461bcd60e51b815260206004820152602560248201527f4d61726b65743a20636f6c6c61746572616c697a6174696f6e5261746520746f6044820152646f2062696760d81b6064820152608490fd5b806016547fae6e0ab3b95f0a53ff9660a390ccedcbbf1f2355dce974a9841af106fddcfaba600080a36016558061159f565b6116d8620186a082106133ae565b6116e5601b5482116133ae565b601c5580611594565b6116fc620186a082106133ae565b611709601c5482106133ae565b601b558061158a565b611720620186a082106133ae565b601d5580611580565b611738620186a08211156133ae565b601a5580611576565b611750620186a08211156133ae565b6019558061156c565b816008549182167f5a62d22209e370e38eea92cfddcd228e656e6ec139243392a760a7769f5877fd600080a36001600160a01b031916176008558080611561565b81116118e5576117ab601054613167565b601f8111611894575b506000601f821160011461181d5781929394600092611812575b50508160011b916000199060031b1c1916176010555b7fa6f004921c944d4b8bf6e38462b00f36a58d62495d56b51f571ab78f732c9815600080a181908380611556565b0135905084806117ce565b60106000908152601f19831695600080516020614b9b83398151915292909160205b88821061187c57505083600195969710611862575b505050811b016010556117e4565b0135600019600384901b60f8161c19169055848080611854565b8060018496829495870135815501950192019061183f565b6010600052600080516020614b9b833981519152601f830160051c8101602084106118de575b601f90920160051c01905b8181106118d257506117b4565b600081556001016118c5565b50806118ba565b634e487b7160e01b600052604160045260246000fd5b600f80546001600160a01b0319169190911790557f0b2d6eb667d0522c3eb86e4288afecae6c11591ffd1345d4d12407e0598bca9b600080a18561154f565b3461031f57600036600319011261031f576008546040516001600160a01b039091168152602090f35b3461031f57600036600319011261031f576020601e54604051908152f35b3461031f57600036600319011261031f576060602354604051906001600160401b0380821683528160401c16602083015260801c6040820152f35b3461031f57600036600319011261031f576020601a54604051908152f35b3461031f57604036600319011261031f576119f3613066565b602435908115801590611aaa575b611a37575b6040519182526001600160a01b0316903390600080516020614b7b83398151915290602090a3602060405160018152f35b336000526001602052604060002054611a5283821015613b40565b6001600160a01b038216908333839003611a6f575b505050611a06565b611a7e91610a4a841515613b85565b3360005260016020526040600020556000526040600020611aa0838254613452565b9055828083611a67565b50336001600160a01b03821614611a01565b3461031f57608036600319011261031f57611ad5613066565b611add61307c565b60443591906001600160a01b0390818416840361031f57606435936001600160401b03851161031f57611b17611b56953690600401613306565b9190611b2885600554163314613363565b84600f54169560405163d6d7d52560e01b81526040816020998a60048301528160008160249e8f82016131a1565b03925af1908115610c1557600090600092611f5f575b508181611f55575b5015611f4c57806011555b15611efd578590611b8e614372565b16928360005260178752611bb0604060002054620186a06110868a54836133ee565b87896064896009541693611bcd61079a600c5492601154906133ee565b946040519586948593638eb22cdd60e01b85526004850152830152600060448301525afa908115610c1557600091611ed0575b50846000526018885260406000205411611e8e57611dad611d62856000989695611d5c8a999796611d9f9660258e8d9a8b526018815260408b205496611cfb611c47613e43565b828e5260178452611cd6611cad8f604090205492600087604051611c6a81613241565b82815201528681019360018060801b03928382818094868a8381511615600014611e4157505081611ca0915b16828851166144a6565b16855216828751166144a6565b169384905251601480546001600160801b0319166001600160801b039390921692909216179055565b601480546001600160801b031660809290921b6001600160801b031916919091179055565b808c52601782528b604081205582825260408c206026548d5282528b6040812055808c5260188252611d3360408d2054601554613445565b6015558b52601881528a6040812055528d60408a20906027548b525288604081205536916132cf565b9161451c565b600d546040805163a9059cbb60e01b8d82019081526001600160a01b039099168e8201908152602081019490945291909816979094859350910190565b03601f198101835282613293565b51925af1611db9614476565b81611e09575b5015611dc757005b601c6064926040519262461bcd60e51b845260048401528201527f426f72696e6745524332303a205472616e73666572206661696c6564000000006044820152fd5b80915051828115918215611e22575b5050905083611dbf565b838092935001031261031f5781611e3991016137e8565b808285611e18565b611ca092611e7a611e7086611e67611e5d8280985116866133ee565b8287511690613417565b945116846133ee565b848c511690613417565b1015611c9657611e8990613d70565b611c96565b606488886040519162461bcd60e51b83528160048401528201527f42696742616e673a2043616e6e6f7420666f726365206c6971756964617465646044820152fd5b90508781813d8311611ef6575b611ee78183613293565b8101031261031f575189611c00565b503d611edd565b60405162461bcd60e51b8152600481018890526022818a01527f42423a2063757272656e742065786368616e676552617465206e6f742076616c6044820152611a5960f21b6064820152608490fd5b50601154611b7f565b905015158a611b74565b9050611f7a915060403d60401161114f5761113f8183613293565b908a611b6c565b3461031f57604036600319011261031f57610356611fa9611fa0613066565b6024359061368e565b604080519384526020840192909252908201529081906060820190565b3461031f57600036600319011261031f576020602b54604051908152f35b3461031f57604036600319011261031f57602061200b612002613066565b6024359061390c565b604051908152f35b3461031f57600036600319011261031f5760008060018060a01b03600b541660405160208101906395d89b4160e01b82526004815261205181613241565b51915afa61205d614476565b90156120bc5761206f61035691614a06565b6120a86023604051809362746d2d60e81b60208301526120988151809260208686019101613092565b8101036003810184520182613293565b6040519182916020835260208301906130b5565b506103566120c86149c5565b61206f565b3461031f57600036600319011261031f576020602f54604051908152f35b3461031f57604036600319011261031f576004356001600160401b03811161031f573660238201121561031f5761212c9036906024816004013591016132cf565b9060243561ffff811680910361031f5761010091828480518101031261031f5760206121598186016137e8565b9161216660408701613bca565b9061217360608801613bca565b9660808101519660a08201519261218c60c08401613bde565b91818401519301519360018060a01b03808097169b16988142116122f0579289888d9897946122679794611440978f8e6000146122c9577f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e266955b8d6000526004865260406000209283549361220085613d70565b905560405196870197885260408701528d6060870152608086015260a085015260c08401528183015281526122348161325c565b51902061223f613a16565b90604051908a82019261190160f01b8452602283015260428201526042815261143881613278565b160361228557501561227c5761037392613dcd565b61037392613d7f565b6064906040519062461bcd60e51b82526004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152fd5b7f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d6956121e6565b60405162461bcd60e51b815260048101899052601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b3461031f57600036600319011261031f576005546040516001600160a01b039091168152602090f35b3461031f57600036600319011261031f576020601b54604051908152f35b3461031f57600036600319011261031f57601454604080516001600160801b038316815260809290921c602083015290f35b3461031f57600036600319011261031f576020602d54604051908152f35b3461031f57604036600319011261031f576123f26123e8613066565b6024359033613d7f565b602060405160018152f35b3461031f57602036600319011261031f576001600160a01b0361241e613066565b1660005260046020526020604060002054604051908152f35b3461031f57600036600319011261031f57600f546040516001600160a01b039091168152602090f35b3461031f57600036600319011261031f576103566040516120a881612484816131a1565b0382613293565b3461031f57602036600319011261031f57600435600981101561031f5760ff6124b5602092613138565b54166040519015158152f35b3461031f57602036600319011261031f576001600160a01b036124e2613066565b1660005260016020526020604060002054604051908152f35b3461031f57600036600319011261031f57600a546040516001600160a01b039091168152602090f35b3461031f57600036600319011261031f5761253d613e24565b506080612548613ea8565b509350505050604051916001600160401b0380825116845260208201511660208401526040600180861b039101511660408301526060820152f35b3461031f57600036600319011261031f576020601c54604051908152f35b3461031f57600036600319011261031f5760206001600160401b03602c5460401c16604051908152f35b3461031f57600036600319011261031f5760206001600160401b03602c5416604051908152f35b3461031f57600036600319011261031f5760206001600160401b03602e5416604051908152f35b3461031f57600036600319011261031f5760208054604051908152f35b3461031f57600036600319011261031f576006546001600160a01b0390818116338190036126a057806005549384167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a36001600160a01b03199283161760055516600655005b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b3461031f57600036600319011261031f576020602854604051908152f35b3461031f57602036600319011261031f576001600160a01b03612723613066565b1660005260176020526020604060002054604051908152f35b3461031f57600036600319011261031f576020601554604051908152f35b3461031f57600036600319011261031f576020600e54604051908152f35b3461031f57600036600319011261031f576020601654604051908152f35b3461031f57606036600319011261031f57602061200b6044356024356004356135c7565b3461031f57600036600319011261031f576020601154604051908152f35b3461031f57600036600319011261031f57600d546040516001600160a01b039091168152602090f35b3461031f57600036600319011261031f576020601254604051908152f35b3461031f57600036600319011261031f57602061200b613a16565b3461031f57600036600319011261031f576020601954604051908152f35b3461031f57600036600319011261031f576020601354604051908152f35b3461031f57600036600319011261031f5760008060018060a01b03600d5416604051602081019063313ce56760e01b8252600481526128b481613241565b51915afa6128c0614476565b90806128fb575b156128f15760208180518101031261031f576128e66020809201613bde565b60ff60405191168152f35b50602060126128e6565b5060208151146128c7565b3461031f57606036600319011261031f5761291f613066565b61292761307c565b6044359081612964575b6040519182526001600160a01b03908116921690600080516020614b7b83398151915290602090a3602060405160018152f35b60018060a01b0380841680600052602060018152846040600020549361298c82861015613b40565b8516938484036129a1575b5050505050612931565b836000526002835260406000203360005283526040600020546000198103612a15575b5084926129ec600080516020614b7b833981519152979593600193610a4a6020991515613b85565b92600052526040600020556000526040600020612a0a858254613452565b905591858481612997565b90918110612a6a57602094926129ec88600080516020614b7b833981519152989694612a4382600196613445565b866000526002855260406000203360005285526040600020559350939597505092946129c4565b60405162461bcd60e51b815260048101849052601860248201527745524332303a20616c6c6f77616e636520746f6f206c6f7760401b6044820152606490fd5b3461031f57612ab8366130e9565b8394969793929192421161149c57612b52926114409260018060a01b0395868b1697886000526004602052604060002091825492612af584613d70565b90556040519160208301937f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d68552600060408501528b60608501528a8d1660808501528d60a085015260c08401528183015281526114048161325c565b16036114575761037392613d7f565b3461031f57602036600319011261031f576001600160a01b03612b82613066565b1660005260186020526020604060002054604051908152f35b3461031f57600036600319011261031f57602060245460801c604051908152f35b3461031f57604036600319011261031f57600435600981101561031f57612be16130da565b6008549091906001600160a01b03163303612c9a5760ff612c0182613138565b54161515911515918214612c6057808260ff612c1f612c4e94613138565b54161515827feeec81de25875ce1725479bb76f720a8defdb43dea041919ae37bb4aae9847c0600080a4613138565b9060ff80198354169116179055600080f35b60405162461bcd60e51b81526020600482015260126024820152714d61726b65743a2073616d6520737461746560701b6044820152606490fd5b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881d5b985d5d1a1bdc9a5e995960621b6044820152606490fd5b3461031f57604036600319011261031f576123f2612cf2613066565b6024359033613dcd565b3461031f57606036600319011261031f57612d15613066565b612d1d6130da565b60443590811515820361031f5760018060a01b03928391612d4383600554163314613363565b15612de7571690811590811591612ddf575b5015612da257806005549283167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a36001600160a01b031991821617600555600680549091169055005b60405162461bcd60e51b81526020600482015260156024820152744f776e61626c653a207a65726f206164647265737360581b6044820152606490fd5b905083612d55565b9150501660018060a01b03196006541617600655600080f35b3461031f57600036600319011261031f5760008060018060a01b03600b541660405160208101906306fdde0360e01b825260048152612e3e81613241565b51915afa612e4a614476565b9015612ea657612e5c61035691614a06565b6120a86034604051809373546170696f63612053696e67756c61726974792d60601b6020830152612e968151809260208686019101613092565b8101036014810184520182613293565b50610356612eb26149c5565b612e5c565b3461031f57600036600319011261031f57600f546040805163d6d7d52560e01b8152602060048201529182906001600160a01b031681600081612efc602482016131a1565b03925af18015610c1557600091600091612ff9575b50908015612f9b578115612f5f5781604092601155807f9f9192b5edb17356c524e08d9e025c8e2f6307e6ea52fb7968faa3081f51c3c8600080a25b42601355825191151582526020820152f35b60405162461bcd60e51b81526020600482015260146024820152734d61726b65743a20696e76616c6964207261746560601b6044820152606490fd5b9050612fac60135460125490613452565b4211612fbd57604090601154612f4d565b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881c985d19481d1bdbc81bdb1960621b6044820152606490fd5b9050613014915060403d60401161114f5761113f8183613293565b82612f11565b3461031f57604036600319011261031f57602090613036613066565b61303e61307c565b9060018060a01b03809116600052600384526040600020911660005282526040600020548152f35b600435906001600160a01b038216820361031f57565b602435906001600160a01b038216820361031f57565b60005b8381106130a55750506000910152565b8181015183820152602001613095565b906020916130ce81518092818552858086019101613092565b601f01601f1916010190565b60243590811515820361031f57565b60e090600319011261031f576001600160a01b0390600435828116810361031f5791602435908116810361031f5790604435906064359060843560ff8116810361031f579060a4359060c43590565b6009811015613151576000526007602052604060002090565b634e487b7160e01b600052602160045260246000fd5b90600182811c92168015613197575b602083101461318157565b634e487b7160e01b600052602260045260246000fd5b91607f1691613176565b601054600092916131b182613167565b90818152600192838116908160001461320b57506001146131d157505050565b9092935060106000526020928360002092846000945b8386106131f75750505050010190565b8054858701830152940193859082016131e7565b91935050602093945060ff191683830152151560051b010190565b606081019081106001600160401b038211176118e557604052565b604081019081106001600160401b038211176118e557604052565b61010081019081106001600160401b038211176118e557604052565b608081019081106001600160401b038211176118e557604052565b90601f801991011681019081106001600160401b038211176118e557604052565b6001600160401b0381116118e557601f01601f191660200190565b9291926132db826132b4565b916132e96040519384613293565b82948184528183011161031f578281602093846000960137010152565b9181601f8401121561031f578235916001600160401b03831161031f576020838186019501011161031f57565b9181601f8401121561031f578235916001600160401b03831161031f576020808501948460051b01011161031f57565b1561336a57565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b156133b557565b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881b9bdd081d985b1a59607a1b6044820152606490fd5b8181029291811591840414171561340157565b634e487b7160e01b600052601160045260246000fd5b8115613421570490565b634e487b7160e01b600052601260045260246000fd5b604d811161340157600a0a90565b9190820391821161340157565b9190820180921161340157565b8181039291600013801582851316918412161761340157565b906509184e72a0009182810292818405149015171561340157565b90670de0b6b3a76400009182810292818405149015171561340157565b811561342157600160ff1b8114600019831416613401570590565b601454613506916134f591906134eb906001600160801b038316906133ee565b9060801c90613417565b91620186a0918291601f54906133ee565b048083106135bf576135189083613445565b601e54602054830190818411613401578391613533916133ee565b04918281039060008094128183128116918313901516176135ab579061356461355e61356993613478565b91613493565b6134b0565b90808212156135a457600160ff1b82146135905703905b80821161358b575090565b905090565b634e487b7160e01b81526011600452602490fd5b5090613580565b634e487b7160e01b83526011600452602483fd5b505050600090565b601454919291613606916135f7916135ed916134eb906001600160801b038316906133ee565b93601f54906133ee565b61360083613437565b90613417565b908183106135bf5761356461355e6136606136246136659587613445565b9361365b61365561364c601e5461364661363d86613437565b60205490613452565b906133ee565b61360084613437565b91613437565b61345f565b613478565b600081121561368857600160ff1b8114613401576000039080821161358b575090565b90613580565b9160018060a01b0380931691600093838552602060178152604091828720549081156137db57878385516136c181613241565b82815201526136ce613ea8565b50505050509190506136e1861515613812565b6009541683600c54898b52601882526064878c2054918851948593849263442c159960e01b8452600484015260248301528d60448301525afa9081156137d157899161379e575b509161377e6137929798999492613759886106a5613750601898620186a060215404906133ee565b601e54906133ee565b815190936001600160801b03918691613774918416906133ee565b9201511690613417565b81811061379657035b97835252205461385e565b9091565b505082613787565b90508381813d83116137ca575b6137b58183613293565b810103126137c6575161377e613728565b8880fd5b503d6137ab565b85513d8b823e3d90fd5b5086955085949350505050565b5190811515820361031f57565b919082604091031261031f57602061380c836137e8565b92015190565b1561381957565b60405162461bcd60e51b815260206004820152601e60248201527f4d61726b65743a2065786368616e676552617465206e6f742076616c696400006044820152606490fd5b613869821515613812565b602060018060a01b0360095416916064600c54604051948593849263442c159960e01b845260048401526024830152600060448301525afa908115610c15576000916138d6575b50906106a56138c292602154906133ee565b620186a06138d2601e54836133ee565b0491565b906020823d8211613904575b816138ef60209383613293565b810103126139015750516106a56138b0565b80fd5b3d91506138e2565b6001600160a01b0316600081815260186020526040812054909261392f9161385e565b918352601760205260408320548015613a10578115613a1057818110613a105782811015613a0657601454613978918391610a4a916134eb906001600160801b038316906133ee565b90620186a092838302928084048514901517156139f25761399d929161360091613445565b91601b5491601c54936139b0858561345f565b80820291848212600160ff1b8214166139f25781830514901517156135ab5705818482019485129112908015821691151617613590575080821261358b575090565b634e487b7160e01b85526011600452602485fd5b50505050601b5490565b50505090565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03161480613b17575b15613a71577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f000000000000000000000000000000000000000000000000000000000000000082527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a0815260c081018181106001600160401b038211176118e55760405251902090565b507f00000000000000000000000000000000000000000000000000000000000000004614613a48565b15613b4757565b60405162461bcd60e51b815260206004820152601660248201527545524332303a2062616c616e636520746f6f206c6f7760501b6044820152606490fd5b15613b8c57565b60405162461bcd60e51b815260206004820152601660248201527545524332303a206e6f207a65726f206164647265737360501b6044820152606490fd5b51906001600160a01b038216820361031f57565b519060ff8216820361031f57565b60058110156131515780613bfd5750565b60018103613c455760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b6044820152606490fd5b60028103613c925760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606490fd5b600314613c9b57565b60405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608490fd5b9291906fa2a8918ca85bafe22016d0b997e4df60600160ff1b038311613d645791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa15613d575781516001600160a01b03811615613d51579190565b50600190565b50604051903d90823e3d90fd5b50505050600090600390565b60001981146134015760010190565b7fe50de2333c10a9502fcb1d8ae13a51bbf423153dfc63c2b8997665b32154afc360018060a01b038092169160009083825260036020526040822094169384825260205284604082205580a4565b909160207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259160018060a01b03809416938460005260028352604060002095169485600052825280604060002055604051908152a3565b60405190613e3182613226565b60006040838281528260208201520152565b60405190613e5082613241565b6014546001600160801b038116835260801c6020830152565b60405190613e7682613241565b6024546001600160801b038116835260801c6020830152565b6001600160801b03918216908216019190821161340157565b613eb0613e24565b5060006020604051613ec181613241565b828152015260006020604051613ed681613241565b8281520152604051613ee781613226565b6023546001600160401b03811682526001600160401b038160401c16602083015260801c60408201528091613f1a613e43565b91613f23613e69565b600954600e54825160405163442c159960e01b8152600481018390526001600160801b03909116602482015260006044820181905293959194919391926001600160a01b031690602081606481855afa8015610c155760009061433e575b8851613f9792506001600160801b031690613452565b80614309575060005b80613fb86001600160401b0360208701511642613445565b9485156142df575050426001600160401b031660208a8101919091528801516001600160801b03161561429557506020670de0b6b3a764000061401a856140158c6001600160401b038d60018060801b03905116915116906133ee565b6133ee565b895191900496906001600160801b039061403990828a16908316613e8f565b168952875160405163442c159960e01b815260048101929092526001600160801b031660248201526000604482015291829060649082905afa8015610c1557600090614261575b875161409692506001600160801b031690613452565b926140c4846106a5620186a06140ae601a548a6133ee565b60208c01516001600160801b03169190046133ee565b6040890180519195916001600160801b0380881692916140e79084908316613e8f565b16905260208801805190916001600160801b039161410791908316613e8f565b1690528061422c575060005b602954909384828110156141a75761412b9083613445565b90670de0b6b3a7640000820291808304670de0b6b3a76400001490151715613401576106a561417f61417961416b6001600160401b039661418996613417565b93614015602d5495806133ee565b83613452565b91848d51166133ee565b168089526001600160401b03602c54168091106141a35750565b8852565b909150602a548082116141b957505050565b6141c291613445565b670de0b6b3a7640000810290808204670de0b6b3a76400001490151715613401576001600160401b03916106a561420561417961416b61420e95602b5490613417565b848d51166133ee565b81602c5460401c16808211614224575b50168852565b90503861421e565b87516001600160801b0316670de0b6b3a76400008181029291808404909114901517156134015761425c91613417565b614113565b506020813d60201161428d575b8161427b60209383613293565b8101031261031f576140969051614080565b3d915061426e565b9697939450509350506001600160401b038151166001600160401b03602e54168091036142d3575b5093926142c8613e69565b926000926000929190565b815260019250386142bd565b9750985050505050925050916142f3613e43565b916142fc613e69565b9160009160009190600090565b87516001600160801b0316670de0b6b3a76400008181029291808404909114901517156134015761433991613417565b613fa0565b506020813d60201161436a575b8161435860209383613293565b8101031261031f57613f979051613f81565b3d915061434b565b61442d6040602080614382613ea8565b939995939092901561443d575050506001600160401b03602e54166000807f33af5ce86e8438eff54589f85332916444457dfa8685493fbd579b809097026b878a51838152a45b80518482015196909101516001600160801b0319608091821b81166001600160401b0390931667ffffffffffffffff60401b60409990991b9890981697909717919091176023558151919093015190921b84166001600160801b0392831617601455565b83511692015160801b1617602455565b7f33af5ce86e8438eff54589f85332916444457dfa8685493fbd579b809097026b876001600160401b03865116948b51908152a46143c9565b3d156144a1573d90614487826132b4565b916144956040519384613293565b82523d6000602084013e565b606090565b6001600160801b03918216908216039190821161340157565b156144c657565b60405162461bcd60e51b8152602060048201526018602482015277084d2ce84c2dcce7440d8cadccee8d040dad2e6dac2e8c6d60431b6044820152606490fd5b919082604091031261031f576020825192015190565b91909160018060a01b0392836009541690600c5460409485519063442c159960e01b82526004928084840152602496878401526000958660448501526020958685606481855afa94851561486f57918b8b928a948598614831575b509060a4911694835194859384926311a5cc7760e31b84528b8401528d30908401528760448401528960648401528160848401525af180156148275761480b575b5088600d5416908851926370a0823160e01b94858552308786015287858b81875afa9485156148015789888d948f948c97958f95859b6147b9575b50906146349291600b54169751998a9889978896635cd3dc1560e01b885233908801528601526044850152606484015260a0608484015260a48301906130b5565b03925af180156147af57614777575b508388600d54169287895180958193825230888301525afa801561476d578590614738575b6146729250613445565b9586156146f85790606483926009541691600e54928989519889958694638eb22cdd60e01b86528501528301528660448301525afa9384156146ed575081936146bc575b50505091565b9091809350813d83116146e6575b6146d48183613293565b810103126139015750513880806146b6565b503d6146ca565b51913d9150823e3d90fd5b50818460649387519362461bcd60e51b85528401528201527f53474c3a206f6e436f6c6c61746572616c5265636569766572206661696c65646044820152fd5b50908381813d8311614766575b61474f8183613293565b8101031261476257906146729151614668565b8480fd5b503d614745565b87513d87823e3d90fd5b8481813d83116147a8575b61478c8183613293565b810103126147a45761479d906137e8565b5038614643565b8580fd5b503d614782565b88513d88823e3d90fd5b96999a50509550959250505081813d83116147fa575b6147d98183613293565b810103126137c657928989886146348f9897968f968d98519a9091926145f3565b503d6147cf565b8b513d8b823e3d90fd5b61482190893d8b11610c9257610c848183613293565b506145b8565b89513d89823e3d90fd5b935096505091508681813d8311614868575b61484d8183613293565b8101031261486457519387918a918c9060a4614577565b8780fd5b503d614843565b8a513d8a823e3d90fd5b9190811015610bb85760051b0190565b919060018060a01b0380600094168452602060178152604085205490811561498c57601881526040862054801561498557816148c3613e43565b9460095416916064600c54604051948593849263442c159960e01b8452600484015260248301528b60448301525afa968715614979578097614943575b505061377461492861491f61493e969798620186a060215404906133ee565b601f54906133ee565b9561401560018060801b039485875116906133ee565b111590565b9096508187813d8311614972575b61495b8183613293565b810103126139015750945194613774614928614900565b503d614951565b604051903d90823e3d90fd5b5050505050565b5060019450505050565b9081526001600160a01b0391821660208201529116604082015260006060820152608081019190915260a00190565b604051906149d282613241565b60038252623f3f3f60e81b6020830152565b908151811015610bb8570160200190565b60ff1660ff81146134015760010190565b805160408110614a815750805181019060208181840193031261031f576020810151906001600160401b03821161031f570181603f8201121561031f576020810151614a51816132b4565b92614a5f6040519485613293565b8184526040828401011161031f57614a7e916040602085019101613092565b90565b602092908303614b6f576000805b60ff81168581109081614b50575b5015614ab157614aac906149f5565b614a8f565b9260ff80941692614ac1846132b4565b93614acf6040519586613293565b808552614ade601f19916132b4565b013687860137825b85811687811080614b33575b15614b2857614b239190614b1d6001600160f81b0319614b1283886149e4565b5116871a91886149e4565b536149f5565b614ae6565b505094505050905090565b506001600160f81b0319614b4782866149e4565b51161515614af2565b6001600160f81b03199150614b6590866149e4565b5116151538614a9d565b915050614a7e6149c556feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae672a26469706673582212203a7c7c2293b30056fd3f48e72a9dc30e5536afce079e4a540546ebc5e0a4041264736f6c63430008120033", + "deployedBytecode": "0x608080604052600436101561001357600080fd5b60e0600035811c918262a02a201461301a5750816302ce728f14612eb757816306fdde0314612e00578163078dfbe714612cfc578163095ea7b314612cd65781630c4e84f014612bbc57816318160ddd14612b9b5781631c9e379b14612b615781631da8bf1014612aaa57816323b872dd14612906578163313ce56714612876578163331960ff1461285857816334d441d01461283a5781633644e5151461281f57816337b6b7b91461280157816338d52e0f146127d85781633ba0b9a9146127ba5781633f741adb1461279657816340626d8b1461277857816344de240a1461275a578163473e3ce71461273c57816348e4163e146127025781634d7f2a34146126e45781634e71e0c814612636578163529898f21461261957816352f353eb146125f257816355140232146125cb57816355c2ab94146125a157816357935462146125835781635dfe04e8146125245781636c3d8b8f146124fb57816370a08231146124c1578163727785471461248b57816374645ff3146124605781637dc0d1d0146124375781637ecebe00146123fd5781637fa0b84e146123cc578163821226e8146123ae5781638285ef401461237c5781638c5d0ed31461235e5781638da5cb5b14612335578163910dd7c8146120eb578163959916dc146120cd57816395d89b411461201357816399a9702814611fe45781639c5d719214611fc65781639e15e89f14611f81578163a28e6b8214611abc578163a9059cbb146119da578163b0e21e8a146119bc578163b27c0e7414611981578163bb4cfe3b14611963578163ce8849ed1461193a578163d3fb2a38146114e1578163d505accf1461135c57508063d8dfeb4514611333578063dd62ed3e146112e2578063de406577146112b9578063e0996cb61461129b578063e30c397814611272578063e5644d8b146103cf578063ea64dd56146103b1578063eec0f42e14610393578063f42760b714610375578063f8ba4cff1461035a578063f9557ccb146103245763ffe04c661461030157600080fd5b3461031f57600036600319011261031f576020602954604051908152f35b600080fd5b3461031f57600036600319011261031f57602454604080516001600160801b038316815260809290921c602083015290f35b0390f35b3461031f57600036600319011261031f57610373614372565b005b3461031f57600036600319011261031f576020602a54604051908152f35b3461031f57600036600319011261031f576020600c54604051908152f35b3461031f57600036600319011261031f576020601f54604051908152f35b3461031f57608036600319011261031f576004356001600160401b03811161031f576103ff903690600401613333565b906024356001600160401b03811161031f5761041f903690600401613333565b6044356001600160401b03811161031f5761043e903690600401613333565b90916064356001600160401b03811161031f5761045f903690600401613333565b9290916004600052600760205260ff6040600020541661123c5787156111fc578088036111c1576104918289146144bf565b61049c8285146144bf565b600f5460405163d6d7d52560e01b8152602060048201526010549097916001600160a01b03169088906000906104d181613167565b9081602485015260018116908160001461119f5750600114611156575b50918160008160409503925af1968715610c1557600090600098611122575b508781611118575b501561110e57866011555b610528614372565b60009860005b818110610578578a1561053d57005b60405162461bcd60e51b815260206004820152601360248201527214d1d30e881b9bc81d5cd95c9cc8199bdd5b99606a1b6044820152606490fd5b61058381838c614879565b356001600160a01b038116810361031f5761059e8a82614889565b156105b3575b506105ae90613d70565b61052e565b9a6105bd90613d70565b9a6105c9828686614879565b35906105d683888c614879565b35906001600160a01b038216820361031f5789841015610bb8578360051b890135601e198a36030181121561031f578901926001600160401b0384351161031f5783353603602085011361031f5761062e8d8361390c565b918d156110c95760018060a01b03600954166020600c5460018060a01b03841660005260188252606460406000205491604051948593849263442c159960e01b845260048401526024830152600060448301525afa908115610c15578f90600092611093575b506106a56106aa92602154906133ee565b613417565b9360018060a01b03821660005260176020526106cb856040600020546134cb565b80601d5480611074575b508085111561106d575b6001600160a01b0384166000908152601760205260409020549081811115611064575080965b111561102f578f938181111561102857505b6001600160a01b038316600090815260176020526040902054908181111561101d57506107448180613445565b6001600160a01b038416600090815260176020526040902055610765613e43565b60208101516001600160801b0316610fe85750602081965b60646107a361079a60018060a01b036009541698600c54946133ee565b60215490613417565b916040519788938492638eb22cdd60e01b845260048401526024830152600060448301525afa938415610c1557600094610fb4575b506001600160a01b0383166000908152601860205260409020548411610f6f5760018060a01b03831660005260186020526040600020610819858254613445565b90558515610f3b57601454906108606001600160801b0361083e8982168286166144a6565b16926001600160801b0319926001600160801b0316908316841760801c6144a6565b60801b161760145560018060a01b0360095416956020600e546064604051809a8193638eb22cdd60e01b835260048301528a6024830152600160448301525afa968715610c1557600097610f03575b508691610991610998926015805488808211600014610ef9576108d191613445565b905b5560018060a01b0386166000526025806020526040600020602790815490816000526020526040600020548a11600014610ec4575060018060a01b0388166000528160205260406000209054600052602052600060408120555b60018060a01b03871660005280602052604060002090602691825490816000526020526040600020548811600014610e90575060018060a01b03881660005260205260406000209054600052602052600060408120555b36906020813591016132cf565b908561451c565b5010610e4b57600954600e54604051627eeac760e11b815230600482015260248101919091526001600160a01b039091169390602081604481885afa8015610c1557600090610e17575b6024546109f992506001600160801b031690613445565b9580871115610e0757610a1b610a13620186a09289613445565b925b836133ee565b0495610a278783613445565b9485610c99575b5086610c21575b610a4f87610a4a8760018060801b0394613445565b613445565b602454916001600160801b0391610a699116828416613e8f565b6001600160801b03199092169116176024908155600d5460095460405163095ea7b360e01b81526001600160a01b039182166004820152600093810184905292602092849260449284929091165af18015610c155787918691610bce575b50610a4a90610ad593613445565b6040516000815230907f30a8c4f9ab5af7e1309ca87c32377d1a83366c5990472dbf9d262450eae14e3860203092a460405190610b1182613241565b6001825260203681840137815115610bb8576001600160a01b03166020820190815260405191518291906000905b808210610b96575050508190039020604080519384526020840194909452928201526105ae9392919033907f85b91d472e69b2cfe848ed50eb5d8582ae96c22057b6e46250255dd6f6c3519290606090a4906105a4565b82516001600160a01b0316845260209384019390920191600190910190610b3f565b634e487b7160e01b600052603260045260246000fd5b9150506020813d602011610c0d575b81610bea60209383613293565b8101031261031f57610a4a85610ad593610c048a946137e8565b50935090610ac7565b3d9150610bdd565b6040513d6000823e3d90fd5b610c5660408860018060a01b0360095416600e5460008451809681958294634d4d7cbd60e11b84523390309060048601614996565b03925af18015610c1557610c6b575b50610a35565b610c8c9060403d604011610c92575b610c848183613293565b810190614506565b50610c65565b503d610c7a565b600d5460405163095ea7b360e01b8152600481019290925260006024830181905260209183916044918391906001600160a01b03165af18015610c1557610dce575b50600d5460095460405163095ea7b360e01b81526001600160a01b03918216600482015260001960248201529160209183916044918391600091165af18015610c1557610d95575b50600954600e54600a5460408051634d4d7cbd60e11b815293909284926001600160a01b039283169284926000928492610d68928f9290911690309060048601614996565b03925af18015610c155715610a2e57610d8f9060403d604011610c9257610c848183613293565b50610a2e565b6020813d602011610dc6575b81610dae60209383613293565b8101031261031f57610dbf906137e8565b5038610d23565b3d9150610da1565b6020813d602011610dff575b81610de760209383613293565b8101031261031f57610df8906137e8565b5038610cdb565b3d9150610dda565b50620186a0610a1b600092610a15565b506020813d602011610e43575b81610e3160209383613293565b8101031261031f576109f990516109e2565b3d9150610e24565b60405162461bcd60e51b815260206004820152601b60248201527f53474c3a20617373657420616d6f756e74206e6f742076616c696400000000006044820152606490fd5b915060018060a01b0388166000526020526040600020906000526020526040600020610ebd868254613445565b9055610984565b905060018060a01b038816600052816020526040600020906000526020526040600020610ef2898254613445565b905561092d565b50506000906108d3565b909196506020813d602011610f33575b81610f2060209383613293565b8101031261031f575195906109986108af565b3d9150610f13565b60405162461bcd60e51b815260206004820152600c60248201526b14d1d30e881cdbdb1d995b9d60a21b6044820152606490fd5b60405162461bcd60e51b815260206004820152601a60248201527f53474c3a206e6f7420656e6f75676820636f6c6c61746572616c0000000000006044820152606490fd5b9093506020813d602011610fe0575b81610fd060209383613293565b8101031261031f575192386107d8565b3d9150610fc3565b805160209161101791611004906001600160801b0316856133ee565b908301516001600160801b031690613417565b9661077d565b610744908092613445565b9050610717565b60405162461bcd60e51b815260206004820152600d60248201526c14d1d30e88189859081919589d609a1b6044820152606490fd5b90508096610705565b50836106df565b90620186a061108661108d93836133ee565b0490613452565b386106d5565b9150506020813d6020116110c1575b816110af60209383613293565b8101031261031f57518e6106a5610694565b3d91506110a2565b60405162461bcd60e51b815260206004820152601b60248201527f53474c3a2065786368616e676552617465206e6f742076616c696400000000006044820152606490fd5b6011549650610520565b905015158a610515565b905061114791975060403d60401161114f575b61113f8183613293565b8101906137f5565b96908a61050d565b503d611135565b601060009081529150600080516020614b9b8339815191525b8183106111835750508101604401816104ee565b8060209294604485600194549201015201910190918a9261116f565b60ff191660448581019190915291151560051b840190910191508290506104ee565b60405162461bcd60e51b8152602060048201526013602482015272084847440d8cadccee8d040dad2e6dac2e8c6d606b1b6044820152606490fd5b60405162461bcd60e51b815260206004820152601860248201527742423a206e6f7468696e6720746f206c697175696461746560401b6044820152606490fd5b60405162461bcd60e51b815260206004820152600e60248201526d13585c9ad95d0e881c185d5cd95960921b6044820152606490fd5b3461031f57600036600319011261031f576006546040516001600160a01b039091168152602090f35b3461031f57600036600319011261031f576020601d54604051908152f35b3461031f57600036600319011261031f576009546040516001600160a01b039091168152602090f35b3461031f57604036600319011261031f576112fb613066565b61130361307c565b9060018060a01b038091166000526002602052604060002091166000526020526020604060002054604051908152f35b3461031f57600036600319011261031f57600b546040516001600160a01b039091168152602090f35b3461031f5761136a366130e9565b8394969793929192421161149c57611448926114409260018060a01b0395868b16978860005260046020526040600020918254926113a784613d70565b90556040519160208301937f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e2668552600060408501528b60608501528a8d1660808501528d60a085015260c08401528183015281526114048161325c565b51902061140f613a16565b9060405190602082019261190160f01b8452602283015260428201526042815261143881613278565b519020613ceb565b919091613bec565b16036114575761037392613dcd565b60405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152606490fd5b60405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b3461031f5761016036600319011261031f576001600160a01b036004358181169081900361031f576001600160401b039160243583811161031f5761152a903690600401613306565b90936044359383851680950361031f5761154984600554163314613363565b806118fb575b508161179a575b505090809250611759575b505060643580611741575b5060843580611729575b5060a43580611712575b5060c435806116ee575b5060e435806116ca575b506101043580611698575b506101243580611624575b5061014435806115b657005b601e5481106115c457601f55005b60405162461bcd60e51b815260206004820152603260248201527f4d61726b65743a206c69717569646174696f6e436f6c6c61746572616c697a616044820152711d1a5bdb94985d19481d1bdbc81cdb585b1b60721b6064820152608490fd5b611633620186a08211156133ae565b601f54811161164557601e55806115aa565b60405162461bcd60e51b815260206004820152602560248201527f4d61726b65743a20636f6c6c61746572616c697a6174696f6e5261746520746f6044820152646f2062696760d81b6064820152608490fd5b806016547fae6e0ab3b95f0a53ff9660a390ccedcbbf1f2355dce974a9841af106fddcfaba600080a36016558061159f565b6116d8620186a082106133ae565b6116e5601b5482116133ae565b601c5580611594565b6116fc620186a082106133ae565b611709601c5482106133ae565b601b558061158a565b611720620186a082106133ae565b601d5580611580565b611738620186a08211156133ae565b601a5580611576565b611750620186a08211156133ae565b6019558061156c565b816008549182167f5a62d22209e370e38eea92cfddcd228e656e6ec139243392a760a7769f5877fd600080a36001600160a01b031916176008558080611561565b81116118e5576117ab601054613167565b601f8111611894575b506000601f821160011461181d5781929394600092611812575b50508160011b916000199060031b1c1916176010555b7fa6f004921c944d4b8bf6e38462b00f36a58d62495d56b51f571ab78f732c9815600080a181908380611556565b0135905084806117ce565b60106000908152601f19831695600080516020614b9b83398151915292909160205b88821061187c57505083600195969710611862575b505050811b016010556117e4565b0135600019600384901b60f8161c19169055848080611854565b8060018496829495870135815501950192019061183f565b6010600052600080516020614b9b833981519152601f830160051c8101602084106118de575b601f90920160051c01905b8181106118d257506117b4565b600081556001016118c5565b50806118ba565b634e487b7160e01b600052604160045260246000fd5b600f80546001600160a01b0319169190911790557f0b2d6eb667d0522c3eb86e4288afecae6c11591ffd1345d4d12407e0598bca9b600080a18561154f565b3461031f57600036600319011261031f576008546040516001600160a01b039091168152602090f35b3461031f57600036600319011261031f576020601e54604051908152f35b3461031f57600036600319011261031f576060602354604051906001600160401b0380821683528160401c16602083015260801c6040820152f35b3461031f57600036600319011261031f576020601a54604051908152f35b3461031f57604036600319011261031f576119f3613066565b602435908115801590611aaa575b611a37575b6040519182526001600160a01b0316903390600080516020614b7b83398151915290602090a3602060405160018152f35b336000526001602052604060002054611a5283821015613b40565b6001600160a01b038216908333839003611a6f575b505050611a06565b611a7e91610a4a841515613b85565b3360005260016020526040600020556000526040600020611aa0838254613452565b9055828083611a67565b50336001600160a01b03821614611a01565b3461031f57608036600319011261031f57611ad5613066565b611add61307c565b60443591906001600160a01b0390818416840361031f57606435936001600160401b03851161031f57611b17611b56953690600401613306565b9190611b2885600554163314613363565b84600f54169560405163d6d7d52560e01b81526040816020998a60048301528160008160249e8f82016131a1565b03925af1908115610c1557600090600092611f5f575b508181611f55575b5015611f4c57806011555b15611efd578590611b8e614372565b16928360005260178752611bb0604060002054620186a06110868a54836133ee565b87896064896009541693611bcd61079a600c5492601154906133ee565b946040519586948593638eb22cdd60e01b85526004850152830152600060448301525afa908115610c1557600091611ed0575b50846000526018885260406000205411611e8e57611dad611d62856000989695611d5c8a999796611d9f9660258e8d9a8b526018815260408b205496611cfb611c47613e43565b828e5260178452611cd6611cad8f604090205492600087604051611c6a81613241565b82815201528681019360018060801b03928382818094868a8381511615600014611e4157505081611ca0915b16828851166144a6565b16855216828751166144a6565b169384905251601480546001600160801b0319166001600160801b039390921692909216179055565b601480546001600160801b031660809290921b6001600160801b031916919091179055565b808c52601782528b604081205582825260408c206026548d5282528b6040812055808c5260188252611d3360408d2054601554613445565b6015558b52601881528a6040812055528d60408a20906027548b525288604081205536916132cf565b9161451c565b600d546040805163a9059cbb60e01b8d82019081526001600160a01b039099168e8201908152602081019490945291909816979094859350910190565b03601f198101835282613293565b51925af1611db9614476565b81611e09575b5015611dc757005b601c6064926040519262461bcd60e51b845260048401528201527f426f72696e6745524332303a205472616e73666572206661696c6564000000006044820152fd5b80915051828115918215611e22575b5050905083611dbf565b838092935001031261031f5781611e3991016137e8565b808285611e18565b611ca092611e7a611e7086611e67611e5d8280985116866133ee565b8287511690613417565b945116846133ee565b848c511690613417565b1015611c9657611e8990613d70565b611c96565b606488886040519162461bcd60e51b83528160048401528201527f42696742616e673a2043616e6e6f7420666f726365206c6971756964617465646044820152fd5b90508781813d8311611ef6575b611ee78183613293565b8101031261031f575189611c00565b503d611edd565b60405162461bcd60e51b8152600481018890526022818a01527f42423a2063757272656e742065786368616e676552617465206e6f742076616c6044820152611a5960f21b6064820152608490fd5b50601154611b7f565b905015158a611b74565b9050611f7a915060403d60401161114f5761113f8183613293565b908a611b6c565b3461031f57604036600319011261031f57610356611fa9611fa0613066565b6024359061368e565b604080519384526020840192909252908201529081906060820190565b3461031f57600036600319011261031f576020602b54604051908152f35b3461031f57604036600319011261031f57602061200b612002613066565b6024359061390c565b604051908152f35b3461031f57600036600319011261031f5760008060018060a01b03600b541660405160208101906395d89b4160e01b82526004815261205181613241565b51915afa61205d614476565b90156120bc5761206f61035691614a06565b6120a86023604051809362746d2d60e81b60208301526120988151809260208686019101613092565b8101036003810184520182613293565b6040519182916020835260208301906130b5565b506103566120c86149c5565b61206f565b3461031f57600036600319011261031f576020602f54604051908152f35b3461031f57604036600319011261031f576004356001600160401b03811161031f573660238201121561031f5761212c9036906024816004013591016132cf565b9060243561ffff811680910361031f5761010091828480518101031261031f5760206121598186016137e8565b9161216660408701613bca565b9061217360608801613bca565b9660808101519660a08201519261218c60c08401613bde565b91818401519301519360018060a01b03808097169b16988142116122f0579289888d9897946122679794611440978f8e6000146122c9577f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e266955b8d6000526004865260406000209283549361220085613d70565b905560405196870197885260408701528d6060870152608086015260a085015260c08401528183015281526122348161325c565b51902061223f613a16565b90604051908a82019261190160f01b8452602283015260428201526042815261143881613278565b160361228557501561227c5761037392613dcd565b61037392613d7f565b6064906040519062461bcd60e51b82526004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152fd5b7f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d6956121e6565b60405162461bcd60e51b815260048101899052601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b3461031f57600036600319011261031f576005546040516001600160a01b039091168152602090f35b3461031f57600036600319011261031f576020601b54604051908152f35b3461031f57600036600319011261031f57601454604080516001600160801b038316815260809290921c602083015290f35b3461031f57600036600319011261031f576020602d54604051908152f35b3461031f57604036600319011261031f576123f26123e8613066565b6024359033613d7f565b602060405160018152f35b3461031f57602036600319011261031f576001600160a01b0361241e613066565b1660005260046020526020604060002054604051908152f35b3461031f57600036600319011261031f57600f546040516001600160a01b039091168152602090f35b3461031f57600036600319011261031f576103566040516120a881612484816131a1565b0382613293565b3461031f57602036600319011261031f57600435600981101561031f5760ff6124b5602092613138565b54166040519015158152f35b3461031f57602036600319011261031f576001600160a01b036124e2613066565b1660005260016020526020604060002054604051908152f35b3461031f57600036600319011261031f57600a546040516001600160a01b039091168152602090f35b3461031f57600036600319011261031f5761253d613e24565b506080612548613ea8565b509350505050604051916001600160401b0380825116845260208201511660208401526040600180861b039101511660408301526060820152f35b3461031f57600036600319011261031f576020601c54604051908152f35b3461031f57600036600319011261031f5760206001600160401b03602c5460401c16604051908152f35b3461031f57600036600319011261031f5760206001600160401b03602c5416604051908152f35b3461031f57600036600319011261031f5760206001600160401b03602e5416604051908152f35b3461031f57600036600319011261031f5760208054604051908152f35b3461031f57600036600319011261031f576006546001600160a01b0390818116338190036126a057806005549384167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a36001600160a01b03199283161760055516600655005b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b3461031f57600036600319011261031f576020602854604051908152f35b3461031f57602036600319011261031f576001600160a01b03612723613066565b1660005260176020526020604060002054604051908152f35b3461031f57600036600319011261031f576020601554604051908152f35b3461031f57600036600319011261031f576020600e54604051908152f35b3461031f57600036600319011261031f576020601654604051908152f35b3461031f57606036600319011261031f57602061200b6044356024356004356135c7565b3461031f57600036600319011261031f576020601154604051908152f35b3461031f57600036600319011261031f57600d546040516001600160a01b039091168152602090f35b3461031f57600036600319011261031f576020601254604051908152f35b3461031f57600036600319011261031f57602061200b613a16565b3461031f57600036600319011261031f576020601954604051908152f35b3461031f57600036600319011261031f576020601354604051908152f35b3461031f57600036600319011261031f5760008060018060a01b03600d5416604051602081019063313ce56760e01b8252600481526128b481613241565b51915afa6128c0614476565b90806128fb575b156128f15760208180518101031261031f576128e66020809201613bde565b60ff60405191168152f35b50602060126128e6565b5060208151146128c7565b3461031f57606036600319011261031f5761291f613066565b61292761307c565b6044359081612964575b6040519182526001600160a01b03908116921690600080516020614b7b83398151915290602090a3602060405160018152f35b60018060a01b0380841680600052602060018152846040600020549361298c82861015613b40565b8516938484036129a1575b5050505050612931565b836000526002835260406000203360005283526040600020546000198103612a15575b5084926129ec600080516020614b7b833981519152979593600193610a4a6020991515613b85565b92600052526040600020556000526040600020612a0a858254613452565b905591858481612997565b90918110612a6a57602094926129ec88600080516020614b7b833981519152989694612a4382600196613445565b866000526002855260406000203360005285526040600020559350939597505092946129c4565b60405162461bcd60e51b815260048101849052601860248201527745524332303a20616c6c6f77616e636520746f6f206c6f7760401b6044820152606490fd5b3461031f57612ab8366130e9565b8394969793929192421161149c57612b52926114409260018060a01b0395868b1697886000526004602052604060002091825492612af584613d70565b90556040519160208301937f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d68552600060408501528b60608501528a8d1660808501528d60a085015260c08401528183015281526114048161325c565b16036114575761037392613d7f565b3461031f57602036600319011261031f576001600160a01b03612b82613066565b1660005260186020526020604060002054604051908152f35b3461031f57600036600319011261031f57602060245460801c604051908152f35b3461031f57604036600319011261031f57600435600981101561031f57612be16130da565b6008549091906001600160a01b03163303612c9a5760ff612c0182613138565b54161515911515918214612c6057808260ff612c1f612c4e94613138565b54161515827feeec81de25875ce1725479bb76f720a8defdb43dea041919ae37bb4aae9847c0600080a4613138565b9060ff80198354169116179055600080f35b60405162461bcd60e51b81526020600482015260126024820152714d61726b65743a2073616d6520737461746560701b6044820152606490fd5b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881d5b985d5d1a1bdc9a5e995960621b6044820152606490fd5b3461031f57604036600319011261031f576123f2612cf2613066565b6024359033613dcd565b3461031f57606036600319011261031f57612d15613066565b612d1d6130da565b60443590811515820361031f5760018060a01b03928391612d4383600554163314613363565b15612de7571690811590811591612ddf575b5015612da257806005549283167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a36001600160a01b031991821617600555600680549091169055005b60405162461bcd60e51b81526020600482015260156024820152744f776e61626c653a207a65726f206164647265737360581b6044820152606490fd5b905083612d55565b9150501660018060a01b03196006541617600655600080f35b3461031f57600036600319011261031f5760008060018060a01b03600b541660405160208101906306fdde0360e01b825260048152612e3e81613241565b51915afa612e4a614476565b9015612ea657612e5c61035691614a06565b6120a86034604051809373546170696f63612053696e67756c61726974792d60601b6020830152612e968151809260208686019101613092565b8101036014810184520182613293565b50610356612eb26149c5565b612e5c565b3461031f57600036600319011261031f57600f546040805163d6d7d52560e01b8152602060048201529182906001600160a01b031681600081612efc602482016131a1565b03925af18015610c1557600091600091612ff9575b50908015612f9b578115612f5f5781604092601155807f9f9192b5edb17356c524e08d9e025c8e2f6307e6ea52fb7968faa3081f51c3c8600080a25b42601355825191151582526020820152f35b60405162461bcd60e51b81526020600482015260146024820152734d61726b65743a20696e76616c6964207261746560601b6044820152606490fd5b9050612fac60135460125490613452565b4211612fbd57604090601154612f4d565b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881c985d19481d1bdbc81bdb1960621b6044820152606490fd5b9050613014915060403d60401161114f5761113f8183613293565b82612f11565b3461031f57604036600319011261031f57602090613036613066565b61303e61307c565b9060018060a01b03809116600052600384526040600020911660005282526040600020548152f35b600435906001600160a01b038216820361031f57565b602435906001600160a01b038216820361031f57565b60005b8381106130a55750506000910152565b8181015183820152602001613095565b906020916130ce81518092818552858086019101613092565b601f01601f1916010190565b60243590811515820361031f57565b60e090600319011261031f576001600160a01b0390600435828116810361031f5791602435908116810361031f5790604435906064359060843560ff8116810361031f579060a4359060c43590565b6009811015613151576000526007602052604060002090565b634e487b7160e01b600052602160045260246000fd5b90600182811c92168015613197575b602083101461318157565b634e487b7160e01b600052602260045260246000fd5b91607f1691613176565b601054600092916131b182613167565b90818152600192838116908160001461320b57506001146131d157505050565b9092935060106000526020928360002092846000945b8386106131f75750505050010190565b8054858701830152940193859082016131e7565b91935050602093945060ff191683830152151560051b010190565b606081019081106001600160401b038211176118e557604052565b604081019081106001600160401b038211176118e557604052565b61010081019081106001600160401b038211176118e557604052565b608081019081106001600160401b038211176118e557604052565b90601f801991011681019081106001600160401b038211176118e557604052565b6001600160401b0381116118e557601f01601f191660200190565b9291926132db826132b4565b916132e96040519384613293565b82948184528183011161031f578281602093846000960137010152565b9181601f8401121561031f578235916001600160401b03831161031f576020838186019501011161031f57565b9181601f8401121561031f578235916001600160401b03831161031f576020808501948460051b01011161031f57565b1561336a57565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b156133b557565b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881b9bdd081d985b1a59607a1b6044820152606490fd5b8181029291811591840414171561340157565b634e487b7160e01b600052601160045260246000fd5b8115613421570490565b634e487b7160e01b600052601260045260246000fd5b604d811161340157600a0a90565b9190820391821161340157565b9190820180921161340157565b8181039291600013801582851316918412161761340157565b906509184e72a0009182810292818405149015171561340157565b90670de0b6b3a76400009182810292818405149015171561340157565b811561342157600160ff1b8114600019831416613401570590565b601454613506916134f591906134eb906001600160801b038316906133ee565b9060801c90613417565b91620186a0918291601f54906133ee565b048083106135bf576135189083613445565b601e54602054830190818411613401578391613533916133ee565b04918281039060008094128183128116918313901516176135ab579061356461355e61356993613478565b91613493565b6134b0565b90808212156135a457600160ff1b82146135905703905b80821161358b575090565b905090565b634e487b7160e01b81526011600452602490fd5b5090613580565b634e487b7160e01b83526011600452602483fd5b505050600090565b601454919291613606916135f7916135ed916134eb906001600160801b038316906133ee565b93601f54906133ee565b61360083613437565b90613417565b908183106135bf5761356461355e6136606136246136659587613445565b9361365b61365561364c601e5461364661363d86613437565b60205490613452565b906133ee565b61360084613437565b91613437565b61345f565b613478565b600081121561368857600160ff1b8114613401576000039080821161358b575090565b90613580565b9160018060a01b0380931691600093838552602060178152604091828720549081156137db57878385516136c181613241565b82815201526136ce613ea8565b50505050509190506136e1861515613812565b6009541683600c54898b52601882526064878c2054918851948593849263442c159960e01b8452600484015260248301528d60448301525afa9081156137d157899161379e575b509161377e6137929798999492613759886106a5613750601898620186a060215404906133ee565b601e54906133ee565b815190936001600160801b03918691613774918416906133ee565b9201511690613417565b81811061379657035b97835252205461385e565b9091565b505082613787565b90508381813d83116137ca575b6137b58183613293565b810103126137c6575161377e613728565b8880fd5b503d6137ab565b85513d8b823e3d90fd5b5086955085949350505050565b5190811515820361031f57565b919082604091031261031f57602061380c836137e8565b92015190565b1561381957565b60405162461bcd60e51b815260206004820152601e60248201527f4d61726b65743a2065786368616e676552617465206e6f742076616c696400006044820152606490fd5b613869821515613812565b602060018060a01b0360095416916064600c54604051948593849263442c159960e01b845260048401526024830152600060448301525afa908115610c15576000916138d6575b50906106a56138c292602154906133ee565b620186a06138d2601e54836133ee565b0491565b906020823d8211613904575b816138ef60209383613293565b810103126139015750516106a56138b0565b80fd5b3d91506138e2565b6001600160a01b0316600081815260186020526040812054909261392f9161385e565b918352601760205260408320548015613a10578115613a1057818110613a105782811015613a0657601454613978918391610a4a916134eb906001600160801b038316906133ee565b90620186a092838302928084048514901517156139f25761399d929161360091613445565b91601b5491601c54936139b0858561345f565b80820291848212600160ff1b8214166139f25781830514901517156135ab5705818482019485129112908015821691151617613590575080821261358b575090565b634e487b7160e01b85526011600452602485fd5b50505050601b5490565b50505090565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03161480613b17575b15613a71577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f000000000000000000000000000000000000000000000000000000000000000082527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a0815260c081018181106001600160401b038211176118e55760405251902090565b507f00000000000000000000000000000000000000000000000000000000000000004614613a48565b15613b4757565b60405162461bcd60e51b815260206004820152601660248201527545524332303a2062616c616e636520746f6f206c6f7760501b6044820152606490fd5b15613b8c57565b60405162461bcd60e51b815260206004820152601660248201527545524332303a206e6f207a65726f206164647265737360501b6044820152606490fd5b51906001600160a01b038216820361031f57565b519060ff8216820361031f57565b60058110156131515780613bfd5750565b60018103613c455760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b6044820152606490fd5b60028103613c925760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606490fd5b600314613c9b57565b60405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608490fd5b9291906fa2a8918ca85bafe22016d0b997e4df60600160ff1b038311613d645791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa15613d575781516001600160a01b03811615613d51579190565b50600190565b50604051903d90823e3d90fd5b50505050600090600390565b60001981146134015760010190565b7fe50de2333c10a9502fcb1d8ae13a51bbf423153dfc63c2b8997665b32154afc360018060a01b038092169160009083825260036020526040822094169384825260205284604082205580a4565b909160207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259160018060a01b03809416938460005260028352604060002095169485600052825280604060002055604051908152a3565b60405190613e3182613226565b60006040838281528260208201520152565b60405190613e5082613241565b6014546001600160801b038116835260801c6020830152565b60405190613e7682613241565b6024546001600160801b038116835260801c6020830152565b6001600160801b03918216908216019190821161340157565b613eb0613e24565b5060006020604051613ec181613241565b828152015260006020604051613ed681613241565b8281520152604051613ee781613226565b6023546001600160401b03811682526001600160401b038160401c16602083015260801c60408201528091613f1a613e43565b91613f23613e69565b600954600e54825160405163442c159960e01b8152600481018390526001600160801b03909116602482015260006044820181905293959194919391926001600160a01b031690602081606481855afa8015610c155760009061433e575b8851613f9792506001600160801b031690613452565b80614309575060005b80613fb86001600160401b0360208701511642613445565b9485156142df575050426001600160401b031660208a8101919091528801516001600160801b03161561429557506020670de0b6b3a764000061401a856140158c6001600160401b038d60018060801b03905116915116906133ee565b6133ee565b895191900496906001600160801b039061403990828a16908316613e8f565b168952875160405163442c159960e01b815260048101929092526001600160801b031660248201526000604482015291829060649082905afa8015610c1557600090614261575b875161409692506001600160801b031690613452565b926140c4846106a5620186a06140ae601a548a6133ee565b60208c01516001600160801b03169190046133ee565b6040890180519195916001600160801b0380881692916140e79084908316613e8f565b16905260208801805190916001600160801b039161410791908316613e8f565b1690528061422c575060005b602954909384828110156141a75761412b9083613445565b90670de0b6b3a7640000820291808304670de0b6b3a76400001490151715613401576106a561417f61417961416b6001600160401b039661418996613417565b93614015602d5495806133ee565b83613452565b91848d51166133ee565b168089526001600160401b03602c54168091106141a35750565b8852565b909150602a548082116141b957505050565b6141c291613445565b670de0b6b3a7640000810290808204670de0b6b3a76400001490151715613401576001600160401b03916106a561420561417961416b61420e95602b5490613417565b848d51166133ee565b81602c5460401c16808211614224575b50168852565b90503861421e565b87516001600160801b0316670de0b6b3a76400008181029291808404909114901517156134015761425c91613417565b614113565b506020813d60201161428d575b8161427b60209383613293565b8101031261031f576140969051614080565b3d915061426e565b9697939450509350506001600160401b038151166001600160401b03602e54168091036142d3575b5093926142c8613e69565b926000926000929190565b815260019250386142bd565b9750985050505050925050916142f3613e43565b916142fc613e69565b9160009160009190600090565b87516001600160801b0316670de0b6b3a76400008181029291808404909114901517156134015761433991613417565b613fa0565b506020813d60201161436a575b8161435860209383613293565b8101031261031f57613f979051613f81565b3d915061434b565b61442d6040602080614382613ea8565b939995939092901561443d575050506001600160401b03602e54166000807f33af5ce86e8438eff54589f85332916444457dfa8685493fbd579b809097026b878a51838152a45b80518482015196909101516001600160801b0319608091821b81166001600160401b0390931667ffffffffffffffff60401b60409990991b9890981697909717919091176023558151919093015190921b84166001600160801b0392831617601455565b83511692015160801b1617602455565b7f33af5ce86e8438eff54589f85332916444457dfa8685493fbd579b809097026b876001600160401b03865116948b51908152a46143c9565b3d156144a1573d90614487826132b4565b916144956040519384613293565b82523d6000602084013e565b606090565b6001600160801b03918216908216039190821161340157565b156144c657565b60405162461bcd60e51b8152602060048201526018602482015277084d2ce84c2dcce7440d8cadccee8d040dad2e6dac2e8c6d60431b6044820152606490fd5b919082604091031261031f576020825192015190565b91909160018060a01b0392836009541690600c5460409485519063442c159960e01b82526004928084840152602496878401526000958660448501526020958685606481855afa94851561486f57918b8b928a948598614831575b509060a4911694835194859384926311a5cc7760e31b84528b8401528d30908401528760448401528960648401528160848401525af180156148275761480b575b5088600d5416908851926370a0823160e01b94858552308786015287858b81875afa9485156148015789888d948f948c97958f95859b6147b9575b50906146349291600b54169751998a9889978896635cd3dc1560e01b885233908801528601526044850152606484015260a0608484015260a48301906130b5565b03925af180156147af57614777575b508388600d54169287895180958193825230888301525afa801561476d578590614738575b6146729250613445565b9586156146f85790606483926009541691600e54928989519889958694638eb22cdd60e01b86528501528301528660448301525afa9384156146ed575081936146bc575b50505091565b9091809350813d83116146e6575b6146d48183613293565b810103126139015750513880806146b6565b503d6146ca565b51913d9150823e3d90fd5b50818460649387519362461bcd60e51b85528401528201527f53474c3a206f6e436f6c6c61746572616c5265636569766572206661696c65646044820152fd5b50908381813d8311614766575b61474f8183613293565b8101031261476257906146729151614668565b8480fd5b503d614745565b87513d87823e3d90fd5b8481813d83116147a8575b61478c8183613293565b810103126147a45761479d906137e8565b5038614643565b8580fd5b503d614782565b88513d88823e3d90fd5b96999a50509550959250505081813d83116147fa575b6147d98183613293565b810103126137c657928989886146348f9897968f968d98519a9091926145f3565b503d6147cf565b8b513d8b823e3d90fd5b61482190893d8b11610c9257610c848183613293565b506145b8565b89513d89823e3d90fd5b935096505091508681813d8311614868575b61484d8183613293565b8101031261486457519387918a918c9060a4614577565b8780fd5b503d614843565b8a513d8a823e3d90fd5b9190811015610bb85760051b0190565b919060018060a01b0380600094168452602060178152604085205490811561498c57601881526040862054801561498557816148c3613e43565b9460095416916064600c54604051948593849263442c159960e01b8452600484015260248301528b60448301525afa968715614979578097614943575b505061377461492861491f61493e969798620186a060215404906133ee565b601f54906133ee565b9561401560018060801b039485875116906133ee565b111590565b9096508187813d8311614972575b61495b8183613293565b810103126139015750945194613774614928614900565b503d614951565b604051903d90823e3d90fd5b5050505050565b5060019450505050565b9081526001600160a01b0391821660208201529116604082015260006060820152608081019190915260a00190565b604051906149d282613241565b60038252623f3f3f60e81b6020830152565b908151811015610bb8570160200190565b60ff1660ff81146134015760010190565b805160408110614a815750805181019060208181840193031261031f576020810151906001600160401b03821161031f570181603f8201121561031f576020810151614a51816132b4565b92614a5f6040519485613293565b8184526040828401011161031f57614a7e916040602085019101613092565b90565b602092908303614b6f576000805b60ff81168581109081614b50575b5015614ab157614aac906149f5565b614a8f565b9260ff80941692614ac1846132b4565b93614acf6040519586613293565b808552614ade601f19916132b4565b013687860137825b85811687811080614b33575b15614b2857614b239190614b1d6001600160f81b0319614b1283886149e4565b5116871a91886149e4565b536149f5565b614ae6565b505094505050905090565b506001600160f81b0319614b4782866149e4565b51161515614af2565b6001600160f81b03199150614b6590866149e4565b5116151538614a9d565b915050614a7e6149c556feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae672a26469706673582212203a7c7c2293b30056fd3f48e72a9dc30e5536afce079e4a540546ebc5e0a4041264736f6c63430008120033", "linkReferences": {}, "deployedLinkReferences": {} } diff --git a/src/artifacts/tapioca-bar/SGLStorage.json b/src/artifacts/tapioca-bar/SGLStorage.json index a1e7a168..6836cd4e 100644 --- a/src/artifacts/tapioca-bar/SGLStorage.json +++ b/src/artifacts/tapioca-bar/SGLStorage.json @@ -1490,11 +1490,6 @@ }, { "inputs": [ - { - "internalType": "uint256", - "name": "_borrowOpeningFee", - "type": "uint256" - }, { "internalType": "contract IOracle", "name": "_oracle", @@ -1821,8 +1816,8 @@ "type": "function" } ], - "bytecode": "0x6101408060405234620001e5576200001781620001ea565b601381526001602082017f546170696f63612053696e67756c617269747900000000000000000000000000815260206040516200005481620001ea565b8381520192603160f81b845251902091208160e052610100918183524660a0526040519160208301907f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f92838352604085015260608401524660808401523060a084015260a0835260c083019280841060018060401b03851117620001cf5760408490525190206080523060c052610120908152600580546001600160a01b0319163390811790915560007f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a362013880601b5562015f90601c55612710601d556032602055612ee06021557f0bd4060688a1800ae986e4840aebc924bb40b5bf44de4583df2257220b54b77c6027557f7d1dc38e60930664f8cbf495da6556ca091d2f92d6550877750c049864b182306028556161a8602955612b2392836200020784396080518361250c015260a051836125d7015260c051836124d6015260e0518361255b01525182612581015251816125380152f35b634e487b7160e01b600052604160045260246000fd5b600080fd5b604081019081106001600160401b03821117620001cf5760405256fe608080604052600436101561001357600080fd5b600090813560e01c908162a02a2014611c415750806302ce728f14611ab957806306fdde0314611a02578063078dfbe7146118ff578063095ea7b3146118d85780630996efb7146114535780630c4e84f01461133b57806318160ddd1461131a5780631c9e379b146112e15780631da8bf101461122157806323b872dd14611084578063313ce56714610ff2578063331960ff14610fd457806334d441d014610fb65780633644e51514610f9b57806337b6b7b914610f7d57806338d52e0f14610f545780633ba0b9a914610f365780633f741adb14610f1157806340626d8b14610ef357806344de240a14610ed5578063473e3ce714610eb757806348e4163e14610e7e5780634d7f2a3414610e605780634e71e0c814610db2578063529898f214610d9457806352f353eb14610d6d5780635514023214610d4657806355c2ab9414610d1c5780635793546214610cfe5780636c3d8b8f14610cd557806370a0823114610c9c5780637277854714610c6457806374645ff314610c395780637dc0d1d014610c105780637ecebe0014610bd75780637fa0b84e14610ba5578063821226e814610b875780638285ef4014610b555780638c5d0ed314610b375780638da5cb5b14610b0e578063910dd7c8146108f1578063959916dc146108d457806395d89b411461081a57806399a97028146107ea5780639c5d7192146107cc5780639e15e89f14610791578063a9059cbb146106ae578063b0e21e8a14610690578063b27c0e7414610655578063bb4cfe3b14610637578063ce8849ed1461060e578063d505accf14610469578063d8dfeb4514610440578063dd62ed3e146103f5578063de406577146103cc578063e0996cb6146103ae578063e30c397814610385578063ea64dd5614610367578063eec0f42e14610349578063f42760b71461032b578063f9557ccb146102f55763ffe04c66146102d557600080fd5b346102f257806003193601126102f2576020602a54604051908152f35b80fd5b50346102f257806003193601126102f257602554604080516001600160801b038316815260809290921c602083015290f35b0390f35b50346102f257806003193601126102f2576020602b54604051908152f35b50346102f257806003193601126102f2576020600c54604051908152f35b50346102f257806003193601126102f2576020601f54604051908152f35b50346102f257806003193601126102f2576006546040516001600160a01b039091168152602090f35b50346102f257806003193601126102f2576020601d54604051908152f35b50346102f257806003193601126102f2576009546040516001600160a01b039091168152602090f35b50346102f25760403660031901126102f2576040602091610414611c89565b61041c611ca4565b6001600160a01b039182168352600285528383209116825283522054604051908152f35b50346102f257806003193601126102f257600b546040516001600160a01b039091168152602090f35b50346102f25761047836611d11565b908395949542116105c9576001600160a01b03878116808a52600460205260408a20805491969295929060001983146105b5578261055e9694928d92600161055698960190556040519160208301937f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e266855260408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e0815261051a81611e7f565b5190206105256124d3565b9060405190602082019261190160f01b8452602283015260428201526042815261054e81611e9b565b5190206127a8565b9190916126a9565b16036105705761056d9261287b565b80f35b60405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152606490fd5b634e487b7160e01b8c52601160045260248cfd5b60405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b50346102f257806003193601126102f2576008546040516001600160a01b039091168152602090f35b50346102f257806003193601126102f2576020601e54604051908152f35b50346102f257806003193601126102f2576060602454604051906001600160401b0380821683528160401c16602083015260801c6040820152f35b50346102f257806003193601126102f2576020601a54604051908152f35b50346102f25760403660031901126102f2576106c8611c89565b6024358092811580159061077f575b61070f575b50506040519182526001600160a01b0316903390600080516020612ace83398151915290602090a3602060405160018152f35b33815260016020526040812054610728838210156125fd565b6001600160a01b0384169033829003610743575b50506106dc565b60409361075a91610755841515612642565b611fd4565b338352600160205283832055815220610774838254611fe1565b90558138808061073c565b50336001600160a01b038416146106d7565b50346102f25760403660031901126102f25760606107b96107b0611c89565b60243590612120565b9060405192835260208301526040820152f35b50346102f257806003193601126102f2576020602c54604051908152f35b50346102f25760403660031901126102f2576020610812610809611c89565b602435906123a1565b604051908152f35b50346102f257806003193601126102f257808060018060a01b03600b541660405160208101906395d89b4160e01b82526004815261085781611e4e565b51915afa6108636128d2565b9150156108c35761087661032791612959565b6108af6023604051809362746d2d60e81b602083015261089f8151809260208686019101611cba565b8101036003810184520182611eb6565b604051918291602083526020830190611cdd565b506103276108cf612902565b610876565b50346102f257806003193601126102f25760208054604051908152f35b50346102f25760403660031901126102f2576004356001600160401b038111610b0a5736602382011215610b0a5780600401358261092e82611ed7565b9261093c6040519485611eb6565b82845260208401923660248284010111610b06578060246020930185378401015260243561ffff81168103610b0257610100918284805181010312610afe5761098490612291565b61099060408501612687565b9161099d60608601612687565b9460808101519460a0820151926109b660c0840161269b565b9160e0840151930151938042116105c9578515610ad7577f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e266915b6001600160a01b0388168b52600460205260408b20805491906000198314610ac3579161ffff610a809896949261055698969460018401905560405194602086015216604084015260018060a01b038a16606084015260018060a01b038c1660808401528a60a084015260c083015260e082015260e08152610a7181611e7f565b602081519101206105256124d3565b6001600160a01b038381169116036105705715610aad5761056d926001600160a01b03908116911661287b565b61056d926001600160a01b03908116911661282d565b634e487b7160e01b8d52601160045260248dfd5b7f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d6916109f0565b8480fd5b8380fd5b8280fd5b5080fd5b50346102f257806003193601126102f2576005546040516001600160a01b039091168152602090f35b50346102f257806003193601126102f2576020601b54604051908152f35b50346102f257806003193601126102f257601454604080516001600160801b038316815260809290921c602083015290f35b50346102f257806003193601126102f2576020602e54604051908152f35b50346102f25760403660031901126102f257610bcc610bc2611c89565b602435903361282d565b602060405160018152f35b50346102f25760203660031901126102f2576020906040906001600160a01b03610bff611c89565b168152600483522054604051908152f35b50346102f257806003193601126102f257600f546040516001600160a01b039091168152602090f35b50346102f257806003193601126102f2576103276040516108af81610c5d81611dc9565b0382611eb6565b50346102f25760203660031901126102f2576004359060098210156102f257602060ff610c9084611d60565b54166040519015158152f35b50346102f25760203660031901126102f2576020906040906001600160a01b03610cc4611c89565b168152600183522054604051908152f35b50346102f257806003193601126102f257600a546040516001600160a01b039091168152602090f35b50346102f257806003193601126102f2576020601c54604051908152f35b50346102f257806003193601126102f25760206001600160401b03602d5460401c16604051908152f35b50346102f257806003193601126102f25760206001600160401b03602d5416604051908152f35b50346102f257806003193601126102f25760206001600160401b03602f5416604051908152f35b50346102f257806003193601126102f2576020602154604051908152f35b50346102f257806003193601126102f2576006546001600160a01b039081811633819003610e1c57806005549384167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08680a36001600160a01b0319928316176005551660065580f35b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b50346102f257806003193601126102f2576020602954604051908152f35b50346102f25760203660031901126102f2576020906040906001600160a01b03610ea6611c89565b168152601783522054604051908152f35b50346102f257806003193601126102f2576020601554604051908152f35b50346102f257806003193601126102f2576020600e54604051908152f35b50346102f257806003193601126102f2576020601654604051908152f35b50346102f25760603660031901126102f2576020610812604435602435600435612007565b50346102f257806003193601126102f2576020601154604051908152f35b50346102f257806003193601126102f257600d546040516001600160a01b039091168152602090f35b50346102f257806003193601126102f2576020601254604051908152f35b50346102f257806003193601126102f25760206108126124d3565b50346102f257806003193601126102f2576020601954604051908152f35b50346102f257806003193601126102f2576020601354604051908152f35b50346102f257806003193601126102f257808060018060a01b03600d5416604051602081019063313ce56760e01b82526004815261102f81611e4e565b51915afa9061103c6128d2565b9180611079575b1561106e576020828051810103126102f25750611063602080920161269b565b60ff60405191168152f35b505060206012611063565b506020825114611043565b50346102f25760603660031901126102f25761109e611c89565b906110a7611ca4565b60443591826110e5575b506040519182526001600160a01b03908116921690600080516020612ace83398151915290602090a3602060405160018152f35b6001600160a01b0384811680835260016020908152604084205492869061110e828610156125fd565b861693848403611123575b50505050506110b1565b83865260028352604080872033885284528620546001810161118d575b509260016020969361116b8794604097610755600080516020612ace8339815191529c9a1515612642565b9285525283832055815220611181858254611fe1565b90559138808581611119565b909181106111e1579260016020969361116b8a600080516020612ace8339815191529a98956111be8260409a611fd4565b86895260028552898920338a528552898920559497509497995050939650611140565b60405162461bcd60e51b815260048101849052601860248201527745524332303a20616c6c6f77616e636520746f6f206c6f7760401b6044820152606490fd5b50346102f25761123036611d11565b908395949542116105c9576001600160a01b03878116808a52600460205260408a20805491969295929060001983146105b557826112d29694928d92600161055698960190556040519160208301937f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d6855260408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e0815261051a81611e7f565b16036105705761056d9261282d565b50346102f25760203660031901126102f2576020906040906001600160a01b03611309611c89565b168152601883522054604051908152f35b50346102f257806003193601126102f257602060255460801c604051908152f35b50346102f25760403660031901126102f2576004356009811015610b0a57611361611d02565b6008549091906001600160a01b031633036114175760ff61138182611d60565b541615159115159182146113dd57808260ff61139f6113cd94611d60565b54161515827feeec81de25875ce1725479bb76f720a8defdb43dea041919ae37bb4aae9847c08780a4611d60565b9060ff8019835416911617905580f35b60405162461bcd60e51b81526020600482015260126024820152714d61726b65743a2073616d6520737461746560701b6044820152606490fd5b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881d5b985d5d1a1bdc9a5e995960621b6044820152606490fd5b50346102f2576101803660031901126102f25760246001600160a01b03813581811690819003610b0257604435916001600160401b03908184116118d457366023850112156118d45783600401359182116118d457368583860101116118d457606435918183168093036118d0576114d082600554163314611ef2565b60043594620186a0946114e586881115611f3d565b6020968088547fc353b09af857951dccce61b43a5854fc45beceed36c50e5d4cc2e71858a8e0df8c80a3875580611892575b508682611757575b50505081611717575b505060843580611702575b5060a435806116ed575b5060c435806116d9575b5060e435806116b8575b506101043580611697575b506101243580611666575b506101443590816115f6575b5050610164359182611583578380f35b601e548310611598575050601f553880808380f35b9060326084926040519262461bcd60e51b845260048401528201527f4d61726b65743a206c69717569646174696f6e436f6c6c61746572616c697a616044820152711d1a5bdb94985d19481d1bdbc81cdb585b1b60721b6064820152fd5b61160290821115611f3d565b601f54811161161557601e553880611573565b5060256084926040519262461bcd60e51b845260048401528201527f4d61726b65743a20636f6c6c61746572616c697a6174696f6e5261746520746f6044820152646f2062696760d81b6064820152fd5b806016547fae6e0ab3b95f0a53ff9660a390ccedcbbf1f2355dce974a9841af106fddcfaba8780a360165538611567565b6116a2828210611f3d565b6116af601b548211611f3d565b601c553861155c565b6116c3828210611f3d565b6116d0601c548210611f3d565b601b5538611551565b6116e4828210611f3d565b601d5538611547565b6116f982821115611f3d565b601a553861153d565b61170e82821115611f3d565b60195538611533565b816008549182167f5a62d22209e370e38eea92cfddcd228e656e6ec139243392a760a7769f5877fd8880a36001600160a01b031916176008553880611528565b8291611764601054611d8f565b601f8111611841575b508990601f84116001146117d2578a936117c5575b5050508160011b916000199060031b1c1916176010555b7fa6f004921c944d4b8bf6e38462b00f36a58d62495d56b51f571ab78f732c98158680a138808661151f565b0101359050863880611782565b60108b52888b20601f198516955092509089908b5b8a878210611826575050846001961061180a575b50505050811b01601055611799565b60001960f88660031b161c1992010135169055388088816117fb565b8483019093013585556001909401938b9291820191016117e7565b9150915060108952868920601f840160051c810188851061188b575b91849391601f8b94920160051c01905b81811061187a575061176d565b8b81558594508a935060010161186d565b508061185d565b600f80546001600160a01b0319169190911790557f0b2d6eb667d0522c3eb86e4288afecae6c11591ffd1345d4d12407e0598bca9b8880a138611517565b8680fd5b8580fd5b50346102f25760403660031901126102f257610bcc6118f5611c89565b602435903361287b565b50346102f25760603660031901126102f257611919611c89565b611921611d02565b604435908115158203610b025760018060a01b0392839161194783600554163314611ef2565b156119eb5716908115908115916119e3575b50156119a657806005549283167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08580a36001600160a01b03199182161760055560068054909116905580f35b60405162461bcd60e51b81526020600482015260156024820152744f776e61626c653a207a65726f206164647265737360581b6044820152606490fd5b905038611959565b9150501660018060a01b0319600654161760065580f35b50346102f257806003193601126102f257808060018060a01b03600b541660405160208101906306fdde0360e01b825260048152611a3f81611e4e565b51915afa611a4b6128d2565b915015611aa857611a5e61032791612959565b6108af6034604051809373546170696f63612053696e67756c61726974792d60601b6020830152611a988151809260208686019101611cba565b8101036014810184520182611eb6565b50610327611ab4612902565b611a5e565b50346102f257806003193601126102f257600f546040805163d6d7d52560e01b8152602060048201529182906001600160a01b0316818581611afd60248201611dc9565b03925af18015611c365782918391611bf6575b508115611b97578015611b5b57807f9f9192b5edb17356c524e08d9e025c8e2f6307e6ea52fb7968faa3081f51c3c86040948260115580a25b42601355825191151582526020820152f35b60405162461bcd60e51b81526020600482015260146024820152734d61726b65743a20696e76616c6964207261746560601b6044820152606490fd5b509050611ba960135460125490611fe1565b4211611bba57604090601154611b49565b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881c985d19481d1bdbc81bdb1960621b6044820152606490fd5b9150506040813d604011611c2e575b81611c1260409383611eb6565b81010312610b0a576020611c2582612291565b91015138611b10565b3d9150611c05565b6040513d84823e3d90fd5b905034610b0a576040366003190112610b0a576040602092611c61611c89565b611c69611ca4565b6001600160a01b0391821683526003865283832091168252845220548152f35b600435906001600160a01b0382168203611c9f57565b600080fd5b602435906001600160a01b0382168203611c9f57565b60005b838110611ccd5750506000910152565b8181015183820152602001611cbd565b90602091611cf681518092818552858086019101611cba565b601f01601f1916010190565b602435908115158203611c9f57565b60e0906003190112611c9f576001600160a01b03906004358281168103611c9f57916024359081168103611c9f5790604435906064359060843560ff81168103611c9f579060a4359060c43590565b6009811015611d79576000526007602052604060002090565b634e487b7160e01b600052602160045260246000fd5b90600182811c92168015611dbf575b6020831014611da957565b634e487b7160e01b600052602260045260246000fd5b91607f1691611d9e565b60105460009291611dd982611d8f565b908181526001928381169081600014611e335750600114611df957505050565b9092935060106000526020928360002092846000945b838610611e1f5750505050010190565b805485870183015294019385908201611e0f565b91935050602093945060ff191683830152151560051b010190565b604081019081106001600160401b03821117611e6957604052565b634e487b7160e01b600052604160045260246000fd5b61010081019081106001600160401b03821117611e6957604052565b608081019081106001600160401b03821117611e6957604052565b90601f801991011681019081106001600160401b03821117611e6957604052565b6001600160401b038111611e6957601f01601f191660200190565b15611ef957565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b15611f4457565b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881b9bdd081d985b1a59607a1b6044820152606490fd5b81810292918115918404141715611f9057565b634e487b7160e01b600052601160045260246000fd5b8115611fb0570490565b634e487b7160e01b600052601260045260246000fd5b604d8111611f9057600a0a90565b91908203918211611f9057565b91908201809211611f9057565b81810392916000138015828513169184121617611f9057565b60145491929161205091612041916120379161202d906001600160801b03831690611f7d565b9060801c90611fa6565b93601f5490611f7d565b61204a83611fc6565b90611fa6565b808310612118576120646120a09184611fd4565b9161209b61209561208c601e5461208661207d86611fc6565b60215490611fe1565b90611f7d565b61204a84611fc6565b91611fc6565b611fee565b6509184e72a00090818102918183051490151715611f9057670de0b6b3a764000091828102928184051490151715611f90578015611fb057600160ff1b91808314600019831416611f905705906000821215612111578114611f9057600003905b80821161210c575090565b905090565b5090612101565b505050600090565b9160018060a01b0380931691600093838552602060178152604091828720549081156122845783518481018181106001600160401b0382111761227057855288815288848083019382855261217689151561229e565b600954166064600c548c85526018845289852054928a51958694859363442c159960e01b85526004850152602484015260448301525afa908115612266578a91612233575b5061222797989994926018949261220a6121f58a6121f06121e761221397620186a06022540490611f7d565b601e5490611f7d565b611fa6565b915191946001600160801b0392831690611f7d565b91511690611fa6565b81811061222b57035b9783525220546122ea565b9091565b50508261221c565b90508481813d831161225f575b61224a8183611eb6565b8101031261225b57516122276121bb565b8980fd5b503d612240565b86513d8c823e3d90fd5b634e487b7160e01b8a52604160045260248afd5b5086955085949350505050565b51908115158203611c9f57565b156122a557565b60405162461bcd60e51b815260206004820152601e60248201527f4d61726b65743a2065786368616e676552617465206e6f742076616c696400006044820152606490fd5b6122f582151561229e565b602060018060a01b0360095416916064600c54604051948593849263442c159960e01b845260048401526024830152600060448301525afa90811561239557600091612362575b50906121f061234e9260225490611f7d565b620186a061235e601e5483611f7d565b0491565b906020823d821161238d575b8161237b60209383611eb6565b810103126102f25750516121f061233c565b3d915061236e565b6040513d6000823e3d90fd5b6001600160a01b031660008181526018602052604081205490926123c4916122ea565b9183526017602052604083205480156124cd5781156124cd578181106124cd57828110156124c35760145461240d9183916107559161202d906001600160801b03831690611f7d565b90620186a092838302928084048514901517156124af57612432929161204a91611fd4565b91601b5491601c54936124458585611fee565b80820291848212600160ff1b8214166124af57818305149015171561249b5705818482019485129112908015821691151617612487575080821261210c575090565b634e487b7160e01b81526011600452602490fd5b634e487b7160e01b83526011600452602483fd5b634e487b7160e01b85526011600452602485fd5b50505050601b5490565b50505090565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031614806125d4575b1561252e577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f000000000000000000000000000000000000000000000000000000000000000082527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a0815260c081018181106001600160401b03821117611e695760405251902090565b507f00000000000000000000000000000000000000000000000000000000000000004614612505565b1561260457565b60405162461bcd60e51b815260206004820152601660248201527545524332303a2062616c616e636520746f6f206c6f7760501b6044820152606490fd5b1561264957565b60405162461bcd60e51b815260206004820152601660248201527545524332303a206e6f207a65726f206164647265737360501b6044820152606490fd5b51906001600160a01b0382168203611c9f57565b519060ff82168203611c9f57565b6005811015611d7957806126ba5750565b600181036127025760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b6044820152606490fd5b6002810361274f5760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606490fd5b60031461275857565b60405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608490fd5b9291906fa2a8918ca85bafe22016d0b997e4df60600160ff1b0383116128215791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa156128145781516001600160a01b0381161561280e579190565b50600190565b50604051903d90823e3d90fd5b50505050600090600390565b7fe50de2333c10a9502fcb1d8ae13a51bbf423153dfc63c2b8997665b32154afc360018060a01b038092169160009083825260036020526040822094169384825260205284604082205580a4565b909160207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259160018060a01b03809416938460005260028352604060002095169485600052825280604060002055604051908152a3565b3d156128fd573d906128e382611ed7565b916128f16040519384611eb6565b82523d6000602084013e565b606090565b6040519061290f82611e4e565b60038252623f3f3f60e81b6020830152565b908151811015612932570160200190565b634e487b7160e01b600052603260045260246000fd5b60ff1660ff8114611f905760010190565b8051604081106129d457508051810190602081818401930312611c9f576020810151906001600160401b038211611c9f570181603f82011215611c9f5760208101516129a481611ed7565b926129b26040519485611eb6565b81845260408284010111611c9f576129d1916040602085019101611cba565b90565b602092908303612ac2576000805b60ff81168581109081612aa3575b5015612a04576129ff90612948565b6129e2565b9260ff80941692612a1484611ed7565b93612a226040519586611eb6565b808552612a31601f1991611ed7565b013687860137825b85811687811080612a86575b15612a7b57612a769190612a706001600160f81b0319612a658388612921565b5116871a9188612921565b53612948565b612a39565b505094505050905090565b506001600160f81b0319612a9a8286612921565b51161515612a45565b6001600160f81b03199150612ab89086612921565b51161515386129f0565b9150506129d161290256feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220f03127cb09b76596483ef20ed017cc8b53ee05fb4492b1b0d18474e46b62e2be64736f6c63430008120033", - "deployedBytecode": "0x608080604052600436101561001357600080fd5b600090813560e01c908162a02a2014611c415750806302ce728f14611ab957806306fdde0314611a02578063078dfbe7146118ff578063095ea7b3146118d85780630996efb7146114535780630c4e84f01461133b57806318160ddd1461131a5780631c9e379b146112e15780631da8bf101461122157806323b872dd14611084578063313ce56714610ff2578063331960ff14610fd457806334d441d014610fb65780633644e51514610f9b57806337b6b7b914610f7d57806338d52e0f14610f545780633ba0b9a914610f365780633f741adb14610f1157806340626d8b14610ef357806344de240a14610ed5578063473e3ce714610eb757806348e4163e14610e7e5780634d7f2a3414610e605780634e71e0c814610db2578063529898f214610d9457806352f353eb14610d6d5780635514023214610d4657806355c2ab9414610d1c5780635793546214610cfe5780636c3d8b8f14610cd557806370a0823114610c9c5780637277854714610c6457806374645ff314610c395780637dc0d1d014610c105780637ecebe0014610bd75780637fa0b84e14610ba5578063821226e814610b875780638285ef4014610b555780638c5d0ed314610b375780638da5cb5b14610b0e578063910dd7c8146108f1578063959916dc146108d457806395d89b411461081a57806399a97028146107ea5780639c5d7192146107cc5780639e15e89f14610791578063a9059cbb146106ae578063b0e21e8a14610690578063b27c0e7414610655578063bb4cfe3b14610637578063ce8849ed1461060e578063d505accf14610469578063d8dfeb4514610440578063dd62ed3e146103f5578063de406577146103cc578063e0996cb6146103ae578063e30c397814610385578063ea64dd5614610367578063eec0f42e14610349578063f42760b71461032b578063f9557ccb146102f55763ffe04c66146102d557600080fd5b346102f257806003193601126102f2576020602a54604051908152f35b80fd5b50346102f257806003193601126102f257602554604080516001600160801b038316815260809290921c602083015290f35b0390f35b50346102f257806003193601126102f2576020602b54604051908152f35b50346102f257806003193601126102f2576020600c54604051908152f35b50346102f257806003193601126102f2576020601f54604051908152f35b50346102f257806003193601126102f2576006546040516001600160a01b039091168152602090f35b50346102f257806003193601126102f2576020601d54604051908152f35b50346102f257806003193601126102f2576009546040516001600160a01b039091168152602090f35b50346102f25760403660031901126102f2576040602091610414611c89565b61041c611ca4565b6001600160a01b039182168352600285528383209116825283522054604051908152f35b50346102f257806003193601126102f257600b546040516001600160a01b039091168152602090f35b50346102f25761047836611d11565b908395949542116105c9576001600160a01b03878116808a52600460205260408a20805491969295929060001983146105b5578261055e9694928d92600161055698960190556040519160208301937f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e266855260408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e0815261051a81611e7f565b5190206105256124d3565b9060405190602082019261190160f01b8452602283015260428201526042815261054e81611e9b565b5190206127a8565b9190916126a9565b16036105705761056d9261287b565b80f35b60405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152606490fd5b634e487b7160e01b8c52601160045260248cfd5b60405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b50346102f257806003193601126102f2576008546040516001600160a01b039091168152602090f35b50346102f257806003193601126102f2576020601e54604051908152f35b50346102f257806003193601126102f2576060602454604051906001600160401b0380821683528160401c16602083015260801c6040820152f35b50346102f257806003193601126102f2576020601a54604051908152f35b50346102f25760403660031901126102f2576106c8611c89565b6024358092811580159061077f575b61070f575b50506040519182526001600160a01b0316903390600080516020612ace83398151915290602090a3602060405160018152f35b33815260016020526040812054610728838210156125fd565b6001600160a01b0384169033829003610743575b50506106dc565b60409361075a91610755841515612642565b611fd4565b338352600160205283832055815220610774838254611fe1565b90558138808061073c565b50336001600160a01b038416146106d7565b50346102f25760403660031901126102f25760606107b96107b0611c89565b60243590612120565b9060405192835260208301526040820152f35b50346102f257806003193601126102f2576020602c54604051908152f35b50346102f25760403660031901126102f2576020610812610809611c89565b602435906123a1565b604051908152f35b50346102f257806003193601126102f257808060018060a01b03600b541660405160208101906395d89b4160e01b82526004815261085781611e4e565b51915afa6108636128d2565b9150156108c35761087661032791612959565b6108af6023604051809362746d2d60e81b602083015261089f8151809260208686019101611cba565b8101036003810184520182611eb6565b604051918291602083526020830190611cdd565b506103276108cf612902565b610876565b50346102f257806003193601126102f25760208054604051908152f35b50346102f25760403660031901126102f2576004356001600160401b038111610b0a5736602382011215610b0a5780600401358261092e82611ed7565b9261093c6040519485611eb6565b82845260208401923660248284010111610b06578060246020930185378401015260243561ffff81168103610b0257610100918284805181010312610afe5761098490612291565b61099060408501612687565b9161099d60608601612687565b9460808101519460a0820151926109b660c0840161269b565b9160e0840151930151938042116105c9578515610ad7577f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e266915b6001600160a01b0388168b52600460205260408b20805491906000198314610ac3579161ffff610a809896949261055698969460018401905560405194602086015216604084015260018060a01b038a16606084015260018060a01b038c1660808401528a60a084015260c083015260e082015260e08152610a7181611e7f565b602081519101206105256124d3565b6001600160a01b038381169116036105705715610aad5761056d926001600160a01b03908116911661287b565b61056d926001600160a01b03908116911661282d565b634e487b7160e01b8d52601160045260248dfd5b7f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d6916109f0565b8480fd5b8380fd5b8280fd5b5080fd5b50346102f257806003193601126102f2576005546040516001600160a01b039091168152602090f35b50346102f257806003193601126102f2576020601b54604051908152f35b50346102f257806003193601126102f257601454604080516001600160801b038316815260809290921c602083015290f35b50346102f257806003193601126102f2576020602e54604051908152f35b50346102f25760403660031901126102f257610bcc610bc2611c89565b602435903361282d565b602060405160018152f35b50346102f25760203660031901126102f2576020906040906001600160a01b03610bff611c89565b168152600483522054604051908152f35b50346102f257806003193601126102f257600f546040516001600160a01b039091168152602090f35b50346102f257806003193601126102f2576103276040516108af81610c5d81611dc9565b0382611eb6565b50346102f25760203660031901126102f2576004359060098210156102f257602060ff610c9084611d60565b54166040519015158152f35b50346102f25760203660031901126102f2576020906040906001600160a01b03610cc4611c89565b168152600183522054604051908152f35b50346102f257806003193601126102f257600a546040516001600160a01b039091168152602090f35b50346102f257806003193601126102f2576020601c54604051908152f35b50346102f257806003193601126102f25760206001600160401b03602d5460401c16604051908152f35b50346102f257806003193601126102f25760206001600160401b03602d5416604051908152f35b50346102f257806003193601126102f25760206001600160401b03602f5416604051908152f35b50346102f257806003193601126102f2576020602154604051908152f35b50346102f257806003193601126102f2576006546001600160a01b039081811633819003610e1c57806005549384167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08680a36001600160a01b0319928316176005551660065580f35b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b50346102f257806003193601126102f2576020602954604051908152f35b50346102f25760203660031901126102f2576020906040906001600160a01b03610ea6611c89565b168152601783522054604051908152f35b50346102f257806003193601126102f2576020601554604051908152f35b50346102f257806003193601126102f2576020600e54604051908152f35b50346102f257806003193601126102f2576020601654604051908152f35b50346102f25760603660031901126102f2576020610812604435602435600435612007565b50346102f257806003193601126102f2576020601154604051908152f35b50346102f257806003193601126102f257600d546040516001600160a01b039091168152602090f35b50346102f257806003193601126102f2576020601254604051908152f35b50346102f257806003193601126102f25760206108126124d3565b50346102f257806003193601126102f2576020601954604051908152f35b50346102f257806003193601126102f2576020601354604051908152f35b50346102f257806003193601126102f257808060018060a01b03600d5416604051602081019063313ce56760e01b82526004815261102f81611e4e565b51915afa9061103c6128d2565b9180611079575b1561106e576020828051810103126102f25750611063602080920161269b565b60ff60405191168152f35b505060206012611063565b506020825114611043565b50346102f25760603660031901126102f25761109e611c89565b906110a7611ca4565b60443591826110e5575b506040519182526001600160a01b03908116921690600080516020612ace83398151915290602090a3602060405160018152f35b6001600160a01b0384811680835260016020908152604084205492869061110e828610156125fd565b861693848403611123575b50505050506110b1565b83865260028352604080872033885284528620546001810161118d575b509260016020969361116b8794604097610755600080516020612ace8339815191529c9a1515612642565b9285525283832055815220611181858254611fe1565b90559138808581611119565b909181106111e1579260016020969361116b8a600080516020612ace8339815191529a98956111be8260409a611fd4565b86895260028552898920338a528552898920559497509497995050939650611140565b60405162461bcd60e51b815260048101849052601860248201527745524332303a20616c6c6f77616e636520746f6f206c6f7760401b6044820152606490fd5b50346102f25761123036611d11565b908395949542116105c9576001600160a01b03878116808a52600460205260408a20805491969295929060001983146105b557826112d29694928d92600161055698960190556040519160208301937f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d6855260408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e0815261051a81611e7f565b16036105705761056d9261282d565b50346102f25760203660031901126102f2576020906040906001600160a01b03611309611c89565b168152601883522054604051908152f35b50346102f257806003193601126102f257602060255460801c604051908152f35b50346102f25760403660031901126102f2576004356009811015610b0a57611361611d02565b6008549091906001600160a01b031633036114175760ff61138182611d60565b541615159115159182146113dd57808260ff61139f6113cd94611d60565b54161515827feeec81de25875ce1725479bb76f720a8defdb43dea041919ae37bb4aae9847c08780a4611d60565b9060ff8019835416911617905580f35b60405162461bcd60e51b81526020600482015260126024820152714d61726b65743a2073616d6520737461746560701b6044820152606490fd5b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881d5b985d5d1a1bdc9a5e995960621b6044820152606490fd5b50346102f2576101803660031901126102f25760246001600160a01b03813581811690819003610b0257604435916001600160401b03908184116118d457366023850112156118d45783600401359182116118d457368583860101116118d457606435918183168093036118d0576114d082600554163314611ef2565b60043594620186a0946114e586881115611f3d565b6020968088547fc353b09af857951dccce61b43a5854fc45beceed36c50e5d4cc2e71858a8e0df8c80a3875580611892575b508682611757575b50505081611717575b505060843580611702575b5060a435806116ed575b5060c435806116d9575b5060e435806116b8575b506101043580611697575b506101243580611666575b506101443590816115f6575b5050610164359182611583578380f35b601e548310611598575050601f553880808380f35b9060326084926040519262461bcd60e51b845260048401528201527f4d61726b65743a206c69717569646174696f6e436f6c6c61746572616c697a616044820152711d1a5bdb94985d19481d1bdbc81cdb585b1b60721b6064820152fd5b61160290821115611f3d565b601f54811161161557601e553880611573565b5060256084926040519262461bcd60e51b845260048401528201527f4d61726b65743a20636f6c6c61746572616c697a6174696f6e5261746520746f6044820152646f2062696760d81b6064820152fd5b806016547fae6e0ab3b95f0a53ff9660a390ccedcbbf1f2355dce974a9841af106fddcfaba8780a360165538611567565b6116a2828210611f3d565b6116af601b548211611f3d565b601c553861155c565b6116c3828210611f3d565b6116d0601c548210611f3d565b601b5538611551565b6116e4828210611f3d565b601d5538611547565b6116f982821115611f3d565b601a553861153d565b61170e82821115611f3d565b60195538611533565b816008549182167f5a62d22209e370e38eea92cfddcd228e656e6ec139243392a760a7769f5877fd8880a36001600160a01b031916176008553880611528565b8291611764601054611d8f565b601f8111611841575b508990601f84116001146117d2578a936117c5575b5050508160011b916000199060031b1c1916176010555b7fa6f004921c944d4b8bf6e38462b00f36a58d62495d56b51f571ab78f732c98158680a138808661151f565b0101359050863880611782565b60108b52888b20601f198516955092509089908b5b8a878210611826575050846001961061180a575b50505050811b01601055611799565b60001960f88660031b161c1992010135169055388088816117fb565b8483019093013585556001909401938b9291820191016117e7565b9150915060108952868920601f840160051c810188851061188b575b91849391601f8b94920160051c01905b81811061187a575061176d565b8b81558594508a935060010161186d565b508061185d565b600f80546001600160a01b0319169190911790557f0b2d6eb667d0522c3eb86e4288afecae6c11591ffd1345d4d12407e0598bca9b8880a138611517565b8680fd5b8580fd5b50346102f25760403660031901126102f257610bcc6118f5611c89565b602435903361287b565b50346102f25760603660031901126102f257611919611c89565b611921611d02565b604435908115158203610b025760018060a01b0392839161194783600554163314611ef2565b156119eb5716908115908115916119e3575b50156119a657806005549283167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08580a36001600160a01b03199182161760055560068054909116905580f35b60405162461bcd60e51b81526020600482015260156024820152744f776e61626c653a207a65726f206164647265737360581b6044820152606490fd5b905038611959565b9150501660018060a01b0319600654161760065580f35b50346102f257806003193601126102f257808060018060a01b03600b541660405160208101906306fdde0360e01b825260048152611a3f81611e4e565b51915afa611a4b6128d2565b915015611aa857611a5e61032791612959565b6108af6034604051809373546170696f63612053696e67756c61726974792d60601b6020830152611a988151809260208686019101611cba565b8101036014810184520182611eb6565b50610327611ab4612902565b611a5e565b50346102f257806003193601126102f257600f546040805163d6d7d52560e01b8152602060048201529182906001600160a01b0316818581611afd60248201611dc9565b03925af18015611c365782918391611bf6575b508115611b97578015611b5b57807f9f9192b5edb17356c524e08d9e025c8e2f6307e6ea52fb7968faa3081f51c3c86040948260115580a25b42601355825191151582526020820152f35b60405162461bcd60e51b81526020600482015260146024820152734d61726b65743a20696e76616c6964207261746560601b6044820152606490fd5b509050611ba960135460125490611fe1565b4211611bba57604090601154611b49565b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881c985d19481d1bdbc81bdb1960621b6044820152606490fd5b9150506040813d604011611c2e575b81611c1260409383611eb6565b81010312610b0a576020611c2582612291565b91015138611b10565b3d9150611c05565b6040513d84823e3d90fd5b905034610b0a576040366003190112610b0a576040602092611c61611c89565b611c69611ca4565b6001600160a01b0391821683526003865283832091168252845220548152f35b600435906001600160a01b0382168203611c9f57565b600080fd5b602435906001600160a01b0382168203611c9f57565b60005b838110611ccd5750506000910152565b8181015183820152602001611cbd565b90602091611cf681518092818552858086019101611cba565b601f01601f1916010190565b602435908115158203611c9f57565b60e0906003190112611c9f576001600160a01b03906004358281168103611c9f57916024359081168103611c9f5790604435906064359060843560ff81168103611c9f579060a4359060c43590565b6009811015611d79576000526007602052604060002090565b634e487b7160e01b600052602160045260246000fd5b90600182811c92168015611dbf575b6020831014611da957565b634e487b7160e01b600052602260045260246000fd5b91607f1691611d9e565b60105460009291611dd982611d8f565b908181526001928381169081600014611e335750600114611df957505050565b9092935060106000526020928360002092846000945b838610611e1f5750505050010190565b805485870183015294019385908201611e0f565b91935050602093945060ff191683830152151560051b010190565b604081019081106001600160401b03821117611e6957604052565b634e487b7160e01b600052604160045260246000fd5b61010081019081106001600160401b03821117611e6957604052565b608081019081106001600160401b03821117611e6957604052565b90601f801991011681019081106001600160401b03821117611e6957604052565b6001600160401b038111611e6957601f01601f191660200190565b15611ef957565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b15611f4457565b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881b9bdd081d985b1a59607a1b6044820152606490fd5b81810292918115918404141715611f9057565b634e487b7160e01b600052601160045260246000fd5b8115611fb0570490565b634e487b7160e01b600052601260045260246000fd5b604d8111611f9057600a0a90565b91908203918211611f9057565b91908201809211611f9057565b81810392916000138015828513169184121617611f9057565b60145491929161205091612041916120379161202d906001600160801b03831690611f7d565b9060801c90611fa6565b93601f5490611f7d565b61204a83611fc6565b90611fa6565b808310612118576120646120a09184611fd4565b9161209b61209561208c601e5461208661207d86611fc6565b60215490611fe1565b90611f7d565b61204a84611fc6565b91611fc6565b611fee565b6509184e72a00090818102918183051490151715611f9057670de0b6b3a764000091828102928184051490151715611f90578015611fb057600160ff1b91808314600019831416611f905705906000821215612111578114611f9057600003905b80821161210c575090565b905090565b5090612101565b505050600090565b9160018060a01b0380931691600093838552602060178152604091828720549081156122845783518481018181106001600160401b0382111761227057855288815288848083019382855261217689151561229e565b600954166064600c548c85526018845289852054928a51958694859363442c159960e01b85526004850152602484015260448301525afa908115612266578a91612233575b5061222797989994926018949261220a6121f58a6121f06121e761221397620186a06022540490611f7d565b601e5490611f7d565b611fa6565b915191946001600160801b0392831690611f7d565b91511690611fa6565b81811061222b57035b9783525220546122ea565b9091565b50508261221c565b90508481813d831161225f575b61224a8183611eb6565b8101031261225b57516122276121bb565b8980fd5b503d612240565b86513d8c823e3d90fd5b634e487b7160e01b8a52604160045260248afd5b5086955085949350505050565b51908115158203611c9f57565b156122a557565b60405162461bcd60e51b815260206004820152601e60248201527f4d61726b65743a2065786368616e676552617465206e6f742076616c696400006044820152606490fd5b6122f582151561229e565b602060018060a01b0360095416916064600c54604051948593849263442c159960e01b845260048401526024830152600060448301525afa90811561239557600091612362575b50906121f061234e9260225490611f7d565b620186a061235e601e5483611f7d565b0491565b906020823d821161238d575b8161237b60209383611eb6565b810103126102f25750516121f061233c565b3d915061236e565b6040513d6000823e3d90fd5b6001600160a01b031660008181526018602052604081205490926123c4916122ea565b9183526017602052604083205480156124cd5781156124cd578181106124cd57828110156124c35760145461240d9183916107559161202d906001600160801b03831690611f7d565b90620186a092838302928084048514901517156124af57612432929161204a91611fd4565b91601b5491601c54936124458585611fee565b80820291848212600160ff1b8214166124af57818305149015171561249b5705818482019485129112908015821691151617612487575080821261210c575090565b634e487b7160e01b81526011600452602490fd5b634e487b7160e01b83526011600452602483fd5b634e487b7160e01b85526011600452602485fd5b50505050601b5490565b50505090565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031614806125d4575b1561252e577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f000000000000000000000000000000000000000000000000000000000000000082527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a0815260c081018181106001600160401b03821117611e695760405251902090565b507f00000000000000000000000000000000000000000000000000000000000000004614612505565b1561260457565b60405162461bcd60e51b815260206004820152601660248201527545524332303a2062616c616e636520746f6f206c6f7760501b6044820152606490fd5b1561264957565b60405162461bcd60e51b815260206004820152601660248201527545524332303a206e6f207a65726f206164647265737360501b6044820152606490fd5b51906001600160a01b0382168203611c9f57565b519060ff82168203611c9f57565b6005811015611d7957806126ba5750565b600181036127025760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b6044820152606490fd5b6002810361274f5760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606490fd5b60031461275857565b60405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608490fd5b9291906fa2a8918ca85bafe22016d0b997e4df60600160ff1b0383116128215791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa156128145781516001600160a01b0381161561280e579190565b50600190565b50604051903d90823e3d90fd5b50505050600090600390565b7fe50de2333c10a9502fcb1d8ae13a51bbf423153dfc63c2b8997665b32154afc360018060a01b038092169160009083825260036020526040822094169384825260205284604082205580a4565b909160207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259160018060a01b03809416938460005260028352604060002095169485600052825280604060002055604051908152a3565b3d156128fd573d906128e382611ed7565b916128f16040519384611eb6565b82523d6000602084013e565b606090565b6040519061290f82611e4e565b60038252623f3f3f60e81b6020830152565b908151811015612932570160200190565b634e487b7160e01b600052603260045260246000fd5b60ff1660ff8114611f905760010190565b8051604081106129d457508051810190602081818401930312611c9f576020810151906001600160401b038211611c9f570181603f82011215611c9f5760208101516129a481611ed7565b926129b26040519485611eb6565b81845260408284010111611c9f576129d1916040602085019101611cba565b90565b602092908303612ac2576000805b60ff81168581109081612aa3575b5015612a04576129ff90612948565b6129e2565b9260ff80941692612a1484611ed7565b93612a226040519586611eb6565b808552612a31601f1991611ed7565b013687860137825b85811687811080612a86575b15612a7b57612a769190612a706001600160f81b0319612a658388612921565b5116871a9188612921565b53612948565b612a39565b505094505050905090565b506001600160f81b0319612a9a8286612921565b51161515612a45565b6001600160f81b03199150612ab89086612921565b51161515386129f0565b9150506129d161290256feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220f03127cb09b76596483ef20ed017cc8b53ee05fb4492b1b0d18474e46b62e2be64736f6c63430008120033", + "bytecode": "0x6101408060405234620001e5576200001781620001ea565b601381526001602082017f546170696f63612053696e67756c617269747900000000000000000000000000815260206040516200005481620001ea565b8381520192603160f81b845251902091208160e052610100918183524660a0526040519160208301907f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f92838352604085015260608401524660808401523060a084015260a0835260c083019280841060018060401b03851117620001cf5760408490525190206080523060c052610120908152600580546001600160a01b0319163390811790915560007f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a362013880601b5562015f90601c55612710601d55612ee06020557f0bd4060688a1800ae986e4840aebc924bb40b5bf44de4583df2257220b54b77c6026557f7d1dc38e60930664f8cbf495da6556ca091d2f92d6550877750c049864b182306027556161a86028556032602f55612b3292836200020784396080518361251b015260a051836125e6015260c051836124e5015260e0518361256a01525182612590015251816125470152f35b634e487b7160e01b600052604160045260246000fd5b600080fd5b604081019081106001600160401b03821117620001cf5760405256fe608080604052600436101561001357600080fd5b600090813560e01c908162a02a2014611c505750806302ce728f14611ac857806306fdde0314611a11578063078dfbe71461190e578063095ea7b3146118e75780630c4e84f0146117cf57806318160ddd146117ae5780631c9e379b146117755780631da8bf10146116b557806323b872dd14611518578063313ce56714611486578063331960ff1461146857806334d441d01461144a5780633644e5151461142f57806337b6b7b91461141157806338d52e0f146113e85780633ba0b9a9146113ca5780633f741adb146113a557806340626d8b1461138757806344de240a14611369578063473e3ce71461134b57806348e4163e146113125780634d7f2a34146112f45780634e71e0c814611246578063529898f21461122957806352f353eb1461120257806355140232146111db57806355c2ab94146111b157806357935462146111935780636c3d8b8f1461116a57806370a082311461113157806372778547146110f957806374645ff3146110ce5780637dc0d1d0146110a55780637ecebe001461106c5780637fa0b84e1461103a578063821226e81461101c5780638285ef4014610fea5780638c5d0ed314610fcc5780638da5cb5b14610fa3578063910dd7c814610d8a578063959916dc14610d6c57806395d89b4114610cb257806399a9702814610c825780639c5d719214610c645780639e15e89f14610c29578063a9059cbb14610b46578063b0e21e8a14610b28578063b27c0e7414610aed578063bb4cfe3b14610acf578063ce8849ed14610aa6578063d3fb2a381461060e578063d505accf14610469578063d8dfeb4514610440578063dd62ed3e146103f5578063de406577146103cc578063e0996cb6146103ae578063e30c397814610385578063ea64dd5614610367578063eec0f42e14610349578063f42760b71461032b578063f9557ccb146102f55763ffe04c66146102d557600080fd5b346102f257806003193601126102f2576020602954604051908152f35b80fd5b50346102f257806003193601126102f257602454604080516001600160801b038316815260809290921c602083015290f35b0390f35b50346102f257806003193601126102f2576020602a54604051908152f35b50346102f257806003193601126102f2576020600c54604051908152f35b50346102f257806003193601126102f2576020601f54604051908152f35b50346102f257806003193601126102f2576006546040516001600160a01b039091168152602090f35b50346102f257806003193601126102f2576020601d54604051908152f35b50346102f257806003193601126102f2576009546040516001600160a01b039091168152602090f35b50346102f25760403660031901126102f2576040602091610414611c98565b61041c611cb3565b6001600160a01b039182168352600285528383209116825283522054604051908152f35b50346102f257806003193601126102f257600b546040516001600160a01b039091168152602090f35b50346102f25761047836611d20565b908395949542116105c9576001600160a01b03878116808a52600460205260408a20805491969295929060001983146105b5578261055e9694928d92600161055698960190556040519160208301937f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e266855260408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e0815261051a81611e8e565b5190206105256124e2565b9060405190602082019261190160f01b8452602283015260428201526042815261054e81611eaa565b5190206127b7565b9190916126b8565b16036105705761056d9261288a565b80f35b60405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152606490fd5b634e487b7160e01b8c52601160045260248cfd5b60405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b50346102f2576101603660031901126102f2576001600160a01b0360043581811690819003610aa2576024916001600160401b038335818111610a9e5736602382011215610a9e578060040135918211610a9e5736858383010111610a9e5760443593838516809503610a9a5761068a84600554163314611f01565b80610a5c575b5084826108de575b5050508161089e575b505060643580610886575b506084358061086e575b5060a43580610857575b5060c43580610833575b5060e4358061080f575b5061010435806107de575b50610124358061076b575b506101443590816106f9578280f35b601e54821061070c5750601f5538808280f35b60849060326040519162461bcd60e51b8352602060048401528201527f4d61726b65743a206c69717569646174696f6e436f6c6c61746572616c697a616044820152711d1a5bdb94985d19481d1bdbc81cdb585b1b60721b6064820152fd5b61077a620186a0821115611f4c565b601f54811161078c57601e55386106ea565b60405162461bcd60e51b8152602060048201526025818401527f4d61726b65743a20636f6c6c61746572616c697a6174696f6e5261746520746f6044820152646f2062696760d81b6064820152608490fd5b806016547fae6e0ab3b95f0a53ff9660a390ccedcbbf1f2355dce974a9841af106fddcfaba8580a3601655386106df565b61081d620186a08210611f4c565b61082a601b548211611f4c565b601c55386106d4565b610841620186a08210611f4c565b61084e601c548210611f4c565b601b55386106ca565b610865620186a08210611f4c565b601d55386106c0565b61087d620186a0821115611f4c565b601a55386106b6565b610895620186a0821115611f4c565b601955386106ac565b816008549182167f5a62d22209e370e38eea92cfddcd228e656e6ec139243392a760a7769f5877fd8680a36001600160a01b0319161760085538806106a1565b82916108eb601054611d9e565b601f81116109eb575b508790601f841160011461095957889361094c575b5050508160011b916000199060031b1c1916176010555b7fa6f004921c944d4b8bf6e38462b00f36a58d62495d56b51f571ab78f732c98158480a1388084610698565b0101359050843880610909565b60108952601f19841694507f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae67292509087908960205b8782106109cc57505084600196106109b0575b50505050811b01601055610920565b60001960f88660031b161c1992010135169055388086816109a1565b828501909301358555600194909401938992918201919081019061098e565b6010895290925090507f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae672601f840160051c810160208510610a55575b91849391601f8994920160051c01905b818110610a4457506108f4565b898155859450889350600101610a37565b5080610a27565b600f80546001600160a01b0319169190911790557f0b2d6eb667d0522c3eb86e4288afecae6c11591ffd1345d4d12407e0598bca9b8680a138610690565b8680fd5b8580fd5b8280fd5b50346102f257806003193601126102f2576008546040516001600160a01b039091168152602090f35b50346102f257806003193601126102f2576020601e54604051908152f35b50346102f257806003193601126102f2576060602354604051906001600160401b0380821683528160401c16602083015260801c6040820152f35b50346102f257806003193601126102f2576020601a54604051908152f35b50346102f25760403660031901126102f257610b60611c98565b60243580928115801590610c17575b610ba7575b50506040519182526001600160a01b0316903390600080516020612add83398151915290602090a3602060405160018152f35b33815260016020526040812054610bc08382101561260c565b6001600160a01b0384169033829003610bdb575b5050610b74565b604093610bf291610bed841515612651565b611fe3565b338352600160205283832055815220610c0c838254611ff0565b905581388080610bd4565b50336001600160a01b03841614610b6f565b50346102f25760403660031901126102f2576060610c51610c48611c98565b6024359061212f565b9060405192835260208301526040820152f35b50346102f257806003193601126102f2576020602b54604051908152f35b50346102f25760403660031901126102f2576020610caa610ca1611c98565b602435906123b0565b604051908152f35b50346102f257806003193601126102f257808060018060a01b03600b541660405160208101906395d89b4160e01b825260048152610cef81611e5d565b51915afa610cfb6128e1565b915015610d5b57610d0e61032791612968565b610d476023604051809362746d2d60e81b6020830152610d378151809260208686019101611cc9565b8101036003810184520182611ec5565b604051918291602083526020830190611cec565b50610327610d67612911565b610d0e565b50346102f257806003193601126102f2576020602f54604051908152f35b50346102f25760403660031901126102f2576004356001600160401b038111610f9f5736602382011215610f9f57806004013582610dc782611ee6565b92610dd56040519485611ec5565b82845260208401923660248284010111610aa2578060246020930185378401015260243561ffff81168103610f9b57610100918284805181010312610f9757610e1d906122a0565b610e2960408501612696565b91610e3660608601612696565b9460808101519460a082015192610e4f60c084016126aa565b9160e0840151930151938042116105c9578515610f70577f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e266915b6001600160a01b0388168b52600460205260408b20805491906000198314610f5c579161ffff610f199896949261055698969460018401905560405194602086015216604084015260018060a01b038a16606084015260018060a01b038c1660808401528a60a084015260c083015260e082015260e08152610f0a81611e8e565b602081519101206105256124e2565b6001600160a01b038381169116036105705715610f465761056d926001600160a01b03908116911661288a565b61056d926001600160a01b03908116911661283c565b634e487b7160e01b8d52601160045260248dfd5b7f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d691610e89565b8480fd5b8380fd5b5080fd5b50346102f257806003193601126102f2576005546040516001600160a01b039091168152602090f35b50346102f257806003193601126102f2576020601b54604051908152f35b50346102f257806003193601126102f257601454604080516001600160801b038316815260809290921c602083015290f35b50346102f257806003193601126102f2576020602d54604051908152f35b50346102f25760403660031901126102f257611061611057611c98565b602435903361283c565b602060405160018152f35b50346102f25760203660031901126102f2576020906040906001600160a01b03611094611c98565b168152600483522054604051908152f35b50346102f257806003193601126102f257600f546040516001600160a01b039091168152602090f35b50346102f257806003193601126102f257610327604051610d47816110f281611dd8565b0382611ec5565b50346102f25760203660031901126102f2576004359060098210156102f257602060ff61112584611d6f565b54166040519015158152f35b50346102f25760203660031901126102f2576020906040906001600160a01b03611159611c98565b168152600183522054604051908152f35b50346102f257806003193601126102f257600a546040516001600160a01b039091168152602090f35b50346102f257806003193601126102f2576020601c54604051908152f35b50346102f257806003193601126102f25760206001600160401b03602c5460401c16604051908152f35b50346102f257806003193601126102f25760206001600160401b03602c5416604051908152f35b50346102f257806003193601126102f25760206001600160401b03602e5416604051908152f35b50346102f257806003193601126102f25760208054604051908152f35b50346102f257806003193601126102f2576006546001600160a01b0390818116338190036112b057806005549384167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08680a36001600160a01b0319928316176005551660065580f35b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b50346102f257806003193601126102f2576020602854604051908152f35b50346102f25760203660031901126102f2576020906040906001600160a01b0361133a611c98565b168152601783522054604051908152f35b50346102f257806003193601126102f2576020601554604051908152f35b50346102f257806003193601126102f2576020600e54604051908152f35b50346102f257806003193601126102f2576020601654604051908152f35b50346102f25760603660031901126102f2576020610caa604435602435600435612016565b50346102f257806003193601126102f2576020601154604051908152f35b50346102f257806003193601126102f257600d546040516001600160a01b039091168152602090f35b50346102f257806003193601126102f2576020601254604051908152f35b50346102f257806003193601126102f2576020610caa6124e2565b50346102f257806003193601126102f2576020601954604051908152f35b50346102f257806003193601126102f2576020601354604051908152f35b50346102f257806003193601126102f257808060018060a01b03600d5416604051602081019063313ce56760e01b8252600481526114c381611e5d565b51915afa906114d06128e1565b918061150d575b15611502576020828051810103126102f257506114f760208092016126aa565b60ff60405191168152f35b5050602060126114f7565b5060208251146114d7565b50346102f25760603660031901126102f257611532611c98565b9061153b611cb3565b6044359182611579575b506040519182526001600160a01b03908116921690600080516020612add83398151915290602090a3602060405160018152f35b6001600160a01b038481168083526001602090815260408420549286906115a28286101561260c565b8616938484036115b7575b5050505050611545565b838652600283526040808720338852845286205460018101611621575b50926001602096936115ff8794604097610bed600080516020612add8339815191529c9a1515612651565b9285525283832055815220611615858254611ff0565b905591388085816115ad565b9091811061167557926001602096936115ff8a600080516020612add8339815191529a98956116528260409a611fe3565b86895260028552898920338a5285528989205594975094979950509396506115d4565b60405162461bcd60e51b815260048101849052601860248201527745524332303a20616c6c6f77616e636520746f6f206c6f7760401b6044820152606490fd5b50346102f2576116c436611d20565b908395949542116105c9576001600160a01b03878116808a52600460205260408a20805491969295929060001983146105b557826117669694928d92600161055698960190556040519160208301937f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d6855260408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e0815261051a81611e8e565b16036105705761056d9261283c565b50346102f25760203660031901126102f2576020906040906001600160a01b0361179d611c98565b168152601883522054604051908152f35b50346102f257806003193601126102f257602060245460801c604051908152f35b50346102f25760403660031901126102f2576004356009811015610f9f576117f5611d11565b6008549091906001600160a01b031633036118ab5760ff61181582611d6f565b5416151591151591821461187157808260ff61183361186194611d6f565b54161515827feeec81de25875ce1725479bb76f720a8defdb43dea041919ae37bb4aae9847c08780a4611d6f565b9060ff8019835416911617905580f35b60405162461bcd60e51b81526020600482015260126024820152714d61726b65743a2073616d6520737461746560701b6044820152606490fd5b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881d5b985d5d1a1bdc9a5e995960621b6044820152606490fd5b50346102f25760403660031901126102f257611061611904611c98565b602435903361288a565b50346102f25760603660031901126102f257611928611c98565b611930611d11565b604435908115158203610f9b5760018060a01b0392839161195683600554163314611f01565b156119fa5716908115908115916119f2575b50156119b557806005549283167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08580a36001600160a01b03199182161760055560068054909116905580f35b60405162461bcd60e51b81526020600482015260156024820152744f776e61626c653a207a65726f206164647265737360581b6044820152606490fd5b905038611968565b9150501660018060a01b0319600654161760065580f35b50346102f257806003193601126102f257808060018060a01b03600b541660405160208101906306fdde0360e01b825260048152611a4e81611e5d565b51915afa611a5a6128e1565b915015611ab757611a6d61032791612968565b610d476034604051809373546170696f63612053696e67756c61726974792d60601b6020830152611aa78151809260208686019101611cc9565b8101036014810184520182611ec5565b50610327611ac3612911565b611a6d565b50346102f257806003193601126102f257600f546040805163d6d7d52560e01b8152602060048201529182906001600160a01b0316818581611b0c60248201611dd8565b03925af18015611c455782918391611c05575b508115611ba6578015611b6a57807f9f9192b5edb17356c524e08d9e025c8e2f6307e6ea52fb7968faa3081f51c3c86040948260115580a25b42601355825191151582526020820152f35b60405162461bcd60e51b81526020600482015260146024820152734d61726b65743a20696e76616c6964207261746560601b6044820152606490fd5b509050611bb860135460125490611ff0565b4211611bc957604090601154611b58565b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881c985d19481d1bdbc81bdb1960621b6044820152606490fd5b9150506040813d604011611c3d575b81611c2160409383611ec5565b81010312610f9f576020611c34826122a0565b91015138611b1f565b3d9150611c14565b6040513d84823e3d90fd5b905034610f9f576040366003190112610f9f576040602092611c70611c98565b611c78611cb3565b6001600160a01b0391821683526003865283832091168252845220548152f35b600435906001600160a01b0382168203611cae57565b600080fd5b602435906001600160a01b0382168203611cae57565b60005b838110611cdc5750506000910152565b8181015183820152602001611ccc565b90602091611d0581518092818552858086019101611cc9565b601f01601f1916010190565b602435908115158203611cae57565b60e0906003190112611cae576001600160a01b03906004358281168103611cae57916024359081168103611cae5790604435906064359060843560ff81168103611cae579060a4359060c43590565b6009811015611d88576000526007602052604060002090565b634e487b7160e01b600052602160045260246000fd5b90600182811c92168015611dce575b6020831014611db857565b634e487b7160e01b600052602260045260246000fd5b91607f1691611dad565b60105460009291611de882611d9e565b908181526001928381169081600014611e425750600114611e0857505050565b9092935060106000526020928360002092846000945b838610611e2e5750505050010190565b805485870183015294019385908201611e1e565b91935050602093945060ff191683830152151560051b010190565b604081019081106001600160401b03821117611e7857604052565b634e487b7160e01b600052604160045260246000fd5b61010081019081106001600160401b03821117611e7857604052565b608081019081106001600160401b03821117611e7857604052565b90601f801991011681019081106001600160401b03821117611e7857604052565b6001600160401b038111611e7857601f01601f191660200190565b15611f0857565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b15611f5357565b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881b9bdd081d985b1a59607a1b6044820152606490fd5b81810292918115918404141715611f9f57565b634e487b7160e01b600052601160045260246000fd5b8115611fbf570490565b634e487b7160e01b600052601260045260246000fd5b604d8111611f9f57600a0a90565b91908203918211611f9f57565b91908201809211611f9f57565b81810392916000138015828513169184121617611f9f57565b60145491929161205f91612050916120469161203c906001600160801b03831690611f8c565b9060801c90611fb5565b93601f5490611f8c565b61205983611fd5565b90611fb5565b808310612127576120736120af9184611fe3565b916120aa6120a461209b601e5461209561208c86611fd5565b60205490611ff0565b90611f8c565b61205984611fd5565b91611fd5565b611ffd565b6509184e72a00090818102918183051490151715611f9f57670de0b6b3a764000091828102928184051490151715611f9f578015611fbf57600160ff1b91808314600019831416611f9f5705906000821215612120578114611f9f57600003905b80821161211b575090565b905090565b5090612110565b505050600090565b9160018060a01b0380931691600093838552602060178152604091828720549081156122935783518481018181106001600160401b0382111761227f5785528881528884808301938285526121858915156122ad565b600954166064600c548c85526018845289852054928a51958694859363442c159960e01b85526004850152602484015260448301525afa908115612275578a91612242575b506122369798999492601894926122196122048a6121ff6121f661222297620186a06021540490611f8c565b601e5490611f8c565b611fb5565b915191946001600160801b0392831690611f8c565b91511690611fb5565b81811061223a57035b9783525220546122f9565b9091565b50508261222b565b90508481813d831161226e575b6122598183611ec5565b8101031261226a57516122366121ca565b8980fd5b503d61224f565b86513d8c823e3d90fd5b634e487b7160e01b8a52604160045260248afd5b5086955085949350505050565b51908115158203611cae57565b156122b457565b60405162461bcd60e51b815260206004820152601e60248201527f4d61726b65743a2065786368616e676552617465206e6f742076616c696400006044820152606490fd5b6123048215156122ad565b602060018060a01b0360095416916064600c54604051948593849263442c159960e01b845260048401526024830152600060448301525afa9081156123a457600091612371575b50906121ff61235d9260215490611f8c565b620186a061236d601e5483611f8c565b0491565b906020823d821161239c575b8161238a60209383611ec5565b810103126102f25750516121ff61234b565b3d915061237d565b6040513d6000823e3d90fd5b6001600160a01b031660008181526018602052604081205490926123d3916122f9565b9183526017602052604083205480156124dc5781156124dc578181106124dc57828110156124d25760145461241c918391610bed9161203c906001600160801b03831690611f8c565b90620186a092838302928084048514901517156124be57612441929161205991611fe3565b91601b5491601c54936124548585611ffd565b80820291848212600160ff1b8214166124be5781830514901517156124aa5705818482019485129112908015821691151617612496575080821261211b575090565b634e487b7160e01b81526011600452602490fd5b634e487b7160e01b83526011600452602483fd5b634e487b7160e01b85526011600452602485fd5b50505050601b5490565b50505090565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031614806125e3575b1561253d577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f000000000000000000000000000000000000000000000000000000000000000082527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a0815260c081018181106001600160401b03821117611e785760405251902090565b507f00000000000000000000000000000000000000000000000000000000000000004614612514565b1561261357565b60405162461bcd60e51b815260206004820152601660248201527545524332303a2062616c616e636520746f6f206c6f7760501b6044820152606490fd5b1561265857565b60405162461bcd60e51b815260206004820152601660248201527545524332303a206e6f207a65726f206164647265737360501b6044820152606490fd5b51906001600160a01b0382168203611cae57565b519060ff82168203611cae57565b6005811015611d8857806126c95750565b600181036127115760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b6044820152606490fd5b6002810361275e5760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606490fd5b60031461276757565b60405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608490fd5b9291906fa2a8918ca85bafe22016d0b997e4df60600160ff1b0383116128305791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa156128235781516001600160a01b0381161561281d579190565b50600190565b50604051903d90823e3d90fd5b50505050600090600390565b7fe50de2333c10a9502fcb1d8ae13a51bbf423153dfc63c2b8997665b32154afc360018060a01b038092169160009083825260036020526040822094169384825260205284604082205580a4565b909160207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259160018060a01b03809416938460005260028352604060002095169485600052825280604060002055604051908152a3565b3d1561290c573d906128f282611ee6565b916129006040519384611ec5565b82523d6000602084013e565b606090565b6040519061291e82611e5d565b60038252623f3f3f60e81b6020830152565b908151811015612941570160200190565b634e487b7160e01b600052603260045260246000fd5b60ff1660ff8114611f9f5760010190565b8051604081106129e357508051810190602081818401930312611cae576020810151906001600160401b038211611cae570181603f82011215611cae5760208101516129b381611ee6565b926129c16040519485611ec5565b81845260408284010111611cae576129e0916040602085019101611cc9565b90565b602092908303612ad1576000805b60ff81168581109081612ab2575b5015612a1357612a0e90612957565b6129f1565b9260ff80941692612a2384611ee6565b93612a316040519586611ec5565b808552612a40601f1991611ee6565b013687860137825b85811687811080612a95575b15612a8a57612a859190612a7f6001600160f81b0319612a748388612930565b5116871a9188612930565b53612957565b612a48565b505094505050905090565b506001600160f81b0319612aa98286612930565b51161515612a54565b6001600160f81b03199150612ac79086612930565b51161515386129ff565b9150506129e061291156feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220d56635cc9f65bf4bf9a99354bcd7b53734e93d4577b3eb9463586ee7b624502b64736f6c63430008120033", + "deployedBytecode": "0x608080604052600436101561001357600080fd5b600090813560e01c908162a02a2014611c505750806302ce728f14611ac857806306fdde0314611a11578063078dfbe71461190e578063095ea7b3146118e75780630c4e84f0146117cf57806318160ddd146117ae5780631c9e379b146117755780631da8bf10146116b557806323b872dd14611518578063313ce56714611486578063331960ff1461146857806334d441d01461144a5780633644e5151461142f57806337b6b7b91461141157806338d52e0f146113e85780633ba0b9a9146113ca5780633f741adb146113a557806340626d8b1461138757806344de240a14611369578063473e3ce71461134b57806348e4163e146113125780634d7f2a34146112f45780634e71e0c814611246578063529898f21461122957806352f353eb1461120257806355140232146111db57806355c2ab94146111b157806357935462146111935780636c3d8b8f1461116a57806370a082311461113157806372778547146110f957806374645ff3146110ce5780637dc0d1d0146110a55780637ecebe001461106c5780637fa0b84e1461103a578063821226e81461101c5780638285ef4014610fea5780638c5d0ed314610fcc5780638da5cb5b14610fa3578063910dd7c814610d8a578063959916dc14610d6c57806395d89b4114610cb257806399a9702814610c825780639c5d719214610c645780639e15e89f14610c29578063a9059cbb14610b46578063b0e21e8a14610b28578063b27c0e7414610aed578063bb4cfe3b14610acf578063ce8849ed14610aa6578063d3fb2a381461060e578063d505accf14610469578063d8dfeb4514610440578063dd62ed3e146103f5578063de406577146103cc578063e0996cb6146103ae578063e30c397814610385578063ea64dd5614610367578063eec0f42e14610349578063f42760b71461032b578063f9557ccb146102f55763ffe04c66146102d557600080fd5b346102f257806003193601126102f2576020602954604051908152f35b80fd5b50346102f257806003193601126102f257602454604080516001600160801b038316815260809290921c602083015290f35b0390f35b50346102f257806003193601126102f2576020602a54604051908152f35b50346102f257806003193601126102f2576020600c54604051908152f35b50346102f257806003193601126102f2576020601f54604051908152f35b50346102f257806003193601126102f2576006546040516001600160a01b039091168152602090f35b50346102f257806003193601126102f2576020601d54604051908152f35b50346102f257806003193601126102f2576009546040516001600160a01b039091168152602090f35b50346102f25760403660031901126102f2576040602091610414611c98565b61041c611cb3565b6001600160a01b039182168352600285528383209116825283522054604051908152f35b50346102f257806003193601126102f257600b546040516001600160a01b039091168152602090f35b50346102f25761047836611d20565b908395949542116105c9576001600160a01b03878116808a52600460205260408a20805491969295929060001983146105b5578261055e9694928d92600161055698960190556040519160208301937f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e266855260408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e0815261051a81611e8e565b5190206105256124e2565b9060405190602082019261190160f01b8452602283015260428201526042815261054e81611eaa565b5190206127b7565b9190916126b8565b16036105705761056d9261288a565b80f35b60405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152606490fd5b634e487b7160e01b8c52601160045260248cfd5b60405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b50346102f2576101603660031901126102f2576001600160a01b0360043581811690819003610aa2576024916001600160401b038335818111610a9e5736602382011215610a9e578060040135918211610a9e5736858383010111610a9e5760443593838516809503610a9a5761068a84600554163314611f01565b80610a5c575b5084826108de575b5050508161089e575b505060643580610886575b506084358061086e575b5060a43580610857575b5060c43580610833575b5060e4358061080f575b5061010435806107de575b50610124358061076b575b506101443590816106f9578280f35b601e54821061070c5750601f5538808280f35b60849060326040519162461bcd60e51b8352602060048401528201527f4d61726b65743a206c69717569646174696f6e436f6c6c61746572616c697a616044820152711d1a5bdb94985d19481d1bdbc81cdb585b1b60721b6064820152fd5b61077a620186a0821115611f4c565b601f54811161078c57601e55386106ea565b60405162461bcd60e51b8152602060048201526025818401527f4d61726b65743a20636f6c6c61746572616c697a6174696f6e5261746520746f6044820152646f2062696760d81b6064820152608490fd5b806016547fae6e0ab3b95f0a53ff9660a390ccedcbbf1f2355dce974a9841af106fddcfaba8580a3601655386106df565b61081d620186a08210611f4c565b61082a601b548211611f4c565b601c55386106d4565b610841620186a08210611f4c565b61084e601c548210611f4c565b601b55386106ca565b610865620186a08210611f4c565b601d55386106c0565b61087d620186a0821115611f4c565b601a55386106b6565b610895620186a0821115611f4c565b601955386106ac565b816008549182167f5a62d22209e370e38eea92cfddcd228e656e6ec139243392a760a7769f5877fd8680a36001600160a01b0319161760085538806106a1565b82916108eb601054611d9e565b601f81116109eb575b508790601f841160011461095957889361094c575b5050508160011b916000199060031b1c1916176010555b7fa6f004921c944d4b8bf6e38462b00f36a58d62495d56b51f571ab78f732c98158480a1388084610698565b0101359050843880610909565b60108952601f19841694507f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae67292509087908960205b8782106109cc57505084600196106109b0575b50505050811b01601055610920565b60001960f88660031b161c1992010135169055388086816109a1565b828501909301358555600194909401938992918201919081019061098e565b6010895290925090507f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae672601f840160051c810160208510610a55575b91849391601f8994920160051c01905b818110610a4457506108f4565b898155859450889350600101610a37565b5080610a27565b600f80546001600160a01b0319169190911790557f0b2d6eb667d0522c3eb86e4288afecae6c11591ffd1345d4d12407e0598bca9b8680a138610690565b8680fd5b8580fd5b8280fd5b50346102f257806003193601126102f2576008546040516001600160a01b039091168152602090f35b50346102f257806003193601126102f2576020601e54604051908152f35b50346102f257806003193601126102f2576060602354604051906001600160401b0380821683528160401c16602083015260801c6040820152f35b50346102f257806003193601126102f2576020601a54604051908152f35b50346102f25760403660031901126102f257610b60611c98565b60243580928115801590610c17575b610ba7575b50506040519182526001600160a01b0316903390600080516020612add83398151915290602090a3602060405160018152f35b33815260016020526040812054610bc08382101561260c565b6001600160a01b0384169033829003610bdb575b5050610b74565b604093610bf291610bed841515612651565b611fe3565b338352600160205283832055815220610c0c838254611ff0565b905581388080610bd4565b50336001600160a01b03841614610b6f565b50346102f25760403660031901126102f2576060610c51610c48611c98565b6024359061212f565b9060405192835260208301526040820152f35b50346102f257806003193601126102f2576020602b54604051908152f35b50346102f25760403660031901126102f2576020610caa610ca1611c98565b602435906123b0565b604051908152f35b50346102f257806003193601126102f257808060018060a01b03600b541660405160208101906395d89b4160e01b825260048152610cef81611e5d565b51915afa610cfb6128e1565b915015610d5b57610d0e61032791612968565b610d476023604051809362746d2d60e81b6020830152610d378151809260208686019101611cc9565b8101036003810184520182611ec5565b604051918291602083526020830190611cec565b50610327610d67612911565b610d0e565b50346102f257806003193601126102f2576020602f54604051908152f35b50346102f25760403660031901126102f2576004356001600160401b038111610f9f5736602382011215610f9f57806004013582610dc782611ee6565b92610dd56040519485611ec5565b82845260208401923660248284010111610aa2578060246020930185378401015260243561ffff81168103610f9b57610100918284805181010312610f9757610e1d906122a0565b610e2960408501612696565b91610e3660608601612696565b9460808101519460a082015192610e4f60c084016126aa565b9160e0840151930151938042116105c9578515610f70577f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e266915b6001600160a01b0388168b52600460205260408b20805491906000198314610f5c579161ffff610f199896949261055698969460018401905560405194602086015216604084015260018060a01b038a16606084015260018060a01b038c1660808401528a60a084015260c083015260e082015260e08152610f0a81611e8e565b602081519101206105256124e2565b6001600160a01b038381169116036105705715610f465761056d926001600160a01b03908116911661288a565b61056d926001600160a01b03908116911661283c565b634e487b7160e01b8d52601160045260248dfd5b7f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d691610e89565b8480fd5b8380fd5b5080fd5b50346102f257806003193601126102f2576005546040516001600160a01b039091168152602090f35b50346102f257806003193601126102f2576020601b54604051908152f35b50346102f257806003193601126102f257601454604080516001600160801b038316815260809290921c602083015290f35b50346102f257806003193601126102f2576020602d54604051908152f35b50346102f25760403660031901126102f257611061611057611c98565b602435903361283c565b602060405160018152f35b50346102f25760203660031901126102f2576020906040906001600160a01b03611094611c98565b168152600483522054604051908152f35b50346102f257806003193601126102f257600f546040516001600160a01b039091168152602090f35b50346102f257806003193601126102f257610327604051610d47816110f281611dd8565b0382611ec5565b50346102f25760203660031901126102f2576004359060098210156102f257602060ff61112584611d6f565b54166040519015158152f35b50346102f25760203660031901126102f2576020906040906001600160a01b03611159611c98565b168152600183522054604051908152f35b50346102f257806003193601126102f257600a546040516001600160a01b039091168152602090f35b50346102f257806003193601126102f2576020601c54604051908152f35b50346102f257806003193601126102f25760206001600160401b03602c5460401c16604051908152f35b50346102f257806003193601126102f25760206001600160401b03602c5416604051908152f35b50346102f257806003193601126102f25760206001600160401b03602e5416604051908152f35b50346102f257806003193601126102f25760208054604051908152f35b50346102f257806003193601126102f2576006546001600160a01b0390818116338190036112b057806005549384167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08680a36001600160a01b0319928316176005551660065580f35b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b50346102f257806003193601126102f2576020602854604051908152f35b50346102f25760203660031901126102f2576020906040906001600160a01b0361133a611c98565b168152601783522054604051908152f35b50346102f257806003193601126102f2576020601554604051908152f35b50346102f257806003193601126102f2576020600e54604051908152f35b50346102f257806003193601126102f2576020601654604051908152f35b50346102f25760603660031901126102f2576020610caa604435602435600435612016565b50346102f257806003193601126102f2576020601154604051908152f35b50346102f257806003193601126102f257600d546040516001600160a01b039091168152602090f35b50346102f257806003193601126102f2576020601254604051908152f35b50346102f257806003193601126102f2576020610caa6124e2565b50346102f257806003193601126102f2576020601954604051908152f35b50346102f257806003193601126102f2576020601354604051908152f35b50346102f257806003193601126102f257808060018060a01b03600d5416604051602081019063313ce56760e01b8252600481526114c381611e5d565b51915afa906114d06128e1565b918061150d575b15611502576020828051810103126102f257506114f760208092016126aa565b60ff60405191168152f35b5050602060126114f7565b5060208251146114d7565b50346102f25760603660031901126102f257611532611c98565b9061153b611cb3565b6044359182611579575b506040519182526001600160a01b03908116921690600080516020612add83398151915290602090a3602060405160018152f35b6001600160a01b038481168083526001602090815260408420549286906115a28286101561260c565b8616938484036115b7575b5050505050611545565b838652600283526040808720338852845286205460018101611621575b50926001602096936115ff8794604097610bed600080516020612add8339815191529c9a1515612651565b9285525283832055815220611615858254611ff0565b905591388085816115ad565b9091811061167557926001602096936115ff8a600080516020612add8339815191529a98956116528260409a611fe3565b86895260028552898920338a5285528989205594975094979950509396506115d4565b60405162461bcd60e51b815260048101849052601860248201527745524332303a20616c6c6f77616e636520746f6f206c6f7760401b6044820152606490fd5b50346102f2576116c436611d20565b908395949542116105c9576001600160a01b03878116808a52600460205260408a20805491969295929060001983146105b557826117669694928d92600161055698960190556040519160208301937f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d6855260408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e0815261051a81611e8e565b16036105705761056d9261283c565b50346102f25760203660031901126102f2576020906040906001600160a01b0361179d611c98565b168152601883522054604051908152f35b50346102f257806003193601126102f257602060245460801c604051908152f35b50346102f25760403660031901126102f2576004356009811015610f9f576117f5611d11565b6008549091906001600160a01b031633036118ab5760ff61181582611d6f565b5416151591151591821461187157808260ff61183361186194611d6f565b54161515827feeec81de25875ce1725479bb76f720a8defdb43dea041919ae37bb4aae9847c08780a4611d6f565b9060ff8019835416911617905580f35b60405162461bcd60e51b81526020600482015260126024820152714d61726b65743a2073616d6520737461746560701b6044820152606490fd5b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881d5b985d5d1a1bdc9a5e995960621b6044820152606490fd5b50346102f25760403660031901126102f257611061611904611c98565b602435903361288a565b50346102f25760603660031901126102f257611928611c98565b611930611d11565b604435908115158203610f9b5760018060a01b0392839161195683600554163314611f01565b156119fa5716908115908115916119f2575b50156119b557806005549283167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08580a36001600160a01b03199182161760055560068054909116905580f35b60405162461bcd60e51b81526020600482015260156024820152744f776e61626c653a207a65726f206164647265737360581b6044820152606490fd5b905038611968565b9150501660018060a01b0319600654161760065580f35b50346102f257806003193601126102f257808060018060a01b03600b541660405160208101906306fdde0360e01b825260048152611a4e81611e5d565b51915afa611a5a6128e1565b915015611ab757611a6d61032791612968565b610d476034604051809373546170696f63612053696e67756c61726974792d60601b6020830152611aa78151809260208686019101611cc9565b8101036014810184520182611ec5565b50610327611ac3612911565b611a6d565b50346102f257806003193601126102f257600f546040805163d6d7d52560e01b8152602060048201529182906001600160a01b0316818581611b0c60248201611dd8565b03925af18015611c455782918391611c05575b508115611ba6578015611b6a57807f9f9192b5edb17356c524e08d9e025c8e2f6307e6ea52fb7968faa3081f51c3c86040948260115580a25b42601355825191151582526020820152f35b60405162461bcd60e51b81526020600482015260146024820152734d61726b65743a20696e76616c6964207261746560601b6044820152606490fd5b509050611bb860135460125490611ff0565b4211611bc957604090601154611b58565b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881c985d19481d1bdbc81bdb1960621b6044820152606490fd5b9150506040813d604011611c3d575b81611c2160409383611ec5565b81010312610f9f576020611c34826122a0565b91015138611b1f565b3d9150611c14565b6040513d84823e3d90fd5b905034610f9f576040366003190112610f9f576040602092611c70611c98565b611c78611cb3565b6001600160a01b0391821683526003865283832091168252845220548152f35b600435906001600160a01b0382168203611cae57565b600080fd5b602435906001600160a01b0382168203611cae57565b60005b838110611cdc5750506000910152565b8181015183820152602001611ccc565b90602091611d0581518092818552858086019101611cc9565b601f01601f1916010190565b602435908115158203611cae57565b60e0906003190112611cae576001600160a01b03906004358281168103611cae57916024359081168103611cae5790604435906064359060843560ff81168103611cae579060a4359060c43590565b6009811015611d88576000526007602052604060002090565b634e487b7160e01b600052602160045260246000fd5b90600182811c92168015611dce575b6020831014611db857565b634e487b7160e01b600052602260045260246000fd5b91607f1691611dad565b60105460009291611de882611d9e565b908181526001928381169081600014611e425750600114611e0857505050565b9092935060106000526020928360002092846000945b838610611e2e5750505050010190565b805485870183015294019385908201611e1e565b91935050602093945060ff191683830152151560051b010190565b604081019081106001600160401b03821117611e7857604052565b634e487b7160e01b600052604160045260246000fd5b61010081019081106001600160401b03821117611e7857604052565b608081019081106001600160401b03821117611e7857604052565b90601f801991011681019081106001600160401b03821117611e7857604052565b6001600160401b038111611e7857601f01601f191660200190565b15611f0857565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b15611f5357565b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881b9bdd081d985b1a59607a1b6044820152606490fd5b81810292918115918404141715611f9f57565b634e487b7160e01b600052601160045260246000fd5b8115611fbf570490565b634e487b7160e01b600052601260045260246000fd5b604d8111611f9f57600a0a90565b91908203918211611f9f57565b91908201809211611f9f57565b81810392916000138015828513169184121617611f9f57565b60145491929161205f91612050916120469161203c906001600160801b03831690611f8c565b9060801c90611fb5565b93601f5490611f8c565b61205983611fd5565b90611fb5565b808310612127576120736120af9184611fe3565b916120aa6120a461209b601e5461209561208c86611fd5565b60205490611ff0565b90611f8c565b61205984611fd5565b91611fd5565b611ffd565b6509184e72a00090818102918183051490151715611f9f57670de0b6b3a764000091828102928184051490151715611f9f578015611fbf57600160ff1b91808314600019831416611f9f5705906000821215612120578114611f9f57600003905b80821161211b575090565b905090565b5090612110565b505050600090565b9160018060a01b0380931691600093838552602060178152604091828720549081156122935783518481018181106001600160401b0382111761227f5785528881528884808301938285526121858915156122ad565b600954166064600c548c85526018845289852054928a51958694859363442c159960e01b85526004850152602484015260448301525afa908115612275578a91612242575b506122369798999492601894926122196122048a6121ff6121f661222297620186a06021540490611f8c565b601e5490611f8c565b611fb5565b915191946001600160801b0392831690611f8c565b91511690611fb5565b81811061223a57035b9783525220546122f9565b9091565b50508261222b565b90508481813d831161226e575b6122598183611ec5565b8101031261226a57516122366121ca565b8980fd5b503d61224f565b86513d8c823e3d90fd5b634e487b7160e01b8a52604160045260248afd5b5086955085949350505050565b51908115158203611cae57565b156122b457565b60405162461bcd60e51b815260206004820152601e60248201527f4d61726b65743a2065786368616e676552617465206e6f742076616c696400006044820152606490fd5b6123048215156122ad565b602060018060a01b0360095416916064600c54604051948593849263442c159960e01b845260048401526024830152600060448301525afa9081156123a457600091612371575b50906121ff61235d9260215490611f8c565b620186a061236d601e5483611f8c565b0491565b906020823d821161239c575b8161238a60209383611ec5565b810103126102f25750516121ff61234b565b3d915061237d565b6040513d6000823e3d90fd5b6001600160a01b031660008181526018602052604081205490926123d3916122f9565b9183526017602052604083205480156124dc5781156124dc578181106124dc57828110156124d25760145461241c918391610bed9161203c906001600160801b03831690611f8c565b90620186a092838302928084048514901517156124be57612441929161205991611fe3565b91601b5491601c54936124548585611ffd565b80820291848212600160ff1b8214166124be5781830514901517156124aa5705818482019485129112908015821691151617612496575080821261211b575090565b634e487b7160e01b81526011600452602490fd5b634e487b7160e01b83526011600452602483fd5b634e487b7160e01b85526011600452602485fd5b50505050601b5490565b50505090565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031614806125e3575b1561253d577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f000000000000000000000000000000000000000000000000000000000000000082527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a0815260c081018181106001600160401b03821117611e785760405251902090565b507f00000000000000000000000000000000000000000000000000000000000000004614612514565b1561261357565b60405162461bcd60e51b815260206004820152601660248201527545524332303a2062616c616e636520746f6f206c6f7760501b6044820152606490fd5b1561265857565b60405162461bcd60e51b815260206004820152601660248201527545524332303a206e6f207a65726f206164647265737360501b6044820152606490fd5b51906001600160a01b0382168203611cae57565b519060ff82168203611cae57565b6005811015611d8857806126c95750565b600181036127115760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b6044820152606490fd5b6002810361275e5760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606490fd5b60031461276757565b60405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608490fd5b9291906fa2a8918ca85bafe22016d0b997e4df60600160ff1b0383116128305791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa156128235781516001600160a01b0381161561281d579190565b50600190565b50604051903d90823e3d90fd5b50505050600090600390565b7fe50de2333c10a9502fcb1d8ae13a51bbf423153dfc63c2b8997665b32154afc360018060a01b038092169160009083825260036020526040822094169384825260205284604082205580a4565b909160207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259160018060a01b03809416938460005260028352604060002095169485600052825280604060002055604051908152a3565b3d1561290c573d906128f282611ee6565b916129006040519384611ec5565b82523d6000602084013e565b606090565b6040519061291e82611e5d565b60038252623f3f3f60e81b6020830152565b908151811015612941570160200190565b634e487b7160e01b600052603260045260246000fd5b60ff1660ff8114611f9f5760010190565b8051604081106129e357508051810190602081818401930312611cae576020810151906001600160401b038211611cae570181603f82011215611cae5760208101516129b381611ee6565b926129c16040519485611ec5565b81845260408284010111611cae576129e0916040602085019101611cc9565b90565b602092908303612ad1576000805b60ff81168581109081612ab2575b5015612a1357612a0e90612957565b6129f1565b9260ff80941692612a2384611ee6565b93612a316040519586611ec5565b808552612a40601f1991611ee6565b013687860137825b85811687811080612a95575b15612a8a57612a859190612a7f6001600160f81b0319612a748388612930565b5116871a9188612930565b53612957565b612a48565b505094505050905090565b506001600160f81b0319612aa98286612930565b51161515612a54565b6001600160f81b03199150612ac79086612930565b51161515386129ff565b9150506129e061291156feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220d56635cc9f65bf4bf9a99354bcd7b53734e93d4577b3eb9463586ee7b624502b64736f6c63430008120033", "linkReferences": {}, "deployedLinkReferences": {} } diff --git a/src/artifacts/tapioca-bar/Singularity.json b/src/artifacts/tapioca-bar/Singularity.json index c199c0c4..beb3a306 100644 --- a/src/artifacts/tapioca-bar/Singularity.json +++ b/src/artifacts/tapioca-bar/Singularity.json @@ -2235,11 +2235,6 @@ }, { "inputs": [ - { - "internalType": "uint256", - "name": "_borrowOpeningFee", - "type": "uint256" - }, { "internalType": "contract IOracle", "name": "_oracle", @@ -2303,6 +2298,11 @@ }, { "inputs": [ + { + "internalType": "uint256", + "name": "_borrowOpeningFee", + "type": "uint256" + }, { "internalType": "uint256", "name": "_lqCollateralizationRate", @@ -2637,8 +2637,8 @@ "type": "receive" } ], - "bytecode": "0x6101408060405234620001ea576200001781620001ef565b601381526001602082017f546170696f63612053696e67756c617269747900000000000000000000000000815260206040516200005481620001ef565b8381520192603160f81b845251902091208160e052610100918183524660a0526040519160208301907f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f92838352604085015260608401524660808401523060a084015260a0835260c083019280841060018060401b03851117620001d45760408490525190206080523060c052610120908152600580546001600160a01b0319163390811790915560007f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a362013880601b5562015f90601c55612710601d556032602055612ee06021557f0bd4060688a1800ae986e4840aebc924bb40b5bf44de4583df2257220b54b77c6027557f7d1dc38e60930664f8cbf495da6556ca091d2f92d6550877750c049864b182306028556161a86029556001603055615e7792836200020c843960805183613c1d015260a05183613cd8015260c05183613be7015260e05183613c6c01525182613c9201525181613c490152f35b634e487b7160e01b600052604160045260246000fd5b600080fd5b604081019081106001600160401b03821117620001d45760405256fe6080604052600436101561001b575b361561001957600080fd5b005b60003560e01c8062a02a201461059a57806302ce728f1461059557806306fdde0314610590578063078dfbe71461058b578063095ea7b3146105865780630996efb7146105815780630c4e84f01461057c57806318160ddd146105775780631c9e379b146105725780631da8bf101461056d5780631ee9c8f21461056857806323b872dd1461056357806325384fd81461055e5780632a9399d914610559578063313ce56714610554578063331960ff1461054f57806334d441d01461054a5780633644e5151461054557806337b6b7b91461054057806338d52e0f1461053b5780633ba0b9a9146105365780633f741adb1461053157806340626d8b1461052c57806344de240a14610527578063473e3ce71461052257806348e4163e1461051d5780634d7f2a34146105185780634ddf47d4146105135780634e71e0c81461050e5780635224372c14610509578063529898f21461050457806352f353eb146104ff57806355140232146104fa57806355c2ab94146104f557806357935462146104f057806358db9afe146104eb5780635d5f73ef146104e65780635dfe04e8146104e15780636587adb8146104dc5780636c3d8b8f146104d757806370a08231146104d257806372778547146104cd57806374645ff3146104c85780637dc0d1d0146104c35780637ecebe00146104be5780637fa0b84e146104b9578063821226e8146104b45780638285ef40146104af5780638c5d0ed3146104aa5780638da5cb5b146104a5578063910dd7c8146104a0578063959916dc1461049b57806395d89b411461049657806399a97028146104915780639c5d71921461048c5780639e15e89f14610487578063a28e6b8214610482578063a9059cbb1461047d578063aa7d966514610478578063accfde4a14610473578063ae70702e1461046e578063af405b4c14610469578063b0e21e8a14610464578063b25ea8fb1461045f578063b27c0e741461045a578063bb4cfe3b14610455578063bf0b895814610450578063c861a5261461044b578063cce19f8114610446578063cd0211eb14610441578063ce8849ed1461043c578063d49dffa714610437578063d505accf14610432578063d8dfeb451461042d578063dd62ed3e14610428578063de40657714610423578063e0996cb61461041e578063e30c397814610419578063e5644d8b14610414578063e9a492521461040f578063ea64dd561461040a578063eec0f42e14610405578063f42760b714610400578063f4d93753146103fb578063f5b33dfa146103f6578063f8ba4cff146103f1578063f9557ccb146103ec5763ffe04c660361000e57612e4f565b612e1d565b612e04565b612ddb565b612d91565b612d73565b612d55565b612d37565b612cb3565b612c2a565b612c01565b612be3565b612bba565b612b7e565b612b55565b612aa7565b6129c4565b61299b565b612934565b6128e0565b6128b7565b6127e0565b6127c2565b612787565b6126fa565b6126dc565b6125d6565b6124c5565b612211565b612074565b611ecf565b611e25565b611de7565b611dc9565b611d9e565b611d09565b611cec565b611c71565b611c0d565b611bef565b611bbd565b611b9f565b611b75565b611b38565b611b0f565b611a2e565b6118fa565b61187f565b611856565b61180d565b611775565b61174c565b6116a9565b61168b565b611661565b61163a565b611613565b6115f5565b61157c565b61149d565b611246565b611228565b6111eb565b6111cd565b6111af565b611191565b61116d565b61114f565b611126565b611108565b6110e5565b6110c7565b6110a9565b611008565b610f30565b610eda565b610d93565b610c98565b610b7d565b610af0565b610acf565b6109d8565b61094e565b6108ec565b6107a9565b6106d6565b610654565b610604565b6001600160a01b038116036105b057565b600080fd5b35906105c08261059f565b565b60409060031901126105b0576004356105da8161059f565b906024356105e78161059f565b90565b6001600160a01b0316600090815260016020526040902090565b346105b0576020610640610617366105c2565b6001600160a01b0391821660009081526003855260408082209290931681526020919091522090565b54604051908152f35b60009103126105b057565b346105b05760003660031901126105b057604061066f6138fc565b825191151582526020820152f35b60005b8381106106905750506000910152565b8181015183820152602001610680565b906020916106b98151809281855285808601910161067d565b601f01601f1916010190565b9060206105e79281815201906106a0565b346105b05760008060031936011261079c57808060018060a01b03600b541660405160208101906306fdde0360e01b825260048152610714816119a9565b51915afa610720614948565b9150156107855761076761077561073961078193614a64565b60405173546170696f63612053696e67756c61726974792d60601b6020820152928391603483015b90614931565b03601f198101835282611a0d565b604051918291826106c5565b0390f35b50610781610767610775610797614978565b610739565b80fd5b801515036105b057565b346105b05760603660031901126105b0576004356107c68161059f565b602435906107d38261079f565b604435916107e08361079f565b6005546001600160a01b0391906107fa9083163314612e6d565b156108d3578116918215908115916108cb575b501561088e5760055461087c9290610835906001600160a01b03165b6001600160a01b031690565b7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b600680546001600160a01b0319169055005b60405162461bcd60e51b81526020600482015260156024820152744f776e61626c653a207a65726f206164647265737360581b6044820152606490fd5b90503861080d565b60068054919092166001600160a01b0319909116179055005b346105b05760403660031901126105b05761091660043561090c8161059f565b60243590336141ee565b602060405160018152f35b9181601f840112156105b0578235916001600160401b0383116105b057602083818601950101116105b057565b346105b0576101803660031901126105b05760243561096c8161059f565b604435906001600160401b0382116105b05761098f610019923690600401610921565b906064359261099d8461059f565b610164359361014435936101243593610104359360e4359360c4359360a4359360843593600435612eb8565b6004359060098210156105b057565b346105b05760403660031901126105b0576109f16109c9565b6024356109fd8161079f565b6008546001600160a01b03163303610a9357610a8282610a31610a2c610a25610019966118e1565b5460ff1690565b151590565b610a40841515918214156133a0565b610a4c610a25836118e1565b610a55836118d2565b1515827feeec81de25875ce1725479bb76f720a8defdb43dea041919ae37bb4aae9847c0600080a46118e1565b9060ff801983541691151516179055565b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881d5b985d5d1a1bdc9a5e995960621b6044820152606490fd5b346105b05760003660031901126105b057602060255460801c604051908152f35b346105b05760203660031901126105b057600435610b0d8161059f565b60018060a01b031660005260186020526020604060002054604051908152f35b60ff8116036105b057565b60e09060031901126105b057600435610b508161059f565b90602435610b5d8161059f565b906044359060643590608435610b7281610b2d565b9060a4359060c43590565b346105b057610b8b36610b38565b9592809594959291924211610c535761001996610c4e93610c3b93610c2e878a610c268b610767610c3399610bbf86614173565b60405195869460208601988991959493909260c09360e08401977f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d685526000602086015260018060a01b038092166040860152166060840152608083015260a08201520152565b51902061411d565b6140a5565b919091613f8a565b6001600160a01b03838116911614613f25565b61419b565b60405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b346105b05760c03660031901126105b057600435610cb58161059f565b608435610cc18161059f565b60a435906001600160401b0382116105b05761078192610d43610d4892610767610cf2610d57963690600401610921565b604051958694630f74e47960e11b602087015260018060a01b0380921660248701526024356044870152604435606487015260643560848701521660a485015260c060c485015260e4840191615981565b615d0a565b60208082518301019101613a38565b6040519081529081906020820190565b60609060031901126105b057600435610d7f8161059f565b90602435610d8c8161059f565b9060443590565b346105b057610ddb600080516020615e22833981519152610db336610d67565b9291939083610dea575b6040519384526001600160a01b039081169416929081906020820190565b0390a360405160018152602090f35b610df3856105ea565b54610e0085821015613cfe565b6001600160a01b038281169186918816839003610e20575b505050610dbd565b6001600160a01b03881660009081526002602090815260408083203384529091529020610e6493610e5f91548460018201610e8c575b50501515613d43565b61348d565b610e6d866105ea565b55610e77816105ea565b610e8285825461349a565b9055388481610e18565b81610e5f82610e9c941015613d88565b6001600160a01b038b166000908152600260205260409020610ed29033905b9060018060a01b0316600052602052604060002090565b553884610e56565b346105b05760003660031901126105b0576032546040516001600160a01b039091168152602090f35b908160609103126105b05790565b908160e09103126105b05790565b60809060a31901126105b05760a490565b610120806003193601126105b057600435610f4a8161059f565b60443590610f578261079f565b6001600160401b03906064358281116105b057610f78903690600401610f03565b936084359283116105b057610767610ffd61001996610feb610fa1610d43973690600401610f11565b91610fab36610f1f565b95604051998a98632a9399d960e01b60208b015260018060a01b031660248a015260243560448a01521515606489015260848801526101448701906159d3565b8581036023190160a487015290615a17565b9160c4840190615b0c565b346105b05760008060031936011261079c57808060018060a01b03600d5416604051602081019063313ce56760e01b825260048152611046816119a9565b51915afa90611053614948565b918061109e575b156110925760208280518101031261079c5750602061078191015161107e81610b2d565b60405160ff90911681529081906020820190565b5050610781601261107e565b50602082511461105a565b346105b05760003660031901126105b0576020601354604051908152f35b346105b05760003660031901126105b0576020601954604051908152f35b346105b05760003660031901126105b0576020611100613be4565b604051908152f35b346105b05760003660031901126105b0576020601254604051908152f35b346105b05760003660031901126105b057600d546040516001600160a01b039091168152602090f35b346105b05760003660031901126105b0576020601154604051908152f35b346105b05760603660031901126105b0576020611100604435602435600435613547565b346105b05760003660031901126105b0576020601654604051908152f35b346105b05760003660031901126105b0576020600e54604051908152f35b346105b05760003660031901126105b0576020601554604051908152f35b346105b05760203660031901126105b0576004356112088161059f565b60018060a01b031660005260176020526020604060002054604051908152f35b346105b05760003660031901126105b0576020602954604051908152f35b346105b05760203660031901126105b0576004356001600160401b0381116105b057611276903690600401610921565b9060ff602354166114625761128d91810190614b62565b600a80546001600160a01b0319166001600160a01b038b16179055989b919a989990989296939593926040519263de40657760e01b845260208460048160018060a01b03809e165afa998a1561145d57806114039f8180916113786113fe9f8f90848f611326826113c19f94819560009161142f575b5060098054919092166001600160a01b03166001600160a01b0319909116179055565b600a546113619061133f906001600160a01b0316610829565b600580546001600160a01b0319166001600160a01b0392909216919091179055565b1615159182611423575b82611415575b5050614c12565b1695169316911692909160018060a01b03928380928160018060a01b03199716876031541617603155168560335416176033551683603254161760325516906034541617603455565b9391929060018060a01b0380948160018060a01b0319971687600d541617600d551685600b541617600b55600e55600c551690600f541617600f55565b614cb2565b610019600160ff196023541617602355565b9091501615158f8490611371565b8d82161515925061136b565b611450915060203d8111611456575b6114488183611a0d565b810190614bfd565b38611303565b503d61143e565b61386a565b60405162461bcd60e51b815260206004820152601360248201527213585c9ad95d0e881a5b9a5d1a585b1a5e9959606a1b6044820152606490fd5b346105b05760008060031936011261079c576006546001600160a01b03163381900361153857600554611525919081906114df906001600160a01b0316610829565b7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08580a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b600680546001600160a01b031916905580f35b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b346105b0576115d06107676115cb61159336610d67565b6040516314890dcb60e21b60208201526001600160a01b03938416602482015292909116604483015260648201529182906084820190565b615da3565b6040818051810103126105b05780604060208193015191015182519182526020820152f35b346105b05760003660031901126105b0576020602154604051908152f35b346105b05760003660031901126105b05760206001600160401b03602f5416604051908152f35b346105b05760003660031901126105b05760206001600160401b03602d5416604051908152f35b346105b05760003660031901126105b0576020602d546001600160401b036040519160401c168152f35b346105b05760003660031901126105b0576020601c54604051908152f35b346105b05760a03660031901126105b0576004356116c68161059f565b6064356116d28161059f565b608435906001600160401b0382116105b05761078192610d43610d4892610767611703610d57963690600401610921565b604051958694632c6dcd7f60e11b602087015260018060a01b0380921660248701526024356044870152604435606487015216608485015260a060a485015260c4840191615981565b346105b05760003660031901126105b0576031546040516001600160a01b039091168152602090f35b346105b05760003660031901126105b05761178e614248565b506080611799614316565b509350505050604051916001600160401b0380825116845260208201511660208401526040600180861b039101511660408301526060820152f35b60809060031901126105b0576004356117ec8161059f565b906024356117f98161059f565b906044356118068161079f565b9060643590565b346105b0576020611100611820366117d4565b9260076000939293526007865261183f60ff6040600020541615614fd9565b6118498482615016565b6118516147fe565b6150ec565b346105b05760003660031901126105b057600a546040516001600160a01b039091168152602090f35b346105b05760203660031901126105b05760043561189c8161059f565b60018060a01b031660005260016020526020604060002054604051908152f35b634e487b7160e01b600052602160045260246000fd5b600911156118dc57565b6118bc565b60098110156118dc576000526007602052604060002090565b346105b05760203660031901126105b0576119136109c9565b60098110156118dc576000526007602052602060ff604060002054166040519015158152f35b90600182811c92168015611969575b602083101461195357565b634e487b7160e01b600052602260045260246000fd5b91607f1691611948565b634e487b7160e01b600052604160045260246000fd5b606081019081106001600160401b038211176119a457604052565b611973565b604081019081106001600160401b038211176119a457604052565b6001600160401b0381116119a457604052565b60c081019081106001600160401b038211176119a457604052565b60e081019081106001600160401b038211176119a457604052565b90601f801991011681019081106001600160401b038211176119a457604052565b346105b05760008060031936011261079c5760405181601054611a5081611939565b80845290600190818116908115611ae75750600114611a8e575b61078184611a7a81880382611a0d565b6040519182916020835260208301906106a0565b60108352602094507f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae6725b828410611ad4575050508161078193611a7a9282010193611a6a565b8054858501870152928501928101611ab8565b6107819650611a7a9450602092508593915060ff191682840152151560051b82010193611a6a565b346105b05760003660031901126105b057600f546040516001600160a01b039091168152602090f35b346105b05760203660031901126105b057600435611b558161059f565b60018060a01b031660005260046020526020604060002054604051908152f35b346105b05760403660031901126105b057610916600435611b958161059f565b602435903361419b565b346105b05760003660031901126105b0576020602e54604051908152f35b346105b05760003660031901126105b057601454604080516001600160801b038316815260809290921c602083015290f35b346105b05760003660031901126105b0576020601b54604051908152f35b346105b05760003660031901126105b0576005546040516001600160a01b039091168152602090f35b6001600160401b0381116119a457601f01601f191660200190565b6024359061ffff821682036105b057565b359061ffff821682036105b057565b346105b05760403660031901126105b0576004356001600160401b0381116105b057366023820112156105b0578060040135611cac81611c36565b90611cba6040519283611a0d565b80825236602482850101116105b057602081600092602461001996018386013783010152611ce6611c51565b90613dcf565b346105b05760003660031901126105b05760208054604051908152f35b346105b05760008060031936011261079c57808060018060a01b03600b541660405160208101906395d89b4160e01b825260048152611d47816119a9565b51915afa611d53614948565b915015611d8757610767610775611d6c61078193614a64565b60405162746d2d60e81b602082015292839160238301610761565b50610781610767610775611d99614978565b611d6c565b346105b05760403660031901126105b0576020611100600435611dc08161059f565b60243590613b10565b346105b05760003660031901126105b0576020602c54604051908152f35b346105b05760403660031901126105b0576060611e12600435611e098161059f565b6024359061362b565b9060405192835260208301526040820152f35b346105b05760803660031901126105b057600435611e428161059f565b602435611e4e8161059f565b60443590611e5b8261059f565b606435926001600160401b0384116105b057610767611eca92611e85610019963690600401610921565b60405163514735c160e11b60208201526001600160a01b03958616602482015292851660448401529390951660648201526080608482015293849260a4840191615981565b615dcd565b346105b05760403660031901126105b057600435611eec8161059f565b6024358015801590611f96575b611f2c575b6040519081526001600160a01b03909116903390600080516020615e22833981519152908060208101610ddb565b611f35336105ea565b54611f4282821015613cfe565b6001600160a01b03831690829033839003611f60575b505050611efe565b610e5f611f6e931515613d43565b611f77336105ea565b55611f81826105ea565b611f8c82825461349a565b9055388181611f58565b50336001600160a01b03831614611ef9565b9181601f840112156105b0578235916001600160401b0383116105b0576020808501948460051b0101116105b057565b906040820191604081528151809352606081019260208093019060005b81811061205e57505050818184039101528251908183528083019281808460051b8301019501936000915b8483106120305750505050505090565b909192939495848061204e600193601f198682030187528a516106a0565b9801930193019194939290612020565b8251151586529484019491840191600101611ff5565b346105b0576040806003193601126105b057600480356001600160401b0381116105b0576120a59036908301611fa8565b92906024356120b38161079f565b6002603054146121a25760026030556120cb85614e74565b936120d586614e9c565b95600090815b8181106120fc578888610781896120f26001603055565b5192839283611fd8565b828061210983858a614ee6565b906121188b5180938193614f27565b0390305af4612125614948565b9080158061219b575b61217457829161214f6121549261214861216f968e614f35565b9015159052565b614f49565b61215e828c614f35565b52612169818b614f35565b50614164565b6120db565b888661219761218285614f49565b925162461bcd60e51b815292839283016106c5565b0390fd5b508661212e565b825162461bcd60e51b8152602081860152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606490fd5b608435906001600160401b03821682036105b057565b60a435906001600160401b03821682036105b057565b346105b05760e03660031901126105b0576024356004356044356064356122366121e5565b9061223f6121fb565b9060c4359361225960018060a01b03600554163314612e6d565b8061248d575b508061242f575b506001600160401b039182811690816123ce575b50508181168061235c575b50505080612324575b50806122dd575b508061229d57005b806122af620186a06100199310615ccd565b806021547f1f1d0e9e5e3fd195010504141e7472fc7f53e44d7cd3f236f0892778039c6326600080a3602155565b806122f0620186a061231e931115615ccd565b806029547f1a98b2490874ba87102ae05e5b66fbe02edfcfb7e8b4e2d60f9aef620de5e337600080a3602955565b38612295565b8061235691602e547f6bdc0e1a8f6a69c7dcb57e254165094714bb2a8730e2fedd8c6e9b71e67478b5600080a3602e55565b3861228e565b6123c692602d546123708282168411615ccd565b60401c167fb02a4833a4686ad41ec77a1e91a97a505459a34966985bf11c59b1e01852e4a6600080a3602d805467ffffffffffffffff60401b191660409290921b67ffffffffffffffff60401b16919091179055565b388080612285565b6124289184602d546123e6828260401c168410615ccd565b167f6d780269adaf7a0d9858a89a8c090b0b3add5f7088ccac6f619ff2b22987e7d5600080a36001600160401b03166001600160401b0319602d541617602d55565b388061227a565b80612446670de0b6b3a76400006124749310615ccd565b80602b547f4d5fa9a75b98ca1386ef794acdb2601c953e99a9c7a94ed351a46e06dc1bab28600080a3602b55565b612487612482602b54613477565b602c55565b38612266565b806124bf91602a547fa55fca071799e1b20f7cdcdf447fcc08c886bdd0cb741bf8862a311921bbb388600080a3602a55565b3861225f565b346105b05760403660031901126105b0576004356124e28161059f565b61254460243591600e5483146000146125cb576020602754935b600954612511906001600160a01b0316610829565b604051627eeac760e11b81526001600160a01b038516600482015260248101929092529093849190829081906044820190565b03915afa801561145d5761078193610d5793600092612595575b5061257f61258e929360018060a01b03166000526026602052604060002090565b90600052602052604060002090565b549061349a565b61258e92506125bd61257f9160203d81116125c4575b6125b58183611a0d565b810190613a38565b925061255e565b503d6125ab565b6020602854936124fc565b346105b05760008060031936011261079c57610d576107819160018060a01b0361260581600554163314612e6d565b600a5481166001600160a01b03166024549092906001600160801b039060801c1661263f575b5050612636816105ea565b5490339061552d565b6126476147fe565b7fbe641c3ffc44b2d6c184f023fa4ed7bda4b6ffa71e03b3c98ae0c776da1f17e761268361267760245460801c90565b6001600160801b031690565b9261268d856105ea565b61269885825461349a565b90558416918281600080516020615e22833981519152604051806126c189829190602083019252565b0390a3602480546001600160801b0316905580a3388061262b565b346105b05760003660031901126105b0576020601a54604051908152f35b346105b05760403660031901126105b0576024356127178161059f565b61272c60018060a01b03600554163314612e6d565b60008080808094600435905af1612741614948565b501561274a5780f35b60405162461bcd60e51b815260206004820152601560248201527429a3a61d103a3930b739b332b9103330b4b632b21760591b6044820152606490fd5b346105b05760003660031901126105b0576060602454604051906001600160401b0380821683528160401c16602083015260801c6040820152f35b346105b05760003660031901126105b0576020601e54604051908152f35b346105b05760403660031901126105b05760255460095461285690602090612810906001600160a01b0316610829565b6014546001600160801b0316906040518080958194638eb22cdd60e01b8352602435600484019081526001600160801b0390911660208201526001604082015260600190565b03915afa91821561145d5761288f61288761078194610d5794600091612899575b506001600160801b03841661349a565b600435613431565b9060801c9061345a565b6128b1915060203d81116125c4576125b58183611a0d565b38612877565b346105b05760003660031901126105b0576033546040516001600160a01b039091168152602090f35b346105b05761001961076761292f6128f736610d67565b60405163cce19f8160e01b60208201526001600160a01b03938416602482015292909116604483015260648201529182906084820190565b615df7565b346105b057602061110061298d61294a366117d4565b60405163cd0211eb60e01b888201526001600160a01b0394851660248201529390921660448401521515606483015260848083019190915281526115cb816119d7565b828082518301019101613a38565b346105b05760003660031901126105b0576008546040516001600160a01b039091168152602090f35b610140806003193601126105b057600435906129df8261059f565b606435906129ec8261079f565b6001600160401b03926084358481116105b057612a0d903690600401610f03565b9360a4359081116105b057612a26903690600401610f11565b9360803660c31901126105b05761001994612a89612a9b92610d439560405197889663d49dffa760e01b602089015260018060a01b03166024880152602435604488015260443560648801521515608487015260a48601526101648501906159d3565b8381036023190160c485015290615a17565b61076760e48301615ab7565b346105b057612ab536610b38565b9592809594959291924211610c535761001996612b5093610c3b93610c2e878a610c268b610767610c3399612ae986614173565b60405195869460208601988991959493909260c09360e08401977f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e26685526000602086015260018060a01b038092166040860152166060840152608083015260a08201520152565b6141ee565b346105b05760003660031901126105b057600b546040516001600160a01b039091168152602090f35b346105b0576020610640612b91366105c2565b6001600160a01b0391821660009081526002855260408082209290931681526020919091522090565b346105b05760003660031901126105b0576009546040516001600160a01b039091168152602090f35b346105b05760003660031901126105b0576020601d54604051908152f35b346105b05760003660031901126105b0576006546040516001600160a01b039091168152602090f35b346105b05760803660031901126105b0576001600160401b036004358181116105b057612c5b903690600401611fa8565b906024358381116105b057612c74903690600401611fa8565b906044358581116105b057612c8d903690600401611fa8565b9290916064359687116105b057612cab610019973690600401611fa8565b969095615c09565b346105b05760a03660031901126105b057610019600435612cd38161059f565b60243590612ce08261059f565b60443590612ced8261079f565b604051926374d2492960e11b602085015260018060a01b03809216602485015216604483015215156064820152606435608482015260843560a482015260a4815261292f816119f2565b346105b05760003660031901126105b0576020601f54604051908152f35b346105b05760003660031901126105b0576020600c54604051908152f35b346105b05760003660031901126105b0576020602b54604051908152f35b346105b0576020612dd4611100612da736610d67565b90600860009593955260078652612dc660ff6040600020541615614fd9565b612dce6147fe565b84615706565b8092615016565b346105b05760003660031901126105b0576034546040516001600160a01b039091168152602090f35b346105b05760003660031901126105b0576100196147fe565b346105b05760003660031901126105b057602554604080516001600160801b038316815260809290921c602083015290f35b346105b05760003660031901126105b0576020602a54604051908152f35b15612e7457565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b98969492909a9997959391600160a01b600190039182600554163314612edd90612e6d565b620186a09c612eee8e8d111561316e565b6020549b8060009d7fc353b09af857951dccce61b43a5854fc45beceed36c50e5d4cc2e71858a8e0df8f80a3602055838116613125575b50806130f1575b50508116908161308a575b50508061306f575b5080613054575b508061303a575b5080613013575b5080612fec575b5080612fb4575b505080612f8b575b505080612f745750565b6105c090612f86601e54821015613339565b601f55565b612f9a612fad9282111561316e565b612fa8601f548211156132df565b601e55565b3880612f6a565b80612fe5927fae6e0ab3b95f0a53ff9660a390ccedcbbf1f2355dce974a9841af106fddcfaba6016549180a3601655565b3880612f62565b80612ffb8661300d931061316e565b613008601b54821161316e565b601c55565b38612f5b565b8061302287613034931061316e565b61302f601c54821061316e565b601b55565b38612f54565b806130498861304e931061316e565b601d55565b38612f4d565b806130648961306993111561316e565b601a55565b38612f46565b8061307f8a61308493111561316e565b601955565b38612f3f565b6008546130ea92906130a4906001600160a01b0316610829565b7f5a62d22209e370e38eea92cfddcd228e656e6ec139243392a760a7769f5877fd8b80a3600880546001600160a01b0319166001600160a01b0392909216919091179055565b3880612f37565b6130fa91613202565b7fa6f004921c944d4b8bf6e38462b00f36a58d62495d56b51f571ab78f732c98158980a13880612f2c565b600f80546001600160a01b0319166001600160a01b039092169190911790557f0b2d6eb667d0522c3eb86e4288afecae6c11591ffd1345d4d12407e0598bca9b8b80a138612f25565b1561317557565b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881b9bdd081d985b1a59607a1b6044820152606490fd5b601f81116131ba575050565b6000906010825260208220906020601f850160051c830194106131f8575b601f0160051c01915b8281106131ed57505050565b8181556001016131e1565b90925082906131d8565b91906001600160401b0381116119a45761322681613221601054611939565b6131ae565b6000601f821160011461326057819293600092613255575b50508160011b916000199060031b1c191617601055565b01359050388061323e565b6010600052601f198216937f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae67291805b8681106132c757508360019596106132ad575b505050811b01601055565b0135600019600384901b60f8161c191690553880806132a2565b9092602060018192868601358155019401910161328f565b156132e657565b60405162461bcd60e51b815260206004820152602560248201527f4d61726b65743a20636f6c6c61746572616c697a6174696f6e5261746520746f6044820152646f2062696760d81b6064820152608490fd5b1561334057565b60405162461bcd60e51b815260206004820152603260248201527f4d61726b65743a206c69717569646174696f6e436f6c6c61746572616c697a616044820152711d1a5bdb94985d19481d1bdbc81cdb585b1b60721b6064820152608490fd5b156133a757565b60405162461bcd60e51b81526020600482015260126024820152714d61726b65743a2073616d6520737461746560701b6044820152606490fd5b634e487b7160e01b600052601160045260246000fd5b90620186a09182810292818404149015171561340f57565b6133e1565b90670de0b6b3a76400009182810292818404149015171561340f57565b8181029291811591840414171561340f57565b634e487b7160e01b600052601260045260246000fd5b8115613464570490565b613444565b604d811161340f57600a0a90565b90670de0b6b3a764000091820391821161340f57565b9190820391821161340f57565b9190820180921161340f57565b8181039291600013801582851316918412161761340f57565b906509184e72a0009182810292818405149015171561340f57565b90670de0b6b3a76400009182810292818405149015171561340f57565b818102929160008212600160ff1b82141661340f57818405149015171561340f57565b811561346457600160ff1b811460001983141661340f570590565b600160ff1b811461340f5760000390565b60145491929190613562906001600160801b03831690613431565b9060801c9081156134645761358f91613580910493601f5490613431565b61358983613469565b9061345a565b90818310613623576135f46135ee6135e96135ad6135f9958761348d565b936135e46135de6135d5601e546135cf6135c686613469565b6021549061349a565b90613431565b61358984613469565b91613469565b6134a7565b6134c0565b916134db565b61351b565b600081121561361d5761360b90613536565b905b808211613618575090565b905090565b9061360d565b505050600090565b6001600160a01b038116600090815260176020526040812054919392909180156137a5576136d99061365b614267565b50613664614316565b50505050509490506136778415156139ec565b60095460209061368f906001600160a01b0316610829565b600c546001600160a01b038a1660009081526018602052604080822054905163442c159960e01b815260048101939093526024830152604482015294859190829081906064820190565b03915afa92831561145d5761377c9561358961267760206137406137298a61372461371b6137769c61374f9a8c91613788575b50602254620186a090046135cf565b601e5490613431565b61345a565b85519098906135cf906001600160801b0316612677565b9301516001600160801b031690565b908282106137805750035b6001600160a01b03909516600090815260186020526040902090565b54613a47565b9091565b91505061375a565b61379f9150873d81116125c4576125b58183611a0d565b3861370c565b505080919250918190565b91908260409103126105b057602082516137c98161079f565b92015190565b6020808252600091601054916137e483611939565b92838284015260019081811690816000146138475750600114613809575b5050505090565b929350601060005280600020926000935b8585106138335750505060409250010138808080613802565b80548585016040015293820193810161381a565b925050506040935060ff929192191683830152151560051b010138808080613802565b6040513d6000823e3d90fd5b1561387d57565b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881c985d19481d1bdbc81bdb1960621b6044820152606490fd5b156138c057565b60405162461bcd60e51b81526020600482015260146024820152734d61726b65743a20696e76616c6964207261746560601b6044820152606490fd5b600f54613911906001600160a01b0316610829565b6040805163d6d7d52560e01b81529291839081600081613933600482016137cf565b03925af1801561145d5760009283916139b8575b509082156139935761395a8215156138b9565b61396382601155565b817f9f9192b5edb17356c524e08d9e025c8e2f6307e6ea52fb7968faa3081f51c3c8600080a25b6105c042601355565b90506139af6139a76013546012549061349a565b421115613876565b6011549061398a565b90506139dc91925060403d81116139e5575b6139d48183611a0d565b8101906137b0565b91909138613947565b503d6139ca565b156139f357565b60405162461bcd60e51b815260206004820152601e60248201527f4d61726b65743a2065786368616e676552617465206e6f742076616c696400006044820152606490fd5b908160209103126105b0575190565b613a9c6020831592613a5984156139ec565b600954600c5460405163442c159960e01b81526004810191909152602481019290925260006044830152909283916001600160a01b031690829081906064820190565b03915afa801561145d57613abc91600091613ad6575b5060225490613431565b906134645704620186a0613ad2601e5483613431565b0491565b613aee915060203d81116125c4576125b58183611a0d565b38613ab2565b9190916000838201938412911290801582169115161761340f57565b90613b34613b52916137768460018060a01b03166000526018602052604060002090565b6001600160a01b039093166000908152601760205260409020909291565b548015613623578215613623578281106136235781811015613bdb5782613b9b613b96613ba195610e5f6135899561288f6014549160018060801b03831690613431565b6133f7565b9261348d565b613bcf601b5491613bca613bc1601c5492613bbc84876134a7565b6134f8565b620186a0900590565b613af4565b90808212613618575090565b505050601b5490565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03161480613cd5575b15613c3f577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f000000000000000000000000000000000000000000000000000000000000000082527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a08152613ccf816119d7565b51902090565b507f00000000000000000000000000000000000000000000000000000000000000004614613c16565b15613d0557565b60405162461bcd60e51b815260206004820152601660248201527545524332303a2062616c616e636520746f6f206c6f7760501b6044820152606490fd5b15613d4a57565b60405162461bcd60e51b815260206004820152601660248201527545524332303a206e6f207a65726f206164647265737360501b6044820152606490fd5b15613d8f57565b60405162461bcd60e51b815260206004820152601860248201527745524332303a20616c6c6f77616e636520746f6f206c6f7760401b6044820152606490fd5b6101009081818051810103126105b0576020810151613ded8161079f565b604082015192613dfc8461059f565b606083015194613e0b8661059f565b60808401519460a085015160c086015193613e2585610b2d565b60e08701519601516001600160a01b0392831698831696428310610c5357613ee795613edb8a8c610c268199610767613ee0998f8f600014613efe577f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e266965b613e8d87614173565b60408051602081019a8b5261ffff909716908701526001600160a01b03978816606087015296909116608085015260a084015260c083019490945260e0820193909352918290610100820190565b613f71565b1614613f25565b15613ef5576105c0926141ee565b6105c09261419b565b7f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d696613e84565b15613f2c57565b60405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152606490fd5b916105e79391610c33936140a5565b600511156118dc57565b613f9381613f80565b80613f9b5750565b613fa481613f80565b60018103613fec5760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b6044820152606490fd5b613ff581613f80565b600281036140425760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606490fd5b8061404e600392613f80565b1461405557565b60405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608490fd5b9291906fa2a8918ca85bafe22016d0b997e4df60600160ff1b0383116141115791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa1561145d5781516001600160a01b0381161561410b579190565b50600190565b50505050600090600390565b614125613be4565b9060405190602082019261190160f01b84526022830152604282015260428152608081018181106001600160401b038211176119a45760405251902090565b600019811461340f5760010190565b6001600160a01b0316600090815260046020526040902080549061419682614164565b905590565b6001600160a01b03908116600081815260036020908152604080832095909416808352949052918220849055907fe50de2333c10a9502fcb1d8ae13a51bbf423153dfc63c2b8997665b32154afc39080a4565b6001600160a01b0390811660008181526002602090815260408083208686168452825290912091937f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259391928690556040519586521693a3565b6040519061425582611989565b60006040838281528260208201520152565b60405190614274826119a9565b60006020838281520152565b6040519061428d82611989565b8160406024546001600160401b03808216845281831c16602084015260801c910152565b604051906142be826119a9565b6014546001600160801b038116835260801c6020830152565b604051906142e4826119a9565b6025546001600160801b038116835260801c6020830152565b6001600160801b03918216908216019190821161340f57565b61431e614248565b50614327614267565b50614330614267565b50614339614280565b906143426142b1565b9061434b6142d7565b906143b060008061436661082960095460018060a01b031690565b600e54865160405163442c159960e01b808252600482018490526001600160801b039092166024820152600060448201529296602096919590939092918790829081906064820190565b03818b5afa801561145d576143e19184916147ba575b508a516143db906001600160801b0316612677565b9061349a565b80614797575081945b8a6144176144116144058a8a9401516001600160401b031690565b6001600160401b031690565b4261348d565b96871561476f57506001600160401b03428116898e01528b8901516001600160801b039995919491939192908a161561471157508b518d518692918a91614472916001600160401b03909116906001600160801b0316613431565b9061447c91613431565b8d51670de0b6b3a76400009091049b908e906144a4908d8f16906001600160801b03166142fd565b6001600160801b039081169091528d5160405193845260048401959095529390931660248201526000604482015291829060649082905afa801561145d578461455c6145388f978f613724908f926126776135cf9161374061452361457e9b61452f9d8f916146f4575b5086516143db906001600160801b0316612677565b9b8c97601a5490613431565b620186a0900490565b9a8b16916145696040890161455c85614557835160018060801b031690565b6142fd565b6001600160801b03169052565b8d0180519092906001600160801b03166142fd565b806146d15750945b602a54868181101561462a57936137246145ea936145d16144056145dc6145d66145c3886137246145be6145f79d9e6144059c61348d565b613414565b946145d1602e549680613431565b613431565b8461349a565b94516001600160401b031690565b6001600160401b03168a52565b88516001600160401b0316602d546001600160401b03169180831691161061461d575b50565b6001600160401b03168852565b919050602b5480831161463f575b5050505050565b6146bf946145d161440561468261467c61466e6146656145be613724986146909b61348d565b602c549061345a565b966145d1602e549880613431565b8661349a565b92516001600160401b031690565b602d546146a89060401c6001600160401b0316614405565b8082116146c9575b50166001600160401b03168952565b8738808080614638565b9050386146b0565b8a516146ee9250613724906145be906001600160801b0316612677565b94614586565b61470b9150843d86116125c4576125b58183611a0d565b3861450e565b985050509650929798935050945061473082516001600160401b031690565b602f546001600160401b03169180831691160361475a575b5094936147536142d7565b9383929190565b6001600160401b031681526001945038614748565b9a505050509550969350505050926147856142b1565b9261478e6142d7565b92809281929190565b89516147b49190613724906145be906001600160801b0316612677565b946143ea565b6147d19150883d8a116125c4576125b58183611a0d565b386143c6565b805160209091015160801b6001600160801b0319166001600160801b039190911617602555565b6105c06148ca6148f161480f614316565b9397949593909290156148f6575050506001600160401b03602f54166000807f33af5ce86e8438eff54589f85332916444457dfa8685493fbd579b809097026b6020604051838152a45b6148836001600160401b038251166001600160401b03166001600160401b03196024541617602455565b6020810151602480546040938401516001600160401b039091169290931b67ffffffffffffffff60401b169190911760809290921b6001600160801b031916919091179055565b805160209091015160801b6001600160801b0319166001600160801b039190911617601455565b6147d7565b7f33af5ce86e8438eff54589f85332916444457dfa8685493fbd579b809097026b60206001600160401b0386511694604051908152a4614859565b906149446020928281519485920161067d565b0190565b3d15614973573d9061495982611c36565b916149676040519384611a0d565b82523d6000602084013e565b606090565b60405190614985826119a9565b60038252623f3f3f60e81b6020830152565b634e487b7160e01b600052603260045260246000fd5b9081518110156149be570160200190565b614997565b60ff1660ff811461340f5760010190565b906149de82611c36565b6149eb6040519182611a0d565b82815280926149fc601f1991611c36565b0190602036910137565b6020818303126105b0578051906001600160401b0382116105b0570181601f820112156105b0578051614a3881611c36565b92614a466040519485611a0d565b818452602082840101116105b0576105e7916020808501910161067d565b805160408110614a825750806020806105e793518301019101614a06565b602092908303614b57576000805b60ff81168581109081614b35575b5015614ab257614aad906149c3565b614a90565b92614ac060ff8095166149d4565b92825b85811687811080614b16575b15614b0b579081614b00614af7614ae9614b0695886149ad565b516001600160f81b03191690565b871a91886149ad565b536149c3565b614ac3565b505094505050905090565b506001600160f81b0319614b2d614ae983876149ad565b161515614acf565b6001600160f81b03199150614b4e90614ae990876149ad565b16151538614a9e565b9150506105e7614978565b90816101a09103126105b0578035614b798161059f565b916020820135614b888161059f565b916040810135614b978161059f565b91614ba4606083016105b5565b91614bb1608082016105b5565b91614bbe60a083016105b5565b9160c081013591614bd160e083016105b5565b9161010081013591614be661012083016105b5565b916101408101359161018061016083013592013590565b908160209103126105b057516105e78161059f565b15614c1957565b60405162461bcd60e51b815260206004820152600d60248201526c29a3a61d103130b2103830b4b960991b6044820152606490fd5b15614c5557565b60405162461bcd60e51b815260206004820152602f60248201527f53474c3a206c69717569646174696f6e436f6c6c61746572616c697a6174696f60448201526e1b94985d19481b9bdd081d985b1a59608a1b6064820152608490fd5b614ccd63097343e06001600160401b0319602d541617602d55565b602d805467ffffffffffffffff60401b19166324ea412360491b179055614d047054a2b63d65d79d094abb66880000000000602e55565b614d35614d19602d546001600160401b031690565b6001600160401b03166001600160401b0319602f541617602f55565b614d66614d4a602f546001600160401b031690565b6001600160401b03166001600160401b03196024541617602455565b614d6e6138fc565b5050614d7b6103e8601955565b614d856000601a55565b614d8f6032602055565b614d9a612ee0602155565b8015614e5057601e555b8015614e4357601f555b614dbd601f54601e5410614c4e565b614dc86161a8602955565b8015614e31576022555b614dde62013880601b55565b614dea62015f90601c55565b614df5612710601d55565b614e06670429d069189e0000602a55565b614e176706f05b59d3b20000602b55565b614e25612482602b54613477565b6105c062015180601255565b50614dd2670de0b6b3a7640000602255565b50614dae62013880612f86565b50614da4620124f8612fa8565b6001600160401b0381116119a45760051b60200190565b90614e7e82614e5d565b614e8b6040519182611a0d565b82815280926149fc601f1991614e5d565b90614ea682614e5d565b614eb36040519182611a0d565b8281528092614ec4601f1991614e5d565b019060005b828110614ed557505050565b806060602080938501015201614ec9565b91908110156149be5760051b81013590601e19813603018212156105b05701908135916001600160401b0383116105b05760200182360381136105b0579190565b908092918237016000815290565b80518210156149be5760209160051b010190565b6103e8815111614fa5576044815110614f72578060248060046105e79401518301019101614a06565b50604051614f7f816119a9565b60168152754d61726b65743a206e6f2072657475726e206461746160501b602082015290565b50604051614fb2816119a9565b60178152764d61726b65743a20726561736f6e20746f6f206c6f6e6760481b602082015290565b15614fe057565b60405162461bcd60e51b815260206004820152600e60248201526d13585c9ad95d0e881c185d5cd95960921b6044820152606490fd5b6001600160a01b03811633810361502c57505050565b60009081526002602090815260408083203384529091529020829054106150b0576001600160a01b038116600090815260026020526040902060001990615074903390610ebb565b540361507e575050565b6001600160a01b031660009081526002602052604090206150ac906150a4903390610ebb565b91825461348d565b9055565b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881b9bdd08185c1c1c9bdd995960621b6044820152606490fd5b93929190936150f96142d7565b80516009546001600160801b039791881694929061516590602090615126906001600160a01b0316610829565b600e54601454604051638eb22cdd60e01b815260048101929092526001600160801b031660248201526001604482015292839190829081906064820190565b03915afa801561145d576151829160009161530f575b508661349a565b806152e057506103e886985b60208301516151a990828c16906001600160801b03166142fd565b16106152d457615240615219959493926151ca6148f18b8a6152519661532d565b6151d3816105ea565b6151de8b825461349a565b90556040518a81526001600160a01b038281169890976152269287928b91600091600080516020615e22833981519152919081906020820190565b0390a38a600e54896153d3565b6001600160a01b0316600090815260266020526040902090565b602754600052602052604060002090565b61525c86825461349a565b9055156152ac57506009547f30a8c4f9ab5af7e1309ca87c32377d1a83366c5990472dbf9d262450eae14e389061529b906001600160a01b0316610829565b915b604051878152921691602090a4565b7f30a8c4f9ab5af7e1309ca87c32377d1a83366c5990472dbf9d262450eae14e38909161529d565b50600096505050505050565b60208201516103e8916153099161372490615303906001600160801b0316612677565b8a613431565b9861518e565b615327915060203d81116125c4576125b58183611a0d565b3861517b565b91906153519061533b614267565b5060018060801b039182809216828651166142fd565b16835261536781602085019316828451166142fd565b16905290565b6001600160a01b039182168152911660208201526040810191909152606081019190915260800190565b1561539e57565b60405162461bcd60e51b815260206004820152600d60248201526c0a68e987440e8dede40daeac6d609b1b6044820152606490fd5b9091929360001461546b5750600954615425916020916153fb906001600160a01b0316610829565b604051627eeac760e11b815230600482015260248101929092529092839190829081906044820190565b03915afa92831561145d576105c0936154469260009161544d575b5061348d565b1015615397565b615465915060203d81116125c4576125b58183611a0d565b38615440565b6009549193509190615485906001600160a01b0316610829565b803b156105b0576154b3936000809460405196879586948593630208d92960e11b855230906004860161536d565b03925af1801561145d576154c45750565b806154d16105c0926119c4565b80610649565b6001600160801b03918216908216039190821161340f57565b156154f757565b60405162461bcd60e51b815260206004820152600e60248201526d14d1d30e881b5a5b881b1a5b5a5d60921b6044820152606490fd5b6025549093926001600160801b039160801c156156fd5761554c6142d7565b80519095906001600160801b031660095461557690602090615126906001600160a01b0316610829565b03915afa91821561145d5785916000936156dd575b5016906155979161349a565b6155a19083613431565b6020870180519092916155bd916001600160801b03169061345a565b9687946155c9836105ea565b858154906155d69161348d565b90556040518581526001600160a01b0393841694906000908690600080516020615e2283398151915290602090a3825161561c90838916906001600160801b03166154d7565b6001600160801b031683528051868316906001600160801b031690615640916154d7565b6001600160801b03168152516001600160801b0316166103e81115615664906154f0565b61566d906147d7565b6040519283528416917f6e853a5fd6b51d773691f542ebac8513c9992a51380d4c342031056a6411422890602090a4600954600e546001600160a01b0390911691823b156105b0576154b39260009283879360405196879586948593630208d92960e11b8552306004860161536d565b6156f691935060203d81116125c4576125b58183611a0d565b913861558b565b50600093505050565b6025546001600160801b0394939192919060801c156156fd576157276142d7565b80519091906001600160801b031660095461575190602090615126906001600160a01b0316610829565b03915afa91821561145d578891600093615961575b5016906157729161349a565b61577c9082613431565b6020830180519091615797916001600160801b03169061345a565b9687936157a3876105ea565b848154906157b09161348d565b90556040518481526001600160a01b03888116949093916000908690600080516020615e2283398151915290602090a382516157f890838916906001600160801b03166154d7565b6001600160801b031683528051868316906001600160801b03169061581c916154d7565b6001600160801b03168152516001600160801b0316166103e81115615840906154f0565b615849906147d7565b6040519283528416917f6e853a5fd6b51d773691f542ebac8513c9992a51380d4c342031056a6411422890602090a4600954600e546001600160a01b0390911691823b156105b0576158b99260009283889360405196879586948593630208d92960e11b8552306004860161536d565b03925af1801561145d5761594e575b506001600160a01b03811660009081526026602052604090206158f8602754809290600052602052604060002090565b5484111561592457506001600160a01b0316600090815260266020526040812061592190615240565b55565b61257f6159439260018060a01b03166000526026602052604060002090565b6150ac83825461348d565b806154d161595b926119c4565b386158c8565b61597a91935060203d81116125c4576125b58183611a0d565b9138615766565b908060209392818452848401376000828201840152601f01601f1916010190565b9035601e19823603018112156105b05701602081359101916001600160401b0382116105b05781360383136105b057565b906060615a076105e79380356159e88161059f565b6001600160a01b031684526020818101359085015260408101906159a2565b9190928160408201520191615981565b908135815261ffff80615a2c60208501611c62565b166020830152615a3e60408401611c62565b16604082015260c06060830135615a548161059f565b6001600160a01b03908116606084015281615aa4615a89615a7860808801886159a2565b60e0608089015260e0880191615981565b615a9660a08801886159a2565b9087830360a0890152615981565b940135615ab08161059f565b1691015290565b606060c435615ac58161059f565b6001600160a01b0390811683528060e435615adf8161059f565b1660208401528061010435615af38161059f565b16604084015261012435615b068161059f565b16910152565b60609081813591615b1c8361059f565b6001600160a01b039283168552826020820135615b388161059f565b166020860152826040820135615b4d8161059f565b1660408601520135615b068161059f565b91908082526020809201929160005b828110615b7b575050505090565b9091929382806001928735615b8f8161059f565b848060a01b03168152019501910192919092615b6d565b9082818152602080910193818360051b82010194846000925b858410615bd0575050505050505090565b909192939495968580615bf8600193601f19868203018852615bf28c886159a2565b90615981565b990194019401929594939190615bbf565b9295969094969391936040519660209663e5644d8b60e01b888a01528060a48a01608060248c01525260c48901959060005b89828210615ca5575050505087850360231990810160448a0152818652936001600160fb1b0382116105b05761461a99611eca988a9861076798615c969560051b809284830137018981036003190160648b01520191615b5e565b92858403016084860152615ba6565b808499600193949535615cb78161059f565b848060a01b031681520198019101919091615c3b565b15615cd457565b60405162461bcd60e51b815260206004820152600e60248201526d14d1d30e881b9bdd081d985b1a5960921b6044820152606490fd5b6034546001600160a01b03168015615d6857816000929160208493519201905af490615d34614948565b9115615d3c57565b612197615d4883614f49565b60405162461bcd60e51b81526020600482015291829160248301906106a0565b60405162461bcd60e51b815260206004820152601360248201527214d1d30e881b5bd91d5b19481b9bdd081cd95d606a1b6044820152606490fd5b6032546001600160a01b03168015615d6857816000929160208493519201905af490615d34614948565b6031546001600160a01b03168015615d6857816000929160208493519201905af490615d34614948565b6033546001600160a01b03168015615d6857816000929160208493519201905af490615d3461494856feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220cbe274fdc6a880c6f7d7c9008e088f59c117f36c92eb5ab19b7ef75420dd4a1164736f6c63430008120033", - "deployedBytecode": "0x6080604052600436101561001b575b361561001957600080fd5b005b60003560e01c8062a02a201461059a57806302ce728f1461059557806306fdde0314610590578063078dfbe71461058b578063095ea7b3146105865780630996efb7146105815780630c4e84f01461057c57806318160ddd146105775780631c9e379b146105725780631da8bf101461056d5780631ee9c8f21461056857806323b872dd1461056357806325384fd81461055e5780632a9399d914610559578063313ce56714610554578063331960ff1461054f57806334d441d01461054a5780633644e5151461054557806337b6b7b91461054057806338d52e0f1461053b5780633ba0b9a9146105365780633f741adb1461053157806340626d8b1461052c57806344de240a14610527578063473e3ce71461052257806348e4163e1461051d5780634d7f2a34146105185780634ddf47d4146105135780634e71e0c81461050e5780635224372c14610509578063529898f21461050457806352f353eb146104ff57806355140232146104fa57806355c2ab94146104f557806357935462146104f057806358db9afe146104eb5780635d5f73ef146104e65780635dfe04e8146104e15780636587adb8146104dc5780636c3d8b8f146104d757806370a08231146104d257806372778547146104cd57806374645ff3146104c85780637dc0d1d0146104c35780637ecebe00146104be5780637fa0b84e146104b9578063821226e8146104b45780638285ef40146104af5780638c5d0ed3146104aa5780638da5cb5b146104a5578063910dd7c8146104a0578063959916dc1461049b57806395d89b411461049657806399a97028146104915780639c5d71921461048c5780639e15e89f14610487578063a28e6b8214610482578063a9059cbb1461047d578063aa7d966514610478578063accfde4a14610473578063ae70702e1461046e578063af405b4c14610469578063b0e21e8a14610464578063b25ea8fb1461045f578063b27c0e741461045a578063bb4cfe3b14610455578063bf0b895814610450578063c861a5261461044b578063cce19f8114610446578063cd0211eb14610441578063ce8849ed1461043c578063d49dffa714610437578063d505accf14610432578063d8dfeb451461042d578063dd62ed3e14610428578063de40657714610423578063e0996cb61461041e578063e30c397814610419578063e5644d8b14610414578063e9a492521461040f578063ea64dd561461040a578063eec0f42e14610405578063f42760b714610400578063f4d93753146103fb578063f5b33dfa146103f6578063f8ba4cff146103f1578063f9557ccb146103ec5763ffe04c660361000e57612e4f565b612e1d565b612e04565b612ddb565b612d91565b612d73565b612d55565b612d37565b612cb3565b612c2a565b612c01565b612be3565b612bba565b612b7e565b612b55565b612aa7565b6129c4565b61299b565b612934565b6128e0565b6128b7565b6127e0565b6127c2565b612787565b6126fa565b6126dc565b6125d6565b6124c5565b612211565b612074565b611ecf565b611e25565b611de7565b611dc9565b611d9e565b611d09565b611cec565b611c71565b611c0d565b611bef565b611bbd565b611b9f565b611b75565b611b38565b611b0f565b611a2e565b6118fa565b61187f565b611856565b61180d565b611775565b61174c565b6116a9565b61168b565b611661565b61163a565b611613565b6115f5565b61157c565b61149d565b611246565b611228565b6111eb565b6111cd565b6111af565b611191565b61116d565b61114f565b611126565b611108565b6110e5565b6110c7565b6110a9565b611008565b610f30565b610eda565b610d93565b610c98565b610b7d565b610af0565b610acf565b6109d8565b61094e565b6108ec565b6107a9565b6106d6565b610654565b610604565b6001600160a01b038116036105b057565b600080fd5b35906105c08261059f565b565b60409060031901126105b0576004356105da8161059f565b906024356105e78161059f565b90565b6001600160a01b0316600090815260016020526040902090565b346105b0576020610640610617366105c2565b6001600160a01b0391821660009081526003855260408082209290931681526020919091522090565b54604051908152f35b60009103126105b057565b346105b05760003660031901126105b057604061066f6138fc565b825191151582526020820152f35b60005b8381106106905750506000910152565b8181015183820152602001610680565b906020916106b98151809281855285808601910161067d565b601f01601f1916010190565b9060206105e79281815201906106a0565b346105b05760008060031936011261079c57808060018060a01b03600b541660405160208101906306fdde0360e01b825260048152610714816119a9565b51915afa610720614948565b9150156107855761076761077561073961078193614a64565b60405173546170696f63612053696e67756c61726974792d60601b6020820152928391603483015b90614931565b03601f198101835282611a0d565b604051918291826106c5565b0390f35b50610781610767610775610797614978565b610739565b80fd5b801515036105b057565b346105b05760603660031901126105b0576004356107c68161059f565b602435906107d38261079f565b604435916107e08361079f565b6005546001600160a01b0391906107fa9083163314612e6d565b156108d3578116918215908115916108cb575b501561088e5760055461087c9290610835906001600160a01b03165b6001600160a01b031690565b7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b600680546001600160a01b0319169055005b60405162461bcd60e51b81526020600482015260156024820152744f776e61626c653a207a65726f206164647265737360581b6044820152606490fd5b90503861080d565b60068054919092166001600160a01b0319909116179055005b346105b05760403660031901126105b05761091660043561090c8161059f565b60243590336141ee565b602060405160018152f35b9181601f840112156105b0578235916001600160401b0383116105b057602083818601950101116105b057565b346105b0576101803660031901126105b05760243561096c8161059f565b604435906001600160401b0382116105b05761098f610019923690600401610921565b906064359261099d8461059f565b610164359361014435936101243593610104359360e4359360c4359360a4359360843593600435612eb8565b6004359060098210156105b057565b346105b05760403660031901126105b0576109f16109c9565b6024356109fd8161079f565b6008546001600160a01b03163303610a9357610a8282610a31610a2c610a25610019966118e1565b5460ff1690565b151590565b610a40841515918214156133a0565b610a4c610a25836118e1565b610a55836118d2565b1515827feeec81de25875ce1725479bb76f720a8defdb43dea041919ae37bb4aae9847c0600080a46118e1565b9060ff801983541691151516179055565b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881d5b985d5d1a1bdc9a5e995960621b6044820152606490fd5b346105b05760003660031901126105b057602060255460801c604051908152f35b346105b05760203660031901126105b057600435610b0d8161059f565b60018060a01b031660005260186020526020604060002054604051908152f35b60ff8116036105b057565b60e09060031901126105b057600435610b508161059f565b90602435610b5d8161059f565b906044359060643590608435610b7281610b2d565b9060a4359060c43590565b346105b057610b8b36610b38565b9592809594959291924211610c535761001996610c4e93610c3b93610c2e878a610c268b610767610c3399610bbf86614173565b60405195869460208601988991959493909260c09360e08401977f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d685526000602086015260018060a01b038092166040860152166060840152608083015260a08201520152565b51902061411d565b6140a5565b919091613f8a565b6001600160a01b03838116911614613f25565b61419b565b60405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b346105b05760c03660031901126105b057600435610cb58161059f565b608435610cc18161059f565b60a435906001600160401b0382116105b05761078192610d43610d4892610767610cf2610d57963690600401610921565b604051958694630f74e47960e11b602087015260018060a01b0380921660248701526024356044870152604435606487015260643560848701521660a485015260c060c485015260e4840191615981565b615d0a565b60208082518301019101613a38565b6040519081529081906020820190565b60609060031901126105b057600435610d7f8161059f565b90602435610d8c8161059f565b9060443590565b346105b057610ddb600080516020615e22833981519152610db336610d67565b9291939083610dea575b6040519384526001600160a01b039081169416929081906020820190565b0390a360405160018152602090f35b610df3856105ea565b54610e0085821015613cfe565b6001600160a01b038281169186918816839003610e20575b505050610dbd565b6001600160a01b03881660009081526002602090815260408083203384529091529020610e6493610e5f91548460018201610e8c575b50501515613d43565b61348d565b610e6d866105ea565b55610e77816105ea565b610e8285825461349a565b9055388481610e18565b81610e5f82610e9c941015613d88565b6001600160a01b038b166000908152600260205260409020610ed29033905b9060018060a01b0316600052602052604060002090565b553884610e56565b346105b05760003660031901126105b0576032546040516001600160a01b039091168152602090f35b908160609103126105b05790565b908160e09103126105b05790565b60809060a31901126105b05760a490565b610120806003193601126105b057600435610f4a8161059f565b60443590610f578261079f565b6001600160401b03906064358281116105b057610f78903690600401610f03565b936084359283116105b057610767610ffd61001996610feb610fa1610d43973690600401610f11565b91610fab36610f1f565b95604051998a98632a9399d960e01b60208b015260018060a01b031660248a015260243560448a01521515606489015260848801526101448701906159d3565b8581036023190160a487015290615a17565b9160c4840190615b0c565b346105b05760008060031936011261079c57808060018060a01b03600d5416604051602081019063313ce56760e01b825260048152611046816119a9565b51915afa90611053614948565b918061109e575b156110925760208280518101031261079c5750602061078191015161107e81610b2d565b60405160ff90911681529081906020820190565b5050610781601261107e565b50602082511461105a565b346105b05760003660031901126105b0576020601354604051908152f35b346105b05760003660031901126105b0576020601954604051908152f35b346105b05760003660031901126105b0576020611100613be4565b604051908152f35b346105b05760003660031901126105b0576020601254604051908152f35b346105b05760003660031901126105b057600d546040516001600160a01b039091168152602090f35b346105b05760003660031901126105b0576020601154604051908152f35b346105b05760603660031901126105b0576020611100604435602435600435613547565b346105b05760003660031901126105b0576020601654604051908152f35b346105b05760003660031901126105b0576020600e54604051908152f35b346105b05760003660031901126105b0576020601554604051908152f35b346105b05760203660031901126105b0576004356112088161059f565b60018060a01b031660005260176020526020604060002054604051908152f35b346105b05760003660031901126105b0576020602954604051908152f35b346105b05760203660031901126105b0576004356001600160401b0381116105b057611276903690600401610921565b9060ff602354166114625761128d91810190614b62565b600a80546001600160a01b0319166001600160a01b038b16179055989b919a989990989296939593926040519263de40657760e01b845260208460048160018060a01b03809e165afa998a1561145d57806114039f8180916113786113fe9f8f90848f611326826113c19f94819560009161142f575b5060098054919092166001600160a01b03166001600160a01b0319909116179055565b600a546113619061133f906001600160a01b0316610829565b600580546001600160a01b0319166001600160a01b0392909216919091179055565b1615159182611423575b82611415575b5050614c12565b1695169316911692909160018060a01b03928380928160018060a01b03199716876031541617603155168560335416176033551683603254161760325516906034541617603455565b9391929060018060a01b0380948160018060a01b0319971687600d541617600d551685600b541617600b55600e55600c551690600f541617600f55565b614cb2565b610019600160ff196023541617602355565b9091501615158f8490611371565b8d82161515925061136b565b611450915060203d8111611456575b6114488183611a0d565b810190614bfd565b38611303565b503d61143e565b61386a565b60405162461bcd60e51b815260206004820152601360248201527213585c9ad95d0e881a5b9a5d1a585b1a5e9959606a1b6044820152606490fd5b346105b05760008060031936011261079c576006546001600160a01b03163381900361153857600554611525919081906114df906001600160a01b0316610829565b7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08580a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b600680546001600160a01b031916905580f35b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b346105b0576115d06107676115cb61159336610d67565b6040516314890dcb60e21b60208201526001600160a01b03938416602482015292909116604483015260648201529182906084820190565b615da3565b6040818051810103126105b05780604060208193015191015182519182526020820152f35b346105b05760003660031901126105b0576020602154604051908152f35b346105b05760003660031901126105b05760206001600160401b03602f5416604051908152f35b346105b05760003660031901126105b05760206001600160401b03602d5416604051908152f35b346105b05760003660031901126105b0576020602d546001600160401b036040519160401c168152f35b346105b05760003660031901126105b0576020601c54604051908152f35b346105b05760a03660031901126105b0576004356116c68161059f565b6064356116d28161059f565b608435906001600160401b0382116105b05761078192610d43610d4892610767611703610d57963690600401610921565b604051958694632c6dcd7f60e11b602087015260018060a01b0380921660248701526024356044870152604435606487015216608485015260a060a485015260c4840191615981565b346105b05760003660031901126105b0576031546040516001600160a01b039091168152602090f35b346105b05760003660031901126105b05761178e614248565b506080611799614316565b509350505050604051916001600160401b0380825116845260208201511660208401526040600180861b039101511660408301526060820152f35b60809060031901126105b0576004356117ec8161059f565b906024356117f98161059f565b906044356118068161079f565b9060643590565b346105b0576020611100611820366117d4565b9260076000939293526007865261183f60ff6040600020541615614fd9565b6118498482615016565b6118516147fe565b6150ec565b346105b05760003660031901126105b057600a546040516001600160a01b039091168152602090f35b346105b05760203660031901126105b05760043561189c8161059f565b60018060a01b031660005260016020526020604060002054604051908152f35b634e487b7160e01b600052602160045260246000fd5b600911156118dc57565b6118bc565b60098110156118dc576000526007602052604060002090565b346105b05760203660031901126105b0576119136109c9565b60098110156118dc576000526007602052602060ff604060002054166040519015158152f35b90600182811c92168015611969575b602083101461195357565b634e487b7160e01b600052602260045260246000fd5b91607f1691611948565b634e487b7160e01b600052604160045260246000fd5b606081019081106001600160401b038211176119a457604052565b611973565b604081019081106001600160401b038211176119a457604052565b6001600160401b0381116119a457604052565b60c081019081106001600160401b038211176119a457604052565b60e081019081106001600160401b038211176119a457604052565b90601f801991011681019081106001600160401b038211176119a457604052565b346105b05760008060031936011261079c5760405181601054611a5081611939565b80845290600190818116908115611ae75750600114611a8e575b61078184611a7a81880382611a0d565b6040519182916020835260208301906106a0565b60108352602094507f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae6725b828410611ad4575050508161078193611a7a9282010193611a6a565b8054858501870152928501928101611ab8565b6107819650611a7a9450602092508593915060ff191682840152151560051b82010193611a6a565b346105b05760003660031901126105b057600f546040516001600160a01b039091168152602090f35b346105b05760203660031901126105b057600435611b558161059f565b60018060a01b031660005260046020526020604060002054604051908152f35b346105b05760403660031901126105b057610916600435611b958161059f565b602435903361419b565b346105b05760003660031901126105b0576020602e54604051908152f35b346105b05760003660031901126105b057601454604080516001600160801b038316815260809290921c602083015290f35b346105b05760003660031901126105b0576020601b54604051908152f35b346105b05760003660031901126105b0576005546040516001600160a01b039091168152602090f35b6001600160401b0381116119a457601f01601f191660200190565b6024359061ffff821682036105b057565b359061ffff821682036105b057565b346105b05760403660031901126105b0576004356001600160401b0381116105b057366023820112156105b0578060040135611cac81611c36565b90611cba6040519283611a0d565b80825236602482850101116105b057602081600092602461001996018386013783010152611ce6611c51565b90613dcf565b346105b05760003660031901126105b05760208054604051908152f35b346105b05760008060031936011261079c57808060018060a01b03600b541660405160208101906395d89b4160e01b825260048152611d47816119a9565b51915afa611d53614948565b915015611d8757610767610775611d6c61078193614a64565b60405162746d2d60e81b602082015292839160238301610761565b50610781610767610775611d99614978565b611d6c565b346105b05760403660031901126105b0576020611100600435611dc08161059f565b60243590613b10565b346105b05760003660031901126105b0576020602c54604051908152f35b346105b05760403660031901126105b0576060611e12600435611e098161059f565b6024359061362b565b9060405192835260208301526040820152f35b346105b05760803660031901126105b057600435611e428161059f565b602435611e4e8161059f565b60443590611e5b8261059f565b606435926001600160401b0384116105b057610767611eca92611e85610019963690600401610921565b60405163514735c160e11b60208201526001600160a01b03958616602482015292851660448401529390951660648201526080608482015293849260a4840191615981565b615dcd565b346105b05760403660031901126105b057600435611eec8161059f565b6024358015801590611f96575b611f2c575b6040519081526001600160a01b03909116903390600080516020615e22833981519152908060208101610ddb565b611f35336105ea565b54611f4282821015613cfe565b6001600160a01b03831690829033839003611f60575b505050611efe565b610e5f611f6e931515613d43565b611f77336105ea565b55611f81826105ea565b611f8c82825461349a565b9055388181611f58565b50336001600160a01b03831614611ef9565b9181601f840112156105b0578235916001600160401b0383116105b0576020808501948460051b0101116105b057565b906040820191604081528151809352606081019260208093019060005b81811061205e57505050818184039101528251908183528083019281808460051b8301019501936000915b8483106120305750505050505090565b909192939495848061204e600193601f198682030187528a516106a0565b9801930193019194939290612020565b8251151586529484019491840191600101611ff5565b346105b0576040806003193601126105b057600480356001600160401b0381116105b0576120a59036908301611fa8565b92906024356120b38161079f565b6002603054146121a25760026030556120cb85614e74565b936120d586614e9c565b95600090815b8181106120fc578888610781896120f26001603055565b5192839283611fd8565b828061210983858a614ee6565b906121188b5180938193614f27565b0390305af4612125614948565b9080158061219b575b61217457829161214f6121549261214861216f968e614f35565b9015159052565b614f49565b61215e828c614f35565b52612169818b614f35565b50614164565b6120db565b888661219761218285614f49565b925162461bcd60e51b815292839283016106c5565b0390fd5b508661212e565b825162461bcd60e51b8152602081860152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606490fd5b608435906001600160401b03821682036105b057565b60a435906001600160401b03821682036105b057565b346105b05760e03660031901126105b0576024356004356044356064356122366121e5565b9061223f6121fb565b9060c4359361225960018060a01b03600554163314612e6d565b8061248d575b508061242f575b506001600160401b039182811690816123ce575b50508181168061235c575b50505080612324575b50806122dd575b508061229d57005b806122af620186a06100199310615ccd565b806021547f1f1d0e9e5e3fd195010504141e7472fc7f53e44d7cd3f236f0892778039c6326600080a3602155565b806122f0620186a061231e931115615ccd565b806029547f1a98b2490874ba87102ae05e5b66fbe02edfcfb7e8b4e2d60f9aef620de5e337600080a3602955565b38612295565b8061235691602e547f6bdc0e1a8f6a69c7dcb57e254165094714bb2a8730e2fedd8c6e9b71e67478b5600080a3602e55565b3861228e565b6123c692602d546123708282168411615ccd565b60401c167fb02a4833a4686ad41ec77a1e91a97a505459a34966985bf11c59b1e01852e4a6600080a3602d805467ffffffffffffffff60401b191660409290921b67ffffffffffffffff60401b16919091179055565b388080612285565b6124289184602d546123e6828260401c168410615ccd565b167f6d780269adaf7a0d9858a89a8c090b0b3add5f7088ccac6f619ff2b22987e7d5600080a36001600160401b03166001600160401b0319602d541617602d55565b388061227a565b80612446670de0b6b3a76400006124749310615ccd565b80602b547f4d5fa9a75b98ca1386ef794acdb2601c953e99a9c7a94ed351a46e06dc1bab28600080a3602b55565b612487612482602b54613477565b602c55565b38612266565b806124bf91602a547fa55fca071799e1b20f7cdcdf447fcc08c886bdd0cb741bf8862a311921bbb388600080a3602a55565b3861225f565b346105b05760403660031901126105b0576004356124e28161059f565b61254460243591600e5483146000146125cb576020602754935b600954612511906001600160a01b0316610829565b604051627eeac760e11b81526001600160a01b038516600482015260248101929092529093849190829081906044820190565b03915afa801561145d5761078193610d5793600092612595575b5061257f61258e929360018060a01b03166000526026602052604060002090565b90600052602052604060002090565b549061349a565b61258e92506125bd61257f9160203d81116125c4575b6125b58183611a0d565b810190613a38565b925061255e565b503d6125ab565b6020602854936124fc565b346105b05760008060031936011261079c57610d576107819160018060a01b0361260581600554163314612e6d565b600a5481166001600160a01b03166024549092906001600160801b039060801c1661263f575b5050612636816105ea565b5490339061552d565b6126476147fe565b7fbe641c3ffc44b2d6c184f023fa4ed7bda4b6ffa71e03b3c98ae0c776da1f17e761268361267760245460801c90565b6001600160801b031690565b9261268d856105ea565b61269885825461349a565b90558416918281600080516020615e22833981519152604051806126c189829190602083019252565b0390a3602480546001600160801b0316905580a3388061262b565b346105b05760003660031901126105b0576020601a54604051908152f35b346105b05760403660031901126105b0576024356127178161059f565b61272c60018060a01b03600554163314612e6d565b60008080808094600435905af1612741614948565b501561274a5780f35b60405162461bcd60e51b815260206004820152601560248201527429a3a61d103a3930b739b332b9103330b4b632b21760591b6044820152606490fd5b346105b05760003660031901126105b0576060602454604051906001600160401b0380821683528160401c16602083015260801c6040820152f35b346105b05760003660031901126105b0576020601e54604051908152f35b346105b05760403660031901126105b05760255460095461285690602090612810906001600160a01b0316610829565b6014546001600160801b0316906040518080958194638eb22cdd60e01b8352602435600484019081526001600160801b0390911660208201526001604082015260600190565b03915afa91821561145d5761288f61288761078194610d5794600091612899575b506001600160801b03841661349a565b600435613431565b9060801c9061345a565b6128b1915060203d81116125c4576125b58183611a0d565b38612877565b346105b05760003660031901126105b0576033546040516001600160a01b039091168152602090f35b346105b05761001961076761292f6128f736610d67565b60405163cce19f8160e01b60208201526001600160a01b03938416602482015292909116604483015260648201529182906084820190565b615df7565b346105b057602061110061298d61294a366117d4565b60405163cd0211eb60e01b888201526001600160a01b0394851660248201529390921660448401521515606483015260848083019190915281526115cb816119d7565b828082518301019101613a38565b346105b05760003660031901126105b0576008546040516001600160a01b039091168152602090f35b610140806003193601126105b057600435906129df8261059f565b606435906129ec8261079f565b6001600160401b03926084358481116105b057612a0d903690600401610f03565b9360a4359081116105b057612a26903690600401610f11565b9360803660c31901126105b05761001994612a89612a9b92610d439560405197889663d49dffa760e01b602089015260018060a01b03166024880152602435604488015260443560648801521515608487015260a48601526101648501906159d3565b8381036023190160c485015290615a17565b61076760e48301615ab7565b346105b057612ab536610b38565b9592809594959291924211610c535761001996612b5093610c3b93610c2e878a610c268b610767610c3399612ae986614173565b60405195869460208601988991959493909260c09360e08401977f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e26685526000602086015260018060a01b038092166040860152166060840152608083015260a08201520152565b6141ee565b346105b05760003660031901126105b057600b546040516001600160a01b039091168152602090f35b346105b0576020610640612b91366105c2565b6001600160a01b0391821660009081526002855260408082209290931681526020919091522090565b346105b05760003660031901126105b0576009546040516001600160a01b039091168152602090f35b346105b05760003660031901126105b0576020601d54604051908152f35b346105b05760003660031901126105b0576006546040516001600160a01b039091168152602090f35b346105b05760803660031901126105b0576001600160401b036004358181116105b057612c5b903690600401611fa8565b906024358381116105b057612c74903690600401611fa8565b906044358581116105b057612c8d903690600401611fa8565b9290916064359687116105b057612cab610019973690600401611fa8565b969095615c09565b346105b05760a03660031901126105b057610019600435612cd38161059f565b60243590612ce08261059f565b60443590612ced8261079f565b604051926374d2492960e11b602085015260018060a01b03809216602485015216604483015215156064820152606435608482015260843560a482015260a4815261292f816119f2565b346105b05760003660031901126105b0576020601f54604051908152f35b346105b05760003660031901126105b0576020600c54604051908152f35b346105b05760003660031901126105b0576020602b54604051908152f35b346105b0576020612dd4611100612da736610d67565b90600860009593955260078652612dc660ff6040600020541615614fd9565b612dce6147fe565b84615706565b8092615016565b346105b05760003660031901126105b0576034546040516001600160a01b039091168152602090f35b346105b05760003660031901126105b0576100196147fe565b346105b05760003660031901126105b057602554604080516001600160801b038316815260809290921c602083015290f35b346105b05760003660031901126105b0576020602a54604051908152f35b15612e7457565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b98969492909a9997959391600160a01b600190039182600554163314612edd90612e6d565b620186a09c612eee8e8d111561316e565b6020549b8060009d7fc353b09af857951dccce61b43a5854fc45beceed36c50e5d4cc2e71858a8e0df8f80a3602055838116613125575b50806130f1575b50508116908161308a575b50508061306f575b5080613054575b508061303a575b5080613013575b5080612fec575b5080612fb4575b505080612f8b575b505080612f745750565b6105c090612f86601e54821015613339565b601f55565b612f9a612fad9282111561316e565b612fa8601f548211156132df565b601e55565b3880612f6a565b80612fe5927fae6e0ab3b95f0a53ff9660a390ccedcbbf1f2355dce974a9841af106fddcfaba6016549180a3601655565b3880612f62565b80612ffb8661300d931061316e565b613008601b54821161316e565b601c55565b38612f5b565b8061302287613034931061316e565b61302f601c54821061316e565b601b55565b38612f54565b806130498861304e931061316e565b601d55565b38612f4d565b806130648961306993111561316e565b601a55565b38612f46565b8061307f8a61308493111561316e565b601955565b38612f3f565b6008546130ea92906130a4906001600160a01b0316610829565b7f5a62d22209e370e38eea92cfddcd228e656e6ec139243392a760a7769f5877fd8b80a3600880546001600160a01b0319166001600160a01b0392909216919091179055565b3880612f37565b6130fa91613202565b7fa6f004921c944d4b8bf6e38462b00f36a58d62495d56b51f571ab78f732c98158980a13880612f2c565b600f80546001600160a01b0319166001600160a01b039092169190911790557f0b2d6eb667d0522c3eb86e4288afecae6c11591ffd1345d4d12407e0598bca9b8b80a138612f25565b1561317557565b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881b9bdd081d985b1a59607a1b6044820152606490fd5b601f81116131ba575050565b6000906010825260208220906020601f850160051c830194106131f8575b601f0160051c01915b8281106131ed57505050565b8181556001016131e1565b90925082906131d8565b91906001600160401b0381116119a45761322681613221601054611939565b6131ae565b6000601f821160011461326057819293600092613255575b50508160011b916000199060031b1c191617601055565b01359050388061323e565b6010600052601f198216937f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae67291805b8681106132c757508360019596106132ad575b505050811b01601055565b0135600019600384901b60f8161c191690553880806132a2565b9092602060018192868601358155019401910161328f565b156132e657565b60405162461bcd60e51b815260206004820152602560248201527f4d61726b65743a20636f6c6c61746572616c697a6174696f6e5261746520746f6044820152646f2062696760d81b6064820152608490fd5b1561334057565b60405162461bcd60e51b815260206004820152603260248201527f4d61726b65743a206c69717569646174696f6e436f6c6c61746572616c697a616044820152711d1a5bdb94985d19481d1bdbc81cdb585b1b60721b6064820152608490fd5b156133a757565b60405162461bcd60e51b81526020600482015260126024820152714d61726b65743a2073616d6520737461746560701b6044820152606490fd5b634e487b7160e01b600052601160045260246000fd5b90620186a09182810292818404149015171561340f57565b6133e1565b90670de0b6b3a76400009182810292818404149015171561340f57565b8181029291811591840414171561340f57565b634e487b7160e01b600052601260045260246000fd5b8115613464570490565b613444565b604d811161340f57600a0a90565b90670de0b6b3a764000091820391821161340f57565b9190820391821161340f57565b9190820180921161340f57565b8181039291600013801582851316918412161761340f57565b906509184e72a0009182810292818405149015171561340f57565b90670de0b6b3a76400009182810292818405149015171561340f57565b818102929160008212600160ff1b82141661340f57818405149015171561340f57565b811561346457600160ff1b811460001983141661340f570590565b600160ff1b811461340f5760000390565b60145491929190613562906001600160801b03831690613431565b9060801c9081156134645761358f91613580910493601f5490613431565b61358983613469565b9061345a565b90818310613623576135f46135ee6135e96135ad6135f9958761348d565b936135e46135de6135d5601e546135cf6135c686613469565b6021549061349a565b90613431565b61358984613469565b91613469565b6134a7565b6134c0565b916134db565b61351b565b600081121561361d5761360b90613536565b905b808211613618575090565b905090565b9061360d565b505050600090565b6001600160a01b038116600090815260176020526040812054919392909180156137a5576136d99061365b614267565b50613664614316565b50505050509490506136778415156139ec565b60095460209061368f906001600160a01b0316610829565b600c546001600160a01b038a1660009081526018602052604080822054905163442c159960e01b815260048101939093526024830152604482015294859190829081906064820190565b03915afa92831561145d5761377c9561358961267760206137406137298a61372461371b6137769c61374f9a8c91613788575b50602254620186a090046135cf565b601e5490613431565b61345a565b85519098906135cf906001600160801b0316612677565b9301516001600160801b031690565b908282106137805750035b6001600160a01b03909516600090815260186020526040902090565b54613a47565b9091565b91505061375a565b61379f9150873d81116125c4576125b58183611a0d565b3861370c565b505080919250918190565b91908260409103126105b057602082516137c98161079f565b92015190565b6020808252600091601054916137e483611939565b92838284015260019081811690816000146138475750600114613809575b5050505090565b929350601060005280600020926000935b8585106138335750505060409250010138808080613802565b80548585016040015293820193810161381a565b925050506040935060ff929192191683830152151560051b010138808080613802565b6040513d6000823e3d90fd5b1561387d57565b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881c985d19481d1bdbc81bdb1960621b6044820152606490fd5b156138c057565b60405162461bcd60e51b81526020600482015260146024820152734d61726b65743a20696e76616c6964207261746560601b6044820152606490fd5b600f54613911906001600160a01b0316610829565b6040805163d6d7d52560e01b81529291839081600081613933600482016137cf565b03925af1801561145d5760009283916139b8575b509082156139935761395a8215156138b9565b61396382601155565b817f9f9192b5edb17356c524e08d9e025c8e2f6307e6ea52fb7968faa3081f51c3c8600080a25b6105c042601355565b90506139af6139a76013546012549061349a565b421115613876565b6011549061398a565b90506139dc91925060403d81116139e5575b6139d48183611a0d565b8101906137b0565b91909138613947565b503d6139ca565b156139f357565b60405162461bcd60e51b815260206004820152601e60248201527f4d61726b65743a2065786368616e676552617465206e6f742076616c696400006044820152606490fd5b908160209103126105b0575190565b613a9c6020831592613a5984156139ec565b600954600c5460405163442c159960e01b81526004810191909152602481019290925260006044830152909283916001600160a01b031690829081906064820190565b03915afa801561145d57613abc91600091613ad6575b5060225490613431565b906134645704620186a0613ad2601e5483613431565b0491565b613aee915060203d81116125c4576125b58183611a0d565b38613ab2565b9190916000838201938412911290801582169115161761340f57565b90613b34613b52916137768460018060a01b03166000526018602052604060002090565b6001600160a01b039093166000908152601760205260409020909291565b548015613623578215613623578281106136235781811015613bdb5782613b9b613b96613ba195610e5f6135899561288f6014549160018060801b03831690613431565b6133f7565b9261348d565b613bcf601b5491613bca613bc1601c5492613bbc84876134a7565b6134f8565b620186a0900590565b613af4565b90808212613618575090565b505050601b5490565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03161480613cd5575b15613c3f577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f000000000000000000000000000000000000000000000000000000000000000082527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a08152613ccf816119d7565b51902090565b507f00000000000000000000000000000000000000000000000000000000000000004614613c16565b15613d0557565b60405162461bcd60e51b815260206004820152601660248201527545524332303a2062616c616e636520746f6f206c6f7760501b6044820152606490fd5b15613d4a57565b60405162461bcd60e51b815260206004820152601660248201527545524332303a206e6f207a65726f206164647265737360501b6044820152606490fd5b15613d8f57565b60405162461bcd60e51b815260206004820152601860248201527745524332303a20616c6c6f77616e636520746f6f206c6f7760401b6044820152606490fd5b6101009081818051810103126105b0576020810151613ded8161079f565b604082015192613dfc8461059f565b606083015194613e0b8661059f565b60808401519460a085015160c086015193613e2585610b2d565b60e08701519601516001600160a01b0392831698831696428310610c5357613ee795613edb8a8c610c268199610767613ee0998f8f600014613efe577f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e266965b613e8d87614173565b60408051602081019a8b5261ffff909716908701526001600160a01b03978816606087015296909116608085015260a084015260c083019490945260e0820193909352918290610100820190565b613f71565b1614613f25565b15613ef5576105c0926141ee565b6105c09261419b565b7f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d696613e84565b15613f2c57565b60405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152606490fd5b916105e79391610c33936140a5565b600511156118dc57565b613f9381613f80565b80613f9b5750565b613fa481613f80565b60018103613fec5760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b6044820152606490fd5b613ff581613f80565b600281036140425760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606490fd5b8061404e600392613f80565b1461405557565b60405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608490fd5b9291906fa2a8918ca85bafe22016d0b997e4df60600160ff1b0383116141115791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa1561145d5781516001600160a01b0381161561410b579190565b50600190565b50505050600090600390565b614125613be4565b9060405190602082019261190160f01b84526022830152604282015260428152608081018181106001600160401b038211176119a45760405251902090565b600019811461340f5760010190565b6001600160a01b0316600090815260046020526040902080549061419682614164565b905590565b6001600160a01b03908116600081815260036020908152604080832095909416808352949052918220849055907fe50de2333c10a9502fcb1d8ae13a51bbf423153dfc63c2b8997665b32154afc39080a4565b6001600160a01b0390811660008181526002602090815260408083208686168452825290912091937f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259391928690556040519586521693a3565b6040519061425582611989565b60006040838281528260208201520152565b60405190614274826119a9565b60006020838281520152565b6040519061428d82611989565b8160406024546001600160401b03808216845281831c16602084015260801c910152565b604051906142be826119a9565b6014546001600160801b038116835260801c6020830152565b604051906142e4826119a9565b6025546001600160801b038116835260801c6020830152565b6001600160801b03918216908216019190821161340f57565b61431e614248565b50614327614267565b50614330614267565b50614339614280565b906143426142b1565b9061434b6142d7565b906143b060008061436661082960095460018060a01b031690565b600e54865160405163442c159960e01b808252600482018490526001600160801b039092166024820152600060448201529296602096919590939092918790829081906064820190565b03818b5afa801561145d576143e19184916147ba575b508a516143db906001600160801b0316612677565b9061349a565b80614797575081945b8a6144176144116144058a8a9401516001600160401b031690565b6001600160401b031690565b4261348d565b96871561476f57506001600160401b03428116898e01528b8901516001600160801b039995919491939192908a161561471157508b518d518692918a91614472916001600160401b03909116906001600160801b0316613431565b9061447c91613431565b8d51670de0b6b3a76400009091049b908e906144a4908d8f16906001600160801b03166142fd565b6001600160801b039081169091528d5160405193845260048401959095529390931660248201526000604482015291829060649082905afa801561145d578461455c6145388f978f613724908f926126776135cf9161374061452361457e9b61452f9d8f916146f4575b5086516143db906001600160801b0316612677565b9b8c97601a5490613431565b620186a0900490565b9a8b16916145696040890161455c85614557835160018060801b031690565b6142fd565b6001600160801b03169052565b8d0180519092906001600160801b03166142fd565b806146d15750945b602a54868181101561462a57936137246145ea936145d16144056145dc6145d66145c3886137246145be6145f79d9e6144059c61348d565b613414565b946145d1602e549680613431565b613431565b8461349a565b94516001600160401b031690565b6001600160401b03168a52565b88516001600160401b0316602d546001600160401b03169180831691161061461d575b50565b6001600160401b03168852565b919050602b5480831161463f575b5050505050565b6146bf946145d161440561468261467c61466e6146656145be613724986146909b61348d565b602c549061345a565b966145d1602e549880613431565b8661349a565b92516001600160401b031690565b602d546146a89060401c6001600160401b0316614405565b8082116146c9575b50166001600160401b03168952565b8738808080614638565b9050386146b0565b8a516146ee9250613724906145be906001600160801b0316612677565b94614586565b61470b9150843d86116125c4576125b58183611a0d565b3861450e565b985050509650929798935050945061473082516001600160401b031690565b602f546001600160401b03169180831691160361475a575b5094936147536142d7565b9383929190565b6001600160401b031681526001945038614748565b9a505050509550969350505050926147856142b1565b9261478e6142d7565b92809281929190565b89516147b49190613724906145be906001600160801b0316612677565b946143ea565b6147d19150883d8a116125c4576125b58183611a0d565b386143c6565b805160209091015160801b6001600160801b0319166001600160801b039190911617602555565b6105c06148ca6148f161480f614316565b9397949593909290156148f6575050506001600160401b03602f54166000807f33af5ce86e8438eff54589f85332916444457dfa8685493fbd579b809097026b6020604051838152a45b6148836001600160401b038251166001600160401b03166001600160401b03196024541617602455565b6020810151602480546040938401516001600160401b039091169290931b67ffffffffffffffff60401b169190911760809290921b6001600160801b031916919091179055565b805160209091015160801b6001600160801b0319166001600160801b039190911617601455565b6147d7565b7f33af5ce86e8438eff54589f85332916444457dfa8685493fbd579b809097026b60206001600160401b0386511694604051908152a4614859565b906149446020928281519485920161067d565b0190565b3d15614973573d9061495982611c36565b916149676040519384611a0d565b82523d6000602084013e565b606090565b60405190614985826119a9565b60038252623f3f3f60e81b6020830152565b634e487b7160e01b600052603260045260246000fd5b9081518110156149be570160200190565b614997565b60ff1660ff811461340f5760010190565b906149de82611c36565b6149eb6040519182611a0d565b82815280926149fc601f1991611c36565b0190602036910137565b6020818303126105b0578051906001600160401b0382116105b0570181601f820112156105b0578051614a3881611c36565b92614a466040519485611a0d565b818452602082840101116105b0576105e7916020808501910161067d565b805160408110614a825750806020806105e793518301019101614a06565b602092908303614b57576000805b60ff81168581109081614b35575b5015614ab257614aad906149c3565b614a90565b92614ac060ff8095166149d4565b92825b85811687811080614b16575b15614b0b579081614b00614af7614ae9614b0695886149ad565b516001600160f81b03191690565b871a91886149ad565b536149c3565b614ac3565b505094505050905090565b506001600160f81b0319614b2d614ae983876149ad565b161515614acf565b6001600160f81b03199150614b4e90614ae990876149ad565b16151538614a9e565b9150506105e7614978565b90816101a09103126105b0578035614b798161059f565b916020820135614b888161059f565b916040810135614b978161059f565b91614ba4606083016105b5565b91614bb1608082016105b5565b91614bbe60a083016105b5565b9160c081013591614bd160e083016105b5565b9161010081013591614be661012083016105b5565b916101408101359161018061016083013592013590565b908160209103126105b057516105e78161059f565b15614c1957565b60405162461bcd60e51b815260206004820152600d60248201526c29a3a61d103130b2103830b4b960991b6044820152606490fd5b15614c5557565b60405162461bcd60e51b815260206004820152602f60248201527f53474c3a206c69717569646174696f6e436f6c6c61746572616c697a6174696f60448201526e1b94985d19481b9bdd081d985b1a59608a1b6064820152608490fd5b614ccd63097343e06001600160401b0319602d541617602d55565b602d805467ffffffffffffffff60401b19166324ea412360491b179055614d047054a2b63d65d79d094abb66880000000000602e55565b614d35614d19602d546001600160401b031690565b6001600160401b03166001600160401b0319602f541617602f55565b614d66614d4a602f546001600160401b031690565b6001600160401b03166001600160401b03196024541617602455565b614d6e6138fc565b5050614d7b6103e8601955565b614d856000601a55565b614d8f6032602055565b614d9a612ee0602155565b8015614e5057601e555b8015614e4357601f555b614dbd601f54601e5410614c4e565b614dc86161a8602955565b8015614e31576022555b614dde62013880601b55565b614dea62015f90601c55565b614df5612710601d55565b614e06670429d069189e0000602a55565b614e176706f05b59d3b20000602b55565b614e25612482602b54613477565b6105c062015180601255565b50614dd2670de0b6b3a7640000602255565b50614dae62013880612f86565b50614da4620124f8612fa8565b6001600160401b0381116119a45760051b60200190565b90614e7e82614e5d565b614e8b6040519182611a0d565b82815280926149fc601f1991614e5d565b90614ea682614e5d565b614eb36040519182611a0d565b8281528092614ec4601f1991614e5d565b019060005b828110614ed557505050565b806060602080938501015201614ec9565b91908110156149be5760051b81013590601e19813603018212156105b05701908135916001600160401b0383116105b05760200182360381136105b0579190565b908092918237016000815290565b80518210156149be5760209160051b010190565b6103e8815111614fa5576044815110614f72578060248060046105e79401518301019101614a06565b50604051614f7f816119a9565b60168152754d61726b65743a206e6f2072657475726e206461746160501b602082015290565b50604051614fb2816119a9565b60178152764d61726b65743a20726561736f6e20746f6f206c6f6e6760481b602082015290565b15614fe057565b60405162461bcd60e51b815260206004820152600e60248201526d13585c9ad95d0e881c185d5cd95960921b6044820152606490fd5b6001600160a01b03811633810361502c57505050565b60009081526002602090815260408083203384529091529020829054106150b0576001600160a01b038116600090815260026020526040902060001990615074903390610ebb565b540361507e575050565b6001600160a01b031660009081526002602052604090206150ac906150a4903390610ebb565b91825461348d565b9055565b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881b9bdd08185c1c1c9bdd995960621b6044820152606490fd5b93929190936150f96142d7565b80516009546001600160801b039791881694929061516590602090615126906001600160a01b0316610829565b600e54601454604051638eb22cdd60e01b815260048101929092526001600160801b031660248201526001604482015292839190829081906064820190565b03915afa801561145d576151829160009161530f575b508661349a565b806152e057506103e886985b60208301516151a990828c16906001600160801b03166142fd565b16106152d457615240615219959493926151ca6148f18b8a6152519661532d565b6151d3816105ea565b6151de8b825461349a565b90556040518a81526001600160a01b038281169890976152269287928b91600091600080516020615e22833981519152919081906020820190565b0390a38a600e54896153d3565b6001600160a01b0316600090815260266020526040902090565b602754600052602052604060002090565b61525c86825461349a565b9055156152ac57506009547f30a8c4f9ab5af7e1309ca87c32377d1a83366c5990472dbf9d262450eae14e389061529b906001600160a01b0316610829565b915b604051878152921691602090a4565b7f30a8c4f9ab5af7e1309ca87c32377d1a83366c5990472dbf9d262450eae14e38909161529d565b50600096505050505050565b60208201516103e8916153099161372490615303906001600160801b0316612677565b8a613431565b9861518e565b615327915060203d81116125c4576125b58183611a0d565b3861517b565b91906153519061533b614267565b5060018060801b039182809216828651166142fd565b16835261536781602085019316828451166142fd565b16905290565b6001600160a01b039182168152911660208201526040810191909152606081019190915260800190565b1561539e57565b60405162461bcd60e51b815260206004820152600d60248201526c0a68e987440e8dede40daeac6d609b1b6044820152606490fd5b9091929360001461546b5750600954615425916020916153fb906001600160a01b0316610829565b604051627eeac760e11b815230600482015260248101929092529092839190829081906044820190565b03915afa92831561145d576105c0936154469260009161544d575b5061348d565b1015615397565b615465915060203d81116125c4576125b58183611a0d565b38615440565b6009549193509190615485906001600160a01b0316610829565b803b156105b0576154b3936000809460405196879586948593630208d92960e11b855230906004860161536d565b03925af1801561145d576154c45750565b806154d16105c0926119c4565b80610649565b6001600160801b03918216908216039190821161340f57565b156154f757565b60405162461bcd60e51b815260206004820152600e60248201526d14d1d30e881b5a5b881b1a5b5a5d60921b6044820152606490fd5b6025549093926001600160801b039160801c156156fd5761554c6142d7565b80519095906001600160801b031660095461557690602090615126906001600160a01b0316610829565b03915afa91821561145d5785916000936156dd575b5016906155979161349a565b6155a19083613431565b6020870180519092916155bd916001600160801b03169061345a565b9687946155c9836105ea565b858154906155d69161348d565b90556040518581526001600160a01b0393841694906000908690600080516020615e2283398151915290602090a3825161561c90838916906001600160801b03166154d7565b6001600160801b031683528051868316906001600160801b031690615640916154d7565b6001600160801b03168152516001600160801b0316166103e81115615664906154f0565b61566d906147d7565b6040519283528416917f6e853a5fd6b51d773691f542ebac8513c9992a51380d4c342031056a6411422890602090a4600954600e546001600160a01b0390911691823b156105b0576154b39260009283879360405196879586948593630208d92960e11b8552306004860161536d565b6156f691935060203d81116125c4576125b58183611a0d565b913861558b565b50600093505050565b6025546001600160801b0394939192919060801c156156fd576157276142d7565b80519091906001600160801b031660095461575190602090615126906001600160a01b0316610829565b03915afa91821561145d578891600093615961575b5016906157729161349a565b61577c9082613431565b6020830180519091615797916001600160801b03169061345a565b9687936157a3876105ea565b848154906157b09161348d565b90556040518481526001600160a01b03888116949093916000908690600080516020615e2283398151915290602090a382516157f890838916906001600160801b03166154d7565b6001600160801b031683528051868316906001600160801b03169061581c916154d7565b6001600160801b03168152516001600160801b0316166103e81115615840906154f0565b615849906147d7565b6040519283528416917f6e853a5fd6b51d773691f542ebac8513c9992a51380d4c342031056a6411422890602090a4600954600e546001600160a01b0390911691823b156105b0576158b99260009283889360405196879586948593630208d92960e11b8552306004860161536d565b03925af1801561145d5761594e575b506001600160a01b03811660009081526026602052604090206158f8602754809290600052602052604060002090565b5484111561592457506001600160a01b0316600090815260266020526040812061592190615240565b55565b61257f6159439260018060a01b03166000526026602052604060002090565b6150ac83825461348d565b806154d161595b926119c4565b386158c8565b61597a91935060203d81116125c4576125b58183611a0d565b9138615766565b908060209392818452848401376000828201840152601f01601f1916010190565b9035601e19823603018112156105b05701602081359101916001600160401b0382116105b05781360383136105b057565b906060615a076105e79380356159e88161059f565b6001600160a01b031684526020818101359085015260408101906159a2565b9190928160408201520191615981565b908135815261ffff80615a2c60208501611c62565b166020830152615a3e60408401611c62565b16604082015260c06060830135615a548161059f565b6001600160a01b03908116606084015281615aa4615a89615a7860808801886159a2565b60e0608089015260e0880191615981565b615a9660a08801886159a2565b9087830360a0890152615981565b940135615ab08161059f565b1691015290565b606060c435615ac58161059f565b6001600160a01b0390811683528060e435615adf8161059f565b1660208401528061010435615af38161059f565b16604084015261012435615b068161059f565b16910152565b60609081813591615b1c8361059f565b6001600160a01b039283168552826020820135615b388161059f565b166020860152826040820135615b4d8161059f565b1660408601520135615b068161059f565b91908082526020809201929160005b828110615b7b575050505090565b9091929382806001928735615b8f8161059f565b848060a01b03168152019501910192919092615b6d565b9082818152602080910193818360051b82010194846000925b858410615bd0575050505050505090565b909192939495968580615bf8600193601f19868203018852615bf28c886159a2565b90615981565b990194019401929594939190615bbf565b9295969094969391936040519660209663e5644d8b60e01b888a01528060a48a01608060248c01525260c48901959060005b89828210615ca5575050505087850360231990810160448a0152818652936001600160fb1b0382116105b05761461a99611eca988a9861076798615c969560051b809284830137018981036003190160648b01520191615b5e565b92858403016084860152615ba6565b808499600193949535615cb78161059f565b848060a01b031681520198019101919091615c3b565b15615cd457565b60405162461bcd60e51b815260206004820152600e60248201526d14d1d30e881b9bdd081d985b1a5960921b6044820152606490fd5b6034546001600160a01b03168015615d6857816000929160208493519201905af490615d34614948565b9115615d3c57565b612197615d4883614f49565b60405162461bcd60e51b81526020600482015291829160248301906106a0565b60405162461bcd60e51b815260206004820152601360248201527214d1d30e881b5bd91d5b19481b9bdd081cd95d606a1b6044820152606490fd5b6032546001600160a01b03168015615d6857816000929160208493519201905af490615d34614948565b6031546001600160a01b03168015615d6857816000929160208493519201905af490615d34614948565b6033546001600160a01b03168015615d6857816000929160208493519201905af490615d3461494856feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220cbe274fdc6a880c6f7d7c9008e088f59c117f36c92eb5ab19b7ef75420dd4a1164736f6c63430008120033", + "bytecode": "0x6101408060405234620001ea576200001781620001ef565b601381526001602082017f546170696f63612053696e67756c617269747900000000000000000000000000815260206040516200005481620001ef565b8381520192603160f81b845251902091208160e052610100918183524660a0526040519160208301907f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f92838352604085015260608401524660808401523060a084015260a0835260c083019280841060018060401b03851117620001d45760408490525190206080523060c052610120908152600580546001600160a01b0319163390811790915560007f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a362013880601b5562015f90601c55612710601d55612ee06020557f0bd4060688a1800ae986e4840aebc924bb40b5bf44de4583df2257220b54b77c6026557f7d1dc38e60930664f8cbf495da6556ca091d2f92d6550877750c049864b182306027556161a86028556032602f556001603055615e6c92836200020c843960805183613c12015260a05183613ccd015260c05183613bdc015260e05183613c6101525182613c8701525181613c3e0152f35b634e487b7160e01b600052604160045260246000fd5b600080fd5b604081019081106001600160401b03821117620001d45760405256fe6080604052600436101561001b575b361561001957600080fd5b005b60003560e01c8062a02a201461059a57806302ce728f1461059557806306fdde0314610590578063078dfbe71461058b578063095ea7b3146105865780630c4e84f01461058157806318160ddd1461057c5780631c9e379b146105775780631da8bf10146105725780631ee9c8f21461056d57806323b872dd1461056857806325384fd8146105635780632a9399d91461055e578063313ce56714610559578063331960ff1461055457806334d441d01461054f5780633644e5151461054a57806337b6b7b91461054557806338225f111461054057806338d52e0f1461053b5780633ba0b9a9146105365780633f741adb1461053157806340626d8b1461052c57806344de240a14610527578063473e3ce71461052257806348e4163e1461051d5780634d7f2a34146105185780634ddf47d4146105135780634e71e0c81461050e5780635224372c14610509578063529898f21461050457806352f353eb146104ff57806355140232146104fa57806355c2ab94146104f557806357935462146104f057806358db9afe146104eb5780635d5f73ef146104e65780635dfe04e8146104e15780636587adb8146104dc5780636c3d8b8f146104d757806370a08231146104d257806372778547146104cd57806374645ff3146104c85780637dc0d1d0146104c35780637ecebe00146104be5780637fa0b84e146104b9578063821226e8146104b45780638285ef40146104af5780638c5d0ed3146104aa5780638da5cb5b146104a5578063910dd7c8146104a0578063959916dc1461049b57806395d89b411461049657806399a97028146104915780639c5d71921461048c5780639e15e89f14610487578063a28e6b8214610482578063a9059cbb1461047d578063aa7d966514610478578063ae70702e14610473578063af405b4c1461046e578063b0e21e8a14610469578063b25ea8fb14610464578063b27c0e741461045f578063bb4cfe3b1461045a578063bf0b895814610455578063c861a52614610450578063cce19f811461044b578063cd0211eb14610446578063ce8849ed14610441578063d3fb2a381461043c578063d49dffa714610437578063d505accf14610432578063d8dfeb451461042d578063dd62ed3e14610428578063de40657714610423578063e0996cb61461041e578063e30c397814610419578063e5644d8b14610414578063e9a492521461040f578063ea64dd561461040a578063eec0f42e14610405578063f42760b714610400578063f4d93753146103fb578063f5b33dfa146103f6578063f8ba4cff146103f1578063f9557ccb146103ec5763ffe04c660361000e576130fa565b6130c8565b6130af565b613086565b61303c565b61301e565b613000565b612fe2565b612f5e565b612ed5565b612eac565b612e8e565b612e65565b612e29565b612e00565b612d52565b612c6f565b61298a565b612961565b6128fa565b6128a6565b61287d565b6127a6565b612788565b61274d565b6126c0565b6126a2565b61259c565b61248b565b61231a565b612175565b6120cb565b61208d565b61206f565b612044565b611faf565b611f91565b611f16565b611eb2565b611e94565b611e62565b611e44565b611e1a565b611ddd565b611db4565b611cd3565b611b9f565b611b24565b611afb565b611ab2565b611a1a565b6119f1565b61194e565b611930565b611906565b6118df565b6118b8565b61189b565b611822565b611743565b6114ec565b6114ce565b611491565b611473565b611455565b611437565b611413565b6113f5565b6113cc565b6110d7565b61108d565b61106a565b61104c565b61102e565b610f8d565b610eb5565b610e5f565b610d18565b610c1d565b610ad5565b610a48565b610a27565b610930565b6108ec565b6107a9565b6106d6565b610654565b610604565b6001600160a01b038116036105b057565b600080fd5b35906105c08261059f565b565b60409060031901126105b0576004356105da8161059f565b906024356105e78161059f565b90565b6001600160a01b0316600090815260016020526040902090565b346105b0576020610640610617366105c2565b6001600160a01b0391821660009081526003855260408082209290931681526020919091522090565b54604051908152f35b60009103126105b057565b346105b05760003660031901126105b057604061066f6138f1565b825191151582526020820152f35b60005b8381106106905750506000910152565b8181015183820152602001610680565b906020916106b98151809281855285808601910161067d565b601f01601f1916010190565b9060206105e79281815201906106a0565b346105b05760008060031936011261079c57808060018060a01b03600b541660405160208101906306fdde0360e01b82526004815261071481611c4e565b51915afa61072061493d565b9150156107855761076761077561073961078193614a59565b60405173546170696f63612053696e67756c61726974792d60601b6020820152928391603483015b90614926565b03601f198101835282611cb2565b604051918291826106c5565b0390f35b5061078161076761077561079761496d565b610739565b80fd5b801515036105b057565b346105b05760603660031901126105b0576004356107c68161059f565b602435906107d38261079f565b604435916107e08361079f565b6005546001600160a01b0391906107fa9083163314613118565b156108d3578116918215908115916108cb575b501561088e5760055461087c9290610835906001600160a01b03165b6001600160a01b031690565b7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b600680546001600160a01b0319169055005b60405162461bcd60e51b81526020600482015260156024820152744f776e61626c653a207a65726f206164647265737360581b6044820152606490fd5b90503861080d565b60068054919092166001600160a01b0319909116179055005b346105b05760403660031901126105b05761091660043561090c8161059f565b60243590336141e3565b602060405160018152f35b6004359060098210156105b057565b346105b05760403660031901126105b057610949610921565b6024356109558161079f565b6008546001600160a01b031633036109eb576109da8261098961098461097d61001996611b86565b5460ff1690565b151590565b61099884151591821415613395565b6109a461097d83611b86565b6109ad83611b77565b1515827feeec81de25875ce1725479bb76f720a8defdb43dea041919ae37bb4aae9847c0600080a4611b86565b9060ff801983541691151516179055565b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881d5b985d5d1a1bdc9a5e995960621b6044820152606490fd5b346105b05760003660031901126105b057602060245460801c604051908152f35b346105b05760203660031901126105b057600435610a658161059f565b60018060a01b031660005260186020526020604060002054604051908152f35b60ff8116036105b057565b60e09060031901126105b057600435610aa88161059f565b90602435610ab58161059f565b906044359060643590608435610aca81610a85565b9060a4359060c43590565b346105b057610ae336610a90565b9592809594959291924211610bab5761001996610ba693610b9393610b86878a610b7e8b610767610b8b99610b1786614168565b60405195869460208601988991959493909260c09360e08401977f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d685526000602086015260018060a01b038092166040860152166060840152608083015260a08201520152565b519020614112565b61409a565b919091613f7f565b6001600160a01b03838116911614613f1a565b614190565b60405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b9181601f840112156105b0578235916001600160401b0383116105b057602083818601950101116105b057565b346105b05760c03660031901126105b057600435610c3a8161059f565b608435610c468161059f565b60a435906001600160401b0382116105b05761078192610cc8610ccd92610767610c77610cdc963690600401610bf0565b604051958694630f74e47960e11b602087015260018060a01b0380921660248701526024356044870152604435606487015260643560848701521660a485015260c060c485015260e4840191615976565b615cff565b60208082518301019101613a2d565b6040519081529081906020820190565b60609060031901126105b057600435610d048161059f565b90602435610d118161059f565b9060443590565b346105b057610d60600080516020615e17833981519152610d3836610cec565b9291939083610d6f575b6040519384526001600160a01b039081169416929081906020820190565b0390a360405160018152602090f35b610d78856105ea565b54610d8585821015613cf3565b6001600160a01b038281169186918816839003610da5575b505050610d42565b6001600160a01b03881660009081526002602090815260408083203384529091529020610de993610de491548460018201610e11575b50501515613d38565b613482565b610df2866105ea565b55610dfc816105ea565b610e0785825461348f565b9055388481610d9d565b81610de482610e21941015613d7d565b6001600160a01b038b166000908152600260205260409020610e579033905b9060018060a01b0316600052602052604060002090565b553884610ddb565b346105b05760003660031901126105b0576032546040516001600160a01b039091168152602090f35b908160609103126105b05790565b908160e09103126105b05790565b60809060a31901126105b05760a490565b610120806003193601126105b057600435610ecf8161059f565b60443590610edc8261079f565b6001600160401b03906064358281116105b057610efd903690600401610e88565b936084359283116105b057610767610f8261001996610f70610f26610cc8973690600401610e96565b91610f3036610ea4565b95604051998a98632a9399d960e01b60208b015260018060a01b031660248a015260243560448a01521515606489015260848801526101448701906159c8565b8581036023190160a487015290615a0c565b9160c4840190615b01565b346105b05760008060031936011261079c57808060018060a01b03600d5416604051602081019063313ce56760e01b825260048152610fcb81611c4e565b51915afa90610fd861493d565b9180611023575b156110175760208280518101031261079c5750602061078191015161100381610a85565b60405160ff90911681529081906020820190565b50506107816012611003565b506020825114610fdf565b346105b05760003660031901126105b0576020601354604051908152f35b346105b05760003660031901126105b0576020601954604051908152f35b346105b05760003660031901126105b0576020611085613bd9565b604051908152f35b346105b05760003660031901126105b0576020601254604051908152f35b60a435906001600160401b03821682036105b057565b60c435906001600160401b03821682036105b057565b346105b0576101003660031901126105b0576004356064356044356024356084356111006110ab565b6111086110c1565b60e4359261112160018060a01b03600554163314613118565b620186a096611132888a1115613294565b611166602f54998060009b7fc353b09af857951dccce61b43a5854fc45beceed36c50e5d4cc2e71858a8e0df8d80a3602f55565b80611395575b5080611338575b506001600160401b039182811690816112d8575b505081811680611267575b50505080611230575b50806111ed575b50806111ac578280f35b6111ba6111e7928210615cc2565b806020547f1f1d0e9e5e3fd195010504141e7472fc7f53e44d7cd3f236f0892778039c63268580a3602055565b38808280f35b806111fd8461122a931115615cc2565b806028547f1a98b2490874ba87102ae05e5b66fbe02edfcfb7e8b4e2d60f9aef620de5e3378780a3602855565b386111a2565b8061126191602d547f6bdc0e1a8f6a69c7dcb57e254165094714bb2a8730e2fedd8c6e9b71e67478b58880a3602d55565b3861119b565b6112d092602c5461127b8282168411615cc2565b60401c167fb02a4833a4686ad41ec77a1e91a97a505459a34966985bf11c59b1e01852e4a68980a3602c805467ffffffffffffffff60401b191660409290921b67ffffffffffffffff60401b16919091179055565b388080611192565b6113319184602c546112f0828260401c168410615cc2565b167f6d780269adaf7a0d9858a89a8c090b0b3add5f7088ccac6f619ff2b22987e7d58b80a36001600160401b03166001600160401b0319602c541617602c55565b3880611187565b8061134f670de0b6b3a764000061137c9310615cc2565b80602a547f4d5fa9a75b98ca1386ef794acdb2601c953e99a9c7a94ed351a46e06dc1bab288b80a3602a55565b61138f61138a602a5461346c565b602b55565b38611173565b806113c6916029547fa55fca071799e1b20f7cdcdf447fcc08c886bdd0cb741bf8862a311921bbb3888c80a3602955565b3861116c565b346105b05760003660031901126105b057600d546040516001600160a01b039091168152602090f35b346105b05760003660031901126105b0576020601154604051908152f35b346105b05760603660031901126105b057602061108560443560243560043561353c565b346105b05760003660031901126105b0576020601654604051908152f35b346105b05760003660031901126105b0576020600e54604051908152f35b346105b05760003660031901126105b0576020601554604051908152f35b346105b05760203660031901126105b0576004356114ae8161059f565b60018060a01b031660005260176020526020604060002054604051908152f35b346105b05760003660031901126105b0576020602854604051908152f35b346105b05760203660031901126105b0576004356001600160401b0381116105b05761151c903690600401610bf0565b9060ff602254166117085761153391810190614b57565b600a80546001600160a01b0319166001600160a01b038b16179055989b919a989990989296939593926040519263de40657760e01b845260208460048160018060a01b03809e165afa998a1561170357806116a99f81809161161e6116a49f8f90848f6115cc826116679f9481956000916116d5575b5060098054919092166001600160a01b03166001600160a01b0319909116179055565b600a54611607906115e5906001600160a01b0316610829565b600580546001600160a01b0319166001600160a01b0392909216919091179055565b16151591826116c9575b826116bb575b5050614c07565b1695169316911692909160018060a01b03928380928160018060a01b03199716876031541617603155168560335416176033551683603254161760325516906034541617603455565b9391929060018060a01b0380948160018060a01b0319971687600d541617600d551685600b541617600b55600e55600c551690600f541617600f55565b614ca7565b610019600160ff196022541617602255565b9091501615158f8490611617565b8d821615159250611611565b6116f6915060203d81116116fc575b6116ee8183611cb2565b810190614bf2565b386115a9565b503d6116e4565b61385f565b60405162461bcd60e51b815260206004820152601360248201527213585c9ad95d0e881a5b9a5d1a585b1a5e9959606a1b6044820152606490fd5b346105b05760008060031936011261079c576006546001600160a01b0316338190036117de576005546117cb91908190611785906001600160a01b0316610829565b7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08580a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b600680546001600160a01b031916905580f35b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b346105b05761187661076761187161183936610cec565b6040516314890dcb60e21b60208201526001600160a01b03938416602482015292909116604483015260648201529182906084820190565b615d98565b6040818051810103126105b05780604060208193015191015182519182526020820152f35b346105b05760003660031901126105b05760208054604051908152f35b346105b05760003660031901126105b05760206001600160401b03602e5416604051908152f35b346105b05760003660031901126105b05760206001600160401b03602c5416604051908152f35b346105b05760003660031901126105b0576020602c546001600160401b036040519160401c168152f35b346105b05760003660031901126105b0576020601c54604051908152f35b346105b05760a03660031901126105b05760043561196b8161059f565b6064356119778161059f565b608435906001600160401b0382116105b05761078192610cc8610ccd926107676119a8610cdc963690600401610bf0565b604051958694632c6dcd7f60e11b602087015260018060a01b0380921660248701526024356044870152604435606487015216608485015260a060a485015260c4840191615976565b346105b05760003660031901126105b0576031546040516001600160a01b039091168152602090f35b346105b05760003660031901126105b057611a3361423d565b506080611a3e61430b565b509350505050604051916001600160401b0380825116845260208201511660208401526040600180861b039101511660408301526060820152f35b60809060031901126105b057600435611a918161059f565b90602435611a9e8161059f565b90604435611aab8161079f565b9060643590565b346105b0576020611085611ac536611a79565b92600760009392935260078652611ae460ff6040600020541615614fce565b611aee848261500b565b611af66147f3565b6150e1565b346105b05760003660031901126105b057600a546040516001600160a01b039091168152602090f35b346105b05760203660031901126105b057600435611b418161059f565b60018060a01b031660005260016020526020604060002054604051908152f35b634e487b7160e01b600052602160045260246000fd5b60091115611b8157565b611b61565b6009811015611b81576000526007602052604060002090565b346105b05760203660031901126105b057611bb8610921565b6009811015611b81576000526007602052602060ff604060002054166040519015158152f35b90600182811c92168015611c0e575b6020831014611bf857565b634e487b7160e01b600052602260045260246000fd5b91607f1691611bed565b634e487b7160e01b600052604160045260246000fd5b606081019081106001600160401b03821117611c4957604052565b611c18565b604081019081106001600160401b03821117611c4957604052565b6001600160401b038111611c4957604052565b60c081019081106001600160401b03821117611c4957604052565b60e081019081106001600160401b03821117611c4957604052565b90601f801991011681019081106001600160401b03821117611c4957604052565b346105b05760008060031936011261079c5760405181601054611cf581611bde565b80845290600190818116908115611d8c5750600114611d33575b61078184611d1f81880382611cb2565b6040519182916020835260208301906106a0565b60108352602094507f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae6725b828410611d79575050508161078193611d1f9282010193611d0f565b8054858501870152928501928101611d5d565b6107819650611d1f9450602092508593915060ff191682840152151560051b82010193611d0f565b346105b05760003660031901126105b057600f546040516001600160a01b039091168152602090f35b346105b05760203660031901126105b057600435611dfa8161059f565b60018060a01b031660005260046020526020604060002054604051908152f35b346105b05760403660031901126105b057610916600435611e3a8161059f565b6024359033614190565b346105b05760003660031901126105b0576020602d54604051908152f35b346105b05760003660031901126105b057601454604080516001600160801b038316815260809290921c602083015290f35b346105b05760003660031901126105b0576020601b54604051908152f35b346105b05760003660031901126105b0576005546040516001600160a01b039091168152602090f35b6001600160401b038111611c4957601f01601f191660200190565b6024359061ffff821682036105b057565b359061ffff821682036105b057565b346105b05760403660031901126105b0576004356001600160401b0381116105b057366023820112156105b0578060040135611f5181611edb565b90611f5f6040519283611cb2565b80825236602482850101116105b057602081600092602461001996018386013783010152611f8b611ef6565b90613dc4565b346105b05760003660031901126105b0576020602f54604051908152f35b346105b05760008060031936011261079c57808060018060a01b03600b541660405160208101906395d89b4160e01b825260048152611fed81611c4e565b51915afa611ff961493d565b91501561202d5761076761077561201261078193614a59565b60405162746d2d60e81b602082015292839160238301610761565b5061078161076761077561203f61496d565b612012565b346105b05760403660031901126105b05760206110856004356120668161059f565b60243590613b05565b346105b05760003660031901126105b0576020602b54604051908152f35b346105b05760403660031901126105b05760606120b86004356120af8161059f565b60243590613620565b9060405192835260208301526040820152f35b346105b05760803660031901126105b0576004356120e88161059f565b6024356120f48161059f565b604435906121018261059f565b606435926001600160401b0384116105b0576107676121709261212b610019963690600401610bf0565b60405163514735c160e11b60208201526001600160a01b03958616602482015292851660448401529390951660648201526080608482015293849260a4840191615976565b615dc2565b346105b05760403660031901126105b0576004356121928161059f565b602435801580159061223c575b6121d2575b6040519081526001600160a01b03909116903390600080516020615e17833981519152908060208101610d60565b6121db336105ea565b546121e882821015613cf3565b6001600160a01b03831690829033839003612206575b5050506121a4565b610de4612214931515613d38565b61221d336105ea565b55612227826105ea565b61223282825461348f565b90553881816121fe565b50336001600160a01b0383161461219f565b9181601f840112156105b0578235916001600160401b0383116105b0576020808501948460051b0101116105b057565b906040820191604081528151809352606081019260208093019060005b81811061230457505050818184039101528251908183528083019281808460051b8301019501936000915b8483106122d65750505050505090565b90919293949584806122f4600193601f198682030187528a516106a0565b98019301930191949392906122c6565b825115158652948401949184019160010161229b565b346105b0576040806003193601126105b057600480356001600160401b0381116105b05761234b903690830161224e565b92906024356123598161079f565b60026030541461244857600260305561237185614e69565b9361237b86614e91565b95600090815b8181106123a2578888610781896123986001603055565b519283928361227e565b82806123af83858a614edb565b906123be8b5180938193614f1c565b0390305af46123cb61493d565b90801580612441575b61241a5782916123f56123fa926123ee612415968e614f2a565b9015159052565b614f3e565b612404828c614f2a565b5261240f818b614f2a565b50614159565b612381565b888661243d61242885614f3e565b925162461bcd60e51b815292839283016106c5565b0390fd5b50866123d4565b825162461bcd60e51b8152602081860152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606490fd5b346105b05760403660031901126105b0576004356124a88161059f565b61250a60243591600e548314600014612591576020602654935b6009546124d7906001600160a01b0316610829565b604051627eeac760e11b81526001600160a01b038516600482015260248101929092529093849190829081906044820190565b03915afa80156117035761078193610cdc9360009261255b575b50612545612554929360018060a01b03166000526025602052604060002090565b90600052602052604060002090565b549061348f565b61255492506125836125459160203d811161258a575b61257b8183611cb2565b810190613a2d565b9250612524565b503d612571565b6020602754936124c2565b346105b05760008060031936011261079c57610cdc6107819160018060a01b036125cb81600554163314613118565b600a5481166001600160a01b03166023549092906001600160801b039060801c16612605575b50506125fc816105ea565b54903390615522565b61260d6147f3565b7fbe641c3ffc44b2d6c184f023fa4ed7bda4b6ffa71e03b3c98ae0c776da1f17e761264961263d60235460801c90565b6001600160801b031690565b92612653856105ea565b61265e85825461348f565b90558416918281600080516020615e178339815191526040518061268789829190602083019252565b0390a3602380546001600160801b0316905580a338806125f1565b346105b05760003660031901126105b0576020601a54604051908152f35b346105b05760403660031901126105b0576024356126dd8161059f565b6126f260018060a01b03600554163314613118565b60008080808094600435905af161270761493d565b50156127105780f35b60405162461bcd60e51b815260206004820152601560248201527429a3a61d103a3930b739b332b9103330b4b632b21760591b6044820152606490fd5b346105b05760003660031901126105b0576060602354604051906001600160401b0380821683528160401c16602083015260801c6040820152f35b346105b05760003660031901126105b0576020601e54604051908152f35b346105b05760403660031901126105b05760245460095461281c906020906127d6906001600160a01b0316610829565b6014546001600160801b0316906040518080958194638eb22cdd60e01b8352602435600484019081526001600160801b0390911660208201526001604082015260600190565b03915afa9182156117035761285561284d61078194610cdc9460009161285f575b506001600160801b03841661348f565b600435613426565b9060801c9061344f565b612877915060203d811161258a5761257b8183611cb2565b3861283d565b346105b05760003660031901126105b0576033546040516001600160a01b039091168152602090f35b346105b0576100196107676128f56128bd36610cec565b60405163cce19f8160e01b60208201526001600160a01b03938416602482015292909116604483015260648201529182906084820190565b615dec565b346105b057602061108561295361291036611a79565b60405163cd0211eb60e01b888201526001600160a01b03948516602482015293909216604484015215156064830152608480830191909152815261187181611c7c565b828082518301019101613a2d565b346105b05760003660031901126105b0576008546040516001600160a01b039091168152602090f35b346105b0576101603660031901126105b0576004356129a88161059f565b6024356001600160401b0381116105b0576129c7903690600401610bf0565b916044356129d48161059f565b60643560843560a4359060c4359260e4359461010435966101243598610144359a60018060a01b0392612a0c84600554163314613118565b838116612c25575b5080612bf0575b505081169081612b88575b505080612b6a575b5080612b4c575b5080612b2f575b5080612b05575b5080612adb575b5080612aa3575b5080612a77575b5080612a6057005b61001990612a72601e5482101561332e565b601f55565b80612a8a620186a0612a9d931115613294565b612a98601f548211156132d4565b601e55565b38612a58565b80612ad5916016547fae6e0ab3b95f0a53ff9660a390ccedcbbf1f2355dce974a9841af106fddcfaba600080a3601655565b38612a51565b80612aed620186a0612aff9310613294565b612afa601b548211613294565b601c55565b38612a4a565b80612b17620186a0612b299310613294565b612b24601c548210613294565b601b55565b38612a43565b80612b41620186a0612b469310613294565b601d55565b38612a3c565b80612b5f620186a0612b64931115613294565b601a55565b38612a35565b80612b7d620186a0612b82931115613294565b601955565b38612a2e565b600854612be99290612ba2906001600160a01b0316610829565b7f5a62d22209e370e38eea92cfddcd228e656e6ec139243392a760a7769f5877fd600080a3600880546001600160a01b0319166001600160a01b0392909216919091179055565b3880612a26565b612bf9916131b7565b7fa6f004921c944d4b8bf6e38462b00f36a58d62495d56b51f571ab78f732c9815600080a13880612a1b565b600f80546001600160a01b0319166001600160a01b039092169190911790557f0b2d6eb667d0522c3eb86e4288afecae6c11591ffd1345d4d12407e0598bca9b600080a138612a14565b610140806003193601126105b05760043590612c8a8261059f565b60643590612c978261079f565b6001600160401b03926084358481116105b057612cb8903690600401610e88565b9360a4359081116105b057612cd1903690600401610e96565b9360803660c31901126105b05761001994612d34612d4692610cc89560405197889663d49dffa760e01b602089015260018060a01b03166024880152602435604488015260443560648801521515608487015260a48601526101648501906159c8565b8381036023190160c485015290615a0c565b61076760e48301615aac565b346105b057612d6036610a90565b9592809594959291924211610bab5761001996612dfb93610b9393610b86878a610b7e8b610767610b8b99612d9486614168565b60405195869460208601988991959493909260c09360e08401977f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e26685526000602086015260018060a01b038092166040860152166060840152608083015260a08201520152565b6141e3565b346105b05760003660031901126105b057600b546040516001600160a01b039091168152602090f35b346105b0576020610640612e3c366105c2565b6001600160a01b0391821660009081526002855260408082209290931681526020919091522090565b346105b05760003660031901126105b0576009546040516001600160a01b039091168152602090f35b346105b05760003660031901126105b0576020601d54604051908152f35b346105b05760003660031901126105b0576006546040516001600160a01b039091168152602090f35b346105b05760803660031901126105b0576001600160401b036004358181116105b057612f0690369060040161224e565b906024358381116105b057612f1f90369060040161224e565b906044358581116105b057612f3890369060040161224e565b9290916064359687116105b057612f5661001997369060040161224e565b969095615bfe565b346105b05760a03660031901126105b057610019600435612f7e8161059f565b60243590612f8b8261059f565b60443590612f988261079f565b604051926374d2492960e11b602085015260018060a01b03809216602485015216604483015215156064820152606435608482015260843560a482015260a481526128f581611c97565b346105b05760003660031901126105b0576020601f54604051908152f35b346105b05760003660031901126105b0576020600c54604051908152f35b346105b05760003660031901126105b0576020602a54604051908152f35b346105b057602061307f61108561305236610cec565b9060086000959395526007865261307160ff6040600020541615614fce565b6130796147f3565b846156fb565b809261500b565b346105b05760003660031901126105b0576034546040516001600160a01b039091168152602090f35b346105b05760003660031901126105b0576100196147f3565b346105b05760003660031901126105b057602454604080516001600160801b038316815260809290921c602083015290f35b346105b05760003660031901126105b0576020602954604051908152f35b1561311f57565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b601f811161316f575050565b6000906010825260208220906020601f850160051c830194106131ad575b601f0160051c01915b8281106131a257505050565b818155600101613196565b909250829061318d565b91906001600160401b038111611c49576131db816131d6601054611bde565b613163565b6000601f82116001146132155781929360009261320a575b50508160011b916000199060031b1c191617601055565b0135905038806131f3565b6010600052601f198216937f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae67291805b86811061327c5750836001959610613262575b505050811b01601055565b0135600019600384901b60f8161c19169055388080613257565b90926020600181928686013581550194019101613244565b1561329b57565b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881b9bdd081d985b1a59607a1b6044820152606490fd5b156132db57565b60405162461bcd60e51b815260206004820152602560248201527f4d61726b65743a20636f6c6c61746572616c697a6174696f6e5261746520746f6044820152646f2062696760d81b6064820152608490fd5b1561333557565b60405162461bcd60e51b815260206004820152603260248201527f4d61726b65743a206c69717569646174696f6e436f6c6c61746572616c697a616044820152711d1a5bdb94985d19481d1bdbc81cdb585b1b60721b6064820152608490fd5b1561339c57565b60405162461bcd60e51b81526020600482015260126024820152714d61726b65743a2073616d6520737461746560701b6044820152606490fd5b634e487b7160e01b600052601160045260246000fd5b90620186a09182810292818404149015171561340457565b6133d6565b90670de0b6b3a76400009182810292818404149015171561340457565b8181029291811591840414171561340457565b634e487b7160e01b600052601260045260246000fd5b8115613459570490565b613439565b604d811161340457600a0a90565b90670de0b6b3a764000091820391821161340457565b9190820391821161340457565b9190820180921161340457565b8181039291600013801582851316918412161761340457565b906509184e72a0009182810292818405149015171561340457565b90670de0b6b3a76400009182810292818405149015171561340457565b818102929160008212600160ff1b82141661340457818405149015171561340457565b811561345957600160ff1b8114600019831416613404570590565b600160ff1b81146134045760000390565b60145491929190613557906001600160801b03831690613426565b9060801c9081156134595761358491613575910493601f5490613426565b61357e8361345e565b9061344f565b90818310613618576135e96135e36135de6135a26135ee9587613482565b936135d96135d36135ca601e546135c46135bb8661345e565b6020549061348f565b90613426565b61357e8461345e565b9161345e565b61349c565b6134b5565b916134d0565b613510565b6000811215613612576136009061352b565b905b80821161360d575090565b905090565b90613602565b505050600090565b6001600160a01b0381166000908152601760205260408120549193929091801561379a576136ce9061365061425c565b5061365961430b565b505050505094905061366c8415156139e1565b600954602090613684906001600160a01b0316610829565b600c546001600160a01b038a1660009081526018602052604080822054905163442c159960e01b815260048101939093526024830152604482015294859190829081906064820190565b03915afa928315611703576137719561357e61263d602061373561371e8a61371961371061376b9c6137449a8c9161377d575b50602154620186a090046135c4565b601e5490613426565b61344f565b85519098906135c4906001600160801b031661263d565b9301516001600160801b031690565b908282106137755750035b6001600160a01b03909516600090815260186020526040902090565b54613a3c565b9091565b91505061374f565b6137949150873d811161258a5761257b8183611cb2565b38613701565b505080919250918190565b91908260409103126105b057602082516137be8161079f565b92015190565b6020808252600091601054916137d983611bde565b928382840152600190818116908160001461383c57506001146137fe575b5050505090565b929350601060005280600020926000935b85851061382857505050604092500101388080806137f7565b80548585016040015293820193810161380f565b925050506040935060ff929192191683830152151560051b0101388080806137f7565b6040513d6000823e3d90fd5b1561387257565b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881c985d19481d1bdbc81bdb1960621b6044820152606490fd5b156138b557565b60405162461bcd60e51b81526020600482015260146024820152734d61726b65743a20696e76616c6964207261746560601b6044820152606490fd5b600f54613906906001600160a01b0316610829565b6040805163d6d7d52560e01b81529291839081600081613928600482016137c4565b03925af180156117035760009283916139ad575b509082156139885761394f8215156138ae565b61395882601155565b817f9f9192b5edb17356c524e08d9e025c8e2f6307e6ea52fb7968faa3081f51c3c8600080a25b6105c042601355565b90506139a461399c6013546012549061348f565b42111561386b565b6011549061397f565b90506139d191925060403d81116139da575b6139c98183611cb2565b8101906137a5565b9190913861393c565b503d6139bf565b156139e857565b60405162461bcd60e51b815260206004820152601e60248201527f4d61726b65743a2065786368616e676552617465206e6f742076616c696400006044820152606490fd5b908160209103126105b0575190565b613a916020831592613a4e84156139e1565b600954600c5460405163442c159960e01b81526004810191909152602481019290925260006044830152909283916001600160a01b031690829081906064820190565b03915afa801561170357613ab191600091613acb575b5060215490613426565b906134595704620186a0613ac7601e5483613426565b0491565b613ae3915060203d811161258a5761257b8183611cb2565b38613aa7565b9190916000838201938412911290801582169115161761340457565b90613b29613b479161376b8460018060a01b03166000526018602052604060002090565b6001600160a01b039093166000908152601760205260409020909291565b548015613618578215613618578281106136185781811015613bd05782613b90613b8b613b9695610de461357e956128556014549160018060801b03831690613426565b6133ec565b92613482565b613bc4601b5491613bbf613bb6601c5492613bb1848761349c565b6134ed565b620186a0900590565b613ae9565b9080821261360d575090565b505050601b5490565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03161480613cca575b15613c34577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f000000000000000000000000000000000000000000000000000000000000000082527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a08152613cc481611c7c565b51902090565b507f00000000000000000000000000000000000000000000000000000000000000004614613c0b565b15613cfa57565b60405162461bcd60e51b815260206004820152601660248201527545524332303a2062616c616e636520746f6f206c6f7760501b6044820152606490fd5b15613d3f57565b60405162461bcd60e51b815260206004820152601660248201527545524332303a206e6f207a65726f206164647265737360501b6044820152606490fd5b15613d8457565b60405162461bcd60e51b815260206004820152601860248201527745524332303a20616c6c6f77616e636520746f6f206c6f7760401b6044820152606490fd5b6101009081818051810103126105b0576020810151613de28161079f565b604082015192613df18461059f565b606083015194613e008661059f565b60808401519460a085015160c086015193613e1a85610a85565b60e08701519601516001600160a01b0392831698831696428310610bab57613edc95613ed08a8c610b7e8199610767613ed5998f8f600014613ef3577f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e266965b613e8287614168565b60408051602081019a8b5261ffff909716908701526001600160a01b03978816606087015296909116608085015260a084015260c083019490945260e0820193909352918290610100820190565b613f66565b1614613f1a565b15613eea576105c0926141e3565b6105c092614190565b7f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d696613e79565b15613f2157565b60405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152606490fd5b916105e79391610b8b9361409a565b60051115611b8157565b613f8881613f75565b80613f905750565b613f9981613f75565b60018103613fe15760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b6044820152606490fd5b613fea81613f75565b600281036140375760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606490fd5b80614043600392613f75565b1461404a57565b60405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608490fd5b9291906fa2a8918ca85bafe22016d0b997e4df60600160ff1b0383116141065791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa156117035781516001600160a01b03811615614100579190565b50600190565b50505050600090600390565b61411a613bd9565b9060405190602082019261190160f01b84526022830152604282015260428152608081018181106001600160401b03821117611c495760405251902090565b60001981146134045760010190565b6001600160a01b0316600090815260046020526040902080549061418b82614159565b905590565b6001600160a01b03908116600081815260036020908152604080832095909416808352949052918220849055907fe50de2333c10a9502fcb1d8ae13a51bbf423153dfc63c2b8997665b32154afc39080a4565b6001600160a01b0390811660008181526002602090815260408083208686168452825290912091937f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259391928690556040519586521693a3565b6040519061424a82611c2e565b60006040838281528260208201520152565b6040519061426982611c4e565b60006020838281520152565b6040519061428282611c2e565b8160406023546001600160401b03808216845281831c16602084015260801c910152565b604051906142b382611c4e565b6014546001600160801b038116835260801c6020830152565b604051906142d982611c4e565b6024546001600160801b038116835260801c6020830152565b6001600160801b03918216908216019190821161340457565b61431361423d565b5061431c61425c565b5061432561425c565b5061432e614275565b906143376142a6565b906143406142cc565b906143a560008061435b61082960095460018060a01b031690565b600e54865160405163442c159960e01b808252600482018490526001600160801b039092166024820152600060448201529296602096919590939092918790829081906064820190565b03818b5afa8015611703576143d69184916147af575b508a516143d0906001600160801b031661263d565b9061348f565b8061478c575081945b8a61440c6144066143fa8a8a9401516001600160401b031690565b6001600160401b031690565b42613482565b96871561476457506001600160401b03428116898e01528b8901516001600160801b039995919491939192908a161561470657508b518d518692918a91614467916001600160401b03909116906001600160801b0316613426565b9061447191613426565b8d51670de0b6b3a76400009091049b908e90614499908d8f16906001600160801b03166142f2565b6001600160801b039081169091528d5160405193845260048401959095529390931660248201526000604482015291829060649082905afa8015611703578461455161452d8f978f613719908f9261263d6135c4916137356145186145739b6145249d8f916146e9575b5086516143d0906001600160801b031661263d565b9b8c97601a5490613426565b620186a0900490565b9a8b169161455e604089016145518561454c835160018060801b031690565b6142f2565b6001600160801b03169052565b8d0180519092906001600160801b03166142f2565b806146c65750945b602954868181101561461f57936137196145df936145c66143fa6145d16145cb6145b8886137196145b36145ec9d9e6143fa9c613482565b613409565b946145c6602d549680613426565b613426565b8461348f565b94516001600160401b031690565b6001600160401b03168a52565b88516001600160401b0316602c546001600160401b031691808316911610614612575b50565b6001600160401b03168852565b919050602a54808311614634575b5050505050565b6146b4946145c66143fa61467761467161466361465a6145b3613719986146859b613482565b602b549061344f565b966145c6602d549880613426565b8661348f565b92516001600160401b031690565b602c5461469d9060401c6001600160401b03166143fa565b8082116146be575b50166001600160401b03168952565b873880808061462d565b9050386146a5565b8a516146e39250613719906145b3906001600160801b031661263d565b9461457b565b6147009150843d861161258a5761257b8183611cb2565b38614503565b985050509650929798935050945061472582516001600160401b031690565b602e546001600160401b03169180831691160361474f575b5094936147486142cc565b9383929190565b6001600160401b03168152600194503861473d565b9a5050505095509693505050509261477a6142a6565b926147836142cc565b92809281929190565b89516147a99190613719906145b3906001600160801b031661263d565b946143df565b6147c69150883d8a1161258a5761257b8183611cb2565b386143bb565b805160209091015160801b6001600160801b0319166001600160801b039190911617602455565b6105c06148bf6148e661480461430b565b9397949593909290156148eb575050506001600160401b03602e54166000807f33af5ce86e8438eff54589f85332916444457dfa8685493fbd579b809097026b6020604051838152a45b6148786001600160401b038251166001600160401b03166001600160401b03196023541617602355565b6020810151602380546040938401516001600160401b039091169290931b67ffffffffffffffff60401b169190911760809290921b6001600160801b031916919091179055565b805160209091015160801b6001600160801b0319166001600160801b039190911617601455565b6147cc565b7f33af5ce86e8438eff54589f85332916444457dfa8685493fbd579b809097026b60206001600160401b0386511694604051908152a461484e565b906149396020928281519485920161067d565b0190565b3d15614968573d9061494e82611edb565b9161495c6040519384611cb2565b82523d6000602084013e565b606090565b6040519061497a82611c4e565b60038252623f3f3f60e81b6020830152565b634e487b7160e01b600052603260045260246000fd5b9081518110156149b3570160200190565b61498c565b60ff1660ff81146134045760010190565b906149d382611edb565b6149e06040519182611cb2565b82815280926149f1601f1991611edb565b0190602036910137565b6020818303126105b0578051906001600160401b0382116105b0570181601f820112156105b0578051614a2d81611edb565b92614a3b6040519485611cb2565b818452602082840101116105b0576105e7916020808501910161067d565b805160408110614a775750806020806105e7935183010191016149fb565b602092908303614b4c576000805b60ff81168581109081614b2a575b5015614aa757614aa2906149b8565b614a85565b92614ab560ff8095166149c9565b92825b85811687811080614b0b575b15614b00579081614af5614aec614ade614afb95886149a2565b516001600160f81b03191690565b871a91886149a2565b536149b8565b614ab8565b505094505050905090565b506001600160f81b0319614b22614ade83876149a2565b161515614ac4565b6001600160f81b03199150614b4390614ade90876149a2565b16151538614a93565b9150506105e761496d565b90816101a09103126105b0578035614b6e8161059f565b916020820135614b7d8161059f565b916040810135614b8c8161059f565b91614b99606083016105b5565b91614ba6608082016105b5565b91614bb360a083016105b5565b9160c081013591614bc660e083016105b5565b9161010081013591614bdb61012083016105b5565b916101408101359161018061016083013592013590565b908160209103126105b057516105e78161059f565b15614c0e57565b60405162461bcd60e51b815260206004820152600d60248201526c29a3a61d103130b2103830b4b960991b6044820152606490fd5b15614c4a57565b60405162461bcd60e51b815260206004820152602f60248201527f53474c3a206c69717569646174696f6e436f6c6c61746572616c697a6174696f60448201526e1b94985d19481b9bdd081d985b1a59608a1b6064820152608490fd5b614cc263097343e06001600160401b0319602c541617602c55565b602c805467ffffffffffffffff60401b19166324ea412360491b179055614cf97054a2b63d65d79d094abb66880000000000602d55565b614d2a614d0e602c546001600160401b031690565b6001600160401b03166001600160401b0319602e541617602e55565b614d5b614d3f602e546001600160401b031690565b6001600160401b03166001600160401b03196023541617602355565b614d636138f1565b5050614d706103e8601955565b614d7a6000601a55565b614d846032602f55565b614d8f612ee0602055565b8015614e4557601e555b8015614e3857601f555b614db2601f54601e5410614c43565b614dbd6161a8602855565b8015614e26576021555b614dd362013880601b55565b614ddf62015f90601c55565b614dea612710601d55565b614dfb670429d069189e0000602955565b614e0c6706f05b59d3b20000602a55565b614e1a61138a602a5461346c565b6105c062015180601255565b50614dc7670de0b6b3a7640000602155565b50614da362013880612a72565b50614d99620124f8612a98565b6001600160401b038111611c495760051b60200190565b90614e7382614e52565b614e806040519182611cb2565b82815280926149f1601f1991614e52565b90614e9b82614e52565b614ea86040519182611cb2565b8281528092614eb9601f1991614e52565b019060005b828110614eca57505050565b806060602080938501015201614ebe565b91908110156149b35760051b81013590601e19813603018212156105b05701908135916001600160401b0383116105b05760200182360381136105b0579190565b908092918237016000815290565b80518210156149b35760209160051b010190565b6103e8815111614f9a576044815110614f67578060248060046105e794015183010191016149fb565b50604051614f7481611c4e565b60168152754d61726b65743a206e6f2072657475726e206461746160501b602082015290565b50604051614fa781611c4e565b60178152764d61726b65743a20726561736f6e20746f6f206c6f6e6760481b602082015290565b15614fd557565b60405162461bcd60e51b815260206004820152600e60248201526d13585c9ad95d0e881c185d5cd95960921b6044820152606490fd5b6001600160a01b03811633810361502157505050565b60009081526002602090815260408083203384529091529020829054106150a5576001600160a01b038116600090815260026020526040902060001990615069903390610e40565b5403615073575050565b6001600160a01b031660009081526002602052604090206150a190615099903390610e40565b918254613482565b9055565b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881b9bdd08185c1c1c9bdd995960621b6044820152606490fd5b93929190936150ee6142cc565b80516009546001600160801b039791881694929061515a9060209061511b906001600160a01b0316610829565b600e54601454604051638eb22cdd60e01b815260048101929092526001600160801b031660248201526001604482015292839190829081906064820190565b03915afa80156117035761517791600091615304575b508661348f565b806152d557506103e886985b602083015161519e90828c16906001600160801b03166142f2565b16106152c95761523561520e959493926151bf6148e68b8a61524696615322565b6151c8816105ea565b6151d38b825461348f565b90556040518a81526001600160a01b0382811698909761521b9287928b91600091600080516020615e17833981519152919081906020820190565b0390a38a600e54896153c8565b6001600160a01b0316600090815260256020526040902090565b602654600052602052604060002090565b61525186825461348f565b9055156152a157506009547f30a8c4f9ab5af7e1309ca87c32377d1a83366c5990472dbf9d262450eae14e3890615290906001600160a01b0316610829565b915b604051878152921691602090a4565b7f30a8c4f9ab5af7e1309ca87c32377d1a83366c5990472dbf9d262450eae14e389091615292565b50600096505050505050565b60208201516103e8916152fe91613719906152f8906001600160801b031661263d565b8a613426565b98615183565b61531c915060203d811161258a5761257b8183611cb2565b38615170565b91906153469061533061425c565b5060018060801b039182809216828651166142f2565b16835261535c81602085019316828451166142f2565b16905290565b6001600160a01b039182168152911660208201526040810191909152606081019190915260800190565b1561539357565b60405162461bcd60e51b815260206004820152600d60248201526c0a68e987440e8dede40daeac6d609b1b6044820152606490fd5b90919293600014615460575060095461541a916020916153f0906001600160a01b0316610829565b604051627eeac760e11b815230600482015260248101929092529092839190829081906044820190565b03915afa928315611703576105c09361543b92600091615442575b50613482565b101561538c565b61545a915060203d811161258a5761257b8183611cb2565b38615435565b600954919350919061547a906001600160a01b0316610829565b803b156105b0576154a8936000809460405196879586948593630208d92960e11b8552309060048601615362565b03925af18015611703576154b95750565b806154c66105c092611c69565b80610649565b6001600160801b03918216908216039190821161340457565b156154ec57565b60405162461bcd60e51b815260206004820152600e60248201526d14d1d30e881b5a5b881b1a5b5a5d60921b6044820152606490fd5b6024549093926001600160801b039160801c156156f2576155416142cc565b80519095906001600160801b031660095461556b9060209061511b906001600160a01b0316610829565b03915afa9182156117035785916000936156d2575b50169061558c9161348f565b6155969083613426565b6020870180519092916155b2916001600160801b03169061344f565b9687946155be836105ea565b858154906155cb91613482565b90556040518581526001600160a01b0393841694906000908690600080516020615e1783398151915290602090a3825161561190838916906001600160801b03166154cc565b6001600160801b031683528051868316906001600160801b031690615635916154cc565b6001600160801b03168152516001600160801b0316166103e81115615659906154e5565b615662906147cc565b6040519283528416917f6e853a5fd6b51d773691f542ebac8513c9992a51380d4c342031056a6411422890602090a4600954600e546001600160a01b0390911691823b156105b0576154a89260009283879360405196879586948593630208d92960e11b85523060048601615362565b6156eb91935060203d811161258a5761257b8183611cb2565b9138615580565b50600093505050565b6024546001600160801b0394939192919060801c156156f25761571c6142cc565b80519091906001600160801b03166009546157469060209061511b906001600160a01b0316610829565b03915afa918215611703578891600093615956575b5016906157679161348f565b6157719082613426565b602083018051909161578c916001600160801b03169061344f565b968793615798876105ea565b848154906157a591613482565b90556040518481526001600160a01b03888116949093916000908690600080516020615e1783398151915290602090a382516157ed90838916906001600160801b03166154cc565b6001600160801b031683528051868316906001600160801b031690615811916154cc565b6001600160801b03168152516001600160801b0316166103e81115615835906154e5565b61583e906147cc565b6040519283528416917f6e853a5fd6b51d773691f542ebac8513c9992a51380d4c342031056a6411422890602090a4600954600e546001600160a01b0390911691823b156105b0576158ae9260009283889360405196879586948593630208d92960e11b85523060048601615362565b03925af1801561170357615943575b506001600160a01b03811660009081526025602052604090206158ed602654809290600052602052604060002090565b5484111561591957506001600160a01b0316600090815260256020526040812061591690615235565b55565b6125456159389260018060a01b03166000526025602052604060002090565b6150a1838254613482565b806154c661595092611c69565b386158bd565b61596f91935060203d811161258a5761257b8183611cb2565b913861575b565b908060209392818452848401376000828201840152601f01601f1916010190565b9035601e19823603018112156105b05701602081359101916001600160401b0382116105b05781360383136105b057565b9060606159fc6105e79380356159dd8161059f565b6001600160a01b03168452602081810135908501526040810190615997565b9190928160408201520191615976565b908135815261ffff80615a2160208501611f07565b166020830152615a3360408401611f07565b16604082015260c06060830135615a498161059f565b6001600160a01b03908116606084015281615a99615a7e615a6d6080880188615997565b60e0608089015260e0880191615976565b615a8b60a0880188615997565b9087830360a0890152615976565b940135615aa58161059f565b1691015290565b606060c435615aba8161059f565b6001600160a01b0390811683528060e435615ad48161059f565b1660208401528061010435615ae88161059f565b16604084015261012435615afb8161059f565b16910152565b60609081813591615b118361059f565b6001600160a01b039283168552826020820135615b2d8161059f565b166020860152826040820135615b428161059f565b1660408601520135615afb8161059f565b91908082526020809201929160005b828110615b70575050505090565b9091929382806001928735615b848161059f565b848060a01b03168152019501910192919092615b62565b9082818152602080910193818360051b82010194846000925b858410615bc5575050505050505090565b909192939495968580615bed600193601f19868203018852615be78c88615997565b90615976565b990194019401929594939190615bb4565b9295969094969391936040519660209663e5644d8b60e01b888a01528060a48a01608060248c01525260c48901959060005b89828210615c9a575050505087850360231990810160448a0152818652936001600160fb1b0382116105b05761460f99612170988a9861076798615c8b9560051b809284830137018981036003190160648b01520191615b53565b92858403016084860152615b9b565b808499600193949535615cac8161059f565b848060a01b031681520198019101919091615c30565b15615cc957565b60405162461bcd60e51b815260206004820152600e60248201526d14d1d30e881b9bdd081d985b1a5960921b6044820152606490fd5b6034546001600160a01b03168015615d5d57816000929160208493519201905af490615d2961493d565b9115615d3157565b61243d615d3d83614f3e565b60405162461bcd60e51b81526020600482015291829160248301906106a0565b60405162461bcd60e51b815260206004820152601360248201527214d1d30e881b5bd91d5b19481b9bdd081cd95d606a1b6044820152606490fd5b6032546001600160a01b03168015615d5d57816000929160208493519201905af490615d2961493d565b6031546001600160a01b03168015615d5d57816000929160208493519201905af490615d2961493d565b6033546001600160a01b03168015615d5d57816000929160208493519201905af490615d2961493d56feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa264697066735822122077698ebb59f5f6b77a36cbe725e491ec2f146c875c00adc902384190cefc304864736f6c63430008120033", + "deployedBytecode": "0x6080604052600436101561001b575b361561001957600080fd5b005b60003560e01c8062a02a201461059a57806302ce728f1461059557806306fdde0314610590578063078dfbe71461058b578063095ea7b3146105865780630c4e84f01461058157806318160ddd1461057c5780631c9e379b146105775780631da8bf10146105725780631ee9c8f21461056d57806323b872dd1461056857806325384fd8146105635780632a9399d91461055e578063313ce56714610559578063331960ff1461055457806334d441d01461054f5780633644e5151461054a57806337b6b7b91461054557806338225f111461054057806338d52e0f1461053b5780633ba0b9a9146105365780633f741adb1461053157806340626d8b1461052c57806344de240a14610527578063473e3ce71461052257806348e4163e1461051d5780634d7f2a34146105185780634ddf47d4146105135780634e71e0c81461050e5780635224372c14610509578063529898f21461050457806352f353eb146104ff57806355140232146104fa57806355c2ab94146104f557806357935462146104f057806358db9afe146104eb5780635d5f73ef146104e65780635dfe04e8146104e15780636587adb8146104dc5780636c3d8b8f146104d757806370a08231146104d257806372778547146104cd57806374645ff3146104c85780637dc0d1d0146104c35780637ecebe00146104be5780637fa0b84e146104b9578063821226e8146104b45780638285ef40146104af5780638c5d0ed3146104aa5780638da5cb5b146104a5578063910dd7c8146104a0578063959916dc1461049b57806395d89b411461049657806399a97028146104915780639c5d71921461048c5780639e15e89f14610487578063a28e6b8214610482578063a9059cbb1461047d578063aa7d966514610478578063ae70702e14610473578063af405b4c1461046e578063b0e21e8a14610469578063b25ea8fb14610464578063b27c0e741461045f578063bb4cfe3b1461045a578063bf0b895814610455578063c861a52614610450578063cce19f811461044b578063cd0211eb14610446578063ce8849ed14610441578063d3fb2a381461043c578063d49dffa714610437578063d505accf14610432578063d8dfeb451461042d578063dd62ed3e14610428578063de40657714610423578063e0996cb61461041e578063e30c397814610419578063e5644d8b14610414578063e9a492521461040f578063ea64dd561461040a578063eec0f42e14610405578063f42760b714610400578063f4d93753146103fb578063f5b33dfa146103f6578063f8ba4cff146103f1578063f9557ccb146103ec5763ffe04c660361000e576130fa565b6130c8565b6130af565b613086565b61303c565b61301e565b613000565b612fe2565b612f5e565b612ed5565b612eac565b612e8e565b612e65565b612e29565b612e00565b612d52565b612c6f565b61298a565b612961565b6128fa565b6128a6565b61287d565b6127a6565b612788565b61274d565b6126c0565b6126a2565b61259c565b61248b565b61231a565b612175565b6120cb565b61208d565b61206f565b612044565b611faf565b611f91565b611f16565b611eb2565b611e94565b611e62565b611e44565b611e1a565b611ddd565b611db4565b611cd3565b611b9f565b611b24565b611afb565b611ab2565b611a1a565b6119f1565b61194e565b611930565b611906565b6118df565b6118b8565b61189b565b611822565b611743565b6114ec565b6114ce565b611491565b611473565b611455565b611437565b611413565b6113f5565b6113cc565b6110d7565b61108d565b61106a565b61104c565b61102e565b610f8d565b610eb5565b610e5f565b610d18565b610c1d565b610ad5565b610a48565b610a27565b610930565b6108ec565b6107a9565b6106d6565b610654565b610604565b6001600160a01b038116036105b057565b600080fd5b35906105c08261059f565b565b60409060031901126105b0576004356105da8161059f565b906024356105e78161059f565b90565b6001600160a01b0316600090815260016020526040902090565b346105b0576020610640610617366105c2565b6001600160a01b0391821660009081526003855260408082209290931681526020919091522090565b54604051908152f35b60009103126105b057565b346105b05760003660031901126105b057604061066f6138f1565b825191151582526020820152f35b60005b8381106106905750506000910152565b8181015183820152602001610680565b906020916106b98151809281855285808601910161067d565b601f01601f1916010190565b9060206105e79281815201906106a0565b346105b05760008060031936011261079c57808060018060a01b03600b541660405160208101906306fdde0360e01b82526004815261071481611c4e565b51915afa61072061493d565b9150156107855761076761077561073961078193614a59565b60405173546170696f63612053696e67756c61726974792d60601b6020820152928391603483015b90614926565b03601f198101835282611cb2565b604051918291826106c5565b0390f35b5061078161076761077561079761496d565b610739565b80fd5b801515036105b057565b346105b05760603660031901126105b0576004356107c68161059f565b602435906107d38261079f565b604435916107e08361079f565b6005546001600160a01b0391906107fa9083163314613118565b156108d3578116918215908115916108cb575b501561088e5760055461087c9290610835906001600160a01b03165b6001600160a01b031690565b7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b600680546001600160a01b0319169055005b60405162461bcd60e51b81526020600482015260156024820152744f776e61626c653a207a65726f206164647265737360581b6044820152606490fd5b90503861080d565b60068054919092166001600160a01b0319909116179055005b346105b05760403660031901126105b05761091660043561090c8161059f565b60243590336141e3565b602060405160018152f35b6004359060098210156105b057565b346105b05760403660031901126105b057610949610921565b6024356109558161079f565b6008546001600160a01b031633036109eb576109da8261098961098461097d61001996611b86565b5460ff1690565b151590565b61099884151591821415613395565b6109a461097d83611b86565b6109ad83611b77565b1515827feeec81de25875ce1725479bb76f720a8defdb43dea041919ae37bb4aae9847c0600080a4611b86565b9060ff801983541691151516179055565b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881d5b985d5d1a1bdc9a5e995960621b6044820152606490fd5b346105b05760003660031901126105b057602060245460801c604051908152f35b346105b05760203660031901126105b057600435610a658161059f565b60018060a01b031660005260186020526020604060002054604051908152f35b60ff8116036105b057565b60e09060031901126105b057600435610aa88161059f565b90602435610ab58161059f565b906044359060643590608435610aca81610a85565b9060a4359060c43590565b346105b057610ae336610a90565b9592809594959291924211610bab5761001996610ba693610b9393610b86878a610b7e8b610767610b8b99610b1786614168565b60405195869460208601988991959493909260c09360e08401977f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d685526000602086015260018060a01b038092166040860152166060840152608083015260a08201520152565b519020614112565b61409a565b919091613f7f565b6001600160a01b03838116911614613f1a565b614190565b60405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b9181601f840112156105b0578235916001600160401b0383116105b057602083818601950101116105b057565b346105b05760c03660031901126105b057600435610c3a8161059f565b608435610c468161059f565b60a435906001600160401b0382116105b05761078192610cc8610ccd92610767610c77610cdc963690600401610bf0565b604051958694630f74e47960e11b602087015260018060a01b0380921660248701526024356044870152604435606487015260643560848701521660a485015260c060c485015260e4840191615976565b615cff565b60208082518301019101613a2d565b6040519081529081906020820190565b60609060031901126105b057600435610d048161059f565b90602435610d118161059f565b9060443590565b346105b057610d60600080516020615e17833981519152610d3836610cec565b9291939083610d6f575b6040519384526001600160a01b039081169416929081906020820190565b0390a360405160018152602090f35b610d78856105ea565b54610d8585821015613cf3565b6001600160a01b038281169186918816839003610da5575b505050610d42565b6001600160a01b03881660009081526002602090815260408083203384529091529020610de993610de491548460018201610e11575b50501515613d38565b613482565b610df2866105ea565b55610dfc816105ea565b610e0785825461348f565b9055388481610d9d565b81610de482610e21941015613d7d565b6001600160a01b038b166000908152600260205260409020610e579033905b9060018060a01b0316600052602052604060002090565b553884610ddb565b346105b05760003660031901126105b0576032546040516001600160a01b039091168152602090f35b908160609103126105b05790565b908160e09103126105b05790565b60809060a31901126105b05760a490565b610120806003193601126105b057600435610ecf8161059f565b60443590610edc8261079f565b6001600160401b03906064358281116105b057610efd903690600401610e88565b936084359283116105b057610767610f8261001996610f70610f26610cc8973690600401610e96565b91610f3036610ea4565b95604051998a98632a9399d960e01b60208b015260018060a01b031660248a015260243560448a01521515606489015260848801526101448701906159c8565b8581036023190160a487015290615a0c565b9160c4840190615b01565b346105b05760008060031936011261079c57808060018060a01b03600d5416604051602081019063313ce56760e01b825260048152610fcb81611c4e565b51915afa90610fd861493d565b9180611023575b156110175760208280518101031261079c5750602061078191015161100381610a85565b60405160ff90911681529081906020820190565b50506107816012611003565b506020825114610fdf565b346105b05760003660031901126105b0576020601354604051908152f35b346105b05760003660031901126105b0576020601954604051908152f35b346105b05760003660031901126105b0576020611085613bd9565b604051908152f35b346105b05760003660031901126105b0576020601254604051908152f35b60a435906001600160401b03821682036105b057565b60c435906001600160401b03821682036105b057565b346105b0576101003660031901126105b0576004356064356044356024356084356111006110ab565b6111086110c1565b60e4359261112160018060a01b03600554163314613118565b620186a096611132888a1115613294565b611166602f54998060009b7fc353b09af857951dccce61b43a5854fc45beceed36c50e5d4cc2e71858a8e0df8d80a3602f55565b80611395575b5080611338575b506001600160401b039182811690816112d8575b505081811680611267575b50505080611230575b50806111ed575b50806111ac578280f35b6111ba6111e7928210615cc2565b806020547f1f1d0e9e5e3fd195010504141e7472fc7f53e44d7cd3f236f0892778039c63268580a3602055565b38808280f35b806111fd8461122a931115615cc2565b806028547f1a98b2490874ba87102ae05e5b66fbe02edfcfb7e8b4e2d60f9aef620de5e3378780a3602855565b386111a2565b8061126191602d547f6bdc0e1a8f6a69c7dcb57e254165094714bb2a8730e2fedd8c6e9b71e67478b58880a3602d55565b3861119b565b6112d092602c5461127b8282168411615cc2565b60401c167fb02a4833a4686ad41ec77a1e91a97a505459a34966985bf11c59b1e01852e4a68980a3602c805467ffffffffffffffff60401b191660409290921b67ffffffffffffffff60401b16919091179055565b388080611192565b6113319184602c546112f0828260401c168410615cc2565b167f6d780269adaf7a0d9858a89a8c090b0b3add5f7088ccac6f619ff2b22987e7d58b80a36001600160401b03166001600160401b0319602c541617602c55565b3880611187565b8061134f670de0b6b3a764000061137c9310615cc2565b80602a547f4d5fa9a75b98ca1386ef794acdb2601c953e99a9c7a94ed351a46e06dc1bab288b80a3602a55565b61138f61138a602a5461346c565b602b55565b38611173565b806113c6916029547fa55fca071799e1b20f7cdcdf447fcc08c886bdd0cb741bf8862a311921bbb3888c80a3602955565b3861116c565b346105b05760003660031901126105b057600d546040516001600160a01b039091168152602090f35b346105b05760003660031901126105b0576020601154604051908152f35b346105b05760603660031901126105b057602061108560443560243560043561353c565b346105b05760003660031901126105b0576020601654604051908152f35b346105b05760003660031901126105b0576020600e54604051908152f35b346105b05760003660031901126105b0576020601554604051908152f35b346105b05760203660031901126105b0576004356114ae8161059f565b60018060a01b031660005260176020526020604060002054604051908152f35b346105b05760003660031901126105b0576020602854604051908152f35b346105b05760203660031901126105b0576004356001600160401b0381116105b05761151c903690600401610bf0565b9060ff602254166117085761153391810190614b57565b600a80546001600160a01b0319166001600160a01b038b16179055989b919a989990989296939593926040519263de40657760e01b845260208460048160018060a01b03809e165afa998a1561170357806116a99f81809161161e6116a49f8f90848f6115cc826116679f9481956000916116d5575b5060098054919092166001600160a01b03166001600160a01b0319909116179055565b600a54611607906115e5906001600160a01b0316610829565b600580546001600160a01b0319166001600160a01b0392909216919091179055565b16151591826116c9575b826116bb575b5050614c07565b1695169316911692909160018060a01b03928380928160018060a01b03199716876031541617603155168560335416176033551683603254161760325516906034541617603455565b9391929060018060a01b0380948160018060a01b0319971687600d541617600d551685600b541617600b55600e55600c551690600f541617600f55565b614ca7565b610019600160ff196022541617602255565b9091501615158f8490611617565b8d821615159250611611565b6116f6915060203d81116116fc575b6116ee8183611cb2565b810190614bf2565b386115a9565b503d6116e4565b61385f565b60405162461bcd60e51b815260206004820152601360248201527213585c9ad95d0e881a5b9a5d1a585b1a5e9959606a1b6044820152606490fd5b346105b05760008060031936011261079c576006546001600160a01b0316338190036117de576005546117cb91908190611785906001600160a01b0316610829565b7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08580a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b600680546001600160a01b031916905580f35b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b346105b05761187661076761187161183936610cec565b6040516314890dcb60e21b60208201526001600160a01b03938416602482015292909116604483015260648201529182906084820190565b615d98565b6040818051810103126105b05780604060208193015191015182519182526020820152f35b346105b05760003660031901126105b05760208054604051908152f35b346105b05760003660031901126105b05760206001600160401b03602e5416604051908152f35b346105b05760003660031901126105b05760206001600160401b03602c5416604051908152f35b346105b05760003660031901126105b0576020602c546001600160401b036040519160401c168152f35b346105b05760003660031901126105b0576020601c54604051908152f35b346105b05760a03660031901126105b05760043561196b8161059f565b6064356119778161059f565b608435906001600160401b0382116105b05761078192610cc8610ccd926107676119a8610cdc963690600401610bf0565b604051958694632c6dcd7f60e11b602087015260018060a01b0380921660248701526024356044870152604435606487015216608485015260a060a485015260c4840191615976565b346105b05760003660031901126105b0576031546040516001600160a01b039091168152602090f35b346105b05760003660031901126105b057611a3361423d565b506080611a3e61430b565b509350505050604051916001600160401b0380825116845260208201511660208401526040600180861b039101511660408301526060820152f35b60809060031901126105b057600435611a918161059f565b90602435611a9e8161059f565b90604435611aab8161079f565b9060643590565b346105b0576020611085611ac536611a79565b92600760009392935260078652611ae460ff6040600020541615614fce565b611aee848261500b565b611af66147f3565b6150e1565b346105b05760003660031901126105b057600a546040516001600160a01b039091168152602090f35b346105b05760203660031901126105b057600435611b418161059f565b60018060a01b031660005260016020526020604060002054604051908152f35b634e487b7160e01b600052602160045260246000fd5b60091115611b8157565b611b61565b6009811015611b81576000526007602052604060002090565b346105b05760203660031901126105b057611bb8610921565b6009811015611b81576000526007602052602060ff604060002054166040519015158152f35b90600182811c92168015611c0e575b6020831014611bf857565b634e487b7160e01b600052602260045260246000fd5b91607f1691611bed565b634e487b7160e01b600052604160045260246000fd5b606081019081106001600160401b03821117611c4957604052565b611c18565b604081019081106001600160401b03821117611c4957604052565b6001600160401b038111611c4957604052565b60c081019081106001600160401b03821117611c4957604052565b60e081019081106001600160401b03821117611c4957604052565b90601f801991011681019081106001600160401b03821117611c4957604052565b346105b05760008060031936011261079c5760405181601054611cf581611bde565b80845290600190818116908115611d8c5750600114611d33575b61078184611d1f81880382611cb2565b6040519182916020835260208301906106a0565b60108352602094507f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae6725b828410611d79575050508161078193611d1f9282010193611d0f565b8054858501870152928501928101611d5d565b6107819650611d1f9450602092508593915060ff191682840152151560051b82010193611d0f565b346105b05760003660031901126105b057600f546040516001600160a01b039091168152602090f35b346105b05760203660031901126105b057600435611dfa8161059f565b60018060a01b031660005260046020526020604060002054604051908152f35b346105b05760403660031901126105b057610916600435611e3a8161059f565b6024359033614190565b346105b05760003660031901126105b0576020602d54604051908152f35b346105b05760003660031901126105b057601454604080516001600160801b038316815260809290921c602083015290f35b346105b05760003660031901126105b0576020601b54604051908152f35b346105b05760003660031901126105b0576005546040516001600160a01b039091168152602090f35b6001600160401b038111611c4957601f01601f191660200190565b6024359061ffff821682036105b057565b359061ffff821682036105b057565b346105b05760403660031901126105b0576004356001600160401b0381116105b057366023820112156105b0578060040135611f5181611edb565b90611f5f6040519283611cb2565b80825236602482850101116105b057602081600092602461001996018386013783010152611f8b611ef6565b90613dc4565b346105b05760003660031901126105b0576020602f54604051908152f35b346105b05760008060031936011261079c57808060018060a01b03600b541660405160208101906395d89b4160e01b825260048152611fed81611c4e565b51915afa611ff961493d565b91501561202d5761076761077561201261078193614a59565b60405162746d2d60e81b602082015292839160238301610761565b5061078161076761077561203f61496d565b612012565b346105b05760403660031901126105b05760206110856004356120668161059f565b60243590613b05565b346105b05760003660031901126105b0576020602b54604051908152f35b346105b05760403660031901126105b05760606120b86004356120af8161059f565b60243590613620565b9060405192835260208301526040820152f35b346105b05760803660031901126105b0576004356120e88161059f565b6024356120f48161059f565b604435906121018261059f565b606435926001600160401b0384116105b0576107676121709261212b610019963690600401610bf0565b60405163514735c160e11b60208201526001600160a01b03958616602482015292851660448401529390951660648201526080608482015293849260a4840191615976565b615dc2565b346105b05760403660031901126105b0576004356121928161059f565b602435801580159061223c575b6121d2575b6040519081526001600160a01b03909116903390600080516020615e17833981519152908060208101610d60565b6121db336105ea565b546121e882821015613cf3565b6001600160a01b03831690829033839003612206575b5050506121a4565b610de4612214931515613d38565b61221d336105ea565b55612227826105ea565b61223282825461348f565b90553881816121fe565b50336001600160a01b0383161461219f565b9181601f840112156105b0578235916001600160401b0383116105b0576020808501948460051b0101116105b057565b906040820191604081528151809352606081019260208093019060005b81811061230457505050818184039101528251908183528083019281808460051b8301019501936000915b8483106122d65750505050505090565b90919293949584806122f4600193601f198682030187528a516106a0565b98019301930191949392906122c6565b825115158652948401949184019160010161229b565b346105b0576040806003193601126105b057600480356001600160401b0381116105b05761234b903690830161224e565b92906024356123598161079f565b60026030541461244857600260305561237185614e69565b9361237b86614e91565b95600090815b8181106123a2578888610781896123986001603055565b519283928361227e565b82806123af83858a614edb565b906123be8b5180938193614f1c565b0390305af46123cb61493d565b90801580612441575b61241a5782916123f56123fa926123ee612415968e614f2a565b9015159052565b614f3e565b612404828c614f2a565b5261240f818b614f2a565b50614159565b612381565b888661243d61242885614f3e565b925162461bcd60e51b815292839283016106c5565b0390fd5b50866123d4565b825162461bcd60e51b8152602081860152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606490fd5b346105b05760403660031901126105b0576004356124a88161059f565b61250a60243591600e548314600014612591576020602654935b6009546124d7906001600160a01b0316610829565b604051627eeac760e11b81526001600160a01b038516600482015260248101929092529093849190829081906044820190565b03915afa80156117035761078193610cdc9360009261255b575b50612545612554929360018060a01b03166000526025602052604060002090565b90600052602052604060002090565b549061348f565b61255492506125836125459160203d811161258a575b61257b8183611cb2565b810190613a2d565b9250612524565b503d612571565b6020602754936124c2565b346105b05760008060031936011261079c57610cdc6107819160018060a01b036125cb81600554163314613118565b600a5481166001600160a01b03166023549092906001600160801b039060801c16612605575b50506125fc816105ea565b54903390615522565b61260d6147f3565b7fbe641c3ffc44b2d6c184f023fa4ed7bda4b6ffa71e03b3c98ae0c776da1f17e761264961263d60235460801c90565b6001600160801b031690565b92612653856105ea565b61265e85825461348f565b90558416918281600080516020615e178339815191526040518061268789829190602083019252565b0390a3602380546001600160801b0316905580a338806125f1565b346105b05760003660031901126105b0576020601a54604051908152f35b346105b05760403660031901126105b0576024356126dd8161059f565b6126f260018060a01b03600554163314613118565b60008080808094600435905af161270761493d565b50156127105780f35b60405162461bcd60e51b815260206004820152601560248201527429a3a61d103a3930b739b332b9103330b4b632b21760591b6044820152606490fd5b346105b05760003660031901126105b0576060602354604051906001600160401b0380821683528160401c16602083015260801c6040820152f35b346105b05760003660031901126105b0576020601e54604051908152f35b346105b05760403660031901126105b05760245460095461281c906020906127d6906001600160a01b0316610829565b6014546001600160801b0316906040518080958194638eb22cdd60e01b8352602435600484019081526001600160801b0390911660208201526001604082015260600190565b03915afa9182156117035761285561284d61078194610cdc9460009161285f575b506001600160801b03841661348f565b600435613426565b9060801c9061344f565b612877915060203d811161258a5761257b8183611cb2565b3861283d565b346105b05760003660031901126105b0576033546040516001600160a01b039091168152602090f35b346105b0576100196107676128f56128bd36610cec565b60405163cce19f8160e01b60208201526001600160a01b03938416602482015292909116604483015260648201529182906084820190565b615dec565b346105b057602061108561295361291036611a79565b60405163cd0211eb60e01b888201526001600160a01b03948516602482015293909216604484015215156064830152608480830191909152815261187181611c7c565b828082518301019101613a2d565b346105b05760003660031901126105b0576008546040516001600160a01b039091168152602090f35b346105b0576101603660031901126105b0576004356129a88161059f565b6024356001600160401b0381116105b0576129c7903690600401610bf0565b916044356129d48161059f565b60643560843560a4359060c4359260e4359461010435966101243598610144359a60018060a01b0392612a0c84600554163314613118565b838116612c25575b5080612bf0575b505081169081612b88575b505080612b6a575b5080612b4c575b5080612b2f575b5080612b05575b5080612adb575b5080612aa3575b5080612a77575b5080612a6057005b61001990612a72601e5482101561332e565b601f55565b80612a8a620186a0612a9d931115613294565b612a98601f548211156132d4565b601e55565b38612a58565b80612ad5916016547fae6e0ab3b95f0a53ff9660a390ccedcbbf1f2355dce974a9841af106fddcfaba600080a3601655565b38612a51565b80612aed620186a0612aff9310613294565b612afa601b548211613294565b601c55565b38612a4a565b80612b17620186a0612b299310613294565b612b24601c548210613294565b601b55565b38612a43565b80612b41620186a0612b469310613294565b601d55565b38612a3c565b80612b5f620186a0612b64931115613294565b601a55565b38612a35565b80612b7d620186a0612b82931115613294565b601955565b38612a2e565b600854612be99290612ba2906001600160a01b0316610829565b7f5a62d22209e370e38eea92cfddcd228e656e6ec139243392a760a7769f5877fd600080a3600880546001600160a01b0319166001600160a01b0392909216919091179055565b3880612a26565b612bf9916131b7565b7fa6f004921c944d4b8bf6e38462b00f36a58d62495d56b51f571ab78f732c9815600080a13880612a1b565b600f80546001600160a01b0319166001600160a01b039092169190911790557f0b2d6eb667d0522c3eb86e4288afecae6c11591ffd1345d4d12407e0598bca9b600080a138612a14565b610140806003193601126105b05760043590612c8a8261059f565b60643590612c978261079f565b6001600160401b03926084358481116105b057612cb8903690600401610e88565b9360a4359081116105b057612cd1903690600401610e96565b9360803660c31901126105b05761001994612d34612d4692610cc89560405197889663d49dffa760e01b602089015260018060a01b03166024880152602435604488015260443560648801521515608487015260a48601526101648501906159c8565b8381036023190160c485015290615a0c565b61076760e48301615aac565b346105b057612d6036610a90565b9592809594959291924211610bab5761001996612dfb93610b9393610b86878a610b7e8b610767610b8b99612d9486614168565b60405195869460208601988991959493909260c09360e08401977f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e26685526000602086015260018060a01b038092166040860152166060840152608083015260a08201520152565b6141e3565b346105b05760003660031901126105b057600b546040516001600160a01b039091168152602090f35b346105b0576020610640612e3c366105c2565b6001600160a01b0391821660009081526002855260408082209290931681526020919091522090565b346105b05760003660031901126105b0576009546040516001600160a01b039091168152602090f35b346105b05760003660031901126105b0576020601d54604051908152f35b346105b05760003660031901126105b0576006546040516001600160a01b039091168152602090f35b346105b05760803660031901126105b0576001600160401b036004358181116105b057612f0690369060040161224e565b906024358381116105b057612f1f90369060040161224e565b906044358581116105b057612f3890369060040161224e565b9290916064359687116105b057612f5661001997369060040161224e565b969095615bfe565b346105b05760a03660031901126105b057610019600435612f7e8161059f565b60243590612f8b8261059f565b60443590612f988261079f565b604051926374d2492960e11b602085015260018060a01b03809216602485015216604483015215156064820152606435608482015260843560a482015260a481526128f581611c97565b346105b05760003660031901126105b0576020601f54604051908152f35b346105b05760003660031901126105b0576020600c54604051908152f35b346105b05760003660031901126105b0576020602a54604051908152f35b346105b057602061307f61108561305236610cec565b9060086000959395526007865261307160ff6040600020541615614fce565b6130796147f3565b846156fb565b809261500b565b346105b05760003660031901126105b0576034546040516001600160a01b039091168152602090f35b346105b05760003660031901126105b0576100196147f3565b346105b05760003660031901126105b057602454604080516001600160801b038316815260809290921c602083015290f35b346105b05760003660031901126105b0576020602954604051908152f35b1561311f57565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b601f811161316f575050565b6000906010825260208220906020601f850160051c830194106131ad575b601f0160051c01915b8281106131a257505050565b818155600101613196565b909250829061318d565b91906001600160401b038111611c49576131db816131d6601054611bde565b613163565b6000601f82116001146132155781929360009261320a575b50508160011b916000199060031b1c191617601055565b0135905038806131f3565b6010600052601f198216937f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae67291805b86811061327c5750836001959610613262575b505050811b01601055565b0135600019600384901b60f8161c19169055388080613257565b90926020600181928686013581550194019101613244565b1561329b57565b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881b9bdd081d985b1a59607a1b6044820152606490fd5b156132db57565b60405162461bcd60e51b815260206004820152602560248201527f4d61726b65743a20636f6c6c61746572616c697a6174696f6e5261746520746f6044820152646f2062696760d81b6064820152608490fd5b1561333557565b60405162461bcd60e51b815260206004820152603260248201527f4d61726b65743a206c69717569646174696f6e436f6c6c61746572616c697a616044820152711d1a5bdb94985d19481d1bdbc81cdb585b1b60721b6064820152608490fd5b1561339c57565b60405162461bcd60e51b81526020600482015260126024820152714d61726b65743a2073616d6520737461746560701b6044820152606490fd5b634e487b7160e01b600052601160045260246000fd5b90620186a09182810292818404149015171561340457565b6133d6565b90670de0b6b3a76400009182810292818404149015171561340457565b8181029291811591840414171561340457565b634e487b7160e01b600052601260045260246000fd5b8115613459570490565b613439565b604d811161340457600a0a90565b90670de0b6b3a764000091820391821161340457565b9190820391821161340457565b9190820180921161340457565b8181039291600013801582851316918412161761340457565b906509184e72a0009182810292818405149015171561340457565b90670de0b6b3a76400009182810292818405149015171561340457565b818102929160008212600160ff1b82141661340457818405149015171561340457565b811561345957600160ff1b8114600019831416613404570590565b600160ff1b81146134045760000390565b60145491929190613557906001600160801b03831690613426565b9060801c9081156134595761358491613575910493601f5490613426565b61357e8361345e565b9061344f565b90818310613618576135e96135e36135de6135a26135ee9587613482565b936135d96135d36135ca601e546135c46135bb8661345e565b6020549061348f565b90613426565b61357e8461345e565b9161345e565b61349c565b6134b5565b916134d0565b613510565b6000811215613612576136009061352b565b905b80821161360d575090565b905090565b90613602565b505050600090565b6001600160a01b0381166000908152601760205260408120549193929091801561379a576136ce9061365061425c565b5061365961430b565b505050505094905061366c8415156139e1565b600954602090613684906001600160a01b0316610829565b600c546001600160a01b038a1660009081526018602052604080822054905163442c159960e01b815260048101939093526024830152604482015294859190829081906064820190565b03915afa928315611703576137719561357e61263d602061373561371e8a61371961371061376b9c6137449a8c9161377d575b50602154620186a090046135c4565b601e5490613426565b61344f565b85519098906135c4906001600160801b031661263d565b9301516001600160801b031690565b908282106137755750035b6001600160a01b03909516600090815260186020526040902090565b54613a3c565b9091565b91505061374f565b6137949150873d811161258a5761257b8183611cb2565b38613701565b505080919250918190565b91908260409103126105b057602082516137be8161079f565b92015190565b6020808252600091601054916137d983611bde565b928382840152600190818116908160001461383c57506001146137fe575b5050505090565b929350601060005280600020926000935b85851061382857505050604092500101388080806137f7565b80548585016040015293820193810161380f565b925050506040935060ff929192191683830152151560051b0101388080806137f7565b6040513d6000823e3d90fd5b1561387257565b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881c985d19481d1bdbc81bdb1960621b6044820152606490fd5b156138b557565b60405162461bcd60e51b81526020600482015260146024820152734d61726b65743a20696e76616c6964207261746560601b6044820152606490fd5b600f54613906906001600160a01b0316610829565b6040805163d6d7d52560e01b81529291839081600081613928600482016137c4565b03925af180156117035760009283916139ad575b509082156139885761394f8215156138ae565b61395882601155565b817f9f9192b5edb17356c524e08d9e025c8e2f6307e6ea52fb7968faa3081f51c3c8600080a25b6105c042601355565b90506139a461399c6013546012549061348f565b42111561386b565b6011549061397f565b90506139d191925060403d81116139da575b6139c98183611cb2565b8101906137a5565b9190913861393c565b503d6139bf565b156139e857565b60405162461bcd60e51b815260206004820152601e60248201527f4d61726b65743a2065786368616e676552617465206e6f742076616c696400006044820152606490fd5b908160209103126105b0575190565b613a916020831592613a4e84156139e1565b600954600c5460405163442c159960e01b81526004810191909152602481019290925260006044830152909283916001600160a01b031690829081906064820190565b03915afa801561170357613ab191600091613acb575b5060215490613426565b906134595704620186a0613ac7601e5483613426565b0491565b613ae3915060203d811161258a5761257b8183611cb2565b38613aa7565b9190916000838201938412911290801582169115161761340457565b90613b29613b479161376b8460018060a01b03166000526018602052604060002090565b6001600160a01b039093166000908152601760205260409020909291565b548015613618578215613618578281106136185781811015613bd05782613b90613b8b613b9695610de461357e956128556014549160018060801b03831690613426565b6133ec565b92613482565b613bc4601b5491613bbf613bb6601c5492613bb1848761349c565b6134ed565b620186a0900590565b613ae9565b9080821261360d575090565b505050601b5490565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03161480613cca575b15613c34577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f000000000000000000000000000000000000000000000000000000000000000082527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a08152613cc481611c7c565b51902090565b507f00000000000000000000000000000000000000000000000000000000000000004614613c0b565b15613cfa57565b60405162461bcd60e51b815260206004820152601660248201527545524332303a2062616c616e636520746f6f206c6f7760501b6044820152606490fd5b15613d3f57565b60405162461bcd60e51b815260206004820152601660248201527545524332303a206e6f207a65726f206164647265737360501b6044820152606490fd5b15613d8457565b60405162461bcd60e51b815260206004820152601860248201527745524332303a20616c6c6f77616e636520746f6f206c6f7760401b6044820152606490fd5b6101009081818051810103126105b0576020810151613de28161079f565b604082015192613df18461059f565b606083015194613e008661059f565b60808401519460a085015160c086015193613e1a85610a85565b60e08701519601516001600160a01b0392831698831696428310610bab57613edc95613ed08a8c610b7e8199610767613ed5998f8f600014613ef3577f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e266965b613e8287614168565b60408051602081019a8b5261ffff909716908701526001600160a01b03978816606087015296909116608085015260a084015260c083019490945260e0820193909352918290610100820190565b613f66565b1614613f1a565b15613eea576105c0926141e3565b6105c092614190565b7f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d696613e79565b15613f2157565b60405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152606490fd5b916105e79391610b8b9361409a565b60051115611b8157565b613f8881613f75565b80613f905750565b613f9981613f75565b60018103613fe15760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b6044820152606490fd5b613fea81613f75565b600281036140375760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606490fd5b80614043600392613f75565b1461404a57565b60405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608490fd5b9291906fa2a8918ca85bafe22016d0b997e4df60600160ff1b0383116141065791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa156117035781516001600160a01b03811615614100579190565b50600190565b50505050600090600390565b61411a613bd9565b9060405190602082019261190160f01b84526022830152604282015260428152608081018181106001600160401b03821117611c495760405251902090565b60001981146134045760010190565b6001600160a01b0316600090815260046020526040902080549061418b82614159565b905590565b6001600160a01b03908116600081815260036020908152604080832095909416808352949052918220849055907fe50de2333c10a9502fcb1d8ae13a51bbf423153dfc63c2b8997665b32154afc39080a4565b6001600160a01b0390811660008181526002602090815260408083208686168452825290912091937f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259391928690556040519586521693a3565b6040519061424a82611c2e565b60006040838281528260208201520152565b6040519061426982611c4e565b60006020838281520152565b6040519061428282611c2e565b8160406023546001600160401b03808216845281831c16602084015260801c910152565b604051906142b382611c4e565b6014546001600160801b038116835260801c6020830152565b604051906142d982611c4e565b6024546001600160801b038116835260801c6020830152565b6001600160801b03918216908216019190821161340457565b61431361423d565b5061431c61425c565b5061432561425c565b5061432e614275565b906143376142a6565b906143406142cc565b906143a560008061435b61082960095460018060a01b031690565b600e54865160405163442c159960e01b808252600482018490526001600160801b039092166024820152600060448201529296602096919590939092918790829081906064820190565b03818b5afa8015611703576143d69184916147af575b508a516143d0906001600160801b031661263d565b9061348f565b8061478c575081945b8a61440c6144066143fa8a8a9401516001600160401b031690565b6001600160401b031690565b42613482565b96871561476457506001600160401b03428116898e01528b8901516001600160801b039995919491939192908a161561470657508b518d518692918a91614467916001600160401b03909116906001600160801b0316613426565b9061447191613426565b8d51670de0b6b3a76400009091049b908e90614499908d8f16906001600160801b03166142f2565b6001600160801b039081169091528d5160405193845260048401959095529390931660248201526000604482015291829060649082905afa8015611703578461455161452d8f978f613719908f9261263d6135c4916137356145186145739b6145249d8f916146e9575b5086516143d0906001600160801b031661263d565b9b8c97601a5490613426565b620186a0900490565b9a8b169161455e604089016145518561454c835160018060801b031690565b6142f2565b6001600160801b03169052565b8d0180519092906001600160801b03166142f2565b806146c65750945b602954868181101561461f57936137196145df936145c66143fa6145d16145cb6145b8886137196145b36145ec9d9e6143fa9c613482565b613409565b946145c6602d549680613426565b613426565b8461348f565b94516001600160401b031690565b6001600160401b03168a52565b88516001600160401b0316602c546001600160401b031691808316911610614612575b50565b6001600160401b03168852565b919050602a54808311614634575b5050505050565b6146b4946145c66143fa61467761467161466361465a6145b3613719986146859b613482565b602b549061344f565b966145c6602d549880613426565b8661348f565b92516001600160401b031690565b602c5461469d9060401c6001600160401b03166143fa565b8082116146be575b50166001600160401b03168952565b873880808061462d565b9050386146a5565b8a516146e39250613719906145b3906001600160801b031661263d565b9461457b565b6147009150843d861161258a5761257b8183611cb2565b38614503565b985050509650929798935050945061472582516001600160401b031690565b602e546001600160401b03169180831691160361474f575b5094936147486142cc565b9383929190565b6001600160401b03168152600194503861473d565b9a5050505095509693505050509261477a6142a6565b926147836142cc565b92809281929190565b89516147a99190613719906145b3906001600160801b031661263d565b946143df565b6147c69150883d8a1161258a5761257b8183611cb2565b386143bb565b805160209091015160801b6001600160801b0319166001600160801b039190911617602455565b6105c06148bf6148e661480461430b565b9397949593909290156148eb575050506001600160401b03602e54166000807f33af5ce86e8438eff54589f85332916444457dfa8685493fbd579b809097026b6020604051838152a45b6148786001600160401b038251166001600160401b03166001600160401b03196023541617602355565b6020810151602380546040938401516001600160401b039091169290931b67ffffffffffffffff60401b169190911760809290921b6001600160801b031916919091179055565b805160209091015160801b6001600160801b0319166001600160801b039190911617601455565b6147cc565b7f33af5ce86e8438eff54589f85332916444457dfa8685493fbd579b809097026b60206001600160401b0386511694604051908152a461484e565b906149396020928281519485920161067d565b0190565b3d15614968573d9061494e82611edb565b9161495c6040519384611cb2565b82523d6000602084013e565b606090565b6040519061497a82611c4e565b60038252623f3f3f60e81b6020830152565b634e487b7160e01b600052603260045260246000fd5b9081518110156149b3570160200190565b61498c565b60ff1660ff81146134045760010190565b906149d382611edb565b6149e06040519182611cb2565b82815280926149f1601f1991611edb565b0190602036910137565b6020818303126105b0578051906001600160401b0382116105b0570181601f820112156105b0578051614a2d81611edb565b92614a3b6040519485611cb2565b818452602082840101116105b0576105e7916020808501910161067d565b805160408110614a775750806020806105e7935183010191016149fb565b602092908303614b4c576000805b60ff81168581109081614b2a575b5015614aa757614aa2906149b8565b614a85565b92614ab560ff8095166149c9565b92825b85811687811080614b0b575b15614b00579081614af5614aec614ade614afb95886149a2565b516001600160f81b03191690565b871a91886149a2565b536149b8565b614ab8565b505094505050905090565b506001600160f81b0319614b22614ade83876149a2565b161515614ac4565b6001600160f81b03199150614b4390614ade90876149a2565b16151538614a93565b9150506105e761496d565b90816101a09103126105b0578035614b6e8161059f565b916020820135614b7d8161059f565b916040810135614b8c8161059f565b91614b99606083016105b5565b91614ba6608082016105b5565b91614bb360a083016105b5565b9160c081013591614bc660e083016105b5565b9161010081013591614bdb61012083016105b5565b916101408101359161018061016083013592013590565b908160209103126105b057516105e78161059f565b15614c0e57565b60405162461bcd60e51b815260206004820152600d60248201526c29a3a61d103130b2103830b4b960991b6044820152606490fd5b15614c4a57565b60405162461bcd60e51b815260206004820152602f60248201527f53474c3a206c69717569646174696f6e436f6c6c61746572616c697a6174696f60448201526e1b94985d19481b9bdd081d985b1a59608a1b6064820152608490fd5b614cc263097343e06001600160401b0319602c541617602c55565b602c805467ffffffffffffffff60401b19166324ea412360491b179055614cf97054a2b63d65d79d094abb66880000000000602d55565b614d2a614d0e602c546001600160401b031690565b6001600160401b03166001600160401b0319602e541617602e55565b614d5b614d3f602e546001600160401b031690565b6001600160401b03166001600160401b03196023541617602355565b614d636138f1565b5050614d706103e8601955565b614d7a6000601a55565b614d846032602f55565b614d8f612ee0602055565b8015614e4557601e555b8015614e3857601f555b614db2601f54601e5410614c43565b614dbd6161a8602855565b8015614e26576021555b614dd362013880601b55565b614ddf62015f90601c55565b614dea612710601d55565b614dfb670429d069189e0000602955565b614e0c6706f05b59d3b20000602a55565b614e1a61138a602a5461346c565b6105c062015180601255565b50614dc7670de0b6b3a7640000602155565b50614da362013880612a72565b50614d99620124f8612a98565b6001600160401b038111611c495760051b60200190565b90614e7382614e52565b614e806040519182611cb2565b82815280926149f1601f1991614e52565b90614e9b82614e52565b614ea86040519182611cb2565b8281528092614eb9601f1991614e52565b019060005b828110614eca57505050565b806060602080938501015201614ebe565b91908110156149b35760051b81013590601e19813603018212156105b05701908135916001600160401b0383116105b05760200182360381136105b0579190565b908092918237016000815290565b80518210156149b35760209160051b010190565b6103e8815111614f9a576044815110614f67578060248060046105e794015183010191016149fb565b50604051614f7481611c4e565b60168152754d61726b65743a206e6f2072657475726e206461746160501b602082015290565b50604051614fa781611c4e565b60178152764d61726b65743a20726561736f6e20746f6f206c6f6e6760481b602082015290565b15614fd557565b60405162461bcd60e51b815260206004820152600e60248201526d13585c9ad95d0e881c185d5cd95960921b6044820152606490fd5b6001600160a01b03811633810361502157505050565b60009081526002602090815260408083203384529091529020829054106150a5576001600160a01b038116600090815260026020526040902060001990615069903390610e40565b5403615073575050565b6001600160a01b031660009081526002602052604090206150a190615099903390610e40565b918254613482565b9055565b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881b9bdd08185c1c1c9bdd995960621b6044820152606490fd5b93929190936150ee6142cc565b80516009546001600160801b039791881694929061515a9060209061511b906001600160a01b0316610829565b600e54601454604051638eb22cdd60e01b815260048101929092526001600160801b031660248201526001604482015292839190829081906064820190565b03915afa80156117035761517791600091615304575b508661348f565b806152d557506103e886985b602083015161519e90828c16906001600160801b03166142f2565b16106152c95761523561520e959493926151bf6148e68b8a61524696615322565b6151c8816105ea565b6151d38b825461348f565b90556040518a81526001600160a01b0382811698909761521b9287928b91600091600080516020615e17833981519152919081906020820190565b0390a38a600e54896153c8565b6001600160a01b0316600090815260256020526040902090565b602654600052602052604060002090565b61525186825461348f565b9055156152a157506009547f30a8c4f9ab5af7e1309ca87c32377d1a83366c5990472dbf9d262450eae14e3890615290906001600160a01b0316610829565b915b604051878152921691602090a4565b7f30a8c4f9ab5af7e1309ca87c32377d1a83366c5990472dbf9d262450eae14e389091615292565b50600096505050505050565b60208201516103e8916152fe91613719906152f8906001600160801b031661263d565b8a613426565b98615183565b61531c915060203d811161258a5761257b8183611cb2565b38615170565b91906153469061533061425c565b5060018060801b039182809216828651166142f2565b16835261535c81602085019316828451166142f2565b16905290565b6001600160a01b039182168152911660208201526040810191909152606081019190915260800190565b1561539357565b60405162461bcd60e51b815260206004820152600d60248201526c0a68e987440e8dede40daeac6d609b1b6044820152606490fd5b90919293600014615460575060095461541a916020916153f0906001600160a01b0316610829565b604051627eeac760e11b815230600482015260248101929092529092839190829081906044820190565b03915afa928315611703576105c09361543b92600091615442575b50613482565b101561538c565b61545a915060203d811161258a5761257b8183611cb2565b38615435565b600954919350919061547a906001600160a01b0316610829565b803b156105b0576154a8936000809460405196879586948593630208d92960e11b8552309060048601615362565b03925af18015611703576154b95750565b806154c66105c092611c69565b80610649565b6001600160801b03918216908216039190821161340457565b156154ec57565b60405162461bcd60e51b815260206004820152600e60248201526d14d1d30e881b5a5b881b1a5b5a5d60921b6044820152606490fd5b6024549093926001600160801b039160801c156156f2576155416142cc565b80519095906001600160801b031660095461556b9060209061511b906001600160a01b0316610829565b03915afa9182156117035785916000936156d2575b50169061558c9161348f565b6155969083613426565b6020870180519092916155b2916001600160801b03169061344f565b9687946155be836105ea565b858154906155cb91613482565b90556040518581526001600160a01b0393841694906000908690600080516020615e1783398151915290602090a3825161561190838916906001600160801b03166154cc565b6001600160801b031683528051868316906001600160801b031690615635916154cc565b6001600160801b03168152516001600160801b0316166103e81115615659906154e5565b615662906147cc565b6040519283528416917f6e853a5fd6b51d773691f542ebac8513c9992a51380d4c342031056a6411422890602090a4600954600e546001600160a01b0390911691823b156105b0576154a89260009283879360405196879586948593630208d92960e11b85523060048601615362565b6156eb91935060203d811161258a5761257b8183611cb2565b9138615580565b50600093505050565b6024546001600160801b0394939192919060801c156156f25761571c6142cc565b80519091906001600160801b03166009546157469060209061511b906001600160a01b0316610829565b03915afa918215611703578891600093615956575b5016906157679161348f565b6157719082613426565b602083018051909161578c916001600160801b03169061344f565b968793615798876105ea565b848154906157a591613482565b90556040518481526001600160a01b03888116949093916000908690600080516020615e1783398151915290602090a382516157ed90838916906001600160801b03166154cc565b6001600160801b031683528051868316906001600160801b031690615811916154cc565b6001600160801b03168152516001600160801b0316166103e81115615835906154e5565b61583e906147cc565b6040519283528416917f6e853a5fd6b51d773691f542ebac8513c9992a51380d4c342031056a6411422890602090a4600954600e546001600160a01b0390911691823b156105b0576158ae9260009283889360405196879586948593630208d92960e11b85523060048601615362565b03925af1801561170357615943575b506001600160a01b03811660009081526025602052604090206158ed602654809290600052602052604060002090565b5484111561591957506001600160a01b0316600090815260256020526040812061591690615235565b55565b6125456159389260018060a01b03166000526025602052604060002090565b6150a1838254613482565b806154c661595092611c69565b386158bd565b61596f91935060203d811161258a5761257b8183611cb2565b913861575b565b908060209392818452848401376000828201840152601f01601f1916010190565b9035601e19823603018112156105b05701602081359101916001600160401b0382116105b05781360383136105b057565b9060606159fc6105e79380356159dd8161059f565b6001600160a01b03168452602081810135908501526040810190615997565b9190928160408201520191615976565b908135815261ffff80615a2160208501611f07565b166020830152615a3360408401611f07565b16604082015260c06060830135615a498161059f565b6001600160a01b03908116606084015281615a99615a7e615a6d6080880188615997565b60e0608089015260e0880191615976565b615a8b60a0880188615997565b9087830360a0890152615976565b940135615aa58161059f565b1691015290565b606060c435615aba8161059f565b6001600160a01b0390811683528060e435615ad48161059f565b1660208401528061010435615ae88161059f565b16604084015261012435615afb8161059f565b16910152565b60609081813591615b118361059f565b6001600160a01b039283168552826020820135615b2d8161059f565b166020860152826040820135615b428161059f565b1660408601520135615afb8161059f565b91908082526020809201929160005b828110615b70575050505090565b9091929382806001928735615b848161059f565b848060a01b03168152019501910192919092615b62565b9082818152602080910193818360051b82010194846000925b858410615bc5575050505050505090565b909192939495968580615bed600193601f19868203018852615be78c88615997565b90615976565b990194019401929594939190615bb4565b9295969094969391936040519660209663e5644d8b60e01b888a01528060a48a01608060248c01525260c48901959060005b89828210615c9a575050505087850360231990810160448a0152818652936001600160fb1b0382116105b05761460f99612170988a9861076798615c8b9560051b809284830137018981036003190160648b01520191615b53565b92858403016084860152615b9b565b808499600193949535615cac8161059f565b848060a01b031681520198019101919091615c30565b15615cc957565b60405162461bcd60e51b815260206004820152600e60248201526d14d1d30e881b9bdd081d985b1a5960921b6044820152606490fd5b6034546001600160a01b03168015615d5d57816000929160208493519201905af490615d2961493d565b9115615d3157565b61243d615d3d83614f3e565b60405162461bcd60e51b81526020600482015291829160248301906106a0565b60405162461bcd60e51b815260206004820152601360248201527214d1d30e881b5bd91d5b19481b9bdd081cd95d606a1b6044820152606490fd5b6032546001600160a01b03168015615d5d57816000929160208493519201905af490615d2961493d565b6031546001600160a01b03168015615d5d57816000929160208493519201905af490615d2961493d565b6033546001600160a01b03168015615d5d57816000929160208493519201905af490615d2961493d56feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa264697066735822122077698ebb59f5f6b77a36cbe725e491ec2f146c875c00adc902384190cefc304864736f6c63430008120033", "linkReferences": {}, "deployedLinkReferences": {} } diff --git a/src/artifacts/tapioca-bar/Test.json b/src/artifacts/tapioca-bar/Test.json index 72ce89fa..2203bd85 100644 --- a/src/artifacts/tapioca-bar/Test.json +++ b/src/artifacts/tapioca-bar/Test.json @@ -3,6 +3,74 @@ "contractName": "Test", "sourceName": "contracts/Test.sol", "abi": [ + { + "inputs": [ + { + "internalType": "uint256", + "name": "rate", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "minFee", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "maxFee", + "type": "uint256" + } + ], + "name": "computeMintFeeTest", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "borrowed", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "startTVLInAsset", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "maxTVLInAsset", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "minLiquidatorReward", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "maxLiquidatorReward", + "type": "uint256" + } + ], + "name": "getCallerReward", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "pure", + "type": "function" + }, { "inputs": [], "name": "x", @@ -17,8 +85,8 @@ "type": "function" } ], - "bytecode": "0x6080806040523460195760016000556078908161001f8239f35b600080fdfe6080806040526004361015601257600080fd5b600090813560e01c630c55699c14602857600080fd5b34603e5781600319360112603e57602091548152f35b5080fdfea264697066735822122078a48d0bbd6a361800b9d11155550234cf1d16eef25d986d74cc41933c0563c564736f6c63430008120033", - "deployedBytecode": "0x6080806040526004361015601257600080fd5b600090813560e01c630c55699c14602857600080fd5b34603e5781600319360112603e57602091548152f35b5080fdfea264697066735822122078a48d0bbd6a361800b9d11155550234cf1d16eef25d986d74cc41933c0563c564736f6c63430008120033", + "bytecode": "0x6080806040523461001b5760016000556102a990816100218239f35b600080fdfe608080604052600436101561001357600080fd5b600090813560e01c9081630c55699c1461009c57508063191778cd146100715763d9cabbbb1461004257600080fd5b3461006e57606036600319011261006e5760206100666044356024356004356100dd565b604051908152f35b80fd5b503461006e5760a036600319011261006e57602061006660843560643560443560243560043561014f565b9050346100b657816003193601126100b657602091548152f35b5080fd5b919082039182116100c757565b634e487b7160e01b600052601160045260246000fd5b9190670e27c49886e6000083101561014957670d99a8cec7e2000083111561014357670d99a8cec7e1ffff1983019283116100c75761011c90826100ba565b918281029281840414901517156100c757668e1bc9bf0400006101409204906100ba565b90565b50905090565b91505090565b91909182156102695782811061026957818110156102615782610171916100ba565b90620186a092838302928084048514901517156100c757610191916100ba565b90811561024b570490838303600092838612858312811690868413901516176102375781810291848112600160ff1b83141661022357820514858514171561020f57058184820194851291129080158216911516176101fb57508082126101f6575090565b905090565b634e487b7160e01b81526011600452602490fd5b634e487b7160e01b83526011600452602483fd5b634e487b7160e01b85526011600452602485fd5b634e487b7160e01b84526011600452602484fd5b634e487b7160e01b600052601260045260246000fd5b505050905090565b505050505060009056fea26469706673582212200cc8055ae6c11c304eb1da98b6bdf37d30860e52518e6b9a7108938c6657df2164736f6c63430008120033", + "deployedBytecode": "0x608080604052600436101561001357600080fd5b600090813560e01c9081630c55699c1461009c57508063191778cd146100715763d9cabbbb1461004257600080fd5b3461006e57606036600319011261006e5760206100666044356024356004356100dd565b604051908152f35b80fd5b503461006e5760a036600319011261006e57602061006660843560643560443560243560043561014f565b9050346100b657816003193601126100b657602091548152f35b5080fd5b919082039182116100c757565b634e487b7160e01b600052601160045260246000fd5b9190670e27c49886e6000083101561014957670d99a8cec7e2000083111561014357670d99a8cec7e1ffff1983019283116100c75761011c90826100ba565b918281029281840414901517156100c757668e1bc9bf0400006101409204906100ba565b90565b50905090565b91505090565b91909182156102695782811061026957818110156102615782610171916100ba565b90620186a092838302928084048514901517156100c757610191916100ba565b90811561024b570490838303600092838612858312811690868413901516176102375781810291848112600160ff1b83141661022357820514858514171561020f57058184820194851291129080158216911516176101fb57508082126101f6575090565b905090565b634e487b7160e01b81526011600452602490fd5b634e487b7160e01b83526011600452602483fd5b634e487b7160e01b85526011600452602485fd5b634e487b7160e01b84526011600452602484fd5b634e487b7160e01b600052601260045260246000fd5b505050905090565b505050505060009056fea26469706673582212200cc8055ae6c11c304eb1da98b6bdf37d30860e52518e6b9a7108938c6657df2164736f6c63430008120033", "linkReferences": {}, "deployedLinkReferences": {} } diff --git a/src/artifacts/tapioca-bar/USDOFlashloanHelper.json b/src/artifacts/tapioca-bar/USDOFlashloanHelper.json index e9854476..930b873e 100644 --- a/src/artifacts/tapioca-bar/USDOFlashloanHelper.json +++ b/src/artifacts/tapioca-bar/USDOFlashloanHelper.json @@ -323,8 +323,8 @@ "type": "function" } ], - "bytecode": "0x60a03461013357601f6112a438819003918201601f19168301916001600160401b038311848410176101385780849260409485528339810103126101335780516001600160a01b039182821682036101335760200151918216809203610133576000805460405193916001600160a01b0319918216919033907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a360ff196005541660055533161717600055608052600a60025569152d02c7e14af6800000600355611155908161014f823960805181818161026b015281816102ed0152818161034c0152818161049d015281816104fc015281816105350152818161058f015281816105cd0152818161060e015281816106460152818161069101528181610a2901528181610d640152610e520152f35b600080fd5b634e487b7160e01b600052604160045260246000fdfe6080604052600436101561001257600080fd5b6000803560e01c8063078dfbe714610b88578063095ea7b314610b5657806316d995a914610af55780631d2a0e3d14610a585780634c6bb35d14610a135780634e71e0c8146109675780635cffe9de146101e9578063613255ab146101c45780638da5cb5b1461019d578063940a1dc01461017f5780639d3f4d1a14610161578063d9d98ce414610131578063dd62ed3e146100e25763e30c3978146100b757600080fd5b346100df57806003193601126100df576001546040516001600160a01b039091168152602090f35b80fd5b50346100df5760403660031901126100df576100fc610c8c565b6040610106610ca7565b9260018060a01b03809316815260046020522091166000526020526020604060002054604051908152f35b50346100df5760403660031901126100df576020610159610150610c8c565b60243590610e48565b604051908152f35b50346100df57806003193601126100df576020600354604051908152f35b50346100df57806003193601126100df576020600254604051908152f35b50346100df57806003193601126100df57546040516001600160a01b039091168152602090f35b50346100df5760203660031901126100df576101de610c8c565b506020610159610d54565b50346100df5760803660031901126100df576004356001600160a01b03811681036106fa57610216610ca7565b9067ffffffffffffffff80606435116107f3573660236064350112156107f3576064356004013511610760573660246064356004013560643501011161076057604051635c975abb60e01b81526020816004817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa9081156107ff578491610948575b5061090357336001600160a01b038216036108be575b60055460ff81166108795760ff19166001176005556044356102d9610d54565b10610828576102ea60443583610e48565b917f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03163b156107f3576040516340c10f1960e01b81526001600160a01b0383811660048301526044803560248401528691839190829084907f0000000000000000000000000000000000000000000000000000000000000000165af1801561081d5761080a575b50604051906323e30c8b60e01b825233600483015260018060a01b03166024820152604435604482015282606482015260a060848201526064356004013560a48201526064356004013560246064350160c483013760c46064356004013582810182018690526020918391601f19601f9091011682018290030181876001600160a01b0387165af180156107ff5784906107a9575b7f439148f0bbc682ca079e46d6e2c2f0c1e3b820f1a291b069d8882abf8cf18dd991500361076457829060018060a01b03811682526004602052604082203060005260205261046f60406000205461046885604435610f72565b1115610f16565b61048e61047e84604435610f72565b306001600160a01b038416610f7f565b61049a83604435610f72565b907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03163b1561076057604051632770a7eb60e21b81526001600160a01b0390911660048201526024810191909152818180604481010381837f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165af180156106ef5761074c575b50507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03163b156106fa576040516340c10f1960e01b81523060048201526024810182905282908181604481836001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165af180156106ef57610738575b505060405163a9059cbb60e01b81527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031660048201526024810182905260208180604481010381867f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165af1801561072d576106fe575b507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03163b156106fa5760405163028f6c4560e31b815260048101919091528181602481837f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165af180156106ef576106db575b60ff1960055416600555602060405160018152f35b6106e58291610d08565b6100df57806106c6565b6040513d84823e3d90fd5b5080fd5b61071f9060203d602011610726575b6107178183610d32565b810190610efe565b5038610643565b503d61070d565b6040513d85823e3d90fd5b61074190610d08565b6106fa5781386105bc565b61075590610d08565b6106fa578138610531565b8280fd5b60405162461bcd60e51b815260206004820152601b60248201527f5553444f466c6173686c6f616e48656c7065723a206661696c656400000000006044820152606490fd5b506020813d6020116107f7575b816107c360209383610d32565b810103126107f3577f439148f0bbc682ca079e46d6e2c2f0c1e3b820f1a291b069d8882abf8cf18dd9905161040e565b8380fd5b3d91506107b6565b6040513d86823e3d90fd5b61081690949194610d08565b9238610379565b6040513d87823e3d90fd5b60405162461bcd60e51b815260206004820152602360248201527f5553444f466c6173686c6f616e48656c7065723a20616d6f756e7420746f6f2060448201526262696760e81b6064820152608490fd5b60405162461bcd60e51b815260206004820152601f60248201527f5553444f466c6173686c6f616e48656c7065723a207265656e7472616e6379006044820152606490fd5b60018060a01b03811683526004602052604083203384526020526108fe6044356108ee8160408720541015610f16565b336001600160a01b038416610f7f565b6102b9565b60405162461bcd60e51b815260206004820152601b60248201527f5553444f466c6173686c6f616e48656c7065723a2070617573656400000000006044820152606490fd5b610961915060203d602011610726576107178183610d32565b386102a3565b50346100df57806003193601126100df576001546001600160a01b0390818116338190036109cf578084549384167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08680a36001600160a01b03199283161783551660015580f35b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b50346100df57806003193601126100df576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b50346100df5760203660031901126100df57600435610a8160018060a01b038354163314610cbd565b620f4240811015610ac4577fb3a985697c0361591fe9933703eb14ce1d74444a2d349080b6dec8da77a4082b60406002548151908152836020820152a160025580f35b60405162461bcd60e51b81526020600482015260096024820152685553444f3a2062696760b81b6044820152606490fd5b50346100df5760203660031901126100df57600435610b1e60018060a01b038354163314610cbd565b7f7d04cf410385806a9ac3566ac4cca4e5eaba6cc242abbf98f4f44e4ac6f3e8ff60406003548151908152836020820152a160035580f35b50346100df5760403660031901126100df57610b7d610b73610c8c565b602435903361102b565b602060405160018152f35b50346100df5760603660031901126100df57610ba2610c8c565b6024358015158103610760576044359081151582036107f35760018060a01b03928391610bd3838754163314610cbd565b15610c75571690811590811591610c6d575b5015610c30578083549283167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08580a36001600160a01b031991821617825560018054909116905580f35b60405162461bcd60e51b81526020600482015260156024820152744f776e61626c653a207a65726f206164647265737360581b6044820152606490fd5b905038610be5565b9150501660018060a01b0319600154161760015580f35b600435906001600160a01b0382168203610ca257565b600080fd5b602435906001600160a01b0382168203610ca257565b15610cc457565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b67ffffffffffffffff8111610d1c57604052565b634e487b7160e01b600052604160045260246000fd5b90601f8019910116810190811067ffffffffffffffff821117610d1c57604052565b6040516318160ddd60e01b8082527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906020908184600481865afa938415610e0d57600094610e19575b50600354809411600014610dbb5750505090565b8192935060046040518095819382525afa908115610e0d57600091610de1575b50905090565b82813d8311610e06575b610df58183610d32565b810103126100df5750518038610ddb565b503d610deb565b6040513d6000823e3d90fd5b90938282813d8311610e41575b610e308183610d32565b810103126100df5750519238610da7565b503d610e26565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116911603610ead5760025490818102918183041490151715610e9757620f4240900490565b634e487b7160e01b600052601160045260246000fd5b60405162461bcd60e51b8152602060048201526024808201527f5553444f466c6173686c6f616e48656c7065723a20746f6b656e206e6f742076604482015263185b1a5960e21b6064820152608490fd5b90816020910312610ca257518015158103610ca25790565b15610f1d57565b60405162461bcd60e51b815260206004820152602760248201527f5553444f466c6173686c6f616e48656c7065723a207265706179206e6f7420616044820152661c1c1c9bdd995960ca1b6064820152608490fd5b91908201809211610e9757565b9060018060a01b0380831660005260046020526040600020908216600052602052604060002054926000198403610fb7575b50505050565b808410610fd257610fc993039161102b565b38808080610fb1565b60405162461bcd60e51b815260206004820152602b60248201527f5553444f466c6173686c6f616e48656c7065723a20696e73756666696369656e60448201526a7420616c6c6f77616e636560a81b6064820152608490fd5b6001600160a01b039081169182156110bf5716908115611061576000526004602052604060002090600052602052604060002055565b60405162461bcd60e51b815260206004820152603060248201527f5553444f466c6173686c6f616e48656c7065723a20617070726f766520746f2060448201526f746865207a65726f206164647265737360801b6064820152608490fd5b60405162461bcd60e51b815260206004820152603260248201527f5553444f466c6173686c6f616e48656c7065723a20617070726f76652066726f6044820152716d20746865207a65726f206164647265737360701b6064820152608490fdfea264697066735822122053612b72677b6e43f0815f08376f1b64656ff767cb83d9f871b472bc631b691564736f6c63430008120033", - "deployedBytecode": "0x6080604052600436101561001257600080fd5b6000803560e01c8063078dfbe714610b88578063095ea7b314610b5657806316d995a914610af55780631d2a0e3d14610a585780634c6bb35d14610a135780634e71e0c8146109675780635cffe9de146101e9578063613255ab146101c45780638da5cb5b1461019d578063940a1dc01461017f5780639d3f4d1a14610161578063d9d98ce414610131578063dd62ed3e146100e25763e30c3978146100b757600080fd5b346100df57806003193601126100df576001546040516001600160a01b039091168152602090f35b80fd5b50346100df5760403660031901126100df576100fc610c8c565b6040610106610ca7565b9260018060a01b03809316815260046020522091166000526020526020604060002054604051908152f35b50346100df5760403660031901126100df576020610159610150610c8c565b60243590610e48565b604051908152f35b50346100df57806003193601126100df576020600354604051908152f35b50346100df57806003193601126100df576020600254604051908152f35b50346100df57806003193601126100df57546040516001600160a01b039091168152602090f35b50346100df5760203660031901126100df576101de610c8c565b506020610159610d54565b50346100df5760803660031901126100df576004356001600160a01b03811681036106fa57610216610ca7565b9067ffffffffffffffff80606435116107f3573660236064350112156107f3576064356004013511610760573660246064356004013560643501011161076057604051635c975abb60e01b81526020816004817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa9081156107ff578491610948575b5061090357336001600160a01b038216036108be575b60055460ff81166108795760ff19166001176005556044356102d9610d54565b10610828576102ea60443583610e48565b917f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03163b156107f3576040516340c10f1960e01b81526001600160a01b0383811660048301526044803560248401528691839190829084907f0000000000000000000000000000000000000000000000000000000000000000165af1801561081d5761080a575b50604051906323e30c8b60e01b825233600483015260018060a01b03166024820152604435604482015282606482015260a060848201526064356004013560a48201526064356004013560246064350160c483013760c46064356004013582810182018690526020918391601f19601f9091011682018290030181876001600160a01b0387165af180156107ff5784906107a9575b7f439148f0bbc682ca079e46d6e2c2f0c1e3b820f1a291b069d8882abf8cf18dd991500361076457829060018060a01b03811682526004602052604082203060005260205261046f60406000205461046885604435610f72565b1115610f16565b61048e61047e84604435610f72565b306001600160a01b038416610f7f565b61049a83604435610f72565b907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03163b1561076057604051632770a7eb60e21b81526001600160a01b0390911660048201526024810191909152818180604481010381837f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165af180156106ef5761074c575b50507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03163b156106fa576040516340c10f1960e01b81523060048201526024810182905282908181604481836001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165af180156106ef57610738575b505060405163a9059cbb60e01b81527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031660048201526024810182905260208180604481010381867f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165af1801561072d576106fe575b507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03163b156106fa5760405163028f6c4560e31b815260048101919091528181602481837f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165af180156106ef576106db575b60ff1960055416600555602060405160018152f35b6106e58291610d08565b6100df57806106c6565b6040513d84823e3d90fd5b5080fd5b61071f9060203d602011610726575b6107178183610d32565b810190610efe565b5038610643565b503d61070d565b6040513d85823e3d90fd5b61074190610d08565b6106fa5781386105bc565b61075590610d08565b6106fa578138610531565b8280fd5b60405162461bcd60e51b815260206004820152601b60248201527f5553444f466c6173686c6f616e48656c7065723a206661696c656400000000006044820152606490fd5b506020813d6020116107f7575b816107c360209383610d32565b810103126107f3577f439148f0bbc682ca079e46d6e2c2f0c1e3b820f1a291b069d8882abf8cf18dd9905161040e565b8380fd5b3d91506107b6565b6040513d86823e3d90fd5b61081690949194610d08565b9238610379565b6040513d87823e3d90fd5b60405162461bcd60e51b815260206004820152602360248201527f5553444f466c6173686c6f616e48656c7065723a20616d6f756e7420746f6f2060448201526262696760e81b6064820152608490fd5b60405162461bcd60e51b815260206004820152601f60248201527f5553444f466c6173686c6f616e48656c7065723a207265656e7472616e6379006044820152606490fd5b60018060a01b03811683526004602052604083203384526020526108fe6044356108ee8160408720541015610f16565b336001600160a01b038416610f7f565b6102b9565b60405162461bcd60e51b815260206004820152601b60248201527f5553444f466c6173686c6f616e48656c7065723a2070617573656400000000006044820152606490fd5b610961915060203d602011610726576107178183610d32565b386102a3565b50346100df57806003193601126100df576001546001600160a01b0390818116338190036109cf578084549384167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08680a36001600160a01b03199283161783551660015580f35b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b50346100df57806003193601126100df576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b50346100df5760203660031901126100df57600435610a8160018060a01b038354163314610cbd565b620f4240811015610ac4577fb3a985697c0361591fe9933703eb14ce1d74444a2d349080b6dec8da77a4082b60406002548151908152836020820152a160025580f35b60405162461bcd60e51b81526020600482015260096024820152685553444f3a2062696760b81b6044820152606490fd5b50346100df5760203660031901126100df57600435610b1e60018060a01b038354163314610cbd565b7f7d04cf410385806a9ac3566ac4cca4e5eaba6cc242abbf98f4f44e4ac6f3e8ff60406003548151908152836020820152a160035580f35b50346100df5760403660031901126100df57610b7d610b73610c8c565b602435903361102b565b602060405160018152f35b50346100df5760603660031901126100df57610ba2610c8c565b6024358015158103610760576044359081151582036107f35760018060a01b03928391610bd3838754163314610cbd565b15610c75571690811590811591610c6d575b5015610c30578083549283167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08580a36001600160a01b031991821617825560018054909116905580f35b60405162461bcd60e51b81526020600482015260156024820152744f776e61626c653a207a65726f206164647265737360581b6044820152606490fd5b905038610be5565b9150501660018060a01b0319600154161760015580f35b600435906001600160a01b0382168203610ca257565b600080fd5b602435906001600160a01b0382168203610ca257565b15610cc457565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b67ffffffffffffffff8111610d1c57604052565b634e487b7160e01b600052604160045260246000fd5b90601f8019910116810190811067ffffffffffffffff821117610d1c57604052565b6040516318160ddd60e01b8082527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906020908184600481865afa938415610e0d57600094610e19575b50600354809411600014610dbb5750505090565b8192935060046040518095819382525afa908115610e0d57600091610de1575b50905090565b82813d8311610e06575b610df58183610d32565b810103126100df5750518038610ddb565b503d610deb565b6040513d6000823e3d90fd5b90938282813d8311610e41575b610e308183610d32565b810103126100df5750519238610da7565b503d610e26565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116911603610ead5760025490818102918183041490151715610e9757620f4240900490565b634e487b7160e01b600052601160045260246000fd5b60405162461bcd60e51b8152602060048201526024808201527f5553444f466c6173686c6f616e48656c7065723a20746f6b656e206e6f742076604482015263185b1a5960e21b6064820152608490fd5b90816020910312610ca257518015158103610ca25790565b15610f1d57565b60405162461bcd60e51b815260206004820152602760248201527f5553444f466c6173686c6f616e48656c7065723a207265706179206e6f7420616044820152661c1c1c9bdd995960ca1b6064820152608490fd5b91908201809211610e9757565b9060018060a01b0380831660005260046020526040600020908216600052602052604060002054926000198403610fb7575b50505050565b808410610fd257610fc993039161102b565b38808080610fb1565b60405162461bcd60e51b815260206004820152602b60248201527f5553444f466c6173686c6f616e48656c7065723a20696e73756666696369656e60448201526a7420616c6c6f77616e636560a81b6064820152608490fd5b6001600160a01b039081169182156110bf5716908115611061576000526004602052604060002090600052602052604060002055565b60405162461bcd60e51b815260206004820152603060248201527f5553444f466c6173686c6f616e48656c7065723a20617070726f766520746f2060448201526f746865207a65726f206164647265737360801b6064820152608490fd5b60405162461bcd60e51b815260206004820152603260248201527f5553444f466c6173686c6f616e48656c7065723a20617070726f76652066726f6044820152716d20746865207a65726f206164647265737360701b6064820152608490fdfea264697066735822122053612b72677b6e43f0815f08376f1b64656ff767cb83d9f871b472bc631b691564736f6c63430008120033", + "bytecode": "0x60a0346100ed57601f61109338819003918201601f19168301916001600160401b038311848410176100f25780849260409485528339810103126100ed5780516001600160a01b039182821682036100ed57602001519182168092036100ed576000805460405193916001600160a01b0319918216919033907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a360ff196005541660055533161717600055608052600a60025569152d02c7e14af6800000600355610f8a9081610109823960805181818161039e01528181610726015281816107f60152610ab90152f35b600080fd5b634e487b7160e01b600052604160045260246000fdfe6080604052600436101561001257600080fd5b60003560e01c8063078dfbe7146100f7578063095ea7b3146100f257806316d995a9146100ed5780631d2a0e3d146100e85780634c6bb35d146100e35780634e71e0c8146100de5780635cffe9de146100d9578063613255ab146100d45780638da5cb5b146100cf578063940a1dc0146100ca5780639d3f4d1a146100c5578063d9d98ce4146100c0578063dd62ed3e146100bb5763e30c3978146100b657600080fd5b610637565b6105d4565b6105a9565b61058b565b61056d565b610544565b610516565b61048a565b6103cd565b610388565b6102df565b61027d565b610248565b61011c565b6001600160a01b0381160361010d57565b600080fd5b8015150361010d57565b3461010d57606036600319011261010d57600435610139816100fc565b6024359061014682610112565b6044359061015382610112565b60018060a01b0360009361016b828654163314610660565b156102325781169182159081159161022a575b50156101ed5782546101da92906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08580a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b600180546001600160a01b031916905580f35b60405162461bcd60e51b81526020600482015260156024820152744f776e61626c653a207a65726f206164647265737360581b6044820152606490fd5b90503861017e565b91501660018060a01b0319600154161760015580f35b3461010d57604036600319011261010d57610272600435610268816100fc565b6024359033610e5c565b602060405160018152f35b3461010d57602036600319011261010d576004356102a660018060a01b03600054163314610660565b60035460408051918252602082018390527f7d04cf410385806a9ac3566ac4cca4e5eaba6cc242abbf98f4f44e4ac6f3e8ff91a1600355005b3461010d57602036600319011261010d5760043561030860018060a01b03600054163314610660565b620f424081101561034c5760025460408051918252602082018390527fb3a985697c0361591fe9933703eb14ce1d74444a2d349080b6dec8da77a4082b91a1600255005b60405162461bcd60e51b81526020600482015260096024820152685553444f3a2062696760b81b6044820152606490fd5b600091031261010d57565b3461010d57600036600319011261010d576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b3461010d57600080600319360112610487576001546001600160a01b039081163381900361044357806101da928454167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08580a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b80fd5b3461010d57608036600319011261010d576004356104a7816100fc565b6024356104b3816100fc565b6064359067ffffffffffffffff9081831161010d573660238401121561010d57826004013591821161010d57366024838501011161010d5761051293602461050094019160443591610a9a565b60405190151581529081906020820190565b0390f35b3461010d57602036600319011261010d576105326004356100fc565b602061053c610712565b604051908152f35b3461010d57600036600319011261010d576000546040516001600160a01b039091168152602090f35b3461010d57600036600319011261010d576020600254604051908152f35b3461010d57600036600319011261010d576020600354604051908152f35b3461010d57604036600319011261010d57602061053c6004356105cb816100fc565b602435906107ec565b3461010d57604036600319011261010d57602061062e6004356105f6816100fc565b60243590610603826100fc565b60018060a01b03166000526004835260406000209060018060a01b0316600052602052604060002090565b54604051908152f35b3461010d57600036600319011261010d576001546040516001600160a01b039091168152602090f35b1561066757565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b67ffffffffffffffff81116106bf57604052565b634e487b7160e01b600052604160045260246000fd5b90601f8019910116810190811067ffffffffffffffff8211176106bf57604052565b9081602091031261010d575190565b6040513d6000823e3d90fd5b6040516318160ddd60e01b808252602091907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316908383600481855afa9283156107c8576000936107cd575b5060035480931160001461077b575050905090565b8391925060046040518094819382525afa9182156107c85760009261079f57505090565b6107be9250803d106107c1575b6107b681836106d5565b8101906106f7565b90565b503d6107ac565b610706565b6107e5919350843d86116107c1576107b681836106d5565b9138610766565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116911603610851576002549081810291818304149015171561083b57620f4240900490565b634e487b7160e01b600052601160045260246000fd5b60405162461bcd60e51b8152602060048201526024808201527f5553444f466c6173686c6f616e48656c7065723a20746f6b656e206e6f742076604482015263185b1a5960e21b6064820152608490fd5b9081602091031261010d57516107be81610112565b156108be57565b60405162461bcd60e51b815260206004820152601b60248201527f5553444f466c6173686c6f616e48656c7065723a2070617573656400000000006044820152606490fd5b1561090a57565b60405162461bcd60e51b815260206004820152602760248201527f5553444f466c6173686c6f616e48656c7065723a207265706179206e6f7420616044820152661c1c1c9bdd995960ca1b6064820152608490fd5b1561096657565b60405162461bcd60e51b815260206004820152601f60248201527f5553444f466c6173686c6f616e48656c7065723a207265656e7472616e6379006044820152606490fd5b156109b257565b60405162461bcd60e51b815260206004820152602360248201527f5553444f466c6173686c6f616e48656c7065723a20616d6f756e7420746f6f2060448201526262696760e81b6064820152608490fd5b94919286949160c0979460018060a01b0380921688521660208701526040860152606085015260a060808501528160a0850152848401376000828201840152601f01601f1916010190565b15610a5557565b60405162461bcd60e51b815260206004820152601b60248201527f5553444f466c6173686c6f616e48656c7065723a206661696c656400000000006044820152606490fd5b60408051635c975abb60e01b8152602096919592936001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811693928981600481885afa80156107c857610afd91600091610d82575b50156108b7565b851694338603610d2f575b610b23610b1e610b1a60055460ff1690565b1590565b61095f565b610b35600160ff196005541617600555565b610b4887610b41610712565b10156109ab565b610b5287836107ec565b94843b1561010d5788516340c10f1960e01b81526001600160a01b038816600482015260248101899052600081604481838a5af180156107c857610d1c575b50843b1561010d57885163028f6c4560e31b81526004810187905293600085602481838a5af19182156107c857610be8958c93610d03575b508a516323e30c8b60e01b815295869283928a8d893360048801610a03565b038160008a5af19081156107c8576000809493610c347f439148f0bbc682ca079e46d6e2c2f0c1e3b820f1a291b069d8882abf8cf18dd960449584978f8692610ce6575b505014610a4e565b8a51998a93632770a7eb60e21b8552600485015260248401525af11561010d5760448401948590526323b872dd60e01b85526001600160a01b039283166048850152918216606884015260888301528390839060649082906000905af180156107c857610cb3575b505050610cae60ff1960055416600555565b600190565b82604491610cd594913d10610cde575b610ccd82856106d5565b0101906108a2565b50388080610c9c565b3d9150610cc3565b610cfc9250803d106107c1576107b681836106d5565b388f610c2c565b80610d10610d16926106ab565b8061037d565b38610bc9565b80610d10610d29926106ab565b38610b91565b610d7287610d6a33610d538a60018060a01b03166000526004602052604060002090565b9060018060a01b0316600052602052604060002090565b541015610903565b610d7d873388610daf565b610b08565b610da291508b3d8d11610da8575b610d9a81836106d5565b8101906108a2565b38610af6565b503d610d90565b6001600160a01b038082166000908152600460209081526040808320938616835292905220909190549260018401610de8575b50505050565b808410610e0357610dfa930391610e5c565b38808080610de2565b60405162461bcd60e51b815260206004820152602b60248201527f5553444f466c6173686c6f616e48656c7065723a20696e73756666696369656e60448201526a7420616c6c6f77616e636560a81b6064820152608490fd5b906001600160a01b0380831615610ef457811615610e9657610d53610e939260018060a01b03166000526004602052604060002090565b55565b60405162461bcd60e51b815260206004820152603060248201527f5553444f466c6173686c6f616e48656c7065723a20617070726f766520746f2060448201526f746865207a65726f206164647265737360801b6064820152608490fd5b60405162461bcd60e51b815260206004820152603260248201527f5553444f466c6173686c6f616e48656c7065723a20617070726f76652066726f6044820152716d20746865207a65726f206164647265737360701b6064820152608490fdfea26469706673582212205e269f1a86f89d74fa71be7b0a38b30bda6656e41e55632e6824c795f8d8b5f264736f6c63430008120033", + "deployedBytecode": "0x6080604052600436101561001257600080fd5b60003560e01c8063078dfbe7146100f7578063095ea7b3146100f257806316d995a9146100ed5780631d2a0e3d146100e85780634c6bb35d146100e35780634e71e0c8146100de5780635cffe9de146100d9578063613255ab146100d45780638da5cb5b146100cf578063940a1dc0146100ca5780639d3f4d1a146100c5578063d9d98ce4146100c0578063dd62ed3e146100bb5763e30c3978146100b657600080fd5b610637565b6105d4565b6105a9565b61058b565b61056d565b610544565b610516565b61048a565b6103cd565b610388565b6102df565b61027d565b610248565b61011c565b6001600160a01b0381160361010d57565b600080fd5b8015150361010d57565b3461010d57606036600319011261010d57600435610139816100fc565b6024359061014682610112565b6044359061015382610112565b60018060a01b0360009361016b828654163314610660565b156102325781169182159081159161022a575b50156101ed5782546101da92906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08580a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b600180546001600160a01b031916905580f35b60405162461bcd60e51b81526020600482015260156024820152744f776e61626c653a207a65726f206164647265737360581b6044820152606490fd5b90503861017e565b91501660018060a01b0319600154161760015580f35b3461010d57604036600319011261010d57610272600435610268816100fc565b6024359033610e5c565b602060405160018152f35b3461010d57602036600319011261010d576004356102a660018060a01b03600054163314610660565b60035460408051918252602082018390527f7d04cf410385806a9ac3566ac4cca4e5eaba6cc242abbf98f4f44e4ac6f3e8ff91a1600355005b3461010d57602036600319011261010d5760043561030860018060a01b03600054163314610660565b620f424081101561034c5760025460408051918252602082018390527fb3a985697c0361591fe9933703eb14ce1d74444a2d349080b6dec8da77a4082b91a1600255005b60405162461bcd60e51b81526020600482015260096024820152685553444f3a2062696760b81b6044820152606490fd5b600091031261010d57565b3461010d57600036600319011261010d576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b3461010d57600080600319360112610487576001546001600160a01b039081163381900361044357806101da928454167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08580a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b80fd5b3461010d57608036600319011261010d576004356104a7816100fc565b6024356104b3816100fc565b6064359067ffffffffffffffff9081831161010d573660238401121561010d57826004013591821161010d57366024838501011161010d5761051293602461050094019160443591610a9a565b60405190151581529081906020820190565b0390f35b3461010d57602036600319011261010d576105326004356100fc565b602061053c610712565b604051908152f35b3461010d57600036600319011261010d576000546040516001600160a01b039091168152602090f35b3461010d57600036600319011261010d576020600254604051908152f35b3461010d57600036600319011261010d576020600354604051908152f35b3461010d57604036600319011261010d57602061053c6004356105cb816100fc565b602435906107ec565b3461010d57604036600319011261010d57602061062e6004356105f6816100fc565b60243590610603826100fc565b60018060a01b03166000526004835260406000209060018060a01b0316600052602052604060002090565b54604051908152f35b3461010d57600036600319011261010d576001546040516001600160a01b039091168152602090f35b1561066757565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b67ffffffffffffffff81116106bf57604052565b634e487b7160e01b600052604160045260246000fd5b90601f8019910116810190811067ffffffffffffffff8211176106bf57604052565b9081602091031261010d575190565b6040513d6000823e3d90fd5b6040516318160ddd60e01b808252602091907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316908383600481855afa9283156107c8576000936107cd575b5060035480931160001461077b575050905090565b8391925060046040518094819382525afa9182156107c85760009261079f57505090565b6107be9250803d106107c1575b6107b681836106d5565b8101906106f7565b90565b503d6107ac565b610706565b6107e5919350843d86116107c1576107b681836106d5565b9138610766565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116911603610851576002549081810291818304149015171561083b57620f4240900490565b634e487b7160e01b600052601160045260246000fd5b60405162461bcd60e51b8152602060048201526024808201527f5553444f466c6173686c6f616e48656c7065723a20746f6b656e206e6f742076604482015263185b1a5960e21b6064820152608490fd5b9081602091031261010d57516107be81610112565b156108be57565b60405162461bcd60e51b815260206004820152601b60248201527f5553444f466c6173686c6f616e48656c7065723a2070617573656400000000006044820152606490fd5b1561090a57565b60405162461bcd60e51b815260206004820152602760248201527f5553444f466c6173686c6f616e48656c7065723a207265706179206e6f7420616044820152661c1c1c9bdd995960ca1b6064820152608490fd5b1561096657565b60405162461bcd60e51b815260206004820152601f60248201527f5553444f466c6173686c6f616e48656c7065723a207265656e7472616e6379006044820152606490fd5b156109b257565b60405162461bcd60e51b815260206004820152602360248201527f5553444f466c6173686c6f616e48656c7065723a20616d6f756e7420746f6f2060448201526262696760e81b6064820152608490fd5b94919286949160c0979460018060a01b0380921688521660208701526040860152606085015260a060808501528160a0850152848401376000828201840152601f01601f1916010190565b15610a5557565b60405162461bcd60e51b815260206004820152601b60248201527f5553444f466c6173686c6f616e48656c7065723a206661696c656400000000006044820152606490fd5b60408051635c975abb60e01b8152602096919592936001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811693928981600481885afa80156107c857610afd91600091610d82575b50156108b7565b851694338603610d2f575b610b23610b1e610b1a60055460ff1690565b1590565b61095f565b610b35600160ff196005541617600555565b610b4887610b41610712565b10156109ab565b610b5287836107ec565b94843b1561010d5788516340c10f1960e01b81526001600160a01b038816600482015260248101899052600081604481838a5af180156107c857610d1c575b50843b1561010d57885163028f6c4560e31b81526004810187905293600085602481838a5af19182156107c857610be8958c93610d03575b508a516323e30c8b60e01b815295869283928a8d893360048801610a03565b038160008a5af19081156107c8576000809493610c347f439148f0bbc682ca079e46d6e2c2f0c1e3b820f1a291b069d8882abf8cf18dd960449584978f8692610ce6575b505014610a4e565b8a51998a93632770a7eb60e21b8552600485015260248401525af11561010d5760448401948590526323b872dd60e01b85526001600160a01b039283166048850152918216606884015260888301528390839060649082906000905af180156107c857610cb3575b505050610cae60ff1960055416600555565b600190565b82604491610cd594913d10610cde575b610ccd82856106d5565b0101906108a2565b50388080610c9c565b3d9150610cc3565b610cfc9250803d106107c1576107b681836106d5565b388f610c2c565b80610d10610d16926106ab565b8061037d565b38610bc9565b80610d10610d29926106ab565b38610b91565b610d7287610d6a33610d538a60018060a01b03166000526004602052604060002090565b9060018060a01b0316600052602052604060002090565b541015610903565b610d7d873388610daf565b610b08565b610da291508b3d8d11610da8575b610d9a81836106d5565b8101906108a2565b38610af6565b503d610d90565b6001600160a01b038082166000908152600460209081526040808320938616835292905220909190549260018401610de8575b50505050565b808410610e0357610dfa930391610e5c565b38808080610de2565b60405162461bcd60e51b815260206004820152602b60248201527f5553444f466c6173686c6f616e48656c7065723a20696e73756666696369656e60448201526a7420616c6c6f77616e636560a81b6064820152608490fd5b906001600160a01b0380831615610ef457811615610e9657610d53610e939260018060a01b03166000526004602052604060002090565b55565b60405162461bcd60e51b815260206004820152603060248201527f5553444f466c6173686c6f616e48656c7065723a20617070726f766520746f2060448201526f746865207a65726f206164647265737360801b6064820152608490fd5b60405162461bcd60e51b815260206004820152603260248201527f5553444f466c6173686c6f616e48656c7065723a20617070726f76652066726f6044820152716d20746865207a65726f206164647265737360701b6064820152608490fdfea26469706673582212205e269f1a86f89d74fa71be7b0a38b30bda6656e41e55632e6824c795f8d8b5f264736f6c63430008120033", "linkReferences": {}, "deployedLinkReferences": {} } diff --git a/src/global__db.bak b/src/global__db.bak index e0d6303f..fd002d9c 100644 --- a/src/global__db.bak +++ b/src/global__db.bak @@ -2,6 +2,33 @@ "default": { "tapioca-bar": { "4002": [ + { + "name": "BigBang-TapiocaOFT-FTMMock", + "address": "0xC18A44deD3b29Af18120Ed651Fe6E0f4fCCF9bf7", + "meta": { + "isBigBangMarket": true, + "collateral": { + "collateralAddress": "0xB591Db28708fCCfb89C5a4dE2B13073E66f33b27", + "collateralStrategyAddress": "0xD2Bafd631a38144d8c58bA6D184eCF361B3e6719" + } + } + }, + { + "name": "OracleMock-TapiocaOFT-FTMMock", + "address": "0xcAba0Bf6fCCAc592Ea5Fa6CaD88a386A9ee193D2", + "meta": { + "args": [ + "OracleMock-TapiocaOFT-FTMMock", + "OCM-TapiocaOFT-FTMMock", + { + "type": "BigNumber", + "hex": "0x738e48b0abd10d052d5f7000000000" + } + ], + "salt": "0x40a906c69cc0320b98510fb8e5b5763172cdc2de5266a1dd6d20dee2c96960a1", + "create2": true + } + }, { "name": "Tapioca Singularity-TapiocaOFT-FTMLPMock", "address": "0x7F46542cD2bcB17E711ab801988A734488bEe115", @@ -382,6 +409,33 @@ "43113": [], "80001": [], "421613": [ + { + "name": "BigBang-TapiocaOFT-WETHMock", + "address": "0x2e2136F858600f074D57448fA43cee56a4563842", + "meta": { + "isBigBangMarket": true, + "collateral": { + "collateralAddress": "0xd384A44C510795753E92FacB3a09BD401E333c6c", + "collateralStrategyAddress": "0xd2ff30b1A716CE7d0060338DBbfAF152cA1fed25" + } + } + }, + { + "name": "OracleMock-TapiocaOFT-WETHMock", + "address": "0x394cfc69A75b755CBfDD369CEb0c0988380d9909", + "meta": { + "args": [ + "OracleMock-TapiocaOFT-WETHMock", + "OCM-TapiocaOFT-WETHMock", + { + "type": "BigNumber", + "hex": "0x106f4216d9dbb8f58c1cc8340000" + } + ], + "salt": "0x3cfc5a7a1762565f7547299d00b65d31c0d6a4d591ace5e699cf7b1068402ee6", + "create2": true + } + }, { "name": "Tapioca Singularity-TapiocaOFT-GLPMock", "address": "0x19d67955b400e17C0548108375A5932398bAf61D", diff --git a/src/typechain/tapioca-bar/Test.ts b/src/typechain/tapioca-bar/Test.ts index 83fe6e8d..aa942be6 100644 --- a/src/typechain/tapioca-bar/Test.ts +++ b/src/typechain/tapioca-bar/Test.ts @@ -4,6 +4,7 @@ import type { BaseContract, BigNumber, + BigNumberish, BytesLike, CallOverrides, PopulatedTransaction, @@ -22,14 +23,76 @@ import type { export interface TestInterface extends utils.Interface { functions: { + "computeMintFeeTest(uint256,uint256,uint256)": FunctionFragment; + "getCallerReward(uint256,uint256,uint256,uint256,uint256)": FunctionFragment; "x()": FunctionFragment; }; - getFunction(nameOrSignatureOrTopic: "x" | "x()"): FunctionFragment; + getFunction( + nameOrSignatureOrTopic: + | "computeMintFeeTest" + | "computeMintFeeTest(uint256,uint256,uint256)" + | "getCallerReward" + | "getCallerReward(uint256,uint256,uint256,uint256,uint256)" + | "x" + | "x()" + ): FunctionFragment; + encodeFunctionData( + functionFragment: "computeMintFeeTest", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + encodeFunctionData( + functionFragment: "computeMintFeeTest(uint256,uint256,uint256)", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + encodeFunctionData( + functionFragment: "getCallerReward", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + encodeFunctionData( + functionFragment: "getCallerReward(uint256,uint256,uint256,uint256,uint256)", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; encodeFunctionData(functionFragment: "x", values?: undefined): string; encodeFunctionData(functionFragment: "x()", values?: undefined): string; + decodeFunctionResult( + functionFragment: "computeMintFeeTest", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "computeMintFeeTest(uint256,uint256,uint256)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "getCallerReward", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "getCallerReward(uint256,uint256,uint256,uint256,uint256)", + data: BytesLike + ): Result; decodeFunctionResult(functionFragment: "x", data: BytesLike): Result; decodeFunctionResult(functionFragment: "x()", data: BytesLike): Result; @@ -65,16 +128,112 @@ export interface Test extends BaseContract { removeListener: OnEvent; functions: { + computeMintFeeTest( + rate: PromiseOrValue, + minFee: PromiseOrValue, + maxFee: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[BigNumber]>; + + "computeMintFeeTest(uint256,uint256,uint256)"( + rate: PromiseOrValue, + minFee: PromiseOrValue, + maxFee: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[BigNumber]>; + + getCallerReward( + borrowed: PromiseOrValue, + startTVLInAsset: PromiseOrValue, + maxTVLInAsset: PromiseOrValue, + minLiquidatorReward: PromiseOrValue, + maxLiquidatorReward: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[BigNumber]>; + + "getCallerReward(uint256,uint256,uint256,uint256,uint256)"( + borrowed: PromiseOrValue, + startTVLInAsset: PromiseOrValue, + maxTVLInAsset: PromiseOrValue, + minLiquidatorReward: PromiseOrValue, + maxLiquidatorReward: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[BigNumber]>; + x(overrides?: CallOverrides): Promise<[BigNumber]>; "x()"(overrides?: CallOverrides): Promise<[BigNumber]>; }; + computeMintFeeTest( + rate: PromiseOrValue, + minFee: PromiseOrValue, + maxFee: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "computeMintFeeTest(uint256,uint256,uint256)"( + rate: PromiseOrValue, + minFee: PromiseOrValue, + maxFee: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getCallerReward( + borrowed: PromiseOrValue, + startTVLInAsset: PromiseOrValue, + maxTVLInAsset: PromiseOrValue, + minLiquidatorReward: PromiseOrValue, + maxLiquidatorReward: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "getCallerReward(uint256,uint256,uint256,uint256,uint256)"( + borrowed: PromiseOrValue, + startTVLInAsset: PromiseOrValue, + maxTVLInAsset: PromiseOrValue, + minLiquidatorReward: PromiseOrValue, + maxLiquidatorReward: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + x(overrides?: CallOverrides): Promise; "x()"(overrides?: CallOverrides): Promise; callStatic: { + computeMintFeeTest( + rate: PromiseOrValue, + minFee: PromiseOrValue, + maxFee: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "computeMintFeeTest(uint256,uint256,uint256)"( + rate: PromiseOrValue, + minFee: PromiseOrValue, + maxFee: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getCallerReward( + borrowed: PromiseOrValue, + startTVLInAsset: PromiseOrValue, + maxTVLInAsset: PromiseOrValue, + minLiquidatorReward: PromiseOrValue, + maxLiquidatorReward: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "getCallerReward(uint256,uint256,uint256,uint256,uint256)"( + borrowed: PromiseOrValue, + startTVLInAsset: PromiseOrValue, + maxTVLInAsset: PromiseOrValue, + minLiquidatorReward: PromiseOrValue, + maxLiquidatorReward: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + x(overrides?: CallOverrides): Promise; "x()"(overrides?: CallOverrides): Promise; @@ -83,12 +242,76 @@ export interface Test extends BaseContract { filters: {}; estimateGas: { + computeMintFeeTest( + rate: PromiseOrValue, + minFee: PromiseOrValue, + maxFee: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "computeMintFeeTest(uint256,uint256,uint256)"( + rate: PromiseOrValue, + minFee: PromiseOrValue, + maxFee: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getCallerReward( + borrowed: PromiseOrValue, + startTVLInAsset: PromiseOrValue, + maxTVLInAsset: PromiseOrValue, + minLiquidatorReward: PromiseOrValue, + maxLiquidatorReward: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "getCallerReward(uint256,uint256,uint256,uint256,uint256)"( + borrowed: PromiseOrValue, + startTVLInAsset: PromiseOrValue, + maxTVLInAsset: PromiseOrValue, + minLiquidatorReward: PromiseOrValue, + maxLiquidatorReward: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + x(overrides?: CallOverrides): Promise; "x()"(overrides?: CallOverrides): Promise; }; populateTransaction: { + computeMintFeeTest( + rate: PromiseOrValue, + minFee: PromiseOrValue, + maxFee: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "computeMintFeeTest(uint256,uint256,uint256)"( + rate: PromiseOrValue, + minFee: PromiseOrValue, + maxFee: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getCallerReward( + borrowed: PromiseOrValue, + startTVLInAsset: PromiseOrValue, + maxTVLInAsset: PromiseOrValue, + minLiquidatorReward: PromiseOrValue, + maxLiquidatorReward: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "getCallerReward(uint256,uint256,uint256,uint256,uint256)"( + borrowed: PromiseOrValue, + startTVLInAsset: PromiseOrValue, + maxTVLInAsset: PromiseOrValue, + minLiquidatorReward: PromiseOrValue, + maxLiquidatorReward: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + x(overrides?: CallOverrides): Promise; "x()"(overrides?: CallOverrides): Promise; diff --git a/src/typechain/tapioca-bar/factories/Test__factory.ts b/src/typechain/tapioca-bar/factories/Test__factory.ts index 098caf80..a0c18d6a 100644 --- a/src/typechain/tapioca-bar/factories/Test__factory.ts +++ b/src/typechain/tapioca-bar/factories/Test__factory.ts @@ -7,6 +7,74 @@ import type { PromiseOrValue } from "../common"; import type { Test, TestInterface } from "../Test"; const _abi = [ + { + inputs: [ + { + internalType: "uint256", + name: "rate", + type: "uint256", + }, + { + internalType: "uint256", + name: "minFee", + type: "uint256", + }, + { + internalType: "uint256", + name: "maxFee", + type: "uint256", + }, + ], + name: "computeMintFeeTest", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "pure", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "borrowed", + type: "uint256", + }, + { + internalType: "uint256", + name: "startTVLInAsset", + type: "uint256", + }, + { + internalType: "uint256", + name: "maxTVLInAsset", + type: "uint256", + }, + { + internalType: "uint256", + name: "minLiquidatorReward", + type: "uint256", + }, + { + internalType: "uint256", + name: "maxLiquidatorReward", + type: "uint256", + }, + ], + name: "getCallerReward", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "pure", + type: "function", + }, { inputs: [], name: "x", @@ -23,7 +91,7 @@ const _abi = [ ] as const; const _bytecode = - "0x6080806040523460195760016000556078908161001f8239f35b600080fdfe6080806040526004361015601257600080fd5b600090813560e01c630c55699c14602857600080fd5b34603e5781600319360112603e57602091548152f35b5080fdfea264697066735822122078a48d0bbd6a361800b9d11155550234cf1d16eef25d986d74cc41933c0563c564736f6c63430008120033"; + "0x6080806040523461001b5760016000556102a990816100218239f35b600080fdfe608080604052600436101561001357600080fd5b600090813560e01c9081630c55699c1461009c57508063191778cd146100715763d9cabbbb1461004257600080fd5b3461006e57606036600319011261006e5760206100666044356024356004356100dd565b604051908152f35b80fd5b503461006e5760a036600319011261006e57602061006660843560643560443560243560043561014f565b9050346100b657816003193601126100b657602091548152f35b5080fd5b919082039182116100c757565b634e487b7160e01b600052601160045260246000fd5b9190670e27c49886e6000083101561014957670d99a8cec7e2000083111561014357670d99a8cec7e1ffff1983019283116100c75761011c90826100ba565b918281029281840414901517156100c757668e1bc9bf0400006101409204906100ba565b90565b50905090565b91505090565b91909182156102695782811061026957818110156102615782610171916100ba565b90620186a092838302928084048514901517156100c757610191916100ba565b90811561024b570490838303600092838612858312811690868413901516176102375781810291848112600160ff1b83141661022357820514858514171561020f57058184820194851291129080158216911516176101fb57508082126101f6575090565b905090565b634e487b7160e01b81526011600452602490fd5b634e487b7160e01b83526011600452602483fd5b634e487b7160e01b85526011600452602485fd5b634e487b7160e01b84526011600452602484fd5b634e487b7160e01b600052601260045260246000fd5b505050905090565b505050505060009056fea26469706673582212200cc8055ae6c11c304eb1da98b6bdf37d30860e52518e6b9a7108938c6657df2164736f6c63430008120033"; type TestConstructorParams = | [signer?: Signer] diff --git a/src/typechain/tapioca-bar/factories/markets/Market__factory.ts b/src/typechain/tapioca-bar/factories/markets/Market__factory.ts index 67395fb3..55d88a19 100644 --- a/src/typechain/tapioca-bar/factories/markets/Market__factory.ts +++ b/src/typechain/tapioca-bar/factories/markets/Market__factory.ts @@ -176,25 +176,6 @@ const _abi = [ name: "LogBorrowCapUpdated", type: "event", }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "uint256", - name: "_oldVal", - type: "uint256", - }, - { - indexed: true, - internalType: "uint256", - name: "_newVal", - type: "uint256", - }, - ], - name: "LogBorrowingFee", - type: "event", - }, { anonymous: false, inputs: [ @@ -443,19 +424,6 @@ const _abi = [ stateMutability: "view", type: "function", }, - { - inputs: [], - name: "borrowOpeningFee", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - stateMutability: "view", - type: "function", - }, { inputs: [], name: "callerFee", @@ -941,11 +909,6 @@ const _abi = [ }, { inputs: [ - { - internalType: "uint256", - name: "_borrowOpeningFee", - type: "uint256", - }, { internalType: "contract IOracle", name: "_oracle", diff --git a/src/typechain/tapioca-bar/factories/markets/bigBang/BBBorrow__factory.ts b/src/typechain/tapioca-bar/factories/markets/bigBang/BBBorrow__factory.ts index b6955669..63f8c07d 100644 --- a/src/typechain/tapioca-bar/factories/markets/bigBang/BBBorrow__factory.ts +++ b/src/typechain/tapioca-bar/factories/markets/bigBang/BBBorrow__factory.ts @@ -60,6 +60,31 @@ const _abi = [ name: "ApprovalBorrow", type: "event", }, + { + anonymous: false, + inputs: [], + name: "AssetOracleDataUpdated", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "address", + name: "_oldVal", + type: "address", + }, + { + indexed: true, + internalType: "address", + name: "_newVal", + type: "address", + }, + ], + name: "AssetOracleUpdated", + type: "event", + }, { anonymous: false, inputs: [ @@ -279,25 +304,6 @@ const _abi = [ name: "LogBorrowCapUpdated", type: "event", }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "uint256", - name: "_oldVal", - type: "uint256", - }, - { - indexed: true, - internalType: "uint256", - name: "_newVal", - type: "uint256", - }, - ], - name: "LogBorrowingFee", - type: "event", - }, { anonymous: false, inputs: [ @@ -486,6 +492,37 @@ const _abi = [ name: "Transfer", type: "event", }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "uint256", + name: "oldMin", + type: "uint256", + }, + { + indexed: true, + internalType: "uint256", + name: "newMin", + type: "uint256", + }, + { + indexed: true, + internalType: "uint256", + name: "oldMax", + type: "uint256", + }, + { + indexed: false, + internalType: "uint256", + name: "newMax", + type: "uint256", + }, + ], + name: "UpdateMinMaxMintFee", + type: "event", + }, { inputs: [], name: "DOMAIN_SEPARATOR", @@ -646,6 +683,32 @@ const _abi = [ stateMutability: "view", type: "function", }, + { + inputs: [], + name: "assetOracle", + outputs: [ + { + internalType: "contract IOracle", + name: "", + type: "address", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "assetOracleData", + outputs: [ + { + internalType: "bytes", + name: "", + type: "bytes", + }, + ], + stateMutability: "view", + type: "function", + }, { inputs: [ { @@ -699,19 +762,6 @@ const _abi = [ stateMutability: "nonpayable", type: "function", }, - { - inputs: [], - name: "borrowOpeningFee", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - stateMutability: "view", - type: "function", - }, { inputs: [], name: "callerFee", @@ -1014,6 +1064,19 @@ const _abi = [ stateMutability: "view", type: "function", }, + { + inputs: [], + name: "maxMintFee", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, { inputs: [], name: "minDebtRate", @@ -1040,6 +1103,19 @@ const _abi = [ stateMutability: "view", type: "function", }, + { + inputs: [], + name: "minMintFee", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, { inputs: [ { @@ -1341,11 +1417,6 @@ const _abi = [ }, { inputs: [ - { - internalType: "uint256", - name: "_borrowOpeningFee", - type: "uint256", - }, { internalType: "contract IOracle", name: "_oracle", @@ -1630,7 +1701,7 @@ const _abi = [ ] as const; const _bytecode = - "0x6101408060405234620001895762000017816200018e565b600f81526001602082016e546170696f63612042696742616e6760881b8152602060405162000046816200018e565b8381520192603160f81b845251902091208160e052610100918183524660a0526040519160208301907f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f92838352604085015260608401524660808401523060a084015260a0835260c083019280841060018060401b03851117620001735760408490525190206080523060c052610120908152600580546001600160a01b0319163390811790915560007f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a362013880601b5562015f90601c55612710601d556032602055612ee0602155613a619283620001ab843960805183612887015260a05183612952015260c05183612851015260e051836128d6015251826128fc015251816128b30152f35b634e487b7160e01b600052604160045260246000fd5b600080fd5b604081019081106001600160401b03821117620001735760405256fe60806040908082526004918236101561001757600080fd5b60009260e08435811c938462a02a2014611e405750836302ce728f14611e17578363078dfbe714611d12578363095ea7b314611ce85783630996efb7146118685783630c4e84f01461175157836318160ddd146117365783631c9e379b146116fe5783631da8bf10146116445783631fb8f81a1461162557836323b872dd1461149d578363331960ff1461147e57836334ce998a1461145557836334d441d0146114365783633644e5151461141957836337b6b7b9146113fa57836338d52e0f146113d15783633ba0b9a9146113b25783633f741adb1461138957836340626d8b1461136a57836344de240a1461134b578363473e3ce71461132c57836348e4163e146112f45783634e71e0c81461123f5783635224372c14611188578363529898f214611169578363579354621461114a5783636b19ad161461112b5783636c3d8b8f1461110257836370a08231146110ca578363727785471461109257836374645ff314610f815783637dc0d1d014610f585783637ecebe0014610f215783637fa0b84e14610ef05783638285ef4014610ebf57836387b2793714610e875783638c5d0ed314610e685783638da5cb5b14610e3f578363910dd7c814610bc2578363959916dc14610ba457836399a9702814610b7b5783639e15e89f14610b40578363a9059cbb14610a65578363b0e21e8a14610a46578363b27c0e7414610a15578363b7113f19146109f1578363bb4cfe3b146109d2578363bde39c5d146109b3578363c1ad5c8d1461098f578363cd0211eb146105e9578363ce8849ed146105c0578363d505accf146104395750508163d8dfeb4514610410578163dd62ed3e146103c2578163de40657714610399578163e0996cb61461037a578163e30c397814610351578163ea64dd5614610332578163eec0f42e14610313578163f791395d146102f0575063f8ba4cff146102d257600080fd5b346102ed57806003193601126102ed576102ea613839565b80f35b80fd5b90503461030f578160031936011261030f576020906028549051908152f35b5080fd5b90503461030f578160031936011261030f57602090600c549051908152f35b90503461030f578160031936011261030f57602090601f549051908152f35b90503461030f578160031936011261030f5760065490516001600160a01b039091168152602090f35b90503461030f578160031936011261030f57602090601d549051908152f35b90503461030f578160031936011261030f5760095490516001600160a01b039091168152602090f35b90503461030f578060031936011261030f576020916103df611e87565b826103e8611ea2565b6001600160a01b03928316845260028652922091166000908152908352819020549051908152f35b90503461030f578160031936011261030f57600b5490516001600160a01b039091168152602090f35b908491346105bc5761044a36611ed6565b918394989597934211610579579161051c91610524938c8b8b60018060a01b0398898d169a8b93846000528d602052856000209081549161048a83612ba8565b90558c87519560208701977f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e266895260008a890152606088015216608086015260a085015260c08401528183015281526104e281612007565b5190206104ed61284e565b915190602082019261190160f01b8452602283015260428201526042815261051481612023565b519020612b23565b919091612a24565b160361053657506102ea939450612c05565b606490602087519162461bcd60e51b8352820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152fd5b8a5162461bcd60e51b8152602081880152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b8280fd5b84833461030f578160031936011261030f5760085490516001600160a01b039091168152602090f35b5083823461030f57608036600319011261030f57610605611e87565b9161060e611ea2565b93610617611ec7565b50606435600183526020956007875261063660ff868620541615612c5c565b6001600160a01b03918183169161064f30841415612c99565b61065761234f565b5050610661613839565b6106a66106956106788461067361328e565b613504565b90506011549060ff61068d89600d54166131f1565b1691856133b1565b6106a0811515612ce4565b89613434565b8286526017895286862054808311610987575b50811561094c57816106ca91613977565b968188101561091157828652602489528686206106e889825461215c565b90556106f68261067361328e565b9890899060018060801b03815116908c60018060801b031991015160801b161760145584885260178b5288882061072e85825461215c565b90558989888860095416868c600e5461075c8651978896879586946311a5cc7760e31b865230928601613948565b03925af18015610907578c9388938c8e99989794610791946108d9575b5050610785878a61215c565b806108b6575b5061215c565b80610817575b50895193845216917fc8e512d8f188ca059984b5853d2bf653da902696b8512785b182b2c813789a6e9190a4600a541690813b156105bc578351632ebe913360e21b81529183918391829084905af1801561080d576107f9575b505051908152f35b6108038291611fc3565b6102ed57806107f1565b83513d84823e3d90fd5b925092939450600d541690813b156108b2578851632770a7eb60e21b815230888201908152602081019290925291889183919082908490829060400103925af180156108a857918a918a959493610871575b908691610797565b7fc8e512d8f188ca059984b5853d2bf653da902696b8512785b182b2c813789a6e92919861089f8892611fc3565b98919250610869565b88513d89823e3d90fd5b8780fd5b6108d391506108cc620186a091601a5490612105565b048961215c565b8f61078b565b816108f892903d10610900575b6108f0818361203e565b810190613932565b8e9150610779565b503d6108e6565b8a513d8b823e3d90fd5b865162461bcd60e51b81528086018a9052601560248201527442423a2072657061796d656e7420746f6f206c6f7760581b6044820152606490fd5b865162461bcd60e51b81528086018a9052601560248201527453474c3a206e6f7468696e6720746f20726570617960581b6044820152606490fd5b9150896106b9565b84833461030f578160031936011261030f576020906109ac6135b8565b9051908152f35b84833461030f578160031936011261030f576020906029549051908152f35b84833461030f578160031936011261030f57602090601e549051908152f35b84833461030f578160031936011261030f5760209060ff6026541690519015158152f35b8285346102ed57806003193601126102ed57506025548151906001600160401b03908181168352831c166020820152f35b84833461030f578160031936011261030f57602090601a549051908152f35b84833461030f578060031936011261030f57602091610a82611e87565b82602435928315801590610b2e575b610ac1575b50519182526001600160a01b0316903390600080516020613a0c833981519152908590a35160018152f35b3381526001865281812054610ad885821015612978565b6001600160a01b038416908533839003610af5575b505050610a96565b610b0991610b048415156129bd565b61215c565b3383526001885283832055815220610b22838254612169565b90558285808085610aed565b50336001600160a01b03841614610a91565b84833461030f578060031936011261030f57606090610b69610b60611e87565b602435906122a8565b91929081519384526020840152820152f35b84833461030f578060031936011261030f576020906109ac610b9b611e87565b6024359061271c565b84833461030f578160031936011261030f5760209081549051908152f35b92509034610e3b5780600319360112610e3b578135926001600160401b038411610e375736602385011215610e37578383013592610bff8461205f565b94610c0c8451968761203e565b848652866020918288019636602482840101116105bc578060248593018937880101526024359361ffff85168095036108b257610100958688805181010312610e3357610c5890612342565b93610c64828901612a02565b90610c7160608a01612a02565b9860808101519860a082015192610c8a60c08401612a16565b91818401519301519360018060a01b03808097169d169a814211610df057928d8f819897948f948f8f968f918f959a8f8c8195610d669f9c61051c9f50600014610dc9577f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e2669a5b825289522093845494610d0386612ba8565b905580519788019889528701528d6060870152608086015260a085015260c0840152818301528152610d3481612007565b519020610d3f61284e565b908951908b82019261190160f01b8452602283015260428201526042815261051481612023565b1603610d8857505050600014610d7f576102ea92612c05565b6102ea92612bb7565b5162461bcd60e51b815291820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e61747572650000604482015260649150fd5b7f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d69a610cf1565b875162461bcd60e51b8152808b018a9052601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b8880fd5b8480fd5b8380fd5b84833461030f578160031936011261030f5760055490516001600160a01b039091168152602090f35b84833461030f578160031936011261030f57602090601b549051908152f35b84833461030f57602036600319011261030f5760209181906001600160a01b03610eaf611e87565b1681526024845220549051908152f35b8285346102ed57806003193601126102ed575060145481516001600160801b038216815260809190911c6020820152f35b84833461030f578060031936011261030f57602090610f1a610f10611e87565b6024359033612bb7565b5160018152f35b848383346105bc5760203660031901126105bc5760209282916001600160a01b03610f4a611e87565b168252845220549051908152f35b84833461030f578160031936011261030f57600f5490516001600160a01b039091168152602090f35b84833461030f578160031936011261030f5780516010548184610fa383611f89565b8083526001938085169081156110715750600114611014575b50610fcc9250949294038461203e565b815192839160208084528251928382860152825b848110610ffe57505050828201840152601f01601f19168101030190f35b8181018301518882018801528795508201610fe0565b601087527f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae67293602092508791905b818310611059575050610fcc935082010186610fbc565b85548784018501529485019486945091830191611042565b9050610fcc94506020925060ff191682840152151560051b82010186610fbc565b848383346105bc5760203660031901126105bc57359160098310156102ed575060ff6110bf602093611f5a565b541690519015158152f35b84833461030f57602036600319011261030f5760209181906001600160a01b036110f2611e87565b1681526001845220549051908152f35b84833461030f578160031936011261030f57600a5490516001600160a01b039091168152602090f35b84833461030f578160031936011261030f576020906027549051908152f35b84833461030f578160031936011261030f57602090601c549051908152f35b84833461030f578160031936011261030f576020906021549051908152f35b848383346105bc576111f6906111ea60ff84956111bd6111a736611f25565b9491989093808052600760205220541615612c5c565b6111d26001600160a01b038216301415612c99565b6111da61234f565b50506111e4613839565b85612d3a565b929093601154906132b4565b15611208575082519182526020820152f35b606490602085519162461bcd60e51b8352820152601160248201527013585c9ad95d0e881a5b9cdbdb1d995b9d607a1b6044820152fd5b509150346105bc57826003193601126105bc576006546001600160a01b039290918383169190338390036112b1575050806005549384167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08680a36001600160a01b0319928316176005551660065580f35b906020606492519162461bcd60e51b8352820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b84833461030f57602036600319011261030f5760209181906001600160a01b0361131c611e87565b1681526017845220549051908152f35b84833461030f578160031936011261030f576020906015549051908152f35b84833461030f578160031936011261030f57602090600e549051908152f35b84833461030f578160031936011261030f576020906016549051908152f35b509083346102ed5760603660031901126102ed57506109ac60209260443590602435903561218f565b84833461030f578160031936011261030f576020906011549051908152f35b84833461030f578160031936011261030f57600d5490516001600160a01b039091168152602090f35b84833461030f578160031936011261030f576020906012549051908152f35b84833461030f578160031936011261030f576020906109ac61284e565b84833461030f578160031936011261030f576020906019549051908152f35b84833461030f578160031936011261030f5760145490516001600160801b039091168152602090f35b84833461030f578160031936011261030f576020906013549051908152f35b509083346102ed576114ae36611f25565b9192826114e8575b508351918252602094506001600160a01b03908116921690600080516020613a0c833981519152908590a35160018152f35b6001600160a01b03848116808352600160209081528784205491989290919061151387831015612978565b851692838a03611527575b505050506114b6565b898552600283528885203386528352888520549060018201611591575b5050928260209960018a946115708a8e99610b04600080516020613a0c8339815191529c9a15156129bd565b9285525283832055815220611586858254612169565b90559187808061151e565b8782106115e757509260209960018a946115708a8e99966115c282600080516020613a0c8339815191529d9b61215c565b86895260028552898920338a5285528989205596995050509450509981949650611544565b895162461bcd60e51b8152908101849052601860248201527745524332303a20616c6c6f77616e636520746f6f206c6f7760401b6044820152606490fd5b84833461030f578160031936011261030f57602090602a549051908152f35b908491346105bc5761165536611ed6565b939794969092804211610579579386936116ec938c8c8961051c968e9a8e60018060a01b03809c169c8d948587526020528c8787209283549361169785612ba8565b905588519660208801987f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d68a528a890152606088015216608086015260a085015260c08401528183015281526104e281612007565b160361053657506102ea939450612bb7565b84833461030f57602036600319011261030f5760209181906001600160a01b03611726611e87565b1681526018845220549051908152f35b84833461030f578160031936011261030f5751908152602090f35b848383346105bc57816003193601126105bc578035906009821015610e3b57611778611eb8565b6008549093906001600160a01b0316330361182e5760ff61179884611f5a565b541615159315159384146117f6575050808260ff6117b86117e694611f5a565b54161515827feeec81de25875ce1725479bb76f720a8defdb43dea041919ae37bb4aae9847c08780a4611f5a565b9060ff8019835416911617905580f35b906020606492519162461bcd60e51b835282015260126024820152714d61726b65743a2073616d6520737461746560701b6044820152fd5b906020606492519162461bcd60e51b8352820152601460248201527313585c9ad95d0e881d5b985d5d1a1bdc9a5e995960621b6044820152fd5b848383346105bc576101803660031901126105bc5760246001600160a01b03813581811690819003611ce457604435916001600160401b03908184116108b257366023850112156108b257838601359182116108b257368583860101116108b25760643591818316809303610e33576118e68260055416331461207a565b863594620186a0946118fa868811156120c5565b602096808c7fc353b09af857951dccce61b43a5854fc45beceed36c50e5d4cc2e71858a8e0df8a549180a3875580611ca6575b508682611b6b575b50505081611b2b575b505060843580611b16575b5060a43580611b01575b5060c43580611aed575b5060e43580611acc575b506101043580611aab575b506101243580611a7a575b50610144359081611a0c575b5050610164359384611999578580f35b601e5485106119b25750505050601f5581808080808580f35b5162461bcd60e51b8152928301526032908201527f4d61726b65743a206c69717569646174696f6e436f6c6c61746572616c697a616044820152711d1a5bdb94985d19481d1bdbc81cdb585b1b60721b6064820152608490fd5b611a18908211156120c5565b601f548111611a2b57601e558580611989565b5090602591608494519362461bcd60e51b85528401528201527f4d61726b65743a20636f6c6c61746572616c697a6174696f6e5261746520746f6044820152646f2062696760d81b6064820152fd5b806016547fae6e0ab3b95f0a53ff9660a390ccedcbbf1f2355dce974a9841af106fddcfaba8980a36016558661197d565b611ab68282106120c5565b611ac3601b5482116120c5565b601c5586611972565b611ad78282106120c5565b611ae4601c5482106120c5565b601b5586611967565b611af88282106120c5565b601d558661195d565b611b0d828211156120c5565b601a5586611953565b611b22828211156120c5565b60195586611949565b816008549182167f5a62d22209e370e38eea92cfddcd228e656e6ec139243392a760a7769f5877fd8a80a36001600160a01b03191617600855868061193e565b8291611b78601054611f89565b601f8111611c55575b508b90601f8411600114611be6578c93611bd9575b5050508160011b916000199060031b1c1916176010555b7fa6f004921c944d4b8bf6e38462b00f36a58d62495d56b51f571ab78f732c98158880a1888086611935565b0101359050868b80611b96565b60108d52888d20601f198516955092509089908d5b8a878210611c3a5750508460019610611c1e575b50505050811b01601055611bad565b60001960f88660031b161c19920101351690558a808881611c0f565b8483019093013585556001909401938b929182019101611bfb565b9150915060108b52868b20601f840160051c8101888510611c9f575b91849391601f8b94920160051c01905b818110611c8e5750611b81565b8d81558594508a9350600101611c81565b5080611c71565b600f80546001600160a01b0319169190911790557f0b2d6eb667d0522c3eb86e4288afecae6c11591ffd1345d4d12407e0598bca9b8a80a18a61192d565b8580fd5b84833461030f578060031936011261030f57602090610f1a611d08611e87565b6024359033612c05565b509150346105bc5760603660031901126105bc57611d2e611e87565b91611d37611eb8565b91611d40611ec7565b9260018060a01b03948591611d5a8360055416331461207a565b15611dfe571692831590811591611df6575b5015611dbb575050806005549283167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08580a36001600160a01b03199182161760055560068054909116905580f35b906020606492519162461bcd60e51b835282015260156024820152744f776e61626c653a207a65726f206164647265737360581b6044820152fd5b905038611d6c565b93505050501660018060a01b0319600654161760065580f35b8285346102ed57806003193601126102ed5750611e3261234f565b825191151582526020820152f35b93505050346105bc57806003193601126105bc57602092611e5f611e87565b611e67611ea2565b6001600160a01b0391821683526003865283832091168252845220548152f35b600435906001600160a01b0382168203611e9d57565b600080fd5b602435906001600160a01b0382168203611e9d57565b602435908115158203611e9d57565b604435908115158203611e9d57565b60e0906003190112611e9d576001600160a01b03906004358281168103611e9d57916024359081168103611e9d5790604435906064359060843560ff81168103611e9d579060a4359060c43590565b6060906003190112611e9d576001600160a01b03906004358281168103611e9d57916024359081168103611e9d579060443590565b6009811015611f73576000526007602052604060002090565b634e487b7160e01b600052602160045260246000fd5b90600182811c92168015611fb9575b6020831014611fa357565b634e487b7160e01b600052602260045260246000fd5b91607f1691611f98565b6001600160401b038111611fd657604052565b634e487b7160e01b600052604160045260246000fd5b604081019081106001600160401b03821117611fd657604052565b61010081019081106001600160401b03821117611fd657604052565b608081019081106001600160401b03821117611fd657604052565b90601f801991011681019081106001600160401b03821117611fd657604052565b6001600160401b038111611fd657601f01601f191660200190565b1561208157565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b156120cc57565b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881b9bdd081d985b1a59607a1b6044820152606490fd5b8181029291811591840414171561211857565b634e487b7160e01b600052601160045260246000fd5b8115612138570490565b634e487b7160e01b600052601260045260246000fd5b604d811161211857600a0a90565b9190820391821161211857565b9190820180921161211857565b8181039291600013801582851316918412161761211857565b6014549192916121d8916121c9916121bf916121b5906001600160801b03831690612105565b9060801c9061212e565b93601f5490612105565b6121d28361214e565b9061212e565b8083106122a0576121ec612228918461215c565b9161222361221d612214601e5461220e6122058661214e565b60215490612169565b90612105565b6121d28461214e565b9161214e565b612176565b6509184e72a0009081810291818305149015171561211857670de0b6b3a76400009182810292818405149015171561211857801561213857600160ff1b91808314600019831416612118570590600082121561229957811461211857600003905b808211612294575090565b905090565b5090612289565b505050600090565b6001600160a01b038116600081815260176020526040812054919493929091908115612336579160409161231285946122ec61232a976122e66137a8565b92612593565b815190936001600160801b039160209161230891841690612105565b920151169061212e565b81811061232e57035b95815260186020522054612665565b9091565b50508061231b565b50509192505080918190565b51908115158203611e9d57565b60018060a01b03600f54169060409081519263d6d7d52560e01b84528284602092836004830152600060105461238481611f89565b908160248601526001908582821691826000146125235750506001146124df575b5050600083809203925af180156124d4576000948591612499575b5092841561243b57831561240157505081601155817f9f9192b5edb17356c524e08d9e025c8e2f6307e6ea52fb7968faa3081f51c3c8600080a25b42601355565b60649250519062461bcd60e51b8252600482015260146024820152734d61726b65743a20696e76616c6964207261746560601b6044820152fd5b9091925061244e60135460125490612169565b421161245f575050601154906123fb565b60649250519062461bcd60e51b82526004820152601460248201527313585c9ad95d0e881c985d19481d1bdbc81bdb1960621b6044820152fd5b9490508385813d83116124cd575b6124b1818361203e565b810103126102ed5750806124c485612342565b940151386123c0565b503d6124a7565b83513d6000823e3d90fd5b915060106000528560002091866000935b838510612508575050505082016044016000836123a5565b80548c8601604401528a97508b9650930192879082016124f0565b8195506000949193506044925060ff191682840152151560051b82010192506123a5565b1561254e57565b60405162461bcd60e51b815260206004820152601e60248201527f4d61726b65743a2065786368616e676552617465206e6f742076616c696400006044820152606490fd5b61259e821515612547565b60018060a01b036020816009541691600c5490600094168452601882526064604085205491604051948593849263442c159960e01b8452600484015260248301528660448301525afa918215612659578092612621575b50509061261961261061261e93620186a06022540490612105565b601e5490612105565b61212e565b90565b9091506020823d8211612651575b8161263c6020938361203e565b810103126102ed5750516126196126106125f5565b3d915061262f565b604051903d90823e3d90fd5b612670821515612547565b602060018060a01b0360095416916064600c54604051948593849263442c159960e01b845260048401526024830152600060448301525afa908115612710576000916126dd575b50906126196126c99260225490612105565b620186a06126d9601e5483612105565b0491565b906020823d8211612708575b816126f66020938361203e565b810103126102ed5750516126196126b7565b3d91506126e9565b6040513d6000823e3d90fd5b6001600160a01b0316600081815260186020526040812054909261273f91612665565b91835260176020526040832054801561284857811561284857818110612848578281101561283e57601454612788918391610b04916121b5906001600160801b03831690612105565b90620186a0928383029280840485149015171561282a576127ad92916121d29161215c565b91601b5491601c54936127c08585612176565b80820291848212600160ff1b82141661282a57818305149015171561281657058184820194851291129080158216911516176128025750808212612294575090565b634e487b7160e01b81526011600452602490fd5b634e487b7160e01b83526011600452602483fd5b634e487b7160e01b85526011600452602485fd5b50505050601b5490565b50505090565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316148061294f575b156128a9577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f000000000000000000000000000000000000000000000000000000000000000082527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a0815260c081018181106001600160401b03821117611fd65760405251902090565b507f00000000000000000000000000000000000000000000000000000000000000004614612880565b1561297f57565b60405162461bcd60e51b815260206004820152601660248201527545524332303a2062616c616e636520746f6f206c6f7760501b6044820152606490fd5b156129c457565b60405162461bcd60e51b815260206004820152601660248201527545524332303a206e6f207a65726f206164647265737360501b6044820152606490fd5b51906001600160a01b0382168203611e9d57565b519060ff82168203611e9d57565b6005811015611f735780612a355750565b60018103612a7d5760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b6044820152606490fd5b60028103612aca5760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606490fd5b600314612ad357565b60405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608490fd5b9291906fa2a8918ca85bafe22016d0b997e4df60600160ff1b038311612b9c5791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa15612b8f5781516001600160a01b03811615612b89579190565b50600190565b50604051903d90823e3d90fd5b50505050600090600390565b60001981146121185760010190565b7fe50de2333c10a9502fcb1d8ae13a51bbf423153dfc63c2b8997665b32154afc360018060a01b038092169160009083825260036020526040822094169384825260205284604082205580a4565b909160207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259160018060a01b03809416938460005260028352604060002095169485600052825280604060002055604051908152a3565b15612c6357565b60405162461bcd60e51b815260206004820152600e60248201526d13585c9ad95d0e881c185d5cd95960921b6044820152606490fd5b15612ca057565b606460405162461bcd60e51b815260206004820152602060248201527f4d61726b65743a2063616e6e6f742065786563757465206f6e20697473656c666044820152fd5b15612ceb57565b60405162461bcd60e51b815260206004820152602160248201527f42696742616e673a20616c6c6f77616e63655368617265206e6f742076616c696044820152601960fa1b6064820152608490fd5b919290600090602a5485106131ad5784156131a557620186a09460209086612d63835483612105565b0496612dad612d9c612d786011549a85612169565b600d546001600160a01b039b919060ff90612d94908e166131f1565b16918b6133b1565b612da7811515612ce4565b88613434565b612db8835483612105565b049287811680865260248452604094858720612dd5828254612169565b9055612ddf61328e565b98612dea8286612169565b88878951612df781611fec565b82815201528a516001600160801b039b8c9182166131395781612e22849e8f955b168284511661378f565b168152612e37828a830194168385511661378f565b8281169093525160809290921b6001600160801b0319169116908117601455601654801591821561312e575b5050156130ea57907f3a5151e57d3bc9798e7853034ac52293d1a0e12a2b44725e75b03b21f86477a6878c8795941692838b52601789528c612ea9838d20918254612169565b905581519081528c89820152a487600d5416803b15611ce45784516340c10f1960e01b8152306004820152602481018490529086908290604490829084905af180156130e0576130cd575b5087600d541690600e54918960095416865163095ea7b360e01b91828252600482015288602482015286816044818c875af180156130c3579287928a88938f96613080575b506009548b51928352959095166001600160a01b0316600482015260248101929092529092839190829081604481015b03925af1801561307657908694939291613036575b50612fa99450868a6009541692855196879586948593634d4d7cbd60e11b8552309060048601613948565b03925af190811561302a57839161300b575b509394600a5416803b156105bc57908280926004835180958193632ebe913360e21b83525af19081156130025750612ff1575050565b612ffb8291611fc3565b6102ed5750565b513d84823e3d90fd5b6130229150823d8411610900576108f0818361203e565b905038612fbb565b505051903d90823e3d90fd5b80929450859193953d831161306f575b613050818361203e565b81010312611ce45791612fa993916130688694612342565b5038612f7e565b503d613046565b86513d89823e3d90fd5b9350509290935081813d83116130bc575b61309b818361203e565b81010312610e3357612f699287928a8e6130b58a95612342565b5095612f39565b503d613091565b88513d8b823e3d90fd5b6130d990959195611fc3565b9338612ef4565b85513d88823e3d90fd5b865162461bcd60e51b815260048101879052601b60248201527f42696742616e673a20626f72726f7720636170207265616368656400000000006044820152606490fd5b111590503880612e63565b9091808983018481511661314d9083612105565b8585511661315a9161212e565b9e8f8186511661316991612105565b9151166131759161212e565b10613189575b9082612e22818f9594612e18565b919b908c612e2261319a8294612ba8565b9e505050909161317b565b509250829150565b606460405162461bcd60e51b815260206004820152602060248201527f42696742616e673a20626f72726f7720616d6f756e7420746f6f20736d616c6c6044820152fd5b60405163313ce56760e01b60208201908152600482529061321181611fec565b5160009283928392916001600160a01b03165afa903d15613286573d916132378361205f565b92613245604051948561203e565b83523d82602085013e5b8061327b575b15613274576020828051810103126102ed5750602061261e9101612a16565b5050601290565b506020825114613255565b60609161324f565b6040519061329b82611fec565b6014546001600160801b038116835260801c6020830152565b919060018060a01b038060009416845260206017815260408520549081156133a75760188152604086205480156133a057816132ee61328e565b9460095416916064600c54604051948593849263442c159960e01b8452600484015260248301528b60448301525afa96871561265957809761336a575b505061230861334a612610613365969798620186a06022540490612105565b9561336060018060801b03948587511690612105565b612105565b111590565b9096508187813d8311613399575b613382818361203e565b810103126102ed575094519461230861334a61332b565b503d613378565b5050505050565b5060019450505050565b61221d906133d18561261e96956133cb6121d29685612593565b906133f1565b6001600160a01b0390911660009081526018602052604090205490612105565b918215801561342c575b6122a057600181018091116121185761341a9261220e6126199261214e565b6005810180911161211857600a900490565b5081156133fb565b6001600160a01b0316338103613448575050565b60008181526020906003825260409182822033835281528483832054106134b1578382526003815282822033835281528282205460010161348a575050505050565b6134a59382526003815282822090338352522091825461215c565b905538808080806133a0565b60649083519062461bcd60e51b82526004820152601460248201527313585c9ad95d0e881b9bdd08185c1c1c9bdd995960621b6044820152fd5b6001600160801b03918216908216039190821161211857565b9190916000602060405161351781611fec565b82815201526020810180516001600160801b0390811661355b5761355481865b81613547818a16828951166134eb565b16865216828451166134eb565b1690529190565b61357561356b8285511687612105565b828451169061212e565b94806135916135878486511689612105565b848751169061212e565b106135a1575b8161355491613537565b94816135af61355492612ba8565b96915050613597565b60ff60265416613729576014546001600160801b031690811561372257600a54604051631848f2bf60e31b8152602093916001600160a01b03919085908290600490829086165afa80156127105785916000916136e9575b50600460405180948193631a674cc560e11b8352165afa938415612710576000946136ba575b50506136529192670de0b6b3a764000092839160295490612105565b0490818110156136b157613669602a54809261215c565b83810290808204851490151715612118576121d261368a926136a59461215c565b6027549261369f60285492613360848761215c565b04612169565b90808211612294575090565b50505060275490565b81813d83116136e2575b6136ce818361203e565b81010312610e3b5751925061365238613636565b503d6136c4565b909181813d831161371b575b6136ff818361203e565b8101031261030f57519082821682036102ed5750849038613610565b503d6136f5565b6028549150565b600a5460405163e6abad4960e01b815290602090829060049082906001600160a01b03165afa90811561271057600091613761575090565b906020823d8211613787575b8161377a6020938361203e565b810103126102ed57505190565b3d915061376d565b6001600160801b03918216908216019190821161211857565b600060206040516137b881611fec565b82815201526001600160401b03906137d78260255460401c164261215c565b91821561382e5761382961336091670de0b6b3a764000061381e6137f961328e565b9660018060801b03958694858a5116906301e133806138166135b8565b041690612105565b04168285511661378f565b168252565b50905061261e61328e565b60405161384581611fec565b6025546001600160401b03908181168352818160401c1661386d60208501918083524261215c565b9283156133a057602094816301e133806138856135b8565b04168152814216835261389661328e565b670de0b6b3a76400006138bb60018060801b0397613360898551168787511690612105565b04956138cc8188168284511661378f565b1680825296015160801b6001600160801b031990811690961760145551915192909416931692831760409190911b67ffffffffffffffff60401b16176025557f7484db546dcd57af0104c73c8a6968dfbaf5767f047cee0dadd0499ad7df81a0600080a3565b9190826040910312611e9d576020825192015190565b9081526001600160a01b0391821660208201529116604082015260608101919091526000608082015260a00190565b6001600160a01b03908116600081815260176020526040812054919390928282146139fa579060ff6139af6139b893600d54166131f1565b169283916133f1565b80156139f35782916121d261221d6139de93876040975260246020528686205490612105565b92815260246020522054808211612294575090565b5050905090565b50505060409150602460205220549056feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220a6c77e599a1a04824c091fb5b5bda9789f78dc50fb6d34e330614a84504ce54464736f6c63430008120033"; + "0x61014080604052346200018a5762000017816200018f565b600f81526001602082016e546170696f63612042696742616e6760881b8152602060405162000046816200018f565b8381520192603160f81b845251902091208160e052610100918183524660a0526040519160208301907f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f92838352604085015260608401524660808401523060a084015260a0835260c083019280841060018060401b03851117620001745760408490525190206080523060c052610120908152600580546001600160a01b0319163390811790915560007f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a362013880601b5562015f90601c55612710601d55612ee06020556103e8602d55613cf69283620001ac843960805183612999015260a05183612a64015260c05183612963015260e051836129e801525182612a0e015251816129c50152f35b634e487b7160e01b600052604160045260246000fd5b600080fd5b604081019081106001600160401b03821117620001745760405256fe60806040908082526004918236101561001757600080fd5b60009260e08435811c938462a02a2014611ef65750836302ce728f14611ecd578363078dfbe714611dc8578363095ea7b314611d9e5783630c4e84f014611c8757836318160ddd14611c6c5783631c9e379b14611c345783631d4d3a5d14611c0b5783631da8bf1014611b515783631fb8f81a14611b3257836323b872dd146119aa578363331960ff1461198b57836334ce998a1461196257836334d441d0146119435783633644e5151461192657836337b6b7b91461190757836338d52e0f146118de5783633ba0b9a9146118bf5783633f741adb1461189657836340626d8b1461187757836344de240a14611858578363473e3ce71461183957836348e4163e146118015783634e71e0c81461174c5783635224372c14611695578363529898f214611677578363542afda31461165857836357935462146116395783636b19ad161461161a5783636c3d8b8f146115f157836370a08231146115b9578363727785471461158157836374645ff3146114ed57836374c9e481146114ce5783637dc0d1d0146114a55783637ecebe001461146e5783637fa0b84e1461143d5783638285ef401461140c57836387b27937146113d45783638c5d0ed3146113b55783638da5cb5b1461138c578363910dd7c814611113578363932bc4f81461103657836399a970281461100d5783639e15e89f14610fd2578363a9059cbb14610ef7578363b0e21e8a14610ed8578363b27c0e7414610ea7578363b7113f1914610e83578363bb4cfe3b14610e64578363bde39c5d14610e45578363c1ad5c8d14610e21578363cd0211eb14610a7f578363ce8849ed14610a56578363d3fb2a38146105e1578363d505accf1461045a5750508163d8dfeb4514610431578163dd62ed3e146103e3578163de406577146103ba578163e0996cb61461039b578163e30c397814610372578163ea64dd5614610353578163eec0f42e14610334578163f791395d14610311575063f8ba4cff146102f357600080fd5b3461030e578060031936011261030e5761030b61393b565b80f35b80fd5b9050346103305781600319360112610330576020906027549051908152f35b5080fd5b905034610330578160031936011261033057602090600c549051908152f35b905034610330578160031936011261033057602090601f549051908152f35b90503461033057816003193601126103305760065490516001600160a01b039091168152602090f35b905034610330578160031936011261033057602090601d549051908152f35b90503461033057816003193601126103305760095490516001600160a01b039091168152602090f35b905034610330578060031936011261033057602091610400611f3d565b82610409611f53565b6001600160a01b03928316845260028652922091166000908152908352819020549051908152f35b905034610330578160031936011261033057600b5490516001600160a01b039091168152602090f35b908491346105dd5761046b36611f87565b91839498959793421161059a579161053d91610545938c8b8b60018060a01b0398898d169a8b93846000528d60205285600020908154916104ab83612cba565b90558c87519560208701977f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e266895260008a890152606088015216608086015260a085015260c0840152818301528152610503816120b8565b51902061050e612960565b915190602082019261190160f01b84526022830152604282015260428152610535816120d4565b519020612c35565b919091612b36565b1603610557575061030b939450612d17565b606490602087519162461bcd60e51b8352820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152fd5b8a5162461bcd60e51b8152602081880152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b8280fd5b848383346105dd576101603660031901126105dd576001600160a01b03813581811690819003610a52576024916001600160401b038335818111610a4e5736602382011215610a4e5780860135918211610a4e5736858383010111610a4e5760443593838516809503610a495761065d84600554163314612174565b80610a0b575b5084826108b1575b50505081610871575b505060643580610859575b5060843580610841575b5060a4358061082a575b5060c43580610806575b5060e435806107e2575b5061010435806107b1575b506101243580610740575b506101443592836106cc578480f35b601e5484106106e357505050601f55818080808480f35b608492916020603292519362461bcd60e51b85528401528201527f4d61726b65743a206c69717569646174696f6e436f6c6c61746572616c697a616044820152711d1a5bdb94985d19481d1bdbc81cdb585b1b60721b6064820152fd5b61074f620186a08211156121bf565b601f54811161076157601e55846106bd565b506025906020608494519362461bcd60e51b85528401528201527f4d61726b65743a20636f6c6c61746572616c697a6174696f6e5261746520746f6044820152646f2062696760d81b6064820152fd5b806016547fae6e0ab3b95f0a53ff9660a390ccedcbbf1f2355dce974a9841af106fddcfaba8780a3601655846106b2565b6107f0620186a082106121bf565b6107fd601b5482116121bf565b601c55846106a7565b610814620186a082106121bf565b610821601c5482106121bf565b601b558461069d565b610838620186a082106121bf565b601d5584610693565b610850620186a08211156121bf565b601a5584610689565b610868620186a08211156121bf565b6019558461067f565b816008549182167f5a62d22209e370e38eea92cfddcd228e656e6ec139243392a760a7769f5877fd8880a36001600160a01b031916176008558480610674565b82916108be60105461203a565b601f81116109ac575b508990601f841160011461092c578a9361091f575b5050508160011b916000199060031b1c1916176010555b7fa6f004921c944d4b8bf6e38462b00f36a58d62495d56b51f571ab78f732c98158680a186808461066b565b01013590508489806108dc565b60108b52601f1984169450600080516020613ca183398151915292509087908b60205b87821061098d5750508460019610610971575b50505050811b016010556108f3565b60001960f88660031b161c199201013516905588808681610962565b828501909301358555600194909401938992918201919081019061094f565b60108b529092509050600080516020613ca1833981519152601f840160051c810160208510610a04575b91849391601f8994920160051c01905b8181106109f357506108c7565b8b81558594508893506001016109e6565b50806109d6565b600f80546001600160a01b0319169190911790557f0b2d6eb667d0522c3eb86e4288afecae6c11591ffd1345d4d12407e0598bca9b8880a188610663565b600080fd5b8780fd5b8480fd5b84833461033057816003193601126103305760085490516001600160a01b039091168152602090f35b5083823461033057608036600319011261033057610a9b611f3d565b91610aa4611f53565b93610aad611f78565b506064356001835260209560078752610acc60ff868620541615612d6e565b6001600160a01b039181831691610ae530841415612dab565b610aed612501565b5050610af761393b565b610b3c610b2b610b0e84610b09613390565b613606565b90506011549060ff610b2389600d54166132f3565b1691856134b3565b610b36811515612df6565b89613536565b8286526017895286862054808311610e19575b508115610dde5781610b6091613bec565b9681881015610da35782865260238952868620610b7e898254612256565b9055610b8c82610b09613390565b9890899060018060801b03815116908c60018060801b031991015160801b161760145584885260178b52888820610bc4858254612256565b90558989888860095416868c600e54610bf28651978896879586946311a5cc7760e31b865230928601613a4a565b03925af18015610d99578c9388938c8e99989794610c2794610d6b575b5050610c1b878a612256565b80610d48575b50612256565b80610cad575b50895193845216917fc8e512d8f188ca059984b5853d2bf653da902696b8512785b182b2c813789a6e9190a4600a541690813b156105dd578351632ebe913360e21b81529183918391829084905af18015610ca357610c8f575b505051908152f35b610c998291612074565b61030e5780610c87565b83513d84823e3d90fd5b925092939450600d541690813b15610a4e578851632770a7eb60e21b815230888201908152602081019290925291889183919082908490829060400103925af18015610d3e57918a918a959493610d07575b908691610c2d565b7fc8e512d8f188ca059984b5853d2bf653da902696b8512785b182b2c813789a6e929198610d358892612074565b98919250610cff565b88513d89823e3d90fd5b610d659150610d5e620186a091601a54906121ff565b0489612256565b8f610c21565b81610d8a92903d10610d92575b610d8281836120ef565b810190613a34565b8e9150610c0f565b503d610d78565b8a513d8b823e3d90fd5b865162461bcd60e51b81528086018a9052601560248201527442423a2072657061796d656e7420746f6f206c6f7760581b6044820152606490fd5b865162461bcd60e51b81528086018a9052601560248201527453474c3a206e6f7468696e6720746f20726570617960581b6044820152606490fd5b915089610b4f565b848334610330578160031936011261033057602090610e3e6136ba565b9051908152f35b8483346103305781600319360112610330576020906028549051908152f35b848334610330578160031936011261033057602090601e549051908152f35b84833461033057816003193601126103305760209060ff6025541690519015158152f35b82853461030e578060031936011261030e57506024548151906001600160401b03908181168352831c166020820152f35b848334610330578160031936011261033057602090601a549051908152f35b848334610330578060031936011261033057602091610f14611f3d565b82602435928315801590610fc0575b610f53575b50519182526001600160a01b0316903390600080516020613c81833981519152908590a35160018152f35b3381526001865281812054610f6a85821015612a8a565b6001600160a01b038416908533839003610f87575b505050610f28565b610f9b91610f96841515612acf565b612256565b3383526001885283832055815220610fb4838254612263565b90558285808085610f7f565b50336001600160a01b03841614610f23565b848334610330578060031936011261033057606090610ffb610ff2611f3d565b602435906123a2565b91929081519384526020840152820152f35b848334610330578060031936011261033057602090610e3e61102d611f3d565b6024359061282e565b84833461033057816003193601126103305780519082602b546110588161203a565b808552906001908181169081156110eb5750600114611092575b5050506110848261108e9403836120ef565b5191829182612110565b0390f35b602b8352602095507f11c44e4875b74d31ff9fd779bf2566af7bd15b87fc985d01f5094b89e3669e4f5b8284106110d8575050508261108e946110849282010194611072565b80548685018801529286019281016110bc565b61108e97506110849450602092508693915060ff191682840152151560051b82010194611072565b925090346113885780600319360112611388578135926001600160401b038411610a525736602385011215610a5257838301359261115084612159565b9461115d845196876120ef565b848652866020918288019636602482840101116105dd578060248593018937880101526024359361ffff8516809503610a4e57610100958688805181010312611384576111a99061243c565b936111b5828901612b14565b906111c260608a01612b14565b9860808101519860a0820151926111db60c08401612b28565b91818401519301519360018060a01b03808097169d169a81421161134157928d8f819897948f948f8f968f918f959a8f8c81956112b79f9c61053d9f5060001461131a577f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e2669a5b82528952209384549461125486612cba565b905580519788019889528701528d6060870152608086015260a085015260c0840152818301528152611285816120b8565b519020611290612960565b908951908b82019261190160f01b84526022830152604282015260428152610535816120d4565b16036112d9575050506000146112d05761030b92612d17565b61030b92612cc9565b5162461bcd60e51b815291820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e61747572650000604482015260649150fd5b7f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d69a611242565b875162461bcd60e51b8152808b018a9052601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b8880fd5b8380fd5b84833461033057816003193601126103305760055490516001600160a01b039091168152602090f35b848334610330578160031936011261033057602090601b549051908152f35b8483346103305760203660031901126103305760209181906001600160a01b036113fc611f3d565b1681526023845220549051908152f35b82853461030e578060031936011261030e575060145481516001600160801b038216815260809190911c6020820152f35b84833461033057806003193601126103305760209061146761145d611f3d565b6024359033612cc9565b5160018152f35b848383346105dd5760203660031901126105dd5760209282916001600160a01b03611497611f3d565b168252845220549051908152f35b848334610330578160031936011261033057600f5490516001600160a01b039091168152602090f35b848334610330578160031936011261033057602090602d549051908152f35b8483346103305781600319360112610330578051908260105461150f8161203a565b808552906001908181169081156110eb575060011461153a575050506110848261108e9403836120ef565b6010835260209550600080516020613ca18339815191525b82841061156e575050508261108e946110849282010194611072565b8054868501880152928601928101611552565b848383346105dd5760203660031901126105dd573591600983101561030e575060ff6115ae60209361200b565b541690519015158152f35b8483346103305760203660031901126103305760209181906001600160a01b036115e1611f3d565b1681526001845220549051908152f35b848334610330578160031936011261033057600a5490516001600160a01b039091168152602090f35b8483346103305781600319360112610330576020906026549051908152f35b848334610330578160031936011261033057602090601c549051908152f35b848334610330578160031936011261033057602090602c549051908152f35b84833461033057816003193601126103305760209081549051908152f35b848383346105dd57611703906116f760ff84956116ca6116b436611fd6565b9491989093808052600760205220541615612d6e565b6116df6001600160a01b038216301415612dab565b6116e7612501565b50506116f161393b565b85612e4c565b929093601154906133b6565b15611715575082519182526020820152f35b606490602085519162461bcd60e51b8352820152601160248201527013585c9ad95d0e881a5b9cdbdb1d995b9d607a1b6044820152fd5b509150346105dd57826003193601126105dd576006546001600160a01b039290918383169190338390036117be575050806005549384167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08680a36001600160a01b0319928316176005551660065580f35b906020606492519162461bcd60e51b8352820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b8483346103305760203660031901126103305760209181906001600160a01b03611829611f3d565b1681526017845220549051908152f35b8483346103305781600319360112610330576020906015549051908152f35b848334610330578160031936011261033057602090600e549051908152f35b8483346103305781600319360112610330576020906016549051908152f35b5090833461030e57606036600319011261030e5750610e3e602092604435906024359035612289565b8483346103305781600319360112610330576020906011549051908152f35b848334610330578160031936011261033057600d5490516001600160a01b039091168152602090f35b8483346103305781600319360112610330576020906012549051908152f35b848334610330578160031936011261033057602090610e3e612960565b8483346103305781600319360112610330576020906019549051908152f35b84833461033057816003193601126103305760145490516001600160801b039091168152602090f35b8483346103305781600319360112610330576020906013549051908152f35b5090833461030e576119bb36611fd6565b9192826119f5575b508351918252602094506001600160a01b03908116921690600080516020613c81833981519152908590a35160018152f35b6001600160a01b038481168083526001602090815287842054919892909190611a2087831015612a8a565b851692838a03611a34575b505050506119c3565b898552600283528885203386528352888520549060018201611a9e575b5050928260209960018a94611a7d8a8e99610f96600080516020613c818339815191529c9a1515612acf565b9285525283832055815220611a93858254612263565b905591878080611a2b565b878210611af457509260209960018a94611a7d8a8e9996611acf82600080516020613c818339815191529d9b612256565b86895260028552898920338a5285528989205596995050509450509981949650611a51565b895162461bcd60e51b8152908101849052601860248201527745524332303a20616c6c6f77616e636520746f6f206c6f7760401b6044820152606490fd5b8483346103305781600319360112610330576020906029549051908152f35b908491346105dd57611b6236611f87565b93979496909280421161059a57938693611bf9938c8c8961053d968e9a8e60018060a01b03809c169c8d948587526020528c87872092835493611ba485612cba565b905588519660208801987f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d68a528a890152606088015216608086015260a085015260c0840152818301528152610503816120b8565b1603610557575061030b939450612cc9565b848334610330578160031936011261033057602a5490516001600160a01b039091168152602090f35b8483346103305760203660031901126103305760209181906001600160a01b03611c5c611f3d565b1681526018845220549051908152f35b84833461033057816003193601126103305751908152602090f35b848383346105dd57816003193601126105dd57803590600982101561138857611cae611f69565b6008549093906001600160a01b03163303611d645760ff611cce8461200b565b54161515931515938414611d2c575050808260ff611cee611d1c9461200b565b54161515827feeec81de25875ce1725479bb76f720a8defdb43dea041919ae37bb4aae9847c08780a461200b565b9060ff8019835416911617905580f35b906020606492519162461bcd60e51b835282015260126024820152714d61726b65743a2073616d6520737461746560701b6044820152fd5b906020606492519162461bcd60e51b8352820152601460248201527313585c9ad95d0e881d5b985d5d1a1bdc9a5e995960621b6044820152fd5b848334610330578060031936011261033057602090611467611dbe611f3d565b6024359033612d17565b509150346105dd5760603660031901126105dd57611de4611f3d565b91611ded611f69565b91611df6611f78565b9260018060a01b03948591611e1083600554163314612174565b15611eb4571692831590811591611eac575b5015611e71575050806005549283167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08580a36001600160a01b03199182161760055560068054909116905580f35b906020606492519162461bcd60e51b835282015260156024820152744f776e61626c653a207a65726f206164647265737360581b6044820152fd5b905038611e22565b93505050501660018060a01b0319600654161760065580f35b82853461030e578060031936011261030e5750611ee8612501565b825191151582526020820152f35b93505050346105dd57806003193601126105dd57602092611f15611f3d565b611f1d611f53565b6001600160a01b0391821683526003865283832091168252845220548152f35b600435906001600160a01b0382168203610a4957565b602435906001600160a01b0382168203610a4957565b602435908115158203610a4957565b604435908115158203610a4957565b60e0906003190112610a49576001600160a01b03906004358281168103610a4957916024359081168103610a495790604435906064359060843560ff81168103610a49579060a4359060c43590565b6060906003190112610a49576001600160a01b03906004358281168103610a4957916024359081168103610a49579060443590565b6009811015612024576000526007602052604060002090565b634e487b7160e01b600052602160045260246000fd5b90600182811c9216801561206a575b602083101461205457565b634e487b7160e01b600052602260045260246000fd5b91607f1691612049565b6001600160401b03811161208757604052565b634e487b7160e01b600052604160045260246000fd5b604081019081106001600160401b0382111761208757604052565b61010081019081106001600160401b0382111761208757604052565b608081019081106001600160401b0382111761208757604052565b90601f801991011681019081106001600160401b0382111761208757604052565b6020808252825181830181905290939260005b82811061214557505060409293506000838284010152601f8019910116010190565b818101860151848201604001528501612123565b6001600160401b03811161208757601f01601f191660200190565b1561217b57565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b156121c657565b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881b9bdd081d985b1a59607a1b6044820152606490fd5b8181029291811591840414171561221257565b634e487b7160e01b600052601160045260246000fd5b8115612232570490565b634e487b7160e01b600052601260045260246000fd5b604d811161221257600a0a90565b9190820391821161221257565b9190820180921161221257565b8181039291600013801582851316918412161761221257565b6014549192916122d2916122c3916122b9916122af906001600160801b038316906121ff565b9060801c90612228565b93601f54906121ff565b6122cc83612248565b90612228565b80831061239a576122e66123229184612256565b9161231d61231761230e601e546123086122ff86612248565b60205490612263565b906121ff565b6122cc84612248565b91612248565b612270565b6509184e72a0009081810291818305149015171561221257670de0b6b3a76400009182810292818405149015171561221257801561223257600160ff1b91808314600019831416612212570590600082121561239357811461221257600003905b80821161238e575090565b905090565b5090612383565b505050600090565b6001600160a01b038116600081815260176020526040812054919493929091908115612430579160409161240c85946123e6612424976123e06138aa565b926126a5565b815190936001600160801b0391602091612402918416906121ff565b9201511690612228565b81811061242857035b95815260186020522054612777565b9091565b505080612415565b50509192505080918190565b51908115158203610a4957565b9190826040910312610a495760206124608361243c565b92015190565b60208082526000916010549161247b8361203a565b92838284015260019081811690816000146124de57506001146124a0575b5050505090565b929350601060005280600020926000935b8585106124ca5750505060409250010138808080612499565b8054858501604001529382019381016124b1565b925050506040935060ff929192191683830152151560051b010138808080612499565b600f546040805163d6d7d52560e01b81529290916001600160a01b031682848061252d60048201612466565b0381600080955af1801561264d578194829161261a575b509284156125bd57831561258357507f9f9192b5edb17356c524e08d9e025c8e2f6307e6ea52fb7968faa3081f51c3c883918260115580a25b42601355565b5162461bcd60e51b81526020600482015260146024820152734d61726b65743a20696e76616c6964207261746560601b6044820152606490fd5b919250506125d060135460125490612263565b42116125e057506011549061257d565b5162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881c985d19481d1bdbc81bdb1960621b6044820152606490fd5b905061263d919450833d8511612646575b61263581836120ef565b810190612449565b93909338612544565b503d61262b565b508251903d90823e3d90fd5b1561266057565b60405162461bcd60e51b815260206004820152601e60248201527f4d61726b65743a2065786368616e676552617465206e6f742076616c696400006044820152606490fd5b6126b0821515612659565b60018060a01b036020816009541691600c5490600094168452601882526064604085205491604051948593849263442c159960e01b8452600484015260248301528660448301525afa91821561276b578092612733575b50509061272b61272261273093620186a060215404906121ff565b601e54906121ff565b612228565b90565b9091506020823d8211612763575b8161274e602093836120ef565b8101031261030e57505161272b612722612707565b3d9150612741565b604051903d90823e3d90fd5b612782821515612659565b602060018060a01b0360095416916064600c54604051948593849263442c159960e01b845260048401526024830152600060448301525afa908115612822576000916127ef575b509061272b6127db92602154906121ff565b620186a06127eb601e54836121ff565b0491565b906020823d821161281a575b81612808602093836120ef565b8101031261030e57505161272b6127c9565b3d91506127fb565b6040513d6000823e3d90fd5b6001600160a01b0316600081815260186020526040812054909261285191612777565b91835260176020526040832054801561295a57811561295a5781811061295a57828110156129505760145461289a918391610f96916122af906001600160801b038316906121ff565b90620186a0928383029280840485149015171561293c576128bf92916122cc91612256565b91601b5491601c54936128d28585612270565b80820291848212600160ff1b82141661293c5781830514901517156129285705818482019485129112908015821691151617612914575080821261238e575090565b634e487b7160e01b81526011600452602490fd5b634e487b7160e01b83526011600452602483fd5b634e487b7160e01b85526011600452602485fd5b50505050601b5490565b50505090565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03161480612a61575b156129bb577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f000000000000000000000000000000000000000000000000000000000000000082527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a0815260c081018181106001600160401b038211176120875760405251902090565b507f00000000000000000000000000000000000000000000000000000000000000004614612992565b15612a9157565b60405162461bcd60e51b815260206004820152601660248201527545524332303a2062616c616e636520746f6f206c6f7760501b6044820152606490fd5b15612ad657565b60405162461bcd60e51b815260206004820152601660248201527545524332303a206e6f207a65726f206164647265737360501b6044820152606490fd5b51906001600160a01b0382168203610a4957565b519060ff82168203610a4957565b60058110156120245780612b475750565b60018103612b8f5760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b6044820152606490fd5b60028103612bdc5760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606490fd5b600314612be557565b60405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608490fd5b9291906fa2a8918ca85bafe22016d0b997e4df60600160ff1b038311612cae5791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa15612ca15781516001600160a01b03811615612c9b579190565b50600190565b50604051903d90823e3d90fd5b50505050600090600390565b60001981146122125760010190565b7fe50de2333c10a9502fcb1d8ae13a51bbf423153dfc63c2b8997665b32154afc360018060a01b038092169160009083825260036020526040822094169384825260205284604082205580a4565b909160207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259160018060a01b03809416938460005260028352604060002095169485600052825280604060002055604051908152a3565b15612d7557565b60405162461bcd60e51b815260206004820152600e60248201526d13585c9ad95d0e881c185d5cd95960921b6044820152606490fd5b15612db257565b606460405162461bcd60e51b815260206004820152602060248201527f4d61726b65743a2063616e6e6f742065786563757465206f6e20697473656c666044820152fd5b15612dfd57565b60405162461bcd60e51b815260206004820152602160248201527f42696742616e673a20616c6c6f77616e63655368617265206e6f742076616c696044820152601960fa1b6064820152608490fd5b91929060009060295485106132af5784156132a757612e6a85613a79565b9060115495612eb4612ea3612e7f8584612263565b600d546001600160a01b039a919060ff90612e9b908d166132f3565b16918a6134b3565b612eae811515612df6565b87613536565b8682169182855260209260238452604094858720612ed3828254612263565b9055612edd613390565b98612ee88286612263565b88878951612ef58161209d565b82815201528a516001600160801b039b8c91821661323b5781612f20849e8f955b1682845116613891565b168152612f35828a8301941683855116613891565b8281169093525160809290921b6001600160801b03191691169081176014556016548015918215613230575b5050156131ec57907f3a5151e57d3bc9798e7853034ac52293d1a0e12a2b44725e75b03b21f86477a6878c8795941692838b52601789528c612fa7838d20918254612263565b905581519081528c89820152a487600d5416803b1561316d5784516340c10f1960e01b8152306004820152602481018490529086908290604490829084905af180156131e2576131cf575b5087600d541690600e54918960095416865163095ea7b360e01b91828252600482015288602482015286816044818c875af180156131c5579287928a88938f96613182575b506009548b51928352959095166001600160a01b0316600482015260248101929092529092839190829081604481015b03925af1801561317857908694939291613134575b506130a79450868a6009541692855196879586948593634d4d7cbd60e11b8552309060048601613a4a565b03925af1908115613128578391613109575b509394600a5416803b156105dd57908280926004835180958193632ebe913360e21b83525af190811561310057506130ef575050565b6130f98291612074565b61030e5750565b513d84823e3d90fd5b6131209150823d8411610d9257610d8281836120ef565b9050386130b9565b505051903d90823e3d90fd5b80929450859193953d8311613171575b61314e81836120ef565b8101031261316d57916130a79391613166869461243c565b503861307c565b8580fd5b503d613144565b86513d89823e3d90fd5b9350509290935081813d83116131be575b61319d81836120ef565b81010312611384576130679287928a8e6131b78a9561243c565b5095613037565b503d613193565b88513d8b823e3d90fd5b6131db90959195612074565b9338612ff2565b85513d88823e3d90fd5b865162461bcd60e51b815260048101879052601b60248201527f42696742616e673a20626f72726f7720636170207265616368656400000000006044820152606490fd5b111590503880612f61565b9091808983018481511661324f90836121ff565b8585511661325c91612228565b9e8f8186511661326b916121ff565b91511661327791612228565b1061328b575b9082612f20818f9594612f16565b919b908c612f2061329c8294612cba565b9e505050909161327d565b509250829150565b606460405162461bcd60e51b815260206004820152602060248201527f42696742616e673a20626f72726f7720616d6f756e7420746f6f20736d616c6c6044820152fd5b60405163313ce56760e01b6020820190815260048252906133138161209d565b5160009283928392916001600160a01b03165afa903d15613388573d9161333983612159565b9261334760405194856120ef565b83523d82602085013e5b8061337d575b156133765760208280518101031261030e575060206127309101612b28565b5050601290565b506020825114613357565b606091613351565b6040519061339d8261209d565b6014546001600160801b038116835260801c6020830152565b919060018060a01b038060009416845260206017815260408520549081156134a95760188152604086205480156134a257816133f0613390565b9460095416916064600c54604051948593849263442c159960e01b8452600484015260248301528b60448301525afa96871561276b57809761346c575b505061240261344c612722613467969798620186a060215404906121ff565b9561346260018060801b039485875116906121ff565b6121ff565b111590565b9096508187813d831161349b575b61348481836120ef565b8101031261030e575094519461240261344c61342d565b503d61347a565b5050505050565b5060019450505050565b612317906134d38561273096956134cd6122cc96856126a5565b906134f3565b6001600160a01b03909116600090815260186020526040902054906121ff565b918215801561352e575b61239a57600181018091116122125761351c9261230861272b92612248565b6005810180911161221257600a900490565b5081156134fd565b6001600160a01b031633810361354a575050565b60008181526020906003825260409182822033835281528483832054106135b3578382526003815282822033835281528282205460010161358c575050505050565b6135a793825260038152828220903383525220918254612256565b905538808080806134a2565b60649083519062461bcd60e51b82526004820152601460248201527313585c9ad95d0e881b9bdd08185c1c1c9bdd995960621b6044820152fd5b6001600160801b03918216908216039190821161221257565b919091600060206040516136198161209d565b82815201526020810180516001600160801b0390811661365d5761365681865b81613649818a16828951166135ed565b16865216828451166135ed565b1690529190565b61367761366d82855116876121ff565b8284511690612228565b948061369361368984865116896121ff565b8487511690612228565b106136a3575b8161365691613639565b94816136b161365692612cba565b96915050613699565b60ff6025541661382b576014546001600160801b031690811561382457600a54604051631848f2bf60e31b8152602093916001600160a01b03919085908290600490829086165afa80156128225785916000916137eb575b50600460405180948193631a674cc560e11b8352165afa938415612822576000946137bc575b50506137549192670de0b6b3a7640000928391602854906121ff565b0490818110156137b35761376b6029548092612256565b83810290808204851490151715612212576122cc61378c926137a794612256565b602654926137a1602754926134628487612256565b04612263565b9080821161238e575090565b50505060265490565b81813d83116137e4575b6137d081836120ef565b810103126113885751925061375438613738565b503d6137c6565b909181813d831161381d575b61380181836120ef565b81010312610330575190828216820361030e5750849038613712565b503d6137f7565b6027549150565b600a5460405163e6abad4960e01b815290602090829060049082906001600160a01b03165afa90811561282257600091613863575090565b906020823d8211613889575b8161387c602093836120ef565b8101031261030e57505190565b3d915061386f565b6001600160801b03918216908216019190821161221257565b600060206040516138ba8161209d565b82815201526001600160401b03906138d98260245460401c1642612256565b9182156139305761392b61346291670de0b6b3a76400006139206138fb613390565b9660018060801b03958694858a5116906301e133806139186136ba565b0416906121ff565b041682855116613891565b168252565b509050612730613390565b6040516139478161209d565b6024546001600160401b03908181168352818160401c1661396f602085019180835242612256565b9283156134a257602094816301e133806139876136ba565b041681528142168352613998613390565b670de0b6b3a76400006139bd60018060801b03976134628985511687875116906121ff565b04956139ce81881682845116613891565b1680825296015160801b6001600160801b031990811690961760145551915192909416931692831760409190911b67ffffffffffffffff60401b16176024557f7484db546dcd57af0104c73c8a6968dfbaf5767f047cee0dadd0499ad7df81a0600080a3565b9190826040910312610a49576020825192015190565b9081526001600160a01b0391821660208201529116604082015260608101919091526000608082015260a00190565b8015613be657602a546040805163d6d7d52560e01b81526001600160a01b03909216929190808280613aad60048201612466565b0381600080985af1918215613bdc5784908593613bba575b5015613b6b5750670e27c49886e60000811015613b6257670d99a8cec7e20000811115613b5957602d5490670d99a8cec7e1ffff198101908111613b455790668e1bc9bf040000613b1f613b2693612308602c5485612256565b0490612256565b9081613b3157505090565b620186a0925090613b41916121ff565b0490565b634e487b7160e01b84526011600452602484fd5b505050602d5490565b505050602c5490565b5162461bcd60e51b8152602060048201526024808201527f42696742616e673a202061737365742773206f7261636c652063616c6c2066616044820152631a5b195960e21b6064820152608490fd5b905081613bd49293503d84116126465761263581836120ef565b919038613ac5565b81513d86823e3d90fd5b50600090565b6001600160a01b0390811660008181526017602052604081205491939092828214613c6f579060ff613c24613c2d93600d54166132f3565b169283916134f3565b8015613c685782916122cc612317613c53938760409752602360205286862054906121ff565b9281526023602052205480821161238e575090565b5050905090565b50505060409150602360205220549056feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae672a26469706673582212208082314b105886dbefd0bc64b2f053ab5ae9e4c72ac80611d7162104e8ae4d2064736f6c63430008120033"; type BBBorrowConstructorParams = | [signer?: Signer] diff --git a/src/typechain/tapioca-bar/factories/markets/bigBang/BBCollateral__factory.ts b/src/typechain/tapioca-bar/factories/markets/bigBang/BBCollateral__factory.ts index 35cac188..c1a6bc5b 100644 --- a/src/typechain/tapioca-bar/factories/markets/bigBang/BBCollateral__factory.ts +++ b/src/typechain/tapioca-bar/factories/markets/bigBang/BBCollateral__factory.ts @@ -60,6 +60,31 @@ const _abi = [ name: "ApprovalBorrow", type: "event", }, + { + anonymous: false, + inputs: [], + name: "AssetOracleDataUpdated", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "address", + name: "_oldVal", + type: "address", + }, + { + indexed: true, + internalType: "address", + name: "_newVal", + type: "address", + }, + ], + name: "AssetOracleUpdated", + type: "event", + }, { anonymous: false, inputs: [ @@ -279,25 +304,6 @@ const _abi = [ name: "LogBorrowCapUpdated", type: "event", }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "uint256", - name: "_oldVal", - type: "uint256", - }, - { - indexed: true, - internalType: "uint256", - name: "_newVal", - type: "uint256", - }, - ], - name: "LogBorrowingFee", - type: "event", - }, { anonymous: false, inputs: [ @@ -486,6 +492,37 @@ const _abi = [ name: "Transfer", type: "event", }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "uint256", + name: "oldMin", + type: "uint256", + }, + { + indexed: true, + internalType: "uint256", + name: "newMin", + type: "uint256", + }, + { + indexed: true, + internalType: "uint256", + name: "oldMax", + type: "uint256", + }, + { + indexed: false, + internalType: "uint256", + name: "newMax", + type: "uint256", + }, + ], + name: "UpdateMinMaxMintFee", + type: "event", + }, { inputs: [], name: "DOMAIN_SEPARATOR", @@ -680,27 +717,40 @@ const _abi = [ type: "function", }, { - inputs: [ + inputs: [], + name: "assetOracle", + outputs: [ { - internalType: "address", + internalType: "contract IOracle", name: "", type: "address", }, ], - name: "balanceOf", + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "assetOracleData", outputs: [ { - internalType: "uint256", + internalType: "bytes", name: "", - type: "uint256", + type: "bytes", }, ], stateMutability: "view", type: "function", }, { - inputs: [], - name: "borrowOpeningFee", + inputs: [ + { + internalType: "address", + name: "", + type: "address", + }, + ], + name: "balanceOf", outputs: [ { internalType: "uint256", @@ -1013,6 +1063,19 @@ const _abi = [ stateMutability: "view", type: "function", }, + { + inputs: [], + name: "maxMintFee", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, { inputs: [], name: "minDebtRate", @@ -1039,6 +1102,19 @@ const _abi = [ stateMutability: "view", type: "function", }, + { + inputs: [], + name: "minMintFee", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, { inputs: [ { @@ -1329,11 +1405,6 @@ const _abi = [ }, { inputs: [ - { - internalType: "uint256", - name: "_borrowOpeningFee", - type: "uint256", - }, { internalType: "contract IOracle", name: "_oracle", @@ -1618,7 +1689,7 @@ const _abi = [ ] as const; const _bytecode = - "0x6101408060405234620001895762000017816200018e565b600f81526001602082016e546170696f63612042696742616e6760881b8152602060405162000046816200018e565b8381520192603160f81b845251902091208160e052610100918183524660a0526040519160208301907f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f92838352604085015260608401524660808401523060a084015260a0835260c083019280841060018060401b03851117620001735760408490525190206080523060c052610120908152600580546001600160a01b0319163390811790915560007f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a362013880601b5562015f90601c55612710601d556032602055612ee06021556132439283620001ab843960805183612850015260a0518361291b015260c0518361281a015260e0518361289f015251826128c50152518161287c0152f35b634e487b7160e01b600052604160045260246000fd5b600080fd5b604081019081106001600160401b03821117620001735760405256fe608080604052600436101561001357600080fd5b600090813560e01c908162a02a2014611e605750806302ce728f14611e37578063078dfbe714611d38578063095ea7b314611d115780630996efb7146118905780630c4e84f01461177457806318160ddd146117585780631c9e379b1461171f5780631da8bf101461164b5780631fb8f81a1461162d57806323b872dd146114a6578063331960ff1461148857806334ce998a1461145f57806334d441d0146114415780633644e5151461142657806337b6b7b91461140857806338d52e0f146113df5780633ba0b9a9146113c15780633f741adb1461139c57806340626d8b1461137e57806344de240a14611360578063473e3ce71461134257806348e4163e146113095780634e71e0c81461125b578063529898f21461123d578063579354621461121f5780636b19ad16146112015780636c3d8b8f146111d857806370a082311461119f578063727785471461116757806374645ff3146110545780637dc0d1d01461102b5780637ecebe0014610ff25780637fa0b84e14610fc05780638285ef4014610f8e57806387b2793714610f555780638c5d0ed314610f375780638da5cb5b14610f0e578063910dd7c814610cd9578063959916dc14610cbc57806399a9702814610c945780639e15e89f14610c59578063a9059cbb14610b76578063b0e21e8a14610b58578063b27c0e7414610b27578063b7113f1914610b04578063bb4cfe3b14610ae6578063bde39c5d14610ac8578063c1ad5c8d14610aa5578063cce19f8114610925578063ce8849ed146108fc578063d505accf1461075b578063d8dfeb4514610732578063dd62ed3e146106e3578063de406577146106ba578063e0996cb61461069c578063e30c397814610673578063e9a4925214610342578063ea64dd5614610324578063eec0f42e14610306578063f791395d146102e85763f8ba4cff146102ca57600080fd5b346102e557806003193601126102e5576102e26130f4565b80f35b80fd5b50346102e557806003193601126102e5576020602854604051908152f35b50346102e557806003193601126102e5576020600c54604051908152f35b50346102e557806003193601126102e5576020601f54604051908152f35b50346102e55760a03660031901126102e55761035c611ea8565b610364611ebe565b9061036d611ee3565b608435926001600160a01b0390811692909160643561038e30861415612c08565b6002600052602090600782526103ac60ff6040600020541615612c53565b86156105f5575b6103bd8785612c90565b8615610574575b5084875260188152604087206103db878254612154565b90556015546103ea8782612154565b601555600c54908884156104ee575082866009541692604460405180958193627eeac760e11b835230600484015260248301525afa80156104e35789906104af575b6104369250612147565b861161047757505b15610472575080600954165b167f9ed03113de523cebfe5e49d5f8e12894b1c0d42ce805990461726444c90eab878480a480f35b61044a565b6064906040519062461bcd60e51b825260048201526011602482015270084d2ce84c2dcce7440e8dede40daeac6d607b1b6044820152fd5b508282813d83116104dc575b6104c5818361205a565b810103126104d757610436915161042c565b600080fd5b503d6104bb565b6040513d8b823e3d90fd5b9250508460095416803b1561057057604051630208d92960e11b81526001600160a01b038616600482015230602482015260448101929092526064820188905282908290608490829084905af180156105655761054d575b505061043e565b61055690611fdf565b610561578538610546565b8580fd5b6040513d84823e3d90fd5b8280fd5b908096508460095416916064600c546040519485938492638eb22cdd60e01b8452600484015260248301528b60448301525afa9081156105ea5787916105bd575b5094386103c4565b90508581813d83116105e3575b6105d4818361205a565b810103126104d75751386105b5565b503d6105ca565b6040513d89823e3d90fd5b9550836009541681600c54606460405180948193638eb22cdd60e01b835260048301528b60248301528c60448301525afa90811561066857889161063b575b50956103b3565b90508181813d8311610661575b610652818361205a565b810103126104d7575138610634565b503d610648565b6040513d8a823e3d90fd5b50346102e557806003193601126102e5576006546040516001600160a01b039091168152602090f35b50346102e557806003193601126102e5576020601d54604051908152f35b50346102e557806003193601126102e5576009546040516001600160a01b039091168152602090f35b50346102e55760403660031901126102e5576106fd611ea8565b6040610707611ebe565b9260018060a01b03809316815260026020522091166000526020526020604060002054604051908152f35b50346102e557806003193601126102e557600b546040516001600160a01b039091168152602090f35b50346102e55761076a36611ef2565b9183919395949542116108b75760018060a01b039283881694856000526004602052604060002092835460001981146108a15761084d95610845956001830190556040519060208201927f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e2668452600060408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e0815261080981612023565b519020610814612817565b9060405190602082019261190160f01b8452602283015260428201526042815261083d8161203f565b519020612ade565b9190916129df565b160361085c576102e292612bb1565b60405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152606490fd5b634e487b7160e01b600052601160045260246000fd5b60405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b50346102e557806003193601126102e5576008546040516001600160a01b039091168152602090f35b50346102e5578061093536611f41565b60038492939452600760205261095260ff60408420541615612c53565b61095a6123ea565b50506109646130f4565b6001600160a01b03838116939061097d30861415612c08565b6109878387612c90565b82818716958686526018602052604086206109a3838254612147565b90556109b182601554612147565b601555604051967f8ad4d3ff00da092c7ad9a573ea4f5f6a3dffc6712dc06d3f78f49b862297c4028780a46009541690600c5492823b15610aa157630208d92960e11b86523060048701526001600160a01b03919091166024860152604485019290925260648401919091528290608490829084905af18015610a9657610a81575b50601154610a4091612d6e565b15610a485780f35b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881a5b9cdbdb1d995b9d607a1b6044820152606490fd5b91610a8f610a409293611fdf565b9190610a33565b6040513d85823e3d90fd5b8480fd5b50346102e557806003193601126102e5576020610ac0612e70565b604051908152f35b50346102e557806003193601126102e5576020602954604051908152f35b50346102e557806003193601126102e5576020601e54604051908152f35b50346102e557806003193601126102e557602060ff602654166040519015158152f35b50346102e557806003193601126102e55760406025548151906001600160401b03908181168352831c166020820152f35b50346102e557806003193601126102e5576020601a54604051908152f35b50346102e55760403660031901126102e557610b90611ea8565b60243580928115801590610c47575b610bd7575b50506040519182526001600160a01b03169033906000805160206131ee83398151915290602090a3602060405160018152f35b33815260016020526040812054610bf083821015612941565b6001600160a01b0384169033829003610c0b575b5050610ba4565b604093610c2291610c1d841515612986565b612147565b338352600160205283832055815220610c3c838254612154565b905581388080610c04565b50336001600160a01b03841614610b9f565b50346102e55760403660031901126102e5576060610c81610c78611ea8565b60243590612293565b9060405192835260208301526040820152f35b50346102e55760403660031901126102e5576020610ac0610cb3611ea8565b602435906126e5565b50346102e557806003193601126102e55760208054604051908152f35b50346102e55760403660031901126102e5576004356001600160401b038082116105705736602383011215610570578160040135908111610efa578260405192610d2d6020601f19601f860116018561205a565b82845260208401923660248284010111610570578060246020930185378401015260243561ffff81168103610ef657610100918284805181010312610aa157610d75906123dd565b610d81604085016129cb565b91610d8e606086016129cb565b9460808101519460a08201519260c08301519160ff83168303610ef25760e0840151930151938042116108b7578515610ecb577f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e266915b6001600160a01b0388168b52600460205260408b20805491906000198314610eb7579161ffff610e749896949261084598969460018401905560405194602086015216604084015260018060a01b038a16606084015260018060a01b038c1660808401528a60a084015260c083015260e082015260e08152610e6581612023565b60208151910120610814612817565b6001600160a01b0383811691160361085c5715610ea1576102e2926001600160a01b039081169116612bb1565b6102e2926001600160a01b039081169116612b63565b634e487b7160e01b8d52601160045260248dfd5b7f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d691610de4565b8980fd5b8380fd5b634e487b7160e01b83526041600452602483fd5b50346102e557806003193601126102e5576005546040516001600160a01b039091168152602090f35b50346102e557806003193601126102e5576020601b54604051908152f35b50346102e55760203660031901126102e5576020906040906001600160a01b03610f7d611ea8565b168152602483522054604051908152f35b50346102e557806003193601126102e557601454604080516001600160801b038316815260809290921c602083015290f35b50346102e55760403660031901126102e557610fe7610fdd611ea8565b6024359033612b63565b602060405160018152f35b50346102e55760203660031901126102e5576020906040906001600160a01b0361101a611ea8565b168152600483522054604051908152f35b50346102e557806003193601126102e557600f546040516001600160a01b039091168152602090f35b50346102e557806003193601126102e557604051601054818361107683611fa5565b80835260019380851690811561114657506001146110e9575b5061109c9250038261205a565b60405180926020908183528351918281850152815b8381106110d257505060408094508284010152601f80199101168101030190f35b8086018201518782016040015286945081016110b1565b601086527f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae67293602092508691905b81831061112e57505061109c93508201013861108f565b85548784018501529485019486945091830191611117565b905061109c94506020925060ff191682840152151560051b8201013861108f565b50346102e55760203660031901126102e5576004359060098210156102e557602060ff61119384611f76565b54166040519015158152f35b50346102e55760203660031901126102e5576020906040906001600160a01b036111c7611ea8565b168152600183522054604051908152f35b50346102e557806003193601126102e557600a546040516001600160a01b039091168152602090f35b50346102e557806003193601126102e5576020602754604051908152f35b50346102e557806003193601126102e5576020601c54604051908152f35b50346102e557806003193601126102e5576020602154604051908152f35b50346102e557806003193601126102e5576006546001600160a01b0390818116338190036112c557806005549384167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08680a36001600160a01b0319928316176005551660065580f35b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b50346102e55760203660031901126102e5576020906040906001600160a01b03611331611ea8565b168152601783522054604051908152f35b50346102e557806003193601126102e5576020601554604051908152f35b50346102e557806003193601126102e5576020600e54604051908152f35b50346102e557806003193601126102e5576020601654604051908152f35b50346102e55760603660031901126102e5576020610ac060443560243560043561217a565b50346102e557806003193601126102e5576020601154604051908152f35b50346102e557806003193601126102e557600d546040516001600160a01b039091168152602090f35b50346102e557806003193601126102e5576020601254604051908152f35b50346102e557806003193601126102e5576020610ac0612817565b50346102e557806003193601126102e5576020601954604051908152f35b50346102e557806003193601126102e5576014546040516001600160801b039091168152602090f35b50346102e557806003193601126102e5576020601354604051908152f35b50346102e5576114b536611f41565b9192826114f1575b506040519182526001600160a01b039081169216906000805160206131ee83398151915290602090a3602060405160018152f35b6001600160a01b0384811680835260016020908152604084205492869061151a82861015612941565b86169384840361152f575b50505050506114bd565b838652600283526040808720338852845286205460018101611599575b50926001602096936115778794604097610c1d6000805160206131ee8339815191529c9a1515612986565b928552528383205581522061158d858254612154565b90559138808581611525565b909181106115ed57926001602096936115778a6000805160206131ee8339815191529a98956115ca8260409a612147565b86895260028552898920338a52855289892055949750949799505093965061154c565b60405162461bcd60e51b815260048101849052601860248201527745524332303a20616c6c6f77616e636520746f6f206c6f7760401b6044820152606490fd5b50346102e557806003193601126102e5576020602a54604051908152f35b50346102e55761165a36611ef2565b908395949542116108b7576001600160a01b03878116808a52600460205260408a208054919692959290600019831461170b57826116fc9694928d92600161084598960190556040519160208301937f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d6855260408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e0815261080981612023565b160361085c576102e292612b63565b634e487b7160e01b8c52601160045260248cfd5b50346102e55760203660031901126102e5576020906040906001600160a01b03611747611ea8565b168152601883522054604051908152f35b50346102e557806003193601126102e557602090604051908152f35b50346102e55760403660031901126102e557600435600981101561188c5761179a611ed4565b6008549091906001600160a01b031633036118505760ff6117ba82611f76565b5416151591151591821461181657808260ff6117d861180694611f76565b54161515827feeec81de25875ce1725479bb76f720a8defdb43dea041919ae37bb4aae9847c08780a4611f76565b9060ff8019835416911617905580f35b60405162461bcd60e51b81526020600482015260126024820152714d61726b65743a2073616d6520737461746560701b6044820152606490fd5b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881d5b985d5d1a1bdc9a5e995960621b6044820152606490fd5b5080fd5b50346102e5576101803660031901126102e55760246001600160a01b03813581811690819003610ef657604435916001600160401b0390818411610561573660238501121561056157836004013591821161056157368583860101116105615760643591818316809303611d0d5761190d8260055416331461207b565b60043594620186a094611922868811156120c6565b6020968088547fc353b09af857951dccce61b43a5854fc45beceed36c50e5d4cc2e71858a8e0df8c80a3875580611ccf575b508682611b94575b50505081611b54575b505060843580611b3f575b5060a43580611b2a575b5060c43580611b16575b5060e43580611af5575b506101043580611ad4575b506101243580611aa3575b50610144359081611a33575b50506101643591826119c0578380f35b601e5483106119d5575050601f553880808380f35b9060326084926040519262461bcd60e51b845260048401528201527f4d61726b65743a206c69717569646174696f6e436f6c6c61746572616c697a616044820152711d1a5bdb94985d19481d1bdbc81cdb585b1b60721b6064820152fd5b611a3f908211156120c6565b601f548111611a5257601e5538806119b0565b5060256084926040519262461bcd60e51b845260048401528201527f4d61726b65743a20636f6c6c61746572616c697a6174696f6e5261746520746f6044820152646f2062696760d81b6064820152fd5b806016547fae6e0ab3b95f0a53ff9660a390ccedcbbf1f2355dce974a9841af106fddcfaba8780a3601655386119a4565b611adf8282106120c6565b611aec601b5482116120c6565b601c5538611999565b611b008282106120c6565b611b0d601c5482106120c6565b601b553861198e565b611b218282106120c6565b601d5538611984565b611b36828211156120c6565b601a553861197a565b611b4b828211156120c6565b60195538611970565b816008549182167f5a62d22209e370e38eea92cfddcd228e656e6ec139243392a760a7769f5877fd8880a36001600160a01b031916176008553880611965565b8291611ba1601054611fa5565b601f8111611c7e575b508990601f8411600114611c0f578a93611c02575b5050508160011b916000199060031b1c1916176010555b7fa6f004921c944d4b8bf6e38462b00f36a58d62495d56b51f571ab78f732c98158680a138808661195c565b0101359050863880611bbf565b60108b52888b20601f198516955092509089908b5b8a878210611c635750508460019610611c47575b50505050811b01601055611bd6565b60001960f88660031b161c199201013516905538808881611c38565b8483019093013585556001909401938b929182019101611c24565b9150915060108952868920601f840160051c8101888510611cc8575b91849391601f8b94920160051c01905b818110611cb75750611baa565b8b81558594508a9350600101611caa565b5080611c9a565b600f80546001600160a01b0319169190911790557f0b2d6eb667d0522c3eb86e4288afecae6c11591ffd1345d4d12407e0598bca9b8880a138611954565b8680fd5b50346102e55760403660031901126102e557610fe7611d2e611ea8565b6024359033612bb1565b50346102e55760603660031901126102e557611d52611ea8565b611d5a611ed4565b611d62611ee3565b9060018060a01b03928391611d7c8360055416331461207b565b15611e20571690811590811591611e18575b5015611ddb57806005549283167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08580a36001600160a01b03199182161760055560068054909116905580f35b60405162461bcd60e51b81526020600482015260156024820152744f776e61626c653a207a65726f206164647265737360581b6044820152606490fd5b905038611d8e565b9150501660018060a01b0319600654161760065580f35b50346102e557806003193601126102e5576040611e526123ea565b825191151582526020820152f35b90503461188c57604036600319011261188c576040602092611e80611ea8565b611e88611ebe565b6001600160a01b0391821683526003865283832091168252845220548152f35b600435906001600160a01b03821682036104d757565b602435906001600160a01b03821682036104d757565b6024359081151582036104d757565b6044359081151582036104d757565b60e09060031901126104d7576001600160a01b039060043582811681036104d7579160243590811681036104d75790604435906064359060843560ff811681036104d7579060a4359060c43590565b60609060031901126104d7576001600160a01b039060043582811681036104d7579160243590811681036104d7579060443590565b6009811015611f8f576000526007602052604060002090565b634e487b7160e01b600052602160045260246000fd5b90600182811c92168015611fd5575b6020831014611fbf57565b634e487b7160e01b600052602260045260246000fd5b91607f1691611fb4565b6001600160401b038111611ff257604052565b634e487b7160e01b600052604160045260246000fd5b604081019081106001600160401b03821117611ff257604052565b61010081019081106001600160401b03821117611ff257604052565b608081019081106001600160401b03821117611ff257604052565b90601f801991011681019081106001600160401b03821117611ff257604052565b1561208257565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b156120cd57565b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881b9bdd081d985b1a59607a1b6044820152606490fd5b818102929181159184041417156108a157565b8115612123570490565b634e487b7160e01b600052601260045260246000fd5b604d81116108a157600a0a90565b919082039182116108a157565b919082018092116108a157565b818103929160001380158285131691841216176108a157565b6014549192916121c3916121b4916121aa916121a0906001600160801b03831690612106565b9060801c90612119565b93601f5490612106565b6121bd83612139565b90612119565b80831061228b576121d76122139184612147565b9161220e6122086121ff601e546121f96121f086612139565b60215490612154565b90612106565b6121bd84612139565b91612139565b612161565b6509184e72a000908181029181830514901517156108a157670de0b6b3a7640000918281029281840514901517156108a157801561212357600160ff1b918083146000198314166108a157059060008212156122845781146108a157600003905b80821161227f575090565b905090565b5090612274565b505050600090565b6001600160a01b039081166000818152601760209081526040822054929594939192909181156123d0576122c5613060565b906122d18615156125e2565b6009541683600c54898752601882526064604088205491604051948593849263442c159960e01b8452600484015260248301528960448301525afa9081156123c5578591612396575b509285949261237660189361235161238a9961234c61234360409a620186a06022540490612106565b601e5490612106565b612119565b815190936001600160801b0391869161236c91841690612106565b9201511690612119565b81811061238e57035b97835252205461262e565b9091565b50508261237f565b90508381813d83116123be575b6123ad818361205a565b81010312610aa1575161238a61231a565b503d6123a3565b6040513d87823e3d90fd5b5050509192505080918190565b519081151582036104d757565b60018060a01b03600f54169060409081519263d6d7d52560e01b84528284602092836004830152600060105461241f81611fa5565b908160248601526001908582821691826000146125be57505060011461257a575b5050600083809203925af1801561256f576000948591612534575b509284156124d657831561249c57505081601155817f9f9192b5edb17356c524e08d9e025c8e2f6307e6ea52fb7968faa3081f51c3c8600080a25b42601355565b60649250519062461bcd60e51b8252600482015260146024820152734d61726b65743a20696e76616c6964207261746560601b6044820152fd5b909192506124e960135460125490612154565b42116124fa57505060115490612496565b60649250519062461bcd60e51b82526004820152601460248201527313585c9ad95d0e881c985d19481d1bdbc81bdb1960621b6044820152fd5b9490508385813d8311612568575b61254c818361205a565b810103126102e557508061255f856123dd565b9401513861245b565b503d612542565b83513d6000823e3d90fd5b915060106000528560002091866000935b8385106125a357505050508201604401600083612440565b80548c8601604401528a97508b96509301928790820161258b565b8195506000949193506044925060ff191682840152151560051b8201019250612440565b156125e957565b60405162461bcd60e51b815260206004820152601e60248201527f4d61726b65743a2065786368616e676552617465206e6f742076616c696400006044820152606490fd5b6126398215156125e2565b602060018060a01b0360095416916064600c54604051948593849263442c159960e01b845260048401526024830152600060448301525afa9081156126d9576000916126a6575b509061234c6126929260225490612106565b620186a06126a2601e5483612106565b0491565b906020823d82116126d1575b816126bf6020938361205a565b810103126102e557505161234c612680565b3d91506126b2565b6040513d6000823e3d90fd5b6001600160a01b031660008181526018602052604081205490926127089161262e565b91835260176020526040832054801561281157811561281157818110612811578281101561280757601454612751918391610c1d916121a0906001600160801b03831690612106565b90620186a092838302928084048514901517156127f35761277692916121bd91612147565b91601b5491601c54936127898585612161565b80820291848212600160ff1b8214166127f35781830514901517156127df57058184820194851291129080158216911516176127cb575080821261227f575090565b634e487b7160e01b81526011600452602490fd5b634e487b7160e01b83526011600452602483fd5b634e487b7160e01b85526011600452602485fd5b50505050601b5490565b50505090565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03161480612918575b15612872577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f000000000000000000000000000000000000000000000000000000000000000082527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a0815260c081018181106001600160401b03821117611ff25760405251902090565b507f00000000000000000000000000000000000000000000000000000000000000004614612849565b1561294857565b60405162461bcd60e51b815260206004820152601660248201527545524332303a2062616c616e636520746f6f206c6f7760501b6044820152606490fd5b1561298d57565b60405162461bcd60e51b815260206004820152601660248201527545524332303a206e6f207a65726f206164647265737360501b6044820152606490fd5b51906001600160a01b03821682036104d757565b6005811015611f8f57806129f05750565b60018103612a385760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b6044820152606490fd5b60028103612a855760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606490fd5b600314612a8e57565b60405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608490fd5b9291906fa2a8918ca85bafe22016d0b997e4df60600160ff1b038311612b575791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa15612b4a5781516001600160a01b03811615612b44579190565b50600190565b50604051903d90823e3d90fd5b50505050600090600390565b7fe50de2333c10a9502fcb1d8ae13a51bbf423153dfc63c2b8997665b32154afc360018060a01b038092169160009083825260036020526040822094169384825260205284604082205580a4565b909160207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259160018060a01b03809416938460005260028352604060002095169485600052825280604060002055604051908152a3565b15612c0f57565b606460405162461bcd60e51b815260206004820152602060248201527f4d61726b65743a2063616e6e6f742065786563757465206f6e20697473656c666044820152fd5b15612c5a57565b60405162461bcd60e51b815260206004820152600e60248201526d13585c9ad95d0e881c185d5cd95960921b6044820152606490fd5b6001600160a01b0316338103612ca4575050565b6000818152602090600382526040918282203383528152848383205410612d0e5783825260038152828220338352815282822054600101612ce7575b5050505050565b612d0293825260038152828220903383525220918254612147565b90553880808080612ce0565b60649083519062461bcd60e51b82526004820152601460248201527313585c9ad95d0e881b9bdd08185c1c1c9bdd995960621b6044820152fd5b60405190612d5582612008565b6014546001600160801b038116835260801c6020830152565b919060018060a01b03806000941684526020601781526040852054908115612e66576018815260408620548015612ce05781612da8612d48565b9460095416916064600c54604051948593849263442c159960e01b8452600484015260248301528b60448301525afa968715612e5a578097612e24575b505061236c612e04612343612e1f969798620186a06022540490612106565b95612e1a60018060801b03948587511690612106565b612106565b111590565b9096508187813d8311612e53575b612e3c818361205a565b810103126102e5575094519461236c612e04612de5565b503d612e32565b604051903d90823e3d90fd5b5060019450505050565b60ff60265416612fe1576014546001600160801b0316908115612fda57600a54604051631848f2bf60e31b8152602093916001600160a01b03919085908290600490829086165afa80156126d9578591600091612fa1575b50600460405180948193631a674cc560e11b8352165afa9384156126d957600094612f72575b5050612f0a9192670de0b6b3a764000092839160295490612106565b049081811015612f6957612f21602a548092612147565b838102908082048514901517156108a1576121bd612f4292612f5d94612147565b60275492612f5760285492612e1a8487612147565b04612154565b9080821161227f575090565b50505060275490565b81813d8311612f9a575b612f86818361205a565b81010312610ef657519250612f0a38612eee565b503d612f7c565b909181813d8311612fd3575b612fb7818361205a565b8101031261188c57519082821682036102e55750849038612ec8565b503d612fad565b6028549150565b600a5460405163e6abad4960e01b815290602090829060049082906001600160a01b03165afa9081156126d957600091613019575090565b906020823d821161303f575b816130326020938361205a565b810103126102e557505190565b3d9150613025565b6001600160801b0391821690821601919082116108a157565b6000602060405161307081612008565b82815201526001600160401b039061308f8260255460401c1642612147565b9182156130e6576130e1612e1a91670de0b6b3a76400006130d66130b1612d48565b9660018060801b03958694858a5116906301e133806130ce612e70565b041690612106565b041682855116613047565b168252565b5090506130f1612d48565b90565b60405161310081612008565b6025546001600160401b03908181168352818160401c16613128602085019180835242612147565b928315612ce057602094816301e13380613140612e70565b041681528142168352613151612d48565b670de0b6b3a764000061317660018060801b0397612e1a898551168787511690612106565b049561318781881682845116613047565b1680825296015160801b6001600160801b031990811690961760145551915192909416931692831760409190911b67ffffffffffffffff60401b16176025557f7484db546dcd57af0104c73c8a6968dfbaf5767f047cee0dadd0499ad7df81a0600080a356feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa264697066735822122020741475291d268abc8d456b5c33bfd779dc6c4e439660aa6aac9318f3937fe164736f6c63430008120033"; + "0x61014080604052346200018a5762000017816200018f565b600f81526001602082016e546170696f63612042696742616e6760881b8152602060405162000046816200018f565b8381520192603160f81b845251902091208160e052610100918183524660a0526040519160208301907f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f92838352604085015260608401524660808401523060a084015260a0835260c083019280841060018060401b03851117620001745760408490525190206080523060c052610120908152600580546001600160a01b0319163390811790915560007f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a362013880601b5562015f90601c55612710601d55612ee06020556103e8602d556133559283620001ac843960805183612942015260a05183612a0d015260c0518361290c015260e05183612991015251826129b70152518161296e0152f35b634e487b7160e01b600052604160045260246000fd5b600080fd5b604081019081106001600160401b03821117620001745760405256fe608080604052600436101561001357600080fd5b600090813560e01c908162a02a2014611f095750806302ce728f14611ee0578063078dfbe714611de1578063095ea7b314611dba5780630c4e84f014611c9e57806318160ddd14611c825780631c9e379b14611c495780631d4d3a5d14611c205780631da8bf1014611b4c5780631fb8f81a14611b2e57806323b872dd146119a7578063331960ff1461198957806334ce998a1461196057806334d441d0146119425780633644e5151461192757806337b6b7b91461190957806338d52e0f146118e05780633ba0b9a9146118c25780633f741adb1461189d57806340626d8b1461187f57806344de240a14611861578063473e3ce71461184357806348e4163e1461180a5780634e71e0c81461175c578063529898f21461173f578063542afda31461172157806357935462146117035780636b19ad16146116e55780636c3d8b8f146116bc57806370a0823114611683578063727785471461164b57806374645ff3146115ba57806374c9e4811461159c5780637dc0d1d0146115735780637ecebe001461153a5780637fa0b84e146115085780638285ef40146114d657806387b279371461149d5780638c5d0ed31461147f5780638da5cb5b14611456578063910dd7c814611221578063932bc4f81461114557806399a970281461111d5780639e15e89f146110e2578063a9059cbb14610fff578063b0e21e8a14610fe1578063b27c0e7414610fb0578063b7113f1914610f8d578063bb4cfe3b14610f6f578063bde39c5d14610f51578063c1ad5c8d14610f2e578063cce19f8114610dae578063ce8849ed14610d85578063d3fb2a381461091d578063d505accf1461077c578063d8dfeb4514610753578063dd62ed3e14610704578063de406577146106db578063e0996cb6146106bd578063e30c397814610694578063e9a4925214610363578063ea64dd5614610345578063eec0f42e14610327578063f791395d146103095763f8ba4cff146102eb57600080fd5b346103065780600319360112610306576103036131e6565b80f35b80fd5b50346103065780600319360112610306576020602754604051908152f35b50346103065780600319360112610306576020600c54604051908152f35b50346103065780600319360112610306576020601f54604051908152f35b50346103065760a03660031901126103065761037d611f51565b610385611f67565b9061038e611f8c565b608435926001600160a01b039081169290916064356103af30861415612cfa565b6002600052602090600782526103cd60ff6040600020541615612d45565b8615610616575b6103de8785612d82565b8615610595575b5084875260188152604087206103fc878254612246565b905560155461040b8782612246565b601555600c549088841561050f575082866009541692604460405180958193627eeac760e11b835230600484015260248301525afa80156105045789906104d0575b6104579250612239565b861161049857505b15610493575080600954165b167f9ed03113de523cebfe5e49d5f8e12894b1c0d42ce805990461726444c90eab878480a480f35b61046b565b6064906040519062461bcd60e51b825260048201526011602482015270084d2ce84c2dcce7440e8dede40daeac6d607b1b6044820152fd5b508282813d83116104fd575b6104e68183612103565b810103126104f857610457915161044d565b600080fd5b503d6104dc565b6040513d8b823e3d90fd5b9250508460095416803b1561059157604051630208d92960e11b81526001600160a01b038616600482015230602482015260448101929092526064820188905282908290608490829084905af180156105865761056e575b505061045f565b61057790612088565b610582578538610567565b8580fd5b6040513d84823e3d90fd5b8280fd5b908096508460095416916064600c546040519485938492638eb22cdd60e01b8452600484015260248301528b60448301525afa90811561060b5787916105de575b5094386103e5565b90508581813d8311610604575b6105f58183612103565b810103126104f85751386105d6565b503d6105eb565b6040513d89823e3d90fd5b9550836009541681600c54606460405180948193638eb22cdd60e01b835260048301528b60248301528c60448301525afa90811561068957889161065c575b50956103d4565b90508181813d8311610682575b6106738183612103565b810103126104f8575138610655565b503d610669565b6040513d8a823e3d90fd5b50346103065780600319360112610306576006546040516001600160a01b039091168152602090f35b50346103065780600319360112610306576020601d54604051908152f35b50346103065780600319360112610306576009546040516001600160a01b039091168152602090f35b50346103065760403660031901126103065761071e611f51565b6040610728611f67565b9260018060a01b03809316815260026020522091166000526020526020604060002054604051908152f35b5034610306578060031936011261030657600b546040516001600160a01b039091168152602090f35b50346103065761078b36611f9b565b9183919395949542116108d85760018060a01b039283881694856000526004602052604060002092835460001981146108c25761086e95610866956001830190556040519060208201927f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e2668452600060408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e0815261082a816120cc565b519020610835612909565b9060405190602082019261190160f01b8452602283015260428201526042815261085e816120e8565b519020612bd0565b919091612ad1565b160361087d5761030392612ca3565b60405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152606490fd5b634e487b7160e01b600052601160045260246000fd5b60405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b503461030657610160366003190112610306576001600160a01b0360043581811690819003610591576024916001600160401b0383358181116105825736602382011215610582578060040135918211610582573685838301011161058257604435938385168095036104f8576109998460055416331461216d565b80610d47575b508482610bed575b50505081610bad575b505060643580610b95575b5060843580610b7d575b5060a43580610b66575b5060c43580610b42575b5060e43580610b1e575b506101043580610aed575b506101243580610a7a575b50610144359081610a08578280f35b601e548210610a1b5750601f5538808280f35b60849060326040519162461bcd60e51b8352602060048401528201527f4d61726b65743a206c69717569646174696f6e436f6c6c61746572616c697a616044820152711d1a5bdb94985d19481d1bdbc81cdb585b1b60721b6064820152fd5b610a89620186a08211156121b8565b601f548111610a9b57601e55386109f9565b60405162461bcd60e51b8152602060048201526025818401527f4d61726b65743a20636f6c6c61746572616c697a6174696f6e5261746520746f6044820152646f2062696760d81b6064820152608490fd5b806016547fae6e0ab3b95f0a53ff9660a390ccedcbbf1f2355dce974a9841af106fddcfaba8580a3601655386109ee565b610b2c620186a082106121b8565b610b39601b5482116121b8565b601c55386109e3565b610b50620186a082106121b8565b610b5d601c5482106121b8565b601b55386109d9565b610b74620186a082106121b8565b601d55386109cf565b610b8c620186a08211156121b8565b601a55386109c5565b610ba4620186a08211156121b8565b601955386109bb565b816008549182167f5a62d22209e370e38eea92cfddcd228e656e6ec139243392a760a7769f5877fd8680a36001600160a01b0319161760085538806109b0565b8291610bfa60105461204e565b601f8111610ce8575b508790601f8411600114610c68578893610c5b575b5050508160011b916000199060031b1c1916176010555b7fa6f004921c944d4b8bf6e38462b00f36a58d62495d56b51f571ab78f732c98158480a13880846109a7565b0101359050843880610c18565b60108952601f198416945060008051602061330083398151915292509087908960205b878210610cc95750508460019610610cad575b50505050811b01601055610c2f565b60001960f88660031b161c199201013516905538808681610c9e565b8285019093013585556001949094019389929182019190810190610c8b565b601089529092509050600080516020613300833981519152601f840160051c810160208510610d40575b91849391601f8994920160051c01905b818110610d2f5750610c03565b898155859450889350600101610d22565b5080610d12565b600f80546001600160a01b0319169190911790557f0b2d6eb667d0522c3eb86e4288afecae6c11591ffd1345d4d12407e0598bca9b8680a13861099f565b50346103065780600319360112610306576008546040516001600160a01b039091168152602090f35b50346103065780610dbe36611fea565b600384929394526007602052610ddb60ff60408420541615612d45565b610de36124dc565b5050610ded6131e6565b6001600160a01b038381169390610e0630861415612cfa565b610e108387612d82565b8281871695868652601860205260408620610e2c838254612239565b9055610e3a82601554612239565b601555604051967f8ad4d3ff00da092c7ad9a573ea4f5f6a3dffc6712dc06d3f78f49b862297c4028780a46009541690600c5492823b15610f2a57630208d92960e11b86523060048701526001600160a01b03919091166024860152604485019290925260648401919091528290608490829084905af18015610f1f57610f0a575b50601154610ec991612e60565b15610ed15780f35b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881a5b9cdbdb1d995b9d607a1b6044820152606490fd5b91610f18610ec99293612088565b9190610ebc565b6040513d85823e3d90fd5b8480fd5b50346103065780600319360112610306576020610f49612f62565b604051908152f35b50346103065780600319360112610306576020602854604051908152f35b50346103065780600319360112610306576020601e54604051908152f35b5034610306578060031936011261030657602060ff602554166040519015158152f35b503461030657806003193601126103065760406024548151906001600160401b03908181168352831c166020820152f35b50346103065780600319360112610306576020601a54604051908152f35b503461030657604036600319011261030657611019611f51565b602435809281158015906110d0575b611060575b50506040519182526001600160a01b03169033906000805160206132e083398151915290602090a3602060405160018152f35b3381526001602052604081205461107983821015612a33565b6001600160a01b0384169033829003611094575b505061102d565b6040936110ab916110a6841515612a78565b612239565b3383526001602052838320558152206110c5838254612246565b90558138808061108d565b50336001600160a01b03841614611028565b503461030657604036600319011261030657606061110a611101611f51565b60243590612385565b9060405192835260208301526040820152f35b5034610306576040366003190112610306576020610f4961113c611f51565b602435906127d7565b503461030657806003193601126103065760405181602b546111668161204e565b808452906001908181169081156111f957506001146111a0575b61119c8461119081880382612103565b60405191829182612124565b0390f35b602b8352602094507f11c44e4875b74d31ff9fd779bf2566af7bd15b87fc985d01f5094b89e3669e4f5b8284106111e6575050508161119c936111909282010193611180565b80548585018701529285019281016111ca565b61119c96506111909450602092508593915060ff191682840152151560051b82010193611180565b5034610306576040366003190112610306576004356001600160401b0380821161059157366023830112156105915781600401359081116114425782604051926112756020601f19601f8601160185612103565b82845260208401923660248284010111610591578060246020930185378401015260243561ffff8116810361143e57610100918284805181010312610f2a576112bd906124cf565b6112c960408501612abd565b916112d660608601612abd565b9460808101519460a08201519260c08301519160ff8316830361143a5760e0840151930151938042116108d8578515611413577f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e266915b6001600160a01b0388168b52600460205260408b208054919060001983146113ff579161ffff6113bc9896949261086698969460018401905560405194602086015216604084015260018060a01b038a16606084015260018060a01b038c1660808401528a60a084015260c083015260e082015260e081526113ad816120cc565b60208151910120610835612909565b6001600160a01b0383811691160361087d57156113e957610303926001600160a01b039081169116612ca3565b610303926001600160a01b039081169116612c55565b634e487b7160e01b8d52601160045260248dfd5b7f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d69161132c565b8980fd5b8380fd5b634e487b7160e01b83526041600452602483fd5b50346103065780600319360112610306576005546040516001600160a01b039091168152602090f35b50346103065780600319360112610306576020601b54604051908152f35b5034610306576020366003190112610306576020906040906001600160a01b036114c5611f51565b168152602383522054604051908152f35b5034610306578060031936011261030657601454604080516001600160801b038316815260809290921c602083015290f35b50346103065760403660031901126103065761152f611525611f51565b6024359033612c55565b602060405160018152f35b5034610306576020366003190112610306576020906040906001600160a01b03611562611f51565b168152600483522054604051908152f35b5034610306578060031936011261030657600f546040516001600160a01b039091168152602090f35b50346103065780600319360112610306576020602d54604051908152f35b5034610306578060031936011261030657604051816010546115db8161204e565b808452906001908181169081156111f957506001146116045761119c8461119081880382612103565b60108352602094506000805160206133008339815191525b828410611638575050508161119c936111909282010193611180565b805485850187015292850192810161161c565b50346103065760203660031901126103065760043590600982101561030657602060ff6116778461201f565b54166040519015158152f35b5034610306576020366003190112610306576020906040906001600160a01b036116ab611f51565b168152600183522054604051908152f35b5034610306578060031936011261030657600a546040516001600160a01b039091168152602090f35b50346103065780600319360112610306576020602654604051908152f35b50346103065780600319360112610306576020601c54604051908152f35b50346103065780600319360112610306576020602c54604051908152f35b503461030657806003193601126103065760208054604051908152f35b50346103065780600319360112610306576006546001600160a01b0390818116338190036117c657806005549384167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08680a36001600160a01b0319928316176005551660065580f35b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b5034610306576020366003190112610306576020906040906001600160a01b03611832611f51565b168152601783522054604051908152f35b50346103065780600319360112610306576020601554604051908152f35b50346103065780600319360112610306576020600e54604051908152f35b50346103065780600319360112610306576020601654604051908152f35b5034610306576060366003190112610306576020610f4960443560243560043561226c565b50346103065780600319360112610306576020601154604051908152f35b5034610306578060031936011261030657600d546040516001600160a01b039091168152602090f35b50346103065780600319360112610306576020601254604051908152f35b50346103065780600319360112610306576020610f49612909565b50346103065780600319360112610306576020601954604051908152f35b50346103065780600319360112610306576014546040516001600160801b039091168152602090f35b50346103065780600319360112610306576020601354604051908152f35b5034610306576119b636611fea565b9192826119f2575b506040519182526001600160a01b039081169216906000805160206132e083398151915290602090a3602060405160018152f35b6001600160a01b03848116808352600160209081526040842054928690611a1b82861015612a33565b861693848403611a30575b50505050506119be565b838652600283526040808720338852845286205460018101611a9a575b5092600160209693611a7887946040976110a66000805160206132e08339815191529c9a1515612a78565b9285525283832055815220611a8e858254612246565b90559138808581611a26565b90918110611aee5792600160209693611a788a6000805160206132e08339815191529a9895611acb8260409a612239565b86895260028552898920338a528552898920559497509497995050939650611a4d565b60405162461bcd60e51b815260048101849052601860248201527745524332303a20616c6c6f77616e636520746f6f206c6f7760401b6044820152606490fd5b50346103065780600319360112610306576020602954604051908152f35b503461030657611b5b36611f9b565b908395949542116108d8576001600160a01b03878116808a52600460205260408a2080549196929592906000198314611c0c5782611bfd9694928d92600161086698960190556040519160208301937f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d6855260408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e0815261082a816120cc565b160361087d5761030392612c55565b634e487b7160e01b8c52601160045260248cfd5b5034610306578060031936011261030657602a546040516001600160a01b039091168152602090f35b5034610306576020366003190112610306576020906040906001600160a01b03611c71611f51565b168152601883522054604051908152f35b5034610306578060031936011261030657602090604051908152f35b5034610306576040366003190112610306576004356009811015611db657611cc4611f7d565b6008549091906001600160a01b03163303611d7a5760ff611ce48261201f565b54161515911515918214611d4057808260ff611d02611d309461201f565b54161515827feeec81de25875ce1725479bb76f720a8defdb43dea041919ae37bb4aae9847c08780a461201f565b9060ff8019835416911617905580f35b60405162461bcd60e51b81526020600482015260126024820152714d61726b65743a2073616d6520737461746560701b6044820152606490fd5b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881d5b985d5d1a1bdc9a5e995960621b6044820152606490fd5b5080fd5b50346103065760403660031901126103065761152f611dd7611f51565b6024359033612ca3565b503461030657606036600319011261030657611dfb611f51565b611e03611f7d565b611e0b611f8c565b9060018060a01b03928391611e258360055416331461216d565b15611ec9571690811590811591611ec1575b5015611e8457806005549283167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08580a36001600160a01b03199182161760055560068054909116905580f35b60405162461bcd60e51b81526020600482015260156024820152744f776e61626c653a207a65726f206164647265737360581b6044820152606490fd5b905038611e37565b9150501660018060a01b0319600654161760065580f35b50346103065780600319360112610306576040611efb6124dc565b825191151582526020820152f35b905034611db6576040366003190112611db6576040602092611f29611f51565b611f31611f67565b6001600160a01b0391821683526003865283832091168252845220548152f35b600435906001600160a01b03821682036104f857565b602435906001600160a01b03821682036104f857565b6024359081151582036104f857565b6044359081151582036104f857565b60e09060031901126104f8576001600160a01b039060043582811681036104f8579160243590811681036104f85790604435906064359060843560ff811681036104f8579060a4359060c43590565b60609060031901126104f8576001600160a01b039060043582811681036104f8579160243590811681036104f8579060443590565b6009811015612038576000526007602052604060002090565b634e487b7160e01b600052602160045260246000fd5b90600182811c9216801561207e575b602083101461206857565b634e487b7160e01b600052602260045260246000fd5b91607f169161205d565b6001600160401b03811161209b57604052565b634e487b7160e01b600052604160045260246000fd5b604081019081106001600160401b0382111761209b57604052565b61010081019081106001600160401b0382111761209b57604052565b608081019081106001600160401b0382111761209b57604052565b90601f801991011681019081106001600160401b0382111761209b57604052565b6020808252825181830181905290939260005b82811061215957505060409293506000838284010152601f8019910116010190565b818101860151848201604001528501612137565b1561217457565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b156121bf57565b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881b9bdd081d985b1a59607a1b6044820152606490fd5b818102929181159184041417156108c257565b8115612215570490565b634e487b7160e01b600052601260045260246000fd5b604d81116108c257600a0a90565b919082039182116108c257565b919082018092116108c257565b818103929160001380158285131691841216176108c257565b6014549192916122b5916122a69161229c91612292906001600160801b038316906121f8565b9060801c9061220b565b93601f54906121f8565b6122af8361222b565b9061220b565b80831061237d576122c96123059184612239565b916123006122fa6122f1601e546122eb6122e28661222b565b60205490612246565b906121f8565b6122af8461222b565b9161222b565b612253565b6509184e72a000908181029181830514901517156108c257670de0b6b3a7640000918281029281840514901517156108c257801561221557600160ff1b918083146000198314166108c257059060008212156123765781146108c257600003905b808211612371575090565b905090565b5090612366565b505050600090565b6001600160a01b039081166000818152601760209081526040822054929594939192909181156124c2576123b7613152565b906123c38615156126d4565b6009541683600c54898752601882526064604088205491604051948593849263442c159960e01b8452600484015260248301528960448301525afa9081156124b7578591612488575b509285949261246860189361244361247c9961243e61243560409a620186a060215404906121f8565b601e54906121f8565b61220b565b815190936001600160801b0391869161245e918416906121f8565b920151169061220b565b81811061248057035b978352522054612720565b9091565b505082612471565b90508381813d83116124b0575b61249f8183612103565b81010312610f2a575161247c61240c565b503d612495565b6040513d87823e3d90fd5b5050509192505080918190565b519081151582036104f857565b60018060a01b03600f54169060409081519263d6d7d52560e01b8452828460209283600483015260006010546125118161204e565b908160248601526001908582821691826000146126b057505060011461266c575b5050600083809203925af18015612661576000948591612626575b509284156125c857831561258e57505081601155817f9f9192b5edb17356c524e08d9e025c8e2f6307e6ea52fb7968faa3081f51c3c8600080a25b42601355565b60649250519062461bcd60e51b8252600482015260146024820152734d61726b65743a20696e76616c6964207261746560601b6044820152fd5b909192506125db60135460125490612246565b42116125ec57505060115490612588565b60649250519062461bcd60e51b82526004820152601460248201527313585c9ad95d0e881c985d19481d1bdbc81bdb1960621b6044820152fd5b9490508385813d831161265a575b61263e8183612103565b81010312610306575080612651856124cf565b9401513861254d565b503d612634565b83513d6000823e3d90fd5b915060106000528560002091866000935b83851061269557505050508201604401600083612532565b80548c8601604401528a97508b96509301928790820161267d565b8195506000949193506044925060ff191682840152151560051b8201019250612532565b156126db57565b60405162461bcd60e51b815260206004820152601e60248201527f4d61726b65743a2065786368616e676552617465206e6f742076616c696400006044820152606490fd5b61272b8215156126d4565b602060018060a01b0360095416916064600c54604051948593849263442c159960e01b845260048401526024830152600060448301525afa9081156127cb57600091612798575b509061243e61278492602154906121f8565b620186a0612794601e54836121f8565b0491565b906020823d82116127c3575b816127b160209383612103565b8101031261030657505161243e612772565b3d91506127a4565b6040513d6000823e3d90fd5b6001600160a01b031660008181526018602052604081205490926127fa91612720565b9183526017602052604083205480156129035781156129035781811061290357828110156128f9576014546128439183916110a691612292906001600160801b038316906121f8565b90620186a092838302928084048514901517156128e55761286892916122af91612239565b91601b5491601c549361287b8585612253565b80820291848212600160ff1b8214166128e55781830514901517156128d157058184820194851291129080158216911516176128bd5750808212612371575090565b634e487b7160e01b81526011600452602490fd5b634e487b7160e01b83526011600452602483fd5b634e487b7160e01b85526011600452602485fd5b50505050601b5490565b50505090565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03161480612a0a575b15612964577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f000000000000000000000000000000000000000000000000000000000000000082527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a0815260c081018181106001600160401b0382111761209b5760405251902090565b507f0000000000000000000000000000000000000000000000000000000000000000461461293b565b15612a3a57565b60405162461bcd60e51b815260206004820152601660248201527545524332303a2062616c616e636520746f6f206c6f7760501b6044820152606490fd5b15612a7f57565b60405162461bcd60e51b815260206004820152601660248201527545524332303a206e6f207a65726f206164647265737360501b6044820152606490fd5b51906001600160a01b03821682036104f857565b60058110156120385780612ae25750565b60018103612b2a5760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b6044820152606490fd5b60028103612b775760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606490fd5b600314612b8057565b60405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608490fd5b9291906fa2a8918ca85bafe22016d0b997e4df60600160ff1b038311612c495791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa15612c3c5781516001600160a01b03811615612c36579190565b50600190565b50604051903d90823e3d90fd5b50505050600090600390565b7fe50de2333c10a9502fcb1d8ae13a51bbf423153dfc63c2b8997665b32154afc360018060a01b038092169160009083825260036020526040822094169384825260205284604082205580a4565b909160207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259160018060a01b03809416938460005260028352604060002095169485600052825280604060002055604051908152a3565b15612d0157565b606460405162461bcd60e51b815260206004820152602060248201527f4d61726b65743a2063616e6e6f742065786563757465206f6e20697473656c666044820152fd5b15612d4c57565b60405162461bcd60e51b815260206004820152600e60248201526d13585c9ad95d0e881c185d5cd95960921b6044820152606490fd5b6001600160a01b0316338103612d96575050565b6000818152602090600382526040918282203383528152848383205410612e005783825260038152828220338352815282822054600101612dd9575b5050505050565b612df493825260038152828220903383525220918254612239565b90553880808080612dd2565b60649083519062461bcd60e51b82526004820152601460248201527313585c9ad95d0e881b9bdd08185c1c1c9bdd995960621b6044820152fd5b60405190612e47826120b1565b6014546001600160801b038116835260801c6020830152565b919060018060a01b03806000941684526020601781526040852054908115612f58576018815260408620548015612dd25781612e9a612e3a565b9460095416916064600c54604051948593849263442c159960e01b8452600484015260248301528b60448301525afa968715612f4c578097612f16575b505061245e612ef6612435612f11969798620186a060215404906121f8565b95612f0c60018060801b039485875116906121f8565b6121f8565b111590565b9096508187813d8311612f45575b612f2e8183612103565b81010312610306575094519461245e612ef6612ed7565b503d612f24565b604051903d90823e3d90fd5b5060019450505050565b60ff602554166130d3576014546001600160801b03169081156130cc57600a54604051631848f2bf60e31b8152602093916001600160a01b03919085908290600490829086165afa80156127cb578591600091613093575b50600460405180948193631a674cc560e11b8352165afa9384156127cb57600094613064575b5050612ffc9192670de0b6b3a7640000928391602854906121f8565b04908181101561305b576130136029548092612239565b838102908082048514901517156108c2576122af6130349261304f94612239565b6026549261304960275492612f0c8487612239565b04612246565b90808211612371575090565b50505060265490565b81813d831161308c575b6130788183612103565b8101031261143e57519250612ffc38612fe0565b503d61306e565b909181813d83116130c5575b6130a98183612103565b81010312611db657519082821682036103065750849038612fba565b503d61309f565b6027549150565b600a5460405163e6abad4960e01b815290602090829060049082906001600160a01b03165afa9081156127cb5760009161310b575090565b906020823d8211613131575b8161312460209383612103565b8101031261030657505190565b3d9150613117565b6001600160801b0391821690821601919082116108c257565b60006020604051613162816120b1565b82815201526001600160401b03906131818260245460401c1642612239565b9182156131d8576131d3612f0c91670de0b6b3a76400006131c86131a3612e3a565b9660018060801b03958694858a5116906301e133806131c0612f62565b0416906121f8565b041682855116613139565b168252565b5090506131e3612e3a565b90565b6040516131f2816120b1565b6024546001600160401b03908181168352818160401c1661321a602085019180835242612239565b928315612dd257602094816301e13380613232612f62565b041681528142168352613243612e3a565b670de0b6b3a764000061326860018060801b0397612f0c8985511687875116906121f8565b049561327981881682845116613139565b1680825296015160801b6001600160801b031990811690961760145551915192909416931692831760409190911b67ffffffffffffffff60401b16176024557f7484db546dcd57af0104c73c8a6968dfbaf5767f047cee0dadd0499ad7df81a0600080a356feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae672a2646970667358221220bef39f6b490096eaa1e8d926eac411159da5d2d4f5f5ff5f896ffa34eabf6b2b64736f6c63430008120033"; type BBCollateralConstructorParams = | [signer?: Signer] diff --git a/src/typechain/tapioca-bar/factories/markets/bigBang/BBCommon__factory.ts b/src/typechain/tapioca-bar/factories/markets/bigBang/BBCommon__factory.ts index 807fccab..fd845a03 100644 --- a/src/typechain/tapioca-bar/factories/markets/bigBang/BBCommon__factory.ts +++ b/src/typechain/tapioca-bar/factories/markets/bigBang/BBCommon__factory.ts @@ -60,6 +60,31 @@ const _abi = [ name: "ApprovalBorrow", type: "event", }, + { + anonymous: false, + inputs: [], + name: "AssetOracleDataUpdated", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "address", + name: "_oldVal", + type: "address", + }, + { + indexed: true, + internalType: "address", + name: "_newVal", + type: "address", + }, + ], + name: "AssetOracleUpdated", + type: "event", + }, { anonymous: false, inputs: [ @@ -279,25 +304,6 @@ const _abi = [ name: "LogBorrowCapUpdated", type: "event", }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "uint256", - name: "_oldVal", - type: "uint256", - }, - { - indexed: true, - internalType: "uint256", - name: "_newVal", - type: "uint256", - }, - ], - name: "LogBorrowingFee", - type: "event", - }, { anonymous: false, inputs: [ @@ -486,6 +492,37 @@ const _abi = [ name: "Transfer", type: "event", }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "uint256", + name: "oldMin", + type: "uint256", + }, + { + indexed: true, + internalType: "uint256", + name: "newMin", + type: "uint256", + }, + { + indexed: true, + internalType: "uint256", + name: "oldMax", + type: "uint256", + }, + { + indexed: false, + internalType: "uint256", + name: "newMax", + type: "uint256", + }, + ], + name: "UpdateMinMaxMintFee", + type: "event", + }, { inputs: [], name: "DOMAIN_SEPARATOR", @@ -647,27 +684,40 @@ const _abi = [ type: "function", }, { - inputs: [ + inputs: [], + name: "assetOracle", + outputs: [ { - internalType: "address", + internalType: "contract IOracle", name: "", type: "address", }, ], - name: "balanceOf", + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "assetOracleData", outputs: [ { - internalType: "uint256", + internalType: "bytes", name: "", - type: "uint256", + type: "bytes", }, ], stateMutability: "view", type: "function", }, { - inputs: [], - name: "borrowOpeningFee", + inputs: [ + { + internalType: "address", + name: "", + type: "address", + }, + ], + name: "balanceOf", outputs: [ { internalType: "uint256", @@ -980,6 +1030,19 @@ const _abi = [ stateMutability: "view", type: "function", }, + { + inputs: [], + name: "maxMintFee", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, { inputs: [], name: "minDebtRate", @@ -1006,6 +1069,19 @@ const _abi = [ stateMutability: "view", type: "function", }, + { + inputs: [], + name: "minMintFee", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, { inputs: [ { @@ -1273,11 +1349,6 @@ const _abi = [ }, { inputs: [ - { - internalType: "uint256", - name: "_borrowOpeningFee", - type: "uint256", - }, { internalType: "contract IOracle", name: "_oracle", @@ -1562,7 +1633,7 @@ const _abi = [ ] as const; const _bytecode = - "0x6101408060405234620001895762000017816200018e565b600f81526001602082016e546170696f63612042696742616e6760881b8152602060405162000046816200018e565b8381520192603160f81b845251902091208160e052610100918183524660a0526040519160208301907f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f92838352604085015260608401524660808401523060a084015260a0835260c083019280841060018060401b03851117620001735760408490525190206080523060c052610120908152600580546001600160a01b0319163390811790915560007f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a362013880601b5562015f90601c55612710601d556032602055612ee0602155612ad09283620001ab84396080518361230b015260a051836123d6015260c051836122d5015260e0518361235a01525182612380015251816123370152f35b634e487b7160e01b600052604160045260246000fd5b600080fd5b604081019081106001600160401b03821117620001735760405256fe608080604052600436101561001357600080fd5b60003560e01c908162a02a2014611b815750806302ce728f1461196a578063078dfbe714611866578063095ea7b3146118405780630996efb7146113bd5780630c4e84f0146112a357806318160ddd146112875780631c9e379b1461124d5780631da8bf10146111915780631fb8f81a1461117357806323b872dd14610fcf578063331960ff14610fb157806334ce998a14610f8857806334d441d014610f6a5780633644e51514610f4f57806337b6b7b914610f3157806338d52e0f14610f085780633ba0b9a914610eea5780633f741adb14610ec657806340626d8b14610ea857806344de240a14610e8a578063473e3ce714610e6c57806348e4163e14610e325780634e71e0c814610d84578063529898f214610d665780635793546214610d485780636b19ad1614610d2a5780636c3d8b8f14610d0157806370a0823114610cc75780637277854714610c9157806374645ff314610b755780637dc0d1d014610b4c5780637ecebe0014610b125780637fa0b84e14610ae15780638285ef4014610aaf57806387b2793714610a755780638c5d0ed314610a575780638da5cb5b14610a2e578063910dd7c814610815578063959916dc146107f857806399a97028146107d15780639e15e89f14610797578063a9059cbb146106b0578063b0e21e8a14610692578063b27c0e7414610661578063b7113f191461063e578063bb4cfe3b14610620578063bde39c5d14610602578063c1ad5c8d146105df578063ce8849ed146105b6578063d505accf14610416578063d8dfeb45146103ed578063dd62ed3e1461039c578063de40657714610373578063e0996cb614610355578063e30c39781461032c578063ea64dd561461030e578063eec0f42e146102f0578063f791395d146102d25763f8ba4cff146102b257600080fd5b346102cd5760003660031901126102cd576102cb61297a565b005b600080fd5b346102cd5760003660031901126102cd576020602854604051908152f35b346102cd5760003660031901126102cd576020600c54604051908152f35b346102cd5760003660031901126102cd576020601f54604051908152f35b346102cd5760003660031901126102cd576006546040516001600160a01b039091168152602090f35b346102cd5760003660031901126102cd576020601d54604051908152f35b346102cd5760003660031901126102cd576009546040516001600160a01b039091168152602090f35b346102cd5760403660031901126102cd576103b5611bcd565b6103bd611be3565b9060018060a01b038091166000526002602052604060002091166000526020526020604060002054604051908152f35b346102cd5760003660031901126102cd57600b546040516001600160a01b039091168152602090f35b346102cd5761042436611c08565b9183919395949542116105715760018060a01b0392838816948560005260046020526040600020928354600019811461055b57610507956104ff956001830190556040519060208201927f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e2668452600060408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e081526104c381611cdb565b5190206104ce6122d2565b9060405190602082019261190160f01b845260228301526042820152604281526104f781611cf7565b519020612599565b91909161249a565b1603610516576102cb9261266c565b60405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152606490fd5b634e487b7160e01b600052601160045260246000fd5b60405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b346102cd5760003660031901126102cd576008546040516001600160a01b039091168152602090f35b346102cd5760003660031901126102cd5760206105fa6126c3565b604051908152f35b346102cd5760003660031901126102cd576020602954604051908152f35b346102cd5760003660031901126102cd576020601e54604051908152f35b346102cd5760003660031901126102cd57602060ff602654166040519015158152f35b346102cd5760003660031901126102cd5760406025548151906001600160401b03908181168352831c166020820152f35b346102cd5760003660031901126102cd576020601a54604051908152f35b346102cd5760403660031901126102cd576106c9611bcd565b602435908115801590610785575b61070d575b6040519182526001600160a01b0316903390600080516020612a7b83398151915290602090a3602060405160018152f35b336000526001602052604060002054610728838210156123fc565b6001600160a01b038216908333839003610745575b5050506106dc565b61075991610754841515612441565b611dff565b336000526001602052604060002055600052604060002061077b838254611e0c565b905582808361073d565b50336001600160a01b038216146106d7565b346102cd5760403660031901126102cd5760606107be6107b5611bcd565b60243590611f4b565b9060405192835260208301526040820152f35b346102cd5760403660031901126102cd5760206105fa6107ef611bcd565b602435906121a0565b346102cd5760003660031901126102cd5760208054604051908152f35b346102cd5760403660031901126102cd576001600160401b036004358181116102cd57366023820112156102cd578060040135918211610a185760405191610867601f8201601f191660200184611d12565b808352602083019136602483830101116102cd57816000926024602093018537840101526024359161ffff831683036102cd576101009182828051810103126102cd576108b390612099565b6108bf60408301612486565b916108cc60608201612486565b9460808201519460a08301519260c08101519160ff831683036102cd5760e0820151910151918442116105715785156109f2577f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e2665b6001600160a01b03881660009081526004602052604090208054909690600019811461055b5761ffff6104ff976109af9960018401905560405194602086015216604084015260018060a01b038a16606084015260018060a01b038c1660808401528a60a084015260c083015260e082015260e081526109a081611cdb565b602081519101206104ce6122d2565b6001600160a01b0383811691160361051657156109dc576102cb926001600160a01b03908116911661266c565b6102cb926001600160a01b03908116911661261e565b7f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d6610921565b634e487b7160e01b600052604160045260246000fd5b346102cd5760003660031901126102cd576005546040516001600160a01b039091168152602090f35b346102cd5760003660031901126102cd576020601b54604051908152f35b346102cd5760203660031901126102cd576001600160a01b03610a96611bcd565b1660005260246020526020604060002054604051908152f35b346102cd5760003660031901126102cd57601454604080516001600160801b038316815260809290921c602083015290f35b346102cd5760403660031901126102cd57610b07610afd611bcd565b602435903361261e565b602060405160018152f35b346102cd5760203660031901126102cd576001600160a01b03610b33611bcd565b1660005260046020526020604060002054604051908152f35b346102cd5760003660031901126102cd57600f546040516001600160a01b039091168152602090f35b346102cd5760003660031901126102cd57604051601054816000610b9883611c86565b808352600193808516908115610c705750600114610c10575b50610bbe92500382611d12565b6040519081602080825282519081818401526000935b828510610bf7575050604092506000838284010152601f80199101168101030190f35b8481018201518686016040015293810193859350610bd4565b601060009081527f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae67294602093509091905b818310610c58575050610bbe935082010184610bb1565b85548784018501529485019486945091830191610c41565b9050610bbe94506020925060ff191682840152151560051b82010184610bb1565b346102cd5760203660031901126102cd5760043560098110156102cd5760ff610cbb602092611c57565b54166040519015158152f35b346102cd5760203660031901126102cd576001600160a01b03610ce8611bcd565b1660005260016020526020604060002054604051908152f35b346102cd5760003660031901126102cd57600a546040516001600160a01b039091168152602090f35b346102cd5760003660031901126102cd576020602754604051908152f35b346102cd5760003660031901126102cd576020601c54604051908152f35b346102cd5760003660031901126102cd576020602154604051908152f35b346102cd5760003660031901126102cd576006546001600160a01b039081811633819003610dee57806005549384167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a36001600160a01b03199283161760055516600655005b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b346102cd5760203660031901126102cd576001600160a01b03610e53611bcd565b1660005260176020526020604060002054604051908152f35b346102cd5760003660031901126102cd576020601554604051908152f35b346102cd5760003660031901126102cd576020600e54604051908152f35b346102cd5760003660031901126102cd576020601654604051908152f35b346102cd5760603660031901126102cd5760206105fa604435602435600435611e32565b346102cd5760003660031901126102cd576020601154604051908152f35b346102cd5760003660031901126102cd57600d546040516001600160a01b039091168152602090f35b346102cd5760003660031901126102cd576020601254604051908152f35b346102cd5760003660031901126102cd5760206105fa6122d2565b346102cd5760003660031901126102cd576020601954604051908152f35b346102cd5760003660031901126102cd576014546040516001600160801b039091168152602090f35b346102cd5760003660031901126102cd576020601354604051908152f35b346102cd5760603660031901126102cd57610fe8611bcd565b610ff0611be3565b604435908161102d575b6040519182526001600160a01b03908116921690600080516020612a7b83398151915290602090a3602060405160018152f35b60018060a01b03808416806000526020600181528460406000205493611055828610156123fc565b85169384840361106a575b5050505050610ffa565b8360005260028352604060002033600052835260406000205460001981036110de575b5084926110b5600080516020612a7b8339815191529795936001936107546020991515612441565b926000525260406000205560005260406000206110d3858254611e0c565b905591858481611060565b9091811061113357602094926110b588600080516020612a7b83398151915298969461110c82600196611dff565b8660005260028552604060002033600052855260406000205593509395975050929461108d565b60405162461bcd60e51b815260048101849052601860248201527745524332303a20616c6c6f77616e636520746f6f206c6f7760401b6044820152606490fd5b346102cd5760003660031901126102cd576020602a54604051908152f35b346102cd5761119f36611c08565b9183919395949542116105715760018060a01b0392838816948560005260046020526040600020928354600019811461055b5761123e956104ff956001830190556040519060208201927f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d68452600060408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e081526104c381611cdb565b1603610516576102cb9261261e565b346102cd5760203660031901126102cd576001600160a01b0361126e611bcd565b1660005260186020526020604060002054604051908152f35b346102cd5760003660031901126102cd57602060405160008152f35b346102cd5760403660031901126102cd5760043560098110156102cd576112c8611bf9565b6008549091906001600160a01b031633036113815760ff6112e882611c57565b5416151591151591821461134757808260ff61130661133594611c57565b54161515827feeec81de25875ce1725479bb76f720a8defdb43dea041919ae37bb4aae9847c0600080a4611c57565b9060ff80198354169116179055600080f35b60405162461bcd60e51b81526020600482015260126024820152714d61726b65743a2073616d6520737461746560701b6044820152606490fd5b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881d5b985d5d1a1bdc9a5e995960621b6044820152606490fd5b346102cd576101803660031901126102cd5760246001600160a01b038135818116908190036102cd57604435916001600160401b03908184116102cd57366023850112156102cd5783600401359182116102cd57368583860101116102cd57606435918183168093036102cd5761143982600554163314611d33565b60043594620186a09461144e86881115611d7e565b6020968088547fc353b09af857951dccce61b43a5854fc45beceed36c50e5d4cc2e71858a8e0df600080a3875580611801575b5086826116bc575b5050508161167b575b505060843580611666575b5060a43580611651575b5060c4358061163d575b5060e4358061161c575b5061010435806115fb575b5061012435806115c9575b50610144359081611559575b50506101643591826114eb57005b601e5483106114fb575050601f55005b9060326084926040519262461bcd60e51b845260048401528201527f4d61726b65743a206c69717569646174696f6e436f6c6c61746572616c697a616044820152711d1a5bdb94985d19481d1bdbc81cdb585b1b60721b6064820152fd5b61156590821115611d7e565b601f54811161157857601e5582806114dd565b5060256084926040519262461bcd60e51b845260048401528201527f4d61726b65743a20636f6c6c61746572616c697a6174696f6e5261746520746f6044820152646f2062696760d81b6064820152fd5b806016547fae6e0ab3b95f0a53ff9660a390ccedcbbf1f2355dce974a9841af106fddcfaba600080a3601655836114d1565b611606828210611d7e565b611613601b548211611d7e565b601c55836114c6565b611627828210611d7e565b611634601c548210611d7e565b601b55836114bb565b611648828210611d7e565b601d55836114b1565b61165d82821115611d7e565b601a55836114a7565b61167282821115611d7e565b6019558361149d565b816008549182167f5a62d22209e370e38eea92cfddcd228e656e6ec139243392a760a7769f5877fd600080a36001600160a01b031916176008558380611492565b82916116c9601054611c86565b601f81116117ad575b50600090601f841160011461173a5760009361172d575b5050508160011b916000199060031b1c1916176010555b7fa6f004921c944d4b8bf6e38462b00f36a58d62495d56b51f571ab78f732c9815600080a1858086611489565b01013590508688806116e9565b915092506010600052866000209088600094601f198516955b8a8782106117925750508460019610611776575b50505050811b01601055611700565b60001960f88660031b161c199201013516905587808881611767565b8483019093013585556001909401938b929182019101611753565b91509150601060005286600020601f840160051c81018885106117fa575b91849391601f8b94920160051c01905b8181106117e857506116d2565b600081558594508a93506001016117db565b50806117cb565b600f80546001600160a01b0319169190911790557f0b2d6eb667d0522c3eb86e4288afecae6c11591ffd1345d4d12407e0598bca9b600080a187611481565b346102cd5760403660031901126102cd57610b0761185c611bcd565b602435903361266c565b346102cd5760603660031901126102cd5761187f611bcd565b611887611bf9565b6044359081151582036102cd5760018060a01b039283916118ad83600554163314611d33565b15611951571690811590811591611949575b501561190c57806005549283167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a36001600160a01b031991821617600555600680549091169055005b60405162461bcd60e51b81526020600482015260156024820152744f776e61626c653a207a65726f206164647265737360581b6044820152606490fd5b9050836118bf565b9150501660018060a01b03196006541617600655600080f35b346102cd5760003660031901126102cd5760018060a01b03600f54166040519063d6d7d52560e01b82526020918260048201526000916010546119ac81611c86565b908160248501526001908181169081600014611b5b5750600114611b1b575b50509060409181600081809603925af18015611b0f57600091600091611ad0575b508115611a73578015611a375760409281601155817f9f9192b5edb17356c524e08d9e025c8e2f6307e6ea52fb7968faa3081f51c3c8600080a25b4260135583519215158352820152f35b60405162461bcd60e51b81526004810184905260146024820152734d61726b65743a20696e76616c6964207261746560601b6044820152606490fd5b50611a8360135460125490611e0c565b4211611a9457601154604092611a27565b60405162461bcd60e51b815260048101839052601460248201527313585c9ad95d0e881c985d19481d1bdbc81bdb1960621b6044820152606490fd5b9150506040813d604011611b07575b81611aec60409383611d12565b810103126102cd5781611afe82612099565b910151836119ec565b3d9150611adf565b6040513d6000823e3d90fd5b935060106000528460002093856000955b838710611b465750505050918101604401918060406119cb565b80548688016044015295019486908201611b2c565b60ff191660448087019190915292151560051b85019092019450829150604090506119cb565b346102cd5760403660031901126102cd57602090611b9d611bcd565b611ba5611be3565b9060018060a01b03809116600052600384526040600020911660005282526040600020548152f35b600435906001600160a01b03821682036102cd57565b602435906001600160a01b03821682036102cd57565b6024359081151582036102cd57565b60e09060031901126102cd576001600160a01b039060043582811681036102cd579160243590811681036102cd5790604435906064359060843560ff811681036102cd579060a4359060c43590565b6009811015611c70576000526007602052604060002090565b634e487b7160e01b600052602160045260246000fd5b90600182811c92168015611cb6575b6020831014611ca057565b634e487b7160e01b600052602260045260246000fd5b91607f1691611c95565b604081019081106001600160401b03821117610a1857604052565b61010081019081106001600160401b03821117610a1857604052565b608081019081106001600160401b03821117610a1857604052565b90601f801991011681019081106001600160401b03821117610a1857604052565b15611d3a57565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b15611d8557565b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881b9bdd081d985b1a59607a1b6044820152606490fd5b8181029291811591840414171561055b57565b8115611ddb570490565b634e487b7160e01b600052601260045260246000fd5b604d811161055b57600a0a90565b9190820391821161055b57565b9190820180921161055b57565b8181039291600013801582851316918412161761055b57565b601454919291611e7b91611e6c91611e6291611e58906001600160801b03831690611dbe565b9060801c90611dd1565b93601f5490611dbe565b611e7583611df1565b90611dd1565b808310611f4357611e8f611ecb9184611dff565b91611ec6611ec0611eb7601e54611eb1611ea886611df1565b60215490611e0c565b90611dbe565b611e7584611df1565b91611df1565b611e19565b6509184e72a0009081810291818305149015171561055b57670de0b6b3a76400009182810292818405149015171561055b578015611ddb57600160ff1b9180831460001983141661055b5705906000821215611f3c57811461055b57600003905b808211611f37575090565b905090565b5090611f2c565b505050600090565b6001600160a01b0390811660008181526017602090815260408220549295949391929091811561208c57611f7d6128e6565b90611f898615156120a6565b6009541683600c54898752601882526064604088205491604051948593849263442c159960e01b8452600484015260248301528960448301525afa90811561208157859161204e575b509285949261202e60189361200961204299612004611ffb60409a620186a06022540490611dbe565b601e5490611dbe565b611dd1565b815190936001600160801b0391869161202491841690611dbe565b9201511690611dd1565b81811061204657035b9783525220546120f2565b9091565b505082612037565b90508381813d831161207a575b6120658183611d12565b810103126120765751612042611fd2565b8480fd5b503d61205b565b6040513d87823e3d90fd5b5050509192505080918190565b519081151582036102cd57565b156120ad57565b60405162461bcd60e51b815260206004820152601e60248201527f4d61726b65743a2065786368616e676552617465206e6f742076616c696400006044820152606490fd5b6120fd8215156120a6565b602060018060a01b0360095416916064600c54604051948593849263442c159960e01b845260048401526024830152600060448301525afa908115611b0f5760009161216a575b50906120046121569260225490611dbe565b620186a0612166601e5483611dbe565b0491565b906020823d8211612198575b8161218360209383611d12565b81010312612195575051612004612144565b80fd5b3d9150612176565b6001600160a01b031660008181526018602052604081205490926121c3916120f2565b9183526017602052604083205480156122cc5781156122cc578181106122cc57828110156122c25760145461220c91839161075491611e58906001600160801b03831690611dbe565b90620186a092838302928084048514901517156122ae576122319291611e7591611dff565b91601b5491601c54936122448585611e19565b80820291848212600160ff1b8214166122ae57818305149015171561229a57058184820194851291129080158216911516176122865750808212611f37575090565b634e487b7160e01b81526011600452602490fd5b634e487b7160e01b83526011600452602483fd5b634e487b7160e01b85526011600452602485fd5b50505050601b5490565b50505090565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031614806123d3575b1561232d577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f000000000000000000000000000000000000000000000000000000000000000082527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a0815260c081018181106001600160401b03821117610a185760405251902090565b507f00000000000000000000000000000000000000000000000000000000000000004614612304565b1561240357565b60405162461bcd60e51b815260206004820152601660248201527545524332303a2062616c616e636520746f6f206c6f7760501b6044820152606490fd5b1561244857565b60405162461bcd60e51b815260206004820152601660248201527545524332303a206e6f207a65726f206164647265737360501b6044820152606490fd5b51906001600160a01b03821682036102cd57565b6005811015611c7057806124ab5750565b600181036124f35760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b6044820152606490fd5b600281036125405760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606490fd5b60031461254957565b60405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608490fd5b9291906fa2a8918ca85bafe22016d0b997e4df60600160ff1b0383116126125791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa156126055781516001600160a01b038116156125ff579190565b50600190565b50604051903d90823e3d90fd5b50505050600090600390565b7fe50de2333c10a9502fcb1d8ae13a51bbf423153dfc63c2b8997665b32154afc360018060a01b038092169160009083825260036020526040822094169384825260205284604082205580a4565b909160207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259160018060a01b03809416938460005260028352604060002095169485600052825280604060002055604051908152a3565b60ff60265416612841576014546001600160801b031690811561283a57600a54604051631848f2bf60e31b8152602093916001600160a01b03919085908290600490829086165afa8015611b0f5785916000916127fd575b50600460405180948193631a674cc560e11b8352165afa938415611b0f576000946127ca575b505061275d9192670de0b6b3a764000092839160295490611dbe565b0490818110156127c157612774602a548092611dff565b8381029080820485149015171561055b57611e75612795926127b594611dff565b602754926127af602854926127aa8487611dff565b611dbe565b04611e0c565b90808211611f37575090565b50505060275490565b81813d83116127f6575b6127de8183611d12565b810103126127f25751925061275d38612741565b8380fd5b503d6127d4565b909181813d8311612833575b6128138183611d12565b8101031261282f5751908282168203612195575084903861271b565b5080fd5b503d612809565b6028549150565b600a5460405163e6abad4960e01b815290602090829060049082906001600160a01b03165afa908115611b0f57600091612879575090565b906020823d821161289f575b8161289260209383611d12565b8101031261219557505190565b3d9150612885565b604051906128b482611cc0565b6014546001600160801b038116835260801c6020830152565b6001600160801b03918216908216019190821161055b57565b600060206040516128f681611cc0565b82815201526001600160401b03906129158260255460401c1642611dff565b91821561296c576129676127aa91670de0b6b3a764000061295c6129376128a7565b9660018060801b03958694858a5116906301e133806129546126c3565b041690611dbe565b0416828551166128cd565b168252565b5090506129776128a7565b90565b60405161298681611cc0565b6025546001600160401b03908181168352818160401c166129ae602085019180835242611dff565b928315612a7357602094816301e133806129c66126c3565b0416815281421683526129d76128a7565b670de0b6b3a76400006129fc60018060801b03976127aa898551168787511690611dbe565b0495612a0d818816828451166128cd565b1680825296015160801b6001600160801b031990811690961760145551915192909416931692831760409190911b67ffffffffffffffff60401b16176025557f7484db546dcd57af0104c73c8a6968dfbaf5767f047cee0dadd0499ad7df81a0600080a3565b505050505056feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa26469706673582212207f4d853832bfff012f8dc8027c995fc825ef0047d0ebc6d68fdffd82c6ce097764736f6c63430008120033"; + "0x61014080604052346200018a5762000017816200018f565b600f81526001602082016e546170696f63612042696742616e6760881b8152602060405162000046816200018f565b8381520192603160f81b845251902091208160e052610100918183524660a0526040519160208301907f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f92838352604085015260608401524660808401523060a084015260a0835260c083019280841060018060401b03851117620001745760408490525190206080523060c052610120908152600580546001600160a01b0319163390811790915560007f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a362013880601b5562015f90601c55612710601d55612ee06020556103e8602d55612bdf9283620001ac8439608051836123fa015260a051836124c5015260c051836123c4015260e051836124490152518261246f015251816124260152f35b634e487b7160e01b600052604160045260246000fd5b600080fd5b604081019081106001600160401b03821117620001745760405256fe608080604052600436101561001357600080fd5b60003560e01c908162a02a2014611c275750806302ce728f14611a10578063078dfbe71461190c578063095ea7b3146118e65780630c4e84f0146117cc57806318160ddd146117b05780631c9e379b146117765780631d4d3a5d1461174d5780631da8bf10146116915780631fb8f81a1461167357806323b872dd146114cf578063331960ff146114b157806334ce998a1461148857806334d441d01461146a5780633644e5151461144f57806337b6b7b91461143157806338d52e0f146114085780633ba0b9a9146113ea5780633f741adb146113c657806340626d8b146113a857806344de240a1461138a578063473e3ce71461136c57806348e4163e146113325780634e71e0c814611284578063529898f214611267578063542afda314611249578063579354621461122b5780636b19ad161461120d5780636c3d8b8f146111e457806370a08231146111aa578063727785471461117457806374645ff3146110e157806374c9e481146110c35780637dc0d1d01461109a5780637ecebe00146110605780637fa0b84e1461102f5780638285ef4014610ffd57806387b2793714610fc35780638c5d0ed314610fa55780638da5cb5b14610f7c578063910dd7c814610d63578063932bc4f814610c8557806399a9702814610c5e5780639e15e89f14610c24578063a9059cbb14610b3d578063b0e21e8a14610b1f578063b27c0e7414610aee578063b7113f1914610acb578063bb4cfe3b14610aad578063bde39c5d14610a8f578063c1ad5c8d14610a6c578063ce8849ed14610a43578063d3fb2a38146105d7578063d505accf14610437578063d8dfeb451461040e578063dd62ed3e146103bd578063de40657714610394578063e0996cb614610376578063e30c39781461034d578063ea64dd561461032f578063eec0f42e14610311578063f791395d146102f35763f8ba4cff146102d357600080fd5b346102ee5760003660031901126102ee576102ec612a69565b005b600080fd5b346102ee5760003660031901126102ee576020602754604051908152f35b346102ee5760003660031901126102ee576020600c54604051908152f35b346102ee5760003660031901126102ee576020601f54604051908152f35b346102ee5760003660031901126102ee576006546040516001600160a01b039091168152602090f35b346102ee5760003660031901126102ee576020601d54604051908152f35b346102ee5760003660031901126102ee576009546040516001600160a01b039091168152602090f35b346102ee5760403660031901126102ee576103d6611c73565b6103de611c89565b9060018060a01b038091166000526002602052604060002091166000526020526020604060002054604051908152f35b346102ee5760003660031901126102ee57600b546040516001600160a01b039091168152602090f35b346102ee5761044536611cae565b9183919395949542116105925760018060a01b0392838816948560005260046020526040600020928354600019811461057c5761052895610520956001830190556040519060208201927f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e2668452600060408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e081526104e481611d81565b5190206104ef6123c1565b9060405190602082019261190160f01b8452602283015260428201526042815261051881611d9d565b519020612688565b919091612589565b1603610537576102ec9261275b565b60405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152606490fd5b634e487b7160e01b600052601160045260246000fd5b60405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b346102ee576101603660031901126102ee576001600160a01b03600435818116908190036102ee576024916001600160401b0383358181116102ee57366023820112156102ee5780600401359182116102ee57368583830101116102ee57604435938385168095036102ee5761065284600554163314611e22565b80610a04575b5084826108a2575b50505081610861575b505060643580610849575b5060843580610831575b5060a4358061081a575b5060c435806107f6575b5060e435806107d2575b5061010435806107a0575b50610124358061072d575b506101443590816106bf57005b601e5482106106ce5750601f55005b60849060326040519162461bcd60e51b8352602060048401528201527f4d61726b65743a206c69717569646174696f6e436f6c6c61746572616c697a616044820152711d1a5bdb94985d19481d1bdbc81cdb585b1b60721b6064820152fd5b61073c620186a0821115611e6d565b601f54811161074e57601e55816106b2565b60405162461bcd60e51b8152602060048201526025818401527f4d61726b65743a20636f6c6c61746572616c697a6174696f6e5261746520746f6044820152646f2062696760d81b6064820152608490fd5b806016547fae6e0ab3b95f0a53ff9660a390ccedcbbf1f2355dce974a9841af106fddcfaba600080a3601655816106a7565b6107e0620186a08210611e6d565b6107ed601b548211611e6d565b601c558161069c565b610804620186a08210611e6d565b610811601c548210611e6d565b601b5581610692565b610828620186a08210611e6d565b601d5581610688565b610840620186a0821115611e6d565b601a558161067e565b610858620186a0821115611e6d565b60195581610674565b816008549182167f5a62d22209e370e38eea92cfddcd228e656e6ec139243392a760a7769f5877fd600080a36001600160a01b031916176008558180610669565b82916108af601054611d2c565b601f81116109a3575b50600090601f841160011461092057600093610913575b5050508160011b916000199060031b1c1916176010555b7fa6f004921c944d4b8bf6e38462b00f36a58d62495d56b51f571ab78f732c9815600080a1838084610660565b01013590508486806108cf565b60106000908152601f1985169550600080516020612b8a83398151915293509091889160205b8782106109845750508460019610610968575b50505050811b016010556108e6565b60001960f88660031b161c199201013516905585808681610959565b8285019093013585556001949094019389929182019190810190610946565b60106000529092509050600080516020612b8a833981519152601f840160051c8101602085106109fd575b91849391601f8994920160051c01905b8181106109eb57506108b8565b600081558594508893506001016109de565b50806109ce565b600f80546001600160a01b0319169190911790557f0b2d6eb667d0522c3eb86e4288afecae6c11591ffd1345d4d12407e0598bca9b600080a185610658565b346102ee5760003660031901126102ee576008546040516001600160a01b039091168152602090f35b346102ee5760003660031901126102ee576020610a876127b2565b604051908152f35b346102ee5760003660031901126102ee576020602854604051908152f35b346102ee5760003660031901126102ee576020601e54604051908152f35b346102ee5760003660031901126102ee57602060ff602554166040519015158152f35b346102ee5760003660031901126102ee5760406024548151906001600160401b03908181168352831c166020820152f35b346102ee5760003660031901126102ee576020601a54604051908152f35b346102ee5760403660031901126102ee57610b56611c73565b602435908115801590610c12575b610b9a575b6040519182526001600160a01b0316903390600080516020612b6a83398151915290602090a3602060405160018152f35b336000526001602052604060002054610bb5838210156124eb565b6001600160a01b038216908333839003610bd2575b505050610b69565b610be691610be1841515612530565b611eee565b3360005260016020526040600020556000526040600020610c08838254611efb565b9055828083610bca565b50336001600160a01b03821614610b64565b346102ee5760403660031901126102ee576060610c4b610c42611c73565b6024359061203a565b9060405192835260208301526040820152f35b346102ee5760403660031901126102ee576020610a87610c7c611c73565b6024359061228f565b346102ee5760003660031901126102ee57604051600090602b54610ca881611d2c565b808352600191808316908115610d3b5750600114610ce1575b610cdd83610cd181870382611db8565b60405191829182611dd9565b0390f35b602b600090815260209450917f11c44e4875b74d31ff9fd779bf2566af7bd15b87fc985d01f5094b89e3669e4f5b828410610d2857505050810190910190610cd181610cc1565b8054858501870152928501928101610d0f565b610cdd9550610cd193506020915091849260ff191682840152151560051b8201019350610cc1565b346102ee5760403660031901126102ee576001600160401b036004358181116102ee57366023820112156102ee578060040135918211610f665760405191610db5601f8201601f191660200184611db8565b808352602083019136602483830101116102ee57816000926024602093018537840101526024359161ffff831683036102ee576101009182828051810103126102ee57610e0190612188565b610e0d60408301612575565b91610e1a60608201612575565b9460808201519460a08301519260c08101519160ff831683036102ee5760e082015191015191844211610592578515610f40577f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e2665b6001600160a01b03881660009081526004602052604090208054909690600019811461057c5761ffff61052097610efd9960018401905560405194602086015216604084015260018060a01b038a16606084015260018060a01b038c1660808401528a60a084015260c083015260e082015260e08152610eee81611d81565b602081519101206104ef6123c1565b6001600160a01b038381169116036105375715610f2a576102ec926001600160a01b03908116911661275b565b6102ec926001600160a01b03908116911661270d565b7f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d6610e6f565b634e487b7160e01b600052604160045260246000fd5b346102ee5760003660031901126102ee576005546040516001600160a01b039091168152602090f35b346102ee5760003660031901126102ee576020601b54604051908152f35b346102ee5760203660031901126102ee576001600160a01b03610fe4611c73565b1660005260236020526020604060002054604051908152f35b346102ee5760003660031901126102ee57601454604080516001600160801b038316815260809290921c602083015290f35b346102ee5760403660031901126102ee5761105561104b611c73565b602435903361270d565b602060405160018152f35b346102ee5760203660031901126102ee576001600160a01b03611081611c73565b1660005260046020526020604060002054604051908152f35b346102ee5760003660031901126102ee57600f546040516001600160a01b039091168152602090f35b346102ee5760003660031901126102ee576020602d54604051908152f35b346102ee5760003660031901126102ee5760405160009060105461110481611d2c565b808352600191808316908115610d3b575060011461112c57610cdd83610cd181870382611db8565b601060009081526020945091600080516020612b8a8339815191525b82841061116157505050810190910190610cd181610cc1565b8054858501870152928501928101611148565b346102ee5760203660031901126102ee5760043560098110156102ee5760ff61119e602092611cfd565b54166040519015158152f35b346102ee5760203660031901126102ee576001600160a01b036111cb611c73565b1660005260016020526020604060002054604051908152f35b346102ee5760003660031901126102ee57600a546040516001600160a01b039091168152602090f35b346102ee5760003660031901126102ee576020602654604051908152f35b346102ee5760003660031901126102ee576020601c54604051908152f35b346102ee5760003660031901126102ee576020602c54604051908152f35b346102ee5760003660031901126102ee5760208054604051908152f35b346102ee5760003660031901126102ee576006546001600160a01b0390818116338190036112ee57806005549384167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a36001600160a01b03199283161760055516600655005b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b346102ee5760203660031901126102ee576001600160a01b03611353611c73565b1660005260176020526020604060002054604051908152f35b346102ee5760003660031901126102ee576020601554604051908152f35b346102ee5760003660031901126102ee576020600e54604051908152f35b346102ee5760003660031901126102ee576020601654604051908152f35b346102ee5760603660031901126102ee576020610a87604435602435600435611f21565b346102ee5760003660031901126102ee576020601154604051908152f35b346102ee5760003660031901126102ee57600d546040516001600160a01b039091168152602090f35b346102ee5760003660031901126102ee576020601254604051908152f35b346102ee5760003660031901126102ee576020610a876123c1565b346102ee5760003660031901126102ee576020601954604051908152f35b346102ee5760003660031901126102ee576014546040516001600160801b039091168152602090f35b346102ee5760003660031901126102ee576020601354604051908152f35b346102ee5760603660031901126102ee576114e8611c73565b6114f0611c89565b604435908161152d575b6040519182526001600160a01b03908116921690600080516020612b6a83398151915290602090a3602060405160018152f35b60018060a01b03808416806000526020600181528460406000205493611555828610156124eb565b85169384840361156a575b50505050506114fa565b8360005260028352604060002033600052835260406000205460001981036115de575b5084926115b5600080516020612b6a833981519152979593600193610be16020991515612530565b926000525260406000205560005260406000206115d3858254611efb565b905591858481611560565b9091811061163357602094926115b588600080516020612b6a83398151915298969461160c82600196611eee565b8660005260028552604060002033600052855260406000205593509395975050929461158d565b60405162461bcd60e51b815260048101849052601860248201527745524332303a20616c6c6f77616e636520746f6f206c6f7760401b6044820152606490fd5b346102ee5760003660031901126102ee576020602954604051908152f35b346102ee5761169f36611cae565b9183919395949542116105925760018060a01b0392838816948560005260046020526040600020928354600019811461057c5761173e95610520956001830190556040519060208201927f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d68452600060408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e081526104e481611d81565b1603610537576102ec9261270d565b346102ee5760003660031901126102ee57602a546040516001600160a01b039091168152602090f35b346102ee5760203660031901126102ee576001600160a01b03611797611c73565b1660005260186020526020604060002054604051908152f35b346102ee5760003660031901126102ee57602060405160008152f35b346102ee5760403660031901126102ee5760043560098110156102ee576117f1611c9f565b6008549091906001600160a01b031633036118aa5760ff61181182611cfd565b5416151591151591821461187057808260ff61182f61185e94611cfd565b54161515827feeec81de25875ce1725479bb76f720a8defdb43dea041919ae37bb4aae9847c0600080a4611cfd565b9060ff80198354169116179055600080f35b60405162461bcd60e51b81526020600482015260126024820152714d61726b65743a2073616d6520737461746560701b6044820152606490fd5b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881d5b985d5d1a1bdc9a5e995960621b6044820152606490fd5b346102ee5760403660031901126102ee57611055611902611c73565b602435903361275b565b346102ee5760603660031901126102ee57611925611c73565b61192d611c9f565b6044359081151582036102ee5760018060a01b0392839161195383600554163314611e22565b156119f75716908115908115916119ef575b50156119b257806005549283167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a36001600160a01b031991821617600555600680549091169055005b60405162461bcd60e51b81526020600482015260156024820152744f776e61626c653a207a65726f206164647265737360581b6044820152606490fd5b905083611965565b9150501660018060a01b03196006541617600655600080f35b346102ee5760003660031901126102ee5760018060a01b03600f54166040519063d6d7d52560e01b8252602091826004820152600091601054611a5281611d2c565b908160248501526001908181169081600014611c015750600114611bc1575b50509060409181600081809603925af18015611bb557600091600091611b76575b508115611b19578015611add5760409281601155817f9f9192b5edb17356c524e08d9e025c8e2f6307e6ea52fb7968faa3081f51c3c8600080a25b4260135583519215158352820152f35b60405162461bcd60e51b81526004810184905260146024820152734d61726b65743a20696e76616c6964207261746560601b6044820152606490fd5b50611b2960135460125490611efb565b4211611b3a57601154604092611acd565b60405162461bcd60e51b815260048101839052601460248201527313585c9ad95d0e881c985d19481d1bdbc81bdb1960621b6044820152606490fd5b9150506040813d604011611bad575b81611b9260409383611db8565b810103126102ee5781611ba482612188565b91015183611a92565b3d9150611b85565b6040513d6000823e3d90fd5b935060106000528460002093856000955b838710611bec575050505091810160440191806040611a71565b80548688016044015295019486908201611bd2565b60ff191660448087019190915292151560051b8501909201945082915060409050611a71565b346102ee5760403660031901126102ee57602090611c43611c73565b611c4b611c89565b9060018060a01b03809116600052600384526040600020911660005282526040600020548152f35b600435906001600160a01b03821682036102ee57565b602435906001600160a01b03821682036102ee57565b6024359081151582036102ee57565b60e09060031901126102ee576001600160a01b039060043582811681036102ee579160243590811681036102ee5790604435906064359060843560ff811681036102ee579060a4359060c43590565b6009811015611d16576000526007602052604060002090565b634e487b7160e01b600052602160045260246000fd5b90600182811c92168015611d5c575b6020831014611d4657565b634e487b7160e01b600052602260045260246000fd5b91607f1691611d3b565b604081019081106001600160401b03821117610f6657604052565b61010081019081106001600160401b03821117610f6657604052565b608081019081106001600160401b03821117610f6657604052565b90601f801991011681019081106001600160401b03821117610f6657604052565b6020808252825181830181905290939260005b828110611e0e57505060409293506000838284010152601f8019910116010190565b818101860151848201604001528501611dec565b15611e2957565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b15611e7457565b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881b9bdd081d985b1a59607a1b6044820152606490fd5b8181029291811591840414171561057c57565b8115611eca570490565b634e487b7160e01b600052601260045260246000fd5b604d811161057c57600a0a90565b9190820391821161057c57565b9190820180921161057c57565b8181039291600013801582851316918412161761057c57565b601454919291611f6a91611f5b91611f5191611f47906001600160801b03831690611ead565b9060801c90611ec0565b93601f5490611ead565b611f6483611ee0565b90611ec0565b80831061203257611f7e611fba9184611eee565b91611fb5611faf611fa6601e54611fa0611f9786611ee0565b60205490611efb565b90611ead565b611f6484611ee0565b91611ee0565b611f08565b6509184e72a0009081810291818305149015171561057c57670de0b6b3a76400009182810292818405149015171561057c578015611eca57600160ff1b9180831460001983141661057c570590600082121561202b57811461057c57600003905b808211612026575090565b905090565b509061201b565b505050600090565b6001600160a01b0390811660008181526017602090815260408220549295949391929091811561217b5761206c6129d5565b90612078861515612195565b6009541683600c54898752601882526064604088205491604051948593849263442c159960e01b8452600484015260248301528960448301525afa90811561217057859161213d575b509285949261211d6018936120f8612131996120f36120ea60409a620186a06021540490611ead565b601e5490611ead565b611ec0565b815190936001600160801b0391869161211391841690611ead565b9201511690611ec0565b81811061213557035b9783525220546121e1565b9091565b505082612126565b90508381813d8311612169575b6121548183611db8565b8101031261216557516121316120c1565b8480fd5b503d61214a565b6040513d87823e3d90fd5b5050509192505080918190565b519081151582036102ee57565b1561219c57565b60405162461bcd60e51b815260206004820152601e60248201527f4d61726b65743a2065786368616e676552617465206e6f742076616c696400006044820152606490fd5b6121ec821515612195565b602060018060a01b0360095416916064600c54604051948593849263442c159960e01b845260048401526024830152600060448301525afa908115611bb557600091612259575b50906120f36122459260215490611ead565b620186a0612255601e5483611ead565b0491565b906020823d8211612287575b8161227260209383611db8565b810103126122845750516120f3612233565b80fd5b3d9150612265565b6001600160a01b031660008181526018602052604081205490926122b2916121e1565b9183526017602052604083205480156123bb5781156123bb578181106123bb57828110156123b1576014546122fb918391610be191611f47906001600160801b03831690611ead565b90620186a0928383029280840485149015171561239d576123209291611f6491611eee565b91601b5491601c54936123338585611f08565b80820291848212600160ff1b82141661239d57818305149015171561238957058184820194851291129080158216911516176123755750808212612026575090565b634e487b7160e01b81526011600452602490fd5b634e487b7160e01b83526011600452602483fd5b634e487b7160e01b85526011600452602485fd5b50505050601b5490565b50505090565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031614806124c2575b1561241c577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f000000000000000000000000000000000000000000000000000000000000000082527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a0815260c081018181106001600160401b03821117610f665760405251902090565b507f000000000000000000000000000000000000000000000000000000000000000046146123f3565b156124f257565b60405162461bcd60e51b815260206004820152601660248201527545524332303a2062616c616e636520746f6f206c6f7760501b6044820152606490fd5b1561253757565b60405162461bcd60e51b815260206004820152601660248201527545524332303a206e6f207a65726f206164647265737360501b6044820152606490fd5b51906001600160a01b03821682036102ee57565b6005811015611d16578061259a5750565b600181036125e25760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b6044820152606490fd5b6002810361262f5760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606490fd5b60031461263857565b60405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608490fd5b9291906fa2a8918ca85bafe22016d0b997e4df60600160ff1b0383116127015791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa156126f45781516001600160a01b038116156126ee579190565b50600190565b50604051903d90823e3d90fd5b50505050600090600390565b7fe50de2333c10a9502fcb1d8ae13a51bbf423153dfc63c2b8997665b32154afc360018060a01b038092169160009083825260036020526040822094169384825260205284604082205580a4565b909160207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259160018060a01b03809416938460005260028352604060002095169485600052825280604060002055604051908152a3565b60ff60255416612930576014546001600160801b031690811561292957600a54604051631848f2bf60e31b8152602093916001600160a01b03919085908290600490829086165afa8015611bb55785916000916128ec575b50600460405180948193631a674cc560e11b8352165afa938415611bb5576000946128b9575b505061284c9192670de0b6b3a764000092839160285490611ead565b0490818110156128b0576128636029548092611eee565b8381029080820485149015171561057c57611f64612884926128a494611eee565b6026549261289e602754926128998487611eee565b611ead565b04611efb565b90808211612026575090565b50505060265490565b81813d83116128e5575b6128cd8183611db8565b810103126128e15751925061284c38612830565b8380fd5b503d6128c3565b909181813d8311612922575b6129028183611db8565b8101031261291e5751908282168203612284575084903861280a565b5080fd5b503d6128f8565b6027549150565b600a5460405163e6abad4960e01b815290602090829060049082906001600160a01b03165afa908115611bb557600091612968575090565b906020823d821161298e575b8161298160209383611db8565b8101031261228457505190565b3d9150612974565b604051906129a382611d66565b6014546001600160801b038116835260801c6020830152565b6001600160801b03918216908216019190821161057c57565b600060206040516129e581611d66565b82815201526001600160401b0390612a048260245460401c1642611eee565b918215612a5b57612a5661289991670de0b6b3a7640000612a4b612a26612996565b9660018060801b03958694858a5116906301e13380612a436127b2565b041690611ead565b0416828551166129bc565b168252565b509050612a66612996565b90565b604051612a7581611d66565b6024546001600160401b03908181168352818160401c16612a9d602085019180835242611eee565b928315612b6257602094816301e13380612ab56127b2565b041681528142168352612ac6612996565b670de0b6b3a7640000612aeb60018060801b0397612899898551168787511690611ead565b0495612afc818816828451166129bc565b1680825296015160801b6001600160801b031990811690961760145551915192909416931692831760409190911b67ffffffffffffffff60401b16176024557f7484db546dcd57af0104c73c8a6968dfbaf5767f047cee0dadd0499ad7df81a0600080a3565b505050505056feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae672a2646970667358221220a0cbe3086b31edd259f56d95eb68ed1e6d574fa7458606dfdfe4d71e2381e24764736f6c63430008120033"; type BBCommonConstructorParams = | [signer?: Signer] diff --git a/src/typechain/tapioca-bar/factories/markets/bigBang/BBLendingCommon__factory.ts b/src/typechain/tapioca-bar/factories/markets/bigBang/BBLendingCommon__factory.ts index 705d3a89..742d7a3e 100644 --- a/src/typechain/tapioca-bar/factories/markets/bigBang/BBLendingCommon__factory.ts +++ b/src/typechain/tapioca-bar/factories/markets/bigBang/BBLendingCommon__factory.ts @@ -60,6 +60,31 @@ const _abi = [ name: "ApprovalBorrow", type: "event", }, + { + anonymous: false, + inputs: [], + name: "AssetOracleDataUpdated", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "address", + name: "_oldVal", + type: "address", + }, + { + indexed: true, + internalType: "address", + name: "_newVal", + type: "address", + }, + ], + name: "AssetOracleUpdated", + type: "event", + }, { anonymous: false, inputs: [ @@ -279,25 +304,6 @@ const _abi = [ name: "LogBorrowCapUpdated", type: "event", }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "uint256", - name: "_oldVal", - type: "uint256", - }, - { - indexed: true, - internalType: "uint256", - name: "_newVal", - type: "uint256", - }, - ], - name: "LogBorrowingFee", - type: "event", - }, { anonymous: false, inputs: [ @@ -486,6 +492,37 @@ const _abi = [ name: "Transfer", type: "event", }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "uint256", + name: "oldMin", + type: "uint256", + }, + { + indexed: true, + internalType: "uint256", + name: "newMin", + type: "uint256", + }, + { + indexed: true, + internalType: "uint256", + name: "oldMax", + type: "uint256", + }, + { + indexed: false, + internalType: "uint256", + name: "newMax", + type: "uint256", + }, + ], + name: "UpdateMinMaxMintFee", + type: "event", + }, { inputs: [], name: "DOMAIN_SEPARATOR", @@ -647,27 +684,40 @@ const _abi = [ type: "function", }, { - inputs: [ + inputs: [], + name: "assetOracle", + outputs: [ { - internalType: "address", + internalType: "contract IOracle", name: "", type: "address", }, ], - name: "balanceOf", + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "assetOracleData", outputs: [ { - internalType: "uint256", + internalType: "bytes", name: "", - type: "uint256", + type: "bytes", }, ], stateMutability: "view", type: "function", }, { - inputs: [], - name: "borrowOpeningFee", + inputs: [ + { + internalType: "address", + name: "", + type: "address", + }, + ], + name: "balanceOf", outputs: [ { internalType: "uint256", @@ -980,6 +1030,19 @@ const _abi = [ stateMutability: "view", type: "function", }, + { + inputs: [], + name: "maxMintFee", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, { inputs: [], name: "minDebtRate", @@ -1006,6 +1069,19 @@ const _abi = [ stateMutability: "view", type: "function", }, + { + inputs: [], + name: "minMintFee", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, { inputs: [ { @@ -1273,11 +1349,6 @@ const _abi = [ }, { inputs: [ - { - internalType: "uint256", - name: "_borrowOpeningFee", - type: "uint256", - }, { internalType: "contract IOracle", name: "_oracle", @@ -1562,7 +1633,7 @@ const _abi = [ ] as const; const _bytecode = - "0x6101408060405234620001895762000017816200018e565b600f81526001602082016e546170696f63612042696742616e6760881b8152602060405162000046816200018e565b8381520192603160f81b845251902091208160e052610100918183524660a0526040519160208301907f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f92838352604085015260608401524660808401523060a084015260a0835260c083019280841060018060401b03851117620001735760408490525190206080523060c052610120908152600580546001600160a01b0319163390811790915560007f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a362013880601b5562015f90601c55612710601d556032602055612ee0602155612ad09283620001ab84396080518361230b015260a051836123d6015260c051836122d5015260e0518361235a01525182612380015251816123370152f35b634e487b7160e01b600052604160045260246000fd5b600080fd5b604081019081106001600160401b03821117620001735760405256fe608080604052600436101561001357600080fd5b60003560e01c908162a02a2014611b815750806302ce728f1461196a578063078dfbe714611866578063095ea7b3146118405780630996efb7146113bd5780630c4e84f0146112a357806318160ddd146112875780631c9e379b1461124d5780631da8bf10146111915780631fb8f81a1461117357806323b872dd14610fcf578063331960ff14610fb157806334ce998a14610f8857806334d441d014610f6a5780633644e51514610f4f57806337b6b7b914610f3157806338d52e0f14610f085780633ba0b9a914610eea5780633f741adb14610ec657806340626d8b14610ea857806344de240a14610e8a578063473e3ce714610e6c57806348e4163e14610e325780634e71e0c814610d84578063529898f214610d665780635793546214610d485780636b19ad1614610d2a5780636c3d8b8f14610d0157806370a0823114610cc75780637277854714610c9157806374645ff314610b755780637dc0d1d014610b4c5780637ecebe0014610b125780637fa0b84e14610ae15780638285ef4014610aaf57806387b2793714610a755780638c5d0ed314610a575780638da5cb5b14610a2e578063910dd7c814610815578063959916dc146107f857806399a97028146107d15780639e15e89f14610797578063a9059cbb146106b0578063b0e21e8a14610692578063b27c0e7414610661578063b7113f191461063e578063bb4cfe3b14610620578063bde39c5d14610602578063c1ad5c8d146105df578063ce8849ed146105b6578063d505accf14610416578063d8dfeb45146103ed578063dd62ed3e1461039c578063de40657714610373578063e0996cb614610355578063e30c39781461032c578063ea64dd561461030e578063eec0f42e146102f0578063f791395d146102d25763f8ba4cff146102b257600080fd5b346102cd5760003660031901126102cd576102cb61297a565b005b600080fd5b346102cd5760003660031901126102cd576020602854604051908152f35b346102cd5760003660031901126102cd576020600c54604051908152f35b346102cd5760003660031901126102cd576020601f54604051908152f35b346102cd5760003660031901126102cd576006546040516001600160a01b039091168152602090f35b346102cd5760003660031901126102cd576020601d54604051908152f35b346102cd5760003660031901126102cd576009546040516001600160a01b039091168152602090f35b346102cd5760403660031901126102cd576103b5611bcd565b6103bd611be3565b9060018060a01b038091166000526002602052604060002091166000526020526020604060002054604051908152f35b346102cd5760003660031901126102cd57600b546040516001600160a01b039091168152602090f35b346102cd5761042436611c08565b9183919395949542116105715760018060a01b0392838816948560005260046020526040600020928354600019811461055b57610507956104ff956001830190556040519060208201927f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e2668452600060408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e081526104c381611cdb565b5190206104ce6122d2565b9060405190602082019261190160f01b845260228301526042820152604281526104f781611cf7565b519020612599565b91909161249a565b1603610516576102cb9261266c565b60405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152606490fd5b634e487b7160e01b600052601160045260246000fd5b60405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b346102cd5760003660031901126102cd576008546040516001600160a01b039091168152602090f35b346102cd5760003660031901126102cd5760206105fa6126c3565b604051908152f35b346102cd5760003660031901126102cd576020602954604051908152f35b346102cd5760003660031901126102cd576020601e54604051908152f35b346102cd5760003660031901126102cd57602060ff602654166040519015158152f35b346102cd5760003660031901126102cd5760406025548151906001600160401b03908181168352831c166020820152f35b346102cd5760003660031901126102cd576020601a54604051908152f35b346102cd5760403660031901126102cd576106c9611bcd565b602435908115801590610785575b61070d575b6040519182526001600160a01b0316903390600080516020612a7b83398151915290602090a3602060405160018152f35b336000526001602052604060002054610728838210156123fc565b6001600160a01b038216908333839003610745575b5050506106dc565b61075991610754841515612441565b611dff565b336000526001602052604060002055600052604060002061077b838254611e0c565b905582808361073d565b50336001600160a01b038216146106d7565b346102cd5760403660031901126102cd5760606107be6107b5611bcd565b60243590611f4b565b9060405192835260208301526040820152f35b346102cd5760403660031901126102cd5760206105fa6107ef611bcd565b602435906121a0565b346102cd5760003660031901126102cd5760208054604051908152f35b346102cd5760403660031901126102cd576001600160401b036004358181116102cd57366023820112156102cd578060040135918211610a185760405191610867601f8201601f191660200184611d12565b808352602083019136602483830101116102cd57816000926024602093018537840101526024359161ffff831683036102cd576101009182828051810103126102cd576108b390612099565b6108bf60408301612486565b916108cc60608201612486565b9460808201519460a08301519260c08101519160ff831683036102cd5760e0820151910151918442116105715785156109f2577f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e2665b6001600160a01b03881660009081526004602052604090208054909690600019811461055b5761ffff6104ff976109af9960018401905560405194602086015216604084015260018060a01b038a16606084015260018060a01b038c1660808401528a60a084015260c083015260e082015260e081526109a081611cdb565b602081519101206104ce6122d2565b6001600160a01b0383811691160361051657156109dc576102cb926001600160a01b03908116911661266c565b6102cb926001600160a01b03908116911661261e565b7f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d6610921565b634e487b7160e01b600052604160045260246000fd5b346102cd5760003660031901126102cd576005546040516001600160a01b039091168152602090f35b346102cd5760003660031901126102cd576020601b54604051908152f35b346102cd5760203660031901126102cd576001600160a01b03610a96611bcd565b1660005260246020526020604060002054604051908152f35b346102cd5760003660031901126102cd57601454604080516001600160801b038316815260809290921c602083015290f35b346102cd5760403660031901126102cd57610b07610afd611bcd565b602435903361261e565b602060405160018152f35b346102cd5760203660031901126102cd576001600160a01b03610b33611bcd565b1660005260046020526020604060002054604051908152f35b346102cd5760003660031901126102cd57600f546040516001600160a01b039091168152602090f35b346102cd5760003660031901126102cd57604051601054816000610b9883611c86565b808352600193808516908115610c705750600114610c10575b50610bbe92500382611d12565b6040519081602080825282519081818401526000935b828510610bf7575050604092506000838284010152601f80199101168101030190f35b8481018201518686016040015293810193859350610bd4565b601060009081527f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae67294602093509091905b818310610c58575050610bbe935082010184610bb1565b85548784018501529485019486945091830191610c41565b9050610bbe94506020925060ff191682840152151560051b82010184610bb1565b346102cd5760203660031901126102cd5760043560098110156102cd5760ff610cbb602092611c57565b54166040519015158152f35b346102cd5760203660031901126102cd576001600160a01b03610ce8611bcd565b1660005260016020526020604060002054604051908152f35b346102cd5760003660031901126102cd57600a546040516001600160a01b039091168152602090f35b346102cd5760003660031901126102cd576020602754604051908152f35b346102cd5760003660031901126102cd576020601c54604051908152f35b346102cd5760003660031901126102cd576020602154604051908152f35b346102cd5760003660031901126102cd576006546001600160a01b039081811633819003610dee57806005549384167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a36001600160a01b03199283161760055516600655005b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b346102cd5760203660031901126102cd576001600160a01b03610e53611bcd565b1660005260176020526020604060002054604051908152f35b346102cd5760003660031901126102cd576020601554604051908152f35b346102cd5760003660031901126102cd576020600e54604051908152f35b346102cd5760003660031901126102cd576020601654604051908152f35b346102cd5760603660031901126102cd5760206105fa604435602435600435611e32565b346102cd5760003660031901126102cd576020601154604051908152f35b346102cd5760003660031901126102cd57600d546040516001600160a01b039091168152602090f35b346102cd5760003660031901126102cd576020601254604051908152f35b346102cd5760003660031901126102cd5760206105fa6122d2565b346102cd5760003660031901126102cd576020601954604051908152f35b346102cd5760003660031901126102cd576014546040516001600160801b039091168152602090f35b346102cd5760003660031901126102cd576020601354604051908152f35b346102cd5760603660031901126102cd57610fe8611bcd565b610ff0611be3565b604435908161102d575b6040519182526001600160a01b03908116921690600080516020612a7b83398151915290602090a3602060405160018152f35b60018060a01b03808416806000526020600181528460406000205493611055828610156123fc565b85169384840361106a575b5050505050610ffa565b8360005260028352604060002033600052835260406000205460001981036110de575b5084926110b5600080516020612a7b8339815191529795936001936107546020991515612441565b926000525260406000205560005260406000206110d3858254611e0c565b905591858481611060565b9091811061113357602094926110b588600080516020612a7b83398151915298969461110c82600196611dff565b8660005260028552604060002033600052855260406000205593509395975050929461108d565b60405162461bcd60e51b815260048101849052601860248201527745524332303a20616c6c6f77616e636520746f6f206c6f7760401b6044820152606490fd5b346102cd5760003660031901126102cd576020602a54604051908152f35b346102cd5761119f36611c08565b9183919395949542116105715760018060a01b0392838816948560005260046020526040600020928354600019811461055b5761123e956104ff956001830190556040519060208201927f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d68452600060408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e081526104c381611cdb565b1603610516576102cb9261261e565b346102cd5760203660031901126102cd576001600160a01b0361126e611bcd565b1660005260186020526020604060002054604051908152f35b346102cd5760003660031901126102cd57602060405160008152f35b346102cd5760403660031901126102cd5760043560098110156102cd576112c8611bf9565b6008549091906001600160a01b031633036113815760ff6112e882611c57565b5416151591151591821461134757808260ff61130661133594611c57565b54161515827feeec81de25875ce1725479bb76f720a8defdb43dea041919ae37bb4aae9847c0600080a4611c57565b9060ff80198354169116179055600080f35b60405162461bcd60e51b81526020600482015260126024820152714d61726b65743a2073616d6520737461746560701b6044820152606490fd5b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881d5b985d5d1a1bdc9a5e995960621b6044820152606490fd5b346102cd576101803660031901126102cd5760246001600160a01b038135818116908190036102cd57604435916001600160401b03908184116102cd57366023850112156102cd5783600401359182116102cd57368583860101116102cd57606435918183168093036102cd5761143982600554163314611d33565b60043594620186a09461144e86881115611d7e565b6020968088547fc353b09af857951dccce61b43a5854fc45beceed36c50e5d4cc2e71858a8e0df600080a3875580611801575b5086826116bc575b5050508161167b575b505060843580611666575b5060a43580611651575b5060c4358061163d575b5060e4358061161c575b5061010435806115fb575b5061012435806115c9575b50610144359081611559575b50506101643591826114eb57005b601e5483106114fb575050601f55005b9060326084926040519262461bcd60e51b845260048401528201527f4d61726b65743a206c69717569646174696f6e436f6c6c61746572616c697a616044820152711d1a5bdb94985d19481d1bdbc81cdb585b1b60721b6064820152fd5b61156590821115611d7e565b601f54811161157857601e5582806114dd565b5060256084926040519262461bcd60e51b845260048401528201527f4d61726b65743a20636f6c6c61746572616c697a6174696f6e5261746520746f6044820152646f2062696760d81b6064820152fd5b806016547fae6e0ab3b95f0a53ff9660a390ccedcbbf1f2355dce974a9841af106fddcfaba600080a3601655836114d1565b611606828210611d7e565b611613601b548211611d7e565b601c55836114c6565b611627828210611d7e565b611634601c548210611d7e565b601b55836114bb565b611648828210611d7e565b601d55836114b1565b61165d82821115611d7e565b601a55836114a7565b61167282821115611d7e565b6019558361149d565b816008549182167f5a62d22209e370e38eea92cfddcd228e656e6ec139243392a760a7769f5877fd600080a36001600160a01b031916176008558380611492565b82916116c9601054611c86565b601f81116117ad575b50600090601f841160011461173a5760009361172d575b5050508160011b916000199060031b1c1916176010555b7fa6f004921c944d4b8bf6e38462b00f36a58d62495d56b51f571ab78f732c9815600080a1858086611489565b01013590508688806116e9565b915092506010600052866000209088600094601f198516955b8a8782106117925750508460019610611776575b50505050811b01601055611700565b60001960f88660031b161c199201013516905587808881611767565b8483019093013585556001909401938b929182019101611753565b91509150601060005286600020601f840160051c81018885106117fa575b91849391601f8b94920160051c01905b8181106117e857506116d2565b600081558594508a93506001016117db565b50806117cb565b600f80546001600160a01b0319169190911790557f0b2d6eb667d0522c3eb86e4288afecae6c11591ffd1345d4d12407e0598bca9b600080a187611481565b346102cd5760403660031901126102cd57610b0761185c611bcd565b602435903361266c565b346102cd5760603660031901126102cd5761187f611bcd565b611887611bf9565b6044359081151582036102cd5760018060a01b039283916118ad83600554163314611d33565b15611951571690811590811591611949575b501561190c57806005549283167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a36001600160a01b031991821617600555600680549091169055005b60405162461bcd60e51b81526020600482015260156024820152744f776e61626c653a207a65726f206164647265737360581b6044820152606490fd5b9050836118bf565b9150501660018060a01b03196006541617600655600080f35b346102cd5760003660031901126102cd5760018060a01b03600f54166040519063d6d7d52560e01b82526020918260048201526000916010546119ac81611c86565b908160248501526001908181169081600014611b5b5750600114611b1b575b50509060409181600081809603925af18015611b0f57600091600091611ad0575b508115611a73578015611a375760409281601155817f9f9192b5edb17356c524e08d9e025c8e2f6307e6ea52fb7968faa3081f51c3c8600080a25b4260135583519215158352820152f35b60405162461bcd60e51b81526004810184905260146024820152734d61726b65743a20696e76616c6964207261746560601b6044820152606490fd5b50611a8360135460125490611e0c565b4211611a9457601154604092611a27565b60405162461bcd60e51b815260048101839052601460248201527313585c9ad95d0e881c985d19481d1bdbc81bdb1960621b6044820152606490fd5b9150506040813d604011611b07575b81611aec60409383611d12565b810103126102cd5781611afe82612099565b910151836119ec565b3d9150611adf565b6040513d6000823e3d90fd5b935060106000528460002093856000955b838710611b465750505050918101604401918060406119cb565b80548688016044015295019486908201611b2c565b60ff191660448087019190915292151560051b85019092019450829150604090506119cb565b346102cd5760403660031901126102cd57602090611b9d611bcd565b611ba5611be3565b9060018060a01b03809116600052600384526040600020911660005282526040600020548152f35b600435906001600160a01b03821682036102cd57565b602435906001600160a01b03821682036102cd57565b6024359081151582036102cd57565b60e09060031901126102cd576001600160a01b039060043582811681036102cd579160243590811681036102cd5790604435906064359060843560ff811681036102cd579060a4359060c43590565b6009811015611c70576000526007602052604060002090565b634e487b7160e01b600052602160045260246000fd5b90600182811c92168015611cb6575b6020831014611ca057565b634e487b7160e01b600052602260045260246000fd5b91607f1691611c95565b604081019081106001600160401b03821117610a1857604052565b61010081019081106001600160401b03821117610a1857604052565b608081019081106001600160401b03821117610a1857604052565b90601f801991011681019081106001600160401b03821117610a1857604052565b15611d3a57565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b15611d8557565b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881b9bdd081d985b1a59607a1b6044820152606490fd5b8181029291811591840414171561055b57565b8115611ddb570490565b634e487b7160e01b600052601260045260246000fd5b604d811161055b57600a0a90565b9190820391821161055b57565b9190820180921161055b57565b8181039291600013801582851316918412161761055b57565b601454919291611e7b91611e6c91611e6291611e58906001600160801b03831690611dbe565b9060801c90611dd1565b93601f5490611dbe565b611e7583611df1565b90611dd1565b808310611f4357611e8f611ecb9184611dff565b91611ec6611ec0611eb7601e54611eb1611ea886611df1565b60215490611e0c565b90611dbe565b611e7584611df1565b91611df1565b611e19565b6509184e72a0009081810291818305149015171561055b57670de0b6b3a76400009182810292818405149015171561055b578015611ddb57600160ff1b9180831460001983141661055b5705906000821215611f3c57811461055b57600003905b808211611f37575090565b905090565b5090611f2c565b505050600090565b6001600160a01b0390811660008181526017602090815260408220549295949391929091811561208c57611f7d6128e6565b90611f898615156120a6565b6009541683600c54898752601882526064604088205491604051948593849263442c159960e01b8452600484015260248301528960448301525afa90811561208157859161204e575b509285949261202e60189361200961204299612004611ffb60409a620186a06022540490611dbe565b601e5490611dbe565b611dd1565b815190936001600160801b0391869161202491841690611dbe565b9201511690611dd1565b81811061204657035b9783525220546120f2565b9091565b505082612037565b90508381813d831161207a575b6120658183611d12565b810103126120765751612042611fd2565b8480fd5b503d61205b565b6040513d87823e3d90fd5b5050509192505080918190565b519081151582036102cd57565b156120ad57565b60405162461bcd60e51b815260206004820152601e60248201527f4d61726b65743a2065786368616e676552617465206e6f742076616c696400006044820152606490fd5b6120fd8215156120a6565b602060018060a01b0360095416916064600c54604051948593849263442c159960e01b845260048401526024830152600060448301525afa908115611b0f5760009161216a575b50906120046121569260225490611dbe565b620186a0612166601e5483611dbe565b0491565b906020823d8211612198575b8161218360209383611d12565b81010312612195575051612004612144565b80fd5b3d9150612176565b6001600160a01b031660008181526018602052604081205490926121c3916120f2565b9183526017602052604083205480156122cc5781156122cc578181106122cc57828110156122c25760145461220c91839161075491611e58906001600160801b03831690611dbe565b90620186a092838302928084048514901517156122ae576122319291611e7591611dff565b91601b5491601c54936122448585611e19565b80820291848212600160ff1b8214166122ae57818305149015171561229a57058184820194851291129080158216911516176122865750808212611f37575090565b634e487b7160e01b81526011600452602490fd5b634e487b7160e01b83526011600452602483fd5b634e487b7160e01b85526011600452602485fd5b50505050601b5490565b50505090565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031614806123d3575b1561232d577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f000000000000000000000000000000000000000000000000000000000000000082527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a0815260c081018181106001600160401b03821117610a185760405251902090565b507f00000000000000000000000000000000000000000000000000000000000000004614612304565b1561240357565b60405162461bcd60e51b815260206004820152601660248201527545524332303a2062616c616e636520746f6f206c6f7760501b6044820152606490fd5b1561244857565b60405162461bcd60e51b815260206004820152601660248201527545524332303a206e6f207a65726f206164647265737360501b6044820152606490fd5b51906001600160a01b03821682036102cd57565b6005811015611c7057806124ab5750565b600181036124f35760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b6044820152606490fd5b600281036125405760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606490fd5b60031461254957565b60405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608490fd5b9291906fa2a8918ca85bafe22016d0b997e4df60600160ff1b0383116126125791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa156126055781516001600160a01b038116156125ff579190565b50600190565b50604051903d90823e3d90fd5b50505050600090600390565b7fe50de2333c10a9502fcb1d8ae13a51bbf423153dfc63c2b8997665b32154afc360018060a01b038092169160009083825260036020526040822094169384825260205284604082205580a4565b909160207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259160018060a01b03809416938460005260028352604060002095169485600052825280604060002055604051908152a3565b60ff60265416612841576014546001600160801b031690811561283a57600a54604051631848f2bf60e31b8152602093916001600160a01b03919085908290600490829086165afa8015611b0f5785916000916127fd575b50600460405180948193631a674cc560e11b8352165afa938415611b0f576000946127ca575b505061275d9192670de0b6b3a764000092839160295490611dbe565b0490818110156127c157612774602a548092611dff565b8381029080820485149015171561055b57611e75612795926127b594611dff565b602754926127af602854926127aa8487611dff565b611dbe565b04611e0c565b90808211611f37575090565b50505060275490565b81813d83116127f6575b6127de8183611d12565b810103126127f25751925061275d38612741565b8380fd5b503d6127d4565b909181813d8311612833575b6128138183611d12565b8101031261282f5751908282168203612195575084903861271b565b5080fd5b503d612809565b6028549150565b600a5460405163e6abad4960e01b815290602090829060049082906001600160a01b03165afa908115611b0f57600091612879575090565b906020823d821161289f575b8161289260209383611d12565b8101031261219557505190565b3d9150612885565b604051906128b482611cc0565b6014546001600160801b038116835260801c6020830152565b6001600160801b03918216908216019190821161055b57565b600060206040516128f681611cc0565b82815201526001600160401b03906129158260255460401c1642611dff565b91821561296c576129676127aa91670de0b6b3a764000061295c6129376128a7565b9660018060801b03958694858a5116906301e133806129546126c3565b041690611dbe565b0416828551166128cd565b168252565b5090506129776128a7565b90565b60405161298681611cc0565b6025546001600160401b03908181168352818160401c166129ae602085019180835242611dff565b928315612a7357602094816301e133806129c66126c3565b0416815281421683526129d76128a7565b670de0b6b3a76400006129fc60018060801b03976127aa898551168787511690611dbe565b0495612a0d818816828451166128cd565b1680825296015160801b6001600160801b031990811690961760145551915192909416931692831760409190911b67ffffffffffffffff60401b16176025557f7484db546dcd57af0104c73c8a6968dfbaf5767f047cee0dadd0499ad7df81a0600080a3565b505050505056feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220b3df97947646fdd7f411fa4b47c90381d0b2eae7807678555596ade6cb44972064736f6c63430008120033"; + "0x61014080604052346200018a5762000017816200018f565b600f81526001602082016e546170696f63612042696742616e6760881b8152602060405162000046816200018f565b8381520192603160f81b845251902091208160e052610100918183524660a0526040519160208301907f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f92838352604085015260608401524660808401523060a084015260a0835260c083019280841060018060401b03851117620001745760408490525190206080523060c052610120908152600580546001600160a01b0319163390811790915560007f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a362013880601b5562015f90601c55612710601d55612ee06020556103e8602d55612bdf9283620001ac8439608051836123fa015260a051836124c5015260c051836123c4015260e051836124490152518261246f015251816124260152f35b634e487b7160e01b600052604160045260246000fd5b600080fd5b604081019081106001600160401b03821117620001745760405256fe608080604052600436101561001357600080fd5b60003560e01c908162a02a2014611c275750806302ce728f14611a10578063078dfbe71461190c578063095ea7b3146118e65780630c4e84f0146117cc57806318160ddd146117b05780631c9e379b146117765780631d4d3a5d1461174d5780631da8bf10146116915780631fb8f81a1461167357806323b872dd146114cf578063331960ff146114b157806334ce998a1461148857806334d441d01461146a5780633644e5151461144f57806337b6b7b91461143157806338d52e0f146114085780633ba0b9a9146113ea5780633f741adb146113c657806340626d8b146113a857806344de240a1461138a578063473e3ce71461136c57806348e4163e146113325780634e71e0c814611284578063529898f214611267578063542afda314611249578063579354621461122b5780636b19ad161461120d5780636c3d8b8f146111e457806370a08231146111aa578063727785471461117457806374645ff3146110e157806374c9e481146110c35780637dc0d1d01461109a5780637ecebe00146110605780637fa0b84e1461102f5780638285ef4014610ffd57806387b2793714610fc35780638c5d0ed314610fa55780638da5cb5b14610f7c578063910dd7c814610d63578063932bc4f814610c8557806399a9702814610c5e5780639e15e89f14610c24578063a9059cbb14610b3d578063b0e21e8a14610b1f578063b27c0e7414610aee578063b7113f1914610acb578063bb4cfe3b14610aad578063bde39c5d14610a8f578063c1ad5c8d14610a6c578063ce8849ed14610a43578063d3fb2a38146105d7578063d505accf14610437578063d8dfeb451461040e578063dd62ed3e146103bd578063de40657714610394578063e0996cb614610376578063e30c39781461034d578063ea64dd561461032f578063eec0f42e14610311578063f791395d146102f35763f8ba4cff146102d357600080fd5b346102ee5760003660031901126102ee576102ec612a69565b005b600080fd5b346102ee5760003660031901126102ee576020602754604051908152f35b346102ee5760003660031901126102ee576020600c54604051908152f35b346102ee5760003660031901126102ee576020601f54604051908152f35b346102ee5760003660031901126102ee576006546040516001600160a01b039091168152602090f35b346102ee5760003660031901126102ee576020601d54604051908152f35b346102ee5760003660031901126102ee576009546040516001600160a01b039091168152602090f35b346102ee5760403660031901126102ee576103d6611c73565b6103de611c89565b9060018060a01b038091166000526002602052604060002091166000526020526020604060002054604051908152f35b346102ee5760003660031901126102ee57600b546040516001600160a01b039091168152602090f35b346102ee5761044536611cae565b9183919395949542116105925760018060a01b0392838816948560005260046020526040600020928354600019811461057c5761052895610520956001830190556040519060208201927f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e2668452600060408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e081526104e481611d81565b5190206104ef6123c1565b9060405190602082019261190160f01b8452602283015260428201526042815261051881611d9d565b519020612688565b919091612589565b1603610537576102ec9261275b565b60405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152606490fd5b634e487b7160e01b600052601160045260246000fd5b60405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b346102ee576101603660031901126102ee576001600160a01b03600435818116908190036102ee576024916001600160401b0383358181116102ee57366023820112156102ee5780600401359182116102ee57368583830101116102ee57604435938385168095036102ee5761065284600554163314611e22565b80610a04575b5084826108a2575b50505081610861575b505060643580610849575b5060843580610831575b5060a4358061081a575b5060c435806107f6575b5060e435806107d2575b5061010435806107a0575b50610124358061072d575b506101443590816106bf57005b601e5482106106ce5750601f55005b60849060326040519162461bcd60e51b8352602060048401528201527f4d61726b65743a206c69717569646174696f6e436f6c6c61746572616c697a616044820152711d1a5bdb94985d19481d1bdbc81cdb585b1b60721b6064820152fd5b61073c620186a0821115611e6d565b601f54811161074e57601e55816106b2565b60405162461bcd60e51b8152602060048201526025818401527f4d61726b65743a20636f6c6c61746572616c697a6174696f6e5261746520746f6044820152646f2062696760d81b6064820152608490fd5b806016547fae6e0ab3b95f0a53ff9660a390ccedcbbf1f2355dce974a9841af106fddcfaba600080a3601655816106a7565b6107e0620186a08210611e6d565b6107ed601b548211611e6d565b601c558161069c565b610804620186a08210611e6d565b610811601c548210611e6d565b601b5581610692565b610828620186a08210611e6d565b601d5581610688565b610840620186a0821115611e6d565b601a558161067e565b610858620186a0821115611e6d565b60195581610674565b816008549182167f5a62d22209e370e38eea92cfddcd228e656e6ec139243392a760a7769f5877fd600080a36001600160a01b031916176008558180610669565b82916108af601054611d2c565b601f81116109a3575b50600090601f841160011461092057600093610913575b5050508160011b916000199060031b1c1916176010555b7fa6f004921c944d4b8bf6e38462b00f36a58d62495d56b51f571ab78f732c9815600080a1838084610660565b01013590508486806108cf565b60106000908152601f1985169550600080516020612b8a83398151915293509091889160205b8782106109845750508460019610610968575b50505050811b016010556108e6565b60001960f88660031b161c199201013516905585808681610959565b8285019093013585556001949094019389929182019190810190610946565b60106000529092509050600080516020612b8a833981519152601f840160051c8101602085106109fd575b91849391601f8994920160051c01905b8181106109eb57506108b8565b600081558594508893506001016109de565b50806109ce565b600f80546001600160a01b0319169190911790557f0b2d6eb667d0522c3eb86e4288afecae6c11591ffd1345d4d12407e0598bca9b600080a185610658565b346102ee5760003660031901126102ee576008546040516001600160a01b039091168152602090f35b346102ee5760003660031901126102ee576020610a876127b2565b604051908152f35b346102ee5760003660031901126102ee576020602854604051908152f35b346102ee5760003660031901126102ee576020601e54604051908152f35b346102ee5760003660031901126102ee57602060ff602554166040519015158152f35b346102ee5760003660031901126102ee5760406024548151906001600160401b03908181168352831c166020820152f35b346102ee5760003660031901126102ee576020601a54604051908152f35b346102ee5760403660031901126102ee57610b56611c73565b602435908115801590610c12575b610b9a575b6040519182526001600160a01b0316903390600080516020612b6a83398151915290602090a3602060405160018152f35b336000526001602052604060002054610bb5838210156124eb565b6001600160a01b038216908333839003610bd2575b505050610b69565b610be691610be1841515612530565b611eee565b3360005260016020526040600020556000526040600020610c08838254611efb565b9055828083610bca565b50336001600160a01b03821614610b64565b346102ee5760403660031901126102ee576060610c4b610c42611c73565b6024359061203a565b9060405192835260208301526040820152f35b346102ee5760403660031901126102ee576020610a87610c7c611c73565b6024359061228f565b346102ee5760003660031901126102ee57604051600090602b54610ca881611d2c565b808352600191808316908115610d3b5750600114610ce1575b610cdd83610cd181870382611db8565b60405191829182611dd9565b0390f35b602b600090815260209450917f11c44e4875b74d31ff9fd779bf2566af7bd15b87fc985d01f5094b89e3669e4f5b828410610d2857505050810190910190610cd181610cc1565b8054858501870152928501928101610d0f565b610cdd9550610cd193506020915091849260ff191682840152151560051b8201019350610cc1565b346102ee5760403660031901126102ee576001600160401b036004358181116102ee57366023820112156102ee578060040135918211610f665760405191610db5601f8201601f191660200184611db8565b808352602083019136602483830101116102ee57816000926024602093018537840101526024359161ffff831683036102ee576101009182828051810103126102ee57610e0190612188565b610e0d60408301612575565b91610e1a60608201612575565b9460808201519460a08301519260c08101519160ff831683036102ee5760e082015191015191844211610592578515610f40577f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e2665b6001600160a01b03881660009081526004602052604090208054909690600019811461057c5761ffff61052097610efd9960018401905560405194602086015216604084015260018060a01b038a16606084015260018060a01b038c1660808401528a60a084015260c083015260e082015260e08152610eee81611d81565b602081519101206104ef6123c1565b6001600160a01b038381169116036105375715610f2a576102ec926001600160a01b03908116911661275b565b6102ec926001600160a01b03908116911661270d565b7f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d6610e6f565b634e487b7160e01b600052604160045260246000fd5b346102ee5760003660031901126102ee576005546040516001600160a01b039091168152602090f35b346102ee5760003660031901126102ee576020601b54604051908152f35b346102ee5760203660031901126102ee576001600160a01b03610fe4611c73565b1660005260236020526020604060002054604051908152f35b346102ee5760003660031901126102ee57601454604080516001600160801b038316815260809290921c602083015290f35b346102ee5760403660031901126102ee5761105561104b611c73565b602435903361270d565b602060405160018152f35b346102ee5760203660031901126102ee576001600160a01b03611081611c73565b1660005260046020526020604060002054604051908152f35b346102ee5760003660031901126102ee57600f546040516001600160a01b039091168152602090f35b346102ee5760003660031901126102ee576020602d54604051908152f35b346102ee5760003660031901126102ee5760405160009060105461110481611d2c565b808352600191808316908115610d3b575060011461112c57610cdd83610cd181870382611db8565b601060009081526020945091600080516020612b8a8339815191525b82841061116157505050810190910190610cd181610cc1565b8054858501870152928501928101611148565b346102ee5760203660031901126102ee5760043560098110156102ee5760ff61119e602092611cfd565b54166040519015158152f35b346102ee5760203660031901126102ee576001600160a01b036111cb611c73565b1660005260016020526020604060002054604051908152f35b346102ee5760003660031901126102ee57600a546040516001600160a01b039091168152602090f35b346102ee5760003660031901126102ee576020602654604051908152f35b346102ee5760003660031901126102ee576020601c54604051908152f35b346102ee5760003660031901126102ee576020602c54604051908152f35b346102ee5760003660031901126102ee5760208054604051908152f35b346102ee5760003660031901126102ee576006546001600160a01b0390818116338190036112ee57806005549384167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a36001600160a01b03199283161760055516600655005b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b346102ee5760203660031901126102ee576001600160a01b03611353611c73565b1660005260176020526020604060002054604051908152f35b346102ee5760003660031901126102ee576020601554604051908152f35b346102ee5760003660031901126102ee576020600e54604051908152f35b346102ee5760003660031901126102ee576020601654604051908152f35b346102ee5760603660031901126102ee576020610a87604435602435600435611f21565b346102ee5760003660031901126102ee576020601154604051908152f35b346102ee5760003660031901126102ee57600d546040516001600160a01b039091168152602090f35b346102ee5760003660031901126102ee576020601254604051908152f35b346102ee5760003660031901126102ee576020610a876123c1565b346102ee5760003660031901126102ee576020601954604051908152f35b346102ee5760003660031901126102ee576014546040516001600160801b039091168152602090f35b346102ee5760003660031901126102ee576020601354604051908152f35b346102ee5760603660031901126102ee576114e8611c73565b6114f0611c89565b604435908161152d575b6040519182526001600160a01b03908116921690600080516020612b6a83398151915290602090a3602060405160018152f35b60018060a01b03808416806000526020600181528460406000205493611555828610156124eb565b85169384840361156a575b50505050506114fa565b8360005260028352604060002033600052835260406000205460001981036115de575b5084926115b5600080516020612b6a833981519152979593600193610be16020991515612530565b926000525260406000205560005260406000206115d3858254611efb565b905591858481611560565b9091811061163357602094926115b588600080516020612b6a83398151915298969461160c82600196611eee565b8660005260028552604060002033600052855260406000205593509395975050929461158d565b60405162461bcd60e51b815260048101849052601860248201527745524332303a20616c6c6f77616e636520746f6f206c6f7760401b6044820152606490fd5b346102ee5760003660031901126102ee576020602954604051908152f35b346102ee5761169f36611cae565b9183919395949542116105925760018060a01b0392838816948560005260046020526040600020928354600019811461057c5761173e95610520956001830190556040519060208201927f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d68452600060408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e081526104e481611d81565b1603610537576102ec9261270d565b346102ee5760003660031901126102ee57602a546040516001600160a01b039091168152602090f35b346102ee5760203660031901126102ee576001600160a01b03611797611c73565b1660005260186020526020604060002054604051908152f35b346102ee5760003660031901126102ee57602060405160008152f35b346102ee5760403660031901126102ee5760043560098110156102ee576117f1611c9f565b6008549091906001600160a01b031633036118aa5760ff61181182611cfd565b5416151591151591821461187057808260ff61182f61185e94611cfd565b54161515827feeec81de25875ce1725479bb76f720a8defdb43dea041919ae37bb4aae9847c0600080a4611cfd565b9060ff80198354169116179055600080f35b60405162461bcd60e51b81526020600482015260126024820152714d61726b65743a2073616d6520737461746560701b6044820152606490fd5b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881d5b985d5d1a1bdc9a5e995960621b6044820152606490fd5b346102ee5760403660031901126102ee57611055611902611c73565b602435903361275b565b346102ee5760603660031901126102ee57611925611c73565b61192d611c9f565b6044359081151582036102ee5760018060a01b0392839161195383600554163314611e22565b156119f75716908115908115916119ef575b50156119b257806005549283167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a36001600160a01b031991821617600555600680549091169055005b60405162461bcd60e51b81526020600482015260156024820152744f776e61626c653a207a65726f206164647265737360581b6044820152606490fd5b905083611965565b9150501660018060a01b03196006541617600655600080f35b346102ee5760003660031901126102ee5760018060a01b03600f54166040519063d6d7d52560e01b8252602091826004820152600091601054611a5281611d2c565b908160248501526001908181169081600014611c015750600114611bc1575b50509060409181600081809603925af18015611bb557600091600091611b76575b508115611b19578015611add5760409281601155817f9f9192b5edb17356c524e08d9e025c8e2f6307e6ea52fb7968faa3081f51c3c8600080a25b4260135583519215158352820152f35b60405162461bcd60e51b81526004810184905260146024820152734d61726b65743a20696e76616c6964207261746560601b6044820152606490fd5b50611b2960135460125490611efb565b4211611b3a57601154604092611acd565b60405162461bcd60e51b815260048101839052601460248201527313585c9ad95d0e881c985d19481d1bdbc81bdb1960621b6044820152606490fd5b9150506040813d604011611bad575b81611b9260409383611db8565b810103126102ee5781611ba482612188565b91015183611a92565b3d9150611b85565b6040513d6000823e3d90fd5b935060106000528460002093856000955b838710611bec575050505091810160440191806040611a71565b80548688016044015295019486908201611bd2565b60ff191660448087019190915292151560051b8501909201945082915060409050611a71565b346102ee5760403660031901126102ee57602090611c43611c73565b611c4b611c89565b9060018060a01b03809116600052600384526040600020911660005282526040600020548152f35b600435906001600160a01b03821682036102ee57565b602435906001600160a01b03821682036102ee57565b6024359081151582036102ee57565b60e09060031901126102ee576001600160a01b039060043582811681036102ee579160243590811681036102ee5790604435906064359060843560ff811681036102ee579060a4359060c43590565b6009811015611d16576000526007602052604060002090565b634e487b7160e01b600052602160045260246000fd5b90600182811c92168015611d5c575b6020831014611d4657565b634e487b7160e01b600052602260045260246000fd5b91607f1691611d3b565b604081019081106001600160401b03821117610f6657604052565b61010081019081106001600160401b03821117610f6657604052565b608081019081106001600160401b03821117610f6657604052565b90601f801991011681019081106001600160401b03821117610f6657604052565b6020808252825181830181905290939260005b828110611e0e57505060409293506000838284010152601f8019910116010190565b818101860151848201604001528501611dec565b15611e2957565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b15611e7457565b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881b9bdd081d985b1a59607a1b6044820152606490fd5b8181029291811591840414171561057c57565b8115611eca570490565b634e487b7160e01b600052601260045260246000fd5b604d811161057c57600a0a90565b9190820391821161057c57565b9190820180921161057c57565b8181039291600013801582851316918412161761057c57565b601454919291611f6a91611f5b91611f5191611f47906001600160801b03831690611ead565b9060801c90611ec0565b93601f5490611ead565b611f6483611ee0565b90611ec0565b80831061203257611f7e611fba9184611eee565b91611fb5611faf611fa6601e54611fa0611f9786611ee0565b60205490611efb565b90611ead565b611f6484611ee0565b91611ee0565b611f08565b6509184e72a0009081810291818305149015171561057c57670de0b6b3a76400009182810292818405149015171561057c578015611eca57600160ff1b9180831460001983141661057c570590600082121561202b57811461057c57600003905b808211612026575090565b905090565b509061201b565b505050600090565b6001600160a01b0390811660008181526017602090815260408220549295949391929091811561217b5761206c6129d5565b90612078861515612195565b6009541683600c54898752601882526064604088205491604051948593849263442c159960e01b8452600484015260248301528960448301525afa90811561217057859161213d575b509285949261211d6018936120f8612131996120f36120ea60409a620186a06021540490611ead565b601e5490611ead565b611ec0565b815190936001600160801b0391869161211391841690611ead565b9201511690611ec0565b81811061213557035b9783525220546121e1565b9091565b505082612126565b90508381813d8311612169575b6121548183611db8565b8101031261216557516121316120c1565b8480fd5b503d61214a565b6040513d87823e3d90fd5b5050509192505080918190565b519081151582036102ee57565b1561219c57565b60405162461bcd60e51b815260206004820152601e60248201527f4d61726b65743a2065786368616e676552617465206e6f742076616c696400006044820152606490fd5b6121ec821515612195565b602060018060a01b0360095416916064600c54604051948593849263442c159960e01b845260048401526024830152600060448301525afa908115611bb557600091612259575b50906120f36122459260215490611ead565b620186a0612255601e5483611ead565b0491565b906020823d8211612287575b8161227260209383611db8565b810103126122845750516120f3612233565b80fd5b3d9150612265565b6001600160a01b031660008181526018602052604081205490926122b2916121e1565b9183526017602052604083205480156123bb5781156123bb578181106123bb57828110156123b1576014546122fb918391610be191611f47906001600160801b03831690611ead565b90620186a0928383029280840485149015171561239d576123209291611f6491611eee565b91601b5491601c54936123338585611f08565b80820291848212600160ff1b82141661239d57818305149015171561238957058184820194851291129080158216911516176123755750808212612026575090565b634e487b7160e01b81526011600452602490fd5b634e487b7160e01b83526011600452602483fd5b634e487b7160e01b85526011600452602485fd5b50505050601b5490565b50505090565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031614806124c2575b1561241c577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f000000000000000000000000000000000000000000000000000000000000000082527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a0815260c081018181106001600160401b03821117610f665760405251902090565b507f000000000000000000000000000000000000000000000000000000000000000046146123f3565b156124f257565b60405162461bcd60e51b815260206004820152601660248201527545524332303a2062616c616e636520746f6f206c6f7760501b6044820152606490fd5b1561253757565b60405162461bcd60e51b815260206004820152601660248201527545524332303a206e6f207a65726f206164647265737360501b6044820152606490fd5b51906001600160a01b03821682036102ee57565b6005811015611d16578061259a5750565b600181036125e25760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b6044820152606490fd5b6002810361262f5760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606490fd5b60031461263857565b60405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608490fd5b9291906fa2a8918ca85bafe22016d0b997e4df60600160ff1b0383116127015791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa156126f45781516001600160a01b038116156126ee579190565b50600190565b50604051903d90823e3d90fd5b50505050600090600390565b7fe50de2333c10a9502fcb1d8ae13a51bbf423153dfc63c2b8997665b32154afc360018060a01b038092169160009083825260036020526040822094169384825260205284604082205580a4565b909160207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259160018060a01b03809416938460005260028352604060002095169485600052825280604060002055604051908152a3565b60ff60255416612930576014546001600160801b031690811561292957600a54604051631848f2bf60e31b8152602093916001600160a01b03919085908290600490829086165afa8015611bb55785916000916128ec575b50600460405180948193631a674cc560e11b8352165afa938415611bb5576000946128b9575b505061284c9192670de0b6b3a764000092839160285490611ead565b0490818110156128b0576128636029548092611eee565b8381029080820485149015171561057c57611f64612884926128a494611eee565b6026549261289e602754926128998487611eee565b611ead565b04611efb565b90808211612026575090565b50505060265490565b81813d83116128e5575b6128cd8183611db8565b810103126128e15751925061284c38612830565b8380fd5b503d6128c3565b909181813d8311612922575b6129028183611db8565b8101031261291e5751908282168203612284575084903861280a565b5080fd5b503d6128f8565b6027549150565b600a5460405163e6abad4960e01b815290602090829060049082906001600160a01b03165afa908115611bb557600091612968575090565b906020823d821161298e575b8161298160209383611db8565b8101031261228457505190565b3d9150612974565b604051906129a382611d66565b6014546001600160801b038116835260801c6020830152565b6001600160801b03918216908216019190821161057c57565b600060206040516129e581611d66565b82815201526001600160401b0390612a048260245460401c1642611eee565b918215612a5b57612a5661289991670de0b6b3a7640000612a4b612a26612996565b9660018060801b03958694858a5116906301e13380612a436127b2565b041690611ead565b0416828551166129bc565b168252565b509050612a66612996565b90565b604051612a7581611d66565b6024546001600160401b03908181168352818160401c16612a9d602085019180835242611eee565b928315612b6257602094816301e13380612ab56127b2565b041681528142168352612ac6612996565b670de0b6b3a7640000612aeb60018060801b0397612899898551168787511690611ead565b0495612afc818816828451166129bc565b1680825296015160801b6001600160801b031990811690961760145551915192909416931692831760409190911b67ffffffffffffffff60401b16176024557f7484db546dcd57af0104c73c8a6968dfbaf5767f047cee0dadd0499ad7df81a0600080a3565b505050505056feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae672a2646970667358221220421a530c998631c56a8d4e60d98acc9217a38659635c3f947a0ebf1b3b58a90464736f6c63430008120033"; type BBLendingCommonConstructorParams = | [signer?: Signer] diff --git a/src/typechain/tapioca-bar/factories/markets/bigBang/BBLeverage__factory.ts b/src/typechain/tapioca-bar/factories/markets/bigBang/BBLeverage__factory.ts index 52aa0fd4..906304fc 100644 --- a/src/typechain/tapioca-bar/factories/markets/bigBang/BBLeverage__factory.ts +++ b/src/typechain/tapioca-bar/factories/markets/bigBang/BBLeverage__factory.ts @@ -60,6 +60,31 @@ const _abi = [ name: "ApprovalBorrow", type: "event", }, + { + anonymous: false, + inputs: [], + name: "AssetOracleDataUpdated", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "address", + name: "_oldVal", + type: "address", + }, + { + indexed: true, + internalType: "address", + name: "_newVal", + type: "address", + }, + ], + name: "AssetOracleUpdated", + type: "event", + }, { anonymous: false, inputs: [ @@ -279,25 +304,6 @@ const _abi = [ name: "LogBorrowCapUpdated", type: "event", }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "uint256", - name: "_oldVal", - type: "uint256", - }, - { - indexed: true, - internalType: "uint256", - name: "_newVal", - type: "uint256", - }, - ], - name: "LogBorrowingFee", - type: "event", - }, { anonymous: false, inputs: [ @@ -486,6 +492,37 @@ const _abi = [ name: "Transfer", type: "event", }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "uint256", + name: "oldMin", + type: "uint256", + }, + { + indexed: true, + internalType: "uint256", + name: "newMin", + type: "uint256", + }, + { + indexed: true, + internalType: "uint256", + name: "oldMax", + type: "uint256", + }, + { + indexed: false, + internalType: "uint256", + name: "newMax", + type: "uint256", + }, + ], + name: "UpdateMinMaxMintFee", + type: "event", + }, { inputs: [], name: "DOMAIN_SEPARATOR", @@ -647,27 +684,40 @@ const _abi = [ type: "function", }, { - inputs: [ + inputs: [], + name: "assetOracle", + outputs: [ { - internalType: "address", + internalType: "contract IOracle", name: "", type: "address", }, ], - name: "balanceOf", + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "assetOracleData", outputs: [ { - internalType: "uint256", + internalType: "bytes", name: "", - type: "uint256", + type: "bytes", }, ], stateMutability: "view", type: "function", }, { - inputs: [], - name: "borrowOpeningFee", + inputs: [ + { + internalType: "address", + name: "", + type: "address", + }, + ], + name: "balanceOf", outputs: [ { internalType: "uint256", @@ -1024,6 +1074,19 @@ const _abi = [ stateMutability: "view", type: "function", }, + { + inputs: [], + name: "maxMintFee", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, { inputs: [], name: "minDebtRate", @@ -1050,6 +1113,19 @@ const _abi = [ stateMutability: "view", type: "function", }, + { + inputs: [], + name: "minMintFee", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, { inputs: [ { @@ -1356,11 +1432,6 @@ const _abi = [ }, { inputs: [ - { - internalType: "uint256", - name: "_borrowOpeningFee", - type: "uint256", - }, { internalType: "contract IOracle", name: "_oracle", @@ -1645,7 +1716,7 @@ const _abi = [ ] as const; const _bytecode = - "0x6101408060405234620001895762000017816200018e565b600f81526001602082016e546170696f63612042696742616e6760881b8152602060405162000046816200018e565b8381520192603160f81b845251902091208160e052610100918183524660a0526040519160208301907f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f92838352604085015260608401524660808401523060a084015260a0835260c083019280841060018060401b03851117620001735760408490525190206080523060c052610120908152600580546001600160a01b0319163390811790915560007f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a362013880601b5562015f90601c55612710601d556032602055612ee060215561433a9283620001ab8439608051836130c0015260a0518361318b015260c0518361308a015260e0518361310f01525182613135015251816130ec0152f35b634e487b7160e01b600052604160045260246000fd5b600080fd5b604081019081106001600160401b03821117620001735760405256fe608080604052600436101561001357600080fd5b60009060e08235811c918262a02a20146126ab5750816302ce728f14612682578163078dfbe71461257f578163095ea7b3146125585781630996efb7146120d55781630c4e84f014611fbd57816318160ddd14611fa15781631c9e379b14611f685781631da8bf1014611eb25781631ee9c8f2146116395781631fb8f81a1461161b57816323b872dd14611478578163331960ff1461145a57816334ce998a1461143157816334d441d0146114135781633644e515146113f857816337b6b7b9146113da57816338d52e0f146113b15781633ba0b9a9146113935781633f741adb1461136e57816340626d8b1461135057816344de240a14611332578163473e3ce71461131457816348e4163e146112db5781634e71e0c81461122d578163529898f21461120f57816357935462146111f157816358db9afe14610da55781636b19ad1614610d875781636c3d8b8f14610d5e57816370a0823114610d255781637277854714610ced57816374645ff314610bda5781637dc0d1d014610bb15781637ecebe0014610b785781637fa0b84e14610b465781638285ef4014610b1457816387b2793714610adb5781638c5d0ed314610abd5781638da5cb5b14610a94578163910dd7c814610814578163959916dc146107f757816399a97028146107cf5781639e15e89f14610794578163a9059cbb146106b1578163b0e21e8a14610693578163b27c0e7414610662578163b7113f191461063f578163bb4cfe3b14610621578163bde39c5d14610603578163c1ad5c8d146105e0578163ce8849ed146105b7578163d505accf1461042c57508063d8dfeb4514610403578063dd62ed3e146103b4578063de4065771461038b578063e0996cb61461036d578063e30c397814610344578063ea64dd5614610326578063eec0f42e14610308578063f791395d146102ea5763f8ba4cff146102cc57600080fd5b346102e757806003193601126102e7576102e4613740565b80f35b80fd5b50346102e757806003193601126102e7576020602854604051908152f35b50346102e757806003193601126102e7576020600c54604051908152f35b50346102e757806003193601126102e7576020601f54604051908152f35b50346102e757806003193601126102e7576006546040516001600160a01b039091168152602090f35b50346102e757806003193601126102e7576020601d54604051908152f35b50346102e757806003193601126102e7576009546040516001600160a01b039091168152602090f35b50346102e75760403660031901126102e7576103ce6126f3565b60406103d8612709565b9260018060a01b03809316815260026020522091166000526020526020604060002054604051908152f35b50346102e757806003193601126102e757600b546040516001600160a01b039091168152602090f35b9050346105b35761043c36612771565b8394969793929192421161056e5761051a926105129260018060a01b0395868b1697886000526004602052604060002091825492610479846133e1565b90556040519160208301937f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e2668552600060408501528b60608501528a8d1660808501528d60a085015260c08401528183015281526104d681612888565b5190206104e1613087565b9060405190602082019261190160f01b8452602283015260428201526042815261050a8161286d565b51902061335c565b91909161325d565b1603610529576102e49261343e565b60405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152606490fd5b60405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b5080fd5b82346102e757806003193601126102e7576008546040516001600160a01b039091168152602090f35b82346102e757806003193601126102e75760206105fb613495565b604051908152f35b82346102e757806003193601126102e7576020602954604051908152f35b82346102e757806003193601126102e7576020601e54604051908152f35b82346102e757806003193601126102e757602060ff602654166040519015158152f35b82346102e757806003193601126102e75760406025548151906001600160401b03908181168352831c166020820152f35b82346102e757806003193601126102e7576020601a54604051908152f35b82346102e75760403660031901126102e7576106cb6126f3565b60243580928115801590610782575b610712575b50506040519182526001600160a01b03169033906000805160206142e583398151915290602090a3602060405160018152f35b3381526001602052604081205461072b838210156131b1565b6001600160a01b0384169033829003610746575b50506106df565b60409361075d916107588415156131f6565b6129c2565b3383526001602052838320558152206107778382546129cf565b90558183808061073f565b50336001600160a01b038416146106da565b82346102e75760403660031901126102e75760606107bc6107b36126f3565b60243590612b0e565b9060405192835260208301526040820152f35b82346102e75760403660031901126102e75760206105fb6107ee6126f3565b60243590612f55565b82346102e757806003193601126102e75760208054604051908152f35b9050346105b35760403660031901126105b3576004356001600160401b038111610a905736602382011215610a9057806004013590610852826128c5565b9261086060405194856128a4565b82845284602092838601943660248284010111610a90578060248693018737860101526024359161ffff8316809303610a8c57610100938486805181010312610a88576108ac90612c4d565b916108b96040870161323b565b906108c66060880161323b565b9660808101519660a0820151926108df60c0840161324f565b91818401519301519360018060a01b03808097169b1698814211610a43579289888d9897946109ba9794610512978f8e600014610a1c577f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e266955b8d60005260048652604060002092835493610953856133e1565b905560405196870197885260408701528d6060870152608086015260a085015260c084015281830152815261098781612888565b519020610992613087565b90604051908a82019261190160f01b8452602283015260428201526042815261050a8161286d565b16036109d85750156109cf576102e49261343e565b6102e4926133f0565b6064906040519062461bcd60e51b82526004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152fd5b7f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d695610939565b60405162461bcd60e51b815260048101899052601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b8680fd5b8580fd5b8280fd5b82346102e757806003193601126102e7576005546040516001600160a01b039091168152602090f35b82346102e757806003193601126102e7576020601b54604051908152f35b82346102e75760203660031901126102e7576020906040906001600160a01b03610b036126f3565b168152602483522054604051908152f35b82346102e757806003193601126102e757601454604080516001600160801b038316815260809290921c602083015290f35b82346102e75760403660031901126102e757610b6d610b636126f3565b60243590336133f0565b602060405160018152f35b82346102e75760203660031901126102e7576020906040906001600160a01b03610ba06126f3565b168152600483522054604051908152f35b82346102e757806003193601126102e757600f546040516001600160a01b039091168152602090f35b82346102e757806003193601126102e7576040516010548183610bfc836127ef565b808352600193808516908115610ccc5750600114610c6f575b50610c22925003826128a4565b60405180926020908183528351918281850152815b838110610c5857505060408094508284010152601f80199101168101030190f35b808601820151878201604001528694508101610c37565b601086527f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae67293602092508691905b818310610cb4575050610c22935082010185610c15565b85548784018501529485019486945091830191610c9d565b9050610c2294506020925060ff191682840152151560051b82010185610c15565b82346102e75760203660031901126102e7576004359060098210156102e757602060ff610d19846127c0565b54166040519015158152f35b82346102e75760203660031901126102e7576020906040906001600160a01b03610d4d6126f3565b168152600183522054604051908152f35b82346102e757806003193601126102e757600a546040516001600160a01b039091168152602090f35b82346102e757806003193601126102e7576020602754604051908152f35b82346102e75760a03660031901126102e757610dbf6126f3565b610dc761271f565b916084356001600160401b0381116105b357610de7903690600401612744565b9290600660005260209460078652610e0760ff6040600020541615613840565b610e0f612c5a565b5050610e19613740565b610e2e6001600160a01b0384163014156138bd565b600a5460405163433e762d60e01b8152908790829060049082906001600160a01b03165afa9081156111a157610e7f91610e7a9187916111c4575b506001600160a01b03841690613a84565b613922565b610e8b60243584613d5c565b6001600160a01b038316845260188652604084208054610eae90602435906129c2565b9055610ebe6024356015546129c2565b6015556040516024356001600160a01b038381169086167f8ad4d3ff00da092c7ad9a573ea4f5f6a3dffc6712dc06d3f78f49b862297c4028880a460018060a01b0360095416600c54813b15610a8857630208d92960e11b835286918391829084908290610f3e90602435906001600160a01b038b163060048601613969565b03925af180156111a1579085916111ac575b5050600c54600e54604051633d9545e960e11b815260048101929092526024808301919091526000604483015235606482015260016084820181905260a48201526101408160c4816001600160a01b0386165afa9081156111a15785604094939286928291611170575b50610fde8651998a968795869463efa84c6d60e01b86526044359060048701613c71565b03926001600160a01b03165af191821561112d5780938193611139575b5061100a604435851015613d1a565b6001600160a01b0382168152601785526040812054906110318261102c61366d565b613e42565b8660018060a01b0360095416916064600e546040519485938492638eb22cdd60e01b845260048401526024830152600160448301525afa91821561112d57916110f3575b506105fb9361109b939291116110a057611090908280613ea0565b505b60115490613993565b61387d565b506110a961366d565b80516001600160801b039081166110ce5750506110c8845b8280613ea0565b50611092565b81816110e56110ee938a6110c8960151168961296b565b91511690612994565b6110c1565b929190508583813d8311611126575b61110c81836128a4565b810103126111215791519091906105fb611075565b600080fd5b503d611102565b604051903d90823e3d90fd5b90925061115f91935060403d604011611169575b61115781836128a4565b810190613c5b565b9290929185610ffb565b503d61114d565b61119491506101403d6101401161119a575b61118c81836128a4565b810190613b71565b8a610fba565b503d611182565b6040513d87823e3d90fd5b6111b590612829565b6111c0578387610f50565b8380fd5b6111e49150893d8b116111ea575b6111dc81836128a4565b810190613908565b89610e69565b503d6111d2565b82346102e757806003193601126102e7576020601c54604051908152f35b82346102e757806003193601126102e7576020602154604051908152f35b82346102e757806003193601126102e7576006546001600160a01b03908181163381900361129757806005549384167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08680a36001600160a01b0319928316176005551660065580f35b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b82346102e75760203660031901126102e7576020906040906001600160a01b036113036126f3565b168152601783522054604051908152f35b82346102e757806003193601126102e7576020601554604051908152f35b82346102e757806003193601126102e7576020600e54604051908152f35b82346102e757806003193601126102e7576020601654604051908152f35b82346102e75760603660031901126102e75760206105fb6044356024356004356129f5565b82346102e757806003193601126102e7576020601154604051908152f35b82346102e757806003193601126102e757600d546040516001600160a01b039091168152602090f35b82346102e757806003193601126102e7576020601254604051908152f35b82346102e757806003193601126102e75760206105fb613087565b82346102e757806003193601126102e7576020601954604051908152f35b82346102e757806003193601126102e7576014546040516001600160801b039091168152602090f35b82346102e757806003193601126102e7576020601354604051908152f35b82346102e75760603660031901126102e7576114926126f3565b9061149b612709565b60443591826114d9575b506040519182526001600160a01b039081169216906000805160206142e583398151915290602090a3602060405160018152f35b6001600160a01b03848116808352600160209081526040842054928690611502828610156131b1565b861693848403611517575b50505050506114a5565b83865260028352604086203360005283526040600020546000198103611585575b509260016020969361156387946040976107586000805160206142e58339815191529c9a15156131f6565b92855252838320558152206115798582546129cf565b9055918580858161150d565b909181106115db57926001602096936115638a6000805160206142e58339815191529a98956115b68260409a6129c2565b8689526002855289892033600052855289600020559497509497995050939650611538565b60405162461bcd60e51b815260048101849052601860248201527745524332303a20616c6c6f77616e636520746f6f206c6f7760401b6044820152606490fd5b82346102e757806003193601126102e7576020602a54604051908152f35b82346102e75760c03660031901126102e7576116536126f3565b608435906001600160a01b0382168203610a905760a4356001600160401b0381116111c057611686903690600401612744565b92906005855260076020526116a260ff60408720541615613840565b6116aa612c5a565b50506116b4613740565b6116c96001600160a01b0384163014156138bd565b600a5460405163433e762d60e01b815290602090829060049082906001600160a01b03165afa908115611cd75761171691610e7a918891611e93575b506001600160a01b03851690613a84565b600954600e54604051638eb22cdd60e01b81526004810182905260448035602483015260019082015293916001600160a01b0316908790602086606481865afa958615611e88578296611e54575b5085611df4575b505050620186a061178060205460243561296b565b049260018060a01b03821687526024602052604087206117a18582546129cf565b90556117ab61366d565b936117b8816024356129cf565b94600060206040516117c981612852565b828152015280516001600160801b03908116611d9857806117f081895b1682855116613693565b168252806020830192611808828a1683865116613693565b9382851690525116918a6014549160801b9116928b60018060801b03199182841681871717601455601654948515968715611d82575b5050505050505015611d3d57879460018060a01b038716865260176020526040862061186b8282546129cf565b9055604080519283526020830191909152602435916001600160a01b0385811692908916917f3a5151e57d3bc9798e7853034ac52293d1a0e12a2b44725e75b03b21f86477a69190a4600d546001600160a01b0316803b15611d39576040516340c10f1960e01b815230600482015260248035908201529085908290604490829084905af19081156111a1578591611d25575b5050600d54600e5460095460405163095ea7b360e01b81526001600160a01b039182166004820152602481018890529192166020826044818a855af1918215611c8c578792611ce2575b5060095460405163095ea7b360e01b81526001600160a01b0390911660048201526024803590820152916020918391829081604481015b03925af18015611cd757611c97575b5060095460408051634d4d7cbd60e11b815296909287926001600160a01b03908116928492909183916119ce9160243591908b1690309060048601613e13565b03925af1938415611c8c578794611c65575b50610140906119f5600e5495600c54926129cf565b604051633d9545e960e11b81526004810196909652602486019190915260006044860152606485015260016084850181905260a48501528360c4816001600160a01b0385165afa9286841561112d5760409486928291611c44575b50611a7486519889968795869463efa84c6d60e01b86526064359060048701613c71565b03926001600160a01b03165af18015611c395783928491611c14575b50611a9f606435841015613d1a565b611aa98183613d5c565b8015611b8c575b6001600160a01b03821684526018602052604084208054611ad29083906129cf565b9055611ae0816015546129cf565b601555600c546009546001600160a01b0316908590823b156105b357611b2192849183604051809681958294630208d92960e11b8452308c60048601613969565b03925af180156111a157611b78575b506020936105fb9261109b9290916001600160a01b0383169081907f9ed03113de523cebfe5e49d5f8e12894b1c0d42ce805990461726444c90eab879080a460115490613993565b611b828591612829565b6111c05784611b30565b5060018060a01b03600954166020600c54606460405180948193638eb22cdd60e01b835260048301528860248301528860448301525afa908115611c09578491611bd7575b50611ab0565b90506020813d602011611c01575b81611bf2602093836128a4565b81010312611121575184611bd1565b3d9150611be5565b6040513d86823e3d90fd5b9050611c3091925060403d6040116111695761115781836128a4565b91909184611a90565b6040513d85823e3d90fd5b611c5f91506101403d6101401161119a5761118c81836128a4565b89611a50565b610140919450611c839060403d6040116111695761115781836128a4565b905093906119e0565b6040513d89823e3d90fd5b6020813d602011611ccf575b81611cb0602093836128a4565b81010312610a8c57604091611cc76119ce92612c4d565b50915061198e565b3d9150611ca3565b6040513d88823e3d90fd5b91506020823d602011611d1d575b81611cfd602093836128a4565b81010312610a885761197f602091611d158994612c4d565b509150611948565b3d9150611cf0565b611d2e90612829565b6111c05783886118fe565b8480fd5b60405162461bcd60e51b815260206004820152601b60248201527f42696742616e673a20626f72726f7720636170207265616368656400000000006044820152606490fd5b161792161617111590508980808b81808061183e565b602082019680611dca611dbb611db1858c51168461296b565b8587511690612994565b99846110e5818851168d61296b565b10611ddb575b6117f08280926117e6565b966117f082611dea81936133e1565b9992505050611dd0565b823b156105b357604051630208d92960e11b8152928391829084908290611e2b908b906001600160a01b038b168e60048601613969565b03925af18015611c8c57611e41575b868161176b565b611e4d90969196612829565b9486611e3a565b9095506020813d602011611e80575b81611e70602093836128a4565b810103126105b357519489611764565b3d9150611e63565b6040513d84823e3d90fd5b611eac915060203d6020116111ea576111dc81836128a4565b88611705565b9050346105b357611ec236612771565b8397949697929192421161056e57611f5992610512928a60018060a01b0396878c169889835260046020526040832091825492611efe846133e1565b90556040519260208401947f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d6865260408501528b60608501528a8d1660808501528d60a085015260c08401528183015281526104d681612888565b1603610529576102e4926133f0565b82346102e75760203660031901126102e7576020906040906001600160a01b03611f906126f3565b168152601883522054604051908152f35b82346102e757806003193601126102e757602090604051908152f35b82346102e75760403660031901126102e75760043560098110156105b357611fe3612735565b6008549091906001600160a01b031633036120995760ff612003826127c0565b5416151591151591821461205f57808260ff61202161204f946127c0565b54161515827feeec81de25875ce1725479bb76f720a8defdb43dea041919ae37bb4aae9847c08780a46127c0565b9060ff8019835416911617905580f35b60405162461bcd60e51b81526020600482015260126024820152714d61726b65743a2073616d6520737461746560701b6044820152606490fd5b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881d5b985d5d1a1bdc9a5e995960621b6044820152606490fd5b82346102e7576101803660031901126102e7576001600160a01b0360243581811690819003610a90576001600160401b0391604435838111611d395761212082913690600401612744565b61212861271f565b91612138846005541633146128e0565b60043596620186a09661214d888a111561292b565b602098808a547fc353b09af857951dccce61b43a5854fc45beceed36c50e5d4cc2e71858a8e0df8d80a389558061251a575b50826123c1575b505050169081612381575b50506084358061236c575b5060a43580612357575b5060c43580612343575b5060e43580612322575b506101043580612301575b5061012435806122d0575b5061014435908161225e575b50506101643590816121ec578280f35b601e5482106121ff5750601f5581808280f35b6084906040519062461bcd60e51b82526004820152603260248201527f4d61726b65743a206c69717569646174696f6e436f6c6c61746572616c697a616044820152711d1a5bdb94985d19481d1bdbc81cdb585b1b60721b6064820152fd5b61226a9082111561292b565b601f54811161227d57601e5582806121dc565b60405162461bcd60e51b815260048101839052602560248201527f4d61726b65743a20636f6c6c61746572616c697a6174696f6e5261746520746f6044820152646f2062696760d81b6064820152608490fd5b806016547fae6e0ab3b95f0a53ff9660a390ccedcbbf1f2355dce974a9841af106fddcfaba8680a3601655836121d0565b61230c82821061292b565b612319601b54821161292b565b601c55836121c5565b61232d82821061292b565b61233a601c54821061292b565b601b55836121ba565b61234e82821061292b565b601d55836121b0565b6123638282111561292b565b601a55836121a6565b6123788282111561292b565b6019558361219c565b816008549182167f5a62d22209e370e38eea92cfddcd228e656e6ec139243392a760a7769f5877fd8780a36001600160a01b031916176008558380612191565b9091809394501161250657908392916123db6010546127ef565b601f81116124b8575b508790601f8311600114612448578891908361243d575b50508160011b916000199060031b1c1916176010555b7fa6f004921c944d4b8bf6e38462b00f36a58d62495d56b51f571ab78f732c98158680a1868080612186565b0135905088806123fb565b6010899594939295528789209089955b89601f198516881061249f575060019495965083601f19811610612485575b505050811b01601055612411565b0135600019600384901b60f8161c19169055888080612477565b8183013584559687019688965060019093019201612458565b909192935060108852868820601f840160051c81018885106124ff575b90601f87969594930160051c01905b8181106124f157506123e4565b8981558695506001016124e4565b50806124d5565b634e487b7160e01b87526041600452602487fd5b600f80546001600160a01b0319169190911790557f0b2d6eb667d0522c3eb86e4288afecae6c11591ffd1345d4d12407e0598bca9b8980a18961217f565b82346102e75760403660031901126102e757610b6d6125756126f3565b602435903361343e565b82346102e75760603660031901126102e7576125996126f3565b6125a1612735565b6044359081151582036111c05760018060a01b039283916125c7836005541633146128e0565b1561266b571690811590811591612663575b501561262657806005549283167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08580a36001600160a01b03199182161760055560068054909116905580f35b60405162461bcd60e51b81526020600482015260156024820152744f776e61626c653a207a65726f206164647265737360581b6044820152606490fd5b9050846125d9565b9150501660018060a01b0319600654161760065580f35b82346102e757806003193601126102e757604061269d612c5a565b825191151582526020820152f35b8390346105b35760403660031901126105b35760406020926126cb6126f3565b6126d3612709565b6001600160a01b0391821683526003865283832091168252845220548152f35b600435906001600160a01b038216820361112157565b602435906001600160a01b038216820361112157565b606435906001600160a01b038216820361112157565b60243590811515820361112157565b9181601f84011215611121578235916001600160401b038311611121576020838186019501011161112157565b60e0906003190112611121576001600160a01b03906004358281168103611121579160243590811681036111215790604435906064359060843560ff81168103611121579060a4359060c43590565b60098110156127d9576000526007602052604060002090565b634e487b7160e01b600052602160045260246000fd5b90600182811c9216801561281f575b602083101461280957565b634e487b7160e01b600052602260045260246000fd5b91607f16916127fe565b6001600160401b03811161283c57604052565b634e487b7160e01b600052604160045260246000fd5b604081019081106001600160401b0382111761283c57604052565b608081019081106001600160401b0382111761283c57604052565b61010081019081106001600160401b0382111761283c57604052565b90601f801991011681019081106001600160401b0382111761283c57604052565b6001600160401b03811161283c57601f01601f191660200190565b156128e757565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b1561293257565b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881b9bdd081d985b1a59607a1b6044820152606490fd5b8181029291811591840414171561297e57565b634e487b7160e01b600052601160045260246000fd5b811561299e570490565b634e487b7160e01b600052601260045260246000fd5b604d811161297e57600a0a90565b9190820391821161297e57565b9190820180921161297e57565b8181039291600013801582851316918412161761297e57565b601454919291612a3e91612a2f91612a2591612a1b906001600160801b0383169061296b565b9060801c90612994565b93601f549061296b565b612a38836129b4565b90612994565b808310612b0657612a52612a8e91846129c2565b91612a89612a83612a7a601e54612a74612a6b866129b4565b602154906129cf565b9061296b565b612a38846129b4565b916129b4565b6129dc565b6509184e72a0009081810291818305149015171561297e57670de0b6b3a76400009182810292818405149015171561297e57801561299e57600160ff1b9180831460001983141661297e5705906000821215612aff57811461297e57600003905b808211612afa575090565b905090565b5090612aef565b505050600090565b6001600160a01b03908116600081815260176020908152604082205492959493919290918115612c4057612b406136ac565b90612b4c861515612e52565b6009541683600c54898752601882526064604088205491604051948593849263442c159960e01b8452600484015260248301528960448301525afa9081156111a1578591612c11575b5092859492612bf1601893612bcc612c0599612bc7612bbe60409a620186a0602254049061296b565b601e549061296b565b612994565b815190936001600160801b03918691612be79184169061296b565b9201511690612994565b818110612c0957035b978352522054612e9e565b9091565b505082612bfa565b90508381813d8311612c39575b612c2881836128a4565b81010312611d395751612c05612b95565b503d612c1e565b5050509192505080918190565b5190811515820361112157565b60018060a01b03600f54169060409081519263d6d7d52560e01b845282846020928360048301526000601054612c8f816127ef565b90816024860152600190858282169182600014612e2e575050600114612dea575b5050600083809203925af18015612ddf576000948591612da4575b50928415612d46578315612d0c57505081601155817f9f9192b5edb17356c524e08d9e025c8e2f6307e6ea52fb7968faa3081f51c3c8600080a25b42601355565b60649250519062461bcd60e51b8252600482015260146024820152734d61726b65743a20696e76616c6964207261746560601b6044820152fd5b90919250612d59601354601254906129cf565b4211612d6a57505060115490612d06565b60649250519062461bcd60e51b82526004820152601460248201527313585c9ad95d0e881c985d19481d1bdbc81bdb1960621b6044820152fd5b9490508385813d8311612dd8575b612dbc81836128a4565b810103126102e7575080612dcf85612c4d565b94015138612ccb565b503d612db2565b83513d6000823e3d90fd5b915060106000528560002091866000935b838510612e1357505050508201604401600083612cb0565b80548c8601604401528a97508b965093019287908201612dfb565b8195506000949193506044925060ff191682840152151560051b8201019250612cb0565b15612e5957565b60405162461bcd60e51b815260206004820152601e60248201527f4d61726b65743a2065786368616e676552617465206e6f742076616c696400006044820152606490fd5b612ea9821515612e52565b602060018060a01b0360095416916064600c54604051948593849263442c159960e01b845260048401526024830152600060448301525afa908115612f4957600091612f16575b5090612bc7612f02926022549061296b565b620186a0612f12601e548361296b565b0491565b906020823d8211612f41575b81612f2f602093836128a4565b810103126102e7575051612bc7612ef0565b3d9150612f22565b6040513d6000823e3d90fd5b6001600160a01b03166000818152601860205260408120549092612f7891612e9e565b91835260176020526040832054801561308157811561308157818110613081578281101561307757601454612fc191839161075891612a1b906001600160801b0383169061296b565b90620186a0928383029280840485149015171561306357612fe69291612a38916129c2565b91601b5491601c5493612ff985856129dc565b80820291848212600160ff1b82141661306357818305149015171561304f570581848201948512911290801582169115161761303b5750808212612afa575090565b634e487b7160e01b81526011600452602490fd5b634e487b7160e01b83526011600452602483fd5b634e487b7160e01b85526011600452602485fd5b50505050601b5490565b50505090565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03161480613188575b156130e2577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f000000000000000000000000000000000000000000000000000000000000000082527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a0815260c081018181106001600160401b0382111761283c5760405251902090565b507f000000000000000000000000000000000000000000000000000000000000000046146130b9565b156131b857565b60405162461bcd60e51b815260206004820152601660248201527545524332303a2062616c616e636520746f6f206c6f7760501b6044820152606490fd5b156131fd57565b60405162461bcd60e51b815260206004820152601660248201527545524332303a206e6f207a65726f206164647265737360501b6044820152606490fd5b51906001600160a01b038216820361112157565b519060ff8216820361112157565b60058110156127d9578061326e5750565b600181036132b65760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b6044820152606490fd5b600281036133035760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606490fd5b60031461330c57565b60405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608490fd5b9291906fa2a8918ca85bafe22016d0b997e4df60600160ff1b0383116133d55791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa156133c85781516001600160a01b038116156133c2579190565b50600190565b50604051903d90823e3d90fd5b50505050600090600390565b600019811461297e5760010190565b7fe50de2333c10a9502fcb1d8ae13a51bbf423153dfc63c2b8997665b32154afc360018060a01b038092169160009083825260036020526040822094169384825260205284604082205580a4565b909160207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259160018060a01b03809416938460005260028352604060002095169485600052825280604060002055604051908152a3565b60ff60265416613607576014546001600160801b031690811561360057600a54604051631848f2bf60e31b8152602093916001600160a01b03919085908290600490829086165afa8015612f495785916000916135cb575b50600460405180948193631a674cc560e11b8352165afa938415612f495760009461359c575b505061352f9192670de0b6b3a76400009283916029549061296b565b04908181101561359357613546602a5480926129c2565b8381029080820485149015171561297e57612a3861356792613587946129c2565b602754926135816028549261357c84876129c2565b61296b565b046129cf565b90808211612afa575090565b50505060275490565b81813d83116135c4575b6135b081836128a4565b810103126111c05751925061352f38613513565b503d6135a6565b9182813d83116135f9575b6135e081836128a4565b810103126102e757506135f3859161323b565b386134ed565b503d6135d6565b6028549150565b600a5460405163e6abad4960e01b815290602090829060049082906001600160a01b03165afa908115612f495760009161363f575090565b906020823d8211613665575b81613658602093836128a4565b810103126102e757505190565b3d915061364b565b6040519061367a82612852565b6014546001600160801b038116835260801c6020830152565b6001600160801b03918216908216019190821161297e57565b600060206040516136bc81612852565b82815201526001600160401b03906136db8260255460401c16426129c2565b9182156137325761372d61357c91670de0b6b3a76400006137226136fd61366d565b9660018060801b03958694858a5116906301e1338061371a613495565b04169061296b565b041682855116613693565b168252565b50905061373d61366d565b90565b60405161374c81612852565b6025546001600160401b03908181168352818160401c166137746020850191808352426129c2565b92831561383957602094816301e1338061378c613495565b04168152814216835261379d61366d565b670de0b6b3a76400006137c260018060801b039761357c89855116878751169061296b565b04956137d381881682845116613693565b1680825296015160801b6001600160801b031990811690961760145551915192909416931692831760409190911b67ffffffffffffffff60401b16176025557f7484db546dcd57af0104c73c8a6968dfbaf5767f047cee0dadd0499ad7df81a0600080a3565b5050505050565b1561384757565b60405162461bcd60e51b815260206004820152600e60248201526d13585c9ad95d0e881c185d5cd95960921b6044820152606490fd5b1561388457565b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881a5b9cdbdb1d995b9d607a1b6044820152606490fd5b156138c457565b606460405162461bcd60e51b815260206004820152602060248201527f4d61726b65743a2063616e6e6f742065786563757465206f6e20697473656c666044820152fd5b90816020910312611121575161ffff811681036111215790565b1561392957565b60405162461bcd60e51b81526020600482015260186024820152772134b3a130b7339d1024b73b30b634b21039bbb0b83832b960411b6044820152606490fd5b6001600160a01b039182168152911660208201526040810191909152606081019190915260800190565b919060018060a01b03806000941684526020601781526040852054908115613a7a57601881526040862054801561383957816139cd61366d565b9460095416916064600c54604051948593849263442c159960e01b8452600484015260248301528b60448301525afa96871561112d578097613a44575b5050612be7613a29612bbe613a3f969798620186a0602254049061296b565b9561357c60018060801b0394858751169061296b565b111590565b9096508187813d8311613a73575b613a5c81836128a4565b810103126102e75750945194612be7613a29613a0a565b503d613a52565b5060019450505050565b600a5460405163dbd01de160e01b815260209290916001600160a01b039084908490600490829085165afa8015612f49578493600091613b33575b50918161ffff936044936040519889968795633a304d8b60e21b8752166004860152166024840152165afa908115612f4957600091613aff575b50905090565b82813d8311613b2c575b613b1381836128a4565b810103126102e75750613b2590612c4d565b8038613af9565b503d613b09565b9091929381813d8311613b6a575b613b4b81836128a4565b810103126105b357519082821682036102e75750839291906044613abf565b503d613b41565b809103906101408212611121576040805192606084018481106001600160401b0382111761283c578083526080821261112157613bad8161286d565b613bb68461323b565b815260208401516080860152613bcd83850161323b565b60a0860152606084015160c086015284526080607f198201126111215781908151613bf78161286d565b6080850151815260a0850151602082015260c08501518382015260e08501516060820152602086015260ff19011261112157613c50610120825193613c3b85612852565b613c486101008201612c4d565b855201612c4d565b602083015282015290565b9190826040910312611121576020825192015190565b939492909160206040845194606060018060a01b0396878151168a5284810151858b0152878482015116848b015201516060890152606083820151805160808b01528481015160a08b01528381015160c08b0152015160e08901520151805115156101008801520151151561012086015261014085015216610160830152806101a080610180850152830152806101c093848401376000828201840152601f01601f1916010190565b15613d2157565b60405162461bcd60e51b8152602060048201526013602482015272084d2ce84c2dcce7440dcdee840cadcdeeaced606b1b6044820152606490fd5b6001600160a01b0316338103613d70575050565b6000818152602090600382526040918282203383528152848383205410613dd95783825260038152828220338352815282822054600101613db2575050505050565b613dcd938252600381528282209033835252209182546129c2565b90553880808080613839565b60649083519062461bcd60e51b82526004820152601460248201527313585c9ad95d0e881b9bdd08185c1c1c9bdd995960621b6044820152fd5b9081526001600160a01b0391821660208201529116604082015260608101919091526000608082015260a00190565b60208101805190939291906001600160801b03908116613e63575090925050565b90816110e581613e86613e7c613e8f968651168861296b565b828a511690612994565b9751168761296b565b10613e9657565b9061373d906133e1565b92909260018060a01b0392838516906000948286526020906017825260409788882054808511614167575b50831561412b5783613edc91614188565b94838610156140ef57879885895260248452808920613efc8882546129c2565b9055613f0661366d565b9689858351613f1481612852565b8281520152613f238689613e42565b9760018060801b0380613f3b818c168285511661416f565b16825286820190613f51818a168284511661416f565b9181831690528a9251169060018060801b03199060801b1617601455878b5260178652828b20613f828882546129c2565b9055613fb3838a809d886009541690600e549084518096819582946311a5cc7760e31b84528d309160048601613e13565b03925af180156140e55790613fe09392916140c9575b50613fd4888b6129c2565b806140a6575b506129c2565b80614018575b507fc8e512d8f188ca059984b5853d2bf653da902696b8512785b182b2c813789a6e94959697989950519485521692a4565b8a9084600d541690813b15610a90578351632770a7eb60e21b8152306004820152602481019190915291908290604490829084905af1801561409c577fc8e512d8f188ca059984b5853d2bf653da902696b8512785b182b2c813789a6e969798999a9b5061408d575b8a999897969550613fe6565b61409690612829565b38614081565b82513d8d823e3d90fd5b6140c391506140bc620186a091601a549061296b565b048a6129c2565b38613fda565b6140df90853d87116111695761115781836128a4565b50613fc9565b84513d8f823e3d90fd5b885162461bcd60e51b815260048101849052601560248201527442423a2072657061796d656e7420746f6f206c6f7760581b6044820152606490fd5b885162461bcd60e51b815260048101849052601560248201527453474c3a206e6f7468696e6720746f20726570617960581b6044820152606490fd5b935038613ecb565b6001600160801b03918216908216039190821161297e57565b6001600160a01b03908116600081815260176020908152604080832054939590949293919282821461429257848091600d541687518681019063313ce56760e01b8252600481526141d881612852565b51915afa3d1561428a573d906141ed826128c5565b916141fa885193846128a4565b82523d868684013e5b80614280575b15614272578381805181010312611d39579060ff61422b85614234940161324f565b169283916142a1565b80156142695760249291612a38612a8361425893898852868652888820549061296b565b948352522054808211612afa575090565b50505091505090565b506142349060ff601261422b565b5083815114614209565b606090614203565b50505060249192935052205490565b91821580156142dc575b612b06576001810180911161297e576142ca92612a74612bc7926129b4565b6005810180911161297e57600a900490565b5081156142ab56feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220ba5de1c696bde8c6406a28642161fb2dd455abad6c65e2a30a68c1cb0a161a0464736f6c63430008120033"; + "0x61014080604052346200018a5762000017816200018f565b600f81526001602082016e546170696f63612042696742616e6760881b8152602060405162000046816200018f565b8381520192603160f81b845251902091208160e052610100918183524660a0526040519160208301907f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f92838352604085015260608401524660808401523060a084015260a0835260c083019280841060018060401b03851117620001745760408490525190206080523060c052610120908152600580546001600160a01b0319163390811790915560007f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a362013880601b5562015f90601c55612710601d55612ee06020556103e8602d556145bd9283620001ac8439608051836131bd015260a05183613288015260c05183613187015260e0518361320c01525182613232015251816131e90152f35b634e487b7160e01b600052604160045260246000fd5b600080fd5b604081019081106001600160401b03821117620001745760405256fe608080604052600436101561001357600080fd5b60009060e08235811c918262a02a201461275d5750816302ce728f14612734578163078dfbe714612631578163095ea7b31461260a5781630c4e84f0146124f257816318160ddd146124d65781631c9e379b1461249d5781631d4d3a5d146124745781631da8bf10146123be5781631ee9c8f214611b355781631fb8f81a14611b1757816323b872dd14611974578163331960ff1461195657816334ce998a1461192d57816334d441d01461190f5781633644e515146118f457816337b6b7b9146118d657816338d52e0f146118ad5781633ba0b9a91461188f5781633f741adb1461186a57816340626d8b1461184c57816344de240a1461182e578163473e3ce71461181057816348e4163e146117d75781634e71e0c814611729578163529898f21461170c578163542afda3146116ee57816357935462146116d057816358db9afe146112825781636b19ad16146112645781636c3d8b8f1461123b57816370a082311461120257816372778547146111ca57816374645ff31461113757816374c9e481146111195781637dc0d1d0146110f05781637ecebe00146110b75781637fa0b84e146110855781638285ef401461105357816387b279371461101a5781638c5d0ed314610ffc5781638da5cb5b14610fd3578163910dd7c814610d53578163932bc4f814610c7557816399a9702814610c4d5781639e15e89f14610c12578163a9059cbb14610b2f578163b0e21e8a14610b11578163b27c0e7414610ae0578163b7113f1914610abd578163bb4cfe3b14610a9f578163bde39c5d14610a81578163c1ad5c8d14610a5e578163ce8849ed14610a35578163d3fb2a38146105d8578163d505accf1461044d57508063d8dfeb4514610424578063dd62ed3e146103d5578063de406577146103ac578063e0996cb61461038e578063e30c397814610365578063ea64dd5614610347578063eec0f42e14610329578063f791395d1461030b5763f8ba4cff146102ed57600080fd5b34610308578060031936011261030857610305613830565b80f35b80fd5b50346103085780600319360112610308576020602754604051908152f35b50346103085780600319360112610308576020600c54604051908152f35b50346103085780600319360112610308576020601f54604051908152f35b50346103085780600319360112610308576006546040516001600160a01b039091168152602090f35b50346103085780600319360112610308576020601d54604051908152f35b50346103085780600319360112610308576009546040516001600160a01b039091168152602090f35b5034610308576040366003190112610308576103ef6127a5565b60406103f96127bb565b9260018060a01b03809316815260026020522091166000526020526020604060002054604051908152f35b5034610308578060031936011261030857600b546040516001600160a01b039091168152602090f35b9050346105d45761045d366127e0565b8394969793929192421161058f5761053b926105339260018060a01b0395868b169788600052600460205260406000209182549261049a846134d1565b90556040519160208301937f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e2668552600060408501528b60608501528a8d1660808501528d60a085015260c08401528183015281526104f781612924565b519020610502613184565b9060405190602082019261190160f01b8452602283015260428201526042815261052b81612909565b519020613459565b91909161335a565b160361054a576103059261352e565b60405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152606490fd5b60405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b5080fd5b823461030857610160366003190112610308576001600160a01b0390600435828116908190036105d4576001600160401b0392602435848111610a315761062390369060040161282f565b909460443593838516809503610a2c57610642846005541633146129c5565b806109ee575b5081610895575b50509080929350610855575b50506064358061083d575b5060843580610825575b5060a4358061080e575b5060c435806107ea575b5060e435806107c6575b506101043580610795575b506101243580610721575b5061014435806106b2575080f35b601e5481106106c157601f5580f35b60405162461bcd60e51b815260206004820152603260248201527f4d61726b65743a206c69717569646174696f6e436f6c6c61746572616c697a616044820152711d1a5bdb94985d19481d1bdbc81cdb585b1b60721b6064820152608490fd5b610730620186a0821115612a10565b601f54811161074257601e55816106a4565b60405162461bcd60e51b815260206004820152602560248201527f4d61726b65743a20636f6c6c61746572616c697a6174696f6e5261746520746f6044820152646f2062696760d81b6064820152608490fd5b806016547fae6e0ab3b95f0a53ff9660a390ccedcbbf1f2355dce974a9841af106fddcfaba8480a360165581610699565b6107d4620186a08210612a10565b6107e1601b548211612a10565b601c558161068e565b6107f8620186a08210612a10565b610805601c548210612a10565b601b5581610684565b61081c620186a08210612a10565b601d558161067a565b610834620186a0821115612a10565b601a5581610670565b61084c620186a0821115612a10565b60195581610666565b816008549182167f5a62d22209e370e38eea92cfddcd228e656e6ec139243392a760a7769f5877fd8580a36001600160a01b03191617600855818061065b565b81116109da576108a660105461288b565b601f811161098b575b5083601f8211600114610917578495829394959261090c575b50508160011b916000199060031b1c1916176010555b7fa6f004921c944d4b8bf6e38462b00f36a58d62495d56b51f571ab78f732c98158380a1908291848061064f565b0135905085806108c8565b60108552601f19821695600080516020614568833981519152918660205b8982106109735750508360019596979810610959575b505050811b016010556108de565b0135600019600384901b60f8161c1916905585808061094b565b80600184968294958701358155019501920190610935565b60108552600080516020614568833981519152601f830160051c8101602084106109d3575b601f90920160051c01905b8181106109c857506108af565b8581556001016109bb565b50806109b0565b634e487b7160e01b84526041600452602484fd5b600f80546001600160a01b0319169190911790557f0b2d6eb667d0522c3eb86e4288afecae6c11591ffd1345d4d12407e0598bca9b8580a186610648565b600080fd5b8380fd5b82346103085780600319360112610308576008546040516001600160a01b039091168152602090f35b82346103085780600319360112610308576020610a79613585565b604051908152f35b82346103085780600319360112610308576020602854604051908152f35b82346103085780600319360112610308576020601e54604051908152f35b8234610308578060031936011261030857602060ff602554166040519015158152f35b823461030857806003193601126103085760406024548151906001600160401b03908181168352831c166020820152f35b82346103085780600319360112610308576020601a54604051908152f35b823461030857604036600319011261030857610b496127a5565b60243580928115801590610c00575b610b90575b50506040519182526001600160a01b031690339060008051602061454883398151915290602090a3602060405160018152f35b33815260016020526040812054610ba9838210156132ae565b6001600160a01b0384169033829003610bc4575b5050610b5d565b604093610bdb91610bd68415156132f3565b612aa7565b338352600160205283832055815220610bf5838254612ab4565b905581838080610bbd565b50336001600160a01b03841614610b58565b8234610308576040366003190112610308576060610c3a610c316127a5565b60243590612bf3565b9060405192835260208301526040820152f35b8234610308576040366003190112610308576020610a79610c6c6127a5565b60243590613052565b8234610308578060031936011261030857604051600090602b54610c988161288b565b808352600191808316908115610d2b5750600114610cd1575b610ccd83610cc181870382612940565b60405191829182612961565b0390f35b602b600090815260209450917f11c44e4875b74d31ff9fd779bf2566af7bd15b87fc985d01f5094b89e3669e4f5b828410610d1857505050810190910190610cc181610cb1565b8054858501870152928501928101610cff565b610ccd9550610cc193506020915091849260ff191682840152151560051b8201019350610cb1565b9050346105d45760403660031901126105d4576004356001600160401b038111610fcf5736602382011215610fcf57806004013590610d91826129aa565b92610d9f6040519485612940565b82845284602092838601943660248284010111610fcf578060248693018737860101526024359161ffff8316809303610fcb57610100938486805181010312610fc757610deb90612d32565b91610df860408701613338565b90610e0560608801613338565b9660808101519660a082015192610e1e60c0840161334c565b91818401519301519360018060a01b03808097169b1698814211610f82579289888d989794610ef99794610533978f8e600014610f5b577f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e266955b8d60005260048652604060002092835493610e92856134d1565b905560405196870197885260408701528d6060870152608086015260a085015260c0840152818301528152610ec681612924565b519020610ed1613184565b90604051908a82019261190160f01b8452602283015260428201526042815261052b81612909565b1603610f17575015610f0e576103059261352e565b610305926134e0565b6064906040519062461bcd60e51b82526004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152fd5b7f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d695610e78565b60405162461bcd60e51b815260048101899052601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b8680fd5b8580fd5b8280fd5b82346103085780600319360112610308576005546040516001600160a01b039091168152602090f35b82346103085780600319360112610308576020601b54604051908152f35b8234610308576020366003190112610308576020906040906001600160a01b036110426127a5565b168152602383522054604051908152f35b8234610308578060031936011261030857601454604080516001600160801b038316815260809290921c602083015290f35b8234610308576040366003190112610308576110ac6110a26127a5565b60243590336134e0565b602060405160018152f35b8234610308576020366003190112610308576020906040906001600160a01b036110df6127a5565b168152600483522054604051908152f35b8234610308578060031936011261030857600f546040516001600160a01b039091168152602090f35b82346103085780600319360112610308576020602d54604051908152f35b823461030857806003193601126103085760405160009060105461115a8161288b565b808352600191808316908115610d2b575060011461118257610ccd83610cc181870382612940565b6010600090815260209450916000805160206145688339815191525b8284106111b757505050810190910190610cc181610cb1565b805485850187015292850192810161119e565b82346103085760203660031901126103085760043590600982101561030857602060ff6111f68461285c565b54166040519015158152f35b8234610308576020366003190112610308576020906040906001600160a01b0361122a6127a5565b168152600183522054604051908152f35b8234610308578060031936011261030857600a546040516001600160a01b039091168152602090f35b82346103085780600319360112610308576020602654604051908152f35b82346103085760a03660031901126103085761129c6127a5565b606435916001600160a01b0383168303610a2c576084356001600160401b0381116105d4576112cf90369060040161282f565b92906006600052602094600786526112ef60ff6040600020541615613930565b6112f7612df7565b5050611301613830565b6113166001600160a01b0384163014156139ad565b600a5460405163433e762d60e01b8152908790829060049082906001600160a01b03165afa90811561168457611367916113629187916116a3575b506001600160a01b03841690613b74565b613a12565b61137360243584613e4c565b6001600160a01b0383168452601886526040842080546113969060243590612aa7565b90556113a6602435601554612aa7565b6015556040516024356001600160a01b038381169086167f8ad4d3ff00da092c7ad9a573ea4f5f6a3dffc6712dc06d3f78f49b862297c4028880a460018060a01b0360095416600c54813b15610fc757630208d92960e11b83528691839182908490829061142690602435906001600160a01b038b163060048601613a59565b03925af180156116845790859161168f575b5050600c54600e54604051633d9545e960e11b815260048101929092526024808301919091526000604483015235606482015260016084820181905260a48201526101408160c4816001600160a01b0386165afa9081156116845785604094939286928291611653575b506114c68651998a968795869463efa84c6d60e01b86526044359060048701613d61565b03926001600160a01b03165af1918215611610578093819361161c575b506114f2604435851015613e0a565b6001600160a01b0382168152601785526040812054906115198261151461375d565b6140a5565b8660018060a01b0360095416916064600e546040519485938492638eb22cdd60e01b845260048401526024830152600160448301525afa91821561161057916115db575b50610a79936115839392911161158857611578908280614103565b505b60115490613a83565b61396d565b5061159161375d565b80516001600160801b039081166115b65750506115b0845b8280614103565b5061157a565b81816115cd6115d6938a6115b09601511689612a50565b91511690612a79565b6115a9565b929190508583813d8311611609575b6115f48183612940565b81010312610a2c579151909190610a7961155d565b503d6115ea565b604051903d90823e3d90fd5b90925061164291935060403d60401161164c575b61163a8183612940565b810190613d4b565b92909291856114e3565b503d611630565b61167791506101403d6101401161167d575b61166f8183612940565b810190613c61565b8a6114a2565b503d611665565b6040513d87823e3d90fd5b611698906128c5565b610a31578387611438565b6116c39150893d8b116116c9575b6116bb8183612940565b8101906139f8565b89611351565b503d6116b1565b82346103085780600319360112610308576020601c54604051908152f35b82346103085780600319360112610308576020602c54604051908152f35b823461030857806003193601126103085760208054604051908152f35b82346103085780600319360112610308576006546001600160a01b03908181163381900361179357806005549384167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08680a36001600160a01b0319928316176005551660065580f35b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b8234610308576020366003190112610308576020906040906001600160a01b036117ff6127a5565b168152601783522054604051908152f35b82346103085780600319360112610308576020601554604051908152f35b82346103085780600319360112610308576020600e54604051908152f35b82346103085780600319360112610308576020601654604051908152f35b8234610308576060366003190112610308576020610a79604435602435600435612ada565b82346103085780600319360112610308576020601154604051908152f35b8234610308578060031936011261030857600d546040516001600160a01b039091168152602090f35b82346103085780600319360112610308576020601254604051908152f35b82346103085780600319360112610308576020610a79613184565b82346103085780600319360112610308576020601954604051908152f35b82346103085780600319360112610308576014546040516001600160801b039091168152602090f35b82346103085780600319360112610308576020601354604051908152f35b82346103085760603660031901126103085761198e6127a5565b906119976127bb565b60443591826119d5575b506040519182526001600160a01b0390811692169060008051602061454883398151915290602090a3602060405160018152f35b6001600160a01b038481168083526001602090815260408420549286906119fe828610156132ae565b861693848403611a13575b50505050506119a1565b83865260028352604086203360005283526040600020546000198103611a81575b5092600160209693611a5f8794604097610bd66000805160206145488339815191529c9a15156132f3565b9285525283832055815220611a75858254612ab4565b90559185808581611a09565b90918110611ad75792600160209693611a5f8a6000805160206145488339815191529a9895611ab28260409a612aa7565b8689526002855289892033600052855289600020559497509497995050939650611a34565b60405162461bcd60e51b815260048101849052601860248201527745524332303a20616c6c6f77616e636520746f6f206c6f7760401b6044820152606490fd5b82346103085780600319360112610308576020602954604051908152f35b82346103085760c036600319011261030857611b4f6127a5565b608435906001600160a01b0382168203610fcf5760a4356001600160401b038111610a3157611b8290369060040161282f565b9290600585526007602052611b9e60ff60408720541615613930565b611ba6612df7565b5050611bb0613830565b611bc56001600160a01b0384163014156139ad565b600a5460405163433e762d60e01b815290602090829060049082906001600160a01b03165afa9081156121ca57611c129161136291889161239f575b506001600160a01b03851690613b74565b600954600e54604051638eb22cdd60e01b81526004810182905260448035602483015260019082015293916001600160a01b0316908790602086606481865afa958615612394578296612360575b50856122f5575b505050611c75602435613f32565b9260018060a01b0382168752602360205260408720611c95858254612ab4565b9055611c9f61375d565b93611cac81602435612ab4565b9460006020604051611cbd816128ee565b828152015280516001600160801b039081166122995780611ce481895b1682855116613783565b168252806020830192611cfc828a1683865116613783565b9382851690525116918a6014549160801b9116928b60018060801b03199182841681871717601455601654948515968715612283575b505050505050501561223e57879460018060a01b0387168652601760205260408620611d5f828254612ab4565b9055604080519283526020830191909152602435916001600160a01b0385811692908916917f3a5151e57d3bc9798e7853034ac52293d1a0e12a2b44725e75b03b21f86477a69190a4600d546001600160a01b0316803b1561223a576040516340c10f1960e01b815230600482015260248035908201529085908290604490829084905af1908115611684578591612226575b5050600d54600e5460095460405163095ea7b360e01b8082526001600160a01b0392831660048301526024820189905291909316926020816044818b885af1801561221b576121d5575b506009546040519182526001600160a01b031660048201526024803590820152916020908390818981604481015b03925af19182156121ca578692612187575b5060095460408051634d4d7cbd60e11b815297909288926001600160a01b0390811692849290918391611ebc9160243591908c1690309060048601613f03565b03925af1801561215957611f27958291612166575b50611ee2600e5491600c5494612ab4565b60405180978192633d9545e960e11b83526101409687956004850160a091949360019360c0830196835260208301526000604083015260608201528260808201520152565b03816001600160a01b0387165afa8015612159576040958793839261213c575b5050611f6c86519889968795869463efa84c6d60e01b86526064359060048701613d61565b03926001600160a01b03165af18015612131578392849161210c575b50611f97606435841015613e0a565b611fa18183613e4c565b8015612084575b6001600160a01b03821684526018602052604084208054611fca908390612ab4565b9055611fd881601554612ab4565b601555600c546009546001600160a01b0316908590823b156105d45761201992849183604051809681958294630208d92960e11b8452308c60048601613a59565b03925af1801561168457612070575b50602093610a79926115839290916001600160a01b0383169081907f9ed03113de523cebfe5e49d5f8e12894b1c0d42ce805990461726444c90eab879080a460115490613a83565b61207a85916128c5565b610a315784612028565b5060018060a01b03600954166020600c54606460405180948193638eb22cdd60e01b835260048301528860248301528860448301525afa9081156121015784916120cf575b50611fa8565b90506020813d6020116120f9575b816120ea60209383612940565b81010312610a2c5751846120c9565b3d91506120dd565b6040513d86823e3d90fd5b905061212891925060403d60401161164c5761163a8183612940565b91909184611f88565b6040513d85823e3d90fd5b6121529250803d1061167d5761166f8183612940565b8980611f47565b50604051903d90823e3d90fd5b61217f915060403d60401161164c5761163a8183612940565b905089611ed1565b91506020823d6020116121c2575b816121a260209383612940565b81010312610fcb57611ebc6040916121ba8894612d32565b509150611e7c565b3d9150612195565b6040513d88823e3d90fd5b906020823d602011612213575b816121ef60209383612940565b8101031261220f57611e6a93612206602093612d32565b50935090611e3c565b8780fd5b3d91506121e2565b6040513d8a823e3d90fd5b61222f906128c5565b610a31578388611df2565b8480fd5b60405162461bcd60e51b815260206004820152601b60248201527f42696742616e673a20626f72726f7720636170207265616368656400000000006044820152606490fd5b161792161617111590508980808b818080611d32565b6020820196806122cb6122bc6122b2858c511684612a50565b8587511690612a79565b99846115cd818851168d612a50565b106122dc575b611ce4828092611cda565b96611ce4826122eb81936134d1565b99925050506122d1565b823b156105d457604051630208d92960e11b815292839182908490829061232c908b906001600160a01b038b168e60048601613a59565b03925af1801561235557612342575b8681611c67565b61234e909691966128c5565b948661233b565b6040513d89823e3d90fd5b9095506020813d60201161238c575b8161237c60209383612940565b810103126105d457519489611c60565b3d915061236f565b6040513d84823e3d90fd5b6123b8915060203d6020116116c9576116bb8183612940565b88611c01565b9050346105d4576123ce366127e0565b8397949697929192421161058f5761246592610533928a60018060a01b0396878c16988983526004602052604083209182549261240a846134d1565b90556040519260208401947f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d6865260408501528b60608501528a8d1660808501528d60a085015260c08401528183015281526104f781612924565b160361054a57610305926134e0565b8234610308578060031936011261030857602a546040516001600160a01b039091168152602090f35b8234610308576020366003190112610308576020906040906001600160a01b036124c56127a5565b168152601883522054604051908152f35b8234610308578060031936011261030857602090604051908152f35b82346103085760403660031901126103085760043560098110156105d4576125186127d1565b6008549091906001600160a01b031633036125ce5760ff6125388261285c565b5416151591151591821461259457808260ff6125566125849461285c565b54161515827feeec81de25875ce1725479bb76f720a8defdb43dea041919ae37bb4aae9847c08780a461285c565b9060ff8019835416911617905580f35b60405162461bcd60e51b81526020600482015260126024820152714d61726b65743a2073616d6520737461746560701b6044820152606490fd5b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881d5b985d5d1a1bdc9a5e995960621b6044820152606490fd5b8234610308576040366003190112610308576110ac6126276127a5565b602435903361352e565b82346103085760603660031901126103085761264b6127a5565b6126536127d1565b604435908115158203610a315760018060a01b03928391612679836005541633146129c5565b1561271d571690811590811591612715575b50156126d857806005549283167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08580a36001600160a01b03199182161760055560068054909116905580f35b60405162461bcd60e51b81526020600482015260156024820152744f776e61626c653a207a65726f206164647265737360581b6044820152606490fd5b90508461268b565b9150501660018060a01b0319600654161760065580f35b8234610308578060031936011261030857604061274f612df7565b825191151582526020820152f35b8390346105d45760403660031901126105d457604060209261277d6127a5565b6127856127bb565b6001600160a01b0391821683526003865283832091168252845220548152f35b600435906001600160a01b0382168203610a2c57565b602435906001600160a01b0382168203610a2c57565b602435908115158203610a2c57565b60e0906003190112610a2c576001600160a01b03906004358281168103610a2c57916024359081168103610a2c5790604435906064359060843560ff81168103610a2c579060a4359060c43590565b9181601f84011215610a2c578235916001600160401b038311610a2c5760208381860195010111610a2c57565b6009811015612875576000526007602052604060002090565b634e487b7160e01b600052602160045260246000fd5b90600182811c921680156128bb575b60208310146128a557565b634e487b7160e01b600052602260045260246000fd5b91607f169161289a565b6001600160401b0381116128d857604052565b634e487b7160e01b600052604160045260246000fd5b604081019081106001600160401b038211176128d857604052565b608081019081106001600160401b038211176128d857604052565b61010081019081106001600160401b038211176128d857604052565b90601f801991011681019081106001600160401b038211176128d857604052565b6020808252825181830181905290939260005b82811061299657505060409293506000838284010152601f8019910116010190565b818101860151848201604001528501612974565b6001600160401b0381116128d857601f01601f191660200190565b156129cc57565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b15612a1757565b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881b9bdd081d985b1a59607a1b6044820152606490fd5b81810292918115918404141715612a6357565b634e487b7160e01b600052601160045260246000fd5b8115612a83570490565b634e487b7160e01b600052601260045260246000fd5b604d8111612a6357600a0a90565b91908203918211612a6357565b91908201809211612a6357565b81810392916000138015828513169184121617612a6357565b601454919291612b2391612b1491612b0a91612b00906001600160801b03831690612a50565b9060801c90612a79565b93601f5490612a50565b612b1d83612a99565b90612a79565b808310612beb57612b37612b739184612aa7565b91612b6e612b68612b5f601e54612b59612b5086612a99565b60205490612ab4565b90612a50565b612b1d84612a99565b91612a99565b612ac1565b6509184e72a00090818102918183051490151715612a6357670de0b6b3a764000091828102928184051490151715612a63578015612a8357600160ff1b91808314600019831416612a635705906000821215612be4578114612a6357600003905b808211612bdf575090565b905090565b5090612bd4565b505050600090565b6001600160a01b03908116600081815260176020908152604082205492959493919290918115612d2557612c2561379c565b90612c31861515612f4f565b6009541683600c54898752601882526064604088205491604051948593849263442c159960e01b8452600484015260248301528960448301525afa908115611684578591612cf6575b5092859492612cd6601893612cb1612cea99612cac612ca360409a620186a06021540490612a50565b601e5490612a50565b612a79565b815190936001600160801b03918691612ccc91841690612a50565b9201511690612a79565b818110612cee57035b978352522054612f9b565b9091565b505082612cdf565b90508381813d8311612d1e575b612d0d8183612940565b8101031261223a5751612cea612c7a565b503d612d03565b5050509192505080918190565b51908115158203610a2c57565b9190826040910312610a2c576020612d5683612d32565b92015190565b602080825260009160105491612d718361288b565b9283828401526001908181169081600014612dd45750600114612d96575b5050505090565b929350601060005280600020926000935b858510612dc05750505060409250010138808080612d8f565b805485850160400152938201938101612da7565b925050506040935060ff929192191683830152151560051b010138808080612d8f565b600f546040805163d6d7d52560e01b81529290916001600160a01b0316828480612e2360048201612d5c565b0381600080955af18015612f435781948291612f10575b50928415612eb3578315612e7957507f9f9192b5edb17356c524e08d9e025c8e2f6307e6ea52fb7968faa3081f51c3c883918260115580a25b42601355565b5162461bcd60e51b81526020600482015260146024820152734d61726b65743a20696e76616c6964207261746560601b6044820152606490fd5b91925050612ec660135460125490612ab4565b4211612ed6575060115490612e73565b5162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881c985d19481d1bdbc81bdb1960621b6044820152606490fd5b9050612f33919450833d8511612f3c575b612f2b8183612940565b810190612d3f565b93909338612e3a565b503d612f21565b508251903d90823e3d90fd5b15612f5657565b60405162461bcd60e51b815260206004820152601e60248201527f4d61726b65743a2065786368616e676552617465206e6f742076616c696400006044820152606490fd5b612fa6821515612f4f565b602060018060a01b0360095416916064600c54604051948593849263442c159960e01b845260048401526024830152600060448301525afa90811561304657600091613013575b5090612cac612fff9260215490612a50565b620186a061300f601e5483612a50565b0491565b906020823d821161303e575b8161302c60209383612940565b81010312610308575051612cac612fed565b3d915061301f565b6040513d6000823e3d90fd5b6001600160a01b0316600081815260186020526040812054909261307591612f9b565b91835260176020526040832054801561317e57811561317e5781811061317e5782811015613174576014546130be918391610bd691612b00906001600160801b03831690612a50565b90620186a09283830292808404851490151715613160576130e39291612b1d91612aa7565b91601b5491601c54936130f68585612ac1565b80820291848212600160ff1b82141661316057818305149015171561314c57058184820194851291129080158216911516176131385750808212612bdf575090565b634e487b7160e01b81526011600452602490fd5b634e487b7160e01b83526011600452602483fd5b634e487b7160e01b85526011600452602485fd5b50505050601b5490565b50505090565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03161480613285575b156131df577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f000000000000000000000000000000000000000000000000000000000000000082527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a0815260c081018181106001600160401b038211176128d85760405251902090565b507f000000000000000000000000000000000000000000000000000000000000000046146131b6565b156132b557565b60405162461bcd60e51b815260206004820152601660248201527545524332303a2062616c616e636520746f6f206c6f7760501b6044820152606490fd5b156132fa57565b60405162461bcd60e51b815260206004820152601660248201527545524332303a206e6f207a65726f206164647265737360501b6044820152606490fd5b51906001600160a01b0382168203610a2c57565b519060ff82168203610a2c57565b6005811015612875578061336b5750565b600181036133b35760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b6044820152606490fd5b600281036134005760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606490fd5b60031461340957565b60405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608490fd5b9291906fa2a8918ca85bafe22016d0b997e4df60600160ff1b0383116134c55791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa156121595781516001600160a01b038116156134bf579190565b50600190565b50505050600090600390565b6000198114612a635760010190565b7fe50de2333c10a9502fcb1d8ae13a51bbf423153dfc63c2b8997665b32154afc360018060a01b038092169160009083825260036020526040822094169384825260205284604082205580a4565b909160207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259160018060a01b03809416938460005260028352604060002095169485600052825280604060002055604051908152a3565b60ff602554166136f7576014546001600160801b03169081156136f057600a54604051631848f2bf60e31b8152602093916001600160a01b03919085908290600490829086165afa80156130465785916000916136bb575b50600460405180948193631a674cc560e11b8352165afa9384156130465760009461368c575b505061361f9192670de0b6b3a764000092839160285490612a50565b049081811015613683576136366029548092612aa7565b83810290808204851490151715612a6357612b1d6136579261367794612aa7565b602654926136716027549261366c8487612aa7565b612a50565b04612ab4565b90808211612bdf575090565b50505060265490565b81813d83116136b4575b6136a08183612940565b81010312610a315751925061361f38613603565b503d613696565b9182813d83116136e9575b6136d08183612940565b8101031261030857506136e38591613338565b386135dd565b503d6136c6565b6027549150565b600a5460405163e6abad4960e01b815290602090829060049082906001600160a01b03165afa9081156130465760009161372f575090565b906020823d8211613755575b8161374860209383612940565b8101031261030857505190565b3d915061373b565b6040519061376a826128ee565b6014546001600160801b038116835260801c6020830152565b6001600160801b039182169082160191908211612a6357565b600060206040516137ac816128ee565b82815201526001600160401b03906137cb8260245460401c1642612aa7565b9182156138225761381d61366c91670de0b6b3a76400006138126137ed61375d565b9660018060801b03958694858a5116906301e1338061380a613585565b041690612a50565b041682855116613783565b168252565b50905061382d61375d565b90565b60405161383c816128ee565b6024546001600160401b03908181168352818160401c16613864602085019180835242612aa7565b92831561392957602094816301e1338061387c613585565b04168152814216835261388d61375d565b670de0b6b3a76400006138b260018060801b039761366c898551168787511690612a50565b04956138c381881682845116613783565b1680825296015160801b6001600160801b031990811690961760145551915192909416931692831760409190911b67ffffffffffffffff60401b16176024557f7484db546dcd57af0104c73c8a6968dfbaf5767f047cee0dadd0499ad7df81a0600080a3565b5050505050565b1561393757565b60405162461bcd60e51b815260206004820152600e60248201526d13585c9ad95d0e881c185d5cd95960921b6044820152606490fd5b1561397457565b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881a5b9cdbdb1d995b9d607a1b6044820152606490fd5b156139b457565b606460405162461bcd60e51b815260206004820152602060248201527f4d61726b65743a2063616e6e6f742065786563757465206f6e20697473656c666044820152fd5b90816020910312610a2c575161ffff81168103610a2c5790565b15613a1957565b60405162461bcd60e51b81526020600482015260186024820152772134b3a130b7339d1024b73b30b634b21039bbb0b83832b960411b6044820152606490fd5b6001600160a01b039182168152911660208201526040810191909152606081019190915260800190565b919060018060a01b03806000941684526020601781526040852054908115613b6a5760188152604086205480156139295781613abd61375d565b9460095416916064600c54604051948593849263442c159960e01b8452600484015260248301528b60448301525afa968715611610578097613b34575b5050612ccc613b19612ca3613b2f969798620186a06021540490612a50565b9561366c60018060801b03948587511690612a50565b111590565b9096508187813d8311613b63575b613b4c8183612940565b810103126103085750945194612ccc613b19613afa565b503d613b42565b5060019450505050565b600a5460405163dbd01de160e01b815260209290916001600160a01b039084908490600490829085165afa8015613046578493600091613c23575b50918161ffff936044936040519889968795633a304d8b60e21b8752166004860152166024840152165afa90811561304657600091613bef575b50905090565b82813d8311613c1c575b613c038183612940565b810103126103085750613c1590612d32565b8038613be9565b503d613bf9565b9091929381813d8311613c5a575b613c3b8183612940565b810103126105d457519082821682036103085750839291906044613baf565b503d613c31565b809103906101408212610a2c576040805192606084018481106001600160401b038211176128d85780835260808212610a2c57613c9d81612909565b613ca684613338565b815260208401516080860152613cbd838501613338565b60a0860152606084015160c086015284526080607f19820112610a2c5781908151613ce781612909565b6080850151815260a0850151602082015260c08501518382015260e08501516060820152602086015260ff190112610a2c57613d40610120825193613d2b856128ee565b613d386101008201612d32565b855201612d32565b602083015282015290565b9190826040910312610a2c576020825192015190565b939492909160206040845194606060018060a01b0396878151168a5284810151858b0152878482015116848b015201516060890152606083820151805160808b01528481015160a08b01528381015160c08b0152015160e08901520151805115156101008801520151151561012086015261014085015216610160830152806101a080610180850152830152806101c093848401376000828201840152601f01601f1916010190565b15613e1157565b60405162461bcd60e51b8152602060048201526013602482015272084d2ce84c2dcce7440dcdee840cadcdeeaced606b1b6044820152606490fd5b6001600160a01b0316338103613e60575050565b6000818152602090600382526040918282203383528152848383205410613ec95783825260038152828220338352815282822054600101613ea2575050505050565b613ebd93825260038152828220903383525220918254612aa7565b90553880808080613929565b60649083519062461bcd60e51b82526004820152601460248201527313585c9ad95d0e881b9bdd08185c1c1c9bdd995960621b6044820152fd5b9081526001600160a01b0391821660208201529116604082015260608101919091526000608082015260a00190565b801561409f57602a546040805163d6d7d52560e01b81526001600160a01b03909216929190808280613f6660048201612d5c565b0381600080985af19182156140955784908593614073575b50156140245750670e27c49886e6000081101561401b57670d99a8cec7e2000081111561401257602d5490670d99a8cec7e1ffff198101908111613ffe5790668e1bc9bf040000613fd8613fdf93612b59602c5485612aa7565b0490612aa7565b9081613fea57505090565b620186a0925090613ffa91612a50565b0490565b634e487b7160e01b84526011600452602484fd5b505050602d5490565b505050602c5490565b5162461bcd60e51b8152602060048201526024808201527f42696742616e673a202061737365742773206f7261636c652063616c6c2066616044820152631a5b195960e21b6064820152608490fd5b90508161408d9293503d8411612f3c57612f2b8183612940565b919038613f7e565b81513d86823e3d90fd5b50600090565b60208101805190939291906001600160801b039081166140c6575090925050565b90816115cd816140e96140df6140f29686511688612a50565b828a511690612a79565b97511687612a50565b106140f957565b9061382d906134d1565b92909260018060a01b03928385169060009482865260209060178252604097888820548085116143ca575b50831561438e578361413f916143eb565b94838610156143525787988589526023845280892061415f888254612aa7565b905561416961375d565b9689858351614177816128ee565b828152015261418686896140a5565b9760018060801b038061419e818c16828551166143d2565b168252868201906141b4818a16828451166143d2565b9181831690528a9251169060018060801b03199060801b1617601455878b5260178652828b206141e5888254612aa7565b9055614216838a809d886009541690600e549084518096819582946311a5cc7760e31b84528d309160048601613f03565b03925af18015614348579061424393929161432c575b50614237888b612aa7565b80614309575b50612aa7565b8061427b575b507fc8e512d8f188ca059984b5853d2bf653da902696b8512785b182b2c813789a6e94959697989950519485521692a4565b8a9084600d541690813b15610fcf578351632770a7eb60e21b8152306004820152602481019190915291908290604490829084905af180156142ff577fc8e512d8f188ca059984b5853d2bf653da902696b8512785b182b2c813789a6e969798999a9b506142f0575b8a999897969550614249565b6142f9906128c5565b386142e4565b82513d8d823e3d90fd5b614326915061431f620186a091601a5490612a50565b048a612aa7565b3861423d565b61434290853d871161164c5761163a8183612940565b5061422c565b84513d8f823e3d90fd5b885162461bcd60e51b815260048101849052601560248201527442423a2072657061796d656e7420746f6f206c6f7760581b6044820152606490fd5b885162461bcd60e51b815260048101849052601560248201527453474c3a206e6f7468696e6720746f20726570617960581b6044820152606490fd5b93503861412e565b6001600160801b039182169082160391908211612a6357565b6001600160a01b0390811660008181526017602090815260408083205493959094929391928282146144f557848091600d541687518681019063313ce56760e01b82526004815261443b816128ee565b51915afa3d156144ed573d90614450826129aa565b9161445d88519384612940565b82523d868684013e5b806144e3575b156144d557838180518101031261223a579060ff61448e85614497940161334c565b16928391614504565b80156144cc5760239291612b1d612b686144bb938988528686528888205490612a50565b948352522054808211612bdf575090565b50505091505090565b506144979060ff601261448e565b508381511461446c565b606090614466565b50505060239192935052205490565b918215801561453f575b612beb5760018101809111612a635761452d92612b59612cac92612a99565b60058101809111612a6357600a900490565b50811561450e56feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae672a2646970667358221220c7deb7235e9f54a8e6e04aa952925a28656e8f828ba8927ff1e71014692abd0e64736f6c63430008120033"; type BBLeverageConstructorParams = | [signer?: Signer] diff --git a/src/typechain/tapioca-bar/factories/markets/bigBang/BBLiquidation__factory.ts b/src/typechain/tapioca-bar/factories/markets/bigBang/BBLiquidation__factory.ts index 786ebf46..50448fd7 100644 --- a/src/typechain/tapioca-bar/factories/markets/bigBang/BBLiquidation__factory.ts +++ b/src/typechain/tapioca-bar/factories/markets/bigBang/BBLiquidation__factory.ts @@ -60,6 +60,31 @@ const _abi = [ name: "ApprovalBorrow", type: "event", }, + { + anonymous: false, + inputs: [], + name: "AssetOracleDataUpdated", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "address", + name: "_oldVal", + type: "address", + }, + { + indexed: true, + internalType: "address", + name: "_newVal", + type: "address", + }, + ], + name: "AssetOracleUpdated", + type: "event", + }, { anonymous: false, inputs: [ @@ -279,25 +304,6 @@ const _abi = [ name: "LogBorrowCapUpdated", type: "event", }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "uint256", - name: "_oldVal", - type: "uint256", - }, - { - indexed: true, - internalType: "uint256", - name: "_newVal", - type: "uint256", - }, - ], - name: "LogBorrowingFee", - type: "event", - }, { anonymous: false, inputs: [ @@ -486,6 +492,37 @@ const _abi = [ name: "Transfer", type: "event", }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "uint256", + name: "oldMin", + type: "uint256", + }, + { + indexed: true, + internalType: "uint256", + name: "newMin", + type: "uint256", + }, + { + indexed: true, + internalType: "uint256", + name: "oldMax", + type: "uint256", + }, + { + indexed: false, + internalType: "uint256", + name: "newMax", + type: "uint256", + }, + ], + name: "UpdateMinMaxMintFee", + type: "event", + }, { inputs: [], name: "DOMAIN_SEPARATOR", @@ -647,27 +684,40 @@ const _abi = [ type: "function", }, { - inputs: [ + inputs: [], + name: "assetOracle", + outputs: [ { - internalType: "address", + internalType: "contract IOracle", name: "", type: "address", }, ], - name: "balanceOf", + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "assetOracleData", outputs: [ { - internalType: "uint256", + internalType: "bytes", name: "", - type: "uint256", + type: "bytes", }, ], stateMutability: "view", type: "function", }, { - inputs: [], - name: "borrowOpeningFee", + inputs: [ + { + internalType: "address", + name: "", + type: "address", + }, + ], + name: "balanceOf", outputs: [ { internalType: "uint256", @@ -1036,6 +1086,19 @@ const _abi = [ stateMutability: "view", type: "function", }, + { + inputs: [], + name: "maxMintFee", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, { inputs: [], name: "minDebtRate", @@ -1062,6 +1125,19 @@ const _abi = [ stateMutability: "view", type: "function", }, + { + inputs: [], + name: "minMintFee", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, { inputs: [ { @@ -1329,11 +1405,6 @@ const _abi = [ }, { inputs: [ - { - internalType: "uint256", - name: "_borrowOpeningFee", - type: "uint256", - }, { internalType: "contract IOracle", name: "_oracle", @@ -1618,7 +1689,7 @@ const _abi = [ ] as const; const _bytecode = - "0x6101408060405234620001895762000017816200018e565b600f81526001602082016e546170696f63612042696742616e6760881b8152602060405162000046816200018e565b8381520192603160f81b845251902091208160e052610100918183524660a0526040519160208301907f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f92838352604085015260608401524660808401523060a084015260a0835260c083019280841060018060401b03851117620001735760408490525190206080523060c052610120908152600580546001600160a01b0319163390811790915560007f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a362013880601b5562015f90601c55612710601d556032602055612ee06021556142be9283620001ab8439608051836135b0015260a0518361367b015260c0518361357a015260e051836135ff01525182613625015251816135dc0152f35b634e487b7160e01b600052604160045260246000fd5b600080fd5b604081019081106001600160401b03821117620001735760405256fe608080604052600436101561001357600080fd5b60e0600035811c918262a02a2014612b995750816302ce728f14612a3d578163078dfbe714612939578163095ea7b3146129135781630996efb7146124ae5781630c4e84f01461239457816318160ddd146123785781631c9e379b1461233e5781631da8bf10146122875781631fb8f81a1461226957816323b872dd146120c5578163331960ff146120a757816334ce998a1461207e57816334d441d0146120605781633644e5151461204557816337b6b7b91461202757816338d52e0f14611ffe5781633ba0b9a914611fe05781633f741adb14611fbc57816340626d8b14611f9e57816344de240a14611f80578163473e3ce714611f6257816348e4163e14611f285781634e71e0c814611e7a578163529898f214611e5c5781635793546214611e3e5781636b19ad1614611e205781636c3d8b8f14611df757816370a0823114611dbd5781637277854714611d8757816374645ff314611ca55781637dc0d1d014611c7c5781637ecebe0014611c425781637fa0b84e14611c115781638285ef4014611bdf57816387b2793714611ba55781638c5d0ed314611b875781638da5cb5b14611b5e578163910dd7c81461190e578163959916dc146118f157816399a97028146118ca5781639e15e89f14611881578163a28e6b82146113c4578163a9059cbb146112dd578163b0e21e8a146112bf578163b27c0e741461128e578163b7113f191461126b578163bb4cfe3b1461124d578163bde39c5d1461122f578163c1ad5c8d1461120c578163ce8849ed146111e3578163d505accf1461105e57508063d8dfeb4514611035578063dd62ed3e14610fe4578063de40657714610fbb578063e0996cb614610f9d578063e30c397814610f74578063e5644d8b14610344578063ea64dd5614610326578063eec0f42e14610308578063f791395d146102ea5763f8ba4cff146102ca57600080fd5b346102e55760003660031901126102e5576102e3613c2e565b005b600080fd5b346102e55760003660031901126102e5576020602854604051908152f35b346102e55760003660031901126102e5576020600c54604051908152f35b346102e55760003660031901126102e5576020601f54604051908152f35b346102e55760803660031901126102e5576004356001600160401b0381116102e557610374903690600401612e0a565b906024356001600160401b0381116102e557610394903690600401612e0a565b6044356001600160401b0381116102e5576103b3903690600401612e0a565b9290916064356001600160401b0381116102e5576103d5903690600401612e0a565b9490916004600052600760205260ff60406000205416610f3e578715610efe57808803610ec357610407828914613d84565b610412828714613d84565b600f546040805163d6d7d52560e01b8152959186906001600160a01b031681600081610440600482016132d8565b03925af19485156109fa57600090600096610e8f575b508581610e85575b5015610e7b57846011555b8415610e2b57610477613c2e565b60009860005b8181106104c6578a1561048c57005b60405162461bcd60e51b815260206004820152601260248201527110908e881b9bc81d5cd95c9cc8199bdd5b9960721b6044820152606490fd5b6104d181838c61414b565b356001600160a01b03811681036102e5576104ec888261415b565b15610501575b506104fc906138c3565b61047d565b9a61050b906138c3565b9a61051782868661414b565b359061052483888c61414b565b35906001600160a01b03821682036102e5578b8410156109b7578360051b890135601e198a3603018112156102e5578901926001600160401b038435116102e5578335360360208501136102e55761057c8b8361346d565b938b15610de65760018060a01b03600954166020600c5460018060a01b03861660005260188252606460406000205491604051948593849263442c159960e01b845260048401526024830152600060448301525afa9081156109fa578d90600092610db0575b506105f36105f89260225490612ec5565b612eee565b9360018060a01b038416600052601760205261061985604060002054612fa2565b80601d5480610d91575b5080851115610d8a575b6001600160a01b0386166000908152601760205260409020549081811115610d81575080965b1115610d48578d9381811115610d4157505b6001600160a01b0385166000908152601760205260409020549081811115610d3657506106928180612f1c565b6001600160a01b0386166000908152601760205260409020556106b3613b5b565b6020810180519091906001600160801b0316610d04575050602081965b60646106f66106ed60018060a01b036009541698600c5494612ec5565b60225490612eee565b916040519788938492638eb22cdd60e01b845260048401526024830152600060448301525afa9384156109fa57600094610cd0575b506001600160a01b0385166000908152601860205260409020548411610c8f5760018060a01b0385166000526018602052604060002061076c858254612f1c565b90558515610c5c576014805490916107b56001600160801b036107938a8216828616613d6b565b16926001600160801b0319926001600160801b0316908316841760801c613d6b565b60801b16179055601580548480821115610c52576107d291612f1c565b905b5560018060a01b0360095416906020600e54606460405180958193638eb22cdd60e01b835260048301528a6024830152600160448301525afa9182156109fa57600092610c1c575b5061083261083992933690602081359101612dd3565b9084613de1565b50818110610bd75781811115610bc35761086561085d61086d93620186a093612f1c565b965b87612ec5565b048095612f1c565b9184610a3f575b600d5460095460405163095ea7b360e01b81526001600160a01b039182166004820152600060248201819052909260209284926044928492165af180156109fa57610a06575b50600d546001600160a01b0316803b156102e557604051632770a7eb60e21b815230600482015260248101869052906000908290604490829084905af180156109fa576109cd575b506040519061091082612d05565b60018252602036818401378151156109b7576001600160a01b03166020820190815260405191518291906000905b808210610995575050508190039020604080519384526020840194909452928201526104fc9392919033907f85b91d472e69b2cfe848ed50eb5d8582ae96c22057b6e46250255dd6f6c3519290606090a4906104f2565b82516001600160a01b031684526020938401939092019160019091019061093e565b634e487b7160e01b600052603260045260246000fd5b6001600160401b0381116109e45760405238610902565b634e487b7160e01b600052604160045260246000fd5b6040513d6000823e3d90fd5b6020813d602011610a37575b81610a1f60209383612d57565b810103126102e557610a30906132ae565b50386108ba565b3d9150610a12565b600d5460095460405163095ea7b360e01b81526001600160a01b039182166004820152600060248201819052909260209284926044928492165af180156109fa57610b8a575b50600d5460095460405163095ea7b360e01b81526001600160a01b03918216600482015260001960248201529160209183916044918391600091165af180156109fa57610b51575b506000604060018060a01b036009541660a4600e5483519485938492634d4d7cbd60e11b845260048401523060248401523360448401528160648401528b60848401525af180156109fa57610b23575b50610874565b610b449060403d604011610b4a575b610b3c8183612d57565b810190613dcb565b50610b1d565b503d610b32565b6020813d602011610b82575b81610b6a60209383612d57565b810103126102e557610b7b906132ae565b5038610acd565b3d9150610b5d565b6020813d602011610bbb575b81610ba360209383612d57565b810103126102e557610bb4906132ae565b5038610a85565b3d9150610b96565b505061086d620186a061086560009661085f565b60405162461bcd60e51b815260206004820152601f60248201527f42696742616e673a20617373657420616d6f756e74206e6f742076616c6964006044820152606490fd5b91506020823d602011610c4a575b81610c3760209383612d57565b810103126102e55790519061083261081c565b3d9150610c2a565b50506000906107d4565b60405162461bcd60e51b815260206004820152600b60248201526a10908e881cdbdb1d995b9d60aa1b6044820152606490fd5b60405162461bcd60e51b815260206004820152601960248201527810908e881b9bdd08195b9bdd59da0818dbdb1b185d195c985b603a1b6044820152606490fd5b9093506020813d602011610cfc575b81610cec60209383612d57565b810103126102e55751923861072b565b3d9150610cdf565b51602091610d3091610d1f906001600160801b031685612ec5565b90516001600160801b031690612eee565b966106d0565b610692908092612f1c565b9050610665565b60405162461bcd60e51b8152602060048201526011602482015270109a59d0985b99ce88189859081919589d607a1b6044820152606490fd5b90508096610653565b508361062d565b90620186a0610da3610daa9383612ec5565b0490612f29565b38610623565b9150506020813d602011610dde575b81610dcc60209383612d57565b810103126102e557518c6105f36105e2565b3d9150610dbf565b60405162461bcd60e51b815260206004820152601f60248201527f42696742616e673a2065786368616e676552617465206e6f742076616c6964006044820152606490fd5b60405162461bcd60e51b815260206004820152602260248201527f42423a2063757272656e742065786368616e676552617465206e6f742076616c6044820152611a5960f21b6064820152608490fd5b6011549450610469565b905015158a61045e565b9050610eb491955060403d604011610ebc575b610eac8183612d57565b8101906132bb565b94908a610456565b503d610ea2565b60405162461bcd60e51b8152602060048201526013602482015272084847440d8cadccee8d040dad2e6dac2e8c6d606b1b6044820152606490fd5b60405162461bcd60e51b815260206004820152601860248201527742423a206e6f7468696e6720746f206c697175696461746560401b6044820152606490fd5b60405162461bcd60e51b815260206004820152600e60248201526d13585c9ad95d0e881c185d5cd95960921b6044820152606490fd5b346102e55760003660031901126102e5576006546040516001600160a01b039091168152602090f35b346102e55760003660031901126102e5576020601d54604051908152f35b346102e55760003660031901126102e5576009546040516001600160a01b039091168152602090f35b346102e55760403660031901126102e557610ffd612be5565b611005612bfb565b9060018060a01b038091166000526002602052604060002091166000526020526020604060002054604051908152f35b346102e55760003660031901126102e557600b546040516001600160a01b039091168152602090f35b346102e55761106c36612c4d565b8394969793929192421161119e5761114a926111429260018060a01b0395868b16978860005260046020526040600020918254926110a9846138c3565b90556040519160208301937f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e2668552600060408501528b60608501528a8d1660808501528d60a085015260c084015281830152815261110681612d20565b519020611111613577565b9060405190602082019261190160f01b8452602283015260428201526042815261113a81612d3c565b51902061383e565b91909161373f565b1603611159576102e392613920565b60405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152606490fd5b60405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b346102e55760003660031901126102e5576008546040516001600160a01b039091168152602090f35b346102e55760003660031901126102e5576020611227613977565b604051908152f35b346102e55760003660031901126102e5576020602954604051908152f35b346102e55760003660031901126102e5576020601e54604051908152f35b346102e55760003660031901126102e557602060ff602654166040519015158152f35b346102e55760003660031901126102e55760406025548151906001600160401b03908181168352831c166020820152f35b346102e55760003660031901126102e5576020601a54604051908152f35b346102e55760403660031901126102e5576112f6612be5565b6024359081158015906113b2575b61133a575b6040519182526001600160a01b031690339060008051602061426983398151915290602090a3602060405160018152f35b336000526001602052604060002054611355838210156136a1565b6001600160a01b038216908333839003611372575b505050611309565b611386916113818415156136e6565b612f1c565b33600052600160205260406000205560005260406000206113a8838254612f29565b905582808361136a565b50336001600160a01b03821614611304565b346102e55760803660031901126102e5576113dd612be5565b6113e5612bfb565b604435916001600160a01b03919082841684036102e5576064356001600160401b0381116102e55761141b903690600401612c20565b94909161142d85600554163314612e3a565b600f546040805163d6d7d52560e01b8152918290881681600081611453600482016132d8565b03925af19081156109fa5760009060009261185f575b508181611855575b501561184c57806011555b156117f757849061148b613c2e565b169182600052602095601787526114b1604060002054620186a0610da360215483612ec5565b8787600954169160646114cd6106ed600c549360115490612ec5565b916040519485938492638eb22cdd60e01b845260048401526024830152600060448301525afa9081156109fa576000916117ca575b50846000526018885260406000205411611787578585600061166f61167d611634898d9961162e869a879a60188e868b5281815260408b2054966115fb611547613b5b565b828e52601784526115d66115ad8f60409020549260008760405161156a81612d05565b82815201528681019360018060801b03928382818094868a838151161560001461173a575050816115a0915b1682885116613d6b565b1685521682875116613d6b565b169384905251601480546001600160801b0319166001600160801b039390921692909216179055565b601480546001600160801b031660809290921b6001600160801b031916919091179055565b808c52601782528b604081205582825261161b60408d2054601554612f1c565b6015558b52528860408120553691612dd3565b91613de1565b600d5460405163a9059cbb60e01b8c82019081526001600160a01b039098166024820152604481019290925290961695928391506064820190565b03601f198101835282612d57565b51925af13d15611733573d61169181612db8565b9061169f6040519283612d57565b81523d60008483013e5b816116fb575b50156116b757005b6064906040519062461bcd60e51b82526004820152601c60248201527f426f72696e6745524332303a205472616e73666572206661696c6564000000006044820152fd5b80915051828115918215611714575b50509050826116af565b83809293500103126102e5578161172b91016132ae565b80828461170a565b60606116a9565b6115a09261177361176986611760611756828098511686612ec5565b8287511690612eee565b94511684612ec5565b848c511690612eee565b101561159657611782906138c3565b611596565b6064876040519062461bcd60e51b825280600483015260248201527f42696742616e673a2043616e6e6f7420666f726365206c6971756964617465646044820152fd5b90508781813d83116117f0575b6117e18183612d57565b810103126102e5575188611502565b503d6117d7565b60405162461bcd60e51b815260206004820152602760248201527f42696742616e673a2063757272656e742065786368616e676552617465206e6f6044820152661d081d985b1a5960ca1b6064820152608490fd5b5060115461147c565b9050151588611471565b905061187a915060403d604011610ebc57610eac8183612d57565b9088611469565b346102e55760403660031901126102e5576118c66118a96118a0612be5565b60243590613165565b604080519384526020840192909252908201529081906060820190565b0390f35b346102e55760403660031901126102e55760206112276118e8612be5565b6024359061346d565b346102e55760003660031901126102e55760208054604051908152f35b346102e55760403660031901126102e5576004356001600160401b0381116102e557366023820112156102e55761194f903690602481600401359101612dd3565b9060243561ffff81168091036102e5576101009182848051810103126102e557602061197c8186016132ae565b916119896040870161372b565b906119966060880161372b565b9660808101519660a08201519260c08301519160ff831683036102e557838201519301516001600160a01b039586169a861698909490428210611b19579289888d989794611a909794611142978f8e600014611af2577f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e266955b8d60005260048652604060002092835493611a29856138c3565b905560405196870197885260408701528d6060870152608086015260a085015260c0840152818301528152611a5d81612d20565b519020611a68613577565b90604051908a82019261190160f01b8452602283015260428201526042815261113a81612d3c565b1603611aae575015611aa5576102e392613920565b6102e3926138d2565b6064906040519062461bcd60e51b82526004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152fd5b7f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d695611a0f565b60405162461bcd60e51b815260048101899052601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b346102e55760003660031901126102e5576005546040516001600160a01b039091168152602090f35b346102e55760003660031901126102e5576020601b54604051908152f35b346102e55760203660031901126102e5576001600160a01b03611bc6612be5565b1660005260246020526020604060002054604051908152f35b346102e55760003660031901126102e557601454604080516001600160801b038316815260809290921c602083015290f35b346102e55760403660031901126102e557611c37611c2d612be5565b60243590336138d2565b602060405160018152f35b346102e55760203660031901126102e5576001600160a01b03611c63612be5565b1660005260046020526020604060002054604051908152f35b346102e55760003660031901126102e557600f546040516001600160a01b039091168152602090f35b346102e55760003660031901126102e557604051600090601054611cc881612ccb565b808352600191808316908115611d5f5750600114611d05575b6118c683611cf181870382612d57565b604051918291602083526020830190612d78565b6010600090815260209450917f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae6725b828410611d4c57505050810190910190611cf181611ce1565b8054858501870152928501928101611d33565b6118c69550611cf193506020915091849260ff191682840152151560051b8201019350611ce1565b346102e55760203660031901126102e55760043560098110156102e55760ff611db1602092612c9c565b54166040519015158152f35b346102e55760203660031901126102e5576001600160a01b03611dde612be5565b1660005260016020526020604060002054604051908152f35b346102e55760003660031901126102e557600a546040516001600160a01b039091168152602090f35b346102e55760003660031901126102e5576020602754604051908152f35b346102e55760003660031901126102e5576020601c54604051908152f35b346102e55760003660031901126102e5576020602154604051908152f35b346102e55760003660031901126102e5576006546001600160a01b039081811633819003611ee457806005549384167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a36001600160a01b03199283161760055516600655005b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b346102e55760203660031901126102e5576001600160a01b03611f49612be5565b1660005260176020526020604060002054604051908152f35b346102e55760003660031901126102e5576020601554604051908152f35b346102e55760003660031901126102e5576020600e54604051908152f35b346102e55760003660031901126102e5576020601654604051908152f35b346102e55760603660031901126102e557602061122760443560243560043561309e565b346102e55760003660031901126102e5576020601154604051908152f35b346102e55760003660031901126102e557600d546040516001600160a01b039091168152602090f35b346102e55760003660031901126102e5576020601254604051908152f35b346102e55760003660031901126102e5576020611227613577565b346102e55760003660031901126102e5576020601954604051908152f35b346102e55760003660031901126102e5576014546040516001600160801b039091168152602090f35b346102e55760003660031901126102e5576020601354604051908152f35b346102e55760603660031901126102e5576120de612be5565b6120e6612bfb565b6044359081612123575b6040519182526001600160a01b0390811692169060008051602061426983398151915290602090a3602060405160018152f35b60018060a01b0380841680600052602060018152846040600020549361214b828610156136a1565b851693848403612160575b50505050506120f0565b8360005260028352604060002033600052835260406000205460001981036121d4575b5084926121ab60008051602061426983398151915297959360019361138160209915156136e6565b926000525260406000205560005260406000206121c9858254612f29565b905591858481612156565b9091811061222957602094926121ab8860008051602061426983398151915298969461220282600196612f1c565b86600052600285526040600020336000528552604060002055935093959750509294612183565b60405162461bcd60e51b815260048101849052601860248201527745524332303a20616c6c6f77616e636520746f6f206c6f7760401b6044820152606490fd5b346102e55760003660031901126102e5576020602a54604051908152f35b346102e55761229536612c4d565b8394969793929192421161119e5761232f926111429260018060a01b0395868b16978860005260046020526040600020918254926122d2846138c3565b90556040519160208301937f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d68552600060408501528b60608501528a8d1660808501528d60a085015260c084015281830152815261110681612d20565b1603611159576102e3926138d2565b346102e55760203660031901126102e5576001600160a01b0361235f612be5565b1660005260186020526020604060002054604051908152f35b346102e55760003660031901126102e557602060405160008152f35b346102e55760403660031901126102e55760043560098110156102e5576123b9612c11565b6008549091906001600160a01b031633036124725760ff6123d982612c9c565b5416151591151591821461243857808260ff6123f761242694612c9c565b54161515827feeec81de25875ce1725479bb76f720a8defdb43dea041919ae37bb4aae9847c0600080a4612c9c565b9060ff80198354169116179055600080f35b60405162461bcd60e51b81526020600482015260126024820152714d61726b65743a2073616d6520737461746560701b6044820152606490fd5b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881d5b985d5d1a1bdc9a5e995960621b6044820152606490fd5b346102e5576101803660031901126102e5576001600160a01b03602435818116908190036102e5576001600160401b03916044358381116102e5576124f7903690600401612c20565b6064358084169392908490036102e55761251683600554163314612e3a565b60043595620186a09561252b87891115612e85565b6020978089547fc353b09af857951dccce61b43a5854fc45beceed36c50e5d4cc2e71858a8e0df600080a38855806128d4575b508261279a575b50505081612759575b505060843580612744575b5060a4358061272f575b5060c4358061271b575b5060e435806126fa575b5061010435806126d9575b5061012435806126a7575b50610144359081612635575b50506101643590816125c757005b601e5482106125d65750601f55005b6084906040519062461bcd60e51b82526004820152603260248201527f4d61726b65743a206c69717569646174696f6e436f6c6c61746572616c697a616044820152711d1a5bdb94985d19481d1bdbc81cdb585b1b60721b6064820152fd5b61264190821115612e85565b601f54811161265457601e5581806125b9565b60405162461bcd60e51b815260048101839052602560248201527f4d61726b65743a20636f6c6c61746572616c697a6174696f6e5261746520746f6044820152646f2062696760d81b6064820152608490fd5b806016547fae6e0ab3b95f0a53ff9660a390ccedcbbf1f2355dce974a9841af106fddcfaba600080a3601655826125ad565b6126e4828210612e85565b6126f1601b548211612e85565b601c55826125a2565b612705828210612e85565b612712601c548210612e85565b601b5582612597565b612726828210612e85565b601d558261258d565b61273b82821115612e85565b601a5582612583565b61275082821115612e85565b60195582612579565b816008549182167f5a62d22209e370e38eea92cfddcd228e656e6ec139243392a760a7769f5877fd600080a36001600160a01b03191617600855828061256e565b82116109e45781906127ad601054612ccb565b601f8111612887575b50600090601f831160011461281b57600092612810575b50508160011b916000199060031b1c1916176010555b7fa6f004921c944d4b8bf6e38462b00f36a58d62495d56b51f571ab78f732c9815600080a1848080612565565b0135905086806127cd565b909250601060005286600020906000935b88601f198516861061287157506001945083601f19811610612857575b505050811b016010556127e3565b0135600019600384901b60f8161c19169055868080612849565b828201358455948501946001909301920161282c565b909150601060005286600020601f840160051c81018885106128cd575b90601f8594930160051c01905b8181106128be57506127b6565b600081558493506001016128b1565b50806128a4565b600f80546001600160a01b0319169190911790557f0b2d6eb667d0522c3eb86e4288afecae6c11591ffd1345d4d12407e0598bca9b600080a18761255e565b346102e55760403660031901126102e557611c3761292f612be5565b6024359033613920565b346102e55760603660031901126102e557612952612be5565b61295a612c11565b6044359081151582036102e55760018060a01b0392839161298083600554163314612e3a565b15612a24571690811590811591612a1c575b50156129df57806005549283167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a36001600160a01b031991821617600555600680549091169055005b60405162461bcd60e51b81526020600482015260156024820152744f776e61626c653a207a65726f206164647265737360581b6044820152606490fd5b905083612992565b9150501660018060a01b03196006541617600655600080f35b346102e55760003660031901126102e557600f546040805163d6d7d52560e01b81529182906001600160a01b031681600081612a7b600482016132d8565b03925af180156109fa57600091600091612b78575b50908015612b1a578115612ade5781604092601155807f9f9192b5edb17356c524e08d9e025c8e2f6307e6ea52fb7968faa3081f51c3c8600080a25b42601355825191151582526020820152f35b60405162461bcd60e51b81526020600482015260146024820152734d61726b65743a20696e76616c6964207261746560601b6044820152606490fd5b9050612b2b60135460125490612f29565b4211612b3c57604090601154612acc565b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881c985d19481d1bdbc81bdb1960621b6044820152606490fd5b9050612b93915060403d604011610ebc57610eac8183612d57565b82612a90565b346102e55760403660031901126102e557602090612bb5612be5565b612bbd612bfb565b9060018060a01b03809116600052600384526040600020911660005282526040600020548152f35b600435906001600160a01b03821682036102e557565b602435906001600160a01b03821682036102e557565b6024359081151582036102e557565b9181601f840112156102e5578235916001600160401b0383116102e557602083818601950101116102e557565b60e09060031901126102e5576001600160a01b039060043582811681036102e5579160243590811681036102e55790604435906064359060843560ff811681036102e5579060a4359060c43590565b6009811015612cb5576000526007602052604060002090565b634e487b7160e01b600052602160045260246000fd5b90600182811c92168015612cfb575b6020831014612ce557565b634e487b7160e01b600052602260045260246000fd5b91607f1691612cda565b604081019081106001600160401b038211176109e457604052565b61010081019081106001600160401b038211176109e457604052565b608081019081106001600160401b038211176109e457604052565b90601f801991011681019081106001600160401b038211176109e457604052565b919082519283825260005b848110612da4575050826000602080949584010152601f8019910116010190565b602081830181015184830182015201612d83565b6001600160401b0381116109e457601f01601f191660200190565b929192612ddf82612db8565b91612ded6040519384612d57565b8294818452818301116102e5578281602093846000960137010152565b9181601f840112156102e5578235916001600160401b0383116102e5576020808501948460051b0101116102e557565b15612e4157565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b15612e8c57565b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881b9bdd081d985b1a59607a1b6044820152606490fd5b81810292918115918404141715612ed857565b634e487b7160e01b600052601160045260246000fd5b8115612ef8570490565b634e487b7160e01b600052601260045260246000fd5b604d8111612ed857600a0a90565b91908203918211612ed857565b91908201809211612ed857565b81810392916000138015828513169184121617612ed857565b906509184e72a00091828102928184051490151715612ed857565b90670de0b6b3a764000091828102928184051490151715612ed857565b8115612ef857600160ff1b8114600019831416612ed8570590565b601454612fdd91612fcc9190612fc2906001600160801b03831690612ec5565b9060801c90612eee565b91620186a0918291601f5490612ec5565b0480831061309657612fef9083612f1c565b601e54602154830190818411612ed857839161300a91612ec5565b0491828103906000809412818312811691831390151617613082579061303b61303561304093612f4f565b91612f6a565b612f87565b908082121561307b57600160ff1b82146130675703905b808211613062575090565b905090565b634e487b7160e01b81526011600452602490fd5b5090613057565b634e487b7160e01b83526011600452602483fd5b505050600090565b6014549192916130dd916130ce916130c491612fc2906001600160801b03831690612ec5565b93601f5490612ec5565b6130d783612f0e565b90612eee565b908183106130965761303b6130356131376130fb61313c9587612f1c565b9361313261312c613123601e5461311d61311486612f0e565b60215490612f29565b90612ec5565b6130d784612f0e565b91612f0e565b612f36565b612f4f565b600081121561315f57600160ff1b8114612ed85760000390808211613062575090565b90613057565b6001600160a01b039081166000818152601760209081526040822054929594939192909181156132a157613197613b9a565b906131a3861515613373565b6009541683600c54898752601882526064604088205491604051948593849263442c159960e01b8452600484015260248301528960448301525afa908115613296578591613263575b509285949261324360189361321e613257996105f361321560409a620186a06022540490612ec5565b601e5490612ec5565b815190936001600160801b0391869161323991841690612ec5565b9201511690612eee565b81811061325b57035b9783525220546133bf565b9091565b50508261324c565b90508381813d831161328f575b61327a8183612d57565b8101031261328b57516132576131ec565b8480fd5b503d613270565b6040513d87823e3d90fd5b5050509192505080918190565b519081151582036102e557565b91908260409103126102e55760206132d2836132ae565b92015190565b6020808252600091601054916132ed83612ccb565b92838284015260019081811690816000146133505750600114613312575b5050505090565b929350601060005280600020926000935b85851061333c575050506040925001013880808061330b565b805485850160400152938201938101613323565b925050506040935060ff929192191683830152151560051b01013880808061330b565b1561337a57565b60405162461bcd60e51b815260206004820152601e60248201527f4d61726b65743a2065786368616e676552617465206e6f742076616c696400006044820152606490fd5b6133ca821515613373565b602060018060a01b0360095416916064600c54604051948593849263442c159960e01b845260048401526024830152600060448301525afa9081156109fa57600091613437575b50906105f36134239260225490612ec5565b620186a0613433601e5483612ec5565b0491565b906020823d8211613465575b8161345060209383612d57565b810103126134625750516105f3613411565b80fd5b3d9150613443565b6001600160a01b03166000818152601860205260408120549092613490916133bf565b918352601760205260408320548015613571578115613571578181106135715782811015613567576014546134d991839161138191612fc2906001600160801b03831690612ec5565b90620186a09283830292808404851490151715613553576134fe92916130d791612f1c565b91601b5491601c54936135118585612f36565b80820291848212600160ff1b82141661355357818305149015171561308257058184820194851291129080158216911516176130675750808212613062575090565b634e487b7160e01b85526011600452602485fd5b50505050601b5490565b50505090565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03161480613678575b156135d2577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f000000000000000000000000000000000000000000000000000000000000000082527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a0815260c081018181106001600160401b038211176109e45760405251902090565b507f000000000000000000000000000000000000000000000000000000000000000046146135a9565b156136a857565b60405162461bcd60e51b815260206004820152601660248201527545524332303a2062616c616e636520746f6f206c6f7760501b6044820152606490fd5b156136ed57565b60405162461bcd60e51b815260206004820152601660248201527545524332303a206e6f207a65726f206164647265737360501b6044820152606490fd5b51906001600160a01b03821682036102e557565b6005811015612cb557806137505750565b600181036137985760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b6044820152606490fd5b600281036137e55760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606490fd5b6003146137ee57565b60405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608490fd5b9291906fa2a8918ca85bafe22016d0b997e4df60600160ff1b0383116138b75791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa156138aa5781516001600160a01b038116156138a4579190565b50600190565b50604051903d90823e3d90fd5b50505050600090600390565b6000198114612ed85760010190565b7fe50de2333c10a9502fcb1d8ae13a51bbf423153dfc63c2b8997665b32154afc360018060a01b038092169160009083825260036020526040822094169384825260205284604082205580a4565b909160207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259160018060a01b03809416938460005260028352604060002095169485600052825280604060002055604051908152a3565b60ff60265416613af5576014546001600160801b0316908115613aee57600a54604051631848f2bf60e31b8152602093916001600160a01b03919085908290600490829086165afa80156109fa578591600091613ab1575b50600460405180948193631a674cc560e11b8352165afa9384156109fa57600094613a7e575b5050613a119192670de0b6b3a764000092839160295490612ec5565b049081811015613a7557613a28602a548092612f1c565b83810290808204851490151715612ed8576130d7613a4992613a6994612f1c565b60275492613a6360285492613a5e8487612f1c565b612ec5565b04612f29565b90808211613062575090565b50505060275490565b81813d8311613aaa575b613a928183612d57565b81010312613aa657519250613a11386139f5565b8380fd5b503d613a88565b909181813d8311613ae7575b613ac78183612d57565b81010312613ae3575190828216820361346257508490386139cf565b5080fd5b503d613abd565b6028549150565b600a5460405163e6abad4960e01b815290602090829060049082906001600160a01b03165afa9081156109fa57600091613b2d575090565b906020823d8211613b53575b81613b4660209383612d57565b8101031261346257505190565b3d9150613b39565b60405190613b6882612d05565b6014546001600160801b038116835260801c6020830152565b6001600160801b039182169082160191908211612ed857565b60006020604051613baa81612d05565b82815201526001600160401b0390613bc98260255460401c1642612f1c565b918215613c2057613c1b613a5e91670de0b6b3a7640000613c10613beb613b5b565b9660018060801b03958694858a5116906301e13380613c08613977565b041690612ec5565b041682855116613b81565b168252565b509050613c2b613b5b565b90565b604051613c3a81612d05565b602554906001600160401b038281809416835260401c1691613c63602083019380855242612f1c565b918215613d6557816301e13380613c78613977565b041681528142168452613d16613c8c613b5b565b936020670de0b6b3a7640000613cb460018060801b0393613a5e858a51168989511690612ec5565b0495613cee83613cc9818a1682855116613b81565b16808352601480546001600160801b0319166001600160801b03909216919091179055565b0151601480546001600160801b03169290911660801b6001600160801b031916919091179055565b51169182602554916001600160401b0360401b905160401b169160018060801b03191617176025557f7484db546dcd57af0104c73c8a6968dfbaf5767f047cee0dadd0499ad7df81a0600080a3565b50505050565b6001600160801b039182169082160391908211612ed857565b15613d8b57565b60405162461bcd60e51b8152602060048201526018602482015277084d2ce84c2dcce7440d8cadccee8d040dad2e6dac2e8c6d60431b6044820152606490fd5b91908260409103126102e5576020825192015190565b91909160018060a01b0392836009541690600c5460409485519063442c159960e01b82526004928084840152602496878401526000958660448501526020958685606481855afa94851561414157918b8b928a948598614103575b509060a4911694835194859384926311a5cc7760e31b84528b8401528d30908401528760448401528960648401528160848401525af180156140f9576140dd575b5088600d5416908851926370a0823160e01b94858552308786015287858b81875afa9485156140d35789888d948f948c97958f95859b614087575b5090613ef99291600b54169751998a9889978896635cd3dc1560e01b885233908801528601526044850152606484015260a0608484015260a4830190612d78565b03925af1801561407d57614045575b508388600d54169287895180958193825230888301525afa801561403b57859061400a575b613f379250612f1c565b958615613fbd5790606483926009541691600e54928989519889958694638eb22cdd60e01b86528501528301528660448301525afa938415613fb257508193613f81575b50505091565b9091809350813d8311613fab575b613f998183612d57565b81010312613462575051388080613f7b565b503d613f8f565b51913d9150823e3d90fd5b508360849286519262461bcd60e51b8452830152808201527f42696742616e673a206f6e436f6c6c61746572616c52656365697665722066616044820152631a5b195960e21b6064820152fd5b50908381813d8311614034575b6140218183612d57565b8101031261328b5790613f379151613f2d565b503d614017565b87513d87823e3d90fd5b8481813d8311614076575b61405a8183612d57565b810103126140725761406b906132ae565b5038613f08565b8580fd5b503d614050565b88513d88823e3d90fd5b96999a50509550959250505081813d83116140cc575b6140a78183612d57565b810103126140c85792898988613ef98f9897968f968d98519a909192613eb8565b8880fd5b503d61409d565b8b513d8b823e3d90fd5b6140f390893d8b11610b4a57610b3c8183612d57565b50613e7d565b89513d89823e3d90fd5b935096505091508681813d831161413a575b61411f8183612d57565b8101031261413657519387918a918c9060a4613e3c565b8780fd5b503d614115565b8a513d8a823e3d90fd5b91908110156109b75760051b0190565b919060018060a01b0380600094168452602060178152604085205490811561425e5760188152604086205480156142575781614195613b5b565b9460095416916064600c54604051948593849263442c159960e01b8452600484015260248301528b60448301525afa96871561424b578097614215575b50506132396141fa6141f1614210969798620186a06022540490612ec5565b601f5490612ec5565b95613a5e60018060801b03948587511690612ec5565b111590565b9096508187813d8311614244575b61422d8183612d57565b8101031261346257509451946132396141fa6141d2565b503d614223565b604051903d90823e3d90fd5b5050505050565b506001945050505056feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220523d90d7b87f7ccc4f9c69d66891d95c682aff7eb563a096c491db5ad22924cc64736f6c63430008120033"; + "0x61014080604052346200018a5762000017816200018f565b600f81526001602082016e546170696f63612042696742616e6760881b8152602060405162000046816200018f565b8381520192603160f81b845251902091208160e052610100918183524660a0526040519160208301907f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f92838352604085015260608401524660808401523060a084015260a0835260c083019280841060018060401b03851117620001745760408490525190206080523060c052610120908152600580546001600160a01b0319163390811790915560007f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a362013880601b5562015f90601c55612710601d55612ee06020556103e8602d556143b69283620001ac843960805183613688015260a05183613753015260c05183613652015260e051836136d7015251826136fd015251816136b40152f35b634e487b7160e01b600052604160045260246000fd5b600080fd5b604081019081106001600160401b03821117620001745760405256fe608080604052600436101561001357600080fd5b60e0600035811c918262a02a2014612c715750816302ce728f14612b15578163078dfbe714612a11578163095ea7b3146129eb5781630c4e84f0146128d157816318160ddd146128b55781631c9e379b1461287b5781631d4d3a5d146128525781631da8bf101461279b5781631fb8f81a1461277d57816323b872dd146125d9578163331960ff146125bb57816334ce998a1461259257816334d441d0146125745781633644e5151461255957816337b6b7b91461253b57816338d52e0f146125125781633ba0b9a9146124f45781633f741adb146124d057816340626d8b146124b257816344de240a14612494578163473e3ce71461247657816348e4163e1461243c5781634e71e0c81461238e578163529898f214612371578163542afda31461235357816357935462146123355781636b19ad16146123175781636c3d8b8f146122ee57816370a08231146122b4578163727785471461227e57816374645ff3146121eb57816374c9e481146121cd5781637dc0d1d0146121a45781637ecebe001461216a5781637fa0b84e146121395781638285ef401461210757816387b27937146120cd5781638c5d0ed3146120af5781638da5cb5b14612086578163910dd7c814611e36578163932bc4f814611d5457816399a9702814611d2d5781639e15e89f14611ce4578163a28e6b8214611828578163a9059cbb14611741578163b0e21e8a14611723578163b27c0e74146116f2578163b7113f19146116cf578163bb4cfe3b146116b1578163bde39c5d14611693578163c1ad5c8d14611670578163ce8849ed14611647578163d3fb2a3814611204578163d505accf1461107f57508063d8dfeb4514611056578063dd62ed3e14611005578063de40657714610fdc578063e0996cb614610fbe578063e30c397814610f95578063e5644d8b14610365578063ea64dd5614610347578063eec0f42e14610329578063f791395d1461030b5763f8ba4cff146102eb57600080fd5b3461030657600036600319011261030657610304613d06565b005b600080fd5b34610306576000366003190112610306576020602754604051908152f35b34610306576000366003190112610306576020600c54604051908152f35b34610306576000366003190112610306576020601f54604051908152f35b34610306576080366003190112610306576004356001600160401b03811161030657610395903690600401612ee2565b906024356001600160401b038111610306576103b5903690600401612ee2565b6044356001600160401b038111610306576103d4903690600401612ee2565b9290916064356001600160401b038111610306576103f6903690600401612ee2565b9490916004600052600760205260ff60406000205416610f5f578715610f1f57808803610ee457610428828914613e5c565b610433828714613e5c565b600f546040805163d6d7d52560e01b8152959186906001600160a01b031681600081610461600482016133b0565b03925af1948515610a1b57600090600096610eb0575b508581610ea6575b5015610e9c57846011555b8415610e4c57610498613d06565b60009860005b8181106104e7578a156104ad57005b60405162461bcd60e51b815260206004820152601260248201527110908e881b9bc81d5cd95c9cc8199bdd5b9960721b6044820152606490fd5b6104f281838c614223565b356001600160a01b03811681036103065761050d8882614233565b15610522575b5061051d9061399b565b61049e565b9a61052c9061399b565b9a610538828686614223565b359061054583888c614223565b35906001600160a01b0382168203610306578b8410156109d8578360051b890135601e198a360301811215610306578901926001600160401b03843511610306578335360360208501136103065761059d8b83613545565b938b15610e075760018060a01b03600954166020600c5460018060a01b03861660005260188252606460406000205491604051948593849263442c159960e01b845260048401526024830152600060448301525afa908115610a1b578d90600092610dd1575b506106146106199260215490612f9d565b612fc6565b9360018060a01b038416600052601760205261063a8560406000205461307a565b80601d5480610db2575b5080851115610dab575b6001600160a01b0386166000908152601760205260409020549081811115610da2575080965b1115610d69578d9381811115610d6257505b6001600160a01b0385166000908152601760205260409020549081811115610d5757506106b38180612ff4565b6001600160a01b0386166000908152601760205260409020556106d4613c33565b6020810180519091906001600160801b0316610d25575050602081965b606461071761070e60018060a01b036009541698600c5494612f9d565b60215490612fc6565b916040519788938492638eb22cdd60e01b845260048401526024830152600060448301525afa938415610a1b57600094610cf1575b506001600160a01b0385166000908152601860205260409020548411610cb05760018060a01b0385166000526018602052604060002061078d858254612ff4565b90558515610c7d576014805490916107d66001600160801b036107b48a8216828616613e43565b16926001600160801b0319926001600160801b0316908316841760801c613e43565b60801b16179055601580548480821115610c73576107f391612ff4565b905b5560018060a01b0360095416906020600e54606460405180958193638eb22cdd60e01b835260048301528a6024830152600160448301525afa918215610a1b57600092610c3d575b5061085361085a92933690602081359101612e7e565b9084613eb9565b50818110610bf85781811115610be45761088661087e61088e93620186a093612ff4565b965b87612f9d565b048095612ff4565b9184610a60575b600d5460095460405163095ea7b360e01b81526001600160a01b039182166004820152600060248201819052909260209284926044928492165af18015610a1b57610a27575b50600d546001600160a01b0316803b1561030657604051632770a7eb60e21b815230600482015260248101869052906000908290604490829084905af18015610a1b576109ee575b506040519061093182612db0565b60018252602036818401378151156109d8576001600160a01b03166020820190815260405191518291906000905b8082106109b65750505081900390206040805193845260208401949094529282015261051d9392919033907f85b91d472e69b2cfe848ed50eb5d8582ae96c22057b6e46250255dd6f6c3519290606090a490610513565b82516001600160a01b031684526020938401939092019160019091019061095f565b634e487b7160e01b600052603260045260246000fd5b6001600160401b038111610a055760405238610923565b634e487b7160e01b600052604160045260246000fd5b6040513d6000823e3d90fd5b6020813d602011610a58575b81610a4060209383612e02565b8101031261030657610a5190613386565b50386108db565b3d9150610a33565b600d5460095460405163095ea7b360e01b81526001600160a01b039182166004820152600060248201819052909260209284926044928492165af18015610a1b57610bab575b50600d5460095460405163095ea7b360e01b81526001600160a01b03918216600482015260001960248201529160209183916044918391600091165af18015610a1b57610b72575b506000604060018060a01b036009541660a4600e5483519485938492634d4d7cbd60e11b845260048401523060248401523360448401528160648401528b60848401525af18015610a1b57610b44575b50610895565b610b659060403d604011610b6b575b610b5d8183612e02565b810190613ea3565b50610b3e565b503d610b53565b6020813d602011610ba3575b81610b8b60209383612e02565b8101031261030657610b9c90613386565b5038610aee565b3d9150610b7e565b6020813d602011610bdc575b81610bc460209383612e02565b8101031261030657610bd590613386565b5038610aa6565b3d9150610bb7565b505061088e620186a0610886600096610880565b60405162461bcd60e51b815260206004820152601f60248201527f42696742616e673a20617373657420616d6f756e74206e6f742076616c6964006044820152606490fd5b91506020823d602011610c6b575b81610c5860209383612e02565b810103126103065790519061085361083d565b3d9150610c4b565b50506000906107f5565b60405162461bcd60e51b815260206004820152600b60248201526a10908e881cdbdb1d995b9d60aa1b6044820152606490fd5b60405162461bcd60e51b815260206004820152601960248201527810908e881b9bdd08195b9bdd59da0818dbdb1b185d195c985b603a1b6044820152606490fd5b9093506020813d602011610d1d575b81610d0d60209383612e02565b810103126103065751923861074c565b3d9150610d00565b51602091610d5191610d40906001600160801b031685612f9d565b90516001600160801b031690612fc6565b966106f1565b6106b3908092612ff4565b9050610686565b60405162461bcd60e51b8152602060048201526011602482015270109a59d0985b99ce88189859081919589d607a1b6044820152606490fd5b90508096610674565b508361064e565b90620186a0610dc4610dcb9383612f9d565b0490613001565b38610644565b9150506020813d602011610dff575b81610ded60209383612e02565b8101031261030657518c610614610603565b3d9150610de0565b60405162461bcd60e51b815260206004820152601f60248201527f42696742616e673a2065786368616e676552617465206e6f742076616c6964006044820152606490fd5b60405162461bcd60e51b815260206004820152602260248201527f42423a2063757272656e742065786368616e676552617465206e6f742076616c6044820152611a5960f21b6064820152608490fd5b601154945061048a565b905015158a61047f565b9050610ed591955060403d604011610edd575b610ecd8183612e02565b810190613393565b94908a610477565b503d610ec3565b60405162461bcd60e51b8152602060048201526013602482015272084847440d8cadccee8d040dad2e6dac2e8c6d606b1b6044820152606490fd5b60405162461bcd60e51b815260206004820152601860248201527742423a206e6f7468696e6720746f206c697175696461746560401b6044820152606490fd5b60405162461bcd60e51b815260206004820152600e60248201526d13585c9ad95d0e881c185d5cd95960921b6044820152606490fd5b34610306576000366003190112610306576006546040516001600160a01b039091168152602090f35b34610306576000366003190112610306576020601d54604051908152f35b34610306576000366003190112610306576009546040516001600160a01b039091168152602090f35b346103065760403660031901126103065761101e612cbd565b611026612cd3565b9060018060a01b038091166000526002602052604060002091166000526020526020604060002054604051908152f35b3461030657600036600319011261030657600b546040516001600160a01b039091168152602090f35b346103065761108d36612cf8565b839496979392919242116111bf5761116b926111639260018060a01b0395868b16978860005260046020526040600020918254926110ca8461399b565b90556040519160208301937f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e2668552600060408501528b60608501528a8d1660808501528d60a085015260c084015281830152815261112781612dcb565b51902061113261364f565b9060405190602082019261190160f01b8452602283015260428201526042815261115b81612de7565b519020613916565b919091613817565b160361117a57610304926139f8565b60405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152606490fd5b60405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b3461030657610160366003190112610306576001600160a01b0360043581811690819003610306576001600160401b03916024358381116103065761124d903690600401612eb5565b9093604435938385168095036103065761126c84600554163314612f12565b80611608575b50816114bd575b50509080925061147c575b505060643580611464575b506084358061144c575b5060a43580611435575b5060c43580611411575b5060e435806113ed575b5061010435806113bb575b506101243580611347575b5061014435806112d957005b601e5481106112e757601f55005b60405162461bcd60e51b815260206004820152603260248201527f4d61726b65743a206c69717569646174696f6e436f6c6c61746572616c697a616044820152711d1a5bdb94985d19481d1bdbc81cdb585b1b60721b6064820152608490fd5b611356620186a0821115612f5d565b601f54811161136857601e55806112cd565b60405162461bcd60e51b815260206004820152602560248201527f4d61726b65743a20636f6c6c61746572616c697a6174696f6e5261746520746f6044820152646f2062696760d81b6064820152608490fd5b806016547fae6e0ab3b95f0a53ff9660a390ccedcbbf1f2355dce974a9841af106fddcfaba600080a3601655806112c2565b6113fb620186a08210612f5d565b611408601b548211612f5d565b601c55806112b7565b61141f620186a08210612f5d565b61142c601c548210612f5d565b601b55806112ad565b611443620186a08210612f5d565b601d55806112a3565b61145b620186a0821115612f5d565b601a5580611299565b611473620186a0821115612f5d565b6019558061128f565b816008549182167f5a62d22209e370e38eea92cfddcd228e656e6ec139243392a760a7769f5877fd600080a36001600160a01b031916176008558080611284565b8111610a05576114ce601054612d76565b601f81116115b7575b506000601f82116001146115405781929394600092611535575b50508160011b916000199060031b1c1916176010555b7fa6f004921c944d4b8bf6e38462b00f36a58d62495d56b51f571ab78f732c9815600080a181908380611279565b0135905084806114f1565b60106000908152601f1983169560008051602061436183398151915292909160205b88821061159f57505083600195969710611585575b505050811b01601055611507565b0135600019600384901b60f8161c19169055848080611577565b80600184968294958701358155019501920190611562565b6010600052600080516020614361833981519152601f830160051c810160208410611601575b601f90920160051c01905b8181106115f557506114d7565b600081556001016115e8565b50806115dd565b600f80546001600160a01b0319169190911790557f0b2d6eb667d0522c3eb86e4288afecae6c11591ffd1345d4d12407e0598bca9b600080a185611272565b34610306576000366003190112610306576008546040516001600160a01b039091168152602090f35b3461030657600036600319011261030657602061168b613a4f565b604051908152f35b34610306576000366003190112610306576020602854604051908152f35b34610306576000366003190112610306576020601e54604051908152f35b3461030657600036600319011261030657602060ff602554166040519015158152f35b346103065760003660031901126103065760406024548151906001600160401b03908181168352831c166020820152f35b34610306576000366003190112610306576020601a54604051908152f35b346103065760403660031901126103065761175a612cbd565b602435908115801590611816575b61179e575b6040519182526001600160a01b031690339060008051602061434183398151915290602090a3602060405160018152f35b3360005260016020526040600020546117b983821015613779565b6001600160a01b0382169083338390036117d6575b50505061176d565b6117ea916117e58415156137be565b612ff4565b336000526001602052604060002055600052604060002061180c838254613001565b90558280836117ce565b50336001600160a01b03821614611768565b3461030657608036600319011261030657611841612cbd565b611849612cd3565b604435916001600160a01b0391908284168403610306576064356001600160401b0381116103065761187f903690600401612eb5565b94909161189185600554163314612f12565b600f546040805163d6d7d52560e01b81529182908816816000816118b7600482016133b0565b03925af1908115610a1b57600090600092611cc2575b508181611cb8575b5015611caf57806011555b15611c5a5784906118ef613d06565b16918260005260209560178752611914604060002054620186a0610dc48a5483612f9d565b87876009541691606461193061070e600c549360115490612f9d565b916040519485938492638eb22cdd60e01b845260048401526024830152600060448301525afa908115610a1b57600091611c2d575b50846000526018885260406000205411611bea5785856000611ad2611ae0611a97898d99611a91869a879a60188e868b5281815260408b205496611a5e6119aa613c33565b828e5260178452611a39611a108f6040902054926000876040516119cd81612db0565b82815201528681019360018060801b03928382818094868a8381511615600014611b9d57505081611a03915b1682885116613e43565b1685521682875116613e43565b169384905251601480546001600160801b0319166001600160801b039390921692909216179055565b601480546001600160801b031660809290921b6001600160801b031916919091179055565b808c52601782528b6040812055828252611a7e60408d2054601554612ff4565b6015558b52528860408120553691612e7e565b91613eb9565b600d5460405163a9059cbb60e01b8c82019081526001600160a01b039098166024820152604481019290925290961695928391506064820190565b03601f198101835282612e02565b51925af13d15611b96573d611af481612e63565b90611b026040519283612e02565b81523d60008483013e5b81611b5e575b5015611b1a57005b6064906040519062461bcd60e51b82526004820152601c60248201527f426f72696e6745524332303a205472616e73666572206661696c6564000000006044820152fd5b80915051828115918215611b77575b5050905082611b12565b83809293500103126103065781611b8e9101613386565b808284611b6d565b6060611b0c565b611a0392611bd6611bcc86611bc3611bb9828098511686612f9d565b8287511690612fc6565b94511684612f9d565b848c511690612fc6565b10156119f957611be59061399b565b6119f9565b6064876040519062461bcd60e51b825280600483015260248201527f42696742616e673a2043616e6e6f7420666f726365206c6971756964617465646044820152fd5b90508781813d8311611c53575b611c448183612e02565b81010312610306575188611965565b503d611c3a565b60405162461bcd60e51b815260206004820152602760248201527f42696742616e673a2063757272656e742065786368616e676552617465206e6f6044820152661d081d985b1a5960ca1b6064820152608490fd5b506011546118e0565b90501515886118d5565b9050611cdd915060403d604011610edd57610ecd8183612e02565b90886118cd565b3461030657604036600319011261030657611d29611d0c611d03612cbd565b6024359061323d565b604080519384526020840192909252908201529081906060820190565b0390f35b3461030657604036600319011261030657602061168b611d4b612cbd565b60243590613545565b3461030657600036600319011261030657604051600090602b54611d7781612d76565b808352600191808316908115611e0e5750600114611db4575b611d2983611da081870382612e02565b604051918291602083526020830190612e23565b602b600090815260209450917f11c44e4875b74d31ff9fd779bf2566af7bd15b87fc985d01f5094b89e3669e4f5b828410611dfb57505050810190910190611da081611d90565b8054858501870152928501928101611de2565b611d299550611da093506020915091849260ff191682840152151560051b8201019350611d90565b34610306576040366003190112610306576004356001600160401b038111610306573660238201121561030657611e77903690602481600401359101612e7e565b9060243561ffff811680910361030657610100918284805181010312610306576020611ea4818601613386565b91611eb160408701613803565b90611ebe60608801613803565b9660808101519660a08201519260c08301519160ff8316830361030657838201519301516001600160a01b039586169a861698909490428210612041579289888d989794611fb89794611163978f8e60001461201a577f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e266955b8d60005260048652604060002092835493611f518561399b565b905560405196870197885260408701528d6060870152608086015260a085015260c0840152818301528152611f8581612dcb565b519020611f9061364f565b90604051908a82019261190160f01b8452602283015260428201526042815261115b81612de7565b1603611fd6575015611fcd57610304926139f8565b610304926139aa565b6064906040519062461bcd60e51b82526004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152fd5b7f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d695611f37565b60405162461bcd60e51b815260048101899052601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b34610306576000366003190112610306576005546040516001600160a01b039091168152602090f35b34610306576000366003190112610306576020601b54604051908152f35b34610306576020366003190112610306576001600160a01b036120ee612cbd565b1660005260236020526020604060002054604051908152f35b3461030657600036600319011261030657601454604080516001600160801b038316815260809290921c602083015290f35b346103065760403660031901126103065761215f612155612cbd565b60243590336139aa565b602060405160018152f35b34610306576020366003190112610306576001600160a01b0361218b612cbd565b1660005260046020526020604060002054604051908152f35b3461030657600036600319011261030657600f546040516001600160a01b039091168152602090f35b34610306576000366003190112610306576020602d54604051908152f35b346103065760003660031901126103065760405160009060105461220e81612d76565b808352600191808316908115611e0e575060011461223657611d2983611da081870382612e02565b6010600090815260209450916000805160206143618339815191525b82841061226b57505050810190910190611da081611d90565b8054858501870152928501928101612252565b346103065760203660031901126103065760043560098110156103065760ff6122a8602092612d47565b54166040519015158152f35b34610306576020366003190112610306576001600160a01b036122d5612cbd565b1660005260016020526020604060002054604051908152f35b3461030657600036600319011261030657600a546040516001600160a01b039091168152602090f35b34610306576000366003190112610306576020602654604051908152f35b34610306576000366003190112610306576020601c54604051908152f35b34610306576000366003190112610306576020602c54604051908152f35b346103065760003660031901126103065760208054604051908152f35b34610306576000366003190112610306576006546001600160a01b0390818116338190036123f857806005549384167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a36001600160a01b03199283161760055516600655005b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b34610306576020366003190112610306576001600160a01b0361245d612cbd565b1660005260176020526020604060002054604051908152f35b34610306576000366003190112610306576020601554604051908152f35b34610306576000366003190112610306576020600e54604051908152f35b34610306576000366003190112610306576020601654604051908152f35b3461030657606036600319011261030657602061168b604435602435600435613176565b34610306576000366003190112610306576020601154604051908152f35b3461030657600036600319011261030657600d546040516001600160a01b039091168152602090f35b34610306576000366003190112610306576020601254604051908152f35b3461030657600036600319011261030657602061168b61364f565b34610306576000366003190112610306576020601954604051908152f35b34610306576000366003190112610306576014546040516001600160801b039091168152602090f35b34610306576000366003190112610306576020601354604051908152f35b34610306576060366003190112610306576125f2612cbd565b6125fa612cd3565b6044359081612637575b6040519182526001600160a01b0390811692169060008051602061434183398151915290602090a3602060405160018152f35b60018060a01b0380841680600052602060018152846040600020549361265f82861015613779565b851693848403612674575b5050505050612604565b8360005260028352604060002033600052835260406000205460001981036126e8575b5084926126bf6000805160206143418339815191529795936001936117e560209915156137be565b926000525260406000205560005260406000206126dd858254613001565b90559185848161266a565b9091811061273d57602094926126bf8860008051602061434183398151915298969461271682600196612ff4565b86600052600285526040600020336000528552604060002055935093959750509294612697565b60405162461bcd60e51b815260048101849052601860248201527745524332303a20616c6c6f77616e636520746f6f206c6f7760401b6044820152606490fd5b34610306576000366003190112610306576020602954604051908152f35b34610306576127a936612cf8565b839496979392919242116111bf57612843926111639260018060a01b0395868b16978860005260046020526040600020918254926127e68461399b565b90556040519160208301937f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d68552600060408501528b60608501528a8d1660808501528d60a085015260c084015281830152815261112781612dcb565b160361117a57610304926139aa565b3461030657600036600319011261030657602a546040516001600160a01b039091168152602090f35b34610306576020366003190112610306576001600160a01b0361289c612cbd565b1660005260186020526020604060002054604051908152f35b3461030657600036600319011261030657602060405160008152f35b34610306576040366003190112610306576004356009811015610306576128f6612ce9565b6008549091906001600160a01b031633036129af5760ff61291682612d47565b5416151591151591821461297557808260ff61293461296394612d47565b54161515827feeec81de25875ce1725479bb76f720a8defdb43dea041919ae37bb4aae9847c0600080a4612d47565b9060ff80198354169116179055600080f35b60405162461bcd60e51b81526020600482015260126024820152714d61726b65743a2073616d6520737461746560701b6044820152606490fd5b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881d5b985d5d1a1bdc9a5e995960621b6044820152606490fd5b346103065760403660031901126103065761215f612a07612cbd565b60243590336139f8565b3461030657606036600319011261030657612a2a612cbd565b612a32612ce9565b6044359081151582036103065760018060a01b03928391612a5883600554163314612f12565b15612afc571690811590811591612af4575b5015612ab757806005549283167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a36001600160a01b031991821617600555600680549091169055005b60405162461bcd60e51b81526020600482015260156024820152744f776e61626c653a207a65726f206164647265737360581b6044820152606490fd5b905083612a6a565b9150501660018060a01b03196006541617600655600080f35b3461030657600036600319011261030657600f546040805163d6d7d52560e01b81529182906001600160a01b031681600081612b53600482016133b0565b03925af18015610a1b57600091600091612c50575b50908015612bf2578115612bb65781604092601155807f9f9192b5edb17356c524e08d9e025c8e2f6307e6ea52fb7968faa3081f51c3c8600080a25b42601355825191151582526020820152f35b60405162461bcd60e51b81526020600482015260146024820152734d61726b65743a20696e76616c6964207261746560601b6044820152606490fd5b9050612c0360135460125490613001565b4211612c1457604090601154612ba4565b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881c985d19481d1bdbc81bdb1960621b6044820152606490fd5b9050612c6b915060403d604011610edd57610ecd8183612e02565b82612b68565b3461030657604036600319011261030657602090612c8d612cbd565b612c95612cd3565b9060018060a01b03809116600052600384526040600020911660005282526040600020548152f35b600435906001600160a01b038216820361030657565b602435906001600160a01b038216820361030657565b60243590811515820361030657565b60e0906003190112610306576001600160a01b03906004358281168103610306579160243590811681036103065790604435906064359060843560ff81168103610306579060a4359060c43590565b6009811015612d60576000526007602052604060002090565b634e487b7160e01b600052602160045260246000fd5b90600182811c92168015612da6575b6020831014612d9057565b634e487b7160e01b600052602260045260246000fd5b91607f1691612d85565b604081019081106001600160401b03821117610a0557604052565b61010081019081106001600160401b03821117610a0557604052565b608081019081106001600160401b03821117610a0557604052565b90601f801991011681019081106001600160401b03821117610a0557604052565b919082519283825260005b848110612e4f575050826000602080949584010152601f8019910116010190565b602081830181015184830182015201612e2e565b6001600160401b038111610a0557601f01601f191660200190565b929192612e8a82612e63565b91612e986040519384612e02565b829481845281830111610306578281602093846000960137010152565b9181601f84011215610306578235916001600160401b038311610306576020838186019501011161030657565b9181601f84011215610306578235916001600160401b038311610306576020808501948460051b01011161030657565b15612f1957565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b15612f6457565b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881b9bdd081d985b1a59607a1b6044820152606490fd5b81810292918115918404141715612fb057565b634e487b7160e01b600052601160045260246000fd5b8115612fd0570490565b634e487b7160e01b600052601260045260246000fd5b604d8111612fb057600a0a90565b91908203918211612fb057565b91908201809211612fb057565b81810392916000138015828513169184121617612fb057565b906509184e72a00091828102928184051490151715612fb057565b90670de0b6b3a764000091828102928184051490151715612fb057565b8115612fd057600160ff1b8114600019831416612fb0570590565b6014546130b5916130a4919061309a906001600160801b03831690612f9d565b9060801c90612fc6565b91620186a0918291601f5490612f9d565b0480831061316e576130c79083612ff4565b601e54602054830190818411612fb05783916130e291612f9d565b049182810390600080941281831281169183139015161761315a579061311361310d61311893613027565b91613042565b61305f565b908082121561315357600160ff1b821461313f5703905b80821161313a575090565b905090565b634e487b7160e01b81526011600452602490fd5b509061312f565b634e487b7160e01b83526011600452602483fd5b505050600090565b6014549192916131b5916131a69161319c9161309a906001600160801b03831690612f9d565b93601f5490612f9d565b6131af83612fe6565b90612fc6565b9081831061316e5761311361310d61320f6131d36132149587612ff4565b9361320a6132046131fb601e546131f56131ec86612fe6565b60205490613001565b90612f9d565b6131af84612fe6565b91612fe6565b61300e565b613027565b600081121561323757600160ff1b8114612fb0576000039080821161313a575090565b9061312f565b6001600160a01b039081166000818152601760209081526040822054929594939192909181156133795761326f613c72565b9061327b86151561344b565b6009541683600c54898752601882526064604088205491604051948593849263442c159960e01b8452600484015260248301528960448301525afa90811561336e57859161333b575b509285949261331b6018936132f661332f996106146132ed60409a620186a06021540490612f9d565b601e5490612f9d565b815190936001600160801b0391869161331191841690612f9d565b9201511690612fc6565b81811061333357035b978352522054613497565b9091565b505082613324565b90508381813d8311613367575b6133528183612e02565b81010312613363575161332f6132c4565b8480fd5b503d613348565b6040513d87823e3d90fd5b5050509192505080918190565b5190811515820361030657565b91908260409103126103065760206133aa83613386565b92015190565b6020808252600091601054916133c583612d76565b928382840152600190818116908160001461342857506001146133ea575b5050505090565b929350601060005280600020926000935b85851061341457505050604092500101388080806133e3565b8054858501604001529382019381016133fb565b925050506040935060ff929192191683830152151560051b0101388080806133e3565b1561345257565b60405162461bcd60e51b815260206004820152601e60248201527f4d61726b65743a2065786368616e676552617465206e6f742076616c696400006044820152606490fd5b6134a282151561344b565b602060018060a01b0360095416916064600c54604051948593849263442c159960e01b845260048401526024830152600060448301525afa908115610a1b5760009161350f575b50906106146134fb9260215490612f9d565b620186a061350b601e5483612f9d565b0491565b906020823d821161353d575b8161352860209383612e02565b8101031261353a5750516106146134e9565b80fd5b3d915061351b565b6001600160a01b0316600081815260186020526040812054909261356891613497565b91835260176020526040832054801561364957811561364957818110613649578281101561363f576014546135b19183916117e59161309a906001600160801b03831690612f9d565b90620186a0928383029280840485149015171561362b576135d692916131af91612ff4565b91601b5491601c54936135e9858561300e565b80820291848212600160ff1b82141661362b57818305149015171561315a570581848201948512911290801582169115161761313f575080821261313a575090565b634e487b7160e01b85526011600452602485fd5b50505050601b5490565b50505090565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03161480613750575b156136aa577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f000000000000000000000000000000000000000000000000000000000000000082527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a0815260c081018181106001600160401b03821117610a055760405251902090565b507f00000000000000000000000000000000000000000000000000000000000000004614613681565b1561378057565b60405162461bcd60e51b815260206004820152601660248201527545524332303a2062616c616e636520746f6f206c6f7760501b6044820152606490fd5b156137c557565b60405162461bcd60e51b815260206004820152601660248201527545524332303a206e6f207a65726f206164647265737360501b6044820152606490fd5b51906001600160a01b038216820361030657565b6005811015612d6057806138285750565b600181036138705760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b6044820152606490fd5b600281036138bd5760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606490fd5b6003146138c657565b60405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608490fd5b9291906fa2a8918ca85bafe22016d0b997e4df60600160ff1b03831161398f5791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa156139825781516001600160a01b0381161561397c579190565b50600190565b50604051903d90823e3d90fd5b50505050600090600390565b6000198114612fb05760010190565b7fe50de2333c10a9502fcb1d8ae13a51bbf423153dfc63c2b8997665b32154afc360018060a01b038092169160009083825260036020526040822094169384825260205284604082205580a4565b909160207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259160018060a01b03809416938460005260028352604060002095169485600052825280604060002055604051908152a3565b60ff60255416613bcd576014546001600160801b0316908115613bc657600a54604051631848f2bf60e31b8152602093916001600160a01b03919085908290600490829086165afa8015610a1b578591600091613b89575b50600460405180948193631a674cc560e11b8352165afa938415610a1b57600094613b56575b5050613ae99192670de0b6b3a764000092839160285490612f9d565b049081811015613b4d57613b006029548092612ff4565b83810290808204851490151715612fb0576131af613b2192613b4194612ff4565b60265492613b3b60275492613b368487612ff4565b612f9d565b04613001565b9080821161313a575090565b50505060265490565b81813d8311613b82575b613b6a8183612e02565b81010312613b7e57519250613ae938613acd565b8380fd5b503d613b60565b909181813d8311613bbf575b613b9f8183612e02565b81010312613bbb575190828216820361353a5750849038613aa7565b5080fd5b503d613b95565b6027549150565b600a5460405163e6abad4960e01b815290602090829060049082906001600160a01b03165afa908115610a1b57600091613c05575090565b906020823d8211613c2b575b81613c1e60209383612e02565b8101031261353a57505190565b3d9150613c11565b60405190613c4082612db0565b6014546001600160801b038116835260801c6020830152565b6001600160801b039182169082160191908211612fb057565b60006020604051613c8281612db0565b82815201526001600160401b0390613ca18260245460401c1642612ff4565b918215613cf857613cf3613b3691670de0b6b3a7640000613ce8613cc3613c33565b9660018060801b03958694858a5116906301e13380613ce0613a4f565b041690612f9d565b041682855116613c59565b168252565b509050613d03613c33565b90565b604051613d1281612db0565b602454906001600160401b038281809416835260401c1691613d3b602083019380855242612ff4565b918215613e3d57816301e13380613d50613a4f565b041681528142168452613dee613d64613c33565b936020670de0b6b3a7640000613d8c60018060801b0393613b36858a51168989511690612f9d565b0495613dc683613da1818a1682855116613c59565b16808352601480546001600160801b0319166001600160801b03909216919091179055565b0151601480546001600160801b03169290911660801b6001600160801b031916919091179055565b51169182602454916001600160401b0360401b905160401b169160018060801b03191617176024557f7484db546dcd57af0104c73c8a6968dfbaf5767f047cee0dadd0499ad7df81a0600080a3565b50505050565b6001600160801b039182169082160391908211612fb057565b15613e6357565b60405162461bcd60e51b8152602060048201526018602482015277084d2ce84c2dcce7440d8cadccee8d040dad2e6dac2e8c6d60431b6044820152606490fd5b9190826040910312610306576020825192015190565b91909160018060a01b0392836009541690600c5460409485519063442c159960e01b82526004928084840152602496878401526000958660448501526020958685606481855afa94851561421957918b8b928a9485986141db575b509060a4911694835194859384926311a5cc7760e31b84528b8401528d30908401528760448401528960648401528160848401525af180156141d1576141b5575b5088600d5416908851926370a0823160e01b94858552308786015287858b81875afa9485156141ab5789888d948f948c97958f95859b61415f575b5090613fd19291600b54169751998a9889978896635cd3dc1560e01b885233908801528601526044850152606484015260a0608484015260a4830190612e23565b03925af180156141555761411d575b508388600d54169287895180958193825230888301525afa80156141135785906140e2575b61400f9250612ff4565b9586156140955790606483926009541691600e54928989519889958694638eb22cdd60e01b86528501528301528660448301525afa93841561408a57508193614059575b50505091565b9091809350813d8311614083575b6140718183612e02565b8101031261353a575051388080614053565b503d614067565b51913d9150823e3d90fd5b508360849286519262461bcd60e51b8452830152808201527f42696742616e673a206f6e436f6c6c61746572616c52656365697665722066616044820152631a5b195960e21b6064820152fd5b50908381813d831161410c575b6140f98183612e02565b81010312613363579061400f9151614005565b503d6140ef565b87513d87823e3d90fd5b8481813d831161414e575b6141328183612e02565b8101031261414a5761414390613386565b5038613fe0565b8580fd5b503d614128565b88513d88823e3d90fd5b96999a50509550959250505081813d83116141a4575b61417f8183612e02565b810103126141a05792898988613fd18f9897968f968d98519a909192613f90565b8880fd5b503d614175565b8b513d8b823e3d90fd5b6141cb90893d8b11610b6b57610b5d8183612e02565b50613f55565b89513d89823e3d90fd5b935096505091508681813d8311614212575b6141f78183612e02565b8101031261420e57519387918a918c9060a4613f14565b8780fd5b503d6141ed565b8a513d8a823e3d90fd5b91908110156109d85760051b0190565b919060018060a01b0380600094168452602060178152604085205490811561433657601881526040862054801561432f578161426d613c33565b9460095416916064600c54604051948593849263442c159960e01b8452600484015260248301528b60448301525afa9687156143235780976142ed575b50506133116142d26142c96142e8969798620186a06021540490612f9d565b601f5490612f9d565b95613b3660018060801b03948587511690612f9d565b111590565b9096508187813d831161431c575b6143058183612e02565b8101031261353a57509451946133116142d26142aa565b503d6142fb565b604051903d90823e3d90fd5b5050505050565b506001945050505056feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae672a264697066735822122026d7281b9d5c6add42eb74ad5c11d713ae9c41a17f450c2287e4258e6fd718c364736f6c63430008120033"; type BBLiquidationConstructorParams = | [signer?: Signer] diff --git a/src/typechain/tapioca-bar/factories/markets/bigBang/BBStorage__factory.ts b/src/typechain/tapioca-bar/factories/markets/bigBang/BBStorage__factory.ts index 2b9f6474..f838f746 100644 --- a/src/typechain/tapioca-bar/factories/markets/bigBang/BBStorage__factory.ts +++ b/src/typechain/tapioca-bar/factories/markets/bigBang/BBStorage__factory.ts @@ -65,6 +65,31 @@ const _abi = [ name: "ApprovalBorrow", type: "event", }, + { + anonymous: false, + inputs: [], + name: "AssetOracleDataUpdated", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "address", + name: "_oldVal", + type: "address", + }, + { + indexed: true, + internalType: "address", + name: "_newVal", + type: "address", + }, + ], + name: "AssetOracleUpdated", + type: "event", + }, { anonymous: false, inputs: [ @@ -284,25 +309,6 @@ const _abi = [ name: "LogBorrowCapUpdated", type: "event", }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "uint256", - name: "_oldVal", - type: "uint256", - }, - { - indexed: true, - internalType: "uint256", - name: "_newVal", - type: "uint256", - }, - ], - name: "LogBorrowingFee", - type: "event", - }, { anonymous: false, inputs: [ @@ -491,6 +497,37 @@ const _abi = [ name: "Transfer", type: "event", }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "uint256", + name: "oldMin", + type: "uint256", + }, + { + indexed: true, + internalType: "uint256", + name: "newMin", + type: "uint256", + }, + { + indexed: true, + internalType: "uint256", + name: "oldMax", + type: "uint256", + }, + { + indexed: false, + internalType: "uint256", + name: "newMax", + type: "uint256", + }, + ], + name: "UpdateMinMaxMintFee", + type: "event", + }, { inputs: [], name: "DOMAIN_SEPARATOR", @@ -645,27 +682,40 @@ const _abi = [ type: "function", }, { - inputs: [ + inputs: [], + name: "assetOracle", + outputs: [ { - internalType: "address", + internalType: "contract IOracle", name: "", type: "address", }, ], - name: "balanceOf", + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "assetOracleData", outputs: [ { - internalType: "uint256", + internalType: "bytes", name: "", - type: "uint256", + type: "bytes", }, ], stateMutability: "view", type: "function", }, { - inputs: [], - name: "borrowOpeningFee", + inputs: [ + { + internalType: "address", + name: "", + type: "address", + }, + ], + name: "balanceOf", outputs: [ { internalType: "uint256", @@ -952,6 +1002,19 @@ const _abi = [ stateMutability: "view", type: "function", }, + { + inputs: [], + name: "maxMintFee", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, { inputs: [], name: "minDebtRate", @@ -978,6 +1041,19 @@ const _abi = [ stateMutability: "view", type: "function", }, + { + inputs: [], + name: "minMintFee", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, { inputs: [ { @@ -1245,11 +1321,6 @@ const _abi = [ }, { inputs: [ - { - internalType: "uint256", - name: "_borrowOpeningFee", - type: "uint256", - }, { internalType: "contract IOracle", name: "_oracle", @@ -1534,7 +1605,7 @@ const _abi = [ ] as const; const _bytecode = - "0x6101408060405234620001895762000017816200018e565b600f81526001602082016e546170696f63612042696742616e6760881b8152602060405162000046816200018e565b8381520192603160f81b845251902091208160e052610100918183524660a0526040519160208301907f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f92838352604085015260608401524660808401523060a084015260a0835260c083019280841060018060401b03851117620001735760408490525190206080523060c052610120908152600580546001600160a01b0319163390811790915560007f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a362013880601b5562015f90601c55612710601d556032602055612ee06021556126a39283620001ab843960805183612295015260a05183612360015260c0518361225f015260e051836122e40152518261230a015251816122c10152f35b634e487b7160e01b600052604160045260246000fd5b600080fd5b604081019081106001600160401b03821117620001735760405256fe608080604052600436101561001357600080fd5b60003560e01c908162a02a2014611b035750806302ce728f146118ec578063078dfbe7146117e8578063095ea7b3146117c25780630996efb71461133f5780630c4e84f01461122557806318160ddd146112095780631c9e379b146111cf5780631da8bf10146111135780631fb8f81a146110f557806323b872dd14610f51578063331960ff14610f3357806334d441d014610f155780633644e51514610efa57806337b6b7b914610edc57806338d52e0f14610eb35780633ba0b9a914610e955780633f741adb14610e7157806340626d8b14610e5357806344de240a14610e35578063473e3ce714610e1757806348e4163e14610ddd5780634e71e0c814610d2f578063529898f214610d115780635793546214610cf35780636b19ad1614610cd55780636c3d8b8f14610cac57806370a0823114610c725780637277854714610c3c57806374645ff314610b205780637dc0d1d014610af75780637ecebe0014610abd5780637fa0b84e14610a8c5780638285ef4014610a5a57806387b2793714610a205780638c5d0ed314610a025780638da5cb5b146109d9578063910dd7c8146107c0578063959916dc146107a357806399a97028146107745780639e15e89f1461073a578063a9059cbb14610653578063b0e21e8a14610635578063b27c0e7414610604578063b7113f19146105e1578063bb4cfe3b146105c3578063bde39c5d146105a5578063ce8849ed1461057c578063d505accf146103da578063d8dfeb45146103b1578063dd62ed3e14610360578063de40657714610337578063e0996cb614610319578063e30c3978146102f0578063ea64dd56146102d2578063eec0f42e146102b45763f791395d1461029157600080fd5b346102af5760003660031901126102af576020602854604051908152f35b600080fd5b346102af5760003660031901126102af576020600c54604051908152f35b346102af5760003660031901126102af576020601f54604051908152f35b346102af5760003660031901126102af576006546040516001600160a01b039091168152602090f35b346102af5760003660031901126102af576020601d54604051908152f35b346102af5760003660031901126102af576009546040516001600160a01b039091168152602090f35b346102af5760403660031901126102af57610379611b4f565b610381611b65565b9060018060a01b038091166000526002602052604060002091166000526020526020604060002054604051908152f35b346102af5760003660031901126102af57600b546040516001600160a01b039091168152602090f35b346102af576103e836611b8a565b9183919395949542116105375760018060a01b03928388169485600052600460205260406000209283546000198114610521576104cb956104c3956001830190556040519060208201927f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e2668452600060408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e0815261048781611c42565b51902061049261225c565b9060405190602082019261190160f01b845260228301526042820152604281526104bb81611c5e565b519020612523565b919091612424565b16036104dc576104da926125f6565b005b60405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152606490fd5b634e487b7160e01b600052601160045260246000fd5b60405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b346102af5760003660031901126102af576008546040516001600160a01b039091168152602090f35b346102af5760003660031901126102af576020602954604051908152f35b346102af5760003660031901126102af576020601e54604051908152f35b346102af5760003660031901126102af57602060ff602654166040519015158152f35b346102af5760003660031901126102af5760406025548151906001600160401b03908181168352831c166020820152f35b346102af5760003660031901126102af576020601a54604051908152f35b346102af5760403660031901126102af5761066c611b4f565b602435908115801590610728575b6106b0575b6040519182526001600160a01b031690339060008051602061264e83398151915290602090a3602060405160018152f35b3360005260016020526040600020546106cb83821015612386565b6001600160a01b0382169083338390036106e8575b50505061067f565b6106fc916106f78415156123cb565b611d66565b336000526001602052604060002055600052604060002061071e838254611d73565b90558280836106e0565b50336001600160a01b0382161461067a565b346102af5760403660031901126102af576060610761610758611b4f565b60243590611eb2565b9060405192835260208301526040820152f35b346102af5760403660031901126102af57602061079b610792611b4f565b6024359061212a565b604051908152f35b346102af5760003660031901126102af5760208054604051908152f35b346102af5760403660031901126102af576001600160401b036004358181116102af57366023820112156102af5780600401359182116109c35760405191610812601f8201601f191660200184611c79565b808352602083019136602483830101116102af57816000926024602093018537840101526024359161ffff831683036102af576101009182828051810103126102af5761085e90612023565b61086a60408301612410565b9161087760608201612410565b9460808201519460a08301519260c08101519160ff831683036102af5760e08201519101519184421161053757851561099d577f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e2665b6001600160a01b0388166000908152600460205260409020805490969060001981146105215761ffff6104c39761095a9960018401905560405194602086015216604084015260018060a01b038a16606084015260018060a01b038c1660808401528a60a084015260c083015260e082015260e0815261094b81611c42565b6020815191012061049261225c565b6001600160a01b038381169116036104dc5715610987576104da926001600160a01b0390811691166125f6565b6104da926001600160a01b0390811691166125a8565b7f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d66108cc565b634e487b7160e01b600052604160045260246000fd5b346102af5760003660031901126102af576005546040516001600160a01b039091168152602090f35b346102af5760003660031901126102af576020601b54604051908152f35b346102af5760203660031901126102af576001600160a01b03610a41611b4f565b1660005260246020526020604060002054604051908152f35b346102af5760003660031901126102af57601454604080516001600160801b038316815260809290921c602083015290f35b346102af5760403660031901126102af57610ab2610aa8611b4f565b60243590336125a8565b602060405160018152f35b346102af5760203660031901126102af576001600160a01b03610ade611b4f565b1660005260046020526020604060002054604051908152f35b346102af5760003660031901126102af57600f546040516001600160a01b039091168152602090f35b346102af5760003660031901126102af57604051601054816000610b4383611c08565b808352600193808516908115610c1b5750600114610bbb575b50610b6992500382611c79565b6040519081602080825282519081818401526000935b828510610ba2575050604092506000838284010152601f80199101168101030190f35b8481018201518686016040015293810193859350610b7f565b601060009081527f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae67294602093509091905b818310610c03575050610b69935082010184610b5c565b85548784018501529485019486945091830191610bec565b9050610b6994506020925060ff191682840152151560051b82010184610b5c565b346102af5760203660031901126102af5760043560098110156102af5760ff610c66602092611bd9565b54166040519015158152f35b346102af5760203660031901126102af576001600160a01b03610c93611b4f565b1660005260016020526020604060002054604051908152f35b346102af5760003660031901126102af57600a546040516001600160a01b039091168152602090f35b346102af5760003660031901126102af576020602754604051908152f35b346102af5760003660031901126102af576020601c54604051908152f35b346102af5760003660031901126102af576020602154604051908152f35b346102af5760003660031901126102af576006546001600160a01b039081811633819003610d9957806005549384167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a36001600160a01b03199283161760055516600655005b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b346102af5760203660031901126102af576001600160a01b03610dfe611b4f565b1660005260176020526020604060002054604051908152f35b346102af5760003660031901126102af576020601554604051908152f35b346102af5760003660031901126102af576020600e54604051908152f35b346102af5760003660031901126102af576020601654604051908152f35b346102af5760603660031901126102af57602061079b604435602435600435611d99565b346102af5760003660031901126102af576020601154604051908152f35b346102af5760003660031901126102af57600d546040516001600160a01b039091168152602090f35b346102af5760003660031901126102af576020601254604051908152f35b346102af5760003660031901126102af57602061079b61225c565b346102af5760003660031901126102af576020601954604051908152f35b346102af5760003660031901126102af576020601354604051908152f35b346102af5760603660031901126102af57610f6a611b4f565b610f72611b65565b6044359081610faf575b6040519182526001600160a01b0390811692169060008051602061264e83398151915290602090a3602060405160018152f35b60018060a01b03808416806000526020600181528460406000205493610fd782861015612386565b851693848403610fec575b5050505050610f7c565b836000526002835260406000203360005283526040600020546000198103611060575b50849261103760008051602061264e8339815191529795936001936106f760209915156123cb565b92600052526040600020556000526040600020611055858254611d73565b905591858481610fe2565b909181106110b557602094926110378860008051602061264e83398151915298969461108e82600196611d66565b8660005260028552604060002033600052855260406000205593509395975050929461100f565b60405162461bcd60e51b815260048101849052601860248201527745524332303a20616c6c6f77616e636520746f6f206c6f7760401b6044820152606490fd5b346102af5760003660031901126102af576020602a54604051908152f35b346102af5761112136611b8a565b9183919395949542116105375760018060a01b03928388169485600052600460205260406000209283546000198114610521576111c0956104c3956001830190556040519060208201927f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d68452600060408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e0815261048781611c42565b16036104dc576104da926125a8565b346102af5760203660031901126102af576001600160a01b036111f0611b4f565b1660005260186020526020604060002054604051908152f35b346102af5760003660031901126102af57602060405160008152f35b346102af5760403660031901126102af5760043560098110156102af5761124a611b7b565b6008549091906001600160a01b031633036113035760ff61126a82611bd9565b541615159115159182146112c957808260ff6112886112b794611bd9565b54161515827feeec81de25875ce1725479bb76f720a8defdb43dea041919ae37bb4aae9847c0600080a4611bd9565b9060ff80198354169116179055600080f35b60405162461bcd60e51b81526020600482015260126024820152714d61726b65743a2073616d6520737461746560701b6044820152606490fd5b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881d5b985d5d1a1bdc9a5e995960621b6044820152606490fd5b346102af576101803660031901126102af5760246001600160a01b038135818116908190036102af57604435916001600160401b03908184116102af57366023850112156102af5783600401359182116102af57368583860101116102af57606435918183168093036102af576113bb82600554163314611c9a565b60043594620186a0946113d086881115611ce5565b6020968088547fc353b09af857951dccce61b43a5854fc45beceed36c50e5d4cc2e71858a8e0df600080a3875580611783575b50868261163e575b505050816115fd575b5050608435806115e8575b5060a435806115d3575b5060c435806115bf575b5060e4358061159e575b50610104358061157d575b50610124358061154b575b506101443590816114db575b505061016435918261146d57005b601e54831061147d575050601f55005b9060326084926040519262461bcd60e51b845260048401528201527f4d61726b65743a206c69717569646174696f6e436f6c6c61746572616c697a616044820152711d1a5bdb94985d19481d1bdbc81cdb585b1b60721b6064820152fd5b6114e790821115611ce5565b601f5481116114fa57601e55828061145f565b5060256084926040519262461bcd60e51b845260048401528201527f4d61726b65743a20636f6c6c61746572616c697a6174696f6e5261746520746f6044820152646f2062696760d81b6064820152fd5b806016547fae6e0ab3b95f0a53ff9660a390ccedcbbf1f2355dce974a9841af106fddcfaba600080a360165583611453565b611588828210611ce5565b611595601b548211611ce5565b601c5583611448565b6115a9828210611ce5565b6115b6601c548210611ce5565b601b558361143d565b6115ca828210611ce5565b601d5583611433565b6115df82821115611ce5565b601a5583611429565b6115f482821115611ce5565b6019558361141f565b816008549182167f5a62d22209e370e38eea92cfddcd228e656e6ec139243392a760a7769f5877fd600080a36001600160a01b031916176008558380611414565b829161164b601054611c08565b601f811161172f575b50600090601f84116001146116bc576000936116af575b5050508160011b916000199060031b1c1916176010555b7fa6f004921c944d4b8bf6e38462b00f36a58d62495d56b51f571ab78f732c9815600080a185808661140b565b010135905086888061166b565b915092506010600052866000209088600094601f198516955b8a87821061171457505084600196106116f8575b50505050811b01601055611682565b60001960f88660031b161c1992010135169055878088816116e9565b8483019093013585556001909401938b9291820191016116d5565b91509150601060005286600020601f840160051c810188851061177c575b91849391601f8b94920160051c01905b81811061176a5750611654565b600081558594508a935060010161175d565b508061174d565b600f80546001600160a01b0319169190911790557f0b2d6eb667d0522c3eb86e4288afecae6c11591ffd1345d4d12407e0598bca9b600080a187611403565b346102af5760403660031901126102af57610ab26117de611b4f565b60243590336125f6565b346102af5760603660031901126102af57611801611b4f565b611809611b7b565b6044359081151582036102af5760018060a01b0392839161182f83600554163314611c9a565b156118d35716908115908115916118cb575b501561188e57806005549283167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a36001600160a01b031991821617600555600680549091169055005b60405162461bcd60e51b81526020600482015260156024820152744f776e61626c653a207a65726f206164647265737360581b6044820152606490fd5b905083611841565b9150501660018060a01b03196006541617600655600080f35b346102af5760003660031901126102af5760018060a01b03600f54166040519063d6d7d52560e01b825260209182600482015260009160105461192e81611c08565b908160248501526001908181169081600014611add5750600114611a9d575b50509060409181600081809603925af18015611a9157600091600091611a52575b5081156119f55780156119b95760409281601155817f9f9192b5edb17356c524e08d9e025c8e2f6307e6ea52fb7968faa3081f51c3c8600080a25b4260135583519215158352820152f35b60405162461bcd60e51b81526004810184905260146024820152734d61726b65743a20696e76616c6964207261746560601b6044820152606490fd5b50611a0560135460125490611d73565b4211611a16576011546040926119a9565b60405162461bcd60e51b815260048101839052601460248201527313585c9ad95d0e881c985d19481d1bdbc81bdb1960621b6044820152606490fd5b9150506040813d604011611a89575b81611a6e60409383611c79565b810103126102af5781611a8082612023565b9101518361196e565b3d9150611a61565b6040513d6000823e3d90fd5b935060106000528460002093856000955b838710611ac857505050509181016044019180604061194d565b80548688016044015295019486908201611aae565b60ff191660448087019190915292151560051b850190920194508291506040905061194d565b346102af5760403660031901126102af57602090611b1f611b4f565b611b27611b65565b9060018060a01b03809116600052600384526040600020911660005282526040600020548152f35b600435906001600160a01b03821682036102af57565b602435906001600160a01b03821682036102af57565b6024359081151582036102af57565b60e09060031901126102af576001600160a01b039060043582811681036102af579160243590811681036102af5790604435906064359060843560ff811681036102af579060a4359060c43590565b6009811015611bf2576000526007602052604060002090565b634e487b7160e01b600052602160045260246000fd5b90600182811c92168015611c38575b6020831014611c2257565b634e487b7160e01b600052602260045260246000fd5b91607f1691611c17565b61010081019081106001600160401b038211176109c357604052565b608081019081106001600160401b038211176109c357604052565b90601f801991011681019081106001600160401b038211176109c357604052565b15611ca157565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b15611cec57565b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881b9bdd081d985b1a59607a1b6044820152606490fd5b8181029291811591840414171561052157565b8115611d42570490565b634e487b7160e01b600052601260045260246000fd5b604d811161052157600a0a90565b9190820391821161052157565b9190820180921161052157565b8181039291600013801582851316918412161761052157565b601454919291611de291611dd391611dc991611dbf906001600160801b03831690611d25565b9060801c90611d38565b93601f5490611d25565b611ddc83611d58565b90611d38565b808310611eaa57611df6611e329184611d66565b91611e2d611e27611e1e601e54611e18611e0f86611d58565b60215490611d73565b90611d25565b611ddc84611d58565b91611d58565b611d80565b6509184e72a0009081810291818305149015171561052157670de0b6b3a764000091828102928184051490151715610521578015611d4257600160ff1b918083146000198314166105215705906000821215611ea357811461052157600003905b808211611e9e575090565b905090565b5090611e93565b505050600090565b9160018060a01b0380931691600093838552602060178152604091828720549081156120165783518481018181106001600160401b03821117612002578552888152888480830193828552611f08891515612030565b600954166064600c548c85526018845289852054928a51958694859363442c159960e01b85526004850152602484015260448301525afa908115611ff8578a91611fc5575b50611fb9979899949260189492611f9c611f878a611f82611f79611fa597620186a06022540490611d25565b601e5490611d25565b611d38565b915191946001600160801b0392831690611d25565b91511690611d38565b818110611fbd57035b97835252205461207c565b9091565b505082611fae565b90508481813d8311611ff1575b611fdc8183611c79565b81010312611fed5751611fb9611f4d565b8980fd5b503d611fd2565b86513d8c823e3d90fd5b634e487b7160e01b8a52604160045260248afd5b5086955085949350505050565b519081151582036102af57565b1561203757565b60405162461bcd60e51b815260206004820152601e60248201527f4d61726b65743a2065786368616e676552617465206e6f742076616c696400006044820152606490fd5b612087821515612030565b602060018060a01b0360095416916064600c54604051948593849263442c159960e01b845260048401526024830152600060448301525afa908115611a91576000916120f4575b5090611f826120e09260225490611d25565b620186a06120f0601e5483611d25565b0491565b906020823d8211612122575b8161210d60209383611c79565b8101031261211f575051611f826120ce565b80fd5b3d9150612100565b6001600160a01b0316600081815260186020526040812054909261214d9161207c565b91835260176020526040832054801561225657811561225657818110612256578281101561224c576014546121969183916106f791611dbf906001600160801b03831690611d25565b90620186a09283830292808404851490151715612238576121bb9291611ddc91611d66565b91601b5491601c54936121ce8585611d80565b80820291848212600160ff1b82141661223857818305149015171561222457058184820194851291129080158216911516176122105750808212611e9e575090565b634e487b7160e01b81526011600452602490fd5b634e487b7160e01b83526011600452602483fd5b634e487b7160e01b85526011600452602485fd5b50505050601b5490565b50505090565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316148061235d575b156122b7577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f000000000000000000000000000000000000000000000000000000000000000082527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a0815260c081018181106001600160401b038211176109c35760405251902090565b507f0000000000000000000000000000000000000000000000000000000000000000461461228e565b1561238d57565b60405162461bcd60e51b815260206004820152601660248201527545524332303a2062616c616e636520746f6f206c6f7760501b6044820152606490fd5b156123d257565b60405162461bcd60e51b815260206004820152601660248201527545524332303a206e6f207a65726f206164647265737360501b6044820152606490fd5b51906001600160a01b03821682036102af57565b6005811015611bf257806124355750565b6001810361247d5760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b6044820152606490fd5b600281036124ca5760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606490fd5b6003146124d357565b60405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608490fd5b9291906fa2a8918ca85bafe22016d0b997e4df60600160ff1b03831161259c5791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa1561258f5781516001600160a01b03811615612589579190565b50600190565b50604051903d90823e3d90fd5b50505050600090600390565b7fe50de2333c10a9502fcb1d8ae13a51bbf423153dfc63c2b8997665b32154afc360018060a01b038092169160009083825260036020526040822094169384825260205284604082205580a4565b909160207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259160018060a01b03809416938460005260028352604060002095169485600052825280604060002055604051908152a356feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220cef69c40fb4296475ba7bcb509e584a5593e3543945ad8150b372ea5fb30509764736f6c63430008120033"; + "0x61014080604052346200018a5762000017816200018f565b600f81526001602082016e546170696f63612042696742616e6760881b8152602060405162000046816200018f565b8381520192603160f81b845251902091208160e052610100918183524660a0526040519160208301907f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f92838352604085015260608401524660808401523060a084015260a0835260c083019280841060018060401b03851117620001745760408490525190206080523060c052610120908152600580546001600160a01b0319163390811790915560007f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a362013880601b5562015f90601c55612710601d55612ee06020556103e8602d556127b29283620001ac843960805183612384015260a0518361244f015260c0518361234e015260e051836123d3015251826123f9015251816123b00152f35b634e487b7160e01b600052604160045260246000fd5b600080fd5b604081019081106001600160401b03821117620001745760405256fe608080604052600436101561001357600080fd5b60003560e01c908162a02a2014611ba95750806302ce728f14611992578063078dfbe71461188e578063095ea7b3146118685780630c4e84f01461174e57806318160ddd146117325780631c9e379b146116f85780631d4d3a5d146116cf5780631da8bf10146116135780631fb8f81a146115f557806323b872dd14611451578063331960ff1461143357806334d441d0146114155780633644e515146113fa57806337b6b7b9146113dc57806338d52e0f146113b35780633ba0b9a9146113955780633f741adb1461137157806340626d8b1461135357806344de240a14611335578063473e3ce71461131757806348e4163e146112dd5780634e71e0c81461122f578063529898f214611212578063542afda3146111f457806357935462146111d65780636b19ad16146111b85780636c3d8b8f1461118f57806370a0823114611155578063727785471461111f57806374645ff31461108c57806374c9e4811461106e5780637dc0d1d0146110455780637ecebe001461100b5780637fa0b84e14610fda5780638285ef4014610fa857806387b2793714610f6e5780638c5d0ed314610f505780638da5cb5b14610f27578063910dd7c814610d0e578063932bc4f814610c3057806399a9702814610c015780639e15e89f14610bc7578063a9059cbb14610ae0578063b0e21e8a14610ac2578063b27c0e7414610a91578063b7113f1914610a6e578063bb4cfe3b14610a50578063bde39c5d14610a32578063ce8849ed14610a09578063d3fb2a381461059d578063d505accf146103fb578063d8dfeb45146103d2578063dd62ed3e14610381578063de40657714610358578063e0996cb61461033a578063e30c397814610311578063ea64dd56146102f3578063eec0f42e146102d55763f791395d146102b257600080fd5b346102d05760003660031901126102d0576020602754604051908152f35b600080fd5b346102d05760003660031901126102d0576020600c54604051908152f35b346102d05760003660031901126102d0576020601f54604051908152f35b346102d05760003660031901126102d0576006546040516001600160a01b039091168152602090f35b346102d05760003660031901126102d0576020601d54604051908152f35b346102d05760003660031901126102d0576009546040516001600160a01b039091168152602090f35b346102d05760403660031901126102d05761039a611bf5565b6103a2611c0b565b9060018060a01b038091166000526002602052604060002091166000526020526020604060002054604051908152f35b346102d05760003660031901126102d057600b546040516001600160a01b039091168152602090f35b346102d05761040936611c30565b9183919395949542116105585760018060a01b03928388169485600052600460205260406000209283546000198114610542576104ec956104e4956001830190556040519060208201927f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e2668452600060408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e081526104a881611ce8565b5190206104b361234b565b9060405190602082019261190160f01b845260228301526042820152604281526104dc81611d04565b519020612612565b919091612513565b16036104fd576104fb926126e5565b005b60405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152606490fd5b634e487b7160e01b600052601160045260246000fd5b60405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b346102d0576101603660031901126102d0576001600160a01b03600435818116908190036102d0576024916001600160401b0383358181116102d057366023820112156102d05780600401359182116102d057368583830101116102d057604435938385168095036102d05761061884600554163314611d89565b806109ca575b508482610868575b50505081610827575b50506064358061080f575b50608435806107f7575b5060a435806107e0575b5060c435806107bc575b5060e43580610798575b506101043580610766575b5061012435806106f3575b5061014435908161068557005b601e5482106106945750601f55005b60849060326040519162461bcd60e51b8352602060048401528201527f4d61726b65743a206c69717569646174696f6e436f6c6c61746572616c697a616044820152711d1a5bdb94985d19481d1bdbc81cdb585b1b60721b6064820152fd5b610702620186a0821115611dd4565b601f54811161071457601e5581610678565b60405162461bcd60e51b8152602060048201526025818401527f4d61726b65743a20636f6c6c61746572616c697a6174696f6e5261746520746f6044820152646f2062696760d81b6064820152608490fd5b806016547fae6e0ab3b95f0a53ff9660a390ccedcbbf1f2355dce974a9841af106fddcfaba600080a36016558161066d565b6107a6620186a08210611dd4565b6107b3601b548211611dd4565b601c5581610662565b6107ca620186a08210611dd4565b6107d7601c548210611dd4565b601b5581610658565b6107ee620186a08210611dd4565b601d558161064e565b610806620186a0821115611dd4565b601a5581610644565b61081e620186a0821115611dd4565b6019558161063a565b816008549182167f5a62d22209e370e38eea92cfddcd228e656e6ec139243392a760a7769f5877fd600080a36001600160a01b03191617600855818061062f565b8291610875601054611cae565b601f8111610969575b50600090601f84116001146108e6576000936108d9575b5050508160011b916000199060031b1c1916176010555b7fa6f004921c944d4b8bf6e38462b00f36a58d62495d56b51f571ab78f732c9815600080a1838084610626565b0101359050848680610895565b60106000908152601f198516955060008051602061275d83398151915293509091889160205b87821061094a575050846001961061092e575b50505050811b016010556108ac565b60001960f88660031b161c19920101351690558580868161091f565b828501909301358555600194909401938992918201919081019061090c565b6010600052909250905060008051602061275d833981519152601f840160051c8101602085106109c3575b91849391601f8994920160051c01905b8181106109b1575061087e565b600081558594508893506001016109a4565b5080610994565b600f80546001600160a01b0319169190911790557f0b2d6eb667d0522c3eb86e4288afecae6c11591ffd1345d4d12407e0598bca9b600080a18561061e565b346102d05760003660031901126102d0576008546040516001600160a01b039091168152602090f35b346102d05760003660031901126102d0576020602854604051908152f35b346102d05760003660031901126102d0576020601e54604051908152f35b346102d05760003660031901126102d057602060ff602554166040519015158152f35b346102d05760003660031901126102d05760406024548151906001600160401b03908181168352831c166020820152f35b346102d05760003660031901126102d0576020601a54604051908152f35b346102d05760403660031901126102d057610af9611bf5565b602435908115801590610bb5575b610b3d575b6040519182526001600160a01b031690339060008051602061273d83398151915290602090a3602060405160018152f35b336000526001602052604060002054610b5883821015612475565b6001600160a01b038216908333839003610b75575b505050610b0c565b610b8991610b848415156124ba565b611e55565b3360005260016020526040600020556000526040600020610bab838254611e62565b9055828083610b6d565b50336001600160a01b03821614610b07565b346102d05760403660031901126102d0576060610bee610be5611bf5565b60243590611fa1565b9060405192835260208301526040820152f35b346102d05760403660031901126102d0576020610c28610c1f611bf5565b60243590612219565b604051908152f35b346102d05760003660031901126102d057604051600090602b54610c5381611cae565b808352600191808316908115610ce65750600114610c8c575b610c8883610c7c81870382611d1f565b60405191829182611d40565b0390f35b602b600090815260209450917f11c44e4875b74d31ff9fd779bf2566af7bd15b87fc985d01f5094b89e3669e4f5b828410610cd357505050810190910190610c7c81610c6c565b8054858501870152928501928101610cba565b610c889550610c7c93506020915091849260ff191682840152151560051b8201019350610c6c565b346102d05760403660031901126102d0576001600160401b036004358181116102d057366023820112156102d0578060040135918211610f115760405191610d60601f8201601f191660200184611d1f565b808352602083019136602483830101116102d057816000926024602093018537840101526024359161ffff831683036102d0576101009182828051810103126102d057610dac90612112565b610db8604083016124ff565b91610dc5606082016124ff565b9460808201519460a08301519260c08101519160ff831683036102d05760e082015191015191844211610558578515610eeb577f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e2665b6001600160a01b0388166000908152600460205260409020805490969060001981146105425761ffff6104e497610ea89960018401905560405194602086015216604084015260018060a01b038a16606084015260018060a01b038c1660808401528a60a084015260c083015260e082015260e08152610e9981611ce8565b602081519101206104b361234b565b6001600160a01b038381169116036104fd5715610ed5576104fb926001600160a01b0390811691166126e5565b6104fb926001600160a01b039081169116612697565b7f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d6610e1a565b634e487b7160e01b600052604160045260246000fd5b346102d05760003660031901126102d0576005546040516001600160a01b039091168152602090f35b346102d05760003660031901126102d0576020601b54604051908152f35b346102d05760203660031901126102d0576001600160a01b03610f8f611bf5565b1660005260236020526020604060002054604051908152f35b346102d05760003660031901126102d057601454604080516001600160801b038316815260809290921c602083015290f35b346102d05760403660031901126102d057611000610ff6611bf5565b6024359033612697565b602060405160018152f35b346102d05760203660031901126102d0576001600160a01b0361102c611bf5565b1660005260046020526020604060002054604051908152f35b346102d05760003660031901126102d057600f546040516001600160a01b039091168152602090f35b346102d05760003660031901126102d0576020602d54604051908152f35b346102d05760003660031901126102d0576040516000906010546110af81611cae565b808352600191808316908115610ce657506001146110d757610c8883610c7c81870382611d1f565b60106000908152602094509160008051602061275d8339815191525b82841061110c57505050810190910190610c7c81610c6c565b80548585018701529285019281016110f3565b346102d05760203660031901126102d05760043560098110156102d05760ff611149602092611c7f565b54166040519015158152f35b346102d05760203660031901126102d0576001600160a01b03611176611bf5565b1660005260016020526020604060002054604051908152f35b346102d05760003660031901126102d057600a546040516001600160a01b039091168152602090f35b346102d05760003660031901126102d0576020602654604051908152f35b346102d05760003660031901126102d0576020601c54604051908152f35b346102d05760003660031901126102d0576020602c54604051908152f35b346102d05760003660031901126102d05760208054604051908152f35b346102d05760003660031901126102d0576006546001600160a01b03908181163381900361129957806005549384167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a36001600160a01b03199283161760055516600655005b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b346102d05760203660031901126102d0576001600160a01b036112fe611bf5565b1660005260176020526020604060002054604051908152f35b346102d05760003660031901126102d0576020601554604051908152f35b346102d05760003660031901126102d0576020600e54604051908152f35b346102d05760003660031901126102d0576020601654604051908152f35b346102d05760603660031901126102d0576020610c28604435602435600435611e88565b346102d05760003660031901126102d0576020601154604051908152f35b346102d05760003660031901126102d057600d546040516001600160a01b039091168152602090f35b346102d05760003660031901126102d0576020601254604051908152f35b346102d05760003660031901126102d0576020610c2861234b565b346102d05760003660031901126102d0576020601954604051908152f35b346102d05760003660031901126102d0576020601354604051908152f35b346102d05760603660031901126102d05761146a611bf5565b611472611c0b565b60443590816114af575b6040519182526001600160a01b0390811692169060008051602061273d83398151915290602090a3602060405160018152f35b60018060a01b038084168060005260206001815284604060002054936114d782861015612475565b8516938484036114ec575b505050505061147c565b836000526002835260406000203360005283526040600020546000198103611560575b50849261153760008051602061273d833981519152979593600193610b8460209915156124ba565b92600052526040600020556000526040600020611555858254611e62565b9055918584816114e2565b909181106115b557602094926115378860008051602061273d83398151915298969461158e82600196611e55565b8660005260028552604060002033600052855260406000205593509395975050929461150f565b60405162461bcd60e51b815260048101849052601860248201527745524332303a20616c6c6f77616e636520746f6f206c6f7760401b6044820152606490fd5b346102d05760003660031901126102d0576020602954604051908152f35b346102d05761162136611c30565b9183919395949542116105585760018060a01b03928388169485600052600460205260406000209283546000198114610542576116c0956104e4956001830190556040519060208201927f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d68452600060408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e081526104a881611ce8565b16036104fd576104fb92612697565b346102d05760003660031901126102d057602a546040516001600160a01b039091168152602090f35b346102d05760203660031901126102d0576001600160a01b03611719611bf5565b1660005260186020526020604060002054604051908152f35b346102d05760003660031901126102d057602060405160008152f35b346102d05760403660031901126102d05760043560098110156102d057611773611c21565b6008549091906001600160a01b0316330361182c5760ff61179382611c7f565b541615159115159182146117f257808260ff6117b16117e094611c7f565b54161515827feeec81de25875ce1725479bb76f720a8defdb43dea041919ae37bb4aae9847c0600080a4611c7f565b9060ff80198354169116179055600080f35b60405162461bcd60e51b81526020600482015260126024820152714d61726b65743a2073616d6520737461746560701b6044820152606490fd5b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881d5b985d5d1a1bdc9a5e995960621b6044820152606490fd5b346102d05760403660031901126102d057611000611884611bf5565b60243590336126e5565b346102d05760603660031901126102d0576118a7611bf5565b6118af611c21565b6044359081151582036102d05760018060a01b039283916118d583600554163314611d89565b15611979571690811590811591611971575b501561193457806005549283167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a36001600160a01b031991821617600555600680549091169055005b60405162461bcd60e51b81526020600482015260156024820152744f776e61626c653a207a65726f206164647265737360581b6044820152606490fd5b9050836118e7565b9150501660018060a01b03196006541617600655600080f35b346102d05760003660031901126102d05760018060a01b03600f54166040519063d6d7d52560e01b82526020918260048201526000916010546119d481611cae565b908160248501526001908181169081600014611b835750600114611b43575b50509060409181600081809603925af18015611b3757600091600091611af8575b508115611a9b578015611a5f5760409281601155817f9f9192b5edb17356c524e08d9e025c8e2f6307e6ea52fb7968faa3081f51c3c8600080a25b4260135583519215158352820152f35b60405162461bcd60e51b81526004810184905260146024820152734d61726b65743a20696e76616c6964207261746560601b6044820152606490fd5b50611aab60135460125490611e62565b4211611abc57601154604092611a4f565b60405162461bcd60e51b815260048101839052601460248201527313585c9ad95d0e881c985d19481d1bdbc81bdb1960621b6044820152606490fd5b9150506040813d604011611b2f575b81611b1460409383611d1f565b810103126102d05781611b2682612112565b91015183611a14565b3d9150611b07565b6040513d6000823e3d90fd5b935060106000528460002093856000955b838710611b6e5750505050918101604401918060406119f3565b80548688016044015295019486908201611b54565b60ff191660448087019190915292151560051b85019092019450829150604090506119f3565b346102d05760403660031901126102d057602090611bc5611bf5565b611bcd611c0b565b9060018060a01b03809116600052600384526040600020911660005282526040600020548152f35b600435906001600160a01b03821682036102d057565b602435906001600160a01b03821682036102d057565b6024359081151582036102d057565b60e09060031901126102d0576001600160a01b039060043582811681036102d0579160243590811681036102d05790604435906064359060843560ff811681036102d0579060a4359060c43590565b6009811015611c98576000526007602052604060002090565b634e487b7160e01b600052602160045260246000fd5b90600182811c92168015611cde575b6020831014611cc857565b634e487b7160e01b600052602260045260246000fd5b91607f1691611cbd565b61010081019081106001600160401b03821117610f1157604052565b608081019081106001600160401b03821117610f1157604052565b90601f801991011681019081106001600160401b03821117610f1157604052565b6020808252825181830181905290939260005b828110611d7557505060409293506000838284010152601f8019910116010190565b818101860151848201604001528501611d53565b15611d9057565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b15611ddb57565b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881b9bdd081d985b1a59607a1b6044820152606490fd5b8181029291811591840414171561054257565b8115611e31570490565b634e487b7160e01b600052601260045260246000fd5b604d811161054257600a0a90565b9190820391821161054257565b9190820180921161054257565b8181039291600013801582851316918412161761054257565b601454919291611ed191611ec291611eb891611eae906001600160801b03831690611e14565b9060801c90611e27565b93601f5490611e14565b611ecb83611e47565b90611e27565b808310611f9957611ee5611f219184611e55565b91611f1c611f16611f0d601e54611f07611efe86611e47565b60205490611e62565b90611e14565b611ecb84611e47565b91611e47565b611e6f565b6509184e72a0009081810291818305149015171561054257670de0b6b3a764000091828102928184051490151715610542578015611e3157600160ff1b918083146000198314166105425705906000821215611f9257811461054257600003905b808211611f8d575090565b905090565b5090611f82565b505050600090565b9160018060a01b0380931691600093838552602060178152604091828720549081156121055783518481018181106001600160401b038211176120f1578552888152888480830193828552611ff789151561211f565b600954166064600c548c85526018845289852054928a51958694859363442c159960e01b85526004850152602484015260448301525afa9081156120e7578a916120b4575b506120a897989994926018949261208b6120768a61207161206861209497620186a06021540490611e14565b601e5490611e14565b611e27565b915191946001600160801b0392831690611e14565b91511690611e27565b8181106120ac57035b97835252205461216b565b9091565b50508261209d565b90508481813d83116120e0575b6120cb8183611d1f565b810103126120dc57516120a861203c565b8980fd5b503d6120c1565b86513d8c823e3d90fd5b634e487b7160e01b8a52604160045260248afd5b5086955085949350505050565b519081151582036102d057565b1561212657565b60405162461bcd60e51b815260206004820152601e60248201527f4d61726b65743a2065786368616e676552617465206e6f742076616c696400006044820152606490fd5b61217682151561211f565b602060018060a01b0360095416916064600c54604051948593849263442c159960e01b845260048401526024830152600060448301525afa908115611b37576000916121e3575b50906120716121cf9260215490611e14565b620186a06121df601e5483611e14565b0491565b906020823d8211612211575b816121fc60209383611d1f565b8101031261220e5750516120716121bd565b80fd5b3d91506121ef565b6001600160a01b0316600081815260186020526040812054909261223c9161216b565b91835260176020526040832054801561234557811561234557818110612345578281101561233b57601454612285918391610b8491611eae906001600160801b03831690611e14565b90620186a09283830292808404851490151715612327576122aa9291611ecb91611e55565b91601b5491601c54936122bd8585611e6f565b80820291848212600160ff1b82141661232757818305149015171561231357058184820194851291129080158216911516176122ff5750808212611f8d575090565b634e487b7160e01b81526011600452602490fd5b634e487b7160e01b83526011600452602483fd5b634e487b7160e01b85526011600452602485fd5b50505050601b5490565b50505090565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316148061244c575b156123a6577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f000000000000000000000000000000000000000000000000000000000000000082527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a0815260c081018181106001600160401b03821117610f115760405251902090565b507f0000000000000000000000000000000000000000000000000000000000000000461461237d565b1561247c57565b60405162461bcd60e51b815260206004820152601660248201527545524332303a2062616c616e636520746f6f206c6f7760501b6044820152606490fd5b156124c157565b60405162461bcd60e51b815260206004820152601660248201527545524332303a206e6f207a65726f206164647265737360501b6044820152606490fd5b51906001600160a01b03821682036102d057565b6005811015611c9857806125245750565b6001810361256c5760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b6044820152606490fd5b600281036125b95760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606490fd5b6003146125c257565b60405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608490fd5b9291906fa2a8918ca85bafe22016d0b997e4df60600160ff1b03831161268b5791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa1561267e5781516001600160a01b03811615612678579190565b50600190565b50604051903d90823e3d90fd5b50505050600090600390565b7fe50de2333c10a9502fcb1d8ae13a51bbf423153dfc63c2b8997665b32154afc360018060a01b038092169160009083825260036020526040822094169384825260205284604082205580a4565b909160207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259160018060a01b03809416938460005260028352604060002095169485600052825280604060002055604051908152a356feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae672a2646970667358221220a1f57aa74ba0e0d61c5f384052bbd0214403e2555455c840b50acfdc9c6ed70b64736f6c63430008120033"; type BBStorageConstructorParams = | [signer?: Signer] diff --git a/src/typechain/tapioca-bar/factories/markets/bigBang/BigBang__factory.ts b/src/typechain/tapioca-bar/factories/markets/bigBang/BigBang__factory.ts index 75d79fb4..a8978b8b 100644 --- a/src/typechain/tapioca-bar/factories/markets/bigBang/BigBang__factory.ts +++ b/src/typechain/tapioca-bar/factories/markets/bigBang/BigBang__factory.ts @@ -60,6 +60,31 @@ const _abi = [ name: "ApprovalBorrow", type: "event", }, + { + anonymous: false, + inputs: [], + name: "AssetOracleDataUpdated", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "address", + name: "_oldVal", + type: "address", + }, + { + indexed: true, + internalType: "address", + name: "_newVal", + type: "address", + }, + ], + name: "AssetOracleUpdated", + type: "event", + }, { anonymous: false, inputs: [ @@ -279,25 +304,6 @@ const _abi = [ name: "LogBorrowCapUpdated", type: "event", }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "uint256", - name: "_oldVal", - type: "uint256", - }, - { - indexed: true, - internalType: "uint256", - name: "_newVal", - type: "uint256", - }, - ], - name: "LogBorrowingFee", - type: "event", - }, { anonymous: false, inputs: [ @@ -486,6 +492,37 @@ const _abi = [ name: "Transfer", type: "event", }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "uint256", + name: "oldMin", + type: "uint256", + }, + { + indexed: true, + internalType: "uint256", + name: "newMin", + type: "uint256", + }, + { + indexed: true, + internalType: "uint256", + name: "oldMax", + type: "uint256", + }, + { + indexed: false, + internalType: "uint256", + name: "newMax", + type: "uint256", + }, + ], + name: "UpdateMinMaxMintFee", + type: "event", + }, { inputs: [], name: "DOMAIN_SEPARATOR", @@ -679,6 +716,32 @@ const _abi = [ stateMutability: "view", type: "function", }, + { + inputs: [], + name: "assetOracle", + outputs: [ + { + internalType: "contract IOracle", + name: "", + type: "address", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "assetOracleData", + outputs: [ + { + internalType: "bytes", + name: "", + type: "bytes", + }, + ], + stateMutability: "view", + type: "function", + }, { inputs: [ { @@ -745,19 +808,6 @@ const _abi = [ stateMutability: "view", type: "function", }, - { - inputs: [], - name: "borrowOpeningFee", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - stateMutability: "view", - type: "function", - }, { inputs: [ { @@ -1241,6 +1291,19 @@ const _abi = [ stateMutability: "view", type: "function", }, + { + inputs: [], + name: "maxMintFee", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, { inputs: [], name: "minDebtRate", @@ -1267,6 +1330,19 @@ const _abi = [ stateMutability: "view", type: "function", }, + { + inputs: [], + name: "minMintFee", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, { inputs: [ { @@ -1659,6 +1735,24 @@ const _abi = [ stateMutability: "nonpayable", type: "function", }, + { + inputs: [ + { + internalType: "address", + name: "_oracle", + type: "address", + }, + { + internalType: "bytes", + name: "_oracleData", + type: "bytes", + }, + ], + name: "setAssetOracle", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, { inputs: [ { @@ -1689,11 +1783,6 @@ const _abi = [ }, { inputs: [ - { - internalType: "uint256", - name: "_borrowOpeningFee", - type: "uint256", - }, { internalType: "contract IOracle", name: "_oracle", @@ -1755,6 +1844,24 @@ const _abi = [ stateMutability: "nonpayable", type: "function", }, + { + inputs: [ + { + internalType: "uint256", + name: "_min", + type: "uint256", + }, + { + internalType: "uint256", + name: "_max", + type: "uint256", + }, + ], + name: "setMinAndMaxMintFee", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, { inputs: [], name: "totalBorrow", @@ -1982,7 +2089,7 @@ const _abi = [ ] as const; const _bytecode = - "0x6101408060405234620001895762000017816200018e565b600f81526001602082016e546170696f63612042696742616e6760881b8152602060405162000046816200018e565b8381520192603160f81b845251902091208160e052610100918183524660a0526040519160208301907f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f92838352604085015260608401524660808401523060a084015260a0835260c083019280841060018060401b03851117620001735760408490525190206080523060c052610120908152600580546001600160a01b0319163390811790915560007f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a362013880601b5562015f90601c55612710601d556032602055612ee06021556145619283620001ab843960805183613123015260a051836131de015260c051836130ed015260e05183613172015251826131980152518161314f0152f35b634e487b7160e01b600052604160045260246000fd5b600080fd5b604081019081106001600160401b03821117620001735760405256fe6080604052600436101561001b575b361561001957600080fd5b005b60003560e01c8062a02a20146104ea57806302ce728f146104e5578063078dfbe7146104e0578063095ea7b3146104db5780630996efb7146104d65780630c4e84f0146104d157806318160ddd146104cc5780631c9e379b146104c75780631da8bf10146104c25780631ee9c8f2146104bd5780631fb8f81a146104b857806323b872dd146104b357806325384fd8146104ae57806327c811a8146104a9578063331960ff146104a457806334ce998a1461049f57806334d441d01461049a5780633644e5151461049557806337b6b7b91461049057806338d52e0f1461048b5780633ba0b9a9146104865780633f741adb1461048157806340626d8b1461047c57806344de240a14610477578063473e3ce71461047257806348e4163e1461046d5780634ddf47d4146104685780634e71e0c8146104635780635224372c1461045e578063529898f214610459578063579354621461045457806358db9afe1461044f5780635d5f73ef1461044a5780636b19ad16146104455780636c3d8b8f1461044057806370a082311461043b578063727785471461043657806374645ff3146104315780637dc0d1d01461042c5780637ecebe00146104275780637fa0b84e146104225780638285ef401461041d57806387b27937146104185780638c5d0ed3146104135780638da5cb5b1461040e578063910dd7c814610409578063959916dc1461040457806399a97028146103ff5780639e15e89f146103fa578063a28e6b82146103f5578063a9059cbb146103f0578063aa7d9665146103eb578063af405b4c146103e6578063b0e21e8a146103e1578063b25ea8fb146103dc578063b27c0e74146103d7578063b7113f19146103d2578063bb4cfe3b146103cd578063bde39c5d146103c8578063c1ad5c8d146103c3578063c861a526146103be578063cce19f81146103b9578063cd0211eb146103b4578063ce8849ed146103af578063d505accf146103aa578063d8dfeb45146103a5578063dd62ed3e146103a0578063de4065771461039b578063e0996cb614610396578063e30c397814610391578063e5644d8b1461038c578063e9a4925214610387578063ea64dd5614610382578063eec0f42e1461037d578063f5b33dfa14610378578063f791395d146103735763f8ba4cff0361000e57612369565b61234b565b612322565b612304565b6122e6565b612262565b6121d9565b6121b0565b612192565b612169565b61212d565b612104565b612056565b61202d565b611fab565b611f57565b611f2e565b611f13565b611ef5565b611ed7565b611eb4565b611e83565b611df7565b611dd9565b611ba7565b611a94565b6119a7565b6118fd565b6118bf565b611894565b611877565b6117f6565b6117b2565b611794565b611757565b611725565b6116fb565b6116be565b611695565b6115bc565b61145d565b6113e2565b6113b9565b61139b565b611372565b6112cf565b6112b1565b611293565b611220565b61113e565b610fb0565b610f73565b610f55565b610f37565b610f19565b610ef5565b610ed7565b610eae565b610e90565b610e6d565b610e4f565b610e26565b610e08565b610c06565b610bdd565b610bc7565b610b7d565b610aaa565b610981565b6108f4565b6108d8565b6107e1565b610757565b6106e8565b6105a5565b610572565b61052d565b6001600160a01b0381160361050057565b600080fd5b60409060031901126105005760043561051d816104ef565b9060243561052a816104ef565b90565b3461050057602061056961054036610505565b6001600160a01b0391821660009081526003855260408082209290931681526020919091522090565b54604051908152f35b3461050057600036600319011261050057604061058d612df3565b825191151582526020820152f35b8015150361050057565b34610500576060366003190112610500576004356105c2816104ef565b602435906105cf8261059b565b604435916105dc8361059b565b6005546001600160a01b0391906105f69083163314612382565b156106cf578116918215908115916106c7575b501561068a576005546106789290610631906001600160a01b03165b6001600160a01b031690565b7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b600680546001600160a01b0319169055005b60405162461bcd60e51b81526020600482015260156024820152744f776e61626c653a207a65726f206164647265737360581b6044820152606490fd5b905038610609565b60068054919092166001600160a01b0319909116179055005b3461050057604036600319011261050057610712600435610708816104ef565b6024359033613623565b602060405160018152f35b3590610728826104ef565b565b9181601f84011215610500578235916001600160401b038311610500576020838186019501011161050057565b346105005761018036600319011261050057602435610775816104ef565b604435906001600160401b0382116105005761079861001992369060040161072a565b90606435926107a6846104ef565b610164359361014435936101243593610104359360e4359360c4359360a43593608435936004356123cd565b60043590600982101561050057565b34610500576040366003190112610500576107fa6107d2565b6024356108068161059b565b6008546001600160a01b0316330361089c5761088b8261083a61083561082e61001996611444565b5460ff1690565b151590565b610849841515918214156128b5565b61085561082e83611444565b61085e83611435565b1515827feeec81de25875ce1725479bb76f720a8defdb43dea041919ae37bb4aae9847c0600080a4611444565b9060ff801983541691151516179055565b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881d5b985d5d1a1bdc9a5e995960621b6044820152606490fd5b3461050057600036600319011261050057602060405160008152f35b3461050057602036600319011261050057600435610911816104ef565b60018060a01b031660005260186020526020604060002054604051908152f35b60ff81160361050057565b60e090600319011261050057600435610954816104ef565b90602435610961816104ef565b90604435906064359060843561097681610931565b9060a4359060c43590565b346105005761098f3661093c565b9592809594959291924211610a655761001996610a6093610a4d93610a40878a610a388b610a2a610a45996109c3866135a8565b60405195869460208601988991959493909260c09360e08401977f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d685526000602086015260018060a01b038092166040860152166060840152608083015260a08201520152565b03601f198101835282611542565b519020613552565b6134da565b9190916133bf565b6001600160a01b0383811691161461335a565b6135d0565b60405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b346105005760c036600319011261050057600435610ac7816104ef565b608435610ad3816104ef565b60a435906001600160401b03821161050057610b7992610b55610b5a92610a2a610b04610b6996369060040161072a565b604051958694630f74e47960e11b602087015260018060a01b0380921660248701526024356044870152604435606487015260643560848701521660a485015260c060c485015260e48401916141d4565b614415565b60208082518301019101612f2f565b6040519081529081906020820190565b0390f35b34610500576000366003190112610500576020602a54604051908152f35b606090600319011261050057600435610bb3816104ef565b90602435610bc0816104ef565b9060443590565b3461050057610bd536610b9b565b50505061438d565b3461050057600036600319011261050057602c546040516001600160a01b039091168152602090f35b34610500576080366003190112610500576004356024356044359060643592610c3a60018060a01b03600554163314612382565b600c54600a5460049190602090610c59906001600160a01b0316610625565b6040516364cfdbb760e11b815293849182905afa908115610e0357610c9492600092610dd3575b501460ff8019602654169115151617602655565b610ca7610ca360265460ff1690565b1590565b610cad57005b610cb561390a565b80610d8e575b5080610d49575b5080610d11575b5080610cd157005b80610ce3620186a061001993106143d9565b806021547f1f1d0e9e5e3fd195010504141e7472fc7f53e44d7cd3f236f0892778039c6326600080a3602155565b80610d43916029547fd00c912c9d1f75ac893827b7bb73eb82874daea46c2eaa6d2bd89f0c8ee57366600080a3602955565b38610cc9565b610d8890610d5a60285482116143d9565b806027547f5391ae26cacff12a54d10d45f0f04678de8bb9c9b2f784eb7074dac7cc0f8fd9600080a3602755565b38610cc2565b610dcd90610d9f60275482106143d9565b806028547fa54af2279046b0207f426565497319c4e274479ce71cb53598ec2391459be3f3600080a3602855565b38610cbb565b610df591925060203d8111610dfc575b610ded8183611542565b810190612f2f565b9038610c80565b503d610de3565b612d61565b34610500576000366003190112610500576020601354604051908152f35b34610500576000366003190112610500576014546040516001600160801b039091168152602090f35b34610500576000366003190112610500576020601954604051908152f35b34610500576000366003190112610500576020610e886130ea565b604051908152f35b34610500576000366003190112610500576020601254604051908152f35b3461050057600036600319011261050057600d546040516001600160a01b039091168152602090f35b34610500576000366003190112610500576020601154604051908152f35b34610500576060366003190112610500576020610e88604435602435600435612a46565b34610500576000366003190112610500576020601654604051908152f35b34610500576000366003190112610500576020600e54604051908152f35b34610500576000366003190112610500576020601554604051908152f35b3461050057602036600319011261050057600435610f90816104ef565b60018060a01b031660005260176020526020604060002054604051908152f35b34610500576020366003190112610500576004356001600160401b03811161050057610fe090369060040161072a565b60ff6023541661110357816101e0918101031261050057806110c66110076110e59361071d565b6110136020840161071d565b61101f6040850161071d565b916110a661102f6060870161071d565b9361103c6080880161071d565b9361104960a0890161071d565b9361105660e08a0161071d565b602b80546001600160a01b03199081166001600160a01b0394851617909155602d8054821695841695909517909455602c8054851693831693909317909255602e80549093169616959095179055565b6101c0850135926101a0860135926101008701359260c088013591613ca3565b6101808101359061016081013590610120610140820135910135613b29565b6110f162015180601255565b610019600160ff196023541617602355565b60405162461bcd60e51b815260206004820152601360248201527213585c9ad95d0e881a5b9a5d1a585b1a5e9959606a1b6044820152606490fd5b346105005760008060031936011261121d576006546001600160a01b0316338190036111d9576005546111c691908190611180906001600160a01b0316610625565b7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08580a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b600680546001600160a01b031916905580f35b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b80fd5b34610500576040611287611278610a2a61127361123c36610b9b565b87516314890dcb60e21b60208201526001600160a01b03938416602482015292909116604483015260648201529182906084820190565b6144ad565b602080825183010191016141be565b82519182526020820152f35b34610500576000366003190112610500576020602154604051908152f35b34610500576000366003190112610500576020601c54604051908152f35b346105005760a0366003190112610500576004356112ec816104ef565b6064356112f8816104ef565b608435906001600160401b03821161050057610b7992610b55610b5a92610a2a611329610b6996369060040161072a565b604051958694632c6dcd7f60e11b602087015260018060a01b0380921660248701526024356044870152604435606487015216608485015260a060a485015260c48401916141d4565b3461050057600036600319011261050057602b546040516001600160a01b039091168152602090f35b34610500576000366003190112610500576020602754604051908152f35b3461050057600036600319011261050057600a546040516001600160a01b039091168152602090f35b34610500576020366003190112610500576004356113ff816104ef565b60018060a01b031660005260016020526020604060002054604051908152f35b634e487b7160e01b600052602160045260246000fd5b6009111561143f57565b61141f565b600981101561143f576000526007602052604060002090565b34610500576020366003190112610500576114766107d2565b600981101561143f576000526007602052602060ff604060002054166040519015158152f35b90600182811c921680156114cc575b60208310146114b657565b634e487b7160e01b600052602260045260246000fd5b91607f16916114ab565b634e487b7160e01b600052604160045260246000fd5b604081019081106001600160401b0382111761150757604052565b6114d6565b60c081019081106001600160401b0382111761150757604052565b60e081019081106001600160401b0382111761150757604052565b90601f801991011681019081106001600160401b0382111761150757604052565b60005b8381106115765750506000910152565b8181015183820152602001611566565b9060209161159f81518092818552858086019101611563565b601f01601f1916010190565b90602061052a928181520190611586565b346105005760008060031936011261121d57604051816010546115de8161149c565b8084529060019081811690811561166d5750600114611614575b610b798461160881880382611542565b604051918291826115ab565b60108352602094507f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae6725b82841061165a5750505081610b799361160892820101936115f8565b805485850187015292850192810161163e565b610b7996506116089450602092508593915060ff191682840152151560051b820101936115f8565b3461050057600036600319011261050057600f546040516001600160a01b039091168152602090f35b34610500576020366003190112610500576004356116db816104ef565b60018060a01b031660005260046020526020604060002054604051908152f35b346105005760403660031901126105005761071260043561171b816104ef565b60243590336135d0565b3461050057600036600319011261050057601454604080516001600160801b038316815260809290921c602083015290f35b3461050057602036600319011261050057600435611774816104ef565b60018060a01b031660005260246020526020604060002054604051908152f35b34610500576000366003190112610500576020601b54604051908152f35b34610500576000366003190112610500576005546040516001600160a01b039091168152602090f35b6001600160401b03811161150757601f01601f191660200190565b34610500576040366003190112610500576004356001600160401b0381116105005736602382011215610500578060040135611831816117db565b9161183f6040519384611542565b81835236602483830101116105005781600092602460209301838601378301015260243561ffff811681036105005761001991613204565b346105005760003660031901126105005760208054604051908152f35b34610500576040366003190112610500576020610e886004356118b6816104ef565b60243590613007565b346105005760403660031901126105005760606118ea6004356118e1816104ef565b60243590612b2a565b9060405192835260208301526040820152f35b346105005760803660031901126105005760043561191a816104ef565b602435611926816104ef565b60443590611933826104ef565b606435926001600160401b03841161050057610a2a6119a29261195d61001996369060040161072a565b60405163514735c160e11b60208201526001600160a01b03958616602482015292851660448401529390951660648201526080608482015293849260a48401916141d4565b6144d7565b34610500576040366003190112610500576119c36004356104ef565b61438d565b9181601f84011215610500578235916001600160401b038311610500576020808501948460051b01011161050057565b906040820191604081528151809352606081019260208093019060005b818110611a7e57505050818184039101528251908183528083019281808460051b8301019501936000915b848310611a505750505050505090565b9091929394958480611a6e600193601f198682030187528a51611586565b9801930193019194939290611a40565b8251151586529484019491840191600101611a15565b346105005760408060031936011261050057600480356001600160401b03811161050057611ac590369083016119c8565b9290602435611ad38161059b565b611adc85613fa9565b93611ae686613fdb565b95600090815b818110611b0157865180610b798b8b836119f8565b8280611b0e83858a61403b565b90611b1d8b5180938193614081565b0390305af4611b2a61408f565b90801580611ba0575b611b79578291611b54611b5992611b4d611b74968e6140bf565b9015159052565b6140d3565b611b63828c6140bf565b52611b6e818b6140bf565b50613599565b611aec565b8886611b9c611b87856140d3565b925162461bcd60e51b815292839283016115ab565b0390fd5b5086611b33565b346105005760008060031936011261121d57611bce60018060a01b03600554163314612382565b600d54611be3906001600160a01b0316610625565b604080516370a0823160e01b815230600482015260209390928484602481845afa908115610e0357611c5f948392611dba575b50600954611c2c906001600160a01b0316610625565b600e548551638eb22cdd60e01b815260048101919091526024810184905260006044820152958790879081906064820190565b0381845afa958615610e03578496611d9b575b5085611c83575b8451868152602090f35b845163095ea7b360e01b81526001600160a01b03919091166004820152602481019290925290919085908390604490829085905af1908115610e0357611d259584938693611d6d575b5050600954611ce3906001600160a01b0316610625565b600e548451634d4d7cbd60e11b8152600481019190915230602482015233604482015260006064820152608481019390935291958692918391829060a4820190565b03925af1928315610e0357610b7993611d41575b808080611c79565b611d6090823d8411611d66575b611d588183611542565b8101906141be565b50611d39565b503d611d4e565b81611d8c92903d10611d94575b611d848183611542565b8101906143c4565b503880611ccc565b503d611d7a565b611db3919650873d8911610dfc57610ded8183611542565b9438611c72565b611dd2919250863d8811610dfc57610ded8183611542565b9038611c16565b34610500576000366003190112610500576020601a54604051908152f35b3461050057604036600319011261050057602435611e14816104ef565b611e2960018060a01b03600554163314612382565b60008080808094600435905af1611e3e61408f565b5015611e475780f35b60405162461bcd60e51b815260206004820152601460248201527321211d103a3930b739b332b9103330b4b632b21760611b6044820152606490fd5b346105005760003660031901126105005760406025548151906001600160401b03908181168352831c166020820152f35b3461050057600036600319011261050057602060ff602654166040519015158152f35b34610500576000366003190112610500576020601e54604051908152f35b34610500576000366003190112610500576020602954604051908152f35b34610500576000366003190112610500576020610e88613692565b3461050057600036600319011261050057602d546040516001600160a01b039091168152602090f35b3461050057610019610a2a611fa6611f6e36610b9b565b60405163cce19f8160e01b60208201526001600160a01b03938416602482015292909116604483015260648201529182906084820190565b614501565b3461050057608036600319011261050057610b79610b69610b5a600435611fd1816104ef565b60243590611fde826104ef565b60443590611feb8261059b565b6040519263cd0211eb60e01b602085015260018060a01b038092166024850152166044830152151560648201526064356084820152608481526112738161150c565b34610500576000366003190112610500576008546040516001600160a01b039091168152602090f35b34610500576120643661093c565b9592809594959291924211610a6557610019966120ff93610a4d93610a40878a610a388b610a2a610a4599612098866135a8565b60405195869460208601988991959493909260c09360e08401977f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e26685526000602086015260018060a01b038092166040860152166060840152608083015260a08201520152565b613623565b3461050057600036600319011261050057600b546040516001600160a01b039091168152602090f35b3461050057602061056961214036610505565b6001600160a01b0391821660009081526002855260408082209290931681526020919091522090565b34610500576000366003190112610500576009546040516001600160a01b039091168152602090f35b34610500576000366003190112610500576020601d54604051908152f35b34610500576000366003190112610500576006546040516001600160a01b039091168152602090f35b34610500576080366003190112610500576001600160401b036004358181116105005761220a9036906004016119c8565b90602435838111610500576122239036906004016119c8565b906044358581116105005761223c9036906004016119c8565b9290916064359687116105005761225a6100199736906004016119c8565b9690956142c6565b346105005760a036600319011261050057610019600435612282816104ef565b6024359061228f826104ef565b6044359061229c8261059b565b604051926374d2492960e11b602085015260018060a01b03809216602485015216604483015215156064820152606435608482015260843560a482015260a48152611fa681611527565b34610500576000366003190112610500576020601f54604051908152f35b34610500576000366003190112610500576020600c54604051908152f35b3461050057600036600319011261050057602e546040516001600160a01b039091168152602090f35b34610500576000366003190112610500576020602854604051908152f35b346105005760003660031901126105005761001961390a565b1561238957565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b98969492909a9997959391600160a01b6001900391826005541633146123f290612382565b620186a09c6124038e8d1115612683565b6020549b8060009d7fc353b09af857951dccce61b43a5854fc45beceed36c50e5d4cc2e71858a8e0df8f80a360205583811661263a575b5080612606575b50508116908161259f575b505080612584575b5080612569575b508061254f575b5080612528575b5080612501575b50806124c9575b5050806124a0575b5050806124895750565b6107289061249b601e5482101561284e565b601f55565b6124af6124c292821115612683565b6124bd601f548211156127f4565b601e55565b388061247f565b806124fa927fae6e0ab3b95f0a53ff9660a390ccedcbbf1f2355dce974a9841af106fddcfaba6016549180a3601655565b3880612477565b80612510866125229310612683565b61251d601b548211612683565b601c55565b38612470565b80612537876125499310612683565b612544601c548210612683565b601b55565b38612469565b8061255e886125639310612683565b601d55565b38612462565b806125798961257e931115612683565b601a55565b3861245b565b806125948a612599931115612683565b601955565b38612454565b6008546125ff92906125b9906001600160a01b0316610625565b7f5a62d22209e370e38eea92cfddcd228e656e6ec139243392a760a7769f5877fd8b80a3600880546001600160a01b0319166001600160a01b0392909216919091179055565b388061244c565b61260f91612717565b7fa6f004921c944d4b8bf6e38462b00f36a58d62495d56b51f571ab78f732c98158980a13880612441565b600f80546001600160a01b0319166001600160a01b039092169190911790557f0b2d6eb667d0522c3eb86e4288afecae6c11591ffd1345d4d12407e0598bca9b8b80a13861243a565b1561268a57565b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881b9bdd081d985b1a59607a1b6044820152606490fd5b601f81116126cf575050565b6000906010825260208220906020601f850160051c8301941061270d575b601f0160051c01915b82811061270257505050565b8181556001016126f6565b90925082906126ed565b91906001600160401b0381116115075761273b8161273660105461149c565b6126c3565b6000601f82116001146127755781929360009261276a575b50508160011b916000199060031b1c191617601055565b013590503880612753565b6010600052601f198216937f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae67291805b8681106127dc57508360019596106127c2575b505050811b01601055565b0135600019600384901b60f8161c191690553880806127b7565b909260206001819286860135815501940191016127a4565b156127fb57565b60405162461bcd60e51b815260206004820152602560248201527f4d61726b65743a20636f6c6c61746572616c697a6174696f6e5261746520746f6044820152646f2062696760d81b6064820152608490fd5b1561285557565b60405162461bcd60e51b815260206004820152603260248201527f4d61726b65743a206c69717569646174696f6e436f6c6c61746572616c697a616044820152711d1a5bdb94985d19481d1bdbc81cdb585b1b60721b6064820152608490fd5b156128bc57565b60405162461bcd60e51b81526020600482015260126024820152714d61726b65743a2073616d6520737461746560701b6044820152606490fd5b634e487b7160e01b600052601160045260246000fd5b90620186a09182810292818404149015171561292457565b6128f6565b90670de0b6b3a76400009182810292818404149015171561292457565b8181029291811591840414171561292457565b634e487b7160e01b600052601260045260246000fd5b8115612979570490565b612959565b604d811161292457600a0a90565b9190820391821161292457565b9190820180921161292457565b8181039291600013801582851316918412161761292457565b906509184e72a0009182810292818405149015171561292457565b90670de0b6b3a76400009182810292818405149015171561292457565b818102929160008212600160ff1b82141661292457818405149015171561292457565b811561297957600160ff1b8114600019831416612924570590565b600160ff1b81146129245760000390565b60145491929190612a61906001600160801b03831690612946565b9060801c90811561297957612a8e91612a7f910493601f5490612946565b612a888361297e565b9061296f565b90818310612b2257612af3612aed612ae8612aac612af8958761298c565b93612ae3612add612ad4601e54612ace612ac58661297e565b60215490612999565b90612946565b612a888461297e565b9161297e565b6129a6565b6129bf565b916129da565b612a1a565b6000811215612b1c57612b0a90612a35565b905b808211612b17575090565b905090565b90612b0c565b505050600090565b6001600160a01b03811660009081526017602052604081205491939290918015612c9c57612bc890612b5a613877565b93612b66841515612ee3565b600954602090612b7e906001600160a01b0316610625565b600c546001600160a01b038a1660009081526018602052604080822054905163442c159960e01b815260048101939093526024830152604482015294859190829081906064820190565b03915afa928315610e0357612c7395612a88612c2b6020612c37612c188a612c13612c0a612c6d9c612c469a8c91612c7f575b50602254620186a09004612ace565b601e5490612946565b61296f565b8551909890612ace906001600160801b03165b6001600160801b031690565b9301516001600160801b031690565b90828210612c775750035b6001600160a01b03909516600090815260186020526040902090565b54612f3e565b9091565b915050612c51565b612c969150873d8111610dfc57610ded8183611542565b38612bfb565b505080919250918190565b91908260409103126105005760208251612cc08161059b565b92015190565b602080825260009160105491612cdb8361149c565b9283828401526001908181169081600014612d3e5750600114612d00575b5050505090565b929350601060005280600020926000935b858510612d2a5750505060409250010138808080612cf9565b805485850160400152938201938101612d11565b925050506040935060ff929192191683830152151560051b010138808080612cf9565b6040513d6000823e3d90fd5b15612d7457565b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881c985d19481d1bdbc81bdb1960621b6044820152606490fd5b15612db757565b60405162461bcd60e51b81526020600482015260146024820152734d61726b65743a20696e76616c6964207261746560601b6044820152606490fd5b600f54612e08906001600160a01b0316610625565b6040805163d6d7d52560e01b81529291839081600081612e2a60048201612cc6565b03925af18015610e03576000928391612eaf575b50908215612e8a57612e51821515612db0565b612e5a82601155565b817f9f9192b5edb17356c524e08d9e025c8e2f6307e6ea52fb7968faa3081f51c3c8600080a25b61072842601355565b9050612ea6612e9e60135460125490612999565b421115612d6d565b60115490612e81565b9050612ed391925060403d8111612edc575b612ecb8183611542565b810190612ca7565b91909138612e3e565b503d612ec1565b15612eea57565b60405162461bcd60e51b815260206004820152601e60248201527f4d61726b65743a2065786368616e676552617465206e6f742076616c696400006044820152606490fd5b90816020910312610500575190565b612f936020831592612f508415612ee3565b600954600c5460405163442c159960e01b81526004810191909152602481019290925260006044830152909283916001600160a01b031690829081906064820190565b03915afa8015610e0357612fb391600091612fcd575b5060225490612946565b906129795704620186a0612fc9601e5483612946565b0491565b612fe5915060203d8111610dfc57610ded8183611542565b38612fa9565b9190916000838201938412911290801582169115161761292457565b9061302b61304991612c6d8460018060a01b03166000526018602052604060002090565b6001600160a01b039093166000908152601760205260409020909291565b548015612b22578215612b2257828110612b2257818110156130e157826130a161309c6130a795613097612a889561308d6014549160018060801b03831690612946565b9060801c9061296f565b61298c565b61290c565b9261298c565b6130d5601b54916130d06130c7601c54926130c284876129a6565b6129f7565b620186a0900590565b612feb565b90808212612b17575090565b505050601b5490565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031614806131db575b15613145577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f000000000000000000000000000000000000000000000000000000000000000082527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a081526131d58161150c565b51902090565b507f0000000000000000000000000000000000000000000000000000000000000000461461311c565b6101009081818051810103126105005760208101516132228161059b565b604082015192613231846104ef565b606083015194613240866104ef565b60808401519460a085015160c08601519361325a85610931565b60e08701519601516001600160a01b0392831698831696428310610a655761331c956133108a8c610a388199610a2a613315998f8f600014613333577f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e266965b6132c2876135a8565b60408051602081019a8b5261ffff909716908701526001600160a01b03978816606087015296909116608085015260a084015260c083019490945260e0820193909352918290610100820190565b6133a6565b161461335a565b1561332a5761072892613623565b610728926135d0565b7f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d6966132b9565b1561336157565b60405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152606490fd5b9161052a9391610a45936134da565b6005111561143f57565b6133c8816133b5565b806133d05750565b6133d9816133b5565b600181036134215760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b6044820152606490fd5b61342a816133b5565b600281036134775760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606490fd5b806134836003926133b5565b1461348a57565b60405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608490fd5b9291906fa2a8918ca85bafe22016d0b997e4df60600160ff1b0383116135465791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa15610e035781516001600160a01b03811615613540579190565b50600190565b50505050600090600390565b61355a6130ea565b9060405190602082019261190160f01b84526022830152604282015260428152608081018181106001600160401b038211176115075760405251902090565b60001981146129245760010190565b6001600160a01b031660009081526004602052604090208054906135cb82613599565b905590565b6001600160a01b03908116600081815260036020908152604080832095909416808352949052918220849055907fe50de2333c10a9502fcb1d8ae13a51bbf423153dfc63c2b8997665b32154afc39080a4565b6001600160a01b0390811660008181526002602090815260408083208686168452825290912091937f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259391928690556040519586521693a3565b90816020910312610500575161052a816104ef565b60265460ff166137df576014546001600160801b031680156137d857600a546136c3906001600160a01b0316610625565b6040518091631848f2bf60e31b825281600460209384935afa918215610e035760049282916000916137ab575b50604051631a674cc560e11b815293849182906001600160a01b03165afa8015610e035761373d9261372f9260009261378e575b505060295490612946565b670de0b6b3a7640000900490565b8082101561378657612a88613761926130a161375c602a54809361298c565b612929565b612b0a6027549161378161372f6028549261377c848761298c565b612946565b612999565b505060275490565b6137a49250803d10610dfc57610ded8183611542565b3880613724565b6137cb9150823d84116137d1575b6137c38183611542565b81019061367d565b386136f0565b503d6137b9565b5060285490565b600a546004906020906137fa906001600160a01b0316610625565b60405163e6abad4960e01b815292839182905afa908115610e0357600091613820575090565b61052a915060203d8111610dfc57610ded8183611542565b60405190613845826114ec565b6014546001600160801b038116835260801c6020830152565b6001600160801b03918216908216019190821161292457565b60006020604051613887816114ec565b82815201526001600160401b03908160255460401c1691824203924284116129245742146138ff576138fa61377c91670de0b6b3a76400006138ef6138ca613838565b9660018060801b03958694858a5116906301e133806138e7613692565b041690612946565b04168285511661385e565b168252565b50905061052a613838565b604051613916816114ec565b6025546001600160401b038181809316845260401c1661393d60208401918083524261298c565b928315613a905761398f613a679261397f61397261396661395c613692565b6301e13380900490565b6001600160401b031690565b6001600160401b03168452565b8442166001600160401b03169052565b613a226139cf61372f6139a0613838565b805190979061377c906139bb906001600160801b0316612c2b565b612ace61396688516001600160401b031690565b85519095906139fb906139ee906001600160801b03808a16911661385e565b6001600160801b03168252565b805160209091015160801b6001600160801b0319166001600160801b039190911617601455565b613a5a816001600160401b038151166025549160206001600160401b0360401b91015160401b169160018060801b0319161717602555565b516001600160401b031690565b16907f7484db546dcd57af0104c73c8a6968dfbaf5767f047cee0dadd0499ad7df81a0600080a3565b50505050565b15613a9d57565b60405162461bcd60e51b815260206004820152601860248201527710908e881919589d081c985d195cc81b9bdd081d985b1a5960421b6044820152606490fd5b15613ae457565b60405162461bcd60e51b815260206004820152601b60248201527f42423a206d617820646562742072617465206e6f742076616c696400000000006044820152606490fd5b9291906004600c546020613b47610625600a5460018060a01b031690565b6040516364cfdbb760e11b815293849182905afa908115610e0357613b8192600092610dd357501460ff8019602654169115151617602655565b613b90610ca360265460ff1690565b613b9a5750505050565b613bc1613bc692613bbc613bcb96602854151580613bf8575b613bd457602955565b602755565b602855565b602a55565b38808080613a90565b613bdf838610613a96565b613bf3670de0b6b3a7640000841115613add565b602955565b506027541515613bb3565b15613c0a57565b60405162461bcd60e51b815260206004820152600c60248201526b21211d103130b2103830b4b960a11b6044820152606490fd5b15613c4557565b60405162461bcd60e51b815260206004820152603060248201527f42423a206c69717569646174696f6e20636f6c6c61746572616c697a6174696f60448201526f1b881c985d19481b9bdd081d985b1a5960821b6064820152608490fd5b600a80546001600160a01b0319166001600160a01b03831617905593959493929160405163de40657760e01b81526020946001600160a01b039086908390600490829085165afa8015610e035781613d2391600494600091613f75575b5060098054919092166001600160a01b03166001600160a01b0319909116179055565b600a54613d5e90613d3c906001600160a01b0316610625565b600580546001600160a01b0319166001600160a01b0392909216919091179055565b600a548690613d75906001600160a01b0316610625565b604051631192124760e11b815293849182905afa8015610e0357613dd892600091613f58575b50818516151580613f4d575b80613f42575b613db690613c03565b600d8054919092166001600160a01b03166001600160a01b0319909116179055565b600a546004908590613df2906001600160a01b0316610625565b6040516386c8e21d60e01b815292839182905afa928315610e0357613e2b613e5294613e4d93613e7498600092613f25575b5050600e55565b600b80546001600160a01b0319166001600160a01b0392909216919091179055565b600c55565b600f80546001600160a01b0319166001600160a01b0392909216919091179055565b613e7c612df3565b5050613e8a62015f90601955565b613e946000601a55565b8015613f1857601e555b8015613f0b57601f555b613eb7601f54601e5410613c3e565b8015613ef9576022555b613ecd62013880601b55565b613ed962015f90601c55565b613ee4612710601d55565b613eee6032602055565b610728612ee0602155565b50613ec1670de0b6b3a7640000602255565b50613ea86201388061249b565b50613e9e620124f86124bd565b613f3b9250803d10610dfc57610ded8183611542565b3880613e24565b508582161515613dad565b508181161515613da7565b613f6f9150873d89116137d1576137c38183611542565b38613d9b565b613f8c9150893d8b116137d1576137c38183611542565b38613d00565b6001600160401b0381116115075760051b60200190565b90613fb382613f92565b613fc06040519182611542565b8281528092613fd1601f1991613f92565b0190602036910137565b90613fe582613f92565b613ff26040519182611542565b8281528092614003601f1991613f92565b019060005b82811061401457505050565b806060602080938501015201614008565b634e487b7160e01b600052603260045260246000fd5b919081101561407c5760051b81013590601e19813603018212156105005701908135916001600160401b038311610500576020018236038113610500579190565b614025565b908092918237016000815290565b3d156140ba573d906140a0826117db565b916140ae6040519384611542565b82523d6000602084013e565b606090565b805182101561407c5760209160051b010190565b6103e881511161418a57604481511061415757600481015181019060208160248401930312610500576024810151906001600160401b03821161050057018160438201121561050057602481015161412a816117db565b926141386040519485611542565b818452604482840101116105005761052a916044602085019101611563565b50604051614164816114ec565b60168152754d61726b65743a206e6f2072657475726e206461746160501b602082015290565b50604051614197816114ec565b60178152764d61726b65743a20726561736f6e20746f6f206c6f6e6760481b602082015290565b9190826040910312610500576020825192015190565b908060209392818452848401376000828201840152601f01601f1916010190565b91908082526020809201929160005b828110614212575050505090565b9091929382806001928735614226816104ef565b848060a01b03168152019501910192919092614204565b9082818152602080910193818360051b82010194846000925b858410614267575050505050505090565b90919293949596601f198282030184528735601e19843603018112156105005783018681019190356001600160401b038111610500578036038313610500576142b5889283926001956141d4565b990194019401929594939190614256565b9295969094969391936040519660209663e5644d8b60e01b888a01528060a48a01608060248c01525260c48901959060005b89828210614365575050505087850360231990810160448a0152818652936001600160fb1b03821161050057614362996119a2988a98610a2a986143539560051b809284830137018981036003190160648b015201916141f5565b9285840301608486015261423d565b50565b808499600193949535614377816104ef565b848060a01b0316815201980191019190916142f8565b60405162461bcd60e51b815260206004820152600f60248201526e10908e881b9bdd08185b1b1bddd959608a1b6044820152606490fd5b90816020910312610500575161052a8161059b565b156143e057565b60405162461bcd60e51b815260206004820152600d60248201526c10908e881b9bdd081d985b1a59609a1b6044820152606490fd5b602e546001600160a01b0316801561447357816000929160208493519201905af49061443f61408f565b911561444757565b611b9c614453836140d3565b60405162461bcd60e51b8152602060048201529182916024830190611586565b60405162461bcd60e51b815260206004820152601260248201527110908e881b5bd91d5b19481b9bdd081cd95d60721b6044820152606490fd5b602c546001600160a01b0316801561447357816000929160208493519201905af49061443f61408f565b602b546001600160a01b0316801561447357816000929160208493519201905af49061443f61408f565b602d546001600160a01b0316801561447357816000929160208493519201905af49061443f61408f56fea2646970667358221220b63894d9978b72d2529a331d40e003a465dd466fe2b8b17cea564b21b9bd66d164736f6c63430008120033"; + "0x61014080604052346200018a5762000017816200018f565b600f81526001602082016e546170696f63612042696742616e6760881b8152602060405162000046816200018f565b8381520192603160f81b845251902091208160e052610100918183524660a0526040519160208301907f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f92838352604085015260608401524660808401523060a084015260a0835260c083019280841060018060401b03851117620001745760408490525190206080523060c052610120908152600580546001600160a01b0319163390811790915560007f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a362013880601b5562015f90601c55612710601d55612ee06020556103e8602d556148c59283620001ac843960805183613497015260a05183613552015260c05183613461015260e051836134e60152518261350c015251816134c30152f35b634e487b7160e01b600052604160045260246000fd5b600080fd5b604081019081106001600160401b03821117620001745760405256fe6080604052600436101561001b575b361561001957600080fd5b005b60003560e01c8062a02a201461053a57806302ce728f14610535578063078dfbe714610530578063095ea7b31461052b5780630c4e84f01461052657806318160ddd146105215780631c9e379b1461051c5780631d4d3a5d146105175780631da8bf10146105125780631ee9c8f21461050d5780631fb8f81a1461050857806323b872dd1461050357806325384fd8146104fe57806327c811a8146104f9578063331960ff146104f457806334ce998a146104ef57806334d441d0146104ea5780633644e515146104e557806337b6b7b9146104e057806338d52e0f146104db5780633ba0b9a9146104d65780633f741adb146104d157806340626d8b146104cc57806344de240a146104c7578063473e3ce7146104c257806348e4163e146104bd5780634ddf47d4146104b85780634e71e0c8146104b35780635224372c146104ae578063529898f2146104a9578063542afda3146104a4578063579354621461049f57806358db9afe1461049a5780635d5f73ef146104955780636b19ad16146104905780636c3d8b8f1461048b57806370a0823114610486578063727785471461048157806374645ff31461047c57806374c9e481146104775780637dc0d1d0146104725780637ecebe001461046d5780637fa0b84e146104685780638285ef401461046357806387b279371461045e5780638c5d0ed3146104595780638da5cb5b14610454578063910dd7c81461044f578063932bc4f81461044a57806399a97028146104455780639e15e89f14610440578063a28e6b821461043b578063a9059cbb14610436578063aa7d966514610431578063af405b4c1461042c578063b0e21e8a14610427578063b25ea8fb14610422578063b27c0e741461041d578063b7113f1914610418578063bb4cfe3b14610413578063bde39c5d1461040e578063c1ad5c8d14610409578063c861a52614610404578063c9c7d837146103ff578063cce19f81146103fa578063cd0211eb146103f5578063ce8849ed146103f0578063d3fb2a38146103eb578063d505accf146103e6578063d8dfeb45146103e1578063dd62ed3e146103dc578063de406577146103d7578063e0996cb6146103d2578063e30c3978146103cd578063e5644d8b146103c8578063e9a49252146103c3578063ea64dd56146103be578063eec0f42e146103b9578063f5b33dfa146103b4578063f791395d146103af578063f88188cb146103aa5763f8ba4cff0361000e57612862565b6127fb565b6127dd565b6127b4565b612796565b612778565b6126f4565b61266b565b612642565b612624565b6125fb565b6125bf565b612596565b6124e8565b612203565b6121cd565b61214b565b6120f7565b61201f565b611ff6565b611fdb565b611fbd565b611f9f565b611f7c565b611f4b565b611ebf565b611ea1565b611c6f565b611b5c565b611a6f565b6119c5565b611987565b61195c565b6118b8565b611837565b6117f3565b6117d5565b611798565b611766565b61173c565b6116ff565b6116d6565b6116b8565b6115df565b611480565b611405565b6113dc565b6113be565b611395565b6112f2565b6112d4565b6112b6565b611299565b611226565b611144565b610fa1565b610f64565b610f46565b610f28565b610f0a565b610ee6565b610ec8565b610e9f565b610e81565b610e5e565b610e40565b610e17565b610df9565b610bf7565b610bce565b610bb8565b610b6e565b610a9b565b610945565b6108cc565b61088f565b610873565b61077c565b610738565b6105f5565b6105c2565b61057d565b6001600160a01b0381160361055057565b600080fd5b60409060031901126105505760043561056d8161053f565b9060243561057a8161053f565b90565b346105505760206105b961059036610555565b6001600160a01b0391821660009081526003855260408082209290931681526020919091522090565b54604051908152f35b346105505760003660031901126105505760406105dd613167565b825191151582526020820152f35b8015150361055057565b34610550576060366003190112610550576004356106128161053f565b6024359061061f826105eb565b6044359161062c836105eb565b6005546001600160a01b039190610646908316331461287b565b1561071f57811691821590811591610717575b50156106da576005546106c89290610681906001600160a01b03165b6001600160a01b031690565b7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b600680546001600160a01b0319169055005b60405162461bcd60e51b81526020600482015260156024820152744f776e61626c653a207a65726f206164647265737360581b6044820152606490fd5b905038610659565b60068054919092166001600160a01b0319909116179055005b34610550576040366003190112610550576107626004356107588161053f565b6024359033613997565b602060405160018152f35b60043590600982101561055057565b346105505760403660031901126105505761079561076d565b6024356107a1816105eb565b6008546001600160a01b0316330361083757610826826107d56107d06107c961001996611467565b5460ff1690565b151590565b6107e484151591821415612c29565b6107f06107c983611467565b6107f983611458565b1515827feeec81de25875ce1725479bb76f720a8defdb43dea041919ae37bb4aae9847c0600080a4611467565b9060ff801983541691151516179055565b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881d5b985d5d1a1bdc9a5e995960621b6044820152606490fd5b3461055057600036600319011261055057602060405160008152f35b34610550576020366003190112610550576004356108ac8161053f565b60018060a01b031660005260186020526020604060002054604051908152f35b3461055057600036600319011261055057602a546040516001600160a01b039091168152602090f35b60ff81160361055057565b60e0906003190112610550576004356109188161053f565b906024356109258161053f565b90604435906064359060843561093a816108f5565b9060a4359060c43590565b346105505761095336610900565b9592809594959291924211610a295761001996610a2493610a1193610a04878a6109fc8b6109ee610a09996109878661391c565b60405195869460208601988991959493909260c09360e08401977f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d685526000602086015260018060a01b038092166040860152166060840152608083015260a08201520152565b03601f198101835282611565565b5190206138c6565b61384e565b919091613733565b6001600160a01b038381169116146136ce565b613944565b60405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b9181601f84011215610550578235916001600160401b038311610550576020838186019501011161055057565b346105505760c036600319011261055057600435610ab88161053f565b608435610ac48161053f565b60a435906001600160401b03821161055057610b6a92610b46610b4b926109ee610af5610b5a963690600401610a6e565b604051958694630f74e47960e11b602087015260018060a01b0380921660248701526024356044870152604435606487015260643560848701521660a485015260c060c485015260e484019161453e565b614779565b602080825183010191016132a3565b6040519081529081906020820190565b0390f35b34610550576000366003190112610550576020602954604051908152f35b606090600319011261055057600435610ba48161053f565b90602435610bb18161053f565b9060443590565b3461055057610bc636610b8c565b5050506146f1565b3461055057600036600319011261055057602f546040516001600160a01b039091168152602090f35b34610550576080366003190112610550576004356024356044359060643592610c2b60018060a01b0360055416331461287b565b600c54600a5460049190602090610c4a906001600160a01b0316610675565b6040516364cfdbb760e11b815293849182905afa908115610df457610c8592600092610dc4575b501460ff8019602554169115151617602555565b610c98610c9460255460ff1690565b1590565b610c9e57005b610ca6613c7e565b80610d7f575b5080610d3a575b5080610d02575b5080610cc257005b80610cd4620186a0610019931061473d565b806020547f1f1d0e9e5e3fd195010504141e7472fc7f53e44d7cd3f236f0892778039c6326600080a3602055565b80610d34916028547fd00c912c9d1f75ac893827b7bb73eb82874daea46c2eaa6d2bd89f0c8ee57366600080a3602855565b38610cba565b610d7990610d4b602754821161473d565b806026547f5391ae26cacff12a54d10d45f0f04678de8bb9c9b2f784eb7074dac7cc0f8fd9600080a3602655565b38610cb3565b610dbe90610d90602654821061473d565b806027547fa54af2279046b0207f426565497319c4e274479ce71cb53598ec2391459be3f3600080a3602755565b38610cac565b610de691925060203d8111610ded575b610dde8183611565565b8101906132a3565b9038610c71565b503d610dd4565b6130d5565b34610550576000366003190112610550576020601354604051908152f35b34610550576000366003190112610550576014546040516001600160801b039091168152602090f35b34610550576000366003190112610550576020601954604051908152f35b34610550576000366003190112610550576020610e7961345e565b604051908152f35b34610550576000366003190112610550576020601254604051908152f35b3461055057600036600319011261055057600d546040516001600160a01b039091168152602090f35b34610550576000366003190112610550576020601154604051908152f35b34610550576060366003190112610550576020610e79604435602435600435612dba565b34610550576000366003190112610550576020601654604051908152f35b34610550576000366003190112610550576020600e54604051908152f35b34610550576000366003190112610550576020601554604051908152f35b3461055057602036600319011261055057600435610f818161053f565b60018060a01b031660005260176020526020604060002054604051908152f35b34610550576020366003190112610550576004356001600160401b03811161055057610fd1903690600401610a6e565b60ff6022541661110957816101e0918101031261055057806110b7610ff86110d6936121f6565b611004602084016121f6565b611010604085016121f6565b91611097611020606087016121f6565b9361102d608088016121f6565b9361103a60a089016121f6565b9361104760e08a016121f6565b602e80546001600160a01b03199081166001600160a01b039485161790915560308054821695841695909517909455602f8054851693831693909317909255603180549093169616959095179055565b6101c0850135926101a0860135926101008701359260c088013591614017565b6101808101359061016081013590610120610140820135910135613e9d565b6110e262015180601255565b6110ec6000602c55565b6110f76103e8602d55565b610019600160ff196022541617602255565b60405162461bcd60e51b815260206004820152601360248201527213585c9ad95d0e881a5b9a5d1a585b1a5e9959606a1b6044820152606490fd5b3461055057600080600319360112611223576006546001600160a01b0316338190036111df576005546111cc91908190611186906001600160a01b0316610675565b7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08580a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b600680546001600160a01b031916905580f35b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b80fd5b3461055057604061128d61127e6109ee61127961124236610b8c565b87516314890dcb60e21b60208201526001600160a01b03938416602482015292909116604483015260648201529182906084820190565b614811565b60208082518301019101614528565b82519182526020820152f35b346105505760003660031901126105505760208054604051908152f35b34610550576000366003190112610550576020602c54604051908152f35b34610550576000366003190112610550576020601c54604051908152f35b346105505760a03660031901126105505760043561130f8161053f565b60643561131b8161053f565b608435906001600160401b03821161055057610b6a92610b46610b4b926109ee61134c610b5a963690600401610a6e565b604051958694632c6dcd7f60e11b602087015260018060a01b0380921660248701526024356044870152604435606487015216608485015260a060a485015260c484019161453e565b3461055057600036600319011261055057602e546040516001600160a01b039091168152602090f35b34610550576000366003190112610550576020602654604051908152f35b3461055057600036600319011261055057600a546040516001600160a01b039091168152602090f35b34610550576020366003190112610550576004356114228161053f565b60018060a01b031660005260016020526020604060002054604051908152f35b634e487b7160e01b600052602160045260246000fd5b6009111561146257565b611442565b6009811015611462576000526007602052604060002090565b346105505760203660031901126105505761149961076d565b6009811015611462576000526007602052602060ff604060002054166040519015158152f35b90600182811c921680156114ef575b60208310146114d957565b634e487b7160e01b600052602260045260246000fd5b91607f16916114ce565b634e487b7160e01b600052604160045260246000fd5b604081019081106001600160401b0382111761152a57604052565b6114f9565b60c081019081106001600160401b0382111761152a57604052565b60e081019081106001600160401b0382111761152a57604052565b90601f801991011681019081106001600160401b0382111761152a57604052565b60005b8381106115995750506000910152565b8181015183820152602001611589565b906020916115c281518092818552858086019101611586565b601f01601f1916010190565b90602061057a9281815201906115a9565b34610550576000806003193601126112235760405181601054611601816114bf565b808452906001908181169081156116905750600114611637575b610b6a8461162b81880382611565565b604051918291826115ce565b60108352602094507f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae6725b82841061167d5750505081610b6a9361162b928201019361161b565b8054858501870152928501928101611661565b610b6a965061162b9450602092508593915060ff191682840152151560051b8201019361161b565b34610550576000366003190112610550576020602d54604051908152f35b3461055057600036600319011261055057600f546040516001600160a01b039091168152602090f35b346105505760203660031901126105505760043561171c8161053f565b60018060a01b031660005260046020526020604060002054604051908152f35b346105505760403660031901126105505761076260043561175c8161053f565b6024359033613944565b3461055057600036600319011261055057601454604080516001600160801b038316815260809290921c602083015290f35b34610550576020366003190112610550576004356117b58161053f565b60018060a01b031660005260236020526020604060002054604051908152f35b34610550576000366003190112610550576020601b54604051908152f35b34610550576000366003190112610550576005546040516001600160a01b039091168152602090f35b6001600160401b03811161152a57601f01601f191660200190565b34610550576040366003190112610550576004356001600160401b03811161055057366023820112156105505780600401356118728161181c565b916118806040519384611565565b81835236602483830101116105505781600092602460209301838601378301015260243561ffff811681036105505761001991613578565b34610550576000806003193601126112235760405181602b546118da816114bf565b80845290600190818116908115611690575060011461190357610b6a8461162b81880382611565565b602b8352602094507f11c44e4875b74d31ff9fd779bf2566af7bd15b87fc985d01f5094b89e3669e4f5b8284106119495750505081610b6a9361162b928201019361161b565b805485850187015292850192810161192d565b34610550576040366003190112610550576020610e7960043561197e8161053f565b6024359061337b565b346105505760403660031901126105505760606119b26004356119a98161053f565b60243590612e9e565b9060405192835260208301526040820152f35b34610550576080366003190112610550576004356119e28161053f565b6024356119ee8161053f565b604435906119fb8261053f565b606435926001600160401b038411610550576109ee611a6a92611a25610019963690600401610a6e565b60405163514735c160e11b60208201526001600160a01b03958616602482015292851660448401529390951660648201526080608482015293849260a484019161453e565b61483b565b3461055057604036600319011261055057611a8b60043561053f565b6146f1565b9181601f84011215610550578235916001600160401b038311610550576020808501948460051b01011161055057565b906040820191604081528151809352606081019260208093019060005b818110611b4657505050818184039101528251908183528083019281808460051b8301019501936000915b848310611b185750505050505090565b9091929394958480611b36600193601f198682030187528a516115a9565b9801930193019194939290611b08565b8251151586529484019491840191600101611add565b346105505760408060031936011261055057600480356001600160401b03811161055057611b8d9036908301611a90565b9290602435611b9b816105eb565b611ba485614313565b93611bae86614345565b95600090815b818110611bc957865180610b6a8b8b83611ac0565b8280611bd683858a6143a5565b90611be58b51809381936143eb565b0390305af4611bf26143f9565b90801580611c68575b611c41578291611c1c611c2192611c15611c3c968e614429565b9015159052565b61443d565b611c2b828c614429565b52611c36818b614429565b5061390d565b611bb4565b8886611c64611c4f8561443d565b925162461bcd60e51b815292839283016115ce565b0390fd5b5086611bfb565b346105505760008060031936011261122357611c9660018060a01b0360055416331461287b565b600d54611cab906001600160a01b0316610675565b604080516370a0823160e01b815230600482015260209390928484602481845afa908115610df457611d27948392611e82575b50600954611cf4906001600160a01b0316610675565b600e548551638eb22cdd60e01b815260048101919091526024810184905260006044820152958790879081906064820190565b0381845afa958615610df4578496611e63575b5085611d4b575b8451868152602090f35b845163095ea7b360e01b81526001600160a01b03919091166004820152602481019290925290919085908390604490829085905af1908115610df457611ded9584938693611e35575b5050600954611dab906001600160a01b0316610675565b600e548451634d4d7cbd60e11b8152600481019190915230602482015233604482015260006064820152608481019390935291958692918391829060a4820190565b03925af1928315610df457610b6a93611e09575b808080611d41565b611e2890823d8411611e2e575b611e208183611565565b810190614528565b50611e01565b503d611e16565b81611e5492903d10611e5c575b611e4c8183611565565b810190614728565b503880611d94565b503d611e42565b611e7b919650873d8911610ded57610dde8183611565565b9438611d3a565b611e9a919250863d8811610ded57610dde8183611565565b9038611cde565b34610550576000366003190112610550576020601a54604051908152f35b3461055057604036600319011261055057602435611edc8161053f565b611ef160018060a01b0360055416331461287b565b60008080808094600435905af1611f066143f9565b5015611f0f5780f35b60405162461bcd60e51b815260206004820152601460248201527321211d103a3930b739b332b9103330b4b632b21760611b6044820152606490fd5b346105505760003660031901126105505760406024548151906001600160401b03908181168352831c166020820152f35b3461055057600036600319011261055057602060ff602554166040519015158152f35b34610550576000366003190112610550576020601e54604051908152f35b34610550576000366003190112610550576020602854604051908152f35b34610550576000366003190112610550576020610e79613a06565b34610550576000366003190112610550576030546040516001600160a01b039091168152602090f35b346105505760403660031901126105505760043561203c8161053f565b6024356001600160401b0381116105505761205b903690600401610a6e565b909160018060a01b0380916120758260055416331461287b565b1690816120b6575b50508061208657005b61208f9161296e565b7f01ac0e23e087c4b2e9f1a163db44f946de9dd51461fe7a401c523fc8d5db1c29600080a1005b81602a549182167f126a75207b8b11156ec1f4a0ad246f458582451fc5bee4b8a729a1a68886e132600080a36001600160a01b03191617602a55388061207d565b34610550576100196109ee61214661210e36610b8c565b60405163cce19f8160e01b60208201526001600160a01b03938416602482015292909116604483015260648201529182906084820190565b614865565b3461055057608036600319011261055057610b6a610b5a610b4b6004356121718161053f565b6024359061217e8261053f565b6044359061218b826105eb565b6040519263cd0211eb60e01b602085015260018060a01b038092166024850152166044830152151560648201526064356084820152608481526112798161152f565b34610550576000366003190112610550576008546040516001600160a01b039091168152602090f35b35906122018261053f565b565b3461055057610160366003190112610550576004356122218161053f565b6024356001600160401b03811161055057612240903690600401610a6e565b9160443561224d8161053f565b60643560843560a4359060c4359260e4359461010435966101243598610144359a60018060a01b03926122858460055416331461287b565b83811661249e575b5080612469575b505081169081612401575b5050806123e3575b50806123c5575b50806123a8575b508061237e575b5080612354575b508061231c575b50806122f0575b50806122d957005b610019906122eb601e54821015612bc2565b601f55565b80612303620186a0612316931115612b28565b612311601f54821115612b68565b601e55565b386122d1565b8061234e916016547fae6e0ab3b95f0a53ff9660a390ccedcbbf1f2355dce974a9841af106fddcfaba600080a3601655565b386122ca565b80612366620186a06123789310612b28565b612373601b548211612b28565b601c55565b386122c3565b80612390620186a06123a29310612b28565b61239d601c548210612b28565b601b55565b386122bc565b806123ba620186a06123bf9310612b28565b601d55565b386122b5565b806123d8620186a06123dd931115612b28565b601a55565b386122ae565b806123f6620186a06123fb931115612b28565b601955565b386122a7565b600854612462929061241b906001600160a01b0316610675565b7f5a62d22209e370e38eea92cfddcd228e656e6ec139243392a760a7769f5877fd600080a3600880546001600160a01b0319166001600160a01b0392909216919091179055565b388061229f565b61247291612a4b565b7fa6f004921c944d4b8bf6e38462b00f36a58d62495d56b51f571ab78f732c9815600080a13880612294565b600f80546001600160a01b0319166001600160a01b039092169190911790557f0b2d6eb667d0522c3eb86e4288afecae6c11591ffd1345d4d12407e0598bca9b600080a13861228d565b34610550576124f636610900565b9592809594959291924211610a29576100199661259193610a1193610a04878a6109fc8b6109ee610a099961252a8661391c565b60405195869460208601988991959493909260c09360e08401977f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e26685526000602086015260018060a01b038092166040860152166060840152608083015260a08201520152565b613997565b3461055057600036600319011261055057600b546040516001600160a01b039091168152602090f35b346105505760206105b96125d236610555565b6001600160a01b0391821660009081526002855260408082209290931681526020919091522090565b34610550576000366003190112610550576009546040516001600160a01b039091168152602090f35b34610550576000366003190112610550576020601d54604051908152f35b34610550576000366003190112610550576006546040516001600160a01b039091168152602090f35b34610550576080366003190112610550576001600160401b036004358181116105505761269c903690600401611a90565b90602435838111610550576126b5903690600401611a90565b90604435858111610550576126ce903690600401611a90565b929091606435968711610550576126ec610019973690600401611a90565b96909561462a565b346105505760a0366003190112610550576100196004356127148161053f565b602435906127218261053f565b6044359061272e826105eb565b604051926374d2492960e11b602085015260018060a01b03809216602485015216604483015215156064820152606435608482015260843560a482015260a481526121468161154a565b34610550576000366003190112610550576020601f54604051908152f35b34610550576000366003190112610550576020600c54604051908152f35b34610550576000366003190112610550576031546040516001600160a01b039091168152602090f35b34610550576000366003190112610550576020602754604051908152f35b34610550576040366003190112610550576004356024359061282860018060a01b0360055416331461287b565b602c5481602d54917f1eafaac7ca8c5e231c2378dbf01de74321ec7c0c9b113ecc54b2cbd513ec6b5e6020604051878152a4602c55602d55005b3461055057600036600319011261055057610019613c7e565b1561288257565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b601f81116128d2575050565b600090602b825260208220906020601f850160051c83019410612910575b601f0160051c01915b82811061290557505050565b8181556001016128f9565b90925082906128f0565b601f8111612926575050565b6000906010825260208220906020601f850160051c83019410612964575b601f0160051c01915b82811061295957505050565b81815560010161294d565b9092508290612944565b91906001600160401b03811161152a576129928161298d602b546114bf565b6128c6565b6000601f82116001146129cc578192936000926129c1575b50508160011b916000199060031b1c191617602b55565b0135905038806129aa565b602b600052601f198216937f11c44e4875b74d31ff9fd779bf2566af7bd15b87fc985d01f5094b89e3669e4f91805b868110612a335750836001959610612a19575b505050811b01602b55565b0135600019600384901b60f8161c19169055388080612a0e565b909260206001819286860135815501940191016129fb565b91906001600160401b03811161152a57612a6f81612a6a6010546114bf565b61291a565b6000601f8211600114612aa957819293600092612a9e575b50508160011b916000199060031b1c191617601055565b013590503880612a87565b6010600052601f198216937f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae67291805b868110612b105750836001959610612af6575b505050811b01601055565b0135600019600384901b60f8161c19169055388080612aeb565b90926020600181928686013581550194019101612ad8565b15612b2f57565b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881b9bdd081d985b1a59607a1b6044820152606490fd5b15612b6f57565b60405162461bcd60e51b815260206004820152602560248201527f4d61726b65743a20636f6c6c61746572616c697a6174696f6e5261746520746f6044820152646f2062696760d81b6064820152608490fd5b15612bc957565b60405162461bcd60e51b815260206004820152603260248201527f4d61726b65743a206c69717569646174696f6e436f6c6c61746572616c697a616044820152711d1a5bdb94985d19481d1bdbc81cdb585b1b60721b6064820152608490fd5b15612c3057565b60405162461bcd60e51b81526020600482015260126024820152714d61726b65743a2073616d6520737461746560701b6044820152606490fd5b634e487b7160e01b600052601160045260246000fd5b90620186a091828102928184041490151715612c9857565b612c6a565b90670de0b6b3a764000091828102928184041490151715612c9857565b81810292918115918404141715612c9857565b634e487b7160e01b600052601260045260246000fd5b8115612ced570490565b612ccd565b604d8111612c9857600a0a90565b91908203918211612c9857565b91908201809211612c9857565b81810392916000138015828513169184121617612c9857565b906509184e72a00091828102928184051490151715612c9857565b90670de0b6b3a764000091828102928184051490151715612c9857565b818102929160008212600160ff1b821416612c98578184051490151715612c9857565b8115612ced57600160ff1b8114600019831416612c98570590565b600160ff1b8114612c985760000390565b60145491929190612dd5906001600160801b03831690612cba565b9060801c908115612ced57612e0291612df3910493601f5490612cba565b612dfc83612cf2565b90612ce3565b90818310612e9657612e67612e61612e5c612e20612e6c9587612d00565b93612e57612e51612e48601e54612e42612e3986612cf2565b60205490612d0d565b90612cba565b612dfc84612cf2565b91612cf2565b612d1a565b612d33565b91612d4e565b612d8e565b6000811215612e9057612e7e90612da9565b905b808211612e8b575090565b905090565b90612e80565b505050600090565b6001600160a01b0381166000908152601760205260408120549193929091801561301057612f3c90612ece613beb565b93612eda841515613257565b600954602090612ef2906001600160a01b0316610675565b600c546001600160a01b038a1660009081526018602052604080822054905163442c159960e01b815260048101939093526024830152604482015294859190829081906064820190565b03915afa928315610df457612fe795612dfc612f9f6020612fab612f8c8a612f87612f7e612fe19c612fba9a8c91612ff3575b50602154620186a09004612e42565b601e5490612cba565b612ce3565b8551909890612e42906001600160801b03165b6001600160801b031690565b9301516001600160801b031690565b90828210612feb5750035b6001600160a01b03909516600090815260186020526040902090565b546132b2565b9091565b915050612fc5565b61300a9150873d8111610ded57610dde8183611565565b38612f6f565b505080919250918190565b91908260409103126105505760208251613034816105eb565b92015190565b60208082526000916010549161304f836114bf565b92838284015260019081811690816000146130b25750600114613074575b5050505090565b929350601060005280600020926000935b85851061309e575050506040925001013880808061306d565b805485850160400152938201938101613085565b925050506040935060ff929192191683830152151560051b01013880808061306d565b6040513d6000823e3d90fd5b156130e857565b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881c985d19481d1bdbc81bdb1960621b6044820152606490fd5b1561312b57565b60405162461bcd60e51b81526020600482015260146024820152734d61726b65743a20696e76616c6964207261746560601b6044820152606490fd5b600f5461317c906001600160a01b0316610675565b6040805163d6d7d52560e01b8152929183908160008161319e6004820161303a565b03925af18015610df4576000928391613223575b509082156131fe576131c5821515613124565b6131ce82601155565b817f9f9192b5edb17356c524e08d9e025c8e2f6307e6ea52fb7968faa3081f51c3c8600080a25b61220142601355565b905061321a61321260135460125490612d0d565b4211156130e1565b601154906131f5565b905061324791925060403d8111613250575b61323f8183611565565b81019061301b565b919091386131b2565b503d613235565b1561325e57565b60405162461bcd60e51b815260206004820152601e60248201527f4d61726b65743a2065786368616e676552617465206e6f742076616c696400006044820152606490fd5b90816020910312610550575190565b61330760208315926132c48415613257565b600954600c5460405163442c159960e01b81526004810191909152602481019290925260006044830152909283916001600160a01b031690829081906064820190565b03915afa8015610df45761332791600091613341575b5060215490612cba565b90612ced5704620186a061333d601e5483612cba565b0491565b613359915060203d8111610ded57610dde8183611565565b3861331d565b91909160008382019384129112908015821691151617612c9857565b9061339f6133bd91612fe18460018060a01b03166000526018602052604060002090565b6001600160a01b039093166000908152601760205260409020909291565b548015612e96578215612e9657828110612e965781811015613455578261341561341061341b9561340b612dfc956134016014549160018060801b03831690612cba565b9060801c90612ce3565b612d00565b612c80565b92612d00565b613449601b549161344461343b601c54926134368487612d1a565b612d6b565b620186a0900590565b61335f565b90808212612e8b575090565b505050601b5490565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316148061354f575b156134b9577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f000000000000000000000000000000000000000000000000000000000000000082527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a081526135498161152f565b51902090565b507f00000000000000000000000000000000000000000000000000000000000000004614613490565b610100908181805181010312610550576020810151613596816105eb565b6040820151926135a58461053f565b6060830151946135b48661053f565b60808401519460a085015160c0860151936135ce856108f5565b60e08701519601516001600160a01b0392831698831696428310610a2957613690956136848a8c6109fc81996109ee613689998f8f6000146136a7577f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e266965b6136368761391c565b60408051602081019a8b5261ffff909716908701526001600160a01b03978816606087015296909116608085015260a084015260c083019490945260e0820193909352918290610100820190565b61371a565b16146136ce565b1561369e5761220192613997565b61220192613944565b7f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d69661362d565b156136d557565b60405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152606490fd5b9161057a9391610a099361384e565b6005111561146257565b61373c81613729565b806137445750565b61374d81613729565b600181036137955760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b6044820152606490fd5b61379e81613729565b600281036137eb5760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606490fd5b806137f7600392613729565b146137fe57565b60405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608490fd5b9291906fa2a8918ca85bafe22016d0b997e4df60600160ff1b0383116138ba5791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa15610df45781516001600160a01b038116156138b4579190565b50600190565b50505050600090600390565b6138ce61345e565b9060405190602082019261190160f01b84526022830152604282015260428152608081018181106001600160401b0382111761152a5760405251902090565b6000198114612c985760010190565b6001600160a01b0316600090815260046020526040902080549061393f8261390d565b905590565b6001600160a01b03908116600081815260036020908152604080832095909416808352949052918220849055907fe50de2333c10a9502fcb1d8ae13a51bbf423153dfc63c2b8997665b32154afc39080a4565b6001600160a01b0390811660008181526002602090815260408083208686168452825290912091937f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259391928690556040519586521693a3565b90816020910312610550575161057a8161053f565b60255460ff16613b53576014546001600160801b03168015613b4c57600a54613a37906001600160a01b0316610675565b6040518091631848f2bf60e31b825281600460209384935afa918215610df4576004928291600091613b1f575b50604051631a674cc560e11b815293849182906001600160a01b03165afa8015610df457613ab192613aa392600092613b02575b505060285490612cba565b670de0b6b3a7640000900490565b80821015613afa57612dfc613ad592613415613ad06029548093612d00565b612c9d565b612e7e60265491613af5613aa360275492613af08487612d00565b612cba565b612d0d565b505060265490565b613b189250803d10610ded57610dde8183611565565b3880613a98565b613b3f9150823d8411613b45575b613b378183611565565b8101906139f1565b38613a64565b503d613b2d565b5060275490565b600a54600490602090613b6e906001600160a01b0316610675565b60405163e6abad4960e01b815292839182905afa908115610df457600091613b94575090565b61057a915060203d8111610ded57610dde8183611565565b60405190613bb98261150f565b6014546001600160801b038116835260801c6020830152565b6001600160801b039182169082160191908211612c9857565b60006020604051613bfb8161150f565b82815201526001600160401b03908160245460401c169182420392428411612c98574214613c7357613c6e613af091670de0b6b3a7640000613c63613c3e613bac565b9660018060801b03958694858a5116906301e13380613c5b613a06565b041690612cba565b041682855116613bd2565b168252565b50905061057a613bac565b604051613c8a8161150f565b6024546001600160401b038181809316845260401c16613cb1602084019180835242612d00565b928315613e0457613d03613ddb92613cf3613ce6613cda613cd0613a06565b6301e13380900490565b6001600160401b031690565b6001600160401b03168452565b8442166001600160401b03169052565b613d96613d43613aa3613d14613bac565b8051909790613af090613d2f906001600160801b0316612f9f565b612e42613cda88516001600160401b031690565b8551909590613d6f90613d62906001600160801b03808a169116613bd2565b6001600160801b03168252565b805160209091015160801b6001600160801b0319166001600160801b039190911617601455565b613dce816001600160401b038151166024549160206001600160401b0360401b91015160401b169160018060801b0319161717602455565b516001600160401b031690565b16907f7484db546dcd57af0104c73c8a6968dfbaf5767f047cee0dadd0499ad7df81a0600080a3565b50505050565b15613e1157565b60405162461bcd60e51b815260206004820152601860248201527710908e881919589d081c985d195cc81b9bdd081d985b1a5960421b6044820152606490fd5b15613e5857565b60405162461bcd60e51b815260206004820152601b60248201527f42423a206d617820646562742072617465206e6f742076616c696400000000006044820152606490fd5b9291906004600c546020613ebb610675600a5460018060a01b031690565b6040516364cfdbb760e11b815293849182905afa908115610df457613ef592600092610dc457501460ff8019602554169115151617602555565b613f04610c9460255460ff1690565b613f0e5750505050565b613f35613f3a92613f30613f3f96602754151580613f6c575b613f4857602855565b602655565b602755565b602955565b38808080613e04565b613f53838610613e0a565b613f67670de0b6b3a7640000841115613e51565b602855565b506026541515613f27565b15613f7e57565b60405162461bcd60e51b815260206004820152600c60248201526b21211d103130b2103830b4b960a11b6044820152606490fd5b15613fb957565b60405162461bcd60e51b815260206004820152603060248201527f42423a206c69717569646174696f6e20636f6c6c61746572616c697a6174696f60448201526f1b881c985d19481b9bdd081d985b1a5960821b6064820152608490fd5b600a80546001600160a01b0319166001600160a01b03831617905593959493929160405163de40657760e01b81526020946001600160a01b039086908390600490829085165afa8015610df45781614097916004946000916142df575b5060098054919092166001600160a01b03166001600160a01b0319909116179055565b600a546140d2906140b0906001600160a01b0316610675565b600580546001600160a01b0319166001600160a01b0392909216919091179055565b600a5486906140e9906001600160a01b0316610675565b604051631192124760e11b815293849182905afa8015610df45761414c926000916142c2575b508185161515806142b7575b806142ac575b61412a90613f77565b600d8054919092166001600160a01b03166001600160a01b0319909116179055565b600a546004908590614166906001600160a01b0316610675565b6040516386c8e21d60e01b815292839182905afa928315610df45761419f6141c6946141c1936141e89860009261428f575b5050600e55565b600b80546001600160a01b0319166001600160a01b0392909216919091179055565b600c55565b600f80546001600160a01b0319166001600160a01b0392909216919091179055565b6141f0613167565b50506141fe62015f90601955565b6142086000601a55565b801561428257601e555b801561427557601f555b61422b601f54601e5410613fb2565b8015614263576021555b61424162013880601b55565b61424d62015f90601c55565b614258612710601d55565b612201612ee0602055565b50614235670de0b6b3a7640000602155565b5061421c620138806122eb565b50614212620124f8612311565b6142a59250803d10610ded57610dde8183611565565b3880614198565b508582161515614121565b50818116151561411b565b6142d99150873d8911613b4557613b378183611565565b3861410f565b6142f69150893d8b11613b4557613b378183611565565b38614074565b6001600160401b03811161152a5760051b60200190565b9061431d826142fc565b61432a6040519182611565565b828152809261433b601f19916142fc565b0190602036910137565b9061434f826142fc565b61435c6040519182611565565b828152809261436d601f19916142fc565b019060005b82811061437e57505050565b806060602080938501015201614372565b634e487b7160e01b600052603260045260246000fd5b91908110156143e65760051b81013590601e19813603018212156105505701908135916001600160401b038311610550576020018236038113610550579190565b61438f565b908092918237016000815290565b3d15614424573d9061440a8261181c565b916144186040519384611565565b82523d6000602084013e565b606090565b80518210156143e65760209160051b010190565b6103e88151116144f45760448151106144c157600481015181019060208160248401930312610550576024810151906001600160401b0382116105505701816043820112156105505760248101516144948161181c565b926144a26040519485611565565b818452604482840101116105505761057a916044602085019101611586565b506040516144ce8161150f565b60168152754d61726b65743a206e6f2072657475726e206461746160501b602082015290565b506040516145018161150f565b60178152764d61726b65743a20726561736f6e20746f6f206c6f6e6760481b602082015290565b9190826040910312610550576020825192015190565b908060209392818452848401376000828201840152601f01601f1916010190565b91908082526020809201929160005b82811061457c575050505090565b90919293828060019287356145908161053f565b848060a01b0316815201950191019291909261456e565b90808352602080930192838260051b850194846000925b8584106145cf575050505050505090565b9091929394959681810384528735601e19843603018112156105505783018681019190356001600160401b038111610550578036038313610550576146198892839260019561453e565b9901940194019295949391906145be565b9295969094969391936040519660209663e5644d8b60e01b888a01528060a48a01608060248c01525260c48901959060005b898282106146c9575050505087850360231990810160448a0152818652936001600160fb1b038211610550576146c699611a6a988a986109ee986146b79560051b809284830137018981036003190160648b0152019161455f565b928584030160848601526145a7565b50565b8084996001939495356146db8161053f565b848060a01b03168152019801910191909161465c565b60405162461bcd60e51b815260206004820152600f60248201526e10908e881b9bdd08185b1b1bddd959608a1b6044820152606490fd5b90816020910312610550575161057a816105eb565b1561474457565b60405162461bcd60e51b815260206004820152600d60248201526c10908e881b9bdd081d985b1a59609a1b6044820152606490fd5b6031546001600160a01b031680156147d757816000929160208493519201905af4906147a36143f9565b91156147ab57565b611c646147b78361443d565b60405162461bcd60e51b81526020600482015291829160248301906115a9565b60405162461bcd60e51b815260206004820152601260248201527110908e881b5bd91d5b19481b9bdd081cd95d60721b6044820152606490fd5b602f546001600160a01b031680156147d757816000929160208493519201905af4906147a36143f9565b602e546001600160a01b031680156147d757816000929160208493519201905af4906147a36143f9565b6030546001600160a01b031680156147d757816000929160208493519201905af4906147a36143f956fea26469706673582212207be7e320bb2984fbf65472f8cfd2c46711293c44db184c62ca0c381f1e9bef8f64736f6c63430008120033"; type BigBangConstructorParams = | [signer?: Signer] diff --git a/src/typechain/tapioca-bar/factories/markets/singularity/SGLBorrow__factory.ts b/src/typechain/tapioca-bar/factories/markets/singularity/SGLBorrow__factory.ts index daf282ad..26a2cac0 100644 --- a/src/typechain/tapioca-bar/factories/markets/singularity/SGLBorrow__factory.ts +++ b/src/typechain/tapioca-bar/factories/markets/singularity/SGLBorrow__factory.ts @@ -1602,11 +1602,6 @@ const _abi = [ }, { inputs: [ - { - internalType: "uint256", - name: "_borrowOpeningFee", - type: "uint256", - }, { internalType: "contract IOracle", name: "_oracle", @@ -1935,7 +1930,7 @@ const _abi = [ ] as const; const _bytecode = - "0x6101408060405234620001e5576200001781620001ea565b601381526001602082017f546170696f63612053696e67756c617269747900000000000000000000000000815260206040516200005481620001ea565b8381520192603160f81b845251902091208160e052610100918183524660a0526040519160208301907f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f92838352604085015260608401524660808401523060a084015260a0835260c083019280841060018060401b03851117620001cf5760408490525190206080523060c052610120908152600580546001600160a01b0319163390811790915560007f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a362013880601b5562015f90601c55612710601d556032602055612ee06021557f0bd4060688a1800ae986e4840aebc924bb40b5bf44de4583df2257220b54b77c6027557f7d1dc38e60930664f8cbf495da6556ca091d2f92d6550877750c049864b182306028556161a860295561405f928362000207843960805183612b6e015260a05183612c39015260c05183612b38015260e05183612bbd01525182612be301525181612b9a0152f35b634e487b7160e01b600052604160045260246000fd5b600080fd5b604081019081106001600160401b03821117620001cf5760405256fe608060408181526004918236101561001657600080fd5b60009260e08435811c928362a02a20146120bb5750826302ce728f1461209257826306fdde0314611fda578263078dfbe714611ed5578263095ea7b314611eaa5782630996efb714611a2e5782630c4e84f01461191757826318160ddd146118f45782631c9e379b146118bb5782631da8bf101461180157826323b872dd14611679578263313ce56714611642578263331960ff1461162257826334d441d0146116025782633644e515146115e457826337b6b7b9146115c457826338d52e0f1461159a5782633ba0b9a91461157a5782633f741adb1461155157826340626d8b1461153157826344de240a14611511578263473e3ce7146114f157826348e4163e146114b85782634d7f2a34146114985782634e71e0c8146113e35782635224372c1461132c578263529898f21461130c57826352f353eb146112e357826355140232146112ba57826355c2ab941461129057826357935462146112705782635dfe04e81461120f5782636c3d8b8f146111e557826370a08231146111ac578263727785471461117457826374645ff3146111475782637dc0d1d01461111d5782637ecebe00146110e65782637fa0b84e146110b4578263821226e8146110945782638285ef40146110605782638c5d0ed3146110405782638da5cb5b14611016578263910dd7c814610d95578263959916dc14610d7657826395d89b4114610cbd57826399a9702814610c8c5782639c5d719214610c6c5782639e15e89f14610c30578263a9059cbb14610b54578263b0e21e8a14610b34578263b27c0e7414610af8578263bb4cfe3b14610ad8578263cd0211eb1461066b578263ce8849ed14610641578263d505accf146104ba5750508063d8dfeb4514610492578063dd62ed3e14610445578063de4065771461041d578063e0996cb6146103ff578063e30c3978146103d7578063ea64dd56146103b9578063eec0f42e1461039b578063f42760b71461037d578063f8ba4cff1461035e578063f9557ccb146103285763ffe04c661461030757600080fd5b34610324578160031936011261032457602090602a549051908152f35b5080fd5b503461032457816003193601126103245760255490516001600160801b038216815260809190911c6020820152604090f35b0390f35b823461037a578060031936011261037a57610377613d21565b80f35b80fd5b5034610324578160031936011261032457602090602b549051908152f35b5034610324578160031936011261032457602090600c549051908152f35b5034610324578160031936011261032457602090601f549051908152f35b503461032457816003193601126103245760065490516001600160a01b039091168152602090f35b5034610324578160031936011261032457602090601d549051908152f35b503461032457816003193601126103245760095490516001600160a01b039091168152602090f35b5034610324578060031936011261032457602091610461612101565b8261046a612117565b6001600160a01b03928316845260028652922091166000908152908352819020549051908152f35b5034610324578160031936011261032457600b5490516001600160a01b039091168152602090f35b8492503461063d576104cb36612193565b9183949895979342116105fa579161059d916105a5938c8b8b60018060a01b0398898d169a8b93846000528d602052856000209081549161050b83612e8f565b90558c87519560208701977f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e266895260008a890152606088015216608086015260a085015260c084015281830152815261056381612364565b51902061056e612b35565b915190602082019261190160f01b8452602283015260428201526042815261059581612380565b519020612e0a565b919091612d0b565b16036105b75750610377939450612eec565b606490602087519162461bcd60e51b8352820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152fd5b8a5162461bcd60e51b8152602081880152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b8280fd5b5050503461032457816003193601126103245760085490516001600160a01b039091168152602090f35b5083833461032457608036600319011261032457610687612101565b61068f612117565b90610698612184565b936064359160018252602095600787526106b860ff878520541615612f43565b6001600160a01b0385811695909390610715906106d730891415612f80565b6106df6126c6565b50506106e9613d21565b6106fa876106f56134b9565b613755565b905060115460ff61070e89600d541661344b565b1692613602565b8015610a95576107259084613685565b8581526017885286812054808611610a8d575b508415610a5257879861078198610751876106f56134b9565b8151601480546001600160801b0319166001600160801b03928316179055909b909290918391905b015116613cfc565b87835260178b528883206107968882546124b9565b90558560095416600e54928a5193638eb22cdd60e01b855280828601528c6024860152600160448601528d85606481865afa94851561095e578c918f918897610a1c575b506025548616948915610968575060448b60095416935180948193627eeac760e11b8352308884015260248301525afa801561095e5783908790610928575b61082392506124b9565b84116108f55750927fc8e512d8f188ca059984b5853d2bf653da902696b8512785b182b2c813789a6e95928c95926108638d9b9a99965b82841690613828565b1660018060801b0319602554161760255584841690818352602687528b83206027549081855288528c84205482116000146108d057505081526026855289812060275482528552808a8120555b50156108cb575080600954165b87519485521692a451908152f35b6108bd565b90918352602687528b832090835286526108ee8b83209182546124b9565b90556108b0565b8a5162461bcd60e51b81529081018d9052600d60248201526c0a68e987440e8dede40daeac6d609b1b6044820152606490fd5b50508d81813d8311610957575b61093f818361239b565b8101031261095257826108239151610819565b600080fd5b503d610935565b8c513d88823e3d90fd5b9250929050813b15610a18578c51630208d92960e11b81526001600160a01b038a169181019182523060208301526040820193909352606081018690528691839182908490829060800103925af18015610a0e57928c9a999895927fc8e512d8f188ca059984b5853d2bf653da902696b8512785b182b2c813789a6e9895928f98956109f9575b506108639061085a565b93610a076108639295612305565b93906109ef565b8b513d87823e3d90fd5b8680fd5b9250955081813d8311610a4b575b610a34818361239b565b81010312610a47578d8c915195386107da565b8580fd5b503d610a2a565b865162461bcd60e51b8152808a01899052601560248201527453474c3a206e6f7468696e6720746f20726570617960581b6044820152606490fd5b945089610738565b875162461bcd60e51b8152808b018a9052601d60248201527f53474c3a20616c6c6f77616e63655368617265206e6f742076616c69640000006044820152606490fd5b50505034610324578160031936011261032457602090601e549051908152f35b50505034610324578160031936011261032457606090602454908051916001600160401b03808216845281831c16602084015260801c90820152f35b50505034610324578160031936011261032457602090601a549051908152f35b50505034610324578060031936011261032457602091610b72612101565b82602435928315801590610c1e575b610bb1575b50519182526001600160a01b031690339060008051602061400a833981519152908590a35160018152f35b3381526001865281812054610bc885821015612c5f565b6001600160a01b038416908533839003610be5575b505050610b86565b610bf991610bf4841515612ca4565b6124b9565b3383526001885283832055815220610c128382546124c6565b90558238808085610bdd565b50336001600160a01b03841614610b81565b50505034610324578060031936011261032457606090610c5a610c51612101565b60243590612605565b91929081519384526020840152820152f35b50505034610324578160031936011261032457602090602c549051908152f35b50505034610324578060031936011261032457602090610cb6610cad612101565b60243590612a03565b9051908152f35b5090503461063d578260031936011261063d5791808061035a9460018060a01b03600b541690855160208101916395d89b4160e01b83528152610cff8161232e565b51915afa610d0b61341b565b915015610d6757610d1b90613e98565b905b610d5560238251809462746d2d60e81b6020830152610d45815180926020868601910161212d565b810103600381018552018361239b565b51918291602083526020830190612150565b50610d70613e41565b90610d1d565b5050503461032457816003193601126103245760209081549051908152f35b849184346110125780600319360112611012578135926001600160401b03841161100e573660238501121561100e578383013592610dd2846123bc565b94610ddf8451968761239b565b8486528660209182880196366024828401011161063d578060248593018937880101526024359361ffff851680950361100a5761010095868880518101031261100657610e2b906126b9565b93610e37828901612ce9565b90610e4460608a01612ce9565b9860808101519860a082015192610e5d60c08401612cfd565b91818401519301519360018060a01b03808097169d169a814211610fc357928d8f819897948f948f8f968f918f959a8f8c8195610f399f9c61059d9f50600014610f9c577f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e2669a5b825289522093845494610ed686612e8f565b905580519788019889528701528d6060870152608086015260a085015260c0840152818301528152610f0781612364565b519020610f12612b35565b908951908b82019261190160f01b8452602283015260428201526042815261059581612380565b1603610f5b57505050600014610f525761037792612eec565b61037792612e9e565b5162461bcd60e51b815291820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e61747572650000604482015260649150fd5b7f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d69a610ec4565b875162461bcd60e51b8152808b018a9052601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b8880fd5b8780fd5b8480fd5b8380fd5b5050503461032457816003193601126103245760055490516001600160a01b039091168152602090f35b50505034610324578160031936011261032457602090601b549051908152f35b5050503461032457816003193601126103245760145490516001600160801b038216815260809190911c6020820152604090f35b50505034610324578160031936011261032457602090602e549051908152f35b505050346103245780600319360112610324576020906110df6110d5612101565b6024359033612e9e565b5160018152f35b5090503461063d57602036600319011261063d5760209282916001600160a01b0361110f612101565b168252845220549051908152f35b50505034610324578160031936011261032457600f5490516001600160a01b039091168152602090f35b50505034610324578160031936011261032457805161035a91610d558261116d81612280565b038361239b565b5090503461063d57602036600319011261063d573591600983101561037a575060ff6111a1602093612217565b541690519015158152f35b505050346103245760203660031901126103245760209181906001600160a01b036111d5612101565b1681526001845220549051908152f35b50505034610324578160031936011261032457600a5490516001600160a01b039091168152602090f35b5050503461032457816003193601126103245760809061122d613809565b50611236613841565b50949593505050508051926001600160401b03808251168552602082015116602085015281600180871b0391015116908301526060820152f35b50505034610324578160031936011261032457602090601c549051908152f35b50505034610324578160031936011261032457602d548151911c6001600160401b03168152602090f35b505050346103245781600319360112610324576020906001600160401b03602d54169051908152f35b505050346103245781600319360112610324576020906001600160401b03602f54169051908152f35b505050346103245781600319360112610324576020906021549051908152f35b5090503461063d5761139a9061138e60ff849561136161134b366121e2565b9491989093808052600760205220541615612f43565b6113696126c6565b5050611373613d21565b6113886001600160a01b038216301415612f80565b85612fcb565b92909360115490613505565b156113ac575082519182526020820152f35b606490602085519162461bcd60e51b8352820152601160248201527013585c9ad95d0e881a5b9cdbdb1d995b9d607a1b6044820152fd5b8482853461063d578260031936011261063d576006546001600160a01b03929091838316919033839003611455575050806005549384167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08680a36001600160a01b0319928316176005551660065580f35b906020606492519162461bcd60e51b8352820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b505050346103245781600319360112610324576020906029549051908152f35b505050346103245760203660031901126103245760209181906001600160a01b036114e1612101565b1681526017845220549051908152f35b505050346103245781600319360112610324576020906015549051908152f35b50505034610324578160031936011261032457602090600e549051908152f35b505050346103245781600319360112610324576020906016549051908152f35b5082843461037a57606036600319011261037a5750610cb66020926044359060243590356124ec565b505050346103245781600319360112610324576020906011549051908152f35b50505034610324578160031936011261032457600d5490516001600160a01b039091168152602090f35b505050346103245781600319360112610324576020906012549051908152f35b50505034610324578160031936011261032457602090610cb6612b35565b505050346103245781600319360112610324576020906019549051908152f35b505050346103245781600319360112610324576020906013549051908152f35b50505034610324578160031936011261032457600d546020919060ff90611671906001600160a01b031661344b565b915191168152f35b5082843461037a5761168a366121e2565b9192826116c4575b508351918252602094506001600160a01b0390811692169060008051602061400a833981519152908590a35160018152f35b6001600160a01b0384811680835260016020908152878420549198929091906116ef87831015612c5f565b851692838a03611703575b50505050611692565b89855260028352888520338652835288852054906001820161176d575b5050928260209960018a9461174c8a8e99610bf460008051602061400a8339815191529c9a1515612ca4565b92855252838320558152206117628582546124c6565b9055918780806116fa565b8782106117c357509260209960018a9461174c8a8e999661179e8260008051602061400a8339815191529d9b6124b9565b86895260028552898920338a5285528989205596995050509450509981949650611720565b895162461bcd60e51b8152908101849052601860248201527745524332303a20616c6c6f77616e636520746f6f206c6f7760401b6044820152606490fd5b8492503461063d5761181236612193565b9397949690928042116105fa579386936118a9938c8c8961059d968e9a8e60018060a01b03809c169c8d948587526020528c8787209283549361185485612e8f565b905588519660208801987f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d68a528a890152606088015216608086015260a085015260c084015281830152815261056381612364565b16036105b75750610377939450612e9e565b505050346103245760203660031901126103245760209181906001600160a01b036118e4612101565b1681526018845220549051908152f35b5050503461032457816003193601126103245760209060255460801c9051908152f35b5090503461063d578160031936011261063d5780359060098210156110125761193e612175565b6008549093906001600160a01b031633036119f45760ff61195e84612217565b541615159315159384146119bc575050808260ff61197e6119ac94612217565b54161515827feeec81de25875ce1725479bb76f720a8defdb43dea041919ae37bb4aae9847c08780a4612217565b9060ff8019835416911617905580f35b906020606492519162461bcd60e51b835282015260126024820152714d61726b65743a2073616d6520737461746560701b6044820152fd5b906020606492519162461bcd60e51b8352820152601460248201527313585c9ad95d0e881d5b985d5d1a1bdc9a5e995960621b6044820152fd5b5090503461063d5761018036600319011261063d5760246001600160a01b03813581811690819003610a4757604435916001600160401b039081841161100a573660238501121561100a578386013591821161100a573685838601011161100a576064359181831680930361100657611aac826005541633146123d7565b863594620186a094611ac086881115612422565b602096808c7fc353b09af857951dccce61b43a5854fc45beceed36c50e5d4cc2e71858a8e0df8a549180a3875580611e6c575b508682611d31575b50505081611cf1575b505060843580611cdc575b5060a43580611cc7575b5060c43580611cb3575b5060e43580611c92575b506101043580611c71575b506101243580611c40575b50610144359081611bd2575b5050610164359384611b5f578580f35b601e548510611b785750505050601f5538808080808580f35b5162461bcd60e51b8152928301526032908201527f4d61726b65743a206c69717569646174696f6e436f6c6c61746572616c697a616044820152711d1a5bdb94985d19481d1bdbc81cdb585b1b60721b6064820152608490fd5b611bde90821115612422565b601f548111611bf157601e553880611b4f565b5090602591608494519362461bcd60e51b85528401528201527f4d61726b65743a20636f6c6c61746572616c697a6174696f6e5261746520746f6044820152646f2062696760d81b6064820152fd5b806016547fae6e0ab3b95f0a53ff9660a390ccedcbbf1f2355dce974a9841af106fddcfaba8980a360165538611b43565b611c7c828210612422565b611c89601b548211612422565b601c5538611b38565b611c9d828210612422565b611caa601c548210612422565b601b5538611b2d565b611cbe828210612422565b601d5538611b23565b611cd382821115612422565b601a5538611b19565b611ce882821115612422565b60195538611b0f565b816008549182167f5a62d22209e370e38eea92cfddcd228e656e6ec139243392a760a7769f5877fd8a80a36001600160a01b031916176008553880611b04565b8291611d3e601054612246565b601f8111611e1b575b508b90601f8411600114611dac578c93611d9f575b5050508160011b916000199060031b1c1916176010555b7fa6f004921c944d4b8bf6e38462b00f36a58d62495d56b51f571ab78f732c98158880a1388086611afb565b0101359050863880611d5c565b60108d52888d20601f198516955092509089908d5b8a878210611e005750508460019610611de4575b50505050811b01601055611d73565b60001960f88660031b161c199201013516905538808881611dd5565b8483019093013585556001909401938b929182019101611dc1565b9150915060108b52868b20601f840160051c8101888510611e65575b91849391601f8b94920160051c01905b818110611e545750611d47565b8d81558594508a9350600101611e47565b5080611e37565b600f80546001600160a01b0319169190911790557f0b2d6eb667d0522c3eb86e4288afecae6c11591ffd1345d4d12407e0598bca9b8a80a138611af3565b505050346103245780600319360112610324576020906110df611ecb612101565b6024359033612eec565b8482853461063d57606036600319011261063d57611ef1612101565b91611efa612175565b91611f03612184565b9260018060a01b03948591611f1d836005541633146123d7565b15611fc1571692831590811591611fb9575b5015611f7e575050806005549283167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08580a36001600160a01b03199182161760055560068054909116905580f35b906020606492519162461bcd60e51b835282015260156024820152744f776e61626c653a207a65726f206164647265737360581b6044820152fd5b905086611f2f565b93505050501660018060a01b0319600654161760065580f35b5090503461063d578260031936011261063d5791808061035a9460018060a01b03600b541690855160208101916306fdde0360e01b8352815261201c8161232e565b51915afa61202861341b565b9150156120835761203890613e98565b905b610d5560348251809473546170696f63612053696e67756c61726974792d60601b6020830152612073815180926020868601910161212d565b810103601481018552018361239b565b5061208c613e41565b9061203a565b83853461037a578060031936011261037a57506120ad6126c6565b825191151582526020820152f35b8590853461063d578060031936011261063d576020926120d9612101565b6120e1612117565b6001600160a01b0391821683526003865283832091168252845220548152f35b600435906001600160a01b038216820361095257565b602435906001600160a01b038216820361095257565b60005b8381106121405750506000910152565b8181015183820152602001612130565b906020916121698151809281855285808601910161212d565b601f01601f1916010190565b60243590811515820361095257565b60443590811515820361095257565b60e0906003190112610952576001600160a01b03906004358281168103610952579160243590811681036109525790604435906064359060843560ff81168103610952579060a4359060c43590565b6060906003190112610952576001600160a01b0390600435828116810361095257916024359081168103610952579060443590565b6009811015612230576000526007602052604060002090565b634e487b7160e01b600052602160045260246000fd5b90600182811c92168015612276575b602083101461226057565b634e487b7160e01b600052602260045260246000fd5b91607f1691612255565b6010546000929161229082612246565b9081815260019283811690816000146122ea57506001146122b057505050565b9092935060106000526020928360002092846000945b8386106122d65750505050010190565b8054858701830152940193859082016122c6565b91935050602093945060ff191683830152151560051b010190565b6001600160401b03811161231857604052565b634e487b7160e01b600052604160045260246000fd5b604081019081106001600160401b0382111761231857604052565b606081019081106001600160401b0382111761231857604052565b61010081019081106001600160401b0382111761231857604052565b608081019081106001600160401b0382111761231857604052565b90601f801991011681019081106001600160401b0382111761231857604052565b6001600160401b03811161231857601f01601f191660200190565b156123de57565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b1561242957565b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881b9bdd081d985b1a59607a1b6044820152606490fd5b8181029291811591840414171561247557565b634e487b7160e01b600052601160045260246000fd5b8115612495570490565b634e487b7160e01b600052601260045260246000fd5b604d811161247557600a0a90565b9190820391821161247557565b9190820180921161247557565b8181039291600013801582851316918412161761247557565b601454919291612535916125269161251c91612512906001600160801b03831690612462565b9060801c9061248b565b93601f5490612462565b61252f836124ab565b9061248b565b8083106125fd5761254961258591846124b9565b9161258061257a612571601e5461256b612562866124ab565b602154906124c6565b90612462565b61252f846124ab565b916124ab565b6124d3565b6509184e72a0009081810291818305149015171561247557670de0b6b3a76400009182810292818405149015171561247557801561249557600160ff1b9180831460001983141661247557059060008212156125f657811461247557600003905b8082116125f1575090565b905090565b50906125e6565b505050600090565b6001600160a01b0381166000818152601760205260408120549194939290919081156126ad57916040916126896126a1959483602086516126458161232e565b828152015261266386612656613841565b505050505093905061287a565b815190936001600160801b039160209161267f91841690612462565b920151169061248b565b8181106126a557035b9581526018602052205461294c565b9091565b505080612692565b50509192505080918190565b5190811515820361095257565b600f546040805163d6d7d52560e01b8152602060048201529290916001600160a01b03168284806126f960248201612280565b0381600080955af1801561282257819482916127e6575b5092841561278957831561274f57507f9f9192b5edb17356c524e08d9e025c8e2f6307e6ea52fb7968faa3081f51c3c883918260115580a25b42601355565b5162461bcd60e51b81526020600482015260146024820152734d61726b65743a20696e76616c6964207261746560601b6044820152606490fd5b9192505061279c601354601254906124c6565b42116127ac575060115490612749565b5162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881c985d19481d1bdbc81bdb1960621b6044820152606490fd5b809550848092503d831161281b575b6127ff818361239b565b8101031261037a576020612812856126b9565b94015138612710565b503d6127f5565b508251903d90823e3d90fd5b1561283557565b60405162461bcd60e51b815260206004820152601e60248201527f4d61726b65743a2065786368616e676552617465206e6f742076616c696400006044820152606490fd5b61288582151561282e565b60018060a01b036020816009541691600c5490600094168452601882526064604085205491604051948593849263442c159960e01b8452600484015260248301528660448301525afa918215612940578092612908575b5050906129006128f761290593620186a06022540490612462565b601e5490612462565b61248b565b90565b9091506020823d8211612938575b816129236020938361239b565b8101031261037a5750516129006128f76128dc565b3d9150612916565b604051903d90823e3d90fd5b61295782151561282e565b602060018060a01b0360095416916064600c54604051948593849263442c159960e01b845260048401526024830152600060448301525afa9081156129f7576000916129c4575b50906129006129b09260225490612462565b620186a06129c0601e5483612462565b0491565b906020823d82116129ef575b816129dd6020938361239b565b8101031261037a57505161290061299e565b3d91506129d0565b6040513d6000823e3d90fd5b6001600160a01b03166000818152601860205260408120549092612a269161294c565b918352601760205260408320548015612b2f578115612b2f57818110612b2f5782811015612b2557601454612a6f918391610bf491612512906001600160801b03831690612462565b90620186a09283830292808404851490151715612b1157612a94929161252f916124b9565b91601b5491601c5493612aa785856124d3565b80820291848212600160ff1b821416612b11578183051490151715612afd5705818482019485129112908015821691151617612ae957508082126125f1575090565b634e487b7160e01b81526011600452602490fd5b634e487b7160e01b83526011600452602483fd5b634e487b7160e01b85526011600452602485fd5b50505050601b5490565b50505090565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03161480612c36575b15612b90577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f000000000000000000000000000000000000000000000000000000000000000082527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a0815260c081018181106001600160401b038211176123185760405251902090565b507f00000000000000000000000000000000000000000000000000000000000000004614612b67565b15612c6657565b60405162461bcd60e51b815260206004820152601660248201527545524332303a2062616c616e636520746f6f206c6f7760501b6044820152606490fd5b15612cab57565b60405162461bcd60e51b815260206004820152601660248201527545524332303a206e6f207a65726f206164647265737360501b6044820152606490fd5b51906001600160a01b038216820361095257565b519060ff8216820361095257565b60058110156122305780612d1c5750565b60018103612d645760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b6044820152606490fd5b60028103612db15760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606490fd5b600314612dba57565b60405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608490fd5b9291906fa2a8918ca85bafe22016d0b997e4df60600160ff1b038311612e835791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa15612e765781516001600160a01b03811615612e70579190565b50600190565b50604051903d90823e3d90fd5b50505050600090600390565b60001981146124755760010190565b7fe50de2333c10a9502fcb1d8ae13a51bbf423153dfc63c2b8997665b32154afc360018060a01b038092169160009083825260036020526040822094169384825260205284604082205580a4565b909160207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259160018060a01b03809416938460005260028352604060002095169485600052825280604060002055604051908152a3565b15612f4a57565b60405162461bcd60e51b815260206004820152600e60248201526d13585c9ad95d0e881c185d5cd95960921b6044820152606490fd5b15612f8757565b606460405162461bcd60e51b815260206004820152602060248201527f4d61726b65743a2063616e6e6f742065786563757465206f6e20697473656c666044820152fd5b919091811561341057620186a09260209084612fe8835486612462565b049461301e612ffa60115497876124c6565b600d546001600160a01b0398919060ff90613016908b1661344b565b169187613602565b80156133c15761302e9085613685565b613039835486612462565b04946130436134b9565b958361304f82886124c6565b91604096875161305e8161232e565b6000808252970187905289516001600160801b039490851661335257996130dc908b906130d79087908161309881865b1682845116613828565b168152816130ae818a8401961682875116613828565b169384905251601480546001600160801b0319166001600160801b039390921692909216179055565b613cfc565b6016548015908115613343575b50156133055784899116808852601784528888206131088c82546124c6565b90558851908382528b858301527f3a5151e57d3bc9798e7853034ac52293d1a0e12a2b44725e75b03b21f86477a68a888a1693a4806132e4575b50808360095416976064600e5489519a8b938492638eb22cdd60e01b8452600484015260248301528960448301525afa9687156132da5785976132ab575b506131896134df565b818101916103e884845116106132775750906131d98392836131b3613200968c168284511661373c565b1690819052602580546001600160801b0319166001600160801b03909216919091179055565b51602580546001600160801b03169290911660801b6001600160801b031916919091179055565b6009541690600e5490823b15611012578451630208d92960e11b81523060048201526001600160a01b0391909116602482015260448101919091526064810185905292919081908490608490829084905af191821561326d57505061326457509091565b6126a190612305565b51903d90823e3d90fd5b60649088519062461bcd60e51b82526004820152600e60248201526d14d1d30e881b5a5b881b1a5b5a5d60921b6044820152fd5b9080975081813d83116132d3575b6132c3818361239b565b8101031261100e57519538613180565b503d6132b9565b86513d87823e3d90fd5b83600a54168652600182526132fd8787209182546124c6565b905538613142565b875162461bcd60e51b815260048101849052601760248201527614d1d30e88189bdc9c9bddc818d85c081c995858da1959604a1b6044820152606490fd5b905084601454161115386130e9565b998a859b858301878151166133679083612462565b888551166133749161248b565b9d8e8186511661338391612462565b91511661338f9161248b565b106133aa575b6130d7866130dc93818f94816130989161308e565b85806133b781949e612e8f565b9d93505050613395565b60405162461bcd60e51b815260048101859052602160248201527f42696742616e673a20616c6c6f77616e63655368617265206e6f742076616c696044820152601960fa1b6064820152608490fd5b505050600090600090565b3d15613446573d9061342c826123bc565b9161343a604051938461239b565b82523d6000602084013e565b606090565b60008091604051602081019063313ce56760e01b82526004815261346e8161232e565b51916001600160a01b03165afa61348361341b565b90806134ae575b156134a8576020818051810103126109525760206129059101612cfd565b50601290565b50602081511461348a565b604051906134c68261232e565b6014546001600160801b038116835260801c6020830152565b604051906134ec8261232e565b6025546001600160801b038116835260801c6020830152565b919060018060a01b038060009416845260206017815260408520549081156135f85760188152604086205480156135f1578161353f6134b9565b9460095416916064600c54604051948593849263442c159960e01b8452600484015260248301528b60448301525afa9687156129405780976135bb575b505061267f61359b6128f76135b6969798620186a06022540490612462565b956135b160018060801b03948587511690612462565b612462565b111590565b9096508187813d83116135ea575b6135d3818361239b565b8101031261037a575094519461267f61359b61357c565b503d6135c9565b5050505050565b5060019450505050565b61257a9061362285612905969561361c61252f968561287a565b90613642565b6001600160a01b0390911660009081526018602052604090205490612462565b918215801561367d575b6125fd57600181018091116124755761366b9261256b612900926124ab565b6005810180911161247557600a900490565b50811561364c565b6001600160a01b0316338103613699575050565b600081815260209060038252604091828220338352815284838320541061370257838252600381528282203383528152828220546001016136db575050505050565b6136f6938252600381528282209033835252209182546124b9565b905538808080806135f1565b60649083519062461bcd60e51b82526004820152601460248201527313585c9ad95d0e881b9bdd08185c1c1c9bdd995960621b6044820152fd5b6001600160801b03918216908216039190821161247557565b919091600060206040516137688161232e565b82815201526020810180516001600160801b039081166137ac576137a581865b81613798818a168289511661373c565b168652168284511661373c565b1690529190565b6137c66137bc8285511687612462565b828451169061248b565b94806137e26137d88486511689612462565b848751169061248b565b106137f2575b816137a591613788565b94816138006137a592612e8f565b969150506137e8565b6040519061381682612349565b60006040838281528260208201520152565b6001600160801b03918216908216019190821161247557565b613849613809565b506000602060405161385a8161232e565b82815201526000602060405161386f8161232e565b82815201526040519061388182612349565b602454916001600160401b038316815260208101926001600160401b038160401c16845260801c604082015280926138b76134b9565b926138c06134df565b92600060018060a01b0360095416600e549460018060801b038751166040519063442c159960e01b8252876004830152602482015260006044820152602081606481865afa80156129f757600090613cc8575b895161392992506001600160801b0316906124c6565b80613c93575060005b6139476001600160401b0382935116426124b9565b948515613c69575050426001600160401b031660208a8101919091528801516001600160801b031615613c1f57506020670de0b6b3a76400006139a4856135b18c6001600160401b038d60018060801b0390511691511690612462565b895191900496906001600160801b03906139c390828a16908316613828565b168952875160405163442c159960e01b815260048101929092526001600160801b031660248201526000604482015291829060649082905afa80156129f757600090613beb575b8751613a2092506001600160801b0316906124c6565b92613a4e84612900620186a0613a38601a548a612462565b60208c01516001600160801b0316919004612462565b6040890180519195916001600160801b038088169291613a719084908316613828565b16905260208801805190916001600160801b0391613a9191908316613828565b16905280613bb6575060005b602a5490938482811015613b3157613ab590836124b9565b90670de0b6b3a7640000820291808304670de0b6b3a7640000149015171561247557612900613b09613b03613af56001600160401b0396613b139661248b565b936135b1602e549580612462565b836124c6565b91848d5116612462565b168089526001600160401b03602d5416809110613b2d5750565b8852565b909150602b54808211613b4357505050565b613b4c916124b9565b670de0b6b3a7640000810290808204670de0b6b3a76400001490151715612475576001600160401b0391612900613b8f613b03613af5613b9895602c549061248b565b848d5116612462565b81602d5460401c16808211613bae575b50168852565b905038613ba8565b87516001600160801b0316670de0b6b3a764000081810292918084049091149015171561247557613be69161248b565b613a9d565b506020813d602011613c17575b81613c056020938361239b565b8101031261095257613a209051613a0a565b3d9150613bf8565b9697939450509350506001600160401b038151166001600160401b03602f5416809103613c5d575b509392613c526134df565b926000926000929190565b81526001925038613c47565b975098505050505092505091613c7d6134b9565b91613c866134df565b9160009160009190600090565b88516001600160801b0316670de0b6b3a764000081810292918084049091149015171561247557613cc39161248b565b613932565b506020813d602011613cf4575b81613ce26020938361239b565b81010312610952576139299051613913565b3d9150613cd5565b601480546001600160801b031660809290921b6001600160801b031916919091179055565b613e05602080613ddb613d32613841565b9396959390929015613e07575050506001600160401b03602f54166000807f33af5ce86e8438eff54589f85332916444457dfa8685493fbd579b809097026b88604051838152a45b805185820151604092830151921b67ffffffffffffffff60401b166001600160401b03919091161760809190911b6001600160801b0319908116919091176024558151601480549092166001600160801b0391821617909155948591610779565b8051910151821660801b6001600160801b0319166001600160801b03929091169190911617602555565b565b7f33af5ce86e8438eff54589f85332916444457dfa8685493fbd579b809097026b886001600160401b0386511694604051908152a4613d7a565b60405190613e4e8261232e565b60038252623f3f3f60e81b6020830152565b908151811015613e71570160200190565b634e487b7160e01b600052603260045260246000fd5b60ff1660ff81146124755760010190565b805160408110613f1057508051810190602081818401930312610952576020810151906001600160401b038211610952570181603f82011215610952576020810151613ee3816123bc565b92613ef1604051948561239b565b818452604082840101116109525761290591604060208501910161212d565b602092908303613ffe576000805b60ff81168581109081613fdf575b5015613f4057613f3b90613e87565b613f1e565b9260ff80941692613f50846123bc565b93613f5e604051958661239b565b808552613f6d601f19916123bc565b013687860137825b85811687811080613fc2575b15613fb757613fb29190613fac6001600160f81b0319613fa18388613e60565b5116871a9188613e60565b53613e87565b613f75565b505094505050905090565b506001600160f81b0319613fd68286613e60565b51161515613f81565b6001600160f81b03199150613ff49086613e60565b5116151538613f2c565b915050612905613e4156feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa26469706673582212205a0ea79bfcad6d87bd83d70b1333f631d7d9132008417c59c641375ff004f2d564736f6c63430008120033"; + "0x6101408060405234620001e5576200001781620001ea565b601381526001602082017f546170696f63612053696e67756c617269747900000000000000000000000000815260206040516200005481620001ea565b8381520192603160f81b845251902091208160e052610100918183524660a0526040519160208301907f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f92838352604085015260608401524660808401523060a084015260a0835260c083019280841060018060401b03851117620001cf5760408490525190206080523060c052610120908152600580546001600160a01b0319163390811790915560007f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a362013880601b5562015f90601c55612710601d55612ee06020557f0bd4060688a1800ae986e4840aebc924bb40b5bf44de4583df2257220b54b77c6026557f7d1dc38e60930664f8cbf495da6556ca091d2f92d6550877750c049864b182306027556161a86028556032602f5561407c928362000207843960805183612b7e015260a05183612c49015260c05183612b48015260e05183612bcd01525182612bf301525181612baa0152f35b634e487b7160e01b600052604160045260246000fd5b600080fd5b604081019081106001600160401b03821117620001cf5760405256fe608060408181526004918236101561001657600080fd5b60009260e08435811c928362a02a20146120cb5750826302ce728f146120a257826306fdde0314611fea578263078dfbe714611ee5578263095ea7b314611eba5782630c4e84f014611da357826318160ddd14611d805782631c9e379b14611d475782631da8bf1014611c8d57826323b872dd14611b05578263313ce56714611ace578263331960ff14611aae57826334d441d014611a8e5782633644e51514611a7057826337b6b7b914611a5057826338d52e0f14611a265782633ba0b9a914611a065782633f741adb146119dd57826340626d8b146119bd57826344de240a1461199d578263473e3ce71461197d57826348e4163e146119445782634d7f2a34146119245782634e71e0c81461186f5782635224372c146117b8578263529898f21461179957826352f353eb14611770578263551402321461174757826355c2ab941461171d57826357935462146116fd5782635dfe04e81461169c5782636c3d8b8f1461167257826370a0823114611639578263727785471461160157826374645ff3146115d45782637dc0d1d0146115aa5782637ecebe00146115735782637fa0b84e14611541578263821226e8146115215782638285ef40146114ed5782638c5d0ed3146114cd5782638da5cb5b146114a3578263910dd7c81461122a578263959916dc1461120a57826395d89b411461115157826399a97028146111205782639c5d7192146111005782639e15e89f146110c4578263a9059cbb14610fe8578263b0e21e8a14610fc8578263b27c0e7414610f8c578263bb4cfe3b14610f6c578263cd0211eb14610b04578263ce8849ed14610ada578263d3fb2a3814610641578263d505accf146104ba5750508063d8dfeb4514610492578063dd62ed3e14610445578063de4065771461041d578063e0996cb6146103ff578063e30c3978146103d7578063ea64dd56146103b9578063eec0f42e1461039b578063f42760b71461037d578063f8ba4cff1461035e578063f9557ccb146103285763ffe04c661461030757600080fd5b346103245781600319360112610324576020906029549051908152f35b5080fd5b503461032457816003193601126103245760245490516001600160801b038216815260809190911c6020820152604090f35b0390f35b823461037a578060031936011261037a57610377613d3e565b80f35b80fd5b5034610324578160031936011261032457602090602a549051908152f35b5034610324578160031936011261032457602090600c549051908152f35b5034610324578160031936011261032457602090601f549051908152f35b503461032457816003193601126103245760065490516001600160a01b039091168152602090f35b5034610324578160031936011261032457602090601d549051908152f35b503461032457816003193601126103245760095490516001600160a01b039091168152602090f35b5034610324578060031936011261032457602091610461612111565b8261046a612127565b6001600160a01b03928316845260028652922091166000908152908352819020549051908152f35b5034610324578160031936011261032457600b5490516001600160a01b039091168152602090f35b8492503461063d576104cb366121a3565b9183949895979342116105fa579161059d916105a5938c8b8b60018060a01b0398898d169a8b93846000528d602052856000209081549161050b83612e9f565b90558c87519560208701977f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e266895260008a890152606088015216608086015260a085015260c084015281830152815261056381612374565b51902061056e612b45565b915190602082019261190160f01b8452602283015260428201526042815261059581612390565b519020612e1a565b919091612d1b565b16036105b75750610377939450612efc565b606490602087519162461bcd60e51b8352820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152fd5b8a5162461bcd60e51b8152602081880152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b8280fd5b5090503461063d5761016036600319011261063d576001600160a01b03813581811690819003610ad6576024916001600160401b038335818111610ad25736602382011215610ad25780860135918211610ad25736858383010111610ad25760443593838516809503610acd576106bd846005541633146123e7565b80610a8f575b508482610911575b505050816108d1575b5050606435806108b9575b50608435806108a1575b5060a4358061088a575b5060c43580610866575b5060e43580610842575b506101043580610811575b5061012435806107a0575b5061014435928361072c578480f35b601e54841061074357505050601f55388080808480f35b608492916020603292519362461bcd60e51b85528401528201527f4d61726b65743a206c69717569646174696f6e436f6c6c61746572616c697a616044820152711d1a5bdb94985d19481d1bdbc81cdb585b1b60721b6064820152fd5b6107af620186a0821115612432565b601f5481116107c157601e553861071d565b506025906020608494519362461bcd60e51b85528401528201527f4d61726b65743a20636f6c6c61746572616c697a6174696f6e5261746520746f6044820152646f2062696760d81b6064820152fd5b806016547fae6e0ab3b95f0a53ff9660a390ccedcbbf1f2355dce974a9841af106fddcfaba8780a360165538610712565b610850620186a08210612432565b61085d601b548211612432565b601c5538610707565b610874620186a08210612432565b610881601c548210612432565b601b55386106fd565b610898620186a08210612432565b601d55386106f3565b6108b0620186a0821115612432565b601a55386106e9565b6108c8620186a0821115612432565b601955386106df565b816008549182167f5a62d22209e370e38eea92cfddcd228e656e6ec139243392a760a7769f5877fd8880a36001600160a01b0319161760085538806106d4565b829161091e601054612256565b601f8111610a1e575b508990601f841160011461098c578a9361097f575b5050508160011b916000199060031b1c1916176010555b7fa6f004921c944d4b8bf6e38462b00f36a58d62495d56b51f571ab78f732c98158680a13880846106cb565b010135905084388061093c565b60108b52601f19841694507f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae67292509087908b60205b8782106109ff57505084600196106109e3575b50505050811b01601055610953565b60001960f88660031b161c1992010135169055388086816109d4565b82850190930135855560019490940193899291820191908101906109c1565b60108b5290925090507f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae672601f840160051c810160208510610a88575b91849391601f8994920160051c01905b818110610a775750610927565b8b8155859450889350600101610a6a565b5080610a5a565b600f80546001600160a01b0319169190911790557f0b2d6eb667d0522c3eb86e4288afecae6c11591ffd1345d4d12407e0598bca9b8880a1386106c3565b600080fd5b8780fd5b8480fd5b5050503461032457816003193601126103245760085490516001600160a01b039091168152602090f35b5083833461032457608036600319011261032457610b20612111565b610b28612127565b90610b31612194565b93606435916001825260209560078752610b5160ff878520541615612f53565b6001600160a01b0385811695909390610bae90610b7030891415612f90565b610b786126d6565b5050610b82613d3e565b610b9387610b8e6134cc565b613768565b905060115460ff610ba789600d541661345e565b1692613615565b8015610f2957610bbe9084613698565b8581526017885286812054808611610f21575b508415610ee6578798610c1a98610bea87610b8e6134cc565b8151601480546001600160801b0319166001600160801b03928316179055909b909290918391905b015116613d19565b87835260178b52888320610c2f8882546124c9565b90558560095416600e54928a5193638eb22cdd60e01b855280828601528c6024860152600160448601528d85606481865afa948515610df2578c918f918897610eb0575b506024548616948915610dfc575060448b60095416935180948193627eeac760e11b8352308884015260248301525afa8015610df25783908790610dc1575b610cbc92506124c9565b8411610d8e5750927fc8e512d8f188ca059984b5853d2bf653da902696b8512785b182b2c813789a6e95928c9592610cfc8d9b9a99965b8284169061383b565b1660018060801b0319602454161760245584841690818352602587528b83206026549081855288528c8420548211600014610d6957505081526025855289812060265482528552808a8120555b5015610d64575080600954165b87519485521692a451908152f35b610d56565b90918352602587528b83209083528652610d878b83209182546124c9565b9055610d49565b8a5162461bcd60e51b81529081018d9052600d60248201526c0a68e987440e8dede40daeac6d609b1b6044820152606490fd5b50508d81813d8311610deb575b610dd881836123ab565b81010312610acd5782610cbc9151610cb2565b503d610dce565b8c513d88823e3d90fd5b9250929050813b15610eac578c51630208d92960e11b81526001600160a01b038a169181019182523060208301526040820193909352606081018690528691839182908490829060800103925af18015610ea257928c9a999895927fc8e512d8f188ca059984b5853d2bf653da902696b8512785b182b2c813789a6e9895928f9895610e8d575b50610cfc90610cf3565b93610e9b610cfc9295612315565b9390610e83565b8b513d87823e3d90fd5b8680fd5b9250955081813d8311610edf575b610ec881836123ab565b81010312610edb578d8c91519538610c73565b8580fd5b503d610ebe565b865162461bcd60e51b8152808a01899052601560248201527453474c3a206e6f7468696e6720746f20726570617960581b6044820152606490fd5b945089610bd1565b875162461bcd60e51b8152808b018a9052601d60248201527f53474c3a20616c6c6f77616e63655368617265206e6f742076616c69640000006044820152606490fd5b50505034610324578160031936011261032457602090601e549051908152f35b50505034610324578160031936011261032457606090602354908051916001600160401b03808216845281831c16602084015260801c90820152f35b50505034610324578160031936011261032457602090601a549051908152f35b50505034610324578060031936011261032457602091611006612111565b826024359283158015906110b2575b611045575b50519182526001600160a01b0316903390600080516020614027833981519152908590a35160018152f35b338152600186528181205461105c85821015612c6f565b6001600160a01b038416908533839003611079575b50505061101a565b61108d91611088841515612cb4565b6124c9565b33835260018852838320558152206110a68382546124d6565b90558238808085611071565b50336001600160a01b03841614611015565b505050346103245780600319360112610324576060906110ee6110e5612111565b60243590612615565b91929081519384526020840152820152f35b50505034610324578160031936011261032457602090602b549051908152f35b5050503461032457806003193601126103245760209061114a611141612111565b60243590612a13565b9051908152f35b5090503461063d578260031936011261063d5791808061035a9460018060a01b03600b541690855160208101916395d89b4160e01b835281526111938161233e565b51915afa61119f61342e565b9150156111fb576111af90613eb5565b905b6111e960238251809462746d2d60e81b60208301526111d9815180926020868601910161213d565b81010360038101855201836123ab565b51918291602083526020830190612160565b50611204613e5e565b906111b1565b50505034610324578160031936011261032457602090602f549051908152f35b8491843461149f578060031936011261149f578135926001600160401b038411610ad65736602385011215610ad6578383013592611267846123cc565b94611274845196876123ab565b8486528660209182880196366024828401011161063d578060248593018937880101526024359361ffff8516809503610ad25761010095868880518101031261149b576112c0906126c9565b936112cc828901612cf9565b906112d960608a01612cf9565b9860808101519860a0820151926112f260c08401612d0d565b91818401519301519360018060a01b03808097169d169a81421161145857928d8f819897948f948f8f968f918f959a8f8c81956113ce9f9c61059d9f50600014611431577f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e2669a5b82528952209384549461136b86612e9f565b905580519788019889528701528d6060870152608086015260a085015260c084015281830152815261139c81612374565b5190206113a7612b45565b908951908b82019261190160f01b8452602283015260428201526042815261059581612390565b16036113f0575050506000146113e75761037792612efc565b61037792612eae565b5162461bcd60e51b815291820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e61747572650000604482015260649150fd5b7f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d69a611359565b875162461bcd60e51b8152808b018a9052601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b8880fd5b8380fd5b5050503461032457816003193601126103245760055490516001600160a01b039091168152602090f35b50505034610324578160031936011261032457602090601b549051908152f35b5050503461032457816003193601126103245760145490516001600160801b038216815260809190911c6020820152604090f35b50505034610324578160031936011261032457602090602d549051908152f35b5050503461032457806003193601126103245760209061156c611562612111565b6024359033612eae565b5160018152f35b5090503461063d57602036600319011261063d5760209282916001600160a01b0361159c612111565b168252845220549051908152f35b50505034610324578160031936011261032457600f5490516001600160a01b039091168152602090f35b50505034610324578160031936011261032457805161035a916111e9826115fa81612290565b03836123ab565b5090503461063d57602036600319011261063d573591600983101561037a575060ff61162e602093612227565b541690519015158152f35b505050346103245760203660031901126103245760209181906001600160a01b03611662612111565b1681526001845220549051908152f35b50505034610324578160031936011261032457600a5490516001600160a01b039091168152602090f35b505050346103245781600319360112610324576080906116ba61381c565b506116c3613854565b50949593505050508051926001600160401b03808251168552602082015116602085015281600180871b0391015116908301526060820152f35b50505034610324578160031936011261032457602090601c549051908152f35b50505034610324578160031936011261032457602c548151911c6001600160401b03168152602090f35b505050346103245781600319360112610324576020906001600160401b03602c54169051908152f35b505050346103245781600319360112610324576020906001600160401b03602e54169051908152f35b5050503461032457816003193601126103245760209081549051908152f35b5090503461063d576118269061181a60ff84956117ed6117d7366121f2565b9491989093808052600760205220541615612f53565b6117f56126d6565b50506117ff613d3e565b6118146001600160a01b038216301415612f90565b85612fdb565b92909360115490613518565b15611838575082519182526020820152f35b606490602085519162461bcd60e51b8352820152601160248201527013585c9ad95d0e881a5b9cdbdb1d995b9d607a1b6044820152fd5b8482853461063d578260031936011261063d576006546001600160a01b039290918383169190338390036118e1575050806005549384167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08680a36001600160a01b0319928316176005551660065580f35b906020606492519162461bcd60e51b8352820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b505050346103245781600319360112610324576020906028549051908152f35b505050346103245760203660031901126103245760209181906001600160a01b0361196d612111565b1681526017845220549051908152f35b505050346103245781600319360112610324576020906015549051908152f35b50505034610324578160031936011261032457602090600e549051908152f35b505050346103245781600319360112610324576020906016549051908152f35b5082843461037a57606036600319011261037a575061114a6020926044359060243590356124fc565b505050346103245781600319360112610324576020906011549051908152f35b50505034610324578160031936011261032457600d5490516001600160a01b039091168152602090f35b505050346103245781600319360112610324576020906012549051908152f35b5050503461032457816003193601126103245760209061114a612b45565b505050346103245781600319360112610324576020906019549051908152f35b505050346103245781600319360112610324576020906013549051908152f35b50505034610324578160031936011261032457600d546020919060ff90611afd906001600160a01b031661345e565b915191168152f35b5082843461037a57611b16366121f2565b919282611b50575b508351918252602094506001600160a01b03908116921690600080516020614027833981519152908590a35160018152f35b6001600160a01b038481168083526001602090815287842054919892909190611b7b87831015612c6f565b851692838a03611b8f575b50505050611b1e565b898552600283528885203386528352888520549060018201611bf9575b5050928260209960018a94611bd88a8e996110886000805160206140278339815191529c9a1515612cb4565b9285525283832055815220611bee8582546124d6565b905591878080611b86565b878210611c4f57509260209960018a94611bd88a8e9996611c2a826000805160206140278339815191529d9b6124c9565b86895260028552898920338a5285528989205596995050509450509981949650611bac565b895162461bcd60e51b8152908101849052601860248201527745524332303a20616c6c6f77616e636520746f6f206c6f7760401b6044820152606490fd5b8492503461063d57611c9e366121a3565b9397949690928042116105fa57938693611d35938c8c8961059d968e9a8e60018060a01b03809c169c8d948587526020528c87872092835493611ce085612e9f565b905588519660208801987f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d68a528a890152606088015216608086015260a085015260c084015281830152815261056381612374565b16036105b75750610377939450612eae565b505050346103245760203660031901126103245760209181906001600160a01b03611d70612111565b1681526018845220549051908152f35b5050503461032457816003193601126103245760209060245460801c9051908152f35b5090503461063d578160031936011261063d57803590600982101561149f57611dca612185565b6008549093906001600160a01b03163303611e805760ff611dea84612227565b54161515931515938414611e48575050808260ff611e0a611e3894612227565b54161515827feeec81de25875ce1725479bb76f720a8defdb43dea041919ae37bb4aae9847c08780a4612227565b9060ff8019835416911617905580f35b906020606492519162461bcd60e51b835282015260126024820152714d61726b65743a2073616d6520737461746560701b6044820152fd5b906020606492519162461bcd60e51b8352820152601460248201527313585c9ad95d0e881d5b985d5d1a1bdc9a5e995960621b6044820152fd5b5050503461032457806003193601126103245760209061156c611edb612111565b6024359033612efc565b8482853461063d57606036600319011261063d57611f01612111565b91611f0a612185565b91611f13612194565b9260018060a01b03948591611f2d836005541633146123e7565b15611fd1571692831590811591611fc9575b5015611f8e575050806005549283167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08580a36001600160a01b03199182161760055560068054909116905580f35b906020606492519162461bcd60e51b835282015260156024820152744f776e61626c653a207a65726f206164647265737360581b6044820152fd5b905086611f3f565b93505050501660018060a01b0319600654161760065580f35b5090503461063d578260031936011261063d5791808061035a9460018060a01b03600b541690855160208101916306fdde0360e01b8352815261202c8161233e565b51915afa61203861342e565b9150156120935761204890613eb5565b905b6111e960348251809473546170696f63612053696e67756c61726974792d60601b6020830152612083815180926020868601910161213d565b81010360148101855201836123ab565b5061209c613e5e565b9061204a565b83853461037a578060031936011261037a57506120bd6126d6565b825191151582526020820152f35b8590853461063d578060031936011261063d576020926120e9612111565b6120f1612127565b6001600160a01b0391821683526003865283832091168252845220548152f35b600435906001600160a01b0382168203610acd57565b602435906001600160a01b0382168203610acd57565b60005b8381106121505750506000910152565b8181015183820152602001612140565b906020916121798151809281855285808601910161213d565b601f01601f1916010190565b602435908115158203610acd57565b604435908115158203610acd57565b60e0906003190112610acd576001600160a01b03906004358281168103610acd57916024359081168103610acd5790604435906064359060843560ff81168103610acd579060a4359060c43590565b6060906003190112610acd576001600160a01b03906004358281168103610acd57916024359081168103610acd579060443590565b6009811015612240576000526007602052604060002090565b634e487b7160e01b600052602160045260246000fd5b90600182811c92168015612286575b602083101461227057565b634e487b7160e01b600052602260045260246000fd5b91607f1691612265565b601054600092916122a082612256565b9081815260019283811690816000146122fa57506001146122c057505050565b9092935060106000526020928360002092846000945b8386106122e65750505050010190565b8054858701830152940193859082016122d6565b91935050602093945060ff191683830152151560051b010190565b6001600160401b03811161232857604052565b634e487b7160e01b600052604160045260246000fd5b604081019081106001600160401b0382111761232857604052565b606081019081106001600160401b0382111761232857604052565b61010081019081106001600160401b0382111761232857604052565b608081019081106001600160401b0382111761232857604052565b90601f801991011681019081106001600160401b0382111761232857604052565b6001600160401b03811161232857601f01601f191660200190565b156123ee57565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b1561243957565b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881b9bdd081d985b1a59607a1b6044820152606490fd5b8181029291811591840414171561248557565b634e487b7160e01b600052601160045260246000fd5b81156124a5570490565b634e487b7160e01b600052601260045260246000fd5b604d811161248557600a0a90565b9190820391821161248557565b9190820180921161248557565b8181039291600013801582851316918412161761248557565b601454919291612545916125369161252c91612522906001600160801b03831690612472565b9060801c9061249b565b93601f5490612472565b61253f836124bb565b9061249b565b80831061260d5761255961259591846124c9565b9161259061258a612581601e5461257b612572866124bb565b602054906124d6565b90612472565b61253f846124bb565b916124bb565b6124e3565b6509184e72a0009081810291818305149015171561248557670de0b6b3a7640000918281029281840514901517156124855780156124a557600160ff1b91808314600019831416612485570590600082121561260657811461248557600003905b808211612601575090565b905090565b50906125f6565b505050600090565b6001600160a01b0381166000818152601760205260408120549194939290919081156126bd57916040916126996126b1959483602086516126558161233e565b828152015261267386612666613854565b505050505093905061288a565b815190936001600160801b039160209161268f91841690612472565b920151169061249b565b8181106126b557035b9581526018602052205461295c565b9091565b5050806126a2565b50509192505080918190565b51908115158203610acd57565b600f546040805163d6d7d52560e01b8152602060048201529290916001600160a01b031682848061270960248201612290565b0381600080955af1801561283257819482916127f6575b5092841561279957831561275f57507f9f9192b5edb17356c524e08d9e025c8e2f6307e6ea52fb7968faa3081f51c3c883918260115580a25b42601355565b5162461bcd60e51b81526020600482015260146024820152734d61726b65743a20696e76616c6964207261746560601b6044820152606490fd5b919250506127ac601354601254906124d6565b42116127bc575060115490612759565b5162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881c985d19481d1bdbc81bdb1960621b6044820152606490fd5b809550848092503d831161282b575b61280f81836123ab565b8101031261037a576020612822856126c9565b94015138612720565b503d612805565b508251903d90823e3d90fd5b1561284557565b60405162461bcd60e51b815260206004820152601e60248201527f4d61726b65743a2065786368616e676552617465206e6f742076616c696400006044820152606490fd5b61289582151561283e565b60018060a01b036020816009541691600c5490600094168452601882526064604085205491604051948593849263442c159960e01b8452600484015260248301528660448301525afa918215612950578092612918575b50509061291061290761291593620186a06021540490612472565b601e5490612472565b61249b565b90565b9091506020823d8211612948575b81612933602093836123ab565b8101031261037a5750516129106129076128ec565b3d9150612926565b604051903d90823e3d90fd5b61296782151561283e565b602060018060a01b0360095416916064600c54604051948593849263442c159960e01b845260048401526024830152600060448301525afa908115612a07576000916129d4575b50906129106129c09260215490612472565b620186a06129d0601e5483612472565b0491565b906020823d82116129ff575b816129ed602093836123ab565b8101031261037a5750516129106129ae565b3d91506129e0565b6040513d6000823e3d90fd5b6001600160a01b03166000818152601860205260408120549092612a369161295c565b918352601760205260408320548015612b3f578115612b3f57818110612b3f5782811015612b3557601454612a7f91839161108891612522906001600160801b03831690612472565b90620186a09283830292808404851490151715612b2157612aa4929161253f916124c9565b91601b5491601c5493612ab785856124e3565b80820291848212600160ff1b821416612b21578183051490151715612b0d5705818482019485129112908015821691151617612af95750808212612601575090565b634e487b7160e01b81526011600452602490fd5b634e487b7160e01b83526011600452602483fd5b634e487b7160e01b85526011600452602485fd5b50505050601b5490565b50505090565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03161480612c46575b15612ba0577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f000000000000000000000000000000000000000000000000000000000000000082527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a0815260c081018181106001600160401b038211176123285760405251902090565b507f00000000000000000000000000000000000000000000000000000000000000004614612b77565b15612c7657565b60405162461bcd60e51b815260206004820152601660248201527545524332303a2062616c616e636520746f6f206c6f7760501b6044820152606490fd5b15612cbb57565b60405162461bcd60e51b815260206004820152601660248201527545524332303a206e6f207a65726f206164647265737360501b6044820152606490fd5b51906001600160a01b0382168203610acd57565b519060ff82168203610acd57565b60058110156122405780612d2c5750565b60018103612d745760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b6044820152606490fd5b60028103612dc15760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606490fd5b600314612dca57565b60405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608490fd5b9291906fa2a8918ca85bafe22016d0b997e4df60600160ff1b038311612e935791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa15612e865781516001600160a01b03811615612e80579190565b50600190565b50604051903d90823e3d90fd5b50505050600090600390565b60001981146124855760010190565b7fe50de2333c10a9502fcb1d8ae13a51bbf423153dfc63c2b8997665b32154afc360018060a01b038092169160009083825260036020526040822094169384825260205284604082205580a4565b909160207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259160018060a01b03809416938460005260028352604060002095169485600052825280604060002055604051908152a3565b15612f5a57565b60405162461bcd60e51b815260206004820152600e60248201526d13585c9ad95d0e881c185d5cd95960921b6044820152606490fd5b15612f9757565b606460405162461bcd60e51b815260206004820152602060248201527f4d61726b65743a2063616e6e6f742065786563757465206f6e20697473656c666044820152fd5b9190811561342357620186a09283612ff5602f5485612472565b049361302b61300760115496866124d6565b600d546001600160a01b0397919060ff90613023908a1661345e565b169185613615565b80156133d45761303b9083613698565b613047602f5485612472565b04916130516134cc565b9461305c84866124d6565b60409485519061306b8261233e565b60008083526020928301819052895190966001600160801b03949091851661336557996130ef908b906130ea908790816130ab81865b168284511661383b565b168152816130c1818a840196168287511661383b565b169384905251601480546001600160801b0319166001600160801b039390921692909216179055565b613d19565b6016548015908115613356575b501561331857848991168088526017845288882061311b8c82546124d6565b90558851908382528b858301527f3a5151e57d3bc9798e7853034ac52293d1a0e12a2b44725e75b03b21f86477a68a888a1693a4806132f7575b50808360095416976064600e5489519a8b938492638eb22cdd60e01b8452600484015260248301528960448301525afa9687156132ed5785976132be575b5061319c6134f2565b818101916103e8848451161061328a5750906131ec8392836131c6613213968c168284511661374f565b1690819052602480546001600160801b0319166001600160801b03909216919091179055565b51602480546001600160801b03169290911660801b6001600160801b031916919091179055565b6009541690600e5490823b1561149f578451630208d92960e11b81523060048201526001600160a01b0391909116602482015260448101919091526064810185905292919081908490608490829084905af191821561328057505061327757509091565b6126b190612315565b51903d90823e3d90fd5b60649088519062461bcd60e51b82526004820152600e60248201526d14d1d30e881b5a5b881b1a5b5a5d60921b6044820152fd5b9080975081813d83116132e6575b6132d681836123ab565b81010312610ad657519538613193565b503d6132cc565b86513d87823e3d90fd5b83600a54168652600182526133108787209182546124d6565b905538613155565b875162461bcd60e51b815260048101849052601760248201527614d1d30e88189bdc9c9bddc818d85c081c995858da1959604a1b6044820152606490fd5b905084601454161115386130fc565b998a859b8583018781511661337a9083612472565b888551166133879161249b565b9d8e8186511661339691612472565b9151166133a29161249b565b106133bd575b6130ea866130ef93818f94816130ab916130a1565b85806133ca81949e612e9f565b9d935050506133a8565b60405162461bcd60e51b815260206004820152602160248201527f42696742616e673a20616c6c6f77616e63655368617265206e6f742076616c696044820152601960fa1b6064820152608490fd5b505050600090600090565b3d15613459573d9061343f826123cc565b9161344d60405193846123ab565b82523d6000602084013e565b606090565b60008091604051602081019063313ce56760e01b8252600481526134818161233e565b51916001600160a01b03165afa61349661342e565b90806134c1575b156134bb57602081805181010312610acd5760206129159101612d0d565b50601290565b50602081511461349d565b604051906134d98261233e565b6014546001600160801b038116835260801c6020830152565b604051906134ff8261233e565b6024546001600160801b038116835260801c6020830152565b919060018060a01b0380600094168452602060178152604085205490811561360b57601881526040862054801561360457816135526134cc565b9460095416916064600c54604051948593849263442c159960e01b8452600484015260248301528b60448301525afa9687156129505780976135ce575b505061268f6135ae6129076135c9969798620186a06021540490612472565b956135c460018060801b03948587511690612472565b612472565b111590565b9096508187813d83116135fd575b6135e681836123ab565b8101031261037a575094519461268f6135ae61358f565b503d6135dc565b5050505050565b5060019450505050565b61258a9061363585612915969561362f61253f968561288a565b90613655565b6001600160a01b0390911660009081526018602052604090205490612472565b9182158015613690575b61260d57600181018091116124855761367e9261257b612910926124bb565b6005810180911161248557600a900490565b50811561365f565b6001600160a01b03163381036136ac575050565b600081815260209060038252604091828220338352815284838320541061371557838252600381528282203383528152828220546001016136ee575050505050565b613709938252600381528282209033835252209182546124c9565b90553880808080613604565b60649083519062461bcd60e51b82526004820152601460248201527313585c9ad95d0e881b9bdd08185c1c1c9bdd995960621b6044820152fd5b6001600160801b03918216908216039190821161248557565b9190916000602060405161377b8161233e565b82815201526020810180516001600160801b039081166137bf576137b881865b816137ab818a168289511661374f565b168652168284511661374f565b1690529190565b6137d96137cf8285511687612472565b828451169061249b565b94806137f56137eb8486511689612472565b848751169061249b565b10613805575b816137b89161379b565b94816138136137b892612e9f565b969150506137fb565b6040519061382982612359565b60006040838281528260208201520152565b6001600160801b03918216908216019190821161248557565b61385c61381c565b506000602060405161386d8161233e565b8281520152600060206040516138828161233e565b828152015260405161389381612359565b6023546001600160401b03811682526001600160401b038160401c16602083015260801c604082015280916138c66134cc565b916138cf6134f2565b600954600e54825160405163442c159960e01b8152600481018390526001600160801b03909116602482015260006044820181905293959194919391926001600160a01b031690602081606481855afa8015612a0757600090613ce5575b885161394392506001600160801b0316906124d6565b80613cb0575060005b806139646001600160401b03602087015116426124c9565b948515613c86575050426001600160401b031660208a8101919091528801516001600160801b031615613c3c57506020670de0b6b3a76400006139c1856135c48c6001600160401b038d60018060801b0390511691511690612472565b895191900496906001600160801b03906139e090828a1690831661383b565b168952875160405163442c159960e01b815260048101929092526001600160801b031660248201526000604482015291829060649082905afa8015612a0757600090613c08575b8751613a3d92506001600160801b0316906124d6565b92613a6b84612910620186a0613a55601a548a612472565b60208c01516001600160801b0316919004612472565b6040890180519195916001600160801b038088169291613a8e908490831661383b565b16905260208801805190916001600160801b0391613aae9190831661383b565b16905280613bd3575060005b60295490938482811015613b4e57613ad290836124c9565b90670de0b6b3a7640000820291808304670de0b6b3a7640000149015171561248557612910613b26613b20613b126001600160401b0396613b309661249b565b936135c4602d549580612472565b836124d6565b91848d5116612472565b168089526001600160401b03602c5416809110613b4a5750565b8852565b909150602a54808211613b6057505050565b613b69916124c9565b670de0b6b3a7640000810290808204670de0b6b3a76400001490151715612485576001600160401b0391612910613bac613b20613b12613bb595602b549061249b565b848d5116612472565b81602c5460401c16808211613bcb575b50168852565b905038613bc5565b87516001600160801b0316670de0b6b3a764000081810292918084049091149015171561248557613c039161249b565b613aba565b506020813d602011613c34575b81613c22602093836123ab565b81010312610acd57613a3d9051613a27565b3d9150613c15565b9697939450509350506001600160401b038151166001600160401b03602e5416809103613c7a575b509392613c6f6134f2565b926000926000929190565b81526001925038613c64565b975098505050505092505091613c9a6134cc565b91613ca36134f2565b9160009160009190600090565b87516001600160801b0316670de0b6b3a764000081810292918084049091149015171561248557613ce09161249b565b61394c565b506020813d602011613d11575b81613cff602093836123ab565b81010312610acd57613943905161392d565b3d9150613cf2565b601480546001600160801b031660809290921b6001600160801b031916919091179055565b613e22602080613df8613d4f613854565b9396959390929015613e24575050506001600160401b03602e54166000807f33af5ce86e8438eff54589f85332916444457dfa8685493fbd579b809097026b88604051838152a45b805185820151604092830151921b67ffffffffffffffff60401b166001600160401b03919091161760809190911b6001600160801b0319908116919091176023558151601480549092166001600160801b0391821617909155948591610c12565b8051910151821660801b6001600160801b0319166001600160801b03929091169190911617602455565b565b7f33af5ce86e8438eff54589f85332916444457dfa8685493fbd579b809097026b886001600160401b0386511694604051908152a4613d97565b60405190613e6b8261233e565b60038252623f3f3f60e81b6020830152565b908151811015613e8e570160200190565b634e487b7160e01b600052603260045260246000fd5b60ff1660ff81146124855760010190565b805160408110613f2d57508051810190602081818401930312610acd576020810151906001600160401b038211610acd570181603f82011215610acd576020810151613f00816123cc565b92613f0e60405194856123ab565b81845260408284010111610acd5761291591604060208501910161213d565b60209290830361401b576000805b60ff81168581109081613ffc575b5015613f5d57613f5890613ea4565b613f3b565b9260ff80941692613f6d846123cc565b93613f7b60405195866123ab565b808552613f8a601f19916123cc565b013687860137825b85811687811080613fdf575b15613fd457613fcf9190613fc96001600160f81b0319613fbe8388613e7d565b5116871a9188613e7d565b53613ea4565b613f92565b505094505050905090565b506001600160f81b0319613ff38286613e7d565b51161515613f9e565b6001600160f81b031991506140119086613e7d565b5116151538613f49565b915050612915613e5e56feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220457eee7610cc68599fce8b1a9000e3d857d63e416048e92b9d7bd9f8cb2a6a0d64736f6c63430008120033"; type SGLBorrowConstructorParams = | [signer?: Signer] diff --git a/src/typechain/tapioca-bar/factories/markets/singularity/SGLCollateral__factory.ts b/src/typechain/tapioca-bar/factories/markets/singularity/SGLCollateral__factory.ts index dbbd3952..8ebc1c2a 100644 --- a/src/typechain/tapioca-bar/factories/markets/singularity/SGLCollateral__factory.ts +++ b/src/typechain/tapioca-bar/factories/markets/singularity/SGLCollateral__factory.ts @@ -1590,11 +1590,6 @@ const _abi = [ }, { inputs: [ - { - internalType: "uint256", - name: "_borrowOpeningFee", - type: "uint256", - }, { internalType: "contract IOracle", name: "_oracle", @@ -1923,7 +1918,7 @@ const _abi = [ ] as const; const _bytecode = - "0x6101408060405234620001e5576200001781620001ea565b601381526001602082017f546170696f63612053696e67756c617269747900000000000000000000000000815260206040516200005481620001ea565b8381520192603160f81b845251902091208160e052610100918183524660a0526040519160208301907f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f92838352604085015260608401524660808401523060a084015260a0835260c083019280841060018060401b03851117620001cf5760408490525190206080523060c052610120908152600580546001600160a01b0319163390811790915560007f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a362013880601b5562015f90601c55612710601d556032602055612ee06021557f0bd4060688a1800ae986e4840aebc924bb40b5bf44de4583df2257220b54b77c6027557f7d1dc38e60930664f8cbf495da6556ca091d2f92d6550877750c049864b182306028556161a86029556139b1928362000207843960805183612b2d015260a05183612bf8015260c05183612af7015260e05183612b7c01525182612ba201525181612b590152f35b634e487b7160e01b600052604160045260246000fd5b600080fd5b604081019081106001600160401b03821117620001cf5760405256fe608080604052600436101561001357600080fd5b600090813560e01c908162a02a20146120b55750806302ce728f1461208c57806306fdde0314611fd5578063078dfbe714611ed6578063095ea7b314611eaf5780630996efb714611a2e5780630c4e84f01461191657806318160ddd146118f55780631c9e379b146118bc5780631da8bf10146117e857806323b872dd14611661578063313ce567146115cf578063331960ff146115b157806334d441d0146115935780633644e5151461157857806337b6b7b91461155a57806338d52e0f146115315780633ba0b9a9146115135780633f741adb146114ee57806340626d8b146114d057806344de240a146114b2578063473e3ce71461149457806348e4163e1461145b5780634d7f2a341461143d5780634e71e0c81461138f578063529898f21461137157806352f353eb1461134a578063551402321461132357806355c2ab94146112f957806357935462146112db5780635dfe04e81461127c5780636c3d8b8f1461125357806370a082311461121a57806372778547146111e257806374645ff3146111b75780637dc0d1d01461118e5780637ecebe00146111555780637fa0b84e14611123578063821226e8146111055780638285ef40146110d35780638c5d0ed3146110b55780638da5cb5b1461108c578063910dd7c814610e73578063959916dc14610e5657806395d89b4114610d9c57806399a9702814610d6c5780639c5d719214610d4e5780639e15e89f14610d13578063a9059cbb14610c30578063b0e21e8a14610c12578063b27c0e7414610bd7578063bb4cfe3b14610bb9578063cce19f81146109cd578063ce8849ed146109a4578063d505accf14610803578063d8dfeb45146107da578063dd62ed3e1461078b578063de40657714610762578063e0996cb614610744578063e30c39781461071b578063e9a49252146103cd578063ea64dd56146103af578063eec0f42e14610391578063f42760b714610373578063f8ba4cff14610357578063f9557ccb146103215763ffe04c661461030157600080fd5b3461031e578060031936011261031e576020602a54604051908152f35b80fd5b503461031e578060031936011261031e57602554604080516001600160801b038316815260809290921c602083015290f35b0390f35b503461031e578060031936011261031e57610370613674565b80f35b503461031e578060031936011261031e576020602b54604051908152f35b503461031e578060031936011261031e576020600c54604051908152f35b503461031e578060031936011261031e576020601f54604051908152f35b503461031e5760a036600319011261031e576103e76120fd565b6103ef612113565b906103f8612180565b916064359160843593600260005260206007815261041e60ff6040600020541615612ef3565b6001600160a01b039384169461043630871415612f30565b861561069d575b6104478785612f7b565b861561061c575b5084875260188152604087206104658782546124ac565b905560155461047487826124ac565b601555600c5490888415610596575082866009541692604460405180958193627eeac760e11b835230600484015260248301525afa801561058b578990610557575b6104c0925061249f565b8611610523575b848752602681526040872090602854885252604086206104e88682546124ac565b90551561051e575080600954165b167f9ed03113de523cebfe5e49d5f8e12894b1c0d42ce805990461726444c90eab878480a480f35b6104f6565b6064906040519062461bcd60e51b82526004820152600d60248201526c0a68e987440e8dede40daeac6d609b1b6044820152fd5b508282813d8311610584575b61056d8183612397565b8101031261057f576104c091516104b6565b600080fd5b503d610563565b6040513d8b823e3d90fd5b9190508560095416803b1561061857604051630208d92960e11b81526001600160a01b038716600482015230602482015260448101929092526064820189905282908290608490829084905af1801561060d576105f5575b50506104c7565b6105fe90612301565b6106095786386105ee565b8680fd5b6040513d84823e3d90fd5b8280fd5b908096508460095416916064600c546040519485938492638eb22cdd60e01b8452600484015260248301528b60448301525afa908115610692578791610665575b50943861044e565b90508581813d831161068b575b61067c8183612397565b8101031261057f57513861065d565b503d610672565b6040513d89823e3d90fd5b9550836009541681600c54606460405180948193638eb22cdd60e01b835260048301528b60248301528c60448301525afa9081156107105788916106e3575b509561043d565b90508181813d8311610709575b6106fa8183612397565b8101031261057f5751386106dc565b503d6106f0565b6040513d8a823e3d90fd5b503461031e578060031936011261031e576006546040516001600160a01b039091168152602090f35b503461031e578060031936011261031e576020601d54604051908152f35b503461031e578060031936011261031e576009546040516001600160a01b039091168152602090f35b503461031e57604036600319011261031e576107a56120fd565b60406107af612113565b9260018060a01b03809316815260026020522091166000526020526020604060002054604051908152f35b503461031e578060031936011261031e57600b546040516001600160a01b039091168152602090f35b503461031e576108123661218f565b91839193959495421161095f5760018060a01b03928388169485600052600460205260406000209283546000198114610949576108f5956108ed956001830190556040519060208201927f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e2668452600060408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e081526108b181612360565b5190206108bc612af4565b9060405190602082019261190160f01b845260228301526042820152604281526108e58161237c565b519020612dc9565b919091612cca565b16036109045761037092612e9c565b60405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152606490fd5b634e487b7160e01b600052601160045260246000fd5b60405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b503461031e578060031936011261031e576008546040516001600160a01b039091168152602090f35b503461031e576109dc366121de565b90929160038352602091600783526109fb60ff60408620541615612ef3565b610a03612757565b5050610a0d613674565b610a178183612f7b565b6001600160a01b0385811695909190610a3230881415612f30565b828416928387526018865260408720610a4c84825461249f565b9055610a5a8360155461249f565b6015556009541690600c5490823b15610bb557604051630208d92960e11b81523060048201526001600160a01b039190911660248201526044810191909152606481018390529086908290608490829084905af18015610baa57610b93575b50808596837f8ad4d3ff00da092c7ad9a573ea4f5f6a3dffc6712dc06d3f78f49b862297c40288610b2b9899a4818652602685526040862060285490818852865260408720548211600014610b6c57505084526026835260408420602854855283528360408120555b6011549061307f565b15610b34575080f35b6064906040519062461bcd60e51b82526004820152601160248201527013585c9ad95d0e881a5b9cdbdb1d995b9d607a1b6044820152fd5b9091865260268552604086209086528452610b8c6040862091825461249f565b9055610b22565b610b2b9495610ba28392612301565b959450610ab9565b6040513d88823e3d90fd5b8780fd5b503461031e578060031936011261031e576020601e54604051908152f35b503461031e578060031936011261031e576060602454604051906001600160401b0380821683528160401c16602083015260801c6040820152f35b503461031e578060031936011261031e576020601a54604051908152f35b503461031e57604036600319011261031e57610c4a6120fd565b60243580928115801590610d01575b610c91575b50506040519182526001600160a01b031690339060008051602061395c83398151915290602090a3602060405160018152f35b33815260016020526040812054610caa83821015612c1e565b6001600160a01b0384169033829003610cc5575b5050610c5e565b604093610cdc91610cd7841515612c63565b61249f565b338352600160205283832055815220610cf68382546124ac565b905581388080610cbe565b50336001600160a01b03841614610c59565b503461031e57604036600319011261031e576060610d3b610d326120fd565b602435906125eb565b9060405192835260208301526040820152f35b503461031e578060031936011261031e576020602c54604051908152f35b503461031e57604036600319011261031e576020610d94610d8b6120fd565b602435906129c2565b604051908152f35b503461031e578060031936011261031e57808060018060a01b03600b541660405160208101906395d89b4160e01b825260048152610dd98161232a565b51915afa610de5613760565b915015610e4557610df8610353916137e7565b610e316023604051809362746d2d60e81b6020830152610e218151809260208686019101612129565b8101036003810184520182612397565b60405191829160208352602083019061214c565b50610353610e51613790565b610df8565b503461031e578060031936011261031e5760208054604051908152f35b503461031e57604036600319011261031e576004356001600160401b038111611088573660238201121561108857806004013582610eb0826123b8565b92610ebe6040519485612397565b82845260208401923660248284010111610618578060246020930185378401015260243561ffff811681036110845761010091828480518101031261108057610f069061274a565b610f1260408501612ca8565b91610f1f60608601612ca8565b9460808101519460a082015192610f3860c08401612cbc565b9160e08401519301519380421161095f578515611059577f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e266915b6001600160a01b0388168b52600460205260408b20805491906000198314611045579161ffff611002989694926108ed98969460018401905560405194602086015216604084015260018060a01b038a16606084015260018060a01b038c1660808401528a60a084015260c083015260e082015260e08152610ff381612360565b602081519101206108bc612af4565b6001600160a01b03838116911603610904571561102f57610370926001600160a01b039081169116612e9c565b610370926001600160a01b039081169116612e4e565b634e487b7160e01b8d52601160045260248dfd5b7f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d691610f72565b8480fd5b8380fd5b5080fd5b503461031e578060031936011261031e576005546040516001600160a01b039091168152602090f35b503461031e578060031936011261031e576020601b54604051908152f35b503461031e578060031936011261031e57601454604080516001600160801b038316815260809290921c602083015290f35b503461031e578060031936011261031e576020602e54604051908152f35b503461031e57604036600319011261031e5761114a6111406120fd565b6024359033612e4e565b602060405160018152f35b503461031e57602036600319011261031e576020906040906001600160a01b0361117d6120fd565b168152600483522054604051908152f35b503461031e578060031936011261031e57600f546040516001600160a01b039091168152602090f35b503461031e578060031936011261031e57610353604051610e31816111db8161227c565b0382612397565b503461031e57602036600319011261031e5760043590600982101561031e57602060ff61120e84612213565b54166040519015158152f35b503461031e57602036600319011261031e576020906040906001600160a01b036112426120fd565b168152600183522054604051908152f35b503461031e578060031936011261031e57600a546040516001600160a01b039091168152602090f35b503461031e578060031936011261031e57611295613181565b5060806112a06131b9565b509350505050604051916001600160401b0380825116845260208201511660208401526040600180861b039101511660408301526060820152f35b503461031e578060031936011261031e576020601c54604051908152f35b503461031e578060031936011261031e5760206001600160401b03602d5460401c16604051908152f35b503461031e578060031936011261031e5760206001600160401b03602d5416604051908152f35b503461031e578060031936011261031e5760206001600160401b03602f5416604051908152f35b503461031e578060031936011261031e576020602154604051908152f35b503461031e578060031936011261031e576006546001600160a01b0390818116338190036113f957806005549384167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08680a36001600160a01b0319928316176005551660065580f35b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b503461031e578060031936011261031e576020602954604051908152f35b503461031e57602036600319011261031e576020906040906001600160a01b036114836120fd565b168152601783522054604051908152f35b503461031e578060031936011261031e576020601554604051908152f35b503461031e578060031936011261031e576020600e54604051908152f35b503461031e578060031936011261031e576020601654604051908152f35b503461031e57606036600319011261031e576020610d946044356024356004356124d2565b503461031e578060031936011261031e576020601154604051908152f35b503461031e578060031936011261031e57600d546040516001600160a01b039091168152602090f35b503461031e578060031936011261031e576020601254604051908152f35b503461031e578060031936011261031e576020610d94612af4565b503461031e578060031936011261031e576020601954604051908152f35b503461031e578060031936011261031e576020601354604051908152f35b503461031e578060031936011261031e57808060018060a01b03600d5416604051602081019063313ce56760e01b82526004815261160c8161232a565b51915afa90611619613760565b9180611656575b1561164b5760208280518101031261031e57506116406020809201612cbc565b60ff60405191168152f35b505060206012611640565b506020825114611620565b503461031e57611670366121de565b9192826116ac575b506040519182526001600160a01b0390811692169060008051602061395c83398151915290602090a3602060405160018152f35b6001600160a01b038481168083526001602090815260408420549286906116d582861015612c1e565b8616938484036116ea575b5050505050611678565b838652600283526040808720338852845286205460018101611754575b50926001602096936117328794604097610cd760008051602061395c8339815191529c9a1515612c63565b92855252838320558152206117488582546124ac565b905591388085816116e0565b909181106117a857926001602096936117328a60008051602061395c8339815191529a98956117858260409a61249f565b86895260028552898920338a528552898920559497509497995050939650611707565b60405162461bcd60e51b815260048101849052601860248201527745524332303a20616c6c6f77616e636520746f6f206c6f7760401b6044820152606490fd5b503461031e576117f73661218f565b9083959495421161095f576001600160a01b03878116808a52600460205260408a20805491969295929060001983146118a857826118999694928d9260016108ed98960190556040519160208301937f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d6855260408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e081526108b181612360565b16036109045761037092612e4e565b634e487b7160e01b8c52601160045260248cfd5b503461031e57602036600319011261031e576020906040906001600160a01b036118e46120fd565b168152601883522054604051908152f35b503461031e578060031936011261031e57602060255460801c604051908152f35b503461031e57604036600319011261031e5760043560098110156110885761193c612171565b6008549091906001600160a01b031633036119f25760ff61195c82612213565b541615159115159182146119b857808260ff61197a6119a894612213565b54161515827feeec81de25875ce1725479bb76f720a8defdb43dea041919ae37bb4aae9847c08780a4612213565b9060ff8019835416911617905580f35b60405162461bcd60e51b81526020600482015260126024820152714d61726b65743a2073616d6520737461746560701b6044820152606490fd5b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881d5b985d5d1a1bdc9a5e995960621b6044820152606490fd5b503461031e5761018036600319011261031e5760246001600160a01b0381358181169081900361108457604435916001600160401b0390818411611eab5736602385011215611eab578360040135918211611eab5736858386010111611eab576064359181831680930361060957611aab826005541633146123d3565b60043594620186a094611ac08688111561241e565b6020968088547fc353b09af857951dccce61b43a5854fc45beceed36c50e5d4cc2e71858a8e0df8c80a3875580611e6d575b508682611d32575b50505081611cf2575b505060843580611cdd575b5060a43580611cc8575b5060c43580611cb4575b5060e43580611c93575b506101043580611c72575b506101243580611c41575b50610144359081611bd1575b5050610164359182611b5e578380f35b601e548310611b73575050601f553880808380f35b9060326084926040519262461bcd60e51b845260048401528201527f4d61726b65743a206c69717569646174696f6e436f6c6c61746572616c697a616044820152711d1a5bdb94985d19481d1bdbc81cdb585b1b60721b6064820152fd5b611bdd9082111561241e565b601f548111611bf057601e553880611b4e565b5060256084926040519262461bcd60e51b845260048401528201527f4d61726b65743a20636f6c6c61746572616c697a6174696f6e5261746520746f6044820152646f2062696760d81b6064820152fd5b806016547fae6e0ab3b95f0a53ff9660a390ccedcbbf1f2355dce974a9841af106fddcfaba8780a360165538611b42565b611c7d82821061241e565b611c8a601b54821161241e565b601c5538611b37565b611c9e82821061241e565b611cab601c54821061241e565b601b5538611b2c565b611cbf82821061241e565b601d5538611b22565b611cd48282111561241e565b601a5538611b18565b611ce98282111561241e565b60195538611b0e565b816008549182167f5a62d22209e370e38eea92cfddcd228e656e6ec139243392a760a7769f5877fd8880a36001600160a01b031916176008553880611b03565b8291611d3f601054612242565b601f8111611e1c575b508990601f8411600114611dad578a93611da0575b5050508160011b916000199060031b1c1916176010555b7fa6f004921c944d4b8bf6e38462b00f36a58d62495d56b51f571ab78f732c98158680a1388086611afa565b0101359050863880611d5d565b60108b52888b20601f198516955092509089908b5b8a878210611e015750508460019610611de5575b50505050811b01601055611d74565b60001960f88660031b161c199201013516905538808881611dd6565b8483019093013585556001909401938b929182019101611dc2565b9150915060108952868920601f840160051c8101888510611e66575b91849391601f8b94920160051c01905b818110611e555750611d48565b8b81558594508a9350600101611e48565b5080611e38565b600f80546001600160a01b0319169190911790557f0b2d6eb667d0522c3eb86e4288afecae6c11591ffd1345d4d12407e0598bca9b8880a138611af2565b8580fd5b503461031e57604036600319011261031e5761114a611ecc6120fd565b6024359033612e9c565b503461031e57606036600319011261031e57611ef06120fd565b611ef8612171565b611f00612180565b9060018060a01b03928391611f1a836005541633146123d3565b15611fbe571690811590811591611fb6575b5015611f7957806005549283167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08580a36001600160a01b03199182161760055560068054909116905580f35b60405162461bcd60e51b81526020600482015260156024820152744f776e61626c653a207a65726f206164647265737360581b6044820152606490fd5b905038611f2c565b9150501660018060a01b0319600654161760065580f35b503461031e578060031936011261031e57808060018060a01b03600b541660405160208101906306fdde0360e01b8252600481526120128161232a565b51915afa61201e613760565b91501561207b57612031610353916137e7565b610e316034604051809373546170696f63612053696e67756c61726974792d60601b602083015261206b8151809260208686019101612129565b8101036014810184520182612397565b50610353612087613790565b612031565b503461031e578060031936011261031e5760406120a7612757565b825191151582526020820152f35b9050346110885760403660031901126110885760406020926120d56120fd565b6120dd612113565b6001600160a01b0391821683526003865283832091168252845220548152f35b600435906001600160a01b038216820361057f57565b602435906001600160a01b038216820361057f57565b60005b83811061213c5750506000910152565b818101518382015260200161212c565b9060209161216581518092818552858086019101612129565b601f01601f1916010190565b60243590811515820361057f57565b60443590811515820361057f57565b60e090600319011261057f576001600160a01b0390600435828116810361057f5791602435908116810361057f5790604435906064359060843560ff8116810361057f579060a4359060c43590565b606090600319011261057f576001600160a01b0390600435828116810361057f5791602435908116810361057f579060443590565b600981101561222c576000526007602052604060002090565b634e487b7160e01b600052602160045260246000fd5b90600182811c92168015612272575b602083101461225c57565b634e487b7160e01b600052602260045260246000fd5b91607f1691612251565b6010546000929161228c82612242565b9081815260019283811690816000146122e657506001146122ac57505050565b9092935060106000526020928360002092846000945b8386106122d25750505050010190565b8054858701830152940193859082016122c2565b91935050602093945060ff191683830152151560051b010190565b6001600160401b03811161231457604052565b634e487b7160e01b600052604160045260246000fd5b604081019081106001600160401b0382111761231457604052565b606081019081106001600160401b0382111761231457604052565b61010081019081106001600160401b0382111761231457604052565b608081019081106001600160401b0382111761231457604052565b90601f801991011681019081106001600160401b0382111761231457604052565b6001600160401b03811161231457601f01601f191660200190565b156123da57565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b1561242557565b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881b9bdd081d985b1a59607a1b6044820152606490fd5b8181029291811591840414171561094957565b811561247b570490565b634e487b7160e01b600052601260045260246000fd5b604d811161094957600a0a90565b9190820391821161094957565b9190820180921161094957565b8181039291600013801582851316918412161761094957565b60145491929161251b9161250c91612502916124f8906001600160801b0383169061245e565b9060801c90612471565b93601f549061245e565b61251583612491565b90612471565b8083106125e35761252f61256b918461249f565b91612566612560612557601e5461255161254886612491565b602154906124ac565b9061245e565b61251584612491565b91612491565b6124b9565b6509184e72a0009081810291818305149015171561094957670de0b6b3a76400009182810292818405149015171561094957801561247b57600160ff1b9180831460001983141661094957059060008212156125dc57811461094957600003905b8082116125d7575090565b905090565b50906125cc565b505050600090565b9160018060a01b03809316916000938385526020601781526040918287205490811561273d578783855161261e8161232a565b828152015261262b6131b9565b505050505091905061263e8615156128bf565b6009541683600c54898b52601882526064878c2054918851948593849263442c159960e01b8452600484015260248301528d60448301525afa908115612733578991612700575b50916126e06126f497989994926126bb886126b66126ad601898620186a0602254049061245e565b601e549061245e565b612471565b815190936001600160801b039186916126d69184169061245e565b9201511690612471565b8181106126f857035b97835252205461290b565b9091565b5050826126e9565b90508381813d831161272c575b6127178183612397565b8101031261272857516126e0612685565b8880fd5b503d61270d565b85513d8b823e3d90fd5b5086955085949350505050565b5190811515820361057f57565b600f546040805163d6d7d52560e01b8152602060048201529290916001600160a01b031682848061278a6024820161227c565b0381600080955af180156128b35781948291612877575b5092841561281a5783156127e057507f9f9192b5edb17356c524e08d9e025c8e2f6307e6ea52fb7968faa3081f51c3c883918260115580a25b42601355565b5162461bcd60e51b81526020600482015260146024820152734d61726b65743a20696e76616c6964207261746560601b6044820152606490fd5b9192505061282d601354601254906124ac565b421161283d5750601154906127da565b5162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881c985d19481d1bdbc81bdb1960621b6044820152606490fd5b809550848092503d83116128ac575b6128908183612397565b8101031261031e5760206128a38561274a565b940151386127a1565b503d612886565b508251903d90823e3d90fd5b156128c657565b60405162461bcd60e51b815260206004820152601e60248201527f4d61726b65743a2065786368616e676552617465206e6f742076616c696400006044820152606490fd5b6129168215156128bf565b602060018060a01b0360095416916064600c54604051948593849263442c159960e01b845260048401526024830152600060448301525afa9081156129b657600091612983575b50906126b661296f926022549061245e565b620186a061297f601e548361245e565b0491565b906020823d82116129ae575b8161299c60209383612397565b8101031261031e5750516126b661295d565b3d915061298f565b6040513d6000823e3d90fd5b6001600160a01b031660008181526018602052604081205490926129e59161290b565b918352601760205260408320548015612aee578115612aee57818110612aee5782811015612ae457601454612a2e918391610cd7916124f8906001600160801b0383169061245e565b90620186a09283830292808404851490151715612ad057612a5392916125159161249f565b91601b5491601c5493612a6685856124b9565b80820291848212600160ff1b821416612ad0578183051490151715612abc5705818482019485129112908015821691151617612aa857508082126125d7575090565b634e487b7160e01b81526011600452602490fd5b634e487b7160e01b83526011600452602483fd5b634e487b7160e01b85526011600452602485fd5b50505050601b5490565b50505090565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03161480612bf5575b15612b4f577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f000000000000000000000000000000000000000000000000000000000000000082527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a0815260c081018181106001600160401b038211176123145760405251902090565b507f00000000000000000000000000000000000000000000000000000000000000004614612b26565b15612c2557565b60405162461bcd60e51b815260206004820152601660248201527545524332303a2062616c616e636520746f6f206c6f7760501b6044820152606490fd5b15612c6a57565b60405162461bcd60e51b815260206004820152601660248201527545524332303a206e6f207a65726f206164647265737360501b6044820152606490fd5b51906001600160a01b038216820361057f57565b519060ff8216820361057f57565b600581101561222c5780612cdb5750565b60018103612d235760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b6044820152606490fd5b60028103612d705760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606490fd5b600314612d7957565b60405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608490fd5b9291906fa2a8918ca85bafe22016d0b997e4df60600160ff1b038311612e425791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa15612e355781516001600160a01b03811615612e2f579190565b50600190565b50604051903d90823e3d90fd5b50505050600090600390565b7fe50de2333c10a9502fcb1d8ae13a51bbf423153dfc63c2b8997665b32154afc360018060a01b038092169160009083825260036020526040822094169384825260205284604082205580a4565b909160207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259160018060a01b03809416938460005260028352604060002095169485600052825280604060002055604051908152a3565b15612efa57565b60405162461bcd60e51b815260206004820152600e60248201526d13585c9ad95d0e881c185d5cd95960921b6044820152606490fd5b15612f3757565b606460405162461bcd60e51b815260206004820152602060248201527f4d61726b65743a2063616e6e6f742065786563757465206f6e20697473656c666044820152fd5b6001600160a01b0316338103612f8f575050565b6000818152602090600382526040918282203383528152848383205410612ff95783825260038152828220338352815282822054600101612fd2575b5050505050565b612fed9382526003815282822090338352522091825461249f565b90553880808080612fcb565b60649083519062461bcd60e51b82526004820152601460248201527313585c9ad95d0e881b9bdd08185c1c1c9bdd995960621b6044820152fd5b604051906130408261232a565b6014546001600160801b038116835260801c6020830152565b604051906130668261232a565b6025546001600160801b038116835260801c6020830152565b919060018060a01b03806000941684526020601781526040852054908115613177576018815260408620548015612fcb57816130b9613033565b9460095416916064600c54604051948593849263442c159960e01b8452600484015260248301528b60448301525afa96871561316b578097613135575b50506126d66131156126ad613130969798620186a0602254049061245e565b9561312b60018060801b0394858751169061245e565b61245e565b111590565b9096508187813d8311613164575b61314d8183612397565b8101031261031e57509451946126d66131156130f6565b503d613143565b604051903d90823e3d90fd5b5060019450505050565b6040519061318e82612345565b60006040838281528260208201520152565b6001600160801b03918216908216019190821161094957565b6131c1613181565b50600060206040516131d28161232a565b8281520152600060206040516131e78161232a565b8281520152604051906131f982612345565b602454916001600160401b038316815260208101926001600160401b038160401c16845260801c6040820152809261322f613033565b92613238613059565b92600060018060a01b0360095416600e549460018060801b038751166040519063442c159960e01b8252876004830152602482015260006044820152602081606481865afa80156129b657600090613640575b89516132a192506001600160801b0316906124ac565b8061360b575060005b6132bf6001600160401b03829351164261249f565b9485156135e1575050426001600160401b031660208a8101919091528801516001600160801b03161561359757506020670de0b6b3a764000061331c8561312b8c6001600160401b038d60018060801b039051169151169061245e565b895191900496906001600160801b039061333b90828a169083166131a0565b168952875160405163442c159960e01b815260048101929092526001600160801b031660248201526000604482015291829060649082905afa80156129b657600090613563575b875161339892506001600160801b0316906124ac565b926133c6846126b6620186a06133b0601a548a61245e565b60208c01516001600160801b031691900461245e565b6040890180519195916001600160801b0380881692916133e990849083166131a0565b16905260208801805190916001600160801b0391613409919083166131a0565b1690528061352e575060005b602a54909384828110156134a95761342d908361249f565b90670de0b6b3a7640000820291808304670de0b6b3a76400001490151715610949576126b661348161347b61346d6001600160401b039661348b96612471565b9361312b602e54958061245e565b836124ac565b91848d511661245e565b168089526001600160401b03602d54168091106134a55750565b8852565b909150602b548082116134bb57505050565b6134c49161249f565b670de0b6b3a7640000810290808204670de0b6b3a76400001490151715610949576001600160401b03916126b661350761347b61346d61351095602c5490612471565b848d511661245e565b81602d5460401c16808211613526575b50168852565b905038613520565b87516001600160801b0316670de0b6b3a76400008181029291808404909114901517156109495761355e91612471565b613415565b506020813d60201161358f575b8161357d60209383612397565b8101031261057f576133989051613382565b3d9150613570565b9697939450509350506001600160401b038151166001600160401b03602f54168091036135d5575b5093926135ca613059565b926000926000929190565b815260019250386135bf565b9750985050505050925050916135f5613033565b916135fe613059565b9160009160009190600090565b88516001600160801b0316670de0b6b3a76400008181029291808404909114901517156109495761363b91612471565b6132aa565b506020813d60201161366c575b8161365a60209383612397565b8101031261057f576132a1905161328b565b3d915061364d565b602060406136806131b9565b9397959390929015613727575050506001600160401b03602f54166000807f33af5ce86e8438eff54589f85332916444457dfa8685493fbd579b809097026b868851838152a45b6001600160401b03815116838201519160018060801b0319958691015160801b16916001600160401b0360401b9060401b16171760245560018060801b039083838383511692015160801b161760145583511692015160801b1617602555565b7f33af5ce86e8438eff54589f85332916444457dfa8685493fbd579b809097026b866001600160401b03865116948951908152a46136c7565b3d1561378b573d90613771826123b8565b9161377f6040519384612397565b82523d6000602084013e565b606090565b6040519061379d8261232a565b60038252623f3f3f60e81b6020830152565b9081518110156137c0570160200190565b634e487b7160e01b600052603260045260246000fd5b60ff1660ff81146109495760010190565b8051604081106138625750805181019060208181840193031261057f576020810151906001600160401b03821161057f570181603f8201121561057f576020810151613832816123b8565b926138406040519485612397565b8184526040828401011161057f5761385f916040602085019101612129565b90565b602092908303613950576000805b60ff81168581109081613931575b50156138925761388d906137d6565b613870565b9260ff809416926138a2846123b8565b936138b06040519586612397565b8085526138bf601f19916123b8565b013687860137825b85811687811080613914575b156139095761390491906138fe6001600160f81b03196138f383886137af565b5116871a91886137af565b536137d6565b6138c7565b505094505050905090565b506001600160f81b031961392882866137af565b511615156138d3565b6001600160f81b0319915061394690866137af565b511615153861387e565b91505061385f61379056feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa26469706673582212202a72a721d65bf335e9be3a4064c251679e50f6b2d87134faff5f08152fb0d7f164736f6c63430008120033"; + "0x6101408060405234620001e5576200001781620001ea565b601381526001602082017f546170696f63612053696e67756c617269747900000000000000000000000000815260206040516200005481620001ea565b8381520192603160f81b845251902091208160e052610100918183524660a0526040519160208301907f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f92838352604085015260608401524660808401523060a084015260a0835260c083019280841060018060401b03851117620001cf5760408490525190206080523060c052610120908152600580546001600160a01b0319163390811790915560007f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a362013880601b5562015f90601c55612710601d55612ee06020557f0bd4060688a1800ae986e4840aebc924bb40b5bf44de4583df2257220b54b77c6026557f7d1dc38e60930664f8cbf495da6556ca091d2f92d6550877750c049864b182306027556161a86028556032602f556139ca928362000207843960805183612b3c015260a05183612c07015260c05183612b06015260e05183612b8b01525182612bb101525181612b680152f35b634e487b7160e01b600052604160045260246000fd5b600080fd5b604081019081106001600160401b03821117620001cf5760405256fe608080604052600436101561001357600080fd5b600090813560e01c908162a02a20146120c45750806302ce728f1461209b57806306fdde0314611fe4578063078dfbe714611ee5578063095ea7b314611ebe5780630c4e84f014611da657806318160ddd14611d855780631c9e379b14611d4c5780631da8bf1014611c7857806323b872dd14611af1578063313ce56714611a5f578063331960ff14611a4157806334d441d014611a235780633644e51514611a0857806337b6b7b9146119ea57806338d52e0f146119c15780633ba0b9a9146119a35780633f741adb1461197e57806340626d8b1461196057806344de240a14611942578063473e3ce71461192457806348e4163e146118eb5780634d7f2a34146118cd5780634e71e0c81461181f578063529898f21461180257806352f353eb146117db57806355140232146117b457806355c2ab941461178a578063579354621461176c5780635dfe04e81461170d5780636c3d8b8f146116e457806370a08231146116ab578063727785471461167357806374645ff3146116485780637dc0d1d01461161f5780637ecebe00146115e65780637fa0b84e146115b4578063821226e8146115965780638285ef40146115645780638c5d0ed3146115465780638da5cb5b1461151d578063910dd7c814611304578063959916dc146112e657806395d89b411461122c57806399a97028146111fc5780639c5d7192146111de5780639e15e89f146111a3578063a9059cbb146110c0578063b0e21e8a146110a2578063b27c0e7414611067578063bb4cfe3b14611049578063cce19f8114610e5d578063ce8849ed14610e34578063d3fb2a38146109a4578063d505accf14610803578063d8dfeb45146107da578063dd62ed3e1461078b578063de40657714610762578063e0996cb614610744578063e30c39781461071b578063e9a49252146103cd578063ea64dd56146103af578063eec0f42e14610391578063f42760b714610373578063f8ba4cff14610357578063f9557ccb146103215763ffe04c661461030157600080fd5b3461031e578060031936011261031e576020602954604051908152f35b80fd5b503461031e578060031936011261031e57602454604080516001600160801b038316815260809290921c602083015290f35b0390f35b503461031e578060031936011261031e5761037061368d565b80f35b503461031e578060031936011261031e576020602a54604051908152f35b503461031e578060031936011261031e576020600c54604051908152f35b503461031e578060031936011261031e576020601f54604051908152f35b503461031e5760a036600319011261031e576103e761210c565b6103ef612122565b906103f861218f565b916064359160843593600260005260206007815261041e60ff6040600020541615612f02565b6001600160a01b039384169461043630871415612f3f565b861561069d575b6104478785612f8a565b861561061c575b5084875260188152604087206104658782546124bb565b905560155461047487826124bb565b601555600c5490888415610596575082866009541692604460405180958193627eeac760e11b835230600484015260248301525afa801561058b578990610557575b6104c092506124ae565b8611610523575b848752602581526040872090602754885252604086206104e88682546124bb565b90551561051e575080600954165b167f9ed03113de523cebfe5e49d5f8e12894b1c0d42ce805990461726444c90eab878480a480f35b6104f6565b6064906040519062461bcd60e51b82526004820152600d60248201526c0a68e987440e8dede40daeac6d609b1b6044820152fd5b508282813d8311610584575b61056d81836123a6565b8101031261057f576104c091516104b6565b600080fd5b503d610563565b6040513d8b823e3d90fd5b9190508560095416803b1561061857604051630208d92960e11b81526001600160a01b038716600482015230602482015260448101929092526064820189905282908290608490829084905af1801561060d576105f5575b50506104c7565b6105fe90612310565b6106095786386105ee565b8680fd5b6040513d84823e3d90fd5b8280fd5b908096508460095416916064600c546040519485938492638eb22cdd60e01b8452600484015260248301528b60448301525afa908115610692578791610665575b50943861044e565b90508581813d831161068b575b61067c81836123a6565b8101031261057f57513861065d565b503d610672565b6040513d89823e3d90fd5b9550836009541681600c54606460405180948193638eb22cdd60e01b835260048301528b60248301528c60448301525afa9081156107105788916106e3575b509561043d565b90508181813d8311610709575b6106fa81836123a6565b8101031261057f5751386106dc565b503d6106f0565b6040513d8a823e3d90fd5b503461031e578060031936011261031e576006546040516001600160a01b039091168152602090f35b503461031e578060031936011261031e576020601d54604051908152f35b503461031e578060031936011261031e576009546040516001600160a01b039091168152602090f35b503461031e57604036600319011261031e576107a561210c565b60406107af612122565b9260018060a01b03809316815260026020522091166000526020526020604060002054604051908152f35b503461031e578060031936011261031e57600b546040516001600160a01b039091168152602090f35b503461031e576108123661219e565b91839193959495421161095f5760018060a01b03928388169485600052600460205260406000209283546000198114610949576108f5956108ed956001830190556040519060208201927f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e2668452600060408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e081526108b18161236f565b5190206108bc612b03565b9060405190602082019261190160f01b845260228301526042820152604281526108e58161238b565b519020612dd8565b919091612cd9565b16036109045761037092612eab565b60405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152606490fd5b634e487b7160e01b600052601160045260246000fd5b60405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b503461031e5761016036600319011261031e576001600160a01b0360043581811690819003610618576024916001600160401b038335818111610e305736602382011215610e30578060040135918211610e305736858383010111610e30576044359383851680950361057f57610a20846005541633146123e2565b80610df2575b508482610c74575b50505081610c34575b505060643580610c1c575b5060843580610c04575b5060a43580610bed575b5060c43580610bc9575b5060e43580610ba5575b506101043580610b74575b506101243580610b01575b50610144359081610a8f578280f35b601e548210610aa25750601f5538808280f35b60849060326040519162461bcd60e51b8352602060048401528201527f4d61726b65743a206c69717569646174696f6e436f6c6c61746572616c697a616044820152711d1a5bdb94985d19481d1bdbc81cdb585b1b60721b6064820152fd5b610b10620186a082111561242d565b601f548111610b2257601e5538610a80565b60405162461bcd60e51b8152602060048201526025818401527f4d61726b65743a20636f6c6c61746572616c697a6174696f6e5261746520746f6044820152646f2062696760d81b6064820152608490fd5b806016547fae6e0ab3b95f0a53ff9660a390ccedcbbf1f2355dce974a9841af106fddcfaba8580a360165538610a75565b610bb3620186a0821061242d565b610bc0601b54821161242d565b601c5538610a6a565b610bd7620186a0821061242d565b610be4601c54821061242d565b601b5538610a60565b610bfb620186a0821061242d565b601d5538610a56565b610c13620186a082111561242d565b601a5538610a4c565b610c2b620186a082111561242d565b60195538610a42565b816008549182167f5a62d22209e370e38eea92cfddcd228e656e6ec139243392a760a7769f5877fd8680a36001600160a01b031916176008553880610a37565b8291610c81601054612251565b601f8111610d81575b508790601f8411600114610cef578893610ce2575b5050508160011b916000199060031b1c1916176010555b7fa6f004921c944d4b8bf6e38462b00f36a58d62495d56b51f571ab78f732c98158480a1388084610a2e565b0101359050843880610c9f565b60108952601f19841694507f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae67292509087908960205b878210610d625750508460019610610d46575b50505050811b01601055610cb6565b60001960f88660031b161c199201013516905538808681610d37565b8285019093013585556001949094019389929182019190810190610d24565b6010895290925090507f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae672601f840160051c810160208510610deb575b91849391601f8994920160051c01905b818110610dda5750610c8a565b898155859450889350600101610dcd565b5080610dbd565b600f80546001600160a01b0319169190911790557f0b2d6eb667d0522c3eb86e4288afecae6c11591ffd1345d4d12407e0598bca9b8680a138610a26565b8580fd5b503461031e578060031936011261031e576008546040516001600160a01b039091168152602090f35b503461031e57610e6c366121ed565b9092916003835260209160078352610e8b60ff60408620541615612f02565b610e93612766565b5050610e9d61368d565b610ea78183612f8a565b6001600160a01b0385811695909190610ec230881415612f3f565b828416928387526018865260408720610edc8482546124ae565b9055610eea836015546124ae565b6015556009541690600c5490823b1561104557604051630208d92960e11b81523060048201526001600160a01b039190911660248201526044810191909152606481018390529086908290608490829084905af1801561103a57611023575b50808596837f8ad4d3ff00da092c7ad9a573ea4f5f6a3dffc6712dc06d3f78f49b862297c40288610fbb9899a4818652602585526040862060275490818852865260408720548211600014610ffc57505084526025835260408420602754855283528360408120555b6011549061308e565b15610fc4575080f35b6064906040519062461bcd60e51b82526004820152601160248201527013585c9ad95d0e881a5b9cdbdb1d995b9d607a1b6044820152fd5b909186526025855260408620908652845261101c604086209182546124ae565b9055610fb2565b610fbb94956110328392612310565b959450610f49565b6040513d88823e3d90fd5b8780fd5b503461031e578060031936011261031e576020601e54604051908152f35b503461031e578060031936011261031e576060602354604051906001600160401b0380821683528160401c16602083015260801c6040820152f35b503461031e578060031936011261031e576020601a54604051908152f35b503461031e57604036600319011261031e576110da61210c565b60243580928115801590611191575b611121575b50506040519182526001600160a01b031690339060008051602061397583398151915290602090a3602060405160018152f35b3381526001602052604081205461113a83821015612c2d565b6001600160a01b0384169033829003611155575b50506110ee565b60409361116c91611167841515612c72565b6124ae565b3383526001602052838320558152206111868382546124bb565b90558138808061114e565b50336001600160a01b038416146110e9565b503461031e57604036600319011261031e5760606111cb6111c261210c565b602435906125fa565b9060405192835260208301526040820152f35b503461031e578060031936011261031e576020602b54604051908152f35b503461031e57604036600319011261031e57602061122461121b61210c565b602435906129d1565b604051908152f35b503461031e578060031936011261031e57808060018060a01b03600b541660405160208101906395d89b4160e01b82526004815261126981612339565b51915afa611275613779565b9150156112d55761128861035391613800565b6112c16023604051809362746d2d60e81b60208301526112b18151809260208686019101612138565b81010360038101845201826123a6565b60405191829160208352602083019061215b565b506103536112e16137a9565b611288565b503461031e578060031936011261031e576020602f54604051908152f35b503461031e57604036600319011261031e576004356001600160401b038111611519573660238201121561151957806004013582611341826123c7565b9261134f60405194856123a6565b82845260208401923660248284010111610618578060246020930185378401015260243561ffff81168103611515576101009182848051810103126115115761139790612759565b6113a360408501612cb7565b916113b060608601612cb7565b9460808101519460a0820151926113c960c08401612ccb565b9160e08401519301519380421161095f5785156114ea577f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e266915b6001600160a01b0388168b52600460205260408b208054919060001983146114d6579161ffff611493989694926108ed98969460018401905560405194602086015216604084015260018060a01b038a16606084015260018060a01b038c1660808401528a60a084015260c083015260e082015260e081526114848161236f565b602081519101206108bc612b03565b6001600160a01b0383811691160361090457156114c057610370926001600160a01b039081169116612eab565b610370926001600160a01b039081169116612e5d565b634e487b7160e01b8d52601160045260248dfd5b7f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d691611403565b8480fd5b8380fd5b5080fd5b503461031e578060031936011261031e576005546040516001600160a01b039091168152602090f35b503461031e578060031936011261031e576020601b54604051908152f35b503461031e578060031936011261031e57601454604080516001600160801b038316815260809290921c602083015290f35b503461031e578060031936011261031e576020602d54604051908152f35b503461031e57604036600319011261031e576115db6115d161210c565b6024359033612e5d565b602060405160018152f35b503461031e57602036600319011261031e576020906040906001600160a01b0361160e61210c565b168152600483522054604051908152f35b503461031e578060031936011261031e57600f546040516001600160a01b039091168152602090f35b503461031e578060031936011261031e576103536040516112c18161166c8161228b565b03826123a6565b503461031e57602036600319011261031e5760043590600982101561031e57602060ff61169f84612222565b54166040519015158152f35b503461031e57602036600319011261031e576020906040906001600160a01b036116d361210c565b168152600183522054604051908152f35b503461031e578060031936011261031e57600a546040516001600160a01b039091168152602090f35b503461031e578060031936011261031e57611726613190565b5060806117316131c8565b509350505050604051916001600160401b0380825116845260208201511660208401526040600180861b039101511660408301526060820152f35b503461031e578060031936011261031e576020601c54604051908152f35b503461031e578060031936011261031e5760206001600160401b03602c5460401c16604051908152f35b503461031e578060031936011261031e5760206001600160401b03602c5416604051908152f35b503461031e578060031936011261031e5760206001600160401b03602e5416604051908152f35b503461031e578060031936011261031e5760208054604051908152f35b503461031e578060031936011261031e576006546001600160a01b03908181163381900361188957806005549384167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08680a36001600160a01b0319928316176005551660065580f35b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b503461031e578060031936011261031e576020602854604051908152f35b503461031e57602036600319011261031e576020906040906001600160a01b0361191361210c565b168152601783522054604051908152f35b503461031e578060031936011261031e576020601554604051908152f35b503461031e578060031936011261031e576020600e54604051908152f35b503461031e578060031936011261031e576020601654604051908152f35b503461031e57606036600319011261031e5760206112246044356024356004356124e1565b503461031e578060031936011261031e576020601154604051908152f35b503461031e578060031936011261031e57600d546040516001600160a01b039091168152602090f35b503461031e578060031936011261031e576020601254604051908152f35b503461031e578060031936011261031e576020611224612b03565b503461031e578060031936011261031e576020601954604051908152f35b503461031e578060031936011261031e576020601354604051908152f35b503461031e578060031936011261031e57808060018060a01b03600d5416604051602081019063313ce56760e01b825260048152611a9c81612339565b51915afa90611aa9613779565b9180611ae6575b15611adb5760208280518101031261031e5750611ad06020809201612ccb565b60ff60405191168152f35b505060206012611ad0565b506020825114611ab0565b503461031e57611b00366121ed565b919282611b3c575b506040519182526001600160a01b0390811692169060008051602061397583398151915290602090a3602060405160018152f35b6001600160a01b03848116808352600160209081526040842054928690611b6582861015612c2d565b861693848403611b7a575b5050505050611b08565b838652600283526040808720338852845286205460018101611be4575b5092600160209693611bc287946040976111676000805160206139758339815191529c9a1515612c72565b9285525283832055815220611bd88582546124bb565b90559138808581611b70565b90918110611c385792600160209693611bc28a6000805160206139758339815191529a9895611c158260409a6124ae565b86895260028552898920338a528552898920559497509497995050939650611b97565b60405162461bcd60e51b815260048101849052601860248201527745524332303a20616c6c6f77616e636520746f6f206c6f7760401b6044820152606490fd5b503461031e57611c873661219e565b9083959495421161095f576001600160a01b03878116808a52600460205260408a2080549196929592906000198314611d385782611d299694928d9260016108ed98960190556040519160208301937f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d6855260408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e081526108b18161236f565b16036109045761037092612e5d565b634e487b7160e01b8c52601160045260248cfd5b503461031e57602036600319011261031e576020906040906001600160a01b03611d7461210c565b168152601883522054604051908152f35b503461031e578060031936011261031e57602060245460801c604051908152f35b503461031e57604036600319011261031e57600435600981101561151957611dcc612180565b6008549091906001600160a01b03163303611e825760ff611dec82612222565b54161515911515918214611e4857808260ff611e0a611e3894612222565b54161515827feeec81de25875ce1725479bb76f720a8defdb43dea041919ae37bb4aae9847c08780a4612222565b9060ff8019835416911617905580f35b60405162461bcd60e51b81526020600482015260126024820152714d61726b65743a2073616d6520737461746560701b6044820152606490fd5b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881d5b985d5d1a1bdc9a5e995960621b6044820152606490fd5b503461031e57604036600319011261031e576115db611edb61210c565b6024359033612eab565b503461031e57606036600319011261031e57611eff61210c565b611f07612180565b611f0f61218f565b9060018060a01b03928391611f29836005541633146123e2565b15611fcd571690811590811591611fc5575b5015611f8857806005549283167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08580a36001600160a01b03199182161760055560068054909116905580f35b60405162461bcd60e51b81526020600482015260156024820152744f776e61626c653a207a65726f206164647265737360581b6044820152606490fd5b905038611f3b565b9150501660018060a01b0319600654161760065580f35b503461031e578060031936011261031e57808060018060a01b03600b541660405160208101906306fdde0360e01b82526004815261202181612339565b51915afa61202d613779565b91501561208a5761204061035391613800565b6112c16034604051809373546170696f63612053696e67756c61726974792d60601b602083015261207a8151809260208686019101612138565b81010360148101845201826123a6565b506103536120966137a9565b612040565b503461031e578060031936011261031e5760406120b6612766565b825191151582526020820152f35b9050346115195760403660031901126115195760406020926120e461210c565b6120ec612122565b6001600160a01b0391821683526003865283832091168252845220548152f35b600435906001600160a01b038216820361057f57565b602435906001600160a01b038216820361057f57565b60005b83811061214b5750506000910152565b818101518382015260200161213b565b9060209161217481518092818552858086019101612138565b601f01601f1916010190565b60243590811515820361057f57565b60443590811515820361057f57565b60e090600319011261057f576001600160a01b0390600435828116810361057f5791602435908116810361057f5790604435906064359060843560ff8116810361057f579060a4359060c43590565b606090600319011261057f576001600160a01b0390600435828116810361057f5791602435908116810361057f579060443590565b600981101561223b576000526007602052604060002090565b634e487b7160e01b600052602160045260246000fd5b90600182811c92168015612281575b602083101461226b57565b634e487b7160e01b600052602260045260246000fd5b91607f1691612260565b6010546000929161229b82612251565b9081815260019283811690816000146122f557506001146122bb57505050565b9092935060106000526020928360002092846000945b8386106122e15750505050010190565b8054858701830152940193859082016122d1565b91935050602093945060ff191683830152151560051b010190565b6001600160401b03811161232357604052565b634e487b7160e01b600052604160045260246000fd5b604081019081106001600160401b0382111761232357604052565b606081019081106001600160401b0382111761232357604052565b61010081019081106001600160401b0382111761232357604052565b608081019081106001600160401b0382111761232357604052565b90601f801991011681019081106001600160401b0382111761232357604052565b6001600160401b03811161232357601f01601f191660200190565b156123e957565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b1561243457565b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881b9bdd081d985b1a59607a1b6044820152606490fd5b8181029291811591840414171561094957565b811561248a570490565b634e487b7160e01b600052601260045260246000fd5b604d811161094957600a0a90565b9190820391821161094957565b9190820180921161094957565b8181039291600013801582851316918412161761094957565b60145491929161252a9161251b9161251191612507906001600160801b0383169061246d565b9060801c90612480565b93601f549061246d565b612524836124a0565b90612480565b8083106125f25761253e61257a91846124ae565b9161257561256f612566601e54612560612557866124a0565b602054906124bb565b9061246d565b612524846124a0565b916124a0565b6124c8565b6509184e72a0009081810291818305149015171561094957670de0b6b3a76400009182810292818405149015171561094957801561248a57600160ff1b9180831460001983141661094957059060008212156125eb57811461094957600003905b8082116125e6575090565b905090565b50906125db565b505050600090565b9160018060a01b03809316916000938385526020601781526040918287205490811561274c578783855161262d81612339565b828152015261263a6131c8565b505050505091905061264d8615156128ce565b6009541683600c54898b52601882526064878c2054918851948593849263442c159960e01b8452600484015260248301528d60448301525afa90811561274257899161270f575b50916126ef61270397989994926126ca886126c56126bc601898620186a0602154049061246d565b601e549061246d565b612480565b815190936001600160801b039186916126e59184169061246d565b9201511690612480565b81811061270757035b97835252205461291a565b9091565b5050826126f8565b90508381813d831161273b575b61272681836123a6565b8101031261273757516126ef612694565b8880fd5b503d61271c565b85513d8b823e3d90fd5b5086955085949350505050565b5190811515820361057f57565b600f546040805163d6d7d52560e01b8152602060048201529290916001600160a01b03168284806127996024820161228b565b0381600080955af180156128c25781948291612886575b509284156128295783156127ef57507f9f9192b5edb17356c524e08d9e025c8e2f6307e6ea52fb7968faa3081f51c3c883918260115580a25b42601355565b5162461bcd60e51b81526020600482015260146024820152734d61726b65743a20696e76616c6964207261746560601b6044820152606490fd5b9192505061283c601354601254906124bb565b421161284c5750601154906127e9565b5162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881c985d19481d1bdbc81bdb1960621b6044820152606490fd5b809550848092503d83116128bb575b61289f81836123a6565b8101031261031e5760206128b285612759565b940151386127b0565b503d612895565b508251903d90823e3d90fd5b156128d557565b60405162461bcd60e51b815260206004820152601e60248201527f4d61726b65743a2065786368616e676552617465206e6f742076616c696400006044820152606490fd5b6129258215156128ce565b602060018060a01b0360095416916064600c54604051948593849263442c159960e01b845260048401526024830152600060448301525afa9081156129c557600091612992575b50906126c561297e926021549061246d565b620186a061298e601e548361246d565b0491565b906020823d82116129bd575b816129ab602093836123a6565b8101031261031e5750516126c561296c565b3d915061299e565b6040513d6000823e3d90fd5b6001600160a01b031660008181526018602052604081205490926129f49161291a565b918352601760205260408320548015612afd578115612afd57818110612afd5782811015612af357601454612a3d91839161116791612507906001600160801b0383169061246d565b90620186a09283830292808404851490151715612adf57612a629291612524916124ae565b91601b5491601c5493612a7585856124c8565b80820291848212600160ff1b821416612adf578183051490151715612acb5705818482019485129112908015821691151617612ab757508082126125e6575090565b634e487b7160e01b81526011600452602490fd5b634e487b7160e01b83526011600452602483fd5b634e487b7160e01b85526011600452602485fd5b50505050601b5490565b50505090565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03161480612c04575b15612b5e577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f000000000000000000000000000000000000000000000000000000000000000082527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a0815260c081018181106001600160401b038211176123235760405251902090565b507f00000000000000000000000000000000000000000000000000000000000000004614612b35565b15612c3457565b60405162461bcd60e51b815260206004820152601660248201527545524332303a2062616c616e636520746f6f206c6f7760501b6044820152606490fd5b15612c7957565b60405162461bcd60e51b815260206004820152601660248201527545524332303a206e6f207a65726f206164647265737360501b6044820152606490fd5b51906001600160a01b038216820361057f57565b519060ff8216820361057f57565b600581101561223b5780612cea5750565b60018103612d325760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b6044820152606490fd5b60028103612d7f5760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606490fd5b600314612d8857565b60405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608490fd5b9291906fa2a8918ca85bafe22016d0b997e4df60600160ff1b038311612e515791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa15612e445781516001600160a01b03811615612e3e579190565b50600190565b50604051903d90823e3d90fd5b50505050600090600390565b7fe50de2333c10a9502fcb1d8ae13a51bbf423153dfc63c2b8997665b32154afc360018060a01b038092169160009083825260036020526040822094169384825260205284604082205580a4565b909160207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259160018060a01b03809416938460005260028352604060002095169485600052825280604060002055604051908152a3565b15612f0957565b60405162461bcd60e51b815260206004820152600e60248201526d13585c9ad95d0e881c185d5cd95960921b6044820152606490fd5b15612f4657565b606460405162461bcd60e51b815260206004820152602060248201527f4d61726b65743a2063616e6e6f742065786563757465206f6e20697473656c666044820152fd5b6001600160a01b0316338103612f9e575050565b60008181526020906003825260409182822033835281528483832054106130085783825260038152828220338352815282822054600101612fe1575b5050505050565b612ffc938252600381528282209033835252209182546124ae565b90553880808080612fda565b60649083519062461bcd60e51b82526004820152601460248201527313585c9ad95d0e881b9bdd08185c1c1c9bdd995960621b6044820152fd5b6040519061304f82612339565b6014546001600160801b038116835260801c6020830152565b6040519061307582612339565b6024546001600160801b038116835260801c6020830152565b919060018060a01b03806000941684526020601781526040852054908115613186576018815260408620548015612fda57816130c8613042565b9460095416916064600c54604051948593849263442c159960e01b8452600484015260248301528b60448301525afa96871561317a578097613144575b50506126e56131246126bc61313f969798620186a0602154049061246d565b9561313a60018060801b0394858751169061246d565b61246d565b111590565b9096508187813d8311613173575b61315c81836123a6565b8101031261031e57509451946126e5613124613105565b503d613152565b604051903d90823e3d90fd5b5060019450505050565b6040519061319d82612354565b60006040838281528260208201520152565b6001600160801b03918216908216019190821161094957565b6131d0613190565b50600060206040516131e181612339565b8281520152600060206040516131f681612339565b828152015260405161320781612354565b6023546001600160401b03811682526001600160401b038160401c16602083015260801c6040820152809161323a613042565b91613243613068565b600954600e54825160405163442c159960e01b8152600481018390526001600160801b03909116602482015260006044820181905293959194919391926001600160a01b031690602081606481855afa80156129c557600090613659575b88516132b792506001600160801b0316906124bb565b80613624575060005b806132d86001600160401b03602087015116426124ae565b9485156135fa575050426001600160401b031660208a8101919091528801516001600160801b0316156135b057506020670de0b6b3a76400006133358561313a8c6001600160401b038d60018060801b039051169151169061246d565b895191900496906001600160801b039061335490828a169083166131af565b168952875160405163442c159960e01b815260048101929092526001600160801b031660248201526000604482015291829060649082905afa80156129c55760009061357c575b87516133b192506001600160801b0316906124bb565b926133df846126c5620186a06133c9601a548a61246d565b60208c01516001600160801b031691900461246d565b6040890180519195916001600160801b03808816929161340290849083166131af565b16905260208801805190916001600160801b0391613422919083166131af565b16905280613547575060005b602954909384828110156134c25761344690836124ae565b90670de0b6b3a7640000820291808304670de0b6b3a76400001490151715610949576126c561349a6134946134866001600160401b03966134a496612480565b9361313a602d54958061246d565b836124bb565b91848d511661246d565b168089526001600160401b03602c54168091106134be5750565b8852565b909150602a548082116134d457505050565b6134dd916124ae565b670de0b6b3a7640000810290808204670de0b6b3a76400001490151715610949576001600160401b03916126c561352061349461348661352995602b5490612480565b848d511661246d565b81602c5460401c1680821161353f575b50168852565b905038613539565b87516001600160801b0316670de0b6b3a76400008181029291808404909114901517156109495761357791612480565b61342e565b506020813d6020116135a8575b81613596602093836123a6565b8101031261057f576133b1905161339b565b3d9150613589565b9697939450509350506001600160401b038151166001600160401b03602e54168091036135ee575b5093926135e3613068565b926000926000929190565b815260019250386135d8565b97509850505050509250509161360e613042565b91613617613068565b9160009160009190600090565b87516001600160801b0316670de0b6b3a76400008181029291808404909114901517156109495761365491612480565b6132c0565b506020813d602011613685575b81613673602093836123a6565b8101031261057f576132b790516132a1565b3d9150613666565b602060406136996131c8565b9397959390929015613740575050506001600160401b03602e54166000807f33af5ce86e8438eff54589f85332916444457dfa8685493fbd579b809097026b868851838152a45b6001600160401b03815116838201519160018060801b0319958691015160801b16916001600160401b0360401b9060401b16171760235560018060801b039083838383511692015160801b161760145583511692015160801b1617602455565b7f33af5ce86e8438eff54589f85332916444457dfa8685493fbd579b809097026b866001600160401b03865116948951908152a46136e0565b3d156137a4573d9061378a826123c7565b9161379860405193846123a6565b82523d6000602084013e565b606090565b604051906137b682612339565b60038252623f3f3f60e81b6020830152565b9081518110156137d9570160200190565b634e487b7160e01b600052603260045260246000fd5b60ff1660ff81146109495760010190565b80516040811061387b5750805181019060208181840193031261057f576020810151906001600160401b03821161057f570181603f8201121561057f57602081015161384b816123c7565b9261385960405194856123a6565b8184526040828401011161057f57613878916040602085019101612138565b90565b602092908303613969576000805b60ff8116858110908161394a575b50156138ab576138a6906137ef565b613889565b9260ff809416926138bb846123c7565b936138c960405195866123a6565b8085526138d8601f19916123c7565b013687860137825b8581168781108061392d575b156139225761391d91906139176001600160f81b031961390c83886137c8565b5116871a91886137c8565b536137ef565b6138e0565b505094505050905090565b506001600160f81b031961394182866137c8565b511615156138ec565b6001600160f81b0319915061395f90866137c8565b5116151538613897565b9150506138786137a956feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220b1bf97fefb2a28e789adf6d8f76790365fe56f5052cdc53826c08fce9eb6784664736f6c63430008120033"; type SGLCollateralConstructorParams = | [signer?: Signer] diff --git a/src/typechain/tapioca-bar/factories/markets/singularity/SGLCommon__factory.ts b/src/typechain/tapioca-bar/factories/markets/singularity/SGLCommon__factory.ts index d6fee836..8eea1702 100644 --- a/src/typechain/tapioca-bar/factories/markets/singularity/SGLCommon__factory.ts +++ b/src/typechain/tapioca-bar/factories/markets/singularity/SGLCommon__factory.ts @@ -1534,11 +1534,6 @@ const _abi = [ }, { inputs: [ - { - internalType: "uint256", - name: "_borrowOpeningFee", - type: "uint256", - }, { internalType: "contract IOracle", name: "_oracle", @@ -1867,7 +1862,7 @@ const _abi = [ ] as const; const _bytecode = - "0x6101408060405234620001e5576200001781620001ea565b601381526001602082017f546170696f63612053696e67756c617269747900000000000000000000000000815260206040516200005481620001ea565b8381520192603160f81b845251902091208160e052610100918183524660a0526040519160208301907f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f92838352604085015260608401524660808401523060a084015260a0835260c083019280841060018060401b03851117620001cf5760408490525190206080523060c052610120908152600580546001600160a01b0319163390811790915560007f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a362013880601b5562015f90601c55612710601d556032602055612ee06021557f0bd4060688a1800ae986e4840aebc924bb40b5bf44de4583df2257220b54b77c6027557f7d1dc38e60930664f8cbf495da6556ca091d2f92d6550877750c049864b182306028556161a86029556131df928362000207843960805183612684015260a0518361274f015260c0518361264e015260e051836126d3015251826126f9015251816126b00152f35b634e487b7160e01b600052604160045260246000fd5b600080fd5b604081019081106001600160401b03821117620001cf5760405256fe608080604052600436101561001357600080fd5b600090813560e01c908162a02a2014611db05750806302ce728f14611c2857806306fdde0314611b71578063078dfbe714611a6e578063095ea7b314611a475780630996efb7146115c25780630c4e84f0146114aa57806318160ddd146114895780631c9e379b146114505780631da8bf101461139057806323b872dd146111f3578063313ce56714611161578063331960ff1461114357806334d441d0146111255780633644e5151461110a57806337b6b7b9146110ec57806338d52e0f146110c35780633ba0b9a9146110a55780633f741adb1461108057806340626d8b1461106257806344de240a14611044578063473e3ce71461102657806348e4163e14610fed5780634d7f2a3414610fcf5780634e71e0c814610f21578063529898f214610f0357806352f353eb14610edc5780635514023214610eb557806355c2ab9414610e8b5780635793546214610e6d5780635dfe04e814610e0e5780636c3d8b8f14610de557806370a0823114610dac5780637277854714610d7457806374645ff314610d495780637dc0d1d014610d205780637ecebe0014610ce75780637fa0b84e14610cb5578063821226e814610c975780638285ef4014610c655780638c5d0ed314610c475780638da5cb5b14610c1e578063910dd7c814610a01578063959916dc146109e457806395d89b411461092a57806399a97028146108fa5780639c5d7192146108dc5780639e15e89f146108a1578063a9059cbb146107be578063b0e21e8a146107a0578063b27c0e7414610765578063bb4cfe3b14610747578063ce8849ed1461071e578063d505accf14610579578063d8dfeb4514610550578063dd62ed3e14610505578063de406577146104dc578063e0996cb6146104be578063e30c397814610495578063ea64dd5614610477578063eec0f42e14610459578063f42760b71461043b578063f8ba4cff14610341578063f9557ccb1461030b5763ffe04c66146102eb57600080fd5b346103085780600319360112610308576020602a54604051908152f35b80fd5b5034610308578060031936011261030857602554604080516001600160801b038316815260809290921c602083015290f35b0390f35b50346103085780600319360112610308576020604061035e612ace565b9397959390929015610402575050506001600160401b03602f541686807f33af5ce86e8438eff54589f85332916444457dfa8685493fbd579b809097026b868851838152a45b6001600160401b038151166001600160401b03851b84830151861b169160018060801b0319958691015160801b1691171760245560018060801b039083838383511692015160801b161760145583511692015160801b161760255580f35b7f33af5ce86e8438eff54589f85332916444457dfa8685493fbd579b809097026b866001600160401b03865116948951908152a46103a4565b50346103085780600319360112610308576020602b54604051908152f35b50346103085780600319360112610308576020600c54604051908152f35b50346103085780600319360112610308576020601f54604051908152f35b50346103085780600319360112610308576006546040516001600160a01b039091168152602090f35b50346103085780600319360112610308576020601d54604051908152f35b50346103085780600319360112610308576009546040516001600160a01b039091168152602090f35b5034610308576040366003190112610308576040602091610524611df8565b61052c611e13565b6001600160a01b039182168352600285528383209116825283522054604051908152f35b5034610308578060031936011261030857600b546040516001600160a01b039091168152602090f35b50346103085761058836611e80565b908395949542116106d9576001600160a01b03878116808a52600460205260408a20805491969295929060001983146106c5578261066e9694928d92600161066698960190556040519160208301937f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e266855260408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e0815261062a81612009565b51902061063561264b565b9060405190602082019261190160f01b8452602283015260428201526042815261065e81612025565b519020612920565b919091612821565b16036106805761067d926129f3565b80f35b60405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152606490fd5b634e487b7160e01b8c52601160045260248cfd5b60405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b50346103085780600319360112610308576008546040516001600160a01b039091168152602090f35b50346103085780600319360112610308576020601e54604051908152f35b50346103085780600319360112610308576060602454604051906001600160401b0380821683528160401c16602083015260801c6040820152f35b50346103085780600319360112610308576020601a54604051908152f35b5034610308576040366003190112610308576107d8611df8565b6024358092811580159061088f575b61081f575b50506040519182526001600160a01b031690339060008051602061318a83398151915290602090a3602060405160018152f35b3381526001602052604081205461083883821015612775565b6001600160a01b0384169033829003610853575b50506107ec565b60409361086a916108658415156127ba565b61215e565b33835260016020528383205581522061088483825461216b565b90558138808061084c565b50336001600160a01b038416146107e7565b50346103085760403660031901126103085760606108c96108c0611df8565b602435906122aa565b9060405192835260208301526040820152f35b50346103085780600319360112610308576020602c54604051908152f35b5034610308576040366003190112610308576020610922610919611df8565b60243590612519565b604051908152f35b5034610308578060031936011261030857808060018060a01b03600b541660405160208101906395d89b4160e01b82526004815261096781611fee565b51915afa610973612f8e565b9150156109d35761098661033d91613015565b6109bf6023604051809362746d2d60e81b60208301526109af8151809260208686019101611e29565b8101036003810184520182612040565b604051918291602083526020830190611e4c565b5061033d6109df612fbe565b610986565b503461030857806003193601126103085760208054604051908152f35b5034610308576040366003190112610308576004356001600160401b038111610c1a5736602382011215610c1a57806004013582610a3e82612061565b92610a4c6040519485612040565b82845260208401923660248284010111610c16578060246020930185378401015260243561ffff81168103610c1257610100918284805181010312610c0e57610a9490612409565b610aa0604085016127ff565b91610aad606086016127ff565b9460808101519460a082015192610ac660c08401612813565b9160e0840151930151938042116106d9578515610be7577f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e266915b6001600160a01b0388168b52600460205260408b20805491906000198314610bd3579161ffff610b909896949261066698969460018401905560405194602086015216604084015260018060a01b038a16606084015260018060a01b038c1660808401528a60a084015260c083015260e082015260e08152610b8181612009565b6020815191012061063561264b565b6001600160a01b038381169116036106805715610bbd5761067d926001600160a01b0390811691166129f3565b61067d926001600160a01b0390811691166129a5565b634e487b7160e01b8d52601160045260248dfd5b7f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d691610b00565b8480fd5b8380fd5b8280fd5b5080fd5b50346103085780600319360112610308576005546040516001600160a01b039091168152602090f35b50346103085780600319360112610308576020601b54604051908152f35b5034610308578060031936011261030857601454604080516001600160801b038316815260809290921c602083015290f35b50346103085780600319360112610308576020602e54604051908152f35b503461030857604036600319011261030857610cdc610cd2611df8565b60243590336129a5565b602060405160018152f35b5034610308576020366003190112610308576020906040906001600160a01b03610d0f611df8565b168152600483522054604051908152f35b5034610308578060031936011261030857600f546040516001600160a01b039091168152602090f35b503461030857806003193601126103085761033d6040516109bf81610d6d81611f38565b0382612040565b50346103085760203660031901126103085760043590600982101561030857602060ff610da084611ecf565b54166040519015158152f35b5034610308576020366003190112610308576020906040906001600160a01b03610dd4611df8565b168152600183522054604051908152f35b5034610308578060031936011261030857600a546040516001600160a01b039091168152602090f35b5034610308578060031936011261030857610e27612a4a565b506080610e32612ace565b509350505050604051916001600160401b0380825116845260208201511660208401526040600180861b039101511660408301526060820152f35b50346103085780600319360112610308576020601c54604051908152f35b503461030857806003193601126103085760206001600160401b03602d5460401c16604051908152f35b503461030857806003193601126103085760206001600160401b03602d5416604051908152f35b503461030857806003193601126103085760206001600160401b03602f5416604051908152f35b50346103085780600319360112610308576020602154604051908152f35b50346103085780600319360112610308576006546001600160a01b039081811633819003610f8b57806005549384167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08680a36001600160a01b0319928316176005551660065580f35b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b50346103085780600319360112610308576020602954604051908152f35b5034610308576020366003190112610308576020906040906001600160a01b03611015611df8565b168152601783522054604051908152f35b50346103085780600319360112610308576020601554604051908152f35b50346103085780600319360112610308576020600e54604051908152f35b50346103085780600319360112610308576020601654604051908152f35b5034610308576060366003190112610308576020610922604435602435600435612191565b50346103085780600319360112610308576020601154604051908152f35b5034610308578060031936011261030857600d546040516001600160a01b039091168152602090f35b50346103085780600319360112610308576020601254604051908152f35b5034610308578060031936011261030857602061092261264b565b50346103085780600319360112610308576020601954604051908152f35b50346103085780600319360112610308576020601354604051908152f35b5034610308578060031936011261030857808060018060a01b03600d5416604051602081019063313ce56760e01b82526004815261119e81611fee565b51915afa906111ab612f8e565b91806111e8575b156111dd5760208280518101031261030857506111d26020809201612813565b60ff60405191168152f35b5050602060126111d2565b5060208251146111b2565b50346103085760603660031901126103085761120d611df8565b90611216611e13565b6044359182611254575b506040519182526001600160a01b0390811692169060008051602061318a83398151915290602090a3602060405160018152f35b6001600160a01b0384811680835260016020908152604084205492869061127d82861015612775565b861693848403611292575b5050505050611220565b8386526002835260408087203388528452862054600181016112fc575b50926001602096936112da879460409761086560008051602061318a8339815191529c9a15156127ba565b92855252838320558152206112f085825461216b565b90559138808581611288565b9091811061135057926001602096936112da8a60008051602061318a8339815191529a989561132d8260409a61215e565b86895260028552898920338a5285528989205594975094979950509396506112af565b60405162461bcd60e51b815260048101849052601860248201527745524332303a20616c6c6f77616e636520746f6f206c6f7760401b6044820152606490fd5b50346103085761139f36611e80565b908395949542116106d9576001600160a01b03878116808a52600460205260408a20805491969295929060001983146106c557826114419694928d92600161066698960190556040519160208301937f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d6855260408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e0815261062a81612009565b16036106805761067d926129a5565b5034610308576020366003190112610308576020906040906001600160a01b03611478611df8565b168152601883522054604051908152f35b5034610308578060031936011261030857602060255460801c604051908152f35b5034610308576040366003190112610308576004356009811015610c1a576114d0611e71565b6008549091906001600160a01b031633036115865760ff6114f082611ecf565b5416151591151591821461154c57808260ff61150e61153c94611ecf565b54161515827feeec81de25875ce1725479bb76f720a8defdb43dea041919ae37bb4aae9847c08780a4611ecf565b9060ff8019835416911617905580f35b60405162461bcd60e51b81526020600482015260126024820152714d61726b65743a2073616d6520737461746560701b6044820152606490fd5b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881d5b985d5d1a1bdc9a5e995960621b6044820152606490fd5b5034610308576101803660031901126103085760246001600160a01b03813581811690819003610c1257604435916001600160401b0390818411611a435736602385011215611a43578360040135918211611a435736858386010111611a435760643591818316809303611a3f5761163f8260055416331461207c565b60043594620186a094611654868811156120c7565b6020968088547fc353b09af857951dccce61b43a5854fc45beceed36c50e5d4cc2e71858a8e0df8c80a3875580611a01575b5086826118c6575b50505081611886575b505060843580611871575b5060a4358061185c575b5060c43580611848575b5060e43580611827575b506101043580611806575b5061012435806117d5575b50610144359081611765575b50506101643591826116f2578380f35b601e548310611707575050601f553880808380f35b9060326084926040519262461bcd60e51b845260048401528201527f4d61726b65743a206c69717569646174696f6e436f6c6c61746572616c697a616044820152711d1a5bdb94985d19481d1bdbc81cdb585b1b60721b6064820152fd5b611771908211156120c7565b601f54811161178457601e5538806116e2565b5060256084926040519262461bcd60e51b845260048401528201527f4d61726b65743a20636f6c6c61746572616c697a6174696f6e5261746520746f6044820152646f2062696760d81b6064820152fd5b806016547fae6e0ab3b95f0a53ff9660a390ccedcbbf1f2355dce974a9841af106fddcfaba8780a3601655386116d6565b6118118282106120c7565b61181e601b5482116120c7565b601c55386116cb565b6118328282106120c7565b61183f601c5482106120c7565b601b55386116c0565b6118538282106120c7565b601d55386116b6565b611868828211156120c7565b601a55386116ac565b61187d828211156120c7565b601955386116a2565b816008549182167f5a62d22209e370e38eea92cfddcd228e656e6ec139243392a760a7769f5877fd8880a36001600160a01b031916176008553880611697565b82916118d3601054611efe565b601f81116119b0575b508990601f8411600114611941578a93611934575b5050508160011b916000199060031b1c1916176010555b7fa6f004921c944d4b8bf6e38462b00f36a58d62495d56b51f571ab78f732c98158680a138808661168e565b01013590508638806118f1565b60108b52888b20601f198516955092509089908b5b8a8782106119955750508460019610611979575b50505050811b01601055611908565b60001960f88660031b161c19920101351690553880888161196a565b8483019093013585556001909401938b929182019101611956565b9150915060108952868920601f840160051c81018885106119fa575b91849391601f8b94920160051c01905b8181106119e957506118dc565b8b81558594508a93506001016119dc565b50806119cc565b600f80546001600160a01b0319169190911790557f0b2d6eb667d0522c3eb86e4288afecae6c11591ffd1345d4d12407e0598bca9b8880a138611686565b8680fd5b8580fd5b503461030857604036600319011261030857610cdc611a64611df8565b60243590336129f3565b503461030857606036600319011261030857611a88611df8565b611a90611e71565b604435908115158203610c125760018060a01b03928391611ab68360055416331461207c565b15611b5a571690811590811591611b52575b5015611b1557806005549283167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08580a36001600160a01b03199182161760055560068054909116905580f35b60405162461bcd60e51b81526020600482015260156024820152744f776e61626c653a207a65726f206164647265737360581b6044820152606490fd5b905038611ac8565b9150501660018060a01b0319600654161760065580f35b5034610308578060031936011261030857808060018060a01b03600b541660405160208101906306fdde0360e01b825260048152611bae81611fee565b51915afa611bba612f8e565b915015611c1757611bcd61033d91613015565b6109bf6034604051809373546170696f63612053696e67756c61726974792d60601b6020830152611c078151809260208686019101611e29565b8101036014810184520182612040565b5061033d611c23612fbe565b611bcd565b5034610308578060031936011261030857600f546040805163d6d7d52560e01b8152602060048201529182906001600160a01b0316818581611c6c60248201611f38565b03925af18015611da55782918391611d65575b508115611d06578015611cca57807f9f9192b5edb17356c524e08d9e025c8e2f6307e6ea52fb7968faa3081f51c3c86040948260115580a25b42601355825191151582526020820152f35b60405162461bcd60e51b81526020600482015260146024820152734d61726b65743a20696e76616c6964207261746560601b6044820152606490fd5b509050611d186013546012549061216b565b4211611d2957604090601154611cb8565b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881c985d19481d1bdbc81bdb1960621b6044820152606490fd5b9150506040813d604011611d9d575b81611d8160409383612040565b81010312610c1a576020611d9482612409565b91015138611c7f565b3d9150611d74565b6040513d84823e3d90fd5b905034610c1a576040366003190112610c1a576040602092611dd0611df8565b611dd8611e13565b6001600160a01b0391821683526003865283832091168252845220548152f35b600435906001600160a01b0382168203611e0e57565b600080fd5b602435906001600160a01b0382168203611e0e57565b60005b838110611e3c5750506000910152565b8181015183820152602001611e2c565b90602091611e6581518092818552858086019101611e29565b601f01601f1916010190565b602435908115158203611e0e57565b60e0906003190112611e0e576001600160a01b03906004358281168103611e0e57916024359081168103611e0e5790604435906064359060843560ff81168103611e0e579060a4359060c43590565b6009811015611ee8576000526007602052604060002090565b634e487b7160e01b600052602160045260246000fd5b90600182811c92168015611f2e575b6020831014611f1857565b634e487b7160e01b600052602260045260246000fd5b91607f1691611f0d565b60105460009291611f4882611efe565b908181526001928381169081600014611fa25750600114611f6857505050565b9092935060106000526020928360002092846000945b838610611f8e5750505050010190565b805485870183015294019385908201611f7e565b91935050602093945060ff191683830152151560051b010190565b606081019081106001600160401b03821117611fd857604052565b634e487b7160e01b600052604160045260246000fd5b604081019081106001600160401b03821117611fd857604052565b61010081019081106001600160401b03821117611fd857604052565b608081019081106001600160401b03821117611fd857604052565b90601f801991011681019081106001600160401b03821117611fd857604052565b6001600160401b038111611fd857601f01601f191660200190565b1561208357565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b156120ce57565b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881b9bdd081d985b1a59607a1b6044820152606490fd5b8181029291811591840414171561211a57565b634e487b7160e01b600052601160045260246000fd5b811561213a570490565b634e487b7160e01b600052601260045260246000fd5b604d811161211a57600a0a90565b9190820391821161211a57565b9190820180921161211a57565b8181039291600013801582851316918412161761211a57565b6014549192916121da916121cb916121c1916121b7906001600160801b03831690612107565b9060801c90612130565b93601f5490612107565b6121d483612150565b90612130565b8083106122a2576121ee61222a918461215e565b9161222561221f612216601e5461221061220786612150565b6021549061216b565b90612107565b6121d484612150565b91612150565b612178565b6509184e72a0009081810291818305149015171561211a57670de0b6b3a76400009182810292818405149015171561211a57801561213a57600160ff1b9180831460001983141661211a570590600082121561229b57811461211a57600003905b808211612296575090565b905090565b509061228b565b505050600090565b9160018060a01b0380931691600093838552602060178152604091828720549081156123fc57878385516122dd81611fee565b82815201526122ea612ace565b50505050509190506122fd861515612416565b6009541683600c54898b52601882526064878c2054918851948593849263442c159960e01b8452600484015260248301528d60448301525afa9081156123f25789916123bf575b509161239f6123b3979899949261237a8861237561236c601898620186a06022540490612107565b601e5490612107565b612130565b815190936001600160801b0391869161239591841690612107565b9201511690612130565b8181106123b757035b978352522054612462565b9091565b5050826123a8565b90508381813d83116123eb575b6123d68183612040565b810103126123e7575161239f612344565b8880fd5b503d6123cc565b85513d8b823e3d90fd5b5086955085949350505050565b51908115158203611e0e57565b1561241d57565b60405162461bcd60e51b815260206004820152601e60248201527f4d61726b65743a2065786368616e676552617465206e6f742076616c696400006044820152606490fd5b61246d821515612416565b602060018060a01b0360095416916064600c54604051948593849263442c159960e01b845260048401526024830152600060448301525afa90811561250d576000916124da575b50906123756124c69260225490612107565b620186a06124d6601e5483612107565b0491565b906020823d8211612505575b816124f360209383612040565b810103126103085750516123756124b4565b3d91506124e6565b6040513d6000823e3d90fd5b6001600160a01b0316600081815260186020526040812054909261253c91612462565b91835260176020526040832054801561264557811561264557818110612645578281101561263b57601454612585918391610865916121b7906001600160801b03831690612107565b90620186a09283830292808404851490151715612627576125aa92916121d49161215e565b91601b5491601c54936125bd8585612178565b80820291848212600160ff1b82141661262757818305149015171561261357058184820194851291129080158216911516176125ff5750808212612296575090565b634e487b7160e01b81526011600452602490fd5b634e487b7160e01b83526011600452602483fd5b634e487b7160e01b85526011600452602485fd5b50505050601b5490565b50505090565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316148061274c575b156126a6577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f000000000000000000000000000000000000000000000000000000000000000082527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a0815260c081018181106001600160401b03821117611fd85760405251902090565b507f0000000000000000000000000000000000000000000000000000000000000000461461267d565b1561277c57565b60405162461bcd60e51b815260206004820152601660248201527545524332303a2062616c616e636520746f6f206c6f7760501b6044820152606490fd5b156127c157565b60405162461bcd60e51b815260206004820152601660248201527545524332303a206e6f207a65726f206164647265737360501b6044820152606490fd5b51906001600160a01b0382168203611e0e57565b519060ff82168203611e0e57565b6005811015611ee857806128325750565b6001810361287a5760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b6044820152606490fd5b600281036128c75760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606490fd5b6003146128d057565b60405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608490fd5b9291906fa2a8918ca85bafe22016d0b997e4df60600160ff1b0383116129995791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa1561298c5781516001600160a01b03811615612986579190565b50600190565b50604051903d90823e3d90fd5b50505050600090600390565b7fe50de2333c10a9502fcb1d8ae13a51bbf423153dfc63c2b8997665b32154afc360018060a01b038092169160009083825260036020526040822094169384825260205284604082205580a4565b909160207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259160018060a01b03809416938460005260028352604060002095169485600052825280604060002055604051908152a3565b60405190612a5782611fbd565b60006040838281528260208201520152565b60405190612a7682611fee565b6014546001600160801b038116835260801c6020830152565b60405190612a9c82611fee565b6025546001600160801b038116835260801c6020830152565b6001600160801b03918216908216019190821161211a57565b612ad6612a4a565b5060006020604051612ae781611fee565b828152015260006020604051612afc81611fee565b828152015260405190612b0e82611fbd565b602454916001600160401b038316815260208101926001600160401b038160401c16845260801c60408201528092612b44612a69565b92612b4d612a8f565b92600060018060a01b0360095416600e549460018060801b038751166040519063442c159960e01b8252876004830152602482015260006044820152602081606481865afa801561250d57600090612f5a575b8951612bb692506001600160801b03169061216b565b80612f25575060005b612bd46001600160401b03829351164261215e565b948515612efb575050426001600160401b031660208a8101919091528801516001600160801b031615612eb157506020670de0b6b3a7640000612c3685612c318c6001600160401b038d60018060801b0390511691511690612107565b612107565b895191900496906001600160801b0390612c5590828a16908316612ab5565b168952875160405163442c159960e01b815260048101929092526001600160801b031660248201526000604482015291829060649082905afa801561250d57600090612e7d575b8751612cb292506001600160801b03169061216b565b92612ce084612375620186a0612cca601a548a612107565b60208c01516001600160801b0316919004612107565b6040890180519195916001600160801b038088169291612d039084908316612ab5565b16905260208801805190916001600160801b0391612d2391908316612ab5565b16905280612e48575060005b602a5490938482811015612dc357612d47908361215e565b90670de0b6b3a7640000820291808304670de0b6b3a7640000149015171561211a57612375612d9b612d95612d876001600160401b0396612da596612130565b93612c31602e549580612107565b8361216b565b91848d5116612107565b168089526001600160401b03602d5416809110612dbf5750565b8852565b909150602b54808211612dd557505050565b612dde9161215e565b670de0b6b3a7640000810290808204670de0b6b3a7640000149015171561211a576001600160401b0391612375612e21612d95612d87612e2a95602c5490612130565b848d5116612107565b81602d5460401c16808211612e40575b50168852565b905038612e3a565b87516001600160801b0316670de0b6b3a764000081810292918084049091149015171561211a57612e7891612130565b612d2f565b506020813d602011612ea9575b81612e9760209383612040565b81010312611e0e57612cb29051612c9c565b3d9150612e8a565b9697939450509350506001600160401b038151166001600160401b03602f5416809103612eef575b509392612ee4612a8f565b926000926000929190565b81526001925038612ed9565b975098505050505092505091612f0f612a69565b91612f18612a8f565b9160009160009190600090565b88516001600160801b0316670de0b6b3a764000081810292918084049091149015171561211a57612f5591612130565b612bbf565b506020813d602011612f86575b81612f7460209383612040565b81010312611e0e57612bb69051612ba0565b3d9150612f67565b3d15612fb9573d90612f9f82612061565b91612fad6040519384612040565b82523d6000602084013e565b606090565b60405190612fcb82611fee565b60038252623f3f3f60e81b6020830152565b908151811015612fee570160200190565b634e487b7160e01b600052603260045260246000fd5b60ff1660ff811461211a5760010190565b80516040811061309057508051810190602081818401930312611e0e576020810151906001600160401b038211611e0e570181603f82011215611e0e57602081015161306081612061565b9261306e6040519485612040565b81845260408284010111611e0e5761308d916040602085019101611e29565b90565b60209290830361317e576000805b60ff8116858110908161315f575b50156130c0576130bb90613004565b61309e565b9260ff809416926130d084612061565b936130de6040519586612040565b8085526130ed601f1991612061565b013687860137825b85811687811080613142575b1561313757613132919061312c6001600160f81b03196131218388612fdd565b5116871a9188612fdd565b53613004565b6130f5565b505094505050905090565b506001600160f81b03196131568286612fdd565b51161515613101565b6001600160f81b031991506131749086612fdd565b51161515386130ac565b91505061308d612fbe56feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220eb500fb6012a489866ad5ba43ee1b8bd8cad1bbaf6d19dc56a7aa0a2ad6b05e564736f6c63430008120033"; + "0x6101408060405234620001e5576200001781620001ea565b601381526001602082017f546170696f63612053696e67756c617269747900000000000000000000000000815260206040516200005481620001ea565b8381520192603160f81b845251902091208160e052610100918183524660a0526040519160208301907f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f92838352604085015260608401524660808401523060a084015260a0835260c083019280841060018060401b03851117620001cf5760408490525190206080523060c052610120908152600580546001600160a01b0319163390811790915560007f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a362013880601b5562015f90601c55612710601d55612ee06020557f0bd4060688a1800ae986e4840aebc924bb40b5bf44de4583df2257220b54b77c6026557f7d1dc38e60930664f8cbf495da6556ca091d2f92d6550877750c049864b182306027556161a86028556032602f556131f8928362000207843960805183612693015260a0518361275e015260c0518361265d015260e051836126e201525182612708015251816126bf0152f35b634e487b7160e01b600052604160045260246000fd5b600080fd5b604081019081106001600160401b03821117620001cf5760405256fe608080604052600436101561001357600080fd5b600090813560e01c908162a02a2014611dbf5750806302ce728f14611c3757806306fdde0314611b80578063078dfbe714611a7d578063095ea7b314611a565780630c4e84f01461193e57806318160ddd1461191d5780631c9e379b146118e45780631da8bf101461182457806323b872dd14611687578063313ce567146115f5578063331960ff146115d757806334d441d0146115b95780633644e5151461159e57806337b6b7b91461158057806338d52e0f146115575780633ba0b9a9146115395780633f741adb1461151457806340626d8b146114f657806344de240a146114d8578063473e3ce7146114ba57806348e4163e146114815780634d7f2a34146114635780634e71e0c8146113b5578063529898f21461139857806352f353eb14611371578063551402321461134a57806355c2ab941461132057806357935462146113025780635dfe04e8146112a35780636c3d8b8f1461127a57806370a0823114611241578063727785471461120957806374645ff3146111de5780637dc0d1d0146111b55780637ecebe001461117c5780637fa0b84e1461114a578063821226e81461112c5780638285ef40146110fa5780638c5d0ed3146110dc5780638da5cb5b146110b3578063910dd7c814610e9a578063959916dc14610e7c57806395d89b4114610dc257806399a9702814610d925780639c5d719214610d745780639e15e89f14610d39578063a9059cbb14610c56578063b0e21e8a14610c38578063b27c0e7414610bfd578063bb4cfe3b14610bdf578063ce8849ed14610bb6578063d3fb2a381461071e578063d505accf14610579578063d8dfeb4514610550578063dd62ed3e14610505578063de406577146104dc578063e0996cb6146104be578063e30c397814610495578063ea64dd5614610477578063eec0f42e14610459578063f42760b71461043b578063f8ba4cff14610341578063f9557ccb1461030b5763ffe04c66146102eb57600080fd5b346103085780600319360112610308576020602954604051908152f35b80fd5b5034610308578060031936011261030857602454604080516001600160801b038316815260809290921c602083015290f35b0390f35b50346103085780600319360112610308576020604061035e612add565b9397959390929015610402575050506001600160401b03602e541686807f33af5ce86e8438eff54589f85332916444457dfa8685493fbd579b809097026b868851838152a45b6001600160401b038151166001600160401b03851b84830151861b169160018060801b0319958691015160801b1691171760235560018060801b039083838383511692015160801b161760145583511692015160801b161760245580f35b7f33af5ce86e8438eff54589f85332916444457dfa8685493fbd579b809097026b866001600160401b03865116948951908152a46103a4565b50346103085780600319360112610308576020602a54604051908152f35b50346103085780600319360112610308576020600c54604051908152f35b50346103085780600319360112610308576020601f54604051908152f35b50346103085780600319360112610308576006546040516001600160a01b039091168152602090f35b50346103085780600319360112610308576020601d54604051908152f35b50346103085780600319360112610308576009546040516001600160a01b039091168152602090f35b5034610308576040366003190112610308576040602091610524611e07565b61052c611e22565b6001600160a01b039182168352600285528383209116825283522054604051908152f35b5034610308578060031936011261030857600b546040516001600160a01b039091168152602090f35b50346103085761058836611e8f565b908395949542116106d9576001600160a01b03878116808a52600460205260408a20805491969295929060001983146106c5578261066e9694928d92600161066698960190556040519160208301937f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e266855260408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e0815261062a81612018565b51902061063561265a565b9060405190602082019261190160f01b8452602283015260428201526042815261065e81612034565b51902061292f565b919091612830565b16036106805761067d92612a02565b80f35b60405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152606490fd5b634e487b7160e01b8c52601160045260248cfd5b60405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b503461030857610160366003190112610308576001600160a01b0360043581811690819003610bb2576024916001600160401b038335818111610bae5736602382011215610bae578060040135918211610bae5736858383010111610bae5760443593838516809503610baa5761079a8460055416331461208b565b80610b6c575b5084826109ee575b505050816109ae575b505060643580610996575b506084358061097e575b5060a43580610967575b5060c43580610943575b5060e4358061091f575b5061010435806108ee575b50610124358061087b575b50610144359081610809578280f35b601e54821061081c5750601f5538808280f35b60849060326040519162461bcd60e51b8352602060048401528201527f4d61726b65743a206c69717569646174696f6e436f6c6c61746572616c697a616044820152711d1a5bdb94985d19481d1bdbc81cdb585b1b60721b6064820152fd5b61088a620186a08211156120d6565b601f54811161089c57601e55386107fa565b60405162461bcd60e51b8152602060048201526025818401527f4d61726b65743a20636f6c6c61746572616c697a6174696f6e5261746520746f6044820152646f2062696760d81b6064820152608490fd5b806016547fae6e0ab3b95f0a53ff9660a390ccedcbbf1f2355dce974a9841af106fddcfaba8580a3601655386107ef565b61092d620186a082106120d6565b61093a601b5482116120d6565b601c55386107e4565b610951620186a082106120d6565b61095e601c5482106120d6565b601b55386107da565b610975620186a082106120d6565b601d55386107d0565b61098d620186a08211156120d6565b601a55386107c6565b6109a5620186a08211156120d6565b601955386107bc565b816008549182167f5a62d22209e370e38eea92cfddcd228e656e6ec139243392a760a7769f5877fd8680a36001600160a01b0319161760085538806107b1565b82916109fb601054611f0d565b601f8111610afb575b508790601f8411600114610a69578893610a5c575b5050508160011b916000199060031b1c1916176010555b7fa6f004921c944d4b8bf6e38462b00f36a58d62495d56b51f571ab78f732c98158480a13880846107a8565b0101359050843880610a19565b60108952601f19841694507f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae67292509087908960205b878210610adc5750508460019610610ac0575b50505050811b01601055610a30565b60001960f88660031b161c199201013516905538808681610ab1565b8285019093013585556001949094019389929182019190810190610a9e565b6010895290925090507f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae672601f840160051c810160208510610b65575b91849391601f8994920160051c01905b818110610b545750610a04565b898155859450889350600101610b47565b5080610b37565b600f80546001600160a01b0319169190911790557f0b2d6eb667d0522c3eb86e4288afecae6c11591ffd1345d4d12407e0598bca9b8680a1386107a0565b8680fd5b8580fd5b8280fd5b50346103085780600319360112610308576008546040516001600160a01b039091168152602090f35b50346103085780600319360112610308576020601e54604051908152f35b50346103085780600319360112610308576060602354604051906001600160401b0380821683528160401c16602083015260801c6040820152f35b50346103085780600319360112610308576020601a54604051908152f35b503461030857604036600319011261030857610c70611e07565b60243580928115801590610d27575b610cb7575b50506040519182526001600160a01b03169033906000805160206131a383398151915290602090a3602060405160018152f35b33815260016020526040812054610cd083821015612784565b6001600160a01b0384169033829003610ceb575b5050610c84565b604093610d0291610cfd8415156127c9565b61216d565b338352600160205283832055815220610d1c83825461217a565b905581388080610ce4565b50336001600160a01b03841614610c7f565b5034610308576040366003190112610308576060610d61610d58611e07565b602435906122b9565b9060405192835260208301526040820152f35b50346103085780600319360112610308576020602b54604051908152f35b5034610308576040366003190112610308576020610dba610db1611e07565b60243590612528565b604051908152f35b5034610308578060031936011261030857808060018060a01b03600b541660405160208101906395d89b4160e01b825260048152610dff81611ffd565b51915afa610e0b612fa7565b915015610e6b57610e1e61033d9161302e565b610e576023604051809362746d2d60e81b6020830152610e478151809260208686019101611e38565b810103600381018452018261204f565b604051918291602083526020830190611e5b565b5061033d610e77612fd7565b610e1e565b50346103085780600319360112610308576020602f54604051908152f35b5034610308576040366003190112610308576004356001600160401b0381116110af57366023820112156110af57806004013582610ed782612070565b92610ee5604051948561204f565b82845260208401923660248284010111610bb2578060246020930185378401015260243561ffff811681036110ab576101009182848051810103126110a757610f2d90612418565b610f396040850161280e565b91610f466060860161280e565b9460808101519460a082015192610f5f60c08401612822565b9160e0840151930151938042116106d9578515611080577f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e266915b6001600160a01b0388168b52600460205260408b2080549190600019831461106c579161ffff6110299896949261066698969460018401905560405194602086015216604084015260018060a01b038a16606084015260018060a01b038c1660808401528a60a084015260c083015260e082015260e0815261101a81612018565b6020815191012061063561265a565b6001600160a01b0383811691160361068057156110565761067d926001600160a01b039081169116612a02565b61067d926001600160a01b0390811691166129b4565b634e487b7160e01b8d52601160045260248dfd5b7f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d691610f99565b8480fd5b8380fd5b5080fd5b50346103085780600319360112610308576005546040516001600160a01b039091168152602090f35b50346103085780600319360112610308576020601b54604051908152f35b5034610308578060031936011261030857601454604080516001600160801b038316815260809290921c602083015290f35b50346103085780600319360112610308576020602d54604051908152f35b503461030857604036600319011261030857611171611167611e07565b60243590336129b4565b602060405160018152f35b5034610308576020366003190112610308576020906040906001600160a01b036111a4611e07565b168152600483522054604051908152f35b5034610308578060031936011261030857600f546040516001600160a01b039091168152602090f35b503461030857806003193601126103085761033d604051610e578161120281611f47565b038261204f565b50346103085760203660031901126103085760043590600982101561030857602060ff61123584611ede565b54166040519015158152f35b5034610308576020366003190112610308576020906040906001600160a01b03611269611e07565b168152600183522054604051908152f35b5034610308578060031936011261030857600a546040516001600160a01b039091168152602090f35b50346103085780600319360112610308576112bc612a59565b5060806112c7612add565b509350505050604051916001600160401b0380825116845260208201511660208401526040600180861b039101511660408301526060820152f35b50346103085780600319360112610308576020601c54604051908152f35b503461030857806003193601126103085760206001600160401b03602c5460401c16604051908152f35b503461030857806003193601126103085760206001600160401b03602c5416604051908152f35b503461030857806003193601126103085760206001600160401b03602e5416604051908152f35b503461030857806003193601126103085760208054604051908152f35b50346103085780600319360112610308576006546001600160a01b03908181163381900361141f57806005549384167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08680a36001600160a01b0319928316176005551660065580f35b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b50346103085780600319360112610308576020602854604051908152f35b5034610308576020366003190112610308576020906040906001600160a01b036114a9611e07565b168152601783522054604051908152f35b50346103085780600319360112610308576020601554604051908152f35b50346103085780600319360112610308576020600e54604051908152f35b50346103085780600319360112610308576020601654604051908152f35b5034610308576060366003190112610308576020610dba6044356024356004356121a0565b50346103085780600319360112610308576020601154604051908152f35b5034610308578060031936011261030857600d546040516001600160a01b039091168152602090f35b50346103085780600319360112610308576020601254604051908152f35b50346103085780600319360112610308576020610dba61265a565b50346103085780600319360112610308576020601954604051908152f35b50346103085780600319360112610308576020601354604051908152f35b5034610308578060031936011261030857808060018060a01b03600d5416604051602081019063313ce56760e01b82526004815261163281611ffd565b51915afa9061163f612fa7565b918061167c575b156116715760208280518101031261030857506116666020809201612822565b60ff60405191168152f35b505060206012611666565b506020825114611646565b5034610308576060366003190112610308576116a1611e07565b906116aa611e22565b60443591826116e8575b506040519182526001600160a01b039081169216906000805160206131a383398151915290602090a3602060405160018152f35b6001600160a01b0384811680835260016020908152604084205492869061171182861015612784565b861693848403611726575b50505050506116b4565b838652600283526040808720338852845286205460018101611790575b509260016020969361176e8794604097610cfd6000805160206131a38339815191529c9a15156127c9565b928552528383205581522061178485825461217a565b9055913880858161171c565b909181106117e4579260016020969361176e8a6000805160206131a38339815191529a98956117c18260409a61216d565b86895260028552898920338a528552898920559497509497995050939650611743565b60405162461bcd60e51b815260048101849052601860248201527745524332303a20616c6c6f77616e636520746f6f206c6f7760401b6044820152606490fd5b50346103085761183336611e8f565b908395949542116106d9576001600160a01b03878116808a52600460205260408a20805491969295929060001983146106c557826118d59694928d92600161066698960190556040519160208301937f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d6855260408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e0815261062a81612018565b16036106805761067d926129b4565b5034610308576020366003190112610308576020906040906001600160a01b0361190c611e07565b168152601883522054604051908152f35b5034610308578060031936011261030857602060245460801c604051908152f35b50346103085760403660031901126103085760043560098110156110af57611964611e80565b6008549091906001600160a01b03163303611a1a5760ff61198482611ede565b541615159115159182146119e057808260ff6119a26119d094611ede565b54161515827feeec81de25875ce1725479bb76f720a8defdb43dea041919ae37bb4aae9847c08780a4611ede565b9060ff8019835416911617905580f35b60405162461bcd60e51b81526020600482015260126024820152714d61726b65743a2073616d6520737461746560701b6044820152606490fd5b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881d5b985d5d1a1bdc9a5e995960621b6044820152606490fd5b503461030857604036600319011261030857611171611a73611e07565b6024359033612a02565b503461030857606036600319011261030857611a97611e07565b611a9f611e80565b6044359081151582036110ab5760018060a01b03928391611ac58360055416331461208b565b15611b69571690811590811591611b61575b5015611b2457806005549283167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08580a36001600160a01b03199182161760055560068054909116905580f35b60405162461bcd60e51b81526020600482015260156024820152744f776e61626c653a207a65726f206164647265737360581b6044820152606490fd5b905038611ad7565b9150501660018060a01b0319600654161760065580f35b5034610308578060031936011261030857808060018060a01b03600b541660405160208101906306fdde0360e01b825260048152611bbd81611ffd565b51915afa611bc9612fa7565b915015611c2657611bdc61033d9161302e565b610e576034604051809373546170696f63612053696e67756c61726974792d60601b6020830152611c168151809260208686019101611e38565b810103601481018452018261204f565b5061033d611c32612fd7565b611bdc565b5034610308578060031936011261030857600f546040805163d6d7d52560e01b8152602060048201529182906001600160a01b0316818581611c7b60248201611f47565b03925af18015611db45782918391611d74575b508115611d15578015611cd957807f9f9192b5edb17356c524e08d9e025c8e2f6307e6ea52fb7968faa3081f51c3c86040948260115580a25b42601355825191151582526020820152f35b60405162461bcd60e51b81526020600482015260146024820152734d61726b65743a20696e76616c6964207261746560601b6044820152606490fd5b509050611d276013546012549061217a565b4211611d3857604090601154611cc7565b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881c985d19481d1bdbc81bdb1960621b6044820152606490fd5b9150506040813d604011611dac575b81611d906040938361204f565b810103126110af576020611da382612418565b91015138611c8e565b3d9150611d83565b6040513d84823e3d90fd5b9050346110af5760403660031901126110af576040602092611ddf611e07565b611de7611e22565b6001600160a01b0391821683526003865283832091168252845220548152f35b600435906001600160a01b0382168203611e1d57565b600080fd5b602435906001600160a01b0382168203611e1d57565b60005b838110611e4b5750506000910152565b8181015183820152602001611e3b565b90602091611e7481518092818552858086019101611e38565b601f01601f1916010190565b602435908115158203611e1d57565b60e0906003190112611e1d576001600160a01b03906004358281168103611e1d57916024359081168103611e1d5790604435906064359060843560ff81168103611e1d579060a4359060c43590565b6009811015611ef7576000526007602052604060002090565b634e487b7160e01b600052602160045260246000fd5b90600182811c92168015611f3d575b6020831014611f2757565b634e487b7160e01b600052602260045260246000fd5b91607f1691611f1c565b60105460009291611f5782611f0d565b908181526001928381169081600014611fb15750600114611f7757505050565b9092935060106000526020928360002092846000945b838610611f9d5750505050010190565b805485870183015294019385908201611f8d565b91935050602093945060ff191683830152151560051b010190565b606081019081106001600160401b03821117611fe757604052565b634e487b7160e01b600052604160045260246000fd5b604081019081106001600160401b03821117611fe757604052565b61010081019081106001600160401b03821117611fe757604052565b608081019081106001600160401b03821117611fe757604052565b90601f801991011681019081106001600160401b03821117611fe757604052565b6001600160401b038111611fe757601f01601f191660200190565b1561209257565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b156120dd57565b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881b9bdd081d985b1a59607a1b6044820152606490fd5b8181029291811591840414171561212957565b634e487b7160e01b600052601160045260246000fd5b8115612149570490565b634e487b7160e01b600052601260045260246000fd5b604d811161212957600a0a90565b9190820391821161212957565b9190820180921161212957565b8181039291600013801582851316918412161761212957565b6014549192916121e9916121da916121d0916121c6906001600160801b03831690612116565b9060801c9061213f565b93601f5490612116565b6121e38361215f565b9061213f565b8083106122b1576121fd612239918461216d565b9161223461222e612225601e5461221f6122168661215f565b6020549061217a565b90612116565b6121e38461215f565b9161215f565b612187565b6509184e72a0009081810291818305149015171561212957670de0b6b3a76400009182810292818405149015171561212957801561214957600160ff1b9180831460001983141661212957059060008212156122aa57811461212957600003905b8082116122a5575090565b905090565b509061229a565b505050600090565b9160018060a01b03809316916000938385526020601781526040918287205490811561240b57878385516122ec81611ffd565b82815201526122f9612add565b505050505091905061230c861515612425565b6009541683600c54898b52601882526064878c2054918851948593849263442c159960e01b8452600484015260248301528d60448301525afa9081156124015789916123ce575b50916123ae6123c297989994926123898861238461237b601898620186a06021540490612116565b601e5490612116565b61213f565b815190936001600160801b039186916123a491841690612116565b920151169061213f565b8181106123c657035b978352522054612471565b9091565b5050826123b7565b90508381813d83116123fa575b6123e5818361204f565b810103126123f657516123ae612353565b8880fd5b503d6123db565b85513d8b823e3d90fd5b5086955085949350505050565b51908115158203611e1d57565b1561242c57565b60405162461bcd60e51b815260206004820152601e60248201527f4d61726b65743a2065786368616e676552617465206e6f742076616c696400006044820152606490fd5b61247c821515612425565b602060018060a01b0360095416916064600c54604051948593849263442c159960e01b845260048401526024830152600060448301525afa90811561251c576000916124e9575b50906123846124d59260215490612116565b620186a06124e5601e5483612116565b0491565b906020823d8211612514575b816125026020938361204f565b810103126103085750516123846124c3565b3d91506124f5565b6040513d6000823e3d90fd5b6001600160a01b0316600081815260186020526040812054909261254b91612471565b91835260176020526040832054801561265457811561265457818110612654578281101561264a57601454612594918391610cfd916121c6906001600160801b03831690612116565b90620186a09283830292808404851490151715612636576125b992916121e39161216d565b91601b5491601c54936125cc8585612187565b80820291848212600160ff1b821416612636578183051490151715612622570581848201948512911290801582169115161761260e57508082126122a5575090565b634e487b7160e01b81526011600452602490fd5b634e487b7160e01b83526011600452602483fd5b634e487b7160e01b85526011600452602485fd5b50505050601b5490565b50505090565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316148061275b575b156126b5577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f000000000000000000000000000000000000000000000000000000000000000082527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a0815260c081018181106001600160401b03821117611fe75760405251902090565b507f0000000000000000000000000000000000000000000000000000000000000000461461268c565b1561278b57565b60405162461bcd60e51b815260206004820152601660248201527545524332303a2062616c616e636520746f6f206c6f7760501b6044820152606490fd5b156127d057565b60405162461bcd60e51b815260206004820152601660248201527545524332303a206e6f207a65726f206164647265737360501b6044820152606490fd5b51906001600160a01b0382168203611e1d57565b519060ff82168203611e1d57565b6005811015611ef757806128415750565b600181036128895760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b6044820152606490fd5b600281036128d65760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606490fd5b6003146128df57565b60405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608490fd5b9291906fa2a8918ca85bafe22016d0b997e4df60600160ff1b0383116129a85791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa1561299b5781516001600160a01b03811615612995579190565b50600190565b50604051903d90823e3d90fd5b50505050600090600390565b7fe50de2333c10a9502fcb1d8ae13a51bbf423153dfc63c2b8997665b32154afc360018060a01b038092169160009083825260036020526040822094169384825260205284604082205580a4565b909160207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259160018060a01b03809416938460005260028352604060002095169485600052825280604060002055604051908152a3565b60405190612a6682611fcc565b60006040838281528260208201520152565b60405190612a8582611ffd565b6014546001600160801b038116835260801c6020830152565b60405190612aab82611ffd565b6024546001600160801b038116835260801c6020830152565b6001600160801b03918216908216019190821161212957565b612ae5612a59565b5060006020604051612af681611ffd565b828152015260006020604051612b0b81611ffd565b8281520152604051612b1c81611fcc565b6023546001600160401b03811682526001600160401b038160401c16602083015260801c60408201528091612b4f612a78565b91612b58612a9e565b600954600e54825160405163442c159960e01b8152600481018390526001600160801b03909116602482015260006044820181905293959194919391926001600160a01b031690602081606481855afa801561251c57600090612f73575b8851612bcc92506001600160801b03169061217a565b80612f3e575060005b80612bed6001600160401b036020870151164261216d565b948515612f14575050426001600160401b031660208a8101919091528801516001600160801b031615612eca57506020670de0b6b3a7640000612c4f85612c4a8c6001600160401b038d60018060801b0390511691511690612116565b612116565b895191900496906001600160801b0390612c6e90828a16908316612ac4565b168952875160405163442c159960e01b815260048101929092526001600160801b031660248201526000604482015291829060649082905afa801561251c57600090612e96575b8751612ccb92506001600160801b03169061217a565b92612cf984612384620186a0612ce3601a548a612116565b60208c01516001600160801b0316919004612116565b6040890180519195916001600160801b038088169291612d1c9084908316612ac4565b16905260208801805190916001600160801b0391612d3c91908316612ac4565b16905280612e61575060005b60295490938482811015612ddc57612d60908361216d565b90670de0b6b3a7640000820291808304670de0b6b3a7640000149015171561212957612384612db4612dae612da06001600160401b0396612dbe9661213f565b93612c4a602d549580612116565b8361217a565b91848d5116612116565b168089526001600160401b03602c5416809110612dd85750565b8852565b909150602a54808211612dee57505050565b612df79161216d565b670de0b6b3a7640000810290808204670de0b6b3a76400001490151715612129576001600160401b0391612384612e3a612dae612da0612e4395602b549061213f565b848d5116612116565b81602c5460401c16808211612e59575b50168852565b905038612e53565b87516001600160801b0316670de0b6b3a764000081810292918084049091149015171561212957612e919161213f565b612d48565b506020813d602011612ec2575b81612eb06020938361204f565b81010312611e1d57612ccb9051612cb5565b3d9150612ea3565b9697939450509350506001600160401b038151166001600160401b03602e5416809103612f08575b509392612efd612a9e565b926000926000929190565b81526001925038612ef2565b975098505050505092505091612f28612a78565b91612f31612a9e565b9160009160009190600090565b87516001600160801b0316670de0b6b3a764000081810292918084049091149015171561212957612f6e9161213f565b612bd5565b506020813d602011612f9f575b81612f8d6020938361204f565b81010312611e1d57612bcc9051612bb6565b3d9150612f80565b3d15612fd2573d90612fb882612070565b91612fc6604051938461204f565b82523d6000602084013e565b606090565b60405190612fe482611ffd565b60038252623f3f3f60e81b6020830152565b908151811015613007570160200190565b634e487b7160e01b600052603260045260246000fd5b60ff1660ff81146121295760010190565b8051604081106130a957508051810190602081818401930312611e1d576020810151906001600160401b038211611e1d570181603f82011215611e1d57602081015161307981612070565b92613087604051948561204f565b81845260408284010111611e1d576130a6916040602085019101611e38565b90565b602092908303613197576000805b60ff81168581109081613178575b50156130d9576130d49061301d565b6130b7565b9260ff809416926130e984612070565b936130f7604051958661204f565b808552613106601f1991612070565b013687860137825b8581168781108061315b575b156131505761314b91906131456001600160f81b031961313a8388612ff6565b5116871a9188612ff6565b5361301d565b61310e565b505094505050905090565b506001600160f81b031961316f8286612ff6565b5116151561311a565b6001600160f81b0319915061318d9086612ff6565b51161515386130c5565b9150506130a6612fd756feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa264697066735822122013f4fadcc6d8a5582ff6b55236431f484dc8018dcb0d56a344cccb04b2758aa264736f6c63430008120033"; type SGLCommonConstructorParams = | [signer?: Signer] diff --git a/src/typechain/tapioca-bar/factories/markets/singularity/SGLLendingCommon__factory.ts b/src/typechain/tapioca-bar/factories/markets/singularity/SGLLendingCommon__factory.ts index 43c47bd3..d9011a98 100644 --- a/src/typechain/tapioca-bar/factories/markets/singularity/SGLLendingCommon__factory.ts +++ b/src/typechain/tapioca-bar/factories/markets/singularity/SGLLendingCommon__factory.ts @@ -1534,11 +1534,6 @@ const _abi = [ }, { inputs: [ - { - internalType: "uint256", - name: "_borrowOpeningFee", - type: "uint256", - }, { internalType: "contract IOracle", name: "_oracle", @@ -1867,7 +1862,7 @@ const _abi = [ ] as const; const _bytecode = - "0x6101408060405234620001e5576200001781620001ea565b601381526001602082017f546170696f63612053696e67756c617269747900000000000000000000000000815260206040516200005481620001ea565b8381520192603160f81b845251902091208160e052610100918183524660a0526040519160208301907f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f92838352604085015260608401524660808401523060a084015260a0835260c083019280841060018060401b03851117620001cf5760408490525190206080523060c052610120908152600580546001600160a01b0319163390811790915560007f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a362013880601b5562015f90601c55612710601d556032602055612ee06021557f0bd4060688a1800ae986e4840aebc924bb40b5bf44de4583df2257220b54b77c6027557f7d1dc38e60930664f8cbf495da6556ca091d2f92d6550877750c049864b182306028556161a86029556131df928362000207843960805183612684015260a0518361274f015260c0518361264e015260e051836126d3015251826126f9015251816126b00152f35b634e487b7160e01b600052604160045260246000fd5b600080fd5b604081019081106001600160401b03821117620001cf5760405256fe608080604052600436101561001357600080fd5b600090813560e01c908162a02a2014611db05750806302ce728f14611c2857806306fdde0314611b71578063078dfbe714611a6e578063095ea7b314611a475780630996efb7146115c25780630c4e84f0146114aa57806318160ddd146114895780631c9e379b146114505780631da8bf101461139057806323b872dd146111f3578063313ce56714611161578063331960ff1461114357806334d441d0146111255780633644e5151461110a57806337b6b7b9146110ec57806338d52e0f146110c35780633ba0b9a9146110a55780633f741adb1461108057806340626d8b1461106257806344de240a14611044578063473e3ce71461102657806348e4163e14610fed5780634d7f2a3414610fcf5780634e71e0c814610f21578063529898f214610f0357806352f353eb14610edc5780635514023214610eb557806355c2ab9414610e8b5780635793546214610e6d5780635dfe04e814610e0e5780636c3d8b8f14610de557806370a0823114610dac5780637277854714610d7457806374645ff314610d495780637dc0d1d014610d205780637ecebe0014610ce75780637fa0b84e14610cb5578063821226e814610c975780638285ef4014610c655780638c5d0ed314610c475780638da5cb5b14610c1e578063910dd7c814610a01578063959916dc146109e457806395d89b411461092a57806399a97028146108fa5780639c5d7192146108dc5780639e15e89f146108a1578063a9059cbb146107be578063b0e21e8a146107a0578063b27c0e7414610765578063bb4cfe3b14610747578063ce8849ed1461071e578063d505accf14610579578063d8dfeb4514610550578063dd62ed3e14610505578063de406577146104dc578063e0996cb6146104be578063e30c397814610495578063ea64dd5614610477578063eec0f42e14610459578063f42760b71461043b578063f8ba4cff14610341578063f9557ccb1461030b5763ffe04c66146102eb57600080fd5b346103085780600319360112610308576020602a54604051908152f35b80fd5b5034610308578060031936011261030857602554604080516001600160801b038316815260809290921c602083015290f35b0390f35b50346103085780600319360112610308576020604061035e612ace565b9397959390929015610402575050506001600160401b03602f541686807f33af5ce86e8438eff54589f85332916444457dfa8685493fbd579b809097026b868851838152a45b6001600160401b038151166001600160401b03851b84830151861b169160018060801b0319958691015160801b1691171760245560018060801b039083838383511692015160801b161760145583511692015160801b161760255580f35b7f33af5ce86e8438eff54589f85332916444457dfa8685493fbd579b809097026b866001600160401b03865116948951908152a46103a4565b50346103085780600319360112610308576020602b54604051908152f35b50346103085780600319360112610308576020600c54604051908152f35b50346103085780600319360112610308576020601f54604051908152f35b50346103085780600319360112610308576006546040516001600160a01b039091168152602090f35b50346103085780600319360112610308576020601d54604051908152f35b50346103085780600319360112610308576009546040516001600160a01b039091168152602090f35b5034610308576040366003190112610308576040602091610524611df8565b61052c611e13565b6001600160a01b039182168352600285528383209116825283522054604051908152f35b5034610308578060031936011261030857600b546040516001600160a01b039091168152602090f35b50346103085761058836611e80565b908395949542116106d9576001600160a01b03878116808a52600460205260408a20805491969295929060001983146106c5578261066e9694928d92600161066698960190556040519160208301937f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e266855260408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e0815261062a81612009565b51902061063561264b565b9060405190602082019261190160f01b8452602283015260428201526042815261065e81612025565b519020612920565b919091612821565b16036106805761067d926129f3565b80f35b60405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152606490fd5b634e487b7160e01b8c52601160045260248cfd5b60405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b50346103085780600319360112610308576008546040516001600160a01b039091168152602090f35b50346103085780600319360112610308576020601e54604051908152f35b50346103085780600319360112610308576060602454604051906001600160401b0380821683528160401c16602083015260801c6040820152f35b50346103085780600319360112610308576020601a54604051908152f35b5034610308576040366003190112610308576107d8611df8565b6024358092811580159061088f575b61081f575b50506040519182526001600160a01b031690339060008051602061318a83398151915290602090a3602060405160018152f35b3381526001602052604081205461083883821015612775565b6001600160a01b0384169033829003610853575b50506107ec565b60409361086a916108658415156127ba565b61215e565b33835260016020528383205581522061088483825461216b565b90558138808061084c565b50336001600160a01b038416146107e7565b50346103085760403660031901126103085760606108c96108c0611df8565b602435906122aa565b9060405192835260208301526040820152f35b50346103085780600319360112610308576020602c54604051908152f35b5034610308576040366003190112610308576020610922610919611df8565b60243590612519565b604051908152f35b5034610308578060031936011261030857808060018060a01b03600b541660405160208101906395d89b4160e01b82526004815261096781611fee565b51915afa610973612f8e565b9150156109d35761098661033d91613015565b6109bf6023604051809362746d2d60e81b60208301526109af8151809260208686019101611e29565b8101036003810184520182612040565b604051918291602083526020830190611e4c565b5061033d6109df612fbe565b610986565b503461030857806003193601126103085760208054604051908152f35b5034610308576040366003190112610308576004356001600160401b038111610c1a5736602382011215610c1a57806004013582610a3e82612061565b92610a4c6040519485612040565b82845260208401923660248284010111610c16578060246020930185378401015260243561ffff81168103610c1257610100918284805181010312610c0e57610a9490612409565b610aa0604085016127ff565b91610aad606086016127ff565b9460808101519460a082015192610ac660c08401612813565b9160e0840151930151938042116106d9578515610be7577f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e266915b6001600160a01b0388168b52600460205260408b20805491906000198314610bd3579161ffff610b909896949261066698969460018401905560405194602086015216604084015260018060a01b038a16606084015260018060a01b038c1660808401528a60a084015260c083015260e082015260e08152610b8181612009565b6020815191012061063561264b565b6001600160a01b038381169116036106805715610bbd5761067d926001600160a01b0390811691166129f3565b61067d926001600160a01b0390811691166129a5565b634e487b7160e01b8d52601160045260248dfd5b7f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d691610b00565b8480fd5b8380fd5b8280fd5b5080fd5b50346103085780600319360112610308576005546040516001600160a01b039091168152602090f35b50346103085780600319360112610308576020601b54604051908152f35b5034610308578060031936011261030857601454604080516001600160801b038316815260809290921c602083015290f35b50346103085780600319360112610308576020602e54604051908152f35b503461030857604036600319011261030857610cdc610cd2611df8565b60243590336129a5565b602060405160018152f35b5034610308576020366003190112610308576020906040906001600160a01b03610d0f611df8565b168152600483522054604051908152f35b5034610308578060031936011261030857600f546040516001600160a01b039091168152602090f35b503461030857806003193601126103085761033d6040516109bf81610d6d81611f38565b0382612040565b50346103085760203660031901126103085760043590600982101561030857602060ff610da084611ecf565b54166040519015158152f35b5034610308576020366003190112610308576020906040906001600160a01b03610dd4611df8565b168152600183522054604051908152f35b5034610308578060031936011261030857600a546040516001600160a01b039091168152602090f35b5034610308578060031936011261030857610e27612a4a565b506080610e32612ace565b509350505050604051916001600160401b0380825116845260208201511660208401526040600180861b039101511660408301526060820152f35b50346103085780600319360112610308576020601c54604051908152f35b503461030857806003193601126103085760206001600160401b03602d5460401c16604051908152f35b503461030857806003193601126103085760206001600160401b03602d5416604051908152f35b503461030857806003193601126103085760206001600160401b03602f5416604051908152f35b50346103085780600319360112610308576020602154604051908152f35b50346103085780600319360112610308576006546001600160a01b039081811633819003610f8b57806005549384167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08680a36001600160a01b0319928316176005551660065580f35b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b50346103085780600319360112610308576020602954604051908152f35b5034610308576020366003190112610308576020906040906001600160a01b03611015611df8565b168152601783522054604051908152f35b50346103085780600319360112610308576020601554604051908152f35b50346103085780600319360112610308576020600e54604051908152f35b50346103085780600319360112610308576020601654604051908152f35b5034610308576060366003190112610308576020610922604435602435600435612191565b50346103085780600319360112610308576020601154604051908152f35b5034610308578060031936011261030857600d546040516001600160a01b039091168152602090f35b50346103085780600319360112610308576020601254604051908152f35b5034610308578060031936011261030857602061092261264b565b50346103085780600319360112610308576020601954604051908152f35b50346103085780600319360112610308576020601354604051908152f35b5034610308578060031936011261030857808060018060a01b03600d5416604051602081019063313ce56760e01b82526004815261119e81611fee565b51915afa906111ab612f8e565b91806111e8575b156111dd5760208280518101031261030857506111d26020809201612813565b60ff60405191168152f35b5050602060126111d2565b5060208251146111b2565b50346103085760603660031901126103085761120d611df8565b90611216611e13565b6044359182611254575b506040519182526001600160a01b0390811692169060008051602061318a83398151915290602090a3602060405160018152f35b6001600160a01b0384811680835260016020908152604084205492869061127d82861015612775565b861693848403611292575b5050505050611220565b8386526002835260408087203388528452862054600181016112fc575b50926001602096936112da879460409761086560008051602061318a8339815191529c9a15156127ba565b92855252838320558152206112f085825461216b565b90559138808581611288565b9091811061135057926001602096936112da8a60008051602061318a8339815191529a989561132d8260409a61215e565b86895260028552898920338a5285528989205594975094979950509396506112af565b60405162461bcd60e51b815260048101849052601860248201527745524332303a20616c6c6f77616e636520746f6f206c6f7760401b6044820152606490fd5b50346103085761139f36611e80565b908395949542116106d9576001600160a01b03878116808a52600460205260408a20805491969295929060001983146106c557826114419694928d92600161066698960190556040519160208301937f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d6855260408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e0815261062a81612009565b16036106805761067d926129a5565b5034610308576020366003190112610308576020906040906001600160a01b03611478611df8565b168152601883522054604051908152f35b5034610308578060031936011261030857602060255460801c604051908152f35b5034610308576040366003190112610308576004356009811015610c1a576114d0611e71565b6008549091906001600160a01b031633036115865760ff6114f082611ecf565b5416151591151591821461154c57808260ff61150e61153c94611ecf565b54161515827feeec81de25875ce1725479bb76f720a8defdb43dea041919ae37bb4aae9847c08780a4611ecf565b9060ff8019835416911617905580f35b60405162461bcd60e51b81526020600482015260126024820152714d61726b65743a2073616d6520737461746560701b6044820152606490fd5b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881d5b985d5d1a1bdc9a5e995960621b6044820152606490fd5b5034610308576101803660031901126103085760246001600160a01b03813581811690819003610c1257604435916001600160401b0390818411611a435736602385011215611a43578360040135918211611a435736858386010111611a435760643591818316809303611a3f5761163f8260055416331461207c565b60043594620186a094611654868811156120c7565b6020968088547fc353b09af857951dccce61b43a5854fc45beceed36c50e5d4cc2e71858a8e0df8c80a3875580611a01575b5086826118c6575b50505081611886575b505060843580611871575b5060a4358061185c575b5060c43580611848575b5060e43580611827575b506101043580611806575b5061012435806117d5575b50610144359081611765575b50506101643591826116f2578380f35b601e548310611707575050601f553880808380f35b9060326084926040519262461bcd60e51b845260048401528201527f4d61726b65743a206c69717569646174696f6e436f6c6c61746572616c697a616044820152711d1a5bdb94985d19481d1bdbc81cdb585b1b60721b6064820152fd5b611771908211156120c7565b601f54811161178457601e5538806116e2565b5060256084926040519262461bcd60e51b845260048401528201527f4d61726b65743a20636f6c6c61746572616c697a6174696f6e5261746520746f6044820152646f2062696760d81b6064820152fd5b806016547fae6e0ab3b95f0a53ff9660a390ccedcbbf1f2355dce974a9841af106fddcfaba8780a3601655386116d6565b6118118282106120c7565b61181e601b5482116120c7565b601c55386116cb565b6118328282106120c7565b61183f601c5482106120c7565b601b55386116c0565b6118538282106120c7565b601d55386116b6565b611868828211156120c7565b601a55386116ac565b61187d828211156120c7565b601955386116a2565b816008549182167f5a62d22209e370e38eea92cfddcd228e656e6ec139243392a760a7769f5877fd8880a36001600160a01b031916176008553880611697565b82916118d3601054611efe565b601f81116119b0575b508990601f8411600114611941578a93611934575b5050508160011b916000199060031b1c1916176010555b7fa6f004921c944d4b8bf6e38462b00f36a58d62495d56b51f571ab78f732c98158680a138808661168e565b01013590508638806118f1565b60108b52888b20601f198516955092509089908b5b8a8782106119955750508460019610611979575b50505050811b01601055611908565b60001960f88660031b161c19920101351690553880888161196a565b8483019093013585556001909401938b929182019101611956565b9150915060108952868920601f840160051c81018885106119fa575b91849391601f8b94920160051c01905b8181106119e957506118dc565b8b81558594508a93506001016119dc565b50806119cc565b600f80546001600160a01b0319169190911790557f0b2d6eb667d0522c3eb86e4288afecae6c11591ffd1345d4d12407e0598bca9b8880a138611686565b8680fd5b8580fd5b503461030857604036600319011261030857610cdc611a64611df8565b60243590336129f3565b503461030857606036600319011261030857611a88611df8565b611a90611e71565b604435908115158203610c125760018060a01b03928391611ab68360055416331461207c565b15611b5a571690811590811591611b52575b5015611b1557806005549283167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08580a36001600160a01b03199182161760055560068054909116905580f35b60405162461bcd60e51b81526020600482015260156024820152744f776e61626c653a207a65726f206164647265737360581b6044820152606490fd5b905038611ac8565b9150501660018060a01b0319600654161760065580f35b5034610308578060031936011261030857808060018060a01b03600b541660405160208101906306fdde0360e01b825260048152611bae81611fee565b51915afa611bba612f8e565b915015611c1757611bcd61033d91613015565b6109bf6034604051809373546170696f63612053696e67756c61726974792d60601b6020830152611c078151809260208686019101611e29565b8101036014810184520182612040565b5061033d611c23612fbe565b611bcd565b5034610308578060031936011261030857600f546040805163d6d7d52560e01b8152602060048201529182906001600160a01b0316818581611c6c60248201611f38565b03925af18015611da55782918391611d65575b508115611d06578015611cca57807f9f9192b5edb17356c524e08d9e025c8e2f6307e6ea52fb7968faa3081f51c3c86040948260115580a25b42601355825191151582526020820152f35b60405162461bcd60e51b81526020600482015260146024820152734d61726b65743a20696e76616c6964207261746560601b6044820152606490fd5b509050611d186013546012549061216b565b4211611d2957604090601154611cb8565b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881c985d19481d1bdbc81bdb1960621b6044820152606490fd5b9150506040813d604011611d9d575b81611d8160409383612040565b81010312610c1a576020611d9482612409565b91015138611c7f565b3d9150611d74565b6040513d84823e3d90fd5b905034610c1a576040366003190112610c1a576040602092611dd0611df8565b611dd8611e13565b6001600160a01b0391821683526003865283832091168252845220548152f35b600435906001600160a01b0382168203611e0e57565b600080fd5b602435906001600160a01b0382168203611e0e57565b60005b838110611e3c5750506000910152565b8181015183820152602001611e2c565b90602091611e6581518092818552858086019101611e29565b601f01601f1916010190565b602435908115158203611e0e57565b60e0906003190112611e0e576001600160a01b03906004358281168103611e0e57916024359081168103611e0e5790604435906064359060843560ff81168103611e0e579060a4359060c43590565b6009811015611ee8576000526007602052604060002090565b634e487b7160e01b600052602160045260246000fd5b90600182811c92168015611f2e575b6020831014611f1857565b634e487b7160e01b600052602260045260246000fd5b91607f1691611f0d565b60105460009291611f4882611efe565b908181526001928381169081600014611fa25750600114611f6857505050565b9092935060106000526020928360002092846000945b838610611f8e5750505050010190565b805485870183015294019385908201611f7e565b91935050602093945060ff191683830152151560051b010190565b606081019081106001600160401b03821117611fd857604052565b634e487b7160e01b600052604160045260246000fd5b604081019081106001600160401b03821117611fd857604052565b61010081019081106001600160401b03821117611fd857604052565b608081019081106001600160401b03821117611fd857604052565b90601f801991011681019081106001600160401b03821117611fd857604052565b6001600160401b038111611fd857601f01601f191660200190565b1561208357565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b156120ce57565b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881b9bdd081d985b1a59607a1b6044820152606490fd5b8181029291811591840414171561211a57565b634e487b7160e01b600052601160045260246000fd5b811561213a570490565b634e487b7160e01b600052601260045260246000fd5b604d811161211a57600a0a90565b9190820391821161211a57565b9190820180921161211a57565b8181039291600013801582851316918412161761211a57565b6014549192916121da916121cb916121c1916121b7906001600160801b03831690612107565b9060801c90612130565b93601f5490612107565b6121d483612150565b90612130565b8083106122a2576121ee61222a918461215e565b9161222561221f612216601e5461221061220786612150565b6021549061216b565b90612107565b6121d484612150565b91612150565b612178565b6509184e72a0009081810291818305149015171561211a57670de0b6b3a76400009182810292818405149015171561211a57801561213a57600160ff1b9180831460001983141661211a570590600082121561229b57811461211a57600003905b808211612296575090565b905090565b509061228b565b505050600090565b9160018060a01b0380931691600093838552602060178152604091828720549081156123fc57878385516122dd81611fee565b82815201526122ea612ace565b50505050509190506122fd861515612416565b6009541683600c54898b52601882526064878c2054918851948593849263442c159960e01b8452600484015260248301528d60448301525afa9081156123f25789916123bf575b509161239f6123b3979899949261237a8861237561236c601898620186a06022540490612107565b601e5490612107565b612130565b815190936001600160801b0391869161239591841690612107565b9201511690612130565b8181106123b757035b978352522054612462565b9091565b5050826123a8565b90508381813d83116123eb575b6123d68183612040565b810103126123e7575161239f612344565b8880fd5b503d6123cc565b85513d8b823e3d90fd5b5086955085949350505050565b51908115158203611e0e57565b1561241d57565b60405162461bcd60e51b815260206004820152601e60248201527f4d61726b65743a2065786368616e676552617465206e6f742076616c696400006044820152606490fd5b61246d821515612416565b602060018060a01b0360095416916064600c54604051948593849263442c159960e01b845260048401526024830152600060448301525afa90811561250d576000916124da575b50906123756124c69260225490612107565b620186a06124d6601e5483612107565b0491565b906020823d8211612505575b816124f360209383612040565b810103126103085750516123756124b4565b3d91506124e6565b6040513d6000823e3d90fd5b6001600160a01b0316600081815260186020526040812054909261253c91612462565b91835260176020526040832054801561264557811561264557818110612645578281101561263b57601454612585918391610865916121b7906001600160801b03831690612107565b90620186a09283830292808404851490151715612627576125aa92916121d49161215e565b91601b5491601c54936125bd8585612178565b80820291848212600160ff1b82141661262757818305149015171561261357058184820194851291129080158216911516176125ff5750808212612296575090565b634e487b7160e01b81526011600452602490fd5b634e487b7160e01b83526011600452602483fd5b634e487b7160e01b85526011600452602485fd5b50505050601b5490565b50505090565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316148061274c575b156126a6577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f000000000000000000000000000000000000000000000000000000000000000082527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a0815260c081018181106001600160401b03821117611fd85760405251902090565b507f0000000000000000000000000000000000000000000000000000000000000000461461267d565b1561277c57565b60405162461bcd60e51b815260206004820152601660248201527545524332303a2062616c616e636520746f6f206c6f7760501b6044820152606490fd5b156127c157565b60405162461bcd60e51b815260206004820152601660248201527545524332303a206e6f207a65726f206164647265737360501b6044820152606490fd5b51906001600160a01b0382168203611e0e57565b519060ff82168203611e0e57565b6005811015611ee857806128325750565b6001810361287a5760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b6044820152606490fd5b600281036128c75760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606490fd5b6003146128d057565b60405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608490fd5b9291906fa2a8918ca85bafe22016d0b997e4df60600160ff1b0383116129995791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa1561298c5781516001600160a01b03811615612986579190565b50600190565b50604051903d90823e3d90fd5b50505050600090600390565b7fe50de2333c10a9502fcb1d8ae13a51bbf423153dfc63c2b8997665b32154afc360018060a01b038092169160009083825260036020526040822094169384825260205284604082205580a4565b909160207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259160018060a01b03809416938460005260028352604060002095169485600052825280604060002055604051908152a3565b60405190612a5782611fbd565b60006040838281528260208201520152565b60405190612a7682611fee565b6014546001600160801b038116835260801c6020830152565b60405190612a9c82611fee565b6025546001600160801b038116835260801c6020830152565b6001600160801b03918216908216019190821161211a57565b612ad6612a4a565b5060006020604051612ae781611fee565b828152015260006020604051612afc81611fee565b828152015260405190612b0e82611fbd565b602454916001600160401b038316815260208101926001600160401b038160401c16845260801c60408201528092612b44612a69565b92612b4d612a8f565b92600060018060a01b0360095416600e549460018060801b038751166040519063442c159960e01b8252876004830152602482015260006044820152602081606481865afa801561250d57600090612f5a575b8951612bb692506001600160801b03169061216b565b80612f25575060005b612bd46001600160401b03829351164261215e565b948515612efb575050426001600160401b031660208a8101919091528801516001600160801b031615612eb157506020670de0b6b3a7640000612c3685612c318c6001600160401b038d60018060801b0390511691511690612107565b612107565b895191900496906001600160801b0390612c5590828a16908316612ab5565b168952875160405163442c159960e01b815260048101929092526001600160801b031660248201526000604482015291829060649082905afa801561250d57600090612e7d575b8751612cb292506001600160801b03169061216b565b92612ce084612375620186a0612cca601a548a612107565b60208c01516001600160801b0316919004612107565b6040890180519195916001600160801b038088169291612d039084908316612ab5565b16905260208801805190916001600160801b0391612d2391908316612ab5565b16905280612e48575060005b602a5490938482811015612dc357612d47908361215e565b90670de0b6b3a7640000820291808304670de0b6b3a7640000149015171561211a57612375612d9b612d95612d876001600160401b0396612da596612130565b93612c31602e549580612107565b8361216b565b91848d5116612107565b168089526001600160401b03602d5416809110612dbf5750565b8852565b909150602b54808211612dd557505050565b612dde9161215e565b670de0b6b3a7640000810290808204670de0b6b3a7640000149015171561211a576001600160401b0391612375612e21612d95612d87612e2a95602c5490612130565b848d5116612107565b81602d5460401c16808211612e40575b50168852565b905038612e3a565b87516001600160801b0316670de0b6b3a764000081810292918084049091149015171561211a57612e7891612130565b612d2f565b506020813d602011612ea9575b81612e9760209383612040565b81010312611e0e57612cb29051612c9c565b3d9150612e8a565b9697939450509350506001600160401b038151166001600160401b03602f5416809103612eef575b509392612ee4612a8f565b926000926000929190565b81526001925038612ed9565b975098505050505092505091612f0f612a69565b91612f18612a8f565b9160009160009190600090565b88516001600160801b0316670de0b6b3a764000081810292918084049091149015171561211a57612f5591612130565b612bbf565b506020813d602011612f86575b81612f7460209383612040565b81010312611e0e57612bb69051612ba0565b3d9150612f67565b3d15612fb9573d90612f9f82612061565b91612fad6040519384612040565b82523d6000602084013e565b606090565b60405190612fcb82611fee565b60038252623f3f3f60e81b6020830152565b908151811015612fee570160200190565b634e487b7160e01b600052603260045260246000fd5b60ff1660ff811461211a5760010190565b80516040811061309057508051810190602081818401930312611e0e576020810151906001600160401b038211611e0e570181603f82011215611e0e57602081015161306081612061565b9261306e6040519485612040565b81845260408284010111611e0e5761308d916040602085019101611e29565b90565b60209290830361317e576000805b60ff8116858110908161315f575b50156130c0576130bb90613004565b61309e565b9260ff809416926130d084612061565b936130de6040519586612040565b8085526130ed601f1991612061565b013687860137825b85811687811080613142575b1561313757613132919061312c6001600160f81b03196131218388612fdd565b5116871a9188612fdd565b53613004565b6130f5565b505094505050905090565b506001600160f81b03196131568286612fdd565b51161515613101565b6001600160f81b031991506131749086612fdd565b51161515386130ac565b91505061308d612fbe56feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa26469706673582212208c00405a475d552cd75310f06b1473cab1724710a68e1023789d1b4e2da3230864736f6c63430008120033"; + "0x6101408060405234620001e5576200001781620001ea565b601381526001602082017f546170696f63612053696e67756c617269747900000000000000000000000000815260206040516200005481620001ea565b8381520192603160f81b845251902091208160e052610100918183524660a0526040519160208301907f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f92838352604085015260608401524660808401523060a084015260a0835260c083019280841060018060401b03851117620001cf5760408490525190206080523060c052610120908152600580546001600160a01b0319163390811790915560007f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a362013880601b5562015f90601c55612710601d55612ee06020557f0bd4060688a1800ae986e4840aebc924bb40b5bf44de4583df2257220b54b77c6026557f7d1dc38e60930664f8cbf495da6556ca091d2f92d6550877750c049864b182306027556161a86028556032602f556131f8928362000207843960805183612693015260a0518361275e015260c0518361265d015260e051836126e201525182612708015251816126bf0152f35b634e487b7160e01b600052604160045260246000fd5b600080fd5b604081019081106001600160401b03821117620001cf5760405256fe608080604052600436101561001357600080fd5b600090813560e01c908162a02a2014611dbf5750806302ce728f14611c3757806306fdde0314611b80578063078dfbe714611a7d578063095ea7b314611a565780630c4e84f01461193e57806318160ddd1461191d5780631c9e379b146118e45780631da8bf101461182457806323b872dd14611687578063313ce567146115f5578063331960ff146115d757806334d441d0146115b95780633644e5151461159e57806337b6b7b91461158057806338d52e0f146115575780633ba0b9a9146115395780633f741adb1461151457806340626d8b146114f657806344de240a146114d8578063473e3ce7146114ba57806348e4163e146114815780634d7f2a34146114635780634e71e0c8146113b5578063529898f21461139857806352f353eb14611371578063551402321461134a57806355c2ab941461132057806357935462146113025780635dfe04e8146112a35780636c3d8b8f1461127a57806370a0823114611241578063727785471461120957806374645ff3146111de5780637dc0d1d0146111b55780637ecebe001461117c5780637fa0b84e1461114a578063821226e81461112c5780638285ef40146110fa5780638c5d0ed3146110dc5780638da5cb5b146110b3578063910dd7c814610e9a578063959916dc14610e7c57806395d89b4114610dc257806399a9702814610d925780639c5d719214610d745780639e15e89f14610d39578063a9059cbb14610c56578063b0e21e8a14610c38578063b27c0e7414610bfd578063bb4cfe3b14610bdf578063ce8849ed14610bb6578063d3fb2a381461071e578063d505accf14610579578063d8dfeb4514610550578063dd62ed3e14610505578063de406577146104dc578063e0996cb6146104be578063e30c397814610495578063ea64dd5614610477578063eec0f42e14610459578063f42760b71461043b578063f8ba4cff14610341578063f9557ccb1461030b5763ffe04c66146102eb57600080fd5b346103085780600319360112610308576020602954604051908152f35b80fd5b5034610308578060031936011261030857602454604080516001600160801b038316815260809290921c602083015290f35b0390f35b50346103085780600319360112610308576020604061035e612add565b9397959390929015610402575050506001600160401b03602e541686807f33af5ce86e8438eff54589f85332916444457dfa8685493fbd579b809097026b868851838152a45b6001600160401b038151166001600160401b03851b84830151861b169160018060801b0319958691015160801b1691171760235560018060801b039083838383511692015160801b161760145583511692015160801b161760245580f35b7f33af5ce86e8438eff54589f85332916444457dfa8685493fbd579b809097026b866001600160401b03865116948951908152a46103a4565b50346103085780600319360112610308576020602a54604051908152f35b50346103085780600319360112610308576020600c54604051908152f35b50346103085780600319360112610308576020601f54604051908152f35b50346103085780600319360112610308576006546040516001600160a01b039091168152602090f35b50346103085780600319360112610308576020601d54604051908152f35b50346103085780600319360112610308576009546040516001600160a01b039091168152602090f35b5034610308576040366003190112610308576040602091610524611e07565b61052c611e22565b6001600160a01b039182168352600285528383209116825283522054604051908152f35b5034610308578060031936011261030857600b546040516001600160a01b039091168152602090f35b50346103085761058836611e8f565b908395949542116106d9576001600160a01b03878116808a52600460205260408a20805491969295929060001983146106c5578261066e9694928d92600161066698960190556040519160208301937f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e266855260408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e0815261062a81612018565b51902061063561265a565b9060405190602082019261190160f01b8452602283015260428201526042815261065e81612034565b51902061292f565b919091612830565b16036106805761067d92612a02565b80f35b60405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152606490fd5b634e487b7160e01b8c52601160045260248cfd5b60405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b503461030857610160366003190112610308576001600160a01b0360043581811690819003610bb2576024916001600160401b038335818111610bae5736602382011215610bae578060040135918211610bae5736858383010111610bae5760443593838516809503610baa5761079a8460055416331461208b565b80610b6c575b5084826109ee575b505050816109ae575b505060643580610996575b506084358061097e575b5060a43580610967575b5060c43580610943575b5060e4358061091f575b5061010435806108ee575b50610124358061087b575b50610144359081610809578280f35b601e54821061081c5750601f5538808280f35b60849060326040519162461bcd60e51b8352602060048401528201527f4d61726b65743a206c69717569646174696f6e436f6c6c61746572616c697a616044820152711d1a5bdb94985d19481d1bdbc81cdb585b1b60721b6064820152fd5b61088a620186a08211156120d6565b601f54811161089c57601e55386107fa565b60405162461bcd60e51b8152602060048201526025818401527f4d61726b65743a20636f6c6c61746572616c697a6174696f6e5261746520746f6044820152646f2062696760d81b6064820152608490fd5b806016547fae6e0ab3b95f0a53ff9660a390ccedcbbf1f2355dce974a9841af106fddcfaba8580a3601655386107ef565b61092d620186a082106120d6565b61093a601b5482116120d6565b601c55386107e4565b610951620186a082106120d6565b61095e601c5482106120d6565b601b55386107da565b610975620186a082106120d6565b601d55386107d0565b61098d620186a08211156120d6565b601a55386107c6565b6109a5620186a08211156120d6565b601955386107bc565b816008549182167f5a62d22209e370e38eea92cfddcd228e656e6ec139243392a760a7769f5877fd8680a36001600160a01b0319161760085538806107b1565b82916109fb601054611f0d565b601f8111610afb575b508790601f8411600114610a69578893610a5c575b5050508160011b916000199060031b1c1916176010555b7fa6f004921c944d4b8bf6e38462b00f36a58d62495d56b51f571ab78f732c98158480a13880846107a8565b0101359050843880610a19565b60108952601f19841694507f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae67292509087908960205b878210610adc5750508460019610610ac0575b50505050811b01601055610a30565b60001960f88660031b161c199201013516905538808681610ab1565b8285019093013585556001949094019389929182019190810190610a9e565b6010895290925090507f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae672601f840160051c810160208510610b65575b91849391601f8994920160051c01905b818110610b545750610a04565b898155859450889350600101610b47565b5080610b37565b600f80546001600160a01b0319169190911790557f0b2d6eb667d0522c3eb86e4288afecae6c11591ffd1345d4d12407e0598bca9b8680a1386107a0565b8680fd5b8580fd5b8280fd5b50346103085780600319360112610308576008546040516001600160a01b039091168152602090f35b50346103085780600319360112610308576020601e54604051908152f35b50346103085780600319360112610308576060602354604051906001600160401b0380821683528160401c16602083015260801c6040820152f35b50346103085780600319360112610308576020601a54604051908152f35b503461030857604036600319011261030857610c70611e07565b60243580928115801590610d27575b610cb7575b50506040519182526001600160a01b03169033906000805160206131a383398151915290602090a3602060405160018152f35b33815260016020526040812054610cd083821015612784565b6001600160a01b0384169033829003610ceb575b5050610c84565b604093610d0291610cfd8415156127c9565b61216d565b338352600160205283832055815220610d1c83825461217a565b905581388080610ce4565b50336001600160a01b03841614610c7f565b5034610308576040366003190112610308576060610d61610d58611e07565b602435906122b9565b9060405192835260208301526040820152f35b50346103085780600319360112610308576020602b54604051908152f35b5034610308576040366003190112610308576020610dba610db1611e07565b60243590612528565b604051908152f35b5034610308578060031936011261030857808060018060a01b03600b541660405160208101906395d89b4160e01b825260048152610dff81611ffd565b51915afa610e0b612fa7565b915015610e6b57610e1e61033d9161302e565b610e576023604051809362746d2d60e81b6020830152610e478151809260208686019101611e38565b810103600381018452018261204f565b604051918291602083526020830190611e5b565b5061033d610e77612fd7565b610e1e565b50346103085780600319360112610308576020602f54604051908152f35b5034610308576040366003190112610308576004356001600160401b0381116110af57366023820112156110af57806004013582610ed782612070565b92610ee5604051948561204f565b82845260208401923660248284010111610bb2578060246020930185378401015260243561ffff811681036110ab576101009182848051810103126110a757610f2d90612418565b610f396040850161280e565b91610f466060860161280e565b9460808101519460a082015192610f5f60c08401612822565b9160e0840151930151938042116106d9578515611080577f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e266915b6001600160a01b0388168b52600460205260408b2080549190600019831461106c579161ffff6110299896949261066698969460018401905560405194602086015216604084015260018060a01b038a16606084015260018060a01b038c1660808401528a60a084015260c083015260e082015260e0815261101a81612018565b6020815191012061063561265a565b6001600160a01b0383811691160361068057156110565761067d926001600160a01b039081169116612a02565b61067d926001600160a01b0390811691166129b4565b634e487b7160e01b8d52601160045260248dfd5b7f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d691610f99565b8480fd5b8380fd5b5080fd5b50346103085780600319360112610308576005546040516001600160a01b039091168152602090f35b50346103085780600319360112610308576020601b54604051908152f35b5034610308578060031936011261030857601454604080516001600160801b038316815260809290921c602083015290f35b50346103085780600319360112610308576020602d54604051908152f35b503461030857604036600319011261030857611171611167611e07565b60243590336129b4565b602060405160018152f35b5034610308576020366003190112610308576020906040906001600160a01b036111a4611e07565b168152600483522054604051908152f35b5034610308578060031936011261030857600f546040516001600160a01b039091168152602090f35b503461030857806003193601126103085761033d604051610e578161120281611f47565b038261204f565b50346103085760203660031901126103085760043590600982101561030857602060ff61123584611ede565b54166040519015158152f35b5034610308576020366003190112610308576020906040906001600160a01b03611269611e07565b168152600183522054604051908152f35b5034610308578060031936011261030857600a546040516001600160a01b039091168152602090f35b50346103085780600319360112610308576112bc612a59565b5060806112c7612add565b509350505050604051916001600160401b0380825116845260208201511660208401526040600180861b039101511660408301526060820152f35b50346103085780600319360112610308576020601c54604051908152f35b503461030857806003193601126103085760206001600160401b03602c5460401c16604051908152f35b503461030857806003193601126103085760206001600160401b03602c5416604051908152f35b503461030857806003193601126103085760206001600160401b03602e5416604051908152f35b503461030857806003193601126103085760208054604051908152f35b50346103085780600319360112610308576006546001600160a01b03908181163381900361141f57806005549384167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08680a36001600160a01b0319928316176005551660065580f35b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b50346103085780600319360112610308576020602854604051908152f35b5034610308576020366003190112610308576020906040906001600160a01b036114a9611e07565b168152601783522054604051908152f35b50346103085780600319360112610308576020601554604051908152f35b50346103085780600319360112610308576020600e54604051908152f35b50346103085780600319360112610308576020601654604051908152f35b5034610308576060366003190112610308576020610dba6044356024356004356121a0565b50346103085780600319360112610308576020601154604051908152f35b5034610308578060031936011261030857600d546040516001600160a01b039091168152602090f35b50346103085780600319360112610308576020601254604051908152f35b50346103085780600319360112610308576020610dba61265a565b50346103085780600319360112610308576020601954604051908152f35b50346103085780600319360112610308576020601354604051908152f35b5034610308578060031936011261030857808060018060a01b03600d5416604051602081019063313ce56760e01b82526004815261163281611ffd565b51915afa9061163f612fa7565b918061167c575b156116715760208280518101031261030857506116666020809201612822565b60ff60405191168152f35b505060206012611666565b506020825114611646565b5034610308576060366003190112610308576116a1611e07565b906116aa611e22565b60443591826116e8575b506040519182526001600160a01b039081169216906000805160206131a383398151915290602090a3602060405160018152f35b6001600160a01b0384811680835260016020908152604084205492869061171182861015612784565b861693848403611726575b50505050506116b4565b838652600283526040808720338852845286205460018101611790575b509260016020969361176e8794604097610cfd6000805160206131a38339815191529c9a15156127c9565b928552528383205581522061178485825461217a565b9055913880858161171c565b909181106117e4579260016020969361176e8a6000805160206131a38339815191529a98956117c18260409a61216d565b86895260028552898920338a528552898920559497509497995050939650611743565b60405162461bcd60e51b815260048101849052601860248201527745524332303a20616c6c6f77616e636520746f6f206c6f7760401b6044820152606490fd5b50346103085761183336611e8f565b908395949542116106d9576001600160a01b03878116808a52600460205260408a20805491969295929060001983146106c557826118d59694928d92600161066698960190556040519160208301937f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d6855260408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e0815261062a81612018565b16036106805761067d926129b4565b5034610308576020366003190112610308576020906040906001600160a01b0361190c611e07565b168152601883522054604051908152f35b5034610308578060031936011261030857602060245460801c604051908152f35b50346103085760403660031901126103085760043560098110156110af57611964611e80565b6008549091906001600160a01b03163303611a1a5760ff61198482611ede565b541615159115159182146119e057808260ff6119a26119d094611ede565b54161515827feeec81de25875ce1725479bb76f720a8defdb43dea041919ae37bb4aae9847c08780a4611ede565b9060ff8019835416911617905580f35b60405162461bcd60e51b81526020600482015260126024820152714d61726b65743a2073616d6520737461746560701b6044820152606490fd5b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881d5b985d5d1a1bdc9a5e995960621b6044820152606490fd5b503461030857604036600319011261030857611171611a73611e07565b6024359033612a02565b503461030857606036600319011261030857611a97611e07565b611a9f611e80565b6044359081151582036110ab5760018060a01b03928391611ac58360055416331461208b565b15611b69571690811590811591611b61575b5015611b2457806005549283167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08580a36001600160a01b03199182161760055560068054909116905580f35b60405162461bcd60e51b81526020600482015260156024820152744f776e61626c653a207a65726f206164647265737360581b6044820152606490fd5b905038611ad7565b9150501660018060a01b0319600654161760065580f35b5034610308578060031936011261030857808060018060a01b03600b541660405160208101906306fdde0360e01b825260048152611bbd81611ffd565b51915afa611bc9612fa7565b915015611c2657611bdc61033d9161302e565b610e576034604051809373546170696f63612053696e67756c61726974792d60601b6020830152611c168151809260208686019101611e38565b810103601481018452018261204f565b5061033d611c32612fd7565b611bdc565b5034610308578060031936011261030857600f546040805163d6d7d52560e01b8152602060048201529182906001600160a01b0316818581611c7b60248201611f47565b03925af18015611db45782918391611d74575b508115611d15578015611cd957807f9f9192b5edb17356c524e08d9e025c8e2f6307e6ea52fb7968faa3081f51c3c86040948260115580a25b42601355825191151582526020820152f35b60405162461bcd60e51b81526020600482015260146024820152734d61726b65743a20696e76616c6964207261746560601b6044820152606490fd5b509050611d276013546012549061217a565b4211611d3857604090601154611cc7565b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881c985d19481d1bdbc81bdb1960621b6044820152606490fd5b9150506040813d604011611dac575b81611d906040938361204f565b810103126110af576020611da382612418565b91015138611c8e565b3d9150611d83565b6040513d84823e3d90fd5b9050346110af5760403660031901126110af576040602092611ddf611e07565b611de7611e22565b6001600160a01b0391821683526003865283832091168252845220548152f35b600435906001600160a01b0382168203611e1d57565b600080fd5b602435906001600160a01b0382168203611e1d57565b60005b838110611e4b5750506000910152565b8181015183820152602001611e3b565b90602091611e7481518092818552858086019101611e38565b601f01601f1916010190565b602435908115158203611e1d57565b60e0906003190112611e1d576001600160a01b03906004358281168103611e1d57916024359081168103611e1d5790604435906064359060843560ff81168103611e1d579060a4359060c43590565b6009811015611ef7576000526007602052604060002090565b634e487b7160e01b600052602160045260246000fd5b90600182811c92168015611f3d575b6020831014611f2757565b634e487b7160e01b600052602260045260246000fd5b91607f1691611f1c565b60105460009291611f5782611f0d565b908181526001928381169081600014611fb15750600114611f7757505050565b9092935060106000526020928360002092846000945b838610611f9d5750505050010190565b805485870183015294019385908201611f8d565b91935050602093945060ff191683830152151560051b010190565b606081019081106001600160401b03821117611fe757604052565b634e487b7160e01b600052604160045260246000fd5b604081019081106001600160401b03821117611fe757604052565b61010081019081106001600160401b03821117611fe757604052565b608081019081106001600160401b03821117611fe757604052565b90601f801991011681019081106001600160401b03821117611fe757604052565b6001600160401b038111611fe757601f01601f191660200190565b1561209257565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b156120dd57565b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881b9bdd081d985b1a59607a1b6044820152606490fd5b8181029291811591840414171561212957565b634e487b7160e01b600052601160045260246000fd5b8115612149570490565b634e487b7160e01b600052601260045260246000fd5b604d811161212957600a0a90565b9190820391821161212957565b9190820180921161212957565b8181039291600013801582851316918412161761212957565b6014549192916121e9916121da916121d0916121c6906001600160801b03831690612116565b9060801c9061213f565b93601f5490612116565b6121e38361215f565b9061213f565b8083106122b1576121fd612239918461216d565b9161223461222e612225601e5461221f6122168661215f565b6020549061217a565b90612116565b6121e38461215f565b9161215f565b612187565b6509184e72a0009081810291818305149015171561212957670de0b6b3a76400009182810292818405149015171561212957801561214957600160ff1b9180831460001983141661212957059060008212156122aa57811461212957600003905b8082116122a5575090565b905090565b509061229a565b505050600090565b9160018060a01b03809316916000938385526020601781526040918287205490811561240b57878385516122ec81611ffd565b82815201526122f9612add565b505050505091905061230c861515612425565b6009541683600c54898b52601882526064878c2054918851948593849263442c159960e01b8452600484015260248301528d60448301525afa9081156124015789916123ce575b50916123ae6123c297989994926123898861238461237b601898620186a06021540490612116565b601e5490612116565b61213f565b815190936001600160801b039186916123a491841690612116565b920151169061213f565b8181106123c657035b978352522054612471565b9091565b5050826123b7565b90508381813d83116123fa575b6123e5818361204f565b810103126123f657516123ae612353565b8880fd5b503d6123db565b85513d8b823e3d90fd5b5086955085949350505050565b51908115158203611e1d57565b1561242c57565b60405162461bcd60e51b815260206004820152601e60248201527f4d61726b65743a2065786368616e676552617465206e6f742076616c696400006044820152606490fd5b61247c821515612425565b602060018060a01b0360095416916064600c54604051948593849263442c159960e01b845260048401526024830152600060448301525afa90811561251c576000916124e9575b50906123846124d59260215490612116565b620186a06124e5601e5483612116565b0491565b906020823d8211612514575b816125026020938361204f565b810103126103085750516123846124c3565b3d91506124f5565b6040513d6000823e3d90fd5b6001600160a01b0316600081815260186020526040812054909261254b91612471565b91835260176020526040832054801561265457811561265457818110612654578281101561264a57601454612594918391610cfd916121c6906001600160801b03831690612116565b90620186a09283830292808404851490151715612636576125b992916121e39161216d565b91601b5491601c54936125cc8585612187565b80820291848212600160ff1b821416612636578183051490151715612622570581848201948512911290801582169115161761260e57508082126122a5575090565b634e487b7160e01b81526011600452602490fd5b634e487b7160e01b83526011600452602483fd5b634e487b7160e01b85526011600452602485fd5b50505050601b5490565b50505090565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316148061275b575b156126b5577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f000000000000000000000000000000000000000000000000000000000000000082527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a0815260c081018181106001600160401b03821117611fe75760405251902090565b507f0000000000000000000000000000000000000000000000000000000000000000461461268c565b1561278b57565b60405162461bcd60e51b815260206004820152601660248201527545524332303a2062616c616e636520746f6f206c6f7760501b6044820152606490fd5b156127d057565b60405162461bcd60e51b815260206004820152601660248201527545524332303a206e6f207a65726f206164647265737360501b6044820152606490fd5b51906001600160a01b0382168203611e1d57565b519060ff82168203611e1d57565b6005811015611ef757806128415750565b600181036128895760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b6044820152606490fd5b600281036128d65760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606490fd5b6003146128df57565b60405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608490fd5b9291906fa2a8918ca85bafe22016d0b997e4df60600160ff1b0383116129a85791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa1561299b5781516001600160a01b03811615612995579190565b50600190565b50604051903d90823e3d90fd5b50505050600090600390565b7fe50de2333c10a9502fcb1d8ae13a51bbf423153dfc63c2b8997665b32154afc360018060a01b038092169160009083825260036020526040822094169384825260205284604082205580a4565b909160207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259160018060a01b03809416938460005260028352604060002095169485600052825280604060002055604051908152a3565b60405190612a6682611fcc565b60006040838281528260208201520152565b60405190612a8582611ffd565b6014546001600160801b038116835260801c6020830152565b60405190612aab82611ffd565b6024546001600160801b038116835260801c6020830152565b6001600160801b03918216908216019190821161212957565b612ae5612a59565b5060006020604051612af681611ffd565b828152015260006020604051612b0b81611ffd565b8281520152604051612b1c81611fcc565b6023546001600160401b03811682526001600160401b038160401c16602083015260801c60408201528091612b4f612a78565b91612b58612a9e565b600954600e54825160405163442c159960e01b8152600481018390526001600160801b03909116602482015260006044820181905293959194919391926001600160a01b031690602081606481855afa801561251c57600090612f73575b8851612bcc92506001600160801b03169061217a565b80612f3e575060005b80612bed6001600160401b036020870151164261216d565b948515612f14575050426001600160401b031660208a8101919091528801516001600160801b031615612eca57506020670de0b6b3a7640000612c4f85612c4a8c6001600160401b038d60018060801b0390511691511690612116565b612116565b895191900496906001600160801b0390612c6e90828a16908316612ac4565b168952875160405163442c159960e01b815260048101929092526001600160801b031660248201526000604482015291829060649082905afa801561251c57600090612e96575b8751612ccb92506001600160801b03169061217a565b92612cf984612384620186a0612ce3601a548a612116565b60208c01516001600160801b0316919004612116565b6040890180519195916001600160801b038088169291612d1c9084908316612ac4565b16905260208801805190916001600160801b0391612d3c91908316612ac4565b16905280612e61575060005b60295490938482811015612ddc57612d60908361216d565b90670de0b6b3a7640000820291808304670de0b6b3a7640000149015171561212957612384612db4612dae612da06001600160401b0396612dbe9661213f565b93612c4a602d549580612116565b8361217a565b91848d5116612116565b168089526001600160401b03602c5416809110612dd85750565b8852565b909150602a54808211612dee57505050565b612df79161216d565b670de0b6b3a7640000810290808204670de0b6b3a76400001490151715612129576001600160401b0391612384612e3a612dae612da0612e4395602b549061213f565b848d5116612116565b81602c5460401c16808211612e59575b50168852565b905038612e53565b87516001600160801b0316670de0b6b3a764000081810292918084049091149015171561212957612e919161213f565b612d48565b506020813d602011612ec2575b81612eb06020938361204f565b81010312611e1d57612ccb9051612cb5565b3d9150612ea3565b9697939450509350506001600160401b038151166001600160401b03602e5416809103612f08575b509392612efd612a9e565b926000926000929190565b81526001925038612ef2565b975098505050505092505091612f28612a78565b91612f31612a9e565b9160009160009190600090565b87516001600160801b0316670de0b6b3a764000081810292918084049091149015171561212957612f6e9161213f565b612bd5565b506020813d602011612f9f575b81612f8d6020938361204f565b81010312611e1d57612bcc9051612bb6565b3d9150612f80565b3d15612fd2573d90612fb882612070565b91612fc6604051938461204f565b82523d6000602084013e565b606090565b60405190612fe482611ffd565b60038252623f3f3f60e81b6020830152565b908151811015613007570160200190565b634e487b7160e01b600052603260045260246000fd5b60ff1660ff81146121295760010190565b8051604081106130a957508051810190602081818401930312611e1d576020810151906001600160401b038211611e1d570181603f82011215611e1d57602081015161307981612070565b92613087604051948561204f565b81845260408284010111611e1d576130a6916040602085019101611e38565b90565b602092908303613197576000805b60ff81168581109081613178575b50156130d9576130d49061301d565b6130b7565b9260ff809416926130e984612070565b936130f7604051958661204f565b808552613106601f1991612070565b013687860137825b8581168781108061315b575b156131505761314b91906131456001600160f81b031961313a8388612ff6565b5116871a9188612ff6565b5361301d565b61310e565b505094505050905090565b506001600160f81b031961316f8286612ff6565b5116151561311a565b6001600160f81b0319915061318d9086612ff6565b51161515386130c5565b9150506130a6612fd756feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa26469706673582212209cb35f7a6fa2711bdb911fbb1801dbf316a9429fa6646759b4239276fd4f8da564736f6c63430008120033"; type SGLLendingCommonConstructorParams = | [signer?: Signer] diff --git a/src/typechain/tapioca-bar/factories/markets/singularity/SGLLeverage__factory.ts b/src/typechain/tapioca-bar/factories/markets/singularity/SGLLeverage__factory.ts index e7e94603..c688396d 100644 --- a/src/typechain/tapioca-bar/factories/markets/singularity/SGLLeverage__factory.ts +++ b/src/typechain/tapioca-bar/factories/markets/singularity/SGLLeverage__factory.ts @@ -1850,11 +1850,6 @@ const _abi = [ }, { inputs: [ - { - internalType: "uint256", - name: "_borrowOpeningFee", - type: "uint256", - }, { internalType: "contract IOracle", name: "_oracle", @@ -2183,7 +2178,7 @@ const _abi = [ ] as const; const _bytecode = - "0x6101408060405234620001e5576200001781620001ea565b601381526001602082017f546170696f63612053696e67756c617269747900000000000000000000000000815260206040516200005481620001ea565b8381520192603160f81b845251902091208160e052610100918183524660a0526040519160208301907f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f92838352604085015260608401524660808401523060a084015260a0835260c083019280841060018060401b03851117620001cf5760408490525190206080523060c052610120908152600580546001600160a01b0319163390811790915560007f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a362013880601b5562015f90601c55612710601d556032602055612ee06021557f0bd4060688a1800ae986e4840aebc924bb40b5bf44de4583df2257220b54b77c6027557f7d1dc38e60930664f8cbf495da6556ca091d2f92d6550877750c049864b182306028556161a86029556154339283620002078439608051836139fe015260a05183613ac9015260c051836139c8015260e05183613a4d01525182613a7301525181613a2a0152f35b634e487b7160e01b600052604160045260246000fd5b600080fd5b604081019081106001600160401b03821117620001cf5760405256fe608080604052600436101561001357600080fd5b600090813560e01c908162a02a2014612f315750806302ce728f14612f0857806306fdde0314612e51578063078dfbe714612d52578063095ea7b314612d2b5780630996efb7146128a85780630c4e84f01461279057806318160ddd1461276f5780631c9e379b146127365780631da8bf10146126815780631ee9c8f21461221757806323b872dd146120745780632a9399d914611c60578063313ce56714611c2c578063331960ff14611c0e57806334d441d014611bf05780633644e51514611bd557806337b6b7b914611bb757806338d52e0f14611b8e5780633ba0b9a914611b705780633f741adb14611b4b57806340626d8b14611b2d57806344de240a14611b0f578063473e3ce714611af157806348e4163e14611ab85780634d7f2a3414611a9a5780634e71e0c8146119ec578063529898f2146119ce57806352f353eb146119a7578063551402321461198057806355c2ab9414611956578063579354621461193857806358db9afe146114eb5780635dfe04e81461148c5780636c3d8b8f1461146357806370a082311461142a57806372778547146113f257806374645ff3146113245780637dc0d1d0146112fb5780637ecebe00146112c25780637fa0b84e14611290578063821226e8146112725780638285ef40146112405780638c5d0ed3146112225780638da5cb5b146111f9578063910dd7c814610f80578063959916dc14610f6357806395d89b4114610ea957806399a9702814610e795780639c5d719214610e5b5780639e15e89f14610e20578063a9059cbb14610d3d578063b0e21e8a14610d1f578063b27c0e7414610ce4578063bb4cfe3b14610cc6578063ce8849ed14610c9d578063d49dffa714610651578063d505accf146104cb578063d8dfeb45146104a2578063dd62ed3e14610453578063de4065771461042a578063e0996cb61461040c578063e30c3978146103e3578063ea64dd56146103c5578063eec0f42e146103a7578063f42760b714610389578063f8ba4cff1461036d578063f9557ccb146103375763ffe04c661461031757600080fd5b346103345780600319360112610334576020602a54604051908152f35b80fd5b5034610334578060031936011261033457602554604080516001600160801b038316815260809290921c602083015290f35b0390f35b503461033457806003193601126103345761038661432f565b80f35b50346103345780600319360112610334576020602b54604051908152f35b50346103345780600319360112610334576020600c54604051908152f35b50346103345780600319360112610334576020601f54604051908152f35b50346103345780600319360112610334576006546040516001600160a01b039091168152602090f35b50346103345780600319360112610334576020601d54604051908152f35b50346103345780600319360112610334576009546040516001600160a01b039091168152602090f35b50346103345760403660031901126103345761046d612f79565b6040610477612f8f565b9260018060a01b03809316815260026020522091166000526020526020604060002054604051908152f35b5034610334578060031936011261033457600b546040516001600160a01b039091168152602090f35b5034610334576104da36613062565b9083959495421161060c576105b8916105b09160018060a01b0394858a169687600052600460205260406000209081549161051483613d12565b90556040519060208201927f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e2668452600060408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e0815261057481613194565b51902061057f6139c5565b9060405190602082019261190160f01b845260228301526042820152604281526105a881613179565b519020613c9a565b919091613b9b565b16036105c75761038692613d6f565b60405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152606490fd5b60405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b5061014036600319011261033457610667612f79565b606435151560643503610a5f576001600160401b038060843511610c9957606060843536036003190112610c995760a43511610a505760e060a43536036003190112610a505760803660c3190112610a5057600560005260076020527fbcdda56b5d08466ec462cbbe0adfa57cb0a15fcc8940ef68f702f21b787bc935546106f29060ff1615614452565b6106fa6134de565b505061070461432f565b6107196001600160a01b0382163014156144cf565b610727604460a4350161451a565b60c4356001600160a01b0381169003610a5f5761074a61074f9160c43590614893565b614529565b60243580610afd575b506107da6107ac6107d46107ce6107b2620186a061077a602054604435613286565b0461078a601154916044356132ea565b600d5460ff906107a2906001600160a01b0316614633565b1695869289613722565b90614799565b6001600160a01b03861687526018602052604087205490613286565b916132cf565b906132af565b336001600160a01b03831603610aa9575b6107f590826147dc565b610836604061080760443584806149c3565b905060018060a01b0360095416600e548684518096819582946311a5cc7760e31b84528a309160048601614582565b03925af1908115610a9e578391610a6e575b50600d546001600160a01b03169060643515610a6857475b823b15610a645760405191633cb7ea1d60e11b8352600483015260018060a01b0384166024830152610100604483015260a4356004013561010483015261ffff6108ae602460a435016131ec565b1661012483015261ffff6108c6604460a435016131ec565b166101448301526001600160a01b036108e360a435606401612fbb565b166101648301526109af61094161091a610907608460a4350160a4356004016145b1565b60e06101848801526101e48701916145e2565b61092d60a480350160a4356004016145b1565b86830361010319016101a4880152906145e2565b6001600160a01b0361095760a43560c401612fbb565b166101c4850152838103600319016064850152606061099f6004608435016001600160a01b0361098682612fbb565b16845260843560248101356020860152604401906145b1565b91909281604082015201916145e2565b6001600160a01b0360c4358116608485015290939060e43590811690819003610a5f5760a4840152610104356001600160a01b03811690819003610a5f5760c4840152610124356001600160a01b0381169190829003610a5f5783879593818795819560e483015203925af18015610a5457610a3c575b50610386610a3783601154906146a1565b61448f565b610a459061311a565b610a50578138610a26565b5080fd5b6040513d84823e3d90fd5b600080fd5b8480fd5b34610860565b610a90915060403d604011610a97575b610a8881836131b0565b81019061456c565b5038610848565b503d610a7e565b6040513d85823e3d90fd5b806107eb5760405162461bcd60e51b815260206004820152602160248201527f42696742616e673a20616c6c6f77616e63655368617265206e6f742076616c696044820152601960fa1b6064820152608490fd5b602060018060a01b0360095416916064600c546040519485938492638eb22cdd60e01b8452600484015260248301528760448301525afa908115610a9e578391610c67575b50610b4d81836147dc565b8015610bdb575b60018060a01b03821660005260186020526040600020610b758282546132ea565b9055610b83816015546132ea565b60155560018060a01b038216600052602660205260406000206028546000526020526040600020610bb58282546132ea565b90556001600160a01b038216806000805160206153be833981519152600080a438610758565b5060018060a01b03600954166020600c54606460405180948193638eb22cdd60e01b8352600483015260006024830152600060448301525afa908115610c5b57600091610c29575b50610b54565b906020823d602011610c53575b81610c43602093836131b0565b8101031261033457505138610c23565b3d9150610c36565b6040513d6000823e3d90fd5b90506020813d602011610c91575b81610c82602093836131b0565b81010312610a5f575138610b42565b3d9150610c75565b8280fd5b50346103345780600319360112610334576008546040516001600160a01b039091168152602090f35b50346103345780600319360112610334576020601e54604051908152f35b50346103345780600319360112610334576060602454604051906001600160401b0380821683528160401c16602083015260801c6040820152f35b50346103345780600319360112610334576020601a54604051908152f35b503461033457604036600319011261033457610d57612f79565b60243580928115801590610e0e575b610d9e575b50506040519182526001600160a01b03169033906000805160206153de83398151915290602090a3602060405160018152f35b33815260016020526040812054610db783821015613aef565b6001600160a01b0384169033829003610dd2575b5050610d6b565b604093610de991610de4841515613b34565b6132dd565b338352600160205283832055815220610e038382546132ea565b905581388080610dcb565b50336001600160a01b03841614610d66565b5034610334576040366003190112610334576060610e48610e3f612f79565b6024359061341d565b9060405192835260208301526040820152f35b50346103345780600319360112610334576020602c54604051908152f35b5034610334576040366003190112610334576020610ea1610e98612f79565b60243590613893565b604051908152f35b5034610334578060031936011261033457808060018060a01b03600b541660405160208101906395d89b4160e01b825260048152610ee68161315e565b51915afa610ef2614603565b915015610f5257610f056103699161524c565b610f3e6023604051809362746d2d60e81b6020830152610f2e8151809260208686019101612fcf565b81010360038101845201826131b0565b604051918291602083526020830190612ff2565b50610369610f5e6151f5565b610f05565b503461033457806003193601126103345760208054604051908152f35b5034610334576040366003190112610334576004356001600160401b038111610a505736602382011215610a5057806004013590610fbd826131d1565b90610fcb60405192836131b0565b82825283602091828401943660248284010111610c99578060248593018737840101526024359061ffff8216809203610a5f576101009384848051810103126111f557611017906134d1565b9061102460408501613b79565b61103060608601613b79565b9560808601519560a08101519161104960c08301613b8d565b9060e08301519201519260018060a01b03808096169a16978142116111b057926105b09289888d989794611127978e8d600014611189577f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e266945b8c600052600485526040600020928354936110bd85613d12565b905560405195860196875260408601528c6060860152608085015260a084015260c083015260e082015260e081526110f481613194565b5190206110ff6139c5565b90604051908a82019261190160f01b845260228301526042820152604281526105a881613179565b160361114557501561113c5761038692613d6f565b61038692613d21565b6064906040519062461bcd60e51b82526004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152fd5b7f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d6946110a3565b60405162461bcd60e51b815260048101889052601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b8580fd5b50346103345780600319360112610334576005546040516001600160a01b039091168152602090f35b50346103345780600319360112610334576020601b54604051908152f35b5034610334578060031936011261033457601454604080516001600160801b038316815260809290921c602083015290f35b50346103345780600319360112610334576020602e54604051908152f35b5034610334576040366003190112610334576112b76112ad612f79565b6024359033613d21565b602060405160018152f35b5034610334576020366003190112610334576020906040906001600160a01b036112ea612f79565b168152600483522054604051908152f35b5034610334578060031936011261033457600f546040516001600160a01b039091168152602090f35b5034610334578060031936011261033457604051600090601054611347816130e0565b8083526001918083169081156113ca5750600114611370575b61036983610f3e818703826131b0565b6010600090815260209450917f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae6725b8284106113b757505050810190910190610f3e81611360565b805485850187015292850192810161139e565b6103699550610f3e93506020915091849260ff191682840152151560051b8201019350611360565b50346103345760203660031901126103345760043590600982101561033457602060ff61141e846130b1565b54166040519015158152f35b5034610334576020366003190112610334576020906040906001600160a01b03611452612f79565b168152600183522054604051908152f35b5034610334578060031936011261033457600a546040516001600160a01b039091168152602090f35b50346103345780600319360112610334576114a5613dc6565b5060806114b0613e4a565b509350505050604051916001600160401b0380825116845260208201511660208401526040600180861b039101511660408301526060820152f35b50346103345760a036600319011261033457611505612f79565b60243590611511612fa5565b906084356001600160401b038111610a6457611531903690600401613035565b93909460066000526020956007875261155260ff6040600020541615614452565b61155a6134de565b505061156461432f565b6001600160a01b03848116959093600491611581308914156144cf565b8986600a54166040519485809263433e762d60e01b82525afa92831561192d5790869186946118f4575b506115bc9161074a91168094614893565b6115c681876147dc565b600087815260188a52604081206115de8382546132dd565b90556115ec826015546132dd565b6015558560095416600c54813b15610c99578361162492849283604051809681958294630208d92960e11b84528c3060048601614980565b03925af18015610a54576118e5575b508183897f8ad4d3ff00da092c7ad9a573ea4f5f6a3dffc6712dc06d3f78f49b862297c4028480a487815260268a5260408120602854908183528b52604082205483116000146118bf575087815260268a526040812060285482528a5260408120555b600c54600e54604051633d9545e960e11b81526004810192909252602482015260006044820152606481019190915260016084820181905260a48201526101408160c481855afa9081156118b45784604094939288928291611883575b5061171786519b8c968795869463efa84c6d60e01b86526044359060048701614e29565b03925af1938415611876578195829561184f575b5061173a604435871015614ebb565b8152601786526040812054918661175884611753613de5565b614ef9565b9160095416916064600e546040519485938492638eb22cdd60e01b845260048401526024830152600160448301525afa918215611843579161180e575b50610ea193610a37939291116117bb576117b0908280614f57565b505b601154906146a1565b506117c4613de5565b80516001600160801b039081166117e95750506117e3845b8280614f57565b506117b2565b8181611800611809938a6117e39601511689613286565b915116906132af565b6117dc565b929190508583813d831161183c575b61182781836131b0565b81010312610a5f579151909190610ea1611795565b503d61181d565b604051903d90823e3d90fd5b90945061186c91955060403d604011610a9757610a8881836131b0565b949094933861172b565b50604051903d90823e3d90fd5b6118a791506101403d610140116118ad575b61189f81836131b0565b810190614d4e565b386116f3565b503d611895565b6040513d86823e3d90fd5b9060409189825260268c528282209082528b52206118de8282546132dd565b9055611696565b6118ee9061311a565b38611633565b61074a9194509161191d6115bc938d803d10611926575b61191581836131b0565b810190614d34565b949150916115ab565b503d61190b565b6040513d87823e3d90fd5b50346103345780600319360112610334576020601c54604051908152f35b503461033457806003193601126103345760206001600160401b03602d5460401c16604051908152f35b503461033457806003193601126103345760206001600160401b03602d5416604051908152f35b503461033457806003193601126103345760206001600160401b03602f5416604051908152f35b50346103345780600319360112610334576020602154604051908152f35b50346103345780600319360112610334576006546001600160a01b039081811633819003611a5657806005549384167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08680a36001600160a01b0319928316176005551660065580f35b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b50346103345780600319360112610334576020602954604051908152f35b5034610334576020366003190112610334576020906040906001600160a01b03611ae0612f79565b168152601783522054604051908152f35b50346103345780600319360112610334576020601554604051908152f35b50346103345780600319360112610334576020600e54604051908152f35b50346103345780600319360112610334576020601654604051908152f35b5034610334576060366003190112610334576020610ea1604435602435600435613310565b50346103345780600319360112610334576020601154604051908152f35b5034610334578060031936011261033457600d546040516001600160a01b039091168152602090f35b50346103345780600319360112610334576020601254604051908152f35b50346103345780600319360112610334576020610ea16139c5565b50346103345780600319360112610334576020601954604051908152f35b50346103345780600319360112610334576020601354604051908152f35b5034610334578060031936011261033457600d54602090611c55906001600160a01b0316614633565b60ff60405191168152f35b5060031961012036820112610a5057611c77612f79565b90611c80613026565b90606435916001600160401b03908184116111f55760608385360301126111f5576084359182116111f55760e08383360301126111f55760803660a31901126111f557600660005260209060078252611ce160ff6040600020541615614452565b611ce96134de565b5050611cf361432f565b6001600160a01b0386811693909290611d0e308614156144cf565b6044810191611d1c8361451a565b9760a435868116998a8203610a5f57611d389161074a91614893565b856009541697828c6064600c546040519c8d938492638eb22cdd60e01b84526004840152602435602484015260448301525afa98891561200e578b908d9a612041575b5089611d8c611e469b6040936147dc565b896000526018855281600020611da38282546132dd565b9055611db1816015546132dd565b60155580308b7f8ad4d3ff00da092c7ad9a573ea4f5f6a3dffc6712dc06d3f78f49b862297c402600080a48960005260268552816000206028549081600052865282600020548211600014612019575089600052602685528160002060285460005285526000828120555b8d896009541690600c54908451809e819582946311a5cc7760e31b84523090309060048601614582565b03925af198891561200e578c99611fec575b50600b5487169515611fe55747975b863b15611fe15760405199633cb7ea1d60e11b8b5260048b015260248a01526044890161010090528684600401610104968135888d015261ffff908c8260248a01611eb1906131ec565b16906101240152611ec1906131ec565b166101448c015281611ed560648801612fbb565b166101648c0152611ee960848701826145b1565b6101848d0160e090526101e48d0190611f01926145e2565b9060a48701611f0f916145b1565b8c830361010319016101a48e0152611f2792916145e2565b9460c401611f3490612fbb565b166101c48a0152888403016064890152806004019186611f5384612fbb565b168452602482013590840152604401611f6b916145b1565b606060408401819052611f7f9301916145e2565b95608486015260c435838116809103610a5f5760a486015260e435838116809103610a5f5760c486015235918216809203610a5f5783879593818795819560e483015203925af18015610a5457610a3c5750610386610a3783601154906146a1565b8c80fd5b3497611e67565b61200691995060403d604011610a9757610a8881836131b0565b509738611e58565b6040513d8e823e3d90fd5b8a60005260268652826000209060005285528160002061203a8282546132dd565b9055611e1c565b809a50848092503d831161206d575b61205a81836131b0565b81010312610a5f579751978a6040611d7b565b503d612050565b50346103345760603660031901126103345761208e612f79565b90612097612f8f565b60443591826120d5575b506040519182526001600160a01b039081169216906000805160206153de83398151915290602090a3602060405160018152f35b6001600160a01b038481168083526001602090815260408420549286906120fe82861015613aef565b861693848403612113575b50505050506120a1565b83865260028352604086203360005283526040600020546000198103612181575b509260016020969361215f8794604097610de46000805160206153de8339815191529c9a1515613b34565b92855252838320558152206121758582546132ea565b90559138808581612109565b909181106121d7579260016020969361215f8a6000805160206153de8339815191529a98956121b28260409a6132dd565b8689526002855289892033600052855289600020559497509497995050939650612134565b60405162461bcd60e51b815260048101849052601860248201527745524332303a20616c6c6f77616e636520746f6f206c6f7760401b6044820152606490fd5b50346103345760c036600319011261033457612231612f79565b60643591906001600160a01b03608435818116929083900361267d5760a4356001600160401b038111610a645761226c903690600401613035565b9093600586526020966007885261228a60ff60408920541615614452565b6122926134de565b505061229c61432f565b848416916122ac308414156144cf565b60048987600a54166040519283809263433e762d60e01b82525afa90811561267257826122e49261074a928c91612655575b50614893565b856009541693600e549060405191638eb22cdd60e01b968784528160048501526044356024850152600160448501528c84606481845afa93841561200e578c94612626575b50836125cc575b5050612399612342602435858a6149c3565b9050612354600e5491600c54956132ea565b60405180938192633d9545e960e11b83526101409788956004850160a091949360019360c0830196835260208301526000604083015260608201528260808201520152565b0381875afa9283156125c15788936040959387938e93849361259c575b50506123d89087519d8e978896879563efa84c6d60e01b875260048701614e29565b03925af1958615612591578796612568575b506123f790871015614ebb565b61240185846147dc565b8491600095156124f8575b5080855260188752604085206124238382546132ea565b9055612431826015546132ea565b601555600c54948460095416803b15610a5f578360009161246b9883604051809b81958294630208d92960e11b8452308d60048601614980565b03925af1948515610c5b57610ea196610a37966124d6575b506000805160206153be8339815191529083835260268a526040832060285484528a52604083206124b58682546132ea565b905582156124d05780600954165b169180a4601154906146a1565b856124c3565b6124e191925061311a565b6000906000805160206153be833981519152612483565b909150868460095416916064600c54916040519485938492835260048301528960248301528960448301525afa90811561192d57859161253b575b50903861240c565b90508681813d8311612561575b61255281836131b0565b81010312610a64575138612533565b503d612548565b6123f7975061258791965060403d604011610a9757610a8881836131b0565b96909695906123ea565b6040513d89823e3d90fd5b6123d892935090816125b992903d106118ad5761189f81836131b0565b9190386123b6565b6040513d8d823e3d90fd5b803b156126225783918c9186838c6125fa60405197889687958694630208d92960e11b865260048601614980565b03925af180156125c15761260f575b80612330565b61261b909a919a61311a565b9838612609565b8b80fd5b9093508c81813d831161264e575b61263e81836131b0565b8101031261262257519238612329565b503d612634565b61266c91508d803d106119265761191581836131b0565b386122de565b6040513d8b823e3d90fd5b8380fd5b50346103345761269036613062565b9083959495421161060c57612727916105b09160018060a01b03948a868b1697888252600460205260408220908154916126c983613d12565b90556040519160208301937f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d6855260408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e0815261057481613194565b16036105c75761038692613d21565b5034610334576020366003190112610334576020906040906001600160a01b0361275e612f79565b168152601883522054604051908152f35b5034610334578060031936011261033457602060255460801c604051908152f35b5034610334576040366003190112610334576004356009811015610a50576127b6613017565b6008549091906001600160a01b0316330361286c5760ff6127d6826130b1565b5416151591151591821461283257808260ff6127f4612822946130b1565b54161515827feeec81de25875ce1725479bb76f720a8defdb43dea041919ae37bb4aae9847c08780a46130b1565b9060ff8019835416911617905580f35b60405162461bcd60e51b81526020600482015260126024820152714d61726b65743a2073616d6520737461746560701b6044820152606490fd5b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881d5b985d5d1a1bdc9a5e995960621b6044820152606490fd5b503461033457610180366003190112610334576001600160a01b0360243581811690819003610c99576001600160401b0391604435838111610a64576128f382913690600401613035565b6128fb612fa5565b9161290b846005541633146131fb565b60043596620186a096612920888a1115613246565b602098808a547fc353b09af857951dccce61b43a5854fc45beceed36c50e5d4cc2e71858a8e0df8d80a3895580612ced575b5082612b94575b505050169081612b54575b505060843580612b3f575b5060a43580612b2a575b5060c43580612b16575b5060e43580612af5575b506101043580612ad4575b506101243580612aa3575b50610144359081612a31575b50506101643590816129bf578280f35b601e5482106129d25750601f5538808280f35b6084906040519062461bcd60e51b82526004820152603260248201527f4d61726b65743a206c69717569646174696f6e436f6c6c61746572616c697a616044820152711d1a5bdb94985d19481d1bdbc81cdb585b1b60721b6064820152fd5b612a3d90821115613246565b601f548111612a5057601e5538806129af565b60405162461bcd60e51b815260048101839052602560248201527f4d61726b65743a20636f6c6c61746572616c697a6174696f6e5261746520746f6044820152646f2062696760d81b6064820152608490fd5b806016547fae6e0ab3b95f0a53ff9660a390ccedcbbf1f2355dce974a9841af106fddcfaba8680a3601655386129a3565b612adf828210613246565b612aec601b548211613246565b601c5538612998565b612b00828210613246565b612b0d601c548210613246565b601b553861298d565b612b21828210613246565b601d5538612983565b612b3682821115613246565b601a5538612979565b612b4b82821115613246565b6019553861296f565b816008549182167f5a62d22209e370e38eea92cfddcd228e656e6ec139243392a760a7769f5877fd8780a36001600160a01b031916176008553880612964565b90918093945011612cd95790839291612bae6010546130e0565b601f8111612c8b575b508790601f8311600114612c1b5788919083612c10575b50508160011b916000199060031b1c1916176010555b7fa6f004921c944d4b8bf6e38462b00f36a58d62495d56b51f571ab78f732c98158680a1388080612959565b013590503880612bce565b6010899594939295528789209089955b89601f1985168810612c72575060019495965083601f19811610612c58575b505050811b01601055612be4565b0135600019600384901b60f8161c19169055388080612c4a565b8183013584559687019688965060019093019201612c2b565b909192935060108852868820601f840160051c8101888510612cd2575b90601f87969594930160051c01905b818110612cc45750612bb7565b898155869550600101612cb7565b5080612ca8565b634e487b7160e01b87526041600452602487fd5b600f80546001600160a01b0319169190911790557f0b2d6eb667d0522c3eb86e4288afecae6c11591ffd1345d4d12407e0598bca9b8980a138612952565b5034610334576040366003190112610334576112b7612d48612f79565b6024359033613d6f565b503461033457606036600319011261033457612d6c612f79565b612d74613017565b612d7c613026565b9060018060a01b03928391612d96836005541633146131fb565b15612e3a571690811590811591612e32575b5015612df557806005549283167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08580a36001600160a01b03199182161760055560068054909116905580f35b60405162461bcd60e51b81526020600482015260156024820152744f776e61626c653a207a65726f206164647265737360581b6044820152606490fd5b905038612da8565b9150501660018060a01b0319600654161760065580f35b5034610334578060031936011261033457808060018060a01b03600b541660405160208101906306fdde0360e01b825260048152612e8e8161315e565b51915afa612e9a614603565b915015612ef757612ead6103699161524c565b610f3e6034604051809373546170696f63612053696e67756c61726974792d60601b6020830152612ee78151809260208686019101612fcf565b81010360148101845201826131b0565b50610369612f036151f5565b612ead565b50346103345780600319360112610334576040612f236134de565b825191151582526020820152f35b905034610a50576040366003190112610a50576040602092612f51612f79565b612f59612f8f565b6001600160a01b0391821683526003865283832091168252845220548152f35b600435906001600160a01b0382168203610a5f57565b602435906001600160a01b0382168203610a5f57565b606435906001600160a01b0382168203610a5f57565b35906001600160a01b0382168203610a5f57565b60005b838110612fe25750506000910152565b8181015183820152602001612fd2565b9060209161300b81518092818552858086019101612fcf565b601f01601f1916010190565b602435908115158203610a5f57565b604435908115158203610a5f57565b9181601f84011215610a5f578235916001600160401b038311610a5f5760208381860195010111610a5f57565b60e0906003190112610a5f576001600160a01b03906004358281168103610a5f57916024359081168103610a5f5790604435906064359060843560ff81168103610a5f579060a4359060c43590565b60098110156130ca576000526007602052604060002090565b634e487b7160e01b600052602160045260246000fd5b90600182811c92168015613110575b60208310146130fa57565b634e487b7160e01b600052602260045260246000fd5b91607f16916130ef565b6001600160401b03811161312d57604052565b634e487b7160e01b600052604160045260246000fd5b606081019081106001600160401b0382111761312d57604052565b604081019081106001600160401b0382111761312d57604052565b608081019081106001600160401b0382111761312d57604052565b61010081019081106001600160401b0382111761312d57604052565b90601f801991011681019081106001600160401b0382111761312d57604052565b6001600160401b03811161312d57601f01601f191660200190565b359061ffff82168203610a5f57565b1561320257565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b1561324d57565b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881b9bdd081d985b1a59607a1b6044820152606490fd5b8181029291811591840414171561329957565b634e487b7160e01b600052601160045260246000fd5b81156132b9570490565b634e487b7160e01b600052601260045260246000fd5b604d811161329957600a0a90565b9190820391821161329957565b9190820180921161329957565b8181039291600013801582851316918412161761329957565b6014549192916133539161334a9161334091613336906001600160801b03831690613286565b9060801c906132af565b93601f5490613286565b6107d4836132cf565b8083106134155761336761339d91846132dd565b916133986107ce61338f601e54613389613380866132cf565b602154906132ea565b90613286565b6107d4846132cf565b6132f7565b6509184e72a0009081810291818305149015171561329957670de0b6b3a7640000918281029281840514901517156132995780156132b957600160ff1b91808314600019831416613299570590600082121561340e57811461329957600003905b808211613409575090565b905090565b50906133fe565b505050600090565b6001600160a01b0381166000818152601760205260408120549194939290919081156134c557916040916134a16134b99594836020865161345d8161315e565b828152015261347b8661346e613e4a565b5050505050939050613722565b815190936001600160801b039160209161349791841690613286565b92015116906132af565b8181106134bd57035b958152601860205220546137e8565b9091565b5050806134aa565b50509192505080918190565b51908115158203610a5f57565b60018060a01b03600f54169060409081519263d6d7d52560e01b845282846020928360048301526000601054613513816130e0565b908160248601526001908582821691826000146136b257505060011461366e575b5050600083809203925af18015613663576000948591613628575b509284156135ca57831561359057505081601155817f9f9192b5edb17356c524e08d9e025c8e2f6307e6ea52fb7968faa3081f51c3c8600080a25b42601355565b60649250519062461bcd60e51b8252600482015260146024820152734d61726b65743a20696e76616c6964207261746560601b6044820152fd5b909192506135dd601354601254906132ea565b42116135ee5750506011549061358a565b60649250519062461bcd60e51b82526004820152601460248201527313585c9ad95d0e881c985d19481d1bdbc81bdb1960621b6044820152fd5b9490508385813d831161365c575b61364081836131b0565b81010312610334575080613653856134d1565b9401513861354f565b503d613636565b83513d6000823e3d90fd5b915060106000528560002091866000935b83851061369757505050508201604401600083613534565b80548c8601604401528a97508b96509301928790820161367f565b8195506000949193506044925060ff191682840152151560051b8201019250613534565b156136dd57565b60405162461bcd60e51b815260206004820152601e60248201527f4d61726b65743a2065786368616e676552617465206e6f742076616c696400006044820152606490fd5b61372d8215156136d6565b60018060a01b036020816009541691600c5490600094168452601882526064604085205491604051948593849263442c159960e01b8452600484015260248301528660448301525afa9182156118435780926137b0575b5050906137a861379f6137ad93620186a06022540490613286565b601e5490613286565b6132af565b90565b9091506020823d82116137e0575b816137cb602093836131b0565b810103126103345750516137a861379f613784565b3d91506137be565b6137f38215156136d6565b602060018060a01b0360095416916064600c54604051948593849263442c159960e01b845260048401526024830152600060448301525afa908115610c5b57600091613860575b50906137a861384c9260225490613286565b620186a061385c601e5483613286565b0491565b906020823d821161388b575b81613879602093836131b0565b810103126103345750516137a861383a565b3d915061386c565b6001600160a01b031660008181526018602052604081205490926138b6916137e8565b9183526017602052604083205480156139bf5781156139bf578181106139bf57828110156139b5576014546138ff918391610de491613336906001600160801b03831690613286565b90620186a092838302928084048514901517156139a15761392492916107d4916132dd565b91601b5491601c549361393785856132f7565b80820291848212600160ff1b8214166139a157818305149015171561398d57058184820194851291129080158216911516176139795750808212613409575090565b634e487b7160e01b81526011600452602490fd5b634e487b7160e01b83526011600452602483fd5b634e487b7160e01b85526011600452602485fd5b50505050601b5490565b50505090565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03161480613ac6575b15613a20577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f000000000000000000000000000000000000000000000000000000000000000082527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a0815260c081018181106001600160401b0382111761312d5760405251902090565b507f000000000000000000000000000000000000000000000000000000000000000046146139f7565b15613af657565b60405162461bcd60e51b815260206004820152601660248201527545524332303a2062616c616e636520746f6f206c6f7760501b6044820152606490fd5b15613b3b57565b60405162461bcd60e51b815260206004820152601660248201527545524332303a206e6f207a65726f206164647265737360501b6044820152606490fd5b51906001600160a01b0382168203610a5f57565b519060ff82168203610a5f57565b60058110156130ca5780613bac5750565b60018103613bf45760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b6044820152606490fd5b60028103613c415760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606490fd5b600314613c4a57565b60405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608490fd5b9291906fa2a8918ca85bafe22016d0b997e4df60600160ff1b038311613d065791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa156118765781516001600160a01b03811615613d00579190565b50600190565b50505050600090600390565b60001981146132995760010190565b7fe50de2333c10a9502fcb1d8ae13a51bbf423153dfc63c2b8997665b32154afc360018060a01b038092169160009083825260036020526040822094169384825260205284604082205580a4565b909160207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259160018060a01b03809416938460005260028352604060002095169485600052825280604060002055604051908152a3565b60405190613dd382613143565b60006040838281528260208201520152565b60405190613df28261315e565b6014546001600160801b038116835260801c6020830152565b60405190613e188261315e565b6025546001600160801b038116835260801c6020830152565b6001600160801b03918216908216019190821161329957565b613e52613dc6565b5060006020604051613e638161315e565b828152015260006020604051613e788161315e565b828152015260405190613e8a82613143565b602454916001600160401b038316815260208101926001600160401b038160401c16845260801c60408201528092613ec0613de5565b92613ec9613e0b565b92600060018060a01b0360095416600e549460018060801b038751166040519063442c159960e01b8252876004830152602482015260006044820152602081606481865afa8015610c5b576000906142d6575b8951613f3292506001600160801b0316906132ea565b806142a1575060005b613f506001600160401b0382935116426132dd565b948515614277575050426001600160401b031660208a8101919091528801516001600160801b03161561422d57506020670de0b6b3a7640000613fb285613fad8c6001600160401b038d60018060801b0390511691511690613286565b613286565b895191900496906001600160801b0390613fd190828a16908316613e31565b168952875160405163442c159960e01b815260048101929092526001600160801b031660248201526000604482015291829060649082905afa8015610c5b576000906141f9575b875161402e92506001600160801b0316906132ea565b9261405c846137a8620186a0614046601a548a613286565b60208c01516001600160801b0316919004613286565b6040890180519195916001600160801b03808816929161407f9084908316613e31565b16905260208801805190916001600160801b039161409f91908316613e31565b169052806141c4575060005b602a549093848281101561413f576140c390836132dd565b90670de0b6b3a7640000820291808304670de0b6b3a76400001490151715613299576137a86141176141116141036001600160401b0396614121966132af565b93613fad602e549580613286565b836132ea565b91848d5116613286565b168089526001600160401b03602d541680911061413b5750565b8852565b909150602b5480821161415157505050565b61415a916132dd565b670de0b6b3a7640000810290808204670de0b6b3a76400001490151715613299576001600160401b03916137a861419d6141116141036141a695602c54906132af565b848d5116613286565b81602d5460401c168082116141bc575b50168852565b9050386141b6565b87516001600160801b0316670de0b6b3a7640000818102929180840490911490151715613299576141f4916132af565b6140ab565b506020813d602011614225575b81614213602093836131b0565b81010312610a5f5761402e9051614018565b3d9150614206565b9697939450509350506001600160401b038151166001600160401b03602f541680910361426b575b509392614260613e0b565b926000926000929190565b81526001925038614255565b97509850505050509250509161428b613de5565b91614294613e0b565b9160009160009190600090565b88516001600160801b0316670de0b6b3a7640000818102929180840490911490151715613299576142d1916132af565b613f3b565b506020813d602011614302575b816142f0602093836131b0565b81010312610a5f57613f329051613f1c565b3d91506142e3565b601480546001600160801b031660809290921b6001600160801b031916919091179055565b6144166020806143ec614340613e4a565b9396959390929015614418575050506001600160401b03602f54166000807f33af5ce86e8438eff54589f85332916444457dfa8685493fbd579b809097026b88604051838152a45b805185820151604092830151921b67ffffffffffffffff60401b166001600160401b03919091161760809190911b6001600160801b0319908116919091176024558151601480549092166001600160801b039182161790915594859101511661430a565b8051910151821660801b6001600160801b0319166001600160801b03929091169190911617602555565b565b7f33af5ce86e8438eff54589f85332916444457dfa8685493fbd579b809097026b886001600160401b0386511694604051908152a4614388565b1561445957565b60405162461bcd60e51b815260206004820152600e60248201526d13585c9ad95d0e881c185d5cd95960921b6044820152606490fd5b1561449657565b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881a5b9cdbdb1d995b9d607a1b6044820152606490fd5b156144d657565b606460405162461bcd60e51b815260206004820152602060248201527f4d61726b65743a2063616e6e6f742065786563757465206f6e20697473656c666044820152fd5b3561ffff81168103610a5f5790565b1561453057565b60405162461bcd60e51b815260206004820152601460248201527329a3a61d1024b73b30b634b21039bbb0b83832b960611b6044820152606490fd5b9190826040910312610a5f576020825192015190565b9081526001600160a01b0391821660208201529116604082015260006060820152608081019190915260a00190565b9035601e1982360301811215610a5f5701602081359101916001600160401b038211610a5f578136038313610a5f57565b908060209392818452848401376000828201840152601f01601f1916010190565b3d1561462e573d90614614826131d1565b9161462260405193846131b0565b82523d6000602084013e565b606090565b60008091604051602081019063313ce56760e01b8252600481526146568161315e565b51916001600160a01b03165afa61466b614603565b9080614696575b1561469057602081805181010312610a5f5760206137ad9101613b8d565b50601290565b506020815114614672565b919060018060a01b0380600094168452602060178152604085205490811561478f57601881526040862054801561478857816146db613de5565b9460095416916064600c54604051948593849263442c159960e01b8452600484015260248301528b60448301525afa968715611843578097614752575b505061349761473761379f61474d969798620186a06022540490613286565b95613fad60018060801b03948587511690613286565b111590565b9096508187813d8311614781575b61476a81836131b0565b810103126103345750945194613497614737614718565b503d614760565b5050505050565b5060019450505050565b91821580156147d4575b6134155760018101809111613299576147c2926133896137a8926132cf565b6005810180911161329957600a900490565b5081156147a3565b6001600160a01b03163381036147f0575050565b60008181526020906003825260409182822033835281528483832054106148595783825260038152828220338352815282822054600101614832575050505050565b61484d938252600381528282209033835252209182546132dd565b90553880808080614788565b60649083519062461bcd60e51b82526004820152601460248201527313585c9ad95d0e881b9bdd08185c1c1c9bdd995960621b6044820152fd5b600a5460405163dbd01de160e01b815260209290916001600160a01b039084908490600490829085165afa8015610c5b578493600091614942575b50918161ffff936044936040519889968795633a304d8b60e21b8752166004860152166024840152165afa908115610c5b5760009161490e575b50905090565b82813d831161493b575b61492281836131b0565b810103126103345750614934906134d1565b8038614908565b503d614918565b9091929381813d8311614979575b61495a81836131b0565b81010312610a50575190828216820361033457508392919060446148ce565b503d614950565b6001600160a01b039182168152911660208201526040810191909152606081019190915260800190565b6001600160801b03918216908216039190821161329957565b929060208093620186a06149d8835483613286565b04926149e2613de5565b966149ed85846132ea565b60409586516149fb8161315e565b6000808252960186905289516001600160801b0392908316614cd45782614a298c8280855b16915116613e31565b168b52614a6d8a8c0184614a4281851682845116613e31565b16809152614a6885849e511660018060801b031660018060801b03196014541617601455565b61430a565b6016548015908115614cc5575b5015614c8757859060018060a01b0380951680895260178c52898920614aa18382546132ea565b90558951918483528c8301527f3a5151e57d3bc9798e7853034ac52293d1a0e12a2b44725e75b03b21f86477a68a87891693a480614c66575b50878260095416946064600e5489519788938492638eb22cdd60e01b8452600484015260248301528960448301525afa938415614c5c578594614c2d575b508397614b23613e0b565b818101916103e88484511610614bf9575090614b73839283614b4d614b9a968a16828451166149aa565b1690819052602580546001600160801b0319166001600160801b03909216919091179055565b51602580546001600160801b03169290911660801b6001600160801b031916919091179055565b6009541690600e5490823b15610a64579184939184879694614bd2985198899586948593630208d92960e11b85523060048601614980565b03925af1918215614bef575050614be65750565b6144169061311a565b51903d90823e3d90fd5b60649089519062461bcd60e51b82526004820152600e60248201526d14d1d30e881b5a5b881b1a5b5a5d60921b6044820152fd5b9093508781813d8311614c55575b614c4581836131b0565b81010312610a6457519238614b18565b503d614c3b565b86513d87823e3d90fd5b82600a5416865260018952614c7f8787209182546132ea565b905538614ada565b875162461bcd60e51b8152600481018b9052601760248201527614d1d30e88189bdc9c9bddc818d85c081c995858da1959604a1b6044820152606490fd5b90508360145416111538614a7a565b828b8b81019280614d07614cf8614cee8688511684613286565b86865116906132af565b95856118008187511689613286565b10614d19575b908280614a2993614a20565b92908280614d29614a2994613d12565b959293505050614d0d565b90816020910312610a5f575161ffff81168103610a5f5790565b809103906101408212610a5f576040805192614d6984613143565b60808112610a5f578151614d7c81613179565b614d8584613b79565b815260208401516020820152614d9c838501613b79565b838201526060840151606082015284526080607f19820112610a5f5781908151614dc581613179565b6080850151815260a0850151602082015260c08501518382015260e08501516060820152602086015260ff190112610a5f57614e1e610120825193614e098561315e565b614e1661010082016134d1565b8552016134d1565b602083015282015290565b91926137ad959360206040845194606060018060a01b039687815116895284810151858a0152878482015116848a015201516060880152606083820151805160808a01528481015160a08a01528381015160c08a0152015160e088015201518051151561010087015201511515610120850152610140840152166101608201526101a0908161018082015201916145e2565b15614ec257565b60405162461bcd60e51b815260206004820152600f60248201526e0a68e987440dcdee840cadcdeeaced608b1b6044820152606490fd5b60208101805190939291906001600160801b03908116614f1a575090925050565b908161180081614f3d614f33614f469686511688613286565b828a5116906132af565b97511687613286565b10614f4d57565b906137ad90613d12565b92919060009160018060a01b0394858316845260206017815260408520548084116151ed575b5082156151b157614f8c613de5565b968582604051614f9b8161315e565b8281520152614faa8489614ef9565b9560018060801b039384614fc3818a16828d51166149aa565b168a52615002848b0186614fdc818a16828451166149aa565b16809152614a68878b9d511660018060801b031660018060801b03196014541617601455565b8287168252601784526040822061501a8782546132dd565b90558260095416600e549560405190638eb22cdd60e01b82528760048301528a6024830152600160448301528682606481865afa91821561192d578592615182575b5080602554169492803b15610a5f57826000916150929a83604051809d81958294630208d92960e11b8452308d60048601614980565b03925af1948515610c5b577fc8e512d8f188ca059984b5853d2bf653da902696b8512785b182b2c813789a6e98879661516c575b506150d49082841690613e31565b1660018060801b031960255416176025558383169081835260268752604083206027549081855288526040842054821160001461514557505081526026855260408120602754825285528060408120555b1561513f57508060095416955b60405195865216941692a4565b95615132565b9091835260268752604083209083528652615165604083209182546132dd565b9055615125565b61517791945061311a565b6000926150d46150c6565b9091508681813d83116151aa575b61519a81836131b0565b81010312610a645751903861505c565b503d615190565b6064906040519062461bcd60e51b82526004820152601560248201527453474c3a206e6f7468696e6720746f20726570617960581b6044820152fd5b925038614f7d565b604051906152028261315e565b60038252623f3f3f60e81b6020830152565b908151811015615225570160200190565b634e487b7160e01b600052603260045260246000fd5b60ff1660ff81146132995760010190565b8051604081106152c457508051810190602081818401930312610a5f576020810151906001600160401b038211610a5f570181603f82011215610a5f576020810151615297816131d1565b926152a560405194856131b0565b81845260408284010111610a5f576137ad916040602085019101612fcf565b6020929083036153b2576000805b60ff81168581109081615393575b50156152f4576152ef9061523b565b6152d2565b9260ff80941692615304846131d1565b9361531260405195866131b0565b808552615321601f19916131d1565b013687860137825b85811687811080615376575b1561536b5761536691906153606001600160f81b03196153558388615214565b5116871a9188615214565b5361523b565b615329565b505094505050905090565b506001600160f81b031961538a8286615214565b51161515615335565b6001600160f81b031991506153a89086615214565b51161515386152e0565b9150506137ad6151f556fe9ed03113de523cebfe5e49d5f8e12894b1c0d42ce805990461726444c90eab87ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa26469706673582212203847b1355984ac073ba1856ae43f8376e31cd4b28609edd9d6701120f9eb9a9864736f6c63430008120033"; + "0x6101408060405234620001e5576200001781620001ea565b601381526001602082017f546170696f63612053696e67756c617269747900000000000000000000000000815260206040516200005481620001ea565b8381520192603160f81b845251902091208160e052610100918183524660a0526040519160208301907f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f92838352604085015260608401524660808401523060a084015260a0835260c083019280841060018060401b03851117620001cf5760408490525190206080523060c052610120908152600580546001600160a01b0319163390811790915560007f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a362013880601b5562015f90601c55612710601d55612ee06020557f0bd4060688a1800ae986e4840aebc924bb40b5bf44de4583df2257220b54b77c6026557f7d1dc38e60930664f8cbf495da6556ca091d2f92d6550877750c049864b182306027556161a86028556032602f55615349928362000207843960805183613904015260a051836139cf015260c051836138ce015260e0518361395301525182613979015251816139300152f35b634e487b7160e01b600052604160045260246000fd5b600080fd5b604081019081106001600160401b03821117620001cf5760405256fe608080604052600436101561001357600080fd5b600090813560e01c908162a02a2014612e585750806302ce728f14612e2f57806306fdde0314612d78578063078dfbe714612c79578063095ea7b314612c525780630c4e84f014612b3a57806318160ddd14612b195780631c9e379b14612ae05780631da8bf1014612a2b5780631ee9c8f2146125e357806323b872dd146124405780632a9399d91461202c578063313ce56714611ff8578063331960ff14611fda57806334d441d014611fbc5780633644e51514611fa157806337b6b7b914611f8357806338d52e0f14611f5a5780633ba0b9a914611f3c5780633f741adb14611f1757806340626d8b14611ef957806344de240a14611edb578063473e3ce714611ebd57806348e4163e14611e845780634d7f2a3414611e665780634e71e0c814611db8578063529898f214611d9b57806352f353eb14611d745780635514023214611d4d57806355c2ab9414611d235780635793546214611d0557806358db9afe146118c55780635dfe04e8146118665780636c3d8b8f1461183d57806370a082311461180457806372778547146117cc57806374645ff3146117a15780637dc0d1d0146117785780637ecebe001461173f5780637fa0b84e1461170d578063821226e8146116ef5780638285ef40146116bd5780638c5d0ed31461169f5780638da5cb5b14611676578063910dd7c8146113fd578063959916dc146113df57806395d89b411461132557806399a97028146112f55780639c5d7192146112d75780639e15e89f1461129c578063a9059cbb146111b9578063b0e21e8a1461119b578063b27c0e7414611160578063bb4cfe3b14611142578063ce8849ed14611119578063d3fb2a3814610c9d578063d49dffa714610651578063d505accf146104cb578063d8dfeb45146104a2578063dd62ed3e14610453578063de4065771461042a578063e0996cb61461040c578063e30c3978146103e3578063ea64dd56146103c5578063eec0f42e146103a7578063f42760b714610389578063f8ba4cff1461036d578063f9557ccb146103375763ffe04c661461031757600080fd5b346103345780600319360112610334576020602954604051908152f35b80fd5b5034610334578060031936011261033457602454604080516001600160801b038316815260809290921c602083015290f35b0390f35b503461033457806003193601126103345761038661423f565b80f35b50346103345780600319360112610334576020602a54604051908152f35b50346103345780600319360112610334576020600c54604051908152f35b50346103345780600319360112610334576020601f54604051908152f35b50346103345780600319360112610334576006546040516001600160a01b039091168152602090f35b50346103345780600319360112610334576020601d54604051908152f35b50346103345780600319360112610334576009546040516001600160a01b039091168152602090f35b50346103345760403660031901126103345761046d612ea0565b6040610477612eb6565b9260018060a01b03809316815260026020522091166000526020526020604060002054604051908152f35b5034610334578060031936011261033457600b546040516001600160a01b039091168152602090f35b5034610334576104da36612f46565b9083959495421161060c576105b8916105b09160018060a01b0394858a169687600052600460205260406000209081549161051483613c18565b90556040519060208201927f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e2668452600060408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e081526105748161312a565b51902061057f6138cb565b9060405190602082019261190160f01b845260228301526042820152604281526105a88161310f565b519020613ba0565b919091613aa1565b16036105c75761038692613c75565b60405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152606490fd5b60405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b5061014036600319011261033457610667612ea0565b606435151560643503610a5f576001600160401b038060843511610c9957606060843536036003190112610c995760a43511610a505760e060a43536036003190112610a505760803660c3190112610a5057600560005260076020527fbcdda56b5d08466ec462cbbe0adfa57cb0a15fcc8940ef68f702f21b787bc935546106f29060ff1615614362565b6106fa613474565b505061070461423f565b6107196001600160a01b0382163014156143df565b610727604460a4350161442a565b60c4356001600160a01b0381169003610a5f5761074a61074f9160c435906147a3565b614439565b60243580610afd575b506107da6107ac6107d46107ce6107b2620186a061077a602f5460443561321c565b0461078a60115491604435613280565b600d5460ff906107a2906001600160a01b0316614543565b1695869289613628565b906146a9565b6001600160a01b0386168752601860205260408720549061321c565b91613265565b90613245565b336001600160a01b03831603610aa9575b6107f590826146ec565b610836604061080760443584806148d3565b905060018060a01b0360095416600e548684518096819582946311a5cc7760e31b84528a309160048601614492565b03925af1908115610a9e578391610a6e575b50600d546001600160a01b03169060643515610a6857475b823b15610a645760405191633cb7ea1d60e11b8352600483015260018060a01b0384166024830152610100604483015260a4356004013561010483015261ffff6108ae602460a43501613182565b1661012483015261ffff6108c6604460a43501613182565b166101448301526001600160a01b036108e360a435606401612ecc565b166101648301526109af61094161091a610907608460a4350160a4356004016144c1565b60e06101848801526101e48701916144f2565b61092d60a480350160a4356004016144c1565b86830361010319016101a4880152906144f2565b6001600160a01b0361095760a43560c401612ecc565b166101c4850152838103600319016064850152606061099f6004608435016001600160a01b0361098682612ecc565b16845260843560248101356020860152604401906144c1565b91909281604082015201916144f2565b6001600160a01b0360c4358116608485015290939060e43590811690819003610a5f5760a4840152610104356001600160a01b03811690819003610a5f5760c4840152610124356001600160a01b0381169190829003610a5f5783879593818795819560e483015203925af18015610a5457610a3c575b50610386610a3783601154906145b1565b61439f565b610a45906130b0565b610a50578138610a26565b5080fd5b6040513d84823e3d90fd5b600080fd5b8480fd5b34610860565b610a90915060403d604011610a97575b610a888183613146565b81019061447c565b5038610848565b503d610a7e565b6040513d85823e3d90fd5b806107eb5760405162461bcd60e51b815260206004820152602160248201527f42696742616e673a20616c6c6f77616e63655368617265206e6f742076616c696044820152601960fa1b6064820152608490fd5b602060018060a01b0360095416916064600c546040519485938492638eb22cdd60e01b8452600484015260248301528760448301525afa908115610a9e578391610c67575b50610b4d81836146ec565b8015610bdb575b60018060a01b03821660005260186020526040600020610b75828254613280565b9055610b8381601554613280565b60155560018060a01b038216600052602560205260406000206027546000526020526040600020610bb5828254613280565b90556001600160a01b038216806000805160206152d4833981519152600080a438610758565b5060018060a01b03600954166020600c54606460405180948193638eb22cdd60e01b8352600483015260006024830152600060448301525afa908115610c5b57600091610c29575b50610b54565b906020823d602011610c53575b81610c4360209383613146565b8101031261033457505138610c23565b3d9150610c36565b6040513d6000823e3d90fd5b90506020813d602011610c91575b81610c8260209383613146565b81010312610a5f575138610b42565b3d9150610c75565b8280fd5b503461033457610160366003190112610334576001600160a01b039060043582811690819003610a50576001600160401b039260243584811161111557610ce8903690600401612f95565b909460443593838516809503610a5f57610d0784600554163314613191565b806110d7575b5081610f5a575b50509080929350610f1a575b505060643580610f02575b5060843580610eea575b5060a43580610ed3575b5060c43580610eaf575b5060e43580610e8b575b506101043580610e5a575b506101243580610de6575b506101443580610d77575080f35b601e548110610d8657601f5580f35b60405162461bcd60e51b815260206004820152603260248201527f4d61726b65743a206c69717569646174696f6e436f6c6c61746572616c697a616044820152711d1a5bdb94985d19481d1bdbc81cdb585b1b60721b6064820152608490fd5b610df5620186a08211156131dc565b601f548111610e0757601e5538610d69565b60405162461bcd60e51b815260206004820152602560248201527f4d61726b65743a20636f6c6c61746572616c697a6174696f6e5261746520746f6044820152646f2062696760d81b6064820152608490fd5b806016547fae6e0ab3b95f0a53ff9660a390ccedcbbf1f2355dce974a9841af106fddcfaba8480a360165538610d5e565b610e99620186a082106131dc565b610ea6601b5482116131dc565b601c5538610d53565b610ebd620186a082106131dc565b610eca601c5482106131dc565b601b5538610d49565b610ee1620186a082106131dc565b601d5538610d3f565b610ef9620186a08211156131dc565b601a5538610d35565b610f11620186a08211156131dc565b60195538610d2b565b816008549182167f5a62d22209e370e38eea92cfddcd228e656e6ec139243392a760a7769f5877fd8580a36001600160a01b031916176008553880610d20565b81116110c357610f6b601054612ff1565b601f8111611062575b5083601f8211600114610fdc5784958293949592610fd1575b50508160011b916000199060031b1c1916176010555b7fa6f004921c944d4b8bf6e38462b00f36a58d62495d56b51f571ab78f732c98158380a19082913880610d14565b013590503880610f8d565b60108552601f198216957f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae672918660205b89821061104a5750508360019596979810611030575b505050811b01601055610fa3565b0135600019600384901b60f8161c19169055388080611022565b8060018496829495870135815501950192019061100c565b601085527f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae672601f830160051c8101602084106110bc575b601f90920160051c01905b8181106110b15750610f74565b8581556001016110a4565b5080611099565b634e487b7160e01b84526041600452602484fd5b600f80546001600160a01b0319169190911790557f0b2d6eb667d0522c3eb86e4288afecae6c11591ffd1345d4d12407e0598bca9b8580a138610d0d565b8380fd5b50346103345780600319360112610334576008546040516001600160a01b039091168152602090f35b50346103345780600319360112610334576020601e54604051908152f35b50346103345780600319360112610334576060602354604051906001600160401b0380821683528160401c16602083015260801c6040820152f35b50346103345780600319360112610334576020601a54604051908152f35b5034610334576040366003190112610334576111d3612ea0565b6024358092811580159061128a575b61121a575b50506040519182526001600160a01b03169033906000805160206152f483398151915290602090a3602060405160018152f35b33815260016020526040812054611233838210156139f5565b6001600160a01b038416903382900361124e575b50506111e7565b60409361126591611260841515613a3a565b613273565b33835260016020528383205581522061127f838254613280565b905581388080611247565b50336001600160a01b038416146111e2565b50346103345760403660031901126103345760606112c46112bb612ea0565b602435906133b3565b9060405192835260208301526040820152f35b50346103345780600319360112610334576020602b54604051908152f35b503461033457604036600319011261033457602061131d611314612ea0565b60243590613799565b604051908152f35b5034610334578060031936011261033457808060018060a01b03600b541660405160208101906395d89b4160e01b825260048152611362816130f4565b51915afa61136e614513565b9150156113ce5761138161036991615162565b6113ba6023604051809362746d2d60e81b60208301526113aa8151809260208686019101612ee0565b8101036003810184520182613146565b604051918291602083526020830190612f03565b506103696113da61510b565b611381565b50346103345780600319360112610334576020602f54604051908152f35b5034610334576040366003190112610334576004356001600160401b038111610a505736602382011215610a505780600401359061143a82613167565b906114486040519283613146565b82825283602091828401943660248284010111610c99578060248593018737840101526024359061ffff8216809203610a5f576101009384848051810103126116725761149490613467565b906114a160408501613a7f565b6114ad60608601613a7f565b9560808601519560a0810151916114c660c08301613a93565b9060e08301519201519260018060a01b03808096169a169781421161162d57926105b09289888d9897946115a4978e8d600014611606577f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e266945b8c6000526004855260406000209283549361153a85613c18565b905560405195860196875260408601528c6060860152608085015260a084015260c083015260e082015260e081526115718161312a565b51902061157c6138cb565b90604051908a82019261190160f01b845260228301526042820152604281526105a88161310f565b16036115c25750156115b95761038692613c75565b61038692613c27565b6064906040519062461bcd60e51b82526004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152fd5b7f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d694611520565b60405162461bcd60e51b815260048101889052601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b8580fd5b50346103345780600319360112610334576005546040516001600160a01b039091168152602090f35b50346103345780600319360112610334576020601b54604051908152f35b5034610334578060031936011261033457601454604080516001600160801b038316815260809290921c602083015290f35b50346103345780600319360112610334576020602d54604051908152f35b50346103345760403660031901126103345761173461172a612ea0565b6024359033613c27565b602060405160018152f35b5034610334576020366003190112610334576020906040906001600160a01b03611767612ea0565b168152600483522054604051908152f35b5034610334578060031936011261033457600f546040516001600160a01b039091168152602090f35b50346103345780600319360112610334576103696040516113ba816117c58161302b565b0382613146565b50346103345760203660031901126103345760043590600982101561033457602060ff6117f884612fc2565b54166040519015158152f35b5034610334576020366003190112610334576020906040906001600160a01b0361182c612ea0565b168152600183522054604051908152f35b5034610334578060031936011261033457600a546040516001600160a01b039091168152602090f35b503461033457806003193601126103345761187f613ccc565b50608061188a613d50565b509350505050604051916001600160401b0380825116845260208201511660208401526040600180861b039101511660408301526060820152f35b50346103345760a0366003190112610334576118df612ea0565b6001600160a01b036064358181169392602435929091859003610a5f576084356001600160401b038111610a645761191b903690600401612f95565b949060066000526020966007885261193b60ff6040600020541615614362565b611943613474565b505061194d61423f565b8385169561195d308814156143df565b60048986600a54166040519283809263433e762d60e01b82525afa908115611cfa57836119959261074a928891611ccd575b506147a3565b61199f81876146ec565b600087815260188a52604081206119b7838254613273565b90556119c582601554613273565b6015558560095416600c54813b15610c9957836119fd92849283604051809681958294630208d92960e11b84528c3060048601614890565b03925af18015610a5457611cbe575b508183897f8ad4d3ff00da092c7ad9a573ea4f5f6a3dffc6712dc06d3f78f49b862297c4028480a487815260258a5260408120602754908183528b5260408220548311600014611c98575087815260258a526040812060275482528a5260408120555b600c54600e54604051633d9545e960e11b81526004810192909252602482015260006044820152606481019190915260016084820181905260a48201526101408160c481855afa908115611c8d5784604094939288928291611c5c575b50611af086519b8c968795869463efa84c6d60e01b86526044359060048701614d3f565b03925af1938415611c4f5781958295611c28575b50611b13604435871015614dd1565b81526017865260408120549186611b3184611b2c613ceb565b614e0f565b9160095416916064600e546040519485938492638eb22cdd60e01b845260048401526024830152600160448301525afa918215611c1c5791611be7575b5061131d93610a3793929111611b9457611b89908280614e6d565b505b601154906145b1565b50611b9d613ceb565b80516001600160801b03908116611bc2575050611bbc845b8280614e6d565b50611b8b565b8181611bd9611be2938a611bbc960151168961321c565b91511690613245565b611bb5565b929190508583813d8311611c15575b611c008183613146565b81010312610a5f57915190919061131d611b6e565b503d611bf6565b604051903d90823e3d90fd5b909450611c4591955060403d604011610a9757610a888183613146565b9490949338611b04565b50604051903d90823e3d90fd5b611c8091506101403d61014011611c86575b611c788183613146565b810190614c64565b38611acc565b503d611c6e565b6040513d86823e3d90fd5b9060409189825260258c528282209082528b5220611cb7828254613273565b9055611a6f565b611cc7906130b0565b38611a0c565b611ced91508d803d10611cf3575b611ce58183613146565b810190614c4a565b3861198f565b503d611cdb565b6040513d87823e3d90fd5b50346103345780600319360112610334576020601c54604051908152f35b503461033457806003193601126103345760206001600160401b03602c5460401c16604051908152f35b503461033457806003193601126103345760206001600160401b03602c5416604051908152f35b503461033457806003193601126103345760206001600160401b03602e5416604051908152f35b503461033457806003193601126103345760208054604051908152f35b50346103345780600319360112610334576006546001600160a01b039081811633819003611e2257806005549384167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08680a36001600160a01b0319928316176005551660065580f35b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b50346103345780600319360112610334576020602854604051908152f35b5034610334576020366003190112610334576020906040906001600160a01b03611eac612ea0565b168152601783522054604051908152f35b50346103345780600319360112610334576020601554604051908152f35b50346103345780600319360112610334576020600e54604051908152f35b50346103345780600319360112610334576020601654604051908152f35b503461033457606036600319011261033457602061131d6044356024356004356132a6565b50346103345780600319360112610334576020601154604051908152f35b5034610334578060031936011261033457600d546040516001600160a01b039091168152602090f35b50346103345780600319360112610334576020601254604051908152f35b5034610334578060031936011261033457602061131d6138cb565b50346103345780600319360112610334576020601954604051908152f35b50346103345780600319360112610334576020601354604051908152f35b5034610334578060031936011261033457600d54602090612021906001600160a01b0316614543565b60ff60405191168152f35b5060031961012036820112610a5057612043612ea0565b9061204c612f37565b90606435916001600160401b0390818411611672576060838536030112611672576084359182116116725760e08383360301126116725760803660a3190112611672576006600052602090600782526120ad60ff6040600020541615614362565b6120b5613474565b50506120bf61423f565b6001600160a01b03868116939092906120da308614156143df565b60448101916120e88361442a565b9760a435868116998a8203610a5f576121049161074a916147a3565b856009541697828c6064600c546040519c8d938492638eb22cdd60e01b84526004840152602435602484015260448301525afa9889156123da578b908d9a61240d575b50896121586122129b6040936146ec565b89600052601885528160002061216f828254613273565b905561217d81601554613273565b60155580308b7f8ad4d3ff00da092c7ad9a573ea4f5f6a3dffc6712dc06d3f78f49b862297c402600080a489600052602585528160002060275490816000528652826000205482116000146123e5575089600052602585528160002060275460005285526000828120555b8d896009541690600c54908451809e819582946311a5cc7760e31b84523090309060048601614492565b03925af19889156123da578c996123b8575b50600b54871695156123b15747975b863b156123ad5760405199633cb7ea1d60e11b8b5260048b015260248a01526044890161010090528684600401610104968135888d015261ffff908c8260248a0161227d90613182565b1690610124015261228d90613182565b166101448c0152816122a160648801612ecc565b166101648c01526122b560848701826144c1565b6101848d0160e090526101e48d01906122cd926144f2565b9060a487016122db916144c1565b8c830361010319016101a48e01526122f392916144f2565b9460c40161230090612ecc565b166101c48a015288840301606489015280600401918661231f84612ecc565b168452602482013590840152604401612337916144c1565b60606040840181905261234b9301916144f2565b95608486015260c435838116809103610a5f5760a486015260e435838116809103610a5f5760c486015235918216809203610a5f5783879593818795819560e483015203925af18015610a5457610a3c5750610386610a3783601154906145b1565b8c80fd5b3497612233565b6123d291995060403d604011610a9757610a888183613146565b509738612224565b6040513d8e823e3d90fd5b8a600052602586528260002090600052855281600020612406828254613273565b90556121e8565b809a50848092503d8311612439575b6124268183613146565b81010312610a5f579751978a6040612147565b503d61241c565b50346103345760603660031901126103345761245a612ea0565b90612463612eb6565b60443591826124a1575b506040519182526001600160a01b039081169216906000805160206152f483398151915290602090a3602060405160018152f35b6001600160a01b038481168083526001602090815260408420549286906124ca828610156139f5565b8616938484036124df575b505050505061246d565b8386526002835260408620336000528352604060002054600019810361254d575b509260016020969361252b87946040976112606000805160206152f48339815191529c9a1515613a3a565b9285525283832055815220612541858254613280565b905591388085816124d5565b909181106125a3579260016020969361252b8a6000805160206152f48339815191529a989561257e8260409a613273565b8689526002855289892033600052855289600020559497509497995050939650612500565b60405162461bcd60e51b815260048101849052601860248201527745524332303a20616c6c6f77616e636520746f6f206c6f7760401b6044820152606490fd5b50346103345760c0366003190112610334576125fd612ea0565b60643591906001600160a01b0360843581811692908390036111155760a4356001600160401b038111610a6457612638903690600401612f95565b9093600586526020966007885261265660ff60408920541615614362565b61265e613474565b505061266861423f565b84841691612678308414156143df565b60048987600a54166040519283809263433e762d60e01b82525afa908115612a2057826126af9261074a928c91611ccd57506147a3565b856009541693600e549060405191638eb22cdd60e01b968784528160048501526044356024850152600160448501528c84606481845afa9384156123da578c946129f1575b5083612997575b505061276461270d602435858a6148d3565b905061271f600e5491600c5495613280565b60405180938192633d9545e960e11b83526101409788956004850160a091949360019360c0830196835260208301526000604083015260608201528260808201520152565b0381875afa92831561298c5788936040959387938e938493612967575b50506127a39087519d8e978896879563efa84c6d60e01b875260048701614d3f565b03925af195861561295c578796612933575b506127c290871015614dd1565b6127cc85846146ec565b8491600095156128c3575b5080855260188752604085206127ee838254613280565b90556127fc82601554613280565b601555600c54948460095416803b15610a5f57836000916128369883604051809b81958294630208d92960e11b8452308d60048601614890565b03925af1948515610c5b5761131d96610a37966128a1575b506000805160206152d48339815191529083835260258a526040832060275484528a5260408320612880868254613280565b9055821561289b5780600954165b169180a4601154906145b1565b8561288e565b6128ac9192506130b0565b6000906000805160206152d483398151915261284e565b909150868460095416916064600c54916040519485938492835260048301528960248301528960448301525afa908115611cfa578591612906575b5090386127d7565b90508681813d831161292c575b61291d8183613146565b81010312610a645751386128fe565b503d612913565b6127c2975061295291965060403d604011610a9757610a888183613146565b96909695906127b5565b6040513d89823e3d90fd5b6127a3929350908161298492903d10611c8657611c788183613146565b919038612781565b6040513d8d823e3d90fd5b803b156129ed5783918c9186838c6129c560405197889687958694630208d92960e11b865260048601614890565b03925af1801561298c576129da575b806126fb565b6129e6909a919a6130b0565b98386129d4565b8b80fd5b9093508c81813d8311612a19575b612a098183613146565b810103126129ed575192386126f4565b503d6129ff565b6040513d8b823e3d90fd5b503461033457612a3a36612f46565b9083959495421161060c57612ad1916105b09160018060a01b03948a868b169788825260046020526040822090815491612a7383613c18565b90556040519160208301937f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d6855260408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e081526105748161312a565b16036105c75761038692613c27565b5034610334576020366003190112610334576020906040906001600160a01b03612b08612ea0565b168152601883522054604051908152f35b5034610334578060031936011261033457602060245460801c604051908152f35b5034610334576040366003190112610334576004356009811015610a5057612b60612f28565b6008549091906001600160a01b03163303612c165760ff612b8082612fc2565b54161515911515918214612bdc57808260ff612b9e612bcc94612fc2565b54161515827feeec81de25875ce1725479bb76f720a8defdb43dea041919ae37bb4aae9847c08780a4612fc2565b9060ff8019835416911617905580f35b60405162461bcd60e51b81526020600482015260126024820152714d61726b65743a2073616d6520737461746560701b6044820152606490fd5b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881d5b985d5d1a1bdc9a5e995960621b6044820152606490fd5b503461033457604036600319011261033457611734612c6f612ea0565b6024359033613c75565b503461033457606036600319011261033457612c93612ea0565b612c9b612f28565b612ca3612f37565b9060018060a01b03928391612cbd83600554163314613191565b15612d61571690811590811591612d59575b5015612d1c57806005549283167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08580a36001600160a01b03199182161760055560068054909116905580f35b60405162461bcd60e51b81526020600482015260156024820152744f776e61626c653a207a65726f206164647265737360581b6044820152606490fd5b905038612ccf565b9150501660018060a01b0319600654161760065580f35b5034610334578060031936011261033457808060018060a01b03600b541660405160208101906306fdde0360e01b825260048152612db5816130f4565b51915afa612dc1614513565b915015612e1e57612dd461036991615162565b6113ba6034604051809373546170696f63612053696e67756c61726974792d60601b6020830152612e0e8151809260208686019101612ee0565b8101036014810184520182613146565b50610369612e2a61510b565b612dd4565b50346103345780600319360112610334576040612e4a613474565b825191151582526020820152f35b905034610a50576040366003190112610a50576040602092612e78612ea0565b612e80612eb6565b6001600160a01b0391821683526003865283832091168252845220548152f35b600435906001600160a01b0382168203610a5f57565b602435906001600160a01b0382168203610a5f57565b35906001600160a01b0382168203610a5f57565b60005b838110612ef35750506000910152565b8181015183820152602001612ee3565b90602091612f1c81518092818552858086019101612ee0565b601f01601f1916010190565b602435908115158203610a5f57565b604435908115158203610a5f57565b60e0906003190112610a5f576001600160a01b03906004358281168103610a5f57916024359081168103610a5f5790604435906064359060843560ff81168103610a5f579060a4359060c43590565b9181601f84011215610a5f578235916001600160401b038311610a5f5760208381860195010111610a5f57565b6009811015612fdb576000526007602052604060002090565b634e487b7160e01b600052602160045260246000fd5b90600182811c92168015613021575b602083101461300b57565b634e487b7160e01b600052602260045260246000fd5b91607f1691613000565b6010546000929161303b82612ff1565b908181526001928381169081600014613095575060011461305b57505050565b9092935060106000526020928360002092846000945b8386106130815750505050010190565b805485870183015294019385908201613071565b91935050602093945060ff191683830152151560051b010190565b6001600160401b0381116130c357604052565b634e487b7160e01b600052604160045260246000fd5b606081019081106001600160401b038211176130c357604052565b604081019081106001600160401b038211176130c357604052565b608081019081106001600160401b038211176130c357604052565b61010081019081106001600160401b038211176130c357604052565b90601f801991011681019081106001600160401b038211176130c357604052565b6001600160401b0381116130c357601f01601f191660200190565b359061ffff82168203610a5f57565b1561319857565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b156131e357565b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881b9bdd081d985b1a59607a1b6044820152606490fd5b8181029291811591840414171561322f57565b634e487b7160e01b600052601160045260246000fd5b811561324f570490565b634e487b7160e01b600052601260045260246000fd5b604d811161322f57600a0a90565b9190820391821161322f57565b9190820180921161322f57565b8181039291600013801582851316918412161761322f57565b6014549192916132e9916132e0916132d6916132cc906001600160801b0383169061321c565b9060801c90613245565b93601f549061321c565b6107d483613265565b8083106133ab576132fd6133339184613273565b9161332e6107ce613325601e5461331f61331686613265565b60205490613280565b9061321c565b6107d484613265565b61328d565b6509184e72a0009081810291818305149015171561322f57670de0b6b3a76400009182810292818405149015171561322f57801561324f57600160ff1b9180831460001983141661322f57059060008212156133a457811461322f57600003905b80821161339f575090565b905090565b5090613394565b505050600090565b6001600160a01b03811660008181526017602052604081205491949392909190811561345b579160409161343761344f959483602086516133f3816130f4565b828152015261341186613404613d50565b5050505050939050613628565b815190936001600160801b039160209161342d9184169061321c565b9201511690613245565b81811061345357035b958152601860205220546136ee565b9091565b505080613440565b50509192505080918190565b51908115158203610a5f57565b600f546040805163d6d7d52560e01b8152602060048201529290916001600160a01b03168284806134a76024820161302b565b0381600080955af180156135d05781948291613594575b509284156135375783156134fd57507f9f9192b5edb17356c524e08d9e025c8e2f6307e6ea52fb7968faa3081f51c3c883918260115580a25b42601355565b5162461bcd60e51b81526020600482015260146024820152734d61726b65743a20696e76616c6964207261746560601b6044820152606490fd5b9192505061354a60135460125490613280565b421161355a5750601154906134f7565b5162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881c985d19481d1bdbc81bdb1960621b6044820152606490fd5b809550848092503d83116135c9575b6135ad8183613146565b810103126103345760206135c085613467565b940151386134be565b503d6135a3565b508251903d90823e3d90fd5b156135e357565b60405162461bcd60e51b815260206004820152601e60248201527f4d61726b65743a2065786368616e676552617465206e6f742076616c696400006044820152606490fd5b6136338215156135dc565b60018060a01b036020816009541691600c5490600094168452601882526064604085205491604051948593849263442c159960e01b8452600484015260248301528660448301525afa918215611c1c5780926136b6575b5050906136ae6136a56136b393620186a0602154049061321c565b601e549061321c565b613245565b90565b9091506020823d82116136e6575b816136d160209383613146565b810103126103345750516136ae6136a561368a565b3d91506136c4565b6136f98215156135dc565b602060018060a01b0360095416916064600c54604051948593849263442c159960e01b845260048401526024830152600060448301525afa908115610c5b57600091613766575b50906136ae613752926021549061321c565b620186a0613762601e548361321c565b0491565b906020823d8211613791575b8161377f60209383613146565b810103126103345750516136ae613740565b3d9150613772565b6001600160a01b031660008181526018602052604081205490926137bc916136ee565b9183526017602052604083205480156138c55781156138c5578181106138c557828110156138bb57601454613805918391611260916132cc906001600160801b0383169061321c565b90620186a092838302928084048514901517156138a75761382a92916107d491613273565b91601b5491601c549361383d858561328d565b80820291848212600160ff1b8214166138a7578183051490151715613893570581848201948512911290801582169115161761387f575080821261339f575090565b634e487b7160e01b81526011600452602490fd5b634e487b7160e01b83526011600452602483fd5b634e487b7160e01b85526011600452602485fd5b50505050601b5490565b50505090565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031614806139cc575b15613926577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f000000000000000000000000000000000000000000000000000000000000000082527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a0815260c081018181106001600160401b038211176130c35760405251902090565b507f000000000000000000000000000000000000000000000000000000000000000046146138fd565b156139fc57565b60405162461bcd60e51b815260206004820152601660248201527545524332303a2062616c616e636520746f6f206c6f7760501b6044820152606490fd5b15613a4157565b60405162461bcd60e51b815260206004820152601660248201527545524332303a206e6f207a65726f206164647265737360501b6044820152606490fd5b51906001600160a01b0382168203610a5f57565b519060ff82168203610a5f57565b6005811015612fdb5780613ab25750565b60018103613afa5760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b6044820152606490fd5b60028103613b475760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606490fd5b600314613b5057565b60405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608490fd5b9291906fa2a8918ca85bafe22016d0b997e4df60600160ff1b038311613c0c5791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa15611c4f5781516001600160a01b03811615613c06579190565b50600190565b50505050600090600390565b600019811461322f5760010190565b7fe50de2333c10a9502fcb1d8ae13a51bbf423153dfc63c2b8997665b32154afc360018060a01b038092169160009083825260036020526040822094169384825260205284604082205580a4565b909160207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259160018060a01b03809416938460005260028352604060002095169485600052825280604060002055604051908152a3565b60405190613cd9826130d9565b60006040838281528260208201520152565b60405190613cf8826130f4565b6014546001600160801b038116835260801c6020830152565b60405190613d1e826130f4565b6024546001600160801b038116835260801c6020830152565b6001600160801b03918216908216019190821161322f57565b613d58613ccc565b5060006020604051613d69816130f4565b828152015260006020604051613d7e816130f4565b8281520152604051613d8f816130d9565b6023546001600160401b03811682526001600160401b038160401c16602083015260801c60408201528091613dc2613ceb565b91613dcb613d11565b600954600e54825160405163442c159960e01b8152600481018390526001600160801b03909116602482015260006044820181905293959194919391926001600160a01b031690602081606481855afa8015610c5b576000906141e6575b8851613e3f92506001600160801b031690613280565b806141b1575060005b80613e606001600160401b0360208701511642613273565b948515614187575050426001600160401b031660208a8101919091528801516001600160801b03161561413d57506020670de0b6b3a7640000613ec285613ebd8c6001600160401b038d60018060801b039051169151169061321c565b61321c565b895191900496906001600160801b0390613ee190828a16908316613d37565b168952875160405163442c159960e01b815260048101929092526001600160801b031660248201526000604482015291829060649082905afa8015610c5b57600090614109575b8751613f3e92506001600160801b031690613280565b92613f6c846136ae620186a0613f56601a548a61321c565b60208c01516001600160801b031691900461321c565b6040890180519195916001600160801b038088169291613f8f9084908316613d37565b16905260208801805190916001600160801b0391613faf91908316613d37565b169052806140d4575060005b6029549093848281101561404f57613fd39083613273565b90670de0b6b3a7640000820291808304670de0b6b3a7640000149015171561322f576136ae6140276140216140136001600160401b039661403196613245565b93613ebd602d54958061321c565b83613280565b91848d511661321c565b168089526001600160401b03602c541680911061404b5750565b8852565b909150602a5480821161406157505050565b61406a91613273565b670de0b6b3a7640000810290808204670de0b6b3a7640000149015171561322f576001600160401b03916136ae6140ad6140216140136140b695602b5490613245565b848d511661321c565b81602c5460401c168082116140cc575b50168852565b9050386140c6565b87516001600160801b0316670de0b6b3a764000081810292918084049091149015171561322f5761410491613245565b613fbb565b506020813d602011614135575b8161412360209383613146565b81010312610a5f57613f3e9051613f28565b3d9150614116565b9697939450509350506001600160401b038151166001600160401b03602e541680910361417b575b509392614170613d11565b926000926000929190565b81526001925038614165565b97509850505050509250509161419b613ceb565b916141a4613d11565b9160009160009190600090565b87516001600160801b0316670de0b6b3a764000081810292918084049091149015171561322f576141e191613245565b613e48565b506020813d602011614212575b8161420060209383613146565b81010312610a5f57613e3f9051613e29565b3d91506141f3565b601480546001600160801b031660809290921b6001600160801b031916919091179055565b6143266020806142fc614250613d50565b9396959390929015614328575050506001600160401b03602e54166000807f33af5ce86e8438eff54589f85332916444457dfa8685493fbd579b809097026b88604051838152a45b805185820151604092830151921b67ffffffffffffffff60401b166001600160401b03919091161760809190911b6001600160801b0319908116919091176023558151601480549092166001600160801b039182161790915594859101511661421a565b8051910151821660801b6001600160801b0319166001600160801b03929091169190911617602455565b565b7f33af5ce86e8438eff54589f85332916444457dfa8685493fbd579b809097026b886001600160401b0386511694604051908152a4614298565b1561436957565b60405162461bcd60e51b815260206004820152600e60248201526d13585c9ad95d0e881c185d5cd95960921b6044820152606490fd5b156143a657565b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881a5b9cdbdb1d995b9d607a1b6044820152606490fd5b156143e657565b606460405162461bcd60e51b815260206004820152602060248201527f4d61726b65743a2063616e6e6f742065786563757465206f6e20697473656c666044820152fd5b3561ffff81168103610a5f5790565b1561444057565b60405162461bcd60e51b815260206004820152601460248201527329a3a61d1024b73b30b634b21039bbb0b83832b960611b6044820152606490fd5b9190826040910312610a5f576020825192015190565b9081526001600160a01b0391821660208201529116604082015260006060820152608081019190915260a00190565b9035601e1982360301811215610a5f5701602081359101916001600160401b038211610a5f578136038313610a5f57565b908060209392818452848401376000828201840152601f01601f1916010190565b3d1561453e573d9061452482613167565b916145326040519384613146565b82523d6000602084013e565b606090565b60008091604051602081019063313ce56760e01b825260048152614566816130f4565b51916001600160a01b03165afa61457b614513565b90806145a6575b156145a057602081805181010312610a5f5760206136b39101613a93565b50601290565b506020815114614582565b919060018060a01b0380600094168452602060178152604085205490811561469f57601881526040862054801561469857816145eb613ceb565b9460095416916064600c54604051948593849263442c159960e01b8452600484015260248301528b60448301525afa968715611c1c578097614662575b505061342d6146476136a561465d969798620186a0602154049061321c565b95613ebd60018060801b0394858751169061321c565b111590565b9096508187813d8311614691575b61467a8183613146565b81010312610334575094519461342d614647614628565b503d614670565b5050505050565b5060019450505050565b91821580156146e4575b6133ab576001810180911161322f576146d29261331f6136ae92613265565b6005810180911161322f57600a900490565b5081156146b3565b6001600160a01b0316338103614700575050565b60008181526020906003825260409182822033835281528483832054106147695783825260038152828220338352815282822054600101614742575050505050565b61475d93825260038152828220903383525220918254613273565b90553880808080614698565b60649083519062461bcd60e51b82526004820152601460248201527313585c9ad95d0e881b9bdd08185c1c1c9bdd995960621b6044820152fd5b600a5460405163dbd01de160e01b815260209290916001600160a01b039084908490600490829085165afa8015610c5b578493600091614852575b50918161ffff936044936040519889968795633a304d8b60e21b8752166004860152166024840152165afa908115610c5b5760009161481e575b50905090565b82813d831161484b575b6148328183613146565b81010312610334575061484490613467565b8038614818565b503d614828565b9091929381813d8311614889575b61486a8183613146565b81010312610a50575190828216820361033457508392919060446147de565b503d614860565b6001600160a01b039182168152911660208201526040810191909152606081019190915260800190565b6001600160801b03918216908216039190821161322f57565b92909192620186a06148e7602f548661321c565b046148f0613ceb565b946148fb8282613280565b9460409384519661490b886130f4565b60008089526020988901819052895190956001600160801b039290918316614bea578261493f8c8280855b16915116613d37565b168b526149838a8c018461495881851682845116613d37565b1680915261497e85849e511660018060801b031660018060801b03196014541617601455565b61421a565b6016548015908115614bdb575b5015614b9d57859060018060a01b0380951680895260178c528989206149b7838254613280565b90558951918483528c8301527f3a5151e57d3bc9798e7853034ac52293d1a0e12a2b44725e75b03b21f86477a68a87891693a480614b7c575b50878260095416946064600e5489519788938492638eb22cdd60e01b8452600484015260248301528960448301525afa938415614b72578594614b43575b508397614a39613d11565b818101916103e88484511610614b0f575090614a89839283614a63614ab0968a16828451166148ba565b1690819052602480546001600160801b0319166001600160801b03909216919091179055565b51602480546001600160801b03169290911660801b6001600160801b031916919091179055565b6009541690600e5490823b15610a64579184939184879694614ae8985198899586948593630208d92960e11b85523060048601614890565b03925af1918215614b05575050614afc5750565b614326906130b0565b51903d90823e3d90fd5b60649089519062461bcd60e51b82526004820152600e60248201526d14d1d30e881b5a5b881b1a5b5a5d60921b6044820152fd5b9093508781813d8311614b6b575b614b5b8183613146565b81010312610a6457519238614a2e565b503d614b51565b86513d87823e3d90fd5b82600a5416865260018952614b95878720918254613280565b9055386149f0565b875162461bcd60e51b8152600481018b9052601760248201527614d1d30e88189bdc9c9bddc818d85c081c995858da1959604a1b6044820152606490fd5b90508360145416111538614990565b828b8b81019280614c1d614c0e614c04868851168461321c565b8686511690613245565b9585611bd9818751168961321c565b10614c2f575b90828061493f93614936565b92908280614c3f61493f94613c18565b959293505050614c23565b90816020910312610a5f575161ffff81168103610a5f5790565b809103906101408212610a5f576040805192614c7f846130d9565b60808112610a5f578151614c928161310f565b614c9b84613a7f565b815260208401516020820152614cb2838501613a7f565b838201526060840151606082015284526080607f19820112610a5f5781908151614cdb8161310f565b6080850151815260a0850151602082015260c08501518382015260e08501516060820152602086015260ff190112610a5f57614d34610120825193614d1f856130f4565b614d2c6101008201613467565b855201613467565b602083015282015290565b91926136b3959360206040845194606060018060a01b039687815116895284810151858a0152878482015116848a015201516060880152606083820151805160808a01528481015160a08a01528381015160c08a0152015160e088015201518051151561010087015201511515610120850152610140840152166101608201526101a0908161018082015201916144f2565b15614dd857565b60405162461bcd60e51b815260206004820152600f60248201526e0a68e987440dcdee840cadcdeeaced608b1b6044820152606490fd5b60208101805190939291906001600160801b03908116614e30575090925050565b9081611bd981614e53614e49614e5c968651168861321c565b828a511690613245565b9751168761321c565b10614e6357565b906136b390613c18565b92919060009160018060a01b039485831684526020601781526040852054808411615103575b5082156150c757614ea2613ceb565b968582604051614eb1816130f4565b8281520152614ec08489614e0f565b9560018060801b039384614ed9818a16828d51166148ba565b168a52614f18848b0186614ef2818a16828451166148ba565b1680915261497e878b9d511660018060801b031660018060801b03196014541617601455565b82871682526017845260408220614f30878254613273565b90558260095416600e549560405190638eb22cdd60e01b82528760048301528a6024830152600160448301528682606481865afa918215611cfa578592615098575b5080602454169492803b15610a5f5782600091614fa89a83604051809d81958294630208d92960e11b8452308d60048601614890565b03925af1948515610c5b577fc8e512d8f188ca059984b5853d2bf653da902696b8512785b182b2c813789a6e988796615082575b50614fea9082841690613d37565b1660018060801b031960245416176024558383169081835260258752604083206026549081855288526040842054821160001461505b57505081526025855260408120602654825285528060408120555b1561505557508060095416955b60405195865216941692a4565b95615048565b909183526025875260408320908352865261507b60408320918254613273565b905561503b565b61508d9194506130b0565b600092614fea614fdc565b9091508681813d83116150c0575b6150b08183613146565b81010312610a6457519038614f72565b503d6150a6565b6064906040519062461bcd60e51b82526004820152601560248201527453474c3a206e6f7468696e6720746f20726570617960581b6044820152fd5b925038614e93565b60405190615118826130f4565b60038252623f3f3f60e81b6020830152565b90815181101561513b570160200190565b634e487b7160e01b600052603260045260246000fd5b60ff1660ff811461322f5760010190565b8051604081106151da57508051810190602081818401930312610a5f576020810151906001600160401b038211610a5f570181603f82011215610a5f5760208101516151ad81613167565b926151bb6040519485613146565b81845260408284010111610a5f576136b3916040602085019101612ee0565b6020929083036152c8576000805b60ff811685811090816152a9575b501561520a5761520590615151565b6151e8565b9260ff8094169261521a84613167565b936152286040519586613146565b808552615237601f1991613167565b013687860137825b8581168781108061528c575b156152815761527c91906152766001600160f81b031961526b838861512a565b5116871a918861512a565b53615151565b61523f565b505094505050905090565b506001600160f81b03196152a0828661512a565b5116151561524b565b6001600160f81b031991506152be908661512a565b51161515386151f6565b9150506136b361510b56fe9ed03113de523cebfe5e49d5f8e12894b1c0d42ce805990461726444c90eab87ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa264697066735822122031ecdd56d2974cea8d52e59827623447bd12db91d83dc789de7f160f3febe1e164736f6c63430008120033"; type SGLLeverageConstructorParams = | [signer?: Signer] diff --git a/src/typechain/tapioca-bar/factories/markets/singularity/SGLLiquidation__factory.ts b/src/typechain/tapioca-bar/factories/markets/singularity/SGLLiquidation__factory.ts index 7b1ee00d..8ee0104e 100644 --- a/src/typechain/tapioca-bar/factories/markets/singularity/SGLLiquidation__factory.ts +++ b/src/typechain/tapioca-bar/factories/markets/singularity/SGLLiquidation__factory.ts @@ -1590,11 +1590,6 @@ const _abi = [ }, { inputs: [ - { - internalType: "uint256", - name: "_borrowOpeningFee", - type: "uint256", - }, { internalType: "contract IOracle", name: "_oracle", @@ -1923,7 +1918,7 @@ const _abi = [ ] as const; const _bytecode = - "0x6101408060405234620001e5576200001781620001ea565b601381526001602082017f546170696f63612053696e67756c617269747900000000000000000000000000815260206040516200005481620001ea565b8381520192603160f81b845251902091208160e052610100918183524660a0526040519160208301907f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f92838352604085015260608401524660808401523060a084015260a0835260c083019280841060018060401b03851117620001cf5760408490525190206080523060c052610120908152600580546001600160a01b0319163390811790915560007f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a362013880601b5562015f90601c55612710601d556032602055612ee06021557f0bd4060688a1800ae986e4840aebc924bb40b5bf44de4583df2257220b54b77c6027557f7d1dc38e60930664f8cbf495da6556ca091d2f92d6550877750c049864b182306028556161a8602955614b569283620002078439608051836139df015260a05183613aaa015260c051836139a9015260e05183613a2e01525182613a5401525181613a0b0152f35b634e487b7160e01b600052604160045260246000fd5b600080fd5b604081019081106001600160401b03821117620001cf5760405256fe608080604052600436101561001357600080fd5b60e0600035811c918262a02a2014612faa5750816302ce728f14612e4757816306fdde0314612d90578163078dfbe714612c8c578163095ea7b314612c665781630996efb7146127eb5781630c4e84f0146126d157816318160ddd146126b05781631c9e379b146126765781631da8bf10146125bf57816323b872dd1461241b578163313ce5671461238b578163331960ff1461236d57816334d441d01461234f5781633644e5151461233457816337b6b7b91461231657816338d52e0f146122ed5781633ba0b9a9146122cf5781633f741adb146122ab57816340626d8b1461228d57816344de240a1461226f578163473e3ce71461225157816348e4163e146122175781634d7f2a34146121f95781634e71e0c81461214b578163529898f21461212d57816352f353eb1461210657816355140232146120df57816355c2ab94146120b557816357935462146120975781635dfe04e8146120385781636c3d8b8f1461200f57816370a0823114611fd55781637277854714611f9f57816374645ff314611f745781637dc0d1d014611f4b5781637ecebe0014611f115781637fa0b84e14611ee0578163821226e814611ec25781638285ef4014611e905781638c5d0ed314611e725781638da5cb5b14611e49578163910dd7c814611bff578163959916dc14611be257816395d89b4114611b2857816399a9702814611af95781639c5d719214611adb5781639e15e89f14611a96578163a28e6b82146115d0578163a9059cbb146114ee578163b0e21e8a146114d0578163b27c0e7414611495578163bb4cfe3b14611477578163ce8849ed1461144e578163d505accf146112c957508063d8dfeb45146112a0578063dd62ed3e1461124f578063de40657714611226578063e0996cb614611208578063e30c3978146111df578063e5644d8b146103cf578063ea64dd56146103b1578063eec0f42e14610393578063f42760b714610375578063f8ba4cff1461035a578063f9557ccb146103245763ffe04c661461030157600080fd5b3461031f57600036600319011261031f576020602a54604051908152f35b600080fd5b3461031f57600036600319011261031f57602554604080516001600160801b038316815260809290921c602083015290f35b0390f35b3461031f57600036600319011261031f576103736142f8565b005b3461031f57600036600319011261031f576020602b54604051908152f35b3461031f57600036600319011261031f576020600c54604051908152f35b3461031f57600036600319011261031f576020601f54604051908152f35b3461031f57608036600319011261031f576004356001600160401b03811161031f576103ff9036906004016132c3565b906024356001600160401b03811161031f5761041f9036906004016132c3565b6044356001600160401b03811161031f5761043e9036906004016132c3565b90916064356001600160401b03811161031f5761045f9036906004016132c3565b9290916004600052600760205260ff604060002054166111a95787156111695780880361112e57610491828914614445565b61049c828514614445565b600f546040805163d6d7d52560e01b815260206004820152979188906001600160a01b0316816000816104d16024820161315e565b03925af1968715610bed576000906000986110fa575b5087816110f0575b50156110e657866011555b6105026142f8565b60009860005b818110610552578a1561051757005b60405162461bcd60e51b815260206004820152601360248201527214d1d30e881b9bc81d5cd95c9cc8199bdd5b99606a1b6044820152606490fd5b61055d81838c6147ff565b356001600160a01b038116810361031f576105788a8261480f565b1561058d575b5061058890613d00565b610508565b9a61059790613d00565b9a6105a38286866147ff565b35906105b083888c6147ff565b35906001600160a01b038216820361031f5789841015610b90578360051b890135601e198a36030181121561031f578901926001600160401b0384351161031f5783353603602085011361031f576106088d8361389c565b918d156110a15760018060a01b03600954166020600c5460018060a01b03841660005260188252606460406000205491604051948593849263442c159960e01b845260048401526024830152600060448301525afa908115610bed578f9060009261106b575b5061067f610684926022549061337e565b6133a7565b9360018060a01b03821660005260176020526106a58560406000205461345b565b80601d548061104c575b5080851115611045575b6001600160a01b038416600090815260176020526040902054908181111561103c575080965b1115611007578f938181111561100057505b6001600160a01b0383166000908152601760205260409020549081811115610ff5575061071e81806133d5565b6001600160a01b03841660009081526017602052604090205561073f613dd3565b60208101516001600160801b0316610fc05750602081965b606461077d61077460018060a01b036009541698600c549461337e565b602254906133a7565b916040519788938492638eb22cdd60e01b845260048401526024830152600060448301525afa938415610bed57600094610f8c575b506001600160a01b0383166000908152601860205260409020548411610f475760018060a01b038316600052601860205260406000206107f38582546133d5565b90558515610f13576014549061083a6001600160801b0361081889821682861661442c565b16926001600160801b0319926001600160801b0316908316841760801c61442c565b60801b161760145560018060a01b0360095416956020600e546064604051809a8193638eb22cdd60e01b835260048301528a6024830152600160448301525afa968715610bed57600097610edb575b50869161096b610972926015805488808211600014610ed1576108ab916133d5565b905b5560018060a01b0386166000526026806020526040600020602890815490816000526020526040600020548a11600014610e9c575060018060a01b0388166000528160205260406000209054600052602052600060408120555b60018060a01b03871660005280602052604060002090602791825490816000526020526040600020548811600014610e68575060018060a01b03881660005260205260406000209054600052602052600060408120555b369060208135910161328c565b90856144a2565b5010610e2357600954600e54604051627eeac760e11b815230600482015260248101919091526001600160a01b039091169390602081604481885afa8015610bed57600090610def575b6025546109d392506001600160801b0316906133d5565b9580871115610ddf576109f56109ed620186a092896133d5565b925b8361337e565b0495610a0187836133d5565b9485610c71575b5086610bf9575b610a2987610a248760018060801b03946133d5565b6133d5565b602554916001600160801b0391610a439116828416613e1f565b6001600160801b0319909216911617602555600d5460095460405163095ea7b360e01b81526001600160a01b039182166004820152600060248201819052909260209284926044928492165af18015610bed5787918691610ba6575b50610a2490610aad936133d5565b6040516000815230907f30a8c4f9ab5af7e1309ca87c32377d1a83366c5990472dbf9d262450eae14e3860203092a460405190610ae9826131fe565b6001825260203681840137815115610b90576001600160a01b03166020820190815260405191518291906000905b808210610b6e575050508190039020604080519384526020840194909452928201526105889392919033907f85b91d472e69b2cfe848ed50eb5d8582ae96c22057b6e46250255dd6f6c3519290606090a49061057e565b82516001600160a01b0316845260209384019390920191600190910190610b17565b634e487b7160e01b600052603260045260246000fd5b9150506020813d602011610be5575b81610bc260209383613250565b8101031261031f57610a2485610aad93610bdc8a94613778565b50935090610a9f565b3d9150610bb5565b6040513d6000823e3d90fd5b610c2e60408860018060a01b0360095416600e5460008451809681958294634d4d7cbd60e11b8452339030906004860161491c565b03925af18015610bed57610c43575b50610a0f565b610c649060403d604011610c6a575b610c5c8183613250565b81019061448c565b50610c3d565b503d610c52565b600d5460405163095ea7b360e01b8152600481019290925260006024830181905260209183916044918391906001600160a01b03165af18015610bed57610da6575b50600d5460095460405163095ea7b360e01b81526001600160a01b03918216600482015260001960248201529160209183916044918391600091165af18015610bed57610d6d575b50600954600e54600a5460408051634d4d7cbd60e11b815293909284926001600160a01b039283169284926000928492610d40928f929091169030906004860161491c565b03925af18015610bed5715610a0857610d679060403d604011610c6a57610c5c8183613250565b50610a08565b6020813d602011610d9e575b81610d8660209383613250565b8101031261031f57610d9790613778565b5038610cfb565b3d9150610d79565b6020813d602011610dd7575b81610dbf60209383613250565b8101031261031f57610dd090613778565b5038610cb3565b3d9150610db2565b50620186a06109f56000926109ef565b506020813d602011610e1b575b81610e0960209383613250565b8101031261031f576109d390516109bc565b3d9150610dfc565b60405162461bcd60e51b815260206004820152601b60248201527f53474c3a20617373657420616d6f756e74206e6f742076616c696400000000006044820152606490fd5b915060018060a01b0388166000526020526040600020906000526020526040600020610e958682546133d5565b905561095e565b905060018060a01b038816600052816020526040600020906000526020526040600020610eca8982546133d5565b9055610907565b50506000906108ad565b909196506020813d602011610f0b575b81610ef860209383613250565b8101031261031f57519590610972610889565b3d9150610eeb565b60405162461bcd60e51b815260206004820152600c60248201526b14d1d30e881cdbdb1d995b9d60a21b6044820152606490fd5b60405162461bcd60e51b815260206004820152601a60248201527f53474c3a206e6f7420656e6f75676820636f6c6c61746572616c0000000000006044820152606490fd5b9093506020813d602011610fb8575b81610fa860209383613250565b8101031261031f575192386107b2565b3d9150610f9b565b8051602091610fef91610fdc906001600160801b03168561337e565b908301516001600160801b0316906133a7565b96610757565b61071e9080926133d5565b90506106f1565b60405162461bcd60e51b815260206004820152600d60248201526c14d1d30e88189859081919589d609a1b6044820152606490fd5b905080966106df565b50836106b9565b90620186a061105e611065938361337e565b04906133e2565b386106af565b9150506020813d602011611099575b8161108760209383613250565b8101031261031f57518e61067f61066e565b3d915061107a565b60405162461bcd60e51b815260206004820152601b60248201527f53474c3a2065786368616e676552617465206e6f742076616c696400000000006044820152606490fd5b60115496506104fa565b905015158a6104ef565b905061111f91975060403d604011611127575b6111178183613250565b810190613785565b96908a6104e7565b503d61110d565b60405162461bcd60e51b8152602060048201526013602482015272084847440d8cadccee8d040dad2e6dac2e8c6d606b1b6044820152606490fd5b60405162461bcd60e51b815260206004820152601860248201527742423a206e6f7468696e6720746f206c697175696461746560401b6044820152606490fd5b60405162461bcd60e51b815260206004820152600e60248201526d13585c9ad95d0e881c185d5cd95960921b6044820152606490fd5b3461031f57600036600319011261031f576006546040516001600160a01b039091168152602090f35b3461031f57600036600319011261031f576020601d54604051908152f35b3461031f57600036600319011261031f576009546040516001600160a01b039091168152602090f35b3461031f57604036600319011261031f57611268612ff6565b61127061300c565b9060018060a01b038091166000526002602052604060002091166000526020526020604060002054604051908152f35b3461031f57600036600319011261031f57600b546040516001600160a01b039091168152602090f35b3461031f576112d7366130a6565b83949697939291924211611409576113b5926113ad9260018060a01b0395868b169788600052600460205260406000209182549261131484613d00565b90556040519160208301937f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e2668552600060408501528b60608501528a8d1660808501528d60a085015260c084015281830152815261137181613219565b51902061137c6139a6565b9060405190602082019261190160f01b845260228301526042820152604281526113a581613235565b519020613c7b565b919091613b7c565b16036113c45761037392613d5d565b60405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152606490fd5b60405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b3461031f57600036600319011261031f576008546040516001600160a01b039091168152602090f35b3461031f57600036600319011261031f576020601e54604051908152f35b3461031f57600036600319011261031f576060602454604051906001600160401b0380821683528160401c16602083015260801c6040820152f35b3461031f57600036600319011261031f576020601a54604051908152f35b3461031f57604036600319011261031f57611507612ff6565b6024359081158015906115be575b61154b575b6040519182526001600160a01b0316903390600080516020614b0183398151915290602090a3602060405160018152f35b33600052600160205260406000205461156683821015613ad0565b6001600160a01b038216908333839003611583575b50505061151a565b61159291610a24841515613b15565b33600052600160205260406000205560005260406000206115b48382546133e2565b905582808361157b565b50336001600160a01b03821614611515565b3461031f57608036600319011261031f576115e9612ff6565b6115f161300c565b60443591906001600160a01b0390818416840361031f57606435936001600160401b03851161031f5761162b61166a953690600401613079565b919061163c856005541633146132f3565b84600f54169560405163d6d7d52560e01b81526040816020998a60048301528160008160249e8f820161315e565b03925af1908115610bed57600090600092611a74575b508181611a6a575b5015611a6157806011555b15611a125785906116a26142f8565b169283600052601787526116c5604060002054620186a061105e6021548361337e565b878960648960095416936116e2610774600c54926011549061337e565b946040519586948593638eb22cdd60e01b85526004850152830152600060448301525afa908115610bed576000916119e5575b508460005260188852604060002054116119a3576118c26118778560009896956118718a9997966118b49660268e8d9a8b526018815260408b20549661181061175c613dd3565b828e52601784526117eb6117c28f60409020549260008760405161177f816131fe565b82815201528681019360018060801b03928382818094868a8381511615600014611956575050816117b5915b168288511661442c565b168552168287511661442c565b169384905251601480546001600160801b0319166001600160801b039390921692909216179055565b601480546001600160801b031660809290921b6001600160801b031916919091179055565b808c52601782528b604081205582825260408c206027548d5282528b6040812055808c526018825261184860408d20546015546133d5565b6015558b52601881528a6040812055528d60408a20906028548b5252886040812055369161328c565b916144a2565b600d546040805163a9059cbb60e01b8d82019081526001600160a01b039099168e8201908152602081019490945291909816979094859350910190565b03601f198101835282613250565b51925af16118ce6143fc565b8161191e575b50156118dc57005b601c6064926040519262461bcd60e51b845260048401528201527f426f72696e6745524332303a205472616e73666572206661696c6564000000006044820152fd5b80915051828115918215611937575b50509050836118d4565b838092935001031261031f578161194e9101613778565b80828561192d565b6117b59261198f6119858661197c61197282809851168661337e565b82875116906133a7565b9451168461337e565b848c5116906133a7565b10156117ab5761199e90613d00565b6117ab565b606488886040519162461bcd60e51b83528160048401528201527f42696742616e673a2043616e6e6f7420666f726365206c6971756964617465646044820152fd5b90508781813d8311611a0b575b6119fc8183613250565b8101031261031f575189611715565b503d6119f2565b60405162461bcd60e51b8152600481018890526022818a01527f42423a2063757272656e742065786368616e676552617465206e6f742076616c6044820152611a5960f21b6064820152608490fd5b50601154611693565b905015158a611688565b9050611a8f915060403d604011611127576111178183613250565b908a611680565b3461031f57604036600319011261031f57610356611abe611ab5612ff6565b6024359061361e565b604080519384526020840192909252908201529081906060820190565b3461031f57600036600319011261031f576020602c54604051908152f35b3461031f57604036600319011261031f576020611b20611b17612ff6565b6024359061389c565b604051908152f35b3461031f57600036600319011261031f5760008060018060a01b03600b541660405160208101906395d89b4160e01b825260048152611b66816131fe565b51915afa611b726143fc565b9015611bd157611b846103569161498c565b611bbd6023604051809362746d2d60e81b6020830152611bad8151809260208686019101613022565b8101036003810184520182613250565b604051918291602083526020830190613045565b50610356611bdd61494b565b611b84565b3461031f57600036600319011261031f5760208054604051908152f35b3461031f57604036600319011261031f576004356001600160401b03811161031f573660238201121561031f57611c4090369060248160040135910161328c565b9060243561ffff811680910361031f5761010091828480518101031261031f576020611c6d818601613778565b91611c7a60408701613b5a565b90611c8760608801613b5a565b9660808101519660a082015192611ca060c08401613b6e565b91818401519301519360018060a01b03808097169b1698814211611e04579289888d989794611d7b97946113ad978f8e600014611ddd577f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e266955b8d60005260048652604060002092835493611d1485613d00565b905560405196870197885260408701528d6060870152608086015260a085015260c0840152818301528152611d4881613219565b519020611d536139a6565b90604051908a82019261190160f01b845260228301526042820152604281526113a581613235565b1603611d99575015611d905761037392613d5d565b61037392613d0f565b6064906040519062461bcd60e51b82526004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152fd5b7f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d695611cfa565b60405162461bcd60e51b815260048101899052601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b3461031f57600036600319011261031f576005546040516001600160a01b039091168152602090f35b3461031f57600036600319011261031f576020601b54604051908152f35b3461031f57600036600319011261031f57601454604080516001600160801b038316815260809290921c602083015290f35b3461031f57600036600319011261031f576020602e54604051908152f35b3461031f57604036600319011261031f57611f06611efc612ff6565b6024359033613d0f565b602060405160018152f35b3461031f57602036600319011261031f576001600160a01b03611f32612ff6565b1660005260046020526020604060002054604051908152f35b3461031f57600036600319011261031f57600f546040516001600160a01b039091168152602090f35b3461031f57600036600319011261031f57610356604051611bbd81611f988161315e565b0382613250565b3461031f57602036600319011261031f57600435600981101561031f5760ff611fc96020926130f5565b54166040519015158152f35b3461031f57602036600319011261031f576001600160a01b03611ff6612ff6565b1660005260016020526020604060002054604051908152f35b3461031f57600036600319011261031f57600a546040516001600160a01b039091168152602090f35b3461031f57600036600319011261031f57612051613db4565b50608061205c613e38565b509350505050604051916001600160401b0380825116845260208201511660208401526040600180861b039101511660408301526060820152f35b3461031f57600036600319011261031f576020601c54604051908152f35b3461031f57600036600319011261031f5760206001600160401b03602d5460401c16604051908152f35b3461031f57600036600319011261031f5760206001600160401b03602d5416604051908152f35b3461031f57600036600319011261031f5760206001600160401b03602f5416604051908152f35b3461031f57600036600319011261031f576020602154604051908152f35b3461031f57600036600319011261031f576006546001600160a01b0390818116338190036121b557806005549384167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a36001600160a01b03199283161760055516600655005b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b3461031f57600036600319011261031f576020602954604051908152f35b3461031f57602036600319011261031f576001600160a01b03612238612ff6565b1660005260176020526020604060002054604051908152f35b3461031f57600036600319011261031f576020601554604051908152f35b3461031f57600036600319011261031f576020600e54604051908152f35b3461031f57600036600319011261031f576020601654604051908152f35b3461031f57606036600319011261031f576020611b20604435602435600435613557565b3461031f57600036600319011261031f576020601154604051908152f35b3461031f57600036600319011261031f57600d546040516001600160a01b039091168152602090f35b3461031f57600036600319011261031f576020601254604051908152f35b3461031f57600036600319011261031f576020611b206139a6565b3461031f57600036600319011261031f576020601954604051908152f35b3461031f57600036600319011261031f576020601354604051908152f35b3461031f57600036600319011261031f5760008060018060a01b03600d5416604051602081019063313ce56760e01b8252600481526123c9816131fe565b51915afa6123d56143fc565b9080612410575b156124065760208180518101031261031f576123fb6020809201613b6e565b60ff60405191168152f35b50602060126123fb565b5060208151146123dc565b3461031f57606036600319011261031f57612434612ff6565b61243c61300c565b6044359081612479575b6040519182526001600160a01b03908116921690600080516020614b0183398151915290602090a3602060405160018152f35b60018060a01b038084168060005260206001815284604060002054936124a182861015613ad0565b8516938484036124b6575b5050505050612446565b83600052600283526040600020336000528352604060002054600019810361252a575b508492612501600080516020614b01833981519152979593600193610a246020991515613b15565b9260005252604060002055600052604060002061251f8582546133e2565b9055918584816124ac565b9091811061257f576020949261250188600080516020614b01833981519152989694612558826001966133d5565b866000526002855260406000203360005285526040600020559350939597505092946124d9565b60405162461bcd60e51b815260048101849052601860248201527745524332303a20616c6c6f77616e636520746f6f206c6f7760401b6044820152606490fd5b3461031f576125cd366130a6565b8394969793929192421161140957612667926113ad9260018060a01b0395868b169788600052600460205260406000209182549261260a84613d00565b90556040519160208301937f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d68552600060408501528b60608501528a8d1660808501528d60a085015260c084015281830152815261137181613219565b16036113c45761037392613d0f565b3461031f57602036600319011261031f576001600160a01b03612697612ff6565b1660005260186020526020604060002054604051908152f35b3461031f57600036600319011261031f57602060255460801c604051908152f35b3461031f57604036600319011261031f57600435600981101561031f576126f661306a565b6008549091906001600160a01b031633036127af5760ff612716826130f5565b5416151591151591821461277557808260ff612734612763946130f5565b54161515827feeec81de25875ce1725479bb76f720a8defdb43dea041919ae37bb4aae9847c0600080a46130f5565b9060ff80198354169116179055600080f35b60405162461bcd60e51b81526020600482015260126024820152714d61726b65743a2073616d6520737461746560701b6044820152606490fd5b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881d5b985d5d1a1bdc9a5e995960621b6044820152606490fd5b3461031f5761018036600319011261031f576001600160a01b036024358181169081900361031f576001600160401b039160443583811161031f57612834903690600401613079565b60643580841693929084900361031f57612853836005541633146132f3565b60043595620186a0956128688789111561333e565b6020978089547fc353b09af857951dccce61b43a5854fc45beceed36c50e5d4cc2e71858a8e0df600080a3885580612c27575b5082612ad7575b50505081612a96575b505060843580612a81575b5060a43580612a6c575b5060c43580612a58575b5060e43580612a37575b506101043580612a16575b5061012435806129e4575b50610144359081612972575b505061016435908161290457005b601e5482106129135750601f55005b6084906040519062461bcd60e51b82526004820152603260248201527f4d61726b65743a206c69717569646174696f6e436f6c6c61746572616c697a616044820152711d1a5bdb94985d19481d1bdbc81cdb585b1b60721b6064820152fd5b61297e9082111561333e565b601f54811161299157601e5581806128f6565b60405162461bcd60e51b815260048101839052602560248201527f4d61726b65743a20636f6c6c61746572616c697a6174696f6e5261746520746f6044820152646f2062696760d81b6064820152608490fd5b806016547fae6e0ab3b95f0a53ff9660a390ccedcbbf1f2355dce974a9841af106fddcfaba600080a3601655826128ea565b612a2182821061333e565b612a2e601b54821161333e565b601c55826128df565b612a4282821061333e565b612a4f601c54821061333e565b601b55826128d4565b612a6382821061333e565b601d55826128ca565b612a788282111561333e565b601a55826128c0565b612a8d8282111561333e565b601955826128b6565b816008549182167f5a62d22209e370e38eea92cfddcd228e656e6ec139243392a760a7769f5877fd600080a36001600160a01b0319161760085582806128ab565b8211612c11578190612aea601054613124565b601f8111612bc4575b50600090601f8311600114612b5857600092612b4d575b50508160011b916000199060031b1c1916176010555b7fa6f004921c944d4b8bf6e38462b00f36a58d62495d56b51f571ab78f732c9815600080a18480806128a2565b013590508680612b0a565b909250601060005286600020906000935b88601f1985168610612bae57506001945083601f19811610612b94575b505050811b01601055612b20565b0135600019600384901b60f8161c19169055868080612b86565b8282013584559485019460019093019201612b69565b909150601060005286600020601f840160051c8101888510612c0a575b90601f8594930160051c01905b818110612bfb5750612af3565b60008155849350600101612bee565b5080612be1565b634e487b7160e01b600052604160045260246000fd5b600f80546001600160a01b0319169190911790557f0b2d6eb667d0522c3eb86e4288afecae6c11591ffd1345d4d12407e0598bca9b600080a18761289b565b3461031f57604036600319011261031f57611f06612c82612ff6565b6024359033613d5d565b3461031f57606036600319011261031f57612ca5612ff6565b612cad61306a565b60443590811515820361031f5760018060a01b03928391612cd3836005541633146132f3565b15612d77571690811590811591612d6f575b5015612d3257806005549283167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a36001600160a01b031991821617600555600680549091169055005b60405162461bcd60e51b81526020600482015260156024820152744f776e61626c653a207a65726f206164647265737360581b6044820152606490fd5b905083612ce5565b9150501660018060a01b03196006541617600655600080f35b3461031f57600036600319011261031f5760008060018060a01b03600b541660405160208101906306fdde0360e01b825260048152612dce816131fe565b51915afa612dda6143fc565b9015612e3657612dec6103569161498c565b611bbd6034604051809373546170696f63612053696e67756c61726974792d60601b6020830152612e268151809260208686019101613022565b8101036014810184520182613250565b50610356612e4261494b565b612dec565b3461031f57600036600319011261031f57600f546040805163d6d7d52560e01b8152602060048201529182906001600160a01b031681600081612e8c6024820161315e565b03925af18015610bed57600091600091612f89575b50908015612f2b578115612eef5781604092601155807f9f9192b5edb17356c524e08d9e025c8e2f6307e6ea52fb7968faa3081f51c3c8600080a25b42601355825191151582526020820152f35b60405162461bcd60e51b81526020600482015260146024820152734d61726b65743a20696e76616c6964207261746560601b6044820152606490fd5b9050612f3c601354601254906133e2565b4211612f4d57604090601154612edd565b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881c985d19481d1bdbc81bdb1960621b6044820152606490fd5b9050612fa4915060403d604011611127576111178183613250565b82612ea1565b3461031f57604036600319011261031f57602090612fc6612ff6565b612fce61300c565b9060018060a01b03809116600052600384526040600020911660005282526040600020548152f35b600435906001600160a01b038216820361031f57565b602435906001600160a01b038216820361031f57565b60005b8381106130355750506000910152565b8181015183820152602001613025565b9060209161305e81518092818552858086019101613022565b601f01601f1916010190565b60243590811515820361031f57565b9181601f8401121561031f578235916001600160401b03831161031f576020838186019501011161031f57565b60e090600319011261031f576001600160a01b0390600435828116810361031f5791602435908116810361031f5790604435906064359060843560ff8116810361031f579060a4359060c43590565b600981101561310e576000526007602052604060002090565b634e487b7160e01b600052602160045260246000fd5b90600182811c92168015613154575b602083101461313e57565b634e487b7160e01b600052602260045260246000fd5b91607f1691613133565b6010546000929161316e82613124565b9081815260019283811690816000146131c8575060011461318e57505050565b9092935060106000526020928360002092846000945b8386106131b45750505050010190565b8054858701830152940193859082016131a4565b91935050602093945060ff191683830152151560051b010190565b606081019081106001600160401b03821117612c1157604052565b604081019081106001600160401b03821117612c1157604052565b61010081019081106001600160401b03821117612c1157604052565b608081019081106001600160401b03821117612c1157604052565b90601f801991011681019081106001600160401b03821117612c1157604052565b6001600160401b038111612c1157601f01601f191660200190565b92919261329882613271565b916132a66040519384613250565b82948184528183011161031f578281602093846000960137010152565b9181601f8401121561031f578235916001600160401b03831161031f576020808501948460051b01011161031f57565b156132fa57565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b1561334557565b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881b9bdd081d985b1a59607a1b6044820152606490fd5b8181029291811591840414171561339157565b634e487b7160e01b600052601160045260246000fd5b81156133b1570490565b634e487b7160e01b600052601260045260246000fd5b604d811161339157600a0a90565b9190820391821161339157565b9190820180921161339157565b8181039291600013801582851316918412161761339157565b906509184e72a0009182810292818405149015171561339157565b90670de0b6b3a76400009182810292818405149015171561339157565b81156133b157600160ff1b8114600019831416613391570590565b60145461349691613485919061347b906001600160801b0383169061337e565b9060801c906133a7565b91620186a0918291601f549061337e565b0480831061354f576134a890836133d5565b601e546021548301908184116133915783916134c39161337e565b049182810390600080941281831281169183139015161761353b57906134f46134ee6134f993613408565b91613423565b613440565b908082121561353457600160ff1b82146135205703905b80821161351b575090565b905090565b634e487b7160e01b81526011600452602490fd5b5090613510565b634e487b7160e01b83526011600452602483fd5b505050600090565b601454919291613596916135879161357d9161347b906001600160801b0383169061337e565b93601f549061337e565b613590836133c7565b906133a7565b9081831061354f576134f46134ee6135f06135b46135f595876133d5565b936135eb6135e56135dc601e546135d66135cd866133c7565b602154906133e2565b9061337e565b613590846133c7565b916133c7565b6133ef565b613408565b600081121561361857600160ff1b8114613391576000039080821161351b575090565b90613510565b9160018060a01b03809316916000938385526020601781526040918287205490811561376b5787838551613651816131fe565b828152015261365e613e38565b50505050509190506136718615156137a2565b6009541683600c54898b52601882526064878c2054918851948593849263442c159960e01b8452600484015260248301528d60448301525afa90811561376157899161372e575b509161370e61372297989994926136e98861067f6136e0601898620186a0602254049061337e565b601e549061337e565b815190936001600160801b039186916137049184169061337e565b92015116906133a7565b81811061372657035b9783525220546137ee565b9091565b505082613717565b90508381813d831161375a575b6137458183613250565b81010312613756575161370e6136b8565b8880fd5b503d61373b565b85513d8b823e3d90fd5b5086955085949350505050565b5190811515820361031f57565b919082604091031261031f57602061379c83613778565b92015190565b156137a957565b60405162461bcd60e51b815260206004820152601e60248201527f4d61726b65743a2065786368616e676552617465206e6f742076616c696400006044820152606490fd5b6137f98215156137a2565b602060018060a01b0360095416916064600c54604051948593849263442c159960e01b845260048401526024830152600060448301525afa908115610bed57600091613866575b509061067f613852926022549061337e565b620186a0613862601e548361337e565b0491565b906020823d8211613894575b8161387f60209383613250565b8101031261389157505161067f613840565b80fd5b3d9150613872565b6001600160a01b031660008181526018602052604081205490926138bf916137ee565b9183526017602052604083205480156139a05781156139a0578181106139a0578281101561399657601454613908918391610a249161347b906001600160801b0383169061337e565b90620186a092838302928084048514901517156139825761392d9291613590916133d5565b91601b5491601c549361394085856133ef565b80820291848212600160ff1b82141661398257818305149015171561353b5705818482019485129112908015821691151617613520575080821261351b575090565b634e487b7160e01b85526011600452602485fd5b50505050601b5490565b50505090565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03161480613aa7575b15613a01577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f000000000000000000000000000000000000000000000000000000000000000082527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a0815260c081018181106001600160401b03821117612c115760405251902090565b507f000000000000000000000000000000000000000000000000000000000000000046146139d8565b15613ad757565b60405162461bcd60e51b815260206004820152601660248201527545524332303a2062616c616e636520746f6f206c6f7760501b6044820152606490fd5b15613b1c57565b60405162461bcd60e51b815260206004820152601660248201527545524332303a206e6f207a65726f206164647265737360501b6044820152606490fd5b51906001600160a01b038216820361031f57565b519060ff8216820361031f57565b600581101561310e5780613b8d5750565b60018103613bd55760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b6044820152606490fd5b60028103613c225760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606490fd5b600314613c2b57565b60405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608490fd5b9291906fa2a8918ca85bafe22016d0b997e4df60600160ff1b038311613cf45791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa15613ce75781516001600160a01b03811615613ce1579190565b50600190565b50604051903d90823e3d90fd5b50505050600090600390565b60001981146133915760010190565b7fe50de2333c10a9502fcb1d8ae13a51bbf423153dfc63c2b8997665b32154afc360018060a01b038092169160009083825260036020526040822094169384825260205284604082205580a4565b909160207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259160018060a01b03809416938460005260028352604060002095169485600052825280604060002055604051908152a3565b60405190613dc1826131e3565b60006040838281528260208201520152565b60405190613de0826131fe565b6014546001600160801b038116835260801c6020830152565b60405190613e06826131fe565b6025546001600160801b038116835260801c6020830152565b6001600160801b03918216908216019190821161339157565b613e40613db4565b5060006020604051613e51816131fe565b828152015260006020604051613e66816131fe565b828152015260405190613e78826131e3565b602454916001600160401b038316815260208101926001600160401b038160401c16845260801c60408201528092613eae613dd3565b92613eb7613df9565b92600060018060a01b0360095416600e549460018060801b038751166040519063442c159960e01b8252876004830152602482015260006044820152602081606481865afa8015610bed576000906142c4575b8951613f2092506001600160801b0316906133e2565b8061428f575060005b613f3e6001600160401b0382935116426133d5565b948515614265575050426001600160401b031660208a8101919091528801516001600160801b03161561421b57506020670de0b6b3a7640000613fa085613f9b8c6001600160401b038d60018060801b039051169151169061337e565b61337e565b895191900496906001600160801b0390613fbf90828a16908316613e1f565b168952875160405163442c159960e01b815260048101929092526001600160801b031660248201526000604482015291829060649082905afa8015610bed576000906141e7575b875161401c92506001600160801b0316906133e2565b9261404a8461067f620186a0614034601a548a61337e565b60208c01516001600160801b031691900461337e565b6040890180519195916001600160801b03808816929161406d9084908316613e1f565b16905260208801805190916001600160801b039161408d91908316613e1f565b169052806141b2575060005b602a549093848281101561412d576140b190836133d5565b90670de0b6b3a7640000820291808304670de0b6b3a764000014901517156133915761067f6141056140ff6140f16001600160401b039661410f966133a7565b93613f9b602e54958061337e565b836133e2565b91848d511661337e565b168089526001600160401b03602d54168091106141295750565b8852565b909150602b5480821161413f57505050565b614148916133d5565b670de0b6b3a7640000810290808204670de0b6b3a76400001490151715613391576001600160401b039161067f61418b6140ff6140f161419495602c54906133a7565b848d511661337e565b81602d5460401c168082116141aa575b50168852565b9050386141a4565b87516001600160801b0316670de0b6b3a7640000818102929180840490911490151715613391576141e2916133a7565b614099565b506020813d602011614213575b8161420160209383613250565b8101031261031f5761401c9051614006565b3d91506141f4565b9697939450509350506001600160401b038151166001600160401b03602f5416809103614259575b50939261424e613df9565b926000926000929190565b81526001925038614243565b975098505050505092505091614279613dd3565b91614282613df9565b9160009160009190600090565b88516001600160801b0316670de0b6b3a7640000818102929180840490911490151715613391576142bf916133a7565b613f29565b506020813d6020116142f0575b816142de60209383613250565b8101031261031f57613f209051613f0a565b3d91506142d1565b6143b36040602080614308613e38565b93999593909290156143c3575050506001600160401b03602f54166000807f33af5ce86e8438eff54589f85332916444457dfa8685493fbd579b809097026b878a51838152a45b80518482015196909101516001600160801b0319608091821b81166001600160401b0390931667ffffffffffffffff60401b60409990991b9890981697909717919091176024558151919093015190921b84166001600160801b0392831617601455565b83511692015160801b1617602555565b7f33af5ce86e8438eff54589f85332916444457dfa8685493fbd579b809097026b876001600160401b03865116948b51908152a461434f565b3d15614427573d9061440d82613271565b9161441b6040519384613250565b82523d6000602084013e565b606090565b6001600160801b03918216908216039190821161339157565b1561444c57565b60405162461bcd60e51b8152602060048201526018602482015277084d2ce84c2dcce7440d8cadccee8d040dad2e6dac2e8c6d60431b6044820152606490fd5b919082604091031261031f576020825192015190565b91909160018060a01b0392836009541690600c5460409485519063442c159960e01b82526004928084840152602496878401526000958660448501526020958685606481855afa9485156147f557918b8b928a9485986147b7575b509060a4911694835194859384926311a5cc7760e31b84528b8401528d30908401528760448401528960648401528160848401525af180156147ad57614791575b5088600d5416908851926370a0823160e01b94858552308786015287858b81875afa9485156147875789888d948f948c97958f95859b61473f575b50906145ba9291600b54169751998a9889978896635cd3dc1560e01b885233908801528601526044850152606484015260a0608484015260a4830190613045565b03925af18015614735576146fd575b508388600d54169287895180958193825230888301525afa80156146f35785906146be575b6145f892506133d5565b95861561467e5790606483926009541691600e54928989519889958694638eb22cdd60e01b86528501528301528660448301525afa93841561467357508193614642575b50505091565b9091809350813d831161466c575b61465a8183613250565b8101031261389157505138808061463c565b503d614650565b51913d9150823e3d90fd5b50818460649387519362461bcd60e51b85528401528201527f53474c3a206f6e436f6c6c61746572616c5265636569766572206661696c65646044820152fd5b50908381813d83116146ec575b6146d58183613250565b810103126146e857906145f891516145ee565b8480fd5b503d6146cb565b87513d87823e3d90fd5b8481813d831161472e575b6147128183613250565b8101031261472a5761472390613778565b50386145c9565b8580fd5b503d614708565b88513d88823e3d90fd5b96999a50509550959250505081813d8311614780575b61475f8183613250565b8101031261375657928989886145ba8f9897968f968d98519a909192614579565b503d614755565b8b513d8b823e3d90fd5b6147a790893d8b11610c6a57610c5c8183613250565b5061453e565b89513d89823e3d90fd5b935096505091508681813d83116147ee575b6147d38183613250565b810103126147ea57519387918a918c9060a46144fd565b8780fd5b503d6147c9565b8a513d8a823e3d90fd5b9190811015610b905760051b0190565b919060018060a01b0380600094168452602060178152604085205490811561491257601881526040862054801561490b5781614849613dd3565b9460095416916064600c54604051948593849263442c159960e01b8452600484015260248301528b60448301525afa9687156148ff5780976148c9575b50506137046148ae6148a56148c4969798620186a0602254049061337e565b601f549061337e565b95613f9b60018060801b0394858751169061337e565b111590565b9096508187813d83116148f8575b6148e18183613250565b8101031261389157509451946137046148ae614886565b503d6148d7565b604051903d90823e3d90fd5b5050505050565b5060019450505050565b9081526001600160a01b0391821660208201529116604082015260006060820152608081019190915260a00190565b60405190614958826131fe565b60038252623f3f3f60e81b6020830152565b908151811015610b90570160200190565b60ff1660ff81146133915760010190565b805160408110614a075750805181019060208181840193031261031f576020810151906001600160401b03821161031f570181603f8201121561031f5760208101516149d781613271565b926149e56040519485613250565b8184526040828401011161031f57614a04916040602085019101613022565b90565b602092908303614af5576000805b60ff81168581109081614ad6575b5015614a3757614a329061497b565b614a15565b9260ff80941692614a4784613271565b93614a556040519586613250565b808552614a64601f1991613271565b013687860137825b85811687811080614ab9575b15614aae57614aa99190614aa36001600160f81b0319614a98838861496a565b5116871a918861496a565b5361497b565b614a6c565b505094505050905090565b506001600160f81b0319614acd828661496a565b51161515614a78565b6001600160f81b03199150614aeb908661496a565b5116151538614a23565b915050614a0461494b56feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa26469706673582212207b12888fbe7633bd2c9a1e7f4f95574950e6de79e28d8cc01460eab816d1c2f064736f6c63430008120033"; + "0x6101408060405234620001e5576200001781620001ea565b601381526001602082017f546170696f63612053696e67756c617269747900000000000000000000000000815260206040516200005481620001ea565b8381520192603160f81b845251902091208160e052610100918183524660a0526040519160208301907f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f92838352604085015260608401524660808401523060a084015260a0835260c083019280841060018060401b03851117620001cf5760408490525190206080523060c052610120908152600580546001600160a01b0319163390811790915560007f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a362013880601b5562015f90601c55612710601d55612ee06020557f0bd4060688a1800ae986e4840aebc924bb40b5bf44de4583df2257220b54b77c6026557f7d1dc38e60930664f8cbf495da6556ca091d2f92d6550877750c049864b182306027556161a86028556032602f55614bf0928362000207843960805183613a4f015260a05183613b1a015260c05183613a19015260e05183613a9e01525182613ac401525181613a7b0152f35b634e487b7160e01b600052604160045260246000fd5b600080fd5b604081019081106001600160401b03821117620001cf5760405256fe608080604052600436101561001357600080fd5b60e0600035811c918262a02a201461301a5750816302ce728f14612eb757816306fdde0314612e00578163078dfbe714612cfc578163095ea7b314612cd65781630c4e84f014612bbc57816318160ddd14612b9b5781631c9e379b14612b615781631da8bf1014612aaa57816323b872dd14612906578163313ce56714612876578163331960ff1461285857816334d441d01461283a5781633644e5151461281f57816337b6b7b91461280157816338d52e0f146127d85781633ba0b9a9146127ba5781633f741adb1461279657816340626d8b1461277857816344de240a1461275a578163473e3ce71461273c57816348e4163e146127025781634d7f2a34146126e45781634e71e0c814612636578163529898f21461261957816352f353eb146125f257816355140232146125cb57816355c2ab94146125a157816357935462146125835781635dfe04e8146125245781636c3d8b8f146124fb57816370a08231146124c1578163727785471461248b57816374645ff3146124605781637dc0d1d0146124375781637ecebe00146123fd5781637fa0b84e146123cc578163821226e8146123ae5781638285ef401461237c5781638c5d0ed31461235e5781638da5cb5b14612335578163910dd7c8146120eb578163959916dc146120cd57816395d89b411461201357816399a9702814611fe45781639c5d719214611fc65781639e15e89f14611f81578163a28e6b8214611abc578163a9059cbb146119da578163b0e21e8a146119bc578163b27c0e7414611981578163bb4cfe3b14611963578163ce8849ed1461193a578163d3fb2a38146114e1578163d505accf1461135c57508063d8dfeb4514611333578063dd62ed3e146112e2578063de406577146112b9578063e0996cb61461129b578063e30c397814611272578063e5644d8b146103cf578063ea64dd56146103b1578063eec0f42e14610393578063f42760b714610375578063f8ba4cff1461035a578063f9557ccb146103245763ffe04c661461030157600080fd5b3461031f57600036600319011261031f576020602954604051908152f35b600080fd5b3461031f57600036600319011261031f57602454604080516001600160801b038316815260809290921c602083015290f35b0390f35b3461031f57600036600319011261031f57610373614372565b005b3461031f57600036600319011261031f576020602a54604051908152f35b3461031f57600036600319011261031f576020600c54604051908152f35b3461031f57600036600319011261031f576020601f54604051908152f35b3461031f57608036600319011261031f576004356001600160401b03811161031f576103ff903690600401613333565b906024356001600160401b03811161031f5761041f903690600401613333565b6044356001600160401b03811161031f5761043e903690600401613333565b90916064356001600160401b03811161031f5761045f903690600401613333565b9290916004600052600760205260ff6040600020541661123c5787156111fc578088036111c1576104918289146144bf565b61049c8285146144bf565b600f5460405163d6d7d52560e01b8152602060048201526010549097916001600160a01b03169088906000906104d181613167565b9081602485015260018116908160001461119f5750600114611156575b50918160008160409503925af1968715610c1557600090600098611122575b508781611118575b501561110e57866011555b610528614372565b60009860005b818110610578578a1561053d57005b60405162461bcd60e51b815260206004820152601360248201527214d1d30e881b9bc81d5cd95c9cc8199bdd5b99606a1b6044820152606490fd5b61058381838c614879565b356001600160a01b038116810361031f5761059e8a82614889565b156105b3575b506105ae90613d70565b61052e565b9a6105bd90613d70565b9a6105c9828686614879565b35906105d683888c614879565b35906001600160a01b038216820361031f5789841015610bb8578360051b890135601e198a36030181121561031f578901926001600160401b0384351161031f5783353603602085011361031f5761062e8d8361390c565b918d156110c95760018060a01b03600954166020600c5460018060a01b03841660005260188252606460406000205491604051948593849263442c159960e01b845260048401526024830152600060448301525afa908115610c15578f90600092611093575b506106a56106aa92602154906133ee565b613417565b9360018060a01b03821660005260176020526106cb856040600020546134cb565b80601d5480611074575b508085111561106d575b6001600160a01b0384166000908152601760205260409020549081811115611064575080965b111561102f578f938181111561102857505b6001600160a01b038316600090815260176020526040902054908181111561101d57506107448180613445565b6001600160a01b038416600090815260176020526040902055610765613e43565b60208101516001600160801b0316610fe85750602081965b60646107a361079a60018060a01b036009541698600c54946133ee565b60215490613417565b916040519788938492638eb22cdd60e01b845260048401526024830152600060448301525afa938415610c1557600094610fb4575b506001600160a01b0383166000908152601860205260409020548411610f6f5760018060a01b03831660005260186020526040600020610819858254613445565b90558515610f3b57601454906108606001600160801b0361083e8982168286166144a6565b16926001600160801b0319926001600160801b0316908316841760801c6144a6565b60801b161760145560018060a01b0360095416956020600e546064604051809a8193638eb22cdd60e01b835260048301528a6024830152600160448301525afa968715610c1557600097610f03575b508691610991610998926015805488808211600014610ef9576108d191613445565b905b5560018060a01b0386166000526025806020526040600020602790815490816000526020526040600020548a11600014610ec4575060018060a01b0388166000528160205260406000209054600052602052600060408120555b60018060a01b03871660005280602052604060002090602691825490816000526020526040600020548811600014610e90575060018060a01b03881660005260205260406000209054600052602052600060408120555b36906020813591016132cf565b908561451c565b5010610e4b57600954600e54604051627eeac760e11b815230600482015260248101919091526001600160a01b039091169390602081604481885afa8015610c1557600090610e17575b6024546109f992506001600160801b031690613445565b9580871115610e0757610a1b610a13620186a09289613445565b925b836133ee565b0495610a278783613445565b9485610c99575b5086610c21575b610a4f87610a4a8760018060801b0394613445565b613445565b602454916001600160801b0391610a699116828416613e8f565b6001600160801b03199092169116176024908155600d5460095460405163095ea7b360e01b81526001600160a01b039182166004820152600093810184905292602092849260449284929091165af18015610c155787918691610bce575b50610a4a90610ad593613445565b6040516000815230907f30a8c4f9ab5af7e1309ca87c32377d1a83366c5990472dbf9d262450eae14e3860203092a460405190610b1182613241565b6001825260203681840137815115610bb8576001600160a01b03166020820190815260405191518291906000905b808210610b96575050508190039020604080519384526020840194909452928201526105ae9392919033907f85b91d472e69b2cfe848ed50eb5d8582ae96c22057b6e46250255dd6f6c3519290606090a4906105a4565b82516001600160a01b0316845260209384019390920191600190910190610b3f565b634e487b7160e01b600052603260045260246000fd5b9150506020813d602011610c0d575b81610bea60209383613293565b8101031261031f57610a4a85610ad593610c048a946137e8565b50935090610ac7565b3d9150610bdd565b6040513d6000823e3d90fd5b610c5660408860018060a01b0360095416600e5460008451809681958294634d4d7cbd60e11b84523390309060048601614996565b03925af18015610c1557610c6b575b50610a35565b610c8c9060403d604011610c92575b610c848183613293565b810190614506565b50610c65565b503d610c7a565b600d5460405163095ea7b360e01b8152600481019290925260006024830181905260209183916044918391906001600160a01b03165af18015610c1557610dce575b50600d5460095460405163095ea7b360e01b81526001600160a01b03918216600482015260001960248201529160209183916044918391600091165af18015610c1557610d95575b50600954600e54600a5460408051634d4d7cbd60e11b815293909284926001600160a01b039283169284926000928492610d68928f9290911690309060048601614996565b03925af18015610c155715610a2e57610d8f9060403d604011610c9257610c848183613293565b50610a2e565b6020813d602011610dc6575b81610dae60209383613293565b8101031261031f57610dbf906137e8565b5038610d23565b3d9150610da1565b6020813d602011610dff575b81610de760209383613293565b8101031261031f57610df8906137e8565b5038610cdb565b3d9150610dda565b50620186a0610a1b600092610a15565b506020813d602011610e43575b81610e3160209383613293565b8101031261031f576109f990516109e2565b3d9150610e24565b60405162461bcd60e51b815260206004820152601b60248201527f53474c3a20617373657420616d6f756e74206e6f742076616c696400000000006044820152606490fd5b915060018060a01b0388166000526020526040600020906000526020526040600020610ebd868254613445565b9055610984565b905060018060a01b038816600052816020526040600020906000526020526040600020610ef2898254613445565b905561092d565b50506000906108d3565b909196506020813d602011610f33575b81610f2060209383613293565b8101031261031f575195906109986108af565b3d9150610f13565b60405162461bcd60e51b815260206004820152600c60248201526b14d1d30e881cdbdb1d995b9d60a21b6044820152606490fd5b60405162461bcd60e51b815260206004820152601a60248201527f53474c3a206e6f7420656e6f75676820636f6c6c61746572616c0000000000006044820152606490fd5b9093506020813d602011610fe0575b81610fd060209383613293565b8101031261031f575192386107d8565b3d9150610fc3565b805160209161101791611004906001600160801b0316856133ee565b908301516001600160801b031690613417565b9661077d565b610744908092613445565b9050610717565b60405162461bcd60e51b815260206004820152600d60248201526c14d1d30e88189859081919589d609a1b6044820152606490fd5b90508096610705565b50836106df565b90620186a061108661108d93836133ee565b0490613452565b386106d5565b9150506020813d6020116110c1575b816110af60209383613293565b8101031261031f57518e6106a5610694565b3d91506110a2565b60405162461bcd60e51b815260206004820152601b60248201527f53474c3a2065786368616e676552617465206e6f742076616c696400000000006044820152606490fd5b6011549650610520565b905015158a610515565b905061114791975060403d60401161114f575b61113f8183613293565b8101906137f5565b96908a61050d565b503d611135565b601060009081529150600080516020614b9b8339815191525b8183106111835750508101604401816104ee565b8060209294604485600194549201015201910190918a9261116f565b60ff191660448581019190915291151560051b840190910191508290506104ee565b60405162461bcd60e51b8152602060048201526013602482015272084847440d8cadccee8d040dad2e6dac2e8c6d606b1b6044820152606490fd5b60405162461bcd60e51b815260206004820152601860248201527742423a206e6f7468696e6720746f206c697175696461746560401b6044820152606490fd5b60405162461bcd60e51b815260206004820152600e60248201526d13585c9ad95d0e881c185d5cd95960921b6044820152606490fd5b3461031f57600036600319011261031f576006546040516001600160a01b039091168152602090f35b3461031f57600036600319011261031f576020601d54604051908152f35b3461031f57600036600319011261031f576009546040516001600160a01b039091168152602090f35b3461031f57604036600319011261031f576112fb613066565b61130361307c565b9060018060a01b038091166000526002602052604060002091166000526020526020604060002054604051908152f35b3461031f57600036600319011261031f57600b546040516001600160a01b039091168152602090f35b3461031f5761136a366130e9565b8394969793929192421161149c57611448926114409260018060a01b0395868b16978860005260046020526040600020918254926113a784613d70565b90556040519160208301937f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e2668552600060408501528b60608501528a8d1660808501528d60a085015260c08401528183015281526114048161325c565b51902061140f613a16565b9060405190602082019261190160f01b8452602283015260428201526042815261143881613278565b519020613ceb565b919091613bec565b16036114575761037392613dcd565b60405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152606490fd5b60405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b3461031f5761016036600319011261031f576001600160a01b036004358181169081900361031f576001600160401b039160243583811161031f5761152a903690600401613306565b90936044359383851680950361031f5761154984600554163314613363565b806118fb575b508161179a575b505090809250611759575b505060643580611741575b5060843580611729575b5060a43580611712575b5060c435806116ee575b5060e435806116ca575b506101043580611698575b506101243580611624575b5061014435806115b657005b601e5481106115c457601f55005b60405162461bcd60e51b815260206004820152603260248201527f4d61726b65743a206c69717569646174696f6e436f6c6c61746572616c697a616044820152711d1a5bdb94985d19481d1bdbc81cdb585b1b60721b6064820152608490fd5b611633620186a08211156133ae565b601f54811161164557601e55806115aa565b60405162461bcd60e51b815260206004820152602560248201527f4d61726b65743a20636f6c6c61746572616c697a6174696f6e5261746520746f6044820152646f2062696760d81b6064820152608490fd5b806016547fae6e0ab3b95f0a53ff9660a390ccedcbbf1f2355dce974a9841af106fddcfaba600080a36016558061159f565b6116d8620186a082106133ae565b6116e5601b5482116133ae565b601c5580611594565b6116fc620186a082106133ae565b611709601c5482106133ae565b601b558061158a565b611720620186a082106133ae565b601d5580611580565b611738620186a08211156133ae565b601a5580611576565b611750620186a08211156133ae565b6019558061156c565b816008549182167f5a62d22209e370e38eea92cfddcd228e656e6ec139243392a760a7769f5877fd600080a36001600160a01b031916176008558080611561565b81116118e5576117ab601054613167565b601f8111611894575b506000601f821160011461181d5781929394600092611812575b50508160011b916000199060031b1c1916176010555b7fa6f004921c944d4b8bf6e38462b00f36a58d62495d56b51f571ab78f732c9815600080a181908380611556565b0135905084806117ce565b60106000908152601f19831695600080516020614b9b83398151915292909160205b88821061187c57505083600195969710611862575b505050811b016010556117e4565b0135600019600384901b60f8161c19169055848080611854565b8060018496829495870135815501950192019061183f565b6010600052600080516020614b9b833981519152601f830160051c8101602084106118de575b601f90920160051c01905b8181106118d257506117b4565b600081556001016118c5565b50806118ba565b634e487b7160e01b600052604160045260246000fd5b600f80546001600160a01b0319169190911790557f0b2d6eb667d0522c3eb86e4288afecae6c11591ffd1345d4d12407e0598bca9b600080a18561154f565b3461031f57600036600319011261031f576008546040516001600160a01b039091168152602090f35b3461031f57600036600319011261031f576020601e54604051908152f35b3461031f57600036600319011261031f576060602354604051906001600160401b0380821683528160401c16602083015260801c6040820152f35b3461031f57600036600319011261031f576020601a54604051908152f35b3461031f57604036600319011261031f576119f3613066565b602435908115801590611aaa575b611a37575b6040519182526001600160a01b0316903390600080516020614b7b83398151915290602090a3602060405160018152f35b336000526001602052604060002054611a5283821015613b40565b6001600160a01b038216908333839003611a6f575b505050611a06565b611a7e91610a4a841515613b85565b3360005260016020526040600020556000526040600020611aa0838254613452565b9055828083611a67565b50336001600160a01b03821614611a01565b3461031f57608036600319011261031f57611ad5613066565b611add61307c565b60443591906001600160a01b0390818416840361031f57606435936001600160401b03851161031f57611b17611b56953690600401613306565b9190611b2885600554163314613363565b84600f54169560405163d6d7d52560e01b81526040816020998a60048301528160008160249e8f82016131a1565b03925af1908115610c1557600090600092611f5f575b508181611f55575b5015611f4c57806011555b15611efd578590611b8e614372565b16928360005260178752611bb0604060002054620186a06110868a54836133ee565b87896064896009541693611bcd61079a600c5492601154906133ee565b946040519586948593638eb22cdd60e01b85526004850152830152600060448301525afa908115610c1557600091611ed0575b50846000526018885260406000205411611e8e57611dad611d62856000989695611d5c8a999796611d9f9660258e8d9a8b526018815260408b205496611cfb611c47613e43565b828e5260178452611cd6611cad8f604090205492600087604051611c6a81613241565b82815201528681019360018060801b03928382818094868a8381511615600014611e4157505081611ca0915b16828851166144a6565b16855216828751166144a6565b169384905251601480546001600160801b0319166001600160801b039390921692909216179055565b601480546001600160801b031660809290921b6001600160801b031916919091179055565b808c52601782528b604081205582825260408c206026548d5282528b6040812055808c5260188252611d3360408d2054601554613445565b6015558b52601881528a6040812055528d60408a20906027548b525288604081205536916132cf565b9161451c565b600d546040805163a9059cbb60e01b8d82019081526001600160a01b039099168e8201908152602081019490945291909816979094859350910190565b03601f198101835282613293565b51925af1611db9614476565b81611e09575b5015611dc757005b601c6064926040519262461bcd60e51b845260048401528201527f426f72696e6745524332303a205472616e73666572206661696c6564000000006044820152fd5b80915051828115918215611e22575b5050905083611dbf565b838092935001031261031f5781611e3991016137e8565b808285611e18565b611ca092611e7a611e7086611e67611e5d8280985116866133ee565b8287511690613417565b945116846133ee565b848c511690613417565b1015611c9657611e8990613d70565b611c96565b606488886040519162461bcd60e51b83528160048401528201527f42696742616e673a2043616e6e6f7420666f726365206c6971756964617465646044820152fd5b90508781813d8311611ef6575b611ee78183613293565b8101031261031f575189611c00565b503d611edd565b60405162461bcd60e51b8152600481018890526022818a01527f42423a2063757272656e742065786368616e676552617465206e6f742076616c6044820152611a5960f21b6064820152608490fd5b50601154611b7f565b905015158a611b74565b9050611f7a915060403d60401161114f5761113f8183613293565b908a611b6c565b3461031f57604036600319011261031f57610356611fa9611fa0613066565b6024359061368e565b604080519384526020840192909252908201529081906060820190565b3461031f57600036600319011261031f576020602b54604051908152f35b3461031f57604036600319011261031f57602061200b612002613066565b6024359061390c565b604051908152f35b3461031f57600036600319011261031f5760008060018060a01b03600b541660405160208101906395d89b4160e01b82526004815261205181613241565b51915afa61205d614476565b90156120bc5761206f61035691614a06565b6120a86023604051809362746d2d60e81b60208301526120988151809260208686019101613092565b8101036003810184520182613293565b6040519182916020835260208301906130b5565b506103566120c86149c5565b61206f565b3461031f57600036600319011261031f576020602f54604051908152f35b3461031f57604036600319011261031f576004356001600160401b03811161031f573660238201121561031f5761212c9036906024816004013591016132cf565b9060243561ffff811680910361031f5761010091828480518101031261031f5760206121598186016137e8565b9161216660408701613bca565b9061217360608801613bca565b9660808101519660a08201519261218c60c08401613bde565b91818401519301519360018060a01b03808097169b16988142116122f0579289888d9897946122679794611440978f8e6000146122c9577f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e266955b8d6000526004865260406000209283549361220085613d70565b905560405196870197885260408701528d6060870152608086015260a085015260c08401528183015281526122348161325c565b51902061223f613a16565b90604051908a82019261190160f01b8452602283015260428201526042815261143881613278565b160361228557501561227c5761037392613dcd565b61037392613d7f565b6064906040519062461bcd60e51b82526004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152fd5b7f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d6956121e6565b60405162461bcd60e51b815260048101899052601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b3461031f57600036600319011261031f576005546040516001600160a01b039091168152602090f35b3461031f57600036600319011261031f576020601b54604051908152f35b3461031f57600036600319011261031f57601454604080516001600160801b038316815260809290921c602083015290f35b3461031f57600036600319011261031f576020602d54604051908152f35b3461031f57604036600319011261031f576123f26123e8613066565b6024359033613d7f565b602060405160018152f35b3461031f57602036600319011261031f576001600160a01b0361241e613066565b1660005260046020526020604060002054604051908152f35b3461031f57600036600319011261031f57600f546040516001600160a01b039091168152602090f35b3461031f57600036600319011261031f576103566040516120a881612484816131a1565b0382613293565b3461031f57602036600319011261031f57600435600981101561031f5760ff6124b5602092613138565b54166040519015158152f35b3461031f57602036600319011261031f576001600160a01b036124e2613066565b1660005260016020526020604060002054604051908152f35b3461031f57600036600319011261031f57600a546040516001600160a01b039091168152602090f35b3461031f57600036600319011261031f5761253d613e24565b506080612548613ea8565b509350505050604051916001600160401b0380825116845260208201511660208401526040600180861b039101511660408301526060820152f35b3461031f57600036600319011261031f576020601c54604051908152f35b3461031f57600036600319011261031f5760206001600160401b03602c5460401c16604051908152f35b3461031f57600036600319011261031f5760206001600160401b03602c5416604051908152f35b3461031f57600036600319011261031f5760206001600160401b03602e5416604051908152f35b3461031f57600036600319011261031f5760208054604051908152f35b3461031f57600036600319011261031f576006546001600160a01b0390818116338190036126a057806005549384167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a36001600160a01b03199283161760055516600655005b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b3461031f57600036600319011261031f576020602854604051908152f35b3461031f57602036600319011261031f576001600160a01b03612723613066565b1660005260176020526020604060002054604051908152f35b3461031f57600036600319011261031f576020601554604051908152f35b3461031f57600036600319011261031f576020600e54604051908152f35b3461031f57600036600319011261031f576020601654604051908152f35b3461031f57606036600319011261031f57602061200b6044356024356004356135c7565b3461031f57600036600319011261031f576020601154604051908152f35b3461031f57600036600319011261031f57600d546040516001600160a01b039091168152602090f35b3461031f57600036600319011261031f576020601254604051908152f35b3461031f57600036600319011261031f57602061200b613a16565b3461031f57600036600319011261031f576020601954604051908152f35b3461031f57600036600319011261031f576020601354604051908152f35b3461031f57600036600319011261031f5760008060018060a01b03600d5416604051602081019063313ce56760e01b8252600481526128b481613241565b51915afa6128c0614476565b90806128fb575b156128f15760208180518101031261031f576128e66020809201613bde565b60ff60405191168152f35b50602060126128e6565b5060208151146128c7565b3461031f57606036600319011261031f5761291f613066565b61292761307c565b6044359081612964575b6040519182526001600160a01b03908116921690600080516020614b7b83398151915290602090a3602060405160018152f35b60018060a01b0380841680600052602060018152846040600020549361298c82861015613b40565b8516938484036129a1575b5050505050612931565b836000526002835260406000203360005283526040600020546000198103612a15575b5084926129ec600080516020614b7b833981519152979593600193610a4a6020991515613b85565b92600052526040600020556000526040600020612a0a858254613452565b905591858481612997565b90918110612a6a57602094926129ec88600080516020614b7b833981519152989694612a4382600196613445565b866000526002855260406000203360005285526040600020559350939597505092946129c4565b60405162461bcd60e51b815260048101849052601860248201527745524332303a20616c6c6f77616e636520746f6f206c6f7760401b6044820152606490fd5b3461031f57612ab8366130e9565b8394969793929192421161149c57612b52926114409260018060a01b0395868b1697886000526004602052604060002091825492612af584613d70565b90556040519160208301937f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d68552600060408501528b60608501528a8d1660808501528d60a085015260c08401528183015281526114048161325c565b16036114575761037392613d7f565b3461031f57602036600319011261031f576001600160a01b03612b82613066565b1660005260186020526020604060002054604051908152f35b3461031f57600036600319011261031f57602060245460801c604051908152f35b3461031f57604036600319011261031f57600435600981101561031f57612be16130da565b6008549091906001600160a01b03163303612c9a5760ff612c0182613138565b54161515911515918214612c6057808260ff612c1f612c4e94613138565b54161515827feeec81de25875ce1725479bb76f720a8defdb43dea041919ae37bb4aae9847c0600080a4613138565b9060ff80198354169116179055600080f35b60405162461bcd60e51b81526020600482015260126024820152714d61726b65743a2073616d6520737461746560701b6044820152606490fd5b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881d5b985d5d1a1bdc9a5e995960621b6044820152606490fd5b3461031f57604036600319011261031f576123f2612cf2613066565b6024359033613dcd565b3461031f57606036600319011261031f57612d15613066565b612d1d6130da565b60443590811515820361031f5760018060a01b03928391612d4383600554163314613363565b15612de7571690811590811591612ddf575b5015612da257806005549283167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a36001600160a01b031991821617600555600680549091169055005b60405162461bcd60e51b81526020600482015260156024820152744f776e61626c653a207a65726f206164647265737360581b6044820152606490fd5b905083612d55565b9150501660018060a01b03196006541617600655600080f35b3461031f57600036600319011261031f5760008060018060a01b03600b541660405160208101906306fdde0360e01b825260048152612e3e81613241565b51915afa612e4a614476565b9015612ea657612e5c61035691614a06565b6120a86034604051809373546170696f63612053696e67756c61726974792d60601b6020830152612e968151809260208686019101613092565b8101036014810184520182613293565b50610356612eb26149c5565b612e5c565b3461031f57600036600319011261031f57600f546040805163d6d7d52560e01b8152602060048201529182906001600160a01b031681600081612efc602482016131a1565b03925af18015610c1557600091600091612ff9575b50908015612f9b578115612f5f5781604092601155807f9f9192b5edb17356c524e08d9e025c8e2f6307e6ea52fb7968faa3081f51c3c8600080a25b42601355825191151582526020820152f35b60405162461bcd60e51b81526020600482015260146024820152734d61726b65743a20696e76616c6964207261746560601b6044820152606490fd5b9050612fac60135460125490613452565b4211612fbd57604090601154612f4d565b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881c985d19481d1bdbc81bdb1960621b6044820152606490fd5b9050613014915060403d60401161114f5761113f8183613293565b82612f11565b3461031f57604036600319011261031f57602090613036613066565b61303e61307c565b9060018060a01b03809116600052600384526040600020911660005282526040600020548152f35b600435906001600160a01b038216820361031f57565b602435906001600160a01b038216820361031f57565b60005b8381106130a55750506000910152565b8181015183820152602001613095565b906020916130ce81518092818552858086019101613092565b601f01601f1916010190565b60243590811515820361031f57565b60e090600319011261031f576001600160a01b0390600435828116810361031f5791602435908116810361031f5790604435906064359060843560ff8116810361031f579060a4359060c43590565b6009811015613151576000526007602052604060002090565b634e487b7160e01b600052602160045260246000fd5b90600182811c92168015613197575b602083101461318157565b634e487b7160e01b600052602260045260246000fd5b91607f1691613176565b601054600092916131b182613167565b90818152600192838116908160001461320b57506001146131d157505050565b9092935060106000526020928360002092846000945b8386106131f75750505050010190565b8054858701830152940193859082016131e7565b91935050602093945060ff191683830152151560051b010190565b606081019081106001600160401b038211176118e557604052565b604081019081106001600160401b038211176118e557604052565b61010081019081106001600160401b038211176118e557604052565b608081019081106001600160401b038211176118e557604052565b90601f801991011681019081106001600160401b038211176118e557604052565b6001600160401b0381116118e557601f01601f191660200190565b9291926132db826132b4565b916132e96040519384613293565b82948184528183011161031f578281602093846000960137010152565b9181601f8401121561031f578235916001600160401b03831161031f576020838186019501011161031f57565b9181601f8401121561031f578235916001600160401b03831161031f576020808501948460051b01011161031f57565b1561336a57565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b156133b557565b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881b9bdd081d985b1a59607a1b6044820152606490fd5b8181029291811591840414171561340157565b634e487b7160e01b600052601160045260246000fd5b8115613421570490565b634e487b7160e01b600052601260045260246000fd5b604d811161340157600a0a90565b9190820391821161340157565b9190820180921161340157565b8181039291600013801582851316918412161761340157565b906509184e72a0009182810292818405149015171561340157565b90670de0b6b3a76400009182810292818405149015171561340157565b811561342157600160ff1b8114600019831416613401570590565b601454613506916134f591906134eb906001600160801b038316906133ee565b9060801c90613417565b91620186a0918291601f54906133ee565b048083106135bf576135189083613445565b601e54602054830190818411613401578391613533916133ee565b04918281039060008094128183128116918313901516176135ab579061356461355e61356993613478565b91613493565b6134b0565b90808212156135a457600160ff1b82146135905703905b80821161358b575090565b905090565b634e487b7160e01b81526011600452602490fd5b5090613580565b634e487b7160e01b83526011600452602483fd5b505050600090565b601454919291613606916135f7916135ed916134eb906001600160801b038316906133ee565b93601f54906133ee565b61360083613437565b90613417565b908183106135bf5761356461355e6136606136246136659587613445565b9361365b61365561364c601e5461364661363d86613437565b60205490613452565b906133ee565b61360084613437565b91613437565b61345f565b613478565b600081121561368857600160ff1b8114613401576000039080821161358b575090565b90613580565b9160018060a01b0380931691600093838552602060178152604091828720549081156137db57878385516136c181613241565b82815201526136ce613ea8565b50505050509190506136e1861515613812565b6009541683600c54898b52601882526064878c2054918851948593849263442c159960e01b8452600484015260248301528d60448301525afa9081156137d157899161379e575b509161377e6137929798999492613759886106a5613750601898620186a060215404906133ee565b601e54906133ee565b815190936001600160801b03918691613774918416906133ee565b9201511690613417565b81811061379657035b97835252205461385e565b9091565b505082613787565b90508381813d83116137ca575b6137b58183613293565b810103126137c6575161377e613728565b8880fd5b503d6137ab565b85513d8b823e3d90fd5b5086955085949350505050565b5190811515820361031f57565b919082604091031261031f57602061380c836137e8565b92015190565b1561381957565b60405162461bcd60e51b815260206004820152601e60248201527f4d61726b65743a2065786368616e676552617465206e6f742076616c696400006044820152606490fd5b613869821515613812565b602060018060a01b0360095416916064600c54604051948593849263442c159960e01b845260048401526024830152600060448301525afa908115610c15576000916138d6575b50906106a56138c292602154906133ee565b620186a06138d2601e54836133ee565b0491565b906020823d8211613904575b816138ef60209383613293565b810103126139015750516106a56138b0565b80fd5b3d91506138e2565b6001600160a01b0316600081815260186020526040812054909261392f9161385e565b918352601760205260408320548015613a10578115613a1057818110613a105782811015613a0657601454613978918391610a4a916134eb906001600160801b038316906133ee565b90620186a092838302928084048514901517156139f25761399d929161360091613445565b91601b5491601c54936139b0858561345f565b80820291848212600160ff1b8214166139f25781830514901517156135ab5705818482019485129112908015821691151617613590575080821261358b575090565b634e487b7160e01b85526011600452602485fd5b50505050601b5490565b50505090565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03161480613b17575b15613a71577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f000000000000000000000000000000000000000000000000000000000000000082527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a0815260c081018181106001600160401b038211176118e55760405251902090565b507f00000000000000000000000000000000000000000000000000000000000000004614613a48565b15613b4757565b60405162461bcd60e51b815260206004820152601660248201527545524332303a2062616c616e636520746f6f206c6f7760501b6044820152606490fd5b15613b8c57565b60405162461bcd60e51b815260206004820152601660248201527545524332303a206e6f207a65726f206164647265737360501b6044820152606490fd5b51906001600160a01b038216820361031f57565b519060ff8216820361031f57565b60058110156131515780613bfd5750565b60018103613c455760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b6044820152606490fd5b60028103613c925760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606490fd5b600314613c9b57565b60405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608490fd5b9291906fa2a8918ca85bafe22016d0b997e4df60600160ff1b038311613d645791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa15613d575781516001600160a01b03811615613d51579190565b50600190565b50604051903d90823e3d90fd5b50505050600090600390565b60001981146134015760010190565b7fe50de2333c10a9502fcb1d8ae13a51bbf423153dfc63c2b8997665b32154afc360018060a01b038092169160009083825260036020526040822094169384825260205284604082205580a4565b909160207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259160018060a01b03809416938460005260028352604060002095169485600052825280604060002055604051908152a3565b60405190613e3182613226565b60006040838281528260208201520152565b60405190613e5082613241565b6014546001600160801b038116835260801c6020830152565b60405190613e7682613241565b6024546001600160801b038116835260801c6020830152565b6001600160801b03918216908216019190821161340157565b613eb0613e24565b5060006020604051613ec181613241565b828152015260006020604051613ed681613241565b8281520152604051613ee781613226565b6023546001600160401b03811682526001600160401b038160401c16602083015260801c60408201528091613f1a613e43565b91613f23613e69565b600954600e54825160405163442c159960e01b8152600481018390526001600160801b03909116602482015260006044820181905293959194919391926001600160a01b031690602081606481855afa8015610c155760009061433e575b8851613f9792506001600160801b031690613452565b80614309575060005b80613fb86001600160401b0360208701511642613445565b9485156142df575050426001600160401b031660208a8101919091528801516001600160801b03161561429557506020670de0b6b3a764000061401a856140158c6001600160401b038d60018060801b03905116915116906133ee565b6133ee565b895191900496906001600160801b039061403990828a16908316613e8f565b168952875160405163442c159960e01b815260048101929092526001600160801b031660248201526000604482015291829060649082905afa8015610c1557600090614261575b875161409692506001600160801b031690613452565b926140c4846106a5620186a06140ae601a548a6133ee565b60208c01516001600160801b03169190046133ee565b6040890180519195916001600160801b0380881692916140e79084908316613e8f565b16905260208801805190916001600160801b039161410791908316613e8f565b1690528061422c575060005b602954909384828110156141a75761412b9083613445565b90670de0b6b3a7640000820291808304670de0b6b3a76400001490151715613401576106a561417f61417961416b6001600160401b039661418996613417565b93614015602d5495806133ee565b83613452565b91848d51166133ee565b168089526001600160401b03602c54168091106141a35750565b8852565b909150602a548082116141b957505050565b6141c291613445565b670de0b6b3a7640000810290808204670de0b6b3a76400001490151715613401576001600160401b03916106a561420561417961416b61420e95602b5490613417565b848d51166133ee565b81602c5460401c16808211614224575b50168852565b90503861421e565b87516001600160801b0316670de0b6b3a76400008181029291808404909114901517156134015761425c91613417565b614113565b506020813d60201161428d575b8161427b60209383613293565b8101031261031f576140969051614080565b3d915061426e565b9697939450509350506001600160401b038151166001600160401b03602e54168091036142d3575b5093926142c8613e69565b926000926000929190565b815260019250386142bd565b9750985050505050925050916142f3613e43565b916142fc613e69565b9160009160009190600090565b87516001600160801b0316670de0b6b3a76400008181029291808404909114901517156134015761433991613417565b613fa0565b506020813d60201161436a575b8161435860209383613293565b8101031261031f57613f979051613f81565b3d915061434b565b61442d6040602080614382613ea8565b939995939092901561443d575050506001600160401b03602e54166000807f33af5ce86e8438eff54589f85332916444457dfa8685493fbd579b809097026b878a51838152a45b80518482015196909101516001600160801b0319608091821b81166001600160401b0390931667ffffffffffffffff60401b60409990991b9890981697909717919091176023558151919093015190921b84166001600160801b0392831617601455565b83511692015160801b1617602455565b7f33af5ce86e8438eff54589f85332916444457dfa8685493fbd579b809097026b876001600160401b03865116948b51908152a46143c9565b3d156144a1573d90614487826132b4565b916144956040519384613293565b82523d6000602084013e565b606090565b6001600160801b03918216908216039190821161340157565b156144c657565b60405162461bcd60e51b8152602060048201526018602482015277084d2ce84c2dcce7440d8cadccee8d040dad2e6dac2e8c6d60431b6044820152606490fd5b919082604091031261031f576020825192015190565b91909160018060a01b0392836009541690600c5460409485519063442c159960e01b82526004928084840152602496878401526000958660448501526020958685606481855afa94851561486f57918b8b928a948598614831575b509060a4911694835194859384926311a5cc7760e31b84528b8401528d30908401528760448401528960648401528160848401525af180156148275761480b575b5088600d5416908851926370a0823160e01b94858552308786015287858b81875afa9485156148015789888d948f948c97958f95859b6147b9575b50906146349291600b54169751998a9889978896635cd3dc1560e01b885233908801528601526044850152606484015260a0608484015260a48301906130b5565b03925af180156147af57614777575b508388600d54169287895180958193825230888301525afa801561476d578590614738575b6146729250613445565b9586156146f85790606483926009541691600e54928989519889958694638eb22cdd60e01b86528501528301528660448301525afa9384156146ed575081936146bc575b50505091565b9091809350813d83116146e6575b6146d48183613293565b810103126139015750513880806146b6565b503d6146ca565b51913d9150823e3d90fd5b50818460649387519362461bcd60e51b85528401528201527f53474c3a206f6e436f6c6c61746572616c5265636569766572206661696c65646044820152fd5b50908381813d8311614766575b61474f8183613293565b8101031261476257906146729151614668565b8480fd5b503d614745565b87513d87823e3d90fd5b8481813d83116147a8575b61478c8183613293565b810103126147a45761479d906137e8565b5038614643565b8580fd5b503d614782565b88513d88823e3d90fd5b96999a50509550959250505081813d83116147fa575b6147d98183613293565b810103126137c657928989886146348f9897968f968d98519a9091926145f3565b503d6147cf565b8b513d8b823e3d90fd5b61482190893d8b11610c9257610c848183613293565b506145b8565b89513d89823e3d90fd5b935096505091508681813d8311614868575b61484d8183613293565b8101031261486457519387918a918c9060a4614577565b8780fd5b503d614843565b8a513d8a823e3d90fd5b9190811015610bb85760051b0190565b919060018060a01b0380600094168452602060178152604085205490811561498c57601881526040862054801561498557816148c3613e43565b9460095416916064600c54604051948593849263442c159960e01b8452600484015260248301528b60448301525afa968715614979578097614943575b505061377461492861491f61493e969798620186a060215404906133ee565b601f54906133ee565b9561401560018060801b039485875116906133ee565b111590565b9096508187813d8311614972575b61495b8183613293565b810103126139015750945194613774614928614900565b503d614951565b604051903d90823e3d90fd5b5050505050565b5060019450505050565b9081526001600160a01b0391821660208201529116604082015260006060820152608081019190915260a00190565b604051906149d282613241565b60038252623f3f3f60e81b6020830152565b908151811015610bb8570160200190565b60ff1660ff81146134015760010190565b805160408110614a815750805181019060208181840193031261031f576020810151906001600160401b03821161031f570181603f8201121561031f576020810151614a51816132b4565b92614a5f6040519485613293565b8184526040828401011161031f57614a7e916040602085019101613092565b90565b602092908303614b6f576000805b60ff81168581109081614b50575b5015614ab157614aac906149f5565b614a8f565b9260ff80941692614ac1846132b4565b93614acf6040519586613293565b808552614ade601f19916132b4565b013687860137825b85811687811080614b33575b15614b2857614b239190614b1d6001600160f81b0319614b1283886149e4565b5116871a91886149e4565b536149f5565b614ae6565b505094505050905090565b506001600160f81b0319614b4782866149e4565b51161515614af2565b6001600160f81b03199150614b6590866149e4565b5116151538614a9d565b915050614a7e6149c556feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae672a26469706673582212203a7c7c2293b30056fd3f48e72a9dc30e5536afce079e4a540546ebc5e0a4041264736f6c63430008120033"; type SGLLiquidationConstructorParams = | [signer?: Signer] diff --git a/src/typechain/tapioca-bar/factories/markets/singularity/SGLStorage__factory.ts b/src/typechain/tapioca-bar/factories/markets/singularity/SGLStorage__factory.ts index 15432755..11195a1e 100644 --- a/src/typechain/tapioca-bar/factories/markets/singularity/SGLStorage__factory.ts +++ b/src/typechain/tapioca-bar/factories/markets/singularity/SGLStorage__factory.ts @@ -1497,11 +1497,6 @@ const _abi = [ }, { inputs: [ - { - internalType: "uint256", - name: "_borrowOpeningFee", - type: "uint256", - }, { internalType: "contract IOracle", name: "_oracle", @@ -1830,7 +1825,7 @@ const _abi = [ ] as const; const _bytecode = - "0x6101408060405234620001e5576200001781620001ea565b601381526001602082017f546170696f63612053696e67756c617269747900000000000000000000000000815260206040516200005481620001ea565b8381520192603160f81b845251902091208160e052610100918183524660a0526040519160208301907f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f92838352604085015260608401524660808401523060a084015260a0835260c083019280841060018060401b03851117620001cf5760408490525190206080523060c052610120908152600580546001600160a01b0319163390811790915560007f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a362013880601b5562015f90601c55612710601d556032602055612ee06021557f0bd4060688a1800ae986e4840aebc924bb40b5bf44de4583df2257220b54b77c6027557f7d1dc38e60930664f8cbf495da6556ca091d2f92d6550877750c049864b182306028556161a8602955612b2392836200020784396080518361250c015260a051836125d7015260c051836124d6015260e0518361255b01525182612581015251816125380152f35b634e487b7160e01b600052604160045260246000fd5b600080fd5b604081019081106001600160401b03821117620001cf5760405256fe608080604052600436101561001357600080fd5b600090813560e01c908162a02a2014611c415750806302ce728f14611ab957806306fdde0314611a02578063078dfbe7146118ff578063095ea7b3146118d85780630996efb7146114535780630c4e84f01461133b57806318160ddd1461131a5780631c9e379b146112e15780631da8bf101461122157806323b872dd14611084578063313ce56714610ff2578063331960ff14610fd457806334d441d014610fb65780633644e51514610f9b57806337b6b7b914610f7d57806338d52e0f14610f545780633ba0b9a914610f365780633f741adb14610f1157806340626d8b14610ef357806344de240a14610ed5578063473e3ce714610eb757806348e4163e14610e7e5780634d7f2a3414610e605780634e71e0c814610db2578063529898f214610d9457806352f353eb14610d6d5780635514023214610d4657806355c2ab9414610d1c5780635793546214610cfe5780636c3d8b8f14610cd557806370a0823114610c9c5780637277854714610c6457806374645ff314610c395780637dc0d1d014610c105780637ecebe0014610bd75780637fa0b84e14610ba5578063821226e814610b875780638285ef4014610b555780638c5d0ed314610b375780638da5cb5b14610b0e578063910dd7c8146108f1578063959916dc146108d457806395d89b411461081a57806399a97028146107ea5780639c5d7192146107cc5780639e15e89f14610791578063a9059cbb146106ae578063b0e21e8a14610690578063b27c0e7414610655578063bb4cfe3b14610637578063ce8849ed1461060e578063d505accf14610469578063d8dfeb4514610440578063dd62ed3e146103f5578063de406577146103cc578063e0996cb6146103ae578063e30c397814610385578063ea64dd5614610367578063eec0f42e14610349578063f42760b71461032b578063f9557ccb146102f55763ffe04c66146102d557600080fd5b346102f257806003193601126102f2576020602a54604051908152f35b80fd5b50346102f257806003193601126102f257602554604080516001600160801b038316815260809290921c602083015290f35b0390f35b50346102f257806003193601126102f2576020602b54604051908152f35b50346102f257806003193601126102f2576020600c54604051908152f35b50346102f257806003193601126102f2576020601f54604051908152f35b50346102f257806003193601126102f2576006546040516001600160a01b039091168152602090f35b50346102f257806003193601126102f2576020601d54604051908152f35b50346102f257806003193601126102f2576009546040516001600160a01b039091168152602090f35b50346102f25760403660031901126102f2576040602091610414611c89565b61041c611ca4565b6001600160a01b039182168352600285528383209116825283522054604051908152f35b50346102f257806003193601126102f257600b546040516001600160a01b039091168152602090f35b50346102f25761047836611d11565b908395949542116105c9576001600160a01b03878116808a52600460205260408a20805491969295929060001983146105b5578261055e9694928d92600161055698960190556040519160208301937f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e266855260408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e0815261051a81611e7f565b5190206105256124d3565b9060405190602082019261190160f01b8452602283015260428201526042815261054e81611e9b565b5190206127a8565b9190916126a9565b16036105705761056d9261287b565b80f35b60405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152606490fd5b634e487b7160e01b8c52601160045260248cfd5b60405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b50346102f257806003193601126102f2576008546040516001600160a01b039091168152602090f35b50346102f257806003193601126102f2576020601e54604051908152f35b50346102f257806003193601126102f2576060602454604051906001600160401b0380821683528160401c16602083015260801c6040820152f35b50346102f257806003193601126102f2576020601a54604051908152f35b50346102f25760403660031901126102f2576106c8611c89565b6024358092811580159061077f575b61070f575b50506040519182526001600160a01b0316903390600080516020612ace83398151915290602090a3602060405160018152f35b33815260016020526040812054610728838210156125fd565b6001600160a01b0384169033829003610743575b50506106dc565b60409361075a91610755841515612642565b611fd4565b338352600160205283832055815220610774838254611fe1565b90558138808061073c565b50336001600160a01b038416146106d7565b50346102f25760403660031901126102f25760606107b96107b0611c89565b60243590612120565b9060405192835260208301526040820152f35b50346102f257806003193601126102f2576020602c54604051908152f35b50346102f25760403660031901126102f2576020610812610809611c89565b602435906123a1565b604051908152f35b50346102f257806003193601126102f257808060018060a01b03600b541660405160208101906395d89b4160e01b82526004815261085781611e4e565b51915afa6108636128d2565b9150156108c35761087661032791612959565b6108af6023604051809362746d2d60e81b602083015261089f8151809260208686019101611cba565b8101036003810184520182611eb6565b604051918291602083526020830190611cdd565b506103276108cf612902565b610876565b50346102f257806003193601126102f25760208054604051908152f35b50346102f25760403660031901126102f2576004356001600160401b038111610b0a5736602382011215610b0a5780600401358261092e82611ed7565b9261093c6040519485611eb6565b82845260208401923660248284010111610b06578060246020930185378401015260243561ffff81168103610b0257610100918284805181010312610afe5761098490612291565b61099060408501612687565b9161099d60608601612687565b9460808101519460a0820151926109b660c0840161269b565b9160e0840151930151938042116105c9578515610ad7577f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e266915b6001600160a01b0388168b52600460205260408b20805491906000198314610ac3579161ffff610a809896949261055698969460018401905560405194602086015216604084015260018060a01b038a16606084015260018060a01b038c1660808401528a60a084015260c083015260e082015260e08152610a7181611e7f565b602081519101206105256124d3565b6001600160a01b038381169116036105705715610aad5761056d926001600160a01b03908116911661287b565b61056d926001600160a01b03908116911661282d565b634e487b7160e01b8d52601160045260248dfd5b7f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d6916109f0565b8480fd5b8380fd5b8280fd5b5080fd5b50346102f257806003193601126102f2576005546040516001600160a01b039091168152602090f35b50346102f257806003193601126102f2576020601b54604051908152f35b50346102f257806003193601126102f257601454604080516001600160801b038316815260809290921c602083015290f35b50346102f257806003193601126102f2576020602e54604051908152f35b50346102f25760403660031901126102f257610bcc610bc2611c89565b602435903361282d565b602060405160018152f35b50346102f25760203660031901126102f2576020906040906001600160a01b03610bff611c89565b168152600483522054604051908152f35b50346102f257806003193601126102f257600f546040516001600160a01b039091168152602090f35b50346102f257806003193601126102f2576103276040516108af81610c5d81611dc9565b0382611eb6565b50346102f25760203660031901126102f2576004359060098210156102f257602060ff610c9084611d60565b54166040519015158152f35b50346102f25760203660031901126102f2576020906040906001600160a01b03610cc4611c89565b168152600183522054604051908152f35b50346102f257806003193601126102f257600a546040516001600160a01b039091168152602090f35b50346102f257806003193601126102f2576020601c54604051908152f35b50346102f257806003193601126102f25760206001600160401b03602d5460401c16604051908152f35b50346102f257806003193601126102f25760206001600160401b03602d5416604051908152f35b50346102f257806003193601126102f25760206001600160401b03602f5416604051908152f35b50346102f257806003193601126102f2576020602154604051908152f35b50346102f257806003193601126102f2576006546001600160a01b039081811633819003610e1c57806005549384167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08680a36001600160a01b0319928316176005551660065580f35b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b50346102f257806003193601126102f2576020602954604051908152f35b50346102f25760203660031901126102f2576020906040906001600160a01b03610ea6611c89565b168152601783522054604051908152f35b50346102f257806003193601126102f2576020601554604051908152f35b50346102f257806003193601126102f2576020600e54604051908152f35b50346102f257806003193601126102f2576020601654604051908152f35b50346102f25760603660031901126102f2576020610812604435602435600435612007565b50346102f257806003193601126102f2576020601154604051908152f35b50346102f257806003193601126102f257600d546040516001600160a01b039091168152602090f35b50346102f257806003193601126102f2576020601254604051908152f35b50346102f257806003193601126102f25760206108126124d3565b50346102f257806003193601126102f2576020601954604051908152f35b50346102f257806003193601126102f2576020601354604051908152f35b50346102f257806003193601126102f257808060018060a01b03600d5416604051602081019063313ce56760e01b82526004815261102f81611e4e565b51915afa9061103c6128d2565b9180611079575b1561106e576020828051810103126102f25750611063602080920161269b565b60ff60405191168152f35b505060206012611063565b506020825114611043565b50346102f25760603660031901126102f25761109e611c89565b906110a7611ca4565b60443591826110e5575b506040519182526001600160a01b03908116921690600080516020612ace83398151915290602090a3602060405160018152f35b6001600160a01b0384811680835260016020908152604084205492869061110e828610156125fd565b861693848403611123575b50505050506110b1565b83865260028352604080872033885284528620546001810161118d575b509260016020969361116b8794604097610755600080516020612ace8339815191529c9a1515612642565b9285525283832055815220611181858254611fe1565b90559138808581611119565b909181106111e1579260016020969361116b8a600080516020612ace8339815191529a98956111be8260409a611fd4565b86895260028552898920338a528552898920559497509497995050939650611140565b60405162461bcd60e51b815260048101849052601860248201527745524332303a20616c6c6f77616e636520746f6f206c6f7760401b6044820152606490fd5b50346102f25761123036611d11565b908395949542116105c9576001600160a01b03878116808a52600460205260408a20805491969295929060001983146105b557826112d29694928d92600161055698960190556040519160208301937f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d6855260408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e0815261051a81611e7f565b16036105705761056d9261282d565b50346102f25760203660031901126102f2576020906040906001600160a01b03611309611c89565b168152601883522054604051908152f35b50346102f257806003193601126102f257602060255460801c604051908152f35b50346102f25760403660031901126102f2576004356009811015610b0a57611361611d02565b6008549091906001600160a01b031633036114175760ff61138182611d60565b541615159115159182146113dd57808260ff61139f6113cd94611d60565b54161515827feeec81de25875ce1725479bb76f720a8defdb43dea041919ae37bb4aae9847c08780a4611d60565b9060ff8019835416911617905580f35b60405162461bcd60e51b81526020600482015260126024820152714d61726b65743a2073616d6520737461746560701b6044820152606490fd5b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881d5b985d5d1a1bdc9a5e995960621b6044820152606490fd5b50346102f2576101803660031901126102f25760246001600160a01b03813581811690819003610b0257604435916001600160401b03908184116118d457366023850112156118d45783600401359182116118d457368583860101116118d457606435918183168093036118d0576114d082600554163314611ef2565b60043594620186a0946114e586881115611f3d565b6020968088547fc353b09af857951dccce61b43a5854fc45beceed36c50e5d4cc2e71858a8e0df8c80a3875580611892575b508682611757575b50505081611717575b505060843580611702575b5060a435806116ed575b5060c435806116d9575b5060e435806116b8575b506101043580611697575b506101243580611666575b506101443590816115f6575b5050610164359182611583578380f35b601e548310611598575050601f553880808380f35b9060326084926040519262461bcd60e51b845260048401528201527f4d61726b65743a206c69717569646174696f6e436f6c6c61746572616c697a616044820152711d1a5bdb94985d19481d1bdbc81cdb585b1b60721b6064820152fd5b61160290821115611f3d565b601f54811161161557601e553880611573565b5060256084926040519262461bcd60e51b845260048401528201527f4d61726b65743a20636f6c6c61746572616c697a6174696f6e5261746520746f6044820152646f2062696760d81b6064820152fd5b806016547fae6e0ab3b95f0a53ff9660a390ccedcbbf1f2355dce974a9841af106fddcfaba8780a360165538611567565b6116a2828210611f3d565b6116af601b548211611f3d565b601c553861155c565b6116c3828210611f3d565b6116d0601c548210611f3d565b601b5538611551565b6116e4828210611f3d565b601d5538611547565b6116f982821115611f3d565b601a553861153d565b61170e82821115611f3d565b60195538611533565b816008549182167f5a62d22209e370e38eea92cfddcd228e656e6ec139243392a760a7769f5877fd8880a36001600160a01b031916176008553880611528565b8291611764601054611d8f565b601f8111611841575b508990601f84116001146117d2578a936117c5575b5050508160011b916000199060031b1c1916176010555b7fa6f004921c944d4b8bf6e38462b00f36a58d62495d56b51f571ab78f732c98158680a138808661151f565b0101359050863880611782565b60108b52888b20601f198516955092509089908b5b8a878210611826575050846001961061180a575b50505050811b01601055611799565b60001960f88660031b161c1992010135169055388088816117fb565b8483019093013585556001909401938b9291820191016117e7565b9150915060108952868920601f840160051c810188851061188b575b91849391601f8b94920160051c01905b81811061187a575061176d565b8b81558594508a935060010161186d565b508061185d565b600f80546001600160a01b0319169190911790557f0b2d6eb667d0522c3eb86e4288afecae6c11591ffd1345d4d12407e0598bca9b8880a138611517565b8680fd5b8580fd5b50346102f25760403660031901126102f257610bcc6118f5611c89565b602435903361287b565b50346102f25760603660031901126102f257611919611c89565b611921611d02565b604435908115158203610b025760018060a01b0392839161194783600554163314611ef2565b156119eb5716908115908115916119e3575b50156119a657806005549283167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08580a36001600160a01b03199182161760055560068054909116905580f35b60405162461bcd60e51b81526020600482015260156024820152744f776e61626c653a207a65726f206164647265737360581b6044820152606490fd5b905038611959565b9150501660018060a01b0319600654161760065580f35b50346102f257806003193601126102f257808060018060a01b03600b541660405160208101906306fdde0360e01b825260048152611a3f81611e4e565b51915afa611a4b6128d2565b915015611aa857611a5e61032791612959565b6108af6034604051809373546170696f63612053696e67756c61726974792d60601b6020830152611a988151809260208686019101611cba565b8101036014810184520182611eb6565b50610327611ab4612902565b611a5e565b50346102f257806003193601126102f257600f546040805163d6d7d52560e01b8152602060048201529182906001600160a01b0316818581611afd60248201611dc9565b03925af18015611c365782918391611bf6575b508115611b97578015611b5b57807f9f9192b5edb17356c524e08d9e025c8e2f6307e6ea52fb7968faa3081f51c3c86040948260115580a25b42601355825191151582526020820152f35b60405162461bcd60e51b81526020600482015260146024820152734d61726b65743a20696e76616c6964207261746560601b6044820152606490fd5b509050611ba960135460125490611fe1565b4211611bba57604090601154611b49565b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881c985d19481d1bdbc81bdb1960621b6044820152606490fd5b9150506040813d604011611c2e575b81611c1260409383611eb6565b81010312610b0a576020611c2582612291565b91015138611b10565b3d9150611c05565b6040513d84823e3d90fd5b905034610b0a576040366003190112610b0a576040602092611c61611c89565b611c69611ca4565b6001600160a01b0391821683526003865283832091168252845220548152f35b600435906001600160a01b0382168203611c9f57565b600080fd5b602435906001600160a01b0382168203611c9f57565b60005b838110611ccd5750506000910152565b8181015183820152602001611cbd565b90602091611cf681518092818552858086019101611cba565b601f01601f1916010190565b602435908115158203611c9f57565b60e0906003190112611c9f576001600160a01b03906004358281168103611c9f57916024359081168103611c9f5790604435906064359060843560ff81168103611c9f579060a4359060c43590565b6009811015611d79576000526007602052604060002090565b634e487b7160e01b600052602160045260246000fd5b90600182811c92168015611dbf575b6020831014611da957565b634e487b7160e01b600052602260045260246000fd5b91607f1691611d9e565b60105460009291611dd982611d8f565b908181526001928381169081600014611e335750600114611df957505050565b9092935060106000526020928360002092846000945b838610611e1f5750505050010190565b805485870183015294019385908201611e0f565b91935050602093945060ff191683830152151560051b010190565b604081019081106001600160401b03821117611e6957604052565b634e487b7160e01b600052604160045260246000fd5b61010081019081106001600160401b03821117611e6957604052565b608081019081106001600160401b03821117611e6957604052565b90601f801991011681019081106001600160401b03821117611e6957604052565b6001600160401b038111611e6957601f01601f191660200190565b15611ef957565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b15611f4457565b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881b9bdd081d985b1a59607a1b6044820152606490fd5b81810292918115918404141715611f9057565b634e487b7160e01b600052601160045260246000fd5b8115611fb0570490565b634e487b7160e01b600052601260045260246000fd5b604d8111611f9057600a0a90565b91908203918211611f9057565b91908201809211611f9057565b81810392916000138015828513169184121617611f9057565b60145491929161205091612041916120379161202d906001600160801b03831690611f7d565b9060801c90611fa6565b93601f5490611f7d565b61204a83611fc6565b90611fa6565b808310612118576120646120a09184611fd4565b9161209b61209561208c601e5461208661207d86611fc6565b60215490611fe1565b90611f7d565b61204a84611fc6565b91611fc6565b611fee565b6509184e72a00090818102918183051490151715611f9057670de0b6b3a764000091828102928184051490151715611f90578015611fb057600160ff1b91808314600019831416611f905705906000821215612111578114611f9057600003905b80821161210c575090565b905090565b5090612101565b505050600090565b9160018060a01b0380931691600093838552602060178152604091828720549081156122845783518481018181106001600160401b0382111761227057855288815288848083019382855261217689151561229e565b600954166064600c548c85526018845289852054928a51958694859363442c159960e01b85526004850152602484015260448301525afa908115612266578a91612233575b5061222797989994926018949261220a6121f58a6121f06121e761221397620186a06022540490611f7d565b601e5490611f7d565b611fa6565b915191946001600160801b0392831690611f7d565b91511690611fa6565b81811061222b57035b9783525220546122ea565b9091565b50508261221c565b90508481813d831161225f575b61224a8183611eb6565b8101031261225b57516122276121bb565b8980fd5b503d612240565b86513d8c823e3d90fd5b634e487b7160e01b8a52604160045260248afd5b5086955085949350505050565b51908115158203611c9f57565b156122a557565b60405162461bcd60e51b815260206004820152601e60248201527f4d61726b65743a2065786368616e676552617465206e6f742076616c696400006044820152606490fd5b6122f582151561229e565b602060018060a01b0360095416916064600c54604051948593849263442c159960e01b845260048401526024830152600060448301525afa90811561239557600091612362575b50906121f061234e9260225490611f7d565b620186a061235e601e5483611f7d565b0491565b906020823d821161238d575b8161237b60209383611eb6565b810103126102f25750516121f061233c565b3d915061236e565b6040513d6000823e3d90fd5b6001600160a01b031660008181526018602052604081205490926123c4916122ea565b9183526017602052604083205480156124cd5781156124cd578181106124cd57828110156124c35760145461240d9183916107559161202d906001600160801b03831690611f7d565b90620186a092838302928084048514901517156124af57612432929161204a91611fd4565b91601b5491601c54936124458585611fee565b80820291848212600160ff1b8214166124af57818305149015171561249b5705818482019485129112908015821691151617612487575080821261210c575090565b634e487b7160e01b81526011600452602490fd5b634e487b7160e01b83526011600452602483fd5b634e487b7160e01b85526011600452602485fd5b50505050601b5490565b50505090565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031614806125d4575b1561252e577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f000000000000000000000000000000000000000000000000000000000000000082527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a0815260c081018181106001600160401b03821117611e695760405251902090565b507f00000000000000000000000000000000000000000000000000000000000000004614612505565b1561260457565b60405162461bcd60e51b815260206004820152601660248201527545524332303a2062616c616e636520746f6f206c6f7760501b6044820152606490fd5b1561264957565b60405162461bcd60e51b815260206004820152601660248201527545524332303a206e6f207a65726f206164647265737360501b6044820152606490fd5b51906001600160a01b0382168203611c9f57565b519060ff82168203611c9f57565b6005811015611d7957806126ba5750565b600181036127025760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b6044820152606490fd5b6002810361274f5760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606490fd5b60031461275857565b60405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608490fd5b9291906fa2a8918ca85bafe22016d0b997e4df60600160ff1b0383116128215791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa156128145781516001600160a01b0381161561280e579190565b50600190565b50604051903d90823e3d90fd5b50505050600090600390565b7fe50de2333c10a9502fcb1d8ae13a51bbf423153dfc63c2b8997665b32154afc360018060a01b038092169160009083825260036020526040822094169384825260205284604082205580a4565b909160207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259160018060a01b03809416938460005260028352604060002095169485600052825280604060002055604051908152a3565b3d156128fd573d906128e382611ed7565b916128f16040519384611eb6565b82523d6000602084013e565b606090565b6040519061290f82611e4e565b60038252623f3f3f60e81b6020830152565b908151811015612932570160200190565b634e487b7160e01b600052603260045260246000fd5b60ff1660ff8114611f905760010190565b8051604081106129d457508051810190602081818401930312611c9f576020810151906001600160401b038211611c9f570181603f82011215611c9f5760208101516129a481611ed7565b926129b26040519485611eb6565b81845260408284010111611c9f576129d1916040602085019101611cba565b90565b602092908303612ac2576000805b60ff81168581109081612aa3575b5015612a04576129ff90612948565b6129e2565b9260ff80941692612a1484611ed7565b93612a226040519586611eb6565b808552612a31601f1991611ed7565b013687860137825b85811687811080612a86575b15612a7b57612a769190612a706001600160f81b0319612a658388612921565b5116871a9188612921565b53612948565b612a39565b505094505050905090565b506001600160f81b0319612a9a8286612921565b51161515612a45565b6001600160f81b03199150612ab89086612921565b51161515386129f0565b9150506129d161290256feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220f03127cb09b76596483ef20ed017cc8b53ee05fb4492b1b0d18474e46b62e2be64736f6c63430008120033"; + "0x6101408060405234620001e5576200001781620001ea565b601381526001602082017f546170696f63612053696e67756c617269747900000000000000000000000000815260206040516200005481620001ea565b8381520192603160f81b845251902091208160e052610100918183524660a0526040519160208301907f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f92838352604085015260608401524660808401523060a084015260a0835260c083019280841060018060401b03851117620001cf5760408490525190206080523060c052610120908152600580546001600160a01b0319163390811790915560007f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a362013880601b5562015f90601c55612710601d55612ee06020557f0bd4060688a1800ae986e4840aebc924bb40b5bf44de4583df2257220b54b77c6026557f7d1dc38e60930664f8cbf495da6556ca091d2f92d6550877750c049864b182306027556161a86028556032602f55612b3292836200020784396080518361251b015260a051836125e6015260c051836124e5015260e0518361256a01525182612590015251816125470152f35b634e487b7160e01b600052604160045260246000fd5b600080fd5b604081019081106001600160401b03821117620001cf5760405256fe608080604052600436101561001357600080fd5b600090813560e01c908162a02a2014611c505750806302ce728f14611ac857806306fdde0314611a11578063078dfbe71461190e578063095ea7b3146118e75780630c4e84f0146117cf57806318160ddd146117ae5780631c9e379b146117755780631da8bf10146116b557806323b872dd14611518578063313ce56714611486578063331960ff1461146857806334d441d01461144a5780633644e5151461142f57806337b6b7b91461141157806338d52e0f146113e85780633ba0b9a9146113ca5780633f741adb146113a557806340626d8b1461138757806344de240a14611369578063473e3ce71461134b57806348e4163e146113125780634d7f2a34146112f45780634e71e0c814611246578063529898f21461122957806352f353eb1461120257806355140232146111db57806355c2ab94146111b157806357935462146111935780636c3d8b8f1461116a57806370a082311461113157806372778547146110f957806374645ff3146110ce5780637dc0d1d0146110a55780637ecebe001461106c5780637fa0b84e1461103a578063821226e81461101c5780638285ef4014610fea5780638c5d0ed314610fcc5780638da5cb5b14610fa3578063910dd7c814610d8a578063959916dc14610d6c57806395d89b4114610cb257806399a9702814610c825780639c5d719214610c645780639e15e89f14610c29578063a9059cbb14610b46578063b0e21e8a14610b28578063b27c0e7414610aed578063bb4cfe3b14610acf578063ce8849ed14610aa6578063d3fb2a381461060e578063d505accf14610469578063d8dfeb4514610440578063dd62ed3e146103f5578063de406577146103cc578063e0996cb6146103ae578063e30c397814610385578063ea64dd5614610367578063eec0f42e14610349578063f42760b71461032b578063f9557ccb146102f55763ffe04c66146102d557600080fd5b346102f257806003193601126102f2576020602954604051908152f35b80fd5b50346102f257806003193601126102f257602454604080516001600160801b038316815260809290921c602083015290f35b0390f35b50346102f257806003193601126102f2576020602a54604051908152f35b50346102f257806003193601126102f2576020600c54604051908152f35b50346102f257806003193601126102f2576020601f54604051908152f35b50346102f257806003193601126102f2576006546040516001600160a01b039091168152602090f35b50346102f257806003193601126102f2576020601d54604051908152f35b50346102f257806003193601126102f2576009546040516001600160a01b039091168152602090f35b50346102f25760403660031901126102f2576040602091610414611c98565b61041c611cb3565b6001600160a01b039182168352600285528383209116825283522054604051908152f35b50346102f257806003193601126102f257600b546040516001600160a01b039091168152602090f35b50346102f25761047836611d20565b908395949542116105c9576001600160a01b03878116808a52600460205260408a20805491969295929060001983146105b5578261055e9694928d92600161055698960190556040519160208301937f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e266855260408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e0815261051a81611e8e565b5190206105256124e2565b9060405190602082019261190160f01b8452602283015260428201526042815261054e81611eaa565b5190206127b7565b9190916126b8565b16036105705761056d9261288a565b80f35b60405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152606490fd5b634e487b7160e01b8c52601160045260248cfd5b60405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b50346102f2576101603660031901126102f2576001600160a01b0360043581811690819003610aa2576024916001600160401b038335818111610a9e5736602382011215610a9e578060040135918211610a9e5736858383010111610a9e5760443593838516809503610a9a5761068a84600554163314611f01565b80610a5c575b5084826108de575b5050508161089e575b505060643580610886575b506084358061086e575b5060a43580610857575b5060c43580610833575b5060e4358061080f575b5061010435806107de575b50610124358061076b575b506101443590816106f9578280f35b601e54821061070c5750601f5538808280f35b60849060326040519162461bcd60e51b8352602060048401528201527f4d61726b65743a206c69717569646174696f6e436f6c6c61746572616c697a616044820152711d1a5bdb94985d19481d1bdbc81cdb585b1b60721b6064820152fd5b61077a620186a0821115611f4c565b601f54811161078c57601e55386106ea565b60405162461bcd60e51b8152602060048201526025818401527f4d61726b65743a20636f6c6c61746572616c697a6174696f6e5261746520746f6044820152646f2062696760d81b6064820152608490fd5b806016547fae6e0ab3b95f0a53ff9660a390ccedcbbf1f2355dce974a9841af106fddcfaba8580a3601655386106df565b61081d620186a08210611f4c565b61082a601b548211611f4c565b601c55386106d4565b610841620186a08210611f4c565b61084e601c548210611f4c565b601b55386106ca565b610865620186a08210611f4c565b601d55386106c0565b61087d620186a0821115611f4c565b601a55386106b6565b610895620186a0821115611f4c565b601955386106ac565b816008549182167f5a62d22209e370e38eea92cfddcd228e656e6ec139243392a760a7769f5877fd8680a36001600160a01b0319161760085538806106a1565b82916108eb601054611d9e565b601f81116109eb575b508790601f841160011461095957889361094c575b5050508160011b916000199060031b1c1916176010555b7fa6f004921c944d4b8bf6e38462b00f36a58d62495d56b51f571ab78f732c98158480a1388084610698565b0101359050843880610909565b60108952601f19841694507f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae67292509087908960205b8782106109cc57505084600196106109b0575b50505050811b01601055610920565b60001960f88660031b161c1992010135169055388086816109a1565b828501909301358555600194909401938992918201919081019061098e565b6010895290925090507f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae672601f840160051c810160208510610a55575b91849391601f8994920160051c01905b818110610a4457506108f4565b898155859450889350600101610a37565b5080610a27565b600f80546001600160a01b0319169190911790557f0b2d6eb667d0522c3eb86e4288afecae6c11591ffd1345d4d12407e0598bca9b8680a138610690565b8680fd5b8580fd5b8280fd5b50346102f257806003193601126102f2576008546040516001600160a01b039091168152602090f35b50346102f257806003193601126102f2576020601e54604051908152f35b50346102f257806003193601126102f2576060602354604051906001600160401b0380821683528160401c16602083015260801c6040820152f35b50346102f257806003193601126102f2576020601a54604051908152f35b50346102f25760403660031901126102f257610b60611c98565b60243580928115801590610c17575b610ba7575b50506040519182526001600160a01b0316903390600080516020612add83398151915290602090a3602060405160018152f35b33815260016020526040812054610bc08382101561260c565b6001600160a01b0384169033829003610bdb575b5050610b74565b604093610bf291610bed841515612651565b611fe3565b338352600160205283832055815220610c0c838254611ff0565b905581388080610bd4565b50336001600160a01b03841614610b6f565b50346102f25760403660031901126102f2576060610c51610c48611c98565b6024359061212f565b9060405192835260208301526040820152f35b50346102f257806003193601126102f2576020602b54604051908152f35b50346102f25760403660031901126102f2576020610caa610ca1611c98565b602435906123b0565b604051908152f35b50346102f257806003193601126102f257808060018060a01b03600b541660405160208101906395d89b4160e01b825260048152610cef81611e5d565b51915afa610cfb6128e1565b915015610d5b57610d0e61032791612968565b610d476023604051809362746d2d60e81b6020830152610d378151809260208686019101611cc9565b8101036003810184520182611ec5565b604051918291602083526020830190611cec565b50610327610d67612911565b610d0e565b50346102f257806003193601126102f2576020602f54604051908152f35b50346102f25760403660031901126102f2576004356001600160401b038111610f9f5736602382011215610f9f57806004013582610dc782611ee6565b92610dd56040519485611ec5565b82845260208401923660248284010111610aa2578060246020930185378401015260243561ffff81168103610f9b57610100918284805181010312610f9757610e1d906122a0565b610e2960408501612696565b91610e3660608601612696565b9460808101519460a082015192610e4f60c084016126aa565b9160e0840151930151938042116105c9578515610f70577f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e266915b6001600160a01b0388168b52600460205260408b20805491906000198314610f5c579161ffff610f199896949261055698969460018401905560405194602086015216604084015260018060a01b038a16606084015260018060a01b038c1660808401528a60a084015260c083015260e082015260e08152610f0a81611e8e565b602081519101206105256124e2565b6001600160a01b038381169116036105705715610f465761056d926001600160a01b03908116911661288a565b61056d926001600160a01b03908116911661283c565b634e487b7160e01b8d52601160045260248dfd5b7f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d691610e89565b8480fd5b8380fd5b5080fd5b50346102f257806003193601126102f2576005546040516001600160a01b039091168152602090f35b50346102f257806003193601126102f2576020601b54604051908152f35b50346102f257806003193601126102f257601454604080516001600160801b038316815260809290921c602083015290f35b50346102f257806003193601126102f2576020602d54604051908152f35b50346102f25760403660031901126102f257611061611057611c98565b602435903361283c565b602060405160018152f35b50346102f25760203660031901126102f2576020906040906001600160a01b03611094611c98565b168152600483522054604051908152f35b50346102f257806003193601126102f257600f546040516001600160a01b039091168152602090f35b50346102f257806003193601126102f257610327604051610d47816110f281611dd8565b0382611ec5565b50346102f25760203660031901126102f2576004359060098210156102f257602060ff61112584611d6f565b54166040519015158152f35b50346102f25760203660031901126102f2576020906040906001600160a01b03611159611c98565b168152600183522054604051908152f35b50346102f257806003193601126102f257600a546040516001600160a01b039091168152602090f35b50346102f257806003193601126102f2576020601c54604051908152f35b50346102f257806003193601126102f25760206001600160401b03602c5460401c16604051908152f35b50346102f257806003193601126102f25760206001600160401b03602c5416604051908152f35b50346102f257806003193601126102f25760206001600160401b03602e5416604051908152f35b50346102f257806003193601126102f25760208054604051908152f35b50346102f257806003193601126102f2576006546001600160a01b0390818116338190036112b057806005549384167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08680a36001600160a01b0319928316176005551660065580f35b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b50346102f257806003193601126102f2576020602854604051908152f35b50346102f25760203660031901126102f2576020906040906001600160a01b0361133a611c98565b168152601783522054604051908152f35b50346102f257806003193601126102f2576020601554604051908152f35b50346102f257806003193601126102f2576020600e54604051908152f35b50346102f257806003193601126102f2576020601654604051908152f35b50346102f25760603660031901126102f2576020610caa604435602435600435612016565b50346102f257806003193601126102f2576020601154604051908152f35b50346102f257806003193601126102f257600d546040516001600160a01b039091168152602090f35b50346102f257806003193601126102f2576020601254604051908152f35b50346102f257806003193601126102f2576020610caa6124e2565b50346102f257806003193601126102f2576020601954604051908152f35b50346102f257806003193601126102f2576020601354604051908152f35b50346102f257806003193601126102f257808060018060a01b03600d5416604051602081019063313ce56760e01b8252600481526114c381611e5d565b51915afa906114d06128e1565b918061150d575b15611502576020828051810103126102f257506114f760208092016126aa565b60ff60405191168152f35b5050602060126114f7565b5060208251146114d7565b50346102f25760603660031901126102f257611532611c98565b9061153b611cb3565b6044359182611579575b506040519182526001600160a01b03908116921690600080516020612add83398151915290602090a3602060405160018152f35b6001600160a01b038481168083526001602090815260408420549286906115a28286101561260c565b8616938484036115b7575b5050505050611545565b838652600283526040808720338852845286205460018101611621575b50926001602096936115ff8794604097610bed600080516020612add8339815191529c9a1515612651565b9285525283832055815220611615858254611ff0565b905591388085816115ad565b9091811061167557926001602096936115ff8a600080516020612add8339815191529a98956116528260409a611fe3565b86895260028552898920338a5285528989205594975094979950509396506115d4565b60405162461bcd60e51b815260048101849052601860248201527745524332303a20616c6c6f77616e636520746f6f206c6f7760401b6044820152606490fd5b50346102f2576116c436611d20565b908395949542116105c9576001600160a01b03878116808a52600460205260408a20805491969295929060001983146105b557826117669694928d92600161055698960190556040519160208301937f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d6855260408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e0815261051a81611e8e565b16036105705761056d9261283c565b50346102f25760203660031901126102f2576020906040906001600160a01b0361179d611c98565b168152601883522054604051908152f35b50346102f257806003193601126102f257602060245460801c604051908152f35b50346102f25760403660031901126102f2576004356009811015610f9f576117f5611d11565b6008549091906001600160a01b031633036118ab5760ff61181582611d6f565b5416151591151591821461187157808260ff61183361186194611d6f565b54161515827feeec81de25875ce1725479bb76f720a8defdb43dea041919ae37bb4aae9847c08780a4611d6f565b9060ff8019835416911617905580f35b60405162461bcd60e51b81526020600482015260126024820152714d61726b65743a2073616d6520737461746560701b6044820152606490fd5b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881d5b985d5d1a1bdc9a5e995960621b6044820152606490fd5b50346102f25760403660031901126102f257611061611904611c98565b602435903361288a565b50346102f25760603660031901126102f257611928611c98565b611930611d11565b604435908115158203610f9b5760018060a01b0392839161195683600554163314611f01565b156119fa5716908115908115916119f2575b50156119b557806005549283167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08580a36001600160a01b03199182161760055560068054909116905580f35b60405162461bcd60e51b81526020600482015260156024820152744f776e61626c653a207a65726f206164647265737360581b6044820152606490fd5b905038611968565b9150501660018060a01b0319600654161760065580f35b50346102f257806003193601126102f257808060018060a01b03600b541660405160208101906306fdde0360e01b825260048152611a4e81611e5d565b51915afa611a5a6128e1565b915015611ab757611a6d61032791612968565b610d476034604051809373546170696f63612053696e67756c61726974792d60601b6020830152611aa78151809260208686019101611cc9565b8101036014810184520182611ec5565b50610327611ac3612911565b611a6d565b50346102f257806003193601126102f257600f546040805163d6d7d52560e01b8152602060048201529182906001600160a01b0316818581611b0c60248201611dd8565b03925af18015611c455782918391611c05575b508115611ba6578015611b6a57807f9f9192b5edb17356c524e08d9e025c8e2f6307e6ea52fb7968faa3081f51c3c86040948260115580a25b42601355825191151582526020820152f35b60405162461bcd60e51b81526020600482015260146024820152734d61726b65743a20696e76616c6964207261746560601b6044820152606490fd5b509050611bb860135460125490611ff0565b4211611bc957604090601154611b58565b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881c985d19481d1bdbc81bdb1960621b6044820152606490fd5b9150506040813d604011611c3d575b81611c2160409383611ec5565b81010312610f9f576020611c34826122a0565b91015138611b1f565b3d9150611c14565b6040513d84823e3d90fd5b905034610f9f576040366003190112610f9f576040602092611c70611c98565b611c78611cb3565b6001600160a01b0391821683526003865283832091168252845220548152f35b600435906001600160a01b0382168203611cae57565b600080fd5b602435906001600160a01b0382168203611cae57565b60005b838110611cdc5750506000910152565b8181015183820152602001611ccc565b90602091611d0581518092818552858086019101611cc9565b601f01601f1916010190565b602435908115158203611cae57565b60e0906003190112611cae576001600160a01b03906004358281168103611cae57916024359081168103611cae5790604435906064359060843560ff81168103611cae579060a4359060c43590565b6009811015611d88576000526007602052604060002090565b634e487b7160e01b600052602160045260246000fd5b90600182811c92168015611dce575b6020831014611db857565b634e487b7160e01b600052602260045260246000fd5b91607f1691611dad565b60105460009291611de882611d9e565b908181526001928381169081600014611e425750600114611e0857505050565b9092935060106000526020928360002092846000945b838610611e2e5750505050010190565b805485870183015294019385908201611e1e565b91935050602093945060ff191683830152151560051b010190565b604081019081106001600160401b03821117611e7857604052565b634e487b7160e01b600052604160045260246000fd5b61010081019081106001600160401b03821117611e7857604052565b608081019081106001600160401b03821117611e7857604052565b90601f801991011681019081106001600160401b03821117611e7857604052565b6001600160401b038111611e7857601f01601f191660200190565b15611f0857565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b15611f5357565b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881b9bdd081d985b1a59607a1b6044820152606490fd5b81810292918115918404141715611f9f57565b634e487b7160e01b600052601160045260246000fd5b8115611fbf570490565b634e487b7160e01b600052601260045260246000fd5b604d8111611f9f57600a0a90565b91908203918211611f9f57565b91908201809211611f9f57565b81810392916000138015828513169184121617611f9f57565b60145491929161205f91612050916120469161203c906001600160801b03831690611f8c565b9060801c90611fb5565b93601f5490611f8c565b61205983611fd5565b90611fb5565b808310612127576120736120af9184611fe3565b916120aa6120a461209b601e5461209561208c86611fd5565b60205490611ff0565b90611f8c565b61205984611fd5565b91611fd5565b611ffd565b6509184e72a00090818102918183051490151715611f9f57670de0b6b3a764000091828102928184051490151715611f9f578015611fbf57600160ff1b91808314600019831416611f9f5705906000821215612120578114611f9f57600003905b80821161211b575090565b905090565b5090612110565b505050600090565b9160018060a01b0380931691600093838552602060178152604091828720549081156122935783518481018181106001600160401b0382111761227f5785528881528884808301938285526121858915156122ad565b600954166064600c548c85526018845289852054928a51958694859363442c159960e01b85526004850152602484015260448301525afa908115612275578a91612242575b506122369798999492601894926122196122048a6121ff6121f661222297620186a06021540490611f8c565b601e5490611f8c565b611fb5565b915191946001600160801b0392831690611f8c565b91511690611fb5565b81811061223a57035b9783525220546122f9565b9091565b50508261222b565b90508481813d831161226e575b6122598183611ec5565b8101031261226a57516122366121ca565b8980fd5b503d61224f565b86513d8c823e3d90fd5b634e487b7160e01b8a52604160045260248afd5b5086955085949350505050565b51908115158203611cae57565b156122b457565b60405162461bcd60e51b815260206004820152601e60248201527f4d61726b65743a2065786368616e676552617465206e6f742076616c696400006044820152606490fd5b6123048215156122ad565b602060018060a01b0360095416916064600c54604051948593849263442c159960e01b845260048401526024830152600060448301525afa9081156123a457600091612371575b50906121ff61235d9260215490611f8c565b620186a061236d601e5483611f8c565b0491565b906020823d821161239c575b8161238a60209383611ec5565b810103126102f25750516121ff61234b565b3d915061237d565b6040513d6000823e3d90fd5b6001600160a01b031660008181526018602052604081205490926123d3916122f9565b9183526017602052604083205480156124dc5781156124dc578181106124dc57828110156124d25760145461241c918391610bed9161203c906001600160801b03831690611f8c565b90620186a092838302928084048514901517156124be57612441929161205991611fe3565b91601b5491601c54936124548585611ffd565b80820291848212600160ff1b8214166124be5781830514901517156124aa5705818482019485129112908015821691151617612496575080821261211b575090565b634e487b7160e01b81526011600452602490fd5b634e487b7160e01b83526011600452602483fd5b634e487b7160e01b85526011600452602485fd5b50505050601b5490565b50505090565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031614806125e3575b1561253d577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f000000000000000000000000000000000000000000000000000000000000000082527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a0815260c081018181106001600160401b03821117611e785760405251902090565b507f00000000000000000000000000000000000000000000000000000000000000004614612514565b1561261357565b60405162461bcd60e51b815260206004820152601660248201527545524332303a2062616c616e636520746f6f206c6f7760501b6044820152606490fd5b1561265857565b60405162461bcd60e51b815260206004820152601660248201527545524332303a206e6f207a65726f206164647265737360501b6044820152606490fd5b51906001600160a01b0382168203611cae57565b519060ff82168203611cae57565b6005811015611d8857806126c95750565b600181036127115760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b6044820152606490fd5b6002810361275e5760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606490fd5b60031461276757565b60405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608490fd5b9291906fa2a8918ca85bafe22016d0b997e4df60600160ff1b0383116128305791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa156128235781516001600160a01b0381161561281d579190565b50600190565b50604051903d90823e3d90fd5b50505050600090600390565b7fe50de2333c10a9502fcb1d8ae13a51bbf423153dfc63c2b8997665b32154afc360018060a01b038092169160009083825260036020526040822094169384825260205284604082205580a4565b909160207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259160018060a01b03809416938460005260028352604060002095169485600052825280604060002055604051908152a3565b3d1561290c573d906128f282611ee6565b916129006040519384611ec5565b82523d6000602084013e565b606090565b6040519061291e82611e5d565b60038252623f3f3f60e81b6020830152565b908151811015612941570160200190565b634e487b7160e01b600052603260045260246000fd5b60ff1660ff8114611f9f5760010190565b8051604081106129e357508051810190602081818401930312611cae576020810151906001600160401b038211611cae570181603f82011215611cae5760208101516129b381611ee6565b926129c16040519485611ec5565b81845260408284010111611cae576129e0916040602085019101611cc9565b90565b602092908303612ad1576000805b60ff81168581109081612ab2575b5015612a1357612a0e90612957565b6129f1565b9260ff80941692612a2384611ee6565b93612a316040519586611ec5565b808552612a40601f1991611ee6565b013687860137825b85811687811080612a95575b15612a8a57612a859190612a7f6001600160f81b0319612a748388612930565b5116871a9188612930565b53612957565b612a48565b505094505050905090565b506001600160f81b0319612aa98286612930565b51161515612a54565b6001600160f81b03199150612ac79086612930565b51161515386129ff565b9150506129e061291156feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220d56635cc9f65bf4bf9a99354bcd7b53734e93d4577b3eb9463586ee7b624502b64736f6c63430008120033"; type SGLStorageConstructorParams = | [signer?: Signer] diff --git a/src/typechain/tapioca-bar/factories/markets/singularity/Singularity__factory.ts b/src/typechain/tapioca-bar/factories/markets/singularity/Singularity__factory.ts index 3e814bf4..7ad71616 100644 --- a/src/typechain/tapioca-bar/factories/markets/singularity/Singularity__factory.ts +++ b/src/typechain/tapioca-bar/factories/markets/singularity/Singularity__factory.ts @@ -2242,11 +2242,6 @@ const _abi = [ }, { inputs: [ - { - internalType: "uint256", - name: "_borrowOpeningFee", - type: "uint256", - }, { internalType: "contract IOracle", name: "_oracle", @@ -2310,6 +2305,11 @@ const _abi = [ }, { inputs: [ + { + internalType: "uint256", + name: "_borrowOpeningFee", + type: "uint256", + }, { internalType: "uint256", name: "_lqCollateralizationRate", @@ -2646,7 +2646,7 @@ const _abi = [ ] as const; const _bytecode = - "0x6101408060405234620001ea576200001781620001ef565b601381526001602082017f546170696f63612053696e67756c617269747900000000000000000000000000815260206040516200005481620001ef565b8381520192603160f81b845251902091208160e052610100918183524660a0526040519160208301907f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f92838352604085015260608401524660808401523060a084015260a0835260c083019280841060018060401b03851117620001d45760408490525190206080523060c052610120908152600580546001600160a01b0319163390811790915560007f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a362013880601b5562015f90601c55612710601d556032602055612ee06021557f0bd4060688a1800ae986e4840aebc924bb40b5bf44de4583df2257220b54b77c6027557f7d1dc38e60930664f8cbf495da6556ca091d2f92d6550877750c049864b182306028556161a86029556001603055615e7792836200020c843960805183613c1d015260a05183613cd8015260c05183613be7015260e05183613c6c01525182613c9201525181613c490152f35b634e487b7160e01b600052604160045260246000fd5b600080fd5b604081019081106001600160401b03821117620001d45760405256fe6080604052600436101561001b575b361561001957600080fd5b005b60003560e01c8062a02a201461059a57806302ce728f1461059557806306fdde0314610590578063078dfbe71461058b578063095ea7b3146105865780630996efb7146105815780630c4e84f01461057c57806318160ddd146105775780631c9e379b146105725780631da8bf101461056d5780631ee9c8f21461056857806323b872dd1461056357806325384fd81461055e5780632a9399d914610559578063313ce56714610554578063331960ff1461054f57806334d441d01461054a5780633644e5151461054557806337b6b7b91461054057806338d52e0f1461053b5780633ba0b9a9146105365780633f741adb1461053157806340626d8b1461052c57806344de240a14610527578063473e3ce71461052257806348e4163e1461051d5780634d7f2a34146105185780634ddf47d4146105135780634e71e0c81461050e5780635224372c14610509578063529898f21461050457806352f353eb146104ff57806355140232146104fa57806355c2ab94146104f557806357935462146104f057806358db9afe146104eb5780635d5f73ef146104e65780635dfe04e8146104e15780636587adb8146104dc5780636c3d8b8f146104d757806370a08231146104d257806372778547146104cd57806374645ff3146104c85780637dc0d1d0146104c35780637ecebe00146104be5780637fa0b84e146104b9578063821226e8146104b45780638285ef40146104af5780638c5d0ed3146104aa5780638da5cb5b146104a5578063910dd7c8146104a0578063959916dc1461049b57806395d89b411461049657806399a97028146104915780639c5d71921461048c5780639e15e89f14610487578063a28e6b8214610482578063a9059cbb1461047d578063aa7d966514610478578063accfde4a14610473578063ae70702e1461046e578063af405b4c14610469578063b0e21e8a14610464578063b25ea8fb1461045f578063b27c0e741461045a578063bb4cfe3b14610455578063bf0b895814610450578063c861a5261461044b578063cce19f8114610446578063cd0211eb14610441578063ce8849ed1461043c578063d49dffa714610437578063d505accf14610432578063d8dfeb451461042d578063dd62ed3e14610428578063de40657714610423578063e0996cb61461041e578063e30c397814610419578063e5644d8b14610414578063e9a492521461040f578063ea64dd561461040a578063eec0f42e14610405578063f42760b714610400578063f4d93753146103fb578063f5b33dfa146103f6578063f8ba4cff146103f1578063f9557ccb146103ec5763ffe04c660361000e57612e4f565b612e1d565b612e04565b612ddb565b612d91565b612d73565b612d55565b612d37565b612cb3565b612c2a565b612c01565b612be3565b612bba565b612b7e565b612b55565b612aa7565b6129c4565b61299b565b612934565b6128e0565b6128b7565b6127e0565b6127c2565b612787565b6126fa565b6126dc565b6125d6565b6124c5565b612211565b612074565b611ecf565b611e25565b611de7565b611dc9565b611d9e565b611d09565b611cec565b611c71565b611c0d565b611bef565b611bbd565b611b9f565b611b75565b611b38565b611b0f565b611a2e565b6118fa565b61187f565b611856565b61180d565b611775565b61174c565b6116a9565b61168b565b611661565b61163a565b611613565b6115f5565b61157c565b61149d565b611246565b611228565b6111eb565b6111cd565b6111af565b611191565b61116d565b61114f565b611126565b611108565b6110e5565b6110c7565b6110a9565b611008565b610f30565b610eda565b610d93565b610c98565b610b7d565b610af0565b610acf565b6109d8565b61094e565b6108ec565b6107a9565b6106d6565b610654565b610604565b6001600160a01b038116036105b057565b600080fd5b35906105c08261059f565b565b60409060031901126105b0576004356105da8161059f565b906024356105e78161059f565b90565b6001600160a01b0316600090815260016020526040902090565b346105b0576020610640610617366105c2565b6001600160a01b0391821660009081526003855260408082209290931681526020919091522090565b54604051908152f35b60009103126105b057565b346105b05760003660031901126105b057604061066f6138fc565b825191151582526020820152f35b60005b8381106106905750506000910152565b8181015183820152602001610680565b906020916106b98151809281855285808601910161067d565b601f01601f1916010190565b9060206105e79281815201906106a0565b346105b05760008060031936011261079c57808060018060a01b03600b541660405160208101906306fdde0360e01b825260048152610714816119a9565b51915afa610720614948565b9150156107855761076761077561073961078193614a64565b60405173546170696f63612053696e67756c61726974792d60601b6020820152928391603483015b90614931565b03601f198101835282611a0d565b604051918291826106c5565b0390f35b50610781610767610775610797614978565b610739565b80fd5b801515036105b057565b346105b05760603660031901126105b0576004356107c68161059f565b602435906107d38261079f565b604435916107e08361079f565b6005546001600160a01b0391906107fa9083163314612e6d565b156108d3578116918215908115916108cb575b501561088e5760055461087c9290610835906001600160a01b03165b6001600160a01b031690565b7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b600680546001600160a01b0319169055005b60405162461bcd60e51b81526020600482015260156024820152744f776e61626c653a207a65726f206164647265737360581b6044820152606490fd5b90503861080d565b60068054919092166001600160a01b0319909116179055005b346105b05760403660031901126105b05761091660043561090c8161059f565b60243590336141ee565b602060405160018152f35b9181601f840112156105b0578235916001600160401b0383116105b057602083818601950101116105b057565b346105b0576101803660031901126105b05760243561096c8161059f565b604435906001600160401b0382116105b05761098f610019923690600401610921565b906064359261099d8461059f565b610164359361014435936101243593610104359360e4359360c4359360a4359360843593600435612eb8565b6004359060098210156105b057565b346105b05760403660031901126105b0576109f16109c9565b6024356109fd8161079f565b6008546001600160a01b03163303610a9357610a8282610a31610a2c610a25610019966118e1565b5460ff1690565b151590565b610a40841515918214156133a0565b610a4c610a25836118e1565b610a55836118d2565b1515827feeec81de25875ce1725479bb76f720a8defdb43dea041919ae37bb4aae9847c0600080a46118e1565b9060ff801983541691151516179055565b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881d5b985d5d1a1bdc9a5e995960621b6044820152606490fd5b346105b05760003660031901126105b057602060255460801c604051908152f35b346105b05760203660031901126105b057600435610b0d8161059f565b60018060a01b031660005260186020526020604060002054604051908152f35b60ff8116036105b057565b60e09060031901126105b057600435610b508161059f565b90602435610b5d8161059f565b906044359060643590608435610b7281610b2d565b9060a4359060c43590565b346105b057610b8b36610b38565b9592809594959291924211610c535761001996610c4e93610c3b93610c2e878a610c268b610767610c3399610bbf86614173565b60405195869460208601988991959493909260c09360e08401977f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d685526000602086015260018060a01b038092166040860152166060840152608083015260a08201520152565b51902061411d565b6140a5565b919091613f8a565b6001600160a01b03838116911614613f25565b61419b565b60405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b346105b05760c03660031901126105b057600435610cb58161059f565b608435610cc18161059f565b60a435906001600160401b0382116105b05761078192610d43610d4892610767610cf2610d57963690600401610921565b604051958694630f74e47960e11b602087015260018060a01b0380921660248701526024356044870152604435606487015260643560848701521660a485015260c060c485015260e4840191615981565b615d0a565b60208082518301019101613a38565b6040519081529081906020820190565b60609060031901126105b057600435610d7f8161059f565b90602435610d8c8161059f565b9060443590565b346105b057610ddb600080516020615e22833981519152610db336610d67565b9291939083610dea575b6040519384526001600160a01b039081169416929081906020820190565b0390a360405160018152602090f35b610df3856105ea565b54610e0085821015613cfe565b6001600160a01b038281169186918816839003610e20575b505050610dbd565b6001600160a01b03881660009081526002602090815260408083203384529091529020610e6493610e5f91548460018201610e8c575b50501515613d43565b61348d565b610e6d866105ea565b55610e77816105ea565b610e8285825461349a565b9055388481610e18565b81610e5f82610e9c941015613d88565b6001600160a01b038b166000908152600260205260409020610ed29033905b9060018060a01b0316600052602052604060002090565b553884610e56565b346105b05760003660031901126105b0576032546040516001600160a01b039091168152602090f35b908160609103126105b05790565b908160e09103126105b05790565b60809060a31901126105b05760a490565b610120806003193601126105b057600435610f4a8161059f565b60443590610f578261079f565b6001600160401b03906064358281116105b057610f78903690600401610f03565b936084359283116105b057610767610ffd61001996610feb610fa1610d43973690600401610f11565b91610fab36610f1f565b95604051998a98632a9399d960e01b60208b015260018060a01b031660248a015260243560448a01521515606489015260848801526101448701906159d3565b8581036023190160a487015290615a17565b9160c4840190615b0c565b346105b05760008060031936011261079c57808060018060a01b03600d5416604051602081019063313ce56760e01b825260048152611046816119a9565b51915afa90611053614948565b918061109e575b156110925760208280518101031261079c5750602061078191015161107e81610b2d565b60405160ff90911681529081906020820190565b5050610781601261107e565b50602082511461105a565b346105b05760003660031901126105b0576020601354604051908152f35b346105b05760003660031901126105b0576020601954604051908152f35b346105b05760003660031901126105b0576020611100613be4565b604051908152f35b346105b05760003660031901126105b0576020601254604051908152f35b346105b05760003660031901126105b057600d546040516001600160a01b039091168152602090f35b346105b05760003660031901126105b0576020601154604051908152f35b346105b05760603660031901126105b0576020611100604435602435600435613547565b346105b05760003660031901126105b0576020601654604051908152f35b346105b05760003660031901126105b0576020600e54604051908152f35b346105b05760003660031901126105b0576020601554604051908152f35b346105b05760203660031901126105b0576004356112088161059f565b60018060a01b031660005260176020526020604060002054604051908152f35b346105b05760003660031901126105b0576020602954604051908152f35b346105b05760203660031901126105b0576004356001600160401b0381116105b057611276903690600401610921565b9060ff602354166114625761128d91810190614b62565b600a80546001600160a01b0319166001600160a01b038b16179055989b919a989990989296939593926040519263de40657760e01b845260208460048160018060a01b03809e165afa998a1561145d57806114039f8180916113786113fe9f8f90848f611326826113c19f94819560009161142f575b5060098054919092166001600160a01b03166001600160a01b0319909116179055565b600a546113619061133f906001600160a01b0316610829565b600580546001600160a01b0319166001600160a01b0392909216919091179055565b1615159182611423575b82611415575b5050614c12565b1695169316911692909160018060a01b03928380928160018060a01b03199716876031541617603155168560335416176033551683603254161760325516906034541617603455565b9391929060018060a01b0380948160018060a01b0319971687600d541617600d551685600b541617600b55600e55600c551690600f541617600f55565b614cb2565b610019600160ff196023541617602355565b9091501615158f8490611371565b8d82161515925061136b565b611450915060203d8111611456575b6114488183611a0d565b810190614bfd565b38611303565b503d61143e565b61386a565b60405162461bcd60e51b815260206004820152601360248201527213585c9ad95d0e881a5b9a5d1a585b1a5e9959606a1b6044820152606490fd5b346105b05760008060031936011261079c576006546001600160a01b03163381900361153857600554611525919081906114df906001600160a01b0316610829565b7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08580a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b600680546001600160a01b031916905580f35b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b346105b0576115d06107676115cb61159336610d67565b6040516314890dcb60e21b60208201526001600160a01b03938416602482015292909116604483015260648201529182906084820190565b615da3565b6040818051810103126105b05780604060208193015191015182519182526020820152f35b346105b05760003660031901126105b0576020602154604051908152f35b346105b05760003660031901126105b05760206001600160401b03602f5416604051908152f35b346105b05760003660031901126105b05760206001600160401b03602d5416604051908152f35b346105b05760003660031901126105b0576020602d546001600160401b036040519160401c168152f35b346105b05760003660031901126105b0576020601c54604051908152f35b346105b05760a03660031901126105b0576004356116c68161059f565b6064356116d28161059f565b608435906001600160401b0382116105b05761078192610d43610d4892610767611703610d57963690600401610921565b604051958694632c6dcd7f60e11b602087015260018060a01b0380921660248701526024356044870152604435606487015216608485015260a060a485015260c4840191615981565b346105b05760003660031901126105b0576031546040516001600160a01b039091168152602090f35b346105b05760003660031901126105b05761178e614248565b506080611799614316565b509350505050604051916001600160401b0380825116845260208201511660208401526040600180861b039101511660408301526060820152f35b60809060031901126105b0576004356117ec8161059f565b906024356117f98161059f565b906044356118068161079f565b9060643590565b346105b0576020611100611820366117d4565b9260076000939293526007865261183f60ff6040600020541615614fd9565b6118498482615016565b6118516147fe565b6150ec565b346105b05760003660031901126105b057600a546040516001600160a01b039091168152602090f35b346105b05760203660031901126105b05760043561189c8161059f565b60018060a01b031660005260016020526020604060002054604051908152f35b634e487b7160e01b600052602160045260246000fd5b600911156118dc57565b6118bc565b60098110156118dc576000526007602052604060002090565b346105b05760203660031901126105b0576119136109c9565b60098110156118dc576000526007602052602060ff604060002054166040519015158152f35b90600182811c92168015611969575b602083101461195357565b634e487b7160e01b600052602260045260246000fd5b91607f1691611948565b634e487b7160e01b600052604160045260246000fd5b606081019081106001600160401b038211176119a457604052565b611973565b604081019081106001600160401b038211176119a457604052565b6001600160401b0381116119a457604052565b60c081019081106001600160401b038211176119a457604052565b60e081019081106001600160401b038211176119a457604052565b90601f801991011681019081106001600160401b038211176119a457604052565b346105b05760008060031936011261079c5760405181601054611a5081611939565b80845290600190818116908115611ae75750600114611a8e575b61078184611a7a81880382611a0d565b6040519182916020835260208301906106a0565b60108352602094507f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae6725b828410611ad4575050508161078193611a7a9282010193611a6a565b8054858501870152928501928101611ab8565b6107819650611a7a9450602092508593915060ff191682840152151560051b82010193611a6a565b346105b05760003660031901126105b057600f546040516001600160a01b039091168152602090f35b346105b05760203660031901126105b057600435611b558161059f565b60018060a01b031660005260046020526020604060002054604051908152f35b346105b05760403660031901126105b057610916600435611b958161059f565b602435903361419b565b346105b05760003660031901126105b0576020602e54604051908152f35b346105b05760003660031901126105b057601454604080516001600160801b038316815260809290921c602083015290f35b346105b05760003660031901126105b0576020601b54604051908152f35b346105b05760003660031901126105b0576005546040516001600160a01b039091168152602090f35b6001600160401b0381116119a457601f01601f191660200190565b6024359061ffff821682036105b057565b359061ffff821682036105b057565b346105b05760403660031901126105b0576004356001600160401b0381116105b057366023820112156105b0578060040135611cac81611c36565b90611cba6040519283611a0d565b80825236602482850101116105b057602081600092602461001996018386013783010152611ce6611c51565b90613dcf565b346105b05760003660031901126105b05760208054604051908152f35b346105b05760008060031936011261079c57808060018060a01b03600b541660405160208101906395d89b4160e01b825260048152611d47816119a9565b51915afa611d53614948565b915015611d8757610767610775611d6c61078193614a64565b60405162746d2d60e81b602082015292839160238301610761565b50610781610767610775611d99614978565b611d6c565b346105b05760403660031901126105b0576020611100600435611dc08161059f565b60243590613b10565b346105b05760003660031901126105b0576020602c54604051908152f35b346105b05760403660031901126105b0576060611e12600435611e098161059f565b6024359061362b565b9060405192835260208301526040820152f35b346105b05760803660031901126105b057600435611e428161059f565b602435611e4e8161059f565b60443590611e5b8261059f565b606435926001600160401b0384116105b057610767611eca92611e85610019963690600401610921565b60405163514735c160e11b60208201526001600160a01b03958616602482015292851660448401529390951660648201526080608482015293849260a4840191615981565b615dcd565b346105b05760403660031901126105b057600435611eec8161059f565b6024358015801590611f96575b611f2c575b6040519081526001600160a01b03909116903390600080516020615e22833981519152908060208101610ddb565b611f35336105ea565b54611f4282821015613cfe565b6001600160a01b03831690829033839003611f60575b505050611efe565b610e5f611f6e931515613d43565b611f77336105ea565b55611f81826105ea565b611f8c82825461349a565b9055388181611f58565b50336001600160a01b03831614611ef9565b9181601f840112156105b0578235916001600160401b0383116105b0576020808501948460051b0101116105b057565b906040820191604081528151809352606081019260208093019060005b81811061205e57505050818184039101528251908183528083019281808460051b8301019501936000915b8483106120305750505050505090565b909192939495848061204e600193601f198682030187528a516106a0565b9801930193019194939290612020565b8251151586529484019491840191600101611ff5565b346105b0576040806003193601126105b057600480356001600160401b0381116105b0576120a59036908301611fa8565b92906024356120b38161079f565b6002603054146121a25760026030556120cb85614e74565b936120d586614e9c565b95600090815b8181106120fc578888610781896120f26001603055565b5192839283611fd8565b828061210983858a614ee6565b906121188b5180938193614f27565b0390305af4612125614948565b9080158061219b575b61217457829161214f6121549261214861216f968e614f35565b9015159052565b614f49565b61215e828c614f35565b52612169818b614f35565b50614164565b6120db565b888661219761218285614f49565b925162461bcd60e51b815292839283016106c5565b0390fd5b508661212e565b825162461bcd60e51b8152602081860152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606490fd5b608435906001600160401b03821682036105b057565b60a435906001600160401b03821682036105b057565b346105b05760e03660031901126105b0576024356004356044356064356122366121e5565b9061223f6121fb565b9060c4359361225960018060a01b03600554163314612e6d565b8061248d575b508061242f575b506001600160401b039182811690816123ce575b50508181168061235c575b50505080612324575b50806122dd575b508061229d57005b806122af620186a06100199310615ccd565b806021547f1f1d0e9e5e3fd195010504141e7472fc7f53e44d7cd3f236f0892778039c6326600080a3602155565b806122f0620186a061231e931115615ccd565b806029547f1a98b2490874ba87102ae05e5b66fbe02edfcfb7e8b4e2d60f9aef620de5e337600080a3602955565b38612295565b8061235691602e547f6bdc0e1a8f6a69c7dcb57e254165094714bb2a8730e2fedd8c6e9b71e67478b5600080a3602e55565b3861228e565b6123c692602d546123708282168411615ccd565b60401c167fb02a4833a4686ad41ec77a1e91a97a505459a34966985bf11c59b1e01852e4a6600080a3602d805467ffffffffffffffff60401b191660409290921b67ffffffffffffffff60401b16919091179055565b388080612285565b6124289184602d546123e6828260401c168410615ccd565b167f6d780269adaf7a0d9858a89a8c090b0b3add5f7088ccac6f619ff2b22987e7d5600080a36001600160401b03166001600160401b0319602d541617602d55565b388061227a565b80612446670de0b6b3a76400006124749310615ccd565b80602b547f4d5fa9a75b98ca1386ef794acdb2601c953e99a9c7a94ed351a46e06dc1bab28600080a3602b55565b612487612482602b54613477565b602c55565b38612266565b806124bf91602a547fa55fca071799e1b20f7cdcdf447fcc08c886bdd0cb741bf8862a311921bbb388600080a3602a55565b3861225f565b346105b05760403660031901126105b0576004356124e28161059f565b61254460243591600e5483146000146125cb576020602754935b600954612511906001600160a01b0316610829565b604051627eeac760e11b81526001600160a01b038516600482015260248101929092529093849190829081906044820190565b03915afa801561145d5761078193610d5793600092612595575b5061257f61258e929360018060a01b03166000526026602052604060002090565b90600052602052604060002090565b549061349a565b61258e92506125bd61257f9160203d81116125c4575b6125b58183611a0d565b810190613a38565b925061255e565b503d6125ab565b6020602854936124fc565b346105b05760008060031936011261079c57610d576107819160018060a01b0361260581600554163314612e6d565b600a5481166001600160a01b03166024549092906001600160801b039060801c1661263f575b5050612636816105ea565b5490339061552d565b6126476147fe565b7fbe641c3ffc44b2d6c184f023fa4ed7bda4b6ffa71e03b3c98ae0c776da1f17e761268361267760245460801c90565b6001600160801b031690565b9261268d856105ea565b61269885825461349a565b90558416918281600080516020615e22833981519152604051806126c189829190602083019252565b0390a3602480546001600160801b0316905580a3388061262b565b346105b05760003660031901126105b0576020601a54604051908152f35b346105b05760403660031901126105b0576024356127178161059f565b61272c60018060a01b03600554163314612e6d565b60008080808094600435905af1612741614948565b501561274a5780f35b60405162461bcd60e51b815260206004820152601560248201527429a3a61d103a3930b739b332b9103330b4b632b21760591b6044820152606490fd5b346105b05760003660031901126105b0576060602454604051906001600160401b0380821683528160401c16602083015260801c6040820152f35b346105b05760003660031901126105b0576020601e54604051908152f35b346105b05760403660031901126105b05760255460095461285690602090612810906001600160a01b0316610829565b6014546001600160801b0316906040518080958194638eb22cdd60e01b8352602435600484019081526001600160801b0390911660208201526001604082015260600190565b03915afa91821561145d5761288f61288761078194610d5794600091612899575b506001600160801b03841661349a565b600435613431565b9060801c9061345a565b6128b1915060203d81116125c4576125b58183611a0d565b38612877565b346105b05760003660031901126105b0576033546040516001600160a01b039091168152602090f35b346105b05761001961076761292f6128f736610d67565b60405163cce19f8160e01b60208201526001600160a01b03938416602482015292909116604483015260648201529182906084820190565b615df7565b346105b057602061110061298d61294a366117d4565b60405163cd0211eb60e01b888201526001600160a01b0394851660248201529390921660448401521515606483015260848083019190915281526115cb816119d7565b828082518301019101613a38565b346105b05760003660031901126105b0576008546040516001600160a01b039091168152602090f35b610140806003193601126105b057600435906129df8261059f565b606435906129ec8261079f565b6001600160401b03926084358481116105b057612a0d903690600401610f03565b9360a4359081116105b057612a26903690600401610f11565b9360803660c31901126105b05761001994612a89612a9b92610d439560405197889663d49dffa760e01b602089015260018060a01b03166024880152602435604488015260443560648801521515608487015260a48601526101648501906159d3565b8381036023190160c485015290615a17565b61076760e48301615ab7565b346105b057612ab536610b38565b9592809594959291924211610c535761001996612b5093610c3b93610c2e878a610c268b610767610c3399612ae986614173565b60405195869460208601988991959493909260c09360e08401977f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e26685526000602086015260018060a01b038092166040860152166060840152608083015260a08201520152565b6141ee565b346105b05760003660031901126105b057600b546040516001600160a01b039091168152602090f35b346105b0576020610640612b91366105c2565b6001600160a01b0391821660009081526002855260408082209290931681526020919091522090565b346105b05760003660031901126105b0576009546040516001600160a01b039091168152602090f35b346105b05760003660031901126105b0576020601d54604051908152f35b346105b05760003660031901126105b0576006546040516001600160a01b039091168152602090f35b346105b05760803660031901126105b0576001600160401b036004358181116105b057612c5b903690600401611fa8565b906024358381116105b057612c74903690600401611fa8565b906044358581116105b057612c8d903690600401611fa8565b9290916064359687116105b057612cab610019973690600401611fa8565b969095615c09565b346105b05760a03660031901126105b057610019600435612cd38161059f565b60243590612ce08261059f565b60443590612ced8261079f565b604051926374d2492960e11b602085015260018060a01b03809216602485015216604483015215156064820152606435608482015260843560a482015260a4815261292f816119f2565b346105b05760003660031901126105b0576020601f54604051908152f35b346105b05760003660031901126105b0576020600c54604051908152f35b346105b05760003660031901126105b0576020602b54604051908152f35b346105b0576020612dd4611100612da736610d67565b90600860009593955260078652612dc660ff6040600020541615614fd9565b612dce6147fe565b84615706565b8092615016565b346105b05760003660031901126105b0576034546040516001600160a01b039091168152602090f35b346105b05760003660031901126105b0576100196147fe565b346105b05760003660031901126105b057602554604080516001600160801b038316815260809290921c602083015290f35b346105b05760003660031901126105b0576020602a54604051908152f35b15612e7457565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b98969492909a9997959391600160a01b600190039182600554163314612edd90612e6d565b620186a09c612eee8e8d111561316e565b6020549b8060009d7fc353b09af857951dccce61b43a5854fc45beceed36c50e5d4cc2e71858a8e0df8f80a3602055838116613125575b50806130f1575b50508116908161308a575b50508061306f575b5080613054575b508061303a575b5080613013575b5080612fec575b5080612fb4575b505080612f8b575b505080612f745750565b6105c090612f86601e54821015613339565b601f55565b612f9a612fad9282111561316e565b612fa8601f548211156132df565b601e55565b3880612f6a565b80612fe5927fae6e0ab3b95f0a53ff9660a390ccedcbbf1f2355dce974a9841af106fddcfaba6016549180a3601655565b3880612f62565b80612ffb8661300d931061316e565b613008601b54821161316e565b601c55565b38612f5b565b8061302287613034931061316e565b61302f601c54821061316e565b601b55565b38612f54565b806130498861304e931061316e565b601d55565b38612f4d565b806130648961306993111561316e565b601a55565b38612f46565b8061307f8a61308493111561316e565b601955565b38612f3f565b6008546130ea92906130a4906001600160a01b0316610829565b7f5a62d22209e370e38eea92cfddcd228e656e6ec139243392a760a7769f5877fd8b80a3600880546001600160a01b0319166001600160a01b0392909216919091179055565b3880612f37565b6130fa91613202565b7fa6f004921c944d4b8bf6e38462b00f36a58d62495d56b51f571ab78f732c98158980a13880612f2c565b600f80546001600160a01b0319166001600160a01b039092169190911790557f0b2d6eb667d0522c3eb86e4288afecae6c11591ffd1345d4d12407e0598bca9b8b80a138612f25565b1561317557565b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881b9bdd081d985b1a59607a1b6044820152606490fd5b601f81116131ba575050565b6000906010825260208220906020601f850160051c830194106131f8575b601f0160051c01915b8281106131ed57505050565b8181556001016131e1565b90925082906131d8565b91906001600160401b0381116119a45761322681613221601054611939565b6131ae565b6000601f821160011461326057819293600092613255575b50508160011b916000199060031b1c191617601055565b01359050388061323e565b6010600052601f198216937f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae67291805b8681106132c757508360019596106132ad575b505050811b01601055565b0135600019600384901b60f8161c191690553880806132a2565b9092602060018192868601358155019401910161328f565b156132e657565b60405162461bcd60e51b815260206004820152602560248201527f4d61726b65743a20636f6c6c61746572616c697a6174696f6e5261746520746f6044820152646f2062696760d81b6064820152608490fd5b1561334057565b60405162461bcd60e51b815260206004820152603260248201527f4d61726b65743a206c69717569646174696f6e436f6c6c61746572616c697a616044820152711d1a5bdb94985d19481d1bdbc81cdb585b1b60721b6064820152608490fd5b156133a757565b60405162461bcd60e51b81526020600482015260126024820152714d61726b65743a2073616d6520737461746560701b6044820152606490fd5b634e487b7160e01b600052601160045260246000fd5b90620186a09182810292818404149015171561340f57565b6133e1565b90670de0b6b3a76400009182810292818404149015171561340f57565b8181029291811591840414171561340f57565b634e487b7160e01b600052601260045260246000fd5b8115613464570490565b613444565b604d811161340f57600a0a90565b90670de0b6b3a764000091820391821161340f57565b9190820391821161340f57565b9190820180921161340f57565b8181039291600013801582851316918412161761340f57565b906509184e72a0009182810292818405149015171561340f57565b90670de0b6b3a76400009182810292818405149015171561340f57565b818102929160008212600160ff1b82141661340f57818405149015171561340f57565b811561346457600160ff1b811460001983141661340f570590565b600160ff1b811461340f5760000390565b60145491929190613562906001600160801b03831690613431565b9060801c9081156134645761358f91613580910493601f5490613431565b61358983613469565b9061345a565b90818310613623576135f46135ee6135e96135ad6135f9958761348d565b936135e46135de6135d5601e546135cf6135c686613469565b6021549061349a565b90613431565b61358984613469565b91613469565b6134a7565b6134c0565b916134db565b61351b565b600081121561361d5761360b90613536565b905b808211613618575090565b905090565b9061360d565b505050600090565b6001600160a01b038116600090815260176020526040812054919392909180156137a5576136d99061365b614267565b50613664614316565b50505050509490506136778415156139ec565b60095460209061368f906001600160a01b0316610829565b600c546001600160a01b038a1660009081526018602052604080822054905163442c159960e01b815260048101939093526024830152604482015294859190829081906064820190565b03915afa92831561145d5761377c9561358961267760206137406137298a61372461371b6137769c61374f9a8c91613788575b50602254620186a090046135cf565b601e5490613431565b61345a565b85519098906135cf906001600160801b0316612677565b9301516001600160801b031690565b908282106137805750035b6001600160a01b03909516600090815260186020526040902090565b54613a47565b9091565b91505061375a565b61379f9150873d81116125c4576125b58183611a0d565b3861370c565b505080919250918190565b91908260409103126105b057602082516137c98161079f565b92015190565b6020808252600091601054916137e483611939565b92838284015260019081811690816000146138475750600114613809575b5050505090565b929350601060005280600020926000935b8585106138335750505060409250010138808080613802565b80548585016040015293820193810161381a565b925050506040935060ff929192191683830152151560051b010138808080613802565b6040513d6000823e3d90fd5b1561387d57565b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881c985d19481d1bdbc81bdb1960621b6044820152606490fd5b156138c057565b60405162461bcd60e51b81526020600482015260146024820152734d61726b65743a20696e76616c6964207261746560601b6044820152606490fd5b600f54613911906001600160a01b0316610829565b6040805163d6d7d52560e01b81529291839081600081613933600482016137cf565b03925af1801561145d5760009283916139b8575b509082156139935761395a8215156138b9565b61396382601155565b817f9f9192b5edb17356c524e08d9e025c8e2f6307e6ea52fb7968faa3081f51c3c8600080a25b6105c042601355565b90506139af6139a76013546012549061349a565b421115613876565b6011549061398a565b90506139dc91925060403d81116139e5575b6139d48183611a0d565b8101906137b0565b91909138613947565b503d6139ca565b156139f357565b60405162461bcd60e51b815260206004820152601e60248201527f4d61726b65743a2065786368616e676552617465206e6f742076616c696400006044820152606490fd5b908160209103126105b0575190565b613a9c6020831592613a5984156139ec565b600954600c5460405163442c159960e01b81526004810191909152602481019290925260006044830152909283916001600160a01b031690829081906064820190565b03915afa801561145d57613abc91600091613ad6575b5060225490613431565b906134645704620186a0613ad2601e5483613431565b0491565b613aee915060203d81116125c4576125b58183611a0d565b38613ab2565b9190916000838201938412911290801582169115161761340f57565b90613b34613b52916137768460018060a01b03166000526018602052604060002090565b6001600160a01b039093166000908152601760205260409020909291565b548015613623578215613623578281106136235781811015613bdb5782613b9b613b96613ba195610e5f6135899561288f6014549160018060801b03831690613431565b6133f7565b9261348d565b613bcf601b5491613bca613bc1601c5492613bbc84876134a7565b6134f8565b620186a0900590565b613af4565b90808212613618575090565b505050601b5490565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03161480613cd5575b15613c3f577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f000000000000000000000000000000000000000000000000000000000000000082527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a08152613ccf816119d7565b51902090565b507f00000000000000000000000000000000000000000000000000000000000000004614613c16565b15613d0557565b60405162461bcd60e51b815260206004820152601660248201527545524332303a2062616c616e636520746f6f206c6f7760501b6044820152606490fd5b15613d4a57565b60405162461bcd60e51b815260206004820152601660248201527545524332303a206e6f207a65726f206164647265737360501b6044820152606490fd5b15613d8f57565b60405162461bcd60e51b815260206004820152601860248201527745524332303a20616c6c6f77616e636520746f6f206c6f7760401b6044820152606490fd5b6101009081818051810103126105b0576020810151613ded8161079f565b604082015192613dfc8461059f565b606083015194613e0b8661059f565b60808401519460a085015160c086015193613e2585610b2d565b60e08701519601516001600160a01b0392831698831696428310610c5357613ee795613edb8a8c610c268199610767613ee0998f8f600014613efe577f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e266965b613e8d87614173565b60408051602081019a8b5261ffff909716908701526001600160a01b03978816606087015296909116608085015260a084015260c083019490945260e0820193909352918290610100820190565b613f71565b1614613f25565b15613ef5576105c0926141ee565b6105c09261419b565b7f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d696613e84565b15613f2c57565b60405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152606490fd5b916105e79391610c33936140a5565b600511156118dc57565b613f9381613f80565b80613f9b5750565b613fa481613f80565b60018103613fec5760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b6044820152606490fd5b613ff581613f80565b600281036140425760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606490fd5b8061404e600392613f80565b1461405557565b60405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608490fd5b9291906fa2a8918ca85bafe22016d0b997e4df60600160ff1b0383116141115791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa1561145d5781516001600160a01b0381161561410b579190565b50600190565b50505050600090600390565b614125613be4565b9060405190602082019261190160f01b84526022830152604282015260428152608081018181106001600160401b038211176119a45760405251902090565b600019811461340f5760010190565b6001600160a01b0316600090815260046020526040902080549061419682614164565b905590565b6001600160a01b03908116600081815260036020908152604080832095909416808352949052918220849055907fe50de2333c10a9502fcb1d8ae13a51bbf423153dfc63c2b8997665b32154afc39080a4565b6001600160a01b0390811660008181526002602090815260408083208686168452825290912091937f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259391928690556040519586521693a3565b6040519061425582611989565b60006040838281528260208201520152565b60405190614274826119a9565b60006020838281520152565b6040519061428d82611989565b8160406024546001600160401b03808216845281831c16602084015260801c910152565b604051906142be826119a9565b6014546001600160801b038116835260801c6020830152565b604051906142e4826119a9565b6025546001600160801b038116835260801c6020830152565b6001600160801b03918216908216019190821161340f57565b61431e614248565b50614327614267565b50614330614267565b50614339614280565b906143426142b1565b9061434b6142d7565b906143b060008061436661082960095460018060a01b031690565b600e54865160405163442c159960e01b808252600482018490526001600160801b039092166024820152600060448201529296602096919590939092918790829081906064820190565b03818b5afa801561145d576143e19184916147ba575b508a516143db906001600160801b0316612677565b9061349a565b80614797575081945b8a6144176144116144058a8a9401516001600160401b031690565b6001600160401b031690565b4261348d565b96871561476f57506001600160401b03428116898e01528b8901516001600160801b039995919491939192908a161561471157508b518d518692918a91614472916001600160401b03909116906001600160801b0316613431565b9061447c91613431565b8d51670de0b6b3a76400009091049b908e906144a4908d8f16906001600160801b03166142fd565b6001600160801b039081169091528d5160405193845260048401959095529390931660248201526000604482015291829060649082905afa801561145d578461455c6145388f978f613724908f926126776135cf9161374061452361457e9b61452f9d8f916146f4575b5086516143db906001600160801b0316612677565b9b8c97601a5490613431565b620186a0900490565b9a8b16916145696040890161455c85614557835160018060801b031690565b6142fd565b6001600160801b03169052565b8d0180519092906001600160801b03166142fd565b806146d15750945b602a54868181101561462a57936137246145ea936145d16144056145dc6145d66145c3886137246145be6145f79d9e6144059c61348d565b613414565b946145d1602e549680613431565b613431565b8461349a565b94516001600160401b031690565b6001600160401b03168a52565b88516001600160401b0316602d546001600160401b03169180831691161061461d575b50565b6001600160401b03168852565b919050602b5480831161463f575b5050505050565b6146bf946145d161440561468261467c61466e6146656145be613724986146909b61348d565b602c549061345a565b966145d1602e549880613431565b8661349a565b92516001600160401b031690565b602d546146a89060401c6001600160401b0316614405565b8082116146c9575b50166001600160401b03168952565b8738808080614638565b9050386146b0565b8a516146ee9250613724906145be906001600160801b0316612677565b94614586565b61470b9150843d86116125c4576125b58183611a0d565b3861450e565b985050509650929798935050945061473082516001600160401b031690565b602f546001600160401b03169180831691160361475a575b5094936147536142d7565b9383929190565b6001600160401b031681526001945038614748565b9a505050509550969350505050926147856142b1565b9261478e6142d7565b92809281929190565b89516147b49190613724906145be906001600160801b0316612677565b946143ea565b6147d19150883d8a116125c4576125b58183611a0d565b386143c6565b805160209091015160801b6001600160801b0319166001600160801b039190911617602555565b6105c06148ca6148f161480f614316565b9397949593909290156148f6575050506001600160401b03602f54166000807f33af5ce86e8438eff54589f85332916444457dfa8685493fbd579b809097026b6020604051838152a45b6148836001600160401b038251166001600160401b03166001600160401b03196024541617602455565b6020810151602480546040938401516001600160401b039091169290931b67ffffffffffffffff60401b169190911760809290921b6001600160801b031916919091179055565b805160209091015160801b6001600160801b0319166001600160801b039190911617601455565b6147d7565b7f33af5ce86e8438eff54589f85332916444457dfa8685493fbd579b809097026b60206001600160401b0386511694604051908152a4614859565b906149446020928281519485920161067d565b0190565b3d15614973573d9061495982611c36565b916149676040519384611a0d565b82523d6000602084013e565b606090565b60405190614985826119a9565b60038252623f3f3f60e81b6020830152565b634e487b7160e01b600052603260045260246000fd5b9081518110156149be570160200190565b614997565b60ff1660ff811461340f5760010190565b906149de82611c36565b6149eb6040519182611a0d565b82815280926149fc601f1991611c36565b0190602036910137565b6020818303126105b0578051906001600160401b0382116105b0570181601f820112156105b0578051614a3881611c36565b92614a466040519485611a0d565b818452602082840101116105b0576105e7916020808501910161067d565b805160408110614a825750806020806105e793518301019101614a06565b602092908303614b57576000805b60ff81168581109081614b35575b5015614ab257614aad906149c3565b614a90565b92614ac060ff8095166149d4565b92825b85811687811080614b16575b15614b0b579081614b00614af7614ae9614b0695886149ad565b516001600160f81b03191690565b871a91886149ad565b536149c3565b614ac3565b505094505050905090565b506001600160f81b0319614b2d614ae983876149ad565b161515614acf565b6001600160f81b03199150614b4e90614ae990876149ad565b16151538614a9e565b9150506105e7614978565b90816101a09103126105b0578035614b798161059f565b916020820135614b888161059f565b916040810135614b978161059f565b91614ba4606083016105b5565b91614bb1608082016105b5565b91614bbe60a083016105b5565b9160c081013591614bd160e083016105b5565b9161010081013591614be661012083016105b5565b916101408101359161018061016083013592013590565b908160209103126105b057516105e78161059f565b15614c1957565b60405162461bcd60e51b815260206004820152600d60248201526c29a3a61d103130b2103830b4b960991b6044820152606490fd5b15614c5557565b60405162461bcd60e51b815260206004820152602f60248201527f53474c3a206c69717569646174696f6e436f6c6c61746572616c697a6174696f60448201526e1b94985d19481b9bdd081d985b1a59608a1b6064820152608490fd5b614ccd63097343e06001600160401b0319602d541617602d55565b602d805467ffffffffffffffff60401b19166324ea412360491b179055614d047054a2b63d65d79d094abb66880000000000602e55565b614d35614d19602d546001600160401b031690565b6001600160401b03166001600160401b0319602f541617602f55565b614d66614d4a602f546001600160401b031690565b6001600160401b03166001600160401b03196024541617602455565b614d6e6138fc565b5050614d7b6103e8601955565b614d856000601a55565b614d8f6032602055565b614d9a612ee0602155565b8015614e5057601e555b8015614e4357601f555b614dbd601f54601e5410614c4e565b614dc86161a8602955565b8015614e31576022555b614dde62013880601b55565b614dea62015f90601c55565b614df5612710601d55565b614e06670429d069189e0000602a55565b614e176706f05b59d3b20000602b55565b614e25612482602b54613477565b6105c062015180601255565b50614dd2670de0b6b3a7640000602255565b50614dae62013880612f86565b50614da4620124f8612fa8565b6001600160401b0381116119a45760051b60200190565b90614e7e82614e5d565b614e8b6040519182611a0d565b82815280926149fc601f1991614e5d565b90614ea682614e5d565b614eb36040519182611a0d565b8281528092614ec4601f1991614e5d565b019060005b828110614ed557505050565b806060602080938501015201614ec9565b91908110156149be5760051b81013590601e19813603018212156105b05701908135916001600160401b0383116105b05760200182360381136105b0579190565b908092918237016000815290565b80518210156149be5760209160051b010190565b6103e8815111614fa5576044815110614f72578060248060046105e79401518301019101614a06565b50604051614f7f816119a9565b60168152754d61726b65743a206e6f2072657475726e206461746160501b602082015290565b50604051614fb2816119a9565b60178152764d61726b65743a20726561736f6e20746f6f206c6f6e6760481b602082015290565b15614fe057565b60405162461bcd60e51b815260206004820152600e60248201526d13585c9ad95d0e881c185d5cd95960921b6044820152606490fd5b6001600160a01b03811633810361502c57505050565b60009081526002602090815260408083203384529091529020829054106150b0576001600160a01b038116600090815260026020526040902060001990615074903390610ebb565b540361507e575050565b6001600160a01b031660009081526002602052604090206150ac906150a4903390610ebb565b91825461348d565b9055565b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881b9bdd08185c1c1c9bdd995960621b6044820152606490fd5b93929190936150f96142d7565b80516009546001600160801b039791881694929061516590602090615126906001600160a01b0316610829565b600e54601454604051638eb22cdd60e01b815260048101929092526001600160801b031660248201526001604482015292839190829081906064820190565b03915afa801561145d576151829160009161530f575b508661349a565b806152e057506103e886985b60208301516151a990828c16906001600160801b03166142fd565b16106152d457615240615219959493926151ca6148f18b8a6152519661532d565b6151d3816105ea565b6151de8b825461349a565b90556040518a81526001600160a01b038281169890976152269287928b91600091600080516020615e22833981519152919081906020820190565b0390a38a600e54896153d3565b6001600160a01b0316600090815260266020526040902090565b602754600052602052604060002090565b61525c86825461349a565b9055156152ac57506009547f30a8c4f9ab5af7e1309ca87c32377d1a83366c5990472dbf9d262450eae14e389061529b906001600160a01b0316610829565b915b604051878152921691602090a4565b7f30a8c4f9ab5af7e1309ca87c32377d1a83366c5990472dbf9d262450eae14e38909161529d565b50600096505050505050565b60208201516103e8916153099161372490615303906001600160801b0316612677565b8a613431565b9861518e565b615327915060203d81116125c4576125b58183611a0d565b3861517b565b91906153519061533b614267565b5060018060801b039182809216828651166142fd565b16835261536781602085019316828451166142fd565b16905290565b6001600160a01b039182168152911660208201526040810191909152606081019190915260800190565b1561539e57565b60405162461bcd60e51b815260206004820152600d60248201526c0a68e987440e8dede40daeac6d609b1b6044820152606490fd5b9091929360001461546b5750600954615425916020916153fb906001600160a01b0316610829565b604051627eeac760e11b815230600482015260248101929092529092839190829081906044820190565b03915afa92831561145d576105c0936154469260009161544d575b5061348d565b1015615397565b615465915060203d81116125c4576125b58183611a0d565b38615440565b6009549193509190615485906001600160a01b0316610829565b803b156105b0576154b3936000809460405196879586948593630208d92960e11b855230906004860161536d565b03925af1801561145d576154c45750565b806154d16105c0926119c4565b80610649565b6001600160801b03918216908216039190821161340f57565b156154f757565b60405162461bcd60e51b815260206004820152600e60248201526d14d1d30e881b5a5b881b1a5b5a5d60921b6044820152606490fd5b6025549093926001600160801b039160801c156156fd5761554c6142d7565b80519095906001600160801b031660095461557690602090615126906001600160a01b0316610829565b03915afa91821561145d5785916000936156dd575b5016906155979161349a565b6155a19083613431565b6020870180519092916155bd916001600160801b03169061345a565b9687946155c9836105ea565b858154906155d69161348d565b90556040518581526001600160a01b0393841694906000908690600080516020615e2283398151915290602090a3825161561c90838916906001600160801b03166154d7565b6001600160801b031683528051868316906001600160801b031690615640916154d7565b6001600160801b03168152516001600160801b0316166103e81115615664906154f0565b61566d906147d7565b6040519283528416917f6e853a5fd6b51d773691f542ebac8513c9992a51380d4c342031056a6411422890602090a4600954600e546001600160a01b0390911691823b156105b0576154b39260009283879360405196879586948593630208d92960e11b8552306004860161536d565b6156f691935060203d81116125c4576125b58183611a0d565b913861558b565b50600093505050565b6025546001600160801b0394939192919060801c156156fd576157276142d7565b80519091906001600160801b031660095461575190602090615126906001600160a01b0316610829565b03915afa91821561145d578891600093615961575b5016906157729161349a565b61577c9082613431565b6020830180519091615797916001600160801b03169061345a565b9687936157a3876105ea565b848154906157b09161348d565b90556040518481526001600160a01b03888116949093916000908690600080516020615e2283398151915290602090a382516157f890838916906001600160801b03166154d7565b6001600160801b031683528051868316906001600160801b03169061581c916154d7565b6001600160801b03168152516001600160801b0316166103e81115615840906154f0565b615849906147d7565b6040519283528416917f6e853a5fd6b51d773691f542ebac8513c9992a51380d4c342031056a6411422890602090a4600954600e546001600160a01b0390911691823b156105b0576158b99260009283889360405196879586948593630208d92960e11b8552306004860161536d565b03925af1801561145d5761594e575b506001600160a01b03811660009081526026602052604090206158f8602754809290600052602052604060002090565b5484111561592457506001600160a01b0316600090815260266020526040812061592190615240565b55565b61257f6159439260018060a01b03166000526026602052604060002090565b6150ac83825461348d565b806154d161595b926119c4565b386158c8565b61597a91935060203d81116125c4576125b58183611a0d565b9138615766565b908060209392818452848401376000828201840152601f01601f1916010190565b9035601e19823603018112156105b05701602081359101916001600160401b0382116105b05781360383136105b057565b906060615a076105e79380356159e88161059f565b6001600160a01b031684526020818101359085015260408101906159a2565b9190928160408201520191615981565b908135815261ffff80615a2c60208501611c62565b166020830152615a3e60408401611c62565b16604082015260c06060830135615a548161059f565b6001600160a01b03908116606084015281615aa4615a89615a7860808801886159a2565b60e0608089015260e0880191615981565b615a9660a08801886159a2565b9087830360a0890152615981565b940135615ab08161059f565b1691015290565b606060c435615ac58161059f565b6001600160a01b0390811683528060e435615adf8161059f565b1660208401528061010435615af38161059f565b16604084015261012435615b068161059f565b16910152565b60609081813591615b1c8361059f565b6001600160a01b039283168552826020820135615b388161059f565b166020860152826040820135615b4d8161059f565b1660408601520135615b068161059f565b91908082526020809201929160005b828110615b7b575050505090565b9091929382806001928735615b8f8161059f565b848060a01b03168152019501910192919092615b6d565b9082818152602080910193818360051b82010194846000925b858410615bd0575050505050505090565b909192939495968580615bf8600193601f19868203018852615bf28c886159a2565b90615981565b990194019401929594939190615bbf565b9295969094969391936040519660209663e5644d8b60e01b888a01528060a48a01608060248c01525260c48901959060005b89828210615ca5575050505087850360231990810160448a0152818652936001600160fb1b0382116105b05761461a99611eca988a9861076798615c969560051b809284830137018981036003190160648b01520191615b5e565b92858403016084860152615ba6565b808499600193949535615cb78161059f565b848060a01b031681520198019101919091615c3b565b15615cd457565b60405162461bcd60e51b815260206004820152600e60248201526d14d1d30e881b9bdd081d985b1a5960921b6044820152606490fd5b6034546001600160a01b03168015615d6857816000929160208493519201905af490615d34614948565b9115615d3c57565b612197615d4883614f49565b60405162461bcd60e51b81526020600482015291829160248301906106a0565b60405162461bcd60e51b815260206004820152601360248201527214d1d30e881b5bd91d5b19481b9bdd081cd95d606a1b6044820152606490fd5b6032546001600160a01b03168015615d6857816000929160208493519201905af490615d34614948565b6031546001600160a01b03168015615d6857816000929160208493519201905af490615d34614948565b6033546001600160a01b03168015615d6857816000929160208493519201905af490615d3461494856feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220cbe274fdc6a880c6f7d7c9008e088f59c117f36c92eb5ab19b7ef75420dd4a1164736f6c63430008120033"; + "0x6101408060405234620001ea576200001781620001ef565b601381526001602082017f546170696f63612053696e67756c617269747900000000000000000000000000815260206040516200005481620001ef565b8381520192603160f81b845251902091208160e052610100918183524660a0526040519160208301907f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f92838352604085015260608401524660808401523060a084015260a0835260c083019280841060018060401b03851117620001d45760408490525190206080523060c052610120908152600580546001600160a01b0319163390811790915560007f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a362013880601b5562015f90601c55612710601d55612ee06020557f0bd4060688a1800ae986e4840aebc924bb40b5bf44de4583df2257220b54b77c6026557f7d1dc38e60930664f8cbf495da6556ca091d2f92d6550877750c049864b182306027556161a86028556032602f556001603055615e6c92836200020c843960805183613c12015260a05183613ccd015260c05183613bdc015260e05183613c6101525182613c8701525181613c3e0152f35b634e487b7160e01b600052604160045260246000fd5b600080fd5b604081019081106001600160401b03821117620001d45760405256fe6080604052600436101561001b575b361561001957600080fd5b005b60003560e01c8062a02a201461059a57806302ce728f1461059557806306fdde0314610590578063078dfbe71461058b578063095ea7b3146105865780630c4e84f01461058157806318160ddd1461057c5780631c9e379b146105775780631da8bf10146105725780631ee9c8f21461056d57806323b872dd1461056857806325384fd8146105635780632a9399d91461055e578063313ce56714610559578063331960ff1461055457806334d441d01461054f5780633644e5151461054a57806337b6b7b91461054557806338225f111461054057806338d52e0f1461053b5780633ba0b9a9146105365780633f741adb1461053157806340626d8b1461052c57806344de240a14610527578063473e3ce71461052257806348e4163e1461051d5780634d7f2a34146105185780634ddf47d4146105135780634e71e0c81461050e5780635224372c14610509578063529898f21461050457806352f353eb146104ff57806355140232146104fa57806355c2ab94146104f557806357935462146104f057806358db9afe146104eb5780635d5f73ef146104e65780635dfe04e8146104e15780636587adb8146104dc5780636c3d8b8f146104d757806370a08231146104d257806372778547146104cd57806374645ff3146104c85780637dc0d1d0146104c35780637ecebe00146104be5780637fa0b84e146104b9578063821226e8146104b45780638285ef40146104af5780638c5d0ed3146104aa5780638da5cb5b146104a5578063910dd7c8146104a0578063959916dc1461049b57806395d89b411461049657806399a97028146104915780639c5d71921461048c5780639e15e89f14610487578063a28e6b8214610482578063a9059cbb1461047d578063aa7d966514610478578063ae70702e14610473578063af405b4c1461046e578063b0e21e8a14610469578063b25ea8fb14610464578063b27c0e741461045f578063bb4cfe3b1461045a578063bf0b895814610455578063c861a52614610450578063cce19f811461044b578063cd0211eb14610446578063ce8849ed14610441578063d3fb2a381461043c578063d49dffa714610437578063d505accf14610432578063d8dfeb451461042d578063dd62ed3e14610428578063de40657714610423578063e0996cb61461041e578063e30c397814610419578063e5644d8b14610414578063e9a492521461040f578063ea64dd561461040a578063eec0f42e14610405578063f42760b714610400578063f4d93753146103fb578063f5b33dfa146103f6578063f8ba4cff146103f1578063f9557ccb146103ec5763ffe04c660361000e576130fa565b6130c8565b6130af565b613086565b61303c565b61301e565b613000565b612fe2565b612f5e565b612ed5565b612eac565b612e8e565b612e65565b612e29565b612e00565b612d52565b612c6f565b61298a565b612961565b6128fa565b6128a6565b61287d565b6127a6565b612788565b61274d565b6126c0565b6126a2565b61259c565b61248b565b61231a565b612175565b6120cb565b61208d565b61206f565b612044565b611faf565b611f91565b611f16565b611eb2565b611e94565b611e62565b611e44565b611e1a565b611ddd565b611db4565b611cd3565b611b9f565b611b24565b611afb565b611ab2565b611a1a565b6119f1565b61194e565b611930565b611906565b6118df565b6118b8565b61189b565b611822565b611743565b6114ec565b6114ce565b611491565b611473565b611455565b611437565b611413565b6113f5565b6113cc565b6110d7565b61108d565b61106a565b61104c565b61102e565b610f8d565b610eb5565b610e5f565b610d18565b610c1d565b610ad5565b610a48565b610a27565b610930565b6108ec565b6107a9565b6106d6565b610654565b610604565b6001600160a01b038116036105b057565b600080fd5b35906105c08261059f565b565b60409060031901126105b0576004356105da8161059f565b906024356105e78161059f565b90565b6001600160a01b0316600090815260016020526040902090565b346105b0576020610640610617366105c2565b6001600160a01b0391821660009081526003855260408082209290931681526020919091522090565b54604051908152f35b60009103126105b057565b346105b05760003660031901126105b057604061066f6138f1565b825191151582526020820152f35b60005b8381106106905750506000910152565b8181015183820152602001610680565b906020916106b98151809281855285808601910161067d565b601f01601f1916010190565b9060206105e79281815201906106a0565b346105b05760008060031936011261079c57808060018060a01b03600b541660405160208101906306fdde0360e01b82526004815261071481611c4e565b51915afa61072061493d565b9150156107855761076761077561073961078193614a59565b60405173546170696f63612053696e67756c61726974792d60601b6020820152928391603483015b90614926565b03601f198101835282611cb2565b604051918291826106c5565b0390f35b5061078161076761077561079761496d565b610739565b80fd5b801515036105b057565b346105b05760603660031901126105b0576004356107c68161059f565b602435906107d38261079f565b604435916107e08361079f565b6005546001600160a01b0391906107fa9083163314613118565b156108d3578116918215908115916108cb575b501561088e5760055461087c9290610835906001600160a01b03165b6001600160a01b031690565b7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b600680546001600160a01b0319169055005b60405162461bcd60e51b81526020600482015260156024820152744f776e61626c653a207a65726f206164647265737360581b6044820152606490fd5b90503861080d565b60068054919092166001600160a01b0319909116179055005b346105b05760403660031901126105b05761091660043561090c8161059f565b60243590336141e3565b602060405160018152f35b6004359060098210156105b057565b346105b05760403660031901126105b057610949610921565b6024356109558161079f565b6008546001600160a01b031633036109eb576109da8261098961098461097d61001996611b86565b5460ff1690565b151590565b61099884151591821415613395565b6109a461097d83611b86565b6109ad83611b77565b1515827feeec81de25875ce1725479bb76f720a8defdb43dea041919ae37bb4aae9847c0600080a4611b86565b9060ff801983541691151516179055565b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881d5b985d5d1a1bdc9a5e995960621b6044820152606490fd5b346105b05760003660031901126105b057602060245460801c604051908152f35b346105b05760203660031901126105b057600435610a658161059f565b60018060a01b031660005260186020526020604060002054604051908152f35b60ff8116036105b057565b60e09060031901126105b057600435610aa88161059f565b90602435610ab58161059f565b906044359060643590608435610aca81610a85565b9060a4359060c43590565b346105b057610ae336610a90565b9592809594959291924211610bab5761001996610ba693610b9393610b86878a610b7e8b610767610b8b99610b1786614168565b60405195869460208601988991959493909260c09360e08401977f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d685526000602086015260018060a01b038092166040860152166060840152608083015260a08201520152565b519020614112565b61409a565b919091613f7f565b6001600160a01b03838116911614613f1a565b614190565b60405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b9181601f840112156105b0578235916001600160401b0383116105b057602083818601950101116105b057565b346105b05760c03660031901126105b057600435610c3a8161059f565b608435610c468161059f565b60a435906001600160401b0382116105b05761078192610cc8610ccd92610767610c77610cdc963690600401610bf0565b604051958694630f74e47960e11b602087015260018060a01b0380921660248701526024356044870152604435606487015260643560848701521660a485015260c060c485015260e4840191615976565b615cff565b60208082518301019101613a2d565b6040519081529081906020820190565b60609060031901126105b057600435610d048161059f565b90602435610d118161059f565b9060443590565b346105b057610d60600080516020615e17833981519152610d3836610cec565b9291939083610d6f575b6040519384526001600160a01b039081169416929081906020820190565b0390a360405160018152602090f35b610d78856105ea565b54610d8585821015613cf3565b6001600160a01b038281169186918816839003610da5575b505050610d42565b6001600160a01b03881660009081526002602090815260408083203384529091529020610de993610de491548460018201610e11575b50501515613d38565b613482565b610df2866105ea565b55610dfc816105ea565b610e0785825461348f565b9055388481610d9d565b81610de482610e21941015613d7d565b6001600160a01b038b166000908152600260205260409020610e579033905b9060018060a01b0316600052602052604060002090565b553884610ddb565b346105b05760003660031901126105b0576032546040516001600160a01b039091168152602090f35b908160609103126105b05790565b908160e09103126105b05790565b60809060a31901126105b05760a490565b610120806003193601126105b057600435610ecf8161059f565b60443590610edc8261079f565b6001600160401b03906064358281116105b057610efd903690600401610e88565b936084359283116105b057610767610f8261001996610f70610f26610cc8973690600401610e96565b91610f3036610ea4565b95604051998a98632a9399d960e01b60208b015260018060a01b031660248a015260243560448a01521515606489015260848801526101448701906159c8565b8581036023190160a487015290615a0c565b9160c4840190615b01565b346105b05760008060031936011261079c57808060018060a01b03600d5416604051602081019063313ce56760e01b825260048152610fcb81611c4e565b51915afa90610fd861493d565b9180611023575b156110175760208280518101031261079c5750602061078191015161100381610a85565b60405160ff90911681529081906020820190565b50506107816012611003565b506020825114610fdf565b346105b05760003660031901126105b0576020601354604051908152f35b346105b05760003660031901126105b0576020601954604051908152f35b346105b05760003660031901126105b0576020611085613bd9565b604051908152f35b346105b05760003660031901126105b0576020601254604051908152f35b60a435906001600160401b03821682036105b057565b60c435906001600160401b03821682036105b057565b346105b0576101003660031901126105b0576004356064356044356024356084356111006110ab565b6111086110c1565b60e4359261112160018060a01b03600554163314613118565b620186a096611132888a1115613294565b611166602f54998060009b7fc353b09af857951dccce61b43a5854fc45beceed36c50e5d4cc2e71858a8e0df8d80a3602f55565b80611395575b5080611338575b506001600160401b039182811690816112d8575b505081811680611267575b50505080611230575b50806111ed575b50806111ac578280f35b6111ba6111e7928210615cc2565b806020547f1f1d0e9e5e3fd195010504141e7472fc7f53e44d7cd3f236f0892778039c63268580a3602055565b38808280f35b806111fd8461122a931115615cc2565b806028547f1a98b2490874ba87102ae05e5b66fbe02edfcfb7e8b4e2d60f9aef620de5e3378780a3602855565b386111a2565b8061126191602d547f6bdc0e1a8f6a69c7dcb57e254165094714bb2a8730e2fedd8c6e9b71e67478b58880a3602d55565b3861119b565b6112d092602c5461127b8282168411615cc2565b60401c167fb02a4833a4686ad41ec77a1e91a97a505459a34966985bf11c59b1e01852e4a68980a3602c805467ffffffffffffffff60401b191660409290921b67ffffffffffffffff60401b16919091179055565b388080611192565b6113319184602c546112f0828260401c168410615cc2565b167f6d780269adaf7a0d9858a89a8c090b0b3add5f7088ccac6f619ff2b22987e7d58b80a36001600160401b03166001600160401b0319602c541617602c55565b3880611187565b8061134f670de0b6b3a764000061137c9310615cc2565b80602a547f4d5fa9a75b98ca1386ef794acdb2601c953e99a9c7a94ed351a46e06dc1bab288b80a3602a55565b61138f61138a602a5461346c565b602b55565b38611173565b806113c6916029547fa55fca071799e1b20f7cdcdf447fcc08c886bdd0cb741bf8862a311921bbb3888c80a3602955565b3861116c565b346105b05760003660031901126105b057600d546040516001600160a01b039091168152602090f35b346105b05760003660031901126105b0576020601154604051908152f35b346105b05760603660031901126105b057602061108560443560243560043561353c565b346105b05760003660031901126105b0576020601654604051908152f35b346105b05760003660031901126105b0576020600e54604051908152f35b346105b05760003660031901126105b0576020601554604051908152f35b346105b05760203660031901126105b0576004356114ae8161059f565b60018060a01b031660005260176020526020604060002054604051908152f35b346105b05760003660031901126105b0576020602854604051908152f35b346105b05760203660031901126105b0576004356001600160401b0381116105b05761151c903690600401610bf0565b9060ff602254166117085761153391810190614b57565b600a80546001600160a01b0319166001600160a01b038b16179055989b919a989990989296939593926040519263de40657760e01b845260208460048160018060a01b03809e165afa998a1561170357806116a99f81809161161e6116a49f8f90848f6115cc826116679f9481956000916116d5575b5060098054919092166001600160a01b03166001600160a01b0319909116179055565b600a54611607906115e5906001600160a01b0316610829565b600580546001600160a01b0319166001600160a01b0392909216919091179055565b16151591826116c9575b826116bb575b5050614c07565b1695169316911692909160018060a01b03928380928160018060a01b03199716876031541617603155168560335416176033551683603254161760325516906034541617603455565b9391929060018060a01b0380948160018060a01b0319971687600d541617600d551685600b541617600b55600e55600c551690600f541617600f55565b614ca7565b610019600160ff196022541617602255565b9091501615158f8490611617565b8d821615159250611611565b6116f6915060203d81116116fc575b6116ee8183611cb2565b810190614bf2565b386115a9565b503d6116e4565b61385f565b60405162461bcd60e51b815260206004820152601360248201527213585c9ad95d0e881a5b9a5d1a585b1a5e9959606a1b6044820152606490fd5b346105b05760008060031936011261079c576006546001600160a01b0316338190036117de576005546117cb91908190611785906001600160a01b0316610829565b7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08580a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b600680546001600160a01b031916905580f35b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b346105b05761187661076761187161183936610cec565b6040516314890dcb60e21b60208201526001600160a01b03938416602482015292909116604483015260648201529182906084820190565b615d98565b6040818051810103126105b05780604060208193015191015182519182526020820152f35b346105b05760003660031901126105b05760208054604051908152f35b346105b05760003660031901126105b05760206001600160401b03602e5416604051908152f35b346105b05760003660031901126105b05760206001600160401b03602c5416604051908152f35b346105b05760003660031901126105b0576020602c546001600160401b036040519160401c168152f35b346105b05760003660031901126105b0576020601c54604051908152f35b346105b05760a03660031901126105b05760043561196b8161059f565b6064356119778161059f565b608435906001600160401b0382116105b05761078192610cc8610ccd926107676119a8610cdc963690600401610bf0565b604051958694632c6dcd7f60e11b602087015260018060a01b0380921660248701526024356044870152604435606487015216608485015260a060a485015260c4840191615976565b346105b05760003660031901126105b0576031546040516001600160a01b039091168152602090f35b346105b05760003660031901126105b057611a3361423d565b506080611a3e61430b565b509350505050604051916001600160401b0380825116845260208201511660208401526040600180861b039101511660408301526060820152f35b60809060031901126105b057600435611a918161059f565b90602435611a9e8161059f565b90604435611aab8161079f565b9060643590565b346105b0576020611085611ac536611a79565b92600760009392935260078652611ae460ff6040600020541615614fce565b611aee848261500b565b611af66147f3565b6150e1565b346105b05760003660031901126105b057600a546040516001600160a01b039091168152602090f35b346105b05760203660031901126105b057600435611b418161059f565b60018060a01b031660005260016020526020604060002054604051908152f35b634e487b7160e01b600052602160045260246000fd5b60091115611b8157565b611b61565b6009811015611b81576000526007602052604060002090565b346105b05760203660031901126105b057611bb8610921565b6009811015611b81576000526007602052602060ff604060002054166040519015158152f35b90600182811c92168015611c0e575b6020831014611bf857565b634e487b7160e01b600052602260045260246000fd5b91607f1691611bed565b634e487b7160e01b600052604160045260246000fd5b606081019081106001600160401b03821117611c4957604052565b611c18565b604081019081106001600160401b03821117611c4957604052565b6001600160401b038111611c4957604052565b60c081019081106001600160401b03821117611c4957604052565b60e081019081106001600160401b03821117611c4957604052565b90601f801991011681019081106001600160401b03821117611c4957604052565b346105b05760008060031936011261079c5760405181601054611cf581611bde565b80845290600190818116908115611d8c5750600114611d33575b61078184611d1f81880382611cb2565b6040519182916020835260208301906106a0565b60108352602094507f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae6725b828410611d79575050508161078193611d1f9282010193611d0f565b8054858501870152928501928101611d5d565b6107819650611d1f9450602092508593915060ff191682840152151560051b82010193611d0f565b346105b05760003660031901126105b057600f546040516001600160a01b039091168152602090f35b346105b05760203660031901126105b057600435611dfa8161059f565b60018060a01b031660005260046020526020604060002054604051908152f35b346105b05760403660031901126105b057610916600435611e3a8161059f565b6024359033614190565b346105b05760003660031901126105b0576020602d54604051908152f35b346105b05760003660031901126105b057601454604080516001600160801b038316815260809290921c602083015290f35b346105b05760003660031901126105b0576020601b54604051908152f35b346105b05760003660031901126105b0576005546040516001600160a01b039091168152602090f35b6001600160401b038111611c4957601f01601f191660200190565b6024359061ffff821682036105b057565b359061ffff821682036105b057565b346105b05760403660031901126105b0576004356001600160401b0381116105b057366023820112156105b0578060040135611f5181611edb565b90611f5f6040519283611cb2565b80825236602482850101116105b057602081600092602461001996018386013783010152611f8b611ef6565b90613dc4565b346105b05760003660031901126105b0576020602f54604051908152f35b346105b05760008060031936011261079c57808060018060a01b03600b541660405160208101906395d89b4160e01b825260048152611fed81611c4e565b51915afa611ff961493d565b91501561202d5761076761077561201261078193614a59565b60405162746d2d60e81b602082015292839160238301610761565b5061078161076761077561203f61496d565b612012565b346105b05760403660031901126105b05760206110856004356120668161059f565b60243590613b05565b346105b05760003660031901126105b0576020602b54604051908152f35b346105b05760403660031901126105b05760606120b86004356120af8161059f565b60243590613620565b9060405192835260208301526040820152f35b346105b05760803660031901126105b0576004356120e88161059f565b6024356120f48161059f565b604435906121018261059f565b606435926001600160401b0384116105b0576107676121709261212b610019963690600401610bf0565b60405163514735c160e11b60208201526001600160a01b03958616602482015292851660448401529390951660648201526080608482015293849260a4840191615976565b615dc2565b346105b05760403660031901126105b0576004356121928161059f565b602435801580159061223c575b6121d2575b6040519081526001600160a01b03909116903390600080516020615e17833981519152908060208101610d60565b6121db336105ea565b546121e882821015613cf3565b6001600160a01b03831690829033839003612206575b5050506121a4565b610de4612214931515613d38565b61221d336105ea565b55612227826105ea565b61223282825461348f565b90553881816121fe565b50336001600160a01b0383161461219f565b9181601f840112156105b0578235916001600160401b0383116105b0576020808501948460051b0101116105b057565b906040820191604081528151809352606081019260208093019060005b81811061230457505050818184039101528251908183528083019281808460051b8301019501936000915b8483106122d65750505050505090565b90919293949584806122f4600193601f198682030187528a516106a0565b98019301930191949392906122c6565b825115158652948401949184019160010161229b565b346105b0576040806003193601126105b057600480356001600160401b0381116105b05761234b903690830161224e565b92906024356123598161079f565b60026030541461244857600260305561237185614e69565b9361237b86614e91565b95600090815b8181106123a2578888610781896123986001603055565b519283928361227e565b82806123af83858a614edb565b906123be8b5180938193614f1c565b0390305af46123cb61493d565b90801580612441575b61241a5782916123f56123fa926123ee612415968e614f2a565b9015159052565b614f3e565b612404828c614f2a565b5261240f818b614f2a565b50614159565b612381565b888661243d61242885614f3e565b925162461bcd60e51b815292839283016106c5565b0390fd5b50866123d4565b825162461bcd60e51b8152602081860152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606490fd5b346105b05760403660031901126105b0576004356124a88161059f565b61250a60243591600e548314600014612591576020602654935b6009546124d7906001600160a01b0316610829565b604051627eeac760e11b81526001600160a01b038516600482015260248101929092529093849190829081906044820190565b03915afa80156117035761078193610cdc9360009261255b575b50612545612554929360018060a01b03166000526025602052604060002090565b90600052602052604060002090565b549061348f565b61255492506125836125459160203d811161258a575b61257b8183611cb2565b810190613a2d565b9250612524565b503d612571565b6020602754936124c2565b346105b05760008060031936011261079c57610cdc6107819160018060a01b036125cb81600554163314613118565b600a5481166001600160a01b03166023549092906001600160801b039060801c16612605575b50506125fc816105ea565b54903390615522565b61260d6147f3565b7fbe641c3ffc44b2d6c184f023fa4ed7bda4b6ffa71e03b3c98ae0c776da1f17e761264961263d60235460801c90565b6001600160801b031690565b92612653856105ea565b61265e85825461348f565b90558416918281600080516020615e178339815191526040518061268789829190602083019252565b0390a3602380546001600160801b0316905580a338806125f1565b346105b05760003660031901126105b0576020601a54604051908152f35b346105b05760403660031901126105b0576024356126dd8161059f565b6126f260018060a01b03600554163314613118565b60008080808094600435905af161270761493d565b50156127105780f35b60405162461bcd60e51b815260206004820152601560248201527429a3a61d103a3930b739b332b9103330b4b632b21760591b6044820152606490fd5b346105b05760003660031901126105b0576060602354604051906001600160401b0380821683528160401c16602083015260801c6040820152f35b346105b05760003660031901126105b0576020601e54604051908152f35b346105b05760403660031901126105b05760245460095461281c906020906127d6906001600160a01b0316610829565b6014546001600160801b0316906040518080958194638eb22cdd60e01b8352602435600484019081526001600160801b0390911660208201526001604082015260600190565b03915afa9182156117035761285561284d61078194610cdc9460009161285f575b506001600160801b03841661348f565b600435613426565b9060801c9061344f565b612877915060203d811161258a5761257b8183611cb2565b3861283d565b346105b05760003660031901126105b0576033546040516001600160a01b039091168152602090f35b346105b0576100196107676128f56128bd36610cec565b60405163cce19f8160e01b60208201526001600160a01b03938416602482015292909116604483015260648201529182906084820190565b615dec565b346105b057602061108561295361291036611a79565b60405163cd0211eb60e01b888201526001600160a01b03948516602482015293909216604484015215156064830152608480830191909152815261187181611c7c565b828082518301019101613a2d565b346105b05760003660031901126105b0576008546040516001600160a01b039091168152602090f35b346105b0576101603660031901126105b0576004356129a88161059f565b6024356001600160401b0381116105b0576129c7903690600401610bf0565b916044356129d48161059f565b60643560843560a4359060c4359260e4359461010435966101243598610144359a60018060a01b0392612a0c84600554163314613118565b838116612c25575b5080612bf0575b505081169081612b88575b505080612b6a575b5080612b4c575b5080612b2f575b5080612b05575b5080612adb575b5080612aa3575b5080612a77575b5080612a6057005b61001990612a72601e5482101561332e565b601f55565b80612a8a620186a0612a9d931115613294565b612a98601f548211156132d4565b601e55565b38612a58565b80612ad5916016547fae6e0ab3b95f0a53ff9660a390ccedcbbf1f2355dce974a9841af106fddcfaba600080a3601655565b38612a51565b80612aed620186a0612aff9310613294565b612afa601b548211613294565b601c55565b38612a4a565b80612b17620186a0612b299310613294565b612b24601c548210613294565b601b55565b38612a43565b80612b41620186a0612b469310613294565b601d55565b38612a3c565b80612b5f620186a0612b64931115613294565b601a55565b38612a35565b80612b7d620186a0612b82931115613294565b601955565b38612a2e565b600854612be99290612ba2906001600160a01b0316610829565b7f5a62d22209e370e38eea92cfddcd228e656e6ec139243392a760a7769f5877fd600080a3600880546001600160a01b0319166001600160a01b0392909216919091179055565b3880612a26565b612bf9916131b7565b7fa6f004921c944d4b8bf6e38462b00f36a58d62495d56b51f571ab78f732c9815600080a13880612a1b565b600f80546001600160a01b0319166001600160a01b039092169190911790557f0b2d6eb667d0522c3eb86e4288afecae6c11591ffd1345d4d12407e0598bca9b600080a138612a14565b610140806003193601126105b05760043590612c8a8261059f565b60643590612c978261079f565b6001600160401b03926084358481116105b057612cb8903690600401610e88565b9360a4359081116105b057612cd1903690600401610e96565b9360803660c31901126105b05761001994612d34612d4692610cc89560405197889663d49dffa760e01b602089015260018060a01b03166024880152602435604488015260443560648801521515608487015260a48601526101648501906159c8565b8381036023190160c485015290615a0c565b61076760e48301615aac565b346105b057612d6036610a90565b9592809594959291924211610bab5761001996612dfb93610b9393610b86878a610b7e8b610767610b8b99612d9486614168565b60405195869460208601988991959493909260c09360e08401977f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e26685526000602086015260018060a01b038092166040860152166060840152608083015260a08201520152565b6141e3565b346105b05760003660031901126105b057600b546040516001600160a01b039091168152602090f35b346105b0576020610640612e3c366105c2565b6001600160a01b0391821660009081526002855260408082209290931681526020919091522090565b346105b05760003660031901126105b0576009546040516001600160a01b039091168152602090f35b346105b05760003660031901126105b0576020601d54604051908152f35b346105b05760003660031901126105b0576006546040516001600160a01b039091168152602090f35b346105b05760803660031901126105b0576001600160401b036004358181116105b057612f0690369060040161224e565b906024358381116105b057612f1f90369060040161224e565b906044358581116105b057612f3890369060040161224e565b9290916064359687116105b057612f5661001997369060040161224e565b969095615bfe565b346105b05760a03660031901126105b057610019600435612f7e8161059f565b60243590612f8b8261059f565b60443590612f988261079f565b604051926374d2492960e11b602085015260018060a01b03809216602485015216604483015215156064820152606435608482015260843560a482015260a481526128f581611c97565b346105b05760003660031901126105b0576020601f54604051908152f35b346105b05760003660031901126105b0576020600c54604051908152f35b346105b05760003660031901126105b0576020602a54604051908152f35b346105b057602061307f61108561305236610cec565b9060086000959395526007865261307160ff6040600020541615614fce565b6130796147f3565b846156fb565b809261500b565b346105b05760003660031901126105b0576034546040516001600160a01b039091168152602090f35b346105b05760003660031901126105b0576100196147f3565b346105b05760003660031901126105b057602454604080516001600160801b038316815260809290921c602083015290f35b346105b05760003660031901126105b0576020602954604051908152f35b1561311f57565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b601f811161316f575050565b6000906010825260208220906020601f850160051c830194106131ad575b601f0160051c01915b8281106131a257505050565b818155600101613196565b909250829061318d565b91906001600160401b038111611c49576131db816131d6601054611bde565b613163565b6000601f82116001146132155781929360009261320a575b50508160011b916000199060031b1c191617601055565b0135905038806131f3565b6010600052601f198216937f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae67291805b86811061327c5750836001959610613262575b505050811b01601055565b0135600019600384901b60f8161c19169055388080613257565b90926020600181928686013581550194019101613244565b1561329b57565b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881b9bdd081d985b1a59607a1b6044820152606490fd5b156132db57565b60405162461bcd60e51b815260206004820152602560248201527f4d61726b65743a20636f6c6c61746572616c697a6174696f6e5261746520746f6044820152646f2062696760d81b6064820152608490fd5b1561333557565b60405162461bcd60e51b815260206004820152603260248201527f4d61726b65743a206c69717569646174696f6e436f6c6c61746572616c697a616044820152711d1a5bdb94985d19481d1bdbc81cdb585b1b60721b6064820152608490fd5b1561339c57565b60405162461bcd60e51b81526020600482015260126024820152714d61726b65743a2073616d6520737461746560701b6044820152606490fd5b634e487b7160e01b600052601160045260246000fd5b90620186a09182810292818404149015171561340457565b6133d6565b90670de0b6b3a76400009182810292818404149015171561340457565b8181029291811591840414171561340457565b634e487b7160e01b600052601260045260246000fd5b8115613459570490565b613439565b604d811161340457600a0a90565b90670de0b6b3a764000091820391821161340457565b9190820391821161340457565b9190820180921161340457565b8181039291600013801582851316918412161761340457565b906509184e72a0009182810292818405149015171561340457565b90670de0b6b3a76400009182810292818405149015171561340457565b818102929160008212600160ff1b82141661340457818405149015171561340457565b811561345957600160ff1b8114600019831416613404570590565b600160ff1b81146134045760000390565b60145491929190613557906001600160801b03831690613426565b9060801c9081156134595761358491613575910493601f5490613426565b61357e8361345e565b9061344f565b90818310613618576135e96135e36135de6135a26135ee9587613482565b936135d96135d36135ca601e546135c46135bb8661345e565b6020549061348f565b90613426565b61357e8461345e565b9161345e565b61349c565b6134b5565b916134d0565b613510565b6000811215613612576136009061352b565b905b80821161360d575090565b905090565b90613602565b505050600090565b6001600160a01b0381166000908152601760205260408120549193929091801561379a576136ce9061365061425c565b5061365961430b565b505050505094905061366c8415156139e1565b600954602090613684906001600160a01b0316610829565b600c546001600160a01b038a1660009081526018602052604080822054905163442c159960e01b815260048101939093526024830152604482015294859190829081906064820190565b03915afa928315611703576137719561357e61263d602061373561371e8a61371961371061376b9c6137449a8c9161377d575b50602154620186a090046135c4565b601e5490613426565b61344f565b85519098906135c4906001600160801b031661263d565b9301516001600160801b031690565b908282106137755750035b6001600160a01b03909516600090815260186020526040902090565b54613a3c565b9091565b91505061374f565b6137949150873d811161258a5761257b8183611cb2565b38613701565b505080919250918190565b91908260409103126105b057602082516137be8161079f565b92015190565b6020808252600091601054916137d983611bde565b928382840152600190818116908160001461383c57506001146137fe575b5050505090565b929350601060005280600020926000935b85851061382857505050604092500101388080806137f7565b80548585016040015293820193810161380f565b925050506040935060ff929192191683830152151560051b0101388080806137f7565b6040513d6000823e3d90fd5b1561387257565b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881c985d19481d1bdbc81bdb1960621b6044820152606490fd5b156138b557565b60405162461bcd60e51b81526020600482015260146024820152734d61726b65743a20696e76616c6964207261746560601b6044820152606490fd5b600f54613906906001600160a01b0316610829565b6040805163d6d7d52560e01b81529291839081600081613928600482016137c4565b03925af180156117035760009283916139ad575b509082156139885761394f8215156138ae565b61395882601155565b817f9f9192b5edb17356c524e08d9e025c8e2f6307e6ea52fb7968faa3081f51c3c8600080a25b6105c042601355565b90506139a461399c6013546012549061348f565b42111561386b565b6011549061397f565b90506139d191925060403d81116139da575b6139c98183611cb2565b8101906137a5565b9190913861393c565b503d6139bf565b156139e857565b60405162461bcd60e51b815260206004820152601e60248201527f4d61726b65743a2065786368616e676552617465206e6f742076616c696400006044820152606490fd5b908160209103126105b0575190565b613a916020831592613a4e84156139e1565b600954600c5460405163442c159960e01b81526004810191909152602481019290925260006044830152909283916001600160a01b031690829081906064820190565b03915afa801561170357613ab191600091613acb575b5060215490613426565b906134595704620186a0613ac7601e5483613426565b0491565b613ae3915060203d811161258a5761257b8183611cb2565b38613aa7565b9190916000838201938412911290801582169115161761340457565b90613b29613b479161376b8460018060a01b03166000526018602052604060002090565b6001600160a01b039093166000908152601760205260409020909291565b548015613618578215613618578281106136185781811015613bd05782613b90613b8b613b9695610de461357e956128556014549160018060801b03831690613426565b6133ec565b92613482565b613bc4601b5491613bbf613bb6601c5492613bb1848761349c565b6134ed565b620186a0900590565b613ae9565b9080821261360d575090565b505050601b5490565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03161480613cca575b15613c34577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f000000000000000000000000000000000000000000000000000000000000000082527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a08152613cc481611c7c565b51902090565b507f00000000000000000000000000000000000000000000000000000000000000004614613c0b565b15613cfa57565b60405162461bcd60e51b815260206004820152601660248201527545524332303a2062616c616e636520746f6f206c6f7760501b6044820152606490fd5b15613d3f57565b60405162461bcd60e51b815260206004820152601660248201527545524332303a206e6f207a65726f206164647265737360501b6044820152606490fd5b15613d8457565b60405162461bcd60e51b815260206004820152601860248201527745524332303a20616c6c6f77616e636520746f6f206c6f7760401b6044820152606490fd5b6101009081818051810103126105b0576020810151613de28161079f565b604082015192613df18461059f565b606083015194613e008661059f565b60808401519460a085015160c086015193613e1a85610a85565b60e08701519601516001600160a01b0392831698831696428310610bab57613edc95613ed08a8c610b7e8199610767613ed5998f8f600014613ef3577f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e266965b613e8287614168565b60408051602081019a8b5261ffff909716908701526001600160a01b03978816606087015296909116608085015260a084015260c083019490945260e0820193909352918290610100820190565b613f66565b1614613f1a565b15613eea576105c0926141e3565b6105c092614190565b7f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d696613e79565b15613f2157565b60405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152606490fd5b916105e79391610b8b9361409a565b60051115611b8157565b613f8881613f75565b80613f905750565b613f9981613f75565b60018103613fe15760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b6044820152606490fd5b613fea81613f75565b600281036140375760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606490fd5b80614043600392613f75565b1461404a57565b60405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608490fd5b9291906fa2a8918ca85bafe22016d0b997e4df60600160ff1b0383116141065791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa156117035781516001600160a01b03811615614100579190565b50600190565b50505050600090600390565b61411a613bd9565b9060405190602082019261190160f01b84526022830152604282015260428152608081018181106001600160401b03821117611c495760405251902090565b60001981146134045760010190565b6001600160a01b0316600090815260046020526040902080549061418b82614159565b905590565b6001600160a01b03908116600081815260036020908152604080832095909416808352949052918220849055907fe50de2333c10a9502fcb1d8ae13a51bbf423153dfc63c2b8997665b32154afc39080a4565b6001600160a01b0390811660008181526002602090815260408083208686168452825290912091937f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259391928690556040519586521693a3565b6040519061424a82611c2e565b60006040838281528260208201520152565b6040519061426982611c4e565b60006020838281520152565b6040519061428282611c2e565b8160406023546001600160401b03808216845281831c16602084015260801c910152565b604051906142b382611c4e565b6014546001600160801b038116835260801c6020830152565b604051906142d982611c4e565b6024546001600160801b038116835260801c6020830152565b6001600160801b03918216908216019190821161340457565b61431361423d565b5061431c61425c565b5061432561425c565b5061432e614275565b906143376142a6565b906143406142cc565b906143a560008061435b61082960095460018060a01b031690565b600e54865160405163442c159960e01b808252600482018490526001600160801b039092166024820152600060448201529296602096919590939092918790829081906064820190565b03818b5afa8015611703576143d69184916147af575b508a516143d0906001600160801b031661263d565b9061348f565b8061478c575081945b8a61440c6144066143fa8a8a9401516001600160401b031690565b6001600160401b031690565b42613482565b96871561476457506001600160401b03428116898e01528b8901516001600160801b039995919491939192908a161561470657508b518d518692918a91614467916001600160401b03909116906001600160801b0316613426565b9061447191613426565b8d51670de0b6b3a76400009091049b908e90614499908d8f16906001600160801b03166142f2565b6001600160801b039081169091528d5160405193845260048401959095529390931660248201526000604482015291829060649082905afa8015611703578461455161452d8f978f613719908f9261263d6135c4916137356145186145739b6145249d8f916146e9575b5086516143d0906001600160801b031661263d565b9b8c97601a5490613426565b620186a0900490565b9a8b169161455e604089016145518561454c835160018060801b031690565b6142f2565b6001600160801b03169052565b8d0180519092906001600160801b03166142f2565b806146c65750945b602954868181101561461f57936137196145df936145c66143fa6145d16145cb6145b8886137196145b36145ec9d9e6143fa9c613482565b613409565b946145c6602d549680613426565b613426565b8461348f565b94516001600160401b031690565b6001600160401b03168a52565b88516001600160401b0316602c546001600160401b031691808316911610614612575b50565b6001600160401b03168852565b919050602a54808311614634575b5050505050565b6146b4946145c66143fa61467761467161466361465a6145b3613719986146859b613482565b602b549061344f565b966145c6602d549880613426565b8661348f565b92516001600160401b031690565b602c5461469d9060401c6001600160401b03166143fa565b8082116146be575b50166001600160401b03168952565b873880808061462d565b9050386146a5565b8a516146e39250613719906145b3906001600160801b031661263d565b9461457b565b6147009150843d861161258a5761257b8183611cb2565b38614503565b985050509650929798935050945061472582516001600160401b031690565b602e546001600160401b03169180831691160361474f575b5094936147486142cc565b9383929190565b6001600160401b03168152600194503861473d565b9a5050505095509693505050509261477a6142a6565b926147836142cc565b92809281929190565b89516147a99190613719906145b3906001600160801b031661263d565b946143df565b6147c69150883d8a1161258a5761257b8183611cb2565b386143bb565b805160209091015160801b6001600160801b0319166001600160801b039190911617602455565b6105c06148bf6148e661480461430b565b9397949593909290156148eb575050506001600160401b03602e54166000807f33af5ce86e8438eff54589f85332916444457dfa8685493fbd579b809097026b6020604051838152a45b6148786001600160401b038251166001600160401b03166001600160401b03196023541617602355565b6020810151602380546040938401516001600160401b039091169290931b67ffffffffffffffff60401b169190911760809290921b6001600160801b031916919091179055565b805160209091015160801b6001600160801b0319166001600160801b039190911617601455565b6147cc565b7f33af5ce86e8438eff54589f85332916444457dfa8685493fbd579b809097026b60206001600160401b0386511694604051908152a461484e565b906149396020928281519485920161067d565b0190565b3d15614968573d9061494e82611edb565b9161495c6040519384611cb2565b82523d6000602084013e565b606090565b6040519061497a82611c4e565b60038252623f3f3f60e81b6020830152565b634e487b7160e01b600052603260045260246000fd5b9081518110156149b3570160200190565b61498c565b60ff1660ff81146134045760010190565b906149d382611edb565b6149e06040519182611cb2565b82815280926149f1601f1991611edb565b0190602036910137565b6020818303126105b0578051906001600160401b0382116105b0570181601f820112156105b0578051614a2d81611edb565b92614a3b6040519485611cb2565b818452602082840101116105b0576105e7916020808501910161067d565b805160408110614a775750806020806105e7935183010191016149fb565b602092908303614b4c576000805b60ff81168581109081614b2a575b5015614aa757614aa2906149b8565b614a85565b92614ab560ff8095166149c9565b92825b85811687811080614b0b575b15614b00579081614af5614aec614ade614afb95886149a2565b516001600160f81b03191690565b871a91886149a2565b536149b8565b614ab8565b505094505050905090565b506001600160f81b0319614b22614ade83876149a2565b161515614ac4565b6001600160f81b03199150614b4390614ade90876149a2565b16151538614a93565b9150506105e761496d565b90816101a09103126105b0578035614b6e8161059f565b916020820135614b7d8161059f565b916040810135614b8c8161059f565b91614b99606083016105b5565b91614ba6608082016105b5565b91614bb360a083016105b5565b9160c081013591614bc660e083016105b5565b9161010081013591614bdb61012083016105b5565b916101408101359161018061016083013592013590565b908160209103126105b057516105e78161059f565b15614c0e57565b60405162461bcd60e51b815260206004820152600d60248201526c29a3a61d103130b2103830b4b960991b6044820152606490fd5b15614c4a57565b60405162461bcd60e51b815260206004820152602f60248201527f53474c3a206c69717569646174696f6e436f6c6c61746572616c697a6174696f60448201526e1b94985d19481b9bdd081d985b1a59608a1b6064820152608490fd5b614cc263097343e06001600160401b0319602c541617602c55565b602c805467ffffffffffffffff60401b19166324ea412360491b179055614cf97054a2b63d65d79d094abb66880000000000602d55565b614d2a614d0e602c546001600160401b031690565b6001600160401b03166001600160401b0319602e541617602e55565b614d5b614d3f602e546001600160401b031690565b6001600160401b03166001600160401b03196023541617602355565b614d636138f1565b5050614d706103e8601955565b614d7a6000601a55565b614d846032602f55565b614d8f612ee0602055565b8015614e4557601e555b8015614e3857601f555b614db2601f54601e5410614c43565b614dbd6161a8602855565b8015614e26576021555b614dd362013880601b55565b614ddf62015f90601c55565b614dea612710601d55565b614dfb670429d069189e0000602955565b614e0c6706f05b59d3b20000602a55565b614e1a61138a602a5461346c565b6105c062015180601255565b50614dc7670de0b6b3a7640000602155565b50614da362013880612a72565b50614d99620124f8612a98565b6001600160401b038111611c495760051b60200190565b90614e7382614e52565b614e806040519182611cb2565b82815280926149f1601f1991614e52565b90614e9b82614e52565b614ea86040519182611cb2565b8281528092614eb9601f1991614e52565b019060005b828110614eca57505050565b806060602080938501015201614ebe565b91908110156149b35760051b81013590601e19813603018212156105b05701908135916001600160401b0383116105b05760200182360381136105b0579190565b908092918237016000815290565b80518210156149b35760209160051b010190565b6103e8815111614f9a576044815110614f67578060248060046105e794015183010191016149fb565b50604051614f7481611c4e565b60168152754d61726b65743a206e6f2072657475726e206461746160501b602082015290565b50604051614fa781611c4e565b60178152764d61726b65743a20726561736f6e20746f6f206c6f6e6760481b602082015290565b15614fd557565b60405162461bcd60e51b815260206004820152600e60248201526d13585c9ad95d0e881c185d5cd95960921b6044820152606490fd5b6001600160a01b03811633810361502157505050565b60009081526002602090815260408083203384529091529020829054106150a5576001600160a01b038116600090815260026020526040902060001990615069903390610e40565b5403615073575050565b6001600160a01b031660009081526002602052604090206150a190615099903390610e40565b918254613482565b9055565b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881b9bdd08185c1c1c9bdd995960621b6044820152606490fd5b93929190936150ee6142cc565b80516009546001600160801b039791881694929061515a9060209061511b906001600160a01b0316610829565b600e54601454604051638eb22cdd60e01b815260048101929092526001600160801b031660248201526001604482015292839190829081906064820190565b03915afa80156117035761517791600091615304575b508661348f565b806152d557506103e886985b602083015161519e90828c16906001600160801b03166142f2565b16106152c95761523561520e959493926151bf6148e68b8a61524696615322565b6151c8816105ea565b6151d38b825461348f565b90556040518a81526001600160a01b0382811698909761521b9287928b91600091600080516020615e17833981519152919081906020820190565b0390a38a600e54896153c8565b6001600160a01b0316600090815260256020526040902090565b602654600052602052604060002090565b61525186825461348f565b9055156152a157506009547f30a8c4f9ab5af7e1309ca87c32377d1a83366c5990472dbf9d262450eae14e3890615290906001600160a01b0316610829565b915b604051878152921691602090a4565b7f30a8c4f9ab5af7e1309ca87c32377d1a83366c5990472dbf9d262450eae14e389091615292565b50600096505050505050565b60208201516103e8916152fe91613719906152f8906001600160801b031661263d565b8a613426565b98615183565b61531c915060203d811161258a5761257b8183611cb2565b38615170565b91906153469061533061425c565b5060018060801b039182809216828651166142f2565b16835261535c81602085019316828451166142f2565b16905290565b6001600160a01b039182168152911660208201526040810191909152606081019190915260800190565b1561539357565b60405162461bcd60e51b815260206004820152600d60248201526c0a68e987440e8dede40daeac6d609b1b6044820152606490fd5b90919293600014615460575060095461541a916020916153f0906001600160a01b0316610829565b604051627eeac760e11b815230600482015260248101929092529092839190829081906044820190565b03915afa928315611703576105c09361543b92600091615442575b50613482565b101561538c565b61545a915060203d811161258a5761257b8183611cb2565b38615435565b600954919350919061547a906001600160a01b0316610829565b803b156105b0576154a8936000809460405196879586948593630208d92960e11b8552309060048601615362565b03925af18015611703576154b95750565b806154c66105c092611c69565b80610649565b6001600160801b03918216908216039190821161340457565b156154ec57565b60405162461bcd60e51b815260206004820152600e60248201526d14d1d30e881b5a5b881b1a5b5a5d60921b6044820152606490fd5b6024549093926001600160801b039160801c156156f2576155416142cc565b80519095906001600160801b031660095461556b9060209061511b906001600160a01b0316610829565b03915afa9182156117035785916000936156d2575b50169061558c9161348f565b6155969083613426565b6020870180519092916155b2916001600160801b03169061344f565b9687946155be836105ea565b858154906155cb91613482565b90556040518581526001600160a01b0393841694906000908690600080516020615e1783398151915290602090a3825161561190838916906001600160801b03166154cc565b6001600160801b031683528051868316906001600160801b031690615635916154cc565b6001600160801b03168152516001600160801b0316166103e81115615659906154e5565b615662906147cc565b6040519283528416917f6e853a5fd6b51d773691f542ebac8513c9992a51380d4c342031056a6411422890602090a4600954600e546001600160a01b0390911691823b156105b0576154a89260009283879360405196879586948593630208d92960e11b85523060048601615362565b6156eb91935060203d811161258a5761257b8183611cb2565b9138615580565b50600093505050565b6024546001600160801b0394939192919060801c156156f25761571c6142cc565b80519091906001600160801b03166009546157469060209061511b906001600160a01b0316610829565b03915afa918215611703578891600093615956575b5016906157679161348f565b6157719082613426565b602083018051909161578c916001600160801b03169061344f565b968793615798876105ea565b848154906157a591613482565b90556040518481526001600160a01b03888116949093916000908690600080516020615e1783398151915290602090a382516157ed90838916906001600160801b03166154cc565b6001600160801b031683528051868316906001600160801b031690615811916154cc565b6001600160801b03168152516001600160801b0316166103e81115615835906154e5565b61583e906147cc565b6040519283528416917f6e853a5fd6b51d773691f542ebac8513c9992a51380d4c342031056a6411422890602090a4600954600e546001600160a01b0390911691823b156105b0576158ae9260009283889360405196879586948593630208d92960e11b85523060048601615362565b03925af1801561170357615943575b506001600160a01b03811660009081526025602052604090206158ed602654809290600052602052604060002090565b5484111561591957506001600160a01b0316600090815260256020526040812061591690615235565b55565b6125456159389260018060a01b03166000526025602052604060002090565b6150a1838254613482565b806154c661595092611c69565b386158bd565b61596f91935060203d811161258a5761257b8183611cb2565b913861575b565b908060209392818452848401376000828201840152601f01601f1916010190565b9035601e19823603018112156105b05701602081359101916001600160401b0382116105b05781360383136105b057565b9060606159fc6105e79380356159dd8161059f565b6001600160a01b03168452602081810135908501526040810190615997565b9190928160408201520191615976565b908135815261ffff80615a2160208501611f07565b166020830152615a3360408401611f07565b16604082015260c06060830135615a498161059f565b6001600160a01b03908116606084015281615a99615a7e615a6d6080880188615997565b60e0608089015260e0880191615976565b615a8b60a0880188615997565b9087830360a0890152615976565b940135615aa58161059f565b1691015290565b606060c435615aba8161059f565b6001600160a01b0390811683528060e435615ad48161059f565b1660208401528061010435615ae88161059f565b16604084015261012435615afb8161059f565b16910152565b60609081813591615b118361059f565b6001600160a01b039283168552826020820135615b2d8161059f565b166020860152826040820135615b428161059f565b1660408601520135615afb8161059f565b91908082526020809201929160005b828110615b70575050505090565b9091929382806001928735615b848161059f565b848060a01b03168152019501910192919092615b62565b9082818152602080910193818360051b82010194846000925b858410615bc5575050505050505090565b909192939495968580615bed600193601f19868203018852615be78c88615997565b90615976565b990194019401929594939190615bb4565b9295969094969391936040519660209663e5644d8b60e01b888a01528060a48a01608060248c01525260c48901959060005b89828210615c9a575050505087850360231990810160448a0152818652936001600160fb1b0382116105b05761460f99612170988a9861076798615c8b9560051b809284830137018981036003190160648b01520191615b53565b92858403016084860152615b9b565b808499600193949535615cac8161059f565b848060a01b031681520198019101919091615c30565b15615cc957565b60405162461bcd60e51b815260206004820152600e60248201526d14d1d30e881b9bdd081d985b1a5960921b6044820152606490fd5b6034546001600160a01b03168015615d5d57816000929160208493519201905af490615d2961493d565b9115615d3157565b61243d615d3d83614f3e565b60405162461bcd60e51b81526020600482015291829160248301906106a0565b60405162461bcd60e51b815260206004820152601360248201527214d1d30e881b5bd91d5b19481b9bdd081cd95d606a1b6044820152606490fd5b6032546001600160a01b03168015615d5d57816000929160208493519201905af490615d2961493d565b6031546001600160a01b03168015615d5d57816000929160208493519201905af490615d2961493d565b6033546001600160a01b03168015615d5d57816000929160208493519201905af490615d2961493d56feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa264697066735822122077698ebb59f5f6b77a36cbe725e491ec2f146c875c00adc902384190cefc304864736f6c63430008120033"; type SingularityConstructorParams = | [signer?: Signer] diff --git a/src/typechain/tapioca-bar/factories/usd0/USDOFlashloanHelper__factory.ts b/src/typechain/tapioca-bar/factories/usd0/USDOFlashloanHelper__factory.ts index dc62e685..90e8143e 100644 --- a/src/typechain/tapioca-bar/factories/usd0/USDOFlashloanHelper__factory.ts +++ b/src/typechain/tapioca-bar/factories/usd0/USDOFlashloanHelper__factory.ts @@ -332,7 +332,7 @@ const _abi = [ ] as const; const _bytecode = - "0x60a03461013357601f6112a438819003918201601f19168301916001600160401b038311848410176101385780849260409485528339810103126101335780516001600160a01b039182821682036101335760200151918216809203610133576000805460405193916001600160a01b0319918216919033907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a360ff196005541660055533161717600055608052600a60025569152d02c7e14af6800000600355611155908161014f823960805181818161026b015281816102ed0152818161034c0152818161049d015281816104fc015281816105350152818161058f015281816105cd0152818161060e015281816106460152818161069101528181610a2901528181610d640152610e520152f35b600080fd5b634e487b7160e01b600052604160045260246000fdfe6080604052600436101561001257600080fd5b6000803560e01c8063078dfbe714610b88578063095ea7b314610b5657806316d995a914610af55780631d2a0e3d14610a585780634c6bb35d14610a135780634e71e0c8146109675780635cffe9de146101e9578063613255ab146101c45780638da5cb5b1461019d578063940a1dc01461017f5780639d3f4d1a14610161578063d9d98ce414610131578063dd62ed3e146100e25763e30c3978146100b757600080fd5b346100df57806003193601126100df576001546040516001600160a01b039091168152602090f35b80fd5b50346100df5760403660031901126100df576100fc610c8c565b6040610106610ca7565b9260018060a01b03809316815260046020522091166000526020526020604060002054604051908152f35b50346100df5760403660031901126100df576020610159610150610c8c565b60243590610e48565b604051908152f35b50346100df57806003193601126100df576020600354604051908152f35b50346100df57806003193601126100df576020600254604051908152f35b50346100df57806003193601126100df57546040516001600160a01b039091168152602090f35b50346100df5760203660031901126100df576101de610c8c565b506020610159610d54565b50346100df5760803660031901126100df576004356001600160a01b03811681036106fa57610216610ca7565b9067ffffffffffffffff80606435116107f3573660236064350112156107f3576064356004013511610760573660246064356004013560643501011161076057604051635c975abb60e01b81526020816004817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa9081156107ff578491610948575b5061090357336001600160a01b038216036108be575b60055460ff81166108795760ff19166001176005556044356102d9610d54565b10610828576102ea60443583610e48565b917f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03163b156107f3576040516340c10f1960e01b81526001600160a01b0383811660048301526044803560248401528691839190829084907f0000000000000000000000000000000000000000000000000000000000000000165af1801561081d5761080a575b50604051906323e30c8b60e01b825233600483015260018060a01b03166024820152604435604482015282606482015260a060848201526064356004013560a48201526064356004013560246064350160c483013760c46064356004013582810182018690526020918391601f19601f9091011682018290030181876001600160a01b0387165af180156107ff5784906107a9575b7f439148f0bbc682ca079e46d6e2c2f0c1e3b820f1a291b069d8882abf8cf18dd991500361076457829060018060a01b03811682526004602052604082203060005260205261046f60406000205461046885604435610f72565b1115610f16565b61048e61047e84604435610f72565b306001600160a01b038416610f7f565b61049a83604435610f72565b907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03163b1561076057604051632770a7eb60e21b81526001600160a01b0390911660048201526024810191909152818180604481010381837f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165af180156106ef5761074c575b50507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03163b156106fa576040516340c10f1960e01b81523060048201526024810182905282908181604481836001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165af180156106ef57610738575b505060405163a9059cbb60e01b81527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031660048201526024810182905260208180604481010381867f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165af1801561072d576106fe575b507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03163b156106fa5760405163028f6c4560e31b815260048101919091528181602481837f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165af180156106ef576106db575b60ff1960055416600555602060405160018152f35b6106e58291610d08565b6100df57806106c6565b6040513d84823e3d90fd5b5080fd5b61071f9060203d602011610726575b6107178183610d32565b810190610efe565b5038610643565b503d61070d565b6040513d85823e3d90fd5b61074190610d08565b6106fa5781386105bc565b61075590610d08565b6106fa578138610531565b8280fd5b60405162461bcd60e51b815260206004820152601b60248201527f5553444f466c6173686c6f616e48656c7065723a206661696c656400000000006044820152606490fd5b506020813d6020116107f7575b816107c360209383610d32565b810103126107f3577f439148f0bbc682ca079e46d6e2c2f0c1e3b820f1a291b069d8882abf8cf18dd9905161040e565b8380fd5b3d91506107b6565b6040513d86823e3d90fd5b61081690949194610d08565b9238610379565b6040513d87823e3d90fd5b60405162461bcd60e51b815260206004820152602360248201527f5553444f466c6173686c6f616e48656c7065723a20616d6f756e7420746f6f2060448201526262696760e81b6064820152608490fd5b60405162461bcd60e51b815260206004820152601f60248201527f5553444f466c6173686c6f616e48656c7065723a207265656e7472616e6379006044820152606490fd5b60018060a01b03811683526004602052604083203384526020526108fe6044356108ee8160408720541015610f16565b336001600160a01b038416610f7f565b6102b9565b60405162461bcd60e51b815260206004820152601b60248201527f5553444f466c6173686c6f616e48656c7065723a2070617573656400000000006044820152606490fd5b610961915060203d602011610726576107178183610d32565b386102a3565b50346100df57806003193601126100df576001546001600160a01b0390818116338190036109cf578084549384167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08680a36001600160a01b03199283161783551660015580f35b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b50346100df57806003193601126100df576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b50346100df5760203660031901126100df57600435610a8160018060a01b038354163314610cbd565b620f4240811015610ac4577fb3a985697c0361591fe9933703eb14ce1d74444a2d349080b6dec8da77a4082b60406002548151908152836020820152a160025580f35b60405162461bcd60e51b81526020600482015260096024820152685553444f3a2062696760b81b6044820152606490fd5b50346100df5760203660031901126100df57600435610b1e60018060a01b038354163314610cbd565b7f7d04cf410385806a9ac3566ac4cca4e5eaba6cc242abbf98f4f44e4ac6f3e8ff60406003548151908152836020820152a160035580f35b50346100df5760403660031901126100df57610b7d610b73610c8c565b602435903361102b565b602060405160018152f35b50346100df5760603660031901126100df57610ba2610c8c565b6024358015158103610760576044359081151582036107f35760018060a01b03928391610bd3838754163314610cbd565b15610c75571690811590811591610c6d575b5015610c30578083549283167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08580a36001600160a01b031991821617825560018054909116905580f35b60405162461bcd60e51b81526020600482015260156024820152744f776e61626c653a207a65726f206164647265737360581b6044820152606490fd5b905038610be5565b9150501660018060a01b0319600154161760015580f35b600435906001600160a01b0382168203610ca257565b600080fd5b602435906001600160a01b0382168203610ca257565b15610cc457565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b67ffffffffffffffff8111610d1c57604052565b634e487b7160e01b600052604160045260246000fd5b90601f8019910116810190811067ffffffffffffffff821117610d1c57604052565b6040516318160ddd60e01b8082527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906020908184600481865afa938415610e0d57600094610e19575b50600354809411600014610dbb5750505090565b8192935060046040518095819382525afa908115610e0d57600091610de1575b50905090565b82813d8311610e06575b610df58183610d32565b810103126100df5750518038610ddb565b503d610deb565b6040513d6000823e3d90fd5b90938282813d8311610e41575b610e308183610d32565b810103126100df5750519238610da7565b503d610e26565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116911603610ead5760025490818102918183041490151715610e9757620f4240900490565b634e487b7160e01b600052601160045260246000fd5b60405162461bcd60e51b8152602060048201526024808201527f5553444f466c6173686c6f616e48656c7065723a20746f6b656e206e6f742076604482015263185b1a5960e21b6064820152608490fd5b90816020910312610ca257518015158103610ca25790565b15610f1d57565b60405162461bcd60e51b815260206004820152602760248201527f5553444f466c6173686c6f616e48656c7065723a207265706179206e6f7420616044820152661c1c1c9bdd995960ca1b6064820152608490fd5b91908201809211610e9757565b9060018060a01b0380831660005260046020526040600020908216600052602052604060002054926000198403610fb7575b50505050565b808410610fd257610fc993039161102b565b38808080610fb1565b60405162461bcd60e51b815260206004820152602b60248201527f5553444f466c6173686c6f616e48656c7065723a20696e73756666696369656e60448201526a7420616c6c6f77616e636560a81b6064820152608490fd5b6001600160a01b039081169182156110bf5716908115611061576000526004602052604060002090600052602052604060002055565b60405162461bcd60e51b815260206004820152603060248201527f5553444f466c6173686c6f616e48656c7065723a20617070726f766520746f2060448201526f746865207a65726f206164647265737360801b6064820152608490fd5b60405162461bcd60e51b815260206004820152603260248201527f5553444f466c6173686c6f616e48656c7065723a20617070726f76652066726f6044820152716d20746865207a65726f206164647265737360701b6064820152608490fdfea264697066735822122053612b72677b6e43f0815f08376f1b64656ff767cb83d9f871b472bc631b691564736f6c63430008120033"; + "0x60a0346100ed57601f61109338819003918201601f19168301916001600160401b038311848410176100f25780849260409485528339810103126100ed5780516001600160a01b039182821682036100ed57602001519182168092036100ed576000805460405193916001600160a01b0319918216919033907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a360ff196005541660055533161717600055608052600a60025569152d02c7e14af6800000600355610f8a9081610109823960805181818161039e01528181610726015281816107f60152610ab90152f35b600080fd5b634e487b7160e01b600052604160045260246000fdfe6080604052600436101561001257600080fd5b60003560e01c8063078dfbe7146100f7578063095ea7b3146100f257806316d995a9146100ed5780631d2a0e3d146100e85780634c6bb35d146100e35780634e71e0c8146100de5780635cffe9de146100d9578063613255ab146100d45780638da5cb5b146100cf578063940a1dc0146100ca5780639d3f4d1a146100c5578063d9d98ce4146100c0578063dd62ed3e146100bb5763e30c3978146100b657600080fd5b610637565b6105d4565b6105a9565b61058b565b61056d565b610544565b610516565b61048a565b6103cd565b610388565b6102df565b61027d565b610248565b61011c565b6001600160a01b0381160361010d57565b600080fd5b8015150361010d57565b3461010d57606036600319011261010d57600435610139816100fc565b6024359061014682610112565b6044359061015382610112565b60018060a01b0360009361016b828654163314610660565b156102325781169182159081159161022a575b50156101ed5782546101da92906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08580a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b600180546001600160a01b031916905580f35b60405162461bcd60e51b81526020600482015260156024820152744f776e61626c653a207a65726f206164647265737360581b6044820152606490fd5b90503861017e565b91501660018060a01b0319600154161760015580f35b3461010d57604036600319011261010d57610272600435610268816100fc565b6024359033610e5c565b602060405160018152f35b3461010d57602036600319011261010d576004356102a660018060a01b03600054163314610660565b60035460408051918252602082018390527f7d04cf410385806a9ac3566ac4cca4e5eaba6cc242abbf98f4f44e4ac6f3e8ff91a1600355005b3461010d57602036600319011261010d5760043561030860018060a01b03600054163314610660565b620f424081101561034c5760025460408051918252602082018390527fb3a985697c0361591fe9933703eb14ce1d74444a2d349080b6dec8da77a4082b91a1600255005b60405162461bcd60e51b81526020600482015260096024820152685553444f3a2062696760b81b6044820152606490fd5b600091031261010d57565b3461010d57600036600319011261010d576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b3461010d57600080600319360112610487576001546001600160a01b039081163381900361044357806101da928454167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08580a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b80fd5b3461010d57608036600319011261010d576004356104a7816100fc565b6024356104b3816100fc565b6064359067ffffffffffffffff9081831161010d573660238401121561010d57826004013591821161010d57366024838501011161010d5761051293602461050094019160443591610a9a565b60405190151581529081906020820190565b0390f35b3461010d57602036600319011261010d576105326004356100fc565b602061053c610712565b604051908152f35b3461010d57600036600319011261010d576000546040516001600160a01b039091168152602090f35b3461010d57600036600319011261010d576020600254604051908152f35b3461010d57600036600319011261010d576020600354604051908152f35b3461010d57604036600319011261010d57602061053c6004356105cb816100fc565b602435906107ec565b3461010d57604036600319011261010d57602061062e6004356105f6816100fc565b60243590610603826100fc565b60018060a01b03166000526004835260406000209060018060a01b0316600052602052604060002090565b54604051908152f35b3461010d57600036600319011261010d576001546040516001600160a01b039091168152602090f35b1561066757565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b67ffffffffffffffff81116106bf57604052565b634e487b7160e01b600052604160045260246000fd5b90601f8019910116810190811067ffffffffffffffff8211176106bf57604052565b9081602091031261010d575190565b6040513d6000823e3d90fd5b6040516318160ddd60e01b808252602091907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316908383600481855afa9283156107c8576000936107cd575b5060035480931160001461077b575050905090565b8391925060046040518094819382525afa9182156107c85760009261079f57505090565b6107be9250803d106107c1575b6107b681836106d5565b8101906106f7565b90565b503d6107ac565b610706565b6107e5919350843d86116107c1576107b681836106d5565b9138610766565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116911603610851576002549081810291818304149015171561083b57620f4240900490565b634e487b7160e01b600052601160045260246000fd5b60405162461bcd60e51b8152602060048201526024808201527f5553444f466c6173686c6f616e48656c7065723a20746f6b656e206e6f742076604482015263185b1a5960e21b6064820152608490fd5b9081602091031261010d57516107be81610112565b156108be57565b60405162461bcd60e51b815260206004820152601b60248201527f5553444f466c6173686c6f616e48656c7065723a2070617573656400000000006044820152606490fd5b1561090a57565b60405162461bcd60e51b815260206004820152602760248201527f5553444f466c6173686c6f616e48656c7065723a207265706179206e6f7420616044820152661c1c1c9bdd995960ca1b6064820152608490fd5b1561096657565b60405162461bcd60e51b815260206004820152601f60248201527f5553444f466c6173686c6f616e48656c7065723a207265656e7472616e6379006044820152606490fd5b156109b257565b60405162461bcd60e51b815260206004820152602360248201527f5553444f466c6173686c6f616e48656c7065723a20616d6f756e7420746f6f2060448201526262696760e81b6064820152608490fd5b94919286949160c0979460018060a01b0380921688521660208701526040860152606085015260a060808501528160a0850152848401376000828201840152601f01601f1916010190565b15610a5557565b60405162461bcd60e51b815260206004820152601b60248201527f5553444f466c6173686c6f616e48656c7065723a206661696c656400000000006044820152606490fd5b60408051635c975abb60e01b8152602096919592936001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811693928981600481885afa80156107c857610afd91600091610d82575b50156108b7565b851694338603610d2f575b610b23610b1e610b1a60055460ff1690565b1590565b61095f565b610b35600160ff196005541617600555565b610b4887610b41610712565b10156109ab565b610b5287836107ec565b94843b1561010d5788516340c10f1960e01b81526001600160a01b038816600482015260248101899052600081604481838a5af180156107c857610d1c575b50843b1561010d57885163028f6c4560e31b81526004810187905293600085602481838a5af19182156107c857610be8958c93610d03575b508a516323e30c8b60e01b815295869283928a8d893360048801610a03565b038160008a5af19081156107c8576000809493610c347f439148f0bbc682ca079e46d6e2c2f0c1e3b820f1a291b069d8882abf8cf18dd960449584978f8692610ce6575b505014610a4e565b8a51998a93632770a7eb60e21b8552600485015260248401525af11561010d5760448401948590526323b872dd60e01b85526001600160a01b039283166048850152918216606884015260888301528390839060649082906000905af180156107c857610cb3575b505050610cae60ff1960055416600555565b600190565b82604491610cd594913d10610cde575b610ccd82856106d5565b0101906108a2565b50388080610c9c565b3d9150610cc3565b610cfc9250803d106107c1576107b681836106d5565b388f610c2c565b80610d10610d16926106ab565b8061037d565b38610bc9565b80610d10610d29926106ab565b38610b91565b610d7287610d6a33610d538a60018060a01b03166000526004602052604060002090565b9060018060a01b0316600052602052604060002090565b541015610903565b610d7d873388610daf565b610b08565b610da291508b3d8d11610da8575b610d9a81836106d5565b8101906108a2565b38610af6565b503d610d90565b6001600160a01b038082166000908152600460209081526040808320938616835292905220909190549260018401610de8575b50505050565b808410610e0357610dfa930391610e5c565b38808080610de2565b60405162461bcd60e51b815260206004820152602b60248201527f5553444f466c6173686c6f616e48656c7065723a20696e73756666696369656e60448201526a7420616c6c6f77616e636560a81b6064820152608490fd5b906001600160a01b0380831615610ef457811615610e9657610d53610e939260018060a01b03166000526004602052604060002090565b55565b60405162461bcd60e51b815260206004820152603060248201527f5553444f466c6173686c6f616e48656c7065723a20617070726f766520746f2060448201526f746865207a65726f206164647265737360801b6064820152608490fd5b60405162461bcd60e51b815260206004820152603260248201527f5553444f466c6173686c6f616e48656c7065723a20617070726f76652066726f6044820152716d20746865207a65726f206164647265737360701b6064820152608490fdfea26469706673582212205e269f1a86f89d74fa71be7b0a38b30bda6656e41e55632e6824c795f8d8b5f264736f6c63430008120033"; type USDOFlashloanHelperConstructorParams = | [signer?: Signer] diff --git a/src/typechain/tapioca-bar/markets/Market.ts b/src/typechain/tapioca-bar/markets/Market.ts index 47e17337..b3e34281 100644 --- a/src/typechain/tapioca-bar/markets/Market.ts +++ b/src/typechain/tapioca-bar/markets/Market.ts @@ -37,7 +37,6 @@ export interface MarketInterface extends utils.Interface { "asset()": FunctionFragment; "assetId()": FunctionFragment; "balanceOf(address)": FunctionFragment; - "borrowOpeningFee()": FunctionFragment; "callerFee()": FunctionFragment; "claimOwnership()": FunctionFragment; "collateral()": FunctionFragment; @@ -66,7 +65,7 @@ export interface MarketInterface extends utils.Interface { "protocolFee()": FunctionFragment; "rateTimestamp()": FunctionFragment; "rateValidDuration()": FunctionFragment; - "setMarketConfig(uint256,address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)": FunctionFragment; + "setMarketConfig(address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)": FunctionFragment; "totalBorrow()": FunctionFragment; "totalBorrowCap()": FunctionFragment; "totalCollateralShare()": FunctionFragment; @@ -99,8 +98,6 @@ export interface MarketInterface extends utils.Interface { | "assetId()" | "balanceOf" | "balanceOf(address)" - | "borrowOpeningFee" - | "borrowOpeningFee()" | "callerFee" | "callerFee()" | "claimOwnership" @@ -158,7 +155,7 @@ export interface MarketInterface extends utils.Interface { | "rateValidDuration" | "rateValidDuration()" | "setMarketConfig" - | "setMarketConfig(uint256,address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)" + | "setMarketConfig(address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)" | "totalBorrow" | "totalBorrow()" | "totalBorrowCap" @@ -237,14 +234,6 @@ export interface MarketInterface extends utils.Interface { functionFragment: "balanceOf(address)", values: [PromiseOrValue] ): string; - encodeFunctionData( - functionFragment: "borrowOpeningFee", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "borrowOpeningFee()", - values?: undefined - ): string; encodeFunctionData(functionFragment: "callerFee", values?: undefined): string; encodeFunctionData( functionFragment: "callerFee()", @@ -491,7 +480,6 @@ export interface MarketInterface extends utils.Interface { encodeFunctionData( functionFragment: "setMarketConfig", values: [ - PromiseOrValue, PromiseOrValue, PromiseOrValue, PromiseOrValue, @@ -506,9 +494,8 @@ export interface MarketInterface extends utils.Interface { ] ): string; encodeFunctionData( - functionFragment: "setMarketConfig(uint256,address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)", + functionFragment: "setMarketConfig(address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)", values: [ - PromiseOrValue, PromiseOrValue, PromiseOrValue, PromiseOrValue, @@ -675,14 +662,6 @@ export interface MarketInterface extends utils.Interface { functionFragment: "balanceOf(address)", data: BytesLike ): Result; - decodeFunctionResult( - functionFragment: "borrowOpeningFee", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "borrowOpeningFee()", - data: BytesLike - ): Result; decodeFunctionResult(functionFragment: "callerFee", data: BytesLike): Result; decodeFunctionResult( functionFragment: "callerFee()", @@ -879,7 +858,7 @@ export interface MarketInterface extends utils.Interface { data: BytesLike ): Result; decodeFunctionResult( - functionFragment: "setMarketConfig(uint256,address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)", + functionFragment: "setMarketConfig(address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)", data: BytesLike ): Result; decodeFunctionResult( @@ -978,7 +957,6 @@ export interface MarketInterface extends utils.Interface { "Liquidated(address,address[],uint256,uint256,uint256,uint256)": EventFragment; "LiquidationMultiplierUpdated(uint256,uint256)": EventFragment; "LogBorrowCapUpdated(uint256,uint256)": EventFragment; - "LogBorrowingFee(uint256,uint256)": EventFragment; "LogExchangeRate(uint256)": EventFragment; "OracleDataUpdated()": EventFragment; "OracleUpdated()": EventFragment; @@ -1019,10 +997,6 @@ export interface MarketInterface extends utils.Interface { getEvent( nameOrSignatureOrTopic: "LogBorrowCapUpdated(uint256,uint256)" ): EventFragment; - getEvent(nameOrSignatureOrTopic: "LogBorrowingFee"): EventFragment; - getEvent( - nameOrSignatureOrTopic: "LogBorrowingFee(uint256,uint256)" - ): EventFragment; getEvent(nameOrSignatureOrTopic: "LogExchangeRate"): EventFragment; getEvent(nameOrSignatureOrTopic: "LogExchangeRate(uint256)"): EventFragment; getEvent(nameOrSignatureOrTopic: "OracleDataUpdated"): EventFragment; @@ -1130,17 +1104,6 @@ export type LogBorrowCapUpdatedEvent = TypedEvent< export type LogBorrowCapUpdatedEventFilter = TypedEventFilter; -export interface LogBorrowingFeeEventObject { - _oldVal: BigNumber; - _newVal: BigNumber; -} -export type LogBorrowingFeeEvent = TypedEvent< - [BigNumber, BigNumber], - LogBorrowingFeeEventObject ->; - -export type LogBorrowingFeeEventFilter = TypedEventFilter; - export interface LogExchangeRateEventObject { rate: BigNumber; } @@ -1300,10 +1263,6 @@ export interface Market extends BaseContract { overrides?: CallOverrides ): Promise<[BigNumber]>; - borrowOpeningFee(overrides?: CallOverrides): Promise<[BigNumber]>; - - "borrowOpeningFee()"(overrides?: CallOverrides): Promise<[BigNumber]>; - callerFee(overrides?: CallOverrides): Promise<[BigNumber]>; "callerFee()"(overrides?: CallOverrides): Promise<[BigNumber]>; @@ -1519,7 +1478,6 @@ export interface Market extends BaseContract { "rateValidDuration()"(overrides?: CallOverrides): Promise<[BigNumber]>; setMarketConfig( - _borrowOpeningFee: PromiseOrValue, _oracle: PromiseOrValue, _oracleData: PromiseOrValue, _conservator: PromiseOrValue, @@ -1534,8 +1492,7 @@ export interface Market extends BaseContract { overrides?: Overrides & { from?: PromiseOrValue } ): Promise; - "setMarketConfig(uint256,address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)"( - _borrowOpeningFee: PromiseOrValue, + "setMarketConfig(address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)"( _oracle: PromiseOrValue, _oracleData: PromiseOrValue, _conservator: PromiseOrValue, @@ -1729,10 +1686,6 @@ export interface Market extends BaseContract { overrides?: CallOverrides ): Promise; - borrowOpeningFee(overrides?: CallOverrides): Promise; - - "borrowOpeningFee()"(overrides?: CallOverrides): Promise; - callerFee(overrides?: CallOverrides): Promise; "callerFee()"(overrides?: CallOverrides): Promise; @@ -1948,7 +1901,6 @@ export interface Market extends BaseContract { "rateValidDuration()"(overrides?: CallOverrides): Promise; setMarketConfig( - _borrowOpeningFee: PromiseOrValue, _oracle: PromiseOrValue, _oracleData: PromiseOrValue, _conservator: PromiseOrValue, @@ -1963,8 +1915,7 @@ export interface Market extends BaseContract { overrides?: Overrides & { from?: PromiseOrValue } ): Promise; - "setMarketConfig(uint256,address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)"( - _borrowOpeningFee: PromiseOrValue, + "setMarketConfig(address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)"( _oracle: PromiseOrValue, _oracleData: PromiseOrValue, _conservator: PromiseOrValue, @@ -2154,10 +2105,6 @@ export interface Market extends BaseContract { overrides?: CallOverrides ): Promise; - borrowOpeningFee(overrides?: CallOverrides): Promise; - - "borrowOpeningFee()"(overrides?: CallOverrides): Promise; - callerFee(overrides?: CallOverrides): Promise; "callerFee()"(overrides?: CallOverrides): Promise; @@ -2369,7 +2316,6 @@ export interface Market extends BaseContract { "rateValidDuration()"(overrides?: CallOverrides): Promise; setMarketConfig( - _borrowOpeningFee: PromiseOrValue, _oracle: PromiseOrValue, _oracleData: PromiseOrValue, _conservator: PromiseOrValue, @@ -2384,8 +2330,7 @@ export interface Market extends BaseContract { overrides?: CallOverrides ): Promise; - "setMarketConfig(uint256,address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)"( - _borrowOpeningFee: PromiseOrValue, + "setMarketConfig(address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)"( _oracle: PromiseOrValue, _oracleData: PromiseOrValue, _conservator: PromiseOrValue, @@ -2585,15 +2530,6 @@ export interface Market extends BaseContract { _newVal?: PromiseOrValue | null ): LogBorrowCapUpdatedEventFilter; - "LogBorrowingFee(uint256,uint256)"( - _oldVal?: PromiseOrValue | null, - _newVal?: PromiseOrValue | null - ): LogBorrowingFeeEventFilter; - LogBorrowingFee( - _oldVal?: PromiseOrValue | null, - _newVal?: PromiseOrValue | null - ): LogBorrowingFeeEventFilter; - "LogExchangeRate(uint256)"( rate?: PromiseOrValue | null ): LogExchangeRateEventFilter; @@ -2710,10 +2646,6 @@ export interface Market extends BaseContract { overrides?: CallOverrides ): Promise; - borrowOpeningFee(overrides?: CallOverrides): Promise; - - "borrowOpeningFee()"(overrides?: CallOverrides): Promise; - callerFee(overrides?: CallOverrides): Promise; "callerFee()"(overrides?: CallOverrides): Promise; @@ -2917,7 +2849,6 @@ export interface Market extends BaseContract { "rateValidDuration()"(overrides?: CallOverrides): Promise; setMarketConfig( - _borrowOpeningFee: PromiseOrValue, _oracle: PromiseOrValue, _oracleData: PromiseOrValue, _conservator: PromiseOrValue, @@ -2932,8 +2863,7 @@ export interface Market extends BaseContract { overrides?: Overrides & { from?: PromiseOrValue } ): Promise; - "setMarketConfig(uint256,address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)"( - _borrowOpeningFee: PromiseOrValue, + "setMarketConfig(address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)"( _oracle: PromiseOrValue, _oracleData: PromiseOrValue, _conservator: PromiseOrValue, @@ -3122,12 +3052,6 @@ export interface Market extends BaseContract { overrides?: CallOverrides ): Promise; - borrowOpeningFee(overrides?: CallOverrides): Promise; - - "borrowOpeningFee()"( - overrides?: CallOverrides - ): Promise; - callerFee(overrides?: CallOverrides): Promise; "callerFee()"(overrides?: CallOverrides): Promise; @@ -3353,7 +3277,6 @@ export interface Market extends BaseContract { ): Promise; setMarketConfig( - _borrowOpeningFee: PromiseOrValue, _oracle: PromiseOrValue, _oracleData: PromiseOrValue, _conservator: PromiseOrValue, @@ -3368,8 +3291,7 @@ export interface Market extends BaseContract { overrides?: Overrides & { from?: PromiseOrValue } ): Promise; - "setMarketConfig(uint256,address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)"( - _borrowOpeningFee: PromiseOrValue, + "setMarketConfig(address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)"( _oracle: PromiseOrValue, _oracleData: PromiseOrValue, _conservator: PromiseOrValue, diff --git a/src/typechain/tapioca-bar/markets/bigBang/BBBorrow.ts b/src/typechain/tapioca-bar/markets/bigBang/BBBorrow.ts index 38a317c5..f9d8f93a 100644 --- a/src/typechain/tapioca-bar/markets/bigBang/BBBorrow.ts +++ b/src/typechain/tapioca-bar/markets/bigBang/BBBorrow.ts @@ -38,9 +38,10 @@ export interface BBBorrowInterface extends utils.Interface { "approveBorrow(address,uint256)": FunctionFragment; "asset()": FunctionFragment; "assetId()": FunctionFragment; + "assetOracle()": FunctionFragment; + "assetOracleData()": FunctionFragment; "balanceOf(address)": FunctionFragment; "borrow(address,address,uint256)": FunctionFragment; - "borrowOpeningFee()": FunctionFragment; "callerFee()": FunctionFragment; "claimOwnership()": FunctionFragment; "collateral()": FunctionFragment; @@ -61,8 +62,10 @@ export interface BBBorrowInterface extends utils.Interface { "liquidationMultiplier()": FunctionFragment; "maxDebtRate()": FunctionFragment; "maxLiquidatorReward()": FunctionFragment; + "maxMintFee()": FunctionFragment; "minDebtRate()": FunctionFragment; "minLiquidatorReward()": FunctionFragment; + "minMintFee()": FunctionFragment; "nonces(address)": FunctionFragment; "openingFees(address)": FunctionFragment; "oracle()": FunctionFragment; @@ -78,7 +81,7 @@ export interface BBBorrowInterface extends utils.Interface { "rateTimestamp()": FunctionFragment; "rateValidDuration()": FunctionFragment; "repay(address,address,bool,uint256)": FunctionFragment; - "setMarketConfig(uint256,address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)": FunctionFragment; + "setMarketConfig(address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)": FunctionFragment; "totalBorrow()": FunctionFragment; "totalBorrowCap()": FunctionFragment; "totalCollateralShare()": FunctionFragment; @@ -113,12 +116,14 @@ export interface BBBorrowInterface extends utils.Interface { | "asset()" | "assetId" | "assetId()" + | "assetOracle" + | "assetOracle()" + | "assetOracleData" + | "assetOracleData()" | "balanceOf" | "balanceOf(address)" | "borrow" | "borrow(address,address,uint256)" - | "borrowOpeningFee" - | "borrowOpeningFee()" | "callerFee" | "callerFee()" | "claimOwnership" @@ -159,10 +164,14 @@ export interface BBBorrowInterface extends utils.Interface { | "maxDebtRate()" | "maxLiquidatorReward" | "maxLiquidatorReward()" + | "maxMintFee" + | "maxMintFee()" | "minDebtRate" | "minDebtRate()" | "minLiquidatorReward" | "minLiquidatorReward()" + | "minMintFee" + | "minMintFee()" | "nonces" | "nonces(address)" | "openingFees" @@ -194,7 +203,7 @@ export interface BBBorrowInterface extends utils.Interface { | "repay" | "repay(address,address,bool,uint256)" | "setMarketConfig" - | "setMarketConfig(uint256,address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)" + | "setMarketConfig(address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)" | "totalBorrow" | "totalBorrow()" | "totalBorrowCap" @@ -275,6 +284,22 @@ export interface BBBorrowInterface extends utils.Interface { encodeFunctionData(functionFragment: "asset()", values?: undefined): string; encodeFunctionData(functionFragment: "assetId", values?: undefined): string; encodeFunctionData(functionFragment: "assetId()", values?: undefined): string; + encodeFunctionData( + functionFragment: "assetOracle", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "assetOracle()", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "assetOracleData", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "assetOracleData()", + values?: undefined + ): string; encodeFunctionData( functionFragment: "balanceOf", values: [PromiseOrValue] @@ -299,14 +324,6 @@ export interface BBBorrowInterface extends utils.Interface { PromiseOrValue ] ): string; - encodeFunctionData( - functionFragment: "borrowOpeningFee", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "borrowOpeningFee()", - values?: undefined - ): string; encodeFunctionData(functionFragment: "callerFee", values?: undefined): string; encodeFunctionData( functionFragment: "callerFee()", @@ -472,6 +489,14 @@ export interface BBBorrowInterface extends utils.Interface { functionFragment: "maxLiquidatorReward()", values?: undefined ): string; + encodeFunctionData( + functionFragment: "maxMintFee", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "maxMintFee()", + values?: undefined + ): string; encodeFunctionData( functionFragment: "minDebtRate", values?: undefined @@ -488,6 +513,14 @@ export interface BBBorrowInterface extends utils.Interface { functionFragment: "minLiquidatorReward()", values?: undefined ): string; + encodeFunctionData( + functionFragment: "minMintFee", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "minMintFee()", + values?: undefined + ): string; encodeFunctionData( functionFragment: "nonces", values: [PromiseOrValue] @@ -635,7 +668,6 @@ export interface BBBorrowInterface extends utils.Interface { encodeFunctionData( functionFragment: "setMarketConfig", values: [ - PromiseOrValue, PromiseOrValue, PromiseOrValue, PromiseOrValue, @@ -650,9 +682,8 @@ export interface BBBorrowInterface extends utils.Interface { ] ): string; encodeFunctionData( - functionFragment: "setMarketConfig(uint256,address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)", + functionFragment: "setMarketConfig(address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)", values: [ - PromiseOrValue, PromiseOrValue, PromiseOrValue, PromiseOrValue, @@ -821,22 +852,30 @@ export interface BBBorrowInterface extends utils.Interface { decodeFunctionResult(functionFragment: "asset()", data: BytesLike): Result; decodeFunctionResult(functionFragment: "assetId", data: BytesLike): Result; decodeFunctionResult(functionFragment: "assetId()", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "balanceOf", data: BytesLike): Result; decodeFunctionResult( - functionFragment: "balanceOf(address)", + functionFragment: "assetOracle", data: BytesLike ): Result; - decodeFunctionResult(functionFragment: "borrow", data: BytesLike): Result; decodeFunctionResult( - functionFragment: "borrow(address,address,uint256)", + functionFragment: "assetOracle()", data: BytesLike ): Result; decodeFunctionResult( - functionFragment: "borrowOpeningFee", + functionFragment: "assetOracleData", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "assetOracleData()", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "balanceOf", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "balanceOf(address)", data: BytesLike ): Result; + decodeFunctionResult(functionFragment: "borrow", data: BytesLike): Result; decodeFunctionResult( - functionFragment: "borrowOpeningFee()", + functionFragment: "borrow(address,address,uint256)", data: BytesLike ): Result; decodeFunctionResult(functionFragment: "callerFee", data: BytesLike): Result; @@ -993,6 +1032,11 @@ export interface BBBorrowInterface extends utils.Interface { functionFragment: "maxLiquidatorReward()", data: BytesLike ): Result; + decodeFunctionResult(functionFragment: "maxMintFee", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "maxMintFee()", + data: BytesLike + ): Result; decodeFunctionResult( functionFragment: "minDebtRate", data: BytesLike @@ -1009,6 +1053,11 @@ export interface BBBorrowInterface extends utils.Interface { functionFragment: "minLiquidatorReward()", data: BytesLike ): Result; + decodeFunctionResult(functionFragment: "minMintFee", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "minMintFee()", + data: BytesLike + ): Result; decodeFunctionResult(functionFragment: "nonces", data: BytesLike): Result; decodeFunctionResult( functionFragment: "nonces(address)", @@ -1104,7 +1153,7 @@ export interface BBBorrowInterface extends utils.Interface { data: BytesLike ): Result; decodeFunctionResult( - functionFragment: "setMarketConfig(uint256,address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)", + functionFragment: "setMarketConfig(address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)", data: BytesLike ): Result; decodeFunctionResult( @@ -1198,6 +1247,8 @@ export interface BBBorrowInterface extends utils.Interface { events: { "Approval(address,address,uint256)": EventFragment; "ApprovalBorrow(address,address,uint256)": EventFragment; + "AssetOracleDataUpdated()": EventFragment; + "AssetOracleUpdated(address,address)": EventFragment; "ConservatorUpdated(address,address)": EventFragment; "DebtRateAgainstEthUpdated(uint256,uint256)": EventFragment; "ExchangeRateDurationUpdated(uint256,uint256)": EventFragment; @@ -1207,7 +1258,6 @@ export interface BBBorrowInterface extends utils.Interface { "LogAddCollateral(address,address,uint256)": EventFragment; "LogBorrow(address,address,uint256,uint256,uint256)": EventFragment; "LogBorrowCapUpdated(uint256,uint256)": EventFragment; - "LogBorrowingFee(uint256,uint256)": EventFragment; "LogExchangeRate(uint256)": EventFragment; "LogRemoveCollateral(address,address,uint256)": EventFragment; "LogRepay(address,address,uint256,uint256)": EventFragment; @@ -1218,6 +1268,7 @@ export interface BBBorrowInterface extends utils.Interface { "OwnershipTransferred(address,address)": EventFragment; "PausedUpdated(uint8,bool,bool)": EventFragment; "Transfer(address,address,uint256)": EventFragment; + "UpdateMinMaxMintFee(uint256,uint256,uint256,uint256)": EventFragment; }; getEvent(nameOrSignatureOrTopic: "Approval"): EventFragment; @@ -1228,6 +1279,12 @@ export interface BBBorrowInterface extends utils.Interface { getEvent( nameOrSignatureOrTopic: "ApprovalBorrow(address,address,uint256)" ): EventFragment; + getEvent(nameOrSignatureOrTopic: "AssetOracleDataUpdated"): EventFragment; + getEvent(nameOrSignatureOrTopic: "AssetOracleDataUpdated()"): EventFragment; + getEvent(nameOrSignatureOrTopic: "AssetOracleUpdated"): EventFragment; + getEvent( + nameOrSignatureOrTopic: "AssetOracleUpdated(address,address)" + ): EventFragment; getEvent(nameOrSignatureOrTopic: "ConservatorUpdated"): EventFragment; getEvent( nameOrSignatureOrTopic: "ConservatorUpdated(address,address)" @@ -1266,10 +1323,6 @@ export interface BBBorrowInterface extends utils.Interface { getEvent( nameOrSignatureOrTopic: "LogBorrowCapUpdated(uint256,uint256)" ): EventFragment; - getEvent(nameOrSignatureOrTopic: "LogBorrowingFee"): EventFragment; - getEvent( - nameOrSignatureOrTopic: "LogBorrowingFee(uint256,uint256)" - ): EventFragment; getEvent(nameOrSignatureOrTopic: "LogExchangeRate"): EventFragment; getEvent(nameOrSignatureOrTopic: "LogExchangeRate(uint256)"): EventFragment; getEvent(nameOrSignatureOrTopic: "LogRemoveCollateral"): EventFragment; @@ -1304,6 +1357,10 @@ export interface BBBorrowInterface extends utils.Interface { getEvent( nameOrSignatureOrTopic: "Transfer(address,address,uint256)" ): EventFragment; + getEvent(nameOrSignatureOrTopic: "UpdateMinMaxMintFee"): EventFragment; + getEvent( + nameOrSignatureOrTopic: "UpdateMinMaxMintFee(uint256,uint256,uint256,uint256)" + ): EventFragment; } export interface ApprovalEventObject { @@ -1330,6 +1387,27 @@ export type ApprovalBorrowEvent = TypedEvent< export type ApprovalBorrowEventFilter = TypedEventFilter; +export interface AssetOracleDataUpdatedEventObject {} +export type AssetOracleDataUpdatedEvent = TypedEvent< + [], + AssetOracleDataUpdatedEventObject +>; + +export type AssetOracleDataUpdatedEventFilter = + TypedEventFilter; + +export interface AssetOracleUpdatedEventObject { + _oldVal: string; + _newVal: string; +} +export type AssetOracleUpdatedEvent = TypedEvent< + [string, string], + AssetOracleUpdatedEventObject +>; + +export type AssetOracleUpdatedEventFilter = + TypedEventFilter; + export interface ConservatorUpdatedEventObject { old: string; _new: string; @@ -1443,17 +1521,6 @@ export type LogBorrowCapUpdatedEvent = TypedEvent< export type LogBorrowCapUpdatedEventFilter = TypedEventFilter; -export interface LogBorrowingFeeEventObject { - _oldVal: BigNumber; - _newVal: BigNumber; -} -export type LogBorrowingFeeEvent = TypedEvent< - [BigNumber, BigNumber], - LogBorrowingFeeEventObject ->; - -export type LogBorrowingFeeEventFilter = TypedEventFilter; - export interface LogExchangeRateEventObject { rate: BigNumber; } @@ -1564,6 +1631,20 @@ export type TransferEvent = TypedEvent< export type TransferEventFilter = TypedEventFilter; +export interface UpdateMinMaxMintFeeEventObject { + oldMin: BigNumber; + newMin: BigNumber; + oldMax: BigNumber; + newMax: BigNumber; +} +export type UpdateMinMaxMintFeeEvent = TypedEvent< + [BigNumber, BigNumber, BigNumber, BigNumber], + UpdateMinMaxMintFeeEventObject +>; + +export type UpdateMinMaxMintFeeEventFilter = + TypedEventFilter; + export interface BBBorrow extends BaseContract { contractName: "BBBorrow"; @@ -1673,6 +1754,14 @@ export interface BBBorrow extends BaseContract { "assetId()"(overrides?: CallOverrides): Promise<[BigNumber]>; + assetOracle(overrides?: CallOverrides): Promise<[string]>; + + "assetOracle()"(overrides?: CallOverrides): Promise<[string]>; + + assetOracleData(overrides?: CallOverrides): Promise<[string]>; + + "assetOracleData()"(overrides?: CallOverrides): Promise<[string]>; + balanceOf( arg0: PromiseOrValue, overrides?: CallOverrides @@ -1697,10 +1786,6 @@ export interface BBBorrow extends BaseContract { overrides?: Overrides & { from?: PromiseOrValue } ): Promise; - borrowOpeningFee(overrides?: CallOverrides): Promise<[BigNumber]>; - - "borrowOpeningFee()"(overrides?: CallOverrides): Promise<[BigNumber]>; - callerFee(overrides?: CallOverrides): Promise<[BigNumber]>; "callerFee()"(overrides?: CallOverrides): Promise<[BigNumber]>; @@ -1829,6 +1914,10 @@ export interface BBBorrow extends BaseContract { "maxLiquidatorReward()"(overrides?: CallOverrides): Promise<[BigNumber]>; + maxMintFee(overrides?: CallOverrides): Promise<[BigNumber]>; + + "maxMintFee()"(overrides?: CallOverrides): Promise<[BigNumber]>; + minDebtRate(overrides?: CallOverrides): Promise<[BigNumber]>; "minDebtRate()"(overrides?: CallOverrides): Promise<[BigNumber]>; @@ -1837,6 +1926,10 @@ export interface BBBorrow extends BaseContract { "minLiquidatorReward()"(overrides?: CallOverrides): Promise<[BigNumber]>; + minMintFee(overrides?: CallOverrides): Promise<[BigNumber]>; + + "minMintFee()"(overrides?: CallOverrides): Promise<[BigNumber]>; + nonces( owner: PromiseOrValue, overrides?: CallOverrides @@ -1972,7 +2065,6 @@ export interface BBBorrow extends BaseContract { ): Promise; setMarketConfig( - _borrowOpeningFee: PromiseOrValue, _oracle: PromiseOrValue, _oracleData: PromiseOrValue, _conservator: PromiseOrValue, @@ -1987,8 +2079,7 @@ export interface BBBorrow extends BaseContract { overrides?: Overrides & { from?: PromiseOrValue } ): Promise; - "setMarketConfig(uint256,address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)"( - _borrowOpeningFee: PromiseOrValue, + "setMarketConfig(address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)"( _oracle: PromiseOrValue, _oracleData: PromiseOrValue, _conservator: PromiseOrValue, @@ -2192,6 +2283,14 @@ export interface BBBorrow extends BaseContract { "assetId()"(overrides?: CallOverrides): Promise; + assetOracle(overrides?: CallOverrides): Promise; + + "assetOracle()"(overrides?: CallOverrides): Promise; + + assetOracleData(overrides?: CallOverrides): Promise; + + "assetOracleData()"(overrides?: CallOverrides): Promise; + balanceOf( arg0: PromiseOrValue, overrides?: CallOverrides @@ -2216,10 +2315,6 @@ export interface BBBorrow extends BaseContract { overrides?: Overrides & { from?: PromiseOrValue } ): Promise; - borrowOpeningFee(overrides?: CallOverrides): Promise; - - "borrowOpeningFee()"(overrides?: CallOverrides): Promise; - callerFee(overrides?: CallOverrides): Promise; "callerFee()"(overrides?: CallOverrides): Promise; @@ -2346,6 +2441,10 @@ export interface BBBorrow extends BaseContract { "maxLiquidatorReward()"(overrides?: CallOverrides): Promise; + maxMintFee(overrides?: CallOverrides): Promise; + + "maxMintFee()"(overrides?: CallOverrides): Promise; + minDebtRate(overrides?: CallOverrides): Promise; "minDebtRate()"(overrides?: CallOverrides): Promise; @@ -2354,6 +2453,10 @@ export interface BBBorrow extends BaseContract { "minLiquidatorReward()"(overrides?: CallOverrides): Promise; + minMintFee(overrides?: CallOverrides): Promise; + + "minMintFee()"(overrides?: CallOverrides): Promise; + nonces( owner: PromiseOrValue, overrides?: CallOverrides @@ -2489,7 +2592,6 @@ export interface BBBorrow extends BaseContract { ): Promise; setMarketConfig( - _borrowOpeningFee: PromiseOrValue, _oracle: PromiseOrValue, _oracleData: PromiseOrValue, _conservator: PromiseOrValue, @@ -2504,8 +2606,7 @@ export interface BBBorrow extends BaseContract { overrides?: Overrides & { from?: PromiseOrValue } ): Promise; - "setMarketConfig(uint256,address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)"( - _borrowOpeningFee: PromiseOrValue, + "setMarketConfig(address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)"( _oracle: PromiseOrValue, _oracleData: PromiseOrValue, _conservator: PromiseOrValue, @@ -2701,6 +2802,14 @@ export interface BBBorrow extends BaseContract { "assetId()"(overrides?: CallOverrides): Promise; + assetOracle(overrides?: CallOverrides): Promise; + + "assetOracle()"(overrides?: CallOverrides): Promise; + + assetOracleData(overrides?: CallOverrides): Promise; + + "assetOracleData()"(overrides?: CallOverrides): Promise; + balanceOf( arg0: PromiseOrValue, overrides?: CallOverrides @@ -2725,10 +2834,6 @@ export interface BBBorrow extends BaseContract { overrides?: CallOverrides ): Promise<[BigNumber, BigNumber] & { part: BigNumber; share: BigNumber }>; - borrowOpeningFee(overrides?: CallOverrides): Promise; - - "borrowOpeningFee()"(overrides?: CallOverrides): Promise; - callerFee(overrides?: CallOverrides): Promise; "callerFee()"(overrides?: CallOverrides): Promise; @@ -2851,6 +2956,10 @@ export interface BBBorrow extends BaseContract { "maxLiquidatorReward()"(overrides?: CallOverrides): Promise; + maxMintFee(overrides?: CallOverrides): Promise; + + "maxMintFee()"(overrides?: CallOverrides): Promise; + minDebtRate(overrides?: CallOverrides): Promise; "minDebtRate()"(overrides?: CallOverrides): Promise; @@ -2859,6 +2968,10 @@ export interface BBBorrow extends BaseContract { "minLiquidatorReward()"(overrides?: CallOverrides): Promise; + minMintFee(overrides?: CallOverrides): Promise; + + "minMintFee()"(overrides?: CallOverrides): Promise; + nonces( owner: PromiseOrValue, overrides?: CallOverrides @@ -2994,7 +3107,6 @@ export interface BBBorrow extends BaseContract { ): Promise; setMarketConfig( - _borrowOpeningFee: PromiseOrValue, _oracle: PromiseOrValue, _oracleData: PromiseOrValue, _conservator: PromiseOrValue, @@ -3009,8 +3121,7 @@ export interface BBBorrow extends BaseContract { overrides?: CallOverrides ): Promise; - "setMarketConfig(uint256,address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)"( - _borrowOpeningFee: PromiseOrValue, + "setMarketConfig(address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)"( _oracle: PromiseOrValue, _oracleData: PromiseOrValue, _conservator: PromiseOrValue, @@ -3157,6 +3268,18 @@ export interface BBBorrow extends BaseContract { value?: PromiseOrValue | null ): ApprovalBorrowEventFilter; + "AssetOracleDataUpdated()"(): AssetOracleDataUpdatedEventFilter; + AssetOracleDataUpdated(): AssetOracleDataUpdatedEventFilter; + + "AssetOracleUpdated(address,address)"( + _oldVal?: PromiseOrValue | null, + _newVal?: PromiseOrValue | null + ): AssetOracleUpdatedEventFilter; + AssetOracleUpdated( + _oldVal?: PromiseOrValue | null, + _newVal?: PromiseOrValue | null + ): AssetOracleUpdatedEventFilter; + "ConservatorUpdated(address,address)"( old?: PromiseOrValue | null, _new?: PromiseOrValue | null @@ -3254,15 +3377,6 @@ export interface BBBorrow extends BaseContract { _newVal?: PromiseOrValue | null ): LogBorrowCapUpdatedEventFilter; - "LogBorrowingFee(uint256,uint256)"( - _oldVal?: PromiseOrValue | null, - _newVal?: PromiseOrValue | null - ): LogBorrowingFeeEventFilter; - LogBorrowingFee( - _oldVal?: PromiseOrValue | null, - _newVal?: PromiseOrValue | null - ): LogBorrowingFeeEventFilter; - "LogExchangeRate(uint256)"( rate?: PromiseOrValue | null ): LogExchangeRateEventFilter; @@ -3348,6 +3462,19 @@ export interface BBBorrow extends BaseContract { to?: PromiseOrValue | null, value?: null ): TransferEventFilter; + + "UpdateMinMaxMintFee(uint256,uint256,uint256,uint256)"( + oldMin?: PromiseOrValue | null, + newMin?: PromiseOrValue | null, + oldMax?: PromiseOrValue | null, + newMax?: null + ): UpdateMinMaxMintFeeEventFilter; + UpdateMinMaxMintFee( + oldMin?: PromiseOrValue | null, + newMin?: PromiseOrValue | null, + oldMax?: PromiseOrValue | null, + newMax?: null + ): UpdateMinMaxMintFeeEventFilter; }; estimateGas: { @@ -3423,6 +3550,14 @@ export interface BBBorrow extends BaseContract { "assetId()"(overrides?: CallOverrides): Promise; + assetOracle(overrides?: CallOverrides): Promise; + + "assetOracle()"(overrides?: CallOverrides): Promise; + + assetOracleData(overrides?: CallOverrides): Promise; + + "assetOracleData()"(overrides?: CallOverrides): Promise; + balanceOf( arg0: PromiseOrValue, overrides?: CallOverrides @@ -3447,10 +3582,6 @@ export interface BBBorrow extends BaseContract { overrides?: Overrides & { from?: PromiseOrValue } ): Promise; - borrowOpeningFee(overrides?: CallOverrides): Promise; - - "borrowOpeningFee()"(overrides?: CallOverrides): Promise; - callerFee(overrides?: CallOverrides): Promise; "callerFee()"(overrides?: CallOverrides): Promise; @@ -3565,6 +3696,10 @@ export interface BBBorrow extends BaseContract { "maxLiquidatorReward()"(overrides?: CallOverrides): Promise; + maxMintFee(overrides?: CallOverrides): Promise; + + "maxMintFee()"(overrides?: CallOverrides): Promise; + minDebtRate(overrides?: CallOverrides): Promise; "minDebtRate()"(overrides?: CallOverrides): Promise; @@ -3573,6 +3708,10 @@ export interface BBBorrow extends BaseContract { "minLiquidatorReward()"(overrides?: CallOverrides): Promise; + minMintFee(overrides?: CallOverrides): Promise; + + "minMintFee()"(overrides?: CallOverrides): Promise; + nonces( owner: PromiseOrValue, overrides?: CallOverrides @@ -3708,7 +3847,6 @@ export interface BBBorrow extends BaseContract { ): Promise; setMarketConfig( - _borrowOpeningFee: PromiseOrValue, _oracle: PromiseOrValue, _oracleData: PromiseOrValue, _conservator: PromiseOrValue, @@ -3723,8 +3861,7 @@ export interface BBBorrow extends BaseContract { overrides?: Overrides & { from?: PromiseOrValue } ): Promise; - "setMarketConfig(uint256,address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)"( - _borrowOpeningFee: PromiseOrValue, + "setMarketConfig(address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)"( _oracle: PromiseOrValue, _oracleData: PromiseOrValue, _conservator: PromiseOrValue, @@ -3915,6 +4052,16 @@ export interface BBBorrow extends BaseContract { "assetId()"(overrides?: CallOverrides): Promise; + assetOracle(overrides?: CallOverrides): Promise; + + "assetOracle()"(overrides?: CallOverrides): Promise; + + assetOracleData(overrides?: CallOverrides): Promise; + + "assetOracleData()"( + overrides?: CallOverrides + ): Promise; + balanceOf( arg0: PromiseOrValue, overrides?: CallOverrides @@ -3939,12 +4086,6 @@ export interface BBBorrow extends BaseContract { overrides?: Overrides & { from?: PromiseOrValue } ): Promise; - borrowOpeningFee(overrides?: CallOverrides): Promise; - - "borrowOpeningFee()"( - overrides?: CallOverrides - ): Promise; - callerFee(overrides?: CallOverrides): Promise; "callerFee()"(overrides?: CallOverrides): Promise; @@ -4081,6 +4222,10 @@ export interface BBBorrow extends BaseContract { overrides?: CallOverrides ): Promise; + maxMintFee(overrides?: CallOverrides): Promise; + + "maxMintFee()"(overrides?: CallOverrides): Promise; + minDebtRate(overrides?: CallOverrides): Promise; "minDebtRate()"(overrides?: CallOverrides): Promise; @@ -4093,6 +4238,10 @@ export interface BBBorrow extends BaseContract { overrides?: CallOverrides ): Promise; + minMintFee(overrides?: CallOverrides): Promise; + + "minMintFee()"(overrides?: CallOverrides): Promise; + nonces( owner: PromiseOrValue, overrides?: CallOverrides @@ -4230,7 +4379,6 @@ export interface BBBorrow extends BaseContract { ): Promise; setMarketConfig( - _borrowOpeningFee: PromiseOrValue, _oracle: PromiseOrValue, _oracleData: PromiseOrValue, _conservator: PromiseOrValue, @@ -4245,8 +4393,7 @@ export interface BBBorrow extends BaseContract { overrides?: Overrides & { from?: PromiseOrValue } ): Promise; - "setMarketConfig(uint256,address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)"( - _borrowOpeningFee: PromiseOrValue, + "setMarketConfig(address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)"( _oracle: PromiseOrValue, _oracleData: PromiseOrValue, _conservator: PromiseOrValue, diff --git a/src/typechain/tapioca-bar/markets/bigBang/BBCollateral.ts b/src/typechain/tapioca-bar/markets/bigBang/BBCollateral.ts index 04e5d71b..f4a0178d 100644 --- a/src/typechain/tapioca-bar/markets/bigBang/BBCollateral.ts +++ b/src/typechain/tapioca-bar/markets/bigBang/BBCollateral.ts @@ -39,8 +39,9 @@ export interface BBCollateralInterface extends utils.Interface { "approveBorrow(address,uint256)": FunctionFragment; "asset()": FunctionFragment; "assetId()": FunctionFragment; + "assetOracle()": FunctionFragment; + "assetOracleData()": FunctionFragment; "balanceOf(address)": FunctionFragment; - "borrowOpeningFee()": FunctionFragment; "callerFee()": FunctionFragment; "claimOwnership()": FunctionFragment; "collateral()": FunctionFragment; @@ -61,8 +62,10 @@ export interface BBCollateralInterface extends utils.Interface { "liquidationMultiplier()": FunctionFragment; "maxDebtRate()": FunctionFragment; "maxLiquidatorReward()": FunctionFragment; + "maxMintFee()": FunctionFragment; "minDebtRate()": FunctionFragment; "minLiquidatorReward()": FunctionFragment; + "minMintFee()": FunctionFragment; "nonces(address)": FunctionFragment; "openingFees(address)": FunctionFragment; "oracle()": FunctionFragment; @@ -78,7 +81,7 @@ export interface BBCollateralInterface extends utils.Interface { "rateTimestamp()": FunctionFragment; "rateValidDuration()": FunctionFragment; "removeCollateral(address,address,uint256)": FunctionFragment; - "setMarketConfig(uint256,address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)": FunctionFragment; + "setMarketConfig(address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)": FunctionFragment; "totalBorrow()": FunctionFragment; "totalBorrowCap()": FunctionFragment; "totalCollateralShare()": FunctionFragment; @@ -115,10 +118,12 @@ export interface BBCollateralInterface extends utils.Interface { | "asset()" | "assetId" | "assetId()" + | "assetOracle" + | "assetOracle()" + | "assetOracleData" + | "assetOracleData()" | "balanceOf" | "balanceOf(address)" - | "borrowOpeningFee" - | "borrowOpeningFee()" | "callerFee" | "callerFee()" | "claimOwnership" @@ -159,10 +164,14 @@ export interface BBCollateralInterface extends utils.Interface { | "maxDebtRate()" | "maxLiquidatorReward" | "maxLiquidatorReward()" + | "maxMintFee" + | "maxMintFee()" | "minDebtRate" | "minDebtRate()" | "minLiquidatorReward" | "minLiquidatorReward()" + | "minMintFee" + | "minMintFee()" | "nonces" | "nonces(address)" | "openingFees" @@ -194,7 +203,7 @@ export interface BBCollateralInterface extends utils.Interface { | "removeCollateral" | "removeCollateral(address,address,uint256)" | "setMarketConfig" - | "setMarketConfig(uint256,address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)" + | "setMarketConfig(address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)" | "totalBorrow" | "totalBorrow()" | "totalBorrowCap" @@ -296,21 +305,29 @@ export interface BBCollateralInterface extends utils.Interface { encodeFunctionData(functionFragment: "assetId", values?: undefined): string; encodeFunctionData(functionFragment: "assetId()", values?: undefined): string; encodeFunctionData( - functionFragment: "balanceOf", - values: [PromiseOrValue] + functionFragment: "assetOracle", + values?: undefined ): string; encodeFunctionData( - functionFragment: "balanceOf(address)", - values: [PromiseOrValue] + functionFragment: "assetOracle()", + values?: undefined ): string; encodeFunctionData( - functionFragment: "borrowOpeningFee", + functionFragment: "assetOracleData", values?: undefined ): string; encodeFunctionData( - functionFragment: "borrowOpeningFee()", + functionFragment: "assetOracleData()", values?: undefined ): string; + encodeFunctionData( + functionFragment: "balanceOf", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "balanceOf(address)", + values: [PromiseOrValue] + ): string; encodeFunctionData(functionFragment: "callerFee", values?: undefined): string; encodeFunctionData( functionFragment: "callerFee()", @@ -476,6 +493,14 @@ export interface BBCollateralInterface extends utils.Interface { functionFragment: "maxLiquidatorReward()", values?: undefined ): string; + encodeFunctionData( + functionFragment: "maxMintFee", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "maxMintFee()", + values?: undefined + ): string; encodeFunctionData( functionFragment: "minDebtRate", values?: undefined @@ -492,6 +517,14 @@ export interface BBCollateralInterface extends utils.Interface { functionFragment: "minLiquidatorReward()", values?: undefined ): string; + encodeFunctionData( + functionFragment: "minMintFee", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "minMintFee()", + values?: undefined + ): string; encodeFunctionData( functionFragment: "nonces", values: [PromiseOrValue] @@ -637,7 +670,6 @@ export interface BBCollateralInterface extends utils.Interface { encodeFunctionData( functionFragment: "setMarketConfig", values: [ - PromiseOrValue, PromiseOrValue, PromiseOrValue, PromiseOrValue, @@ -652,9 +684,8 @@ export interface BBCollateralInterface extends utils.Interface { ] ): string; encodeFunctionData( - functionFragment: "setMarketConfig(uint256,address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)", + functionFragment: "setMarketConfig(address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)", values: [ - PromiseOrValue, PromiseOrValue, PromiseOrValue, PromiseOrValue, @@ -831,17 +862,25 @@ export interface BBCollateralInterface extends utils.Interface { decodeFunctionResult(functionFragment: "asset()", data: BytesLike): Result; decodeFunctionResult(functionFragment: "assetId", data: BytesLike): Result; decodeFunctionResult(functionFragment: "assetId()", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "balanceOf", data: BytesLike): Result; decodeFunctionResult( - functionFragment: "balanceOf(address)", + functionFragment: "assetOracle", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "assetOracle()", data: BytesLike ): Result; decodeFunctionResult( - functionFragment: "borrowOpeningFee", + functionFragment: "assetOracleData", data: BytesLike ): Result; decodeFunctionResult( - functionFragment: "borrowOpeningFee()", + functionFragment: "assetOracleData()", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "balanceOf", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "balanceOf(address)", data: BytesLike ): Result; decodeFunctionResult(functionFragment: "callerFee", data: BytesLike): Result; @@ -998,6 +1037,11 @@ export interface BBCollateralInterface extends utils.Interface { functionFragment: "maxLiquidatorReward()", data: BytesLike ): Result; + decodeFunctionResult(functionFragment: "maxMintFee", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "maxMintFee()", + data: BytesLike + ): Result; decodeFunctionResult( functionFragment: "minDebtRate", data: BytesLike @@ -1014,6 +1058,11 @@ export interface BBCollateralInterface extends utils.Interface { functionFragment: "minLiquidatorReward()", data: BytesLike ): Result; + decodeFunctionResult(functionFragment: "minMintFee", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "minMintFee()", + data: BytesLike + ): Result; decodeFunctionResult(functionFragment: "nonces", data: BytesLike): Result; decodeFunctionResult( functionFragment: "nonces(address)", @@ -1112,7 +1161,7 @@ export interface BBCollateralInterface extends utils.Interface { data: BytesLike ): Result; decodeFunctionResult( - functionFragment: "setMarketConfig(uint256,address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)", + functionFragment: "setMarketConfig(address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)", data: BytesLike ): Result; decodeFunctionResult( @@ -1206,6 +1255,8 @@ export interface BBCollateralInterface extends utils.Interface { events: { "Approval(address,address,uint256)": EventFragment; "ApprovalBorrow(address,address,uint256)": EventFragment; + "AssetOracleDataUpdated()": EventFragment; + "AssetOracleUpdated(address,address)": EventFragment; "ConservatorUpdated(address,address)": EventFragment; "DebtRateAgainstEthUpdated(uint256,uint256)": EventFragment; "ExchangeRateDurationUpdated(uint256,uint256)": EventFragment; @@ -1215,7 +1266,6 @@ export interface BBCollateralInterface extends utils.Interface { "LogAddCollateral(address,address,uint256)": EventFragment; "LogBorrow(address,address,uint256,uint256,uint256)": EventFragment; "LogBorrowCapUpdated(uint256,uint256)": EventFragment; - "LogBorrowingFee(uint256,uint256)": EventFragment; "LogExchangeRate(uint256)": EventFragment; "LogRemoveCollateral(address,address,uint256)": EventFragment; "LogRepay(address,address,uint256,uint256)": EventFragment; @@ -1226,6 +1276,7 @@ export interface BBCollateralInterface extends utils.Interface { "OwnershipTransferred(address,address)": EventFragment; "PausedUpdated(uint8,bool,bool)": EventFragment; "Transfer(address,address,uint256)": EventFragment; + "UpdateMinMaxMintFee(uint256,uint256,uint256,uint256)": EventFragment; }; getEvent(nameOrSignatureOrTopic: "Approval"): EventFragment; @@ -1236,6 +1287,12 @@ export interface BBCollateralInterface extends utils.Interface { getEvent( nameOrSignatureOrTopic: "ApprovalBorrow(address,address,uint256)" ): EventFragment; + getEvent(nameOrSignatureOrTopic: "AssetOracleDataUpdated"): EventFragment; + getEvent(nameOrSignatureOrTopic: "AssetOracleDataUpdated()"): EventFragment; + getEvent(nameOrSignatureOrTopic: "AssetOracleUpdated"): EventFragment; + getEvent( + nameOrSignatureOrTopic: "AssetOracleUpdated(address,address)" + ): EventFragment; getEvent(nameOrSignatureOrTopic: "ConservatorUpdated"): EventFragment; getEvent( nameOrSignatureOrTopic: "ConservatorUpdated(address,address)" @@ -1274,10 +1331,6 @@ export interface BBCollateralInterface extends utils.Interface { getEvent( nameOrSignatureOrTopic: "LogBorrowCapUpdated(uint256,uint256)" ): EventFragment; - getEvent(nameOrSignatureOrTopic: "LogBorrowingFee"): EventFragment; - getEvent( - nameOrSignatureOrTopic: "LogBorrowingFee(uint256,uint256)" - ): EventFragment; getEvent(nameOrSignatureOrTopic: "LogExchangeRate"): EventFragment; getEvent(nameOrSignatureOrTopic: "LogExchangeRate(uint256)"): EventFragment; getEvent(nameOrSignatureOrTopic: "LogRemoveCollateral"): EventFragment; @@ -1312,6 +1365,10 @@ export interface BBCollateralInterface extends utils.Interface { getEvent( nameOrSignatureOrTopic: "Transfer(address,address,uint256)" ): EventFragment; + getEvent(nameOrSignatureOrTopic: "UpdateMinMaxMintFee"): EventFragment; + getEvent( + nameOrSignatureOrTopic: "UpdateMinMaxMintFee(uint256,uint256,uint256,uint256)" + ): EventFragment; } export interface ApprovalEventObject { @@ -1338,6 +1395,27 @@ export type ApprovalBorrowEvent = TypedEvent< export type ApprovalBorrowEventFilter = TypedEventFilter; +export interface AssetOracleDataUpdatedEventObject {} +export type AssetOracleDataUpdatedEvent = TypedEvent< + [], + AssetOracleDataUpdatedEventObject +>; + +export type AssetOracleDataUpdatedEventFilter = + TypedEventFilter; + +export interface AssetOracleUpdatedEventObject { + _oldVal: string; + _newVal: string; +} +export type AssetOracleUpdatedEvent = TypedEvent< + [string, string], + AssetOracleUpdatedEventObject +>; + +export type AssetOracleUpdatedEventFilter = + TypedEventFilter; + export interface ConservatorUpdatedEventObject { old: string; _new: string; @@ -1451,17 +1529,6 @@ export type LogBorrowCapUpdatedEvent = TypedEvent< export type LogBorrowCapUpdatedEventFilter = TypedEventFilter; -export interface LogBorrowingFeeEventObject { - _oldVal: BigNumber; - _newVal: BigNumber; -} -export type LogBorrowingFeeEvent = TypedEvent< - [BigNumber, BigNumber], - LogBorrowingFeeEventObject ->; - -export type LogBorrowingFeeEventFilter = TypedEventFilter; - export interface LogExchangeRateEventObject { rate: BigNumber; } @@ -1572,6 +1639,20 @@ export type TransferEvent = TypedEvent< export type TransferEventFilter = TypedEventFilter; +export interface UpdateMinMaxMintFeeEventObject { + oldMin: BigNumber; + newMin: BigNumber; + oldMax: BigNumber; + newMax: BigNumber; +} +export type UpdateMinMaxMintFeeEvent = TypedEvent< + [BigNumber, BigNumber, BigNumber, BigNumber], + UpdateMinMaxMintFeeEventObject +>; + +export type UpdateMinMaxMintFeeEventFilter = + TypedEventFilter; + export interface BBCollateral extends BaseContract { contractName: "BBCollateral"; @@ -1699,6 +1780,14 @@ export interface BBCollateral extends BaseContract { "assetId()"(overrides?: CallOverrides): Promise<[BigNumber]>; + assetOracle(overrides?: CallOverrides): Promise<[string]>; + + "assetOracle()"(overrides?: CallOverrides): Promise<[string]>; + + assetOracleData(overrides?: CallOverrides): Promise<[string]>; + + "assetOracleData()"(overrides?: CallOverrides): Promise<[string]>; + balanceOf( arg0: PromiseOrValue, overrides?: CallOverrides @@ -1709,10 +1798,6 @@ export interface BBCollateral extends BaseContract { overrides?: CallOverrides ): Promise<[BigNumber]>; - borrowOpeningFee(overrides?: CallOverrides): Promise<[BigNumber]>; - - "borrowOpeningFee()"(overrides?: CallOverrides): Promise<[BigNumber]>; - callerFee(overrides?: CallOverrides): Promise<[BigNumber]>; "callerFee()"(overrides?: CallOverrides): Promise<[BigNumber]>; @@ -1841,6 +1926,10 @@ export interface BBCollateral extends BaseContract { "maxLiquidatorReward()"(overrides?: CallOverrides): Promise<[BigNumber]>; + maxMintFee(overrides?: CallOverrides): Promise<[BigNumber]>; + + "maxMintFee()"(overrides?: CallOverrides): Promise<[BigNumber]>; + minDebtRate(overrides?: CallOverrides): Promise<[BigNumber]>; "minDebtRate()"(overrides?: CallOverrides): Promise<[BigNumber]>; @@ -1849,6 +1938,10 @@ export interface BBCollateral extends BaseContract { "minLiquidatorReward()"(overrides?: CallOverrides): Promise<[BigNumber]>; + minMintFee(overrides?: CallOverrides): Promise<[BigNumber]>; + + "minMintFee()"(overrides?: CallOverrides): Promise<[BigNumber]>; + nonces( owner: PromiseOrValue, overrides?: CallOverrides @@ -1982,7 +2075,6 @@ export interface BBCollateral extends BaseContract { ): Promise; setMarketConfig( - _borrowOpeningFee: PromiseOrValue, _oracle: PromiseOrValue, _oracleData: PromiseOrValue, _conservator: PromiseOrValue, @@ -1997,8 +2089,7 @@ export interface BBCollateral extends BaseContract { overrides?: Overrides & { from?: PromiseOrValue } ): Promise; - "setMarketConfig(uint256,address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)"( - _borrowOpeningFee: PromiseOrValue, + "setMarketConfig(address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)"( _oracle: PromiseOrValue, _oracleData: PromiseOrValue, _conservator: PromiseOrValue, @@ -2220,6 +2311,14 @@ export interface BBCollateral extends BaseContract { "assetId()"(overrides?: CallOverrides): Promise; + assetOracle(overrides?: CallOverrides): Promise; + + "assetOracle()"(overrides?: CallOverrides): Promise; + + assetOracleData(overrides?: CallOverrides): Promise; + + "assetOracleData()"(overrides?: CallOverrides): Promise; + balanceOf( arg0: PromiseOrValue, overrides?: CallOverrides @@ -2230,10 +2329,6 @@ export interface BBCollateral extends BaseContract { overrides?: CallOverrides ): Promise; - borrowOpeningFee(overrides?: CallOverrides): Promise; - - "borrowOpeningFee()"(overrides?: CallOverrides): Promise; - callerFee(overrides?: CallOverrides): Promise; "callerFee()"(overrides?: CallOverrides): Promise; @@ -2360,6 +2455,10 @@ export interface BBCollateral extends BaseContract { "maxLiquidatorReward()"(overrides?: CallOverrides): Promise; + maxMintFee(overrides?: CallOverrides): Promise; + + "maxMintFee()"(overrides?: CallOverrides): Promise; + minDebtRate(overrides?: CallOverrides): Promise; "minDebtRate()"(overrides?: CallOverrides): Promise; @@ -2368,6 +2467,10 @@ export interface BBCollateral extends BaseContract { "minLiquidatorReward()"(overrides?: CallOverrides): Promise; + minMintFee(overrides?: CallOverrides): Promise; + + "minMintFee()"(overrides?: CallOverrides): Promise; + nonces( owner: PromiseOrValue, overrides?: CallOverrides @@ -2501,7 +2604,6 @@ export interface BBCollateral extends BaseContract { ): Promise; setMarketConfig( - _borrowOpeningFee: PromiseOrValue, _oracle: PromiseOrValue, _oracleData: PromiseOrValue, _conservator: PromiseOrValue, @@ -2516,8 +2618,7 @@ export interface BBCollateral extends BaseContract { overrides?: Overrides & { from?: PromiseOrValue } ): Promise; - "setMarketConfig(uint256,address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)"( - _borrowOpeningFee: PromiseOrValue, + "setMarketConfig(address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)"( _oracle: PromiseOrValue, _oracleData: PromiseOrValue, _conservator: PromiseOrValue, @@ -2731,6 +2832,14 @@ export interface BBCollateral extends BaseContract { "assetId()"(overrides?: CallOverrides): Promise; + assetOracle(overrides?: CallOverrides): Promise; + + "assetOracle()"(overrides?: CallOverrides): Promise; + + assetOracleData(overrides?: CallOverrides): Promise; + + "assetOracleData()"(overrides?: CallOverrides): Promise; + balanceOf( arg0: PromiseOrValue, overrides?: CallOverrides @@ -2741,10 +2850,6 @@ export interface BBCollateral extends BaseContract { overrides?: CallOverrides ): Promise; - borrowOpeningFee(overrides?: CallOverrides): Promise; - - "borrowOpeningFee()"(overrides?: CallOverrides): Promise; - callerFee(overrides?: CallOverrides): Promise; "callerFee()"(overrides?: CallOverrides): Promise; @@ -2867,6 +2972,10 @@ export interface BBCollateral extends BaseContract { "maxLiquidatorReward()"(overrides?: CallOverrides): Promise; + maxMintFee(overrides?: CallOverrides): Promise; + + "maxMintFee()"(overrides?: CallOverrides): Promise; + minDebtRate(overrides?: CallOverrides): Promise; "minDebtRate()"(overrides?: CallOverrides): Promise; @@ -2875,6 +2984,10 @@ export interface BBCollateral extends BaseContract { "minLiquidatorReward()"(overrides?: CallOverrides): Promise; + minMintFee(overrides?: CallOverrides): Promise; + + "minMintFee()"(overrides?: CallOverrides): Promise; + nonces( owner: PromiseOrValue, overrides?: CallOverrides @@ -3008,7 +3121,6 @@ export interface BBCollateral extends BaseContract { ): Promise; setMarketConfig( - _borrowOpeningFee: PromiseOrValue, _oracle: PromiseOrValue, _oracleData: PromiseOrValue, _conservator: PromiseOrValue, @@ -3023,8 +3135,7 @@ export interface BBCollateral extends BaseContract { overrides?: CallOverrides ): Promise; - "setMarketConfig(uint256,address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)"( - _borrowOpeningFee: PromiseOrValue, + "setMarketConfig(address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)"( _oracle: PromiseOrValue, _oracleData: PromiseOrValue, _conservator: PromiseOrValue, @@ -3171,6 +3282,18 @@ export interface BBCollateral extends BaseContract { value?: PromiseOrValue | null ): ApprovalBorrowEventFilter; + "AssetOracleDataUpdated()"(): AssetOracleDataUpdatedEventFilter; + AssetOracleDataUpdated(): AssetOracleDataUpdatedEventFilter; + + "AssetOracleUpdated(address,address)"( + _oldVal?: PromiseOrValue | null, + _newVal?: PromiseOrValue | null + ): AssetOracleUpdatedEventFilter; + AssetOracleUpdated( + _oldVal?: PromiseOrValue | null, + _newVal?: PromiseOrValue | null + ): AssetOracleUpdatedEventFilter; + "ConservatorUpdated(address,address)"( old?: PromiseOrValue | null, _new?: PromiseOrValue | null @@ -3268,15 +3391,6 @@ export interface BBCollateral extends BaseContract { _newVal?: PromiseOrValue | null ): LogBorrowCapUpdatedEventFilter; - "LogBorrowingFee(uint256,uint256)"( - _oldVal?: PromiseOrValue | null, - _newVal?: PromiseOrValue | null - ): LogBorrowingFeeEventFilter; - LogBorrowingFee( - _oldVal?: PromiseOrValue | null, - _newVal?: PromiseOrValue | null - ): LogBorrowingFeeEventFilter; - "LogExchangeRate(uint256)"( rate?: PromiseOrValue | null ): LogExchangeRateEventFilter; @@ -3362,6 +3476,19 @@ export interface BBCollateral extends BaseContract { to?: PromiseOrValue | null, value?: null ): TransferEventFilter; + + "UpdateMinMaxMintFee(uint256,uint256,uint256,uint256)"( + oldMin?: PromiseOrValue | null, + newMin?: PromiseOrValue | null, + oldMax?: PromiseOrValue | null, + newMax?: null + ): UpdateMinMaxMintFeeEventFilter; + UpdateMinMaxMintFee( + oldMin?: PromiseOrValue | null, + newMin?: PromiseOrValue | null, + oldMax?: PromiseOrValue | null, + newMax?: null + ): UpdateMinMaxMintFeeEventFilter; }; estimateGas: { @@ -3455,6 +3582,14 @@ export interface BBCollateral extends BaseContract { "assetId()"(overrides?: CallOverrides): Promise; + assetOracle(overrides?: CallOverrides): Promise; + + "assetOracle()"(overrides?: CallOverrides): Promise; + + assetOracleData(overrides?: CallOverrides): Promise; + + "assetOracleData()"(overrides?: CallOverrides): Promise; + balanceOf( arg0: PromiseOrValue, overrides?: CallOverrides @@ -3465,10 +3600,6 @@ export interface BBCollateral extends BaseContract { overrides?: CallOverrides ): Promise; - borrowOpeningFee(overrides?: CallOverrides): Promise; - - "borrowOpeningFee()"(overrides?: CallOverrides): Promise; - callerFee(overrides?: CallOverrides): Promise; "callerFee()"(overrides?: CallOverrides): Promise; @@ -3583,6 +3714,10 @@ export interface BBCollateral extends BaseContract { "maxLiquidatorReward()"(overrides?: CallOverrides): Promise; + maxMintFee(overrides?: CallOverrides): Promise; + + "maxMintFee()"(overrides?: CallOverrides): Promise; + minDebtRate(overrides?: CallOverrides): Promise; "minDebtRate()"(overrides?: CallOverrides): Promise; @@ -3591,6 +3726,10 @@ export interface BBCollateral extends BaseContract { "minLiquidatorReward()"(overrides?: CallOverrides): Promise; + minMintFee(overrides?: CallOverrides): Promise; + + "minMintFee()"(overrides?: CallOverrides): Promise; + nonces( owner: PromiseOrValue, overrides?: CallOverrides @@ -3724,7 +3863,6 @@ export interface BBCollateral extends BaseContract { ): Promise; setMarketConfig( - _borrowOpeningFee: PromiseOrValue, _oracle: PromiseOrValue, _oracleData: PromiseOrValue, _conservator: PromiseOrValue, @@ -3739,8 +3877,7 @@ export interface BBCollateral extends BaseContract { overrides?: Overrides & { from?: PromiseOrValue } ): Promise; - "setMarketConfig(uint256,address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)"( - _borrowOpeningFee: PromiseOrValue, + "setMarketConfig(address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)"( _oracle: PromiseOrValue, _oracleData: PromiseOrValue, _conservator: PromiseOrValue, @@ -3949,19 +4086,23 @@ export interface BBCollateral extends BaseContract { "assetId()"(overrides?: CallOverrides): Promise; - balanceOf( - arg0: PromiseOrValue, + assetOracle(overrides?: CallOverrides): Promise; + + "assetOracle()"(overrides?: CallOverrides): Promise; + + assetOracleData(overrides?: CallOverrides): Promise; + + "assetOracleData()"( overrides?: CallOverrides ): Promise; - "balanceOf(address)"( + balanceOf( arg0: PromiseOrValue, overrides?: CallOverrides ): Promise; - borrowOpeningFee(overrides?: CallOverrides): Promise; - - "borrowOpeningFee()"( + "balanceOf(address)"( + arg0: PromiseOrValue, overrides?: CallOverrides ): Promise; @@ -4101,6 +4242,10 @@ export interface BBCollateral extends BaseContract { overrides?: CallOverrides ): Promise; + maxMintFee(overrides?: CallOverrides): Promise; + + "maxMintFee()"(overrides?: CallOverrides): Promise; + minDebtRate(overrides?: CallOverrides): Promise; "minDebtRate()"(overrides?: CallOverrides): Promise; @@ -4113,6 +4258,10 @@ export interface BBCollateral extends BaseContract { overrides?: CallOverrides ): Promise; + minMintFee(overrides?: CallOverrides): Promise; + + "minMintFee()"(overrides?: CallOverrides): Promise; + nonces( owner: PromiseOrValue, overrides?: CallOverrides @@ -4248,7 +4397,6 @@ export interface BBCollateral extends BaseContract { ): Promise; setMarketConfig( - _borrowOpeningFee: PromiseOrValue, _oracle: PromiseOrValue, _oracleData: PromiseOrValue, _conservator: PromiseOrValue, @@ -4263,8 +4411,7 @@ export interface BBCollateral extends BaseContract { overrides?: Overrides & { from?: PromiseOrValue } ): Promise; - "setMarketConfig(uint256,address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)"( - _borrowOpeningFee: PromiseOrValue, + "setMarketConfig(address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)"( _oracle: PromiseOrValue, _oracleData: PromiseOrValue, _conservator: PromiseOrValue, diff --git a/src/typechain/tapioca-bar/markets/bigBang/BBCommon.ts b/src/typechain/tapioca-bar/markets/bigBang/BBCommon.ts index d2f10433..2bb0f18c 100644 --- a/src/typechain/tapioca-bar/markets/bigBang/BBCommon.ts +++ b/src/typechain/tapioca-bar/markets/bigBang/BBCommon.ts @@ -38,8 +38,9 @@ export interface BBCommonInterface extends utils.Interface { "approveBorrow(address,uint256)": FunctionFragment; "asset()": FunctionFragment; "assetId()": FunctionFragment; + "assetOracle()": FunctionFragment; + "assetOracleData()": FunctionFragment; "balanceOf(address)": FunctionFragment; - "borrowOpeningFee()": FunctionFragment; "callerFee()": FunctionFragment; "claimOwnership()": FunctionFragment; "collateral()": FunctionFragment; @@ -60,8 +61,10 @@ export interface BBCommonInterface extends utils.Interface { "liquidationMultiplier()": FunctionFragment; "maxDebtRate()": FunctionFragment; "maxLiquidatorReward()": FunctionFragment; + "maxMintFee()": FunctionFragment; "minDebtRate()": FunctionFragment; "minLiquidatorReward()": FunctionFragment; + "minMintFee()": FunctionFragment; "nonces(address)": FunctionFragment; "openingFees(address)": FunctionFragment; "oracle()": FunctionFragment; @@ -76,7 +79,7 @@ export interface BBCommonInterface extends utils.Interface { "protocolFee()": FunctionFragment; "rateTimestamp()": FunctionFragment; "rateValidDuration()": FunctionFragment; - "setMarketConfig(uint256,address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)": FunctionFragment; + "setMarketConfig(address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)": FunctionFragment; "totalBorrow()": FunctionFragment; "totalBorrowCap()": FunctionFragment; "totalCollateralShare()": FunctionFragment; @@ -111,10 +114,12 @@ export interface BBCommonInterface extends utils.Interface { | "asset()" | "assetId" | "assetId()" + | "assetOracle" + | "assetOracle()" + | "assetOracleData" + | "assetOracleData()" | "balanceOf" | "balanceOf(address)" - | "borrowOpeningFee" - | "borrowOpeningFee()" | "callerFee" | "callerFee()" | "claimOwnership" @@ -155,10 +160,14 @@ export interface BBCommonInterface extends utils.Interface { | "maxDebtRate()" | "maxLiquidatorReward" | "maxLiquidatorReward()" + | "maxMintFee" + | "maxMintFee()" | "minDebtRate" | "minDebtRate()" | "minLiquidatorReward" | "minLiquidatorReward()" + | "minMintFee" + | "minMintFee()" | "nonces" | "nonces(address)" | "openingFees" @@ -188,7 +197,7 @@ export interface BBCommonInterface extends utils.Interface { | "rateValidDuration" | "rateValidDuration()" | "setMarketConfig" - | "setMarketConfig(uint256,address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)" + | "setMarketConfig(address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)" | "totalBorrow" | "totalBorrow()" | "totalBorrowCap" @@ -270,21 +279,29 @@ export interface BBCommonInterface extends utils.Interface { encodeFunctionData(functionFragment: "assetId", values?: undefined): string; encodeFunctionData(functionFragment: "assetId()", values?: undefined): string; encodeFunctionData( - functionFragment: "balanceOf", - values: [PromiseOrValue] + functionFragment: "assetOracle", + values?: undefined ): string; encodeFunctionData( - functionFragment: "balanceOf(address)", - values: [PromiseOrValue] + functionFragment: "assetOracle()", + values?: undefined ): string; encodeFunctionData( - functionFragment: "borrowOpeningFee", + functionFragment: "assetOracleData", values?: undefined ): string; encodeFunctionData( - functionFragment: "borrowOpeningFee()", + functionFragment: "assetOracleData()", values?: undefined ): string; + encodeFunctionData( + functionFragment: "balanceOf", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "balanceOf(address)", + values: [PromiseOrValue] + ): string; encodeFunctionData(functionFragment: "callerFee", values?: undefined): string; encodeFunctionData( functionFragment: "callerFee()", @@ -450,6 +467,14 @@ export interface BBCommonInterface extends utils.Interface { functionFragment: "maxLiquidatorReward()", values?: undefined ): string; + encodeFunctionData( + functionFragment: "maxMintFee", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "maxMintFee()", + values?: undefined + ): string; encodeFunctionData( functionFragment: "minDebtRate", values?: undefined @@ -466,6 +491,14 @@ export interface BBCommonInterface extends utils.Interface { functionFragment: "minLiquidatorReward()", values?: undefined ): string; + encodeFunctionData( + functionFragment: "minMintFee", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "minMintFee()", + values?: undefined + ): string; encodeFunctionData( functionFragment: "nonces", values: [PromiseOrValue] @@ -595,7 +628,6 @@ export interface BBCommonInterface extends utils.Interface { encodeFunctionData( functionFragment: "setMarketConfig", values: [ - PromiseOrValue, PromiseOrValue, PromiseOrValue, PromiseOrValue, @@ -610,9 +642,8 @@ export interface BBCommonInterface extends utils.Interface { ] ): string; encodeFunctionData( - functionFragment: "setMarketConfig(uint256,address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)", + functionFragment: "setMarketConfig(address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)", values: [ - PromiseOrValue, PromiseOrValue, PromiseOrValue, PromiseOrValue, @@ -781,17 +812,25 @@ export interface BBCommonInterface extends utils.Interface { decodeFunctionResult(functionFragment: "asset()", data: BytesLike): Result; decodeFunctionResult(functionFragment: "assetId", data: BytesLike): Result; decodeFunctionResult(functionFragment: "assetId()", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "balanceOf", data: BytesLike): Result; decodeFunctionResult( - functionFragment: "balanceOf(address)", + functionFragment: "assetOracle", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "assetOracle()", data: BytesLike ): Result; decodeFunctionResult( - functionFragment: "borrowOpeningFee", + functionFragment: "assetOracleData", data: BytesLike ): Result; decodeFunctionResult( - functionFragment: "borrowOpeningFee()", + functionFragment: "assetOracleData()", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "balanceOf", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "balanceOf(address)", data: BytesLike ): Result; decodeFunctionResult(functionFragment: "callerFee", data: BytesLike): Result; @@ -948,6 +987,11 @@ export interface BBCommonInterface extends utils.Interface { functionFragment: "maxLiquidatorReward()", data: BytesLike ): Result; + decodeFunctionResult(functionFragment: "maxMintFee", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "maxMintFee()", + data: BytesLike + ): Result; decodeFunctionResult( functionFragment: "minDebtRate", data: BytesLike @@ -964,6 +1008,11 @@ export interface BBCommonInterface extends utils.Interface { functionFragment: "minLiquidatorReward()", data: BytesLike ): Result; + decodeFunctionResult(functionFragment: "minMintFee", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "minMintFee()", + data: BytesLike + ): Result; decodeFunctionResult(functionFragment: "nonces", data: BytesLike): Result; decodeFunctionResult( functionFragment: "nonces(address)", @@ -1054,7 +1103,7 @@ export interface BBCommonInterface extends utils.Interface { data: BytesLike ): Result; decodeFunctionResult( - functionFragment: "setMarketConfig(uint256,address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)", + functionFragment: "setMarketConfig(address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)", data: BytesLike ): Result; decodeFunctionResult( @@ -1148,6 +1197,8 @@ export interface BBCommonInterface extends utils.Interface { events: { "Approval(address,address,uint256)": EventFragment; "ApprovalBorrow(address,address,uint256)": EventFragment; + "AssetOracleDataUpdated()": EventFragment; + "AssetOracleUpdated(address,address)": EventFragment; "ConservatorUpdated(address,address)": EventFragment; "DebtRateAgainstEthUpdated(uint256,uint256)": EventFragment; "ExchangeRateDurationUpdated(uint256,uint256)": EventFragment; @@ -1157,7 +1208,6 @@ export interface BBCommonInterface extends utils.Interface { "LogAddCollateral(address,address,uint256)": EventFragment; "LogBorrow(address,address,uint256,uint256,uint256)": EventFragment; "LogBorrowCapUpdated(uint256,uint256)": EventFragment; - "LogBorrowingFee(uint256,uint256)": EventFragment; "LogExchangeRate(uint256)": EventFragment; "LogRemoveCollateral(address,address,uint256)": EventFragment; "LogRepay(address,address,uint256,uint256)": EventFragment; @@ -1168,6 +1218,7 @@ export interface BBCommonInterface extends utils.Interface { "OwnershipTransferred(address,address)": EventFragment; "PausedUpdated(uint8,bool,bool)": EventFragment; "Transfer(address,address,uint256)": EventFragment; + "UpdateMinMaxMintFee(uint256,uint256,uint256,uint256)": EventFragment; }; getEvent(nameOrSignatureOrTopic: "Approval"): EventFragment; @@ -1178,6 +1229,12 @@ export interface BBCommonInterface extends utils.Interface { getEvent( nameOrSignatureOrTopic: "ApprovalBorrow(address,address,uint256)" ): EventFragment; + getEvent(nameOrSignatureOrTopic: "AssetOracleDataUpdated"): EventFragment; + getEvent(nameOrSignatureOrTopic: "AssetOracleDataUpdated()"): EventFragment; + getEvent(nameOrSignatureOrTopic: "AssetOracleUpdated"): EventFragment; + getEvent( + nameOrSignatureOrTopic: "AssetOracleUpdated(address,address)" + ): EventFragment; getEvent(nameOrSignatureOrTopic: "ConservatorUpdated"): EventFragment; getEvent( nameOrSignatureOrTopic: "ConservatorUpdated(address,address)" @@ -1216,10 +1273,6 @@ export interface BBCommonInterface extends utils.Interface { getEvent( nameOrSignatureOrTopic: "LogBorrowCapUpdated(uint256,uint256)" ): EventFragment; - getEvent(nameOrSignatureOrTopic: "LogBorrowingFee"): EventFragment; - getEvent( - nameOrSignatureOrTopic: "LogBorrowingFee(uint256,uint256)" - ): EventFragment; getEvent(nameOrSignatureOrTopic: "LogExchangeRate"): EventFragment; getEvent(nameOrSignatureOrTopic: "LogExchangeRate(uint256)"): EventFragment; getEvent(nameOrSignatureOrTopic: "LogRemoveCollateral"): EventFragment; @@ -1254,6 +1307,10 @@ export interface BBCommonInterface extends utils.Interface { getEvent( nameOrSignatureOrTopic: "Transfer(address,address,uint256)" ): EventFragment; + getEvent(nameOrSignatureOrTopic: "UpdateMinMaxMintFee"): EventFragment; + getEvent( + nameOrSignatureOrTopic: "UpdateMinMaxMintFee(uint256,uint256,uint256,uint256)" + ): EventFragment; } export interface ApprovalEventObject { @@ -1280,6 +1337,27 @@ export type ApprovalBorrowEvent = TypedEvent< export type ApprovalBorrowEventFilter = TypedEventFilter; +export interface AssetOracleDataUpdatedEventObject {} +export type AssetOracleDataUpdatedEvent = TypedEvent< + [], + AssetOracleDataUpdatedEventObject +>; + +export type AssetOracleDataUpdatedEventFilter = + TypedEventFilter; + +export interface AssetOracleUpdatedEventObject { + _oldVal: string; + _newVal: string; +} +export type AssetOracleUpdatedEvent = TypedEvent< + [string, string], + AssetOracleUpdatedEventObject +>; + +export type AssetOracleUpdatedEventFilter = + TypedEventFilter; + export interface ConservatorUpdatedEventObject { old: string; _new: string; @@ -1393,17 +1471,6 @@ export type LogBorrowCapUpdatedEvent = TypedEvent< export type LogBorrowCapUpdatedEventFilter = TypedEventFilter; -export interface LogBorrowingFeeEventObject { - _oldVal: BigNumber; - _newVal: BigNumber; -} -export type LogBorrowingFeeEvent = TypedEvent< - [BigNumber, BigNumber], - LogBorrowingFeeEventObject ->; - -export type LogBorrowingFeeEventFilter = TypedEventFilter; - export interface LogExchangeRateEventObject { rate: BigNumber; } @@ -1514,6 +1581,20 @@ export type TransferEvent = TypedEvent< export type TransferEventFilter = TypedEventFilter; +export interface UpdateMinMaxMintFeeEventObject { + oldMin: BigNumber; + newMin: BigNumber; + oldMax: BigNumber; + newMax: BigNumber; +} +export type UpdateMinMaxMintFeeEvent = TypedEvent< + [BigNumber, BigNumber, BigNumber, BigNumber], + UpdateMinMaxMintFeeEventObject +>; + +export type UpdateMinMaxMintFeeEventFilter = + TypedEventFilter; + export interface BBCommon extends BaseContract { contractName: "BBCommon"; @@ -1623,6 +1704,14 @@ export interface BBCommon extends BaseContract { "assetId()"(overrides?: CallOverrides): Promise<[BigNumber]>; + assetOracle(overrides?: CallOverrides): Promise<[string]>; + + "assetOracle()"(overrides?: CallOverrides): Promise<[string]>; + + assetOracleData(overrides?: CallOverrides): Promise<[string]>; + + "assetOracleData()"(overrides?: CallOverrides): Promise<[string]>; + balanceOf( arg0: PromiseOrValue, overrides?: CallOverrides @@ -1633,10 +1722,6 @@ export interface BBCommon extends BaseContract { overrides?: CallOverrides ): Promise<[BigNumber]>; - borrowOpeningFee(overrides?: CallOverrides): Promise<[BigNumber]>; - - "borrowOpeningFee()"(overrides?: CallOverrides): Promise<[BigNumber]>; - callerFee(overrides?: CallOverrides): Promise<[BigNumber]>; "callerFee()"(overrides?: CallOverrides): Promise<[BigNumber]>; @@ -1765,6 +1850,10 @@ export interface BBCommon extends BaseContract { "maxLiquidatorReward()"(overrides?: CallOverrides): Promise<[BigNumber]>; + maxMintFee(overrides?: CallOverrides): Promise<[BigNumber]>; + + "maxMintFee()"(overrides?: CallOverrides): Promise<[BigNumber]>; + minDebtRate(overrides?: CallOverrides): Promise<[BigNumber]>; "minDebtRate()"(overrides?: CallOverrides): Promise<[BigNumber]>; @@ -1773,6 +1862,10 @@ export interface BBCommon extends BaseContract { "minLiquidatorReward()"(overrides?: CallOverrides): Promise<[BigNumber]>; + minMintFee(overrides?: CallOverrides): Promise<[BigNumber]>; + + "minMintFee()"(overrides?: CallOverrides): Promise<[BigNumber]>; + nonces( owner: PromiseOrValue, overrides?: CallOverrides @@ -1892,7 +1985,6 @@ export interface BBCommon extends BaseContract { "rateValidDuration()"(overrides?: CallOverrides): Promise<[BigNumber]>; setMarketConfig( - _borrowOpeningFee: PromiseOrValue, _oracle: PromiseOrValue, _oracleData: PromiseOrValue, _conservator: PromiseOrValue, @@ -1907,8 +1999,7 @@ export interface BBCommon extends BaseContract { overrides?: Overrides & { from?: PromiseOrValue } ): Promise; - "setMarketConfig(uint256,address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)"( - _borrowOpeningFee: PromiseOrValue, + "setMarketConfig(address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)"( _oracle: PromiseOrValue, _oracleData: PromiseOrValue, _conservator: PromiseOrValue, @@ -2112,6 +2203,14 @@ export interface BBCommon extends BaseContract { "assetId()"(overrides?: CallOverrides): Promise; + assetOracle(overrides?: CallOverrides): Promise; + + "assetOracle()"(overrides?: CallOverrides): Promise; + + assetOracleData(overrides?: CallOverrides): Promise; + + "assetOracleData()"(overrides?: CallOverrides): Promise; + balanceOf( arg0: PromiseOrValue, overrides?: CallOverrides @@ -2122,10 +2221,6 @@ export interface BBCommon extends BaseContract { overrides?: CallOverrides ): Promise; - borrowOpeningFee(overrides?: CallOverrides): Promise; - - "borrowOpeningFee()"(overrides?: CallOverrides): Promise; - callerFee(overrides?: CallOverrides): Promise; "callerFee()"(overrides?: CallOverrides): Promise; @@ -2252,6 +2347,10 @@ export interface BBCommon extends BaseContract { "maxLiquidatorReward()"(overrides?: CallOverrides): Promise; + maxMintFee(overrides?: CallOverrides): Promise; + + "maxMintFee()"(overrides?: CallOverrides): Promise; + minDebtRate(overrides?: CallOverrides): Promise; "minDebtRate()"(overrides?: CallOverrides): Promise; @@ -2260,6 +2359,10 @@ export interface BBCommon extends BaseContract { "minLiquidatorReward()"(overrides?: CallOverrides): Promise; + minMintFee(overrides?: CallOverrides): Promise; + + "minMintFee()"(overrides?: CallOverrides): Promise; + nonces( owner: PromiseOrValue, overrides?: CallOverrides @@ -2379,7 +2482,6 @@ export interface BBCommon extends BaseContract { "rateValidDuration()"(overrides?: CallOverrides): Promise; setMarketConfig( - _borrowOpeningFee: PromiseOrValue, _oracle: PromiseOrValue, _oracleData: PromiseOrValue, _conservator: PromiseOrValue, @@ -2394,8 +2496,7 @@ export interface BBCommon extends BaseContract { overrides?: Overrides & { from?: PromiseOrValue } ): Promise; - "setMarketConfig(uint256,address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)"( - _borrowOpeningFee: PromiseOrValue, + "setMarketConfig(address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)"( _oracle: PromiseOrValue, _oracleData: PromiseOrValue, _conservator: PromiseOrValue, @@ -2591,6 +2692,14 @@ export interface BBCommon extends BaseContract { "assetId()"(overrides?: CallOverrides): Promise; + assetOracle(overrides?: CallOverrides): Promise; + + "assetOracle()"(overrides?: CallOverrides): Promise; + + assetOracleData(overrides?: CallOverrides): Promise; + + "assetOracleData()"(overrides?: CallOverrides): Promise; + balanceOf( arg0: PromiseOrValue, overrides?: CallOverrides @@ -2601,10 +2710,6 @@ export interface BBCommon extends BaseContract { overrides?: CallOverrides ): Promise; - borrowOpeningFee(overrides?: CallOverrides): Promise; - - "borrowOpeningFee()"(overrides?: CallOverrides): Promise; - callerFee(overrides?: CallOverrides): Promise; "callerFee()"(overrides?: CallOverrides): Promise; @@ -2727,6 +2832,10 @@ export interface BBCommon extends BaseContract { "maxLiquidatorReward()"(overrides?: CallOverrides): Promise; + maxMintFee(overrides?: CallOverrides): Promise; + + "maxMintFee()"(overrides?: CallOverrides): Promise; + minDebtRate(overrides?: CallOverrides): Promise; "minDebtRate()"(overrides?: CallOverrides): Promise; @@ -2735,6 +2844,10 @@ export interface BBCommon extends BaseContract { "minLiquidatorReward()"(overrides?: CallOverrides): Promise; + minMintFee(overrides?: CallOverrides): Promise; + + "minMintFee()"(overrides?: CallOverrides): Promise; + nonces( owner: PromiseOrValue, overrides?: CallOverrides @@ -2854,7 +2967,6 @@ export interface BBCommon extends BaseContract { "rateValidDuration()"(overrides?: CallOverrides): Promise; setMarketConfig( - _borrowOpeningFee: PromiseOrValue, _oracle: PromiseOrValue, _oracleData: PromiseOrValue, _conservator: PromiseOrValue, @@ -2869,8 +2981,7 @@ export interface BBCommon extends BaseContract { overrides?: CallOverrides ): Promise; - "setMarketConfig(uint256,address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)"( - _borrowOpeningFee: PromiseOrValue, + "setMarketConfig(address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)"( _oracle: PromiseOrValue, _oracleData: PromiseOrValue, _conservator: PromiseOrValue, @@ -3017,6 +3128,18 @@ export interface BBCommon extends BaseContract { value?: PromiseOrValue | null ): ApprovalBorrowEventFilter; + "AssetOracleDataUpdated()"(): AssetOracleDataUpdatedEventFilter; + AssetOracleDataUpdated(): AssetOracleDataUpdatedEventFilter; + + "AssetOracleUpdated(address,address)"( + _oldVal?: PromiseOrValue | null, + _newVal?: PromiseOrValue | null + ): AssetOracleUpdatedEventFilter; + AssetOracleUpdated( + _oldVal?: PromiseOrValue | null, + _newVal?: PromiseOrValue | null + ): AssetOracleUpdatedEventFilter; + "ConservatorUpdated(address,address)"( old?: PromiseOrValue | null, _new?: PromiseOrValue | null @@ -3114,15 +3237,6 @@ export interface BBCommon extends BaseContract { _newVal?: PromiseOrValue | null ): LogBorrowCapUpdatedEventFilter; - "LogBorrowingFee(uint256,uint256)"( - _oldVal?: PromiseOrValue | null, - _newVal?: PromiseOrValue | null - ): LogBorrowingFeeEventFilter; - LogBorrowingFee( - _oldVal?: PromiseOrValue | null, - _newVal?: PromiseOrValue | null - ): LogBorrowingFeeEventFilter; - "LogExchangeRate(uint256)"( rate?: PromiseOrValue | null ): LogExchangeRateEventFilter; @@ -3208,6 +3322,19 @@ export interface BBCommon extends BaseContract { to?: PromiseOrValue | null, value?: null ): TransferEventFilter; + + "UpdateMinMaxMintFee(uint256,uint256,uint256,uint256)"( + oldMin?: PromiseOrValue | null, + newMin?: PromiseOrValue | null, + oldMax?: PromiseOrValue | null, + newMax?: null + ): UpdateMinMaxMintFeeEventFilter; + UpdateMinMaxMintFee( + oldMin?: PromiseOrValue | null, + newMin?: PromiseOrValue | null, + oldMax?: PromiseOrValue | null, + newMax?: null + ): UpdateMinMaxMintFeeEventFilter; }; estimateGas: { @@ -3283,6 +3410,14 @@ export interface BBCommon extends BaseContract { "assetId()"(overrides?: CallOverrides): Promise; + assetOracle(overrides?: CallOverrides): Promise; + + "assetOracle()"(overrides?: CallOverrides): Promise; + + assetOracleData(overrides?: CallOverrides): Promise; + + "assetOracleData()"(overrides?: CallOverrides): Promise; + balanceOf( arg0: PromiseOrValue, overrides?: CallOverrides @@ -3293,10 +3428,6 @@ export interface BBCommon extends BaseContract { overrides?: CallOverrides ): Promise; - borrowOpeningFee(overrides?: CallOverrides): Promise; - - "borrowOpeningFee()"(overrides?: CallOverrides): Promise; - callerFee(overrides?: CallOverrides): Promise; "callerFee()"(overrides?: CallOverrides): Promise; @@ -3411,6 +3542,10 @@ export interface BBCommon extends BaseContract { "maxLiquidatorReward()"(overrides?: CallOverrides): Promise; + maxMintFee(overrides?: CallOverrides): Promise; + + "maxMintFee()"(overrides?: CallOverrides): Promise; + minDebtRate(overrides?: CallOverrides): Promise; "minDebtRate()"(overrides?: CallOverrides): Promise; @@ -3419,6 +3554,10 @@ export interface BBCommon extends BaseContract { "minLiquidatorReward()"(overrides?: CallOverrides): Promise; + minMintFee(overrides?: CallOverrides): Promise; + + "minMintFee()"(overrides?: CallOverrides): Promise; + nonces( owner: PromiseOrValue, overrides?: CallOverrides @@ -3538,7 +3677,6 @@ export interface BBCommon extends BaseContract { "rateValidDuration()"(overrides?: CallOverrides): Promise; setMarketConfig( - _borrowOpeningFee: PromiseOrValue, _oracle: PromiseOrValue, _oracleData: PromiseOrValue, _conservator: PromiseOrValue, @@ -3553,8 +3691,7 @@ export interface BBCommon extends BaseContract { overrides?: Overrides & { from?: PromiseOrValue } ): Promise; - "setMarketConfig(uint256,address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)"( - _borrowOpeningFee: PromiseOrValue, + "setMarketConfig(address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)"( _oracle: PromiseOrValue, _oracleData: PromiseOrValue, _conservator: PromiseOrValue, @@ -3745,19 +3882,23 @@ export interface BBCommon extends BaseContract { "assetId()"(overrides?: CallOverrides): Promise; - balanceOf( - arg0: PromiseOrValue, + assetOracle(overrides?: CallOverrides): Promise; + + "assetOracle()"(overrides?: CallOverrides): Promise; + + assetOracleData(overrides?: CallOverrides): Promise; + + "assetOracleData()"( overrides?: CallOverrides ): Promise; - "balanceOf(address)"( + balanceOf( arg0: PromiseOrValue, overrides?: CallOverrides ): Promise; - borrowOpeningFee(overrides?: CallOverrides): Promise; - - "borrowOpeningFee()"( + "balanceOf(address)"( + arg0: PromiseOrValue, overrides?: CallOverrides ): Promise; @@ -3897,6 +4038,10 @@ export interface BBCommon extends BaseContract { overrides?: CallOverrides ): Promise; + maxMintFee(overrides?: CallOverrides): Promise; + + "maxMintFee()"(overrides?: CallOverrides): Promise; + minDebtRate(overrides?: CallOverrides): Promise; "minDebtRate()"(overrides?: CallOverrides): Promise; @@ -3909,6 +4054,10 @@ export interface BBCommon extends BaseContract { overrides?: CallOverrides ): Promise; + minMintFee(overrides?: CallOverrides): Promise; + + "minMintFee()"(overrides?: CallOverrides): Promise; + nonces( owner: PromiseOrValue, overrides?: CallOverrides @@ -4030,7 +4179,6 @@ export interface BBCommon extends BaseContract { ): Promise; setMarketConfig( - _borrowOpeningFee: PromiseOrValue, _oracle: PromiseOrValue, _oracleData: PromiseOrValue, _conservator: PromiseOrValue, @@ -4045,8 +4193,7 @@ export interface BBCommon extends BaseContract { overrides?: Overrides & { from?: PromiseOrValue } ): Promise; - "setMarketConfig(uint256,address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)"( - _borrowOpeningFee: PromiseOrValue, + "setMarketConfig(address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)"( _oracle: PromiseOrValue, _oracleData: PromiseOrValue, _conservator: PromiseOrValue, diff --git a/src/typechain/tapioca-bar/markets/bigBang/BBLendingCommon.ts b/src/typechain/tapioca-bar/markets/bigBang/BBLendingCommon.ts index 19091270..7e9edf28 100644 --- a/src/typechain/tapioca-bar/markets/bigBang/BBLendingCommon.ts +++ b/src/typechain/tapioca-bar/markets/bigBang/BBLendingCommon.ts @@ -38,8 +38,9 @@ export interface BBLendingCommonInterface extends utils.Interface { "approveBorrow(address,uint256)": FunctionFragment; "asset()": FunctionFragment; "assetId()": FunctionFragment; + "assetOracle()": FunctionFragment; + "assetOracleData()": FunctionFragment; "balanceOf(address)": FunctionFragment; - "borrowOpeningFee()": FunctionFragment; "callerFee()": FunctionFragment; "claimOwnership()": FunctionFragment; "collateral()": FunctionFragment; @@ -60,8 +61,10 @@ export interface BBLendingCommonInterface extends utils.Interface { "liquidationMultiplier()": FunctionFragment; "maxDebtRate()": FunctionFragment; "maxLiquidatorReward()": FunctionFragment; + "maxMintFee()": FunctionFragment; "minDebtRate()": FunctionFragment; "minLiquidatorReward()": FunctionFragment; + "minMintFee()": FunctionFragment; "nonces(address)": FunctionFragment; "openingFees(address)": FunctionFragment; "oracle()": FunctionFragment; @@ -76,7 +79,7 @@ export interface BBLendingCommonInterface extends utils.Interface { "protocolFee()": FunctionFragment; "rateTimestamp()": FunctionFragment; "rateValidDuration()": FunctionFragment; - "setMarketConfig(uint256,address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)": FunctionFragment; + "setMarketConfig(address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)": FunctionFragment; "totalBorrow()": FunctionFragment; "totalBorrowCap()": FunctionFragment; "totalCollateralShare()": FunctionFragment; @@ -111,10 +114,12 @@ export interface BBLendingCommonInterface extends utils.Interface { | "asset()" | "assetId" | "assetId()" + | "assetOracle" + | "assetOracle()" + | "assetOracleData" + | "assetOracleData()" | "balanceOf" | "balanceOf(address)" - | "borrowOpeningFee" - | "borrowOpeningFee()" | "callerFee" | "callerFee()" | "claimOwnership" @@ -155,10 +160,14 @@ export interface BBLendingCommonInterface extends utils.Interface { | "maxDebtRate()" | "maxLiquidatorReward" | "maxLiquidatorReward()" + | "maxMintFee" + | "maxMintFee()" | "minDebtRate" | "minDebtRate()" | "minLiquidatorReward" | "minLiquidatorReward()" + | "minMintFee" + | "minMintFee()" | "nonces" | "nonces(address)" | "openingFees" @@ -188,7 +197,7 @@ export interface BBLendingCommonInterface extends utils.Interface { | "rateValidDuration" | "rateValidDuration()" | "setMarketConfig" - | "setMarketConfig(uint256,address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)" + | "setMarketConfig(address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)" | "totalBorrow" | "totalBorrow()" | "totalBorrowCap" @@ -270,21 +279,29 @@ export interface BBLendingCommonInterface extends utils.Interface { encodeFunctionData(functionFragment: "assetId", values?: undefined): string; encodeFunctionData(functionFragment: "assetId()", values?: undefined): string; encodeFunctionData( - functionFragment: "balanceOf", - values: [PromiseOrValue] + functionFragment: "assetOracle", + values?: undefined ): string; encodeFunctionData( - functionFragment: "balanceOf(address)", - values: [PromiseOrValue] + functionFragment: "assetOracle()", + values?: undefined ): string; encodeFunctionData( - functionFragment: "borrowOpeningFee", + functionFragment: "assetOracleData", values?: undefined ): string; encodeFunctionData( - functionFragment: "borrowOpeningFee()", + functionFragment: "assetOracleData()", values?: undefined ): string; + encodeFunctionData( + functionFragment: "balanceOf", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "balanceOf(address)", + values: [PromiseOrValue] + ): string; encodeFunctionData(functionFragment: "callerFee", values?: undefined): string; encodeFunctionData( functionFragment: "callerFee()", @@ -450,6 +467,14 @@ export interface BBLendingCommonInterface extends utils.Interface { functionFragment: "maxLiquidatorReward()", values?: undefined ): string; + encodeFunctionData( + functionFragment: "maxMintFee", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "maxMintFee()", + values?: undefined + ): string; encodeFunctionData( functionFragment: "minDebtRate", values?: undefined @@ -466,6 +491,14 @@ export interface BBLendingCommonInterface extends utils.Interface { functionFragment: "minLiquidatorReward()", values?: undefined ): string; + encodeFunctionData( + functionFragment: "minMintFee", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "minMintFee()", + values?: undefined + ): string; encodeFunctionData( functionFragment: "nonces", values: [PromiseOrValue] @@ -595,7 +628,6 @@ export interface BBLendingCommonInterface extends utils.Interface { encodeFunctionData( functionFragment: "setMarketConfig", values: [ - PromiseOrValue, PromiseOrValue, PromiseOrValue, PromiseOrValue, @@ -610,9 +642,8 @@ export interface BBLendingCommonInterface extends utils.Interface { ] ): string; encodeFunctionData( - functionFragment: "setMarketConfig(uint256,address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)", + functionFragment: "setMarketConfig(address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)", values: [ - PromiseOrValue, PromiseOrValue, PromiseOrValue, PromiseOrValue, @@ -781,17 +812,25 @@ export interface BBLendingCommonInterface extends utils.Interface { decodeFunctionResult(functionFragment: "asset()", data: BytesLike): Result; decodeFunctionResult(functionFragment: "assetId", data: BytesLike): Result; decodeFunctionResult(functionFragment: "assetId()", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "balanceOf", data: BytesLike): Result; decodeFunctionResult( - functionFragment: "balanceOf(address)", + functionFragment: "assetOracle", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "assetOracle()", data: BytesLike ): Result; decodeFunctionResult( - functionFragment: "borrowOpeningFee", + functionFragment: "assetOracleData", data: BytesLike ): Result; decodeFunctionResult( - functionFragment: "borrowOpeningFee()", + functionFragment: "assetOracleData()", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "balanceOf", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "balanceOf(address)", data: BytesLike ): Result; decodeFunctionResult(functionFragment: "callerFee", data: BytesLike): Result; @@ -948,6 +987,11 @@ export interface BBLendingCommonInterface extends utils.Interface { functionFragment: "maxLiquidatorReward()", data: BytesLike ): Result; + decodeFunctionResult(functionFragment: "maxMintFee", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "maxMintFee()", + data: BytesLike + ): Result; decodeFunctionResult( functionFragment: "minDebtRate", data: BytesLike @@ -964,6 +1008,11 @@ export interface BBLendingCommonInterface extends utils.Interface { functionFragment: "minLiquidatorReward()", data: BytesLike ): Result; + decodeFunctionResult(functionFragment: "minMintFee", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "minMintFee()", + data: BytesLike + ): Result; decodeFunctionResult(functionFragment: "nonces", data: BytesLike): Result; decodeFunctionResult( functionFragment: "nonces(address)", @@ -1054,7 +1103,7 @@ export interface BBLendingCommonInterface extends utils.Interface { data: BytesLike ): Result; decodeFunctionResult( - functionFragment: "setMarketConfig(uint256,address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)", + functionFragment: "setMarketConfig(address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)", data: BytesLike ): Result; decodeFunctionResult( @@ -1148,6 +1197,8 @@ export interface BBLendingCommonInterface extends utils.Interface { events: { "Approval(address,address,uint256)": EventFragment; "ApprovalBorrow(address,address,uint256)": EventFragment; + "AssetOracleDataUpdated()": EventFragment; + "AssetOracleUpdated(address,address)": EventFragment; "ConservatorUpdated(address,address)": EventFragment; "DebtRateAgainstEthUpdated(uint256,uint256)": EventFragment; "ExchangeRateDurationUpdated(uint256,uint256)": EventFragment; @@ -1157,7 +1208,6 @@ export interface BBLendingCommonInterface extends utils.Interface { "LogAddCollateral(address,address,uint256)": EventFragment; "LogBorrow(address,address,uint256,uint256,uint256)": EventFragment; "LogBorrowCapUpdated(uint256,uint256)": EventFragment; - "LogBorrowingFee(uint256,uint256)": EventFragment; "LogExchangeRate(uint256)": EventFragment; "LogRemoveCollateral(address,address,uint256)": EventFragment; "LogRepay(address,address,uint256,uint256)": EventFragment; @@ -1168,6 +1218,7 @@ export interface BBLendingCommonInterface extends utils.Interface { "OwnershipTransferred(address,address)": EventFragment; "PausedUpdated(uint8,bool,bool)": EventFragment; "Transfer(address,address,uint256)": EventFragment; + "UpdateMinMaxMintFee(uint256,uint256,uint256,uint256)": EventFragment; }; getEvent(nameOrSignatureOrTopic: "Approval"): EventFragment; @@ -1178,6 +1229,12 @@ export interface BBLendingCommonInterface extends utils.Interface { getEvent( nameOrSignatureOrTopic: "ApprovalBorrow(address,address,uint256)" ): EventFragment; + getEvent(nameOrSignatureOrTopic: "AssetOracleDataUpdated"): EventFragment; + getEvent(nameOrSignatureOrTopic: "AssetOracleDataUpdated()"): EventFragment; + getEvent(nameOrSignatureOrTopic: "AssetOracleUpdated"): EventFragment; + getEvent( + nameOrSignatureOrTopic: "AssetOracleUpdated(address,address)" + ): EventFragment; getEvent(nameOrSignatureOrTopic: "ConservatorUpdated"): EventFragment; getEvent( nameOrSignatureOrTopic: "ConservatorUpdated(address,address)" @@ -1216,10 +1273,6 @@ export interface BBLendingCommonInterface extends utils.Interface { getEvent( nameOrSignatureOrTopic: "LogBorrowCapUpdated(uint256,uint256)" ): EventFragment; - getEvent(nameOrSignatureOrTopic: "LogBorrowingFee"): EventFragment; - getEvent( - nameOrSignatureOrTopic: "LogBorrowingFee(uint256,uint256)" - ): EventFragment; getEvent(nameOrSignatureOrTopic: "LogExchangeRate"): EventFragment; getEvent(nameOrSignatureOrTopic: "LogExchangeRate(uint256)"): EventFragment; getEvent(nameOrSignatureOrTopic: "LogRemoveCollateral"): EventFragment; @@ -1254,6 +1307,10 @@ export interface BBLendingCommonInterface extends utils.Interface { getEvent( nameOrSignatureOrTopic: "Transfer(address,address,uint256)" ): EventFragment; + getEvent(nameOrSignatureOrTopic: "UpdateMinMaxMintFee"): EventFragment; + getEvent( + nameOrSignatureOrTopic: "UpdateMinMaxMintFee(uint256,uint256,uint256,uint256)" + ): EventFragment; } export interface ApprovalEventObject { @@ -1280,6 +1337,27 @@ export type ApprovalBorrowEvent = TypedEvent< export type ApprovalBorrowEventFilter = TypedEventFilter; +export interface AssetOracleDataUpdatedEventObject {} +export type AssetOracleDataUpdatedEvent = TypedEvent< + [], + AssetOracleDataUpdatedEventObject +>; + +export type AssetOracleDataUpdatedEventFilter = + TypedEventFilter; + +export interface AssetOracleUpdatedEventObject { + _oldVal: string; + _newVal: string; +} +export type AssetOracleUpdatedEvent = TypedEvent< + [string, string], + AssetOracleUpdatedEventObject +>; + +export type AssetOracleUpdatedEventFilter = + TypedEventFilter; + export interface ConservatorUpdatedEventObject { old: string; _new: string; @@ -1393,17 +1471,6 @@ export type LogBorrowCapUpdatedEvent = TypedEvent< export type LogBorrowCapUpdatedEventFilter = TypedEventFilter; -export interface LogBorrowingFeeEventObject { - _oldVal: BigNumber; - _newVal: BigNumber; -} -export type LogBorrowingFeeEvent = TypedEvent< - [BigNumber, BigNumber], - LogBorrowingFeeEventObject ->; - -export type LogBorrowingFeeEventFilter = TypedEventFilter; - export interface LogExchangeRateEventObject { rate: BigNumber; } @@ -1514,6 +1581,20 @@ export type TransferEvent = TypedEvent< export type TransferEventFilter = TypedEventFilter; +export interface UpdateMinMaxMintFeeEventObject { + oldMin: BigNumber; + newMin: BigNumber; + oldMax: BigNumber; + newMax: BigNumber; +} +export type UpdateMinMaxMintFeeEvent = TypedEvent< + [BigNumber, BigNumber, BigNumber, BigNumber], + UpdateMinMaxMintFeeEventObject +>; + +export type UpdateMinMaxMintFeeEventFilter = + TypedEventFilter; + export interface BBLendingCommon extends BaseContract { contractName: "BBLendingCommon"; @@ -1623,6 +1704,14 @@ export interface BBLendingCommon extends BaseContract { "assetId()"(overrides?: CallOverrides): Promise<[BigNumber]>; + assetOracle(overrides?: CallOverrides): Promise<[string]>; + + "assetOracle()"(overrides?: CallOverrides): Promise<[string]>; + + assetOracleData(overrides?: CallOverrides): Promise<[string]>; + + "assetOracleData()"(overrides?: CallOverrides): Promise<[string]>; + balanceOf( arg0: PromiseOrValue, overrides?: CallOverrides @@ -1633,10 +1722,6 @@ export interface BBLendingCommon extends BaseContract { overrides?: CallOverrides ): Promise<[BigNumber]>; - borrowOpeningFee(overrides?: CallOverrides): Promise<[BigNumber]>; - - "borrowOpeningFee()"(overrides?: CallOverrides): Promise<[BigNumber]>; - callerFee(overrides?: CallOverrides): Promise<[BigNumber]>; "callerFee()"(overrides?: CallOverrides): Promise<[BigNumber]>; @@ -1765,6 +1850,10 @@ export interface BBLendingCommon extends BaseContract { "maxLiquidatorReward()"(overrides?: CallOverrides): Promise<[BigNumber]>; + maxMintFee(overrides?: CallOverrides): Promise<[BigNumber]>; + + "maxMintFee()"(overrides?: CallOverrides): Promise<[BigNumber]>; + minDebtRate(overrides?: CallOverrides): Promise<[BigNumber]>; "minDebtRate()"(overrides?: CallOverrides): Promise<[BigNumber]>; @@ -1773,6 +1862,10 @@ export interface BBLendingCommon extends BaseContract { "minLiquidatorReward()"(overrides?: CallOverrides): Promise<[BigNumber]>; + minMintFee(overrides?: CallOverrides): Promise<[BigNumber]>; + + "minMintFee()"(overrides?: CallOverrides): Promise<[BigNumber]>; + nonces( owner: PromiseOrValue, overrides?: CallOverrides @@ -1892,7 +1985,6 @@ export interface BBLendingCommon extends BaseContract { "rateValidDuration()"(overrides?: CallOverrides): Promise<[BigNumber]>; setMarketConfig( - _borrowOpeningFee: PromiseOrValue, _oracle: PromiseOrValue, _oracleData: PromiseOrValue, _conservator: PromiseOrValue, @@ -1907,8 +1999,7 @@ export interface BBLendingCommon extends BaseContract { overrides?: Overrides & { from?: PromiseOrValue } ): Promise; - "setMarketConfig(uint256,address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)"( - _borrowOpeningFee: PromiseOrValue, + "setMarketConfig(address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)"( _oracle: PromiseOrValue, _oracleData: PromiseOrValue, _conservator: PromiseOrValue, @@ -2112,6 +2203,14 @@ export interface BBLendingCommon extends BaseContract { "assetId()"(overrides?: CallOverrides): Promise; + assetOracle(overrides?: CallOverrides): Promise; + + "assetOracle()"(overrides?: CallOverrides): Promise; + + assetOracleData(overrides?: CallOverrides): Promise; + + "assetOracleData()"(overrides?: CallOverrides): Promise; + balanceOf( arg0: PromiseOrValue, overrides?: CallOverrides @@ -2122,10 +2221,6 @@ export interface BBLendingCommon extends BaseContract { overrides?: CallOverrides ): Promise; - borrowOpeningFee(overrides?: CallOverrides): Promise; - - "borrowOpeningFee()"(overrides?: CallOverrides): Promise; - callerFee(overrides?: CallOverrides): Promise; "callerFee()"(overrides?: CallOverrides): Promise; @@ -2252,6 +2347,10 @@ export interface BBLendingCommon extends BaseContract { "maxLiquidatorReward()"(overrides?: CallOverrides): Promise; + maxMintFee(overrides?: CallOverrides): Promise; + + "maxMintFee()"(overrides?: CallOverrides): Promise; + minDebtRate(overrides?: CallOverrides): Promise; "minDebtRate()"(overrides?: CallOverrides): Promise; @@ -2260,6 +2359,10 @@ export interface BBLendingCommon extends BaseContract { "minLiquidatorReward()"(overrides?: CallOverrides): Promise; + minMintFee(overrides?: CallOverrides): Promise; + + "minMintFee()"(overrides?: CallOverrides): Promise; + nonces( owner: PromiseOrValue, overrides?: CallOverrides @@ -2379,7 +2482,6 @@ export interface BBLendingCommon extends BaseContract { "rateValidDuration()"(overrides?: CallOverrides): Promise; setMarketConfig( - _borrowOpeningFee: PromiseOrValue, _oracle: PromiseOrValue, _oracleData: PromiseOrValue, _conservator: PromiseOrValue, @@ -2394,8 +2496,7 @@ export interface BBLendingCommon extends BaseContract { overrides?: Overrides & { from?: PromiseOrValue } ): Promise; - "setMarketConfig(uint256,address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)"( - _borrowOpeningFee: PromiseOrValue, + "setMarketConfig(address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)"( _oracle: PromiseOrValue, _oracleData: PromiseOrValue, _conservator: PromiseOrValue, @@ -2591,6 +2692,14 @@ export interface BBLendingCommon extends BaseContract { "assetId()"(overrides?: CallOverrides): Promise; + assetOracle(overrides?: CallOverrides): Promise; + + "assetOracle()"(overrides?: CallOverrides): Promise; + + assetOracleData(overrides?: CallOverrides): Promise; + + "assetOracleData()"(overrides?: CallOverrides): Promise; + balanceOf( arg0: PromiseOrValue, overrides?: CallOverrides @@ -2601,10 +2710,6 @@ export interface BBLendingCommon extends BaseContract { overrides?: CallOverrides ): Promise; - borrowOpeningFee(overrides?: CallOverrides): Promise; - - "borrowOpeningFee()"(overrides?: CallOverrides): Promise; - callerFee(overrides?: CallOverrides): Promise; "callerFee()"(overrides?: CallOverrides): Promise; @@ -2727,6 +2832,10 @@ export interface BBLendingCommon extends BaseContract { "maxLiquidatorReward()"(overrides?: CallOverrides): Promise; + maxMintFee(overrides?: CallOverrides): Promise; + + "maxMintFee()"(overrides?: CallOverrides): Promise; + minDebtRate(overrides?: CallOverrides): Promise; "minDebtRate()"(overrides?: CallOverrides): Promise; @@ -2735,6 +2844,10 @@ export interface BBLendingCommon extends BaseContract { "minLiquidatorReward()"(overrides?: CallOverrides): Promise; + minMintFee(overrides?: CallOverrides): Promise; + + "minMintFee()"(overrides?: CallOverrides): Promise; + nonces( owner: PromiseOrValue, overrides?: CallOverrides @@ -2854,7 +2967,6 @@ export interface BBLendingCommon extends BaseContract { "rateValidDuration()"(overrides?: CallOverrides): Promise; setMarketConfig( - _borrowOpeningFee: PromiseOrValue, _oracle: PromiseOrValue, _oracleData: PromiseOrValue, _conservator: PromiseOrValue, @@ -2869,8 +2981,7 @@ export interface BBLendingCommon extends BaseContract { overrides?: CallOverrides ): Promise; - "setMarketConfig(uint256,address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)"( - _borrowOpeningFee: PromiseOrValue, + "setMarketConfig(address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)"( _oracle: PromiseOrValue, _oracleData: PromiseOrValue, _conservator: PromiseOrValue, @@ -3017,6 +3128,18 @@ export interface BBLendingCommon extends BaseContract { value?: PromiseOrValue | null ): ApprovalBorrowEventFilter; + "AssetOracleDataUpdated()"(): AssetOracleDataUpdatedEventFilter; + AssetOracleDataUpdated(): AssetOracleDataUpdatedEventFilter; + + "AssetOracleUpdated(address,address)"( + _oldVal?: PromiseOrValue | null, + _newVal?: PromiseOrValue | null + ): AssetOracleUpdatedEventFilter; + AssetOracleUpdated( + _oldVal?: PromiseOrValue | null, + _newVal?: PromiseOrValue | null + ): AssetOracleUpdatedEventFilter; + "ConservatorUpdated(address,address)"( old?: PromiseOrValue | null, _new?: PromiseOrValue | null @@ -3114,15 +3237,6 @@ export interface BBLendingCommon extends BaseContract { _newVal?: PromiseOrValue | null ): LogBorrowCapUpdatedEventFilter; - "LogBorrowingFee(uint256,uint256)"( - _oldVal?: PromiseOrValue | null, - _newVal?: PromiseOrValue | null - ): LogBorrowingFeeEventFilter; - LogBorrowingFee( - _oldVal?: PromiseOrValue | null, - _newVal?: PromiseOrValue | null - ): LogBorrowingFeeEventFilter; - "LogExchangeRate(uint256)"( rate?: PromiseOrValue | null ): LogExchangeRateEventFilter; @@ -3208,6 +3322,19 @@ export interface BBLendingCommon extends BaseContract { to?: PromiseOrValue | null, value?: null ): TransferEventFilter; + + "UpdateMinMaxMintFee(uint256,uint256,uint256,uint256)"( + oldMin?: PromiseOrValue | null, + newMin?: PromiseOrValue | null, + oldMax?: PromiseOrValue | null, + newMax?: null + ): UpdateMinMaxMintFeeEventFilter; + UpdateMinMaxMintFee( + oldMin?: PromiseOrValue | null, + newMin?: PromiseOrValue | null, + oldMax?: PromiseOrValue | null, + newMax?: null + ): UpdateMinMaxMintFeeEventFilter; }; estimateGas: { @@ -3283,6 +3410,14 @@ export interface BBLendingCommon extends BaseContract { "assetId()"(overrides?: CallOverrides): Promise; + assetOracle(overrides?: CallOverrides): Promise; + + "assetOracle()"(overrides?: CallOverrides): Promise; + + assetOracleData(overrides?: CallOverrides): Promise; + + "assetOracleData()"(overrides?: CallOverrides): Promise; + balanceOf( arg0: PromiseOrValue, overrides?: CallOverrides @@ -3293,10 +3428,6 @@ export interface BBLendingCommon extends BaseContract { overrides?: CallOverrides ): Promise; - borrowOpeningFee(overrides?: CallOverrides): Promise; - - "borrowOpeningFee()"(overrides?: CallOverrides): Promise; - callerFee(overrides?: CallOverrides): Promise; "callerFee()"(overrides?: CallOverrides): Promise; @@ -3411,6 +3542,10 @@ export interface BBLendingCommon extends BaseContract { "maxLiquidatorReward()"(overrides?: CallOverrides): Promise; + maxMintFee(overrides?: CallOverrides): Promise; + + "maxMintFee()"(overrides?: CallOverrides): Promise; + minDebtRate(overrides?: CallOverrides): Promise; "minDebtRate()"(overrides?: CallOverrides): Promise; @@ -3419,6 +3554,10 @@ export interface BBLendingCommon extends BaseContract { "minLiquidatorReward()"(overrides?: CallOverrides): Promise; + minMintFee(overrides?: CallOverrides): Promise; + + "minMintFee()"(overrides?: CallOverrides): Promise; + nonces( owner: PromiseOrValue, overrides?: CallOverrides @@ -3538,7 +3677,6 @@ export interface BBLendingCommon extends BaseContract { "rateValidDuration()"(overrides?: CallOverrides): Promise; setMarketConfig( - _borrowOpeningFee: PromiseOrValue, _oracle: PromiseOrValue, _oracleData: PromiseOrValue, _conservator: PromiseOrValue, @@ -3553,8 +3691,7 @@ export interface BBLendingCommon extends BaseContract { overrides?: Overrides & { from?: PromiseOrValue } ): Promise; - "setMarketConfig(uint256,address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)"( - _borrowOpeningFee: PromiseOrValue, + "setMarketConfig(address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)"( _oracle: PromiseOrValue, _oracleData: PromiseOrValue, _conservator: PromiseOrValue, @@ -3745,19 +3882,23 @@ export interface BBLendingCommon extends BaseContract { "assetId()"(overrides?: CallOverrides): Promise; - balanceOf( - arg0: PromiseOrValue, + assetOracle(overrides?: CallOverrides): Promise; + + "assetOracle()"(overrides?: CallOverrides): Promise; + + assetOracleData(overrides?: CallOverrides): Promise; + + "assetOracleData()"( overrides?: CallOverrides ): Promise; - "balanceOf(address)"( + balanceOf( arg0: PromiseOrValue, overrides?: CallOverrides ): Promise; - borrowOpeningFee(overrides?: CallOverrides): Promise; - - "borrowOpeningFee()"( + "balanceOf(address)"( + arg0: PromiseOrValue, overrides?: CallOverrides ): Promise; @@ -3897,6 +4038,10 @@ export interface BBLendingCommon extends BaseContract { overrides?: CallOverrides ): Promise; + maxMintFee(overrides?: CallOverrides): Promise; + + "maxMintFee()"(overrides?: CallOverrides): Promise; + minDebtRate(overrides?: CallOverrides): Promise; "minDebtRate()"(overrides?: CallOverrides): Promise; @@ -3909,6 +4054,10 @@ export interface BBLendingCommon extends BaseContract { overrides?: CallOverrides ): Promise; + minMintFee(overrides?: CallOverrides): Promise; + + "minMintFee()"(overrides?: CallOverrides): Promise; + nonces( owner: PromiseOrValue, overrides?: CallOverrides @@ -4030,7 +4179,6 @@ export interface BBLendingCommon extends BaseContract { ): Promise; setMarketConfig( - _borrowOpeningFee: PromiseOrValue, _oracle: PromiseOrValue, _oracleData: PromiseOrValue, _conservator: PromiseOrValue, @@ -4045,8 +4193,7 @@ export interface BBLendingCommon extends BaseContract { overrides?: Overrides & { from?: PromiseOrValue } ): Promise; - "setMarketConfig(uint256,address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)"( - _borrowOpeningFee: PromiseOrValue, + "setMarketConfig(address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)"( _oracle: PromiseOrValue, _oracleData: PromiseOrValue, _conservator: PromiseOrValue, diff --git a/src/typechain/tapioca-bar/markets/bigBang/BBLeverage.ts b/src/typechain/tapioca-bar/markets/bigBang/BBLeverage.ts index c926b831..4d91ef90 100644 --- a/src/typechain/tapioca-bar/markets/bigBang/BBLeverage.ts +++ b/src/typechain/tapioca-bar/markets/bigBang/BBLeverage.ts @@ -38,8 +38,9 @@ export interface BBLeverageInterface extends utils.Interface { "approveBorrow(address,uint256)": FunctionFragment; "asset()": FunctionFragment; "assetId()": FunctionFragment; + "assetOracle()": FunctionFragment; + "assetOracleData()": FunctionFragment; "balanceOf(address)": FunctionFragment; - "borrowOpeningFee()": FunctionFragment; "buyCollateral(address,uint256,uint256,uint256,address,bytes)": FunctionFragment; "callerFee()": FunctionFragment; "claimOwnership()": FunctionFragment; @@ -61,8 +62,10 @@ export interface BBLeverageInterface extends utils.Interface { "liquidationMultiplier()": FunctionFragment; "maxDebtRate()": FunctionFragment; "maxLiquidatorReward()": FunctionFragment; + "maxMintFee()": FunctionFragment; "minDebtRate()": FunctionFragment; "minLiquidatorReward()": FunctionFragment; + "minMintFee()": FunctionFragment; "nonces(address)": FunctionFragment; "openingFees(address)": FunctionFragment; "oracle()": FunctionFragment; @@ -78,7 +81,7 @@ export interface BBLeverageInterface extends utils.Interface { "rateTimestamp()": FunctionFragment; "rateValidDuration()": FunctionFragment; "sellCollateral(address,uint256,uint256,address,bytes)": FunctionFragment; - "setMarketConfig(uint256,address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)": FunctionFragment; + "setMarketConfig(address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)": FunctionFragment; "totalBorrow()": FunctionFragment; "totalBorrowCap()": FunctionFragment; "totalCollateralShare()": FunctionFragment; @@ -113,10 +116,12 @@ export interface BBLeverageInterface extends utils.Interface { | "asset()" | "assetId" | "assetId()" + | "assetOracle" + | "assetOracle()" + | "assetOracleData" + | "assetOracleData()" | "balanceOf" | "balanceOf(address)" - | "borrowOpeningFee" - | "borrowOpeningFee()" | "buyCollateral" | "buyCollateral(address,uint256,uint256,uint256,address,bytes)" | "callerFee" @@ -159,10 +164,14 @@ export interface BBLeverageInterface extends utils.Interface { | "maxDebtRate()" | "maxLiquidatorReward" | "maxLiquidatorReward()" + | "maxMintFee" + | "maxMintFee()" | "minDebtRate" | "minDebtRate()" | "minLiquidatorReward" | "minLiquidatorReward()" + | "minMintFee" + | "minMintFee()" | "nonces" | "nonces(address)" | "openingFees" @@ -194,7 +203,7 @@ export interface BBLeverageInterface extends utils.Interface { | "sellCollateral" | "sellCollateral(address,uint256,uint256,address,bytes)" | "setMarketConfig" - | "setMarketConfig(uint256,address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)" + | "setMarketConfig(address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)" | "totalBorrow" | "totalBorrow()" | "totalBorrowCap" @@ -276,21 +285,29 @@ export interface BBLeverageInterface extends utils.Interface { encodeFunctionData(functionFragment: "assetId", values?: undefined): string; encodeFunctionData(functionFragment: "assetId()", values?: undefined): string; encodeFunctionData( - functionFragment: "balanceOf", - values: [PromiseOrValue] + functionFragment: "assetOracle", + values?: undefined ): string; encodeFunctionData( - functionFragment: "balanceOf(address)", - values: [PromiseOrValue] + functionFragment: "assetOracle()", + values?: undefined ): string; encodeFunctionData( - functionFragment: "borrowOpeningFee", + functionFragment: "assetOracleData", values?: undefined ): string; encodeFunctionData( - functionFragment: "borrowOpeningFee()", + functionFragment: "assetOracleData()", values?: undefined ): string; + encodeFunctionData( + functionFragment: "balanceOf", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "balanceOf(address)", + values: [PromiseOrValue] + ): string; encodeFunctionData( functionFragment: "buyCollateral", values: [ @@ -478,6 +495,14 @@ export interface BBLeverageInterface extends utils.Interface { functionFragment: "maxLiquidatorReward()", values?: undefined ): string; + encodeFunctionData( + functionFragment: "maxMintFee", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "maxMintFee()", + values?: undefined + ): string; encodeFunctionData( functionFragment: "minDebtRate", values?: undefined @@ -494,6 +519,14 @@ export interface BBLeverageInterface extends utils.Interface { functionFragment: "minLiquidatorReward()", values?: undefined ): string; + encodeFunctionData( + functionFragment: "minMintFee", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "minMintFee()", + values?: undefined + ): string; encodeFunctionData( functionFragment: "nonces", values: [PromiseOrValue] @@ -643,7 +676,6 @@ export interface BBLeverageInterface extends utils.Interface { encodeFunctionData( functionFragment: "setMarketConfig", values: [ - PromiseOrValue, PromiseOrValue, PromiseOrValue, PromiseOrValue, @@ -658,9 +690,8 @@ export interface BBLeverageInterface extends utils.Interface { ] ): string; encodeFunctionData( - functionFragment: "setMarketConfig(uint256,address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)", + functionFragment: "setMarketConfig(address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)", values: [ - PromiseOrValue, PromiseOrValue, PromiseOrValue, PromiseOrValue, @@ -829,17 +860,25 @@ export interface BBLeverageInterface extends utils.Interface { decodeFunctionResult(functionFragment: "asset()", data: BytesLike): Result; decodeFunctionResult(functionFragment: "assetId", data: BytesLike): Result; decodeFunctionResult(functionFragment: "assetId()", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "balanceOf", data: BytesLike): Result; decodeFunctionResult( - functionFragment: "balanceOf(address)", + functionFragment: "assetOracle", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "assetOracle()", data: BytesLike ): Result; decodeFunctionResult( - functionFragment: "borrowOpeningFee", + functionFragment: "assetOracleData", data: BytesLike ): Result; decodeFunctionResult( - functionFragment: "borrowOpeningFee()", + functionFragment: "assetOracleData()", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "balanceOf", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "balanceOf(address)", data: BytesLike ): Result; decodeFunctionResult( @@ -1004,6 +1043,11 @@ export interface BBLeverageInterface extends utils.Interface { functionFragment: "maxLiquidatorReward()", data: BytesLike ): Result; + decodeFunctionResult(functionFragment: "maxMintFee", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "maxMintFee()", + data: BytesLike + ): Result; decodeFunctionResult( functionFragment: "minDebtRate", data: BytesLike @@ -1020,6 +1064,11 @@ export interface BBLeverageInterface extends utils.Interface { functionFragment: "minLiquidatorReward()", data: BytesLike ): Result; + decodeFunctionResult(functionFragment: "minMintFee", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "minMintFee()", + data: BytesLike + ): Result; decodeFunctionResult(functionFragment: "nonces", data: BytesLike): Result; decodeFunctionResult( functionFragment: "nonces(address)", @@ -1118,7 +1167,7 @@ export interface BBLeverageInterface extends utils.Interface { data: BytesLike ): Result; decodeFunctionResult( - functionFragment: "setMarketConfig(uint256,address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)", + functionFragment: "setMarketConfig(address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)", data: BytesLike ): Result; decodeFunctionResult( @@ -1212,6 +1261,8 @@ export interface BBLeverageInterface extends utils.Interface { events: { "Approval(address,address,uint256)": EventFragment; "ApprovalBorrow(address,address,uint256)": EventFragment; + "AssetOracleDataUpdated()": EventFragment; + "AssetOracleUpdated(address,address)": EventFragment; "ConservatorUpdated(address,address)": EventFragment; "DebtRateAgainstEthUpdated(uint256,uint256)": EventFragment; "ExchangeRateDurationUpdated(uint256,uint256)": EventFragment; @@ -1221,7 +1272,6 @@ export interface BBLeverageInterface extends utils.Interface { "LogAddCollateral(address,address,uint256)": EventFragment; "LogBorrow(address,address,uint256,uint256,uint256)": EventFragment; "LogBorrowCapUpdated(uint256,uint256)": EventFragment; - "LogBorrowingFee(uint256,uint256)": EventFragment; "LogExchangeRate(uint256)": EventFragment; "LogRemoveCollateral(address,address,uint256)": EventFragment; "LogRepay(address,address,uint256,uint256)": EventFragment; @@ -1232,6 +1282,7 @@ export interface BBLeverageInterface extends utils.Interface { "OwnershipTransferred(address,address)": EventFragment; "PausedUpdated(uint8,bool,bool)": EventFragment; "Transfer(address,address,uint256)": EventFragment; + "UpdateMinMaxMintFee(uint256,uint256,uint256,uint256)": EventFragment; }; getEvent(nameOrSignatureOrTopic: "Approval"): EventFragment; @@ -1242,6 +1293,12 @@ export interface BBLeverageInterface extends utils.Interface { getEvent( nameOrSignatureOrTopic: "ApprovalBorrow(address,address,uint256)" ): EventFragment; + getEvent(nameOrSignatureOrTopic: "AssetOracleDataUpdated"): EventFragment; + getEvent(nameOrSignatureOrTopic: "AssetOracleDataUpdated()"): EventFragment; + getEvent(nameOrSignatureOrTopic: "AssetOracleUpdated"): EventFragment; + getEvent( + nameOrSignatureOrTopic: "AssetOracleUpdated(address,address)" + ): EventFragment; getEvent(nameOrSignatureOrTopic: "ConservatorUpdated"): EventFragment; getEvent( nameOrSignatureOrTopic: "ConservatorUpdated(address,address)" @@ -1280,10 +1337,6 @@ export interface BBLeverageInterface extends utils.Interface { getEvent( nameOrSignatureOrTopic: "LogBorrowCapUpdated(uint256,uint256)" ): EventFragment; - getEvent(nameOrSignatureOrTopic: "LogBorrowingFee"): EventFragment; - getEvent( - nameOrSignatureOrTopic: "LogBorrowingFee(uint256,uint256)" - ): EventFragment; getEvent(nameOrSignatureOrTopic: "LogExchangeRate"): EventFragment; getEvent(nameOrSignatureOrTopic: "LogExchangeRate(uint256)"): EventFragment; getEvent(nameOrSignatureOrTopic: "LogRemoveCollateral"): EventFragment; @@ -1318,6 +1371,10 @@ export interface BBLeverageInterface extends utils.Interface { getEvent( nameOrSignatureOrTopic: "Transfer(address,address,uint256)" ): EventFragment; + getEvent(nameOrSignatureOrTopic: "UpdateMinMaxMintFee"): EventFragment; + getEvent( + nameOrSignatureOrTopic: "UpdateMinMaxMintFee(uint256,uint256,uint256,uint256)" + ): EventFragment; } export interface ApprovalEventObject { @@ -1344,6 +1401,27 @@ export type ApprovalBorrowEvent = TypedEvent< export type ApprovalBorrowEventFilter = TypedEventFilter; +export interface AssetOracleDataUpdatedEventObject {} +export type AssetOracleDataUpdatedEvent = TypedEvent< + [], + AssetOracleDataUpdatedEventObject +>; + +export type AssetOracleDataUpdatedEventFilter = + TypedEventFilter; + +export interface AssetOracleUpdatedEventObject { + _oldVal: string; + _newVal: string; +} +export type AssetOracleUpdatedEvent = TypedEvent< + [string, string], + AssetOracleUpdatedEventObject +>; + +export type AssetOracleUpdatedEventFilter = + TypedEventFilter; + export interface ConservatorUpdatedEventObject { old: string; _new: string; @@ -1457,17 +1535,6 @@ export type LogBorrowCapUpdatedEvent = TypedEvent< export type LogBorrowCapUpdatedEventFilter = TypedEventFilter; -export interface LogBorrowingFeeEventObject { - _oldVal: BigNumber; - _newVal: BigNumber; -} -export type LogBorrowingFeeEvent = TypedEvent< - [BigNumber, BigNumber], - LogBorrowingFeeEventObject ->; - -export type LogBorrowingFeeEventFilter = TypedEventFilter; - export interface LogExchangeRateEventObject { rate: BigNumber; } @@ -1578,6 +1645,20 @@ export type TransferEvent = TypedEvent< export type TransferEventFilter = TypedEventFilter; +export interface UpdateMinMaxMintFeeEventObject { + oldMin: BigNumber; + newMin: BigNumber; + oldMax: BigNumber; + newMax: BigNumber; +} +export type UpdateMinMaxMintFeeEvent = TypedEvent< + [BigNumber, BigNumber, BigNumber, BigNumber], + UpdateMinMaxMintFeeEventObject +>; + +export type UpdateMinMaxMintFeeEventFilter = + TypedEventFilter; + export interface BBLeverage extends BaseContract { contractName: "BBLeverage"; @@ -1687,6 +1768,14 @@ export interface BBLeverage extends BaseContract { "assetId()"(overrides?: CallOverrides): Promise<[BigNumber]>; + assetOracle(overrides?: CallOverrides): Promise<[string]>; + + "assetOracle()"(overrides?: CallOverrides): Promise<[string]>; + + assetOracleData(overrides?: CallOverrides): Promise<[string]>; + + "assetOracleData()"(overrides?: CallOverrides): Promise<[string]>; + balanceOf( arg0: PromiseOrValue, overrides?: CallOverrides @@ -1697,10 +1786,6 @@ export interface BBLeverage extends BaseContract { overrides?: CallOverrides ): Promise<[BigNumber]>; - borrowOpeningFee(overrides?: CallOverrides): Promise<[BigNumber]>; - - "borrowOpeningFee()"(overrides?: CallOverrides): Promise<[BigNumber]>; - buyCollateral( from: PromiseOrValue, borrowAmount: PromiseOrValue, @@ -1849,6 +1934,10 @@ export interface BBLeverage extends BaseContract { "maxLiquidatorReward()"(overrides?: CallOverrides): Promise<[BigNumber]>; + maxMintFee(overrides?: CallOverrides): Promise<[BigNumber]>; + + "maxMintFee()"(overrides?: CallOverrides): Promise<[BigNumber]>; + minDebtRate(overrides?: CallOverrides): Promise<[BigNumber]>; "minDebtRate()"(overrides?: CallOverrides): Promise<[BigNumber]>; @@ -1857,6 +1946,10 @@ export interface BBLeverage extends BaseContract { "minLiquidatorReward()"(overrides?: CallOverrides): Promise<[BigNumber]>; + minMintFee(overrides?: CallOverrides): Promise<[BigNumber]>; + + "minMintFee()"(overrides?: CallOverrides): Promise<[BigNumber]>; + nonces( owner: PromiseOrValue, overrides?: CallOverrides @@ -1994,7 +2087,6 @@ export interface BBLeverage extends BaseContract { ): Promise; setMarketConfig( - _borrowOpeningFee: PromiseOrValue, _oracle: PromiseOrValue, _oracleData: PromiseOrValue, _conservator: PromiseOrValue, @@ -2009,8 +2101,7 @@ export interface BBLeverage extends BaseContract { overrides?: Overrides & { from?: PromiseOrValue } ): Promise; - "setMarketConfig(uint256,address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)"( - _borrowOpeningFee: PromiseOrValue, + "setMarketConfig(address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)"( _oracle: PromiseOrValue, _oracleData: PromiseOrValue, _conservator: PromiseOrValue, @@ -2214,6 +2305,14 @@ export interface BBLeverage extends BaseContract { "assetId()"(overrides?: CallOverrides): Promise; + assetOracle(overrides?: CallOverrides): Promise; + + "assetOracle()"(overrides?: CallOverrides): Promise; + + assetOracleData(overrides?: CallOverrides): Promise; + + "assetOracleData()"(overrides?: CallOverrides): Promise; + balanceOf( arg0: PromiseOrValue, overrides?: CallOverrides @@ -2224,10 +2323,6 @@ export interface BBLeverage extends BaseContract { overrides?: CallOverrides ): Promise; - borrowOpeningFee(overrides?: CallOverrides): Promise; - - "borrowOpeningFee()"(overrides?: CallOverrides): Promise; - buyCollateral( from: PromiseOrValue, borrowAmount: PromiseOrValue, @@ -2374,6 +2469,10 @@ export interface BBLeverage extends BaseContract { "maxLiquidatorReward()"(overrides?: CallOverrides): Promise; + maxMintFee(overrides?: CallOverrides): Promise; + + "maxMintFee()"(overrides?: CallOverrides): Promise; + minDebtRate(overrides?: CallOverrides): Promise; "minDebtRate()"(overrides?: CallOverrides): Promise; @@ -2382,6 +2481,10 @@ export interface BBLeverage extends BaseContract { "minLiquidatorReward()"(overrides?: CallOverrides): Promise; + minMintFee(overrides?: CallOverrides): Promise; + + "minMintFee()"(overrides?: CallOverrides): Promise; + nonces( owner: PromiseOrValue, overrides?: CallOverrides @@ -2519,7 +2622,6 @@ export interface BBLeverage extends BaseContract { ): Promise; setMarketConfig( - _borrowOpeningFee: PromiseOrValue, _oracle: PromiseOrValue, _oracleData: PromiseOrValue, _conservator: PromiseOrValue, @@ -2534,8 +2636,7 @@ export interface BBLeverage extends BaseContract { overrides?: Overrides & { from?: PromiseOrValue } ): Promise; - "setMarketConfig(uint256,address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)"( - _borrowOpeningFee: PromiseOrValue, + "setMarketConfig(address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)"( _oracle: PromiseOrValue, _oracleData: PromiseOrValue, _conservator: PromiseOrValue, @@ -2731,6 +2832,14 @@ export interface BBLeverage extends BaseContract { "assetId()"(overrides?: CallOverrides): Promise; + assetOracle(overrides?: CallOverrides): Promise; + + "assetOracle()"(overrides?: CallOverrides): Promise; + + assetOracleData(overrides?: CallOverrides): Promise; + + "assetOracleData()"(overrides?: CallOverrides): Promise; + balanceOf( arg0: PromiseOrValue, overrides?: CallOverrides @@ -2741,10 +2850,6 @@ export interface BBLeverage extends BaseContract { overrides?: CallOverrides ): Promise; - borrowOpeningFee(overrides?: CallOverrides): Promise; - - "borrowOpeningFee()"(overrides?: CallOverrides): Promise; - buyCollateral( from: PromiseOrValue, borrowAmount: PromiseOrValue, @@ -2887,6 +2992,10 @@ export interface BBLeverage extends BaseContract { "maxLiquidatorReward()"(overrides?: CallOverrides): Promise; + maxMintFee(overrides?: CallOverrides): Promise; + + "maxMintFee()"(overrides?: CallOverrides): Promise; + minDebtRate(overrides?: CallOverrides): Promise; "minDebtRate()"(overrides?: CallOverrides): Promise; @@ -2895,6 +3004,10 @@ export interface BBLeverage extends BaseContract { "minLiquidatorReward()"(overrides?: CallOverrides): Promise; + minMintFee(overrides?: CallOverrides): Promise; + + "minMintFee()"(overrides?: CallOverrides): Promise; + nonces( owner: PromiseOrValue, overrides?: CallOverrides @@ -3032,7 +3145,6 @@ export interface BBLeverage extends BaseContract { ): Promise; setMarketConfig( - _borrowOpeningFee: PromiseOrValue, _oracle: PromiseOrValue, _oracleData: PromiseOrValue, _conservator: PromiseOrValue, @@ -3047,8 +3159,7 @@ export interface BBLeverage extends BaseContract { overrides?: CallOverrides ): Promise; - "setMarketConfig(uint256,address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)"( - _borrowOpeningFee: PromiseOrValue, + "setMarketConfig(address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)"( _oracle: PromiseOrValue, _oracleData: PromiseOrValue, _conservator: PromiseOrValue, @@ -3195,6 +3306,18 @@ export interface BBLeverage extends BaseContract { value?: PromiseOrValue | null ): ApprovalBorrowEventFilter; + "AssetOracleDataUpdated()"(): AssetOracleDataUpdatedEventFilter; + AssetOracleDataUpdated(): AssetOracleDataUpdatedEventFilter; + + "AssetOracleUpdated(address,address)"( + _oldVal?: PromiseOrValue | null, + _newVal?: PromiseOrValue | null + ): AssetOracleUpdatedEventFilter; + AssetOracleUpdated( + _oldVal?: PromiseOrValue | null, + _newVal?: PromiseOrValue | null + ): AssetOracleUpdatedEventFilter; + "ConservatorUpdated(address,address)"( old?: PromiseOrValue | null, _new?: PromiseOrValue | null @@ -3292,15 +3415,6 @@ export interface BBLeverage extends BaseContract { _newVal?: PromiseOrValue | null ): LogBorrowCapUpdatedEventFilter; - "LogBorrowingFee(uint256,uint256)"( - _oldVal?: PromiseOrValue | null, - _newVal?: PromiseOrValue | null - ): LogBorrowingFeeEventFilter; - LogBorrowingFee( - _oldVal?: PromiseOrValue | null, - _newVal?: PromiseOrValue | null - ): LogBorrowingFeeEventFilter; - "LogExchangeRate(uint256)"( rate?: PromiseOrValue | null ): LogExchangeRateEventFilter; @@ -3386,6 +3500,19 @@ export interface BBLeverage extends BaseContract { to?: PromiseOrValue | null, value?: null ): TransferEventFilter; + + "UpdateMinMaxMintFee(uint256,uint256,uint256,uint256)"( + oldMin?: PromiseOrValue | null, + newMin?: PromiseOrValue | null, + oldMax?: PromiseOrValue | null, + newMax?: null + ): UpdateMinMaxMintFeeEventFilter; + UpdateMinMaxMintFee( + oldMin?: PromiseOrValue | null, + newMin?: PromiseOrValue | null, + oldMax?: PromiseOrValue | null, + newMax?: null + ): UpdateMinMaxMintFeeEventFilter; }; estimateGas: { @@ -3461,6 +3588,14 @@ export interface BBLeverage extends BaseContract { "assetId()"(overrides?: CallOverrides): Promise; + assetOracle(overrides?: CallOverrides): Promise; + + "assetOracle()"(overrides?: CallOverrides): Promise; + + assetOracleData(overrides?: CallOverrides): Promise; + + "assetOracleData()"(overrides?: CallOverrides): Promise; + balanceOf( arg0: PromiseOrValue, overrides?: CallOverrides @@ -3471,10 +3606,6 @@ export interface BBLeverage extends BaseContract { overrides?: CallOverrides ): Promise; - borrowOpeningFee(overrides?: CallOverrides): Promise; - - "borrowOpeningFee()"(overrides?: CallOverrides): Promise; - buyCollateral( from: PromiseOrValue, borrowAmount: PromiseOrValue, @@ -3609,6 +3740,10 @@ export interface BBLeverage extends BaseContract { "maxLiquidatorReward()"(overrides?: CallOverrides): Promise; + maxMintFee(overrides?: CallOverrides): Promise; + + "maxMintFee()"(overrides?: CallOverrides): Promise; + minDebtRate(overrides?: CallOverrides): Promise; "minDebtRate()"(overrides?: CallOverrides): Promise; @@ -3617,6 +3752,10 @@ export interface BBLeverage extends BaseContract { "minLiquidatorReward()"(overrides?: CallOverrides): Promise; + minMintFee(overrides?: CallOverrides): Promise; + + "minMintFee()"(overrides?: CallOverrides): Promise; + nonces( owner: PromiseOrValue, overrides?: CallOverrides @@ -3754,7 +3893,6 @@ export interface BBLeverage extends BaseContract { ): Promise; setMarketConfig( - _borrowOpeningFee: PromiseOrValue, _oracle: PromiseOrValue, _oracleData: PromiseOrValue, _conservator: PromiseOrValue, @@ -3769,8 +3907,7 @@ export interface BBLeverage extends BaseContract { overrides?: Overrides & { from?: PromiseOrValue } ): Promise; - "setMarketConfig(uint256,address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)"( - _borrowOpeningFee: PromiseOrValue, + "setMarketConfig(address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)"( _oracle: PromiseOrValue, _oracleData: PromiseOrValue, _conservator: PromiseOrValue, @@ -3961,19 +4098,23 @@ export interface BBLeverage extends BaseContract { "assetId()"(overrides?: CallOverrides): Promise; - balanceOf( - arg0: PromiseOrValue, + assetOracle(overrides?: CallOverrides): Promise; + + "assetOracle()"(overrides?: CallOverrides): Promise; + + assetOracleData(overrides?: CallOverrides): Promise; + + "assetOracleData()"( overrides?: CallOverrides ): Promise; - "balanceOf(address)"( + balanceOf( arg0: PromiseOrValue, overrides?: CallOverrides ): Promise; - borrowOpeningFee(overrides?: CallOverrides): Promise; - - "borrowOpeningFee()"( + "balanceOf(address)"( + arg0: PromiseOrValue, overrides?: CallOverrides ): Promise; @@ -4133,6 +4274,10 @@ export interface BBLeverage extends BaseContract { overrides?: CallOverrides ): Promise; + maxMintFee(overrides?: CallOverrides): Promise; + + "maxMintFee()"(overrides?: CallOverrides): Promise; + minDebtRate(overrides?: CallOverrides): Promise; "minDebtRate()"(overrides?: CallOverrides): Promise; @@ -4145,6 +4290,10 @@ export interface BBLeverage extends BaseContract { overrides?: CallOverrides ): Promise; + minMintFee(overrides?: CallOverrides): Promise; + + "minMintFee()"(overrides?: CallOverrides): Promise; + nonces( owner: PromiseOrValue, overrides?: CallOverrides @@ -4284,7 +4433,6 @@ export interface BBLeverage extends BaseContract { ): Promise; setMarketConfig( - _borrowOpeningFee: PromiseOrValue, _oracle: PromiseOrValue, _oracleData: PromiseOrValue, _conservator: PromiseOrValue, @@ -4299,8 +4447,7 @@ export interface BBLeverage extends BaseContract { overrides?: Overrides & { from?: PromiseOrValue } ): Promise; - "setMarketConfig(uint256,address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)"( - _borrowOpeningFee: PromiseOrValue, + "setMarketConfig(address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)"( _oracle: PromiseOrValue, _oracleData: PromiseOrValue, _conservator: PromiseOrValue, diff --git a/src/typechain/tapioca-bar/markets/bigBang/BBLiquidation.ts b/src/typechain/tapioca-bar/markets/bigBang/BBLiquidation.ts index 7fbdee39..db8d613b 100644 --- a/src/typechain/tapioca-bar/markets/bigBang/BBLiquidation.ts +++ b/src/typechain/tapioca-bar/markets/bigBang/BBLiquidation.ts @@ -38,8 +38,9 @@ export interface BBLiquidationInterface extends utils.Interface { "approveBorrow(address,uint256)": FunctionFragment; "asset()": FunctionFragment; "assetId()": FunctionFragment; + "assetOracle()": FunctionFragment; + "assetOracleData()": FunctionFragment; "balanceOf(address)": FunctionFragment; - "borrowOpeningFee()": FunctionFragment; "callerFee()": FunctionFragment; "claimOwnership()": FunctionFragment; "collateral()": FunctionFragment; @@ -62,8 +63,10 @@ export interface BBLiquidationInterface extends utils.Interface { "liquidationMultiplier()": FunctionFragment; "maxDebtRate()": FunctionFragment; "maxLiquidatorReward()": FunctionFragment; + "maxMintFee()": FunctionFragment; "minDebtRate()": FunctionFragment; "minLiquidatorReward()": FunctionFragment; + "minMintFee()": FunctionFragment; "nonces(address)": FunctionFragment; "openingFees(address)": FunctionFragment; "oracle()": FunctionFragment; @@ -78,7 +81,7 @@ export interface BBLiquidationInterface extends utils.Interface { "protocolFee()": FunctionFragment; "rateTimestamp()": FunctionFragment; "rateValidDuration()": FunctionFragment; - "setMarketConfig(uint256,address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)": FunctionFragment; + "setMarketConfig(address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)": FunctionFragment; "totalBorrow()": FunctionFragment; "totalBorrowCap()": FunctionFragment; "totalCollateralShare()": FunctionFragment; @@ -113,10 +116,12 @@ export interface BBLiquidationInterface extends utils.Interface { | "asset()" | "assetId" | "assetId()" + | "assetOracle" + | "assetOracle()" + | "assetOracleData" + | "assetOracleData()" | "balanceOf" | "balanceOf(address)" - | "borrowOpeningFee" - | "borrowOpeningFee()" | "callerFee" | "callerFee()" | "claimOwnership" @@ -161,10 +166,14 @@ export interface BBLiquidationInterface extends utils.Interface { | "maxDebtRate()" | "maxLiquidatorReward" | "maxLiquidatorReward()" + | "maxMintFee" + | "maxMintFee()" | "minDebtRate" | "minDebtRate()" | "minLiquidatorReward" | "minLiquidatorReward()" + | "minMintFee" + | "minMintFee()" | "nonces" | "nonces(address)" | "openingFees" @@ -194,7 +203,7 @@ export interface BBLiquidationInterface extends utils.Interface { | "rateValidDuration" | "rateValidDuration()" | "setMarketConfig" - | "setMarketConfig(uint256,address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)" + | "setMarketConfig(address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)" | "totalBorrow" | "totalBorrow()" | "totalBorrowCap" @@ -276,21 +285,29 @@ export interface BBLiquidationInterface extends utils.Interface { encodeFunctionData(functionFragment: "assetId", values?: undefined): string; encodeFunctionData(functionFragment: "assetId()", values?: undefined): string; encodeFunctionData( - functionFragment: "balanceOf", - values: [PromiseOrValue] + functionFragment: "assetOracle", + values?: undefined ): string; encodeFunctionData( - functionFragment: "balanceOf(address)", - values: [PromiseOrValue] + functionFragment: "assetOracle()", + values?: undefined ): string; encodeFunctionData( - functionFragment: "borrowOpeningFee", + functionFragment: "assetOracleData", values?: undefined ): string; encodeFunctionData( - functionFragment: "borrowOpeningFee()", + functionFragment: "assetOracleData()", values?: undefined ): string; + encodeFunctionData( + functionFragment: "balanceOf", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "balanceOf(address)", + values: [PromiseOrValue] + ): string; encodeFunctionData(functionFragment: "callerFee", values?: undefined): string; encodeFunctionData( functionFragment: "callerFee()", @@ -492,6 +509,14 @@ export interface BBLiquidationInterface extends utils.Interface { functionFragment: "maxLiquidatorReward()", values?: undefined ): string; + encodeFunctionData( + functionFragment: "maxMintFee", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "maxMintFee()", + values?: undefined + ): string; encodeFunctionData( functionFragment: "minDebtRate", values?: undefined @@ -508,6 +533,14 @@ export interface BBLiquidationInterface extends utils.Interface { functionFragment: "minLiquidatorReward()", values?: undefined ): string; + encodeFunctionData( + functionFragment: "minMintFee", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "minMintFee()", + values?: undefined + ): string; encodeFunctionData( functionFragment: "nonces", values: [PromiseOrValue] @@ -637,7 +670,6 @@ export interface BBLiquidationInterface extends utils.Interface { encodeFunctionData( functionFragment: "setMarketConfig", values: [ - PromiseOrValue, PromiseOrValue, PromiseOrValue, PromiseOrValue, @@ -652,9 +684,8 @@ export interface BBLiquidationInterface extends utils.Interface { ] ): string; encodeFunctionData( - functionFragment: "setMarketConfig(uint256,address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)", + functionFragment: "setMarketConfig(address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)", values: [ - PromiseOrValue, PromiseOrValue, PromiseOrValue, PromiseOrValue, @@ -823,17 +854,25 @@ export interface BBLiquidationInterface extends utils.Interface { decodeFunctionResult(functionFragment: "asset()", data: BytesLike): Result; decodeFunctionResult(functionFragment: "assetId", data: BytesLike): Result; decodeFunctionResult(functionFragment: "assetId()", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "balanceOf", data: BytesLike): Result; decodeFunctionResult( - functionFragment: "balanceOf(address)", + functionFragment: "assetOracle", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "assetOracle()", data: BytesLike ): Result; decodeFunctionResult( - functionFragment: "borrowOpeningFee", + functionFragment: "assetOracleData", data: BytesLike ): Result; decodeFunctionResult( - functionFragment: "borrowOpeningFee()", + functionFragment: "assetOracleData()", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "balanceOf", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "balanceOf(address)", data: BytesLike ): Result; decodeFunctionResult(functionFragment: "callerFee", data: BytesLike): Result; @@ -1003,6 +1042,11 @@ export interface BBLiquidationInterface extends utils.Interface { functionFragment: "maxLiquidatorReward()", data: BytesLike ): Result; + decodeFunctionResult(functionFragment: "maxMintFee", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "maxMintFee()", + data: BytesLike + ): Result; decodeFunctionResult( functionFragment: "minDebtRate", data: BytesLike @@ -1019,6 +1063,11 @@ export interface BBLiquidationInterface extends utils.Interface { functionFragment: "minLiquidatorReward()", data: BytesLike ): Result; + decodeFunctionResult(functionFragment: "minMintFee", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "minMintFee()", + data: BytesLike + ): Result; decodeFunctionResult(functionFragment: "nonces", data: BytesLike): Result; decodeFunctionResult( functionFragment: "nonces(address)", @@ -1109,7 +1158,7 @@ export interface BBLiquidationInterface extends utils.Interface { data: BytesLike ): Result; decodeFunctionResult( - functionFragment: "setMarketConfig(uint256,address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)", + functionFragment: "setMarketConfig(address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)", data: BytesLike ): Result; decodeFunctionResult( @@ -1203,6 +1252,8 @@ export interface BBLiquidationInterface extends utils.Interface { events: { "Approval(address,address,uint256)": EventFragment; "ApprovalBorrow(address,address,uint256)": EventFragment; + "AssetOracleDataUpdated()": EventFragment; + "AssetOracleUpdated(address,address)": EventFragment; "ConservatorUpdated(address,address)": EventFragment; "DebtRateAgainstEthUpdated(uint256,uint256)": EventFragment; "ExchangeRateDurationUpdated(uint256,uint256)": EventFragment; @@ -1212,7 +1263,6 @@ export interface BBLiquidationInterface extends utils.Interface { "LogAddCollateral(address,address,uint256)": EventFragment; "LogBorrow(address,address,uint256,uint256,uint256)": EventFragment; "LogBorrowCapUpdated(uint256,uint256)": EventFragment; - "LogBorrowingFee(uint256,uint256)": EventFragment; "LogExchangeRate(uint256)": EventFragment; "LogRemoveCollateral(address,address,uint256)": EventFragment; "LogRepay(address,address,uint256,uint256)": EventFragment; @@ -1223,6 +1273,7 @@ export interface BBLiquidationInterface extends utils.Interface { "OwnershipTransferred(address,address)": EventFragment; "PausedUpdated(uint8,bool,bool)": EventFragment; "Transfer(address,address,uint256)": EventFragment; + "UpdateMinMaxMintFee(uint256,uint256,uint256,uint256)": EventFragment; }; getEvent(nameOrSignatureOrTopic: "Approval"): EventFragment; @@ -1233,6 +1284,12 @@ export interface BBLiquidationInterface extends utils.Interface { getEvent( nameOrSignatureOrTopic: "ApprovalBorrow(address,address,uint256)" ): EventFragment; + getEvent(nameOrSignatureOrTopic: "AssetOracleDataUpdated"): EventFragment; + getEvent(nameOrSignatureOrTopic: "AssetOracleDataUpdated()"): EventFragment; + getEvent(nameOrSignatureOrTopic: "AssetOracleUpdated"): EventFragment; + getEvent( + nameOrSignatureOrTopic: "AssetOracleUpdated(address,address)" + ): EventFragment; getEvent(nameOrSignatureOrTopic: "ConservatorUpdated"): EventFragment; getEvent( nameOrSignatureOrTopic: "ConservatorUpdated(address,address)" @@ -1271,10 +1328,6 @@ export interface BBLiquidationInterface extends utils.Interface { getEvent( nameOrSignatureOrTopic: "LogBorrowCapUpdated(uint256,uint256)" ): EventFragment; - getEvent(nameOrSignatureOrTopic: "LogBorrowingFee"): EventFragment; - getEvent( - nameOrSignatureOrTopic: "LogBorrowingFee(uint256,uint256)" - ): EventFragment; getEvent(nameOrSignatureOrTopic: "LogExchangeRate"): EventFragment; getEvent(nameOrSignatureOrTopic: "LogExchangeRate(uint256)"): EventFragment; getEvent(nameOrSignatureOrTopic: "LogRemoveCollateral"): EventFragment; @@ -1309,6 +1362,10 @@ export interface BBLiquidationInterface extends utils.Interface { getEvent( nameOrSignatureOrTopic: "Transfer(address,address,uint256)" ): EventFragment; + getEvent(nameOrSignatureOrTopic: "UpdateMinMaxMintFee"): EventFragment; + getEvent( + nameOrSignatureOrTopic: "UpdateMinMaxMintFee(uint256,uint256,uint256,uint256)" + ): EventFragment; } export interface ApprovalEventObject { @@ -1335,6 +1392,27 @@ export type ApprovalBorrowEvent = TypedEvent< export type ApprovalBorrowEventFilter = TypedEventFilter; +export interface AssetOracleDataUpdatedEventObject {} +export type AssetOracleDataUpdatedEvent = TypedEvent< + [], + AssetOracleDataUpdatedEventObject +>; + +export type AssetOracleDataUpdatedEventFilter = + TypedEventFilter; + +export interface AssetOracleUpdatedEventObject { + _oldVal: string; + _newVal: string; +} +export type AssetOracleUpdatedEvent = TypedEvent< + [string, string], + AssetOracleUpdatedEventObject +>; + +export type AssetOracleUpdatedEventFilter = + TypedEventFilter; + export interface ConservatorUpdatedEventObject { old: string; _new: string; @@ -1448,17 +1526,6 @@ export type LogBorrowCapUpdatedEvent = TypedEvent< export type LogBorrowCapUpdatedEventFilter = TypedEventFilter; -export interface LogBorrowingFeeEventObject { - _oldVal: BigNumber; - _newVal: BigNumber; -} -export type LogBorrowingFeeEvent = TypedEvent< - [BigNumber, BigNumber], - LogBorrowingFeeEventObject ->; - -export type LogBorrowingFeeEventFilter = TypedEventFilter; - export interface LogExchangeRateEventObject { rate: BigNumber; } @@ -1569,6 +1636,20 @@ export type TransferEvent = TypedEvent< export type TransferEventFilter = TypedEventFilter; +export interface UpdateMinMaxMintFeeEventObject { + oldMin: BigNumber; + newMin: BigNumber; + oldMax: BigNumber; + newMax: BigNumber; +} +export type UpdateMinMaxMintFeeEvent = TypedEvent< + [BigNumber, BigNumber, BigNumber, BigNumber], + UpdateMinMaxMintFeeEventObject +>; + +export type UpdateMinMaxMintFeeEventFilter = + TypedEventFilter; + export interface BBLiquidation extends BaseContract { contractName: "BBLiquidation"; @@ -1678,6 +1759,14 @@ export interface BBLiquidation extends BaseContract { "assetId()"(overrides?: CallOverrides): Promise<[BigNumber]>; + assetOracle(overrides?: CallOverrides): Promise<[string]>; + + "assetOracle()"(overrides?: CallOverrides): Promise<[string]>; + + assetOracleData(overrides?: CallOverrides): Promise<[string]>; + + "assetOracleData()"(overrides?: CallOverrides): Promise<[string]>; + balanceOf( arg0: PromiseOrValue, overrides?: CallOverrides @@ -1688,10 +1777,6 @@ export interface BBLiquidation extends BaseContract { overrides?: CallOverrides ): Promise<[BigNumber]>; - borrowOpeningFee(overrides?: CallOverrides): Promise<[BigNumber]>; - - "borrowOpeningFee()"(overrides?: CallOverrides): Promise<[BigNumber]>; - callerFee(overrides?: CallOverrides): Promise<[BigNumber]>; "callerFee()"(overrides?: CallOverrides): Promise<[BigNumber]>; @@ -1852,6 +1937,10 @@ export interface BBLiquidation extends BaseContract { "maxLiquidatorReward()"(overrides?: CallOverrides): Promise<[BigNumber]>; + maxMintFee(overrides?: CallOverrides): Promise<[BigNumber]>; + + "maxMintFee()"(overrides?: CallOverrides): Promise<[BigNumber]>; + minDebtRate(overrides?: CallOverrides): Promise<[BigNumber]>; "minDebtRate()"(overrides?: CallOverrides): Promise<[BigNumber]>; @@ -1860,6 +1949,10 @@ export interface BBLiquidation extends BaseContract { "minLiquidatorReward()"(overrides?: CallOverrides): Promise<[BigNumber]>; + minMintFee(overrides?: CallOverrides): Promise<[BigNumber]>; + + "minMintFee()"(overrides?: CallOverrides): Promise<[BigNumber]>; + nonces( owner: PromiseOrValue, overrides?: CallOverrides @@ -1979,7 +2072,6 @@ export interface BBLiquidation extends BaseContract { "rateValidDuration()"(overrides?: CallOverrides): Promise<[BigNumber]>; setMarketConfig( - _borrowOpeningFee: PromiseOrValue, _oracle: PromiseOrValue, _oracleData: PromiseOrValue, _conservator: PromiseOrValue, @@ -1994,8 +2086,7 @@ export interface BBLiquidation extends BaseContract { overrides?: Overrides & { from?: PromiseOrValue } ): Promise; - "setMarketConfig(uint256,address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)"( - _borrowOpeningFee: PromiseOrValue, + "setMarketConfig(address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)"( _oracle: PromiseOrValue, _oracleData: PromiseOrValue, _conservator: PromiseOrValue, @@ -2199,6 +2290,14 @@ export interface BBLiquidation extends BaseContract { "assetId()"(overrides?: CallOverrides): Promise; + assetOracle(overrides?: CallOverrides): Promise; + + "assetOracle()"(overrides?: CallOverrides): Promise; + + assetOracleData(overrides?: CallOverrides): Promise; + + "assetOracleData()"(overrides?: CallOverrides): Promise; + balanceOf( arg0: PromiseOrValue, overrides?: CallOverrides @@ -2209,10 +2308,6 @@ export interface BBLiquidation extends BaseContract { overrides?: CallOverrides ): Promise; - borrowOpeningFee(overrides?: CallOverrides): Promise; - - "borrowOpeningFee()"(overrides?: CallOverrides): Promise; - callerFee(overrides?: CallOverrides): Promise; "callerFee()"(overrides?: CallOverrides): Promise; @@ -2371,6 +2466,10 @@ export interface BBLiquidation extends BaseContract { "maxLiquidatorReward()"(overrides?: CallOverrides): Promise; + maxMintFee(overrides?: CallOverrides): Promise; + + "maxMintFee()"(overrides?: CallOverrides): Promise; + minDebtRate(overrides?: CallOverrides): Promise; "minDebtRate()"(overrides?: CallOverrides): Promise; @@ -2379,6 +2478,10 @@ export interface BBLiquidation extends BaseContract { "minLiquidatorReward()"(overrides?: CallOverrides): Promise; + minMintFee(overrides?: CallOverrides): Promise; + + "minMintFee()"(overrides?: CallOverrides): Promise; + nonces( owner: PromiseOrValue, overrides?: CallOverrides @@ -2498,7 +2601,6 @@ export interface BBLiquidation extends BaseContract { "rateValidDuration()"(overrides?: CallOverrides): Promise; setMarketConfig( - _borrowOpeningFee: PromiseOrValue, _oracle: PromiseOrValue, _oracleData: PromiseOrValue, _conservator: PromiseOrValue, @@ -2513,8 +2615,7 @@ export interface BBLiquidation extends BaseContract { overrides?: Overrides & { from?: PromiseOrValue } ): Promise; - "setMarketConfig(uint256,address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)"( - _borrowOpeningFee: PromiseOrValue, + "setMarketConfig(address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)"( _oracle: PromiseOrValue, _oracleData: PromiseOrValue, _conservator: PromiseOrValue, @@ -2710,6 +2811,14 @@ export interface BBLiquidation extends BaseContract { "assetId()"(overrides?: CallOverrides): Promise; + assetOracle(overrides?: CallOverrides): Promise; + + "assetOracle()"(overrides?: CallOverrides): Promise; + + assetOracleData(overrides?: CallOverrides): Promise; + + "assetOracleData()"(overrides?: CallOverrides): Promise; + balanceOf( arg0: PromiseOrValue, overrides?: CallOverrides @@ -2720,10 +2829,6 @@ export interface BBLiquidation extends BaseContract { overrides?: CallOverrides ): Promise; - borrowOpeningFee(overrides?: CallOverrides): Promise; - - "borrowOpeningFee()"(overrides?: CallOverrides): Promise; - callerFee(overrides?: CallOverrides): Promise; "callerFee()"(overrides?: CallOverrides): Promise; @@ -2878,6 +2983,10 @@ export interface BBLiquidation extends BaseContract { "maxLiquidatorReward()"(overrides?: CallOverrides): Promise; + maxMintFee(overrides?: CallOverrides): Promise; + + "maxMintFee()"(overrides?: CallOverrides): Promise; + minDebtRate(overrides?: CallOverrides): Promise; "minDebtRate()"(overrides?: CallOverrides): Promise; @@ -2886,6 +2995,10 @@ export interface BBLiquidation extends BaseContract { "minLiquidatorReward()"(overrides?: CallOverrides): Promise; + minMintFee(overrides?: CallOverrides): Promise; + + "minMintFee()"(overrides?: CallOverrides): Promise; + nonces( owner: PromiseOrValue, overrides?: CallOverrides @@ -3005,7 +3118,6 @@ export interface BBLiquidation extends BaseContract { "rateValidDuration()"(overrides?: CallOverrides): Promise; setMarketConfig( - _borrowOpeningFee: PromiseOrValue, _oracle: PromiseOrValue, _oracleData: PromiseOrValue, _conservator: PromiseOrValue, @@ -3020,8 +3132,7 @@ export interface BBLiquidation extends BaseContract { overrides?: CallOverrides ): Promise; - "setMarketConfig(uint256,address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)"( - _borrowOpeningFee: PromiseOrValue, + "setMarketConfig(address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)"( _oracle: PromiseOrValue, _oracleData: PromiseOrValue, _conservator: PromiseOrValue, @@ -3168,6 +3279,18 @@ export interface BBLiquidation extends BaseContract { value?: PromiseOrValue | null ): ApprovalBorrowEventFilter; + "AssetOracleDataUpdated()"(): AssetOracleDataUpdatedEventFilter; + AssetOracleDataUpdated(): AssetOracleDataUpdatedEventFilter; + + "AssetOracleUpdated(address,address)"( + _oldVal?: PromiseOrValue | null, + _newVal?: PromiseOrValue | null + ): AssetOracleUpdatedEventFilter; + AssetOracleUpdated( + _oldVal?: PromiseOrValue | null, + _newVal?: PromiseOrValue | null + ): AssetOracleUpdatedEventFilter; + "ConservatorUpdated(address,address)"( old?: PromiseOrValue | null, _new?: PromiseOrValue | null @@ -3265,15 +3388,6 @@ export interface BBLiquidation extends BaseContract { _newVal?: PromiseOrValue | null ): LogBorrowCapUpdatedEventFilter; - "LogBorrowingFee(uint256,uint256)"( - _oldVal?: PromiseOrValue | null, - _newVal?: PromiseOrValue | null - ): LogBorrowingFeeEventFilter; - LogBorrowingFee( - _oldVal?: PromiseOrValue | null, - _newVal?: PromiseOrValue | null - ): LogBorrowingFeeEventFilter; - "LogExchangeRate(uint256)"( rate?: PromiseOrValue | null ): LogExchangeRateEventFilter; @@ -3359,6 +3473,19 @@ export interface BBLiquidation extends BaseContract { to?: PromiseOrValue | null, value?: null ): TransferEventFilter; + + "UpdateMinMaxMintFee(uint256,uint256,uint256,uint256)"( + oldMin?: PromiseOrValue | null, + newMin?: PromiseOrValue | null, + oldMax?: PromiseOrValue | null, + newMax?: null + ): UpdateMinMaxMintFeeEventFilter; + UpdateMinMaxMintFee( + oldMin?: PromiseOrValue | null, + newMin?: PromiseOrValue | null, + oldMax?: PromiseOrValue | null, + newMax?: null + ): UpdateMinMaxMintFeeEventFilter; }; estimateGas: { @@ -3434,6 +3561,14 @@ export interface BBLiquidation extends BaseContract { "assetId()"(overrides?: CallOverrides): Promise; + assetOracle(overrides?: CallOverrides): Promise; + + "assetOracle()"(overrides?: CallOverrides): Promise; + + assetOracleData(overrides?: CallOverrides): Promise; + + "assetOracleData()"(overrides?: CallOverrides): Promise; + balanceOf( arg0: PromiseOrValue, overrides?: CallOverrides @@ -3444,10 +3579,6 @@ export interface BBLiquidation extends BaseContract { overrides?: CallOverrides ): Promise; - borrowOpeningFee(overrides?: CallOverrides): Promise; - - "borrowOpeningFee()"(overrides?: CallOverrides): Promise; - callerFee(overrides?: CallOverrides): Promise; "callerFee()"(overrides?: CallOverrides): Promise; @@ -3594,6 +3725,10 @@ export interface BBLiquidation extends BaseContract { "maxLiquidatorReward()"(overrides?: CallOverrides): Promise; + maxMintFee(overrides?: CallOverrides): Promise; + + "maxMintFee()"(overrides?: CallOverrides): Promise; + minDebtRate(overrides?: CallOverrides): Promise; "minDebtRate()"(overrides?: CallOverrides): Promise; @@ -3602,6 +3737,10 @@ export interface BBLiquidation extends BaseContract { "minLiquidatorReward()"(overrides?: CallOverrides): Promise; + minMintFee(overrides?: CallOverrides): Promise; + + "minMintFee()"(overrides?: CallOverrides): Promise; + nonces( owner: PromiseOrValue, overrides?: CallOverrides @@ -3721,7 +3860,6 @@ export interface BBLiquidation extends BaseContract { "rateValidDuration()"(overrides?: CallOverrides): Promise; setMarketConfig( - _borrowOpeningFee: PromiseOrValue, _oracle: PromiseOrValue, _oracleData: PromiseOrValue, _conservator: PromiseOrValue, @@ -3736,8 +3874,7 @@ export interface BBLiquidation extends BaseContract { overrides?: Overrides & { from?: PromiseOrValue } ): Promise; - "setMarketConfig(uint256,address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)"( - _borrowOpeningFee: PromiseOrValue, + "setMarketConfig(address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)"( _oracle: PromiseOrValue, _oracleData: PromiseOrValue, _conservator: PromiseOrValue, @@ -3928,19 +4065,23 @@ export interface BBLiquidation extends BaseContract { "assetId()"(overrides?: CallOverrides): Promise; - balanceOf( - arg0: PromiseOrValue, + assetOracle(overrides?: CallOverrides): Promise; + + "assetOracle()"(overrides?: CallOverrides): Promise; + + assetOracleData(overrides?: CallOverrides): Promise; + + "assetOracleData()"( overrides?: CallOverrides ): Promise; - "balanceOf(address)"( + balanceOf( arg0: PromiseOrValue, overrides?: CallOverrides ): Promise; - borrowOpeningFee(overrides?: CallOverrides): Promise; - - "borrowOpeningFee()"( + "balanceOf(address)"( + arg0: PromiseOrValue, overrides?: CallOverrides ): Promise; @@ -4112,6 +4253,10 @@ export interface BBLiquidation extends BaseContract { overrides?: CallOverrides ): Promise; + maxMintFee(overrides?: CallOverrides): Promise; + + "maxMintFee()"(overrides?: CallOverrides): Promise; + minDebtRate(overrides?: CallOverrides): Promise; "minDebtRate()"(overrides?: CallOverrides): Promise; @@ -4124,6 +4269,10 @@ export interface BBLiquidation extends BaseContract { overrides?: CallOverrides ): Promise; + minMintFee(overrides?: CallOverrides): Promise; + + "minMintFee()"(overrides?: CallOverrides): Promise; + nonces( owner: PromiseOrValue, overrides?: CallOverrides @@ -4245,7 +4394,6 @@ export interface BBLiquidation extends BaseContract { ): Promise; setMarketConfig( - _borrowOpeningFee: PromiseOrValue, _oracle: PromiseOrValue, _oracleData: PromiseOrValue, _conservator: PromiseOrValue, @@ -4260,8 +4408,7 @@ export interface BBLiquidation extends BaseContract { overrides?: Overrides & { from?: PromiseOrValue } ): Promise; - "setMarketConfig(uint256,address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)"( - _borrowOpeningFee: PromiseOrValue, + "setMarketConfig(address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)"( _oracle: PromiseOrValue, _oracleData: PromiseOrValue, _conservator: PromiseOrValue, diff --git a/src/typechain/tapioca-bar/markets/bigBang/BBStorage.ts b/src/typechain/tapioca-bar/markets/bigBang/BBStorage.ts index 767a8d9f..ecb5a549 100644 --- a/src/typechain/tapioca-bar/markets/bigBang/BBStorage.ts +++ b/src/typechain/tapioca-bar/markets/bigBang/BBStorage.ts @@ -37,8 +37,9 @@ export interface BBStorageInterface extends utils.Interface { "approveBorrow(address,uint256)": FunctionFragment; "asset()": FunctionFragment; "assetId()": FunctionFragment; + "assetOracle()": FunctionFragment; + "assetOracleData()": FunctionFragment; "balanceOf(address)": FunctionFragment; - "borrowOpeningFee()": FunctionFragment; "callerFee()": FunctionFragment; "claimOwnership()": FunctionFragment; "collateral()": FunctionFragment; @@ -57,8 +58,10 @@ export interface BBStorageInterface extends utils.Interface { "liquidationMultiplier()": FunctionFragment; "maxDebtRate()": FunctionFragment; "maxLiquidatorReward()": FunctionFragment; + "maxMintFee()": FunctionFragment; "minDebtRate()": FunctionFragment; "minLiquidatorReward()": FunctionFragment; + "minMintFee()": FunctionFragment; "nonces(address)": FunctionFragment; "openingFees(address)": FunctionFragment; "oracle()": FunctionFragment; @@ -73,7 +76,7 @@ export interface BBStorageInterface extends utils.Interface { "protocolFee()": FunctionFragment; "rateTimestamp()": FunctionFragment; "rateValidDuration()": FunctionFragment; - "setMarketConfig(uint256,address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)": FunctionFragment; + "setMarketConfig(address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)": FunctionFragment; "totalBorrow()": FunctionFragment; "totalBorrowCap()": FunctionFragment; "totalCollateralShare()": FunctionFragment; @@ -106,10 +109,12 @@ export interface BBStorageInterface extends utils.Interface { | "asset()" | "assetId" | "assetId()" + | "assetOracle" + | "assetOracle()" + | "assetOracleData" + | "assetOracleData()" | "balanceOf" | "balanceOf(address)" - | "borrowOpeningFee" - | "borrowOpeningFee()" | "callerFee" | "callerFee()" | "claimOwnership" @@ -146,10 +151,14 @@ export interface BBStorageInterface extends utils.Interface { | "maxDebtRate()" | "maxLiquidatorReward" | "maxLiquidatorReward()" + | "maxMintFee" + | "maxMintFee()" | "minDebtRate" | "minDebtRate()" | "minLiquidatorReward" | "minLiquidatorReward()" + | "minMintFee" + | "minMintFee()" | "nonces" | "nonces(address)" | "openingFees" @@ -179,7 +188,7 @@ export interface BBStorageInterface extends utils.Interface { | "rateValidDuration" | "rateValidDuration()" | "setMarketConfig" - | "setMarketConfig(uint256,address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)" + | "setMarketConfig(address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)" | "totalBorrow" | "totalBorrow()" | "totalBorrowCap" @@ -259,21 +268,29 @@ export interface BBStorageInterface extends utils.Interface { encodeFunctionData(functionFragment: "assetId", values?: undefined): string; encodeFunctionData(functionFragment: "assetId()", values?: undefined): string; encodeFunctionData( - functionFragment: "balanceOf", - values: [PromiseOrValue] + functionFragment: "assetOracle", + values?: undefined ): string; encodeFunctionData( - functionFragment: "balanceOf(address)", - values: [PromiseOrValue] + functionFragment: "assetOracle()", + values?: undefined ): string; encodeFunctionData( - functionFragment: "borrowOpeningFee", + functionFragment: "assetOracleData", values?: undefined ): string; encodeFunctionData( - functionFragment: "borrowOpeningFee()", + functionFragment: "assetOracleData()", values?: undefined ): string; + encodeFunctionData( + functionFragment: "balanceOf", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "balanceOf(address)", + values: [PromiseOrValue] + ): string; encodeFunctionData(functionFragment: "callerFee", values?: undefined): string; encodeFunctionData( functionFragment: "callerFee()", @@ -423,6 +440,14 @@ export interface BBStorageInterface extends utils.Interface { functionFragment: "maxLiquidatorReward()", values?: undefined ): string; + encodeFunctionData( + functionFragment: "maxMintFee", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "maxMintFee()", + values?: undefined + ): string; encodeFunctionData( functionFragment: "minDebtRate", values?: undefined @@ -439,6 +464,14 @@ export interface BBStorageInterface extends utils.Interface { functionFragment: "minLiquidatorReward()", values?: undefined ): string; + encodeFunctionData( + functionFragment: "minMintFee", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "minMintFee()", + values?: undefined + ): string; encodeFunctionData( functionFragment: "nonces", values: [PromiseOrValue] @@ -568,7 +601,6 @@ export interface BBStorageInterface extends utils.Interface { encodeFunctionData( functionFragment: "setMarketConfig", values: [ - PromiseOrValue, PromiseOrValue, PromiseOrValue, PromiseOrValue, @@ -583,9 +615,8 @@ export interface BBStorageInterface extends utils.Interface { ] ): string; encodeFunctionData( - functionFragment: "setMarketConfig(uint256,address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)", + functionFragment: "setMarketConfig(address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)", values: [ - PromiseOrValue, PromiseOrValue, PromiseOrValue, PromiseOrValue, @@ -752,17 +783,25 @@ export interface BBStorageInterface extends utils.Interface { decodeFunctionResult(functionFragment: "asset()", data: BytesLike): Result; decodeFunctionResult(functionFragment: "assetId", data: BytesLike): Result; decodeFunctionResult(functionFragment: "assetId()", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "balanceOf", data: BytesLike): Result; decodeFunctionResult( - functionFragment: "balanceOf(address)", + functionFragment: "assetOracle", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "assetOracle()", data: BytesLike ): Result; decodeFunctionResult( - functionFragment: "borrowOpeningFee", + functionFragment: "assetOracleData", data: BytesLike ): Result; decodeFunctionResult( - functionFragment: "borrowOpeningFee()", + functionFragment: "assetOracleData()", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "balanceOf", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "balanceOf(address)", data: BytesLike ): Result; decodeFunctionResult(functionFragment: "callerFee", data: BytesLike): Result; @@ -903,6 +942,11 @@ export interface BBStorageInterface extends utils.Interface { functionFragment: "maxLiquidatorReward()", data: BytesLike ): Result; + decodeFunctionResult(functionFragment: "maxMintFee", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "maxMintFee()", + data: BytesLike + ): Result; decodeFunctionResult( functionFragment: "minDebtRate", data: BytesLike @@ -919,6 +963,11 @@ export interface BBStorageInterface extends utils.Interface { functionFragment: "minLiquidatorReward()", data: BytesLike ): Result; + decodeFunctionResult(functionFragment: "minMintFee", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "minMintFee()", + data: BytesLike + ): Result; decodeFunctionResult(functionFragment: "nonces", data: BytesLike): Result; decodeFunctionResult( functionFragment: "nonces(address)", @@ -1009,7 +1058,7 @@ export interface BBStorageInterface extends utils.Interface { data: BytesLike ): Result; decodeFunctionResult( - functionFragment: "setMarketConfig(uint256,address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)", + functionFragment: "setMarketConfig(address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)", data: BytesLike ): Result; decodeFunctionResult( @@ -1103,6 +1152,8 @@ export interface BBStorageInterface extends utils.Interface { events: { "Approval(address,address,uint256)": EventFragment; "ApprovalBorrow(address,address,uint256)": EventFragment; + "AssetOracleDataUpdated()": EventFragment; + "AssetOracleUpdated(address,address)": EventFragment; "ConservatorUpdated(address,address)": EventFragment; "DebtRateAgainstEthUpdated(uint256,uint256)": EventFragment; "ExchangeRateDurationUpdated(uint256,uint256)": EventFragment; @@ -1112,7 +1163,6 @@ export interface BBStorageInterface extends utils.Interface { "LogAddCollateral(address,address,uint256)": EventFragment; "LogBorrow(address,address,uint256,uint256,uint256)": EventFragment; "LogBorrowCapUpdated(uint256,uint256)": EventFragment; - "LogBorrowingFee(uint256,uint256)": EventFragment; "LogExchangeRate(uint256)": EventFragment; "LogRemoveCollateral(address,address,uint256)": EventFragment; "LogRepay(address,address,uint256,uint256)": EventFragment; @@ -1123,6 +1173,7 @@ export interface BBStorageInterface extends utils.Interface { "OwnershipTransferred(address,address)": EventFragment; "PausedUpdated(uint8,bool,bool)": EventFragment; "Transfer(address,address,uint256)": EventFragment; + "UpdateMinMaxMintFee(uint256,uint256,uint256,uint256)": EventFragment; }; getEvent(nameOrSignatureOrTopic: "Approval"): EventFragment; @@ -1133,6 +1184,12 @@ export interface BBStorageInterface extends utils.Interface { getEvent( nameOrSignatureOrTopic: "ApprovalBorrow(address,address,uint256)" ): EventFragment; + getEvent(nameOrSignatureOrTopic: "AssetOracleDataUpdated"): EventFragment; + getEvent(nameOrSignatureOrTopic: "AssetOracleDataUpdated()"): EventFragment; + getEvent(nameOrSignatureOrTopic: "AssetOracleUpdated"): EventFragment; + getEvent( + nameOrSignatureOrTopic: "AssetOracleUpdated(address,address)" + ): EventFragment; getEvent(nameOrSignatureOrTopic: "ConservatorUpdated"): EventFragment; getEvent( nameOrSignatureOrTopic: "ConservatorUpdated(address,address)" @@ -1171,10 +1228,6 @@ export interface BBStorageInterface extends utils.Interface { getEvent( nameOrSignatureOrTopic: "LogBorrowCapUpdated(uint256,uint256)" ): EventFragment; - getEvent(nameOrSignatureOrTopic: "LogBorrowingFee"): EventFragment; - getEvent( - nameOrSignatureOrTopic: "LogBorrowingFee(uint256,uint256)" - ): EventFragment; getEvent(nameOrSignatureOrTopic: "LogExchangeRate"): EventFragment; getEvent(nameOrSignatureOrTopic: "LogExchangeRate(uint256)"): EventFragment; getEvent(nameOrSignatureOrTopic: "LogRemoveCollateral"): EventFragment; @@ -1209,6 +1262,10 @@ export interface BBStorageInterface extends utils.Interface { getEvent( nameOrSignatureOrTopic: "Transfer(address,address,uint256)" ): EventFragment; + getEvent(nameOrSignatureOrTopic: "UpdateMinMaxMintFee"): EventFragment; + getEvent( + nameOrSignatureOrTopic: "UpdateMinMaxMintFee(uint256,uint256,uint256,uint256)" + ): EventFragment; } export interface ApprovalEventObject { @@ -1235,6 +1292,27 @@ export type ApprovalBorrowEvent = TypedEvent< export type ApprovalBorrowEventFilter = TypedEventFilter; +export interface AssetOracleDataUpdatedEventObject {} +export type AssetOracleDataUpdatedEvent = TypedEvent< + [], + AssetOracleDataUpdatedEventObject +>; + +export type AssetOracleDataUpdatedEventFilter = + TypedEventFilter; + +export interface AssetOracleUpdatedEventObject { + _oldVal: string; + _newVal: string; +} +export type AssetOracleUpdatedEvent = TypedEvent< + [string, string], + AssetOracleUpdatedEventObject +>; + +export type AssetOracleUpdatedEventFilter = + TypedEventFilter; + export interface ConservatorUpdatedEventObject { old: string; _new: string; @@ -1348,17 +1426,6 @@ export type LogBorrowCapUpdatedEvent = TypedEvent< export type LogBorrowCapUpdatedEventFilter = TypedEventFilter; -export interface LogBorrowingFeeEventObject { - _oldVal: BigNumber; - _newVal: BigNumber; -} -export type LogBorrowingFeeEvent = TypedEvent< - [BigNumber, BigNumber], - LogBorrowingFeeEventObject ->; - -export type LogBorrowingFeeEventFilter = TypedEventFilter; - export interface LogExchangeRateEventObject { rate: BigNumber; } @@ -1469,6 +1536,20 @@ export type TransferEvent = TypedEvent< export type TransferEventFilter = TypedEventFilter; +export interface UpdateMinMaxMintFeeEventObject { + oldMin: BigNumber; + newMin: BigNumber; + oldMax: BigNumber; + newMax: BigNumber; +} +export type UpdateMinMaxMintFeeEvent = TypedEvent< + [BigNumber, BigNumber, BigNumber, BigNumber], + UpdateMinMaxMintFeeEventObject +>; + +export type UpdateMinMaxMintFeeEventFilter = + TypedEventFilter; + export interface BBStorage extends BaseContract { contractName: "BBStorage"; @@ -1570,6 +1651,14 @@ export interface BBStorage extends BaseContract { "assetId()"(overrides?: CallOverrides): Promise<[BigNumber]>; + assetOracle(overrides?: CallOverrides): Promise<[string]>; + + "assetOracle()"(overrides?: CallOverrides): Promise<[string]>; + + assetOracleData(overrides?: CallOverrides): Promise<[string]>; + + "assetOracleData()"(overrides?: CallOverrides): Promise<[string]>; + balanceOf( arg0: PromiseOrValue, overrides?: CallOverrides @@ -1580,10 +1669,6 @@ export interface BBStorage extends BaseContract { overrides?: CallOverrides ): Promise<[BigNumber]>; - borrowOpeningFee(overrides?: CallOverrides): Promise<[BigNumber]>; - - "borrowOpeningFee()"(overrides?: CallOverrides): Promise<[BigNumber]>; - callerFee(overrides?: CallOverrides): Promise<[BigNumber]>; "callerFee()"(overrides?: CallOverrides): Promise<[BigNumber]>; @@ -1704,6 +1789,10 @@ export interface BBStorage extends BaseContract { "maxLiquidatorReward()"(overrides?: CallOverrides): Promise<[BigNumber]>; + maxMintFee(overrides?: CallOverrides): Promise<[BigNumber]>; + + "maxMintFee()"(overrides?: CallOverrides): Promise<[BigNumber]>; + minDebtRate(overrides?: CallOverrides): Promise<[BigNumber]>; "minDebtRate()"(overrides?: CallOverrides): Promise<[BigNumber]>; @@ -1712,6 +1801,10 @@ export interface BBStorage extends BaseContract { "minLiquidatorReward()"(overrides?: CallOverrides): Promise<[BigNumber]>; + minMintFee(overrides?: CallOverrides): Promise<[BigNumber]>; + + "minMintFee()"(overrides?: CallOverrides): Promise<[BigNumber]>; + nonces( owner: PromiseOrValue, overrides?: CallOverrides @@ -1831,7 +1924,6 @@ export interface BBStorage extends BaseContract { "rateValidDuration()"(overrides?: CallOverrides): Promise<[BigNumber]>; setMarketConfig( - _borrowOpeningFee: PromiseOrValue, _oracle: PromiseOrValue, _oracleData: PromiseOrValue, _conservator: PromiseOrValue, @@ -1846,8 +1938,7 @@ export interface BBStorage extends BaseContract { overrides?: Overrides & { from?: PromiseOrValue } ): Promise; - "setMarketConfig(uint256,address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)"( - _borrowOpeningFee: PromiseOrValue, + "setMarketConfig(address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)"( _oracle: PromiseOrValue, _oracleData: PromiseOrValue, _conservator: PromiseOrValue, @@ -2043,6 +2134,14 @@ export interface BBStorage extends BaseContract { "assetId()"(overrides?: CallOverrides): Promise; + assetOracle(overrides?: CallOverrides): Promise; + + "assetOracle()"(overrides?: CallOverrides): Promise; + + assetOracleData(overrides?: CallOverrides): Promise; + + "assetOracleData()"(overrides?: CallOverrides): Promise; + balanceOf( arg0: PromiseOrValue, overrides?: CallOverrides @@ -2053,10 +2152,6 @@ export interface BBStorage extends BaseContract { overrides?: CallOverrides ): Promise; - borrowOpeningFee(overrides?: CallOverrides): Promise; - - "borrowOpeningFee()"(overrides?: CallOverrides): Promise; - callerFee(overrides?: CallOverrides): Promise; "callerFee()"(overrides?: CallOverrides): Promise; @@ -2175,6 +2270,10 @@ export interface BBStorage extends BaseContract { "maxLiquidatorReward()"(overrides?: CallOverrides): Promise; + maxMintFee(overrides?: CallOverrides): Promise; + + "maxMintFee()"(overrides?: CallOverrides): Promise; + minDebtRate(overrides?: CallOverrides): Promise; "minDebtRate()"(overrides?: CallOverrides): Promise; @@ -2183,6 +2282,10 @@ export interface BBStorage extends BaseContract { "minLiquidatorReward()"(overrides?: CallOverrides): Promise; + minMintFee(overrides?: CallOverrides): Promise; + + "minMintFee()"(overrides?: CallOverrides): Promise; + nonces( owner: PromiseOrValue, overrides?: CallOverrides @@ -2302,7 +2405,6 @@ export interface BBStorage extends BaseContract { "rateValidDuration()"(overrides?: CallOverrides): Promise; setMarketConfig( - _borrowOpeningFee: PromiseOrValue, _oracle: PromiseOrValue, _oracleData: PromiseOrValue, _conservator: PromiseOrValue, @@ -2317,8 +2419,7 @@ export interface BBStorage extends BaseContract { overrides?: Overrides & { from?: PromiseOrValue } ): Promise; - "setMarketConfig(uint256,address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)"( - _borrowOpeningFee: PromiseOrValue, + "setMarketConfig(address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)"( _oracle: PromiseOrValue, _oracleData: PromiseOrValue, _conservator: PromiseOrValue, @@ -2510,6 +2611,14 @@ export interface BBStorage extends BaseContract { "assetId()"(overrides?: CallOverrides): Promise; + assetOracle(overrides?: CallOverrides): Promise; + + "assetOracle()"(overrides?: CallOverrides): Promise; + + assetOracleData(overrides?: CallOverrides): Promise; + + "assetOracleData()"(overrides?: CallOverrides): Promise; + balanceOf( arg0: PromiseOrValue, overrides?: CallOverrides @@ -2520,10 +2629,6 @@ export interface BBStorage extends BaseContract { overrides?: CallOverrides ): Promise; - borrowOpeningFee(overrides?: CallOverrides): Promise; - - "borrowOpeningFee()"(overrides?: CallOverrides): Promise; - callerFee(overrides?: CallOverrides): Promise; "callerFee()"(overrides?: CallOverrides): Promise; @@ -2638,6 +2743,10 @@ export interface BBStorage extends BaseContract { "maxLiquidatorReward()"(overrides?: CallOverrides): Promise; + maxMintFee(overrides?: CallOverrides): Promise; + + "maxMintFee()"(overrides?: CallOverrides): Promise; + minDebtRate(overrides?: CallOverrides): Promise; "minDebtRate()"(overrides?: CallOverrides): Promise; @@ -2646,6 +2755,10 @@ export interface BBStorage extends BaseContract { "minLiquidatorReward()"(overrides?: CallOverrides): Promise; + minMintFee(overrides?: CallOverrides): Promise; + + "minMintFee()"(overrides?: CallOverrides): Promise; + nonces( owner: PromiseOrValue, overrides?: CallOverrides @@ -2765,7 +2878,6 @@ export interface BBStorage extends BaseContract { "rateValidDuration()"(overrides?: CallOverrides): Promise; setMarketConfig( - _borrowOpeningFee: PromiseOrValue, _oracle: PromiseOrValue, _oracleData: PromiseOrValue, _conservator: PromiseOrValue, @@ -2780,8 +2892,7 @@ export interface BBStorage extends BaseContract { overrides?: CallOverrides ): Promise; - "setMarketConfig(uint256,address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)"( - _borrowOpeningFee: PromiseOrValue, + "setMarketConfig(address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)"( _oracle: PromiseOrValue, _oracleData: PromiseOrValue, _conservator: PromiseOrValue, @@ -2928,6 +3039,18 @@ export interface BBStorage extends BaseContract { value?: PromiseOrValue | null ): ApprovalBorrowEventFilter; + "AssetOracleDataUpdated()"(): AssetOracleDataUpdatedEventFilter; + AssetOracleDataUpdated(): AssetOracleDataUpdatedEventFilter; + + "AssetOracleUpdated(address,address)"( + _oldVal?: PromiseOrValue | null, + _newVal?: PromiseOrValue | null + ): AssetOracleUpdatedEventFilter; + AssetOracleUpdated( + _oldVal?: PromiseOrValue | null, + _newVal?: PromiseOrValue | null + ): AssetOracleUpdatedEventFilter; + "ConservatorUpdated(address,address)"( old?: PromiseOrValue | null, _new?: PromiseOrValue | null @@ -3025,15 +3148,6 @@ export interface BBStorage extends BaseContract { _newVal?: PromiseOrValue | null ): LogBorrowCapUpdatedEventFilter; - "LogBorrowingFee(uint256,uint256)"( - _oldVal?: PromiseOrValue | null, - _newVal?: PromiseOrValue | null - ): LogBorrowingFeeEventFilter; - LogBorrowingFee( - _oldVal?: PromiseOrValue | null, - _newVal?: PromiseOrValue | null - ): LogBorrowingFeeEventFilter; - "LogExchangeRate(uint256)"( rate?: PromiseOrValue | null ): LogExchangeRateEventFilter; @@ -3119,6 +3233,19 @@ export interface BBStorage extends BaseContract { to?: PromiseOrValue | null, value?: null ): TransferEventFilter; + + "UpdateMinMaxMintFee(uint256,uint256,uint256,uint256)"( + oldMin?: PromiseOrValue | null, + newMin?: PromiseOrValue | null, + oldMax?: PromiseOrValue | null, + newMax?: null + ): UpdateMinMaxMintFeeEventFilter; + UpdateMinMaxMintFee( + oldMin?: PromiseOrValue | null, + newMin?: PromiseOrValue | null, + oldMax?: PromiseOrValue | null, + newMax?: null + ): UpdateMinMaxMintFeeEventFilter; }; estimateGas: { @@ -3186,6 +3313,14 @@ export interface BBStorage extends BaseContract { "assetId()"(overrides?: CallOverrides): Promise; + assetOracle(overrides?: CallOverrides): Promise; + + "assetOracle()"(overrides?: CallOverrides): Promise; + + assetOracleData(overrides?: CallOverrides): Promise; + + "assetOracleData()"(overrides?: CallOverrides): Promise; + balanceOf( arg0: PromiseOrValue, overrides?: CallOverrides @@ -3196,10 +3331,6 @@ export interface BBStorage extends BaseContract { overrides?: CallOverrides ): Promise; - borrowOpeningFee(overrides?: CallOverrides): Promise; - - "borrowOpeningFee()"(overrides?: CallOverrides): Promise; - callerFee(overrides?: CallOverrides): Promise; "callerFee()"(overrides?: CallOverrides): Promise; @@ -3306,6 +3437,10 @@ export interface BBStorage extends BaseContract { "maxLiquidatorReward()"(overrides?: CallOverrides): Promise; + maxMintFee(overrides?: CallOverrides): Promise; + + "maxMintFee()"(overrides?: CallOverrides): Promise; + minDebtRate(overrides?: CallOverrides): Promise; "minDebtRate()"(overrides?: CallOverrides): Promise; @@ -3314,6 +3449,10 @@ export interface BBStorage extends BaseContract { "minLiquidatorReward()"(overrides?: CallOverrides): Promise; + minMintFee(overrides?: CallOverrides): Promise; + + "minMintFee()"(overrides?: CallOverrides): Promise; + nonces( owner: PromiseOrValue, overrides?: CallOverrides @@ -3433,7 +3572,6 @@ export interface BBStorage extends BaseContract { "rateValidDuration()"(overrides?: CallOverrides): Promise; setMarketConfig( - _borrowOpeningFee: PromiseOrValue, _oracle: PromiseOrValue, _oracleData: PromiseOrValue, _conservator: PromiseOrValue, @@ -3448,8 +3586,7 @@ export interface BBStorage extends BaseContract { overrides?: Overrides & { from?: PromiseOrValue } ): Promise; - "setMarketConfig(uint256,address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)"( - _borrowOpeningFee: PromiseOrValue, + "setMarketConfig(address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)"( _oracle: PromiseOrValue, _oracleData: PromiseOrValue, _conservator: PromiseOrValue, @@ -3632,19 +3769,23 @@ export interface BBStorage extends BaseContract { "assetId()"(overrides?: CallOverrides): Promise; - balanceOf( - arg0: PromiseOrValue, + assetOracle(overrides?: CallOverrides): Promise; + + "assetOracle()"(overrides?: CallOverrides): Promise; + + assetOracleData(overrides?: CallOverrides): Promise; + + "assetOracleData()"( overrides?: CallOverrides ): Promise; - "balanceOf(address)"( + balanceOf( arg0: PromiseOrValue, overrides?: CallOverrides ): Promise; - borrowOpeningFee(overrides?: CallOverrides): Promise; - - "borrowOpeningFee()"( + "balanceOf(address)"( + arg0: PromiseOrValue, overrides?: CallOverrides ): Promise; @@ -3776,6 +3917,10 @@ export interface BBStorage extends BaseContract { overrides?: CallOverrides ): Promise; + maxMintFee(overrides?: CallOverrides): Promise; + + "maxMintFee()"(overrides?: CallOverrides): Promise; + minDebtRate(overrides?: CallOverrides): Promise; "minDebtRate()"(overrides?: CallOverrides): Promise; @@ -3788,6 +3933,10 @@ export interface BBStorage extends BaseContract { overrides?: CallOverrides ): Promise; + minMintFee(overrides?: CallOverrides): Promise; + + "minMintFee()"(overrides?: CallOverrides): Promise; + nonces( owner: PromiseOrValue, overrides?: CallOverrides @@ -3909,7 +4058,6 @@ export interface BBStorage extends BaseContract { ): Promise; setMarketConfig( - _borrowOpeningFee: PromiseOrValue, _oracle: PromiseOrValue, _oracleData: PromiseOrValue, _conservator: PromiseOrValue, @@ -3924,8 +4072,7 @@ export interface BBStorage extends BaseContract { overrides?: Overrides & { from?: PromiseOrValue } ): Promise; - "setMarketConfig(uint256,address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)"( - _borrowOpeningFee: PromiseOrValue, + "setMarketConfig(address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)"( _oracle: PromiseOrValue, _oracleData: PromiseOrValue, _conservator: PromiseOrValue, diff --git a/src/typechain/tapioca-bar/markets/bigBang/BigBang.ts b/src/typechain/tapioca-bar/markets/bigBang/BigBang.ts index 6424f614..d7357eb6 100644 --- a/src/typechain/tapioca-bar/markets/bigBang/BigBang.ts +++ b/src/typechain/tapioca-bar/markets/bigBang/BigBang.ts @@ -39,10 +39,11 @@ export interface BigBangInterface extends utils.Interface { "approveBorrow(address,uint256)": FunctionFragment; "asset()": FunctionFragment; "assetId()": FunctionFragment; + "assetOracle()": FunctionFragment; + "assetOracleData()": FunctionFragment; "balanceOf(address)": FunctionFragment; "borrow(address,address,uint256)": FunctionFragment; "borrowModule()": FunctionFragment; - "borrowOpeningFee()": FunctionFragment; "buyCollateral(address,uint256,uint256,uint256,address,bytes)": FunctionFragment; "callerFee()": FunctionFragment; "claimOwnership()": FunctionFragment; @@ -71,8 +72,10 @@ export interface BigBangInterface extends utils.Interface { "liquidationMultiplier()": FunctionFragment; "maxDebtRate()": FunctionFragment; "maxLiquidatorReward()": FunctionFragment; + "maxMintFee()": FunctionFragment; "minDebtRate()": FunctionFragment; "minLiquidatorReward()": FunctionFragment; + "minMintFee()": FunctionFragment; "nonces(address)": FunctionFragment; "openingFees(address)": FunctionFragment; "oracle()": FunctionFragment; @@ -92,8 +95,10 @@ export interface BigBangInterface extends utils.Interface { "repay(address,address,bool,uint256)": FunctionFragment; "rescueEth(uint256,address)": FunctionFragment; "sellCollateral(address,uint256,uint256,address,bytes)": FunctionFragment; + "setAssetOracle(address,bytes)": FunctionFragment; "setBigBangConfig(uint256,uint256,uint256,uint256)": FunctionFragment; - "setMarketConfig(uint256,address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)": FunctionFragment; + "setMarketConfig(address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)": FunctionFragment; + "setMinAndMaxMintFee(uint256,uint256)": FunctionFragment; "totalBorrow()": FunctionFragment; "totalBorrowCap()": FunctionFragment; "totalCollateralShare()": FunctionFragment; @@ -130,14 +135,16 @@ export interface BigBangInterface extends utils.Interface { | "asset()" | "assetId" | "assetId()" + | "assetOracle" + | "assetOracle()" + | "assetOracleData" + | "assetOracleData()" | "balanceOf" | "balanceOf(address)" | "borrow" | "borrow(address,address,uint256)" | "borrowModule" | "borrowModule()" - | "borrowOpeningFee" - | "borrowOpeningFee()" | "buyCollateral" | "buyCollateral(address,uint256,uint256,uint256,address,bytes)" | "callerFee" @@ -194,10 +201,14 @@ export interface BigBangInterface extends utils.Interface { | "maxDebtRate()" | "maxLiquidatorReward" | "maxLiquidatorReward()" + | "maxMintFee" + | "maxMintFee()" | "minDebtRate" | "minDebtRate()" | "minLiquidatorReward" | "minLiquidatorReward()" + | "minMintFee" + | "minMintFee()" | "nonces" | "nonces(address)" | "openingFees" @@ -236,10 +247,14 @@ export interface BigBangInterface extends utils.Interface { | "rescueEth(uint256,address)" | "sellCollateral" | "sellCollateral(address,uint256,uint256,address,bytes)" + | "setAssetOracle" + | "setAssetOracle(address,bytes)" | "setBigBangConfig" | "setBigBangConfig(uint256,uint256,uint256,uint256)" | "setMarketConfig" - | "setMarketConfig(uint256,address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)" + | "setMarketConfig(address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)" + | "setMinAndMaxMintFee" + | "setMinAndMaxMintFee(uint256,uint256)" | "totalBorrow" | "totalBorrow()" | "totalBorrowCap" @@ -340,6 +355,22 @@ export interface BigBangInterface extends utils.Interface { encodeFunctionData(functionFragment: "asset()", values?: undefined): string; encodeFunctionData(functionFragment: "assetId", values?: undefined): string; encodeFunctionData(functionFragment: "assetId()", values?: undefined): string; + encodeFunctionData( + functionFragment: "assetOracle", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "assetOracle()", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "assetOracleData", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "assetOracleData()", + values?: undefined + ): string; encodeFunctionData( functionFragment: "balanceOf", values: [PromiseOrValue] @@ -372,14 +403,6 @@ export interface BigBangInterface extends utils.Interface { functionFragment: "borrowModule()", values?: undefined ): string; - encodeFunctionData( - functionFragment: "borrowOpeningFee", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "borrowOpeningFee()", - values?: undefined - ): string; encodeFunctionData( functionFragment: "buyCollateral", values: [ @@ -643,6 +666,14 @@ export interface BigBangInterface extends utils.Interface { functionFragment: "maxLiquidatorReward()", values?: undefined ): string; + encodeFunctionData( + functionFragment: "maxMintFee", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "maxMintFee()", + values?: undefined + ): string; encodeFunctionData( functionFragment: "minDebtRate", values?: undefined @@ -659,6 +690,14 @@ export interface BigBangInterface extends utils.Interface { functionFragment: "minLiquidatorReward()", values?: undefined ): string; + encodeFunctionData( + functionFragment: "minMintFee", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "minMintFee()", + values?: undefined + ): string; encodeFunctionData( functionFragment: "nonces", values: [PromiseOrValue] @@ -855,6 +894,14 @@ export interface BigBangInterface extends utils.Interface { PromiseOrValue ] ): string; + encodeFunctionData( + functionFragment: "setAssetOracle", + values: [PromiseOrValue, PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "setAssetOracle(address,bytes)", + values: [PromiseOrValue, PromiseOrValue] + ): string; encodeFunctionData( functionFragment: "setBigBangConfig", values: [ @@ -876,7 +923,6 @@ export interface BigBangInterface extends utils.Interface { encodeFunctionData( functionFragment: "setMarketConfig", values: [ - PromiseOrValue, PromiseOrValue, PromiseOrValue, PromiseOrValue, @@ -891,9 +937,8 @@ export interface BigBangInterface extends utils.Interface { ] ): string; encodeFunctionData( - functionFragment: "setMarketConfig(uint256,address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)", + functionFragment: "setMarketConfig(address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)", values: [ - PromiseOrValue, PromiseOrValue, PromiseOrValue, PromiseOrValue, @@ -907,6 +952,14 @@ export interface BigBangInterface extends utils.Interface { PromiseOrValue ] ): string; + encodeFunctionData( + functionFragment: "setMinAndMaxMintFee", + values: [PromiseOrValue, PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "setMinAndMaxMintFee(uint256,uint256)", + values: [PromiseOrValue, PromiseOrValue] + ): string; encodeFunctionData( functionFragment: "totalBorrow", values?: undefined @@ -1070,30 +1123,38 @@ export interface BigBangInterface extends utils.Interface { decodeFunctionResult(functionFragment: "asset()", data: BytesLike): Result; decodeFunctionResult(functionFragment: "assetId", data: BytesLike): Result; decodeFunctionResult(functionFragment: "assetId()", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "balanceOf", data: BytesLike): Result; decodeFunctionResult( - functionFragment: "balanceOf(address)", + functionFragment: "assetOracle", data: BytesLike ): Result; - decodeFunctionResult(functionFragment: "borrow", data: BytesLike): Result; decodeFunctionResult( - functionFragment: "borrow(address,address,uint256)", + functionFragment: "assetOracle()", data: BytesLike ): Result; decodeFunctionResult( - functionFragment: "borrowModule", + functionFragment: "assetOracleData", data: BytesLike ): Result; decodeFunctionResult( - functionFragment: "borrowModule()", + functionFragment: "assetOracleData()", data: BytesLike ): Result; + decodeFunctionResult(functionFragment: "balanceOf", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "balanceOf(address)", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "borrow", data: BytesLike): Result; decodeFunctionResult( - functionFragment: "borrowOpeningFee", + functionFragment: "borrow(address,address,uint256)", data: BytesLike ): Result; decodeFunctionResult( - functionFragment: "borrowOpeningFee()", + functionFragment: "borrowModule", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "borrowModule()", data: BytesLike ): Result; decodeFunctionResult( @@ -1305,6 +1366,11 @@ export interface BigBangInterface extends utils.Interface { functionFragment: "maxLiquidatorReward()", data: BytesLike ): Result; + decodeFunctionResult(functionFragment: "maxMintFee", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "maxMintFee()", + data: BytesLike + ): Result; decodeFunctionResult( functionFragment: "minDebtRate", data: BytesLike @@ -1321,6 +1387,11 @@ export interface BigBangInterface extends utils.Interface { functionFragment: "minLiquidatorReward()", data: BytesLike ): Result; + decodeFunctionResult(functionFragment: "minMintFee", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "minMintFee()", + data: BytesLike + ): Result; decodeFunctionResult(functionFragment: "nonces", data: BytesLike): Result; decodeFunctionResult( functionFragment: "nonces(address)", @@ -1440,6 +1511,14 @@ export interface BigBangInterface extends utils.Interface { functionFragment: "sellCollateral(address,uint256,uint256,address,bytes)", data: BytesLike ): Result; + decodeFunctionResult( + functionFragment: "setAssetOracle", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "setAssetOracle(address,bytes)", + data: BytesLike + ): Result; decodeFunctionResult( functionFragment: "setBigBangConfig", data: BytesLike @@ -1453,7 +1532,15 @@ export interface BigBangInterface extends utils.Interface { data: BytesLike ): Result; decodeFunctionResult( - functionFragment: "setMarketConfig(uint256,address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)", + functionFragment: "setMarketConfig(address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "setMinAndMaxMintFee", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "setMinAndMaxMintFee(uint256,uint256)", data: BytesLike ): Result; decodeFunctionResult( @@ -1547,6 +1634,8 @@ export interface BigBangInterface extends utils.Interface { events: { "Approval(address,address,uint256)": EventFragment; "ApprovalBorrow(address,address,uint256)": EventFragment; + "AssetOracleDataUpdated()": EventFragment; + "AssetOracleUpdated(address,address)": EventFragment; "ConservatorUpdated(address,address)": EventFragment; "DebtRateAgainstEthUpdated(uint256,uint256)": EventFragment; "ExchangeRateDurationUpdated(uint256,uint256)": EventFragment; @@ -1556,7 +1645,6 @@ export interface BigBangInterface extends utils.Interface { "LogAddCollateral(address,address,uint256)": EventFragment; "LogBorrow(address,address,uint256,uint256,uint256)": EventFragment; "LogBorrowCapUpdated(uint256,uint256)": EventFragment; - "LogBorrowingFee(uint256,uint256)": EventFragment; "LogExchangeRate(uint256)": EventFragment; "LogRemoveCollateral(address,address,uint256)": EventFragment; "LogRepay(address,address,uint256,uint256)": EventFragment; @@ -1567,6 +1655,7 @@ export interface BigBangInterface extends utils.Interface { "OwnershipTransferred(address,address)": EventFragment; "PausedUpdated(uint8,bool,bool)": EventFragment; "Transfer(address,address,uint256)": EventFragment; + "UpdateMinMaxMintFee(uint256,uint256,uint256,uint256)": EventFragment; }; getEvent(nameOrSignatureOrTopic: "Approval"): EventFragment; @@ -1577,6 +1666,12 @@ export interface BigBangInterface extends utils.Interface { getEvent( nameOrSignatureOrTopic: "ApprovalBorrow(address,address,uint256)" ): EventFragment; + getEvent(nameOrSignatureOrTopic: "AssetOracleDataUpdated"): EventFragment; + getEvent(nameOrSignatureOrTopic: "AssetOracleDataUpdated()"): EventFragment; + getEvent(nameOrSignatureOrTopic: "AssetOracleUpdated"): EventFragment; + getEvent( + nameOrSignatureOrTopic: "AssetOracleUpdated(address,address)" + ): EventFragment; getEvent(nameOrSignatureOrTopic: "ConservatorUpdated"): EventFragment; getEvent( nameOrSignatureOrTopic: "ConservatorUpdated(address,address)" @@ -1615,10 +1710,6 @@ export interface BigBangInterface extends utils.Interface { getEvent( nameOrSignatureOrTopic: "LogBorrowCapUpdated(uint256,uint256)" ): EventFragment; - getEvent(nameOrSignatureOrTopic: "LogBorrowingFee"): EventFragment; - getEvent( - nameOrSignatureOrTopic: "LogBorrowingFee(uint256,uint256)" - ): EventFragment; getEvent(nameOrSignatureOrTopic: "LogExchangeRate"): EventFragment; getEvent(nameOrSignatureOrTopic: "LogExchangeRate(uint256)"): EventFragment; getEvent(nameOrSignatureOrTopic: "LogRemoveCollateral"): EventFragment; @@ -1653,6 +1744,10 @@ export interface BigBangInterface extends utils.Interface { getEvent( nameOrSignatureOrTopic: "Transfer(address,address,uint256)" ): EventFragment; + getEvent(nameOrSignatureOrTopic: "UpdateMinMaxMintFee"): EventFragment; + getEvent( + nameOrSignatureOrTopic: "UpdateMinMaxMintFee(uint256,uint256,uint256,uint256)" + ): EventFragment; } export interface ApprovalEventObject { @@ -1679,6 +1774,27 @@ export type ApprovalBorrowEvent = TypedEvent< export type ApprovalBorrowEventFilter = TypedEventFilter; +export interface AssetOracleDataUpdatedEventObject {} +export type AssetOracleDataUpdatedEvent = TypedEvent< + [], + AssetOracleDataUpdatedEventObject +>; + +export type AssetOracleDataUpdatedEventFilter = + TypedEventFilter; + +export interface AssetOracleUpdatedEventObject { + _oldVal: string; + _newVal: string; +} +export type AssetOracleUpdatedEvent = TypedEvent< + [string, string], + AssetOracleUpdatedEventObject +>; + +export type AssetOracleUpdatedEventFilter = + TypedEventFilter; + export interface ConservatorUpdatedEventObject { old: string; _new: string; @@ -1792,17 +1908,6 @@ export type LogBorrowCapUpdatedEvent = TypedEvent< export type LogBorrowCapUpdatedEventFilter = TypedEventFilter; -export interface LogBorrowingFeeEventObject { - _oldVal: BigNumber; - _newVal: BigNumber; -} -export type LogBorrowingFeeEvent = TypedEvent< - [BigNumber, BigNumber], - LogBorrowingFeeEventObject ->; - -export type LogBorrowingFeeEventFilter = TypedEventFilter; - export interface LogExchangeRateEventObject { rate: BigNumber; } @@ -1913,6 +2018,20 @@ export type TransferEvent = TypedEvent< export type TransferEventFilter = TypedEventFilter; +export interface UpdateMinMaxMintFeeEventObject { + oldMin: BigNumber; + newMin: BigNumber; + oldMax: BigNumber; + newMax: BigNumber; +} +export type UpdateMinMaxMintFeeEvent = TypedEvent< + [BigNumber, BigNumber, BigNumber, BigNumber], + UpdateMinMaxMintFeeEventObject +>; + +export type UpdateMinMaxMintFeeEventFilter = + TypedEventFilter; + export interface BigBang extends BaseContract { contractName: "BigBang"; @@ -2040,6 +2159,14 @@ export interface BigBang extends BaseContract { "assetId()"(overrides?: CallOverrides): Promise<[BigNumber]>; + assetOracle(overrides?: CallOverrides): Promise<[string]>; + + "assetOracle()"(overrides?: CallOverrides): Promise<[string]>; + + assetOracleData(overrides?: CallOverrides): Promise<[string]>; + + "assetOracleData()"(overrides?: CallOverrides): Promise<[string]>; + balanceOf( arg0: PromiseOrValue, overrides?: CallOverrides @@ -2068,10 +2195,6 @@ export interface BigBang extends BaseContract { "borrowModule()"(overrides?: CallOverrides): Promise<[string]>; - borrowOpeningFee(overrides?: CallOverrides): Promise<[BigNumber]>; - - "borrowOpeningFee()"(overrides?: CallOverrides): Promise<[BigNumber]>; - buyCollateral( from: PromiseOrValue, borrowAmount: PromiseOrValue, @@ -2286,6 +2409,10 @@ export interface BigBang extends BaseContract { "maxLiquidatorReward()"(overrides?: CallOverrides): Promise<[BigNumber]>; + maxMintFee(overrides?: CallOverrides): Promise<[BigNumber]>; + + "maxMintFee()"(overrides?: CallOverrides): Promise<[BigNumber]>; + minDebtRate(overrides?: CallOverrides): Promise<[BigNumber]>; "minDebtRate()"(overrides?: CallOverrides): Promise<[BigNumber]>; @@ -2294,6 +2421,10 @@ export interface BigBang extends BaseContract { "minLiquidatorReward()"(overrides?: CallOverrides): Promise<[BigNumber]>; + minMintFee(overrides?: CallOverrides): Promise<[BigNumber]>; + + "minMintFee()"(overrides?: CallOverrides): Promise<[BigNumber]>; + nonces( owner: PromiseOrValue, overrides?: CallOverrides @@ -2480,6 +2611,18 @@ export interface BigBang extends BaseContract { overrides?: Overrides & { from?: PromiseOrValue } ): Promise; + setAssetOracle( + _oracle: PromiseOrValue, + _oracleData: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "setAssetOracle(address,bytes)"( + _oracle: PromiseOrValue, + _oracleData: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + setBigBangConfig( _minDebtRate: PromiseOrValue, _maxDebtRate: PromiseOrValue, @@ -2497,7 +2640,6 @@ export interface BigBang extends BaseContract { ): Promise; setMarketConfig( - _borrowOpeningFee: PromiseOrValue, _oracle: PromiseOrValue, _oracleData: PromiseOrValue, _conservator: PromiseOrValue, @@ -2512,8 +2654,7 @@ export interface BigBang extends BaseContract { overrides?: Overrides & { from?: PromiseOrValue } ): Promise; - "setMarketConfig(uint256,address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)"( - _borrowOpeningFee: PromiseOrValue, + "setMarketConfig(address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)"( _oracle: PromiseOrValue, _oracleData: PromiseOrValue, _conservator: PromiseOrValue, @@ -2528,6 +2669,18 @@ export interface BigBang extends BaseContract { overrides?: Overrides & { from?: PromiseOrValue } ): Promise; + setMinAndMaxMintFee( + _min: PromiseOrValue, + _max: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "setMinAndMaxMintFee(uint256,uint256)"( + _min: PromiseOrValue, + _max: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + totalBorrow( overrides?: CallOverrides ): Promise< @@ -2735,6 +2888,14 @@ export interface BigBang extends BaseContract { "assetId()"(overrides?: CallOverrides): Promise; + assetOracle(overrides?: CallOverrides): Promise; + + "assetOracle()"(overrides?: CallOverrides): Promise; + + assetOracleData(overrides?: CallOverrides): Promise; + + "assetOracleData()"(overrides?: CallOverrides): Promise; + balanceOf( arg0: PromiseOrValue, overrides?: CallOverrides @@ -2763,10 +2924,6 @@ export interface BigBang extends BaseContract { "borrowModule()"(overrides?: CallOverrides): Promise; - borrowOpeningFee(overrides?: CallOverrides): Promise; - - "borrowOpeningFee()"(overrides?: CallOverrides): Promise; - buyCollateral( from: PromiseOrValue, borrowAmount: PromiseOrValue, @@ -2979,6 +3136,10 @@ export interface BigBang extends BaseContract { "maxLiquidatorReward()"(overrides?: CallOverrides): Promise; + maxMintFee(overrides?: CallOverrides): Promise; + + "maxMintFee()"(overrides?: CallOverrides): Promise; + minDebtRate(overrides?: CallOverrides): Promise; "minDebtRate()"(overrides?: CallOverrides): Promise; @@ -2987,6 +3148,10 @@ export interface BigBang extends BaseContract { "minLiquidatorReward()"(overrides?: CallOverrides): Promise; + minMintFee(overrides?: CallOverrides): Promise; + + "minMintFee()"(overrides?: CallOverrides): Promise; + nonces( owner: PromiseOrValue, overrides?: CallOverrides @@ -3173,6 +3338,18 @@ export interface BigBang extends BaseContract { overrides?: Overrides & { from?: PromiseOrValue } ): Promise; + setAssetOracle( + _oracle: PromiseOrValue, + _oracleData: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "setAssetOracle(address,bytes)"( + _oracle: PromiseOrValue, + _oracleData: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + setBigBangConfig( _minDebtRate: PromiseOrValue, _maxDebtRate: PromiseOrValue, @@ -3190,7 +3367,6 @@ export interface BigBang extends BaseContract { ): Promise; setMarketConfig( - _borrowOpeningFee: PromiseOrValue, _oracle: PromiseOrValue, _oracleData: PromiseOrValue, _conservator: PromiseOrValue, @@ -3205,8 +3381,7 @@ export interface BigBang extends BaseContract { overrides?: Overrides & { from?: PromiseOrValue } ): Promise; - "setMarketConfig(uint256,address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)"( - _borrowOpeningFee: PromiseOrValue, + "setMarketConfig(address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)"( _oracle: PromiseOrValue, _oracleData: PromiseOrValue, _conservator: PromiseOrValue, @@ -3221,6 +3396,18 @@ export interface BigBang extends BaseContract { overrides?: Overrides & { from?: PromiseOrValue } ): Promise; + setMinAndMaxMintFee( + _min: PromiseOrValue, + _max: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "setMinAndMaxMintFee(uint256,uint256)"( + _min: PromiseOrValue, + _max: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + totalBorrow( overrides?: CallOverrides ): Promise<[BigNumber, BigNumber] & { elastic: BigNumber; base: BigNumber }>; @@ -3420,6 +3607,14 @@ export interface BigBang extends BaseContract { "assetId()"(overrides?: CallOverrides): Promise; + assetOracle(overrides?: CallOverrides): Promise; + + "assetOracle()"(overrides?: CallOverrides): Promise; + + assetOracleData(overrides?: CallOverrides): Promise; + + "assetOracleData()"(overrides?: CallOverrides): Promise; + balanceOf( arg0: PromiseOrValue, overrides?: CallOverrides @@ -3448,10 +3643,6 @@ export interface BigBang extends BaseContract { "borrowModule()"(overrides?: CallOverrides): Promise; - borrowOpeningFee(overrides?: CallOverrides): Promise; - - "borrowOpeningFee()"(overrides?: CallOverrides): Promise; - buyCollateral( from: PromiseOrValue, borrowAmount: PromiseOrValue, @@ -3664,6 +3855,10 @@ export interface BigBang extends BaseContract { "maxLiquidatorReward()"(overrides?: CallOverrides): Promise; + maxMintFee(overrides?: CallOverrides): Promise; + + "maxMintFee()"(overrides?: CallOverrides): Promise; + minDebtRate(overrides?: CallOverrides): Promise; "minDebtRate()"(overrides?: CallOverrides): Promise; @@ -3672,6 +3867,10 @@ export interface BigBang extends BaseContract { "minLiquidatorReward()"(overrides?: CallOverrides): Promise; + minMintFee(overrides?: CallOverrides): Promise; + + "minMintFee()"(overrides?: CallOverrides): Promise; + nonces( owner: PromiseOrValue, overrides?: CallOverrides @@ -3854,6 +4053,18 @@ export interface BigBang extends BaseContract { overrides?: CallOverrides ): Promise; + setAssetOracle( + _oracle: PromiseOrValue, + _oracleData: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "setAssetOracle(address,bytes)"( + _oracle: PromiseOrValue, + _oracleData: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + setBigBangConfig( _minDebtRate: PromiseOrValue, _maxDebtRate: PromiseOrValue, @@ -3871,7 +4082,6 @@ export interface BigBang extends BaseContract { ): Promise; setMarketConfig( - _borrowOpeningFee: PromiseOrValue, _oracle: PromiseOrValue, _oracleData: PromiseOrValue, _conservator: PromiseOrValue, @@ -3886,8 +4096,7 @@ export interface BigBang extends BaseContract { overrides?: CallOverrides ): Promise; - "setMarketConfig(uint256,address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)"( - _borrowOpeningFee: PromiseOrValue, + "setMarketConfig(address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)"( _oracle: PromiseOrValue, _oracleData: PromiseOrValue, _conservator: PromiseOrValue, @@ -3902,6 +4111,18 @@ export interface BigBang extends BaseContract { overrides?: CallOverrides ): Promise; + setMinAndMaxMintFee( + _min: PromiseOrValue, + _max: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "setMinAndMaxMintFee(uint256,uint256)"( + _min: PromiseOrValue, + _max: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + totalBorrow( overrides?: CallOverrides ): Promise< @@ -4034,6 +4255,18 @@ export interface BigBang extends BaseContract { value?: PromiseOrValue | null ): ApprovalBorrowEventFilter; + "AssetOracleDataUpdated()"(): AssetOracleDataUpdatedEventFilter; + AssetOracleDataUpdated(): AssetOracleDataUpdatedEventFilter; + + "AssetOracleUpdated(address,address)"( + _oldVal?: PromiseOrValue | null, + _newVal?: PromiseOrValue | null + ): AssetOracleUpdatedEventFilter; + AssetOracleUpdated( + _oldVal?: PromiseOrValue | null, + _newVal?: PromiseOrValue | null + ): AssetOracleUpdatedEventFilter; + "ConservatorUpdated(address,address)"( old?: PromiseOrValue | null, _new?: PromiseOrValue | null @@ -4131,15 +4364,6 @@ export interface BigBang extends BaseContract { _newVal?: PromiseOrValue | null ): LogBorrowCapUpdatedEventFilter; - "LogBorrowingFee(uint256,uint256)"( - _oldVal?: PromiseOrValue | null, - _newVal?: PromiseOrValue | null - ): LogBorrowingFeeEventFilter; - LogBorrowingFee( - _oldVal?: PromiseOrValue | null, - _newVal?: PromiseOrValue | null - ): LogBorrowingFeeEventFilter; - "LogExchangeRate(uint256)"( rate?: PromiseOrValue | null ): LogExchangeRateEventFilter; @@ -4225,6 +4449,19 @@ export interface BigBang extends BaseContract { to?: PromiseOrValue | null, value?: null ): TransferEventFilter; + + "UpdateMinMaxMintFee(uint256,uint256,uint256,uint256)"( + oldMin?: PromiseOrValue | null, + newMin?: PromiseOrValue | null, + oldMax?: PromiseOrValue | null, + newMax?: null + ): UpdateMinMaxMintFeeEventFilter; + UpdateMinMaxMintFee( + oldMin?: PromiseOrValue | null, + newMin?: PromiseOrValue | null, + oldMax?: PromiseOrValue | null, + newMax?: null + ): UpdateMinMaxMintFeeEventFilter; }; estimateGas: { @@ -4318,6 +4555,14 @@ export interface BigBang extends BaseContract { "assetId()"(overrides?: CallOverrides): Promise; + assetOracle(overrides?: CallOverrides): Promise; + + "assetOracle()"(overrides?: CallOverrides): Promise; + + assetOracleData(overrides?: CallOverrides): Promise; + + "assetOracleData()"(overrides?: CallOverrides): Promise; + balanceOf( arg0: PromiseOrValue, overrides?: CallOverrides @@ -4346,10 +4591,6 @@ export interface BigBang extends BaseContract { "borrowModule()"(overrides?: CallOverrides): Promise; - borrowOpeningFee(overrides?: CallOverrides): Promise; - - "borrowOpeningFee()"(overrides?: CallOverrides): Promise; - buyCollateral( from: PromiseOrValue, borrowAmount: PromiseOrValue, @@ -4550,6 +4791,10 @@ export interface BigBang extends BaseContract { "maxLiquidatorReward()"(overrides?: CallOverrides): Promise; + maxMintFee(overrides?: CallOverrides): Promise; + + "maxMintFee()"(overrides?: CallOverrides): Promise; + minDebtRate(overrides?: CallOverrides): Promise; "minDebtRate()"(overrides?: CallOverrides): Promise; @@ -4558,6 +4803,10 @@ export interface BigBang extends BaseContract { "minLiquidatorReward()"(overrides?: CallOverrides): Promise; + minMintFee(overrides?: CallOverrides): Promise; + + "minMintFee()"(overrides?: CallOverrides): Promise; + nonces( owner: PromiseOrValue, overrides?: CallOverrides @@ -4744,6 +4993,18 @@ export interface BigBang extends BaseContract { overrides?: Overrides & { from?: PromiseOrValue } ): Promise; + setAssetOracle( + _oracle: PromiseOrValue, + _oracleData: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "setAssetOracle(address,bytes)"( + _oracle: PromiseOrValue, + _oracleData: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + setBigBangConfig( _minDebtRate: PromiseOrValue, _maxDebtRate: PromiseOrValue, @@ -4761,7 +5022,6 @@ export interface BigBang extends BaseContract { ): Promise; setMarketConfig( - _borrowOpeningFee: PromiseOrValue, _oracle: PromiseOrValue, _oracleData: PromiseOrValue, _conservator: PromiseOrValue, @@ -4776,8 +5036,7 @@ export interface BigBang extends BaseContract { overrides?: Overrides & { from?: PromiseOrValue } ): Promise; - "setMarketConfig(uint256,address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)"( - _borrowOpeningFee: PromiseOrValue, + "setMarketConfig(address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)"( _oracle: PromiseOrValue, _oracleData: PromiseOrValue, _conservator: PromiseOrValue, @@ -4792,6 +5051,18 @@ export interface BigBang extends BaseContract { overrides?: Overrides & { from?: PromiseOrValue } ): Promise; + setMinAndMaxMintFee( + _min: PromiseOrValue, + _max: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "setMinAndMaxMintFee(uint256,uint256)"( + _min: PromiseOrValue, + _max: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + totalBorrow(overrides?: CallOverrides): Promise; "totalBorrow()"(overrides?: CallOverrides): Promise; @@ -4986,6 +5257,16 @@ export interface BigBang extends BaseContract { "assetId()"(overrides?: CallOverrides): Promise; + assetOracle(overrides?: CallOverrides): Promise; + + "assetOracle()"(overrides?: CallOverrides): Promise; + + assetOracleData(overrides?: CallOverrides): Promise; + + "assetOracleData()"( + overrides?: CallOverrides + ): Promise; + balanceOf( arg0: PromiseOrValue, overrides?: CallOverrides @@ -5014,12 +5295,6 @@ export interface BigBang extends BaseContract { "borrowModule()"(overrides?: CallOverrides): Promise; - borrowOpeningFee(overrides?: CallOverrides): Promise; - - "borrowOpeningFee()"( - overrides?: CallOverrides - ): Promise; - buyCollateral( from: PromiseOrValue, borrowAmount: PromiseOrValue, @@ -5248,6 +5523,10 @@ export interface BigBang extends BaseContract { overrides?: CallOverrides ): Promise; + maxMintFee(overrides?: CallOverrides): Promise; + + "maxMintFee()"(overrides?: CallOverrides): Promise; + minDebtRate(overrides?: CallOverrides): Promise; "minDebtRate()"(overrides?: CallOverrides): Promise; @@ -5260,6 +5539,10 @@ export interface BigBang extends BaseContract { overrides?: CallOverrides ): Promise; + minMintFee(overrides?: CallOverrides): Promise; + + "minMintFee()"(overrides?: CallOverrides): Promise; + nonces( owner: PromiseOrValue, overrides?: CallOverrides @@ -5448,6 +5731,18 @@ export interface BigBang extends BaseContract { overrides?: Overrides & { from?: PromiseOrValue } ): Promise; + setAssetOracle( + _oracle: PromiseOrValue, + _oracleData: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "setAssetOracle(address,bytes)"( + _oracle: PromiseOrValue, + _oracleData: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + setBigBangConfig( _minDebtRate: PromiseOrValue, _maxDebtRate: PromiseOrValue, @@ -5465,7 +5760,6 @@ export interface BigBang extends BaseContract { ): Promise; setMarketConfig( - _borrowOpeningFee: PromiseOrValue, _oracle: PromiseOrValue, _oracleData: PromiseOrValue, _conservator: PromiseOrValue, @@ -5480,8 +5774,7 @@ export interface BigBang extends BaseContract { overrides?: Overrides & { from?: PromiseOrValue } ): Promise; - "setMarketConfig(uint256,address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)"( - _borrowOpeningFee: PromiseOrValue, + "setMarketConfig(address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)"( _oracle: PromiseOrValue, _oracleData: PromiseOrValue, _conservator: PromiseOrValue, @@ -5496,6 +5789,18 @@ export interface BigBang extends BaseContract { overrides?: Overrides & { from?: PromiseOrValue } ): Promise; + setMinAndMaxMintFee( + _min: PromiseOrValue, + _max: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "setMinAndMaxMintFee(uint256,uint256)"( + _min: PromiseOrValue, + _max: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + totalBorrow(overrides?: CallOverrides): Promise; "totalBorrow()"(overrides?: CallOverrides): Promise; diff --git a/src/typechain/tapioca-bar/markets/singularity/SGLBorrow.ts b/src/typechain/tapioca-bar/markets/singularity/SGLBorrow.ts index 90c11931..ebf34e37 100644 --- a/src/typechain/tapioca-bar/markets/singularity/SGLBorrow.ts +++ b/src/typechain/tapioca-bar/markets/singularity/SGLBorrow.ts @@ -94,7 +94,7 @@ export interface SGLBorrowInterface extends utils.Interface { "rateTimestamp()": FunctionFragment; "rateValidDuration()": FunctionFragment; "repay(address,address,bool,uint256)": FunctionFragment; - "setMarketConfig(uint256,address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)": FunctionFragment; + "setMarketConfig(address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)": FunctionFragment; "startingInterestPerSecond()": FunctionFragment; "symbol()": FunctionFragment; "totalAsset()": FunctionFragment; @@ -217,7 +217,7 @@ export interface SGLBorrowInterface extends utils.Interface { | "repay" | "repay(address,address,bool,uint256)" | "setMarketConfig" - | "setMarketConfig(uint256,address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)" + | "setMarketConfig(address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)" | "startingInterestPerSecond" | "startingInterestPerSecond()" | "symbol" @@ -671,7 +671,6 @@ export interface SGLBorrowInterface extends utils.Interface { encodeFunctionData( functionFragment: "setMarketConfig", values: [ - PromiseOrValue, PromiseOrValue, PromiseOrValue, PromiseOrValue, @@ -686,9 +685,8 @@ export interface SGLBorrowInterface extends utils.Interface { ] ): string; encodeFunctionData( - functionFragment: "setMarketConfig(uint256,address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)", + functionFragment: "setMarketConfig(address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)", values: [ - PromiseOrValue, PromiseOrValue, PromiseOrValue, PromiseOrValue, @@ -1162,7 +1160,7 @@ export interface SGLBorrowInterface extends utils.Interface { data: BytesLike ): Result; decodeFunctionResult( - functionFragment: "setMarketConfig(uint256,address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)", + functionFragment: "setMarketConfig(address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)", data: BytesLike ): Result; decodeFunctionResult( @@ -2264,7 +2262,6 @@ export interface SGLBorrow extends BaseContract { ): Promise; setMarketConfig( - _borrowOpeningFee: PromiseOrValue, _oracle: PromiseOrValue, _oracleData: PromiseOrValue, _conservator: PromiseOrValue, @@ -2279,8 +2276,7 @@ export interface SGLBorrow extends BaseContract { overrides?: Overrides & { from?: PromiseOrValue } ): Promise; - "setMarketConfig(uint256,address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)"( - _borrowOpeningFee: PromiseOrValue, + "setMarketConfig(address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)"( _oracle: PromiseOrValue, _oracleData: PromiseOrValue, _conservator: PromiseOrValue, @@ -2827,7 +2823,6 @@ export interface SGLBorrow extends BaseContract { ): Promise; setMarketConfig( - _borrowOpeningFee: PromiseOrValue, _oracle: PromiseOrValue, _oracleData: PromiseOrValue, _conservator: PromiseOrValue, @@ -2842,8 +2837,7 @@ export interface SGLBorrow extends BaseContract { overrides?: Overrides & { from?: PromiseOrValue } ): Promise; - "setMarketConfig(uint256,address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)"( - _borrowOpeningFee: PromiseOrValue, + "setMarketConfig(address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)"( _oracle: PromiseOrValue, _oracleData: PromiseOrValue, _conservator: PromiseOrValue, @@ -3372,7 +3366,6 @@ export interface SGLBorrow extends BaseContract { ): Promise; setMarketConfig( - _borrowOpeningFee: PromiseOrValue, _oracle: PromiseOrValue, _oracleData: PromiseOrValue, _conservator: PromiseOrValue, @@ -3387,8 +3380,7 @@ export interface SGLBorrow extends BaseContract { overrides?: CallOverrides ): Promise; - "setMarketConfig(uint256,address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)"( - _borrowOpeningFee: PromiseOrValue, + "setMarketConfig(address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)"( _oracle: PromiseOrValue, _oracleData: PromiseOrValue, _conservator: PromiseOrValue, @@ -4208,7 +4200,6 @@ export interface SGLBorrow extends BaseContract { ): Promise; setMarketConfig( - _borrowOpeningFee: PromiseOrValue, _oracle: PromiseOrValue, _oracleData: PromiseOrValue, _conservator: PromiseOrValue, @@ -4223,8 +4214,7 @@ export interface SGLBorrow extends BaseContract { overrides?: Overrides & { from?: PromiseOrValue } ): Promise; - "setMarketConfig(uint256,address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)"( - _borrowOpeningFee: PromiseOrValue, + "setMarketConfig(address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)"( _oracle: PromiseOrValue, _oracleData: PromiseOrValue, _conservator: PromiseOrValue, @@ -4772,7 +4762,6 @@ export interface SGLBorrow extends BaseContract { ): Promise; setMarketConfig( - _borrowOpeningFee: PromiseOrValue, _oracle: PromiseOrValue, _oracleData: PromiseOrValue, _conservator: PromiseOrValue, @@ -4787,8 +4776,7 @@ export interface SGLBorrow extends BaseContract { overrides?: Overrides & { from?: PromiseOrValue } ): Promise; - "setMarketConfig(uint256,address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)"( - _borrowOpeningFee: PromiseOrValue, + "setMarketConfig(address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)"( _oracle: PromiseOrValue, _oracleData: PromiseOrValue, _conservator: PromiseOrValue, diff --git a/src/typechain/tapioca-bar/markets/singularity/SGLCollateral.ts b/src/typechain/tapioca-bar/markets/singularity/SGLCollateral.ts index 5548bad5..b3cd5aa5 100644 --- a/src/typechain/tapioca-bar/markets/singularity/SGLCollateral.ts +++ b/src/typechain/tapioca-bar/markets/singularity/SGLCollateral.ts @@ -94,7 +94,7 @@ export interface SGLCollateralInterface extends utils.Interface { "rateTimestamp()": FunctionFragment; "rateValidDuration()": FunctionFragment; "removeCollateral(address,address,uint256)": FunctionFragment; - "setMarketConfig(uint256,address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)": FunctionFragment; + "setMarketConfig(address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)": FunctionFragment; "startingInterestPerSecond()": FunctionFragment; "symbol()": FunctionFragment; "totalAsset()": FunctionFragment; @@ -217,7 +217,7 @@ export interface SGLCollateralInterface extends utils.Interface { | "removeCollateral" | "removeCollateral(address,address,uint256)" | "setMarketConfig" - | "setMarketConfig(uint256,address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)" + | "setMarketConfig(address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)" | "startingInterestPerSecond" | "startingInterestPerSecond()" | "symbol" @@ -673,7 +673,6 @@ export interface SGLCollateralInterface extends utils.Interface { encodeFunctionData( functionFragment: "setMarketConfig", values: [ - PromiseOrValue, PromiseOrValue, PromiseOrValue, PromiseOrValue, @@ -688,9 +687,8 @@ export interface SGLCollateralInterface extends utils.Interface { ] ): string; encodeFunctionData( - functionFragment: "setMarketConfig(uint256,address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)", + functionFragment: "setMarketConfig(address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)", values: [ - PromiseOrValue, PromiseOrValue, PromiseOrValue, PromiseOrValue, @@ -1170,7 +1168,7 @@ export interface SGLCollateralInterface extends utils.Interface { data: BytesLike ): Result; decodeFunctionResult( - functionFragment: "setMarketConfig(uint256,address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)", + functionFragment: "setMarketConfig(address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)", data: BytesLike ): Result; decodeFunctionResult( @@ -2274,7 +2272,6 @@ export interface SGLCollateral extends BaseContract { ): Promise; setMarketConfig( - _borrowOpeningFee: PromiseOrValue, _oracle: PromiseOrValue, _oracleData: PromiseOrValue, _conservator: PromiseOrValue, @@ -2289,8 +2286,7 @@ export interface SGLCollateral extends BaseContract { overrides?: Overrides & { from?: PromiseOrValue } ): Promise; - "setMarketConfig(uint256,address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)"( - _borrowOpeningFee: PromiseOrValue, + "setMarketConfig(address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)"( _oracle: PromiseOrValue, _oracleData: PromiseOrValue, _conservator: PromiseOrValue, @@ -2839,7 +2835,6 @@ export interface SGLCollateral extends BaseContract { ): Promise; setMarketConfig( - _borrowOpeningFee: PromiseOrValue, _oracle: PromiseOrValue, _oracleData: PromiseOrValue, _conservator: PromiseOrValue, @@ -2854,8 +2849,7 @@ export interface SGLCollateral extends BaseContract { overrides?: Overrides & { from?: PromiseOrValue } ): Promise; - "setMarketConfig(uint256,address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)"( - _borrowOpeningFee: PromiseOrValue, + "setMarketConfig(address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)"( _oracle: PromiseOrValue, _oracleData: PromiseOrValue, _conservator: PromiseOrValue, @@ -3386,7 +3380,6 @@ export interface SGLCollateral extends BaseContract { ): Promise; setMarketConfig( - _borrowOpeningFee: PromiseOrValue, _oracle: PromiseOrValue, _oracleData: PromiseOrValue, _conservator: PromiseOrValue, @@ -3401,8 +3394,7 @@ export interface SGLCollateral extends BaseContract { overrides?: CallOverrides ): Promise; - "setMarketConfig(uint256,address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)"( - _borrowOpeningFee: PromiseOrValue, + "setMarketConfig(address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)"( _oracle: PromiseOrValue, _oracleData: PromiseOrValue, _conservator: PromiseOrValue, @@ -4224,7 +4216,6 @@ export interface SGLCollateral extends BaseContract { ): Promise; setMarketConfig( - _borrowOpeningFee: PromiseOrValue, _oracle: PromiseOrValue, _oracleData: PromiseOrValue, _conservator: PromiseOrValue, @@ -4239,8 +4230,7 @@ export interface SGLCollateral extends BaseContract { overrides?: Overrides & { from?: PromiseOrValue } ): Promise; - "setMarketConfig(uint256,address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)"( - _borrowOpeningFee: PromiseOrValue, + "setMarketConfig(address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)"( _oracle: PromiseOrValue, _oracleData: PromiseOrValue, _conservator: PromiseOrValue, @@ -4790,7 +4780,6 @@ export interface SGLCollateral extends BaseContract { ): Promise; setMarketConfig( - _borrowOpeningFee: PromiseOrValue, _oracle: PromiseOrValue, _oracleData: PromiseOrValue, _conservator: PromiseOrValue, @@ -4805,8 +4794,7 @@ export interface SGLCollateral extends BaseContract { overrides?: Overrides & { from?: PromiseOrValue } ): Promise; - "setMarketConfig(uint256,address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)"( - _borrowOpeningFee: PromiseOrValue, + "setMarketConfig(address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)"( _oracle: PromiseOrValue, _oracleData: PromiseOrValue, _conservator: PromiseOrValue, diff --git a/src/typechain/tapioca-bar/markets/singularity/SGLCommon.ts b/src/typechain/tapioca-bar/markets/singularity/SGLCommon.ts index f09b4d4b..3f0d617c 100644 --- a/src/typechain/tapioca-bar/markets/singularity/SGLCommon.ts +++ b/src/typechain/tapioca-bar/markets/singularity/SGLCommon.ts @@ -92,7 +92,7 @@ export interface SGLCommonInterface extends utils.Interface { "protocolFee()": FunctionFragment; "rateTimestamp()": FunctionFragment; "rateValidDuration()": FunctionFragment; - "setMarketConfig(uint256,address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)": FunctionFragment; + "setMarketConfig(address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)": FunctionFragment; "startingInterestPerSecond()": FunctionFragment; "symbol()": FunctionFragment; "totalAsset()": FunctionFragment; @@ -211,7 +211,7 @@ export interface SGLCommonInterface extends utils.Interface { | "rateValidDuration" | "rateValidDuration()" | "setMarketConfig" - | "setMarketConfig(uint256,address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)" + | "setMarketConfig(address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)" | "startingInterestPerSecond" | "startingInterestPerSecond()" | "symbol" @@ -631,7 +631,6 @@ export interface SGLCommonInterface extends utils.Interface { encodeFunctionData( functionFragment: "setMarketConfig", values: [ - PromiseOrValue, PromiseOrValue, PromiseOrValue, PromiseOrValue, @@ -646,9 +645,8 @@ export interface SGLCommonInterface extends utils.Interface { ] ): string; encodeFunctionData( - functionFragment: "setMarketConfig(uint256,address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)", + functionFragment: "setMarketConfig(address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)", values: [ - PromiseOrValue, PromiseOrValue, PromiseOrValue, PromiseOrValue, @@ -1112,7 +1110,7 @@ export interface SGLCommonInterface extends utils.Interface { data: BytesLike ): Result; decodeFunctionResult( - functionFragment: "setMarketConfig(uint256,address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)", + functionFragment: "setMarketConfig(address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)", data: BytesLike ): Result; decodeFunctionResult( @@ -2184,7 +2182,6 @@ export interface SGLCommon extends BaseContract { "rateValidDuration()"(overrides?: CallOverrides): Promise<[BigNumber]>; setMarketConfig( - _borrowOpeningFee: PromiseOrValue, _oracle: PromiseOrValue, _oracleData: PromiseOrValue, _conservator: PromiseOrValue, @@ -2199,8 +2196,7 @@ export interface SGLCommon extends BaseContract { overrides?: Overrides & { from?: PromiseOrValue } ): Promise; - "setMarketConfig(uint256,address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)"( - _borrowOpeningFee: PromiseOrValue, + "setMarketConfig(address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)"( _oracle: PromiseOrValue, _oracleData: PromiseOrValue, _conservator: PromiseOrValue, @@ -2717,7 +2713,6 @@ export interface SGLCommon extends BaseContract { "rateValidDuration()"(overrides?: CallOverrides): Promise; setMarketConfig( - _borrowOpeningFee: PromiseOrValue, _oracle: PromiseOrValue, _oracleData: PromiseOrValue, _conservator: PromiseOrValue, @@ -2732,8 +2727,7 @@ export interface SGLCommon extends BaseContract { overrides?: Overrides & { from?: PromiseOrValue } ): Promise; - "setMarketConfig(uint256,address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)"( - _borrowOpeningFee: PromiseOrValue, + "setMarketConfig(address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)"( _oracle: PromiseOrValue, _oracleData: PromiseOrValue, _conservator: PromiseOrValue, @@ -3232,7 +3226,6 @@ export interface SGLCommon extends BaseContract { "rateValidDuration()"(overrides?: CallOverrides): Promise; setMarketConfig( - _borrowOpeningFee: PromiseOrValue, _oracle: PromiseOrValue, _oracleData: PromiseOrValue, _conservator: PromiseOrValue, @@ -3247,8 +3240,7 @@ export interface SGLCommon extends BaseContract { overrides?: CallOverrides ): Promise; - "setMarketConfig(uint256,address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)"( - _borrowOpeningFee: PromiseOrValue, + "setMarketConfig(address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)"( _oracle: PromiseOrValue, _oracleData: PromiseOrValue, _conservator: PromiseOrValue, @@ -4038,7 +4030,6 @@ export interface SGLCommon extends BaseContract { "rateValidDuration()"(overrides?: CallOverrides): Promise; setMarketConfig( - _borrowOpeningFee: PromiseOrValue, _oracle: PromiseOrValue, _oracleData: PromiseOrValue, _conservator: PromiseOrValue, @@ -4053,8 +4044,7 @@ export interface SGLCommon extends BaseContract { overrides?: Overrides & { from?: PromiseOrValue } ): Promise; - "setMarketConfig(uint256,address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)"( - _borrowOpeningFee: PromiseOrValue, + "setMarketConfig(address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)"( _oracle: PromiseOrValue, _oracleData: PromiseOrValue, _conservator: PromiseOrValue, @@ -4572,7 +4562,6 @@ export interface SGLCommon extends BaseContract { ): Promise; setMarketConfig( - _borrowOpeningFee: PromiseOrValue, _oracle: PromiseOrValue, _oracleData: PromiseOrValue, _conservator: PromiseOrValue, @@ -4587,8 +4576,7 @@ export interface SGLCommon extends BaseContract { overrides?: Overrides & { from?: PromiseOrValue } ): Promise; - "setMarketConfig(uint256,address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)"( - _borrowOpeningFee: PromiseOrValue, + "setMarketConfig(address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)"( _oracle: PromiseOrValue, _oracleData: PromiseOrValue, _conservator: PromiseOrValue, diff --git a/src/typechain/tapioca-bar/markets/singularity/SGLLendingCommon.ts b/src/typechain/tapioca-bar/markets/singularity/SGLLendingCommon.ts index 7475c7ed..3be2f272 100644 --- a/src/typechain/tapioca-bar/markets/singularity/SGLLendingCommon.ts +++ b/src/typechain/tapioca-bar/markets/singularity/SGLLendingCommon.ts @@ -92,7 +92,7 @@ export interface SGLLendingCommonInterface extends utils.Interface { "protocolFee()": FunctionFragment; "rateTimestamp()": FunctionFragment; "rateValidDuration()": FunctionFragment; - "setMarketConfig(uint256,address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)": FunctionFragment; + "setMarketConfig(address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)": FunctionFragment; "startingInterestPerSecond()": FunctionFragment; "symbol()": FunctionFragment; "totalAsset()": FunctionFragment; @@ -211,7 +211,7 @@ export interface SGLLendingCommonInterface extends utils.Interface { | "rateValidDuration" | "rateValidDuration()" | "setMarketConfig" - | "setMarketConfig(uint256,address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)" + | "setMarketConfig(address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)" | "startingInterestPerSecond" | "startingInterestPerSecond()" | "symbol" @@ -631,7 +631,6 @@ export interface SGLLendingCommonInterface extends utils.Interface { encodeFunctionData( functionFragment: "setMarketConfig", values: [ - PromiseOrValue, PromiseOrValue, PromiseOrValue, PromiseOrValue, @@ -646,9 +645,8 @@ export interface SGLLendingCommonInterface extends utils.Interface { ] ): string; encodeFunctionData( - functionFragment: "setMarketConfig(uint256,address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)", + functionFragment: "setMarketConfig(address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)", values: [ - PromiseOrValue, PromiseOrValue, PromiseOrValue, PromiseOrValue, @@ -1112,7 +1110,7 @@ export interface SGLLendingCommonInterface extends utils.Interface { data: BytesLike ): Result; decodeFunctionResult( - functionFragment: "setMarketConfig(uint256,address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)", + functionFragment: "setMarketConfig(address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)", data: BytesLike ): Result; decodeFunctionResult( @@ -2184,7 +2182,6 @@ export interface SGLLendingCommon extends BaseContract { "rateValidDuration()"(overrides?: CallOverrides): Promise<[BigNumber]>; setMarketConfig( - _borrowOpeningFee: PromiseOrValue, _oracle: PromiseOrValue, _oracleData: PromiseOrValue, _conservator: PromiseOrValue, @@ -2199,8 +2196,7 @@ export interface SGLLendingCommon extends BaseContract { overrides?: Overrides & { from?: PromiseOrValue } ): Promise; - "setMarketConfig(uint256,address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)"( - _borrowOpeningFee: PromiseOrValue, + "setMarketConfig(address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)"( _oracle: PromiseOrValue, _oracleData: PromiseOrValue, _conservator: PromiseOrValue, @@ -2717,7 +2713,6 @@ export interface SGLLendingCommon extends BaseContract { "rateValidDuration()"(overrides?: CallOverrides): Promise; setMarketConfig( - _borrowOpeningFee: PromiseOrValue, _oracle: PromiseOrValue, _oracleData: PromiseOrValue, _conservator: PromiseOrValue, @@ -2732,8 +2727,7 @@ export interface SGLLendingCommon extends BaseContract { overrides?: Overrides & { from?: PromiseOrValue } ): Promise; - "setMarketConfig(uint256,address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)"( - _borrowOpeningFee: PromiseOrValue, + "setMarketConfig(address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)"( _oracle: PromiseOrValue, _oracleData: PromiseOrValue, _conservator: PromiseOrValue, @@ -3232,7 +3226,6 @@ export interface SGLLendingCommon extends BaseContract { "rateValidDuration()"(overrides?: CallOverrides): Promise; setMarketConfig( - _borrowOpeningFee: PromiseOrValue, _oracle: PromiseOrValue, _oracleData: PromiseOrValue, _conservator: PromiseOrValue, @@ -3247,8 +3240,7 @@ export interface SGLLendingCommon extends BaseContract { overrides?: CallOverrides ): Promise; - "setMarketConfig(uint256,address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)"( - _borrowOpeningFee: PromiseOrValue, + "setMarketConfig(address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)"( _oracle: PromiseOrValue, _oracleData: PromiseOrValue, _conservator: PromiseOrValue, @@ -4038,7 +4030,6 @@ export interface SGLLendingCommon extends BaseContract { "rateValidDuration()"(overrides?: CallOverrides): Promise; setMarketConfig( - _borrowOpeningFee: PromiseOrValue, _oracle: PromiseOrValue, _oracleData: PromiseOrValue, _conservator: PromiseOrValue, @@ -4053,8 +4044,7 @@ export interface SGLLendingCommon extends BaseContract { overrides?: Overrides & { from?: PromiseOrValue } ): Promise; - "setMarketConfig(uint256,address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)"( - _borrowOpeningFee: PromiseOrValue, + "setMarketConfig(address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)"( _oracle: PromiseOrValue, _oracleData: PromiseOrValue, _conservator: PromiseOrValue, @@ -4572,7 +4562,6 @@ export interface SGLLendingCommon extends BaseContract { ): Promise; setMarketConfig( - _borrowOpeningFee: PromiseOrValue, _oracle: PromiseOrValue, _oracleData: PromiseOrValue, _conservator: PromiseOrValue, @@ -4587,8 +4576,7 @@ export interface SGLLendingCommon extends BaseContract { overrides?: Overrides & { from?: PromiseOrValue } ): Promise; - "setMarketConfig(uint256,address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)"( - _borrowOpeningFee: PromiseOrValue, + "setMarketConfig(address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)"( _oracle: PromiseOrValue, _oracleData: PromiseOrValue, _conservator: PromiseOrValue, diff --git a/src/typechain/tapioca-bar/markets/singularity/SGLLeverage.ts b/src/typechain/tapioca-bar/markets/singularity/SGLLeverage.ts index f092a744..6d707711 100644 --- a/src/typechain/tapioca-bar/markets/singularity/SGLLeverage.ts +++ b/src/typechain/tapioca-bar/markets/singularity/SGLLeverage.ts @@ -153,7 +153,7 @@ export interface SGLLeverageInterface extends utils.Interface { "rateTimestamp()": FunctionFragment; "rateValidDuration()": FunctionFragment; "sellCollateral(address,uint256,uint256,address,bytes)": FunctionFragment; - "setMarketConfig(uint256,address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)": FunctionFragment; + "setMarketConfig(address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)": FunctionFragment; "startingInterestPerSecond()": FunctionFragment; "symbol()": FunctionFragment; "totalAsset()": FunctionFragment; @@ -280,7 +280,7 @@ export interface SGLLeverageInterface extends utils.Interface { | "sellCollateral" | "sellCollateral(address,uint256,uint256,address,bytes)" | "setMarketConfig" - | "setMarketConfig(uint256,address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)" + | "setMarketConfig(address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)" | "startingInterestPerSecond" | "startingInterestPerSecond()" | "symbol" @@ -788,7 +788,6 @@ export interface SGLLeverageInterface extends utils.Interface { encodeFunctionData( functionFragment: "setMarketConfig", values: [ - PromiseOrValue, PromiseOrValue, PromiseOrValue, PromiseOrValue, @@ -803,9 +802,8 @@ export interface SGLLeverageInterface extends utils.Interface { ] ): string; encodeFunctionData( - functionFragment: "setMarketConfig(uint256,address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)", + functionFragment: "setMarketConfig(address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)", values: [ - PromiseOrValue, PromiseOrValue, PromiseOrValue, PromiseOrValue, @@ -1301,7 +1299,7 @@ export interface SGLLeverageInterface extends utils.Interface { data: BytesLike ): Result; decodeFunctionResult( - functionFragment: "setMarketConfig(uint256,address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)", + functionFragment: "setMarketConfig(address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)", data: BytesLike ): Result; decodeFunctionResult( @@ -2453,7 +2451,6 @@ export interface SGLLeverage extends BaseContract { ): Promise; setMarketConfig( - _borrowOpeningFee: PromiseOrValue, _oracle: PromiseOrValue, _oracleData: PromiseOrValue, _conservator: PromiseOrValue, @@ -2468,8 +2465,7 @@ export interface SGLLeverage extends BaseContract { overrides?: Overrides & { from?: PromiseOrValue } ): Promise; - "setMarketConfig(uint256,address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)"( - _borrowOpeningFee: PromiseOrValue, + "setMarketConfig(address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)"( _oracle: PromiseOrValue, _oracleData: PromiseOrValue, _conservator: PromiseOrValue, @@ -3066,7 +3062,6 @@ export interface SGLLeverage extends BaseContract { ): Promise; setMarketConfig( - _borrowOpeningFee: PromiseOrValue, _oracle: PromiseOrValue, _oracleData: PromiseOrValue, _conservator: PromiseOrValue, @@ -3081,8 +3076,7 @@ export interface SGLLeverage extends BaseContract { overrides?: Overrides & { from?: PromiseOrValue } ): Promise; - "setMarketConfig(uint256,address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)"( - _borrowOpeningFee: PromiseOrValue, + "setMarketConfig(address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)"( _oracle: PromiseOrValue, _oracleData: PromiseOrValue, _conservator: PromiseOrValue, @@ -3661,7 +3655,6 @@ export interface SGLLeverage extends BaseContract { ): Promise; setMarketConfig( - _borrowOpeningFee: PromiseOrValue, _oracle: PromiseOrValue, _oracleData: PromiseOrValue, _conservator: PromiseOrValue, @@ -3676,8 +3669,7 @@ export interface SGLLeverage extends BaseContract { overrides?: CallOverrides ): Promise; - "setMarketConfig(uint256,address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)"( - _borrowOpeningFee: PromiseOrValue, + "setMarketConfig(address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)"( _oracle: PromiseOrValue, _oracleData: PromiseOrValue, _conservator: PromiseOrValue, @@ -4547,7 +4539,6 @@ export interface SGLLeverage extends BaseContract { ): Promise; setMarketConfig( - _borrowOpeningFee: PromiseOrValue, _oracle: PromiseOrValue, _oracleData: PromiseOrValue, _conservator: PromiseOrValue, @@ -4562,8 +4553,7 @@ export interface SGLLeverage extends BaseContract { overrides?: Overrides & { from?: PromiseOrValue } ): Promise; - "setMarketConfig(uint256,address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)"( - _borrowOpeningFee: PromiseOrValue, + "setMarketConfig(address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)"( _oracle: PromiseOrValue, _oracleData: PromiseOrValue, _conservator: PromiseOrValue, @@ -5161,7 +5151,6 @@ export interface SGLLeverage extends BaseContract { ): Promise; setMarketConfig( - _borrowOpeningFee: PromiseOrValue, _oracle: PromiseOrValue, _oracleData: PromiseOrValue, _conservator: PromiseOrValue, @@ -5176,8 +5165,7 @@ export interface SGLLeverage extends BaseContract { overrides?: Overrides & { from?: PromiseOrValue } ): Promise; - "setMarketConfig(uint256,address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)"( - _borrowOpeningFee: PromiseOrValue, + "setMarketConfig(address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)"( _oracle: PromiseOrValue, _oracleData: PromiseOrValue, _conservator: PromiseOrValue, diff --git a/src/typechain/tapioca-bar/markets/singularity/SGLLiquidation.ts b/src/typechain/tapioca-bar/markets/singularity/SGLLiquidation.ts index e6917c1b..faba5d3d 100644 --- a/src/typechain/tapioca-bar/markets/singularity/SGLLiquidation.ts +++ b/src/typechain/tapioca-bar/markets/singularity/SGLLiquidation.ts @@ -94,7 +94,7 @@ export interface SGLLiquidationInterface extends utils.Interface { "protocolFee()": FunctionFragment; "rateTimestamp()": FunctionFragment; "rateValidDuration()": FunctionFragment; - "setMarketConfig(uint256,address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)": FunctionFragment; + "setMarketConfig(address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)": FunctionFragment; "startingInterestPerSecond()": FunctionFragment; "symbol()": FunctionFragment; "totalAsset()": FunctionFragment; @@ -217,7 +217,7 @@ export interface SGLLiquidationInterface extends utils.Interface { | "rateValidDuration" | "rateValidDuration()" | "setMarketConfig" - | "setMarketConfig(uint256,address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)" + | "setMarketConfig(address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)" | "startingInterestPerSecond" | "startingInterestPerSecond()" | "symbol" @@ -673,7 +673,6 @@ export interface SGLLiquidationInterface extends utils.Interface { encodeFunctionData( functionFragment: "setMarketConfig", values: [ - PromiseOrValue, PromiseOrValue, PromiseOrValue, PromiseOrValue, @@ -688,9 +687,8 @@ export interface SGLLiquidationInterface extends utils.Interface { ] ): string; encodeFunctionData( - functionFragment: "setMarketConfig(uint256,address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)", + functionFragment: "setMarketConfig(address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)", values: [ - PromiseOrValue, PromiseOrValue, PromiseOrValue, PromiseOrValue, @@ -1167,7 +1165,7 @@ export interface SGLLiquidationInterface extends utils.Interface { data: BytesLike ): Result; decodeFunctionResult( - functionFragment: "setMarketConfig(uint256,address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)", + functionFragment: "setMarketConfig(address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)", data: BytesLike ): Result; decodeFunctionResult( @@ -2271,7 +2269,6 @@ export interface SGLLiquidation extends BaseContract { "rateValidDuration()"(overrides?: CallOverrides): Promise<[BigNumber]>; setMarketConfig( - _borrowOpeningFee: PromiseOrValue, _oracle: PromiseOrValue, _oracleData: PromiseOrValue, _conservator: PromiseOrValue, @@ -2286,8 +2283,7 @@ export interface SGLLiquidation extends BaseContract { overrides?: Overrides & { from?: PromiseOrValue } ): Promise; - "setMarketConfig(uint256,address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)"( - _borrowOpeningFee: PromiseOrValue, + "setMarketConfig(address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)"( _oracle: PromiseOrValue, _oracleData: PromiseOrValue, _conservator: PromiseOrValue, @@ -2836,7 +2832,6 @@ export interface SGLLiquidation extends BaseContract { "rateValidDuration()"(overrides?: CallOverrides): Promise; setMarketConfig( - _borrowOpeningFee: PromiseOrValue, _oracle: PromiseOrValue, _oracleData: PromiseOrValue, _conservator: PromiseOrValue, @@ -2851,8 +2846,7 @@ export interface SGLLiquidation extends BaseContract { overrides?: Overrides & { from?: PromiseOrValue } ): Promise; - "setMarketConfig(uint256,address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)"( - _borrowOpeningFee: PromiseOrValue, + "setMarketConfig(address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)"( _oracle: PromiseOrValue, _oracleData: PromiseOrValue, _conservator: PromiseOrValue, @@ -3383,7 +3377,6 @@ export interface SGLLiquidation extends BaseContract { "rateValidDuration()"(overrides?: CallOverrides): Promise; setMarketConfig( - _borrowOpeningFee: PromiseOrValue, _oracle: PromiseOrValue, _oracleData: PromiseOrValue, _conservator: PromiseOrValue, @@ -3398,8 +3391,7 @@ export interface SGLLiquidation extends BaseContract { overrides?: CallOverrides ): Promise; - "setMarketConfig(uint256,address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)"( - _borrowOpeningFee: PromiseOrValue, + "setMarketConfig(address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)"( _oracle: PromiseOrValue, _oracleData: PromiseOrValue, _conservator: PromiseOrValue, @@ -4221,7 +4213,6 @@ export interface SGLLiquidation extends BaseContract { "rateValidDuration()"(overrides?: CallOverrides): Promise; setMarketConfig( - _borrowOpeningFee: PromiseOrValue, _oracle: PromiseOrValue, _oracleData: PromiseOrValue, _conservator: PromiseOrValue, @@ -4236,8 +4227,7 @@ export interface SGLLiquidation extends BaseContract { overrides?: Overrides & { from?: PromiseOrValue } ): Promise; - "setMarketConfig(uint256,address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)"( - _borrowOpeningFee: PromiseOrValue, + "setMarketConfig(address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)"( _oracle: PromiseOrValue, _oracleData: PromiseOrValue, _conservator: PromiseOrValue, @@ -4787,7 +4777,6 @@ export interface SGLLiquidation extends BaseContract { ): Promise; setMarketConfig( - _borrowOpeningFee: PromiseOrValue, _oracle: PromiseOrValue, _oracleData: PromiseOrValue, _conservator: PromiseOrValue, @@ -4802,8 +4791,7 @@ export interface SGLLiquidation extends BaseContract { overrides?: Overrides & { from?: PromiseOrValue } ): Promise; - "setMarketConfig(uint256,address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)"( - _borrowOpeningFee: PromiseOrValue, + "setMarketConfig(address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)"( _oracle: PromiseOrValue, _oracleData: PromiseOrValue, _conservator: PromiseOrValue, diff --git a/src/typechain/tapioca-bar/markets/singularity/SGLStorage.ts b/src/typechain/tapioca-bar/markets/singularity/SGLStorage.ts index 3d9a5a49..8dfad525 100644 --- a/src/typechain/tapioca-bar/markets/singularity/SGLStorage.ts +++ b/src/typechain/tapioca-bar/markets/singularity/SGLStorage.ts @@ -76,7 +76,7 @@ export interface SGLStorageInterface extends utils.Interface { "protocolFee()": FunctionFragment; "rateTimestamp()": FunctionFragment; "rateValidDuration()": FunctionFragment; - "setMarketConfig(uint256,address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)": FunctionFragment; + "setMarketConfig(address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)": FunctionFragment; "startingInterestPerSecond()": FunctionFragment; "symbol()": FunctionFragment; "totalAsset()": FunctionFragment; @@ -191,7 +191,7 @@ export interface SGLStorageInterface extends utils.Interface { | "rateValidDuration" | "rateValidDuration()" | "setMarketConfig" - | "setMarketConfig(uint256,address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)" + | "setMarketConfig(address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)" | "startingInterestPerSecond" | "startingInterestPerSecond()" | "symbol" @@ -601,7 +601,6 @@ export interface SGLStorageInterface extends utils.Interface { encodeFunctionData( functionFragment: "setMarketConfig", values: [ - PromiseOrValue, PromiseOrValue, PromiseOrValue, PromiseOrValue, @@ -616,9 +615,8 @@ export interface SGLStorageInterface extends utils.Interface { ] ): string; encodeFunctionData( - functionFragment: "setMarketConfig(uint256,address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)", + functionFragment: "setMarketConfig(address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)", values: [ - PromiseOrValue, PromiseOrValue, PromiseOrValue, PromiseOrValue, @@ -1072,7 +1070,7 @@ export interface SGLStorageInterface extends utils.Interface { data: BytesLike ): Result; decodeFunctionResult( - functionFragment: "setMarketConfig(uint256,address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)", + functionFragment: "setMarketConfig(address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)", data: BytesLike ): Result; decodeFunctionResult( @@ -2118,7 +2116,6 @@ export interface SGLStorage extends BaseContract { "rateValidDuration()"(overrides?: CallOverrides): Promise<[BigNumber]>; setMarketConfig( - _borrowOpeningFee: PromiseOrValue, _oracle: PromiseOrValue, _oracleData: PromiseOrValue, _conservator: PromiseOrValue, @@ -2133,8 +2130,7 @@ export interface SGLStorage extends BaseContract { overrides?: Overrides & { from?: PromiseOrValue } ): Promise; - "setMarketConfig(uint256,address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)"( - _borrowOpeningFee: PromiseOrValue, + "setMarketConfig(address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)"( _oracle: PromiseOrValue, _oracleData: PromiseOrValue, _conservator: PromiseOrValue, @@ -2625,7 +2621,6 @@ export interface SGLStorage extends BaseContract { "rateValidDuration()"(overrides?: CallOverrides): Promise; setMarketConfig( - _borrowOpeningFee: PromiseOrValue, _oracle: PromiseOrValue, _oracleData: PromiseOrValue, _conservator: PromiseOrValue, @@ -2640,8 +2635,7 @@ export interface SGLStorage extends BaseContract { overrides?: Overrides & { from?: PromiseOrValue } ): Promise; - "setMarketConfig(uint256,address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)"( - _borrowOpeningFee: PromiseOrValue, + "setMarketConfig(address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)"( _oracle: PromiseOrValue, _oracleData: PromiseOrValue, _conservator: PromiseOrValue, @@ -3118,7 +3112,6 @@ export interface SGLStorage extends BaseContract { "rateValidDuration()"(overrides?: CallOverrides): Promise; setMarketConfig( - _borrowOpeningFee: PromiseOrValue, _oracle: PromiseOrValue, _oracleData: PromiseOrValue, _conservator: PromiseOrValue, @@ -3133,8 +3126,7 @@ export interface SGLStorage extends BaseContract { overrides?: CallOverrides ): Promise; - "setMarketConfig(uint256,address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)"( - _borrowOpeningFee: PromiseOrValue, + "setMarketConfig(address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)"( _oracle: PromiseOrValue, _oracleData: PromiseOrValue, _conservator: PromiseOrValue, @@ -3912,7 +3904,6 @@ export interface SGLStorage extends BaseContract { "rateValidDuration()"(overrides?: CallOverrides): Promise; setMarketConfig( - _borrowOpeningFee: PromiseOrValue, _oracle: PromiseOrValue, _oracleData: PromiseOrValue, _conservator: PromiseOrValue, @@ -3927,8 +3918,7 @@ export interface SGLStorage extends BaseContract { overrides?: Overrides & { from?: PromiseOrValue } ): Promise; - "setMarketConfig(uint256,address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)"( - _borrowOpeningFee: PromiseOrValue, + "setMarketConfig(address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)"( _oracle: PromiseOrValue, _oracleData: PromiseOrValue, _conservator: PromiseOrValue, @@ -4430,7 +4420,6 @@ export interface SGLStorage extends BaseContract { ): Promise; setMarketConfig( - _borrowOpeningFee: PromiseOrValue, _oracle: PromiseOrValue, _oracleData: PromiseOrValue, _conservator: PromiseOrValue, @@ -4445,8 +4434,7 @@ export interface SGLStorage extends BaseContract { overrides?: Overrides & { from?: PromiseOrValue } ): Promise; - "setMarketConfig(uint256,address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)"( - _borrowOpeningFee: PromiseOrValue, + "setMarketConfig(address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)"( _oracle: PromiseOrValue, _oracleData: PromiseOrValue, _conservator: PromiseOrValue, diff --git a/src/typechain/tapioca-bar/markets/singularity/Singularity.ts b/src/typechain/tapioca-bar/markets/singularity/Singularity.ts index 1c7d8aff..fd76f7e9 100644 --- a/src/typechain/tapioca-bar/markets/singularity/Singularity.ts +++ b/src/typechain/tapioca-bar/markets/singularity/Singularity.ts @@ -170,8 +170,8 @@ export interface SingularityInterface extends utils.Interface { "repay(address,address,bool,uint256)": FunctionFragment; "rescueEth(uint256,address)": FunctionFragment; "sellCollateral(address,uint256,uint256,address,bytes)": FunctionFragment; - "setMarketConfig(uint256,address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)": FunctionFragment; - "setSingularityConfig(uint256,uint256,uint256,uint256,uint64,uint64,uint256)": FunctionFragment; + "setMarketConfig(address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)": FunctionFragment; + "setSingularityConfig(uint256,uint256,uint256,uint256,uint256,uint64,uint64,uint256)": FunctionFragment; "startingInterestPerSecond()": FunctionFragment; "symbol()": FunctionFragment; "totalAsset()": FunctionFragment; @@ -333,9 +333,9 @@ export interface SingularityInterface extends utils.Interface { | "sellCollateral" | "sellCollateral(address,uint256,uint256,address,bytes)" | "setMarketConfig" - | "setMarketConfig(uint256,address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)" + | "setMarketConfig(address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)" | "setSingularityConfig" - | "setSingularityConfig(uint256,uint256,uint256,uint256,uint64,uint64,uint256)" + | "setSingularityConfig(uint256,uint256,uint256,uint256,uint256,uint64,uint64,uint256)" | "startingInterestPerSecond" | "startingInterestPerSecond()" | "symbol" @@ -1057,7 +1057,6 @@ export interface SingularityInterface extends utils.Interface { encodeFunctionData( functionFragment: "setMarketConfig", values: [ - PromiseOrValue, PromiseOrValue, PromiseOrValue, PromiseOrValue, @@ -1072,9 +1071,8 @@ export interface SingularityInterface extends utils.Interface { ] ): string; encodeFunctionData( - functionFragment: "setMarketConfig(uint256,address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)", + functionFragment: "setMarketConfig(address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)", values: [ - PromiseOrValue, PromiseOrValue, PromiseOrValue, PromiseOrValue, @@ -1097,11 +1095,12 @@ export interface SingularityInterface extends utils.Interface { PromiseOrValue, PromiseOrValue, PromiseOrValue, + PromiseOrValue, PromiseOrValue ] ): string; encodeFunctionData( - functionFragment: "setSingularityConfig(uint256,uint256,uint256,uint256,uint64,uint64,uint256)", + functionFragment: "setSingularityConfig(uint256,uint256,uint256,uint256,uint256,uint64,uint64,uint256)", values: [ PromiseOrValue, PromiseOrValue, @@ -1109,6 +1108,7 @@ export interface SingularityInterface extends utils.Interface { PromiseOrValue, PromiseOrValue, PromiseOrValue, + PromiseOrValue, PromiseOrValue ] ): string; @@ -1686,12 +1686,10 @@ export interface SingularityInterface extends utils.Interface { functionFragment: "removeAsset(address,address,uint256)", data: BytesLike ): Result; - decodeFunctionResult(functionFragment: "repay", data: BytesLike): Result; decodeFunctionResult( functionFragment: "removeCollateral", data: BytesLike ): Result; - decodeFunctionResult(functionFragment: "rescueEth", data: BytesLike): Result; decodeFunctionResult( functionFragment: "removeCollateral(address,address,uint256)", data: BytesLike @@ -1719,7 +1717,7 @@ export interface SingularityInterface extends utils.Interface { data: BytesLike ): Result; decodeFunctionResult( - functionFragment: "setMarketConfig(uint256,address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)", + functionFragment: "setMarketConfig(address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)", data: BytesLike ): Result; decodeFunctionResult( @@ -1727,7 +1725,7 @@ export interface SingularityInterface extends utils.Interface { data: BytesLike ): Result; decodeFunctionResult( - functionFragment: "setSingularityConfig(uint256,uint256,uint256,uint256,uint64,uint64,uint256)", + functionFragment: "setSingularityConfig(uint256,uint256,uint256,uint256,uint256,uint64,uint64,uint256)", data: BytesLike ): Result; decodeFunctionResult( @@ -3081,7 +3079,6 @@ export interface Singularity extends BaseContract { ): Promise; setMarketConfig( - _borrowOpeningFee: PromiseOrValue, _oracle: PromiseOrValue, _oracleData: PromiseOrValue, _conservator: PromiseOrValue, @@ -3096,8 +3093,7 @@ export interface Singularity extends BaseContract { overrides?: Overrides & { from?: PromiseOrValue } ): Promise; - "setMarketConfig(uint256,address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)"( - _borrowOpeningFee: PromiseOrValue, + "setMarketConfig(address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)"( _oracle: PromiseOrValue, _oracleData: PromiseOrValue, _conservator: PromiseOrValue, @@ -3113,6 +3109,7 @@ export interface Singularity extends BaseContract { ): Promise; setSingularityConfig( + _borrowOpeningFee: PromiseOrValue, _lqCollateralizationRate: PromiseOrValue, _liquidationMultiplier: PromiseOrValue, _minimumTargetUtilization: PromiseOrValue, @@ -3123,7 +3120,8 @@ export interface Singularity extends BaseContract { overrides?: Overrides & { from?: PromiseOrValue } ): Promise; - "setSingularityConfig(uint256,uint256,uint256,uint256,uint64,uint64,uint256)"( + "setSingularityConfig(uint256,uint256,uint256,uint256,uint256,uint64,uint64,uint256)"( + _borrowOpeningFee: PromiseOrValue, _lqCollateralizationRate: PromiseOrValue, _liquidationMultiplier: PromiseOrValue, _minimumTargetUtilization: PromiseOrValue, @@ -3922,7 +3920,6 @@ export interface Singularity extends BaseContract { ): Promise; setMarketConfig( - _borrowOpeningFee: PromiseOrValue, _oracle: PromiseOrValue, _oracleData: PromiseOrValue, _conservator: PromiseOrValue, @@ -3937,8 +3934,7 @@ export interface Singularity extends BaseContract { overrides?: Overrides & { from?: PromiseOrValue } ): Promise; - "setMarketConfig(uint256,address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)"( - _borrowOpeningFee: PromiseOrValue, + "setMarketConfig(address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)"( _oracle: PromiseOrValue, _oracleData: PromiseOrValue, _conservator: PromiseOrValue, @@ -3954,6 +3950,7 @@ export interface Singularity extends BaseContract { ): Promise; setSingularityConfig( + _borrowOpeningFee: PromiseOrValue, _lqCollateralizationRate: PromiseOrValue, _liquidationMultiplier: PromiseOrValue, _minimumTargetUtilization: PromiseOrValue, @@ -3964,7 +3961,8 @@ export interface Singularity extends BaseContract { overrides?: Overrides & { from?: PromiseOrValue } ): Promise; - "setSingularityConfig(uint256,uint256,uint256,uint256,uint64,uint64,uint256)"( + "setSingularityConfig(uint256,uint256,uint256,uint256,uint256,uint64,uint64,uint256)"( + _borrowOpeningFee: PromiseOrValue, _lqCollateralizationRate: PromiseOrValue, _liquidationMultiplier: PromiseOrValue, _minimumTargetUtilization: PromiseOrValue, @@ -4745,7 +4743,6 @@ export interface Singularity extends BaseContract { ): Promise; setMarketConfig( - _borrowOpeningFee: PromiseOrValue, _oracle: PromiseOrValue, _oracleData: PromiseOrValue, _conservator: PromiseOrValue, @@ -4760,8 +4757,7 @@ export interface Singularity extends BaseContract { overrides?: CallOverrides ): Promise; - "setMarketConfig(uint256,address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)"( - _borrowOpeningFee: PromiseOrValue, + "setMarketConfig(address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)"( _oracle: PromiseOrValue, _oracleData: PromiseOrValue, _conservator: PromiseOrValue, @@ -4777,6 +4773,7 @@ export interface Singularity extends BaseContract { ): Promise; setSingularityConfig( + _borrowOpeningFee: PromiseOrValue, _lqCollateralizationRate: PromiseOrValue, _liquidationMultiplier: PromiseOrValue, _minimumTargetUtilization: PromiseOrValue, @@ -4787,7 +4784,8 @@ export interface Singularity extends BaseContract { overrides?: CallOverrides ): Promise; - "setSingularityConfig(uint256,uint256,uint256,uint256,uint64,uint64,uint256)"( + "setSingularityConfig(uint256,uint256,uint256,uint256,uint256,uint64,uint64,uint256)"( + _borrowOpeningFee: PromiseOrValue, _lqCollateralizationRate: PromiseOrValue, _liquidationMultiplier: PromiseOrValue, _minimumTargetUtilization: PromiseOrValue, @@ -5859,7 +5857,6 @@ export interface Singularity extends BaseContract { ): Promise; setMarketConfig( - _borrowOpeningFee: PromiseOrValue, _oracle: PromiseOrValue, _oracleData: PromiseOrValue, _conservator: PromiseOrValue, @@ -5874,8 +5871,7 @@ export interface Singularity extends BaseContract { overrides?: Overrides & { from?: PromiseOrValue } ): Promise; - "setMarketConfig(uint256,address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)"( - _borrowOpeningFee: PromiseOrValue, + "setMarketConfig(address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)"( _oracle: PromiseOrValue, _oracleData: PromiseOrValue, _conservator: PromiseOrValue, @@ -5891,6 +5887,7 @@ export interface Singularity extends BaseContract { ): Promise; setSingularityConfig( + _borrowOpeningFee: PromiseOrValue, _lqCollateralizationRate: PromiseOrValue, _liquidationMultiplier: PromiseOrValue, _minimumTargetUtilization: PromiseOrValue, @@ -5901,7 +5898,8 @@ export interface Singularity extends BaseContract { overrides?: Overrides & { from?: PromiseOrValue } ): Promise; - "setSingularityConfig(uint256,uint256,uint256,uint256,uint64,uint64,uint256)"( + "setSingularityConfig(uint256,uint256,uint256,uint256,uint256,uint64,uint64,uint256)"( + _borrowOpeningFee: PromiseOrValue, _lqCollateralizationRate: PromiseOrValue, _liquidationMultiplier: PromiseOrValue, _minimumTargetUtilization: PromiseOrValue, @@ -6707,7 +6705,6 @@ export interface Singularity extends BaseContract { ): Promise; setMarketConfig( - _borrowOpeningFee: PromiseOrValue, _oracle: PromiseOrValue, _oracleData: PromiseOrValue, _conservator: PromiseOrValue, @@ -6722,8 +6719,7 @@ export interface Singularity extends BaseContract { overrides?: Overrides & { from?: PromiseOrValue } ): Promise; - "setMarketConfig(uint256,address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)"( - _borrowOpeningFee: PromiseOrValue, + "setMarketConfig(address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)"( _oracle: PromiseOrValue, _oracleData: PromiseOrValue, _conservator: PromiseOrValue, @@ -6739,6 +6735,7 @@ export interface Singularity extends BaseContract { ): Promise; setSingularityConfig( + _borrowOpeningFee: PromiseOrValue, _lqCollateralizationRate: PromiseOrValue, _liquidationMultiplier: PromiseOrValue, _minimumTargetUtilization: PromiseOrValue, @@ -6749,7 +6746,8 @@ export interface Singularity extends BaseContract { overrides?: Overrides & { from?: PromiseOrValue } ): Promise; - "setSingularityConfig(uint256,uint256,uint256,uint256,uint64,uint64,uint256)"( + "setSingularityConfig(uint256,uint256,uint256,uint256,uint256,uint64,uint64,uint256)"( + _borrowOpeningFee: PromiseOrValue, _lqCollateralizationRate: PromiseOrValue, _liquidationMultiplier: PromiseOrValue, _minimumTargetUtilization: PromiseOrValue, From 5ca5c9dced884b817a27059494afb8703b4d87d8 Mon Sep 17 00:00:00 2001 From: cryptotechmaker Date: Mon, 23 Oct 2023 12:01:14 +0300 Subject: [PATCH 5/6] CU-865d8xb3p: periph artifacts --- .../CurveStableToUsdoBidder.json | 4 +- .../tapioca-periphery/CurveSwapper.json | 4 +- .../tapioca-periphery/LiquidationQueue.json | 4 +- .../UniUsdoToWethBidder.json | 4 +- .../tapioca-periphery/UniswapV2Swapper.json | 4 +- .../tapioca-periphery/UniswapV3Swapper.json | 4 +- src/global__db.bak | 54 +++++++++++++++++++ .../LiquidationQueue__factory.ts | 2 +- .../CurveStableToUsdoBidder__factory.ts | 2 +- .../bidders/UniUsdoToWethBidder__factory.ts | 2 +- .../Swapper/CurveSwapper__factory.ts | 2 +- .../Swapper/UniswapV2Swapper__factory.ts | 2 +- .../Swapper/UniswapV3Swapper__factory.ts | 2 +- 13 files changed, 72 insertions(+), 18 deletions(-) diff --git a/src/artifacts/tapioca-periphery/CurveStableToUsdoBidder.json b/src/artifacts/tapioca-periphery/CurveStableToUsdoBidder.json index c7533d9e..3da94b66 100644 --- a/src/artifacts/tapioca-periphery/CurveStableToUsdoBidder.json +++ b/src/artifacts/tapioca-periphery/CurveStableToUsdoBidder.json @@ -255,8 +255,8 @@ "type": "function" } ], - "bytecode": "0x6080346100ab57601f61198838819003918201601f19168301916001600160401b038311848410176100b05780849260409485528339810103126100ab5780516001600160a01b03811691908290036100ab576020015160008054336001600160a01b03199182168117835560405194927f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a360025416176002556003556118c190816100c78239f35b600080fd5b634e487b7160e01b600052604160045260246000fdfe60806040818152600436101561001457600080fd5b600091823560e01c90816306fdde031461038057508063078dfbe71461027d5780634e71e0c8146101e25780635810e7ec146101695780635dd82b361461014c5780638da5cb5b14610125578063b691d78c14610107578063e30c3978146100df578063e91f9961146100b75763fef744fa1461009057600080fd5b346100b3576020906100ac6100a43661041e565b5050916107fc565b9051908152f35b5080fd5b50346100b357816003193601126100b35760025490516001600160a01b039091168152602090f35b50346100b357816003193601126100b35760015490516001600160a01b039091168152602090f35b50346100b3576020906100ac61011c3661041e565b939290926109ff565b50346100b357816003193601126100b357905490516001600160a01b039091168152602090f35b50346100b3576020906100ac6101613661041e565b5050916105de565b82346101df5760203660031901126101df576004356001600160a01b03818116918290036101db5761019f818454163314610488565b816002549182167faa9eb2cf6e6a7bce28901c01eb97556feb7824a5a9b13df2c67580509a62633f8580a36001600160a01b0319161760025580f35b8280fd5b80fd5b50346100b357816003193601126100b3576001546001600160a01b0391828216903382900361023a575080845493841660008051602061186c8339815191528680a36001600160a01b03199283161783551660015580f35b5162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152606490fd5b50346100b35760603660031901126100b3576001600160a01b0390600435828116919082900361037c57602435801515810361037857604435908115158203610374576102ce858754163314610488565b1561035b57821590811591610353575b5015610318575080835492831660008051602061186c8339815191528580a36001600160a01b031991821617825560018054909116905580f35b5162461bcd60e51b81526020600482015260156024820152744f776e61626c653a207a65726f206164647265737360581b6044820152606490fd5b9050386102de565b5050600180546001600160a01b03191690911790555080f35b8580fd5b8480fd5b8380fd5b919050346101db57826003193601126101db576103da92506103a1826104d3565b601a825279737461626c65202d3e205553444f2028334372762b5553444f2960301b6020830152519182916020835260208301906103de565b0390f35b919082519283825260005b84811061040a575050826000602080949584010152601f8019910116010190565b6020818301810151848301820152016103e9565b6080600319820112610483576004356001600160a01b0381168103610483579160243591604435916001600160401b03916064359083821161048357806023830112156104835781600401359384116104835760248483010111610483576024019190565b600080fd5b1561048f57565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b604081019081106001600160401b038211176104ee57604052565b634e487b7160e01b600052604160045260246000fd5b6001600160401b0381116104ee57604052565b608081019081106001600160401b038211176104ee57604052565b606081019081106001600160401b038211176104ee57604052565b601f909101601f19168101906001600160401b038211908210176104ee57604052565b51906001600160a01b038216820361048357565b1561058b57565b60405162461bcd60e51b815260206004820152600c60248201526b1554d113c81b9bdd081cd95d60a21b6044820152606490fd5b9081602091031261048357516001600160a01b03811681036104835790565b60408051636c3d8b8f60e01b808252919594936001600160a01b03939092916020918516908281600481855afa9081156107b957869184916000916107c4575b5060048b5180948193631192124760e11b8352165afa80156107b9578690600090610780575b6106519250161515610584565b87519283528183600481845afa8015610700578593600091610744575b50829060048a51809881936386c8e21d60e01b8352165afa94851561070057600095610715575b5084841461070b578160049189519283809263de40657760e01b82525afa918215610700576106d09798506000926106d3575b50501661144f565b90565b6106f29250803d106106f9575b6106ea818361054d565b8101906105bf565b38806106c8565b503d6106e0565b88513d6000823e3d90fd5b5093955050505050565b90948282813d831161073d575b61072c818361054d565b810103126101df5750519338610695565b503d610722565b919280945082813d8311610779575b61075d818361054d565b810103126101df57509082610773869493610570565b9061066e565b503d610753565b90508382813d83116107b2575b610797818361054d565b810103126101df5750856107ad61065192610570565b610644565b503d61078d565b89513d6000823e3d90fd5b92509082813d81116107f5575b6107db818361054d565b810103126101df5750826107ef8792610570565b3861061e565b503d6107d1565b60408051636c3d8b8f60e01b80825291959493926001600160a01b0392916020918416908281600481855afa9081156107b95785918491600091610990575b5060048b5180948193631192124760e11b8352165afa80156107b9578590600090610957575b61086e9250161515610584565b87519283528183600481845afa801561070057849360009161091b575b50829060048a51809781936386c8e21d60e01b8352165afa938415610700576000946108ec575b5083851461070b578160049189519283809263de40657760e01b82525afa918215610700576106d09798506000926106d35750501661144f565b90938282813d8311610914575b610903818361054d565b810103126101df57505192386108b2565b503d6108f9565b919280945082813d8311610950575b610934818361054d565b810103126101df5750908261094a859493610570565b9061088b565b503d61092a565b90508382813d8311610989575b61096e818361054d565b810103126101df57508461098461086e92610570565b610861565b503d610964565b92509082813d81116109c1575b6109a7818361054d565b810103126101df5750826109bb8692610570565b3861083b565b503d61099d565b5190811515820361048357565b6001600160a01b039182168152911660208201526040810191909152606081019190915260800190565b604051636c3d8b8f60e01b8082529496956000959490939290916001600160a01b0390911690602081600481855afa908115610e54578791611214575b50604051631192124760e11b815298906001600160a01b031660208a600481845afa998a15610e9357889a6111cc575b50610a866020969798999a60018060a01b03161515610584565b6040519586809263473ec51560e11b825285600483015260249889915afa908115610f26578991611192575b501561115b5760405163de40657760e01b815291602083600481845afa928315610f2657899361113a575b5060405163c23ea21f60e01b815297602089600481855afa988915610ee0578a99611118575b5060209060046040518094819382525afa908115610f265789916110d7575b506040516386c8e21d60e01b81529190602090839060049082906001600160a01b03165afa918215610f2657899261109f575b506001600160a01b038816330361107157818514610f8257889680610f69575b5050600254604051638eb22cdd60e01b815260048101869052868101859052604481018a9052906001600160a01b03908116906020908390606490829088165afa918215610ee0578a92610f35575b506001600160a01b0384163b15610f3157858a91610bf76040519485938493630208d92960e11b855230600486016109d5565b0381836001600160a01b0388165af18015610f2657908991610f0e575b5050604051630cf35bdd60e41b80825260048201869052939060808188816001600160a01b0388165afa908115610ee0578a91610eeb575b506040519485526004850183905260808588816001600160a01b0388165afa948515610ee0578a95610e9e575b5090610c8f610c896020936116f4565b956116f4565b60405195610c9c87610532565b6002875260403685890137610cb08761128b565b52610cba866112ae565b52606460405180958193638eb22cdd60e01b83528960048401528a8301528c604483015260018060a01b03165afa918215610e93578892610e5f575b5060018060a01b03600254169460405194633d9545e960e11b86526004860152840152866044840152606483015260016084830152600160a483015261014091828160c481875afa928315610e545792610d9d92889260409796958493610e19575b5050610d72610d80610dc6928951928391602083016113a8565b03601f19810183528261054d565b875163efa84c6d60e01b81529889978896879560048701906113e3565b6101448501526001600160a01b03166101648401526101a06101848401526101a48301906103de565b03925af1918215610e0d578092610ddc57505090565b9091506040823d604011610e05575b81610df86040938361054d565b810103126101df57505190565b3d9150610deb565b604051903d90823e3d90fd5b610dc6929350610e45610d729282610d8093903d10610e4d575b610e3d818361054d565b8101906112be565b939250610d58565b503d610e33565b6040513d89823e3d90fd5b9091506020813d602011610e8b575b81610e7b6020938361054d565b8101031261048357519038610cf6565b3d9150610e6e565b6040513d8a823e3d90fd5b602092919550610c89610ecb610c8f9260803d608011610ed9575b610ec3818361054d565b810190611252565b505090509692935050610c79565b503d610eb9565b6040513d8c823e3d90fd5b610f04915060803d608011610ed957610ec3818361054d565b5050905038610c4c565b610f1790610504565b610f22578738610c14565b8780fd5b6040513d8b823e3d90fd5b8980fd5b9091506020813d602011610f61575b81610f516020938361054d565b8101031261048357519038610bc4565b3d9150610f44565b819297509060209181010312610f225735943880610b75565b5050604051638eb22cdd60e01b815260048101849052938401829052604484018790529095949293506001600160a01b031691602084606481865afa938415611066578594611032575b50823b1561037857604051630208d92960e11b8152938593859390928492869284926110079291906001600160a01b031630600486016109d5565b03925af180156110275761101a57505090565b61102390610504565b5090565b6040513d84823e3d90fd5b9093506020813d60201161105e575b8161104e6020938361054d565b8101031261037857519238610fcc565b3d9150611041565b6040513d87823e3d90fd5b60405162461bcd60e51b815260206004820152600781880152666f6e6c79204c5160c81b6044820152606490fd5b9091506020813d6020116110cf575b816110bb6020938361054d565b810103126110cb57519038610b55565b8880fd5b3d91506110ae565b90506020813d602011611110575b816110f26020938361054d565b810103126110cb57906020611108600493610570565b919250610b22565b3d91506110e5565b602091995061113390823d84116106f9576106ea818361054d565b9890610b03565b61115491935060203d6020116106f9576106ea818361054d565b9138610add565b60405162461bcd60e51b8152602060048201526010818701526f13585c9ad95d081b9bdd081d985b1a5960821b6044820152606490fd5b90506020813d6020116111c4575b816111ad6020938361054d565b810103126110cb576111be906109c8565b38610ab2565b3d91506111a0565b995060208a3d60201161120c575b816111e76020938361054d565b81010312610f2257610a8661120160209798999a9b610570565b9a9998979650610a6c565b3d91506111da565b90506020813d60201161124a575b8161122f6020938361054d565b810103126112465761124090610570565b38610a3c565b8680fd5b3d9150611222565b91908260809103126104835781516005811015610483579161127660208201610570565b91606061128560408401610570565b92015190565b8051156112985760200190565b634e487b7160e01b600052603260045260246000fd5b8051600110156112985760400190565b809103906101408212610483576040805192606084016001600160401b038111858210176104ee5780835260808212610483576112fa81610517565b61130384610570565b81526020840151608086015261131a838501610570565b60a0860152606084015160c086015284526080607f19820112610483578190815161134481610517565b6080850151815260a0850151602082015260c08501518382015260e08501516060820152602086015260ff1901126104835761139d610120825193611388856104d3565b61139561010082016109c8565b8552016109c8565b602083015282015290565b6020908160408183019282815285518094520193019160005b8281106113cf575050505090565b8351855293810193928101926001016113c1565b60206040610120926060815160018060a01b03808251168852858201518689015284820151168488015201516060860152606083820151805160808801528481015160a08801528381015160c0880152015160e086015201518051151561010085015201511515910152565b60408051630cf35bdd60e41b808252600482018590529496959194608094936001600160a01b03908116939290918682602481885afa918215610700576000926116d1575b5087519081528960048201528681602481885afa9687156107005760009761169f575b5050906114cf6114c9606494936116f4565b966116f4565b958751946114dc86610532565b6002865260209788928a36858a01376114f48861128b565b526114fe876112ae565b52885194858092638eb22cdd60e01b8252896004830152866024830152600060448301525afa92831561169457600093611665575b506002541697865194633d9545e960e11b8652600486015260248501526044840152606483015260016084830152600160a483015261014091828160c4818a5afa92831561165a5784936115a6936115e59899936115d193600093611635575b50506115b49088519586918883016113a8565b03601f19810186528561054d565b8651630b7ecdc960e31b81529788948593849360048501906113e3565b6101606101448401526101648301906103de565b03915afa91821561162b57506000916115ff575b50905090565b82813d8311611624575b611613818361054d565b810103126101df57505180386115f9565b503d611609565b513d6000823e3d90fd5b6115b4929350908161165292903d10610e4d57610e3d818361054d565b919038611593565b85513d6000823e3d90fd5b90928682813d831161168d575b61167c818361054d565b810103126101df5750519138611533565b503d611672565b87513d6000823e3d90fd5b606494939297506116c36114cf92826114c993903d10610ed957610ec3818361054d565b5050905097929394506114b7565b6116e9919250873d8911610ed957610ec3818361054d565b505090509038611494565b600254604080516310c3a8d960e11b8152600492602092916001600160a01b0391849082908790829086165afa90811561186057908291600091611829575b50169060001995600092600354935b84811061179157505050505060001984131561175e5750505090565b5162461bcd60e51b815291820152600f60248201526e185cdcd95d081b9bdd08199bdd5b99608a1b604482015260649150fd5b855163c661065760e01b81528881018290528781602481865afa908115611694576000916117f4575b508416838516146117ec575b60001981146117d757600101611742565b601188634e487b7160e01b6000525260246000fd5b9750876117c6565b908882813d8311611822575b61180a818361054d565b810103126101df575061181c90610570565b386117ba565b503d611800565b91508482813d8311611859575b611840818361054d565b810103126101df57506118538291610570565b38611733565b503d611836565b83513d6000823e3d90fdfe8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0a2646970667358221220af6237cfc0232e450cb59ad2320c5a5f8c1a6f7e4446bce187835a7a8bbbd4df64736f6c63430008120033", - "deployedBytecode": "0x60806040818152600436101561001457600080fd5b600091823560e01c90816306fdde031461038057508063078dfbe71461027d5780634e71e0c8146101e25780635810e7ec146101695780635dd82b361461014c5780638da5cb5b14610125578063b691d78c14610107578063e30c3978146100df578063e91f9961146100b75763fef744fa1461009057600080fd5b346100b3576020906100ac6100a43661041e565b5050916107fc565b9051908152f35b5080fd5b50346100b357816003193601126100b35760025490516001600160a01b039091168152602090f35b50346100b357816003193601126100b35760015490516001600160a01b039091168152602090f35b50346100b3576020906100ac61011c3661041e565b939290926109ff565b50346100b357816003193601126100b357905490516001600160a01b039091168152602090f35b50346100b3576020906100ac6101613661041e565b5050916105de565b82346101df5760203660031901126101df576004356001600160a01b03818116918290036101db5761019f818454163314610488565b816002549182167faa9eb2cf6e6a7bce28901c01eb97556feb7824a5a9b13df2c67580509a62633f8580a36001600160a01b0319161760025580f35b8280fd5b80fd5b50346100b357816003193601126100b3576001546001600160a01b0391828216903382900361023a575080845493841660008051602061186c8339815191528680a36001600160a01b03199283161783551660015580f35b5162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152606490fd5b50346100b35760603660031901126100b3576001600160a01b0390600435828116919082900361037c57602435801515810361037857604435908115158203610374576102ce858754163314610488565b1561035b57821590811591610353575b5015610318575080835492831660008051602061186c8339815191528580a36001600160a01b031991821617825560018054909116905580f35b5162461bcd60e51b81526020600482015260156024820152744f776e61626c653a207a65726f206164647265737360581b6044820152606490fd5b9050386102de565b5050600180546001600160a01b03191690911790555080f35b8580fd5b8480fd5b8380fd5b919050346101db57826003193601126101db576103da92506103a1826104d3565b601a825279737461626c65202d3e205553444f2028334372762b5553444f2960301b6020830152519182916020835260208301906103de565b0390f35b919082519283825260005b84811061040a575050826000602080949584010152601f8019910116010190565b6020818301810151848301820152016103e9565b6080600319820112610483576004356001600160a01b0381168103610483579160243591604435916001600160401b03916064359083821161048357806023830112156104835781600401359384116104835760248483010111610483576024019190565b600080fd5b1561048f57565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b604081019081106001600160401b038211176104ee57604052565b634e487b7160e01b600052604160045260246000fd5b6001600160401b0381116104ee57604052565b608081019081106001600160401b038211176104ee57604052565b606081019081106001600160401b038211176104ee57604052565b601f909101601f19168101906001600160401b038211908210176104ee57604052565b51906001600160a01b038216820361048357565b1561058b57565b60405162461bcd60e51b815260206004820152600c60248201526b1554d113c81b9bdd081cd95d60a21b6044820152606490fd5b9081602091031261048357516001600160a01b03811681036104835790565b60408051636c3d8b8f60e01b808252919594936001600160a01b03939092916020918516908281600481855afa9081156107b957869184916000916107c4575b5060048b5180948193631192124760e11b8352165afa80156107b9578690600090610780575b6106519250161515610584565b87519283528183600481845afa8015610700578593600091610744575b50829060048a51809881936386c8e21d60e01b8352165afa94851561070057600095610715575b5084841461070b578160049189519283809263de40657760e01b82525afa918215610700576106d09798506000926106d3575b50501661144f565b90565b6106f29250803d106106f9575b6106ea818361054d565b8101906105bf565b38806106c8565b503d6106e0565b88513d6000823e3d90fd5b5093955050505050565b90948282813d831161073d575b61072c818361054d565b810103126101df5750519338610695565b503d610722565b919280945082813d8311610779575b61075d818361054d565b810103126101df57509082610773869493610570565b9061066e565b503d610753565b90508382813d83116107b2575b610797818361054d565b810103126101df5750856107ad61065192610570565b610644565b503d61078d565b89513d6000823e3d90fd5b92509082813d81116107f5575b6107db818361054d565b810103126101df5750826107ef8792610570565b3861061e565b503d6107d1565b60408051636c3d8b8f60e01b80825291959493926001600160a01b0392916020918416908281600481855afa9081156107b95785918491600091610990575b5060048b5180948193631192124760e11b8352165afa80156107b9578590600090610957575b61086e9250161515610584565b87519283528183600481845afa801561070057849360009161091b575b50829060048a51809781936386c8e21d60e01b8352165afa938415610700576000946108ec575b5083851461070b578160049189519283809263de40657760e01b82525afa918215610700576106d09798506000926106d35750501661144f565b90938282813d8311610914575b610903818361054d565b810103126101df57505192386108b2565b503d6108f9565b919280945082813d8311610950575b610934818361054d565b810103126101df5750908261094a859493610570565b9061088b565b503d61092a565b90508382813d8311610989575b61096e818361054d565b810103126101df57508461098461086e92610570565b610861565b503d610964565b92509082813d81116109c1575b6109a7818361054d565b810103126101df5750826109bb8692610570565b3861083b565b503d61099d565b5190811515820361048357565b6001600160a01b039182168152911660208201526040810191909152606081019190915260800190565b604051636c3d8b8f60e01b8082529496956000959490939290916001600160a01b0390911690602081600481855afa908115610e54578791611214575b50604051631192124760e11b815298906001600160a01b031660208a600481845afa998a15610e9357889a6111cc575b50610a866020969798999a60018060a01b03161515610584565b6040519586809263473ec51560e11b825285600483015260249889915afa908115610f26578991611192575b501561115b5760405163de40657760e01b815291602083600481845afa928315610f2657899361113a575b5060405163c23ea21f60e01b815297602089600481855afa988915610ee0578a99611118575b5060209060046040518094819382525afa908115610f265789916110d7575b506040516386c8e21d60e01b81529190602090839060049082906001600160a01b03165afa918215610f2657899261109f575b506001600160a01b038816330361107157818514610f8257889680610f69575b5050600254604051638eb22cdd60e01b815260048101869052868101859052604481018a9052906001600160a01b03908116906020908390606490829088165afa918215610ee0578a92610f35575b506001600160a01b0384163b15610f3157858a91610bf76040519485938493630208d92960e11b855230600486016109d5565b0381836001600160a01b0388165af18015610f2657908991610f0e575b5050604051630cf35bdd60e41b80825260048201869052939060808188816001600160a01b0388165afa908115610ee0578a91610eeb575b506040519485526004850183905260808588816001600160a01b0388165afa948515610ee0578a95610e9e575b5090610c8f610c896020936116f4565b956116f4565b60405195610c9c87610532565b6002875260403685890137610cb08761128b565b52610cba866112ae565b52606460405180958193638eb22cdd60e01b83528960048401528a8301528c604483015260018060a01b03165afa918215610e93578892610e5f575b5060018060a01b03600254169460405194633d9545e960e11b86526004860152840152866044840152606483015260016084830152600160a483015261014091828160c481875afa928315610e545792610d9d92889260409796958493610e19575b5050610d72610d80610dc6928951928391602083016113a8565b03601f19810183528261054d565b875163efa84c6d60e01b81529889978896879560048701906113e3565b6101448501526001600160a01b03166101648401526101a06101848401526101a48301906103de565b03925af1918215610e0d578092610ddc57505090565b9091506040823d604011610e05575b81610df86040938361054d565b810103126101df57505190565b3d9150610deb565b604051903d90823e3d90fd5b610dc6929350610e45610d729282610d8093903d10610e4d575b610e3d818361054d565b8101906112be565b939250610d58565b503d610e33565b6040513d89823e3d90fd5b9091506020813d602011610e8b575b81610e7b6020938361054d565b8101031261048357519038610cf6565b3d9150610e6e565b6040513d8a823e3d90fd5b602092919550610c89610ecb610c8f9260803d608011610ed9575b610ec3818361054d565b810190611252565b505090509692935050610c79565b503d610eb9565b6040513d8c823e3d90fd5b610f04915060803d608011610ed957610ec3818361054d565b5050905038610c4c565b610f1790610504565b610f22578738610c14565b8780fd5b6040513d8b823e3d90fd5b8980fd5b9091506020813d602011610f61575b81610f516020938361054d565b8101031261048357519038610bc4565b3d9150610f44565b819297509060209181010312610f225735943880610b75565b5050604051638eb22cdd60e01b815260048101849052938401829052604484018790529095949293506001600160a01b031691602084606481865afa938415611066578594611032575b50823b1561037857604051630208d92960e11b8152938593859390928492869284926110079291906001600160a01b031630600486016109d5565b03925af180156110275761101a57505090565b61102390610504565b5090565b6040513d84823e3d90fd5b9093506020813d60201161105e575b8161104e6020938361054d565b8101031261037857519238610fcc565b3d9150611041565b6040513d87823e3d90fd5b60405162461bcd60e51b815260206004820152600781880152666f6e6c79204c5160c81b6044820152606490fd5b9091506020813d6020116110cf575b816110bb6020938361054d565b810103126110cb57519038610b55565b8880fd5b3d91506110ae565b90506020813d602011611110575b816110f26020938361054d565b810103126110cb57906020611108600493610570565b919250610b22565b3d91506110e5565b602091995061113390823d84116106f9576106ea818361054d565b9890610b03565b61115491935060203d6020116106f9576106ea818361054d565b9138610add565b60405162461bcd60e51b8152602060048201526010818701526f13585c9ad95d081b9bdd081d985b1a5960821b6044820152606490fd5b90506020813d6020116111c4575b816111ad6020938361054d565b810103126110cb576111be906109c8565b38610ab2565b3d91506111a0565b995060208a3d60201161120c575b816111e76020938361054d565b81010312610f2257610a8661120160209798999a9b610570565b9a9998979650610a6c565b3d91506111da565b90506020813d60201161124a575b8161122f6020938361054d565b810103126112465761124090610570565b38610a3c565b8680fd5b3d9150611222565b91908260809103126104835781516005811015610483579161127660208201610570565b91606061128560408401610570565b92015190565b8051156112985760200190565b634e487b7160e01b600052603260045260246000fd5b8051600110156112985760400190565b809103906101408212610483576040805192606084016001600160401b038111858210176104ee5780835260808212610483576112fa81610517565b61130384610570565b81526020840151608086015261131a838501610570565b60a0860152606084015160c086015284526080607f19820112610483578190815161134481610517565b6080850151815260a0850151602082015260c08501518382015260e08501516060820152602086015260ff1901126104835761139d610120825193611388856104d3565b61139561010082016109c8565b8552016109c8565b602083015282015290565b6020908160408183019282815285518094520193019160005b8281106113cf575050505090565b8351855293810193928101926001016113c1565b60206040610120926060815160018060a01b03808251168852858201518689015284820151168488015201516060860152606083820151805160808801528481015160a08801528381015160c0880152015160e086015201518051151561010085015201511515910152565b60408051630cf35bdd60e41b808252600482018590529496959194608094936001600160a01b03908116939290918682602481885afa918215610700576000926116d1575b5087519081528960048201528681602481885afa9687156107005760009761169f575b5050906114cf6114c9606494936116f4565b966116f4565b958751946114dc86610532565b6002865260209788928a36858a01376114f48861128b565b526114fe876112ae565b52885194858092638eb22cdd60e01b8252896004830152866024830152600060448301525afa92831561169457600093611665575b506002541697865194633d9545e960e11b8652600486015260248501526044840152606483015260016084830152600160a483015261014091828160c4818a5afa92831561165a5784936115a6936115e59899936115d193600093611635575b50506115b49088519586918883016113a8565b03601f19810186528561054d565b8651630b7ecdc960e31b81529788948593849360048501906113e3565b6101606101448401526101648301906103de565b03915afa91821561162b57506000916115ff575b50905090565b82813d8311611624575b611613818361054d565b810103126101df57505180386115f9565b503d611609565b513d6000823e3d90fd5b6115b4929350908161165292903d10610e4d57610e3d818361054d565b919038611593565b85513d6000823e3d90fd5b90928682813d831161168d575b61167c818361054d565b810103126101df5750519138611533565b503d611672565b87513d6000823e3d90fd5b606494939297506116c36114cf92826114c993903d10610ed957610ec3818361054d565b5050905097929394506114b7565b6116e9919250873d8911610ed957610ec3818361054d565b505090509038611494565b600254604080516310c3a8d960e11b8152600492602092916001600160a01b0391849082908790829086165afa90811561186057908291600091611829575b50169060001995600092600354935b84811061179157505050505060001984131561175e5750505090565b5162461bcd60e51b815291820152600f60248201526e185cdcd95d081b9bdd08199bdd5b99608a1b604482015260649150fd5b855163c661065760e01b81528881018290528781602481865afa908115611694576000916117f4575b508416838516146117ec575b60001981146117d757600101611742565b601188634e487b7160e01b6000525260246000fd5b9750876117c6565b908882813d8311611822575b61180a818361054d565b810103126101df575061181c90610570565b386117ba565b503d611800565b91508482813d8311611859575b611840818361054d565b810103126101df57506118538291610570565b38611733565b503d611836565b83513d6000823e3d90fdfe8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0a2646970667358221220af6237cfc0232e450cb59ad2320c5a5f8c1a6f7e4446bce187835a7a8bbbd4df64736f6c63430008120033", + "bytecode": "0x6080346100ab57601f61198838819003918201601f19168301916001600160401b038311848410176100b05780849260409485528339810103126100ab5780516001600160a01b03811691908290036100ab576020015160008054336001600160a01b03199182168117835560405194927f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a360025416176002556003556118c190816100c78239f35b600080fd5b634e487b7160e01b600052604160045260246000fdfe60806040818152600436101561001457600080fd5b600091823560e01c90816306fdde031461038057508063078dfbe71461027d5780634e71e0c8146101e25780635810e7ec146101695780635dd82b361461014c5780638da5cb5b14610125578063b691d78c14610107578063e30c3978146100df578063e91f9961146100b75763fef744fa1461009057600080fd5b346100b3576020906100ac6100a43661041e565b5050916107fc565b9051908152f35b5080fd5b50346100b357816003193601126100b35760025490516001600160a01b039091168152602090f35b50346100b357816003193601126100b35760015490516001600160a01b039091168152602090f35b50346100b3576020906100ac61011c3661041e565b939290926109ff565b50346100b357816003193601126100b357905490516001600160a01b039091168152602090f35b50346100b3576020906100ac6101613661041e565b5050916105de565b82346101df5760203660031901126101df576004356001600160a01b03818116918290036101db5761019f818454163314610488565b816002549182167faa9eb2cf6e6a7bce28901c01eb97556feb7824a5a9b13df2c67580509a62633f8580a36001600160a01b0319161760025580f35b8280fd5b80fd5b50346100b357816003193601126100b3576001546001600160a01b0391828216903382900361023a575080845493841660008051602061186c8339815191528680a36001600160a01b03199283161783551660015580f35b5162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152606490fd5b50346100b35760603660031901126100b3576001600160a01b0390600435828116919082900361037c57602435801515810361037857604435908115158203610374576102ce858754163314610488565b1561035b57821590811591610353575b5015610318575080835492831660008051602061186c8339815191528580a36001600160a01b031991821617825560018054909116905580f35b5162461bcd60e51b81526020600482015260156024820152744f776e61626c653a207a65726f206164647265737360581b6044820152606490fd5b9050386102de565b5050600180546001600160a01b03191690911790555080f35b8580fd5b8480fd5b8380fd5b919050346101db57826003193601126101db576103da92506103a1826104d3565b601a825279737461626c65202d3e205553444f2028334372762b5553444f2960301b6020830152519182916020835260208301906103de565b0390f35b919082519283825260005b84811061040a575050826000602080949584010152601f8019910116010190565b6020818301810151848301820152016103e9565b6080600319820112610483576004356001600160a01b0381168103610483579160243591604435916001600160401b03916064359083821161048357806023830112156104835781600401359384116104835760248483010111610483576024019190565b600080fd5b1561048f57565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b604081019081106001600160401b038211176104ee57604052565b634e487b7160e01b600052604160045260246000fd5b6001600160401b0381116104ee57604052565b608081019081106001600160401b038211176104ee57604052565b606081019081106001600160401b038211176104ee57604052565b601f909101601f19168101906001600160401b038211908210176104ee57604052565b51906001600160a01b038216820361048357565b1561058b57565b60405162461bcd60e51b815260206004820152600c60248201526b1554d113c81b9bdd081cd95d60a21b6044820152606490fd5b9081602091031261048357516001600160a01b03811681036104835790565b60408051636c3d8b8f60e01b808252919594936001600160a01b03939092916020918516908281600481855afa9081156107b957869184916000916107c4575b5060048b5180948193631192124760e11b8352165afa80156107b9578690600090610780575b6106519250161515610584565b87519283528183600481845afa8015610700578593600091610744575b50829060048a51809881936386c8e21d60e01b8352165afa94851561070057600095610715575b5084841461070b578160049189519283809263de40657760e01b82525afa918215610700576106d09798506000926106d3575b50501661144f565b90565b6106f29250803d106106f9575b6106ea818361054d565b8101906105bf565b38806106c8565b503d6106e0565b88513d6000823e3d90fd5b5093955050505050565b90948282813d831161073d575b61072c818361054d565b810103126101df5750519338610695565b503d610722565b919280945082813d8311610779575b61075d818361054d565b810103126101df57509082610773869493610570565b9061066e565b503d610753565b90508382813d83116107b2575b610797818361054d565b810103126101df5750856107ad61065192610570565b610644565b503d61078d565b89513d6000823e3d90fd5b92509082813d81116107f5575b6107db818361054d565b810103126101df5750826107ef8792610570565b3861061e565b503d6107d1565b60408051636c3d8b8f60e01b80825291959493926001600160a01b0392916020918416908281600481855afa9081156107b95785918491600091610990575b5060048b5180948193631192124760e11b8352165afa80156107b9578590600090610957575b61086e9250161515610584565b87519283528183600481845afa801561070057849360009161091b575b50829060048a51809781936386c8e21d60e01b8352165afa938415610700576000946108ec575b5083851461070b578160049189519283809263de40657760e01b82525afa918215610700576106d09798506000926106d35750501661144f565b90938282813d8311610914575b610903818361054d565b810103126101df57505192386108b2565b503d6108f9565b919280945082813d8311610950575b610934818361054d565b810103126101df5750908261094a859493610570565b9061088b565b503d61092a565b90508382813d8311610989575b61096e818361054d565b810103126101df57508461098461086e92610570565b610861565b503d610964565b92509082813d81116109c1575b6109a7818361054d565b810103126101df5750826109bb8692610570565b3861083b565b503d61099d565b5190811515820361048357565b6001600160a01b039182168152911660208201526040810191909152606081019190915260800190565b604051636c3d8b8f60e01b8082529496956000959490939290916001600160a01b0390911690602081600481855afa908115610e54578791611214575b50604051631192124760e11b815298906001600160a01b031660208a600481845afa998a15610e9357889a6111cc575b50610a866020969798999a60018060a01b03161515610584565b6040519586809263473ec51560e11b825285600483015260249889915afa908115610f26578991611192575b501561115b5760405163de40657760e01b815291602083600481845afa928315610f2657899361113a575b5060405163c23ea21f60e01b815297602089600481855afa988915610ee0578a99611118575b5060209060046040518094819382525afa908115610f265789916110d7575b506040516386c8e21d60e01b81529190602090839060049082906001600160a01b03165afa918215610f2657899261109f575b506001600160a01b038816330361107157818514610f8257889680610f69575b5050600254604051638eb22cdd60e01b815260048101869052868101859052604481018a9052906001600160a01b03908116906020908390606490829088165afa918215610ee0578a92610f35575b506001600160a01b0384163b15610f3157858a91610bf76040519485938493630208d92960e11b855230600486016109d5565b0381836001600160a01b0388165af18015610f2657908991610f0e575b5050604051630cf35bdd60e41b80825260048201869052939060808188816001600160a01b0388165afa908115610ee0578a91610eeb575b506040519485526004850183905260808588816001600160a01b0388165afa948515610ee0578a95610e9e575b5090610c8f610c896020936116f4565b956116f4565b60405195610c9c87610532565b6002875260403685890137610cb08761128b565b52610cba866112ae565b52606460405180958193638eb22cdd60e01b83528960048401528a8301528c604483015260018060a01b03165afa918215610e93578892610e5f575b5060018060a01b03600254169460405194633d9545e960e11b86526004860152840152866044840152606483015260016084830152600160a483015261014091828160c481875afa928315610e545792610d9d92889260409796958493610e19575b5050610d72610d80610dc6928951928391602083016113a8565b03601f19810183528261054d565b875163efa84c6d60e01b81529889978896879560048701906113e3565b6101448501526001600160a01b03166101648401526101a06101848401526101a48301906103de565b03925af1918215610e0d578092610ddc57505090565b9091506040823d604011610e05575b81610df86040938361054d565b810103126101df57505190565b3d9150610deb565b604051903d90823e3d90fd5b610dc6929350610e45610d729282610d8093903d10610e4d575b610e3d818361054d565b8101906112be565b939250610d58565b503d610e33565b6040513d89823e3d90fd5b9091506020813d602011610e8b575b81610e7b6020938361054d565b8101031261048357519038610cf6565b3d9150610e6e565b6040513d8a823e3d90fd5b602092919550610c89610ecb610c8f9260803d608011610ed9575b610ec3818361054d565b810190611252565b505090509692935050610c79565b503d610eb9565b6040513d8c823e3d90fd5b610f04915060803d608011610ed957610ec3818361054d565b5050905038610c4c565b610f1790610504565b610f22578738610c14565b8780fd5b6040513d8b823e3d90fd5b8980fd5b9091506020813d602011610f61575b81610f516020938361054d565b8101031261048357519038610bc4565b3d9150610f44565b819297509060209181010312610f225735943880610b75565b5050604051638eb22cdd60e01b815260048101849052938401829052604484018790529095949293506001600160a01b031691602084606481865afa938415611066578594611032575b50823b1561037857604051630208d92960e11b8152938593859390928492869284926110079291906001600160a01b031630600486016109d5565b03925af180156110275761101a57505090565b61102390610504565b5090565b6040513d84823e3d90fd5b9093506020813d60201161105e575b8161104e6020938361054d565b8101031261037857519238610fcc565b3d9150611041565b6040513d87823e3d90fd5b60405162461bcd60e51b815260206004820152600781880152666f6e6c79204c5160c81b6044820152606490fd5b9091506020813d6020116110cf575b816110bb6020938361054d565b810103126110cb57519038610b55565b8880fd5b3d91506110ae565b90506020813d602011611110575b816110f26020938361054d565b810103126110cb57906020611108600493610570565b919250610b22565b3d91506110e5565b602091995061113390823d84116106f9576106ea818361054d565b9890610b03565b61115491935060203d6020116106f9576106ea818361054d565b9138610add565b60405162461bcd60e51b8152602060048201526010818701526f13585c9ad95d081b9bdd081d985b1a5960821b6044820152606490fd5b90506020813d6020116111c4575b816111ad6020938361054d565b810103126110cb576111be906109c8565b38610ab2565b3d91506111a0565b995060208a3d60201161120c575b816111e76020938361054d565b81010312610f2257610a8661120160209798999a9b610570565b9a9998979650610a6c565b3d91506111da565b90506020813d60201161124a575b8161122f6020938361054d565b810103126112465761124090610570565b38610a3c565b8680fd5b3d9150611222565b91908260809103126104835781516005811015610483579161127660208201610570565b91606061128560408401610570565b92015190565b8051156112985760200190565b634e487b7160e01b600052603260045260246000fd5b8051600110156112985760400190565b809103906101408212610483576040805192606084016001600160401b038111858210176104ee5780835260808212610483576112fa81610517565b61130384610570565b81526020840151608086015261131a838501610570565b60a0860152606084015160c086015284526080607f19820112610483578190815161134481610517565b6080850151815260a0850151602082015260c08501518382015260e08501516060820152602086015260ff1901126104835761139d610120825193611388856104d3565b61139561010082016109c8565b8552016109c8565b602083015282015290565b6020908160408183019282815285518094520193019160005b8281106113cf575050505090565b8351855293810193928101926001016113c1565b60206040610120926060815160018060a01b03808251168852858201518689015284820151168488015201516060860152606083820151805160808801528481015160a08801528381015160c0880152015160e086015201518051151561010085015201511515910152565b60408051630cf35bdd60e41b808252600482018590529496959194608094936001600160a01b03908116939290918682602481885afa918215610700576000926116d1575b5087519081528960048201528681602481885afa9687156107005760009761169f575b5050906114cf6114c9606494936116f4565b966116f4565b958751946114dc86610532565b6002865260209788928a36858a01376114f48861128b565b526114fe876112ae565b52885194858092638eb22cdd60e01b8252896004830152866024830152600060448301525afa92831561169457600093611665575b506002541697865194633d9545e960e11b8652600486015260248501526044840152606483015260016084830152600160a483015261014091828160c4818a5afa92831561165a5784936115a6936115e59899936115d193600093611635575b50506115b49088519586918883016113a8565b03601f19810186528561054d565b8651630b7ecdc960e31b81529788948593849360048501906113e3565b6101606101448401526101648301906103de565b03915afa91821561162b57506000916115ff575b50905090565b82813d8311611624575b611613818361054d565b810103126101df57505180386115f9565b503d611609565b513d6000823e3d90fd5b6115b4929350908161165292903d10610e4d57610e3d818361054d565b919038611593565b85513d6000823e3d90fd5b90928682813d831161168d575b61167c818361054d565b810103126101df5750519138611533565b503d611672565b87513d6000823e3d90fd5b606494939297506116c36114cf92826114c993903d10610ed957610ec3818361054d565b5050905097929394506114b7565b6116e9919250873d8911610ed957610ec3818361054d565b505090509038611494565b600254604080516310c3a8d960e11b8152600492602092916001600160a01b0391849082908790829086165afa90811561186057908291600091611829575b50169060001995600092600354935b84811061179157505050505060001984131561175e5750505090565b5162461bcd60e51b815291820152600f60248201526e185cdcd95d081b9bdd08199bdd5b99608a1b604482015260649150fd5b855163c661065760e01b81528881018290528781602481865afa908115611694576000916117f4575b508416838516146117ec575b60001981146117d757600101611742565b601188634e487b7160e01b6000525260246000fd5b9750876117c6565b908882813d8311611822575b61180a818361054d565b810103126101df575061181c90610570565b386117ba565b503d611800565b91508482813d8311611859575b611840818361054d565b810103126101df57506118538291610570565b38611733565b503d611836565b83513d6000823e3d90fdfe8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0a2646970667358221220f00bad75dfd7902d01f06990e76a17055e7634a1f091cf0af26590772ef8e7df64736f6c63430008120033", + "deployedBytecode": "0x60806040818152600436101561001457600080fd5b600091823560e01c90816306fdde031461038057508063078dfbe71461027d5780634e71e0c8146101e25780635810e7ec146101695780635dd82b361461014c5780638da5cb5b14610125578063b691d78c14610107578063e30c3978146100df578063e91f9961146100b75763fef744fa1461009057600080fd5b346100b3576020906100ac6100a43661041e565b5050916107fc565b9051908152f35b5080fd5b50346100b357816003193601126100b35760025490516001600160a01b039091168152602090f35b50346100b357816003193601126100b35760015490516001600160a01b039091168152602090f35b50346100b3576020906100ac61011c3661041e565b939290926109ff565b50346100b357816003193601126100b357905490516001600160a01b039091168152602090f35b50346100b3576020906100ac6101613661041e565b5050916105de565b82346101df5760203660031901126101df576004356001600160a01b03818116918290036101db5761019f818454163314610488565b816002549182167faa9eb2cf6e6a7bce28901c01eb97556feb7824a5a9b13df2c67580509a62633f8580a36001600160a01b0319161760025580f35b8280fd5b80fd5b50346100b357816003193601126100b3576001546001600160a01b0391828216903382900361023a575080845493841660008051602061186c8339815191528680a36001600160a01b03199283161783551660015580f35b5162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152606490fd5b50346100b35760603660031901126100b3576001600160a01b0390600435828116919082900361037c57602435801515810361037857604435908115158203610374576102ce858754163314610488565b1561035b57821590811591610353575b5015610318575080835492831660008051602061186c8339815191528580a36001600160a01b031991821617825560018054909116905580f35b5162461bcd60e51b81526020600482015260156024820152744f776e61626c653a207a65726f206164647265737360581b6044820152606490fd5b9050386102de565b5050600180546001600160a01b03191690911790555080f35b8580fd5b8480fd5b8380fd5b919050346101db57826003193601126101db576103da92506103a1826104d3565b601a825279737461626c65202d3e205553444f2028334372762b5553444f2960301b6020830152519182916020835260208301906103de565b0390f35b919082519283825260005b84811061040a575050826000602080949584010152601f8019910116010190565b6020818301810151848301820152016103e9565b6080600319820112610483576004356001600160a01b0381168103610483579160243591604435916001600160401b03916064359083821161048357806023830112156104835781600401359384116104835760248483010111610483576024019190565b600080fd5b1561048f57565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b604081019081106001600160401b038211176104ee57604052565b634e487b7160e01b600052604160045260246000fd5b6001600160401b0381116104ee57604052565b608081019081106001600160401b038211176104ee57604052565b606081019081106001600160401b038211176104ee57604052565b601f909101601f19168101906001600160401b038211908210176104ee57604052565b51906001600160a01b038216820361048357565b1561058b57565b60405162461bcd60e51b815260206004820152600c60248201526b1554d113c81b9bdd081cd95d60a21b6044820152606490fd5b9081602091031261048357516001600160a01b03811681036104835790565b60408051636c3d8b8f60e01b808252919594936001600160a01b03939092916020918516908281600481855afa9081156107b957869184916000916107c4575b5060048b5180948193631192124760e11b8352165afa80156107b9578690600090610780575b6106519250161515610584565b87519283528183600481845afa8015610700578593600091610744575b50829060048a51809881936386c8e21d60e01b8352165afa94851561070057600095610715575b5084841461070b578160049189519283809263de40657760e01b82525afa918215610700576106d09798506000926106d3575b50501661144f565b90565b6106f29250803d106106f9575b6106ea818361054d565b8101906105bf565b38806106c8565b503d6106e0565b88513d6000823e3d90fd5b5093955050505050565b90948282813d831161073d575b61072c818361054d565b810103126101df5750519338610695565b503d610722565b919280945082813d8311610779575b61075d818361054d565b810103126101df57509082610773869493610570565b9061066e565b503d610753565b90508382813d83116107b2575b610797818361054d565b810103126101df5750856107ad61065192610570565b610644565b503d61078d565b89513d6000823e3d90fd5b92509082813d81116107f5575b6107db818361054d565b810103126101df5750826107ef8792610570565b3861061e565b503d6107d1565b60408051636c3d8b8f60e01b80825291959493926001600160a01b0392916020918416908281600481855afa9081156107b95785918491600091610990575b5060048b5180948193631192124760e11b8352165afa80156107b9578590600090610957575b61086e9250161515610584565b87519283528183600481845afa801561070057849360009161091b575b50829060048a51809781936386c8e21d60e01b8352165afa938415610700576000946108ec575b5083851461070b578160049189519283809263de40657760e01b82525afa918215610700576106d09798506000926106d35750501661144f565b90938282813d8311610914575b610903818361054d565b810103126101df57505192386108b2565b503d6108f9565b919280945082813d8311610950575b610934818361054d565b810103126101df5750908261094a859493610570565b9061088b565b503d61092a565b90508382813d8311610989575b61096e818361054d565b810103126101df57508461098461086e92610570565b610861565b503d610964565b92509082813d81116109c1575b6109a7818361054d565b810103126101df5750826109bb8692610570565b3861083b565b503d61099d565b5190811515820361048357565b6001600160a01b039182168152911660208201526040810191909152606081019190915260800190565b604051636c3d8b8f60e01b8082529496956000959490939290916001600160a01b0390911690602081600481855afa908115610e54578791611214575b50604051631192124760e11b815298906001600160a01b031660208a600481845afa998a15610e9357889a6111cc575b50610a866020969798999a60018060a01b03161515610584565b6040519586809263473ec51560e11b825285600483015260249889915afa908115610f26578991611192575b501561115b5760405163de40657760e01b815291602083600481845afa928315610f2657899361113a575b5060405163c23ea21f60e01b815297602089600481855afa988915610ee0578a99611118575b5060209060046040518094819382525afa908115610f265789916110d7575b506040516386c8e21d60e01b81529190602090839060049082906001600160a01b03165afa918215610f2657899261109f575b506001600160a01b038816330361107157818514610f8257889680610f69575b5050600254604051638eb22cdd60e01b815260048101869052868101859052604481018a9052906001600160a01b03908116906020908390606490829088165afa918215610ee0578a92610f35575b506001600160a01b0384163b15610f3157858a91610bf76040519485938493630208d92960e11b855230600486016109d5565b0381836001600160a01b0388165af18015610f2657908991610f0e575b5050604051630cf35bdd60e41b80825260048201869052939060808188816001600160a01b0388165afa908115610ee0578a91610eeb575b506040519485526004850183905260808588816001600160a01b0388165afa948515610ee0578a95610e9e575b5090610c8f610c896020936116f4565b956116f4565b60405195610c9c87610532565b6002875260403685890137610cb08761128b565b52610cba866112ae565b52606460405180958193638eb22cdd60e01b83528960048401528a8301528c604483015260018060a01b03165afa918215610e93578892610e5f575b5060018060a01b03600254169460405194633d9545e960e11b86526004860152840152866044840152606483015260016084830152600160a483015261014091828160c481875afa928315610e545792610d9d92889260409796958493610e19575b5050610d72610d80610dc6928951928391602083016113a8565b03601f19810183528261054d565b875163efa84c6d60e01b81529889978896879560048701906113e3565b6101448501526001600160a01b03166101648401526101a06101848401526101a48301906103de565b03925af1918215610e0d578092610ddc57505090565b9091506040823d604011610e05575b81610df86040938361054d565b810103126101df57505190565b3d9150610deb565b604051903d90823e3d90fd5b610dc6929350610e45610d729282610d8093903d10610e4d575b610e3d818361054d565b8101906112be565b939250610d58565b503d610e33565b6040513d89823e3d90fd5b9091506020813d602011610e8b575b81610e7b6020938361054d565b8101031261048357519038610cf6565b3d9150610e6e565b6040513d8a823e3d90fd5b602092919550610c89610ecb610c8f9260803d608011610ed9575b610ec3818361054d565b810190611252565b505090509692935050610c79565b503d610eb9565b6040513d8c823e3d90fd5b610f04915060803d608011610ed957610ec3818361054d565b5050905038610c4c565b610f1790610504565b610f22578738610c14565b8780fd5b6040513d8b823e3d90fd5b8980fd5b9091506020813d602011610f61575b81610f516020938361054d565b8101031261048357519038610bc4565b3d9150610f44565b819297509060209181010312610f225735943880610b75565b5050604051638eb22cdd60e01b815260048101849052938401829052604484018790529095949293506001600160a01b031691602084606481865afa938415611066578594611032575b50823b1561037857604051630208d92960e11b8152938593859390928492869284926110079291906001600160a01b031630600486016109d5565b03925af180156110275761101a57505090565b61102390610504565b5090565b6040513d84823e3d90fd5b9093506020813d60201161105e575b8161104e6020938361054d565b8101031261037857519238610fcc565b3d9150611041565b6040513d87823e3d90fd5b60405162461bcd60e51b815260206004820152600781880152666f6e6c79204c5160c81b6044820152606490fd5b9091506020813d6020116110cf575b816110bb6020938361054d565b810103126110cb57519038610b55565b8880fd5b3d91506110ae565b90506020813d602011611110575b816110f26020938361054d565b810103126110cb57906020611108600493610570565b919250610b22565b3d91506110e5565b602091995061113390823d84116106f9576106ea818361054d565b9890610b03565b61115491935060203d6020116106f9576106ea818361054d565b9138610add565b60405162461bcd60e51b8152602060048201526010818701526f13585c9ad95d081b9bdd081d985b1a5960821b6044820152606490fd5b90506020813d6020116111c4575b816111ad6020938361054d565b810103126110cb576111be906109c8565b38610ab2565b3d91506111a0565b995060208a3d60201161120c575b816111e76020938361054d565b81010312610f2257610a8661120160209798999a9b610570565b9a9998979650610a6c565b3d91506111da565b90506020813d60201161124a575b8161122f6020938361054d565b810103126112465761124090610570565b38610a3c565b8680fd5b3d9150611222565b91908260809103126104835781516005811015610483579161127660208201610570565b91606061128560408401610570565b92015190565b8051156112985760200190565b634e487b7160e01b600052603260045260246000fd5b8051600110156112985760400190565b809103906101408212610483576040805192606084016001600160401b038111858210176104ee5780835260808212610483576112fa81610517565b61130384610570565b81526020840151608086015261131a838501610570565b60a0860152606084015160c086015284526080607f19820112610483578190815161134481610517565b6080850151815260a0850151602082015260c08501518382015260e08501516060820152602086015260ff1901126104835761139d610120825193611388856104d3565b61139561010082016109c8565b8552016109c8565b602083015282015290565b6020908160408183019282815285518094520193019160005b8281106113cf575050505090565b8351855293810193928101926001016113c1565b60206040610120926060815160018060a01b03808251168852858201518689015284820151168488015201516060860152606083820151805160808801528481015160a08801528381015160c0880152015160e086015201518051151561010085015201511515910152565b60408051630cf35bdd60e41b808252600482018590529496959194608094936001600160a01b03908116939290918682602481885afa918215610700576000926116d1575b5087519081528960048201528681602481885afa9687156107005760009761169f575b5050906114cf6114c9606494936116f4565b966116f4565b958751946114dc86610532565b6002865260209788928a36858a01376114f48861128b565b526114fe876112ae565b52885194858092638eb22cdd60e01b8252896004830152866024830152600060448301525afa92831561169457600093611665575b506002541697865194633d9545e960e11b8652600486015260248501526044840152606483015260016084830152600160a483015261014091828160c4818a5afa92831561165a5784936115a6936115e59899936115d193600093611635575b50506115b49088519586918883016113a8565b03601f19810186528561054d565b8651630b7ecdc960e31b81529788948593849360048501906113e3565b6101606101448401526101648301906103de565b03915afa91821561162b57506000916115ff575b50905090565b82813d8311611624575b611613818361054d565b810103126101df57505180386115f9565b503d611609565b513d6000823e3d90fd5b6115b4929350908161165292903d10610e4d57610e3d818361054d565b919038611593565b85513d6000823e3d90fd5b90928682813d831161168d575b61167c818361054d565b810103126101df5750519138611533565b503d611672565b87513d6000823e3d90fd5b606494939297506116c36114cf92826114c993903d10610ed957610ec3818361054d565b5050905097929394506114b7565b6116e9919250873d8911610ed957610ec3818361054d565b505090509038611494565b600254604080516310c3a8d960e11b8152600492602092916001600160a01b0391849082908790829086165afa90811561186057908291600091611829575b50169060001995600092600354935b84811061179157505050505060001984131561175e5750505090565b5162461bcd60e51b815291820152600f60248201526e185cdcd95d081b9bdd08199bdd5b99608a1b604482015260649150fd5b855163c661065760e01b81528881018290528781602481865afa908115611694576000916117f4575b508416838516146117ec575b60001981146117d757600101611742565b601188634e487b7160e01b6000525260246000fd5b9750876117c6565b908882813d8311611822575b61180a818361054d565b810103126101df575061181c90610570565b386117ba565b503d611800565b91508482813d8311611859575b611840818361054d565b810103126101df57506118538291610570565b38611733565b503d611836565b83513d6000823e3d90fdfe8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0a2646970667358221220f00bad75dfd7902d01f06990e76a17055e7634a1f091cf0af26590772ef8e7df64736f6c63430008120033", "linkReferences": {}, "deployedLinkReferences": {} } diff --git a/src/artifacts/tapioca-periphery/CurveSwapper.json b/src/artifacts/tapioca-periphery/CurveSwapper.json index 9c3dce60..41c582b3 100644 --- a/src/artifacts/tapioca-periphery/CurveSwapper.json +++ b/src/artifacts/tapioca-periphery/CurveSwapper.json @@ -656,8 +656,8 @@ "type": "function" } ], - "bytecode": "0x60a0346200010957601f62001b0638819003918201601f19168301916001600160401b038311848410176200010e578084926040948552833981010312620001095780516001600160a01b039182821691829003620001095760200151918083168084036200010957620000c29060005460018060a01b03199333858316176000553391167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a360018055620000ba84151562000124565b151562000124565b600254161760025560805260405161199490816200017282396080518181816102f2015281816104f60152818161087b0152818161093701528181610aa10152610cde0152f35b600080fd5b634e487b7160e01b600052604160045260246000fd5b156200012c57565b60405162461bcd60e51b815260206004820152601a60248201527f537761707065723a2061646472657373206e6f742076616c69640000000000006044820152606490fdfe608080604052600436101561001357600080fd5b600090813560e01c9081631a16321014610ffe57508063218751b214610fd55780633fa2ef5e14610f415780635bf66e4814610c4d578063715018a614610c055780637b2a8bd214610af75780638da5cb5b14610ad0578063de40657714610a8b578063e3c711a014610a5b578063efa84c6d1461014d5763f2fde38b1461009a57600080fd5b3461014a57602036600319011261014a576100b3611026565b6100bb611104565b6001600160a01b039081169081156100f6576000548260018060a01b03198216176000551660008051602061193f833981519152600080a380f35b60405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608490fd5b80fd5b5036600319016101a08112610a57576101401361014a57610164356001600160a01b038116900361014a57610184356001600160401b038111610a575736602382011215610a57578060040135826101a4826110e9565b926101b260405194856110b0565b82845260208401923660248284010111610a535780602460209301853784010152600260015414610a0e576002600155829180518101916020828185019403126107335751906001600160401b03821161073357019080603f8301121561070157602082015161022181611236565b9261022f60405194856110b0565b8184526040602085019260051b8201019283116108e057604001905b8282106109fe5750506002546001600160a01b031691905061026c8161124d565b516040519063c661065760e01b82526004820152602081602481865afa9081156106bb5785916109df575b5060206102a383611270565b5160246040518096819363c661065760e01b835260048301525afa9283156106bb5785936109be575b50849060843580158015816109b3575b15610827575061031692505b60a43591602435907f00000000000000000000000000000000000000000000000000000000000000006116f0565b9061032a6103238261124d565b5191611270565b5160025460405163c661065760e01b81526001600160801b038416600482015293916001600160a01b0390911690602085602481855afa94851561081c5788956107fb575b5060405163c661065760e01b81526001600160801b038216600482015293602085602481865afa9485156107f05789956107bf575b50604051635e0d443f60e01b8152602081806103cb8887600f0b87600f0b60048501611280565b0381875afa9081156107b4578a9161077e575b50610144351161073f576040516370a0823160e01b8152306004820152958993906020886024816001600160a01b038b165afa9788156106bb578598610705575b5061042b918691611550565b6002546001600160a01b031690813b1561070157836084926040519687958694630f7c084960e21b8652600f0b6004860152600f0b602485015260448401526101443560648401525af180156106f6576106c6575b506040516370a0823160e01b81523060048201529190602090839060249082906001600160a01b03165afa9182156106bb578592610687575b5080821115610654576104cb916116cd565b9182156106105761012435801515810361060b57156105bc57506040839161051d8460018060a01b037f0000000000000000000000000000000000000000000000000000000000000000168093611550565b8151634d4d7cbd60e11b8152606480356004830152306024830152610164356001600160a01b0316604483015281018590526084810184905292839160a49183915af19081156105b15760409391610582575b505b6001805582519182526020820152f35b6105a29150833d85116105aa575b61059a81836110b0565b8101906112bb565b905038610570565b503d610590565b6040513d85823e3d90fd5b90604093506106069084519063a9059cbb60e01b60208301526105f8826105ea8761016435602484016112d1565b03601f1981018452836110b0565b6001600160a01b0316611304565b610572565b600080fd5b60405162461bcd60e51b815260206004820152601c60248201527b04375727665537761707065723a20616d6f756e744f757420697320360241b6044820152606490fd5b60405162461bcd60e51b815260206004820152600b60248201526a1cddd85c0819985a5b195960aa1b6044820152606490fd5b9091506020813d6020116106b3575b816106a3602093836110b0565b8101031261060b575190386104b9565b3d9150610696565b6040513d87823e3d90fd5b9094906001600160401b0381116106e257604052936020610480565b634e487b7160e01b82526041600452602482fd5b6040513d88823e3d90fd5b8380fd5b9097506020813d602011610737575b81610721602093836110b0565b8101031261073357519661042b61041f565b8480fd5b3d9150610714565b60405162461bcd60e51b81526020600482015260176024820152761a5b9cdd59999a58da595b9d0b585b5bdd5b9d0b5bdd5d604a1b6044820152606490fd5b90506020813d6020116107ac575b81610799602093836110b0565b810103126107a85751386103de565b8980fd5b3d915061078c565b6040513d8c823e3d90fd5b6107e291955060203d6020116107e9575b6107da81836110b0565b81019061129c565b93386103a4565b503d6107d0565b6040513d8b823e3d90fd5b61081591955060203d6020116107e9576107da81836110b0565b933861036f565b6040513d8a823e3d90fd5b906024359182610900575b50505060643580610848575b50610316916102e8565b60c4356108f65760405163442c159960e01b8152600481019190915260e4356024820152604481018790526020816064817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa80156108eb576108bc575b50610316915b9161083e565b602090813d83116108e4575b6108d281836110b0565b810103126108e057386108b0565b8580fd5b503d6108c8565b6040513d89823e3d90fd5b50610316916108b6565b9293509091156109ac575060405163442c159960e01b8152600481019190915260a4356024820152604481018690526020816064817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa9081156106f657869161097a575b505b90388080610832565b90506020813d6020116109a4575b81610995602093836110b0565b810103126108e057513861096f565b3d9150610988565b9050610971565b5060c43515156102dc565b6109d891935060203d6020116107e9576107da81836110b0565b91386102cc565b6109f8915060203d6020116107e9576107da81836110b0565b38610297565b815181526020918201910161024b565b60405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606490fd5b8280fd5b5080fd5b503461014a57610a6a3661105a565b505060405162461bcd60e51b8152905080610a87600482016111fe565b0390fd5b503461014a578060031936011261014a576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b503461014a578060031936011261014a57546040516001600160a01b039091168152602090f35b503461014a5760c036600319011261014a57610c0190610b1561103c565b610b1d61104b565b610b256111ba565b50610b2e6111ba565b92610b3761115c565b9160443583526064356020840152610b4d61115c565b91808352604083015260043560208301526024356060830152610b6e611191565b93151584521515602084015283526020830152604082015260405191829182919091610120602060406101408401956060815160018060a01b03808251168852858201518689015284820151168488015201516060860152606083820151805160808801528481015160a08801528381015160c0880152015160e086015201518051151561010085015201511515910152565b0390f35b503461014a578060031936011261014a57610c1e611104565b80546001600160a01b03198116825581906001600160a01b031660008051602061193f8339815191528280a380f35b503461014a57610c5c3661105a565b81939291016020938481830312610701578035906001600160401b03821161073357019080601f83011215610701578135610c9681611236565b92610ca460405194856110b0565b818452868085019260051b8201019283116108e0579086808095949301915b838310610f31575060608601359560808101359350879250907f0000000000000000000000000000000000000000000000000000000000000000908201358415801581610f24575b15610db2575050505050610d5a9350905b6002546001600160a01b031690610d356103238261124d565b5160405195869485938493635e0d443f60e01b8552600f0b90600f0b60048501611280565b03915afa918215610da6578092610d76575b5050604051908152f35b9091508282813d8311610d9f575b610d8e81836110b0565b8101031261014a5750513880610d6c565b503d610d84565b604051903d90823e3d90fd5b81929394969591610e7c575b50505085610dd3575b5050610d5a9350610d1c565b9293919260c0820135610e6e5760405163442c159960e01b8152600481019690965260e09190910135602486015260448501869052849060649082906001600160a01b03165afa8015610e635790859291610e36575b610d5a93505b3880610dc7565b919092813d8311610e5c575b610e4c81836110b0565b81010312610a5357818491610e29565b503d610e42565b6040513d86823e3d90fd5b50509190610d5a9350610e2f565b929694955092939092909115610f1957505060405163442c159960e01b8152600481019190915260a082013560248201526044810186905286816064816001600160a01b0388165afa9081156106f6579087949392918791610ee4575b505b92388080610dbe565b85819394959692503d8311610f12575b610efe81836110b0565b810103126108e05790869392915138610ed9565b503d610ef4565b909493929150610edb565b5060c08401351515610d0b565b8235815291810191859101610cc3565b503461014a5760c036600319011261014a57610f5b611026565b906024356001600160a01b038181169291839003610a5757610c0193610f7f61103c565b92610f8861104b565b90610f916111ba565b50610f9a6111ba565b95610fa361115c565b9460443586526064356020870152610fb961115c565b9416845260408401528060208401526060830152610b6e611191565b503461014a578060031936011261014a576002546040516001600160a01b039091168152602090f35b823461014a578060031936011261014a575062461bcd60e51b815280610a87600482016111fe565b600435906001600160a01b038216820361060b57565b60843590811515820361060b57565b60a43590811515820361060b57565b6003198101610160811261060b576101401361060b576004916001600160401b0391610144359083821161060b578060238301121561060b578185013593841161060b576024848301011161060b576024019190565b601f909101601f19168101906001600160401b038211908210176110d357604052565b634e487b7160e01b600052604160045260246000fd5b6001600160401b0381116110d357601f01601f191660200190565b6000546001600160a01b0316330361111857565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b60405190608082016001600160401b038111838210176110d35760405260006060838281528260208201528260408201520152565b60408051919082016001600160401b038111838210176110d35760405260006020838281520152565b60405190606082016001600160401b038111838210176110d357604052816111e061115c565b81526111ea61115c565b602082015260406111f9611191565b910152565b60609060208152601d60208201527f4375727665537761707065723a206e6f7420696d706c656d656e74656400000060408201520190565b6001600160401b0381116110d35760051b60200190565b80511561125a5760200190565b634e487b7160e01b600052603260045260246000fd5b80516001101561125a5760400190565b6040919493926060820195600f0b8252600f0b60208201520152565b9081602091031261060b57516001600160a01b038116810361060b5790565b919082604091031261060b576020825192015190565b6001600160a01b039091168152602081019190915260400190565b9081602091031261060b5751801515810361060b5790565b60408051908101916001600160a01b03166001600160401b038311828410176110d357611373926040526000806020958685527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c656487860152868151910182855af161136d6113ef565b9161141f565b8051908161138057505050565b82806113909383010191016112ec565b156113985750565b6084906040519062461bcd60e51b82526004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152fd5b3d1561141a573d90611400826110e9565b9161140e60405193846110b0565b82523d6000602084013e565b606090565b919290156114815750815115611433575090565b3b1561143c5790565b60405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606490fd5b8251909150156114945750805190602001fd5b6040519062461bcd60e51b82528160208060048301528251908160248401526000935b8285106114da575050604492506000838284010152601f80199101168101030190fd5b84810182015186860160440152938101938593506114b7565b156114fa57565b60405162461bcd60e51b815260206004820152602860248201527f42617365537761707065723a3a73616665417070726f76653a20617070726f76604482015267194819985a5b195960c21b6064820152608490fd5b929190833b156116915760405163095ea7b360e01b60208083018281526001600160a01b0385166024850152600060448086018290528552919591949293919291608081016001600160401b0381118282101761167d578695936115d9878080966116199d9e99966115ff966040525190828b5af16115cd6113ef565b8161164d575b506114f3565b6115f16040519384928b8401978852602484016112d1565b03601f1981018352826110b0565b51925af19061160c6113ef565b8261161b575b50506114f3565b565b8091925051918215928315611635575b5050503880611612565b61164593508201810191016112ec565b38808061162b565b8051801592508c908315611665575b505050386115d3565b61167593508201810191016112ec565b388b8161165c565b634e487b7160e01b87526041600452602487fd5b60405162461bcd60e51b815260206004820152601460248201527314ddd85c1c195c8e881b9bc818dbdb9d1c9858dd60621b6044820152606490fd5b919082039182116116da57565b634e487b7160e01b600052601160045260246000fd5b94939190929461010435801515810361060b576118c057505050821561188457604080516370a0823160e01b808252306004830152919490926001600160a01b031691602091908285602481875afa9485156118795760009561184a575b5086516323b872dd60e01b8482015233602482015230604482015260648082019390935291825260a082016001600160401b038111838210176110d357839261179991895285611304565b602487518095819382523060048301525afa91821561183f57600092611810575b50828211156117d257506117cf9293506116cd565b90565b60649085519062461bcd60e51b82526004820152601860248201527714ddd85c1c195c8e881d1c985b9cd9995c8819985a5b195960421b6044820152fd5b90918282813d8311611838575b61182781836110b0565b8101031261014a57505190386117ba565b503d61181d565b85513d6000823e3d90fd5b90948382813d8311611872575b61186181836110b0565b8101031261014a575051933861174e565b503d611857565b87513d6000823e3d90fd5b60405162461bcd60e51b81526020600482015260146024820152730537761707065723a20616d6f756e7420697320360641b6044820152606490fd5b6040935090600060a49285979496975196879586946311a5cc7760e31b865260048601523060248601523060448601526064850152608484015260018060a01b03165af190811561193257600091611916575090565b61192e915060403d81116105aa5761059a81836110b0565b5090565b6040513d6000823e3d90fdfe8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0a264697066735822122066627dec17bd649e692da07f177efd1fdb5ef9160955ab37bca9c46d8a34736e64736f6c63430008120033", - "deployedBytecode": "0x608080604052600436101561001357600080fd5b600090813560e01c9081631a16321014610ffe57508063218751b214610fd55780633fa2ef5e14610f415780635bf66e4814610c4d578063715018a614610c055780637b2a8bd214610af75780638da5cb5b14610ad0578063de40657714610a8b578063e3c711a014610a5b578063efa84c6d1461014d5763f2fde38b1461009a57600080fd5b3461014a57602036600319011261014a576100b3611026565b6100bb611104565b6001600160a01b039081169081156100f6576000548260018060a01b03198216176000551660008051602061193f833981519152600080a380f35b60405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608490fd5b80fd5b5036600319016101a08112610a57576101401361014a57610164356001600160a01b038116900361014a57610184356001600160401b038111610a575736602382011215610a57578060040135826101a4826110e9565b926101b260405194856110b0565b82845260208401923660248284010111610a535780602460209301853784010152600260015414610a0e576002600155829180518101916020828185019403126107335751906001600160401b03821161073357019080603f8301121561070157602082015161022181611236565b9261022f60405194856110b0565b8184526040602085019260051b8201019283116108e057604001905b8282106109fe5750506002546001600160a01b031691905061026c8161124d565b516040519063c661065760e01b82526004820152602081602481865afa9081156106bb5785916109df575b5060206102a383611270565b5160246040518096819363c661065760e01b835260048301525afa9283156106bb5785936109be575b50849060843580158015816109b3575b15610827575061031692505b60a43591602435907f00000000000000000000000000000000000000000000000000000000000000006116f0565b9061032a6103238261124d565b5191611270565b5160025460405163c661065760e01b81526001600160801b038416600482015293916001600160a01b0390911690602085602481855afa94851561081c5788956107fb575b5060405163c661065760e01b81526001600160801b038216600482015293602085602481865afa9485156107f05789956107bf575b50604051635e0d443f60e01b8152602081806103cb8887600f0b87600f0b60048501611280565b0381875afa9081156107b4578a9161077e575b50610144351161073f576040516370a0823160e01b8152306004820152958993906020886024816001600160a01b038b165afa9788156106bb578598610705575b5061042b918691611550565b6002546001600160a01b031690813b1561070157836084926040519687958694630f7c084960e21b8652600f0b6004860152600f0b602485015260448401526101443560648401525af180156106f6576106c6575b506040516370a0823160e01b81523060048201529190602090839060249082906001600160a01b03165afa9182156106bb578592610687575b5080821115610654576104cb916116cd565b9182156106105761012435801515810361060b57156105bc57506040839161051d8460018060a01b037f0000000000000000000000000000000000000000000000000000000000000000168093611550565b8151634d4d7cbd60e11b8152606480356004830152306024830152610164356001600160a01b0316604483015281018590526084810184905292839160a49183915af19081156105b15760409391610582575b505b6001805582519182526020820152f35b6105a29150833d85116105aa575b61059a81836110b0565b8101906112bb565b905038610570565b503d610590565b6040513d85823e3d90fd5b90604093506106069084519063a9059cbb60e01b60208301526105f8826105ea8761016435602484016112d1565b03601f1981018452836110b0565b6001600160a01b0316611304565b610572565b600080fd5b60405162461bcd60e51b815260206004820152601c60248201527b04375727665537761707065723a20616d6f756e744f757420697320360241b6044820152606490fd5b60405162461bcd60e51b815260206004820152600b60248201526a1cddd85c0819985a5b195960aa1b6044820152606490fd5b9091506020813d6020116106b3575b816106a3602093836110b0565b8101031261060b575190386104b9565b3d9150610696565b6040513d87823e3d90fd5b9094906001600160401b0381116106e257604052936020610480565b634e487b7160e01b82526041600452602482fd5b6040513d88823e3d90fd5b8380fd5b9097506020813d602011610737575b81610721602093836110b0565b8101031261073357519661042b61041f565b8480fd5b3d9150610714565b60405162461bcd60e51b81526020600482015260176024820152761a5b9cdd59999a58da595b9d0b585b5bdd5b9d0b5bdd5d604a1b6044820152606490fd5b90506020813d6020116107ac575b81610799602093836110b0565b810103126107a85751386103de565b8980fd5b3d915061078c565b6040513d8c823e3d90fd5b6107e291955060203d6020116107e9575b6107da81836110b0565b81019061129c565b93386103a4565b503d6107d0565b6040513d8b823e3d90fd5b61081591955060203d6020116107e9576107da81836110b0565b933861036f565b6040513d8a823e3d90fd5b906024359182610900575b50505060643580610848575b50610316916102e8565b60c4356108f65760405163442c159960e01b8152600481019190915260e4356024820152604481018790526020816064817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa80156108eb576108bc575b50610316915b9161083e565b602090813d83116108e4575b6108d281836110b0565b810103126108e057386108b0565b8580fd5b503d6108c8565b6040513d89823e3d90fd5b50610316916108b6565b9293509091156109ac575060405163442c159960e01b8152600481019190915260a4356024820152604481018690526020816064817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa9081156106f657869161097a575b505b90388080610832565b90506020813d6020116109a4575b81610995602093836110b0565b810103126108e057513861096f565b3d9150610988565b9050610971565b5060c43515156102dc565b6109d891935060203d6020116107e9576107da81836110b0565b91386102cc565b6109f8915060203d6020116107e9576107da81836110b0565b38610297565b815181526020918201910161024b565b60405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606490fd5b8280fd5b5080fd5b503461014a57610a6a3661105a565b505060405162461bcd60e51b8152905080610a87600482016111fe565b0390fd5b503461014a578060031936011261014a576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b503461014a578060031936011261014a57546040516001600160a01b039091168152602090f35b503461014a5760c036600319011261014a57610c0190610b1561103c565b610b1d61104b565b610b256111ba565b50610b2e6111ba565b92610b3761115c565b9160443583526064356020840152610b4d61115c565b91808352604083015260043560208301526024356060830152610b6e611191565b93151584521515602084015283526020830152604082015260405191829182919091610120602060406101408401956060815160018060a01b03808251168852858201518689015284820151168488015201516060860152606083820151805160808801528481015160a08801528381015160c0880152015160e086015201518051151561010085015201511515910152565b0390f35b503461014a578060031936011261014a57610c1e611104565b80546001600160a01b03198116825581906001600160a01b031660008051602061193f8339815191528280a380f35b503461014a57610c5c3661105a565b81939291016020938481830312610701578035906001600160401b03821161073357019080601f83011215610701578135610c9681611236565b92610ca460405194856110b0565b818452868085019260051b8201019283116108e0579086808095949301915b838310610f31575060608601359560808101359350879250907f0000000000000000000000000000000000000000000000000000000000000000908201358415801581610f24575b15610db2575050505050610d5a9350905b6002546001600160a01b031690610d356103238261124d565b5160405195869485938493635e0d443f60e01b8552600f0b90600f0b60048501611280565b03915afa918215610da6578092610d76575b5050604051908152f35b9091508282813d8311610d9f575b610d8e81836110b0565b8101031261014a5750513880610d6c565b503d610d84565b604051903d90823e3d90fd5b81929394969591610e7c575b50505085610dd3575b5050610d5a9350610d1c565b9293919260c0820135610e6e5760405163442c159960e01b8152600481019690965260e09190910135602486015260448501869052849060649082906001600160a01b03165afa8015610e635790859291610e36575b610d5a93505b3880610dc7565b919092813d8311610e5c575b610e4c81836110b0565b81010312610a5357818491610e29565b503d610e42565b6040513d86823e3d90fd5b50509190610d5a9350610e2f565b929694955092939092909115610f1957505060405163442c159960e01b8152600481019190915260a082013560248201526044810186905286816064816001600160a01b0388165afa9081156106f6579087949392918791610ee4575b505b92388080610dbe565b85819394959692503d8311610f12575b610efe81836110b0565b810103126108e05790869392915138610ed9565b503d610ef4565b909493929150610edb565b5060c08401351515610d0b565b8235815291810191859101610cc3565b503461014a5760c036600319011261014a57610f5b611026565b906024356001600160a01b038181169291839003610a5757610c0193610f7f61103c565b92610f8861104b565b90610f916111ba565b50610f9a6111ba565b95610fa361115c565b9460443586526064356020870152610fb961115c565b9416845260408401528060208401526060830152610b6e611191565b503461014a578060031936011261014a576002546040516001600160a01b039091168152602090f35b823461014a578060031936011261014a575062461bcd60e51b815280610a87600482016111fe565b600435906001600160a01b038216820361060b57565b60843590811515820361060b57565b60a43590811515820361060b57565b6003198101610160811261060b576101401361060b576004916001600160401b0391610144359083821161060b578060238301121561060b578185013593841161060b576024848301011161060b576024019190565b601f909101601f19168101906001600160401b038211908210176110d357604052565b634e487b7160e01b600052604160045260246000fd5b6001600160401b0381116110d357601f01601f191660200190565b6000546001600160a01b0316330361111857565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b60405190608082016001600160401b038111838210176110d35760405260006060838281528260208201528260408201520152565b60408051919082016001600160401b038111838210176110d35760405260006020838281520152565b60405190606082016001600160401b038111838210176110d357604052816111e061115c565b81526111ea61115c565b602082015260406111f9611191565b910152565b60609060208152601d60208201527f4375727665537761707065723a206e6f7420696d706c656d656e74656400000060408201520190565b6001600160401b0381116110d35760051b60200190565b80511561125a5760200190565b634e487b7160e01b600052603260045260246000fd5b80516001101561125a5760400190565b6040919493926060820195600f0b8252600f0b60208201520152565b9081602091031261060b57516001600160a01b038116810361060b5790565b919082604091031261060b576020825192015190565b6001600160a01b039091168152602081019190915260400190565b9081602091031261060b5751801515810361060b5790565b60408051908101916001600160a01b03166001600160401b038311828410176110d357611373926040526000806020958685527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c656487860152868151910182855af161136d6113ef565b9161141f565b8051908161138057505050565b82806113909383010191016112ec565b156113985750565b6084906040519062461bcd60e51b82526004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152fd5b3d1561141a573d90611400826110e9565b9161140e60405193846110b0565b82523d6000602084013e565b606090565b919290156114815750815115611433575090565b3b1561143c5790565b60405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606490fd5b8251909150156114945750805190602001fd5b6040519062461bcd60e51b82528160208060048301528251908160248401526000935b8285106114da575050604492506000838284010152601f80199101168101030190fd5b84810182015186860160440152938101938593506114b7565b156114fa57565b60405162461bcd60e51b815260206004820152602860248201527f42617365537761707065723a3a73616665417070726f76653a20617070726f76604482015267194819985a5b195960c21b6064820152608490fd5b929190833b156116915760405163095ea7b360e01b60208083018281526001600160a01b0385166024850152600060448086018290528552919591949293919291608081016001600160401b0381118282101761167d578695936115d9878080966116199d9e99966115ff966040525190828b5af16115cd6113ef565b8161164d575b506114f3565b6115f16040519384928b8401978852602484016112d1565b03601f1981018352826110b0565b51925af19061160c6113ef565b8261161b575b50506114f3565b565b8091925051918215928315611635575b5050503880611612565b61164593508201810191016112ec565b38808061162b565b8051801592508c908315611665575b505050386115d3565b61167593508201810191016112ec565b388b8161165c565b634e487b7160e01b87526041600452602487fd5b60405162461bcd60e51b815260206004820152601460248201527314ddd85c1c195c8e881b9bc818dbdb9d1c9858dd60621b6044820152606490fd5b919082039182116116da57565b634e487b7160e01b600052601160045260246000fd5b94939190929461010435801515810361060b576118c057505050821561188457604080516370a0823160e01b808252306004830152919490926001600160a01b031691602091908285602481875afa9485156118795760009561184a575b5086516323b872dd60e01b8482015233602482015230604482015260648082019390935291825260a082016001600160401b038111838210176110d357839261179991895285611304565b602487518095819382523060048301525afa91821561183f57600092611810575b50828211156117d257506117cf9293506116cd565b90565b60649085519062461bcd60e51b82526004820152601860248201527714ddd85c1c195c8e881d1c985b9cd9995c8819985a5b195960421b6044820152fd5b90918282813d8311611838575b61182781836110b0565b8101031261014a57505190386117ba565b503d61181d565b85513d6000823e3d90fd5b90948382813d8311611872575b61186181836110b0565b8101031261014a575051933861174e565b503d611857565b87513d6000823e3d90fd5b60405162461bcd60e51b81526020600482015260146024820152730537761707065723a20616d6f756e7420697320360641b6044820152606490fd5b6040935090600060a49285979496975196879586946311a5cc7760e31b865260048601523060248601523060448601526064850152608484015260018060a01b03165af190811561193257600091611916575090565b61192e915060403d81116105aa5761059a81836110b0565b5090565b6040513d6000823e3d90fdfe8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0a264697066735822122066627dec17bd649e692da07f177efd1fdb5ef9160955ab37bca9c46d8a34736e64736f6c63430008120033", + "bytecode": "0x60a0346200010957601f62001b0638819003918201601f19168301916001600160401b038311848410176200010e578084926040948552833981010312620001095780516001600160a01b039182821691829003620001095760200151918083168084036200010957620000c29060005460018060a01b03199333858316176000553391167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a360018055620000ba84151562000124565b151562000124565b600254161760025560805260405161199490816200017282396080518181816102f2015281816104f60152818161087b0152818161093701528181610aa10152610cde0152f35b600080fd5b634e487b7160e01b600052604160045260246000fd5b156200012c57565b60405162461bcd60e51b815260206004820152601a60248201527f537761707065723a2061646472657373206e6f742076616c69640000000000006044820152606490fdfe608080604052600436101561001357600080fd5b600090813560e01c9081631a16321014610ffe57508063218751b214610fd55780633fa2ef5e14610f415780635bf66e4814610c4d578063715018a614610c055780637b2a8bd214610af75780638da5cb5b14610ad0578063de40657714610a8b578063e3c711a014610a5b578063efa84c6d1461014d5763f2fde38b1461009a57600080fd5b3461014a57602036600319011261014a576100b3611026565b6100bb611104565b6001600160a01b039081169081156100f6576000548260018060a01b03198216176000551660008051602061193f833981519152600080a380f35b60405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608490fd5b80fd5b5036600319016101a08112610a57576101401361014a57610164356001600160a01b038116900361014a57610184356001600160401b038111610a575736602382011215610a57578060040135826101a4826110e9565b926101b260405194856110b0565b82845260208401923660248284010111610a535780602460209301853784010152600260015414610a0e576002600155829180518101916020828185019403126107335751906001600160401b03821161073357019080603f8301121561070157602082015161022181611236565b9261022f60405194856110b0565b8184526040602085019260051b8201019283116108e057604001905b8282106109fe5750506002546001600160a01b031691905061026c8161124d565b516040519063c661065760e01b82526004820152602081602481865afa9081156106bb5785916109df575b5060206102a383611270565b5160246040518096819363c661065760e01b835260048301525afa9283156106bb5785936109be575b50849060843580158015816109b3575b15610827575061031692505b60a43591602435907f00000000000000000000000000000000000000000000000000000000000000006116f0565b9061032a6103238261124d565b5191611270565b5160025460405163c661065760e01b81526001600160801b038416600482015293916001600160a01b0390911690602085602481855afa94851561081c5788956107fb575b5060405163c661065760e01b81526001600160801b038216600482015293602085602481865afa9485156107f05789956107bf575b50604051635e0d443f60e01b8152602081806103cb8887600f0b87600f0b60048501611280565b0381875afa9081156107b4578a9161077e575b50610144351161073f576040516370a0823160e01b8152306004820152958993906020886024816001600160a01b038b165afa9788156106bb578598610705575b5061042b918691611550565b6002546001600160a01b031690813b1561070157836084926040519687958694630f7c084960e21b8652600f0b6004860152600f0b602485015260448401526101443560648401525af180156106f6576106c6575b506040516370a0823160e01b81523060048201529190602090839060249082906001600160a01b03165afa9182156106bb578592610687575b5080821115610654576104cb916116cd565b9182156106105761012435801515810361060b57156105bc57506040839161051d8460018060a01b037f0000000000000000000000000000000000000000000000000000000000000000168093611550565b8151634d4d7cbd60e11b8152606480356004830152306024830152610164356001600160a01b0316604483015281018590526084810184905292839160a49183915af19081156105b15760409391610582575b505b6001805582519182526020820152f35b6105a29150833d85116105aa575b61059a81836110b0565b8101906112bb565b905038610570565b503d610590565b6040513d85823e3d90fd5b90604093506106069084519063a9059cbb60e01b60208301526105f8826105ea8761016435602484016112d1565b03601f1981018452836110b0565b6001600160a01b0316611304565b610572565b600080fd5b60405162461bcd60e51b815260206004820152601c60248201527b04375727665537761707065723a20616d6f756e744f757420697320360241b6044820152606490fd5b60405162461bcd60e51b815260206004820152600b60248201526a1cddd85c0819985a5b195960aa1b6044820152606490fd5b9091506020813d6020116106b3575b816106a3602093836110b0565b8101031261060b575190386104b9565b3d9150610696565b6040513d87823e3d90fd5b9094906001600160401b0381116106e257604052936020610480565b634e487b7160e01b82526041600452602482fd5b6040513d88823e3d90fd5b8380fd5b9097506020813d602011610737575b81610721602093836110b0565b8101031261073357519661042b61041f565b8480fd5b3d9150610714565b60405162461bcd60e51b81526020600482015260176024820152761a5b9cdd59999a58da595b9d0b585b5bdd5b9d0b5bdd5d604a1b6044820152606490fd5b90506020813d6020116107ac575b81610799602093836110b0565b810103126107a85751386103de565b8980fd5b3d915061078c565b6040513d8c823e3d90fd5b6107e291955060203d6020116107e9575b6107da81836110b0565b81019061129c565b93386103a4565b503d6107d0565b6040513d8b823e3d90fd5b61081591955060203d6020116107e9576107da81836110b0565b933861036f565b6040513d8a823e3d90fd5b906024359182610900575b50505060643580610848575b50610316916102e8565b60c4356108f65760405163442c159960e01b8152600481019190915260e4356024820152604481018790526020816064817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa80156108eb576108bc575b50610316915b9161083e565b602090813d83116108e4575b6108d281836110b0565b810103126108e057386108b0565b8580fd5b503d6108c8565b6040513d89823e3d90fd5b50610316916108b6565b9293509091156109ac575060405163442c159960e01b8152600481019190915260a4356024820152604481018690526020816064817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa9081156106f657869161097a575b505b90388080610832565b90506020813d6020116109a4575b81610995602093836110b0565b810103126108e057513861096f565b3d9150610988565b9050610971565b5060c43515156102dc565b6109d891935060203d6020116107e9576107da81836110b0565b91386102cc565b6109f8915060203d6020116107e9576107da81836110b0565b38610297565b815181526020918201910161024b565b60405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606490fd5b8280fd5b5080fd5b503461014a57610a6a3661105a565b505060405162461bcd60e51b8152905080610a87600482016111fe565b0390fd5b503461014a578060031936011261014a576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b503461014a578060031936011261014a57546040516001600160a01b039091168152602090f35b503461014a5760c036600319011261014a57610c0190610b1561103c565b610b1d61104b565b610b256111ba565b50610b2e6111ba565b92610b3761115c565b9160443583526064356020840152610b4d61115c565b91808352604083015260043560208301526024356060830152610b6e611191565b93151584521515602084015283526020830152604082015260405191829182919091610120602060406101408401956060815160018060a01b03808251168852858201518689015284820151168488015201516060860152606083820151805160808801528481015160a08801528381015160c0880152015160e086015201518051151561010085015201511515910152565b0390f35b503461014a578060031936011261014a57610c1e611104565b80546001600160a01b03198116825581906001600160a01b031660008051602061193f8339815191528280a380f35b503461014a57610c5c3661105a565b81939291016020938481830312610701578035906001600160401b03821161073357019080601f83011215610701578135610c9681611236565b92610ca460405194856110b0565b818452868085019260051b8201019283116108e0579086808095949301915b838310610f31575060608601359560808101359350879250907f0000000000000000000000000000000000000000000000000000000000000000908201358415801581610f24575b15610db2575050505050610d5a9350905b6002546001600160a01b031690610d356103238261124d565b5160405195869485938493635e0d443f60e01b8552600f0b90600f0b60048501611280565b03915afa918215610da6578092610d76575b5050604051908152f35b9091508282813d8311610d9f575b610d8e81836110b0565b8101031261014a5750513880610d6c565b503d610d84565b604051903d90823e3d90fd5b81929394969591610e7c575b50505085610dd3575b5050610d5a9350610d1c565b9293919260c0820135610e6e5760405163442c159960e01b8152600481019690965260e09190910135602486015260448501869052849060649082906001600160a01b03165afa8015610e635790859291610e36575b610d5a93505b3880610dc7565b919092813d8311610e5c575b610e4c81836110b0565b81010312610a5357818491610e29565b503d610e42565b6040513d86823e3d90fd5b50509190610d5a9350610e2f565b929694955092939092909115610f1957505060405163442c159960e01b8152600481019190915260a082013560248201526044810186905286816064816001600160a01b0388165afa9081156106f6579087949392918791610ee4575b505b92388080610dbe565b85819394959692503d8311610f12575b610efe81836110b0565b810103126108e05790869392915138610ed9565b503d610ef4565b909493929150610edb565b5060c08401351515610d0b565b8235815291810191859101610cc3565b503461014a5760c036600319011261014a57610f5b611026565b906024356001600160a01b038181169291839003610a5757610c0193610f7f61103c565b92610f8861104b565b90610f916111ba565b50610f9a6111ba565b95610fa361115c565b9460443586526064356020870152610fb961115c565b9416845260408401528060208401526060830152610b6e611191565b503461014a578060031936011261014a576002546040516001600160a01b039091168152602090f35b823461014a578060031936011261014a575062461bcd60e51b815280610a87600482016111fe565b600435906001600160a01b038216820361060b57565b60843590811515820361060b57565b60a43590811515820361060b57565b6003198101610160811261060b576101401361060b576004916001600160401b0391610144359083821161060b578060238301121561060b578185013593841161060b576024848301011161060b576024019190565b601f909101601f19168101906001600160401b038211908210176110d357604052565b634e487b7160e01b600052604160045260246000fd5b6001600160401b0381116110d357601f01601f191660200190565b6000546001600160a01b0316330361111857565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b60405190608082016001600160401b038111838210176110d35760405260006060838281528260208201528260408201520152565b60408051919082016001600160401b038111838210176110d35760405260006020838281520152565b60405190606082016001600160401b038111838210176110d357604052816111e061115c565b81526111ea61115c565b602082015260406111f9611191565b910152565b60609060208152601d60208201527f4375727665537761707065723a206e6f7420696d706c656d656e74656400000060408201520190565b6001600160401b0381116110d35760051b60200190565b80511561125a5760200190565b634e487b7160e01b600052603260045260246000fd5b80516001101561125a5760400190565b6040919493926060820195600f0b8252600f0b60208201520152565b9081602091031261060b57516001600160a01b038116810361060b5790565b919082604091031261060b576020825192015190565b6001600160a01b039091168152602081019190915260400190565b9081602091031261060b5751801515810361060b5790565b60408051908101916001600160a01b03166001600160401b038311828410176110d357611373926040526000806020958685527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c656487860152868151910182855af161136d6113ef565b9161141f565b8051908161138057505050565b82806113909383010191016112ec565b156113985750565b6084906040519062461bcd60e51b82526004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152fd5b3d1561141a573d90611400826110e9565b9161140e60405193846110b0565b82523d6000602084013e565b606090565b919290156114815750815115611433575090565b3b1561143c5790565b60405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606490fd5b8251909150156114945750805190602001fd5b6040519062461bcd60e51b82528160208060048301528251908160248401526000935b8285106114da575050604492506000838284010152601f80199101168101030190fd5b84810182015186860160440152938101938593506114b7565b156114fa57565b60405162461bcd60e51b815260206004820152602860248201527f42617365537761707065723a3a73616665417070726f76653a20617070726f76604482015267194819985a5b195960c21b6064820152608490fd5b929190833b156116915760405163095ea7b360e01b60208083018281526001600160a01b0385166024850152600060448086018290528552919591949293919291608081016001600160401b0381118282101761167d578695936115d9878080966116199d9e99966115ff966040525190828b5af16115cd6113ef565b8161164d575b506114f3565b6115f16040519384928b8401978852602484016112d1565b03601f1981018352826110b0565b51925af19061160c6113ef565b8261161b575b50506114f3565b565b8091925051918215928315611635575b5050503880611612565b61164593508201810191016112ec565b38808061162b565b8051801592508c908315611665575b505050386115d3565b61167593508201810191016112ec565b388b8161165c565b634e487b7160e01b87526041600452602487fd5b60405162461bcd60e51b815260206004820152601460248201527314ddd85c1c195c8e881b9bc818dbdb9d1c9858dd60621b6044820152606490fd5b919082039182116116da57565b634e487b7160e01b600052601160045260246000fd5b94939190929461010435801515810361060b576118c057505050821561188457604080516370a0823160e01b808252306004830152919490926001600160a01b031691602091908285602481875afa9485156118795760009561184a575b5086516323b872dd60e01b8482015233602482015230604482015260648082019390935291825260a082016001600160401b038111838210176110d357839261179991895285611304565b602487518095819382523060048301525afa91821561183f57600092611810575b50828211156117d257506117cf9293506116cd565b90565b60649085519062461bcd60e51b82526004820152601860248201527714ddd85c1c195c8e881d1c985b9cd9995c8819985a5b195960421b6044820152fd5b90918282813d8311611838575b61182781836110b0565b8101031261014a57505190386117ba565b503d61181d565b85513d6000823e3d90fd5b90948382813d8311611872575b61186181836110b0565b8101031261014a575051933861174e565b503d611857565b87513d6000823e3d90fd5b60405162461bcd60e51b81526020600482015260146024820152730537761707065723a20616d6f756e7420697320360641b6044820152606490fd5b6040935090600060a49285979496975196879586946311a5cc7760e31b865260048601523060248601523060448601526064850152608484015260018060a01b03165af190811561193257600091611916575090565b61192e915060403d81116105aa5761059a81836110b0565b5090565b6040513d6000823e3d90fdfe8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0a2646970667358221220618c98d9604f5a06a99dfe02eb96b7412a69a17c0735df620ecbf13731625c8964736f6c63430008120033", + "deployedBytecode": "0x608080604052600436101561001357600080fd5b600090813560e01c9081631a16321014610ffe57508063218751b214610fd55780633fa2ef5e14610f415780635bf66e4814610c4d578063715018a614610c055780637b2a8bd214610af75780638da5cb5b14610ad0578063de40657714610a8b578063e3c711a014610a5b578063efa84c6d1461014d5763f2fde38b1461009a57600080fd5b3461014a57602036600319011261014a576100b3611026565b6100bb611104565b6001600160a01b039081169081156100f6576000548260018060a01b03198216176000551660008051602061193f833981519152600080a380f35b60405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608490fd5b80fd5b5036600319016101a08112610a57576101401361014a57610164356001600160a01b038116900361014a57610184356001600160401b038111610a575736602382011215610a57578060040135826101a4826110e9565b926101b260405194856110b0565b82845260208401923660248284010111610a535780602460209301853784010152600260015414610a0e576002600155829180518101916020828185019403126107335751906001600160401b03821161073357019080603f8301121561070157602082015161022181611236565b9261022f60405194856110b0565b8184526040602085019260051b8201019283116108e057604001905b8282106109fe5750506002546001600160a01b031691905061026c8161124d565b516040519063c661065760e01b82526004820152602081602481865afa9081156106bb5785916109df575b5060206102a383611270565b5160246040518096819363c661065760e01b835260048301525afa9283156106bb5785936109be575b50849060843580158015816109b3575b15610827575061031692505b60a43591602435907f00000000000000000000000000000000000000000000000000000000000000006116f0565b9061032a6103238261124d565b5191611270565b5160025460405163c661065760e01b81526001600160801b038416600482015293916001600160a01b0390911690602085602481855afa94851561081c5788956107fb575b5060405163c661065760e01b81526001600160801b038216600482015293602085602481865afa9485156107f05789956107bf575b50604051635e0d443f60e01b8152602081806103cb8887600f0b87600f0b60048501611280565b0381875afa9081156107b4578a9161077e575b50610144351161073f576040516370a0823160e01b8152306004820152958993906020886024816001600160a01b038b165afa9788156106bb578598610705575b5061042b918691611550565b6002546001600160a01b031690813b1561070157836084926040519687958694630f7c084960e21b8652600f0b6004860152600f0b602485015260448401526101443560648401525af180156106f6576106c6575b506040516370a0823160e01b81523060048201529190602090839060249082906001600160a01b03165afa9182156106bb578592610687575b5080821115610654576104cb916116cd565b9182156106105761012435801515810361060b57156105bc57506040839161051d8460018060a01b037f0000000000000000000000000000000000000000000000000000000000000000168093611550565b8151634d4d7cbd60e11b8152606480356004830152306024830152610164356001600160a01b0316604483015281018590526084810184905292839160a49183915af19081156105b15760409391610582575b505b6001805582519182526020820152f35b6105a29150833d85116105aa575b61059a81836110b0565b8101906112bb565b905038610570565b503d610590565b6040513d85823e3d90fd5b90604093506106069084519063a9059cbb60e01b60208301526105f8826105ea8761016435602484016112d1565b03601f1981018452836110b0565b6001600160a01b0316611304565b610572565b600080fd5b60405162461bcd60e51b815260206004820152601c60248201527b04375727665537761707065723a20616d6f756e744f757420697320360241b6044820152606490fd5b60405162461bcd60e51b815260206004820152600b60248201526a1cddd85c0819985a5b195960aa1b6044820152606490fd5b9091506020813d6020116106b3575b816106a3602093836110b0565b8101031261060b575190386104b9565b3d9150610696565b6040513d87823e3d90fd5b9094906001600160401b0381116106e257604052936020610480565b634e487b7160e01b82526041600452602482fd5b6040513d88823e3d90fd5b8380fd5b9097506020813d602011610737575b81610721602093836110b0565b8101031261073357519661042b61041f565b8480fd5b3d9150610714565b60405162461bcd60e51b81526020600482015260176024820152761a5b9cdd59999a58da595b9d0b585b5bdd5b9d0b5bdd5d604a1b6044820152606490fd5b90506020813d6020116107ac575b81610799602093836110b0565b810103126107a85751386103de565b8980fd5b3d915061078c565b6040513d8c823e3d90fd5b6107e291955060203d6020116107e9575b6107da81836110b0565b81019061129c565b93386103a4565b503d6107d0565b6040513d8b823e3d90fd5b61081591955060203d6020116107e9576107da81836110b0565b933861036f565b6040513d8a823e3d90fd5b906024359182610900575b50505060643580610848575b50610316916102e8565b60c4356108f65760405163442c159960e01b8152600481019190915260e4356024820152604481018790526020816064817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa80156108eb576108bc575b50610316915b9161083e565b602090813d83116108e4575b6108d281836110b0565b810103126108e057386108b0565b8580fd5b503d6108c8565b6040513d89823e3d90fd5b50610316916108b6565b9293509091156109ac575060405163442c159960e01b8152600481019190915260a4356024820152604481018690526020816064817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa9081156106f657869161097a575b505b90388080610832565b90506020813d6020116109a4575b81610995602093836110b0565b810103126108e057513861096f565b3d9150610988565b9050610971565b5060c43515156102dc565b6109d891935060203d6020116107e9576107da81836110b0565b91386102cc565b6109f8915060203d6020116107e9576107da81836110b0565b38610297565b815181526020918201910161024b565b60405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606490fd5b8280fd5b5080fd5b503461014a57610a6a3661105a565b505060405162461bcd60e51b8152905080610a87600482016111fe565b0390fd5b503461014a578060031936011261014a576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b503461014a578060031936011261014a57546040516001600160a01b039091168152602090f35b503461014a5760c036600319011261014a57610c0190610b1561103c565b610b1d61104b565b610b256111ba565b50610b2e6111ba565b92610b3761115c565b9160443583526064356020840152610b4d61115c565b91808352604083015260043560208301526024356060830152610b6e611191565b93151584521515602084015283526020830152604082015260405191829182919091610120602060406101408401956060815160018060a01b03808251168852858201518689015284820151168488015201516060860152606083820151805160808801528481015160a08801528381015160c0880152015160e086015201518051151561010085015201511515910152565b0390f35b503461014a578060031936011261014a57610c1e611104565b80546001600160a01b03198116825581906001600160a01b031660008051602061193f8339815191528280a380f35b503461014a57610c5c3661105a565b81939291016020938481830312610701578035906001600160401b03821161073357019080601f83011215610701578135610c9681611236565b92610ca460405194856110b0565b818452868085019260051b8201019283116108e0579086808095949301915b838310610f31575060608601359560808101359350879250907f0000000000000000000000000000000000000000000000000000000000000000908201358415801581610f24575b15610db2575050505050610d5a9350905b6002546001600160a01b031690610d356103238261124d565b5160405195869485938493635e0d443f60e01b8552600f0b90600f0b60048501611280565b03915afa918215610da6578092610d76575b5050604051908152f35b9091508282813d8311610d9f575b610d8e81836110b0565b8101031261014a5750513880610d6c565b503d610d84565b604051903d90823e3d90fd5b81929394969591610e7c575b50505085610dd3575b5050610d5a9350610d1c565b9293919260c0820135610e6e5760405163442c159960e01b8152600481019690965260e09190910135602486015260448501869052849060649082906001600160a01b03165afa8015610e635790859291610e36575b610d5a93505b3880610dc7565b919092813d8311610e5c575b610e4c81836110b0565b81010312610a5357818491610e29565b503d610e42565b6040513d86823e3d90fd5b50509190610d5a9350610e2f565b929694955092939092909115610f1957505060405163442c159960e01b8152600481019190915260a082013560248201526044810186905286816064816001600160a01b0388165afa9081156106f6579087949392918791610ee4575b505b92388080610dbe565b85819394959692503d8311610f12575b610efe81836110b0565b810103126108e05790869392915138610ed9565b503d610ef4565b909493929150610edb565b5060c08401351515610d0b565b8235815291810191859101610cc3565b503461014a5760c036600319011261014a57610f5b611026565b906024356001600160a01b038181169291839003610a5757610c0193610f7f61103c565b92610f8861104b565b90610f916111ba565b50610f9a6111ba565b95610fa361115c565b9460443586526064356020870152610fb961115c565b9416845260408401528060208401526060830152610b6e611191565b503461014a578060031936011261014a576002546040516001600160a01b039091168152602090f35b823461014a578060031936011261014a575062461bcd60e51b815280610a87600482016111fe565b600435906001600160a01b038216820361060b57565b60843590811515820361060b57565b60a43590811515820361060b57565b6003198101610160811261060b576101401361060b576004916001600160401b0391610144359083821161060b578060238301121561060b578185013593841161060b576024848301011161060b576024019190565b601f909101601f19168101906001600160401b038211908210176110d357604052565b634e487b7160e01b600052604160045260246000fd5b6001600160401b0381116110d357601f01601f191660200190565b6000546001600160a01b0316330361111857565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b60405190608082016001600160401b038111838210176110d35760405260006060838281528260208201528260408201520152565b60408051919082016001600160401b038111838210176110d35760405260006020838281520152565b60405190606082016001600160401b038111838210176110d357604052816111e061115c565b81526111ea61115c565b602082015260406111f9611191565b910152565b60609060208152601d60208201527f4375727665537761707065723a206e6f7420696d706c656d656e74656400000060408201520190565b6001600160401b0381116110d35760051b60200190565b80511561125a5760200190565b634e487b7160e01b600052603260045260246000fd5b80516001101561125a5760400190565b6040919493926060820195600f0b8252600f0b60208201520152565b9081602091031261060b57516001600160a01b038116810361060b5790565b919082604091031261060b576020825192015190565b6001600160a01b039091168152602081019190915260400190565b9081602091031261060b5751801515810361060b5790565b60408051908101916001600160a01b03166001600160401b038311828410176110d357611373926040526000806020958685527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c656487860152868151910182855af161136d6113ef565b9161141f565b8051908161138057505050565b82806113909383010191016112ec565b156113985750565b6084906040519062461bcd60e51b82526004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152fd5b3d1561141a573d90611400826110e9565b9161140e60405193846110b0565b82523d6000602084013e565b606090565b919290156114815750815115611433575090565b3b1561143c5790565b60405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606490fd5b8251909150156114945750805190602001fd5b6040519062461bcd60e51b82528160208060048301528251908160248401526000935b8285106114da575050604492506000838284010152601f80199101168101030190fd5b84810182015186860160440152938101938593506114b7565b156114fa57565b60405162461bcd60e51b815260206004820152602860248201527f42617365537761707065723a3a73616665417070726f76653a20617070726f76604482015267194819985a5b195960c21b6064820152608490fd5b929190833b156116915760405163095ea7b360e01b60208083018281526001600160a01b0385166024850152600060448086018290528552919591949293919291608081016001600160401b0381118282101761167d578695936115d9878080966116199d9e99966115ff966040525190828b5af16115cd6113ef565b8161164d575b506114f3565b6115f16040519384928b8401978852602484016112d1565b03601f1981018352826110b0565b51925af19061160c6113ef565b8261161b575b50506114f3565b565b8091925051918215928315611635575b5050503880611612565b61164593508201810191016112ec565b38808061162b565b8051801592508c908315611665575b505050386115d3565b61167593508201810191016112ec565b388b8161165c565b634e487b7160e01b87526041600452602487fd5b60405162461bcd60e51b815260206004820152601460248201527314ddd85c1c195c8e881b9bc818dbdb9d1c9858dd60621b6044820152606490fd5b919082039182116116da57565b634e487b7160e01b600052601160045260246000fd5b94939190929461010435801515810361060b576118c057505050821561188457604080516370a0823160e01b808252306004830152919490926001600160a01b031691602091908285602481875afa9485156118795760009561184a575b5086516323b872dd60e01b8482015233602482015230604482015260648082019390935291825260a082016001600160401b038111838210176110d357839261179991895285611304565b602487518095819382523060048301525afa91821561183f57600092611810575b50828211156117d257506117cf9293506116cd565b90565b60649085519062461bcd60e51b82526004820152601860248201527714ddd85c1c195c8e881d1c985b9cd9995c8819985a5b195960421b6044820152fd5b90918282813d8311611838575b61182781836110b0565b8101031261014a57505190386117ba565b503d61181d565b85513d6000823e3d90fd5b90948382813d8311611872575b61186181836110b0565b8101031261014a575051933861174e565b503d611857565b87513d6000823e3d90fd5b60405162461bcd60e51b81526020600482015260146024820152730537761707065723a20616d6f756e7420697320360641b6044820152606490fd5b6040935090600060a49285979496975196879586946311a5cc7760e31b865260048601523060248601523060448601526064850152608484015260018060a01b03165af190811561193257600091611916575090565b61192e915060403d81116105aa5761059a81836110b0565b5090565b6040513d6000823e3d90fdfe8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0a2646970667358221220618c98d9604f5a06a99dfe02eb96b7412a69a17c0735df620ecbf13731625c8964736f6c63430008120033", "linkReferences": {}, "deployedLinkReferences": {} } diff --git a/src/artifacts/tapioca-periphery/LiquidationQueue.json b/src/artifacts/tapioca-periphery/LiquidationQueue.json index c1cc8fce..02823ee2 100644 --- a/src/artifacts/tapioca-periphery/LiquidationQueue.json +++ b/src/artifacts/tapioca-periphery/LiquidationQueue.json @@ -926,8 +926,8 @@ "type": "function" } ], - "bytecode": "0x60808060405234610016576133c5908161001c8239f35b600080fdfe608080604052600436101561001357600080fd5b600090813560e01c90816307be4daf14612cc4575080630ed4f3e914612ca65780630f41ba4b146129fc5780631259c1a1146129c3578063149c59c51461295e5780632cfbe6ba146129145780632e020d1f146128f657806336252c90146128835780633965907b14611a1a57806345baf8af146119fc57806346a7d7d9146119d5578063575939f9146119625780635c3a33931461184f57806365d387c9146114bc5780636aef9a671461111b5780636c3d8b8f146110f25780637c8be05b146110c25780637d98726b1461107a57806380f5560514610f9e57806395a2251f14610ddc578063966b583c14610d85578063a39e6a1714610d33578063a5dca46414610d0a578063bd2f6f8314610b7d578063d844f0c0146105ea578063de406577146105c1578063f50f78cd146101815763fa8e84791461015557600080fd5b3461017e57602036600319011261017e5760406020916004358152600c83522054604051908152f35b80fd5b503461017e57366003190160c081126104595760a01361017e576001600160a01b0360a4358181169081900361053c5760ff600b541661058a5760043583556024356001556044359082821680920361058657600280546001600160a01b031990811690931790556064358381169081900361053c578260035416176003556084359083821680920361053c578491836004541617600455816005548285821617600555161792604051936377607a1760e11b85526020938486600481855afa95861561057b578496610548575b50600a95865560405163226f120560e11b8152918583600481845afa92831561049c578593610511575b506009839055604051636c3d8b8f60e01b81528681600481855afa80156104e957859187916104f4575b501682600654161760065560405163de40657760e01b81528681600481855afa9182156104e95785889288946104a7575b5060049316948560075495861617600755600855604051928380926338d52e0f60e01b82525afa90811561049c57869286868194604494839161046f575b50604051978896879563095ea7b360e01b8752161760048501526000196024850152165af180156104645761042d575b5080600754169060055416813b1561041e57829160448392604051948593849263a22cb46560e01b84526004840152600160248401525af180156104225761040a575b5050825b828111156103a25783600160ff19600b541617600b5580f35b610405906103ae61321e565b63ffffffff8281168252828752600e855260408088208351815488860151958401516001600160601b0319909116919094161793871b63ffffffff60201b169390931791901b63ffffffff60401b16179055612ee3565b610389565b61041390612dcb565b61041e578238610385565b8280fd5b6040513d84823e3d90fd5b8381813d831161045d575b6104428183612e2f565b8101031261041e5751801515036104595738610342565b5080fd5b503d610438565b6040513d85823e3d90fd5b61048f9150873d8911610495575b6104878183612e2f565b810190612ec4565b38610312565b503d61047d565b6040513d87823e3d90fd5b92809294508391503d83116104e2575b6104c18183612e2f565b810103126104de575184811681036104de579086908560046102d4565b8580fd5b503d6104b7565b6040513d88823e3d90fd5b61050b9150883d8a11610495576104878183612e2f565b386102a3565b945091508484813d8111610541575b61052a8183612e2f565b8101031261053c578693519138610279565b600080fd5b503d610520565b85809297508195503d8311610574575b6105628183612e2f565b8101031261053c57859251943861024f565b503d610558565b6040513d86823e3d90fd5b8380fd5b60405162461bcd60e51b815260206004820152600f60248201526e13144e88125b9a5d1a585b1a5e9959608a1b6044820152606490fd5b503461017e578060031936011261017e576007546040516001600160a01b039091168152602090f35b503461017e5760a036600319011261017e57610604612ce5565b6084356001600160401b03811161041e57610623903690600401612d56565b61063160ff600b5416613020565b610640600a6024351115613062565b6004546001600160a01b0316908115610b3d576006546040516386c8e21d60e01b8152928691602090859060049082906001600160a01b03165afa938415610422578294610b06575b5060018060a01b036007541690604051638eb22cdd60e01b815260443560048201526064356024820152836044820152602081606481865afa90811561057b578491610ad1575b50823b156105865761070092849283604051809681958294630208d92960e11b84526044359033600486016130a5565b03925af1801561042257610ab9575b505060048054600554604051632da475e360e21b8152949260209286926001600160a01b039182169284928c928492610757928b928e926064359260443592169087016130cf565b03925af19283156104e9578693610a85575b50610772612f78565b9483604087015260006060870152426080870152600186526004600854602060018060a01b0360065416604051938480926386c8e21d60e01b82525afa918215610a7957600092610a45575b5014156020870152602435600052600c60205260016040600020019060018060a01b0316908160005260205260406000206107fc8751151582612ef2565b6020870151151561ff0082549160081b169061ff00191617815560408701516001820155606087015160028201556003608088015191015560405184815260006020820152426040820152816024359160008051602061337083398151915260603392a4600052600f602052604060002060243560005260205260406000208054600e602052604060002063ffffffff6040519161089983612dde565b548181168352818160201c16602084015260401c16604082015260005b828110610970575050505060208501511561095f57600354600554604051632eec159b60e11b8152965060209587956001600160a01b039384169587958695610907959294939216600487016130cf565b03915afa801561042257829061092b575b61092891505b6001541115613111565b80f35b506020813d602011610957575b8161094560209383612e2f565b8101031261053c576109289051610918565b3d9150610938565b50505050604061092891015161091e565b61097a8185612e96565b90549060031b1c63ffffffff602084015116111561099b575b6001016108b6565b835492506000198301838111610a2f576109b86109e29186612e96565b90549060031b1c6109c98387612e96565b90919082549060031b91821b91600019901b1916179055565b8354908115610a195760019160001901610a106109ff8288612e96565b8154906000199060031b1b19169055565b85559050610993565b634e487b7160e01b600052603160045260246000fd5b634e487b7160e01b600052601160045260246000fd5b90916020823d602011610a71575b81610a6060209383612e2f565b8101031261017e57505190386107be565b3d9150610a53565b6040513d6000823e3d90fd5b9092506020813d602011610ab1575b81610aa160209383612e2f565b8101031261053c57519138610769565b3d9150610a94565b610ac290612dcb565b610acd57843861070f565b8480fd5b9350506020833d602011610afe575b81610aed60209383612e2f565b8101031261053c57879251386106d0565b3d9150610ae0565b915092506020813d602011610b35575b81610b2360209383612e2f565b8101031261053c578590519238610689565b3d9150610b16565b60405162461bcd60e51b815260206004820152601860248201527713144e881554d113c81cddd85c1c195c881b9bdd081cd95d60421b6044820152606490fd5b503461017e576020908160031936011261017e5760043591828252600e8152604082209160405192610bae84612dde565b549063ffffffff9182811685528281851c1660408486880193838552821c1696019580875203838111610cf657831695610be787612f61565b96610bf56040519889612e2f565b808852610c04601f1991612f61565b0185845b828110610ce0575050508252600d845282604083209151169282935b81875116811015610c865780610c639185528387526040852090604051610c4a81612df9565b82546001600160a01b0316815260019384938401612e52565b89820152610c71888c612fc4565b52610c7c878b612fc4565b5001940193610c24565b6040805187815289518189018190528a89019282019089885b828110610cac5784840385f35b9091928260c0600192610cd1838a51868060a01b038151168452015184830190612d25565b01960191019492919094610c9f565b610ce8612fa3565b82828c010152018690610c08565b634e487b7160e01b83526011600452602483fd5b503461017e578060031936011261017e576005546040516001600160a01b039091168152602090f35b503461017e57610d4236612cfb565b929160018060a01b03168252600f602052604082209082526020526040812090815483101561017e576020610d778484612e96565b90546040519160031b1c8152f35b503461017e57604036600319011261017e57604060c0916004358152600d602052818120602435825260205220610dda610dca6001808060a01b038454169301612e52565b6040519283526020830190612d25565bf35b503461017e5760208060031936011261045957610df7612ce5565b33835260108252604083205415610f6457338352601082526040832054906032820282810460321483151715610f5057610e376127108692048094613211565b933382526010815281604081205560018060a01b039384600254168352610e6360408420918254613193565b9055600a54846007541691604051638eb22cdd60e01b81528260048201528760248201528460448201528181606481875afa91821561049c578592610f1f575b5050823b1561058657610ed192849283604051809681958294630208d92960e11b84528b30600486016130a5565b03925af1801561042257610f0b575b505016337fd12200efa34901b99367694174c3b0d32c99585fdf37c7c26892136ddd0836d98480a480f35b610f1490612dcb565b610586578338610ee0565b8195508092503d8311610f49575b610f378183612e2f565b8101031261053c578692513880610ea3565b503d610f2d565b634e487b7160e01b85526011600452602485fd5b60405162461bcd60e51b81526004810183905260126024820152714c513a204e6f2062616c616e63652064756560701b6044820152606490fd5b503461017e578060031936011261017e576005546040516306fdde0360e01b8152908290829060049082906001600160a01b03165afa908115610422578291610ffc575b60405160208082528190610ff890820185612da6565b0390f35b90503d8083833e61100d8183612e2f565b81019060208183031261041e578051906001600160401b038211610586570181601f8201121561041e5780519261104384612f03565b926110516040519485612e2f565b8484526020858401011161017e5750610ff8926110749160208085019101612d83565b38610fe2565b503461017e57602036600319011261017e5760406060916004358152600e60205220546040519063ffffffff908181168352818160201c16602084015260401c166040820152f35b503461017e578060031936011261017e5760606110dd612fd8565b90604051928352151560208301526040820152f35b503461017e578060031936011261017e576006546040516001600160a01b039091168152602090f35b503461017e57604036600319011261017e57611135612ce5565b602435808352602092600c845260019081604082200133600052855260ff60406000205416908160001461149a57838152600c86528260408220013360005286528260406000200154945b61118b86151561314f565b848252600c87528360408320013360005287526111ab60406000206131a0565b8593858352600c885280604084200133600052885260ff60406000205460081c166113b9575b54841061137b578215611372576006546040516386c8e21d60e01b8152908890829060049082906001600160a01b03165afa908115610464578391611345575b50915b600754604051638eb22cdd60e01b81526004810185905260248101899052604481018390526001600160a01b039490918516908a83606481855afa92831561057b578493611316575b50813b156105865791839161128b9383604051809681958294630208d92960e11b84528b30600486016130a5565b03925af1801561042257611302575b507f2f413fefb30b9c037ba435fc106ac59646343aafb657db7057b5b4ba42d5643792919084156112fb5787945b156112f0576112e590945b604051938493169633964292856131e2565b0390a4604051908152f35b506112e587946112d3565b80946112c8565b61130c8291612dcb565b61017e573861129a565b9092508a81813d831161133e575b61132e8183612e2f565b8101031261053c5751913861125d565b503d611324565b90508781813d831161136b575b61135c8183612e2f565b8101031261053c575138611211565b503d611352565b60085491611214565b60405162461bcd60e51b815260048101889052601660248201527513144e88189a5908191bd95cc81b9bdd08195e1a5cdd60521b6044820152606490fd5b935060018060a01b03806003541660048983600554169360065416604051928380926386c8e21d60e01b82525afa90811561049c579189918b938791611462575b5061141c9460405195869485938493632eec159b60e11b8552600485016131b8565b03915afa908115610464578391611435575b50936111d1565b90508781813d831161145b575b61144c8183612e2f565b8101031261053c57513861142e565b503d611442565b925050929181813d8311611493575b61147b8183612e2f565b8101031261053c5761141c928a928a925190946113fa565b503d611471565b838152600c865282604082200133600052865260026040600020015494611180565b503461017e57604036600319011261017e576114d6612ce5565b602435908183526020600c8152600160408520019160018060a01b03809116928360005282526115096040600020612e52565b6115256080820161151c8151151561314f565b51875490613193565b421061181b57848652600e8352604086206040519061154382612dde565b5463ffffffff908181168352858301918082881c16835280604085019260401c16825261156e612fa3565b888152878101958652898b52600d88526040808c20845184168d5289528b20905181546001600160a01b0319169088161781558551805160049160809160018501906115bc90151582612ef2565b8b820151151561ff0082549160081b169061ff00191617905560408101516002850155606081015160038501550151910155888a52600c8752600160408b200188600052875261160f60406000206131a0565b878a52600f87526040808b208a8c5288528a208251815490831691600160401b82101561180757816109c991600161164a9594018155612e96565b8151811660010181168252888a52600e87526040808b2094518554945193516001600160601b031990951692169190911791871b63ffffffff60201b169190911791901b63ffffffff60401b1617905580518051156117fb57836040820151915b0151156117e1575060048260035416928481600554169160065416604051938480926386c8e21d60e01b82525afa80156117d657859289916117a3575b5093611712946040855101519260405196879485938493632eec159b60e11b8552600485016131b8565b03915afa9182156104e9578692611773575b50600c60008051602061335083398151915292935b868852526040862061174c848254613193565b905551606060408201519101519261176d60405192839233964292856131e2565b0390a480f35b91508282813d831161179c575b61178a8183612e2f565b8101031261053c57905190600c611724565b503d611780565b83819492503d83116117cf575b6117ba8183612e2f565b8101031261053c5790518491906117126116e8565b503d6117b0565b6040513d8a823e3d90fd5b6000805160206133508339815191529250600c9093611739565b836060820151916116ab565b634e487b7160e01b8d52604160045260248dfd5b60405162461bcd60e51b815260048101849052600c60248201526b26289d103a37b79039b7b7b760a11b6044820152606490fd5b503461017e57604036600319011261017e57611869612ce5565b602480359160018060a01b03168352602092600f84526040812083825284526040812092604051808587829754938481520190855287852092855b8982821061194c575050506118bb92500385612e2f565b8351908252600e85526040822091604051926118d684612dde565b5463ffffffff9384821681526040858983019381818c1c168552821c16910152815b83811061190a57878751604051908152f35b6119148188612fc4565b51858351161115611928575b6001016118f8565b928015611939576000190192611920565b634e487b7160e01b835260116004528583fd5b855484526001958601958a9550930192016118a4565b503461017e57602036600319011261017e5761197c612ce5565b6005546001600160a01b03919061199690831633146132b9565b816003549116809282167fe0ae31f6fff797b33b039284b11690980155ca2c61a831617b6943199e6fce8b8580a36001600160a01b0319161760035580f35b503461017e57602036600319011261017e5760206119f4600435612f1e565b604051908152f35b503461017e578060031936011261017e576020600854604051908152f35b503461017e57604036600319011261017e576001600160401b039060243582811161045957611a4d903690600401612d56565b600554600435939290839081906001600160a01b031633819003612847576040519761014089019081118982101761283157600491602091604052878a5287828b0152611a9861321e565b60408b0152611aa5612fa3565b60608b0152611ab2612fa3565b60808b01528760a08b01528760c08b01528760e08b0152876101008b0152876101208b0152611adf612fd8565b5015158b8401528a52604051633ba0b9a960e01b815292839182905afa9081156104e95786916127ff575b506101008801525b851515806127f2575b156126ff5786518552600e6020526040852063ffffffff60405191611b3f83612dde565b548181168352818160201c16602084015260401c16604082015260408801528460a08801528460c08801525b851515806126e0575b156125f85786518552600d6020526040852063ffffffff602060408a0151015116865260205260408520611bc1600160405192611bb084612df9565b818060a01b03815416845201612e52565b90602081019182528060608a0152608089015251610100880151885190825115156000146125ee5760408301515b6020840151156125d657506003546005546006546040516386c8e21d60e01b81526001600160a01b03938416969284169390929160209184916004918391165afa918215612045578b9261259a575b5094602092916040611c6a9701519260405197889485938493632eec159b60e11b8552600485016131b8565b03915afa9283156117d6578893612564575b50611c93670de0b6b3a764000091611c99946131fe565b04613322565b8061012089015286811160001461211d57506020608088015101519561010088015196885197611cca36888861323d565b8899670de0b6b3a7640000850290858204670de0b6b3a76400001486151715610a2f57831561210757611cff908483046131fe565b9081606481020460641482151715610a2f576004936127106064611d269402049104613211565b6006546040516386c8e21d60e01b81529194919360209185919082906001600160a01b03165afa9283156120c7578a936120d2575b5060200151611e80575b505090611dc8611dd79260018060a01b0360808c015151168952601060205260408920611d93848254613193565b905560608b0151602001518051611e6b575060606020818d0151015101611dbb828251613211565b90525b60a08b0151613193565b60a08a015260c0890151613193565b60c0880152611deb859660e0890151613193565b60e088015260206060880151015187518652600d6020526040862063ffffffff602060408b0151015116875260205260046080604088209260018401611e348251151582612ef2565b6020820151815461ff00191690151560081b61ff001617905560408101516002850155606081015160038501550151910155611b6b565b604001611e798b8251613211565b9052611dbe565b600354600554604051637f7ba27d60e11b81526001600160a01b039283169c5094959492939160209184918e9183918291611ec3918c91899116600485016131b8565b03915afa9182156120c7578a92612093575b50819a60018060a01b036007541660405191638eb22cdd60e01b83528360048401528460248401528c6044840152602083606481855afa928315612088578d93612054575b50813b1561205057918c918483611f499560405196879586948593630208d92960e11b855230600486016130a5565b03925af1801561204557908b9161202d575b50509060209160018060a01b0360035416908b60018060a01b0360055416611f9960405197889687958694632da475e360e21b8652600486016132f4565b03925af19081156117d6579083918991611ff8575b5010611fbc57903880611d65565b60405162461bcd60e51b81526020600482015260146024820152731b9959590b5b5bdc994b58dbdb1b185d195c985b60621b6044820152606490fd5b9150506020813d602011612025575b8161201460209383612e2f565b8101031261053c5782905138611fae565b3d9150612007565b61203690612dcb565b612041578938611f5b565b8980fd5b6040513d8d823e3d90fd5b8c80fd5b9092506020813d602011612080575b8161207060209383612e2f565b8101031261053c57519138611f1a565b3d9150612063565b6040513d8f823e3d90fd5b9091506020813d6020116120bf575b816120af60209383612e2f565b8101031261053c57519038611ed5565b3d91506120a2565b6040513d8c823e3d90fd5b9092506020813d6020116120ff575b816120ee60209383612e2f565b8101031261053c5751916020611d5b565b3d91506120e1565b634e487b7160e01b600052601260045260246000fd5b90956020608089015101519061010089015191878a805161213f368b8b61323d565b60608501519796604086015195602081015161226c575b505050506121bb926121d8969260606020816121ac9560018060a01b03608082015151168552601083526040852061218f8c8254613193565b9055018051820151604001849052510151015260e08d0151613193565b60e08c015260a08b0151613193565b60a08a01526121ce8260c08b0151613193565b60c08a0152613211565b9460206060880151015187518652600d6020526040862063ffffffff602060408b015101511687526020526004608060408820926001840161221d8251151582612ef2565b6020820151151561ff0082549160081b169061ff00191617905560408101516002850155606081015160038501550151910155602060408801510163ffffffff60018183511601169052611b6b565b6007546003546006546040516386c8e21d60e01b8152969c50999a5093989296509094506001600160a01b039182169390821692909116602082600481875afa9182156124ec578e9261252d575b506020600494604051958680926386c8e21d60e01b82525afa9384156124ec578e946124f9575b50604085015160405194638eb22cdd60e01b8652600486015260248501528d6044850152602084606481865afa9384156124ec578e946124b8575b50823b156124b4579161234b93918e809460405196879586948593630208d92960e11b855230600486016130a5565b03925af1801561204557908b916124a0575b50506003546005546006546040516386c8e21d60e01b81526001600160a01b0392831693831692909160209183916004918391165afa908115612088578d908192612469575b5060406020950151936123cc604051998a9687958694632da475e360e21b8652600486016132f4565b03925af192831561245e578b949392918a91829461241f575b50916121ac91606060208161240f6121d89b670de0b6b3a7640000611c938b9a6121bb9c9b6131fe565b9995505082959950839650612156565b9350919450506020823d602011612456575b8161243e60209383612e2f565b8101031261053c5790518a93909189906121ac6123e5565b3d9150612431565b6040513d8b823e3d90fd5b949150506020843d602011612498575b8161248660209383612e2f565b8101031261053c5792518c60406123a3565b3d9150612479565b6124a990612dcb565b61204157893861235d565b8d80fd5b9093506020813d6020116124e4575b816124d460209383612e2f565b8101031261053c5751923861231c565b3d91506124c7565b8e604051903d90823e3d90fd5b9093506020813d602011612525575b8161251560209383612e2f565b8101031261053c575192386122e1565b3d9150612508565b9391506020843d60201161255c575b8161254960209383612e2f565b8101031261053c579251909260206122ba565b3d915061253c565b92506020833d602011612592575b8161257f60209383612e2f565b8101031261053c57915191611c93611c7c565b3d9150612572565b929150946020833d6020116125ce575b816125b760209383612e2f565b8101031261053c5791519194909190611c6a611c3e565b3d91506125aa565b611c999350670de0b6b3a764000091611c93916131fe565b6060830151611bef565b61260a6126169160a089015190613193565b9160c088015190613193565b90604087015187518652600e602052604086209063ffffffff8151169082549163ffffffff60201b602083015160201b1691604063ffffffff811b91015160401b169260018060601b031916171717905561266f612fd8565b50151560208901528088528552600c60205260408520612690828254613211565b9055865160e08801517fcf16521da024444891495eb0ed8e5e97ab0b013ee419d71046494d94e02390a260a08a01519160c08b01516126d860405192839233964292856131e2565b0390a3611b12565b50604087015163ffffffff604081602084015116920151161415611b74565b849161273560408360018060a01b03600754166008548784518096819582946311a5cc7760e31b8452309030906004860161328a565b03925af1801561057b576127d4575b5060075460095460055460408051634d4d7cbd60e11b815293909284926001600160a01b039283169284928a928492612788928c929091169030906004860161328a565b03925af1801561057b57604094506127a8575b5082519182526020820152f35b6127c790843d86116127cd575b6127bf8183612e2f565b810190613274565b5061279b565b503d6127b5565b6127ec9060403d6040116127cd576127bf8183612e2f565b50612744565b5060208701511515611b1b565b90506020813d602011612829575b8161281a60209383612e2f565b8101031261053c575138611b0a565b3d915061280d565b634e487b7160e01b600052604160045260246000fd5b60405162461bcd60e51b81526020600482015260146024820152734c513a204f6e6c792053696e67756c617269747960601b6044820152606490fd5b503461017e57602036600319011261017e5761289d612ce5565b6005546001600160a01b0391906128b790831633146132b9565b816004549116809282167f4df4d1118ddbedb1b0f3889ec88ab4d3108097b9b3dd236c2cc5c8e2e9f726958580a36001600160a01b0319161760045580f35b503461017e578060031936011261017e576020600954604051908152f35b503461017e578060031936011261017e5760a09054600154600180841b03806002541681600354169160045416926040519485526020850152604084015260608301526080820152f35b503461017e57604036600319011261017e576024356001600160a01b038116919082900361053c576040600191612993612f78565b506004358152600c60205220019060005260205260a06129b66040600020612e52565b610dda6040518092612d25565b503461017e57602036600319011261017e576020906040906001600160a01b036129eb612ce5565b168152601083522054604051908152f35b503461017e57612a0b36612cfb565b9190612a1b60ff600b5416613020565b612a28600a821115613062565b600192612a388454821015613111565b6008549160018060a01b0380600754169460405194638eb22cdd60e01b86528060048701528860249686888201528160448201526020988982606481845afa918215610464578392612c77575b50803b1561041e57612ab09383604051809681958294630208d92960e11b84523033600486016130a5565b03925af1801561245e57612c64575b508290612aca612f78565b946040860160008152606087018281526080880191428352600089528a8901966000885286600052600c8c528c6040600020019516968795866000528c52612b1a60406000209a5115158b612ef2565b51151561ff008a549160081b169061ff001916178955518b8901555160028801555160038097015560405190600082528882015242604082015260008051602061337083398151915260603392a4600052600f84526040600020906000528352604060002091825493600e8152604060002060405190612b9982612dde565b5490604063ffffffff838180951684528181878601971c168652821c1691015260005b868110612bc7578880f35b80612bd3899288612e96565b905490871b1c838551161115612bea575b01612bbc565b865497509050600019808801888111612c4f57612c0a612c1a9189612e96565b905490881b1c6109c9848a612e96565b86548015612c3a5789929101612c336109ff828a612e96565b8755612be4565b85634e487b7160e01b60005260316004526000fd5b85634e487b7160e01b60005260116004526000fd5b97612c70849299612dcb565b9790612abf565b9091508981813d8311612c9f575b612c8f8183612e2f565b8101031261041e57519038612a85565b503d612c85565b503461017e578060031936011261017e576020600a54604051908152f35b90503461045957816003193601126104595760209060ff600b541615158152f35b600435906001600160a01b038216820361053c57565b606090600319011261053c576004356001600160a01b038116810361053c57906024359060443590565b6080809180511515845260208101511515602085015260408101516040850152606081015160608501520151910152565b9181601f8401121561053c578235916001600160401b03831161053c576020838186019501011161053c57565b60005b838110612d965750506000910152565b8181015183820152602001612d86565b90602091612dbf81518092818552858086019101612d83565b601f01601f1916010190565b6001600160401b03811161283157604052565b606081019081106001600160401b0382111761283157604052565b604081019081106001600160401b0382111761283157604052565b60a081019081106001600160401b0382111761283157604052565b601f909101601f19168101906001600160401b0382119082101761283157604052565b90604051612e5f81612e14565b60806003829460ff81548181161515865260081c161515602085015260018101546040850152600281015460608501520154910152565b8054821015612eae5760005260206000200190600090565b634e487b7160e01b600052603260045260246000fd5b9081602091031261053c57516001600160a01b038116810361053c5790565b6000198114610a2f5760010190565b9060ff801983541691151516179055565b6001600160401b03811161283157601f01601f191660200190565b600052600e602052604060002060405190612f3882612dde565b54604063ffffffff92838316815283808460201c1693846020840152831c169182910152031690565b6001600160401b0381116128315760051b60200190565b60405190612f8582612e14565b60006080838281528260208201528260408201528260608201520152565b60405190612fb082612df9565b81600081526020612fbf612f78565b910152565b8051821015612eae5760209160051b010190565b60009060008091815b600a851115612fed5750565b93612ff781612f1e565b61300a5761300490612ee3565b93612fe1565b808552600c602052604090942054600193509150565b1561302757565b60405162461bcd60e51b815260206004820152601360248201527213144e88139bdd081a5b9a5d1a585b1a5e9959606a1b6044820152606490fd5b1561306957565b60405162461bcd60e51b8152602060048201526014602482015273098a27440e0e4cadad2eada40e8dede40d0d2ced60631b6044820152606490fd5b6001600160a01b039182168152911660208201526040810191909152606081019190915260800190565b93909285939260a09693600180891b031686526020860152604085015260806060850152816080850152848401376000828201840152601f01601f1916010190565b1561311857565b60405162461bcd60e51b815260206004820152600f60248201526e4c513a2062696420746f6f206c6f7760881b6044820152606490fd5b1561315657565b60405162461bcd60e51b81526020600482015260156024820152744c513a20626964206e6f7420617661696c61626c6560581b6044820152606490fd5b91908201809211610a2f57565b60036000918281558260018201558260028201550155565b9160a09391600180861b031683526020830152604082015260806060820152600060808201520190565b9094939260609260808301968352602083015260408201520152565b81810292918115918404141715610a2f57565b91908203918211610a2f57565b6040519061322b82612dde565b60006040838281528260208201520152565b92919261324982612f03565b916132576040519384612e2f565b82948184528183011161053c578281602093846000960137010152565b919082604091031261053c576020825192015190565b9081526001600160a01b0391821660208201529116604082015260608101919091526000608082015260a00190565b156132c057565b60405162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b6044820152606490fd5b909260809261331f959460018060a01b03168352602083015260408201528160608201520190612da6565b90565b9061332d90826131fe565b90606482029180830460641490151715610a2f5761271061331f92049061319356fed3537325843bd046c81dbdae840896c9ad0a4e5ea737ac537f65167df96921c2baa682830cade78a3affa9fa3c417095d0edb57605b0ac6fb487ce2068204ce9a2646970667358221220e57b19de5adf1065d41a63558be6f6a13b347b62178d1a68d4a3e8b4eb46738064736f6c63430008120033", - "deployedBytecode": "0x608080604052600436101561001357600080fd5b600090813560e01c90816307be4daf14612cc4575080630ed4f3e914612ca65780630f41ba4b146129fc5780631259c1a1146129c3578063149c59c51461295e5780632cfbe6ba146129145780632e020d1f146128f657806336252c90146128835780633965907b14611a1a57806345baf8af146119fc57806346a7d7d9146119d5578063575939f9146119625780635c3a33931461184f57806365d387c9146114bc5780636aef9a671461111b5780636c3d8b8f146110f25780637c8be05b146110c25780637d98726b1461107a57806380f5560514610f9e57806395a2251f14610ddc578063966b583c14610d85578063a39e6a1714610d33578063a5dca46414610d0a578063bd2f6f8314610b7d578063d844f0c0146105ea578063de406577146105c1578063f50f78cd146101815763fa8e84791461015557600080fd5b3461017e57602036600319011261017e5760406020916004358152600c83522054604051908152f35b80fd5b503461017e57366003190160c081126104595760a01361017e576001600160a01b0360a4358181169081900361053c5760ff600b541661058a5760043583556024356001556044359082821680920361058657600280546001600160a01b031990811690931790556064358381169081900361053c578260035416176003556084359083821680920361053c578491836004541617600455816005548285821617600555161792604051936377607a1760e11b85526020938486600481855afa95861561057b578496610548575b50600a95865560405163226f120560e11b8152918583600481845afa92831561049c578593610511575b506009839055604051636c3d8b8f60e01b81528681600481855afa80156104e957859187916104f4575b501682600654161760065560405163de40657760e01b81528681600481855afa9182156104e95785889288946104a7575b5060049316948560075495861617600755600855604051928380926338d52e0f60e01b82525afa90811561049c57869286868194604494839161046f575b50604051978896879563095ea7b360e01b8752161760048501526000196024850152165af180156104645761042d575b5080600754169060055416813b1561041e57829160448392604051948593849263a22cb46560e01b84526004840152600160248401525af180156104225761040a575b5050825b828111156103a25783600160ff19600b541617600b5580f35b610405906103ae61321e565b63ffffffff8281168252828752600e855260408088208351815488860151958401516001600160601b0319909116919094161793871b63ffffffff60201b169390931791901b63ffffffff60401b16179055612ee3565b610389565b61041390612dcb565b61041e578238610385565b8280fd5b6040513d84823e3d90fd5b8381813d831161045d575b6104428183612e2f565b8101031261041e5751801515036104595738610342565b5080fd5b503d610438565b6040513d85823e3d90fd5b61048f9150873d8911610495575b6104878183612e2f565b810190612ec4565b38610312565b503d61047d565b6040513d87823e3d90fd5b92809294508391503d83116104e2575b6104c18183612e2f565b810103126104de575184811681036104de579086908560046102d4565b8580fd5b503d6104b7565b6040513d88823e3d90fd5b61050b9150883d8a11610495576104878183612e2f565b386102a3565b945091508484813d8111610541575b61052a8183612e2f565b8101031261053c578693519138610279565b600080fd5b503d610520565b85809297508195503d8311610574575b6105628183612e2f565b8101031261053c57859251943861024f565b503d610558565b6040513d86823e3d90fd5b8380fd5b60405162461bcd60e51b815260206004820152600f60248201526e13144e88125b9a5d1a585b1a5e9959608a1b6044820152606490fd5b503461017e578060031936011261017e576007546040516001600160a01b039091168152602090f35b503461017e5760a036600319011261017e57610604612ce5565b6084356001600160401b03811161041e57610623903690600401612d56565b61063160ff600b5416613020565b610640600a6024351115613062565b6004546001600160a01b0316908115610b3d576006546040516386c8e21d60e01b8152928691602090859060049082906001600160a01b03165afa938415610422578294610b06575b5060018060a01b036007541690604051638eb22cdd60e01b815260443560048201526064356024820152836044820152602081606481865afa90811561057b578491610ad1575b50823b156105865761070092849283604051809681958294630208d92960e11b84526044359033600486016130a5565b03925af1801561042257610ab9575b505060048054600554604051632da475e360e21b8152949260209286926001600160a01b039182169284928c928492610757928b928e926064359260443592169087016130cf565b03925af19283156104e9578693610a85575b50610772612f78565b9483604087015260006060870152426080870152600186526004600854602060018060a01b0360065416604051938480926386c8e21d60e01b82525afa918215610a7957600092610a45575b5014156020870152602435600052600c60205260016040600020019060018060a01b0316908160005260205260406000206107fc8751151582612ef2565b6020870151151561ff0082549160081b169061ff00191617815560408701516001820155606087015160028201556003608088015191015560405184815260006020820152426040820152816024359160008051602061337083398151915260603392a4600052600f602052604060002060243560005260205260406000208054600e602052604060002063ffffffff6040519161089983612dde565b548181168352818160201c16602084015260401c16604082015260005b828110610970575050505060208501511561095f57600354600554604051632eec159b60e11b8152965060209587956001600160a01b039384169587958695610907959294939216600487016130cf565b03915afa801561042257829061092b575b61092891505b6001541115613111565b80f35b506020813d602011610957575b8161094560209383612e2f565b8101031261053c576109289051610918565b3d9150610938565b50505050604061092891015161091e565b61097a8185612e96565b90549060031b1c63ffffffff602084015116111561099b575b6001016108b6565b835492506000198301838111610a2f576109b86109e29186612e96565b90549060031b1c6109c98387612e96565b90919082549060031b91821b91600019901b1916179055565b8354908115610a195760019160001901610a106109ff8288612e96565b8154906000199060031b1b19169055565b85559050610993565b634e487b7160e01b600052603160045260246000fd5b634e487b7160e01b600052601160045260246000fd5b90916020823d602011610a71575b81610a6060209383612e2f565b8101031261017e57505190386107be565b3d9150610a53565b6040513d6000823e3d90fd5b9092506020813d602011610ab1575b81610aa160209383612e2f565b8101031261053c57519138610769565b3d9150610a94565b610ac290612dcb565b610acd57843861070f565b8480fd5b9350506020833d602011610afe575b81610aed60209383612e2f565b8101031261053c57879251386106d0565b3d9150610ae0565b915092506020813d602011610b35575b81610b2360209383612e2f565b8101031261053c578590519238610689565b3d9150610b16565b60405162461bcd60e51b815260206004820152601860248201527713144e881554d113c81cddd85c1c195c881b9bdd081cd95d60421b6044820152606490fd5b503461017e576020908160031936011261017e5760043591828252600e8152604082209160405192610bae84612dde565b549063ffffffff9182811685528281851c1660408486880193838552821c1696019580875203838111610cf657831695610be787612f61565b96610bf56040519889612e2f565b808852610c04601f1991612f61565b0185845b828110610ce0575050508252600d845282604083209151169282935b81875116811015610c865780610c639185528387526040852090604051610c4a81612df9565b82546001600160a01b0316815260019384938401612e52565b89820152610c71888c612fc4565b52610c7c878b612fc4565b5001940193610c24565b6040805187815289518189018190528a89019282019089885b828110610cac5784840385f35b9091928260c0600192610cd1838a51868060a01b038151168452015184830190612d25565b01960191019492919094610c9f565b610ce8612fa3565b82828c010152018690610c08565b634e487b7160e01b83526011600452602483fd5b503461017e578060031936011261017e576005546040516001600160a01b039091168152602090f35b503461017e57610d4236612cfb565b929160018060a01b03168252600f602052604082209082526020526040812090815483101561017e576020610d778484612e96565b90546040519160031b1c8152f35b503461017e57604036600319011261017e57604060c0916004358152600d602052818120602435825260205220610dda610dca6001808060a01b038454169301612e52565b6040519283526020830190612d25565bf35b503461017e5760208060031936011261045957610df7612ce5565b33835260108252604083205415610f6457338352601082526040832054906032820282810460321483151715610f5057610e376127108692048094613211565b933382526010815281604081205560018060a01b039384600254168352610e6360408420918254613193565b9055600a54846007541691604051638eb22cdd60e01b81528260048201528760248201528460448201528181606481875afa91821561049c578592610f1f575b5050823b1561058657610ed192849283604051809681958294630208d92960e11b84528b30600486016130a5565b03925af1801561042257610f0b575b505016337fd12200efa34901b99367694174c3b0d32c99585fdf37c7c26892136ddd0836d98480a480f35b610f1490612dcb565b610586578338610ee0565b8195508092503d8311610f49575b610f378183612e2f565b8101031261053c578692513880610ea3565b503d610f2d565b634e487b7160e01b85526011600452602485fd5b60405162461bcd60e51b81526004810183905260126024820152714c513a204e6f2062616c616e63652064756560701b6044820152606490fd5b503461017e578060031936011261017e576005546040516306fdde0360e01b8152908290829060049082906001600160a01b03165afa908115610422578291610ffc575b60405160208082528190610ff890820185612da6565b0390f35b90503d8083833e61100d8183612e2f565b81019060208183031261041e578051906001600160401b038211610586570181601f8201121561041e5780519261104384612f03565b926110516040519485612e2f565b8484526020858401011161017e5750610ff8926110749160208085019101612d83565b38610fe2565b503461017e57602036600319011261017e5760406060916004358152600e60205220546040519063ffffffff908181168352818160201c16602084015260401c166040820152f35b503461017e578060031936011261017e5760606110dd612fd8565b90604051928352151560208301526040820152f35b503461017e578060031936011261017e576006546040516001600160a01b039091168152602090f35b503461017e57604036600319011261017e57611135612ce5565b602435808352602092600c845260019081604082200133600052855260ff60406000205416908160001461149a57838152600c86528260408220013360005286528260406000200154945b61118b86151561314f565b848252600c87528360408320013360005287526111ab60406000206131a0565b8593858352600c885280604084200133600052885260ff60406000205460081c166113b9575b54841061137b578215611372576006546040516386c8e21d60e01b8152908890829060049082906001600160a01b03165afa908115610464578391611345575b50915b600754604051638eb22cdd60e01b81526004810185905260248101899052604481018390526001600160a01b039490918516908a83606481855afa92831561057b578493611316575b50813b156105865791839161128b9383604051809681958294630208d92960e11b84528b30600486016130a5565b03925af1801561042257611302575b507f2f413fefb30b9c037ba435fc106ac59646343aafb657db7057b5b4ba42d5643792919084156112fb5787945b156112f0576112e590945b604051938493169633964292856131e2565b0390a4604051908152f35b506112e587946112d3565b80946112c8565b61130c8291612dcb565b61017e573861129a565b9092508a81813d831161133e575b61132e8183612e2f565b8101031261053c5751913861125d565b503d611324565b90508781813d831161136b575b61135c8183612e2f565b8101031261053c575138611211565b503d611352565b60085491611214565b60405162461bcd60e51b815260048101889052601660248201527513144e88189a5908191bd95cc81b9bdd08195e1a5cdd60521b6044820152606490fd5b935060018060a01b03806003541660048983600554169360065416604051928380926386c8e21d60e01b82525afa90811561049c579189918b938791611462575b5061141c9460405195869485938493632eec159b60e11b8552600485016131b8565b03915afa908115610464578391611435575b50936111d1565b90508781813d831161145b575b61144c8183612e2f565b8101031261053c57513861142e565b503d611442565b925050929181813d8311611493575b61147b8183612e2f565b8101031261053c5761141c928a928a925190946113fa565b503d611471565b838152600c865282604082200133600052865260026040600020015494611180565b503461017e57604036600319011261017e576114d6612ce5565b602435908183526020600c8152600160408520019160018060a01b03809116928360005282526115096040600020612e52565b6115256080820161151c8151151561314f565b51875490613193565b421061181b57848652600e8352604086206040519061154382612dde565b5463ffffffff908181168352858301918082881c16835280604085019260401c16825261156e612fa3565b888152878101958652898b52600d88526040808c20845184168d5289528b20905181546001600160a01b0319169088161781558551805160049160809160018501906115bc90151582612ef2565b8b820151151561ff0082549160081b169061ff00191617905560408101516002850155606081015160038501550151910155888a52600c8752600160408b200188600052875261160f60406000206131a0565b878a52600f87526040808b208a8c5288528a208251815490831691600160401b82101561180757816109c991600161164a9594018155612e96565b8151811660010181168252888a52600e87526040808b2094518554945193516001600160601b031990951692169190911791871b63ffffffff60201b169190911791901b63ffffffff60401b1617905580518051156117fb57836040820151915b0151156117e1575060048260035416928481600554169160065416604051938480926386c8e21d60e01b82525afa80156117d657859289916117a3575b5093611712946040855101519260405196879485938493632eec159b60e11b8552600485016131b8565b03915afa9182156104e9578692611773575b50600c60008051602061335083398151915292935b868852526040862061174c848254613193565b905551606060408201519101519261176d60405192839233964292856131e2565b0390a480f35b91508282813d831161179c575b61178a8183612e2f565b8101031261053c57905190600c611724565b503d611780565b83819492503d83116117cf575b6117ba8183612e2f565b8101031261053c5790518491906117126116e8565b503d6117b0565b6040513d8a823e3d90fd5b6000805160206133508339815191529250600c9093611739565b836060820151916116ab565b634e487b7160e01b8d52604160045260248dfd5b60405162461bcd60e51b815260048101849052600c60248201526b26289d103a37b79039b7b7b760a11b6044820152606490fd5b503461017e57604036600319011261017e57611869612ce5565b602480359160018060a01b03168352602092600f84526040812083825284526040812092604051808587829754938481520190855287852092855b8982821061194c575050506118bb92500385612e2f565b8351908252600e85526040822091604051926118d684612dde565b5463ffffffff9384821681526040858983019381818c1c168552821c16910152815b83811061190a57878751604051908152f35b6119148188612fc4565b51858351161115611928575b6001016118f8565b928015611939576000190192611920565b634e487b7160e01b835260116004528583fd5b855484526001958601958a9550930192016118a4565b503461017e57602036600319011261017e5761197c612ce5565b6005546001600160a01b03919061199690831633146132b9565b816003549116809282167fe0ae31f6fff797b33b039284b11690980155ca2c61a831617b6943199e6fce8b8580a36001600160a01b0319161760035580f35b503461017e57602036600319011261017e5760206119f4600435612f1e565b604051908152f35b503461017e578060031936011261017e576020600854604051908152f35b503461017e57604036600319011261017e576001600160401b039060243582811161045957611a4d903690600401612d56565b600554600435939290839081906001600160a01b031633819003612847576040519761014089019081118982101761283157600491602091604052878a5287828b0152611a9861321e565b60408b0152611aa5612fa3565b60608b0152611ab2612fa3565b60808b01528760a08b01528760c08b01528760e08b0152876101008b0152876101208b0152611adf612fd8565b5015158b8401528a52604051633ba0b9a960e01b815292839182905afa9081156104e95786916127ff575b506101008801525b851515806127f2575b156126ff5786518552600e6020526040852063ffffffff60405191611b3f83612dde565b548181168352818160201c16602084015260401c16604082015260408801528460a08801528460c08801525b851515806126e0575b156125f85786518552600d6020526040852063ffffffff602060408a0151015116865260205260408520611bc1600160405192611bb084612df9565b818060a01b03815416845201612e52565b90602081019182528060608a0152608089015251610100880151885190825115156000146125ee5760408301515b6020840151156125d657506003546005546006546040516386c8e21d60e01b81526001600160a01b03938416969284169390929160209184916004918391165afa918215612045578b9261259a575b5094602092916040611c6a9701519260405197889485938493632eec159b60e11b8552600485016131b8565b03915afa9283156117d6578893612564575b50611c93670de0b6b3a764000091611c99946131fe565b04613322565b8061012089015286811160001461211d57506020608088015101519561010088015196885197611cca36888861323d565b8899670de0b6b3a7640000850290858204670de0b6b3a76400001486151715610a2f57831561210757611cff908483046131fe565b9081606481020460641482151715610a2f576004936127106064611d269402049104613211565b6006546040516386c8e21d60e01b81529194919360209185919082906001600160a01b03165afa9283156120c7578a936120d2575b5060200151611e80575b505090611dc8611dd79260018060a01b0360808c015151168952601060205260408920611d93848254613193565b905560608b0151602001518051611e6b575060606020818d0151015101611dbb828251613211565b90525b60a08b0151613193565b60a08a015260c0890151613193565b60c0880152611deb859660e0890151613193565b60e088015260206060880151015187518652600d6020526040862063ffffffff602060408b0151015116875260205260046080604088209260018401611e348251151582612ef2565b6020820151815461ff00191690151560081b61ff001617905560408101516002850155606081015160038501550151910155611b6b565b604001611e798b8251613211565b9052611dbe565b600354600554604051637f7ba27d60e11b81526001600160a01b039283169c5094959492939160209184918e9183918291611ec3918c91899116600485016131b8565b03915afa9182156120c7578a92612093575b50819a60018060a01b036007541660405191638eb22cdd60e01b83528360048401528460248401528c6044840152602083606481855afa928315612088578d93612054575b50813b1561205057918c918483611f499560405196879586948593630208d92960e11b855230600486016130a5565b03925af1801561204557908b9161202d575b50509060209160018060a01b0360035416908b60018060a01b0360055416611f9960405197889687958694632da475e360e21b8652600486016132f4565b03925af19081156117d6579083918991611ff8575b5010611fbc57903880611d65565b60405162461bcd60e51b81526020600482015260146024820152731b9959590b5b5bdc994b58dbdb1b185d195c985b60621b6044820152606490fd5b9150506020813d602011612025575b8161201460209383612e2f565b8101031261053c5782905138611fae565b3d9150612007565b61203690612dcb565b612041578938611f5b565b8980fd5b6040513d8d823e3d90fd5b8c80fd5b9092506020813d602011612080575b8161207060209383612e2f565b8101031261053c57519138611f1a565b3d9150612063565b6040513d8f823e3d90fd5b9091506020813d6020116120bf575b816120af60209383612e2f565b8101031261053c57519038611ed5565b3d91506120a2565b6040513d8c823e3d90fd5b9092506020813d6020116120ff575b816120ee60209383612e2f565b8101031261053c5751916020611d5b565b3d91506120e1565b634e487b7160e01b600052601260045260246000fd5b90956020608089015101519061010089015191878a805161213f368b8b61323d565b60608501519796604086015195602081015161226c575b505050506121bb926121d8969260606020816121ac9560018060a01b03608082015151168552601083526040852061218f8c8254613193565b9055018051820151604001849052510151015260e08d0151613193565b60e08c015260a08b0151613193565b60a08a01526121ce8260c08b0151613193565b60c08a0152613211565b9460206060880151015187518652600d6020526040862063ffffffff602060408b015101511687526020526004608060408820926001840161221d8251151582612ef2565b6020820151151561ff0082549160081b169061ff00191617905560408101516002850155606081015160038501550151910155602060408801510163ffffffff60018183511601169052611b6b565b6007546003546006546040516386c8e21d60e01b8152969c50999a5093989296509094506001600160a01b039182169390821692909116602082600481875afa9182156124ec578e9261252d575b506020600494604051958680926386c8e21d60e01b82525afa9384156124ec578e946124f9575b50604085015160405194638eb22cdd60e01b8652600486015260248501528d6044850152602084606481865afa9384156124ec578e946124b8575b50823b156124b4579161234b93918e809460405196879586948593630208d92960e11b855230600486016130a5565b03925af1801561204557908b916124a0575b50506003546005546006546040516386c8e21d60e01b81526001600160a01b0392831693831692909160209183916004918391165afa908115612088578d908192612469575b5060406020950151936123cc604051998a9687958694632da475e360e21b8652600486016132f4565b03925af192831561245e578b949392918a91829461241f575b50916121ac91606060208161240f6121d89b670de0b6b3a7640000611c938b9a6121bb9c9b6131fe565b9995505082959950839650612156565b9350919450506020823d602011612456575b8161243e60209383612e2f565b8101031261053c5790518a93909189906121ac6123e5565b3d9150612431565b6040513d8b823e3d90fd5b949150506020843d602011612498575b8161248660209383612e2f565b8101031261053c5792518c60406123a3565b3d9150612479565b6124a990612dcb565b61204157893861235d565b8d80fd5b9093506020813d6020116124e4575b816124d460209383612e2f565b8101031261053c5751923861231c565b3d91506124c7565b8e604051903d90823e3d90fd5b9093506020813d602011612525575b8161251560209383612e2f565b8101031261053c575192386122e1565b3d9150612508565b9391506020843d60201161255c575b8161254960209383612e2f565b8101031261053c579251909260206122ba565b3d915061253c565b92506020833d602011612592575b8161257f60209383612e2f565b8101031261053c57915191611c93611c7c565b3d9150612572565b929150946020833d6020116125ce575b816125b760209383612e2f565b8101031261053c5791519194909190611c6a611c3e565b3d91506125aa565b611c999350670de0b6b3a764000091611c93916131fe565b6060830151611bef565b61260a6126169160a089015190613193565b9160c088015190613193565b90604087015187518652600e602052604086209063ffffffff8151169082549163ffffffff60201b602083015160201b1691604063ffffffff811b91015160401b169260018060601b031916171717905561266f612fd8565b50151560208901528088528552600c60205260408520612690828254613211565b9055865160e08801517fcf16521da024444891495eb0ed8e5e97ab0b013ee419d71046494d94e02390a260a08a01519160c08b01516126d860405192839233964292856131e2565b0390a3611b12565b50604087015163ffffffff604081602084015116920151161415611b74565b849161273560408360018060a01b03600754166008548784518096819582946311a5cc7760e31b8452309030906004860161328a565b03925af1801561057b576127d4575b5060075460095460055460408051634d4d7cbd60e11b815293909284926001600160a01b039283169284928a928492612788928c929091169030906004860161328a565b03925af1801561057b57604094506127a8575b5082519182526020820152f35b6127c790843d86116127cd575b6127bf8183612e2f565b810190613274565b5061279b565b503d6127b5565b6127ec9060403d6040116127cd576127bf8183612e2f565b50612744565b5060208701511515611b1b565b90506020813d602011612829575b8161281a60209383612e2f565b8101031261053c575138611b0a565b3d915061280d565b634e487b7160e01b600052604160045260246000fd5b60405162461bcd60e51b81526020600482015260146024820152734c513a204f6e6c792053696e67756c617269747960601b6044820152606490fd5b503461017e57602036600319011261017e5761289d612ce5565b6005546001600160a01b0391906128b790831633146132b9565b816004549116809282167f4df4d1118ddbedb1b0f3889ec88ab4d3108097b9b3dd236c2cc5c8e2e9f726958580a36001600160a01b0319161760045580f35b503461017e578060031936011261017e576020600954604051908152f35b503461017e578060031936011261017e5760a09054600154600180841b03806002541681600354169160045416926040519485526020850152604084015260608301526080820152f35b503461017e57604036600319011261017e576024356001600160a01b038116919082900361053c576040600191612993612f78565b506004358152600c60205220019060005260205260a06129b66040600020612e52565b610dda6040518092612d25565b503461017e57602036600319011261017e576020906040906001600160a01b036129eb612ce5565b168152601083522054604051908152f35b503461017e57612a0b36612cfb565b9190612a1b60ff600b5416613020565b612a28600a821115613062565b600192612a388454821015613111565b6008549160018060a01b0380600754169460405194638eb22cdd60e01b86528060048701528860249686888201528160448201526020988982606481845afa918215610464578392612c77575b50803b1561041e57612ab09383604051809681958294630208d92960e11b84523033600486016130a5565b03925af1801561245e57612c64575b508290612aca612f78565b946040860160008152606087018281526080880191428352600089528a8901966000885286600052600c8c528c6040600020019516968795866000528c52612b1a60406000209a5115158b612ef2565b51151561ff008a549160081b169061ff001916178955518b8901555160028801555160038097015560405190600082528882015242604082015260008051602061337083398151915260603392a4600052600f84526040600020906000528352604060002091825493600e8152604060002060405190612b9982612dde565b5490604063ffffffff838180951684528181878601971c168652821c1691015260005b868110612bc7578880f35b80612bd3899288612e96565b905490871b1c838551161115612bea575b01612bbc565b865497509050600019808801888111612c4f57612c0a612c1a9189612e96565b905490881b1c6109c9848a612e96565b86548015612c3a5789929101612c336109ff828a612e96565b8755612be4565b85634e487b7160e01b60005260316004526000fd5b85634e487b7160e01b60005260116004526000fd5b97612c70849299612dcb565b9790612abf565b9091508981813d8311612c9f575b612c8f8183612e2f565b8101031261041e57519038612a85565b503d612c85565b503461017e578060031936011261017e576020600a54604051908152f35b90503461045957816003193601126104595760209060ff600b541615158152f35b600435906001600160a01b038216820361053c57565b606090600319011261053c576004356001600160a01b038116810361053c57906024359060443590565b6080809180511515845260208101511515602085015260408101516040850152606081015160608501520151910152565b9181601f8401121561053c578235916001600160401b03831161053c576020838186019501011161053c57565b60005b838110612d965750506000910152565b8181015183820152602001612d86565b90602091612dbf81518092818552858086019101612d83565b601f01601f1916010190565b6001600160401b03811161283157604052565b606081019081106001600160401b0382111761283157604052565b604081019081106001600160401b0382111761283157604052565b60a081019081106001600160401b0382111761283157604052565b601f909101601f19168101906001600160401b0382119082101761283157604052565b90604051612e5f81612e14565b60806003829460ff81548181161515865260081c161515602085015260018101546040850152600281015460608501520154910152565b8054821015612eae5760005260206000200190600090565b634e487b7160e01b600052603260045260246000fd5b9081602091031261053c57516001600160a01b038116810361053c5790565b6000198114610a2f5760010190565b9060ff801983541691151516179055565b6001600160401b03811161283157601f01601f191660200190565b600052600e602052604060002060405190612f3882612dde565b54604063ffffffff92838316815283808460201c1693846020840152831c169182910152031690565b6001600160401b0381116128315760051b60200190565b60405190612f8582612e14565b60006080838281528260208201528260408201528260608201520152565b60405190612fb082612df9565b81600081526020612fbf612f78565b910152565b8051821015612eae5760209160051b010190565b60009060008091815b600a851115612fed5750565b93612ff781612f1e565b61300a5761300490612ee3565b93612fe1565b808552600c602052604090942054600193509150565b1561302757565b60405162461bcd60e51b815260206004820152601360248201527213144e88139bdd081a5b9a5d1a585b1a5e9959606a1b6044820152606490fd5b1561306957565b60405162461bcd60e51b8152602060048201526014602482015273098a27440e0e4cadad2eada40e8dede40d0d2ced60631b6044820152606490fd5b6001600160a01b039182168152911660208201526040810191909152606081019190915260800190565b93909285939260a09693600180891b031686526020860152604085015260806060850152816080850152848401376000828201840152601f01601f1916010190565b1561311857565b60405162461bcd60e51b815260206004820152600f60248201526e4c513a2062696420746f6f206c6f7760881b6044820152606490fd5b1561315657565b60405162461bcd60e51b81526020600482015260156024820152744c513a20626964206e6f7420617661696c61626c6560581b6044820152606490fd5b91908201809211610a2f57565b60036000918281558260018201558260028201550155565b9160a09391600180861b031683526020830152604082015260806060820152600060808201520190565b9094939260609260808301968352602083015260408201520152565b81810292918115918404141715610a2f57565b91908203918211610a2f57565b6040519061322b82612dde565b60006040838281528260208201520152565b92919261324982612f03565b916132576040519384612e2f565b82948184528183011161053c578281602093846000960137010152565b919082604091031261053c576020825192015190565b9081526001600160a01b0391821660208201529116604082015260608101919091526000608082015260a00190565b156132c057565b60405162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b6044820152606490fd5b909260809261331f959460018060a01b03168352602083015260408201528160608201520190612da6565b90565b9061332d90826131fe565b90606482029180830460641490151715610a2f5761271061331f92049061319356fed3537325843bd046c81dbdae840896c9ad0a4e5ea737ac537f65167df96921c2baa682830cade78a3affa9fa3c417095d0edb57605b0ac6fb487ce2068204ce9a2646970667358221220e57b19de5adf1065d41a63558be6f6a13b347b62178d1a68d4a3e8b4eb46738064736f6c63430008120033", + "bytecode": "0x60808060405234610016576133c5908161001c8239f35b600080fdfe608080604052600436101561001357600080fd5b600090813560e01c90816307be4daf14612cc4575080630ed4f3e914612ca65780630f41ba4b146129fc5780631259c1a1146129c3578063149c59c51461295e5780632cfbe6ba146129145780632e020d1f146128f657806336252c90146128835780633965907b14611a1a57806345baf8af146119fc57806346a7d7d9146119d5578063575939f9146119625780635c3a33931461184f57806365d387c9146114bc5780636aef9a671461111b5780636c3d8b8f146110f25780637c8be05b146110c25780637d98726b1461107a57806380f5560514610f9e57806395a2251f14610ddc578063966b583c14610d85578063a39e6a1714610d33578063a5dca46414610d0a578063bd2f6f8314610b7d578063d844f0c0146105ea578063de406577146105c1578063f50f78cd146101815763fa8e84791461015557600080fd5b3461017e57602036600319011261017e5760406020916004358152600c83522054604051908152f35b80fd5b503461017e57366003190160c081126104595760a01361017e576001600160a01b0360a4358181169081900361053c5760ff600b541661058a5760043583556024356001556044359082821680920361058657600280546001600160a01b031990811690931790556064358381169081900361053c578260035416176003556084359083821680920361053c578491836004541617600455816005548285821617600555161792604051936377607a1760e11b85526020938486600481855afa95861561057b578496610548575b50600a95865560405163226f120560e11b8152918583600481845afa92831561049c578593610511575b506009839055604051636c3d8b8f60e01b81528681600481855afa80156104e957859187916104f4575b501682600654161760065560405163de40657760e01b81528681600481855afa9182156104e95785889288946104a7575b5060049316948560075495861617600755600855604051928380926338d52e0f60e01b82525afa90811561049c57869286868194604494839161046f575b50604051978896879563095ea7b360e01b8752161760048501526000196024850152165af180156104645761042d575b5080600754169060055416813b1561041e57829160448392604051948593849263a22cb46560e01b84526004840152600160248401525af180156104225761040a575b5050825b828111156103a25783600160ff19600b541617600b5580f35b610405906103ae61321e565b63ffffffff8281168252828752600e855260408088208351815488860151958401516001600160601b0319909116919094161793871b63ffffffff60201b169390931791901b63ffffffff60401b16179055612ee3565b610389565b61041390612dcb565b61041e578238610385565b8280fd5b6040513d84823e3d90fd5b8381813d831161045d575b6104428183612e2f565b8101031261041e5751801515036104595738610342565b5080fd5b503d610438565b6040513d85823e3d90fd5b61048f9150873d8911610495575b6104878183612e2f565b810190612ec4565b38610312565b503d61047d565b6040513d87823e3d90fd5b92809294508391503d83116104e2575b6104c18183612e2f565b810103126104de575184811681036104de579086908560046102d4565b8580fd5b503d6104b7565b6040513d88823e3d90fd5b61050b9150883d8a11610495576104878183612e2f565b386102a3565b945091508484813d8111610541575b61052a8183612e2f565b8101031261053c578693519138610279565b600080fd5b503d610520565b85809297508195503d8311610574575b6105628183612e2f565b8101031261053c57859251943861024f565b503d610558565b6040513d86823e3d90fd5b8380fd5b60405162461bcd60e51b815260206004820152600f60248201526e13144e88125b9a5d1a585b1a5e9959608a1b6044820152606490fd5b503461017e578060031936011261017e576007546040516001600160a01b039091168152602090f35b503461017e5760a036600319011261017e57610604612ce5565b6084356001600160401b03811161041e57610623903690600401612d56565b61063160ff600b5416613020565b610640600a6024351115613062565b6004546001600160a01b0316908115610b3d576006546040516386c8e21d60e01b8152928691602090859060049082906001600160a01b03165afa938415610422578294610b06575b5060018060a01b036007541690604051638eb22cdd60e01b815260443560048201526064356024820152836044820152602081606481865afa90811561057b578491610ad1575b50823b156105865761070092849283604051809681958294630208d92960e11b84526044359033600486016130a5565b03925af1801561042257610ab9575b505060048054600554604051632da475e360e21b8152949260209286926001600160a01b039182169284928c928492610757928b928e926064359260443592169087016130cf565b03925af19283156104e9578693610a85575b50610772612f78565b9483604087015260006060870152426080870152600186526004600854602060018060a01b0360065416604051938480926386c8e21d60e01b82525afa918215610a7957600092610a45575b5014156020870152602435600052600c60205260016040600020019060018060a01b0316908160005260205260406000206107fc8751151582612ef2565b6020870151151561ff0082549160081b169061ff00191617815560408701516001820155606087015160028201556003608088015191015560405184815260006020820152426040820152816024359160008051602061337083398151915260603392a4600052600f602052604060002060243560005260205260406000208054600e602052604060002063ffffffff6040519161089983612dde565b548181168352818160201c16602084015260401c16604082015260005b828110610970575050505060208501511561095f57600354600554604051632eec159b60e11b8152965060209587956001600160a01b039384169587958695610907959294939216600487016130cf565b03915afa801561042257829061092b575b61092891505b6001541115613111565b80f35b506020813d602011610957575b8161094560209383612e2f565b8101031261053c576109289051610918565b3d9150610938565b50505050604061092891015161091e565b61097a8185612e96565b90549060031b1c63ffffffff602084015116111561099b575b6001016108b6565b835492506000198301838111610a2f576109b86109e29186612e96565b90549060031b1c6109c98387612e96565b90919082549060031b91821b91600019901b1916179055565b8354908115610a195760019160001901610a106109ff8288612e96565b8154906000199060031b1b19169055565b85559050610993565b634e487b7160e01b600052603160045260246000fd5b634e487b7160e01b600052601160045260246000fd5b90916020823d602011610a71575b81610a6060209383612e2f565b8101031261017e57505190386107be565b3d9150610a53565b6040513d6000823e3d90fd5b9092506020813d602011610ab1575b81610aa160209383612e2f565b8101031261053c57519138610769565b3d9150610a94565b610ac290612dcb565b610acd57843861070f565b8480fd5b9350506020833d602011610afe575b81610aed60209383612e2f565b8101031261053c57879251386106d0565b3d9150610ae0565b915092506020813d602011610b35575b81610b2360209383612e2f565b8101031261053c578590519238610689565b3d9150610b16565b60405162461bcd60e51b815260206004820152601860248201527713144e881554d113c81cddd85c1c195c881b9bdd081cd95d60421b6044820152606490fd5b503461017e576020908160031936011261017e5760043591828252600e8152604082209160405192610bae84612dde565b549063ffffffff9182811685528281851c1660408486880193838552821c1696019580875203838111610cf657831695610be787612f61565b96610bf56040519889612e2f565b808852610c04601f1991612f61565b0185845b828110610ce0575050508252600d845282604083209151169282935b81875116811015610c865780610c639185528387526040852090604051610c4a81612df9565b82546001600160a01b0316815260019384938401612e52565b89820152610c71888c612fc4565b52610c7c878b612fc4565b5001940193610c24565b6040805187815289518189018190528a89019282019089885b828110610cac5784840385f35b9091928260c0600192610cd1838a51868060a01b038151168452015184830190612d25565b01960191019492919094610c9f565b610ce8612fa3565b82828c010152018690610c08565b634e487b7160e01b83526011600452602483fd5b503461017e578060031936011261017e576005546040516001600160a01b039091168152602090f35b503461017e57610d4236612cfb565b929160018060a01b03168252600f602052604082209082526020526040812090815483101561017e576020610d778484612e96565b90546040519160031b1c8152f35b503461017e57604036600319011261017e57604060c0916004358152600d602052818120602435825260205220610dda610dca6001808060a01b038454169301612e52565b6040519283526020830190612d25565bf35b503461017e5760208060031936011261045957610df7612ce5565b33835260108252604083205415610f6457338352601082526040832054906032820282810460321483151715610f5057610e376127108692048094613211565b933382526010815281604081205560018060a01b039384600254168352610e6360408420918254613193565b9055600a54846007541691604051638eb22cdd60e01b81528260048201528760248201528460448201528181606481875afa91821561049c578592610f1f575b5050823b1561058657610ed192849283604051809681958294630208d92960e11b84528b30600486016130a5565b03925af1801561042257610f0b575b505016337fd12200efa34901b99367694174c3b0d32c99585fdf37c7c26892136ddd0836d98480a480f35b610f1490612dcb565b610586578338610ee0565b8195508092503d8311610f49575b610f378183612e2f565b8101031261053c578692513880610ea3565b503d610f2d565b634e487b7160e01b85526011600452602485fd5b60405162461bcd60e51b81526004810183905260126024820152714c513a204e6f2062616c616e63652064756560701b6044820152606490fd5b503461017e578060031936011261017e576005546040516306fdde0360e01b8152908290829060049082906001600160a01b03165afa908115610422578291610ffc575b60405160208082528190610ff890820185612da6565b0390f35b90503d8083833e61100d8183612e2f565b81019060208183031261041e578051906001600160401b038211610586570181601f8201121561041e5780519261104384612f03565b926110516040519485612e2f565b8484526020858401011161017e5750610ff8926110749160208085019101612d83565b38610fe2565b503461017e57602036600319011261017e5760406060916004358152600e60205220546040519063ffffffff908181168352818160201c16602084015260401c166040820152f35b503461017e578060031936011261017e5760606110dd612fd8565b90604051928352151560208301526040820152f35b503461017e578060031936011261017e576006546040516001600160a01b039091168152602090f35b503461017e57604036600319011261017e57611135612ce5565b602435808352602092600c845260019081604082200133600052855260ff60406000205416908160001461149a57838152600c86528260408220013360005286528260406000200154945b61118b86151561314f565b848252600c87528360408320013360005287526111ab60406000206131a0565b8593858352600c885280604084200133600052885260ff60406000205460081c166113b9575b54841061137b578215611372576006546040516386c8e21d60e01b8152908890829060049082906001600160a01b03165afa908115610464578391611345575b50915b600754604051638eb22cdd60e01b81526004810185905260248101899052604481018390526001600160a01b039490918516908a83606481855afa92831561057b578493611316575b50813b156105865791839161128b9383604051809681958294630208d92960e11b84528b30600486016130a5565b03925af1801561042257611302575b507f2f413fefb30b9c037ba435fc106ac59646343aafb657db7057b5b4ba42d5643792919084156112fb5787945b156112f0576112e590945b604051938493169633964292856131e2565b0390a4604051908152f35b506112e587946112d3565b80946112c8565b61130c8291612dcb565b61017e573861129a565b9092508a81813d831161133e575b61132e8183612e2f565b8101031261053c5751913861125d565b503d611324565b90508781813d831161136b575b61135c8183612e2f565b8101031261053c575138611211565b503d611352565b60085491611214565b60405162461bcd60e51b815260048101889052601660248201527513144e88189a5908191bd95cc81b9bdd08195e1a5cdd60521b6044820152606490fd5b935060018060a01b03806003541660048983600554169360065416604051928380926386c8e21d60e01b82525afa90811561049c579189918b938791611462575b5061141c9460405195869485938493632eec159b60e11b8552600485016131b8565b03915afa908115610464578391611435575b50936111d1565b90508781813d831161145b575b61144c8183612e2f565b8101031261053c57513861142e565b503d611442565b925050929181813d8311611493575b61147b8183612e2f565b8101031261053c5761141c928a928a925190946113fa565b503d611471565b838152600c865282604082200133600052865260026040600020015494611180565b503461017e57604036600319011261017e576114d6612ce5565b602435908183526020600c8152600160408520019160018060a01b03809116928360005282526115096040600020612e52565b6115256080820161151c8151151561314f565b51875490613193565b421061181b57848652600e8352604086206040519061154382612dde565b5463ffffffff908181168352858301918082881c16835280604085019260401c16825261156e612fa3565b888152878101958652898b52600d88526040808c20845184168d5289528b20905181546001600160a01b0319169088161781558551805160049160809160018501906115bc90151582612ef2565b8b820151151561ff0082549160081b169061ff00191617905560408101516002850155606081015160038501550151910155888a52600c8752600160408b200188600052875261160f60406000206131a0565b878a52600f87526040808b208a8c5288528a208251815490831691600160401b82101561180757816109c991600161164a9594018155612e96565b8151811660010181168252888a52600e87526040808b2094518554945193516001600160601b031990951692169190911791871b63ffffffff60201b169190911791901b63ffffffff60401b1617905580518051156117fb57836040820151915b0151156117e1575060048260035416928481600554169160065416604051938480926386c8e21d60e01b82525afa80156117d657859289916117a3575b5093611712946040855101519260405196879485938493632eec159b60e11b8552600485016131b8565b03915afa9182156104e9578692611773575b50600c60008051602061335083398151915292935b868852526040862061174c848254613193565b905551606060408201519101519261176d60405192839233964292856131e2565b0390a480f35b91508282813d831161179c575b61178a8183612e2f565b8101031261053c57905190600c611724565b503d611780565b83819492503d83116117cf575b6117ba8183612e2f565b8101031261053c5790518491906117126116e8565b503d6117b0565b6040513d8a823e3d90fd5b6000805160206133508339815191529250600c9093611739565b836060820151916116ab565b634e487b7160e01b8d52604160045260248dfd5b60405162461bcd60e51b815260048101849052600c60248201526b26289d103a37b79039b7b7b760a11b6044820152606490fd5b503461017e57604036600319011261017e57611869612ce5565b602480359160018060a01b03168352602092600f84526040812083825284526040812092604051808587829754938481520190855287852092855b8982821061194c575050506118bb92500385612e2f565b8351908252600e85526040822091604051926118d684612dde565b5463ffffffff9384821681526040858983019381818c1c168552821c16910152815b83811061190a57878751604051908152f35b6119148188612fc4565b51858351161115611928575b6001016118f8565b928015611939576000190192611920565b634e487b7160e01b835260116004528583fd5b855484526001958601958a9550930192016118a4565b503461017e57602036600319011261017e5761197c612ce5565b6005546001600160a01b03919061199690831633146132b9565b816003549116809282167fe0ae31f6fff797b33b039284b11690980155ca2c61a831617b6943199e6fce8b8580a36001600160a01b0319161760035580f35b503461017e57602036600319011261017e5760206119f4600435612f1e565b604051908152f35b503461017e578060031936011261017e576020600854604051908152f35b503461017e57604036600319011261017e576001600160401b039060243582811161045957611a4d903690600401612d56565b600554600435939290839081906001600160a01b031633819003612847576040519761014089019081118982101761283157600491602091604052878a5287828b0152611a9861321e565b60408b0152611aa5612fa3565b60608b0152611ab2612fa3565b60808b01528760a08b01528760c08b01528760e08b0152876101008b0152876101208b0152611adf612fd8565b5015158b8401528a52604051633ba0b9a960e01b815292839182905afa9081156104e95786916127ff575b506101008801525b851515806127f2575b156126ff5786518552600e6020526040852063ffffffff60405191611b3f83612dde565b548181168352818160201c16602084015260401c16604082015260408801528460a08801528460c08801525b851515806126e0575b156125f85786518552600d6020526040852063ffffffff602060408a0151015116865260205260408520611bc1600160405192611bb084612df9565b818060a01b03815416845201612e52565b90602081019182528060608a0152608089015251610100880151885190825115156000146125ee5760408301515b6020840151156125d657506003546005546006546040516386c8e21d60e01b81526001600160a01b03938416969284169390929160209184916004918391165afa918215612045578b9261259a575b5094602092916040611c6a9701519260405197889485938493632eec159b60e11b8552600485016131b8565b03915afa9283156117d6578893612564575b50611c93670de0b6b3a764000091611c99946131fe565b04613322565b8061012089015286811160001461211d57506020608088015101519561010088015196885197611cca36888861323d565b8899670de0b6b3a7640000850290858204670de0b6b3a76400001486151715610a2f57831561210757611cff908483046131fe565b9081606481020460641482151715610a2f576004936127106064611d269402049104613211565b6006546040516386c8e21d60e01b81529194919360209185919082906001600160a01b03165afa9283156120c7578a936120d2575b5060200151611e80575b505090611dc8611dd79260018060a01b0360808c015151168952601060205260408920611d93848254613193565b905560608b0151602001518051611e6b575060606020818d0151015101611dbb828251613211565b90525b60a08b0151613193565b60a08a015260c0890151613193565b60c0880152611deb859660e0890151613193565b60e088015260206060880151015187518652600d6020526040862063ffffffff602060408b0151015116875260205260046080604088209260018401611e348251151582612ef2565b6020820151815461ff00191690151560081b61ff001617905560408101516002850155606081015160038501550151910155611b6b565b604001611e798b8251613211565b9052611dbe565b600354600554604051637f7ba27d60e11b81526001600160a01b039283169c5094959492939160209184918e9183918291611ec3918c91899116600485016131b8565b03915afa9182156120c7578a92612093575b50819a60018060a01b036007541660405191638eb22cdd60e01b83528360048401528460248401528c6044840152602083606481855afa928315612088578d93612054575b50813b1561205057918c918483611f499560405196879586948593630208d92960e11b855230600486016130a5565b03925af1801561204557908b9161202d575b50509060209160018060a01b0360035416908b60018060a01b0360055416611f9960405197889687958694632da475e360e21b8652600486016132f4565b03925af19081156117d6579083918991611ff8575b5010611fbc57903880611d65565b60405162461bcd60e51b81526020600482015260146024820152731b9959590b5b5bdc994b58dbdb1b185d195c985b60621b6044820152606490fd5b9150506020813d602011612025575b8161201460209383612e2f565b8101031261053c5782905138611fae565b3d9150612007565b61203690612dcb565b612041578938611f5b565b8980fd5b6040513d8d823e3d90fd5b8c80fd5b9092506020813d602011612080575b8161207060209383612e2f565b8101031261053c57519138611f1a565b3d9150612063565b6040513d8f823e3d90fd5b9091506020813d6020116120bf575b816120af60209383612e2f565b8101031261053c57519038611ed5565b3d91506120a2565b6040513d8c823e3d90fd5b9092506020813d6020116120ff575b816120ee60209383612e2f565b8101031261053c5751916020611d5b565b3d91506120e1565b634e487b7160e01b600052601260045260246000fd5b90956020608089015101519061010089015191878a805161213f368b8b61323d565b60608501519796604086015195602081015161226c575b505050506121bb926121d8969260606020816121ac9560018060a01b03608082015151168552601083526040852061218f8c8254613193565b9055018051820151604001849052510151015260e08d0151613193565b60e08c015260a08b0151613193565b60a08a01526121ce8260c08b0151613193565b60c08a0152613211565b9460206060880151015187518652600d6020526040862063ffffffff602060408b015101511687526020526004608060408820926001840161221d8251151582612ef2565b6020820151151561ff0082549160081b169061ff00191617905560408101516002850155606081015160038501550151910155602060408801510163ffffffff60018183511601169052611b6b565b6007546003546006546040516386c8e21d60e01b8152969c50999a5093989296509094506001600160a01b039182169390821692909116602082600481875afa9182156124ec578e9261252d575b506020600494604051958680926386c8e21d60e01b82525afa9384156124ec578e946124f9575b50604085015160405194638eb22cdd60e01b8652600486015260248501528d6044850152602084606481865afa9384156124ec578e946124b8575b50823b156124b4579161234b93918e809460405196879586948593630208d92960e11b855230600486016130a5565b03925af1801561204557908b916124a0575b50506003546005546006546040516386c8e21d60e01b81526001600160a01b0392831693831692909160209183916004918391165afa908115612088578d908192612469575b5060406020950151936123cc604051998a9687958694632da475e360e21b8652600486016132f4565b03925af192831561245e578b949392918a91829461241f575b50916121ac91606060208161240f6121d89b670de0b6b3a7640000611c938b9a6121bb9c9b6131fe565b9995505082959950839650612156565b9350919450506020823d602011612456575b8161243e60209383612e2f565b8101031261053c5790518a93909189906121ac6123e5565b3d9150612431565b6040513d8b823e3d90fd5b949150506020843d602011612498575b8161248660209383612e2f565b8101031261053c5792518c60406123a3565b3d9150612479565b6124a990612dcb565b61204157893861235d565b8d80fd5b9093506020813d6020116124e4575b816124d460209383612e2f565b8101031261053c5751923861231c565b3d91506124c7565b8e604051903d90823e3d90fd5b9093506020813d602011612525575b8161251560209383612e2f565b8101031261053c575192386122e1565b3d9150612508565b9391506020843d60201161255c575b8161254960209383612e2f565b8101031261053c579251909260206122ba565b3d915061253c565b92506020833d602011612592575b8161257f60209383612e2f565b8101031261053c57915191611c93611c7c565b3d9150612572565b929150946020833d6020116125ce575b816125b760209383612e2f565b8101031261053c5791519194909190611c6a611c3e565b3d91506125aa565b611c999350670de0b6b3a764000091611c93916131fe565b6060830151611bef565b61260a6126169160a089015190613193565b9160c088015190613193565b90604087015187518652600e602052604086209063ffffffff8151169082549163ffffffff60201b602083015160201b1691604063ffffffff811b91015160401b169260018060601b031916171717905561266f612fd8565b50151560208901528088528552600c60205260408520612690828254613211565b9055865160e08801517fcf16521da024444891495eb0ed8e5e97ab0b013ee419d71046494d94e02390a260a08a01519160c08b01516126d860405192839233964292856131e2565b0390a3611b12565b50604087015163ffffffff604081602084015116920151161415611b74565b849161273560408360018060a01b03600754166008548784518096819582946311a5cc7760e31b8452309030906004860161328a565b03925af1801561057b576127d4575b5060075460095460055460408051634d4d7cbd60e11b815293909284926001600160a01b039283169284928a928492612788928c929091169030906004860161328a565b03925af1801561057b57604094506127a8575b5082519182526020820152f35b6127c790843d86116127cd575b6127bf8183612e2f565b810190613274565b5061279b565b503d6127b5565b6127ec9060403d6040116127cd576127bf8183612e2f565b50612744565b5060208701511515611b1b565b90506020813d602011612829575b8161281a60209383612e2f565b8101031261053c575138611b0a565b3d915061280d565b634e487b7160e01b600052604160045260246000fd5b60405162461bcd60e51b81526020600482015260146024820152734c513a204f6e6c792053696e67756c617269747960601b6044820152606490fd5b503461017e57602036600319011261017e5761289d612ce5565b6005546001600160a01b0391906128b790831633146132b9565b816004549116809282167f4df4d1118ddbedb1b0f3889ec88ab4d3108097b9b3dd236c2cc5c8e2e9f726958580a36001600160a01b0319161760045580f35b503461017e578060031936011261017e576020600954604051908152f35b503461017e578060031936011261017e5760a09054600154600180841b03806002541681600354169160045416926040519485526020850152604084015260608301526080820152f35b503461017e57604036600319011261017e576024356001600160a01b038116919082900361053c576040600191612993612f78565b506004358152600c60205220019060005260205260a06129b66040600020612e52565b610dda6040518092612d25565b503461017e57602036600319011261017e576020906040906001600160a01b036129eb612ce5565b168152601083522054604051908152f35b503461017e57612a0b36612cfb565b9190612a1b60ff600b5416613020565b612a28600a821115613062565b600192612a388454821015613111565b6008549160018060a01b0380600754169460405194638eb22cdd60e01b86528060048701528860249686888201528160448201526020988982606481845afa918215610464578392612c77575b50803b1561041e57612ab09383604051809681958294630208d92960e11b84523033600486016130a5565b03925af1801561245e57612c64575b508290612aca612f78565b946040860160008152606087018281526080880191428352600089528a8901966000885286600052600c8c528c6040600020019516968795866000528c52612b1a60406000209a5115158b612ef2565b51151561ff008a549160081b169061ff001916178955518b8901555160028801555160038097015560405190600082528882015242604082015260008051602061337083398151915260603392a4600052600f84526040600020906000528352604060002091825493600e8152604060002060405190612b9982612dde565b5490604063ffffffff838180951684528181878601971c168652821c1691015260005b868110612bc7578880f35b80612bd3899288612e96565b905490871b1c838551161115612bea575b01612bbc565b865497509050600019808801888111612c4f57612c0a612c1a9189612e96565b905490881b1c6109c9848a612e96565b86548015612c3a5789929101612c336109ff828a612e96565b8755612be4565b85634e487b7160e01b60005260316004526000fd5b85634e487b7160e01b60005260116004526000fd5b97612c70849299612dcb565b9790612abf565b9091508981813d8311612c9f575b612c8f8183612e2f565b8101031261041e57519038612a85565b503d612c85565b503461017e578060031936011261017e576020600a54604051908152f35b90503461045957816003193601126104595760209060ff600b541615158152f35b600435906001600160a01b038216820361053c57565b606090600319011261053c576004356001600160a01b038116810361053c57906024359060443590565b6080809180511515845260208101511515602085015260408101516040850152606081015160608501520151910152565b9181601f8401121561053c578235916001600160401b03831161053c576020838186019501011161053c57565b60005b838110612d965750506000910152565b8181015183820152602001612d86565b90602091612dbf81518092818552858086019101612d83565b601f01601f1916010190565b6001600160401b03811161283157604052565b606081019081106001600160401b0382111761283157604052565b604081019081106001600160401b0382111761283157604052565b60a081019081106001600160401b0382111761283157604052565b601f909101601f19168101906001600160401b0382119082101761283157604052565b90604051612e5f81612e14565b60806003829460ff81548181161515865260081c161515602085015260018101546040850152600281015460608501520154910152565b8054821015612eae5760005260206000200190600090565b634e487b7160e01b600052603260045260246000fd5b9081602091031261053c57516001600160a01b038116810361053c5790565b6000198114610a2f5760010190565b9060ff801983541691151516179055565b6001600160401b03811161283157601f01601f191660200190565b600052600e602052604060002060405190612f3882612dde565b54604063ffffffff92838316815283808460201c1693846020840152831c169182910152031690565b6001600160401b0381116128315760051b60200190565b60405190612f8582612e14565b60006080838281528260208201528260408201528260608201520152565b60405190612fb082612df9565b81600081526020612fbf612f78565b910152565b8051821015612eae5760209160051b010190565b60009060008091815b600a851115612fed5750565b93612ff781612f1e565b61300a5761300490612ee3565b93612fe1565b808552600c602052604090942054600193509150565b1561302757565b60405162461bcd60e51b815260206004820152601360248201527213144e88139bdd081a5b9a5d1a585b1a5e9959606a1b6044820152606490fd5b1561306957565b60405162461bcd60e51b8152602060048201526014602482015273098a27440e0e4cadad2eada40e8dede40d0d2ced60631b6044820152606490fd5b6001600160a01b039182168152911660208201526040810191909152606081019190915260800190565b93909285939260a09693600180891b031686526020860152604085015260806060850152816080850152848401376000828201840152601f01601f1916010190565b1561311857565b60405162461bcd60e51b815260206004820152600f60248201526e4c513a2062696420746f6f206c6f7760881b6044820152606490fd5b1561315657565b60405162461bcd60e51b81526020600482015260156024820152744c513a20626964206e6f7420617661696c61626c6560581b6044820152606490fd5b91908201809211610a2f57565b60036000918281558260018201558260028201550155565b9160a09391600180861b031683526020830152604082015260806060820152600060808201520190565b9094939260609260808301968352602083015260408201520152565b81810292918115918404141715610a2f57565b91908203918211610a2f57565b6040519061322b82612dde565b60006040838281528260208201520152565b92919261324982612f03565b916132576040519384612e2f565b82948184528183011161053c578281602093846000960137010152565b919082604091031261053c576020825192015190565b9081526001600160a01b0391821660208201529116604082015260608101919091526000608082015260a00190565b156132c057565b60405162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b6044820152606490fd5b909260809261331f959460018060a01b03168352602083015260408201528160608201520190612da6565b90565b9061332d90826131fe565b90606482029180830460641490151715610a2f5761271061331f92049061319356fed3537325843bd046c81dbdae840896c9ad0a4e5ea737ac537f65167df96921c2baa682830cade78a3affa9fa3c417095d0edb57605b0ac6fb487ce2068204ce9a2646970667358221220b388047ea594750f68c46b14a733208dbe47d450a1243a7fbf2c06c11c32040964736f6c63430008120033", + "deployedBytecode": "0x608080604052600436101561001357600080fd5b600090813560e01c90816307be4daf14612cc4575080630ed4f3e914612ca65780630f41ba4b146129fc5780631259c1a1146129c3578063149c59c51461295e5780632cfbe6ba146129145780632e020d1f146128f657806336252c90146128835780633965907b14611a1a57806345baf8af146119fc57806346a7d7d9146119d5578063575939f9146119625780635c3a33931461184f57806365d387c9146114bc5780636aef9a671461111b5780636c3d8b8f146110f25780637c8be05b146110c25780637d98726b1461107a57806380f5560514610f9e57806395a2251f14610ddc578063966b583c14610d85578063a39e6a1714610d33578063a5dca46414610d0a578063bd2f6f8314610b7d578063d844f0c0146105ea578063de406577146105c1578063f50f78cd146101815763fa8e84791461015557600080fd5b3461017e57602036600319011261017e5760406020916004358152600c83522054604051908152f35b80fd5b503461017e57366003190160c081126104595760a01361017e576001600160a01b0360a4358181169081900361053c5760ff600b541661058a5760043583556024356001556044359082821680920361058657600280546001600160a01b031990811690931790556064358381169081900361053c578260035416176003556084359083821680920361053c578491836004541617600455816005548285821617600555161792604051936377607a1760e11b85526020938486600481855afa95861561057b578496610548575b50600a95865560405163226f120560e11b8152918583600481845afa92831561049c578593610511575b506009839055604051636c3d8b8f60e01b81528681600481855afa80156104e957859187916104f4575b501682600654161760065560405163de40657760e01b81528681600481855afa9182156104e95785889288946104a7575b5060049316948560075495861617600755600855604051928380926338d52e0f60e01b82525afa90811561049c57869286868194604494839161046f575b50604051978896879563095ea7b360e01b8752161760048501526000196024850152165af180156104645761042d575b5080600754169060055416813b1561041e57829160448392604051948593849263a22cb46560e01b84526004840152600160248401525af180156104225761040a575b5050825b828111156103a25783600160ff19600b541617600b5580f35b610405906103ae61321e565b63ffffffff8281168252828752600e855260408088208351815488860151958401516001600160601b0319909116919094161793871b63ffffffff60201b169390931791901b63ffffffff60401b16179055612ee3565b610389565b61041390612dcb565b61041e578238610385565b8280fd5b6040513d84823e3d90fd5b8381813d831161045d575b6104428183612e2f565b8101031261041e5751801515036104595738610342565b5080fd5b503d610438565b6040513d85823e3d90fd5b61048f9150873d8911610495575b6104878183612e2f565b810190612ec4565b38610312565b503d61047d565b6040513d87823e3d90fd5b92809294508391503d83116104e2575b6104c18183612e2f565b810103126104de575184811681036104de579086908560046102d4565b8580fd5b503d6104b7565b6040513d88823e3d90fd5b61050b9150883d8a11610495576104878183612e2f565b386102a3565b945091508484813d8111610541575b61052a8183612e2f565b8101031261053c578693519138610279565b600080fd5b503d610520565b85809297508195503d8311610574575b6105628183612e2f565b8101031261053c57859251943861024f565b503d610558565b6040513d86823e3d90fd5b8380fd5b60405162461bcd60e51b815260206004820152600f60248201526e13144e88125b9a5d1a585b1a5e9959608a1b6044820152606490fd5b503461017e578060031936011261017e576007546040516001600160a01b039091168152602090f35b503461017e5760a036600319011261017e57610604612ce5565b6084356001600160401b03811161041e57610623903690600401612d56565b61063160ff600b5416613020565b610640600a6024351115613062565b6004546001600160a01b0316908115610b3d576006546040516386c8e21d60e01b8152928691602090859060049082906001600160a01b03165afa938415610422578294610b06575b5060018060a01b036007541690604051638eb22cdd60e01b815260443560048201526064356024820152836044820152602081606481865afa90811561057b578491610ad1575b50823b156105865761070092849283604051809681958294630208d92960e11b84526044359033600486016130a5565b03925af1801561042257610ab9575b505060048054600554604051632da475e360e21b8152949260209286926001600160a01b039182169284928c928492610757928b928e926064359260443592169087016130cf565b03925af19283156104e9578693610a85575b50610772612f78565b9483604087015260006060870152426080870152600186526004600854602060018060a01b0360065416604051938480926386c8e21d60e01b82525afa918215610a7957600092610a45575b5014156020870152602435600052600c60205260016040600020019060018060a01b0316908160005260205260406000206107fc8751151582612ef2565b6020870151151561ff0082549160081b169061ff00191617815560408701516001820155606087015160028201556003608088015191015560405184815260006020820152426040820152816024359160008051602061337083398151915260603392a4600052600f602052604060002060243560005260205260406000208054600e602052604060002063ffffffff6040519161089983612dde565b548181168352818160201c16602084015260401c16604082015260005b828110610970575050505060208501511561095f57600354600554604051632eec159b60e11b8152965060209587956001600160a01b039384169587958695610907959294939216600487016130cf565b03915afa801561042257829061092b575b61092891505b6001541115613111565b80f35b506020813d602011610957575b8161094560209383612e2f565b8101031261053c576109289051610918565b3d9150610938565b50505050604061092891015161091e565b61097a8185612e96565b90549060031b1c63ffffffff602084015116111561099b575b6001016108b6565b835492506000198301838111610a2f576109b86109e29186612e96565b90549060031b1c6109c98387612e96565b90919082549060031b91821b91600019901b1916179055565b8354908115610a195760019160001901610a106109ff8288612e96565b8154906000199060031b1b19169055565b85559050610993565b634e487b7160e01b600052603160045260246000fd5b634e487b7160e01b600052601160045260246000fd5b90916020823d602011610a71575b81610a6060209383612e2f565b8101031261017e57505190386107be565b3d9150610a53565b6040513d6000823e3d90fd5b9092506020813d602011610ab1575b81610aa160209383612e2f565b8101031261053c57519138610769565b3d9150610a94565b610ac290612dcb565b610acd57843861070f565b8480fd5b9350506020833d602011610afe575b81610aed60209383612e2f565b8101031261053c57879251386106d0565b3d9150610ae0565b915092506020813d602011610b35575b81610b2360209383612e2f565b8101031261053c578590519238610689565b3d9150610b16565b60405162461bcd60e51b815260206004820152601860248201527713144e881554d113c81cddd85c1c195c881b9bdd081cd95d60421b6044820152606490fd5b503461017e576020908160031936011261017e5760043591828252600e8152604082209160405192610bae84612dde565b549063ffffffff9182811685528281851c1660408486880193838552821c1696019580875203838111610cf657831695610be787612f61565b96610bf56040519889612e2f565b808852610c04601f1991612f61565b0185845b828110610ce0575050508252600d845282604083209151169282935b81875116811015610c865780610c639185528387526040852090604051610c4a81612df9565b82546001600160a01b0316815260019384938401612e52565b89820152610c71888c612fc4565b52610c7c878b612fc4565b5001940193610c24565b6040805187815289518189018190528a89019282019089885b828110610cac5784840385f35b9091928260c0600192610cd1838a51868060a01b038151168452015184830190612d25565b01960191019492919094610c9f565b610ce8612fa3565b82828c010152018690610c08565b634e487b7160e01b83526011600452602483fd5b503461017e578060031936011261017e576005546040516001600160a01b039091168152602090f35b503461017e57610d4236612cfb565b929160018060a01b03168252600f602052604082209082526020526040812090815483101561017e576020610d778484612e96565b90546040519160031b1c8152f35b503461017e57604036600319011261017e57604060c0916004358152600d602052818120602435825260205220610dda610dca6001808060a01b038454169301612e52565b6040519283526020830190612d25565bf35b503461017e5760208060031936011261045957610df7612ce5565b33835260108252604083205415610f6457338352601082526040832054906032820282810460321483151715610f5057610e376127108692048094613211565b933382526010815281604081205560018060a01b039384600254168352610e6360408420918254613193565b9055600a54846007541691604051638eb22cdd60e01b81528260048201528760248201528460448201528181606481875afa91821561049c578592610f1f575b5050823b1561058657610ed192849283604051809681958294630208d92960e11b84528b30600486016130a5565b03925af1801561042257610f0b575b505016337fd12200efa34901b99367694174c3b0d32c99585fdf37c7c26892136ddd0836d98480a480f35b610f1490612dcb565b610586578338610ee0565b8195508092503d8311610f49575b610f378183612e2f565b8101031261053c578692513880610ea3565b503d610f2d565b634e487b7160e01b85526011600452602485fd5b60405162461bcd60e51b81526004810183905260126024820152714c513a204e6f2062616c616e63652064756560701b6044820152606490fd5b503461017e578060031936011261017e576005546040516306fdde0360e01b8152908290829060049082906001600160a01b03165afa908115610422578291610ffc575b60405160208082528190610ff890820185612da6565b0390f35b90503d8083833e61100d8183612e2f565b81019060208183031261041e578051906001600160401b038211610586570181601f8201121561041e5780519261104384612f03565b926110516040519485612e2f565b8484526020858401011161017e5750610ff8926110749160208085019101612d83565b38610fe2565b503461017e57602036600319011261017e5760406060916004358152600e60205220546040519063ffffffff908181168352818160201c16602084015260401c166040820152f35b503461017e578060031936011261017e5760606110dd612fd8565b90604051928352151560208301526040820152f35b503461017e578060031936011261017e576006546040516001600160a01b039091168152602090f35b503461017e57604036600319011261017e57611135612ce5565b602435808352602092600c845260019081604082200133600052855260ff60406000205416908160001461149a57838152600c86528260408220013360005286528260406000200154945b61118b86151561314f565b848252600c87528360408320013360005287526111ab60406000206131a0565b8593858352600c885280604084200133600052885260ff60406000205460081c166113b9575b54841061137b578215611372576006546040516386c8e21d60e01b8152908890829060049082906001600160a01b03165afa908115610464578391611345575b50915b600754604051638eb22cdd60e01b81526004810185905260248101899052604481018390526001600160a01b039490918516908a83606481855afa92831561057b578493611316575b50813b156105865791839161128b9383604051809681958294630208d92960e11b84528b30600486016130a5565b03925af1801561042257611302575b507f2f413fefb30b9c037ba435fc106ac59646343aafb657db7057b5b4ba42d5643792919084156112fb5787945b156112f0576112e590945b604051938493169633964292856131e2565b0390a4604051908152f35b506112e587946112d3565b80946112c8565b61130c8291612dcb565b61017e573861129a565b9092508a81813d831161133e575b61132e8183612e2f565b8101031261053c5751913861125d565b503d611324565b90508781813d831161136b575b61135c8183612e2f565b8101031261053c575138611211565b503d611352565b60085491611214565b60405162461bcd60e51b815260048101889052601660248201527513144e88189a5908191bd95cc81b9bdd08195e1a5cdd60521b6044820152606490fd5b935060018060a01b03806003541660048983600554169360065416604051928380926386c8e21d60e01b82525afa90811561049c579189918b938791611462575b5061141c9460405195869485938493632eec159b60e11b8552600485016131b8565b03915afa908115610464578391611435575b50936111d1565b90508781813d831161145b575b61144c8183612e2f565b8101031261053c57513861142e565b503d611442565b925050929181813d8311611493575b61147b8183612e2f565b8101031261053c5761141c928a928a925190946113fa565b503d611471565b838152600c865282604082200133600052865260026040600020015494611180565b503461017e57604036600319011261017e576114d6612ce5565b602435908183526020600c8152600160408520019160018060a01b03809116928360005282526115096040600020612e52565b6115256080820161151c8151151561314f565b51875490613193565b421061181b57848652600e8352604086206040519061154382612dde565b5463ffffffff908181168352858301918082881c16835280604085019260401c16825261156e612fa3565b888152878101958652898b52600d88526040808c20845184168d5289528b20905181546001600160a01b0319169088161781558551805160049160809160018501906115bc90151582612ef2565b8b820151151561ff0082549160081b169061ff00191617905560408101516002850155606081015160038501550151910155888a52600c8752600160408b200188600052875261160f60406000206131a0565b878a52600f87526040808b208a8c5288528a208251815490831691600160401b82101561180757816109c991600161164a9594018155612e96565b8151811660010181168252888a52600e87526040808b2094518554945193516001600160601b031990951692169190911791871b63ffffffff60201b169190911791901b63ffffffff60401b1617905580518051156117fb57836040820151915b0151156117e1575060048260035416928481600554169160065416604051938480926386c8e21d60e01b82525afa80156117d657859289916117a3575b5093611712946040855101519260405196879485938493632eec159b60e11b8552600485016131b8565b03915afa9182156104e9578692611773575b50600c60008051602061335083398151915292935b868852526040862061174c848254613193565b905551606060408201519101519261176d60405192839233964292856131e2565b0390a480f35b91508282813d831161179c575b61178a8183612e2f565b8101031261053c57905190600c611724565b503d611780565b83819492503d83116117cf575b6117ba8183612e2f565b8101031261053c5790518491906117126116e8565b503d6117b0565b6040513d8a823e3d90fd5b6000805160206133508339815191529250600c9093611739565b836060820151916116ab565b634e487b7160e01b8d52604160045260248dfd5b60405162461bcd60e51b815260048101849052600c60248201526b26289d103a37b79039b7b7b760a11b6044820152606490fd5b503461017e57604036600319011261017e57611869612ce5565b602480359160018060a01b03168352602092600f84526040812083825284526040812092604051808587829754938481520190855287852092855b8982821061194c575050506118bb92500385612e2f565b8351908252600e85526040822091604051926118d684612dde565b5463ffffffff9384821681526040858983019381818c1c168552821c16910152815b83811061190a57878751604051908152f35b6119148188612fc4565b51858351161115611928575b6001016118f8565b928015611939576000190192611920565b634e487b7160e01b835260116004528583fd5b855484526001958601958a9550930192016118a4565b503461017e57602036600319011261017e5761197c612ce5565b6005546001600160a01b03919061199690831633146132b9565b816003549116809282167fe0ae31f6fff797b33b039284b11690980155ca2c61a831617b6943199e6fce8b8580a36001600160a01b0319161760035580f35b503461017e57602036600319011261017e5760206119f4600435612f1e565b604051908152f35b503461017e578060031936011261017e576020600854604051908152f35b503461017e57604036600319011261017e576001600160401b039060243582811161045957611a4d903690600401612d56565b600554600435939290839081906001600160a01b031633819003612847576040519761014089019081118982101761283157600491602091604052878a5287828b0152611a9861321e565b60408b0152611aa5612fa3565b60608b0152611ab2612fa3565b60808b01528760a08b01528760c08b01528760e08b0152876101008b0152876101208b0152611adf612fd8565b5015158b8401528a52604051633ba0b9a960e01b815292839182905afa9081156104e95786916127ff575b506101008801525b851515806127f2575b156126ff5786518552600e6020526040852063ffffffff60405191611b3f83612dde565b548181168352818160201c16602084015260401c16604082015260408801528460a08801528460c08801525b851515806126e0575b156125f85786518552600d6020526040852063ffffffff602060408a0151015116865260205260408520611bc1600160405192611bb084612df9565b818060a01b03815416845201612e52565b90602081019182528060608a0152608089015251610100880151885190825115156000146125ee5760408301515b6020840151156125d657506003546005546006546040516386c8e21d60e01b81526001600160a01b03938416969284169390929160209184916004918391165afa918215612045578b9261259a575b5094602092916040611c6a9701519260405197889485938493632eec159b60e11b8552600485016131b8565b03915afa9283156117d6578893612564575b50611c93670de0b6b3a764000091611c99946131fe565b04613322565b8061012089015286811160001461211d57506020608088015101519561010088015196885197611cca36888861323d565b8899670de0b6b3a7640000850290858204670de0b6b3a76400001486151715610a2f57831561210757611cff908483046131fe565b9081606481020460641482151715610a2f576004936127106064611d269402049104613211565b6006546040516386c8e21d60e01b81529194919360209185919082906001600160a01b03165afa9283156120c7578a936120d2575b5060200151611e80575b505090611dc8611dd79260018060a01b0360808c015151168952601060205260408920611d93848254613193565b905560608b0151602001518051611e6b575060606020818d0151015101611dbb828251613211565b90525b60a08b0151613193565b60a08a015260c0890151613193565b60c0880152611deb859660e0890151613193565b60e088015260206060880151015187518652600d6020526040862063ffffffff602060408b0151015116875260205260046080604088209260018401611e348251151582612ef2565b6020820151815461ff00191690151560081b61ff001617905560408101516002850155606081015160038501550151910155611b6b565b604001611e798b8251613211565b9052611dbe565b600354600554604051637f7ba27d60e11b81526001600160a01b039283169c5094959492939160209184918e9183918291611ec3918c91899116600485016131b8565b03915afa9182156120c7578a92612093575b50819a60018060a01b036007541660405191638eb22cdd60e01b83528360048401528460248401528c6044840152602083606481855afa928315612088578d93612054575b50813b1561205057918c918483611f499560405196879586948593630208d92960e11b855230600486016130a5565b03925af1801561204557908b9161202d575b50509060209160018060a01b0360035416908b60018060a01b0360055416611f9960405197889687958694632da475e360e21b8652600486016132f4565b03925af19081156117d6579083918991611ff8575b5010611fbc57903880611d65565b60405162461bcd60e51b81526020600482015260146024820152731b9959590b5b5bdc994b58dbdb1b185d195c985b60621b6044820152606490fd5b9150506020813d602011612025575b8161201460209383612e2f565b8101031261053c5782905138611fae565b3d9150612007565b61203690612dcb565b612041578938611f5b565b8980fd5b6040513d8d823e3d90fd5b8c80fd5b9092506020813d602011612080575b8161207060209383612e2f565b8101031261053c57519138611f1a565b3d9150612063565b6040513d8f823e3d90fd5b9091506020813d6020116120bf575b816120af60209383612e2f565b8101031261053c57519038611ed5565b3d91506120a2565b6040513d8c823e3d90fd5b9092506020813d6020116120ff575b816120ee60209383612e2f565b8101031261053c5751916020611d5b565b3d91506120e1565b634e487b7160e01b600052601260045260246000fd5b90956020608089015101519061010089015191878a805161213f368b8b61323d565b60608501519796604086015195602081015161226c575b505050506121bb926121d8969260606020816121ac9560018060a01b03608082015151168552601083526040852061218f8c8254613193565b9055018051820151604001849052510151015260e08d0151613193565b60e08c015260a08b0151613193565b60a08a01526121ce8260c08b0151613193565b60c08a0152613211565b9460206060880151015187518652600d6020526040862063ffffffff602060408b015101511687526020526004608060408820926001840161221d8251151582612ef2565b6020820151151561ff0082549160081b169061ff00191617905560408101516002850155606081015160038501550151910155602060408801510163ffffffff60018183511601169052611b6b565b6007546003546006546040516386c8e21d60e01b8152969c50999a5093989296509094506001600160a01b039182169390821692909116602082600481875afa9182156124ec578e9261252d575b506020600494604051958680926386c8e21d60e01b82525afa9384156124ec578e946124f9575b50604085015160405194638eb22cdd60e01b8652600486015260248501528d6044850152602084606481865afa9384156124ec578e946124b8575b50823b156124b4579161234b93918e809460405196879586948593630208d92960e11b855230600486016130a5565b03925af1801561204557908b916124a0575b50506003546005546006546040516386c8e21d60e01b81526001600160a01b0392831693831692909160209183916004918391165afa908115612088578d908192612469575b5060406020950151936123cc604051998a9687958694632da475e360e21b8652600486016132f4565b03925af192831561245e578b949392918a91829461241f575b50916121ac91606060208161240f6121d89b670de0b6b3a7640000611c938b9a6121bb9c9b6131fe565b9995505082959950839650612156565b9350919450506020823d602011612456575b8161243e60209383612e2f565b8101031261053c5790518a93909189906121ac6123e5565b3d9150612431565b6040513d8b823e3d90fd5b949150506020843d602011612498575b8161248660209383612e2f565b8101031261053c5792518c60406123a3565b3d9150612479565b6124a990612dcb565b61204157893861235d565b8d80fd5b9093506020813d6020116124e4575b816124d460209383612e2f565b8101031261053c5751923861231c565b3d91506124c7565b8e604051903d90823e3d90fd5b9093506020813d602011612525575b8161251560209383612e2f565b8101031261053c575192386122e1565b3d9150612508565b9391506020843d60201161255c575b8161254960209383612e2f565b8101031261053c579251909260206122ba565b3d915061253c565b92506020833d602011612592575b8161257f60209383612e2f565b8101031261053c57915191611c93611c7c565b3d9150612572565b929150946020833d6020116125ce575b816125b760209383612e2f565b8101031261053c5791519194909190611c6a611c3e565b3d91506125aa565b611c999350670de0b6b3a764000091611c93916131fe565b6060830151611bef565b61260a6126169160a089015190613193565b9160c088015190613193565b90604087015187518652600e602052604086209063ffffffff8151169082549163ffffffff60201b602083015160201b1691604063ffffffff811b91015160401b169260018060601b031916171717905561266f612fd8565b50151560208901528088528552600c60205260408520612690828254613211565b9055865160e08801517fcf16521da024444891495eb0ed8e5e97ab0b013ee419d71046494d94e02390a260a08a01519160c08b01516126d860405192839233964292856131e2565b0390a3611b12565b50604087015163ffffffff604081602084015116920151161415611b74565b849161273560408360018060a01b03600754166008548784518096819582946311a5cc7760e31b8452309030906004860161328a565b03925af1801561057b576127d4575b5060075460095460055460408051634d4d7cbd60e11b815293909284926001600160a01b039283169284928a928492612788928c929091169030906004860161328a565b03925af1801561057b57604094506127a8575b5082519182526020820152f35b6127c790843d86116127cd575b6127bf8183612e2f565b810190613274565b5061279b565b503d6127b5565b6127ec9060403d6040116127cd576127bf8183612e2f565b50612744565b5060208701511515611b1b565b90506020813d602011612829575b8161281a60209383612e2f565b8101031261053c575138611b0a565b3d915061280d565b634e487b7160e01b600052604160045260246000fd5b60405162461bcd60e51b81526020600482015260146024820152734c513a204f6e6c792053696e67756c617269747960601b6044820152606490fd5b503461017e57602036600319011261017e5761289d612ce5565b6005546001600160a01b0391906128b790831633146132b9565b816004549116809282167f4df4d1118ddbedb1b0f3889ec88ab4d3108097b9b3dd236c2cc5c8e2e9f726958580a36001600160a01b0319161760045580f35b503461017e578060031936011261017e576020600954604051908152f35b503461017e578060031936011261017e5760a09054600154600180841b03806002541681600354169160045416926040519485526020850152604084015260608301526080820152f35b503461017e57604036600319011261017e576024356001600160a01b038116919082900361053c576040600191612993612f78565b506004358152600c60205220019060005260205260a06129b66040600020612e52565b610dda6040518092612d25565b503461017e57602036600319011261017e576020906040906001600160a01b036129eb612ce5565b168152601083522054604051908152f35b503461017e57612a0b36612cfb565b9190612a1b60ff600b5416613020565b612a28600a821115613062565b600192612a388454821015613111565b6008549160018060a01b0380600754169460405194638eb22cdd60e01b86528060048701528860249686888201528160448201526020988982606481845afa918215610464578392612c77575b50803b1561041e57612ab09383604051809681958294630208d92960e11b84523033600486016130a5565b03925af1801561245e57612c64575b508290612aca612f78565b946040860160008152606087018281526080880191428352600089528a8901966000885286600052600c8c528c6040600020019516968795866000528c52612b1a60406000209a5115158b612ef2565b51151561ff008a549160081b169061ff001916178955518b8901555160028801555160038097015560405190600082528882015242604082015260008051602061337083398151915260603392a4600052600f84526040600020906000528352604060002091825493600e8152604060002060405190612b9982612dde565b5490604063ffffffff838180951684528181878601971c168652821c1691015260005b868110612bc7578880f35b80612bd3899288612e96565b905490871b1c838551161115612bea575b01612bbc565b865497509050600019808801888111612c4f57612c0a612c1a9189612e96565b905490881b1c6109c9848a612e96565b86548015612c3a5789929101612c336109ff828a612e96565b8755612be4565b85634e487b7160e01b60005260316004526000fd5b85634e487b7160e01b60005260116004526000fd5b97612c70849299612dcb565b9790612abf565b9091508981813d8311612c9f575b612c8f8183612e2f565b8101031261041e57519038612a85565b503d612c85565b503461017e578060031936011261017e576020600a54604051908152f35b90503461045957816003193601126104595760209060ff600b541615158152f35b600435906001600160a01b038216820361053c57565b606090600319011261053c576004356001600160a01b038116810361053c57906024359060443590565b6080809180511515845260208101511515602085015260408101516040850152606081015160608501520151910152565b9181601f8401121561053c578235916001600160401b03831161053c576020838186019501011161053c57565b60005b838110612d965750506000910152565b8181015183820152602001612d86565b90602091612dbf81518092818552858086019101612d83565b601f01601f1916010190565b6001600160401b03811161283157604052565b606081019081106001600160401b0382111761283157604052565b604081019081106001600160401b0382111761283157604052565b60a081019081106001600160401b0382111761283157604052565b601f909101601f19168101906001600160401b0382119082101761283157604052565b90604051612e5f81612e14565b60806003829460ff81548181161515865260081c161515602085015260018101546040850152600281015460608501520154910152565b8054821015612eae5760005260206000200190600090565b634e487b7160e01b600052603260045260246000fd5b9081602091031261053c57516001600160a01b038116810361053c5790565b6000198114610a2f5760010190565b9060ff801983541691151516179055565b6001600160401b03811161283157601f01601f191660200190565b600052600e602052604060002060405190612f3882612dde565b54604063ffffffff92838316815283808460201c1693846020840152831c169182910152031690565b6001600160401b0381116128315760051b60200190565b60405190612f8582612e14565b60006080838281528260208201528260408201528260608201520152565b60405190612fb082612df9565b81600081526020612fbf612f78565b910152565b8051821015612eae5760209160051b010190565b60009060008091815b600a851115612fed5750565b93612ff781612f1e565b61300a5761300490612ee3565b93612fe1565b808552600c602052604090942054600193509150565b1561302757565b60405162461bcd60e51b815260206004820152601360248201527213144e88139bdd081a5b9a5d1a585b1a5e9959606a1b6044820152606490fd5b1561306957565b60405162461bcd60e51b8152602060048201526014602482015273098a27440e0e4cadad2eada40e8dede40d0d2ced60631b6044820152606490fd5b6001600160a01b039182168152911660208201526040810191909152606081019190915260800190565b93909285939260a09693600180891b031686526020860152604085015260806060850152816080850152848401376000828201840152601f01601f1916010190565b1561311857565b60405162461bcd60e51b815260206004820152600f60248201526e4c513a2062696420746f6f206c6f7760881b6044820152606490fd5b1561315657565b60405162461bcd60e51b81526020600482015260156024820152744c513a20626964206e6f7420617661696c61626c6560581b6044820152606490fd5b91908201809211610a2f57565b60036000918281558260018201558260028201550155565b9160a09391600180861b031683526020830152604082015260806060820152600060808201520190565b9094939260609260808301968352602083015260408201520152565b81810292918115918404141715610a2f57565b91908203918211610a2f57565b6040519061322b82612dde565b60006040838281528260208201520152565b92919261324982612f03565b916132576040519384612e2f565b82948184528183011161053c578281602093846000960137010152565b919082604091031261053c576020825192015190565b9081526001600160a01b0391821660208201529116604082015260608101919091526000608082015260a00190565b156132c057565b60405162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b6044820152606490fd5b909260809261331f959460018060a01b03168352602083015260408201528160608201520190612da6565b90565b9061332d90826131fe565b90606482029180830460641490151715610a2f5761271061331f92049061319356fed3537325843bd046c81dbdae840896c9ad0a4e5ea737ac537f65167df96921c2baa682830cade78a3affa9fa3c417095d0edb57605b0ac6fb487ce2068204ce9a2646970667358221220b388047ea594750f68c46b14a733208dbe47d450a1243a7fbf2c06c11c32040964736f6c63430008120033", "linkReferences": {}, "deployedLinkReferences": {} } diff --git a/src/artifacts/tapioca-periphery/UniUsdoToWethBidder.json b/src/artifacts/tapioca-periphery/UniUsdoToWethBidder.json index 544a72dd..9788a423 100644 --- a/src/artifacts/tapioca-periphery/UniUsdoToWethBidder.json +++ b/src/artifacts/tapioca-periphery/UniUsdoToWethBidder.json @@ -255,8 +255,8 @@ "type": "function" } ], - "bytecode": "0x6080346100ab57601f6116e238819003918201601f19168301916001600160401b038311848410176100b05780849260409485528339810103126100ab5780516001600160a01b03811691908290036100ab576020015160008054336001600160a01b03199182168117835560405194927f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a3600254161760025560035561161b90816100c78239f35b600080fd5b634e487b7160e01b600052604160045260246000fdfe608080604052600436101561001357600080fd5b600090813560e01c90816306fdde031461113857508063078dfbe71461103f5780634e71e0c814610fa55780635dd82b3614610b9857806385267a0114610b6f5780638da5cb5b14610b48578063b691d78c146103f6578063b6aebf3614610380578063e30c3978146103575763fef744fa1461008f57600080fd5b346103545761009d366111c6565b5050604051636c3d8b8f60e01b8152602094936001600160a01b0391908216908681600481855afa90811561030e57839188918891610319575b506004604051809481936386c8e21d60e01b8352165afa90811561030e5790879187916102dd575b509161010e6004938714611314565b60405163de40657760e01b815292839182905afa908115610276578291879187916102b0575b506064600354956040519586938492638eb22cdd60e01b845289600485015260248401528a6044840152165afa918215610276578592610281575b50600254169160405193633d9545e960e11b85526004850152602484015283604484015283606484015260016084840152600160a484015261014092838160c481865afa93841561027657918693916101ef95938794610247575b50506060848401510152604051808095819463071e388d60e51b8352600483016114d4565b03915afa91821561023b5791610209575b50604051908152f35b90508181813d8311610234575b61022081836112dd565b8101031261022f575138610200565b600080fd5b503d610216565b604051903d90823e3d90fd5b610267929450803d1061026f575b61025f81836112dd565b81019061137e565b9138806101ca565b503d610255565b6040513d87823e3d90fd5b9091508581813d83116102a9575b61029981836112dd565b8101031261022f5751903861016f565b503d61028f565b6102d09150823d84116102d6575b6102c881836112dd565b810190611352565b38610134565b503d6102be565b82819392503d8311610307575b6102f481836112dd565b8101031261022f5751869061010e6100ff565b503d6102ea565b6040513d88823e3d90fd5b92505081813d831161034d575b61033081836112dd565b8101031261034957866103438492611300565b386100d7565b8580fd5b503d610326565b80fd5b50346103545780600319360112610354576001546040516001600160a01b039091168152602090f35b5034610354576020366003190112610354576004356001600160a01b03818116918290036103f2576103b681845416331461122b565b816002549182167f1226a5d51aea8884fdf5761c8e63e98532d3eedcc0a3d56ebe98e3080fcf96dd8580a36001600160a01b0319161760025580f35b8280fd5b503461035457610405366111c6565b604051636c3d8b8f60e01b808252919591949293926001600160a01b039092169190602081600481865afa9081156109ca578891610b0e575b50604051631192124760e11b81526001600160a01b039190911690602081600481855afa90811561093b578991610ac9575b5060249160209161048b906001600160a01b031615156114f4565b6040519283809263473ec51560e11b82528760048301525afa9081156109ca578891610a8f575b5015610a575760405163de40657760e01b815293602085600481865afa9485156109ca578895610a36575b5060405163c23ea21f60e01b815295602087600481875afa96871561093b578997610a14575b5060209060046040518096819382525afa9283156109ca5788936109d5575b506040516386c8e21d60e01b815292602090849060049082906001600160a01b03165afa9283156109ca578893610992575b50610560838314611314565b6001600160a01b038616330361096357879680610946575b5050600254604051638eb22cdd60e01b81526004810183905260248101859052604481018990526001600160a01b03918216929091602090839060649082908a165afa91821561093b578992610907575b506001600160a01b0386163b1561090357604051630208d92960e11b81523060048201526024810193909352604483015260648201528681608481836001600160a01b0389165af180156108f8576108c9575b50600354604051630cf35bdd60e41b8082526004820184905291938892916080816024816001600160a01b038b165afa90811561089b5784916108a6575b50604051928352600483018690526080836024816001600160a01b038b165afa90811561089b576020938592610862575b506040516106c29161069c826112c2565b60028252604036878401376106b082611568565b6001600160a01b03909116905261158b565b6001600160a01b039182169052604051638eb22cdd60e01b815260048101869052602481019290925260448201849052909586916064918391165afa91821561081d57819261082a575b61073d945060018060a01b03600254169260405180968192633d9545e960e11b83526101409788956004850161159b565b0381855afa91821561081d57604095610778956101c49584956107fe575b5050865163efa84c6d60e01b815297889687956004870190611468565b6101448501526001600160a01b03166101648401526101a06101848401526101a483018290525af19081156107f35782916107b9575b602082604051908152f35b90506040813d6040116107eb575b816107d4604093836112dd565b810103126107e7576020915051386107ae565b5080fd5b3d91506107c7565b6040513d84823e3d90fd5b610815929550803d1061026f5761025f81836112dd565b92388061075b565b50604051903d90823e3d90fd5b9150506020833d60201161085a575b81610846602093836112dd565b8101031261022f578561073d93519161070c565b3d9150610839565b6106c29192506108899060803d608011610894575b61088181836112dd565b81019061152f565b50509050919061068b565b503d610877565b6040513d86823e3d90fd5b6108bf915060803d6080116108945761088181836112dd565b505090503861065a565b9095906001600160401b0381116108e457604052943861061c565b634e487b7160e01b82526041600452602482fd5b6040513d89823e3d90fd5b8880fd5b9091506020813d602011610933575b81610923602093836112dd565b81010312610903575190386105c9565b3d9150610916565b6040513d8b823e3d90fd5b81929750906020918101031261095f5735943880610578565b8680fd5b60405162461bcd60e51b81526020600482015260076024820152666f6e6c79204c5160c81b6044820152606490fd5b9092506020813d6020116109c2575b816109ae602093836112dd565b810103126109be57519138610554565b8780fd5b3d91506109a1565b6040513d8a823e3d90fd5b92506020833d602011610a0c575b816109f0602093836112dd565b810103126109be576020610a05600494611300565b9350610522565b3d91506109e3565b6020919750610a2f90823d84116102d6576102c881836112dd565b9690610503565b610a5091955060203d6020116102d6576102c881836112dd565b93386104dd565b60405162461bcd60e51b815260206004820152601060248201526f13585c9ad95d081b9bdd081d985b1a5960821b6044820152606490fd5b90506020813d602011610ac1575b81610aaa602093836112dd565b810103126109be57610abb90611371565b386104b2565b3d9150610a9d565b90506020813d602011610b06575b81610ae4602093836112dd565b810103126109035760249161048b610afd602093611300565b92505091610470565b3d9150610ad7565b90506020813d602011610b40575b81610b29602093836112dd565b810103126109be57610b3a90611300565b3861043e565b3d9150610b1c565b5034610354578060031936011261035457546040516001600160a01b039091168152602090f35b50346103545780600319360112610354576002546040516001600160a01b039091168152602090f35b503461035457610ba7366111c6565b5050604051636c3d8b8f60e01b8082526020959492936001600160a01b0393909290841691908781600481865afa9081156108f857859189918991610f6e575b50600460405180948193631192124760e11b8352165afa80156108f85785908890610f36575b610c1a92501615156114f4565b6040519081528681600481855afa90811561030e5784929188918891610efd575b506004604051809581936386c8e21d60e01b8352165afa91821561030e579087918793610eca575b50610c72836004949514611314565b60405163de40657760e01b815292839182905afa908115610276579083918691610ead575b50169160035493604051630cf35bdd60e41b9081815284600482015260809182826024818a5afa91821561093b578992610e8a575b5060405190815287600482015282816024818a5afa92831561093b579185918b9594938b94610e61575b5050604051610d2691610d08826112c2565b600282526040368884013783610d1d83611568565b9116905261158b565b91169052606460405180968193638eb22cdd60e01b835287600484015260248301528960448301525afa928315610276578593610e2c575b5090610d8991600254169260405180938192633d9545e960e11b83526101409788956004850161159b565b0381855afa92831561089b5791610dc1939186938693610e0d575b50506040518080958194630b7ecdc960e31b8352600483016114d4565b03915afa91821561023b578092610ddd575b5050604051908152f35b9091508282813d8311610e06575b610df581836112dd565b810103126103545750513880610dd3565b503d610deb565b610e24929350803d1061026f5761025f81836112dd565b903880610da4565b9092508581813d8311610e5a575b610e4481836112dd565b81010312610e56575191610d89610d5e565b8480fd5b503d610e3a565b610d269294509081610e7e92903d106108945761088181836112dd565b50509050929038610cf6565b610ea2919250833d85116108945761088181836112dd565b505090509038610ccc565b610ec49150873d89116102d6576102c881836112dd565b38610c97565b8281939294503d8311610ef6575b610ee281836112dd565b810103126103495751908690610c72610c63565b503d610ed8565b9293505081813d8311610f2f575b610f1581836112dd565b81010312610349579086610f298593611300565b38610c3b565b503d610f0b565b50508781813d8311610f67575b610f4d81836112dd565b8101031261095f5784610f62610c1a92611300565b610c0d565b503d610f43565b92505081813d8311610f9e575b610f8581836112dd565b8101031261095f5787610f988692611300565b38610be7565b503d610f7b565b50346103545780600319360112610354576001546001600160a01b039081811633819003610ffb578084549384166000805160206115c68339815191528680a36001600160a01b03199283161783551660015580f35b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b5034610354576060366003190112610354576001600160a01b03600435818116908190036103f257602435801515810361113457604435908115158203610e565761108e84865416331461122b565b1561111c57811590811591611114575b50156110d7578083549283166000805160206115c68339815191528580a36001600160a01b031991821617825560018054909116905580f35b60405162461bcd60e51b81526020600482015260156024820152744f776e61626c653a207a65726f206164647265737360581b6044820152606490fd5b90503861109e565b50600180546001600160a01b03191690911790555080f35b8380fd5b9050346107e757816003193601126107e75761115381611276565b60198152602091785553444f202d3e20574554482028556e69737761702056322960381b838301526040519283918183528351918281850152815b8381106111af57505060408094508284010152601f80199101168101030190f35b80860182015187820160400152869450810161118e565b608060031982011261022f576004356001600160a01b038116810361022f579160243591604435916001600160401b03916064359083821161022f578060238301121561022f57816004013593841161022f576024848301011161022f576024019190565b1561123257565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b604081019081106001600160401b0382111761129157604052565b634e487b7160e01b600052604160045260246000fd5b608081019081106001600160401b0382111761129157604052565b606081019081106001600160401b0382111761129157604052565b601f909101601f19168101906001600160401b0382119082101761129157604052565b51906001600160a01b038216820361022f57565b1561131b57565b60405162461bcd60e51b815260206004820152600f60248201526e1d1bdad95b881b9bdd081d985b1a59608a1b6044820152606490fd5b9081602091031261022f57516001600160a01b038116810361022f5790565b5190811515820361022f57565b80910390610140821261022f576040805192606084016001600160401b03811185821017611291578083526080821261022f576113ba816112a7565b6113c384611300565b8152602084015160808601526113da838501611300565b60a0860152606084015160c086015284526080607f1982011261022f5781908151611404816112a7565b6080850151815260a0850151602082015260c08501518382015260e08501516060820152602086015260ff19011261022f5761145d61012082519361144885611276565b6114556101008201611371565b855201611371565b602083015282015290565b60206040610120926060815160018060a01b03808251168852858201518689015284820151168488015201516060860152606083820151805160808801528481015160a08801528381015160c0880152015160e086015201518051151561010085015201511515910152565b6114e18161018093611468565b6000610160806101408401528201520190565b156114fb57565b60405162461bcd60e51b815260206004820152600c60248201526b1554d113c81b9bdd081cd95d60a21b6044820152606490fd5b919082608091031261022f578151600581101561022f579161155360208201611300565b91606061156260408401611300565b92015190565b8051156115755760200190565b634e487b7160e01b600052603260045260246000fd5b8051600110156115755760400190565b60a091949360019360c083019683526020830152600060408301526060820152826080820152015256fe8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0a2646970667358221220b16b1f4b3feab0ea5af7e7aeb6be8b03828781eede58db4bf4e68b0f9e0f250a64736f6c63430008120033", - "deployedBytecode": "0x608080604052600436101561001357600080fd5b600090813560e01c90816306fdde031461113857508063078dfbe71461103f5780634e71e0c814610fa55780635dd82b3614610b9857806385267a0114610b6f5780638da5cb5b14610b48578063b691d78c146103f6578063b6aebf3614610380578063e30c3978146103575763fef744fa1461008f57600080fd5b346103545761009d366111c6565b5050604051636c3d8b8f60e01b8152602094936001600160a01b0391908216908681600481855afa90811561030e57839188918891610319575b506004604051809481936386c8e21d60e01b8352165afa90811561030e5790879187916102dd575b509161010e6004938714611314565b60405163de40657760e01b815292839182905afa908115610276578291879187916102b0575b506064600354956040519586938492638eb22cdd60e01b845289600485015260248401528a6044840152165afa918215610276578592610281575b50600254169160405193633d9545e960e11b85526004850152602484015283604484015283606484015260016084840152600160a484015261014092838160c481865afa93841561027657918693916101ef95938794610247575b50506060848401510152604051808095819463071e388d60e51b8352600483016114d4565b03915afa91821561023b5791610209575b50604051908152f35b90508181813d8311610234575b61022081836112dd565b8101031261022f575138610200565b600080fd5b503d610216565b604051903d90823e3d90fd5b610267929450803d1061026f575b61025f81836112dd565b81019061137e565b9138806101ca565b503d610255565b6040513d87823e3d90fd5b9091508581813d83116102a9575b61029981836112dd565b8101031261022f5751903861016f565b503d61028f565b6102d09150823d84116102d6575b6102c881836112dd565b810190611352565b38610134565b503d6102be565b82819392503d8311610307575b6102f481836112dd565b8101031261022f5751869061010e6100ff565b503d6102ea565b6040513d88823e3d90fd5b92505081813d831161034d575b61033081836112dd565b8101031261034957866103438492611300565b386100d7565b8580fd5b503d610326565b80fd5b50346103545780600319360112610354576001546040516001600160a01b039091168152602090f35b5034610354576020366003190112610354576004356001600160a01b03818116918290036103f2576103b681845416331461122b565b816002549182167f1226a5d51aea8884fdf5761c8e63e98532d3eedcc0a3d56ebe98e3080fcf96dd8580a36001600160a01b0319161760025580f35b8280fd5b503461035457610405366111c6565b604051636c3d8b8f60e01b808252919591949293926001600160a01b039092169190602081600481865afa9081156109ca578891610b0e575b50604051631192124760e11b81526001600160a01b039190911690602081600481855afa90811561093b578991610ac9575b5060249160209161048b906001600160a01b031615156114f4565b6040519283809263473ec51560e11b82528760048301525afa9081156109ca578891610a8f575b5015610a575760405163de40657760e01b815293602085600481865afa9485156109ca578895610a36575b5060405163c23ea21f60e01b815295602087600481875afa96871561093b578997610a14575b5060209060046040518096819382525afa9283156109ca5788936109d5575b506040516386c8e21d60e01b815292602090849060049082906001600160a01b03165afa9283156109ca578893610992575b50610560838314611314565b6001600160a01b038616330361096357879680610946575b5050600254604051638eb22cdd60e01b81526004810183905260248101859052604481018990526001600160a01b03918216929091602090839060649082908a165afa91821561093b578992610907575b506001600160a01b0386163b1561090357604051630208d92960e11b81523060048201526024810193909352604483015260648201528681608481836001600160a01b0389165af180156108f8576108c9575b50600354604051630cf35bdd60e41b8082526004820184905291938892916080816024816001600160a01b038b165afa90811561089b5784916108a6575b50604051928352600483018690526080836024816001600160a01b038b165afa90811561089b576020938592610862575b506040516106c29161069c826112c2565b60028252604036878401376106b082611568565b6001600160a01b03909116905261158b565b6001600160a01b039182169052604051638eb22cdd60e01b815260048101869052602481019290925260448201849052909586916064918391165afa91821561081d57819261082a575b61073d945060018060a01b03600254169260405180968192633d9545e960e11b83526101409788956004850161159b565b0381855afa91821561081d57604095610778956101c49584956107fe575b5050865163efa84c6d60e01b815297889687956004870190611468565b6101448501526001600160a01b03166101648401526101a06101848401526101a483018290525af19081156107f35782916107b9575b602082604051908152f35b90506040813d6040116107eb575b816107d4604093836112dd565b810103126107e7576020915051386107ae565b5080fd5b3d91506107c7565b6040513d84823e3d90fd5b610815929550803d1061026f5761025f81836112dd565b92388061075b565b50604051903d90823e3d90fd5b9150506020833d60201161085a575b81610846602093836112dd565b8101031261022f578561073d93519161070c565b3d9150610839565b6106c29192506108899060803d608011610894575b61088181836112dd565b81019061152f565b50509050919061068b565b503d610877565b6040513d86823e3d90fd5b6108bf915060803d6080116108945761088181836112dd565b505090503861065a565b9095906001600160401b0381116108e457604052943861061c565b634e487b7160e01b82526041600452602482fd5b6040513d89823e3d90fd5b8880fd5b9091506020813d602011610933575b81610923602093836112dd565b81010312610903575190386105c9565b3d9150610916565b6040513d8b823e3d90fd5b81929750906020918101031261095f5735943880610578565b8680fd5b60405162461bcd60e51b81526020600482015260076024820152666f6e6c79204c5160c81b6044820152606490fd5b9092506020813d6020116109c2575b816109ae602093836112dd565b810103126109be57519138610554565b8780fd5b3d91506109a1565b6040513d8a823e3d90fd5b92506020833d602011610a0c575b816109f0602093836112dd565b810103126109be576020610a05600494611300565b9350610522565b3d91506109e3565b6020919750610a2f90823d84116102d6576102c881836112dd565b9690610503565b610a5091955060203d6020116102d6576102c881836112dd565b93386104dd565b60405162461bcd60e51b815260206004820152601060248201526f13585c9ad95d081b9bdd081d985b1a5960821b6044820152606490fd5b90506020813d602011610ac1575b81610aaa602093836112dd565b810103126109be57610abb90611371565b386104b2565b3d9150610a9d565b90506020813d602011610b06575b81610ae4602093836112dd565b810103126109035760249161048b610afd602093611300565b92505091610470565b3d9150610ad7565b90506020813d602011610b40575b81610b29602093836112dd565b810103126109be57610b3a90611300565b3861043e565b3d9150610b1c565b5034610354578060031936011261035457546040516001600160a01b039091168152602090f35b50346103545780600319360112610354576002546040516001600160a01b039091168152602090f35b503461035457610ba7366111c6565b5050604051636c3d8b8f60e01b8082526020959492936001600160a01b0393909290841691908781600481865afa9081156108f857859189918991610f6e575b50600460405180948193631192124760e11b8352165afa80156108f85785908890610f36575b610c1a92501615156114f4565b6040519081528681600481855afa90811561030e5784929188918891610efd575b506004604051809581936386c8e21d60e01b8352165afa91821561030e579087918793610eca575b50610c72836004949514611314565b60405163de40657760e01b815292839182905afa908115610276579083918691610ead575b50169160035493604051630cf35bdd60e41b9081815284600482015260809182826024818a5afa91821561093b578992610e8a575b5060405190815287600482015282816024818a5afa92831561093b579185918b9594938b94610e61575b5050604051610d2691610d08826112c2565b600282526040368884013783610d1d83611568565b9116905261158b565b91169052606460405180968193638eb22cdd60e01b835287600484015260248301528960448301525afa928315610276578593610e2c575b5090610d8991600254169260405180938192633d9545e960e11b83526101409788956004850161159b565b0381855afa92831561089b5791610dc1939186938693610e0d575b50506040518080958194630b7ecdc960e31b8352600483016114d4565b03915afa91821561023b578092610ddd575b5050604051908152f35b9091508282813d8311610e06575b610df581836112dd565b810103126103545750513880610dd3565b503d610deb565b610e24929350803d1061026f5761025f81836112dd565b903880610da4565b9092508581813d8311610e5a575b610e4481836112dd565b81010312610e56575191610d89610d5e565b8480fd5b503d610e3a565b610d269294509081610e7e92903d106108945761088181836112dd565b50509050929038610cf6565b610ea2919250833d85116108945761088181836112dd565b505090509038610ccc565b610ec49150873d89116102d6576102c881836112dd565b38610c97565b8281939294503d8311610ef6575b610ee281836112dd565b810103126103495751908690610c72610c63565b503d610ed8565b9293505081813d8311610f2f575b610f1581836112dd565b81010312610349579086610f298593611300565b38610c3b565b503d610f0b565b50508781813d8311610f67575b610f4d81836112dd565b8101031261095f5784610f62610c1a92611300565b610c0d565b503d610f43565b92505081813d8311610f9e575b610f8581836112dd565b8101031261095f5787610f988692611300565b38610be7565b503d610f7b565b50346103545780600319360112610354576001546001600160a01b039081811633819003610ffb578084549384166000805160206115c68339815191528680a36001600160a01b03199283161783551660015580f35b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b5034610354576060366003190112610354576001600160a01b03600435818116908190036103f257602435801515810361113457604435908115158203610e565761108e84865416331461122b565b1561111c57811590811591611114575b50156110d7578083549283166000805160206115c68339815191528580a36001600160a01b031991821617825560018054909116905580f35b60405162461bcd60e51b81526020600482015260156024820152744f776e61626c653a207a65726f206164647265737360581b6044820152606490fd5b90503861109e565b50600180546001600160a01b03191690911790555080f35b8380fd5b9050346107e757816003193601126107e75761115381611276565b60198152602091785553444f202d3e20574554482028556e69737761702056322960381b838301526040519283918183528351918281850152815b8381106111af57505060408094508284010152601f80199101168101030190f35b80860182015187820160400152869450810161118e565b608060031982011261022f576004356001600160a01b038116810361022f579160243591604435916001600160401b03916064359083821161022f578060238301121561022f57816004013593841161022f576024848301011161022f576024019190565b1561123257565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b604081019081106001600160401b0382111761129157604052565b634e487b7160e01b600052604160045260246000fd5b608081019081106001600160401b0382111761129157604052565b606081019081106001600160401b0382111761129157604052565b601f909101601f19168101906001600160401b0382119082101761129157604052565b51906001600160a01b038216820361022f57565b1561131b57565b60405162461bcd60e51b815260206004820152600f60248201526e1d1bdad95b881b9bdd081d985b1a59608a1b6044820152606490fd5b9081602091031261022f57516001600160a01b038116810361022f5790565b5190811515820361022f57565b80910390610140821261022f576040805192606084016001600160401b03811185821017611291578083526080821261022f576113ba816112a7565b6113c384611300565b8152602084015160808601526113da838501611300565b60a0860152606084015160c086015284526080607f1982011261022f5781908151611404816112a7565b6080850151815260a0850151602082015260c08501518382015260e08501516060820152602086015260ff19011261022f5761145d61012082519361144885611276565b6114556101008201611371565b855201611371565b602083015282015290565b60206040610120926060815160018060a01b03808251168852858201518689015284820151168488015201516060860152606083820151805160808801528481015160a08801528381015160c0880152015160e086015201518051151561010085015201511515910152565b6114e18161018093611468565b6000610160806101408401528201520190565b156114fb57565b60405162461bcd60e51b815260206004820152600c60248201526b1554d113c81b9bdd081cd95d60a21b6044820152606490fd5b919082608091031261022f578151600581101561022f579161155360208201611300565b91606061156260408401611300565b92015190565b8051156115755760200190565b634e487b7160e01b600052603260045260246000fd5b8051600110156115755760400190565b60a091949360019360c083019683526020830152600060408301526060820152826080820152015256fe8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0a2646970667358221220b16b1f4b3feab0ea5af7e7aeb6be8b03828781eede58db4bf4e68b0f9e0f250a64736f6c63430008120033", + "bytecode": "0x6080346100ab57601f6116e238819003918201601f19168301916001600160401b038311848410176100b05780849260409485528339810103126100ab5780516001600160a01b03811691908290036100ab576020015160008054336001600160a01b03199182168117835560405194927f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a3600254161760025560035561161b90816100c78239f35b600080fd5b634e487b7160e01b600052604160045260246000fdfe608080604052600436101561001357600080fd5b600090813560e01c90816306fdde031461113857508063078dfbe71461103f5780634e71e0c814610fa55780635dd82b3614610b9857806385267a0114610b6f5780638da5cb5b14610b48578063b691d78c146103f6578063b6aebf3614610380578063e30c3978146103575763fef744fa1461008f57600080fd5b346103545761009d366111c6565b5050604051636c3d8b8f60e01b8152602094936001600160a01b0391908216908681600481855afa90811561030e57839188918891610319575b506004604051809481936386c8e21d60e01b8352165afa90811561030e5790879187916102dd575b509161010e6004938714611314565b60405163de40657760e01b815292839182905afa908115610276578291879187916102b0575b506064600354956040519586938492638eb22cdd60e01b845289600485015260248401528a6044840152165afa918215610276578592610281575b50600254169160405193633d9545e960e11b85526004850152602484015283604484015283606484015260016084840152600160a484015261014092838160c481865afa93841561027657918693916101ef95938794610247575b50506060848401510152604051808095819463071e388d60e51b8352600483016114d4565b03915afa91821561023b5791610209575b50604051908152f35b90508181813d8311610234575b61022081836112dd565b8101031261022f575138610200565b600080fd5b503d610216565b604051903d90823e3d90fd5b610267929450803d1061026f575b61025f81836112dd565b81019061137e565b9138806101ca565b503d610255565b6040513d87823e3d90fd5b9091508581813d83116102a9575b61029981836112dd565b8101031261022f5751903861016f565b503d61028f565b6102d09150823d84116102d6575b6102c881836112dd565b810190611352565b38610134565b503d6102be565b82819392503d8311610307575b6102f481836112dd565b8101031261022f5751869061010e6100ff565b503d6102ea565b6040513d88823e3d90fd5b92505081813d831161034d575b61033081836112dd565b8101031261034957866103438492611300565b386100d7565b8580fd5b503d610326565b80fd5b50346103545780600319360112610354576001546040516001600160a01b039091168152602090f35b5034610354576020366003190112610354576004356001600160a01b03818116918290036103f2576103b681845416331461122b565b816002549182167f1226a5d51aea8884fdf5761c8e63e98532d3eedcc0a3d56ebe98e3080fcf96dd8580a36001600160a01b0319161760025580f35b8280fd5b503461035457610405366111c6565b604051636c3d8b8f60e01b808252919591949293926001600160a01b039092169190602081600481865afa9081156109ca578891610b0e575b50604051631192124760e11b81526001600160a01b039190911690602081600481855afa90811561093b578991610ac9575b5060249160209161048b906001600160a01b031615156114f4565b6040519283809263473ec51560e11b82528760048301525afa9081156109ca578891610a8f575b5015610a575760405163de40657760e01b815293602085600481865afa9485156109ca578895610a36575b5060405163c23ea21f60e01b815295602087600481875afa96871561093b578997610a14575b5060209060046040518096819382525afa9283156109ca5788936109d5575b506040516386c8e21d60e01b815292602090849060049082906001600160a01b03165afa9283156109ca578893610992575b50610560838314611314565b6001600160a01b038616330361096357879680610946575b5050600254604051638eb22cdd60e01b81526004810183905260248101859052604481018990526001600160a01b03918216929091602090839060649082908a165afa91821561093b578992610907575b506001600160a01b0386163b1561090357604051630208d92960e11b81523060048201526024810193909352604483015260648201528681608481836001600160a01b0389165af180156108f8576108c9575b50600354604051630cf35bdd60e41b8082526004820184905291938892916080816024816001600160a01b038b165afa90811561089b5784916108a6575b50604051928352600483018690526080836024816001600160a01b038b165afa90811561089b576020938592610862575b506040516106c29161069c826112c2565b60028252604036878401376106b082611568565b6001600160a01b03909116905261158b565b6001600160a01b039182169052604051638eb22cdd60e01b815260048101869052602481019290925260448201849052909586916064918391165afa91821561081d57819261082a575b61073d945060018060a01b03600254169260405180968192633d9545e960e11b83526101409788956004850161159b565b0381855afa91821561081d57604095610778956101c49584956107fe575b5050865163efa84c6d60e01b815297889687956004870190611468565b6101448501526001600160a01b03166101648401526101a06101848401526101a483018290525af19081156107f35782916107b9575b602082604051908152f35b90506040813d6040116107eb575b816107d4604093836112dd565b810103126107e7576020915051386107ae565b5080fd5b3d91506107c7565b6040513d84823e3d90fd5b610815929550803d1061026f5761025f81836112dd565b92388061075b565b50604051903d90823e3d90fd5b9150506020833d60201161085a575b81610846602093836112dd565b8101031261022f578561073d93519161070c565b3d9150610839565b6106c29192506108899060803d608011610894575b61088181836112dd565b81019061152f565b50509050919061068b565b503d610877565b6040513d86823e3d90fd5b6108bf915060803d6080116108945761088181836112dd565b505090503861065a565b9095906001600160401b0381116108e457604052943861061c565b634e487b7160e01b82526041600452602482fd5b6040513d89823e3d90fd5b8880fd5b9091506020813d602011610933575b81610923602093836112dd565b81010312610903575190386105c9565b3d9150610916565b6040513d8b823e3d90fd5b81929750906020918101031261095f5735943880610578565b8680fd5b60405162461bcd60e51b81526020600482015260076024820152666f6e6c79204c5160c81b6044820152606490fd5b9092506020813d6020116109c2575b816109ae602093836112dd565b810103126109be57519138610554565b8780fd5b3d91506109a1565b6040513d8a823e3d90fd5b92506020833d602011610a0c575b816109f0602093836112dd565b810103126109be576020610a05600494611300565b9350610522565b3d91506109e3565b6020919750610a2f90823d84116102d6576102c881836112dd565b9690610503565b610a5091955060203d6020116102d6576102c881836112dd565b93386104dd565b60405162461bcd60e51b815260206004820152601060248201526f13585c9ad95d081b9bdd081d985b1a5960821b6044820152606490fd5b90506020813d602011610ac1575b81610aaa602093836112dd565b810103126109be57610abb90611371565b386104b2565b3d9150610a9d565b90506020813d602011610b06575b81610ae4602093836112dd565b810103126109035760249161048b610afd602093611300565b92505091610470565b3d9150610ad7565b90506020813d602011610b40575b81610b29602093836112dd565b810103126109be57610b3a90611300565b3861043e565b3d9150610b1c565b5034610354578060031936011261035457546040516001600160a01b039091168152602090f35b50346103545780600319360112610354576002546040516001600160a01b039091168152602090f35b503461035457610ba7366111c6565b5050604051636c3d8b8f60e01b8082526020959492936001600160a01b0393909290841691908781600481865afa9081156108f857859189918991610f6e575b50600460405180948193631192124760e11b8352165afa80156108f85785908890610f36575b610c1a92501615156114f4565b6040519081528681600481855afa90811561030e5784929188918891610efd575b506004604051809581936386c8e21d60e01b8352165afa91821561030e579087918793610eca575b50610c72836004949514611314565b60405163de40657760e01b815292839182905afa908115610276579083918691610ead575b50169160035493604051630cf35bdd60e41b9081815284600482015260809182826024818a5afa91821561093b578992610e8a575b5060405190815287600482015282816024818a5afa92831561093b579185918b9594938b94610e61575b5050604051610d2691610d08826112c2565b600282526040368884013783610d1d83611568565b9116905261158b565b91169052606460405180968193638eb22cdd60e01b835287600484015260248301528960448301525afa928315610276578593610e2c575b5090610d8991600254169260405180938192633d9545e960e11b83526101409788956004850161159b565b0381855afa92831561089b5791610dc1939186938693610e0d575b50506040518080958194630b7ecdc960e31b8352600483016114d4565b03915afa91821561023b578092610ddd575b5050604051908152f35b9091508282813d8311610e06575b610df581836112dd565b810103126103545750513880610dd3565b503d610deb565b610e24929350803d1061026f5761025f81836112dd565b903880610da4565b9092508581813d8311610e5a575b610e4481836112dd565b81010312610e56575191610d89610d5e565b8480fd5b503d610e3a565b610d269294509081610e7e92903d106108945761088181836112dd565b50509050929038610cf6565b610ea2919250833d85116108945761088181836112dd565b505090509038610ccc565b610ec49150873d89116102d6576102c881836112dd565b38610c97565b8281939294503d8311610ef6575b610ee281836112dd565b810103126103495751908690610c72610c63565b503d610ed8565b9293505081813d8311610f2f575b610f1581836112dd565b81010312610349579086610f298593611300565b38610c3b565b503d610f0b565b50508781813d8311610f67575b610f4d81836112dd565b8101031261095f5784610f62610c1a92611300565b610c0d565b503d610f43565b92505081813d8311610f9e575b610f8581836112dd565b8101031261095f5787610f988692611300565b38610be7565b503d610f7b565b50346103545780600319360112610354576001546001600160a01b039081811633819003610ffb578084549384166000805160206115c68339815191528680a36001600160a01b03199283161783551660015580f35b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b5034610354576060366003190112610354576001600160a01b03600435818116908190036103f257602435801515810361113457604435908115158203610e565761108e84865416331461122b565b1561111c57811590811591611114575b50156110d7578083549283166000805160206115c68339815191528580a36001600160a01b031991821617825560018054909116905580f35b60405162461bcd60e51b81526020600482015260156024820152744f776e61626c653a207a65726f206164647265737360581b6044820152606490fd5b90503861109e565b50600180546001600160a01b03191690911790555080f35b8380fd5b9050346107e757816003193601126107e75761115381611276565b60198152602091785553444f202d3e20574554482028556e69737761702056322960381b838301526040519283918183528351918281850152815b8381106111af57505060408094508284010152601f80199101168101030190f35b80860182015187820160400152869450810161118e565b608060031982011261022f576004356001600160a01b038116810361022f579160243591604435916001600160401b03916064359083821161022f578060238301121561022f57816004013593841161022f576024848301011161022f576024019190565b1561123257565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b604081019081106001600160401b0382111761129157604052565b634e487b7160e01b600052604160045260246000fd5b608081019081106001600160401b0382111761129157604052565b606081019081106001600160401b0382111761129157604052565b601f909101601f19168101906001600160401b0382119082101761129157604052565b51906001600160a01b038216820361022f57565b1561131b57565b60405162461bcd60e51b815260206004820152600f60248201526e1d1bdad95b881b9bdd081d985b1a59608a1b6044820152606490fd5b9081602091031261022f57516001600160a01b038116810361022f5790565b5190811515820361022f57565b80910390610140821261022f576040805192606084016001600160401b03811185821017611291578083526080821261022f576113ba816112a7565b6113c384611300565b8152602084015160808601526113da838501611300565b60a0860152606084015160c086015284526080607f1982011261022f5781908151611404816112a7565b6080850151815260a0850151602082015260c08501518382015260e08501516060820152602086015260ff19011261022f5761145d61012082519361144885611276565b6114556101008201611371565b855201611371565b602083015282015290565b60206040610120926060815160018060a01b03808251168852858201518689015284820151168488015201516060860152606083820151805160808801528481015160a08801528381015160c0880152015160e086015201518051151561010085015201511515910152565b6114e18161018093611468565b6000610160806101408401528201520190565b156114fb57565b60405162461bcd60e51b815260206004820152600c60248201526b1554d113c81b9bdd081cd95d60a21b6044820152606490fd5b919082608091031261022f578151600581101561022f579161155360208201611300565b91606061156260408401611300565b92015190565b8051156115755760200190565b634e487b7160e01b600052603260045260246000fd5b8051600110156115755760400190565b60a091949360019360c083019683526020830152600060408301526060820152826080820152015256fe8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0a2646970667358221220d81219b351627576ddc3976e4b1312d18eac13ddac09a8ba43c451a3b7b8be0564736f6c63430008120033", + "deployedBytecode": "0x608080604052600436101561001357600080fd5b600090813560e01c90816306fdde031461113857508063078dfbe71461103f5780634e71e0c814610fa55780635dd82b3614610b9857806385267a0114610b6f5780638da5cb5b14610b48578063b691d78c146103f6578063b6aebf3614610380578063e30c3978146103575763fef744fa1461008f57600080fd5b346103545761009d366111c6565b5050604051636c3d8b8f60e01b8152602094936001600160a01b0391908216908681600481855afa90811561030e57839188918891610319575b506004604051809481936386c8e21d60e01b8352165afa90811561030e5790879187916102dd575b509161010e6004938714611314565b60405163de40657760e01b815292839182905afa908115610276578291879187916102b0575b506064600354956040519586938492638eb22cdd60e01b845289600485015260248401528a6044840152165afa918215610276578592610281575b50600254169160405193633d9545e960e11b85526004850152602484015283604484015283606484015260016084840152600160a484015261014092838160c481865afa93841561027657918693916101ef95938794610247575b50506060848401510152604051808095819463071e388d60e51b8352600483016114d4565b03915afa91821561023b5791610209575b50604051908152f35b90508181813d8311610234575b61022081836112dd565b8101031261022f575138610200565b600080fd5b503d610216565b604051903d90823e3d90fd5b610267929450803d1061026f575b61025f81836112dd565b81019061137e565b9138806101ca565b503d610255565b6040513d87823e3d90fd5b9091508581813d83116102a9575b61029981836112dd565b8101031261022f5751903861016f565b503d61028f565b6102d09150823d84116102d6575b6102c881836112dd565b810190611352565b38610134565b503d6102be565b82819392503d8311610307575b6102f481836112dd565b8101031261022f5751869061010e6100ff565b503d6102ea565b6040513d88823e3d90fd5b92505081813d831161034d575b61033081836112dd565b8101031261034957866103438492611300565b386100d7565b8580fd5b503d610326565b80fd5b50346103545780600319360112610354576001546040516001600160a01b039091168152602090f35b5034610354576020366003190112610354576004356001600160a01b03818116918290036103f2576103b681845416331461122b565b816002549182167f1226a5d51aea8884fdf5761c8e63e98532d3eedcc0a3d56ebe98e3080fcf96dd8580a36001600160a01b0319161760025580f35b8280fd5b503461035457610405366111c6565b604051636c3d8b8f60e01b808252919591949293926001600160a01b039092169190602081600481865afa9081156109ca578891610b0e575b50604051631192124760e11b81526001600160a01b039190911690602081600481855afa90811561093b578991610ac9575b5060249160209161048b906001600160a01b031615156114f4565b6040519283809263473ec51560e11b82528760048301525afa9081156109ca578891610a8f575b5015610a575760405163de40657760e01b815293602085600481865afa9485156109ca578895610a36575b5060405163c23ea21f60e01b815295602087600481875afa96871561093b578997610a14575b5060209060046040518096819382525afa9283156109ca5788936109d5575b506040516386c8e21d60e01b815292602090849060049082906001600160a01b03165afa9283156109ca578893610992575b50610560838314611314565b6001600160a01b038616330361096357879680610946575b5050600254604051638eb22cdd60e01b81526004810183905260248101859052604481018990526001600160a01b03918216929091602090839060649082908a165afa91821561093b578992610907575b506001600160a01b0386163b1561090357604051630208d92960e11b81523060048201526024810193909352604483015260648201528681608481836001600160a01b0389165af180156108f8576108c9575b50600354604051630cf35bdd60e41b8082526004820184905291938892916080816024816001600160a01b038b165afa90811561089b5784916108a6575b50604051928352600483018690526080836024816001600160a01b038b165afa90811561089b576020938592610862575b506040516106c29161069c826112c2565b60028252604036878401376106b082611568565b6001600160a01b03909116905261158b565b6001600160a01b039182169052604051638eb22cdd60e01b815260048101869052602481019290925260448201849052909586916064918391165afa91821561081d57819261082a575b61073d945060018060a01b03600254169260405180968192633d9545e960e11b83526101409788956004850161159b565b0381855afa91821561081d57604095610778956101c49584956107fe575b5050865163efa84c6d60e01b815297889687956004870190611468565b6101448501526001600160a01b03166101648401526101a06101848401526101a483018290525af19081156107f35782916107b9575b602082604051908152f35b90506040813d6040116107eb575b816107d4604093836112dd565b810103126107e7576020915051386107ae565b5080fd5b3d91506107c7565b6040513d84823e3d90fd5b610815929550803d1061026f5761025f81836112dd565b92388061075b565b50604051903d90823e3d90fd5b9150506020833d60201161085a575b81610846602093836112dd565b8101031261022f578561073d93519161070c565b3d9150610839565b6106c29192506108899060803d608011610894575b61088181836112dd565b81019061152f565b50509050919061068b565b503d610877565b6040513d86823e3d90fd5b6108bf915060803d6080116108945761088181836112dd565b505090503861065a565b9095906001600160401b0381116108e457604052943861061c565b634e487b7160e01b82526041600452602482fd5b6040513d89823e3d90fd5b8880fd5b9091506020813d602011610933575b81610923602093836112dd565b81010312610903575190386105c9565b3d9150610916565b6040513d8b823e3d90fd5b81929750906020918101031261095f5735943880610578565b8680fd5b60405162461bcd60e51b81526020600482015260076024820152666f6e6c79204c5160c81b6044820152606490fd5b9092506020813d6020116109c2575b816109ae602093836112dd565b810103126109be57519138610554565b8780fd5b3d91506109a1565b6040513d8a823e3d90fd5b92506020833d602011610a0c575b816109f0602093836112dd565b810103126109be576020610a05600494611300565b9350610522565b3d91506109e3565b6020919750610a2f90823d84116102d6576102c881836112dd565b9690610503565b610a5091955060203d6020116102d6576102c881836112dd565b93386104dd565b60405162461bcd60e51b815260206004820152601060248201526f13585c9ad95d081b9bdd081d985b1a5960821b6044820152606490fd5b90506020813d602011610ac1575b81610aaa602093836112dd565b810103126109be57610abb90611371565b386104b2565b3d9150610a9d565b90506020813d602011610b06575b81610ae4602093836112dd565b810103126109035760249161048b610afd602093611300565b92505091610470565b3d9150610ad7565b90506020813d602011610b40575b81610b29602093836112dd565b810103126109be57610b3a90611300565b3861043e565b3d9150610b1c565b5034610354578060031936011261035457546040516001600160a01b039091168152602090f35b50346103545780600319360112610354576002546040516001600160a01b039091168152602090f35b503461035457610ba7366111c6565b5050604051636c3d8b8f60e01b8082526020959492936001600160a01b0393909290841691908781600481865afa9081156108f857859189918991610f6e575b50600460405180948193631192124760e11b8352165afa80156108f85785908890610f36575b610c1a92501615156114f4565b6040519081528681600481855afa90811561030e5784929188918891610efd575b506004604051809581936386c8e21d60e01b8352165afa91821561030e579087918793610eca575b50610c72836004949514611314565b60405163de40657760e01b815292839182905afa908115610276579083918691610ead575b50169160035493604051630cf35bdd60e41b9081815284600482015260809182826024818a5afa91821561093b578992610e8a575b5060405190815287600482015282816024818a5afa92831561093b579185918b9594938b94610e61575b5050604051610d2691610d08826112c2565b600282526040368884013783610d1d83611568565b9116905261158b565b91169052606460405180968193638eb22cdd60e01b835287600484015260248301528960448301525afa928315610276578593610e2c575b5090610d8991600254169260405180938192633d9545e960e11b83526101409788956004850161159b565b0381855afa92831561089b5791610dc1939186938693610e0d575b50506040518080958194630b7ecdc960e31b8352600483016114d4565b03915afa91821561023b578092610ddd575b5050604051908152f35b9091508282813d8311610e06575b610df581836112dd565b810103126103545750513880610dd3565b503d610deb565b610e24929350803d1061026f5761025f81836112dd565b903880610da4565b9092508581813d8311610e5a575b610e4481836112dd565b81010312610e56575191610d89610d5e565b8480fd5b503d610e3a565b610d269294509081610e7e92903d106108945761088181836112dd565b50509050929038610cf6565b610ea2919250833d85116108945761088181836112dd565b505090509038610ccc565b610ec49150873d89116102d6576102c881836112dd565b38610c97565b8281939294503d8311610ef6575b610ee281836112dd565b810103126103495751908690610c72610c63565b503d610ed8565b9293505081813d8311610f2f575b610f1581836112dd565b81010312610349579086610f298593611300565b38610c3b565b503d610f0b565b50508781813d8311610f67575b610f4d81836112dd565b8101031261095f5784610f62610c1a92611300565b610c0d565b503d610f43565b92505081813d8311610f9e575b610f8581836112dd565b8101031261095f5787610f988692611300565b38610be7565b503d610f7b565b50346103545780600319360112610354576001546001600160a01b039081811633819003610ffb578084549384166000805160206115c68339815191528680a36001600160a01b03199283161783551660015580f35b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b5034610354576060366003190112610354576001600160a01b03600435818116908190036103f257602435801515810361113457604435908115158203610e565761108e84865416331461122b565b1561111c57811590811591611114575b50156110d7578083549283166000805160206115c68339815191528580a36001600160a01b031991821617825560018054909116905580f35b60405162461bcd60e51b81526020600482015260156024820152744f776e61626c653a207a65726f206164647265737360581b6044820152606490fd5b90503861109e565b50600180546001600160a01b03191690911790555080f35b8380fd5b9050346107e757816003193601126107e75761115381611276565b60198152602091785553444f202d3e20574554482028556e69737761702056322960381b838301526040519283918183528351918281850152815b8381106111af57505060408094508284010152601f80199101168101030190f35b80860182015187820160400152869450810161118e565b608060031982011261022f576004356001600160a01b038116810361022f579160243591604435916001600160401b03916064359083821161022f578060238301121561022f57816004013593841161022f576024848301011161022f576024019190565b1561123257565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b604081019081106001600160401b0382111761129157604052565b634e487b7160e01b600052604160045260246000fd5b608081019081106001600160401b0382111761129157604052565b606081019081106001600160401b0382111761129157604052565b601f909101601f19168101906001600160401b0382119082101761129157604052565b51906001600160a01b038216820361022f57565b1561131b57565b60405162461bcd60e51b815260206004820152600f60248201526e1d1bdad95b881b9bdd081d985b1a59608a1b6044820152606490fd5b9081602091031261022f57516001600160a01b038116810361022f5790565b5190811515820361022f57565b80910390610140821261022f576040805192606084016001600160401b03811185821017611291578083526080821261022f576113ba816112a7565b6113c384611300565b8152602084015160808601526113da838501611300565b60a0860152606084015160c086015284526080607f1982011261022f5781908151611404816112a7565b6080850151815260a0850151602082015260c08501518382015260e08501516060820152602086015260ff19011261022f5761145d61012082519361144885611276565b6114556101008201611371565b855201611371565b602083015282015290565b60206040610120926060815160018060a01b03808251168852858201518689015284820151168488015201516060860152606083820151805160808801528481015160a08801528381015160c0880152015160e086015201518051151561010085015201511515910152565b6114e18161018093611468565b6000610160806101408401528201520190565b156114fb57565b60405162461bcd60e51b815260206004820152600c60248201526b1554d113c81b9bdd081cd95d60a21b6044820152606490fd5b919082608091031261022f578151600581101561022f579161155360208201611300565b91606061156260408401611300565b92015190565b8051156115755760200190565b634e487b7160e01b600052603260045260246000fd5b8051600110156115755760400190565b60a091949360019360c083019683526020830152600060408301526060820152826080820152015256fe8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0a2646970667358221220d81219b351627576ddc3976e4b1312d18eac13ddac09a8ba43c451a3b7b8be0564736f6c63430008120033", "linkReferences": {}, "deployedLinkReferences": {} } diff --git a/src/artifacts/tapioca-periphery/UniswapV2Swapper.json b/src/artifacts/tapioca-periphery/UniswapV2Swapper.json index b310162b..eb155e81 100644 --- a/src/artifacts/tapioca-periphery/UniswapV2Swapper.json +++ b/src/artifacts/tapioca-periphery/UniswapV2Swapper.json @@ -674,8 +674,8 @@ "type": "function" } ], - "bytecode": "0x60e0346200015457601f62001af938819003918201601f19168301916001600160401b03831184841017620001595780849260609460405283398101031262000154576200004d816200016f565b60406200005d602084016200016f565b920151916001600160a01b038084169290838503620001545780620000e1926000543360018060a01b0319821617600055823391167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a3600180551692620000ca84151562000184565b1692620000d984151562000184565b151562000184565b60805260a05260c0526040516119279081620001d2823960805181818161027f015281816107c9015281816108dc0152610afb015260a05181610898015260c05181818161024a015281816104d50152818161057b0152818161061c01528181610753015281816108540152610aa20152f35b600080fd5b634e487b7160e01b600052604160045260246000fd5b51906001600160a01b03821682036200015457565b156200018c57565b60405162461bcd60e51b815260206004820152601a60248201527f537761707065723a2061646472657373206e6f742076616c69640000000000006044820152606490fdfe6040608081526004908136101561001557600080fd5b600091823560e01c80631a16321014610bf15780633fa2ef5e14610b5d5780635bf66e4814610a8a578063715018a614610a3f5780637b2a8bd2146109335780638da5cb5b1461090b578063c31c9c07146108c7578063c45a015514610883578063de4065771461083f578063e3c711a01461073b578063efa84c6d146101585763f2fde38b146100a557600080fd5b34610154576020366003190112610154576100be610c5e565b906100c7610d77565b6001600160a01b0391821692831561010257505082546001600160a01b0319811683178455166000805160206118d28339815191528380a380f35b906020608492519162461bcd60e51b8352820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152fd5b8280fd5b50829036600319016101a0811261015457610140136107375761016435916001600160a01b03908184168085036107375761018435936001600160401b03851161015457366023860112156101545784810135936101b585610d5c565b956101c289519788610d39565b8587526024953687828401011161073357869392918187926020998a9301838c0137890101526002600154146106f25760026001558690859783358281168082036105ff57158015906106dd575b15610603579060443583811681036105ff5761022d905b836112a8565b9a6084358981158015816105f4575b15610488575050945b6102777f00000000000000000000000000000000000000000000000000000000000000009660a435908a35878a611509565b926102a684877f00000000000000000000000000000000000000000000000000000000000000001680976113c3565b511561047a575b8a8180518101031261047657928992838f8f96908b958f8a908d940151916102d36112f8565b1561046c575061030d30935b519a8b998a9889976338ed173960e01b8952880152610144359087015260a0604487015260a4860190610f27565b92166064840152608483015203925af19081156104625790610336918891610440575b50610f64565b51986103406112f8565b610357575b8a8a8a8a600180558351928352820152f35b8091929394959697985051600019810190811161042e57815181101561041c57926103978a848d9897958c8c9660a49960051b01015116931680936113c3565b85519687958694634d4d7cbd60e11b865260643590860152309085015260448401528960648401528160848401525af191821561041157916103e2575b509084808080808080610345565b6104029150843d861161040a575b6103fa8183610d39565b810190611308565b9050846103d4565b503d6103f0565b8551903d90823e3d90fd5b634e487b7160e01b8852603285528588fd5b634e487b7160e01b8852601185528588fd5b61045c91503d808a833e6104548183610d39565b810190610eac565b8c610330565b8b513d89823e3d90fd5b61030d90936102df565b8980fd5b50610483610e71565b6102ad565b9096918935918261054a575b5050508d60643590816104a9575b5050610245565b60c43561054357519063442c159960e01b82528882015260e435898201528a60448201528b81606481897f0000000000000000000000000000000000000000000000000000000000000000165afa801561053857908c9161050f575b50505b8e8e6104a2565b813d8311610531575b6105228183610d39565b81010312610476578a8f610505565b503d610518565b508e513d8c823e3d90fd5b5050610508565b9297509091156105ed57508d519063442c159960e01b82528782015260a435888201528960448201528a81606481887f0000000000000000000000000000000000000000000000000000000000000000165afa9081156105e3578a916105b6575b505b948e8080610494565b90508a81813d83116105dc575b6105cd8183610d39565b8101031261047657518e6105ab565b503d6105c3565b8e513d8c823e3d90fd5b90506105ad565b5060c435151561023c565b8880fd5b508a51630cf35bdd60e41b8082528635868301526080917f00000000000000000000000000000000000000000000000000000000000000008516919083818a81865afa90811561053857918f9594939284928b918e916106bc575b5096518094819382526064358c8301525afa9182156105e3579061022d92918b9261068b575b5050610227565b6106aa9250803d106106b5575b6106a28183610d39565b810190610fbf565b505090508e80610684565b503d610698565b6106d39150843d86116106b5576106a28183610d39565b505090503861065e565b506044358381168091036105ff571515610210565b50601f606492868a519362461bcd60e51b85528401528201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152fd5b8580fd5b5080fd5b5034610154578261074b36610c97565b50509161079a7f000000000000000000000000000000000000000000000000000000000000000061078561077f8287610ff8565b906112a8565b946060810135906080602082013591016110f8565b85516307c0329d60e21b815292830152506024810184905291829081906107c5906044830190610f27565b03817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa9081156108335790610810918460209592610818575b5050610f8a565b519051908152f35b61082c92503d8091833e6104548183610d39565b3880610809565b505051903d90823e3d90fd5b505034610737578160031936011261073757517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b505034610737578160031936011261073757517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b505034610737578160031936011261073757517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b505034610737578160031936011261073757905490516001600160a01b039091168152602090f35b509190346107375760c036600319011261073757610a3b92610953610c79565b9061095c610c88565b93610965610e2d565b5061096e610e2d565b94610977610dcf565b926044358452606435602085015261098d610dcf565b928084528684015235602083015260243560608301526109ab610e04565b93151584521515602084015284526020840152818301525191829182919091610120602060406101408401956060815160018060a01b03808251168852858201518689015284820151168488015201516060860152606083820151805160808801528481015160a08801528381015160c0880152015160e086015201518051151561010085015201511515910152565b0390f35b8334610a875780600319360112610a8757610a58610d77565b80546001600160a01b03198116825581906001600160a01b03166000805160206118d28339815191528280a380f35b80fd5b50346101545782610a9a36610c97565b505091610ace7f000000000000000000000000000000000000000000000000000000000000000061078561077f8287610ff8565b5090610af78551948593849363d06ca61f60e01b85528401528660248401526044830190610f27565b03817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa9081156108335790610810918460209592610b42575b5050610f64565b610b5692503d8091833e6104548183610d39565b3880610b3b565b828434610a875760c0366003190112610a8757610b78610c5e565b916024356001600160a01b03818116939184900361073757610a3b94610b9c610c79565b92610ba5610c88565b90610bae610e2d565b50610bb7610e2d565b96610bc0610dcf565b9460443586526064356020870152610bd6610dcf565b941684528684015280602084015260608301526109ab610e04565b505034610737578160031936011261073757610a3b90610c0f610e71565b90519182916020835260208301905b919082519283825260005b848110610c4a575050826000602080949584010152601f8019910116010190565b602081830181015184830182015201610c29565b600435906001600160a01b0382168203610c7457565b600080fd5b608435908115158203610c7457565b60a435908115158203610c7457565b60031981016101608112610c745761014013610c74576004916001600160401b03916101443590838211610c745780602383011215610c745781850135938411610c745760248483010111610c74576024019190565b604081019081106001600160401b03821117610d0857604052565b634e487b7160e01b600052604160045260246000fd5b608081019081106001600160401b03821117610d0857604052565b601f909101601f19168101906001600160401b03821190821017610d0857604052565b6001600160401b038111610d0857601f01601f191660200190565b6000546001600160a01b03163303610d8b57565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b60405190608082016001600160401b03811183821017610d085760405260006060838281528260208201528260408201520152565b60408051919082016001600160401b03811183821017610d085760405260006020838281520152565b60405190606082016001600160401b03811183821017610d085760405281610e53610dcf565b8152610e5d610dcf565b60208201526040610e6c610e04565b910152565b610e104201804211610e965760405190602082015260208152610e9381610ced565b90565b634e487b7160e01b600052601160045260246000fd5b906020908183820312610c745782516001600160401b0393848211610c74570181601f82011215610c74578051938411610d08578360051b9060405194610ef585840187610d39565b85528380860192820101928311610c74578301905b828210610f18575050505090565b81518152908301908301610f0a565b90815180825260208080930193019160005b828110610f47575050505090565b83516001600160a01b031685529381019392810192600101610f39565b805160011015610f745760400190565b634e487b7160e01b600052603260045260246000fd5b805115610f745760200190565b356001600160a01b0381168103610c745790565b51906001600160a01b0382168203610c7457565b9190826080910312610c745781516005811015610c745791610fe360208201610fab565b916060610ff260408401610fab565b92015190565b91906001600160a01b03908161100d85610f97565b16158015906110e2575b15611033575050610e93604061102c84610f97565b9301610f97565b1691604051630cf35bdd60e41b90818152602083013560048201526080928382602481895afa9182156110b55760609385936024926000916110c1575b509760405195869485938452013560048301525afa9182156110b55760009261109857505090565b6110ae9250803d106106b5576106a28183610d39565b5050905090565b6040513d6000823e3d90fd5b6110d89150853d87116106b5576106a28183610d39565b5050905038611070565b50816110f060408601610f97565b161515611017565b93928435926000928392839291861580158161129b575b15611124575050505050505060409092013590565b819293949699959897916111f9575b50505081611142575b50505050565b909192939450604083013580156000146111ef575060405163442c159960e01b8152600481019290925260609092013560248201526044810183905290602090829060649082906001600160a01b03165afa9182156111e35780926111af575b50505b903880808061113c565b9091506020823d82116111db575b816111ca60209383610d39565b81010312610a8757505138806111a2565b3d91506111bd565b604051903d90823e3d90fd5b93505050506111a5565b929850909115611294575060405163442c159960e01b81526004810191909152602083810135602483015260448201859052816064816001600160a01b038b165afa908115611289578491611254575b505b95388080611133565b90506020813d8211611281575b8161126e60209383610d39565b8101031261127d575138611249565b8380fd5b3d9150611261565b6040513d86823e3d90fd5b905061124b565b5060408a0135151561110f565b604051929190606084016001600160401b03811185821017610d08576040526002845260403660208601376112f2846112e081610f8a565b6001600160a01b039384169052610f64565b91169052565b610124358015158103610c745790565b9190826040910312610c74576020825192015190565b3d15611349573d9061132f82610d5c565b9161133d6040519384610d39565b82523d6000602084013e565b606090565b90816020910312610c7457518015158103610c745790565b1561136d57565b60405162461bcd60e51b815260206004820152602860248201527f42617365537761707065723a3a73616665417070726f76653a20617070726f76604482015267194819985a5b195960c21b6064820152608490fd5b803b156114cd576114699261142e91604051936020948581019363095ea7b360e01b9283865260018060a01b0316908160248401526000968780809886826044819901526044815261141481610d1e565b5190828a5af161142261131e565b8161149d575b50611366565b60405191888301948552602483015260448201526044815261144f81610d1e565b51925af19061145c61131e565b8261146b575b5050611366565b565b8091925051918215928315611485575b5050503880611462565b611495935082018101910161134e565b38808061147b565b8051801592508b9083156114b5575b50505038611428565b6114c5935082018101910161134e565b388a816114ac565b60405162461bcd60e51b815260206004820152601460248201527314ddd85c1c195c8e881b9bc818dbdb9d1c9858dd60621b6044820152606490fd5b9391909293610104358015158103610c74576117c35750505081156117875760018060a01b031690604080516370a0823160e01b8082526004923084840152602091602495838588818b5afa94851561177c5760009561174d575b5082516323b872dd60e01b858201908152338983015230604483015260648083019390935291815260a0810191906001600160401b0383118184101761173957916000808b6115f994828a9897868b526115bd87610ced565b8987527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c656460c082015251925af16115f261131e565b908b611834565b8051806116c5575b505086835180998193825230898301525afa9586156116ba5760009661168b575b508286111561164e575050830392831161163b57505090565b601190634e487b7160e01b600052526000fd5b5162461bcd60e51b8152808401919091526018818501527714ddd85c1c195c8e881d1c985b9cd9995c8819985a5b195960421b6044820152606490fd5b90958282813d83116116b3575b6116a28183610d39565b81010312610a875750519438611622565b503d611698565b50513d6000823e3d90fd5b92806116d69394830101910161134e565b156116e45782903880611601565b815162461bcd60e51b8152808601849052602a818801527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608490fd5b88604189634e487b7160e01b600052526000fd5b90948482813d8311611775575b6117648183610d39565b81010312610a875750519338611564565b503d61175a565b83513d6000823e3d90fd5b60405162461bcd60e51b81526020600482015260146024820152730537761707065723a20616d6f756e7420697320360641b6044820152606490fd5b6040935090600060a492859694965196879586946311a5cc7760e31b865260048601523060248601523060448601526064850152608484015260018060a01b03165af19081156110b557600091611818575090565b611830915060403d811161040a576103fa8183610d39565b5090565b919290156118965750815115611848575090565b3b156118515790565b60405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606490fd5b8251909150156118a95750805190602001fd5b60405162461bcd60e51b8152602060048201529081906118cd906024830190610c1e565b0390fdfe8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0a2646970667358221220a524257e8a75d54ec0f79e298295ec933421542d6122b7f4471503298aa909b664736f6c63430008120033", - "deployedBytecode": "0x6040608081526004908136101561001557600080fd5b600091823560e01c80631a16321014610bf15780633fa2ef5e14610b5d5780635bf66e4814610a8a578063715018a614610a3f5780637b2a8bd2146109335780638da5cb5b1461090b578063c31c9c07146108c7578063c45a015514610883578063de4065771461083f578063e3c711a01461073b578063efa84c6d146101585763f2fde38b146100a557600080fd5b34610154576020366003190112610154576100be610c5e565b906100c7610d77565b6001600160a01b0391821692831561010257505082546001600160a01b0319811683178455166000805160206118d28339815191528380a380f35b906020608492519162461bcd60e51b8352820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152fd5b8280fd5b50829036600319016101a0811261015457610140136107375761016435916001600160a01b03908184168085036107375761018435936001600160401b03851161015457366023860112156101545784810135936101b585610d5c565b956101c289519788610d39565b8587526024953687828401011161073357869392918187926020998a9301838c0137890101526002600154146106f25760026001558690859783358281168082036105ff57158015906106dd575b15610603579060443583811681036105ff5761022d905b836112a8565b9a6084358981158015816105f4575b15610488575050945b6102777f00000000000000000000000000000000000000000000000000000000000000009660a435908a35878a611509565b926102a684877f00000000000000000000000000000000000000000000000000000000000000001680976113c3565b511561047a575b8a8180518101031261047657928992838f8f96908b958f8a908d940151916102d36112f8565b1561046c575061030d30935b519a8b998a9889976338ed173960e01b8952880152610144359087015260a0604487015260a4860190610f27565b92166064840152608483015203925af19081156104625790610336918891610440575b50610f64565b51986103406112f8565b610357575b8a8a8a8a600180558351928352820152f35b8091929394959697985051600019810190811161042e57815181101561041c57926103978a848d9897958c8c9660a49960051b01015116931680936113c3565b85519687958694634d4d7cbd60e11b865260643590860152309085015260448401528960648401528160848401525af191821561041157916103e2575b509084808080808080610345565b6104029150843d861161040a575b6103fa8183610d39565b810190611308565b9050846103d4565b503d6103f0565b8551903d90823e3d90fd5b634e487b7160e01b8852603285528588fd5b634e487b7160e01b8852601185528588fd5b61045c91503d808a833e6104548183610d39565b810190610eac565b8c610330565b8b513d89823e3d90fd5b61030d90936102df565b8980fd5b50610483610e71565b6102ad565b9096918935918261054a575b5050508d60643590816104a9575b5050610245565b60c43561054357519063442c159960e01b82528882015260e435898201528a60448201528b81606481897f0000000000000000000000000000000000000000000000000000000000000000165afa801561053857908c9161050f575b50505b8e8e6104a2565b813d8311610531575b6105228183610d39565b81010312610476578a8f610505565b503d610518565b508e513d8c823e3d90fd5b5050610508565b9297509091156105ed57508d519063442c159960e01b82528782015260a435888201528960448201528a81606481887f0000000000000000000000000000000000000000000000000000000000000000165afa9081156105e3578a916105b6575b505b948e8080610494565b90508a81813d83116105dc575b6105cd8183610d39565b8101031261047657518e6105ab565b503d6105c3565b8e513d8c823e3d90fd5b90506105ad565b5060c435151561023c565b8880fd5b508a51630cf35bdd60e41b8082528635868301526080917f00000000000000000000000000000000000000000000000000000000000000008516919083818a81865afa90811561053857918f9594939284928b918e916106bc575b5096518094819382526064358c8301525afa9182156105e3579061022d92918b9261068b575b5050610227565b6106aa9250803d106106b5575b6106a28183610d39565b810190610fbf565b505090508e80610684565b503d610698565b6106d39150843d86116106b5576106a28183610d39565b505090503861065e565b506044358381168091036105ff571515610210565b50601f606492868a519362461bcd60e51b85528401528201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152fd5b8580fd5b5080fd5b5034610154578261074b36610c97565b50509161079a7f000000000000000000000000000000000000000000000000000000000000000061078561077f8287610ff8565b906112a8565b946060810135906080602082013591016110f8565b85516307c0329d60e21b815292830152506024810184905291829081906107c5906044830190610f27565b03817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa9081156108335790610810918460209592610818575b5050610f8a565b519051908152f35b61082c92503d8091833e6104548183610d39565b3880610809565b505051903d90823e3d90fd5b505034610737578160031936011261073757517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b505034610737578160031936011261073757517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b505034610737578160031936011261073757517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b505034610737578160031936011261073757905490516001600160a01b039091168152602090f35b509190346107375760c036600319011261073757610a3b92610953610c79565b9061095c610c88565b93610965610e2d565b5061096e610e2d565b94610977610dcf565b926044358452606435602085015261098d610dcf565b928084528684015235602083015260243560608301526109ab610e04565b93151584521515602084015284526020840152818301525191829182919091610120602060406101408401956060815160018060a01b03808251168852858201518689015284820151168488015201516060860152606083820151805160808801528481015160a08801528381015160c0880152015160e086015201518051151561010085015201511515910152565b0390f35b8334610a875780600319360112610a8757610a58610d77565b80546001600160a01b03198116825581906001600160a01b03166000805160206118d28339815191528280a380f35b80fd5b50346101545782610a9a36610c97565b505091610ace7f000000000000000000000000000000000000000000000000000000000000000061078561077f8287610ff8565b5090610af78551948593849363d06ca61f60e01b85528401528660248401526044830190610f27565b03817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa9081156108335790610810918460209592610b42575b5050610f64565b610b5692503d8091833e6104548183610d39565b3880610b3b565b828434610a875760c0366003190112610a8757610b78610c5e565b916024356001600160a01b03818116939184900361073757610a3b94610b9c610c79565b92610ba5610c88565b90610bae610e2d565b50610bb7610e2d565b96610bc0610dcf565b9460443586526064356020870152610bd6610dcf565b941684528684015280602084015260608301526109ab610e04565b505034610737578160031936011261073757610a3b90610c0f610e71565b90519182916020835260208301905b919082519283825260005b848110610c4a575050826000602080949584010152601f8019910116010190565b602081830181015184830182015201610c29565b600435906001600160a01b0382168203610c7457565b600080fd5b608435908115158203610c7457565b60a435908115158203610c7457565b60031981016101608112610c745761014013610c74576004916001600160401b03916101443590838211610c745780602383011215610c745781850135938411610c745760248483010111610c74576024019190565b604081019081106001600160401b03821117610d0857604052565b634e487b7160e01b600052604160045260246000fd5b608081019081106001600160401b03821117610d0857604052565b601f909101601f19168101906001600160401b03821190821017610d0857604052565b6001600160401b038111610d0857601f01601f191660200190565b6000546001600160a01b03163303610d8b57565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b60405190608082016001600160401b03811183821017610d085760405260006060838281528260208201528260408201520152565b60408051919082016001600160401b03811183821017610d085760405260006020838281520152565b60405190606082016001600160401b03811183821017610d085760405281610e53610dcf565b8152610e5d610dcf565b60208201526040610e6c610e04565b910152565b610e104201804211610e965760405190602082015260208152610e9381610ced565b90565b634e487b7160e01b600052601160045260246000fd5b906020908183820312610c745782516001600160401b0393848211610c74570181601f82011215610c74578051938411610d08578360051b9060405194610ef585840187610d39565b85528380860192820101928311610c74578301905b828210610f18575050505090565b81518152908301908301610f0a565b90815180825260208080930193019160005b828110610f47575050505090565b83516001600160a01b031685529381019392810192600101610f39565b805160011015610f745760400190565b634e487b7160e01b600052603260045260246000fd5b805115610f745760200190565b356001600160a01b0381168103610c745790565b51906001600160a01b0382168203610c7457565b9190826080910312610c745781516005811015610c745791610fe360208201610fab565b916060610ff260408401610fab565b92015190565b91906001600160a01b03908161100d85610f97565b16158015906110e2575b15611033575050610e93604061102c84610f97565b9301610f97565b1691604051630cf35bdd60e41b90818152602083013560048201526080928382602481895afa9182156110b55760609385936024926000916110c1575b509760405195869485938452013560048301525afa9182156110b55760009261109857505090565b6110ae9250803d106106b5576106a28183610d39565b5050905090565b6040513d6000823e3d90fd5b6110d89150853d87116106b5576106a28183610d39565b5050905038611070565b50816110f060408601610f97565b161515611017565b93928435926000928392839291861580158161129b575b15611124575050505050505060409092013590565b819293949699959897916111f9575b50505081611142575b50505050565b909192939450604083013580156000146111ef575060405163442c159960e01b8152600481019290925260609092013560248201526044810183905290602090829060649082906001600160a01b03165afa9182156111e35780926111af575b50505b903880808061113c565b9091506020823d82116111db575b816111ca60209383610d39565b81010312610a8757505138806111a2565b3d91506111bd565b604051903d90823e3d90fd5b93505050506111a5565b929850909115611294575060405163442c159960e01b81526004810191909152602083810135602483015260448201859052816064816001600160a01b038b165afa908115611289578491611254575b505b95388080611133565b90506020813d8211611281575b8161126e60209383610d39565b8101031261127d575138611249565b8380fd5b3d9150611261565b6040513d86823e3d90fd5b905061124b565b5060408a0135151561110f565b604051929190606084016001600160401b03811185821017610d08576040526002845260403660208601376112f2846112e081610f8a565b6001600160a01b039384169052610f64565b91169052565b610124358015158103610c745790565b9190826040910312610c74576020825192015190565b3d15611349573d9061132f82610d5c565b9161133d6040519384610d39565b82523d6000602084013e565b606090565b90816020910312610c7457518015158103610c745790565b1561136d57565b60405162461bcd60e51b815260206004820152602860248201527f42617365537761707065723a3a73616665417070726f76653a20617070726f76604482015267194819985a5b195960c21b6064820152608490fd5b803b156114cd576114699261142e91604051936020948581019363095ea7b360e01b9283865260018060a01b0316908160248401526000968780809886826044819901526044815261141481610d1e565b5190828a5af161142261131e565b8161149d575b50611366565b60405191888301948552602483015260448201526044815261144f81610d1e565b51925af19061145c61131e565b8261146b575b5050611366565b565b8091925051918215928315611485575b5050503880611462565b611495935082018101910161134e565b38808061147b565b8051801592508b9083156114b5575b50505038611428565b6114c5935082018101910161134e565b388a816114ac565b60405162461bcd60e51b815260206004820152601460248201527314ddd85c1c195c8e881b9bc818dbdb9d1c9858dd60621b6044820152606490fd5b9391909293610104358015158103610c74576117c35750505081156117875760018060a01b031690604080516370a0823160e01b8082526004923084840152602091602495838588818b5afa94851561177c5760009561174d575b5082516323b872dd60e01b858201908152338983015230604483015260648083019390935291815260a0810191906001600160401b0383118184101761173957916000808b6115f994828a9897868b526115bd87610ced565b8987527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c656460c082015251925af16115f261131e565b908b611834565b8051806116c5575b505086835180998193825230898301525afa9586156116ba5760009661168b575b508286111561164e575050830392831161163b57505090565b601190634e487b7160e01b600052526000fd5b5162461bcd60e51b8152808401919091526018818501527714ddd85c1c195c8e881d1c985b9cd9995c8819985a5b195960421b6044820152606490fd5b90958282813d83116116b3575b6116a28183610d39565b81010312610a875750519438611622565b503d611698565b50513d6000823e3d90fd5b92806116d69394830101910161134e565b156116e45782903880611601565b815162461bcd60e51b8152808601849052602a818801527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608490fd5b88604189634e487b7160e01b600052526000fd5b90948482813d8311611775575b6117648183610d39565b81010312610a875750519338611564565b503d61175a565b83513d6000823e3d90fd5b60405162461bcd60e51b81526020600482015260146024820152730537761707065723a20616d6f756e7420697320360641b6044820152606490fd5b6040935090600060a492859694965196879586946311a5cc7760e31b865260048601523060248601523060448601526064850152608484015260018060a01b03165af19081156110b557600091611818575090565b611830915060403d811161040a576103fa8183610d39565b5090565b919290156118965750815115611848575090565b3b156118515790565b60405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606490fd5b8251909150156118a95750805190602001fd5b60405162461bcd60e51b8152602060048201529081906118cd906024830190610c1e565b0390fdfe8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0a2646970667358221220a524257e8a75d54ec0f79e298295ec933421542d6122b7f4471503298aa909b664736f6c63430008120033", + "bytecode": "0x60e0346200015457601f62001af938819003918201601f19168301916001600160401b03831184841017620001595780849260609460405283398101031262000154576200004d816200016f565b60406200005d602084016200016f565b920151916001600160a01b038084169290838503620001545780620000e1926000543360018060a01b0319821617600055823391167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a3600180551692620000ca84151562000184565b1692620000d984151562000184565b151562000184565b60805260a05260c0526040516119279081620001d2823960805181818161027f015281816107c9015281816108dc0152610afb015260a05181610898015260c05181818161024a015281816104d50152818161057b0152818161061c01528181610753015281816108540152610aa20152f35b600080fd5b634e487b7160e01b600052604160045260246000fd5b51906001600160a01b03821682036200015457565b156200018c57565b60405162461bcd60e51b815260206004820152601a60248201527f537761707065723a2061646472657373206e6f742076616c69640000000000006044820152606490fdfe6040608081526004908136101561001557600080fd5b600091823560e01c80631a16321014610bf15780633fa2ef5e14610b5d5780635bf66e4814610a8a578063715018a614610a3f5780637b2a8bd2146109335780638da5cb5b1461090b578063c31c9c07146108c7578063c45a015514610883578063de4065771461083f578063e3c711a01461073b578063efa84c6d146101585763f2fde38b146100a557600080fd5b34610154576020366003190112610154576100be610c5e565b906100c7610d77565b6001600160a01b0391821692831561010257505082546001600160a01b0319811683178455166000805160206118d28339815191528380a380f35b906020608492519162461bcd60e51b8352820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152fd5b8280fd5b50829036600319016101a0811261015457610140136107375761016435916001600160a01b03908184168085036107375761018435936001600160401b03851161015457366023860112156101545784810135936101b585610d5c565b956101c289519788610d39565b8587526024953687828401011161073357869392918187926020998a9301838c0137890101526002600154146106f25760026001558690859783358281168082036105ff57158015906106dd575b15610603579060443583811681036105ff5761022d905b836112a8565b9a6084358981158015816105f4575b15610488575050945b6102777f00000000000000000000000000000000000000000000000000000000000000009660a435908a35878a611509565b926102a684877f00000000000000000000000000000000000000000000000000000000000000001680976113c3565b511561047a575b8a8180518101031261047657928992838f8f96908b958f8a908d940151916102d36112f8565b1561046c575061030d30935b519a8b998a9889976338ed173960e01b8952880152610144359087015260a0604487015260a4860190610f27565b92166064840152608483015203925af19081156104625790610336918891610440575b50610f64565b51986103406112f8565b610357575b8a8a8a8a600180558351928352820152f35b8091929394959697985051600019810190811161042e57815181101561041c57926103978a848d9897958c8c9660a49960051b01015116931680936113c3565b85519687958694634d4d7cbd60e11b865260643590860152309085015260448401528960648401528160848401525af191821561041157916103e2575b509084808080808080610345565b6104029150843d861161040a575b6103fa8183610d39565b810190611308565b9050846103d4565b503d6103f0565b8551903d90823e3d90fd5b634e487b7160e01b8852603285528588fd5b634e487b7160e01b8852601185528588fd5b61045c91503d808a833e6104548183610d39565b810190610eac565b8c610330565b8b513d89823e3d90fd5b61030d90936102df565b8980fd5b50610483610e71565b6102ad565b9096918935918261054a575b5050508d60643590816104a9575b5050610245565b60c43561054357519063442c159960e01b82528882015260e435898201528a60448201528b81606481897f0000000000000000000000000000000000000000000000000000000000000000165afa801561053857908c9161050f575b50505b8e8e6104a2565b813d8311610531575b6105228183610d39565b81010312610476578a8f610505565b503d610518565b508e513d8c823e3d90fd5b5050610508565b9297509091156105ed57508d519063442c159960e01b82528782015260a435888201528960448201528a81606481887f0000000000000000000000000000000000000000000000000000000000000000165afa9081156105e3578a916105b6575b505b948e8080610494565b90508a81813d83116105dc575b6105cd8183610d39565b8101031261047657518e6105ab565b503d6105c3565b8e513d8c823e3d90fd5b90506105ad565b5060c435151561023c565b8880fd5b508a51630cf35bdd60e41b8082528635868301526080917f00000000000000000000000000000000000000000000000000000000000000008516919083818a81865afa90811561053857918f9594939284928b918e916106bc575b5096518094819382526064358c8301525afa9182156105e3579061022d92918b9261068b575b5050610227565b6106aa9250803d106106b5575b6106a28183610d39565b810190610fbf565b505090508e80610684565b503d610698565b6106d39150843d86116106b5576106a28183610d39565b505090503861065e565b506044358381168091036105ff571515610210565b50601f606492868a519362461bcd60e51b85528401528201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152fd5b8580fd5b5080fd5b5034610154578261074b36610c97565b50509161079a7f000000000000000000000000000000000000000000000000000000000000000061078561077f8287610ff8565b906112a8565b946060810135906080602082013591016110f8565b85516307c0329d60e21b815292830152506024810184905291829081906107c5906044830190610f27565b03817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa9081156108335790610810918460209592610818575b5050610f8a565b519051908152f35b61082c92503d8091833e6104548183610d39565b3880610809565b505051903d90823e3d90fd5b505034610737578160031936011261073757517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b505034610737578160031936011261073757517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b505034610737578160031936011261073757517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b505034610737578160031936011261073757905490516001600160a01b039091168152602090f35b509190346107375760c036600319011261073757610a3b92610953610c79565b9061095c610c88565b93610965610e2d565b5061096e610e2d565b94610977610dcf565b926044358452606435602085015261098d610dcf565b928084528684015235602083015260243560608301526109ab610e04565b93151584521515602084015284526020840152818301525191829182919091610120602060406101408401956060815160018060a01b03808251168852858201518689015284820151168488015201516060860152606083820151805160808801528481015160a08801528381015160c0880152015160e086015201518051151561010085015201511515910152565b0390f35b8334610a875780600319360112610a8757610a58610d77565b80546001600160a01b03198116825581906001600160a01b03166000805160206118d28339815191528280a380f35b80fd5b50346101545782610a9a36610c97565b505091610ace7f000000000000000000000000000000000000000000000000000000000000000061078561077f8287610ff8565b5090610af78551948593849363d06ca61f60e01b85528401528660248401526044830190610f27565b03817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa9081156108335790610810918460209592610b42575b5050610f64565b610b5692503d8091833e6104548183610d39565b3880610b3b565b828434610a875760c0366003190112610a8757610b78610c5e565b916024356001600160a01b03818116939184900361073757610a3b94610b9c610c79565b92610ba5610c88565b90610bae610e2d565b50610bb7610e2d565b96610bc0610dcf565b9460443586526064356020870152610bd6610dcf565b941684528684015280602084015260608301526109ab610e04565b505034610737578160031936011261073757610a3b90610c0f610e71565b90519182916020835260208301905b919082519283825260005b848110610c4a575050826000602080949584010152601f8019910116010190565b602081830181015184830182015201610c29565b600435906001600160a01b0382168203610c7457565b600080fd5b608435908115158203610c7457565b60a435908115158203610c7457565b60031981016101608112610c745761014013610c74576004916001600160401b03916101443590838211610c745780602383011215610c745781850135938411610c745760248483010111610c74576024019190565b604081019081106001600160401b03821117610d0857604052565b634e487b7160e01b600052604160045260246000fd5b608081019081106001600160401b03821117610d0857604052565b601f909101601f19168101906001600160401b03821190821017610d0857604052565b6001600160401b038111610d0857601f01601f191660200190565b6000546001600160a01b03163303610d8b57565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b60405190608082016001600160401b03811183821017610d085760405260006060838281528260208201528260408201520152565b60408051919082016001600160401b03811183821017610d085760405260006020838281520152565b60405190606082016001600160401b03811183821017610d085760405281610e53610dcf565b8152610e5d610dcf565b60208201526040610e6c610e04565b910152565b610e104201804211610e965760405190602082015260208152610e9381610ced565b90565b634e487b7160e01b600052601160045260246000fd5b906020908183820312610c745782516001600160401b0393848211610c74570181601f82011215610c74578051938411610d08578360051b9060405194610ef585840187610d39565b85528380860192820101928311610c74578301905b828210610f18575050505090565b81518152908301908301610f0a565b90815180825260208080930193019160005b828110610f47575050505090565b83516001600160a01b031685529381019392810192600101610f39565b805160011015610f745760400190565b634e487b7160e01b600052603260045260246000fd5b805115610f745760200190565b356001600160a01b0381168103610c745790565b51906001600160a01b0382168203610c7457565b9190826080910312610c745781516005811015610c745791610fe360208201610fab565b916060610ff260408401610fab565b92015190565b91906001600160a01b03908161100d85610f97565b16158015906110e2575b15611033575050610e93604061102c84610f97565b9301610f97565b1691604051630cf35bdd60e41b90818152602083013560048201526080928382602481895afa9182156110b55760609385936024926000916110c1575b509760405195869485938452013560048301525afa9182156110b55760009261109857505090565b6110ae9250803d106106b5576106a28183610d39565b5050905090565b6040513d6000823e3d90fd5b6110d89150853d87116106b5576106a28183610d39565b5050905038611070565b50816110f060408601610f97565b161515611017565b93928435926000928392839291861580158161129b575b15611124575050505050505060409092013590565b819293949699959897916111f9575b50505081611142575b50505050565b909192939450604083013580156000146111ef575060405163442c159960e01b8152600481019290925260609092013560248201526044810183905290602090829060649082906001600160a01b03165afa9182156111e35780926111af575b50505b903880808061113c565b9091506020823d82116111db575b816111ca60209383610d39565b81010312610a8757505138806111a2565b3d91506111bd565b604051903d90823e3d90fd5b93505050506111a5565b929850909115611294575060405163442c159960e01b81526004810191909152602083810135602483015260448201859052816064816001600160a01b038b165afa908115611289578491611254575b505b95388080611133565b90506020813d8211611281575b8161126e60209383610d39565b8101031261127d575138611249565b8380fd5b3d9150611261565b6040513d86823e3d90fd5b905061124b565b5060408a0135151561110f565b604051929190606084016001600160401b03811185821017610d08576040526002845260403660208601376112f2846112e081610f8a565b6001600160a01b039384169052610f64565b91169052565b610124358015158103610c745790565b9190826040910312610c74576020825192015190565b3d15611349573d9061132f82610d5c565b9161133d6040519384610d39565b82523d6000602084013e565b606090565b90816020910312610c7457518015158103610c745790565b1561136d57565b60405162461bcd60e51b815260206004820152602860248201527f42617365537761707065723a3a73616665417070726f76653a20617070726f76604482015267194819985a5b195960c21b6064820152608490fd5b803b156114cd576114699261142e91604051936020948581019363095ea7b360e01b9283865260018060a01b0316908160248401526000968780809886826044819901526044815261141481610d1e565b5190828a5af161142261131e565b8161149d575b50611366565b60405191888301948552602483015260448201526044815261144f81610d1e565b51925af19061145c61131e565b8261146b575b5050611366565b565b8091925051918215928315611485575b5050503880611462565b611495935082018101910161134e565b38808061147b565b8051801592508b9083156114b5575b50505038611428565b6114c5935082018101910161134e565b388a816114ac565b60405162461bcd60e51b815260206004820152601460248201527314ddd85c1c195c8e881b9bc818dbdb9d1c9858dd60621b6044820152606490fd5b9391909293610104358015158103610c74576117c35750505081156117875760018060a01b031690604080516370a0823160e01b8082526004923084840152602091602495838588818b5afa94851561177c5760009561174d575b5082516323b872dd60e01b858201908152338983015230604483015260648083019390935291815260a0810191906001600160401b0383118184101761173957916000808b6115f994828a9897868b526115bd87610ced565b8987527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c656460c082015251925af16115f261131e565b908b611834565b8051806116c5575b505086835180998193825230898301525afa9586156116ba5760009661168b575b508286111561164e575050830392831161163b57505090565b601190634e487b7160e01b600052526000fd5b5162461bcd60e51b8152808401919091526018818501527714ddd85c1c195c8e881d1c985b9cd9995c8819985a5b195960421b6044820152606490fd5b90958282813d83116116b3575b6116a28183610d39565b81010312610a875750519438611622565b503d611698565b50513d6000823e3d90fd5b92806116d69394830101910161134e565b156116e45782903880611601565b815162461bcd60e51b8152808601849052602a818801527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608490fd5b88604189634e487b7160e01b600052526000fd5b90948482813d8311611775575b6117648183610d39565b81010312610a875750519338611564565b503d61175a565b83513d6000823e3d90fd5b60405162461bcd60e51b81526020600482015260146024820152730537761707065723a20616d6f756e7420697320360641b6044820152606490fd5b6040935090600060a492859694965196879586946311a5cc7760e31b865260048601523060248601523060448601526064850152608484015260018060a01b03165af19081156110b557600091611818575090565b611830915060403d811161040a576103fa8183610d39565b5090565b919290156118965750815115611848575090565b3b156118515790565b60405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606490fd5b8251909150156118a95750805190602001fd5b60405162461bcd60e51b8152602060048201529081906118cd906024830190610c1e565b0390fdfe8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0a2646970667358221220fc1c87c536210cc8676d96b56588969185bbbfd77f6b30a4415ffec639b380aa64736f6c63430008120033", + "deployedBytecode": "0x6040608081526004908136101561001557600080fd5b600091823560e01c80631a16321014610bf15780633fa2ef5e14610b5d5780635bf66e4814610a8a578063715018a614610a3f5780637b2a8bd2146109335780638da5cb5b1461090b578063c31c9c07146108c7578063c45a015514610883578063de4065771461083f578063e3c711a01461073b578063efa84c6d146101585763f2fde38b146100a557600080fd5b34610154576020366003190112610154576100be610c5e565b906100c7610d77565b6001600160a01b0391821692831561010257505082546001600160a01b0319811683178455166000805160206118d28339815191528380a380f35b906020608492519162461bcd60e51b8352820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152fd5b8280fd5b50829036600319016101a0811261015457610140136107375761016435916001600160a01b03908184168085036107375761018435936001600160401b03851161015457366023860112156101545784810135936101b585610d5c565b956101c289519788610d39565b8587526024953687828401011161073357869392918187926020998a9301838c0137890101526002600154146106f25760026001558690859783358281168082036105ff57158015906106dd575b15610603579060443583811681036105ff5761022d905b836112a8565b9a6084358981158015816105f4575b15610488575050945b6102777f00000000000000000000000000000000000000000000000000000000000000009660a435908a35878a611509565b926102a684877f00000000000000000000000000000000000000000000000000000000000000001680976113c3565b511561047a575b8a8180518101031261047657928992838f8f96908b958f8a908d940151916102d36112f8565b1561046c575061030d30935b519a8b998a9889976338ed173960e01b8952880152610144359087015260a0604487015260a4860190610f27565b92166064840152608483015203925af19081156104625790610336918891610440575b50610f64565b51986103406112f8565b610357575b8a8a8a8a600180558351928352820152f35b8091929394959697985051600019810190811161042e57815181101561041c57926103978a848d9897958c8c9660a49960051b01015116931680936113c3565b85519687958694634d4d7cbd60e11b865260643590860152309085015260448401528960648401528160848401525af191821561041157916103e2575b509084808080808080610345565b6104029150843d861161040a575b6103fa8183610d39565b810190611308565b9050846103d4565b503d6103f0565b8551903d90823e3d90fd5b634e487b7160e01b8852603285528588fd5b634e487b7160e01b8852601185528588fd5b61045c91503d808a833e6104548183610d39565b810190610eac565b8c610330565b8b513d89823e3d90fd5b61030d90936102df565b8980fd5b50610483610e71565b6102ad565b9096918935918261054a575b5050508d60643590816104a9575b5050610245565b60c43561054357519063442c159960e01b82528882015260e435898201528a60448201528b81606481897f0000000000000000000000000000000000000000000000000000000000000000165afa801561053857908c9161050f575b50505b8e8e6104a2565b813d8311610531575b6105228183610d39565b81010312610476578a8f610505565b503d610518565b508e513d8c823e3d90fd5b5050610508565b9297509091156105ed57508d519063442c159960e01b82528782015260a435888201528960448201528a81606481887f0000000000000000000000000000000000000000000000000000000000000000165afa9081156105e3578a916105b6575b505b948e8080610494565b90508a81813d83116105dc575b6105cd8183610d39565b8101031261047657518e6105ab565b503d6105c3565b8e513d8c823e3d90fd5b90506105ad565b5060c435151561023c565b8880fd5b508a51630cf35bdd60e41b8082528635868301526080917f00000000000000000000000000000000000000000000000000000000000000008516919083818a81865afa90811561053857918f9594939284928b918e916106bc575b5096518094819382526064358c8301525afa9182156105e3579061022d92918b9261068b575b5050610227565b6106aa9250803d106106b5575b6106a28183610d39565b810190610fbf565b505090508e80610684565b503d610698565b6106d39150843d86116106b5576106a28183610d39565b505090503861065e565b506044358381168091036105ff571515610210565b50601f606492868a519362461bcd60e51b85528401528201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152fd5b8580fd5b5080fd5b5034610154578261074b36610c97565b50509161079a7f000000000000000000000000000000000000000000000000000000000000000061078561077f8287610ff8565b906112a8565b946060810135906080602082013591016110f8565b85516307c0329d60e21b815292830152506024810184905291829081906107c5906044830190610f27565b03817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa9081156108335790610810918460209592610818575b5050610f8a565b519051908152f35b61082c92503d8091833e6104548183610d39565b3880610809565b505051903d90823e3d90fd5b505034610737578160031936011261073757517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b505034610737578160031936011261073757517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b505034610737578160031936011261073757517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b505034610737578160031936011261073757905490516001600160a01b039091168152602090f35b509190346107375760c036600319011261073757610a3b92610953610c79565b9061095c610c88565b93610965610e2d565b5061096e610e2d565b94610977610dcf565b926044358452606435602085015261098d610dcf565b928084528684015235602083015260243560608301526109ab610e04565b93151584521515602084015284526020840152818301525191829182919091610120602060406101408401956060815160018060a01b03808251168852858201518689015284820151168488015201516060860152606083820151805160808801528481015160a08801528381015160c0880152015160e086015201518051151561010085015201511515910152565b0390f35b8334610a875780600319360112610a8757610a58610d77565b80546001600160a01b03198116825581906001600160a01b03166000805160206118d28339815191528280a380f35b80fd5b50346101545782610a9a36610c97565b505091610ace7f000000000000000000000000000000000000000000000000000000000000000061078561077f8287610ff8565b5090610af78551948593849363d06ca61f60e01b85528401528660248401526044830190610f27565b03817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa9081156108335790610810918460209592610b42575b5050610f64565b610b5692503d8091833e6104548183610d39565b3880610b3b565b828434610a875760c0366003190112610a8757610b78610c5e565b916024356001600160a01b03818116939184900361073757610a3b94610b9c610c79565b92610ba5610c88565b90610bae610e2d565b50610bb7610e2d565b96610bc0610dcf565b9460443586526064356020870152610bd6610dcf565b941684528684015280602084015260608301526109ab610e04565b505034610737578160031936011261073757610a3b90610c0f610e71565b90519182916020835260208301905b919082519283825260005b848110610c4a575050826000602080949584010152601f8019910116010190565b602081830181015184830182015201610c29565b600435906001600160a01b0382168203610c7457565b600080fd5b608435908115158203610c7457565b60a435908115158203610c7457565b60031981016101608112610c745761014013610c74576004916001600160401b03916101443590838211610c745780602383011215610c745781850135938411610c745760248483010111610c74576024019190565b604081019081106001600160401b03821117610d0857604052565b634e487b7160e01b600052604160045260246000fd5b608081019081106001600160401b03821117610d0857604052565b601f909101601f19168101906001600160401b03821190821017610d0857604052565b6001600160401b038111610d0857601f01601f191660200190565b6000546001600160a01b03163303610d8b57565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b60405190608082016001600160401b03811183821017610d085760405260006060838281528260208201528260408201520152565b60408051919082016001600160401b03811183821017610d085760405260006020838281520152565b60405190606082016001600160401b03811183821017610d085760405281610e53610dcf565b8152610e5d610dcf565b60208201526040610e6c610e04565b910152565b610e104201804211610e965760405190602082015260208152610e9381610ced565b90565b634e487b7160e01b600052601160045260246000fd5b906020908183820312610c745782516001600160401b0393848211610c74570181601f82011215610c74578051938411610d08578360051b9060405194610ef585840187610d39565b85528380860192820101928311610c74578301905b828210610f18575050505090565b81518152908301908301610f0a565b90815180825260208080930193019160005b828110610f47575050505090565b83516001600160a01b031685529381019392810192600101610f39565b805160011015610f745760400190565b634e487b7160e01b600052603260045260246000fd5b805115610f745760200190565b356001600160a01b0381168103610c745790565b51906001600160a01b0382168203610c7457565b9190826080910312610c745781516005811015610c745791610fe360208201610fab565b916060610ff260408401610fab565b92015190565b91906001600160a01b03908161100d85610f97565b16158015906110e2575b15611033575050610e93604061102c84610f97565b9301610f97565b1691604051630cf35bdd60e41b90818152602083013560048201526080928382602481895afa9182156110b55760609385936024926000916110c1575b509760405195869485938452013560048301525afa9182156110b55760009261109857505090565b6110ae9250803d106106b5576106a28183610d39565b5050905090565b6040513d6000823e3d90fd5b6110d89150853d87116106b5576106a28183610d39565b5050905038611070565b50816110f060408601610f97565b161515611017565b93928435926000928392839291861580158161129b575b15611124575050505050505060409092013590565b819293949699959897916111f9575b50505081611142575b50505050565b909192939450604083013580156000146111ef575060405163442c159960e01b8152600481019290925260609092013560248201526044810183905290602090829060649082906001600160a01b03165afa9182156111e35780926111af575b50505b903880808061113c565b9091506020823d82116111db575b816111ca60209383610d39565b81010312610a8757505138806111a2565b3d91506111bd565b604051903d90823e3d90fd5b93505050506111a5565b929850909115611294575060405163442c159960e01b81526004810191909152602083810135602483015260448201859052816064816001600160a01b038b165afa908115611289578491611254575b505b95388080611133565b90506020813d8211611281575b8161126e60209383610d39565b8101031261127d575138611249565b8380fd5b3d9150611261565b6040513d86823e3d90fd5b905061124b565b5060408a0135151561110f565b604051929190606084016001600160401b03811185821017610d08576040526002845260403660208601376112f2846112e081610f8a565b6001600160a01b039384169052610f64565b91169052565b610124358015158103610c745790565b9190826040910312610c74576020825192015190565b3d15611349573d9061132f82610d5c565b9161133d6040519384610d39565b82523d6000602084013e565b606090565b90816020910312610c7457518015158103610c745790565b1561136d57565b60405162461bcd60e51b815260206004820152602860248201527f42617365537761707065723a3a73616665417070726f76653a20617070726f76604482015267194819985a5b195960c21b6064820152608490fd5b803b156114cd576114699261142e91604051936020948581019363095ea7b360e01b9283865260018060a01b0316908160248401526000968780809886826044819901526044815261141481610d1e565b5190828a5af161142261131e565b8161149d575b50611366565b60405191888301948552602483015260448201526044815261144f81610d1e565b51925af19061145c61131e565b8261146b575b5050611366565b565b8091925051918215928315611485575b5050503880611462565b611495935082018101910161134e565b38808061147b565b8051801592508b9083156114b5575b50505038611428565b6114c5935082018101910161134e565b388a816114ac565b60405162461bcd60e51b815260206004820152601460248201527314ddd85c1c195c8e881b9bc818dbdb9d1c9858dd60621b6044820152606490fd5b9391909293610104358015158103610c74576117c35750505081156117875760018060a01b031690604080516370a0823160e01b8082526004923084840152602091602495838588818b5afa94851561177c5760009561174d575b5082516323b872dd60e01b858201908152338983015230604483015260648083019390935291815260a0810191906001600160401b0383118184101761173957916000808b6115f994828a9897868b526115bd87610ced565b8987527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c656460c082015251925af16115f261131e565b908b611834565b8051806116c5575b505086835180998193825230898301525afa9586156116ba5760009661168b575b508286111561164e575050830392831161163b57505090565b601190634e487b7160e01b600052526000fd5b5162461bcd60e51b8152808401919091526018818501527714ddd85c1c195c8e881d1c985b9cd9995c8819985a5b195960421b6044820152606490fd5b90958282813d83116116b3575b6116a28183610d39565b81010312610a875750519438611622565b503d611698565b50513d6000823e3d90fd5b92806116d69394830101910161134e565b156116e45782903880611601565b815162461bcd60e51b8152808601849052602a818801527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608490fd5b88604189634e487b7160e01b600052526000fd5b90948482813d8311611775575b6117648183610d39565b81010312610a875750519338611564565b503d61175a565b83513d6000823e3d90fd5b60405162461bcd60e51b81526020600482015260146024820152730537761707065723a20616d6f756e7420697320360641b6044820152606490fd5b6040935090600060a492859694965196879586946311a5cc7760e31b865260048601523060248601523060448601526064850152608484015260018060a01b03165af19081156110b557600091611818575090565b611830915060403d811161040a576103fa8183610d39565b5090565b919290156118965750815115611848575090565b3b156118515790565b60405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606490fd5b8251909150156118a95750805190602001fd5b60405162461bcd60e51b8152602060048201529081906118cd906024830190610c1e565b0390fdfe8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0a2646970667358221220fc1c87c536210cc8676d96b56588969185bbbfd77f6b30a4415ffec639b380aa64736f6c63430008120033", "linkReferences": {}, "deployedLinkReferences": {} } diff --git a/src/artifacts/tapioca-periphery/UniswapV3Swapper.json b/src/artifacts/tapioca-periphery/UniswapV3Swapper.json index c2a8632b..d93a5e29 100644 --- a/src/artifacts/tapioca-periphery/UniswapV3Swapper.json +++ b/src/artifacts/tapioca-periphery/UniswapV3Swapper.json @@ -719,8 +719,8 @@ "type": "function" } ], - "bytecode": "0x60e0346200016a57601f6200267b38819003918201601f19168301916001600160401b038311848410176200016f578084926060946040528339810103126200016a5780516001600160a01b038082169291908382036200016a57602083015192818416908185036200016a576040015194828616918287036200016a57620000e8620000e892620000f095600054903360018060a01b03198316176000553391167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a360018055633c000bb866ffffffffffffff196002541617600255151562000185565b151562000185565b60805260a05260c0526040516124a89081620001d38239608051818181610251015281816104410152818161075701528181610803015281816108a901528181610903015281816109cb0152610d69015260a05181818161029a015281816103ef0152610b46015260c051818181610a3c0152610b010152f35b600080fd5b634e487b7160e01b600052604160045260246000fd5b156200018d57565b60405162461bcd60e51b815260206004820152601a60248201527f537761707065723a2061646472657373206e6f742076616c69640000000000006044820152606490fdfe608080604052600436101561001357600080fd5b60003560e01c908163089fe6aa14610ec4575080631a16321014610e9457806326d8954514610e6d5780633fa2ef5e14610dd85780635bf66e4814610d57578063715018a614610d1057806373dd250c14610cae5780637b2a8bd214610b9e5780638da5cb5b14610b75578063c31c9c0714610b30578063c45a015514610aeb578063e3c711a0146109b6578063efa84c6d1461016d5763f2fde38b146100b957600080fd5b34610168576020366003190112610168576100d2610f24565b6100da611007565b6001600160a01b03908116908115610114576000548260018060a01b031982161760005516600080516020612453833981519152600080a3005b60405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608490fd5b600080fd5b36600319016101a08112610168576101401361016857610164356001600160a01b038116900361016857610184356001600160401b03811161016857366023820112156101685780600401356101c281610fec565b916101d06040519384610fc9565b8183523660248383010111610168578160009260246020930183860137830101528060006004356001600160a01b0381168082036101685715801590610999575b1561088a57916044356001600160a01b038116810361016857935b6000608435801580158161087f575b15610703575061027591505b60a43590602435877f0000000000000000000000000000000000000000000000000000000000000000611550565b60405163095ea7b360e01b602082019081529193916000918291906102d9816102cb897f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031660248401611490565b03601f198101835282610fc9565b519082895af16102e76114ab565b816106d4575b50156106aa57511561069c575b602081805181010312610168576020015162ffffff6002541661031b61146a565b156106925730905b604051956001600160401b0361010088019081119088111761060c57610100870160409081526001600160a01b0391821688528882166020808a01918252828a0194855294831660608a0190815260808a0196875260a08a019788526101443560c08b01908152600060e08c01818152945163414bf38960e01b81529b51861660048d01529251851660248c0152945162ffffff1660448b015251831660648a015294516084890152945160a4880152905160c48701529251831660e4860152918491610104918391907f0000000000000000000000000000000000000000000000000000000000000000165af19182156105a25760009261065e575b5061042961146a565b61043e575b6040809350519182526020820152f35b507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031691803b156106225760405163095ea7b360e01b6020820190815260248201859052600060448084019190915282526080820194916001600160401b0386118187101761060c5760006040946104de828061051996819b9682978b52519082865af16104d26114ab565b816105dd575b506114f3565b855182602082019163095ea7b360e01b8352610502816102cb8c8b60248401611490565b51925af161050e6114ab565b816105ae57506114f3565b8151634d4d7cbd60e11b8152606480356004830152306024830152610164356001600160a01b0316604483015281018490526084810185905293849160a49183915af180156105a257604092600091610573575b5061042e565b6105939150833d851161059b575b61058b8183610fc9565b81019061147a565b90508361056d565b503d610581565b6040513d6000823e3d90fd5b80518015925082156105c3575b5050866104d8565b6105d692506020809183010191016114db565b86806105bb565b80518015925082156105f2575b50508a6104d8565b61060592506020809183010191016114db565b8a806105ea565b634e487b7160e01b600052604160045260246000fd5b60405162461bcd60e51b815260206004820152601460248201527314ddd85c1c195c8e881b9bc818dbdb9d1c9858dd60621b6044820152606490fd5b9091506020813d60201161068a575b8161067a60209383610fc9565b8101031261016857519083610420565b3d915061066d565b6101643590610323565b506106a5611101565b6102fa565b60405162461bcd60e51b8152602060048201526002602482015261534160f01b6044820152606490fd5b80518015925082156106e9575b5050876102ed565b6106fc92506020809183010191016114db565b87806106e1565b9060243591826107cd575b50505060643580610724575b5061027590610247565b60c4356107c35760405163442c159960e01b8152600481019190915260e4356024820152600060448201526020816064817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa80156105a257610798575b50610275905b9061071a565b602090813d83116107bc575b6107ae8183610fc9565b81010312610168578661078c565b503d6107a4565b5061027590610792565b9192509015610878575060405163442c159960e01b8152600481019190915260a4356024820152600060448201526020816064817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa9081156105a257600091610846575b505b86808061070e565b90506020813d602011610870575b8161086160209383610fc9565b8101031261016857518661083c565b3d9150610854565b905061083e565b5060c435151561023b565b50604051630cf35bdd60e41b81526024803560048301526080908290817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa9081156105a257600091610976575b50604051630cf35bdd60e41b815260643560048201529092906080816024817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa9081156105a257600091610943575b509361022c565b610965915060803d60801161096f575b61095d8183610fc9565b81019061118a565b505090508561093c565b503d610953565b61098f915060803d60801161096f5761095d8183610fc9565b50509050846108e2565b506044356001600160a01b03811690819003610168571515610211565b34610168576109c436610f58565b5050610a0d7f00000000000000000000000000000000000000000000000000000000000000006109f481846111c3565b92909160209460608101359060808782013591016112b7565b600254604051630b4c774160e11b815290949250858180610a3862ffffff8916878960048501611150565b03817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa9081156105a257600091610aa7575b50610a8d9063ffffffff610a9f9660181c1690611962565b506001600160801b0390911690611cd1565b604051908152f35b90508581813d8311610ae4575b610abe8183610fc9565b8101031261016857610a9f9463ffffffff610adb610a8d9361113c565b92505094610a75565b503d610ab4565b34610168576000366003190112610168576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b34610168576000366003190112610168576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b34610168576000366003190112610168576000546040516001600160a01b039091168152602090f35b346101685760c036600319011261016857610caa610bba610f3a565b610bc2610f49565b90610bcb6110bd565b50610bd46110bd565b91610bdd61105f565b9060443582526064356020830152610bf361105f565b90600082526000604083015260043560208301526024356060830152610c17611094565b93151584521515602084015283526020830152604082015260405191829182919091610120602060406101408401956060815160018060a01b03808251168852858201518689015284820151168488015201516060860152606083820151805160808801528481015160a08801528381015160c0880152015160e086015201518051151561010085015201511515910152565b0390f35b346101685760203660031901126101685760043562ffffff80821680920361016857610cd8611007565b816002549182167f2bff118b9b9e3deb4fc5204e6ba828351c954685d0b119d0e21add79f8783399600080a362ffffff191617600255005b3461016857600036600319011261016857610d29611007565b600080546001600160a01b0319811682556001600160a01b03166000805160206124538339815191528280a3005b3461016857610d6536610f58565b50507f0000000000000000000000000000000000000000000000000000000000000000610dae610d9582846111c3565b91909260209460608101359060808782013591016112b7565b509160025492604051630b4c774160e11b8152858180610a3862ffffff8916888860048501611150565b346101685760c036600319011261016857610df1610f24565b6001600160a01b0390602435828116919082900361016857610caa92610e15610f3a565b91610e1e610f49565b610e266110bd565b50610e2f6110bd565b94610e3861105f565b9360443585526064356020860152610e4e61105f565b9316835260408301526000602083015260006060830152610c17611094565b3461016857600036600319011261016857602063ffffffff60025460181c16604051908152f35b3461016857600036600319011261016857610caa610eb0611101565b604051918291602083526020830190610ee4565b346101685760003660031901126101685760209062ffffff600254168152f35b919082519283825260005b848110610f10575050826000602080949584010152601f8019910116010190565b602081830181015184830182015201610eef565b600435906001600160a01b038216820361016857565b60843590811515820361016857565b60a43590811515820361016857565b600319810161016081126101685761014013610168576004916001600160401b03916101443590838211610168578060238301121561016857818501359384116101685760248483010111610168576024019190565b604081019081106001600160401b0382111761060c57604052565b601f909101601f19168101906001600160401b0382119082101761060c57604052565b6001600160401b03811161060c57601f01601f191660200190565b6000546001600160a01b0316330361101b57565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b60405190608082016001600160401b0381118382101761060c5760405260006060838281528260208201528260408201520152565b60408051919082016001600160401b0381118382101761060c5760405260006020838281520152565b60405190606082016001600160401b0381118382101761060c57604052816110e361105f565b81526110ed61105f565b602082015260406110fc611094565b910152565b610e104201804211611126576040519060208201526020815261112381610fae565b90565b634e487b7160e01b600052601160045260246000fd5b51906001600160a01b038216820361016857565b6001600160a01b0391821681529116602082015262ffffff909116604082015260600190565b356001600160a01b03811681036101685790565b9190826080910312610168578151600581101561016857916111ae6020820161113c565b9160606111bd6040840161113c565b92015190565b91906001600160a01b0390816111d885611176565b16158015906112a1575b156111fe57505061112360406111f784611176565b9301611176565b1691604051630cf35bdd60e41b90818152602083013560048201526080928382602481895afa9182156105a2576060938593602492600091611280575b509760405195869485938452013560048301525afa9182156105a25760009261126357505090565b6112799250803d1061096f5761095d8183610fc9565b5050905090565b6112979150853d871161096f5761095d8183610fc9565b505090503861123b565b50816112af60408601611176565b1615156111e2565b93928435926000928392839291861580158161145d575b156112e3575050505050505060409092013590565b819293949699959897916113bb575b50505081611301575b50505050565b909192939450604083013580156000146113b1575060405163442c159960e01b8152600481019290925260609092013560248201526044810183905290602090829060649082906001600160a01b03165afa9182156113a557809261136e575b50505b90388080806112fb565b9091506020823d821161139d575b8161138960209383610fc9565b8101031261139a5750513880611361565b80fd5b3d915061137c565b604051903d90823e3d90fd5b9350505050611364565b929850909115611456575060405163442c159960e01b81526004810191909152602083810135602483015260448201859052816064816001600160a01b038b165afa90811561144b578491611416575b505b953880806112f2565b90506020813d8211611443575b8161143060209383610fc9565b8101031261143f57513861140b565b8380fd5b3d9150611423565b6040513d86823e3d90fd5b905061140d565b5060408a013515156112ce565b6101243580151581036101685790565b9190826040910312610168576020825192015190565b6001600160a01b039091168152602081019190915260400190565b3d156114d6573d906114bc82610fec565b916114ca6040519384610fc9565b82523d6000602084013e565b606090565b90816020910312610168575180151581036101685790565b156114fa57565b60405162461bcd60e51b815260206004820152602860248201527f42617365537761707065723a3a73616665417070726f76653a20617070726f76604482015267194819985a5b195960c21b6064820152608490fd5b93919092936101043580151581036101685761180a5750505081156117ce5760018060a01b031690604080516370a0823160e01b8082526004923084840152602091602495838588818b5afa9485156117c357600095611794575b5082516323b872dd60e01b858201908152338983015230604483015260648083019390935291815260a0810191906001600160401b0383118184101761178057916000808b61164094828a9897868b5261160487610fae565b8987527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c656460c082015251925af16116396114ab565b908b61187b565b80518061170c575b505086835180998193825230898301525afa958615611701576000966116d2575b5082861115611695575050830392831161168257505090565b601190634e487b7160e01b600052526000fd5b5162461bcd60e51b8152808401919091526018818501527714ddd85c1c195c8e881d1c985b9cd9995c8819985a5b195960421b6044820152606490fd5b90958282813d83116116fa575b6116e98183610fc9565b8101031261139a5750519438611669565b503d6116df565b50513d6000823e3d90fd5b928061171d939483010191016114db565b1561172b5782903880611648565b815162461bcd60e51b8152808601849052602a818801527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608490fd5b88604189634e487b7160e01b600052526000fd5b90948482813d83116117bc575b6117ab8183610fc9565b8101031261139a57505193386115ab565b503d6117a1565b83513d6000823e3d90fd5b60405162461bcd60e51b81526020600482015260146024820152730537761707065723a20616d6f756e7420697320360641b6044820152606490fd5b6040935090600060a492859694965196879586946311a5cc7760e31b865260048601523060248601523060448601526064850152608484015260018060a01b03165af19081156105a25760009161185f575090565b611877915060403d811161059b5761058b8183610fc9565b5090565b919290156118dd575081511561188f575090565b3b156118985790565b60405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606490fd5b8251909150156118f05750805190602001fd5b60405162461bcd60e51b815260206004820152908190611914906024830190610ee4565b0390fd5b6001600160401b03811161060c5760051b60200190565b80511561193c5760200190565b634e487b7160e01b600052603260045260246000fd5b80516001101561193c5760400190565b63ffffffff92918316908115611ca75760408051909490916001600160401b03606084018181118582101761060c5787929752600284526020908185019083368337866119ae8761192f565b52600093846119bc88611952565b528481519a8b9463883bdbfd60e01b865260249889870160049b898d8a01525180915260448801929185905b8a838310611c7e5750505050509085809260018060a01b039e8f910392165afa928315611c745785928694611b61575b505050611a2e611a2782611952565b519161192f565b5160060b9060060b0397667fffffffffffff1991667fffffffffffff8a13838b1217611b1c5781611a6a81611a6284611952565b51169261192f565b5116900391818311611b1c578760030b9960060b8a15611b4f576000199181148b831416611b3d578a810560020b9a8682129182611b2e575b5050611b07575b508681026001600160c01b031696870403611af557901b600160201b600160c01b0316928315611ae55750505090046001600160801b031690565b634e487b7160e01b825260129052fd5b5050634e487b7160e01b815260118352fd5b9098627fffff198114611b1c57019738611aaa565b634e487b7160e01b8552601187528585fd5b0760060b151590503880611aa3565b634e487b7160e01b8652601188528686fd5b634e487b7160e01b8652601288528686fd5b91935091503d8086843e611b758184610fc9565b8201908383830312611c4f578251818111611c4b5783019282601f85011215611c4b57835193611ba485611918565b94611bb187519687610fc9565b808652878087019160051b83010191858311611c70578801905b828210611c535750505085810151918211611c4b570181601f82011215611c4f57805190611c04611bfb83611918565b95519586610fc9565b818552858086019260051b820101928311611c4b578501905b828210611c2f57505050388080611a18565b81518c81168103611c47578152908501908501611c1d565b8780fd5b8680fd5b8580fd5b81518060060b8103611c6c578152908801908801611bcb565b8a80fd5b8980fd5b81513d87823e3d90fd5b91946001939698999a5084975081839295511681520195019201928e979695938a9593926119e8565b60405162461bcd60e51b8152602060048201526002602482015261042560f41b6044820152606490fd5b9291909260020b906000821260001461226757600160ff1b82146111265781600003915b620d89e8831161223e576001831615612234576ffffcb933bd6fad37aa2d162d1a5940015b6001600160881b03166002841661220a575b6004938481166121de575b600881166121b2575b60108116612186575b6020811661215a575b6040811661212e575b608090818116612103575b61010081166120d8575b61020081166120ad575b6104008116612082575b6108008116612057575b611000811661202c575b6120008116612001575b6140008116611fd6575b6180008116611fab575b620100008116611f80575b620200008116611f56575b620400008116611f18575b6208000016611edd575b5090600012611eb9575b63ffffffff8160201c911615600014611eb05760ff60005b168101809111611e9b576001600160a01b03908116936001600160801b0393848611611e6f5785800295808704811490151715611e5a5750811691161015611e5057611123921690612407565b611123921661238c565b601190634e487b7160e01b6000525260246000fd5b5093611e7c81839261226d565b941691161015611e9157611123921690612341565b61112392166122b8565b601183634e487b7160e01b6000525260246000fd5b60ff6001611e03565b8015611ec85760001904611deb565b601283634e487b7160e01b6000525260246000fd5b6b048a170391f7dc42444e8fa291828102928184041490151715611f03571c6000611de1565b601185634e487b7160e01b6000525260246000fd5b916d2216e584f5fa1ea926041bedfe9890818102918183041490151715611f4157811c91611dd7565b601186634e487b7160e01b6000525260246000fd5b916e5d6af8dedb81196699c329225ee60490818102918183041490151715611f4157811c91611dcc565b916f09aa508b5b7a84e1c677de54f3e99bc990818102918183041490151715611f4157811c91611dc1565b916f31be135f97d08fd981231505542fcfa690818102918183041490151715611f4157811c91611db6565b916f70d869a156d2a1b890bb3df62baf32f790818102918183041490151715611f4157811c91611dac565b916fa9f746462d870fdf8a65dc1f90e061e590818102918183041490151715611f4157811c91611da2565b916fd097f3bdfd2022b8845ad8f792aa582590818102918183041490151715611f4157811c91611d98565b916fe7159475a2c29b7443b29c7fa6e889d990818102918183041490151715611f4157811c91611d8e565b916ff3392b0822b70005940c7a398e4b70f390818102918183041490151715611f4157811c91611d84565b916ff987a7253ac413176f2b074cf7815e5490818102918183041490151715611f4157811c91611d7a565b916ffcbe86c7900a88aedcffc83b479aa3a490818102918183041490151715611f4157811c91611d70565b916ffe5dee046a99a2a811c461f1969c305390818102918183041490151715611f4157811c91611d66565b906fff2ea16466c96a3843ec78b326b5286190818102918183041490151715611f035760801c90611d5b565b906fff973b41fa98c081472e6896dfb254c090818102918183041490151715611f035760801c90611d52565b906fffcb9843d60f6159c9db58835c92664490818102918183041490151715611f035760801c90611d49565b906fffe5caca7e10e4e61c3624eaa0941cd090818102918183041490151715611f035760801c90611d40565b906ffff2e50f5f656932ef12357cf3c7fdcc90818102918183041490151715611f035760801c90611d37565b6ffff97272373d413259a46990580e213a908181029181830414901517156111265760801c611d2c565b600160801b611d1a565b60405162461bcd60e51b81526020600482015260016024820152601560fa1b6044820152606490fd5b81611cf5565b60001982820990828102928380841093039183830393600093146122ad57600160401b928484111561139a57500990828211900360c01b910360401c1790565b505090505060401c90565b600160801b91600019828409928260801b9283808610950394808603951461233357848311156101685782910981806000031680920460028082600302188083028203028083028203028083028203028083028203028083028203028092029003029360018380600003040190848311900302920304170290565b505080925015610168570490565b600019828209908281029283808410930391838303936000931461238157600160801b928484111561139a57500990828211900360801b910360801c1790565b505090505060801c90565b600160c01b91600019828409928260c01b9283808610950394808603951461233357848311156101685782910981806000031680920460028082600302188083028203028083028203028083028203028083028203028083028203028092029003029360018380600003040190848311900302920304170290565b600019828209908281029283808410930391838303936000931461244757600160c01b928484111561139a57500990828211900360401b910360c01c1790565b505090505060c01c9056fe8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0a264697066735822122059319bbddb7110d1a516d690f76a5575b76eba218f17e6ece5668909223855b664736f6c63430008120033", - "deployedBytecode": "0x608080604052600436101561001357600080fd5b60003560e01c908163089fe6aa14610ec4575080631a16321014610e9457806326d8954514610e6d5780633fa2ef5e14610dd85780635bf66e4814610d57578063715018a614610d1057806373dd250c14610cae5780637b2a8bd214610b9e5780638da5cb5b14610b75578063c31c9c0714610b30578063c45a015514610aeb578063e3c711a0146109b6578063efa84c6d1461016d5763f2fde38b146100b957600080fd5b34610168576020366003190112610168576100d2610f24565b6100da611007565b6001600160a01b03908116908115610114576000548260018060a01b031982161760005516600080516020612453833981519152600080a3005b60405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608490fd5b600080fd5b36600319016101a08112610168576101401361016857610164356001600160a01b038116900361016857610184356001600160401b03811161016857366023820112156101685780600401356101c281610fec565b916101d06040519384610fc9565b8183523660248383010111610168578160009260246020930183860137830101528060006004356001600160a01b0381168082036101685715801590610999575b1561088a57916044356001600160a01b038116810361016857935b6000608435801580158161087f575b15610703575061027591505b60a43590602435877f0000000000000000000000000000000000000000000000000000000000000000611550565b60405163095ea7b360e01b602082019081529193916000918291906102d9816102cb897f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031660248401611490565b03601f198101835282610fc9565b519082895af16102e76114ab565b816106d4575b50156106aa57511561069c575b602081805181010312610168576020015162ffffff6002541661031b61146a565b156106925730905b604051956001600160401b0361010088019081119088111761060c57610100870160409081526001600160a01b0391821688528882166020808a01918252828a0194855294831660608a0190815260808a0196875260a08a019788526101443560c08b01908152600060e08c01818152945163414bf38960e01b81529b51861660048d01529251851660248c0152945162ffffff1660448b015251831660648a015294516084890152945160a4880152905160c48701529251831660e4860152918491610104918391907f0000000000000000000000000000000000000000000000000000000000000000165af19182156105a25760009261065e575b5061042961146a565b61043e575b6040809350519182526020820152f35b507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031691803b156106225760405163095ea7b360e01b6020820190815260248201859052600060448084019190915282526080820194916001600160401b0386118187101761060c5760006040946104de828061051996819b9682978b52519082865af16104d26114ab565b816105dd575b506114f3565b855182602082019163095ea7b360e01b8352610502816102cb8c8b60248401611490565b51925af161050e6114ab565b816105ae57506114f3565b8151634d4d7cbd60e11b8152606480356004830152306024830152610164356001600160a01b0316604483015281018490526084810185905293849160a49183915af180156105a257604092600091610573575b5061042e565b6105939150833d851161059b575b61058b8183610fc9565b81019061147a565b90508361056d565b503d610581565b6040513d6000823e3d90fd5b80518015925082156105c3575b5050866104d8565b6105d692506020809183010191016114db565b86806105bb565b80518015925082156105f2575b50508a6104d8565b61060592506020809183010191016114db565b8a806105ea565b634e487b7160e01b600052604160045260246000fd5b60405162461bcd60e51b815260206004820152601460248201527314ddd85c1c195c8e881b9bc818dbdb9d1c9858dd60621b6044820152606490fd5b9091506020813d60201161068a575b8161067a60209383610fc9565b8101031261016857519083610420565b3d915061066d565b6101643590610323565b506106a5611101565b6102fa565b60405162461bcd60e51b8152602060048201526002602482015261534160f01b6044820152606490fd5b80518015925082156106e9575b5050876102ed565b6106fc92506020809183010191016114db565b87806106e1565b9060243591826107cd575b50505060643580610724575b5061027590610247565b60c4356107c35760405163442c159960e01b8152600481019190915260e4356024820152600060448201526020816064817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa80156105a257610798575b50610275905b9061071a565b602090813d83116107bc575b6107ae8183610fc9565b81010312610168578661078c565b503d6107a4565b5061027590610792565b9192509015610878575060405163442c159960e01b8152600481019190915260a4356024820152600060448201526020816064817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa9081156105a257600091610846575b505b86808061070e565b90506020813d602011610870575b8161086160209383610fc9565b8101031261016857518661083c565b3d9150610854565b905061083e565b5060c435151561023b565b50604051630cf35bdd60e41b81526024803560048301526080908290817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa9081156105a257600091610976575b50604051630cf35bdd60e41b815260643560048201529092906080816024817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa9081156105a257600091610943575b509361022c565b610965915060803d60801161096f575b61095d8183610fc9565b81019061118a565b505090508561093c565b503d610953565b61098f915060803d60801161096f5761095d8183610fc9565b50509050846108e2565b506044356001600160a01b03811690819003610168571515610211565b34610168576109c436610f58565b5050610a0d7f00000000000000000000000000000000000000000000000000000000000000006109f481846111c3565b92909160209460608101359060808782013591016112b7565b600254604051630b4c774160e11b815290949250858180610a3862ffffff8916878960048501611150565b03817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa9081156105a257600091610aa7575b50610a8d9063ffffffff610a9f9660181c1690611962565b506001600160801b0390911690611cd1565b604051908152f35b90508581813d8311610ae4575b610abe8183610fc9565b8101031261016857610a9f9463ffffffff610adb610a8d9361113c565b92505094610a75565b503d610ab4565b34610168576000366003190112610168576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b34610168576000366003190112610168576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b34610168576000366003190112610168576000546040516001600160a01b039091168152602090f35b346101685760c036600319011261016857610caa610bba610f3a565b610bc2610f49565b90610bcb6110bd565b50610bd46110bd565b91610bdd61105f565b9060443582526064356020830152610bf361105f565b90600082526000604083015260043560208301526024356060830152610c17611094565b93151584521515602084015283526020830152604082015260405191829182919091610120602060406101408401956060815160018060a01b03808251168852858201518689015284820151168488015201516060860152606083820151805160808801528481015160a08801528381015160c0880152015160e086015201518051151561010085015201511515910152565b0390f35b346101685760203660031901126101685760043562ffffff80821680920361016857610cd8611007565b816002549182167f2bff118b9b9e3deb4fc5204e6ba828351c954685d0b119d0e21add79f8783399600080a362ffffff191617600255005b3461016857600036600319011261016857610d29611007565b600080546001600160a01b0319811682556001600160a01b03166000805160206124538339815191528280a3005b3461016857610d6536610f58565b50507f0000000000000000000000000000000000000000000000000000000000000000610dae610d9582846111c3565b91909260209460608101359060808782013591016112b7565b509160025492604051630b4c774160e11b8152858180610a3862ffffff8916888860048501611150565b346101685760c036600319011261016857610df1610f24565b6001600160a01b0390602435828116919082900361016857610caa92610e15610f3a565b91610e1e610f49565b610e266110bd565b50610e2f6110bd565b94610e3861105f565b9360443585526064356020860152610e4e61105f565b9316835260408301526000602083015260006060830152610c17611094565b3461016857600036600319011261016857602063ffffffff60025460181c16604051908152f35b3461016857600036600319011261016857610caa610eb0611101565b604051918291602083526020830190610ee4565b346101685760003660031901126101685760209062ffffff600254168152f35b919082519283825260005b848110610f10575050826000602080949584010152601f8019910116010190565b602081830181015184830182015201610eef565b600435906001600160a01b038216820361016857565b60843590811515820361016857565b60a43590811515820361016857565b600319810161016081126101685761014013610168576004916001600160401b03916101443590838211610168578060238301121561016857818501359384116101685760248483010111610168576024019190565b604081019081106001600160401b0382111761060c57604052565b601f909101601f19168101906001600160401b0382119082101761060c57604052565b6001600160401b03811161060c57601f01601f191660200190565b6000546001600160a01b0316330361101b57565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b60405190608082016001600160401b0381118382101761060c5760405260006060838281528260208201528260408201520152565b60408051919082016001600160401b0381118382101761060c5760405260006020838281520152565b60405190606082016001600160401b0381118382101761060c57604052816110e361105f565b81526110ed61105f565b602082015260406110fc611094565b910152565b610e104201804211611126576040519060208201526020815261112381610fae565b90565b634e487b7160e01b600052601160045260246000fd5b51906001600160a01b038216820361016857565b6001600160a01b0391821681529116602082015262ffffff909116604082015260600190565b356001600160a01b03811681036101685790565b9190826080910312610168578151600581101561016857916111ae6020820161113c565b9160606111bd6040840161113c565b92015190565b91906001600160a01b0390816111d885611176565b16158015906112a1575b156111fe57505061112360406111f784611176565b9301611176565b1691604051630cf35bdd60e41b90818152602083013560048201526080928382602481895afa9182156105a2576060938593602492600091611280575b509760405195869485938452013560048301525afa9182156105a25760009261126357505090565b6112799250803d1061096f5761095d8183610fc9565b5050905090565b6112979150853d871161096f5761095d8183610fc9565b505090503861123b565b50816112af60408601611176565b1615156111e2565b93928435926000928392839291861580158161145d575b156112e3575050505050505060409092013590565b819293949699959897916113bb575b50505081611301575b50505050565b909192939450604083013580156000146113b1575060405163442c159960e01b8152600481019290925260609092013560248201526044810183905290602090829060649082906001600160a01b03165afa9182156113a557809261136e575b50505b90388080806112fb565b9091506020823d821161139d575b8161138960209383610fc9565b8101031261139a5750513880611361565b80fd5b3d915061137c565b604051903d90823e3d90fd5b9350505050611364565b929850909115611456575060405163442c159960e01b81526004810191909152602083810135602483015260448201859052816064816001600160a01b038b165afa90811561144b578491611416575b505b953880806112f2565b90506020813d8211611443575b8161143060209383610fc9565b8101031261143f57513861140b565b8380fd5b3d9150611423565b6040513d86823e3d90fd5b905061140d565b5060408a013515156112ce565b6101243580151581036101685790565b9190826040910312610168576020825192015190565b6001600160a01b039091168152602081019190915260400190565b3d156114d6573d906114bc82610fec565b916114ca6040519384610fc9565b82523d6000602084013e565b606090565b90816020910312610168575180151581036101685790565b156114fa57565b60405162461bcd60e51b815260206004820152602860248201527f42617365537761707065723a3a73616665417070726f76653a20617070726f76604482015267194819985a5b195960c21b6064820152608490fd5b93919092936101043580151581036101685761180a5750505081156117ce5760018060a01b031690604080516370a0823160e01b8082526004923084840152602091602495838588818b5afa9485156117c357600095611794575b5082516323b872dd60e01b858201908152338983015230604483015260648083019390935291815260a0810191906001600160401b0383118184101761178057916000808b61164094828a9897868b5261160487610fae565b8987527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c656460c082015251925af16116396114ab565b908b61187b565b80518061170c575b505086835180998193825230898301525afa958615611701576000966116d2575b5082861115611695575050830392831161168257505090565b601190634e487b7160e01b600052526000fd5b5162461bcd60e51b8152808401919091526018818501527714ddd85c1c195c8e881d1c985b9cd9995c8819985a5b195960421b6044820152606490fd5b90958282813d83116116fa575b6116e98183610fc9565b8101031261139a5750519438611669565b503d6116df565b50513d6000823e3d90fd5b928061171d939483010191016114db565b1561172b5782903880611648565b815162461bcd60e51b8152808601849052602a818801527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608490fd5b88604189634e487b7160e01b600052526000fd5b90948482813d83116117bc575b6117ab8183610fc9565b8101031261139a57505193386115ab565b503d6117a1565b83513d6000823e3d90fd5b60405162461bcd60e51b81526020600482015260146024820152730537761707065723a20616d6f756e7420697320360641b6044820152606490fd5b6040935090600060a492859694965196879586946311a5cc7760e31b865260048601523060248601523060448601526064850152608484015260018060a01b03165af19081156105a25760009161185f575090565b611877915060403d811161059b5761058b8183610fc9565b5090565b919290156118dd575081511561188f575090565b3b156118985790565b60405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606490fd5b8251909150156118f05750805190602001fd5b60405162461bcd60e51b815260206004820152908190611914906024830190610ee4565b0390fd5b6001600160401b03811161060c5760051b60200190565b80511561193c5760200190565b634e487b7160e01b600052603260045260246000fd5b80516001101561193c5760400190565b63ffffffff92918316908115611ca75760408051909490916001600160401b03606084018181118582101761060c5787929752600284526020908185019083368337866119ae8761192f565b52600093846119bc88611952565b528481519a8b9463883bdbfd60e01b865260249889870160049b898d8a01525180915260448801929185905b8a838310611c7e5750505050509085809260018060a01b039e8f910392165afa928315611c745785928694611b61575b505050611a2e611a2782611952565b519161192f565b5160060b9060060b0397667fffffffffffff1991667fffffffffffff8a13838b1217611b1c5781611a6a81611a6284611952565b51169261192f565b5116900391818311611b1c578760030b9960060b8a15611b4f576000199181148b831416611b3d578a810560020b9a8682129182611b2e575b5050611b07575b508681026001600160c01b031696870403611af557901b600160201b600160c01b0316928315611ae55750505090046001600160801b031690565b634e487b7160e01b825260129052fd5b5050634e487b7160e01b815260118352fd5b9098627fffff198114611b1c57019738611aaa565b634e487b7160e01b8552601187528585fd5b0760060b151590503880611aa3565b634e487b7160e01b8652601188528686fd5b634e487b7160e01b8652601288528686fd5b91935091503d8086843e611b758184610fc9565b8201908383830312611c4f578251818111611c4b5783019282601f85011215611c4b57835193611ba485611918565b94611bb187519687610fc9565b808652878087019160051b83010191858311611c70578801905b828210611c535750505085810151918211611c4b570181601f82011215611c4f57805190611c04611bfb83611918565b95519586610fc9565b818552858086019260051b820101928311611c4b578501905b828210611c2f57505050388080611a18565b81518c81168103611c47578152908501908501611c1d565b8780fd5b8680fd5b8580fd5b81518060060b8103611c6c578152908801908801611bcb565b8a80fd5b8980fd5b81513d87823e3d90fd5b91946001939698999a5084975081839295511681520195019201928e979695938a9593926119e8565b60405162461bcd60e51b8152602060048201526002602482015261042560f41b6044820152606490fd5b9291909260020b906000821260001461226757600160ff1b82146111265781600003915b620d89e8831161223e576001831615612234576ffffcb933bd6fad37aa2d162d1a5940015b6001600160881b03166002841661220a575b6004938481166121de575b600881166121b2575b60108116612186575b6020811661215a575b6040811661212e575b608090818116612103575b61010081166120d8575b61020081166120ad575b6104008116612082575b6108008116612057575b611000811661202c575b6120008116612001575b6140008116611fd6575b6180008116611fab575b620100008116611f80575b620200008116611f56575b620400008116611f18575b6208000016611edd575b5090600012611eb9575b63ffffffff8160201c911615600014611eb05760ff60005b168101809111611e9b576001600160a01b03908116936001600160801b0393848611611e6f5785800295808704811490151715611e5a5750811691161015611e5057611123921690612407565b611123921661238c565b601190634e487b7160e01b6000525260246000fd5b5093611e7c81839261226d565b941691161015611e9157611123921690612341565b61112392166122b8565b601183634e487b7160e01b6000525260246000fd5b60ff6001611e03565b8015611ec85760001904611deb565b601283634e487b7160e01b6000525260246000fd5b6b048a170391f7dc42444e8fa291828102928184041490151715611f03571c6000611de1565b601185634e487b7160e01b6000525260246000fd5b916d2216e584f5fa1ea926041bedfe9890818102918183041490151715611f4157811c91611dd7565b601186634e487b7160e01b6000525260246000fd5b916e5d6af8dedb81196699c329225ee60490818102918183041490151715611f4157811c91611dcc565b916f09aa508b5b7a84e1c677de54f3e99bc990818102918183041490151715611f4157811c91611dc1565b916f31be135f97d08fd981231505542fcfa690818102918183041490151715611f4157811c91611db6565b916f70d869a156d2a1b890bb3df62baf32f790818102918183041490151715611f4157811c91611dac565b916fa9f746462d870fdf8a65dc1f90e061e590818102918183041490151715611f4157811c91611da2565b916fd097f3bdfd2022b8845ad8f792aa582590818102918183041490151715611f4157811c91611d98565b916fe7159475a2c29b7443b29c7fa6e889d990818102918183041490151715611f4157811c91611d8e565b916ff3392b0822b70005940c7a398e4b70f390818102918183041490151715611f4157811c91611d84565b916ff987a7253ac413176f2b074cf7815e5490818102918183041490151715611f4157811c91611d7a565b916ffcbe86c7900a88aedcffc83b479aa3a490818102918183041490151715611f4157811c91611d70565b916ffe5dee046a99a2a811c461f1969c305390818102918183041490151715611f4157811c91611d66565b906fff2ea16466c96a3843ec78b326b5286190818102918183041490151715611f035760801c90611d5b565b906fff973b41fa98c081472e6896dfb254c090818102918183041490151715611f035760801c90611d52565b906fffcb9843d60f6159c9db58835c92664490818102918183041490151715611f035760801c90611d49565b906fffe5caca7e10e4e61c3624eaa0941cd090818102918183041490151715611f035760801c90611d40565b906ffff2e50f5f656932ef12357cf3c7fdcc90818102918183041490151715611f035760801c90611d37565b6ffff97272373d413259a46990580e213a908181029181830414901517156111265760801c611d2c565b600160801b611d1a565b60405162461bcd60e51b81526020600482015260016024820152601560fa1b6044820152606490fd5b81611cf5565b60001982820990828102928380841093039183830393600093146122ad57600160401b928484111561139a57500990828211900360c01b910360401c1790565b505090505060401c90565b600160801b91600019828409928260801b9283808610950394808603951461233357848311156101685782910981806000031680920460028082600302188083028203028083028203028083028203028083028203028083028203028092029003029360018380600003040190848311900302920304170290565b505080925015610168570490565b600019828209908281029283808410930391838303936000931461238157600160801b928484111561139a57500990828211900360801b910360801c1790565b505090505060801c90565b600160c01b91600019828409928260c01b9283808610950394808603951461233357848311156101685782910981806000031680920460028082600302188083028203028083028203028083028203028083028203028083028203028092029003029360018380600003040190848311900302920304170290565b600019828209908281029283808410930391838303936000931461244757600160c01b928484111561139a57500990828211900360401b910360c01c1790565b505090505060c01c9056fe8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0a264697066735822122059319bbddb7110d1a516d690f76a5575b76eba218f17e6ece5668909223855b664736f6c63430008120033", + "bytecode": "0x60e0346200016a57601f6200267b38819003918201601f19168301916001600160401b038311848410176200016f578084926060946040528339810103126200016a5780516001600160a01b038082169291908382036200016a57602083015192818416908185036200016a576040015194828616918287036200016a57620000e8620000e892620000f095600054903360018060a01b03198316176000553391167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a360018055633c000bb866ffffffffffffff196002541617600255151562000185565b151562000185565b60805260a05260c0526040516124a89081620001d38239608051818181610251015281816104410152818161075701528181610803015281816108a901528181610903015281816109cb0152610d69015260a05181818161029a015281816103ef0152610b46015260c051818181610a3c0152610b010152f35b600080fd5b634e487b7160e01b600052604160045260246000fd5b156200018d57565b60405162461bcd60e51b815260206004820152601a60248201527f537761707065723a2061646472657373206e6f742076616c69640000000000006044820152606490fdfe608080604052600436101561001357600080fd5b60003560e01c908163089fe6aa14610ec4575080631a16321014610e9457806326d8954514610e6d5780633fa2ef5e14610dd85780635bf66e4814610d57578063715018a614610d1057806373dd250c14610cae5780637b2a8bd214610b9e5780638da5cb5b14610b75578063c31c9c0714610b30578063c45a015514610aeb578063e3c711a0146109b6578063efa84c6d1461016d5763f2fde38b146100b957600080fd5b34610168576020366003190112610168576100d2610f24565b6100da611007565b6001600160a01b03908116908115610114576000548260018060a01b031982161760005516600080516020612453833981519152600080a3005b60405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608490fd5b600080fd5b36600319016101a08112610168576101401361016857610164356001600160a01b038116900361016857610184356001600160401b03811161016857366023820112156101685780600401356101c281610fec565b916101d06040519384610fc9565b8183523660248383010111610168578160009260246020930183860137830101528060006004356001600160a01b0381168082036101685715801590610999575b1561088a57916044356001600160a01b038116810361016857935b6000608435801580158161087f575b15610703575061027591505b60a43590602435877f0000000000000000000000000000000000000000000000000000000000000000611550565b60405163095ea7b360e01b602082019081529193916000918291906102d9816102cb897f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031660248401611490565b03601f198101835282610fc9565b519082895af16102e76114ab565b816106d4575b50156106aa57511561069c575b602081805181010312610168576020015162ffffff6002541661031b61146a565b156106925730905b604051956001600160401b0361010088019081119088111761060c57610100870160409081526001600160a01b0391821688528882166020808a01918252828a0194855294831660608a0190815260808a0196875260a08a019788526101443560c08b01908152600060e08c01818152945163414bf38960e01b81529b51861660048d01529251851660248c0152945162ffffff1660448b015251831660648a015294516084890152945160a4880152905160c48701529251831660e4860152918491610104918391907f0000000000000000000000000000000000000000000000000000000000000000165af19182156105a25760009261065e575b5061042961146a565b61043e575b6040809350519182526020820152f35b507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031691803b156106225760405163095ea7b360e01b6020820190815260248201859052600060448084019190915282526080820194916001600160401b0386118187101761060c5760006040946104de828061051996819b9682978b52519082865af16104d26114ab565b816105dd575b506114f3565b855182602082019163095ea7b360e01b8352610502816102cb8c8b60248401611490565b51925af161050e6114ab565b816105ae57506114f3565b8151634d4d7cbd60e11b8152606480356004830152306024830152610164356001600160a01b0316604483015281018490526084810185905293849160a49183915af180156105a257604092600091610573575b5061042e565b6105939150833d851161059b575b61058b8183610fc9565b81019061147a565b90508361056d565b503d610581565b6040513d6000823e3d90fd5b80518015925082156105c3575b5050866104d8565b6105d692506020809183010191016114db565b86806105bb565b80518015925082156105f2575b50508a6104d8565b61060592506020809183010191016114db565b8a806105ea565b634e487b7160e01b600052604160045260246000fd5b60405162461bcd60e51b815260206004820152601460248201527314ddd85c1c195c8e881b9bc818dbdb9d1c9858dd60621b6044820152606490fd5b9091506020813d60201161068a575b8161067a60209383610fc9565b8101031261016857519083610420565b3d915061066d565b6101643590610323565b506106a5611101565b6102fa565b60405162461bcd60e51b8152602060048201526002602482015261534160f01b6044820152606490fd5b80518015925082156106e9575b5050876102ed565b6106fc92506020809183010191016114db565b87806106e1565b9060243591826107cd575b50505060643580610724575b5061027590610247565b60c4356107c35760405163442c159960e01b8152600481019190915260e4356024820152600060448201526020816064817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa80156105a257610798575b50610275905b9061071a565b602090813d83116107bc575b6107ae8183610fc9565b81010312610168578661078c565b503d6107a4565b5061027590610792565b9192509015610878575060405163442c159960e01b8152600481019190915260a4356024820152600060448201526020816064817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa9081156105a257600091610846575b505b86808061070e565b90506020813d602011610870575b8161086160209383610fc9565b8101031261016857518661083c565b3d9150610854565b905061083e565b5060c435151561023b565b50604051630cf35bdd60e41b81526024803560048301526080908290817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa9081156105a257600091610976575b50604051630cf35bdd60e41b815260643560048201529092906080816024817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa9081156105a257600091610943575b509361022c565b610965915060803d60801161096f575b61095d8183610fc9565b81019061118a565b505090508561093c565b503d610953565b61098f915060803d60801161096f5761095d8183610fc9565b50509050846108e2565b506044356001600160a01b03811690819003610168571515610211565b34610168576109c436610f58565b5050610a0d7f00000000000000000000000000000000000000000000000000000000000000006109f481846111c3565b92909160209460608101359060808782013591016112b7565b600254604051630b4c774160e11b815290949250858180610a3862ffffff8916878960048501611150565b03817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa9081156105a257600091610aa7575b50610a8d9063ffffffff610a9f9660181c1690611962565b506001600160801b0390911690611cd1565b604051908152f35b90508581813d8311610ae4575b610abe8183610fc9565b8101031261016857610a9f9463ffffffff610adb610a8d9361113c565b92505094610a75565b503d610ab4565b34610168576000366003190112610168576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b34610168576000366003190112610168576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b34610168576000366003190112610168576000546040516001600160a01b039091168152602090f35b346101685760c036600319011261016857610caa610bba610f3a565b610bc2610f49565b90610bcb6110bd565b50610bd46110bd565b91610bdd61105f565b9060443582526064356020830152610bf361105f565b90600082526000604083015260043560208301526024356060830152610c17611094565b93151584521515602084015283526020830152604082015260405191829182919091610120602060406101408401956060815160018060a01b03808251168852858201518689015284820151168488015201516060860152606083820151805160808801528481015160a08801528381015160c0880152015160e086015201518051151561010085015201511515910152565b0390f35b346101685760203660031901126101685760043562ffffff80821680920361016857610cd8611007565b816002549182167f2bff118b9b9e3deb4fc5204e6ba828351c954685d0b119d0e21add79f8783399600080a362ffffff191617600255005b3461016857600036600319011261016857610d29611007565b600080546001600160a01b0319811682556001600160a01b03166000805160206124538339815191528280a3005b3461016857610d6536610f58565b50507f0000000000000000000000000000000000000000000000000000000000000000610dae610d9582846111c3565b91909260209460608101359060808782013591016112b7565b509160025492604051630b4c774160e11b8152858180610a3862ffffff8916888860048501611150565b346101685760c036600319011261016857610df1610f24565b6001600160a01b0390602435828116919082900361016857610caa92610e15610f3a565b91610e1e610f49565b610e266110bd565b50610e2f6110bd565b94610e3861105f565b9360443585526064356020860152610e4e61105f565b9316835260408301526000602083015260006060830152610c17611094565b3461016857600036600319011261016857602063ffffffff60025460181c16604051908152f35b3461016857600036600319011261016857610caa610eb0611101565b604051918291602083526020830190610ee4565b346101685760003660031901126101685760209062ffffff600254168152f35b919082519283825260005b848110610f10575050826000602080949584010152601f8019910116010190565b602081830181015184830182015201610eef565b600435906001600160a01b038216820361016857565b60843590811515820361016857565b60a43590811515820361016857565b600319810161016081126101685761014013610168576004916001600160401b03916101443590838211610168578060238301121561016857818501359384116101685760248483010111610168576024019190565b604081019081106001600160401b0382111761060c57604052565b601f909101601f19168101906001600160401b0382119082101761060c57604052565b6001600160401b03811161060c57601f01601f191660200190565b6000546001600160a01b0316330361101b57565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b60405190608082016001600160401b0381118382101761060c5760405260006060838281528260208201528260408201520152565b60408051919082016001600160401b0381118382101761060c5760405260006020838281520152565b60405190606082016001600160401b0381118382101761060c57604052816110e361105f565b81526110ed61105f565b602082015260406110fc611094565b910152565b610e104201804211611126576040519060208201526020815261112381610fae565b90565b634e487b7160e01b600052601160045260246000fd5b51906001600160a01b038216820361016857565b6001600160a01b0391821681529116602082015262ffffff909116604082015260600190565b356001600160a01b03811681036101685790565b9190826080910312610168578151600581101561016857916111ae6020820161113c565b9160606111bd6040840161113c565b92015190565b91906001600160a01b0390816111d885611176565b16158015906112a1575b156111fe57505061112360406111f784611176565b9301611176565b1691604051630cf35bdd60e41b90818152602083013560048201526080928382602481895afa9182156105a2576060938593602492600091611280575b509760405195869485938452013560048301525afa9182156105a25760009261126357505090565b6112799250803d1061096f5761095d8183610fc9565b5050905090565b6112979150853d871161096f5761095d8183610fc9565b505090503861123b565b50816112af60408601611176565b1615156111e2565b93928435926000928392839291861580158161145d575b156112e3575050505050505060409092013590565b819293949699959897916113bb575b50505081611301575b50505050565b909192939450604083013580156000146113b1575060405163442c159960e01b8152600481019290925260609092013560248201526044810183905290602090829060649082906001600160a01b03165afa9182156113a557809261136e575b50505b90388080806112fb565b9091506020823d821161139d575b8161138960209383610fc9565b8101031261139a5750513880611361565b80fd5b3d915061137c565b604051903d90823e3d90fd5b9350505050611364565b929850909115611456575060405163442c159960e01b81526004810191909152602083810135602483015260448201859052816064816001600160a01b038b165afa90811561144b578491611416575b505b953880806112f2565b90506020813d8211611443575b8161143060209383610fc9565b8101031261143f57513861140b565b8380fd5b3d9150611423565b6040513d86823e3d90fd5b905061140d565b5060408a013515156112ce565b6101243580151581036101685790565b9190826040910312610168576020825192015190565b6001600160a01b039091168152602081019190915260400190565b3d156114d6573d906114bc82610fec565b916114ca6040519384610fc9565b82523d6000602084013e565b606090565b90816020910312610168575180151581036101685790565b156114fa57565b60405162461bcd60e51b815260206004820152602860248201527f42617365537761707065723a3a73616665417070726f76653a20617070726f76604482015267194819985a5b195960c21b6064820152608490fd5b93919092936101043580151581036101685761180a5750505081156117ce5760018060a01b031690604080516370a0823160e01b8082526004923084840152602091602495838588818b5afa9485156117c357600095611794575b5082516323b872dd60e01b858201908152338983015230604483015260648083019390935291815260a0810191906001600160401b0383118184101761178057916000808b61164094828a9897868b5261160487610fae565b8987527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c656460c082015251925af16116396114ab565b908b61187b565b80518061170c575b505086835180998193825230898301525afa958615611701576000966116d2575b5082861115611695575050830392831161168257505090565b601190634e487b7160e01b600052526000fd5b5162461bcd60e51b8152808401919091526018818501527714ddd85c1c195c8e881d1c985b9cd9995c8819985a5b195960421b6044820152606490fd5b90958282813d83116116fa575b6116e98183610fc9565b8101031261139a5750519438611669565b503d6116df565b50513d6000823e3d90fd5b928061171d939483010191016114db565b1561172b5782903880611648565b815162461bcd60e51b8152808601849052602a818801527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608490fd5b88604189634e487b7160e01b600052526000fd5b90948482813d83116117bc575b6117ab8183610fc9565b8101031261139a57505193386115ab565b503d6117a1565b83513d6000823e3d90fd5b60405162461bcd60e51b81526020600482015260146024820152730537761707065723a20616d6f756e7420697320360641b6044820152606490fd5b6040935090600060a492859694965196879586946311a5cc7760e31b865260048601523060248601523060448601526064850152608484015260018060a01b03165af19081156105a25760009161185f575090565b611877915060403d811161059b5761058b8183610fc9565b5090565b919290156118dd575081511561188f575090565b3b156118985790565b60405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606490fd5b8251909150156118f05750805190602001fd5b60405162461bcd60e51b815260206004820152908190611914906024830190610ee4565b0390fd5b6001600160401b03811161060c5760051b60200190565b80511561193c5760200190565b634e487b7160e01b600052603260045260246000fd5b80516001101561193c5760400190565b63ffffffff92918316908115611ca75760408051909490916001600160401b03606084018181118582101761060c5787929752600284526020908185019083368337866119ae8761192f565b52600093846119bc88611952565b528481519a8b9463883bdbfd60e01b865260249889870160049b898d8a01525180915260448801929185905b8a838310611c7e5750505050509085809260018060a01b039e8f910392165afa928315611c745785928694611b61575b505050611a2e611a2782611952565b519161192f565b5160060b9060060b0397667fffffffffffff1991667fffffffffffff8a13838b1217611b1c5781611a6a81611a6284611952565b51169261192f565b5116900391818311611b1c578760030b9960060b8a15611b4f576000199181148b831416611b3d578a810560020b9a8682129182611b2e575b5050611b07575b508681026001600160c01b031696870403611af557901b600160201b600160c01b0316928315611ae55750505090046001600160801b031690565b634e487b7160e01b825260129052fd5b5050634e487b7160e01b815260118352fd5b9098627fffff198114611b1c57019738611aaa565b634e487b7160e01b8552601187528585fd5b0760060b151590503880611aa3565b634e487b7160e01b8652601188528686fd5b634e487b7160e01b8652601288528686fd5b91935091503d8086843e611b758184610fc9565b8201908383830312611c4f578251818111611c4b5783019282601f85011215611c4b57835193611ba485611918565b94611bb187519687610fc9565b808652878087019160051b83010191858311611c70578801905b828210611c535750505085810151918211611c4b570181601f82011215611c4f57805190611c04611bfb83611918565b95519586610fc9565b818552858086019260051b820101928311611c4b578501905b828210611c2f57505050388080611a18565b81518c81168103611c47578152908501908501611c1d565b8780fd5b8680fd5b8580fd5b81518060060b8103611c6c578152908801908801611bcb565b8a80fd5b8980fd5b81513d87823e3d90fd5b91946001939698999a5084975081839295511681520195019201928e979695938a9593926119e8565b60405162461bcd60e51b8152602060048201526002602482015261042560f41b6044820152606490fd5b9291909260020b906000821260001461226757600160ff1b82146111265781600003915b620d89e8831161223e576001831615612234576ffffcb933bd6fad37aa2d162d1a5940015b6001600160881b03166002841661220a575b6004938481166121de575b600881166121b2575b60108116612186575b6020811661215a575b6040811661212e575b608090818116612103575b61010081166120d8575b61020081166120ad575b6104008116612082575b6108008116612057575b611000811661202c575b6120008116612001575b6140008116611fd6575b6180008116611fab575b620100008116611f80575b620200008116611f56575b620400008116611f18575b6208000016611edd575b5090600012611eb9575b63ffffffff8160201c911615600014611eb05760ff60005b168101809111611e9b576001600160a01b03908116936001600160801b0393848611611e6f5785800295808704811490151715611e5a5750811691161015611e5057611123921690612407565b611123921661238c565b601190634e487b7160e01b6000525260246000fd5b5093611e7c81839261226d565b941691161015611e9157611123921690612341565b61112392166122b8565b601183634e487b7160e01b6000525260246000fd5b60ff6001611e03565b8015611ec85760001904611deb565b601283634e487b7160e01b6000525260246000fd5b6b048a170391f7dc42444e8fa291828102928184041490151715611f03571c6000611de1565b601185634e487b7160e01b6000525260246000fd5b916d2216e584f5fa1ea926041bedfe9890818102918183041490151715611f4157811c91611dd7565b601186634e487b7160e01b6000525260246000fd5b916e5d6af8dedb81196699c329225ee60490818102918183041490151715611f4157811c91611dcc565b916f09aa508b5b7a84e1c677de54f3e99bc990818102918183041490151715611f4157811c91611dc1565b916f31be135f97d08fd981231505542fcfa690818102918183041490151715611f4157811c91611db6565b916f70d869a156d2a1b890bb3df62baf32f790818102918183041490151715611f4157811c91611dac565b916fa9f746462d870fdf8a65dc1f90e061e590818102918183041490151715611f4157811c91611da2565b916fd097f3bdfd2022b8845ad8f792aa582590818102918183041490151715611f4157811c91611d98565b916fe7159475a2c29b7443b29c7fa6e889d990818102918183041490151715611f4157811c91611d8e565b916ff3392b0822b70005940c7a398e4b70f390818102918183041490151715611f4157811c91611d84565b916ff987a7253ac413176f2b074cf7815e5490818102918183041490151715611f4157811c91611d7a565b916ffcbe86c7900a88aedcffc83b479aa3a490818102918183041490151715611f4157811c91611d70565b916ffe5dee046a99a2a811c461f1969c305390818102918183041490151715611f4157811c91611d66565b906fff2ea16466c96a3843ec78b326b5286190818102918183041490151715611f035760801c90611d5b565b906fff973b41fa98c081472e6896dfb254c090818102918183041490151715611f035760801c90611d52565b906fffcb9843d60f6159c9db58835c92664490818102918183041490151715611f035760801c90611d49565b906fffe5caca7e10e4e61c3624eaa0941cd090818102918183041490151715611f035760801c90611d40565b906ffff2e50f5f656932ef12357cf3c7fdcc90818102918183041490151715611f035760801c90611d37565b6ffff97272373d413259a46990580e213a908181029181830414901517156111265760801c611d2c565b600160801b611d1a565b60405162461bcd60e51b81526020600482015260016024820152601560fa1b6044820152606490fd5b81611cf5565b60001982820990828102928380841093039183830393600093146122ad57600160401b928484111561139a57500990828211900360c01b910360401c1790565b505090505060401c90565b600160801b91600019828409928260801b9283808610950394808603951461233357848311156101685782910981806000031680920460028082600302188083028203028083028203028083028203028083028203028083028203028092029003029360018380600003040190848311900302920304170290565b505080925015610168570490565b600019828209908281029283808410930391838303936000931461238157600160801b928484111561139a57500990828211900360801b910360801c1790565b505090505060801c90565b600160c01b91600019828409928260c01b9283808610950394808603951461233357848311156101685782910981806000031680920460028082600302188083028203028083028203028083028203028083028203028083028203028092029003029360018380600003040190848311900302920304170290565b600019828209908281029283808410930391838303936000931461244757600160c01b928484111561139a57500990828211900360401b910360c01c1790565b505090505060c01c9056fe8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0a2646970667358221220962a399ed65c6ba53082a41b0c2c488e88f3f2b1f0a8c8765c5b617a9b9b2cb064736f6c63430008120033", + "deployedBytecode": "0x608080604052600436101561001357600080fd5b60003560e01c908163089fe6aa14610ec4575080631a16321014610e9457806326d8954514610e6d5780633fa2ef5e14610dd85780635bf66e4814610d57578063715018a614610d1057806373dd250c14610cae5780637b2a8bd214610b9e5780638da5cb5b14610b75578063c31c9c0714610b30578063c45a015514610aeb578063e3c711a0146109b6578063efa84c6d1461016d5763f2fde38b146100b957600080fd5b34610168576020366003190112610168576100d2610f24565b6100da611007565b6001600160a01b03908116908115610114576000548260018060a01b031982161760005516600080516020612453833981519152600080a3005b60405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608490fd5b600080fd5b36600319016101a08112610168576101401361016857610164356001600160a01b038116900361016857610184356001600160401b03811161016857366023820112156101685780600401356101c281610fec565b916101d06040519384610fc9565b8183523660248383010111610168578160009260246020930183860137830101528060006004356001600160a01b0381168082036101685715801590610999575b1561088a57916044356001600160a01b038116810361016857935b6000608435801580158161087f575b15610703575061027591505b60a43590602435877f0000000000000000000000000000000000000000000000000000000000000000611550565b60405163095ea7b360e01b602082019081529193916000918291906102d9816102cb897f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031660248401611490565b03601f198101835282610fc9565b519082895af16102e76114ab565b816106d4575b50156106aa57511561069c575b602081805181010312610168576020015162ffffff6002541661031b61146a565b156106925730905b604051956001600160401b0361010088019081119088111761060c57610100870160409081526001600160a01b0391821688528882166020808a01918252828a0194855294831660608a0190815260808a0196875260a08a019788526101443560c08b01908152600060e08c01818152945163414bf38960e01b81529b51861660048d01529251851660248c0152945162ffffff1660448b015251831660648a015294516084890152945160a4880152905160c48701529251831660e4860152918491610104918391907f0000000000000000000000000000000000000000000000000000000000000000165af19182156105a25760009261065e575b5061042961146a565b61043e575b6040809350519182526020820152f35b507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031691803b156106225760405163095ea7b360e01b6020820190815260248201859052600060448084019190915282526080820194916001600160401b0386118187101761060c5760006040946104de828061051996819b9682978b52519082865af16104d26114ab565b816105dd575b506114f3565b855182602082019163095ea7b360e01b8352610502816102cb8c8b60248401611490565b51925af161050e6114ab565b816105ae57506114f3565b8151634d4d7cbd60e11b8152606480356004830152306024830152610164356001600160a01b0316604483015281018490526084810185905293849160a49183915af180156105a257604092600091610573575b5061042e565b6105939150833d851161059b575b61058b8183610fc9565b81019061147a565b90508361056d565b503d610581565b6040513d6000823e3d90fd5b80518015925082156105c3575b5050866104d8565b6105d692506020809183010191016114db565b86806105bb565b80518015925082156105f2575b50508a6104d8565b61060592506020809183010191016114db565b8a806105ea565b634e487b7160e01b600052604160045260246000fd5b60405162461bcd60e51b815260206004820152601460248201527314ddd85c1c195c8e881b9bc818dbdb9d1c9858dd60621b6044820152606490fd5b9091506020813d60201161068a575b8161067a60209383610fc9565b8101031261016857519083610420565b3d915061066d565b6101643590610323565b506106a5611101565b6102fa565b60405162461bcd60e51b8152602060048201526002602482015261534160f01b6044820152606490fd5b80518015925082156106e9575b5050876102ed565b6106fc92506020809183010191016114db565b87806106e1565b9060243591826107cd575b50505060643580610724575b5061027590610247565b60c4356107c35760405163442c159960e01b8152600481019190915260e4356024820152600060448201526020816064817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa80156105a257610798575b50610275905b9061071a565b602090813d83116107bc575b6107ae8183610fc9565b81010312610168578661078c565b503d6107a4565b5061027590610792565b9192509015610878575060405163442c159960e01b8152600481019190915260a4356024820152600060448201526020816064817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa9081156105a257600091610846575b505b86808061070e565b90506020813d602011610870575b8161086160209383610fc9565b8101031261016857518661083c565b3d9150610854565b905061083e565b5060c435151561023b565b50604051630cf35bdd60e41b81526024803560048301526080908290817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa9081156105a257600091610976575b50604051630cf35bdd60e41b815260643560048201529092906080816024817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa9081156105a257600091610943575b509361022c565b610965915060803d60801161096f575b61095d8183610fc9565b81019061118a565b505090508561093c565b503d610953565b61098f915060803d60801161096f5761095d8183610fc9565b50509050846108e2565b506044356001600160a01b03811690819003610168571515610211565b34610168576109c436610f58565b5050610a0d7f00000000000000000000000000000000000000000000000000000000000000006109f481846111c3565b92909160209460608101359060808782013591016112b7565b600254604051630b4c774160e11b815290949250858180610a3862ffffff8916878960048501611150565b03817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa9081156105a257600091610aa7575b50610a8d9063ffffffff610a9f9660181c1690611962565b506001600160801b0390911690611cd1565b604051908152f35b90508581813d8311610ae4575b610abe8183610fc9565b8101031261016857610a9f9463ffffffff610adb610a8d9361113c565b92505094610a75565b503d610ab4565b34610168576000366003190112610168576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b34610168576000366003190112610168576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b34610168576000366003190112610168576000546040516001600160a01b039091168152602090f35b346101685760c036600319011261016857610caa610bba610f3a565b610bc2610f49565b90610bcb6110bd565b50610bd46110bd565b91610bdd61105f565b9060443582526064356020830152610bf361105f565b90600082526000604083015260043560208301526024356060830152610c17611094565b93151584521515602084015283526020830152604082015260405191829182919091610120602060406101408401956060815160018060a01b03808251168852858201518689015284820151168488015201516060860152606083820151805160808801528481015160a08801528381015160c0880152015160e086015201518051151561010085015201511515910152565b0390f35b346101685760203660031901126101685760043562ffffff80821680920361016857610cd8611007565b816002549182167f2bff118b9b9e3deb4fc5204e6ba828351c954685d0b119d0e21add79f8783399600080a362ffffff191617600255005b3461016857600036600319011261016857610d29611007565b600080546001600160a01b0319811682556001600160a01b03166000805160206124538339815191528280a3005b3461016857610d6536610f58565b50507f0000000000000000000000000000000000000000000000000000000000000000610dae610d9582846111c3565b91909260209460608101359060808782013591016112b7565b509160025492604051630b4c774160e11b8152858180610a3862ffffff8916888860048501611150565b346101685760c036600319011261016857610df1610f24565b6001600160a01b0390602435828116919082900361016857610caa92610e15610f3a565b91610e1e610f49565b610e266110bd565b50610e2f6110bd565b94610e3861105f565b9360443585526064356020860152610e4e61105f565b9316835260408301526000602083015260006060830152610c17611094565b3461016857600036600319011261016857602063ffffffff60025460181c16604051908152f35b3461016857600036600319011261016857610caa610eb0611101565b604051918291602083526020830190610ee4565b346101685760003660031901126101685760209062ffffff600254168152f35b919082519283825260005b848110610f10575050826000602080949584010152601f8019910116010190565b602081830181015184830182015201610eef565b600435906001600160a01b038216820361016857565b60843590811515820361016857565b60a43590811515820361016857565b600319810161016081126101685761014013610168576004916001600160401b03916101443590838211610168578060238301121561016857818501359384116101685760248483010111610168576024019190565b604081019081106001600160401b0382111761060c57604052565b601f909101601f19168101906001600160401b0382119082101761060c57604052565b6001600160401b03811161060c57601f01601f191660200190565b6000546001600160a01b0316330361101b57565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b60405190608082016001600160401b0381118382101761060c5760405260006060838281528260208201528260408201520152565b60408051919082016001600160401b0381118382101761060c5760405260006020838281520152565b60405190606082016001600160401b0381118382101761060c57604052816110e361105f565b81526110ed61105f565b602082015260406110fc611094565b910152565b610e104201804211611126576040519060208201526020815261112381610fae565b90565b634e487b7160e01b600052601160045260246000fd5b51906001600160a01b038216820361016857565b6001600160a01b0391821681529116602082015262ffffff909116604082015260600190565b356001600160a01b03811681036101685790565b9190826080910312610168578151600581101561016857916111ae6020820161113c565b9160606111bd6040840161113c565b92015190565b91906001600160a01b0390816111d885611176565b16158015906112a1575b156111fe57505061112360406111f784611176565b9301611176565b1691604051630cf35bdd60e41b90818152602083013560048201526080928382602481895afa9182156105a2576060938593602492600091611280575b509760405195869485938452013560048301525afa9182156105a25760009261126357505090565b6112799250803d1061096f5761095d8183610fc9565b5050905090565b6112979150853d871161096f5761095d8183610fc9565b505090503861123b565b50816112af60408601611176565b1615156111e2565b93928435926000928392839291861580158161145d575b156112e3575050505050505060409092013590565b819293949699959897916113bb575b50505081611301575b50505050565b909192939450604083013580156000146113b1575060405163442c159960e01b8152600481019290925260609092013560248201526044810183905290602090829060649082906001600160a01b03165afa9182156113a557809261136e575b50505b90388080806112fb565b9091506020823d821161139d575b8161138960209383610fc9565b8101031261139a5750513880611361565b80fd5b3d915061137c565b604051903d90823e3d90fd5b9350505050611364565b929850909115611456575060405163442c159960e01b81526004810191909152602083810135602483015260448201859052816064816001600160a01b038b165afa90811561144b578491611416575b505b953880806112f2565b90506020813d8211611443575b8161143060209383610fc9565b8101031261143f57513861140b565b8380fd5b3d9150611423565b6040513d86823e3d90fd5b905061140d565b5060408a013515156112ce565b6101243580151581036101685790565b9190826040910312610168576020825192015190565b6001600160a01b039091168152602081019190915260400190565b3d156114d6573d906114bc82610fec565b916114ca6040519384610fc9565b82523d6000602084013e565b606090565b90816020910312610168575180151581036101685790565b156114fa57565b60405162461bcd60e51b815260206004820152602860248201527f42617365537761707065723a3a73616665417070726f76653a20617070726f76604482015267194819985a5b195960c21b6064820152608490fd5b93919092936101043580151581036101685761180a5750505081156117ce5760018060a01b031690604080516370a0823160e01b8082526004923084840152602091602495838588818b5afa9485156117c357600095611794575b5082516323b872dd60e01b858201908152338983015230604483015260648083019390935291815260a0810191906001600160401b0383118184101761178057916000808b61164094828a9897868b5261160487610fae565b8987527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c656460c082015251925af16116396114ab565b908b61187b565b80518061170c575b505086835180998193825230898301525afa958615611701576000966116d2575b5082861115611695575050830392831161168257505090565b601190634e487b7160e01b600052526000fd5b5162461bcd60e51b8152808401919091526018818501527714ddd85c1c195c8e881d1c985b9cd9995c8819985a5b195960421b6044820152606490fd5b90958282813d83116116fa575b6116e98183610fc9565b8101031261139a5750519438611669565b503d6116df565b50513d6000823e3d90fd5b928061171d939483010191016114db565b1561172b5782903880611648565b815162461bcd60e51b8152808601849052602a818801527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608490fd5b88604189634e487b7160e01b600052526000fd5b90948482813d83116117bc575b6117ab8183610fc9565b8101031261139a57505193386115ab565b503d6117a1565b83513d6000823e3d90fd5b60405162461bcd60e51b81526020600482015260146024820152730537761707065723a20616d6f756e7420697320360641b6044820152606490fd5b6040935090600060a492859694965196879586946311a5cc7760e31b865260048601523060248601523060448601526064850152608484015260018060a01b03165af19081156105a25760009161185f575090565b611877915060403d811161059b5761058b8183610fc9565b5090565b919290156118dd575081511561188f575090565b3b156118985790565b60405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606490fd5b8251909150156118f05750805190602001fd5b60405162461bcd60e51b815260206004820152908190611914906024830190610ee4565b0390fd5b6001600160401b03811161060c5760051b60200190565b80511561193c5760200190565b634e487b7160e01b600052603260045260246000fd5b80516001101561193c5760400190565b63ffffffff92918316908115611ca75760408051909490916001600160401b03606084018181118582101761060c5787929752600284526020908185019083368337866119ae8761192f565b52600093846119bc88611952565b528481519a8b9463883bdbfd60e01b865260249889870160049b898d8a01525180915260448801929185905b8a838310611c7e5750505050509085809260018060a01b039e8f910392165afa928315611c745785928694611b61575b505050611a2e611a2782611952565b519161192f565b5160060b9060060b0397667fffffffffffff1991667fffffffffffff8a13838b1217611b1c5781611a6a81611a6284611952565b51169261192f565b5116900391818311611b1c578760030b9960060b8a15611b4f576000199181148b831416611b3d578a810560020b9a8682129182611b2e575b5050611b07575b508681026001600160c01b031696870403611af557901b600160201b600160c01b0316928315611ae55750505090046001600160801b031690565b634e487b7160e01b825260129052fd5b5050634e487b7160e01b815260118352fd5b9098627fffff198114611b1c57019738611aaa565b634e487b7160e01b8552601187528585fd5b0760060b151590503880611aa3565b634e487b7160e01b8652601188528686fd5b634e487b7160e01b8652601288528686fd5b91935091503d8086843e611b758184610fc9565b8201908383830312611c4f578251818111611c4b5783019282601f85011215611c4b57835193611ba485611918565b94611bb187519687610fc9565b808652878087019160051b83010191858311611c70578801905b828210611c535750505085810151918211611c4b570181601f82011215611c4f57805190611c04611bfb83611918565b95519586610fc9565b818552858086019260051b820101928311611c4b578501905b828210611c2f57505050388080611a18565b81518c81168103611c47578152908501908501611c1d565b8780fd5b8680fd5b8580fd5b81518060060b8103611c6c578152908801908801611bcb565b8a80fd5b8980fd5b81513d87823e3d90fd5b91946001939698999a5084975081839295511681520195019201928e979695938a9593926119e8565b60405162461bcd60e51b8152602060048201526002602482015261042560f41b6044820152606490fd5b9291909260020b906000821260001461226757600160ff1b82146111265781600003915b620d89e8831161223e576001831615612234576ffffcb933bd6fad37aa2d162d1a5940015b6001600160881b03166002841661220a575b6004938481166121de575b600881166121b2575b60108116612186575b6020811661215a575b6040811661212e575b608090818116612103575b61010081166120d8575b61020081166120ad575b6104008116612082575b6108008116612057575b611000811661202c575b6120008116612001575b6140008116611fd6575b6180008116611fab575b620100008116611f80575b620200008116611f56575b620400008116611f18575b6208000016611edd575b5090600012611eb9575b63ffffffff8160201c911615600014611eb05760ff60005b168101809111611e9b576001600160a01b03908116936001600160801b0393848611611e6f5785800295808704811490151715611e5a5750811691161015611e5057611123921690612407565b611123921661238c565b601190634e487b7160e01b6000525260246000fd5b5093611e7c81839261226d565b941691161015611e9157611123921690612341565b61112392166122b8565b601183634e487b7160e01b6000525260246000fd5b60ff6001611e03565b8015611ec85760001904611deb565b601283634e487b7160e01b6000525260246000fd5b6b048a170391f7dc42444e8fa291828102928184041490151715611f03571c6000611de1565b601185634e487b7160e01b6000525260246000fd5b916d2216e584f5fa1ea926041bedfe9890818102918183041490151715611f4157811c91611dd7565b601186634e487b7160e01b6000525260246000fd5b916e5d6af8dedb81196699c329225ee60490818102918183041490151715611f4157811c91611dcc565b916f09aa508b5b7a84e1c677de54f3e99bc990818102918183041490151715611f4157811c91611dc1565b916f31be135f97d08fd981231505542fcfa690818102918183041490151715611f4157811c91611db6565b916f70d869a156d2a1b890bb3df62baf32f790818102918183041490151715611f4157811c91611dac565b916fa9f746462d870fdf8a65dc1f90e061e590818102918183041490151715611f4157811c91611da2565b916fd097f3bdfd2022b8845ad8f792aa582590818102918183041490151715611f4157811c91611d98565b916fe7159475a2c29b7443b29c7fa6e889d990818102918183041490151715611f4157811c91611d8e565b916ff3392b0822b70005940c7a398e4b70f390818102918183041490151715611f4157811c91611d84565b916ff987a7253ac413176f2b074cf7815e5490818102918183041490151715611f4157811c91611d7a565b916ffcbe86c7900a88aedcffc83b479aa3a490818102918183041490151715611f4157811c91611d70565b916ffe5dee046a99a2a811c461f1969c305390818102918183041490151715611f4157811c91611d66565b906fff2ea16466c96a3843ec78b326b5286190818102918183041490151715611f035760801c90611d5b565b906fff973b41fa98c081472e6896dfb254c090818102918183041490151715611f035760801c90611d52565b906fffcb9843d60f6159c9db58835c92664490818102918183041490151715611f035760801c90611d49565b906fffe5caca7e10e4e61c3624eaa0941cd090818102918183041490151715611f035760801c90611d40565b906ffff2e50f5f656932ef12357cf3c7fdcc90818102918183041490151715611f035760801c90611d37565b6ffff97272373d413259a46990580e213a908181029181830414901517156111265760801c611d2c565b600160801b611d1a565b60405162461bcd60e51b81526020600482015260016024820152601560fa1b6044820152606490fd5b81611cf5565b60001982820990828102928380841093039183830393600093146122ad57600160401b928484111561139a57500990828211900360c01b910360401c1790565b505090505060401c90565b600160801b91600019828409928260801b9283808610950394808603951461233357848311156101685782910981806000031680920460028082600302188083028203028083028203028083028203028083028203028083028203028092029003029360018380600003040190848311900302920304170290565b505080925015610168570490565b600019828209908281029283808410930391838303936000931461238157600160801b928484111561139a57500990828211900360801b910360801c1790565b505090505060801c90565b600160c01b91600019828409928260c01b9283808610950394808603951461233357848311156101685782910981806000031680920460028082600302188083028203028083028203028083028203028083028203028083028203028092029003029360018380600003040190848311900302920304170290565b600019828209908281029283808410930391838303936000931461244757600160c01b928484111561139a57500990828211900360401b910360c01c1790565b505090505060c01c9056fe8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0a2646970667358221220962a399ed65c6ba53082a41b0c2c488e88f3f2b1f0a8c8765c5b617a9b9b2cb064736f6c63430008120033", "linkReferences": {}, "deployedLinkReferences": {} } diff --git a/src/global__db.bak b/src/global__db.bak index e0d6303f..fd002d9c 100644 --- a/src/global__db.bak +++ b/src/global__db.bak @@ -2,6 +2,33 @@ "default": { "tapioca-bar": { "4002": [ + { + "name": "BigBang-TapiocaOFT-FTMMock", + "address": "0xC18A44deD3b29Af18120Ed651Fe6E0f4fCCF9bf7", + "meta": { + "isBigBangMarket": true, + "collateral": { + "collateralAddress": "0xB591Db28708fCCfb89C5a4dE2B13073E66f33b27", + "collateralStrategyAddress": "0xD2Bafd631a38144d8c58bA6D184eCF361B3e6719" + } + } + }, + { + "name": "OracleMock-TapiocaOFT-FTMMock", + "address": "0xcAba0Bf6fCCAc592Ea5Fa6CaD88a386A9ee193D2", + "meta": { + "args": [ + "OracleMock-TapiocaOFT-FTMMock", + "OCM-TapiocaOFT-FTMMock", + { + "type": "BigNumber", + "hex": "0x738e48b0abd10d052d5f7000000000" + } + ], + "salt": "0x40a906c69cc0320b98510fb8e5b5763172cdc2de5266a1dd6d20dee2c96960a1", + "create2": true + } + }, { "name": "Tapioca Singularity-TapiocaOFT-FTMLPMock", "address": "0x7F46542cD2bcB17E711ab801988A734488bEe115", @@ -382,6 +409,33 @@ "43113": [], "80001": [], "421613": [ + { + "name": "BigBang-TapiocaOFT-WETHMock", + "address": "0x2e2136F858600f074D57448fA43cee56a4563842", + "meta": { + "isBigBangMarket": true, + "collateral": { + "collateralAddress": "0xd384A44C510795753E92FacB3a09BD401E333c6c", + "collateralStrategyAddress": "0xd2ff30b1A716CE7d0060338DBbfAF152cA1fed25" + } + } + }, + { + "name": "OracleMock-TapiocaOFT-WETHMock", + "address": "0x394cfc69A75b755CBfDD369CEb0c0988380d9909", + "meta": { + "args": [ + "OracleMock-TapiocaOFT-WETHMock", + "OCM-TapiocaOFT-WETHMock", + { + "type": "BigNumber", + "hex": "0x106f4216d9dbb8f58c1cc8340000" + } + ], + "salt": "0x3cfc5a7a1762565f7547299d00b65d31c0d6a4d591ace5e699cf7b1068402ee6", + "create2": true + } + }, { "name": "Tapioca Singularity-TapiocaOFT-GLPMock", "address": "0x19d67955b400e17C0548108375A5932398bAf61D", diff --git a/src/typechain/tapioca-periphery/factories/contracts/LiquidationQueue/LiquidationQueue__factory.ts b/src/typechain/tapioca-periphery/factories/contracts/LiquidationQueue/LiquidationQueue__factory.ts index 2e98f09e..0d76904d 100644 --- a/src/typechain/tapioca-periphery/factories/contracts/LiquidationQueue/LiquidationQueue__factory.ts +++ b/src/typechain/tapioca-periphery/factories/contracts/LiquidationQueue/LiquidationQueue__factory.ts @@ -935,7 +935,7 @@ const _abi = [ ] as const; const _bytecode = - "0x60808060405234610016576133c5908161001c8239f35b600080fdfe608080604052600436101561001357600080fd5b600090813560e01c90816307be4daf14612cc4575080630ed4f3e914612ca65780630f41ba4b146129fc5780631259c1a1146129c3578063149c59c51461295e5780632cfbe6ba146129145780632e020d1f146128f657806336252c90146128835780633965907b14611a1a57806345baf8af146119fc57806346a7d7d9146119d5578063575939f9146119625780635c3a33931461184f57806365d387c9146114bc5780636aef9a671461111b5780636c3d8b8f146110f25780637c8be05b146110c25780637d98726b1461107a57806380f5560514610f9e57806395a2251f14610ddc578063966b583c14610d85578063a39e6a1714610d33578063a5dca46414610d0a578063bd2f6f8314610b7d578063d844f0c0146105ea578063de406577146105c1578063f50f78cd146101815763fa8e84791461015557600080fd5b3461017e57602036600319011261017e5760406020916004358152600c83522054604051908152f35b80fd5b503461017e57366003190160c081126104595760a01361017e576001600160a01b0360a4358181169081900361053c5760ff600b541661058a5760043583556024356001556044359082821680920361058657600280546001600160a01b031990811690931790556064358381169081900361053c578260035416176003556084359083821680920361053c578491836004541617600455816005548285821617600555161792604051936377607a1760e11b85526020938486600481855afa95861561057b578496610548575b50600a95865560405163226f120560e11b8152918583600481845afa92831561049c578593610511575b506009839055604051636c3d8b8f60e01b81528681600481855afa80156104e957859187916104f4575b501682600654161760065560405163de40657760e01b81528681600481855afa9182156104e95785889288946104a7575b5060049316948560075495861617600755600855604051928380926338d52e0f60e01b82525afa90811561049c57869286868194604494839161046f575b50604051978896879563095ea7b360e01b8752161760048501526000196024850152165af180156104645761042d575b5080600754169060055416813b1561041e57829160448392604051948593849263a22cb46560e01b84526004840152600160248401525af180156104225761040a575b5050825b828111156103a25783600160ff19600b541617600b5580f35b610405906103ae61321e565b63ffffffff8281168252828752600e855260408088208351815488860151958401516001600160601b0319909116919094161793871b63ffffffff60201b169390931791901b63ffffffff60401b16179055612ee3565b610389565b61041390612dcb565b61041e578238610385565b8280fd5b6040513d84823e3d90fd5b8381813d831161045d575b6104428183612e2f565b8101031261041e5751801515036104595738610342565b5080fd5b503d610438565b6040513d85823e3d90fd5b61048f9150873d8911610495575b6104878183612e2f565b810190612ec4565b38610312565b503d61047d565b6040513d87823e3d90fd5b92809294508391503d83116104e2575b6104c18183612e2f565b810103126104de575184811681036104de579086908560046102d4565b8580fd5b503d6104b7565b6040513d88823e3d90fd5b61050b9150883d8a11610495576104878183612e2f565b386102a3565b945091508484813d8111610541575b61052a8183612e2f565b8101031261053c578693519138610279565b600080fd5b503d610520565b85809297508195503d8311610574575b6105628183612e2f565b8101031261053c57859251943861024f565b503d610558565b6040513d86823e3d90fd5b8380fd5b60405162461bcd60e51b815260206004820152600f60248201526e13144e88125b9a5d1a585b1a5e9959608a1b6044820152606490fd5b503461017e578060031936011261017e576007546040516001600160a01b039091168152602090f35b503461017e5760a036600319011261017e57610604612ce5565b6084356001600160401b03811161041e57610623903690600401612d56565b61063160ff600b5416613020565b610640600a6024351115613062565b6004546001600160a01b0316908115610b3d576006546040516386c8e21d60e01b8152928691602090859060049082906001600160a01b03165afa938415610422578294610b06575b5060018060a01b036007541690604051638eb22cdd60e01b815260443560048201526064356024820152836044820152602081606481865afa90811561057b578491610ad1575b50823b156105865761070092849283604051809681958294630208d92960e11b84526044359033600486016130a5565b03925af1801561042257610ab9575b505060048054600554604051632da475e360e21b8152949260209286926001600160a01b039182169284928c928492610757928b928e926064359260443592169087016130cf565b03925af19283156104e9578693610a85575b50610772612f78565b9483604087015260006060870152426080870152600186526004600854602060018060a01b0360065416604051938480926386c8e21d60e01b82525afa918215610a7957600092610a45575b5014156020870152602435600052600c60205260016040600020019060018060a01b0316908160005260205260406000206107fc8751151582612ef2565b6020870151151561ff0082549160081b169061ff00191617815560408701516001820155606087015160028201556003608088015191015560405184815260006020820152426040820152816024359160008051602061337083398151915260603392a4600052600f602052604060002060243560005260205260406000208054600e602052604060002063ffffffff6040519161089983612dde565b548181168352818160201c16602084015260401c16604082015260005b828110610970575050505060208501511561095f57600354600554604051632eec159b60e11b8152965060209587956001600160a01b039384169587958695610907959294939216600487016130cf565b03915afa801561042257829061092b575b61092891505b6001541115613111565b80f35b506020813d602011610957575b8161094560209383612e2f565b8101031261053c576109289051610918565b3d9150610938565b50505050604061092891015161091e565b61097a8185612e96565b90549060031b1c63ffffffff602084015116111561099b575b6001016108b6565b835492506000198301838111610a2f576109b86109e29186612e96565b90549060031b1c6109c98387612e96565b90919082549060031b91821b91600019901b1916179055565b8354908115610a195760019160001901610a106109ff8288612e96565b8154906000199060031b1b19169055565b85559050610993565b634e487b7160e01b600052603160045260246000fd5b634e487b7160e01b600052601160045260246000fd5b90916020823d602011610a71575b81610a6060209383612e2f565b8101031261017e57505190386107be565b3d9150610a53565b6040513d6000823e3d90fd5b9092506020813d602011610ab1575b81610aa160209383612e2f565b8101031261053c57519138610769565b3d9150610a94565b610ac290612dcb565b610acd57843861070f565b8480fd5b9350506020833d602011610afe575b81610aed60209383612e2f565b8101031261053c57879251386106d0565b3d9150610ae0565b915092506020813d602011610b35575b81610b2360209383612e2f565b8101031261053c578590519238610689565b3d9150610b16565b60405162461bcd60e51b815260206004820152601860248201527713144e881554d113c81cddd85c1c195c881b9bdd081cd95d60421b6044820152606490fd5b503461017e576020908160031936011261017e5760043591828252600e8152604082209160405192610bae84612dde565b549063ffffffff9182811685528281851c1660408486880193838552821c1696019580875203838111610cf657831695610be787612f61565b96610bf56040519889612e2f565b808852610c04601f1991612f61565b0185845b828110610ce0575050508252600d845282604083209151169282935b81875116811015610c865780610c639185528387526040852090604051610c4a81612df9565b82546001600160a01b0316815260019384938401612e52565b89820152610c71888c612fc4565b52610c7c878b612fc4565b5001940193610c24565b6040805187815289518189018190528a89019282019089885b828110610cac5784840385f35b9091928260c0600192610cd1838a51868060a01b038151168452015184830190612d25565b01960191019492919094610c9f565b610ce8612fa3565b82828c010152018690610c08565b634e487b7160e01b83526011600452602483fd5b503461017e578060031936011261017e576005546040516001600160a01b039091168152602090f35b503461017e57610d4236612cfb565b929160018060a01b03168252600f602052604082209082526020526040812090815483101561017e576020610d778484612e96565b90546040519160031b1c8152f35b503461017e57604036600319011261017e57604060c0916004358152600d602052818120602435825260205220610dda610dca6001808060a01b038454169301612e52565b6040519283526020830190612d25565bf35b503461017e5760208060031936011261045957610df7612ce5565b33835260108252604083205415610f6457338352601082526040832054906032820282810460321483151715610f5057610e376127108692048094613211565b933382526010815281604081205560018060a01b039384600254168352610e6360408420918254613193565b9055600a54846007541691604051638eb22cdd60e01b81528260048201528760248201528460448201528181606481875afa91821561049c578592610f1f575b5050823b1561058657610ed192849283604051809681958294630208d92960e11b84528b30600486016130a5565b03925af1801561042257610f0b575b505016337fd12200efa34901b99367694174c3b0d32c99585fdf37c7c26892136ddd0836d98480a480f35b610f1490612dcb565b610586578338610ee0565b8195508092503d8311610f49575b610f378183612e2f565b8101031261053c578692513880610ea3565b503d610f2d565b634e487b7160e01b85526011600452602485fd5b60405162461bcd60e51b81526004810183905260126024820152714c513a204e6f2062616c616e63652064756560701b6044820152606490fd5b503461017e578060031936011261017e576005546040516306fdde0360e01b8152908290829060049082906001600160a01b03165afa908115610422578291610ffc575b60405160208082528190610ff890820185612da6565b0390f35b90503d8083833e61100d8183612e2f565b81019060208183031261041e578051906001600160401b038211610586570181601f8201121561041e5780519261104384612f03565b926110516040519485612e2f565b8484526020858401011161017e5750610ff8926110749160208085019101612d83565b38610fe2565b503461017e57602036600319011261017e5760406060916004358152600e60205220546040519063ffffffff908181168352818160201c16602084015260401c166040820152f35b503461017e578060031936011261017e5760606110dd612fd8565b90604051928352151560208301526040820152f35b503461017e578060031936011261017e576006546040516001600160a01b039091168152602090f35b503461017e57604036600319011261017e57611135612ce5565b602435808352602092600c845260019081604082200133600052855260ff60406000205416908160001461149a57838152600c86528260408220013360005286528260406000200154945b61118b86151561314f565b848252600c87528360408320013360005287526111ab60406000206131a0565b8593858352600c885280604084200133600052885260ff60406000205460081c166113b9575b54841061137b578215611372576006546040516386c8e21d60e01b8152908890829060049082906001600160a01b03165afa908115610464578391611345575b50915b600754604051638eb22cdd60e01b81526004810185905260248101899052604481018390526001600160a01b039490918516908a83606481855afa92831561057b578493611316575b50813b156105865791839161128b9383604051809681958294630208d92960e11b84528b30600486016130a5565b03925af1801561042257611302575b507f2f413fefb30b9c037ba435fc106ac59646343aafb657db7057b5b4ba42d5643792919084156112fb5787945b156112f0576112e590945b604051938493169633964292856131e2565b0390a4604051908152f35b506112e587946112d3565b80946112c8565b61130c8291612dcb565b61017e573861129a565b9092508a81813d831161133e575b61132e8183612e2f565b8101031261053c5751913861125d565b503d611324565b90508781813d831161136b575b61135c8183612e2f565b8101031261053c575138611211565b503d611352565b60085491611214565b60405162461bcd60e51b815260048101889052601660248201527513144e88189a5908191bd95cc81b9bdd08195e1a5cdd60521b6044820152606490fd5b935060018060a01b03806003541660048983600554169360065416604051928380926386c8e21d60e01b82525afa90811561049c579189918b938791611462575b5061141c9460405195869485938493632eec159b60e11b8552600485016131b8565b03915afa908115610464578391611435575b50936111d1565b90508781813d831161145b575b61144c8183612e2f565b8101031261053c57513861142e565b503d611442565b925050929181813d8311611493575b61147b8183612e2f565b8101031261053c5761141c928a928a925190946113fa565b503d611471565b838152600c865282604082200133600052865260026040600020015494611180565b503461017e57604036600319011261017e576114d6612ce5565b602435908183526020600c8152600160408520019160018060a01b03809116928360005282526115096040600020612e52565b6115256080820161151c8151151561314f565b51875490613193565b421061181b57848652600e8352604086206040519061154382612dde565b5463ffffffff908181168352858301918082881c16835280604085019260401c16825261156e612fa3565b888152878101958652898b52600d88526040808c20845184168d5289528b20905181546001600160a01b0319169088161781558551805160049160809160018501906115bc90151582612ef2565b8b820151151561ff0082549160081b169061ff00191617905560408101516002850155606081015160038501550151910155888a52600c8752600160408b200188600052875261160f60406000206131a0565b878a52600f87526040808b208a8c5288528a208251815490831691600160401b82101561180757816109c991600161164a9594018155612e96565b8151811660010181168252888a52600e87526040808b2094518554945193516001600160601b031990951692169190911791871b63ffffffff60201b169190911791901b63ffffffff60401b1617905580518051156117fb57836040820151915b0151156117e1575060048260035416928481600554169160065416604051938480926386c8e21d60e01b82525afa80156117d657859289916117a3575b5093611712946040855101519260405196879485938493632eec159b60e11b8552600485016131b8565b03915afa9182156104e9578692611773575b50600c60008051602061335083398151915292935b868852526040862061174c848254613193565b905551606060408201519101519261176d60405192839233964292856131e2565b0390a480f35b91508282813d831161179c575b61178a8183612e2f565b8101031261053c57905190600c611724565b503d611780565b83819492503d83116117cf575b6117ba8183612e2f565b8101031261053c5790518491906117126116e8565b503d6117b0565b6040513d8a823e3d90fd5b6000805160206133508339815191529250600c9093611739565b836060820151916116ab565b634e487b7160e01b8d52604160045260248dfd5b60405162461bcd60e51b815260048101849052600c60248201526b26289d103a37b79039b7b7b760a11b6044820152606490fd5b503461017e57604036600319011261017e57611869612ce5565b602480359160018060a01b03168352602092600f84526040812083825284526040812092604051808587829754938481520190855287852092855b8982821061194c575050506118bb92500385612e2f565b8351908252600e85526040822091604051926118d684612dde565b5463ffffffff9384821681526040858983019381818c1c168552821c16910152815b83811061190a57878751604051908152f35b6119148188612fc4565b51858351161115611928575b6001016118f8565b928015611939576000190192611920565b634e487b7160e01b835260116004528583fd5b855484526001958601958a9550930192016118a4565b503461017e57602036600319011261017e5761197c612ce5565b6005546001600160a01b03919061199690831633146132b9565b816003549116809282167fe0ae31f6fff797b33b039284b11690980155ca2c61a831617b6943199e6fce8b8580a36001600160a01b0319161760035580f35b503461017e57602036600319011261017e5760206119f4600435612f1e565b604051908152f35b503461017e578060031936011261017e576020600854604051908152f35b503461017e57604036600319011261017e576001600160401b039060243582811161045957611a4d903690600401612d56565b600554600435939290839081906001600160a01b031633819003612847576040519761014089019081118982101761283157600491602091604052878a5287828b0152611a9861321e565b60408b0152611aa5612fa3565b60608b0152611ab2612fa3565b60808b01528760a08b01528760c08b01528760e08b0152876101008b0152876101208b0152611adf612fd8565b5015158b8401528a52604051633ba0b9a960e01b815292839182905afa9081156104e95786916127ff575b506101008801525b851515806127f2575b156126ff5786518552600e6020526040852063ffffffff60405191611b3f83612dde565b548181168352818160201c16602084015260401c16604082015260408801528460a08801528460c08801525b851515806126e0575b156125f85786518552600d6020526040852063ffffffff602060408a0151015116865260205260408520611bc1600160405192611bb084612df9565b818060a01b03815416845201612e52565b90602081019182528060608a0152608089015251610100880151885190825115156000146125ee5760408301515b6020840151156125d657506003546005546006546040516386c8e21d60e01b81526001600160a01b03938416969284169390929160209184916004918391165afa918215612045578b9261259a575b5094602092916040611c6a9701519260405197889485938493632eec159b60e11b8552600485016131b8565b03915afa9283156117d6578893612564575b50611c93670de0b6b3a764000091611c99946131fe565b04613322565b8061012089015286811160001461211d57506020608088015101519561010088015196885197611cca36888861323d565b8899670de0b6b3a7640000850290858204670de0b6b3a76400001486151715610a2f57831561210757611cff908483046131fe565b9081606481020460641482151715610a2f576004936127106064611d269402049104613211565b6006546040516386c8e21d60e01b81529194919360209185919082906001600160a01b03165afa9283156120c7578a936120d2575b5060200151611e80575b505090611dc8611dd79260018060a01b0360808c015151168952601060205260408920611d93848254613193565b905560608b0151602001518051611e6b575060606020818d0151015101611dbb828251613211565b90525b60a08b0151613193565b60a08a015260c0890151613193565b60c0880152611deb859660e0890151613193565b60e088015260206060880151015187518652600d6020526040862063ffffffff602060408b0151015116875260205260046080604088209260018401611e348251151582612ef2565b6020820151815461ff00191690151560081b61ff001617905560408101516002850155606081015160038501550151910155611b6b565b604001611e798b8251613211565b9052611dbe565b600354600554604051637f7ba27d60e11b81526001600160a01b039283169c5094959492939160209184918e9183918291611ec3918c91899116600485016131b8565b03915afa9182156120c7578a92612093575b50819a60018060a01b036007541660405191638eb22cdd60e01b83528360048401528460248401528c6044840152602083606481855afa928315612088578d93612054575b50813b1561205057918c918483611f499560405196879586948593630208d92960e11b855230600486016130a5565b03925af1801561204557908b9161202d575b50509060209160018060a01b0360035416908b60018060a01b0360055416611f9960405197889687958694632da475e360e21b8652600486016132f4565b03925af19081156117d6579083918991611ff8575b5010611fbc57903880611d65565b60405162461bcd60e51b81526020600482015260146024820152731b9959590b5b5bdc994b58dbdb1b185d195c985b60621b6044820152606490fd5b9150506020813d602011612025575b8161201460209383612e2f565b8101031261053c5782905138611fae565b3d9150612007565b61203690612dcb565b612041578938611f5b565b8980fd5b6040513d8d823e3d90fd5b8c80fd5b9092506020813d602011612080575b8161207060209383612e2f565b8101031261053c57519138611f1a565b3d9150612063565b6040513d8f823e3d90fd5b9091506020813d6020116120bf575b816120af60209383612e2f565b8101031261053c57519038611ed5565b3d91506120a2565b6040513d8c823e3d90fd5b9092506020813d6020116120ff575b816120ee60209383612e2f565b8101031261053c5751916020611d5b565b3d91506120e1565b634e487b7160e01b600052601260045260246000fd5b90956020608089015101519061010089015191878a805161213f368b8b61323d565b60608501519796604086015195602081015161226c575b505050506121bb926121d8969260606020816121ac9560018060a01b03608082015151168552601083526040852061218f8c8254613193565b9055018051820151604001849052510151015260e08d0151613193565b60e08c015260a08b0151613193565b60a08a01526121ce8260c08b0151613193565b60c08a0152613211565b9460206060880151015187518652600d6020526040862063ffffffff602060408b015101511687526020526004608060408820926001840161221d8251151582612ef2565b6020820151151561ff0082549160081b169061ff00191617905560408101516002850155606081015160038501550151910155602060408801510163ffffffff60018183511601169052611b6b565b6007546003546006546040516386c8e21d60e01b8152969c50999a5093989296509094506001600160a01b039182169390821692909116602082600481875afa9182156124ec578e9261252d575b506020600494604051958680926386c8e21d60e01b82525afa9384156124ec578e946124f9575b50604085015160405194638eb22cdd60e01b8652600486015260248501528d6044850152602084606481865afa9384156124ec578e946124b8575b50823b156124b4579161234b93918e809460405196879586948593630208d92960e11b855230600486016130a5565b03925af1801561204557908b916124a0575b50506003546005546006546040516386c8e21d60e01b81526001600160a01b0392831693831692909160209183916004918391165afa908115612088578d908192612469575b5060406020950151936123cc604051998a9687958694632da475e360e21b8652600486016132f4565b03925af192831561245e578b949392918a91829461241f575b50916121ac91606060208161240f6121d89b670de0b6b3a7640000611c938b9a6121bb9c9b6131fe565b9995505082959950839650612156565b9350919450506020823d602011612456575b8161243e60209383612e2f565b8101031261053c5790518a93909189906121ac6123e5565b3d9150612431565b6040513d8b823e3d90fd5b949150506020843d602011612498575b8161248660209383612e2f565b8101031261053c5792518c60406123a3565b3d9150612479565b6124a990612dcb565b61204157893861235d565b8d80fd5b9093506020813d6020116124e4575b816124d460209383612e2f565b8101031261053c5751923861231c565b3d91506124c7565b8e604051903d90823e3d90fd5b9093506020813d602011612525575b8161251560209383612e2f565b8101031261053c575192386122e1565b3d9150612508565b9391506020843d60201161255c575b8161254960209383612e2f565b8101031261053c579251909260206122ba565b3d915061253c565b92506020833d602011612592575b8161257f60209383612e2f565b8101031261053c57915191611c93611c7c565b3d9150612572565b929150946020833d6020116125ce575b816125b760209383612e2f565b8101031261053c5791519194909190611c6a611c3e565b3d91506125aa565b611c999350670de0b6b3a764000091611c93916131fe565b6060830151611bef565b61260a6126169160a089015190613193565b9160c088015190613193565b90604087015187518652600e602052604086209063ffffffff8151169082549163ffffffff60201b602083015160201b1691604063ffffffff811b91015160401b169260018060601b031916171717905561266f612fd8565b50151560208901528088528552600c60205260408520612690828254613211565b9055865160e08801517fcf16521da024444891495eb0ed8e5e97ab0b013ee419d71046494d94e02390a260a08a01519160c08b01516126d860405192839233964292856131e2565b0390a3611b12565b50604087015163ffffffff604081602084015116920151161415611b74565b849161273560408360018060a01b03600754166008548784518096819582946311a5cc7760e31b8452309030906004860161328a565b03925af1801561057b576127d4575b5060075460095460055460408051634d4d7cbd60e11b815293909284926001600160a01b039283169284928a928492612788928c929091169030906004860161328a565b03925af1801561057b57604094506127a8575b5082519182526020820152f35b6127c790843d86116127cd575b6127bf8183612e2f565b810190613274565b5061279b565b503d6127b5565b6127ec9060403d6040116127cd576127bf8183612e2f565b50612744565b5060208701511515611b1b565b90506020813d602011612829575b8161281a60209383612e2f565b8101031261053c575138611b0a565b3d915061280d565b634e487b7160e01b600052604160045260246000fd5b60405162461bcd60e51b81526020600482015260146024820152734c513a204f6e6c792053696e67756c617269747960601b6044820152606490fd5b503461017e57602036600319011261017e5761289d612ce5565b6005546001600160a01b0391906128b790831633146132b9565b816004549116809282167f4df4d1118ddbedb1b0f3889ec88ab4d3108097b9b3dd236c2cc5c8e2e9f726958580a36001600160a01b0319161760045580f35b503461017e578060031936011261017e576020600954604051908152f35b503461017e578060031936011261017e5760a09054600154600180841b03806002541681600354169160045416926040519485526020850152604084015260608301526080820152f35b503461017e57604036600319011261017e576024356001600160a01b038116919082900361053c576040600191612993612f78565b506004358152600c60205220019060005260205260a06129b66040600020612e52565b610dda6040518092612d25565b503461017e57602036600319011261017e576020906040906001600160a01b036129eb612ce5565b168152601083522054604051908152f35b503461017e57612a0b36612cfb565b9190612a1b60ff600b5416613020565b612a28600a821115613062565b600192612a388454821015613111565b6008549160018060a01b0380600754169460405194638eb22cdd60e01b86528060048701528860249686888201528160448201526020988982606481845afa918215610464578392612c77575b50803b1561041e57612ab09383604051809681958294630208d92960e11b84523033600486016130a5565b03925af1801561245e57612c64575b508290612aca612f78565b946040860160008152606087018281526080880191428352600089528a8901966000885286600052600c8c528c6040600020019516968795866000528c52612b1a60406000209a5115158b612ef2565b51151561ff008a549160081b169061ff001916178955518b8901555160028801555160038097015560405190600082528882015242604082015260008051602061337083398151915260603392a4600052600f84526040600020906000528352604060002091825493600e8152604060002060405190612b9982612dde565b5490604063ffffffff838180951684528181878601971c168652821c1691015260005b868110612bc7578880f35b80612bd3899288612e96565b905490871b1c838551161115612bea575b01612bbc565b865497509050600019808801888111612c4f57612c0a612c1a9189612e96565b905490881b1c6109c9848a612e96565b86548015612c3a5789929101612c336109ff828a612e96565b8755612be4565b85634e487b7160e01b60005260316004526000fd5b85634e487b7160e01b60005260116004526000fd5b97612c70849299612dcb565b9790612abf565b9091508981813d8311612c9f575b612c8f8183612e2f565b8101031261041e57519038612a85565b503d612c85565b503461017e578060031936011261017e576020600a54604051908152f35b90503461045957816003193601126104595760209060ff600b541615158152f35b600435906001600160a01b038216820361053c57565b606090600319011261053c576004356001600160a01b038116810361053c57906024359060443590565b6080809180511515845260208101511515602085015260408101516040850152606081015160608501520151910152565b9181601f8401121561053c578235916001600160401b03831161053c576020838186019501011161053c57565b60005b838110612d965750506000910152565b8181015183820152602001612d86565b90602091612dbf81518092818552858086019101612d83565b601f01601f1916010190565b6001600160401b03811161283157604052565b606081019081106001600160401b0382111761283157604052565b604081019081106001600160401b0382111761283157604052565b60a081019081106001600160401b0382111761283157604052565b601f909101601f19168101906001600160401b0382119082101761283157604052565b90604051612e5f81612e14565b60806003829460ff81548181161515865260081c161515602085015260018101546040850152600281015460608501520154910152565b8054821015612eae5760005260206000200190600090565b634e487b7160e01b600052603260045260246000fd5b9081602091031261053c57516001600160a01b038116810361053c5790565b6000198114610a2f5760010190565b9060ff801983541691151516179055565b6001600160401b03811161283157601f01601f191660200190565b600052600e602052604060002060405190612f3882612dde565b54604063ffffffff92838316815283808460201c1693846020840152831c169182910152031690565b6001600160401b0381116128315760051b60200190565b60405190612f8582612e14565b60006080838281528260208201528260408201528260608201520152565b60405190612fb082612df9565b81600081526020612fbf612f78565b910152565b8051821015612eae5760209160051b010190565b60009060008091815b600a851115612fed5750565b93612ff781612f1e565b61300a5761300490612ee3565b93612fe1565b808552600c602052604090942054600193509150565b1561302757565b60405162461bcd60e51b815260206004820152601360248201527213144e88139bdd081a5b9a5d1a585b1a5e9959606a1b6044820152606490fd5b1561306957565b60405162461bcd60e51b8152602060048201526014602482015273098a27440e0e4cadad2eada40e8dede40d0d2ced60631b6044820152606490fd5b6001600160a01b039182168152911660208201526040810191909152606081019190915260800190565b93909285939260a09693600180891b031686526020860152604085015260806060850152816080850152848401376000828201840152601f01601f1916010190565b1561311857565b60405162461bcd60e51b815260206004820152600f60248201526e4c513a2062696420746f6f206c6f7760881b6044820152606490fd5b1561315657565b60405162461bcd60e51b81526020600482015260156024820152744c513a20626964206e6f7420617661696c61626c6560581b6044820152606490fd5b91908201809211610a2f57565b60036000918281558260018201558260028201550155565b9160a09391600180861b031683526020830152604082015260806060820152600060808201520190565b9094939260609260808301968352602083015260408201520152565b81810292918115918404141715610a2f57565b91908203918211610a2f57565b6040519061322b82612dde565b60006040838281528260208201520152565b92919261324982612f03565b916132576040519384612e2f565b82948184528183011161053c578281602093846000960137010152565b919082604091031261053c576020825192015190565b9081526001600160a01b0391821660208201529116604082015260608101919091526000608082015260a00190565b156132c057565b60405162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b6044820152606490fd5b909260809261331f959460018060a01b03168352602083015260408201528160608201520190612da6565b90565b9061332d90826131fe565b90606482029180830460641490151715610a2f5761271061331f92049061319356fed3537325843bd046c81dbdae840896c9ad0a4e5ea737ac537f65167df96921c2baa682830cade78a3affa9fa3c417095d0edb57605b0ac6fb487ce2068204ce9a2646970667358221220e57b19de5adf1065d41a63558be6f6a13b347b62178d1a68d4a3e8b4eb46738064736f6c63430008120033"; + "0x60808060405234610016576133c5908161001c8239f35b600080fdfe608080604052600436101561001357600080fd5b600090813560e01c90816307be4daf14612cc4575080630ed4f3e914612ca65780630f41ba4b146129fc5780631259c1a1146129c3578063149c59c51461295e5780632cfbe6ba146129145780632e020d1f146128f657806336252c90146128835780633965907b14611a1a57806345baf8af146119fc57806346a7d7d9146119d5578063575939f9146119625780635c3a33931461184f57806365d387c9146114bc5780636aef9a671461111b5780636c3d8b8f146110f25780637c8be05b146110c25780637d98726b1461107a57806380f5560514610f9e57806395a2251f14610ddc578063966b583c14610d85578063a39e6a1714610d33578063a5dca46414610d0a578063bd2f6f8314610b7d578063d844f0c0146105ea578063de406577146105c1578063f50f78cd146101815763fa8e84791461015557600080fd5b3461017e57602036600319011261017e5760406020916004358152600c83522054604051908152f35b80fd5b503461017e57366003190160c081126104595760a01361017e576001600160a01b0360a4358181169081900361053c5760ff600b541661058a5760043583556024356001556044359082821680920361058657600280546001600160a01b031990811690931790556064358381169081900361053c578260035416176003556084359083821680920361053c578491836004541617600455816005548285821617600555161792604051936377607a1760e11b85526020938486600481855afa95861561057b578496610548575b50600a95865560405163226f120560e11b8152918583600481845afa92831561049c578593610511575b506009839055604051636c3d8b8f60e01b81528681600481855afa80156104e957859187916104f4575b501682600654161760065560405163de40657760e01b81528681600481855afa9182156104e95785889288946104a7575b5060049316948560075495861617600755600855604051928380926338d52e0f60e01b82525afa90811561049c57869286868194604494839161046f575b50604051978896879563095ea7b360e01b8752161760048501526000196024850152165af180156104645761042d575b5080600754169060055416813b1561041e57829160448392604051948593849263a22cb46560e01b84526004840152600160248401525af180156104225761040a575b5050825b828111156103a25783600160ff19600b541617600b5580f35b610405906103ae61321e565b63ffffffff8281168252828752600e855260408088208351815488860151958401516001600160601b0319909116919094161793871b63ffffffff60201b169390931791901b63ffffffff60401b16179055612ee3565b610389565b61041390612dcb565b61041e578238610385565b8280fd5b6040513d84823e3d90fd5b8381813d831161045d575b6104428183612e2f565b8101031261041e5751801515036104595738610342565b5080fd5b503d610438565b6040513d85823e3d90fd5b61048f9150873d8911610495575b6104878183612e2f565b810190612ec4565b38610312565b503d61047d565b6040513d87823e3d90fd5b92809294508391503d83116104e2575b6104c18183612e2f565b810103126104de575184811681036104de579086908560046102d4565b8580fd5b503d6104b7565b6040513d88823e3d90fd5b61050b9150883d8a11610495576104878183612e2f565b386102a3565b945091508484813d8111610541575b61052a8183612e2f565b8101031261053c578693519138610279565b600080fd5b503d610520565b85809297508195503d8311610574575b6105628183612e2f565b8101031261053c57859251943861024f565b503d610558565b6040513d86823e3d90fd5b8380fd5b60405162461bcd60e51b815260206004820152600f60248201526e13144e88125b9a5d1a585b1a5e9959608a1b6044820152606490fd5b503461017e578060031936011261017e576007546040516001600160a01b039091168152602090f35b503461017e5760a036600319011261017e57610604612ce5565b6084356001600160401b03811161041e57610623903690600401612d56565b61063160ff600b5416613020565b610640600a6024351115613062565b6004546001600160a01b0316908115610b3d576006546040516386c8e21d60e01b8152928691602090859060049082906001600160a01b03165afa938415610422578294610b06575b5060018060a01b036007541690604051638eb22cdd60e01b815260443560048201526064356024820152836044820152602081606481865afa90811561057b578491610ad1575b50823b156105865761070092849283604051809681958294630208d92960e11b84526044359033600486016130a5565b03925af1801561042257610ab9575b505060048054600554604051632da475e360e21b8152949260209286926001600160a01b039182169284928c928492610757928b928e926064359260443592169087016130cf565b03925af19283156104e9578693610a85575b50610772612f78565b9483604087015260006060870152426080870152600186526004600854602060018060a01b0360065416604051938480926386c8e21d60e01b82525afa918215610a7957600092610a45575b5014156020870152602435600052600c60205260016040600020019060018060a01b0316908160005260205260406000206107fc8751151582612ef2565b6020870151151561ff0082549160081b169061ff00191617815560408701516001820155606087015160028201556003608088015191015560405184815260006020820152426040820152816024359160008051602061337083398151915260603392a4600052600f602052604060002060243560005260205260406000208054600e602052604060002063ffffffff6040519161089983612dde565b548181168352818160201c16602084015260401c16604082015260005b828110610970575050505060208501511561095f57600354600554604051632eec159b60e11b8152965060209587956001600160a01b039384169587958695610907959294939216600487016130cf565b03915afa801561042257829061092b575b61092891505b6001541115613111565b80f35b506020813d602011610957575b8161094560209383612e2f565b8101031261053c576109289051610918565b3d9150610938565b50505050604061092891015161091e565b61097a8185612e96565b90549060031b1c63ffffffff602084015116111561099b575b6001016108b6565b835492506000198301838111610a2f576109b86109e29186612e96565b90549060031b1c6109c98387612e96565b90919082549060031b91821b91600019901b1916179055565b8354908115610a195760019160001901610a106109ff8288612e96565b8154906000199060031b1b19169055565b85559050610993565b634e487b7160e01b600052603160045260246000fd5b634e487b7160e01b600052601160045260246000fd5b90916020823d602011610a71575b81610a6060209383612e2f565b8101031261017e57505190386107be565b3d9150610a53565b6040513d6000823e3d90fd5b9092506020813d602011610ab1575b81610aa160209383612e2f565b8101031261053c57519138610769565b3d9150610a94565b610ac290612dcb565b610acd57843861070f565b8480fd5b9350506020833d602011610afe575b81610aed60209383612e2f565b8101031261053c57879251386106d0565b3d9150610ae0565b915092506020813d602011610b35575b81610b2360209383612e2f565b8101031261053c578590519238610689565b3d9150610b16565b60405162461bcd60e51b815260206004820152601860248201527713144e881554d113c81cddd85c1c195c881b9bdd081cd95d60421b6044820152606490fd5b503461017e576020908160031936011261017e5760043591828252600e8152604082209160405192610bae84612dde565b549063ffffffff9182811685528281851c1660408486880193838552821c1696019580875203838111610cf657831695610be787612f61565b96610bf56040519889612e2f565b808852610c04601f1991612f61565b0185845b828110610ce0575050508252600d845282604083209151169282935b81875116811015610c865780610c639185528387526040852090604051610c4a81612df9565b82546001600160a01b0316815260019384938401612e52565b89820152610c71888c612fc4565b52610c7c878b612fc4565b5001940193610c24565b6040805187815289518189018190528a89019282019089885b828110610cac5784840385f35b9091928260c0600192610cd1838a51868060a01b038151168452015184830190612d25565b01960191019492919094610c9f565b610ce8612fa3565b82828c010152018690610c08565b634e487b7160e01b83526011600452602483fd5b503461017e578060031936011261017e576005546040516001600160a01b039091168152602090f35b503461017e57610d4236612cfb565b929160018060a01b03168252600f602052604082209082526020526040812090815483101561017e576020610d778484612e96565b90546040519160031b1c8152f35b503461017e57604036600319011261017e57604060c0916004358152600d602052818120602435825260205220610dda610dca6001808060a01b038454169301612e52565b6040519283526020830190612d25565bf35b503461017e5760208060031936011261045957610df7612ce5565b33835260108252604083205415610f6457338352601082526040832054906032820282810460321483151715610f5057610e376127108692048094613211565b933382526010815281604081205560018060a01b039384600254168352610e6360408420918254613193565b9055600a54846007541691604051638eb22cdd60e01b81528260048201528760248201528460448201528181606481875afa91821561049c578592610f1f575b5050823b1561058657610ed192849283604051809681958294630208d92960e11b84528b30600486016130a5565b03925af1801561042257610f0b575b505016337fd12200efa34901b99367694174c3b0d32c99585fdf37c7c26892136ddd0836d98480a480f35b610f1490612dcb565b610586578338610ee0565b8195508092503d8311610f49575b610f378183612e2f565b8101031261053c578692513880610ea3565b503d610f2d565b634e487b7160e01b85526011600452602485fd5b60405162461bcd60e51b81526004810183905260126024820152714c513a204e6f2062616c616e63652064756560701b6044820152606490fd5b503461017e578060031936011261017e576005546040516306fdde0360e01b8152908290829060049082906001600160a01b03165afa908115610422578291610ffc575b60405160208082528190610ff890820185612da6565b0390f35b90503d8083833e61100d8183612e2f565b81019060208183031261041e578051906001600160401b038211610586570181601f8201121561041e5780519261104384612f03565b926110516040519485612e2f565b8484526020858401011161017e5750610ff8926110749160208085019101612d83565b38610fe2565b503461017e57602036600319011261017e5760406060916004358152600e60205220546040519063ffffffff908181168352818160201c16602084015260401c166040820152f35b503461017e578060031936011261017e5760606110dd612fd8565b90604051928352151560208301526040820152f35b503461017e578060031936011261017e576006546040516001600160a01b039091168152602090f35b503461017e57604036600319011261017e57611135612ce5565b602435808352602092600c845260019081604082200133600052855260ff60406000205416908160001461149a57838152600c86528260408220013360005286528260406000200154945b61118b86151561314f565b848252600c87528360408320013360005287526111ab60406000206131a0565b8593858352600c885280604084200133600052885260ff60406000205460081c166113b9575b54841061137b578215611372576006546040516386c8e21d60e01b8152908890829060049082906001600160a01b03165afa908115610464578391611345575b50915b600754604051638eb22cdd60e01b81526004810185905260248101899052604481018390526001600160a01b039490918516908a83606481855afa92831561057b578493611316575b50813b156105865791839161128b9383604051809681958294630208d92960e11b84528b30600486016130a5565b03925af1801561042257611302575b507f2f413fefb30b9c037ba435fc106ac59646343aafb657db7057b5b4ba42d5643792919084156112fb5787945b156112f0576112e590945b604051938493169633964292856131e2565b0390a4604051908152f35b506112e587946112d3565b80946112c8565b61130c8291612dcb565b61017e573861129a565b9092508a81813d831161133e575b61132e8183612e2f565b8101031261053c5751913861125d565b503d611324565b90508781813d831161136b575b61135c8183612e2f565b8101031261053c575138611211565b503d611352565b60085491611214565b60405162461bcd60e51b815260048101889052601660248201527513144e88189a5908191bd95cc81b9bdd08195e1a5cdd60521b6044820152606490fd5b935060018060a01b03806003541660048983600554169360065416604051928380926386c8e21d60e01b82525afa90811561049c579189918b938791611462575b5061141c9460405195869485938493632eec159b60e11b8552600485016131b8565b03915afa908115610464578391611435575b50936111d1565b90508781813d831161145b575b61144c8183612e2f565b8101031261053c57513861142e565b503d611442565b925050929181813d8311611493575b61147b8183612e2f565b8101031261053c5761141c928a928a925190946113fa565b503d611471565b838152600c865282604082200133600052865260026040600020015494611180565b503461017e57604036600319011261017e576114d6612ce5565b602435908183526020600c8152600160408520019160018060a01b03809116928360005282526115096040600020612e52565b6115256080820161151c8151151561314f565b51875490613193565b421061181b57848652600e8352604086206040519061154382612dde565b5463ffffffff908181168352858301918082881c16835280604085019260401c16825261156e612fa3565b888152878101958652898b52600d88526040808c20845184168d5289528b20905181546001600160a01b0319169088161781558551805160049160809160018501906115bc90151582612ef2565b8b820151151561ff0082549160081b169061ff00191617905560408101516002850155606081015160038501550151910155888a52600c8752600160408b200188600052875261160f60406000206131a0565b878a52600f87526040808b208a8c5288528a208251815490831691600160401b82101561180757816109c991600161164a9594018155612e96565b8151811660010181168252888a52600e87526040808b2094518554945193516001600160601b031990951692169190911791871b63ffffffff60201b169190911791901b63ffffffff60401b1617905580518051156117fb57836040820151915b0151156117e1575060048260035416928481600554169160065416604051938480926386c8e21d60e01b82525afa80156117d657859289916117a3575b5093611712946040855101519260405196879485938493632eec159b60e11b8552600485016131b8565b03915afa9182156104e9578692611773575b50600c60008051602061335083398151915292935b868852526040862061174c848254613193565b905551606060408201519101519261176d60405192839233964292856131e2565b0390a480f35b91508282813d831161179c575b61178a8183612e2f565b8101031261053c57905190600c611724565b503d611780565b83819492503d83116117cf575b6117ba8183612e2f565b8101031261053c5790518491906117126116e8565b503d6117b0565b6040513d8a823e3d90fd5b6000805160206133508339815191529250600c9093611739565b836060820151916116ab565b634e487b7160e01b8d52604160045260248dfd5b60405162461bcd60e51b815260048101849052600c60248201526b26289d103a37b79039b7b7b760a11b6044820152606490fd5b503461017e57604036600319011261017e57611869612ce5565b602480359160018060a01b03168352602092600f84526040812083825284526040812092604051808587829754938481520190855287852092855b8982821061194c575050506118bb92500385612e2f565b8351908252600e85526040822091604051926118d684612dde565b5463ffffffff9384821681526040858983019381818c1c168552821c16910152815b83811061190a57878751604051908152f35b6119148188612fc4565b51858351161115611928575b6001016118f8565b928015611939576000190192611920565b634e487b7160e01b835260116004528583fd5b855484526001958601958a9550930192016118a4565b503461017e57602036600319011261017e5761197c612ce5565b6005546001600160a01b03919061199690831633146132b9565b816003549116809282167fe0ae31f6fff797b33b039284b11690980155ca2c61a831617b6943199e6fce8b8580a36001600160a01b0319161760035580f35b503461017e57602036600319011261017e5760206119f4600435612f1e565b604051908152f35b503461017e578060031936011261017e576020600854604051908152f35b503461017e57604036600319011261017e576001600160401b039060243582811161045957611a4d903690600401612d56565b600554600435939290839081906001600160a01b031633819003612847576040519761014089019081118982101761283157600491602091604052878a5287828b0152611a9861321e565b60408b0152611aa5612fa3565b60608b0152611ab2612fa3565b60808b01528760a08b01528760c08b01528760e08b0152876101008b0152876101208b0152611adf612fd8565b5015158b8401528a52604051633ba0b9a960e01b815292839182905afa9081156104e95786916127ff575b506101008801525b851515806127f2575b156126ff5786518552600e6020526040852063ffffffff60405191611b3f83612dde565b548181168352818160201c16602084015260401c16604082015260408801528460a08801528460c08801525b851515806126e0575b156125f85786518552600d6020526040852063ffffffff602060408a0151015116865260205260408520611bc1600160405192611bb084612df9565b818060a01b03815416845201612e52565b90602081019182528060608a0152608089015251610100880151885190825115156000146125ee5760408301515b6020840151156125d657506003546005546006546040516386c8e21d60e01b81526001600160a01b03938416969284169390929160209184916004918391165afa918215612045578b9261259a575b5094602092916040611c6a9701519260405197889485938493632eec159b60e11b8552600485016131b8565b03915afa9283156117d6578893612564575b50611c93670de0b6b3a764000091611c99946131fe565b04613322565b8061012089015286811160001461211d57506020608088015101519561010088015196885197611cca36888861323d565b8899670de0b6b3a7640000850290858204670de0b6b3a76400001486151715610a2f57831561210757611cff908483046131fe565b9081606481020460641482151715610a2f576004936127106064611d269402049104613211565b6006546040516386c8e21d60e01b81529194919360209185919082906001600160a01b03165afa9283156120c7578a936120d2575b5060200151611e80575b505090611dc8611dd79260018060a01b0360808c015151168952601060205260408920611d93848254613193565b905560608b0151602001518051611e6b575060606020818d0151015101611dbb828251613211565b90525b60a08b0151613193565b60a08a015260c0890151613193565b60c0880152611deb859660e0890151613193565b60e088015260206060880151015187518652600d6020526040862063ffffffff602060408b0151015116875260205260046080604088209260018401611e348251151582612ef2565b6020820151815461ff00191690151560081b61ff001617905560408101516002850155606081015160038501550151910155611b6b565b604001611e798b8251613211565b9052611dbe565b600354600554604051637f7ba27d60e11b81526001600160a01b039283169c5094959492939160209184918e9183918291611ec3918c91899116600485016131b8565b03915afa9182156120c7578a92612093575b50819a60018060a01b036007541660405191638eb22cdd60e01b83528360048401528460248401528c6044840152602083606481855afa928315612088578d93612054575b50813b1561205057918c918483611f499560405196879586948593630208d92960e11b855230600486016130a5565b03925af1801561204557908b9161202d575b50509060209160018060a01b0360035416908b60018060a01b0360055416611f9960405197889687958694632da475e360e21b8652600486016132f4565b03925af19081156117d6579083918991611ff8575b5010611fbc57903880611d65565b60405162461bcd60e51b81526020600482015260146024820152731b9959590b5b5bdc994b58dbdb1b185d195c985b60621b6044820152606490fd5b9150506020813d602011612025575b8161201460209383612e2f565b8101031261053c5782905138611fae565b3d9150612007565b61203690612dcb565b612041578938611f5b565b8980fd5b6040513d8d823e3d90fd5b8c80fd5b9092506020813d602011612080575b8161207060209383612e2f565b8101031261053c57519138611f1a565b3d9150612063565b6040513d8f823e3d90fd5b9091506020813d6020116120bf575b816120af60209383612e2f565b8101031261053c57519038611ed5565b3d91506120a2565b6040513d8c823e3d90fd5b9092506020813d6020116120ff575b816120ee60209383612e2f565b8101031261053c5751916020611d5b565b3d91506120e1565b634e487b7160e01b600052601260045260246000fd5b90956020608089015101519061010089015191878a805161213f368b8b61323d565b60608501519796604086015195602081015161226c575b505050506121bb926121d8969260606020816121ac9560018060a01b03608082015151168552601083526040852061218f8c8254613193565b9055018051820151604001849052510151015260e08d0151613193565b60e08c015260a08b0151613193565b60a08a01526121ce8260c08b0151613193565b60c08a0152613211565b9460206060880151015187518652600d6020526040862063ffffffff602060408b015101511687526020526004608060408820926001840161221d8251151582612ef2565b6020820151151561ff0082549160081b169061ff00191617905560408101516002850155606081015160038501550151910155602060408801510163ffffffff60018183511601169052611b6b565b6007546003546006546040516386c8e21d60e01b8152969c50999a5093989296509094506001600160a01b039182169390821692909116602082600481875afa9182156124ec578e9261252d575b506020600494604051958680926386c8e21d60e01b82525afa9384156124ec578e946124f9575b50604085015160405194638eb22cdd60e01b8652600486015260248501528d6044850152602084606481865afa9384156124ec578e946124b8575b50823b156124b4579161234b93918e809460405196879586948593630208d92960e11b855230600486016130a5565b03925af1801561204557908b916124a0575b50506003546005546006546040516386c8e21d60e01b81526001600160a01b0392831693831692909160209183916004918391165afa908115612088578d908192612469575b5060406020950151936123cc604051998a9687958694632da475e360e21b8652600486016132f4565b03925af192831561245e578b949392918a91829461241f575b50916121ac91606060208161240f6121d89b670de0b6b3a7640000611c938b9a6121bb9c9b6131fe565b9995505082959950839650612156565b9350919450506020823d602011612456575b8161243e60209383612e2f565b8101031261053c5790518a93909189906121ac6123e5565b3d9150612431565b6040513d8b823e3d90fd5b949150506020843d602011612498575b8161248660209383612e2f565b8101031261053c5792518c60406123a3565b3d9150612479565b6124a990612dcb565b61204157893861235d565b8d80fd5b9093506020813d6020116124e4575b816124d460209383612e2f565b8101031261053c5751923861231c565b3d91506124c7565b8e604051903d90823e3d90fd5b9093506020813d602011612525575b8161251560209383612e2f565b8101031261053c575192386122e1565b3d9150612508565b9391506020843d60201161255c575b8161254960209383612e2f565b8101031261053c579251909260206122ba565b3d915061253c565b92506020833d602011612592575b8161257f60209383612e2f565b8101031261053c57915191611c93611c7c565b3d9150612572565b929150946020833d6020116125ce575b816125b760209383612e2f565b8101031261053c5791519194909190611c6a611c3e565b3d91506125aa565b611c999350670de0b6b3a764000091611c93916131fe565b6060830151611bef565b61260a6126169160a089015190613193565b9160c088015190613193565b90604087015187518652600e602052604086209063ffffffff8151169082549163ffffffff60201b602083015160201b1691604063ffffffff811b91015160401b169260018060601b031916171717905561266f612fd8565b50151560208901528088528552600c60205260408520612690828254613211565b9055865160e08801517fcf16521da024444891495eb0ed8e5e97ab0b013ee419d71046494d94e02390a260a08a01519160c08b01516126d860405192839233964292856131e2565b0390a3611b12565b50604087015163ffffffff604081602084015116920151161415611b74565b849161273560408360018060a01b03600754166008548784518096819582946311a5cc7760e31b8452309030906004860161328a565b03925af1801561057b576127d4575b5060075460095460055460408051634d4d7cbd60e11b815293909284926001600160a01b039283169284928a928492612788928c929091169030906004860161328a565b03925af1801561057b57604094506127a8575b5082519182526020820152f35b6127c790843d86116127cd575b6127bf8183612e2f565b810190613274565b5061279b565b503d6127b5565b6127ec9060403d6040116127cd576127bf8183612e2f565b50612744565b5060208701511515611b1b565b90506020813d602011612829575b8161281a60209383612e2f565b8101031261053c575138611b0a565b3d915061280d565b634e487b7160e01b600052604160045260246000fd5b60405162461bcd60e51b81526020600482015260146024820152734c513a204f6e6c792053696e67756c617269747960601b6044820152606490fd5b503461017e57602036600319011261017e5761289d612ce5565b6005546001600160a01b0391906128b790831633146132b9565b816004549116809282167f4df4d1118ddbedb1b0f3889ec88ab4d3108097b9b3dd236c2cc5c8e2e9f726958580a36001600160a01b0319161760045580f35b503461017e578060031936011261017e576020600954604051908152f35b503461017e578060031936011261017e5760a09054600154600180841b03806002541681600354169160045416926040519485526020850152604084015260608301526080820152f35b503461017e57604036600319011261017e576024356001600160a01b038116919082900361053c576040600191612993612f78565b506004358152600c60205220019060005260205260a06129b66040600020612e52565b610dda6040518092612d25565b503461017e57602036600319011261017e576020906040906001600160a01b036129eb612ce5565b168152601083522054604051908152f35b503461017e57612a0b36612cfb565b9190612a1b60ff600b5416613020565b612a28600a821115613062565b600192612a388454821015613111565b6008549160018060a01b0380600754169460405194638eb22cdd60e01b86528060048701528860249686888201528160448201526020988982606481845afa918215610464578392612c77575b50803b1561041e57612ab09383604051809681958294630208d92960e11b84523033600486016130a5565b03925af1801561245e57612c64575b508290612aca612f78565b946040860160008152606087018281526080880191428352600089528a8901966000885286600052600c8c528c6040600020019516968795866000528c52612b1a60406000209a5115158b612ef2565b51151561ff008a549160081b169061ff001916178955518b8901555160028801555160038097015560405190600082528882015242604082015260008051602061337083398151915260603392a4600052600f84526040600020906000528352604060002091825493600e8152604060002060405190612b9982612dde565b5490604063ffffffff838180951684528181878601971c168652821c1691015260005b868110612bc7578880f35b80612bd3899288612e96565b905490871b1c838551161115612bea575b01612bbc565b865497509050600019808801888111612c4f57612c0a612c1a9189612e96565b905490881b1c6109c9848a612e96565b86548015612c3a5789929101612c336109ff828a612e96565b8755612be4565b85634e487b7160e01b60005260316004526000fd5b85634e487b7160e01b60005260116004526000fd5b97612c70849299612dcb565b9790612abf565b9091508981813d8311612c9f575b612c8f8183612e2f565b8101031261041e57519038612a85565b503d612c85565b503461017e578060031936011261017e576020600a54604051908152f35b90503461045957816003193601126104595760209060ff600b541615158152f35b600435906001600160a01b038216820361053c57565b606090600319011261053c576004356001600160a01b038116810361053c57906024359060443590565b6080809180511515845260208101511515602085015260408101516040850152606081015160608501520151910152565b9181601f8401121561053c578235916001600160401b03831161053c576020838186019501011161053c57565b60005b838110612d965750506000910152565b8181015183820152602001612d86565b90602091612dbf81518092818552858086019101612d83565b601f01601f1916010190565b6001600160401b03811161283157604052565b606081019081106001600160401b0382111761283157604052565b604081019081106001600160401b0382111761283157604052565b60a081019081106001600160401b0382111761283157604052565b601f909101601f19168101906001600160401b0382119082101761283157604052565b90604051612e5f81612e14565b60806003829460ff81548181161515865260081c161515602085015260018101546040850152600281015460608501520154910152565b8054821015612eae5760005260206000200190600090565b634e487b7160e01b600052603260045260246000fd5b9081602091031261053c57516001600160a01b038116810361053c5790565b6000198114610a2f5760010190565b9060ff801983541691151516179055565b6001600160401b03811161283157601f01601f191660200190565b600052600e602052604060002060405190612f3882612dde565b54604063ffffffff92838316815283808460201c1693846020840152831c169182910152031690565b6001600160401b0381116128315760051b60200190565b60405190612f8582612e14565b60006080838281528260208201528260408201528260608201520152565b60405190612fb082612df9565b81600081526020612fbf612f78565b910152565b8051821015612eae5760209160051b010190565b60009060008091815b600a851115612fed5750565b93612ff781612f1e565b61300a5761300490612ee3565b93612fe1565b808552600c602052604090942054600193509150565b1561302757565b60405162461bcd60e51b815260206004820152601360248201527213144e88139bdd081a5b9a5d1a585b1a5e9959606a1b6044820152606490fd5b1561306957565b60405162461bcd60e51b8152602060048201526014602482015273098a27440e0e4cadad2eada40e8dede40d0d2ced60631b6044820152606490fd5b6001600160a01b039182168152911660208201526040810191909152606081019190915260800190565b93909285939260a09693600180891b031686526020860152604085015260806060850152816080850152848401376000828201840152601f01601f1916010190565b1561311857565b60405162461bcd60e51b815260206004820152600f60248201526e4c513a2062696420746f6f206c6f7760881b6044820152606490fd5b1561315657565b60405162461bcd60e51b81526020600482015260156024820152744c513a20626964206e6f7420617661696c61626c6560581b6044820152606490fd5b91908201809211610a2f57565b60036000918281558260018201558260028201550155565b9160a09391600180861b031683526020830152604082015260806060820152600060808201520190565b9094939260609260808301968352602083015260408201520152565b81810292918115918404141715610a2f57565b91908203918211610a2f57565b6040519061322b82612dde565b60006040838281528260208201520152565b92919261324982612f03565b916132576040519384612e2f565b82948184528183011161053c578281602093846000960137010152565b919082604091031261053c576020825192015190565b9081526001600160a01b0391821660208201529116604082015260608101919091526000608082015260a00190565b156132c057565b60405162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b6044820152606490fd5b909260809261331f959460018060a01b03168352602083015260408201528160608201520190612da6565b90565b9061332d90826131fe565b90606482029180830460641490151715610a2f5761271061331f92049061319356fed3537325843bd046c81dbdae840896c9ad0a4e5ea737ac537f65167df96921c2baa682830cade78a3affa9fa3c417095d0edb57605b0ac6fb487ce2068204ce9a2646970667358221220b388047ea594750f68c46b14a733208dbe47d450a1243a7fbf2c06c11c32040964736f6c63430008120033"; type LiquidationQueueConstructorParams = | [signer?: Signer] diff --git a/src/typechain/tapioca-periphery/factories/contracts/LiquidationQueue/bidders/CurveStableToUsdoBidder__factory.ts b/src/typechain/tapioca-periphery/factories/contracts/LiquidationQueue/bidders/CurveStableToUsdoBidder__factory.ts index 3b0fc0c3..a0e6cf86 100644 --- a/src/typechain/tapioca-periphery/factories/contracts/LiquidationQueue/bidders/CurveStableToUsdoBidder__factory.ts +++ b/src/typechain/tapioca-periphery/factories/contracts/LiquidationQueue/bidders/CurveStableToUsdoBidder__factory.ts @@ -271,7 +271,7 @@ const _abi = [ ] as const; const _bytecode = - "0x6080346100ab57601f61198838819003918201601f19168301916001600160401b038311848410176100b05780849260409485528339810103126100ab5780516001600160a01b03811691908290036100ab576020015160008054336001600160a01b03199182168117835560405194927f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a360025416176002556003556118c190816100c78239f35b600080fd5b634e487b7160e01b600052604160045260246000fdfe60806040818152600436101561001457600080fd5b600091823560e01c90816306fdde031461038057508063078dfbe71461027d5780634e71e0c8146101e25780635810e7ec146101695780635dd82b361461014c5780638da5cb5b14610125578063b691d78c14610107578063e30c3978146100df578063e91f9961146100b75763fef744fa1461009057600080fd5b346100b3576020906100ac6100a43661041e565b5050916107fc565b9051908152f35b5080fd5b50346100b357816003193601126100b35760025490516001600160a01b039091168152602090f35b50346100b357816003193601126100b35760015490516001600160a01b039091168152602090f35b50346100b3576020906100ac61011c3661041e565b939290926109ff565b50346100b357816003193601126100b357905490516001600160a01b039091168152602090f35b50346100b3576020906100ac6101613661041e565b5050916105de565b82346101df5760203660031901126101df576004356001600160a01b03818116918290036101db5761019f818454163314610488565b816002549182167faa9eb2cf6e6a7bce28901c01eb97556feb7824a5a9b13df2c67580509a62633f8580a36001600160a01b0319161760025580f35b8280fd5b80fd5b50346100b357816003193601126100b3576001546001600160a01b0391828216903382900361023a575080845493841660008051602061186c8339815191528680a36001600160a01b03199283161783551660015580f35b5162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152606490fd5b50346100b35760603660031901126100b3576001600160a01b0390600435828116919082900361037c57602435801515810361037857604435908115158203610374576102ce858754163314610488565b1561035b57821590811591610353575b5015610318575080835492831660008051602061186c8339815191528580a36001600160a01b031991821617825560018054909116905580f35b5162461bcd60e51b81526020600482015260156024820152744f776e61626c653a207a65726f206164647265737360581b6044820152606490fd5b9050386102de565b5050600180546001600160a01b03191690911790555080f35b8580fd5b8480fd5b8380fd5b919050346101db57826003193601126101db576103da92506103a1826104d3565b601a825279737461626c65202d3e205553444f2028334372762b5553444f2960301b6020830152519182916020835260208301906103de565b0390f35b919082519283825260005b84811061040a575050826000602080949584010152601f8019910116010190565b6020818301810151848301820152016103e9565b6080600319820112610483576004356001600160a01b0381168103610483579160243591604435916001600160401b03916064359083821161048357806023830112156104835781600401359384116104835760248483010111610483576024019190565b600080fd5b1561048f57565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b604081019081106001600160401b038211176104ee57604052565b634e487b7160e01b600052604160045260246000fd5b6001600160401b0381116104ee57604052565b608081019081106001600160401b038211176104ee57604052565b606081019081106001600160401b038211176104ee57604052565b601f909101601f19168101906001600160401b038211908210176104ee57604052565b51906001600160a01b038216820361048357565b1561058b57565b60405162461bcd60e51b815260206004820152600c60248201526b1554d113c81b9bdd081cd95d60a21b6044820152606490fd5b9081602091031261048357516001600160a01b03811681036104835790565b60408051636c3d8b8f60e01b808252919594936001600160a01b03939092916020918516908281600481855afa9081156107b957869184916000916107c4575b5060048b5180948193631192124760e11b8352165afa80156107b9578690600090610780575b6106519250161515610584565b87519283528183600481845afa8015610700578593600091610744575b50829060048a51809881936386c8e21d60e01b8352165afa94851561070057600095610715575b5084841461070b578160049189519283809263de40657760e01b82525afa918215610700576106d09798506000926106d3575b50501661144f565b90565b6106f29250803d106106f9575b6106ea818361054d565b8101906105bf565b38806106c8565b503d6106e0565b88513d6000823e3d90fd5b5093955050505050565b90948282813d831161073d575b61072c818361054d565b810103126101df5750519338610695565b503d610722565b919280945082813d8311610779575b61075d818361054d565b810103126101df57509082610773869493610570565b9061066e565b503d610753565b90508382813d83116107b2575b610797818361054d565b810103126101df5750856107ad61065192610570565b610644565b503d61078d565b89513d6000823e3d90fd5b92509082813d81116107f5575b6107db818361054d565b810103126101df5750826107ef8792610570565b3861061e565b503d6107d1565b60408051636c3d8b8f60e01b80825291959493926001600160a01b0392916020918416908281600481855afa9081156107b95785918491600091610990575b5060048b5180948193631192124760e11b8352165afa80156107b9578590600090610957575b61086e9250161515610584565b87519283528183600481845afa801561070057849360009161091b575b50829060048a51809781936386c8e21d60e01b8352165afa938415610700576000946108ec575b5083851461070b578160049189519283809263de40657760e01b82525afa918215610700576106d09798506000926106d35750501661144f565b90938282813d8311610914575b610903818361054d565b810103126101df57505192386108b2565b503d6108f9565b919280945082813d8311610950575b610934818361054d565b810103126101df5750908261094a859493610570565b9061088b565b503d61092a565b90508382813d8311610989575b61096e818361054d565b810103126101df57508461098461086e92610570565b610861565b503d610964565b92509082813d81116109c1575b6109a7818361054d565b810103126101df5750826109bb8692610570565b3861083b565b503d61099d565b5190811515820361048357565b6001600160a01b039182168152911660208201526040810191909152606081019190915260800190565b604051636c3d8b8f60e01b8082529496956000959490939290916001600160a01b0390911690602081600481855afa908115610e54578791611214575b50604051631192124760e11b815298906001600160a01b031660208a600481845afa998a15610e9357889a6111cc575b50610a866020969798999a60018060a01b03161515610584565b6040519586809263473ec51560e11b825285600483015260249889915afa908115610f26578991611192575b501561115b5760405163de40657760e01b815291602083600481845afa928315610f2657899361113a575b5060405163c23ea21f60e01b815297602089600481855afa988915610ee0578a99611118575b5060209060046040518094819382525afa908115610f265789916110d7575b506040516386c8e21d60e01b81529190602090839060049082906001600160a01b03165afa918215610f2657899261109f575b506001600160a01b038816330361107157818514610f8257889680610f69575b5050600254604051638eb22cdd60e01b815260048101869052868101859052604481018a9052906001600160a01b03908116906020908390606490829088165afa918215610ee0578a92610f35575b506001600160a01b0384163b15610f3157858a91610bf76040519485938493630208d92960e11b855230600486016109d5565b0381836001600160a01b0388165af18015610f2657908991610f0e575b5050604051630cf35bdd60e41b80825260048201869052939060808188816001600160a01b0388165afa908115610ee0578a91610eeb575b506040519485526004850183905260808588816001600160a01b0388165afa948515610ee0578a95610e9e575b5090610c8f610c896020936116f4565b956116f4565b60405195610c9c87610532565b6002875260403685890137610cb08761128b565b52610cba866112ae565b52606460405180958193638eb22cdd60e01b83528960048401528a8301528c604483015260018060a01b03165afa918215610e93578892610e5f575b5060018060a01b03600254169460405194633d9545e960e11b86526004860152840152866044840152606483015260016084830152600160a483015261014091828160c481875afa928315610e545792610d9d92889260409796958493610e19575b5050610d72610d80610dc6928951928391602083016113a8565b03601f19810183528261054d565b875163efa84c6d60e01b81529889978896879560048701906113e3565b6101448501526001600160a01b03166101648401526101a06101848401526101a48301906103de565b03925af1918215610e0d578092610ddc57505090565b9091506040823d604011610e05575b81610df86040938361054d565b810103126101df57505190565b3d9150610deb565b604051903d90823e3d90fd5b610dc6929350610e45610d729282610d8093903d10610e4d575b610e3d818361054d565b8101906112be565b939250610d58565b503d610e33565b6040513d89823e3d90fd5b9091506020813d602011610e8b575b81610e7b6020938361054d565b8101031261048357519038610cf6565b3d9150610e6e565b6040513d8a823e3d90fd5b602092919550610c89610ecb610c8f9260803d608011610ed9575b610ec3818361054d565b810190611252565b505090509692935050610c79565b503d610eb9565b6040513d8c823e3d90fd5b610f04915060803d608011610ed957610ec3818361054d565b5050905038610c4c565b610f1790610504565b610f22578738610c14565b8780fd5b6040513d8b823e3d90fd5b8980fd5b9091506020813d602011610f61575b81610f516020938361054d565b8101031261048357519038610bc4565b3d9150610f44565b819297509060209181010312610f225735943880610b75565b5050604051638eb22cdd60e01b815260048101849052938401829052604484018790529095949293506001600160a01b031691602084606481865afa938415611066578594611032575b50823b1561037857604051630208d92960e11b8152938593859390928492869284926110079291906001600160a01b031630600486016109d5565b03925af180156110275761101a57505090565b61102390610504565b5090565b6040513d84823e3d90fd5b9093506020813d60201161105e575b8161104e6020938361054d565b8101031261037857519238610fcc565b3d9150611041565b6040513d87823e3d90fd5b60405162461bcd60e51b815260206004820152600781880152666f6e6c79204c5160c81b6044820152606490fd5b9091506020813d6020116110cf575b816110bb6020938361054d565b810103126110cb57519038610b55565b8880fd5b3d91506110ae565b90506020813d602011611110575b816110f26020938361054d565b810103126110cb57906020611108600493610570565b919250610b22565b3d91506110e5565b602091995061113390823d84116106f9576106ea818361054d565b9890610b03565b61115491935060203d6020116106f9576106ea818361054d565b9138610add565b60405162461bcd60e51b8152602060048201526010818701526f13585c9ad95d081b9bdd081d985b1a5960821b6044820152606490fd5b90506020813d6020116111c4575b816111ad6020938361054d565b810103126110cb576111be906109c8565b38610ab2565b3d91506111a0565b995060208a3d60201161120c575b816111e76020938361054d565b81010312610f2257610a8661120160209798999a9b610570565b9a9998979650610a6c565b3d91506111da565b90506020813d60201161124a575b8161122f6020938361054d565b810103126112465761124090610570565b38610a3c565b8680fd5b3d9150611222565b91908260809103126104835781516005811015610483579161127660208201610570565b91606061128560408401610570565b92015190565b8051156112985760200190565b634e487b7160e01b600052603260045260246000fd5b8051600110156112985760400190565b809103906101408212610483576040805192606084016001600160401b038111858210176104ee5780835260808212610483576112fa81610517565b61130384610570565b81526020840151608086015261131a838501610570565b60a0860152606084015160c086015284526080607f19820112610483578190815161134481610517565b6080850151815260a0850151602082015260c08501518382015260e08501516060820152602086015260ff1901126104835761139d610120825193611388856104d3565b61139561010082016109c8565b8552016109c8565b602083015282015290565b6020908160408183019282815285518094520193019160005b8281106113cf575050505090565b8351855293810193928101926001016113c1565b60206040610120926060815160018060a01b03808251168852858201518689015284820151168488015201516060860152606083820151805160808801528481015160a08801528381015160c0880152015160e086015201518051151561010085015201511515910152565b60408051630cf35bdd60e41b808252600482018590529496959194608094936001600160a01b03908116939290918682602481885afa918215610700576000926116d1575b5087519081528960048201528681602481885afa9687156107005760009761169f575b5050906114cf6114c9606494936116f4565b966116f4565b958751946114dc86610532565b6002865260209788928a36858a01376114f48861128b565b526114fe876112ae565b52885194858092638eb22cdd60e01b8252896004830152866024830152600060448301525afa92831561169457600093611665575b506002541697865194633d9545e960e11b8652600486015260248501526044840152606483015260016084830152600160a483015261014091828160c4818a5afa92831561165a5784936115a6936115e59899936115d193600093611635575b50506115b49088519586918883016113a8565b03601f19810186528561054d565b8651630b7ecdc960e31b81529788948593849360048501906113e3565b6101606101448401526101648301906103de565b03915afa91821561162b57506000916115ff575b50905090565b82813d8311611624575b611613818361054d565b810103126101df57505180386115f9565b503d611609565b513d6000823e3d90fd5b6115b4929350908161165292903d10610e4d57610e3d818361054d565b919038611593565b85513d6000823e3d90fd5b90928682813d831161168d575b61167c818361054d565b810103126101df5750519138611533565b503d611672565b87513d6000823e3d90fd5b606494939297506116c36114cf92826114c993903d10610ed957610ec3818361054d565b5050905097929394506114b7565b6116e9919250873d8911610ed957610ec3818361054d565b505090509038611494565b600254604080516310c3a8d960e11b8152600492602092916001600160a01b0391849082908790829086165afa90811561186057908291600091611829575b50169060001995600092600354935b84811061179157505050505060001984131561175e5750505090565b5162461bcd60e51b815291820152600f60248201526e185cdcd95d081b9bdd08199bdd5b99608a1b604482015260649150fd5b855163c661065760e01b81528881018290528781602481865afa908115611694576000916117f4575b508416838516146117ec575b60001981146117d757600101611742565b601188634e487b7160e01b6000525260246000fd5b9750876117c6565b908882813d8311611822575b61180a818361054d565b810103126101df575061181c90610570565b386117ba565b503d611800565b91508482813d8311611859575b611840818361054d565b810103126101df57506118538291610570565b38611733565b503d611836565b83513d6000823e3d90fdfe8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0a2646970667358221220af6237cfc0232e450cb59ad2320c5a5f8c1a6f7e4446bce187835a7a8bbbd4df64736f6c63430008120033"; + "0x6080346100ab57601f61198838819003918201601f19168301916001600160401b038311848410176100b05780849260409485528339810103126100ab5780516001600160a01b03811691908290036100ab576020015160008054336001600160a01b03199182168117835560405194927f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a360025416176002556003556118c190816100c78239f35b600080fd5b634e487b7160e01b600052604160045260246000fdfe60806040818152600436101561001457600080fd5b600091823560e01c90816306fdde031461038057508063078dfbe71461027d5780634e71e0c8146101e25780635810e7ec146101695780635dd82b361461014c5780638da5cb5b14610125578063b691d78c14610107578063e30c3978146100df578063e91f9961146100b75763fef744fa1461009057600080fd5b346100b3576020906100ac6100a43661041e565b5050916107fc565b9051908152f35b5080fd5b50346100b357816003193601126100b35760025490516001600160a01b039091168152602090f35b50346100b357816003193601126100b35760015490516001600160a01b039091168152602090f35b50346100b3576020906100ac61011c3661041e565b939290926109ff565b50346100b357816003193601126100b357905490516001600160a01b039091168152602090f35b50346100b3576020906100ac6101613661041e565b5050916105de565b82346101df5760203660031901126101df576004356001600160a01b03818116918290036101db5761019f818454163314610488565b816002549182167faa9eb2cf6e6a7bce28901c01eb97556feb7824a5a9b13df2c67580509a62633f8580a36001600160a01b0319161760025580f35b8280fd5b80fd5b50346100b357816003193601126100b3576001546001600160a01b0391828216903382900361023a575080845493841660008051602061186c8339815191528680a36001600160a01b03199283161783551660015580f35b5162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152606490fd5b50346100b35760603660031901126100b3576001600160a01b0390600435828116919082900361037c57602435801515810361037857604435908115158203610374576102ce858754163314610488565b1561035b57821590811591610353575b5015610318575080835492831660008051602061186c8339815191528580a36001600160a01b031991821617825560018054909116905580f35b5162461bcd60e51b81526020600482015260156024820152744f776e61626c653a207a65726f206164647265737360581b6044820152606490fd5b9050386102de565b5050600180546001600160a01b03191690911790555080f35b8580fd5b8480fd5b8380fd5b919050346101db57826003193601126101db576103da92506103a1826104d3565b601a825279737461626c65202d3e205553444f2028334372762b5553444f2960301b6020830152519182916020835260208301906103de565b0390f35b919082519283825260005b84811061040a575050826000602080949584010152601f8019910116010190565b6020818301810151848301820152016103e9565b6080600319820112610483576004356001600160a01b0381168103610483579160243591604435916001600160401b03916064359083821161048357806023830112156104835781600401359384116104835760248483010111610483576024019190565b600080fd5b1561048f57565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b604081019081106001600160401b038211176104ee57604052565b634e487b7160e01b600052604160045260246000fd5b6001600160401b0381116104ee57604052565b608081019081106001600160401b038211176104ee57604052565b606081019081106001600160401b038211176104ee57604052565b601f909101601f19168101906001600160401b038211908210176104ee57604052565b51906001600160a01b038216820361048357565b1561058b57565b60405162461bcd60e51b815260206004820152600c60248201526b1554d113c81b9bdd081cd95d60a21b6044820152606490fd5b9081602091031261048357516001600160a01b03811681036104835790565b60408051636c3d8b8f60e01b808252919594936001600160a01b03939092916020918516908281600481855afa9081156107b957869184916000916107c4575b5060048b5180948193631192124760e11b8352165afa80156107b9578690600090610780575b6106519250161515610584565b87519283528183600481845afa8015610700578593600091610744575b50829060048a51809881936386c8e21d60e01b8352165afa94851561070057600095610715575b5084841461070b578160049189519283809263de40657760e01b82525afa918215610700576106d09798506000926106d3575b50501661144f565b90565b6106f29250803d106106f9575b6106ea818361054d565b8101906105bf565b38806106c8565b503d6106e0565b88513d6000823e3d90fd5b5093955050505050565b90948282813d831161073d575b61072c818361054d565b810103126101df5750519338610695565b503d610722565b919280945082813d8311610779575b61075d818361054d565b810103126101df57509082610773869493610570565b9061066e565b503d610753565b90508382813d83116107b2575b610797818361054d565b810103126101df5750856107ad61065192610570565b610644565b503d61078d565b89513d6000823e3d90fd5b92509082813d81116107f5575b6107db818361054d565b810103126101df5750826107ef8792610570565b3861061e565b503d6107d1565b60408051636c3d8b8f60e01b80825291959493926001600160a01b0392916020918416908281600481855afa9081156107b95785918491600091610990575b5060048b5180948193631192124760e11b8352165afa80156107b9578590600090610957575b61086e9250161515610584565b87519283528183600481845afa801561070057849360009161091b575b50829060048a51809781936386c8e21d60e01b8352165afa938415610700576000946108ec575b5083851461070b578160049189519283809263de40657760e01b82525afa918215610700576106d09798506000926106d35750501661144f565b90938282813d8311610914575b610903818361054d565b810103126101df57505192386108b2565b503d6108f9565b919280945082813d8311610950575b610934818361054d565b810103126101df5750908261094a859493610570565b9061088b565b503d61092a565b90508382813d8311610989575b61096e818361054d565b810103126101df57508461098461086e92610570565b610861565b503d610964565b92509082813d81116109c1575b6109a7818361054d565b810103126101df5750826109bb8692610570565b3861083b565b503d61099d565b5190811515820361048357565b6001600160a01b039182168152911660208201526040810191909152606081019190915260800190565b604051636c3d8b8f60e01b8082529496956000959490939290916001600160a01b0390911690602081600481855afa908115610e54578791611214575b50604051631192124760e11b815298906001600160a01b031660208a600481845afa998a15610e9357889a6111cc575b50610a866020969798999a60018060a01b03161515610584565b6040519586809263473ec51560e11b825285600483015260249889915afa908115610f26578991611192575b501561115b5760405163de40657760e01b815291602083600481845afa928315610f2657899361113a575b5060405163c23ea21f60e01b815297602089600481855afa988915610ee0578a99611118575b5060209060046040518094819382525afa908115610f265789916110d7575b506040516386c8e21d60e01b81529190602090839060049082906001600160a01b03165afa918215610f2657899261109f575b506001600160a01b038816330361107157818514610f8257889680610f69575b5050600254604051638eb22cdd60e01b815260048101869052868101859052604481018a9052906001600160a01b03908116906020908390606490829088165afa918215610ee0578a92610f35575b506001600160a01b0384163b15610f3157858a91610bf76040519485938493630208d92960e11b855230600486016109d5565b0381836001600160a01b0388165af18015610f2657908991610f0e575b5050604051630cf35bdd60e41b80825260048201869052939060808188816001600160a01b0388165afa908115610ee0578a91610eeb575b506040519485526004850183905260808588816001600160a01b0388165afa948515610ee0578a95610e9e575b5090610c8f610c896020936116f4565b956116f4565b60405195610c9c87610532565b6002875260403685890137610cb08761128b565b52610cba866112ae565b52606460405180958193638eb22cdd60e01b83528960048401528a8301528c604483015260018060a01b03165afa918215610e93578892610e5f575b5060018060a01b03600254169460405194633d9545e960e11b86526004860152840152866044840152606483015260016084830152600160a483015261014091828160c481875afa928315610e545792610d9d92889260409796958493610e19575b5050610d72610d80610dc6928951928391602083016113a8565b03601f19810183528261054d565b875163efa84c6d60e01b81529889978896879560048701906113e3565b6101448501526001600160a01b03166101648401526101a06101848401526101a48301906103de565b03925af1918215610e0d578092610ddc57505090565b9091506040823d604011610e05575b81610df86040938361054d565b810103126101df57505190565b3d9150610deb565b604051903d90823e3d90fd5b610dc6929350610e45610d729282610d8093903d10610e4d575b610e3d818361054d565b8101906112be565b939250610d58565b503d610e33565b6040513d89823e3d90fd5b9091506020813d602011610e8b575b81610e7b6020938361054d565b8101031261048357519038610cf6565b3d9150610e6e565b6040513d8a823e3d90fd5b602092919550610c89610ecb610c8f9260803d608011610ed9575b610ec3818361054d565b810190611252565b505090509692935050610c79565b503d610eb9565b6040513d8c823e3d90fd5b610f04915060803d608011610ed957610ec3818361054d565b5050905038610c4c565b610f1790610504565b610f22578738610c14565b8780fd5b6040513d8b823e3d90fd5b8980fd5b9091506020813d602011610f61575b81610f516020938361054d565b8101031261048357519038610bc4565b3d9150610f44565b819297509060209181010312610f225735943880610b75565b5050604051638eb22cdd60e01b815260048101849052938401829052604484018790529095949293506001600160a01b031691602084606481865afa938415611066578594611032575b50823b1561037857604051630208d92960e11b8152938593859390928492869284926110079291906001600160a01b031630600486016109d5565b03925af180156110275761101a57505090565b61102390610504565b5090565b6040513d84823e3d90fd5b9093506020813d60201161105e575b8161104e6020938361054d565b8101031261037857519238610fcc565b3d9150611041565b6040513d87823e3d90fd5b60405162461bcd60e51b815260206004820152600781880152666f6e6c79204c5160c81b6044820152606490fd5b9091506020813d6020116110cf575b816110bb6020938361054d565b810103126110cb57519038610b55565b8880fd5b3d91506110ae565b90506020813d602011611110575b816110f26020938361054d565b810103126110cb57906020611108600493610570565b919250610b22565b3d91506110e5565b602091995061113390823d84116106f9576106ea818361054d565b9890610b03565b61115491935060203d6020116106f9576106ea818361054d565b9138610add565b60405162461bcd60e51b8152602060048201526010818701526f13585c9ad95d081b9bdd081d985b1a5960821b6044820152606490fd5b90506020813d6020116111c4575b816111ad6020938361054d565b810103126110cb576111be906109c8565b38610ab2565b3d91506111a0565b995060208a3d60201161120c575b816111e76020938361054d565b81010312610f2257610a8661120160209798999a9b610570565b9a9998979650610a6c565b3d91506111da565b90506020813d60201161124a575b8161122f6020938361054d565b810103126112465761124090610570565b38610a3c565b8680fd5b3d9150611222565b91908260809103126104835781516005811015610483579161127660208201610570565b91606061128560408401610570565b92015190565b8051156112985760200190565b634e487b7160e01b600052603260045260246000fd5b8051600110156112985760400190565b809103906101408212610483576040805192606084016001600160401b038111858210176104ee5780835260808212610483576112fa81610517565b61130384610570565b81526020840151608086015261131a838501610570565b60a0860152606084015160c086015284526080607f19820112610483578190815161134481610517565b6080850151815260a0850151602082015260c08501518382015260e08501516060820152602086015260ff1901126104835761139d610120825193611388856104d3565b61139561010082016109c8565b8552016109c8565b602083015282015290565b6020908160408183019282815285518094520193019160005b8281106113cf575050505090565b8351855293810193928101926001016113c1565b60206040610120926060815160018060a01b03808251168852858201518689015284820151168488015201516060860152606083820151805160808801528481015160a08801528381015160c0880152015160e086015201518051151561010085015201511515910152565b60408051630cf35bdd60e41b808252600482018590529496959194608094936001600160a01b03908116939290918682602481885afa918215610700576000926116d1575b5087519081528960048201528681602481885afa9687156107005760009761169f575b5050906114cf6114c9606494936116f4565b966116f4565b958751946114dc86610532565b6002865260209788928a36858a01376114f48861128b565b526114fe876112ae565b52885194858092638eb22cdd60e01b8252896004830152866024830152600060448301525afa92831561169457600093611665575b506002541697865194633d9545e960e11b8652600486015260248501526044840152606483015260016084830152600160a483015261014091828160c4818a5afa92831561165a5784936115a6936115e59899936115d193600093611635575b50506115b49088519586918883016113a8565b03601f19810186528561054d565b8651630b7ecdc960e31b81529788948593849360048501906113e3565b6101606101448401526101648301906103de565b03915afa91821561162b57506000916115ff575b50905090565b82813d8311611624575b611613818361054d565b810103126101df57505180386115f9565b503d611609565b513d6000823e3d90fd5b6115b4929350908161165292903d10610e4d57610e3d818361054d565b919038611593565b85513d6000823e3d90fd5b90928682813d831161168d575b61167c818361054d565b810103126101df5750519138611533565b503d611672565b87513d6000823e3d90fd5b606494939297506116c36114cf92826114c993903d10610ed957610ec3818361054d565b5050905097929394506114b7565b6116e9919250873d8911610ed957610ec3818361054d565b505090509038611494565b600254604080516310c3a8d960e11b8152600492602092916001600160a01b0391849082908790829086165afa90811561186057908291600091611829575b50169060001995600092600354935b84811061179157505050505060001984131561175e5750505090565b5162461bcd60e51b815291820152600f60248201526e185cdcd95d081b9bdd08199bdd5b99608a1b604482015260649150fd5b855163c661065760e01b81528881018290528781602481865afa908115611694576000916117f4575b508416838516146117ec575b60001981146117d757600101611742565b601188634e487b7160e01b6000525260246000fd5b9750876117c6565b908882813d8311611822575b61180a818361054d565b810103126101df575061181c90610570565b386117ba565b503d611800565b91508482813d8311611859575b611840818361054d565b810103126101df57506118538291610570565b38611733565b503d611836565b83513d6000823e3d90fdfe8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0a2646970667358221220f00bad75dfd7902d01f06990e76a17055e7634a1f091cf0af26590772ef8e7df64736f6c63430008120033"; type CurveStableToUsdoBidderConstructorParams = | [signer?: Signer] diff --git a/src/typechain/tapioca-periphery/factories/contracts/LiquidationQueue/bidders/UniUsdoToWethBidder__factory.ts b/src/typechain/tapioca-periphery/factories/contracts/LiquidationQueue/bidders/UniUsdoToWethBidder__factory.ts index bd94e0df..c1754dee 100644 --- a/src/typechain/tapioca-periphery/factories/contracts/LiquidationQueue/bidders/UniUsdoToWethBidder__factory.ts +++ b/src/typechain/tapioca-periphery/factories/contracts/LiquidationQueue/bidders/UniUsdoToWethBidder__factory.ts @@ -271,7 +271,7 @@ const _abi = [ ] as const; const _bytecode = - "0x6080346100ab57601f6116e238819003918201601f19168301916001600160401b038311848410176100b05780849260409485528339810103126100ab5780516001600160a01b03811691908290036100ab576020015160008054336001600160a01b03199182168117835560405194927f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a3600254161760025560035561161b90816100c78239f35b600080fd5b634e487b7160e01b600052604160045260246000fdfe608080604052600436101561001357600080fd5b600090813560e01c90816306fdde031461113857508063078dfbe71461103f5780634e71e0c814610fa55780635dd82b3614610b9857806385267a0114610b6f5780638da5cb5b14610b48578063b691d78c146103f6578063b6aebf3614610380578063e30c3978146103575763fef744fa1461008f57600080fd5b346103545761009d366111c6565b5050604051636c3d8b8f60e01b8152602094936001600160a01b0391908216908681600481855afa90811561030e57839188918891610319575b506004604051809481936386c8e21d60e01b8352165afa90811561030e5790879187916102dd575b509161010e6004938714611314565b60405163de40657760e01b815292839182905afa908115610276578291879187916102b0575b506064600354956040519586938492638eb22cdd60e01b845289600485015260248401528a6044840152165afa918215610276578592610281575b50600254169160405193633d9545e960e11b85526004850152602484015283604484015283606484015260016084840152600160a484015261014092838160c481865afa93841561027657918693916101ef95938794610247575b50506060848401510152604051808095819463071e388d60e51b8352600483016114d4565b03915afa91821561023b5791610209575b50604051908152f35b90508181813d8311610234575b61022081836112dd565b8101031261022f575138610200565b600080fd5b503d610216565b604051903d90823e3d90fd5b610267929450803d1061026f575b61025f81836112dd565b81019061137e565b9138806101ca565b503d610255565b6040513d87823e3d90fd5b9091508581813d83116102a9575b61029981836112dd565b8101031261022f5751903861016f565b503d61028f565b6102d09150823d84116102d6575b6102c881836112dd565b810190611352565b38610134565b503d6102be565b82819392503d8311610307575b6102f481836112dd565b8101031261022f5751869061010e6100ff565b503d6102ea565b6040513d88823e3d90fd5b92505081813d831161034d575b61033081836112dd565b8101031261034957866103438492611300565b386100d7565b8580fd5b503d610326565b80fd5b50346103545780600319360112610354576001546040516001600160a01b039091168152602090f35b5034610354576020366003190112610354576004356001600160a01b03818116918290036103f2576103b681845416331461122b565b816002549182167f1226a5d51aea8884fdf5761c8e63e98532d3eedcc0a3d56ebe98e3080fcf96dd8580a36001600160a01b0319161760025580f35b8280fd5b503461035457610405366111c6565b604051636c3d8b8f60e01b808252919591949293926001600160a01b039092169190602081600481865afa9081156109ca578891610b0e575b50604051631192124760e11b81526001600160a01b039190911690602081600481855afa90811561093b578991610ac9575b5060249160209161048b906001600160a01b031615156114f4565b6040519283809263473ec51560e11b82528760048301525afa9081156109ca578891610a8f575b5015610a575760405163de40657760e01b815293602085600481865afa9485156109ca578895610a36575b5060405163c23ea21f60e01b815295602087600481875afa96871561093b578997610a14575b5060209060046040518096819382525afa9283156109ca5788936109d5575b506040516386c8e21d60e01b815292602090849060049082906001600160a01b03165afa9283156109ca578893610992575b50610560838314611314565b6001600160a01b038616330361096357879680610946575b5050600254604051638eb22cdd60e01b81526004810183905260248101859052604481018990526001600160a01b03918216929091602090839060649082908a165afa91821561093b578992610907575b506001600160a01b0386163b1561090357604051630208d92960e11b81523060048201526024810193909352604483015260648201528681608481836001600160a01b0389165af180156108f8576108c9575b50600354604051630cf35bdd60e41b8082526004820184905291938892916080816024816001600160a01b038b165afa90811561089b5784916108a6575b50604051928352600483018690526080836024816001600160a01b038b165afa90811561089b576020938592610862575b506040516106c29161069c826112c2565b60028252604036878401376106b082611568565b6001600160a01b03909116905261158b565b6001600160a01b039182169052604051638eb22cdd60e01b815260048101869052602481019290925260448201849052909586916064918391165afa91821561081d57819261082a575b61073d945060018060a01b03600254169260405180968192633d9545e960e11b83526101409788956004850161159b565b0381855afa91821561081d57604095610778956101c49584956107fe575b5050865163efa84c6d60e01b815297889687956004870190611468565b6101448501526001600160a01b03166101648401526101a06101848401526101a483018290525af19081156107f35782916107b9575b602082604051908152f35b90506040813d6040116107eb575b816107d4604093836112dd565b810103126107e7576020915051386107ae565b5080fd5b3d91506107c7565b6040513d84823e3d90fd5b610815929550803d1061026f5761025f81836112dd565b92388061075b565b50604051903d90823e3d90fd5b9150506020833d60201161085a575b81610846602093836112dd565b8101031261022f578561073d93519161070c565b3d9150610839565b6106c29192506108899060803d608011610894575b61088181836112dd565b81019061152f565b50509050919061068b565b503d610877565b6040513d86823e3d90fd5b6108bf915060803d6080116108945761088181836112dd565b505090503861065a565b9095906001600160401b0381116108e457604052943861061c565b634e487b7160e01b82526041600452602482fd5b6040513d89823e3d90fd5b8880fd5b9091506020813d602011610933575b81610923602093836112dd565b81010312610903575190386105c9565b3d9150610916565b6040513d8b823e3d90fd5b81929750906020918101031261095f5735943880610578565b8680fd5b60405162461bcd60e51b81526020600482015260076024820152666f6e6c79204c5160c81b6044820152606490fd5b9092506020813d6020116109c2575b816109ae602093836112dd565b810103126109be57519138610554565b8780fd5b3d91506109a1565b6040513d8a823e3d90fd5b92506020833d602011610a0c575b816109f0602093836112dd565b810103126109be576020610a05600494611300565b9350610522565b3d91506109e3565b6020919750610a2f90823d84116102d6576102c881836112dd565b9690610503565b610a5091955060203d6020116102d6576102c881836112dd565b93386104dd565b60405162461bcd60e51b815260206004820152601060248201526f13585c9ad95d081b9bdd081d985b1a5960821b6044820152606490fd5b90506020813d602011610ac1575b81610aaa602093836112dd565b810103126109be57610abb90611371565b386104b2565b3d9150610a9d565b90506020813d602011610b06575b81610ae4602093836112dd565b810103126109035760249161048b610afd602093611300565b92505091610470565b3d9150610ad7565b90506020813d602011610b40575b81610b29602093836112dd565b810103126109be57610b3a90611300565b3861043e565b3d9150610b1c565b5034610354578060031936011261035457546040516001600160a01b039091168152602090f35b50346103545780600319360112610354576002546040516001600160a01b039091168152602090f35b503461035457610ba7366111c6565b5050604051636c3d8b8f60e01b8082526020959492936001600160a01b0393909290841691908781600481865afa9081156108f857859189918991610f6e575b50600460405180948193631192124760e11b8352165afa80156108f85785908890610f36575b610c1a92501615156114f4565b6040519081528681600481855afa90811561030e5784929188918891610efd575b506004604051809581936386c8e21d60e01b8352165afa91821561030e579087918793610eca575b50610c72836004949514611314565b60405163de40657760e01b815292839182905afa908115610276579083918691610ead575b50169160035493604051630cf35bdd60e41b9081815284600482015260809182826024818a5afa91821561093b578992610e8a575b5060405190815287600482015282816024818a5afa92831561093b579185918b9594938b94610e61575b5050604051610d2691610d08826112c2565b600282526040368884013783610d1d83611568565b9116905261158b565b91169052606460405180968193638eb22cdd60e01b835287600484015260248301528960448301525afa928315610276578593610e2c575b5090610d8991600254169260405180938192633d9545e960e11b83526101409788956004850161159b565b0381855afa92831561089b5791610dc1939186938693610e0d575b50506040518080958194630b7ecdc960e31b8352600483016114d4565b03915afa91821561023b578092610ddd575b5050604051908152f35b9091508282813d8311610e06575b610df581836112dd565b810103126103545750513880610dd3565b503d610deb565b610e24929350803d1061026f5761025f81836112dd565b903880610da4565b9092508581813d8311610e5a575b610e4481836112dd565b81010312610e56575191610d89610d5e565b8480fd5b503d610e3a565b610d269294509081610e7e92903d106108945761088181836112dd565b50509050929038610cf6565b610ea2919250833d85116108945761088181836112dd565b505090509038610ccc565b610ec49150873d89116102d6576102c881836112dd565b38610c97565b8281939294503d8311610ef6575b610ee281836112dd565b810103126103495751908690610c72610c63565b503d610ed8565b9293505081813d8311610f2f575b610f1581836112dd565b81010312610349579086610f298593611300565b38610c3b565b503d610f0b565b50508781813d8311610f67575b610f4d81836112dd565b8101031261095f5784610f62610c1a92611300565b610c0d565b503d610f43565b92505081813d8311610f9e575b610f8581836112dd565b8101031261095f5787610f988692611300565b38610be7565b503d610f7b565b50346103545780600319360112610354576001546001600160a01b039081811633819003610ffb578084549384166000805160206115c68339815191528680a36001600160a01b03199283161783551660015580f35b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b5034610354576060366003190112610354576001600160a01b03600435818116908190036103f257602435801515810361113457604435908115158203610e565761108e84865416331461122b565b1561111c57811590811591611114575b50156110d7578083549283166000805160206115c68339815191528580a36001600160a01b031991821617825560018054909116905580f35b60405162461bcd60e51b81526020600482015260156024820152744f776e61626c653a207a65726f206164647265737360581b6044820152606490fd5b90503861109e565b50600180546001600160a01b03191690911790555080f35b8380fd5b9050346107e757816003193601126107e75761115381611276565b60198152602091785553444f202d3e20574554482028556e69737761702056322960381b838301526040519283918183528351918281850152815b8381106111af57505060408094508284010152601f80199101168101030190f35b80860182015187820160400152869450810161118e565b608060031982011261022f576004356001600160a01b038116810361022f579160243591604435916001600160401b03916064359083821161022f578060238301121561022f57816004013593841161022f576024848301011161022f576024019190565b1561123257565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b604081019081106001600160401b0382111761129157604052565b634e487b7160e01b600052604160045260246000fd5b608081019081106001600160401b0382111761129157604052565b606081019081106001600160401b0382111761129157604052565b601f909101601f19168101906001600160401b0382119082101761129157604052565b51906001600160a01b038216820361022f57565b1561131b57565b60405162461bcd60e51b815260206004820152600f60248201526e1d1bdad95b881b9bdd081d985b1a59608a1b6044820152606490fd5b9081602091031261022f57516001600160a01b038116810361022f5790565b5190811515820361022f57565b80910390610140821261022f576040805192606084016001600160401b03811185821017611291578083526080821261022f576113ba816112a7565b6113c384611300565b8152602084015160808601526113da838501611300565b60a0860152606084015160c086015284526080607f1982011261022f5781908151611404816112a7565b6080850151815260a0850151602082015260c08501518382015260e08501516060820152602086015260ff19011261022f5761145d61012082519361144885611276565b6114556101008201611371565b855201611371565b602083015282015290565b60206040610120926060815160018060a01b03808251168852858201518689015284820151168488015201516060860152606083820151805160808801528481015160a08801528381015160c0880152015160e086015201518051151561010085015201511515910152565b6114e18161018093611468565b6000610160806101408401528201520190565b156114fb57565b60405162461bcd60e51b815260206004820152600c60248201526b1554d113c81b9bdd081cd95d60a21b6044820152606490fd5b919082608091031261022f578151600581101561022f579161155360208201611300565b91606061156260408401611300565b92015190565b8051156115755760200190565b634e487b7160e01b600052603260045260246000fd5b8051600110156115755760400190565b60a091949360019360c083019683526020830152600060408301526060820152826080820152015256fe8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0a2646970667358221220b16b1f4b3feab0ea5af7e7aeb6be8b03828781eede58db4bf4e68b0f9e0f250a64736f6c63430008120033"; + "0x6080346100ab57601f6116e238819003918201601f19168301916001600160401b038311848410176100b05780849260409485528339810103126100ab5780516001600160a01b03811691908290036100ab576020015160008054336001600160a01b03199182168117835560405194927f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a3600254161760025560035561161b90816100c78239f35b600080fd5b634e487b7160e01b600052604160045260246000fdfe608080604052600436101561001357600080fd5b600090813560e01c90816306fdde031461113857508063078dfbe71461103f5780634e71e0c814610fa55780635dd82b3614610b9857806385267a0114610b6f5780638da5cb5b14610b48578063b691d78c146103f6578063b6aebf3614610380578063e30c3978146103575763fef744fa1461008f57600080fd5b346103545761009d366111c6565b5050604051636c3d8b8f60e01b8152602094936001600160a01b0391908216908681600481855afa90811561030e57839188918891610319575b506004604051809481936386c8e21d60e01b8352165afa90811561030e5790879187916102dd575b509161010e6004938714611314565b60405163de40657760e01b815292839182905afa908115610276578291879187916102b0575b506064600354956040519586938492638eb22cdd60e01b845289600485015260248401528a6044840152165afa918215610276578592610281575b50600254169160405193633d9545e960e11b85526004850152602484015283604484015283606484015260016084840152600160a484015261014092838160c481865afa93841561027657918693916101ef95938794610247575b50506060848401510152604051808095819463071e388d60e51b8352600483016114d4565b03915afa91821561023b5791610209575b50604051908152f35b90508181813d8311610234575b61022081836112dd565b8101031261022f575138610200565b600080fd5b503d610216565b604051903d90823e3d90fd5b610267929450803d1061026f575b61025f81836112dd565b81019061137e565b9138806101ca565b503d610255565b6040513d87823e3d90fd5b9091508581813d83116102a9575b61029981836112dd565b8101031261022f5751903861016f565b503d61028f565b6102d09150823d84116102d6575b6102c881836112dd565b810190611352565b38610134565b503d6102be565b82819392503d8311610307575b6102f481836112dd565b8101031261022f5751869061010e6100ff565b503d6102ea565b6040513d88823e3d90fd5b92505081813d831161034d575b61033081836112dd565b8101031261034957866103438492611300565b386100d7565b8580fd5b503d610326565b80fd5b50346103545780600319360112610354576001546040516001600160a01b039091168152602090f35b5034610354576020366003190112610354576004356001600160a01b03818116918290036103f2576103b681845416331461122b565b816002549182167f1226a5d51aea8884fdf5761c8e63e98532d3eedcc0a3d56ebe98e3080fcf96dd8580a36001600160a01b0319161760025580f35b8280fd5b503461035457610405366111c6565b604051636c3d8b8f60e01b808252919591949293926001600160a01b039092169190602081600481865afa9081156109ca578891610b0e575b50604051631192124760e11b81526001600160a01b039190911690602081600481855afa90811561093b578991610ac9575b5060249160209161048b906001600160a01b031615156114f4565b6040519283809263473ec51560e11b82528760048301525afa9081156109ca578891610a8f575b5015610a575760405163de40657760e01b815293602085600481865afa9485156109ca578895610a36575b5060405163c23ea21f60e01b815295602087600481875afa96871561093b578997610a14575b5060209060046040518096819382525afa9283156109ca5788936109d5575b506040516386c8e21d60e01b815292602090849060049082906001600160a01b03165afa9283156109ca578893610992575b50610560838314611314565b6001600160a01b038616330361096357879680610946575b5050600254604051638eb22cdd60e01b81526004810183905260248101859052604481018990526001600160a01b03918216929091602090839060649082908a165afa91821561093b578992610907575b506001600160a01b0386163b1561090357604051630208d92960e11b81523060048201526024810193909352604483015260648201528681608481836001600160a01b0389165af180156108f8576108c9575b50600354604051630cf35bdd60e41b8082526004820184905291938892916080816024816001600160a01b038b165afa90811561089b5784916108a6575b50604051928352600483018690526080836024816001600160a01b038b165afa90811561089b576020938592610862575b506040516106c29161069c826112c2565b60028252604036878401376106b082611568565b6001600160a01b03909116905261158b565b6001600160a01b039182169052604051638eb22cdd60e01b815260048101869052602481019290925260448201849052909586916064918391165afa91821561081d57819261082a575b61073d945060018060a01b03600254169260405180968192633d9545e960e11b83526101409788956004850161159b565b0381855afa91821561081d57604095610778956101c49584956107fe575b5050865163efa84c6d60e01b815297889687956004870190611468565b6101448501526001600160a01b03166101648401526101a06101848401526101a483018290525af19081156107f35782916107b9575b602082604051908152f35b90506040813d6040116107eb575b816107d4604093836112dd565b810103126107e7576020915051386107ae565b5080fd5b3d91506107c7565b6040513d84823e3d90fd5b610815929550803d1061026f5761025f81836112dd565b92388061075b565b50604051903d90823e3d90fd5b9150506020833d60201161085a575b81610846602093836112dd565b8101031261022f578561073d93519161070c565b3d9150610839565b6106c29192506108899060803d608011610894575b61088181836112dd565b81019061152f565b50509050919061068b565b503d610877565b6040513d86823e3d90fd5b6108bf915060803d6080116108945761088181836112dd565b505090503861065a565b9095906001600160401b0381116108e457604052943861061c565b634e487b7160e01b82526041600452602482fd5b6040513d89823e3d90fd5b8880fd5b9091506020813d602011610933575b81610923602093836112dd565b81010312610903575190386105c9565b3d9150610916565b6040513d8b823e3d90fd5b81929750906020918101031261095f5735943880610578565b8680fd5b60405162461bcd60e51b81526020600482015260076024820152666f6e6c79204c5160c81b6044820152606490fd5b9092506020813d6020116109c2575b816109ae602093836112dd565b810103126109be57519138610554565b8780fd5b3d91506109a1565b6040513d8a823e3d90fd5b92506020833d602011610a0c575b816109f0602093836112dd565b810103126109be576020610a05600494611300565b9350610522565b3d91506109e3565b6020919750610a2f90823d84116102d6576102c881836112dd565b9690610503565b610a5091955060203d6020116102d6576102c881836112dd565b93386104dd565b60405162461bcd60e51b815260206004820152601060248201526f13585c9ad95d081b9bdd081d985b1a5960821b6044820152606490fd5b90506020813d602011610ac1575b81610aaa602093836112dd565b810103126109be57610abb90611371565b386104b2565b3d9150610a9d565b90506020813d602011610b06575b81610ae4602093836112dd565b810103126109035760249161048b610afd602093611300565b92505091610470565b3d9150610ad7565b90506020813d602011610b40575b81610b29602093836112dd565b810103126109be57610b3a90611300565b3861043e565b3d9150610b1c565b5034610354578060031936011261035457546040516001600160a01b039091168152602090f35b50346103545780600319360112610354576002546040516001600160a01b039091168152602090f35b503461035457610ba7366111c6565b5050604051636c3d8b8f60e01b8082526020959492936001600160a01b0393909290841691908781600481865afa9081156108f857859189918991610f6e575b50600460405180948193631192124760e11b8352165afa80156108f85785908890610f36575b610c1a92501615156114f4565b6040519081528681600481855afa90811561030e5784929188918891610efd575b506004604051809581936386c8e21d60e01b8352165afa91821561030e579087918793610eca575b50610c72836004949514611314565b60405163de40657760e01b815292839182905afa908115610276579083918691610ead575b50169160035493604051630cf35bdd60e41b9081815284600482015260809182826024818a5afa91821561093b578992610e8a575b5060405190815287600482015282816024818a5afa92831561093b579185918b9594938b94610e61575b5050604051610d2691610d08826112c2565b600282526040368884013783610d1d83611568565b9116905261158b565b91169052606460405180968193638eb22cdd60e01b835287600484015260248301528960448301525afa928315610276578593610e2c575b5090610d8991600254169260405180938192633d9545e960e11b83526101409788956004850161159b565b0381855afa92831561089b5791610dc1939186938693610e0d575b50506040518080958194630b7ecdc960e31b8352600483016114d4565b03915afa91821561023b578092610ddd575b5050604051908152f35b9091508282813d8311610e06575b610df581836112dd565b810103126103545750513880610dd3565b503d610deb565b610e24929350803d1061026f5761025f81836112dd565b903880610da4565b9092508581813d8311610e5a575b610e4481836112dd565b81010312610e56575191610d89610d5e565b8480fd5b503d610e3a565b610d269294509081610e7e92903d106108945761088181836112dd565b50509050929038610cf6565b610ea2919250833d85116108945761088181836112dd565b505090509038610ccc565b610ec49150873d89116102d6576102c881836112dd565b38610c97565b8281939294503d8311610ef6575b610ee281836112dd565b810103126103495751908690610c72610c63565b503d610ed8565b9293505081813d8311610f2f575b610f1581836112dd565b81010312610349579086610f298593611300565b38610c3b565b503d610f0b565b50508781813d8311610f67575b610f4d81836112dd565b8101031261095f5784610f62610c1a92611300565b610c0d565b503d610f43565b92505081813d8311610f9e575b610f8581836112dd565b8101031261095f5787610f988692611300565b38610be7565b503d610f7b565b50346103545780600319360112610354576001546001600160a01b039081811633819003610ffb578084549384166000805160206115c68339815191528680a36001600160a01b03199283161783551660015580f35b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b5034610354576060366003190112610354576001600160a01b03600435818116908190036103f257602435801515810361113457604435908115158203610e565761108e84865416331461122b565b1561111c57811590811591611114575b50156110d7578083549283166000805160206115c68339815191528580a36001600160a01b031991821617825560018054909116905580f35b60405162461bcd60e51b81526020600482015260156024820152744f776e61626c653a207a65726f206164647265737360581b6044820152606490fd5b90503861109e565b50600180546001600160a01b03191690911790555080f35b8380fd5b9050346107e757816003193601126107e75761115381611276565b60198152602091785553444f202d3e20574554482028556e69737761702056322960381b838301526040519283918183528351918281850152815b8381106111af57505060408094508284010152601f80199101168101030190f35b80860182015187820160400152869450810161118e565b608060031982011261022f576004356001600160a01b038116810361022f579160243591604435916001600160401b03916064359083821161022f578060238301121561022f57816004013593841161022f576024848301011161022f576024019190565b1561123257565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b604081019081106001600160401b0382111761129157604052565b634e487b7160e01b600052604160045260246000fd5b608081019081106001600160401b0382111761129157604052565b606081019081106001600160401b0382111761129157604052565b601f909101601f19168101906001600160401b0382119082101761129157604052565b51906001600160a01b038216820361022f57565b1561131b57565b60405162461bcd60e51b815260206004820152600f60248201526e1d1bdad95b881b9bdd081d985b1a59608a1b6044820152606490fd5b9081602091031261022f57516001600160a01b038116810361022f5790565b5190811515820361022f57565b80910390610140821261022f576040805192606084016001600160401b03811185821017611291578083526080821261022f576113ba816112a7565b6113c384611300565b8152602084015160808601526113da838501611300565b60a0860152606084015160c086015284526080607f1982011261022f5781908151611404816112a7565b6080850151815260a0850151602082015260c08501518382015260e08501516060820152602086015260ff19011261022f5761145d61012082519361144885611276565b6114556101008201611371565b855201611371565b602083015282015290565b60206040610120926060815160018060a01b03808251168852858201518689015284820151168488015201516060860152606083820151805160808801528481015160a08801528381015160c0880152015160e086015201518051151561010085015201511515910152565b6114e18161018093611468565b6000610160806101408401528201520190565b156114fb57565b60405162461bcd60e51b815260206004820152600c60248201526b1554d113c81b9bdd081cd95d60a21b6044820152606490fd5b919082608091031261022f578151600581101561022f579161155360208201611300565b91606061156260408401611300565b92015190565b8051156115755760200190565b634e487b7160e01b600052603260045260246000fd5b8051600110156115755760400190565b60a091949360019360c083019683526020830152600060408301526060820152826080820152015256fe8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0a2646970667358221220d81219b351627576ddc3976e4b1312d18eac13ddac09a8ba43c451a3b7b8be0564736f6c63430008120033"; type UniUsdoToWethBidderConstructorParams = | [signer?: Signer] diff --git a/src/typechain/tapioca-periphery/factories/contracts/Swapper/CurveSwapper__factory.ts b/src/typechain/tapioca-periphery/factories/contracts/Swapper/CurveSwapper__factory.ts index 656e9a69..4476fbf1 100644 --- a/src/typechain/tapioca-periphery/factories/contracts/Swapper/CurveSwapper__factory.ts +++ b/src/typechain/tapioca-periphery/factories/contracts/Swapper/CurveSwapper__factory.ts @@ -665,7 +665,7 @@ const _abi = [ ] as const; const _bytecode = - "0x60a0346200010957601f62001b0638819003918201601f19168301916001600160401b038311848410176200010e578084926040948552833981010312620001095780516001600160a01b039182821691829003620001095760200151918083168084036200010957620000c29060005460018060a01b03199333858316176000553391167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a360018055620000ba84151562000124565b151562000124565b600254161760025560805260405161199490816200017282396080518181816102f2015281816104f60152818161087b0152818161093701528181610aa10152610cde0152f35b600080fd5b634e487b7160e01b600052604160045260246000fd5b156200012c57565b60405162461bcd60e51b815260206004820152601a60248201527f537761707065723a2061646472657373206e6f742076616c69640000000000006044820152606490fdfe608080604052600436101561001357600080fd5b600090813560e01c9081631a16321014610ffe57508063218751b214610fd55780633fa2ef5e14610f415780635bf66e4814610c4d578063715018a614610c055780637b2a8bd214610af75780638da5cb5b14610ad0578063de40657714610a8b578063e3c711a014610a5b578063efa84c6d1461014d5763f2fde38b1461009a57600080fd5b3461014a57602036600319011261014a576100b3611026565b6100bb611104565b6001600160a01b039081169081156100f6576000548260018060a01b03198216176000551660008051602061193f833981519152600080a380f35b60405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608490fd5b80fd5b5036600319016101a08112610a57576101401361014a57610164356001600160a01b038116900361014a57610184356001600160401b038111610a575736602382011215610a57578060040135826101a4826110e9565b926101b260405194856110b0565b82845260208401923660248284010111610a535780602460209301853784010152600260015414610a0e576002600155829180518101916020828185019403126107335751906001600160401b03821161073357019080603f8301121561070157602082015161022181611236565b9261022f60405194856110b0565b8184526040602085019260051b8201019283116108e057604001905b8282106109fe5750506002546001600160a01b031691905061026c8161124d565b516040519063c661065760e01b82526004820152602081602481865afa9081156106bb5785916109df575b5060206102a383611270565b5160246040518096819363c661065760e01b835260048301525afa9283156106bb5785936109be575b50849060843580158015816109b3575b15610827575061031692505b60a43591602435907f00000000000000000000000000000000000000000000000000000000000000006116f0565b9061032a6103238261124d565b5191611270565b5160025460405163c661065760e01b81526001600160801b038416600482015293916001600160a01b0390911690602085602481855afa94851561081c5788956107fb575b5060405163c661065760e01b81526001600160801b038216600482015293602085602481865afa9485156107f05789956107bf575b50604051635e0d443f60e01b8152602081806103cb8887600f0b87600f0b60048501611280565b0381875afa9081156107b4578a9161077e575b50610144351161073f576040516370a0823160e01b8152306004820152958993906020886024816001600160a01b038b165afa9788156106bb578598610705575b5061042b918691611550565b6002546001600160a01b031690813b1561070157836084926040519687958694630f7c084960e21b8652600f0b6004860152600f0b602485015260448401526101443560648401525af180156106f6576106c6575b506040516370a0823160e01b81523060048201529190602090839060249082906001600160a01b03165afa9182156106bb578592610687575b5080821115610654576104cb916116cd565b9182156106105761012435801515810361060b57156105bc57506040839161051d8460018060a01b037f0000000000000000000000000000000000000000000000000000000000000000168093611550565b8151634d4d7cbd60e11b8152606480356004830152306024830152610164356001600160a01b0316604483015281018590526084810184905292839160a49183915af19081156105b15760409391610582575b505b6001805582519182526020820152f35b6105a29150833d85116105aa575b61059a81836110b0565b8101906112bb565b905038610570565b503d610590565b6040513d85823e3d90fd5b90604093506106069084519063a9059cbb60e01b60208301526105f8826105ea8761016435602484016112d1565b03601f1981018452836110b0565b6001600160a01b0316611304565b610572565b600080fd5b60405162461bcd60e51b815260206004820152601c60248201527b04375727665537761707065723a20616d6f756e744f757420697320360241b6044820152606490fd5b60405162461bcd60e51b815260206004820152600b60248201526a1cddd85c0819985a5b195960aa1b6044820152606490fd5b9091506020813d6020116106b3575b816106a3602093836110b0565b8101031261060b575190386104b9565b3d9150610696565b6040513d87823e3d90fd5b9094906001600160401b0381116106e257604052936020610480565b634e487b7160e01b82526041600452602482fd5b6040513d88823e3d90fd5b8380fd5b9097506020813d602011610737575b81610721602093836110b0565b8101031261073357519661042b61041f565b8480fd5b3d9150610714565b60405162461bcd60e51b81526020600482015260176024820152761a5b9cdd59999a58da595b9d0b585b5bdd5b9d0b5bdd5d604a1b6044820152606490fd5b90506020813d6020116107ac575b81610799602093836110b0565b810103126107a85751386103de565b8980fd5b3d915061078c565b6040513d8c823e3d90fd5b6107e291955060203d6020116107e9575b6107da81836110b0565b81019061129c565b93386103a4565b503d6107d0565b6040513d8b823e3d90fd5b61081591955060203d6020116107e9576107da81836110b0565b933861036f565b6040513d8a823e3d90fd5b906024359182610900575b50505060643580610848575b50610316916102e8565b60c4356108f65760405163442c159960e01b8152600481019190915260e4356024820152604481018790526020816064817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa80156108eb576108bc575b50610316915b9161083e565b602090813d83116108e4575b6108d281836110b0565b810103126108e057386108b0565b8580fd5b503d6108c8565b6040513d89823e3d90fd5b50610316916108b6565b9293509091156109ac575060405163442c159960e01b8152600481019190915260a4356024820152604481018690526020816064817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa9081156106f657869161097a575b505b90388080610832565b90506020813d6020116109a4575b81610995602093836110b0565b810103126108e057513861096f565b3d9150610988565b9050610971565b5060c43515156102dc565b6109d891935060203d6020116107e9576107da81836110b0565b91386102cc565b6109f8915060203d6020116107e9576107da81836110b0565b38610297565b815181526020918201910161024b565b60405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606490fd5b8280fd5b5080fd5b503461014a57610a6a3661105a565b505060405162461bcd60e51b8152905080610a87600482016111fe565b0390fd5b503461014a578060031936011261014a576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b503461014a578060031936011261014a57546040516001600160a01b039091168152602090f35b503461014a5760c036600319011261014a57610c0190610b1561103c565b610b1d61104b565b610b256111ba565b50610b2e6111ba565b92610b3761115c565b9160443583526064356020840152610b4d61115c565b91808352604083015260043560208301526024356060830152610b6e611191565b93151584521515602084015283526020830152604082015260405191829182919091610120602060406101408401956060815160018060a01b03808251168852858201518689015284820151168488015201516060860152606083820151805160808801528481015160a08801528381015160c0880152015160e086015201518051151561010085015201511515910152565b0390f35b503461014a578060031936011261014a57610c1e611104565b80546001600160a01b03198116825581906001600160a01b031660008051602061193f8339815191528280a380f35b503461014a57610c5c3661105a565b81939291016020938481830312610701578035906001600160401b03821161073357019080601f83011215610701578135610c9681611236565b92610ca460405194856110b0565b818452868085019260051b8201019283116108e0579086808095949301915b838310610f31575060608601359560808101359350879250907f0000000000000000000000000000000000000000000000000000000000000000908201358415801581610f24575b15610db2575050505050610d5a9350905b6002546001600160a01b031690610d356103238261124d565b5160405195869485938493635e0d443f60e01b8552600f0b90600f0b60048501611280565b03915afa918215610da6578092610d76575b5050604051908152f35b9091508282813d8311610d9f575b610d8e81836110b0565b8101031261014a5750513880610d6c565b503d610d84565b604051903d90823e3d90fd5b81929394969591610e7c575b50505085610dd3575b5050610d5a9350610d1c565b9293919260c0820135610e6e5760405163442c159960e01b8152600481019690965260e09190910135602486015260448501869052849060649082906001600160a01b03165afa8015610e635790859291610e36575b610d5a93505b3880610dc7565b919092813d8311610e5c575b610e4c81836110b0565b81010312610a5357818491610e29565b503d610e42565b6040513d86823e3d90fd5b50509190610d5a9350610e2f565b929694955092939092909115610f1957505060405163442c159960e01b8152600481019190915260a082013560248201526044810186905286816064816001600160a01b0388165afa9081156106f6579087949392918791610ee4575b505b92388080610dbe565b85819394959692503d8311610f12575b610efe81836110b0565b810103126108e05790869392915138610ed9565b503d610ef4565b909493929150610edb565b5060c08401351515610d0b565b8235815291810191859101610cc3565b503461014a5760c036600319011261014a57610f5b611026565b906024356001600160a01b038181169291839003610a5757610c0193610f7f61103c565b92610f8861104b565b90610f916111ba565b50610f9a6111ba565b95610fa361115c565b9460443586526064356020870152610fb961115c565b9416845260408401528060208401526060830152610b6e611191565b503461014a578060031936011261014a576002546040516001600160a01b039091168152602090f35b823461014a578060031936011261014a575062461bcd60e51b815280610a87600482016111fe565b600435906001600160a01b038216820361060b57565b60843590811515820361060b57565b60a43590811515820361060b57565b6003198101610160811261060b576101401361060b576004916001600160401b0391610144359083821161060b578060238301121561060b578185013593841161060b576024848301011161060b576024019190565b601f909101601f19168101906001600160401b038211908210176110d357604052565b634e487b7160e01b600052604160045260246000fd5b6001600160401b0381116110d357601f01601f191660200190565b6000546001600160a01b0316330361111857565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b60405190608082016001600160401b038111838210176110d35760405260006060838281528260208201528260408201520152565b60408051919082016001600160401b038111838210176110d35760405260006020838281520152565b60405190606082016001600160401b038111838210176110d357604052816111e061115c565b81526111ea61115c565b602082015260406111f9611191565b910152565b60609060208152601d60208201527f4375727665537761707065723a206e6f7420696d706c656d656e74656400000060408201520190565b6001600160401b0381116110d35760051b60200190565b80511561125a5760200190565b634e487b7160e01b600052603260045260246000fd5b80516001101561125a5760400190565b6040919493926060820195600f0b8252600f0b60208201520152565b9081602091031261060b57516001600160a01b038116810361060b5790565b919082604091031261060b576020825192015190565b6001600160a01b039091168152602081019190915260400190565b9081602091031261060b5751801515810361060b5790565b60408051908101916001600160a01b03166001600160401b038311828410176110d357611373926040526000806020958685527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c656487860152868151910182855af161136d6113ef565b9161141f565b8051908161138057505050565b82806113909383010191016112ec565b156113985750565b6084906040519062461bcd60e51b82526004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152fd5b3d1561141a573d90611400826110e9565b9161140e60405193846110b0565b82523d6000602084013e565b606090565b919290156114815750815115611433575090565b3b1561143c5790565b60405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606490fd5b8251909150156114945750805190602001fd5b6040519062461bcd60e51b82528160208060048301528251908160248401526000935b8285106114da575050604492506000838284010152601f80199101168101030190fd5b84810182015186860160440152938101938593506114b7565b156114fa57565b60405162461bcd60e51b815260206004820152602860248201527f42617365537761707065723a3a73616665417070726f76653a20617070726f76604482015267194819985a5b195960c21b6064820152608490fd5b929190833b156116915760405163095ea7b360e01b60208083018281526001600160a01b0385166024850152600060448086018290528552919591949293919291608081016001600160401b0381118282101761167d578695936115d9878080966116199d9e99966115ff966040525190828b5af16115cd6113ef565b8161164d575b506114f3565b6115f16040519384928b8401978852602484016112d1565b03601f1981018352826110b0565b51925af19061160c6113ef565b8261161b575b50506114f3565b565b8091925051918215928315611635575b5050503880611612565b61164593508201810191016112ec565b38808061162b565b8051801592508c908315611665575b505050386115d3565b61167593508201810191016112ec565b388b8161165c565b634e487b7160e01b87526041600452602487fd5b60405162461bcd60e51b815260206004820152601460248201527314ddd85c1c195c8e881b9bc818dbdb9d1c9858dd60621b6044820152606490fd5b919082039182116116da57565b634e487b7160e01b600052601160045260246000fd5b94939190929461010435801515810361060b576118c057505050821561188457604080516370a0823160e01b808252306004830152919490926001600160a01b031691602091908285602481875afa9485156118795760009561184a575b5086516323b872dd60e01b8482015233602482015230604482015260648082019390935291825260a082016001600160401b038111838210176110d357839261179991895285611304565b602487518095819382523060048301525afa91821561183f57600092611810575b50828211156117d257506117cf9293506116cd565b90565b60649085519062461bcd60e51b82526004820152601860248201527714ddd85c1c195c8e881d1c985b9cd9995c8819985a5b195960421b6044820152fd5b90918282813d8311611838575b61182781836110b0565b8101031261014a57505190386117ba565b503d61181d565b85513d6000823e3d90fd5b90948382813d8311611872575b61186181836110b0565b8101031261014a575051933861174e565b503d611857565b87513d6000823e3d90fd5b60405162461bcd60e51b81526020600482015260146024820152730537761707065723a20616d6f756e7420697320360641b6044820152606490fd5b6040935090600060a49285979496975196879586946311a5cc7760e31b865260048601523060248601523060448601526064850152608484015260018060a01b03165af190811561193257600091611916575090565b61192e915060403d81116105aa5761059a81836110b0565b5090565b6040513d6000823e3d90fdfe8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0a264697066735822122066627dec17bd649e692da07f177efd1fdb5ef9160955ab37bca9c46d8a34736e64736f6c63430008120033"; + "0x60a0346200010957601f62001b0638819003918201601f19168301916001600160401b038311848410176200010e578084926040948552833981010312620001095780516001600160a01b039182821691829003620001095760200151918083168084036200010957620000c29060005460018060a01b03199333858316176000553391167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a360018055620000ba84151562000124565b151562000124565b600254161760025560805260405161199490816200017282396080518181816102f2015281816104f60152818161087b0152818161093701528181610aa10152610cde0152f35b600080fd5b634e487b7160e01b600052604160045260246000fd5b156200012c57565b60405162461bcd60e51b815260206004820152601a60248201527f537761707065723a2061646472657373206e6f742076616c69640000000000006044820152606490fdfe608080604052600436101561001357600080fd5b600090813560e01c9081631a16321014610ffe57508063218751b214610fd55780633fa2ef5e14610f415780635bf66e4814610c4d578063715018a614610c055780637b2a8bd214610af75780638da5cb5b14610ad0578063de40657714610a8b578063e3c711a014610a5b578063efa84c6d1461014d5763f2fde38b1461009a57600080fd5b3461014a57602036600319011261014a576100b3611026565b6100bb611104565b6001600160a01b039081169081156100f6576000548260018060a01b03198216176000551660008051602061193f833981519152600080a380f35b60405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608490fd5b80fd5b5036600319016101a08112610a57576101401361014a57610164356001600160a01b038116900361014a57610184356001600160401b038111610a575736602382011215610a57578060040135826101a4826110e9565b926101b260405194856110b0565b82845260208401923660248284010111610a535780602460209301853784010152600260015414610a0e576002600155829180518101916020828185019403126107335751906001600160401b03821161073357019080603f8301121561070157602082015161022181611236565b9261022f60405194856110b0565b8184526040602085019260051b8201019283116108e057604001905b8282106109fe5750506002546001600160a01b031691905061026c8161124d565b516040519063c661065760e01b82526004820152602081602481865afa9081156106bb5785916109df575b5060206102a383611270565b5160246040518096819363c661065760e01b835260048301525afa9283156106bb5785936109be575b50849060843580158015816109b3575b15610827575061031692505b60a43591602435907f00000000000000000000000000000000000000000000000000000000000000006116f0565b9061032a6103238261124d565b5191611270565b5160025460405163c661065760e01b81526001600160801b038416600482015293916001600160a01b0390911690602085602481855afa94851561081c5788956107fb575b5060405163c661065760e01b81526001600160801b038216600482015293602085602481865afa9485156107f05789956107bf575b50604051635e0d443f60e01b8152602081806103cb8887600f0b87600f0b60048501611280565b0381875afa9081156107b4578a9161077e575b50610144351161073f576040516370a0823160e01b8152306004820152958993906020886024816001600160a01b038b165afa9788156106bb578598610705575b5061042b918691611550565b6002546001600160a01b031690813b1561070157836084926040519687958694630f7c084960e21b8652600f0b6004860152600f0b602485015260448401526101443560648401525af180156106f6576106c6575b506040516370a0823160e01b81523060048201529190602090839060249082906001600160a01b03165afa9182156106bb578592610687575b5080821115610654576104cb916116cd565b9182156106105761012435801515810361060b57156105bc57506040839161051d8460018060a01b037f0000000000000000000000000000000000000000000000000000000000000000168093611550565b8151634d4d7cbd60e11b8152606480356004830152306024830152610164356001600160a01b0316604483015281018590526084810184905292839160a49183915af19081156105b15760409391610582575b505b6001805582519182526020820152f35b6105a29150833d85116105aa575b61059a81836110b0565b8101906112bb565b905038610570565b503d610590565b6040513d85823e3d90fd5b90604093506106069084519063a9059cbb60e01b60208301526105f8826105ea8761016435602484016112d1565b03601f1981018452836110b0565b6001600160a01b0316611304565b610572565b600080fd5b60405162461bcd60e51b815260206004820152601c60248201527b04375727665537761707065723a20616d6f756e744f757420697320360241b6044820152606490fd5b60405162461bcd60e51b815260206004820152600b60248201526a1cddd85c0819985a5b195960aa1b6044820152606490fd5b9091506020813d6020116106b3575b816106a3602093836110b0565b8101031261060b575190386104b9565b3d9150610696565b6040513d87823e3d90fd5b9094906001600160401b0381116106e257604052936020610480565b634e487b7160e01b82526041600452602482fd5b6040513d88823e3d90fd5b8380fd5b9097506020813d602011610737575b81610721602093836110b0565b8101031261073357519661042b61041f565b8480fd5b3d9150610714565b60405162461bcd60e51b81526020600482015260176024820152761a5b9cdd59999a58da595b9d0b585b5bdd5b9d0b5bdd5d604a1b6044820152606490fd5b90506020813d6020116107ac575b81610799602093836110b0565b810103126107a85751386103de565b8980fd5b3d915061078c565b6040513d8c823e3d90fd5b6107e291955060203d6020116107e9575b6107da81836110b0565b81019061129c565b93386103a4565b503d6107d0565b6040513d8b823e3d90fd5b61081591955060203d6020116107e9576107da81836110b0565b933861036f565b6040513d8a823e3d90fd5b906024359182610900575b50505060643580610848575b50610316916102e8565b60c4356108f65760405163442c159960e01b8152600481019190915260e4356024820152604481018790526020816064817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa80156108eb576108bc575b50610316915b9161083e565b602090813d83116108e4575b6108d281836110b0565b810103126108e057386108b0565b8580fd5b503d6108c8565b6040513d89823e3d90fd5b50610316916108b6565b9293509091156109ac575060405163442c159960e01b8152600481019190915260a4356024820152604481018690526020816064817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa9081156106f657869161097a575b505b90388080610832565b90506020813d6020116109a4575b81610995602093836110b0565b810103126108e057513861096f565b3d9150610988565b9050610971565b5060c43515156102dc565b6109d891935060203d6020116107e9576107da81836110b0565b91386102cc565b6109f8915060203d6020116107e9576107da81836110b0565b38610297565b815181526020918201910161024b565b60405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606490fd5b8280fd5b5080fd5b503461014a57610a6a3661105a565b505060405162461bcd60e51b8152905080610a87600482016111fe565b0390fd5b503461014a578060031936011261014a576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b503461014a578060031936011261014a57546040516001600160a01b039091168152602090f35b503461014a5760c036600319011261014a57610c0190610b1561103c565b610b1d61104b565b610b256111ba565b50610b2e6111ba565b92610b3761115c565b9160443583526064356020840152610b4d61115c565b91808352604083015260043560208301526024356060830152610b6e611191565b93151584521515602084015283526020830152604082015260405191829182919091610120602060406101408401956060815160018060a01b03808251168852858201518689015284820151168488015201516060860152606083820151805160808801528481015160a08801528381015160c0880152015160e086015201518051151561010085015201511515910152565b0390f35b503461014a578060031936011261014a57610c1e611104565b80546001600160a01b03198116825581906001600160a01b031660008051602061193f8339815191528280a380f35b503461014a57610c5c3661105a565b81939291016020938481830312610701578035906001600160401b03821161073357019080601f83011215610701578135610c9681611236565b92610ca460405194856110b0565b818452868085019260051b8201019283116108e0579086808095949301915b838310610f31575060608601359560808101359350879250907f0000000000000000000000000000000000000000000000000000000000000000908201358415801581610f24575b15610db2575050505050610d5a9350905b6002546001600160a01b031690610d356103238261124d565b5160405195869485938493635e0d443f60e01b8552600f0b90600f0b60048501611280565b03915afa918215610da6578092610d76575b5050604051908152f35b9091508282813d8311610d9f575b610d8e81836110b0565b8101031261014a5750513880610d6c565b503d610d84565b604051903d90823e3d90fd5b81929394969591610e7c575b50505085610dd3575b5050610d5a9350610d1c565b9293919260c0820135610e6e5760405163442c159960e01b8152600481019690965260e09190910135602486015260448501869052849060649082906001600160a01b03165afa8015610e635790859291610e36575b610d5a93505b3880610dc7565b919092813d8311610e5c575b610e4c81836110b0565b81010312610a5357818491610e29565b503d610e42565b6040513d86823e3d90fd5b50509190610d5a9350610e2f565b929694955092939092909115610f1957505060405163442c159960e01b8152600481019190915260a082013560248201526044810186905286816064816001600160a01b0388165afa9081156106f6579087949392918791610ee4575b505b92388080610dbe565b85819394959692503d8311610f12575b610efe81836110b0565b810103126108e05790869392915138610ed9565b503d610ef4565b909493929150610edb565b5060c08401351515610d0b565b8235815291810191859101610cc3565b503461014a5760c036600319011261014a57610f5b611026565b906024356001600160a01b038181169291839003610a5757610c0193610f7f61103c565b92610f8861104b565b90610f916111ba565b50610f9a6111ba565b95610fa361115c565b9460443586526064356020870152610fb961115c565b9416845260408401528060208401526060830152610b6e611191565b503461014a578060031936011261014a576002546040516001600160a01b039091168152602090f35b823461014a578060031936011261014a575062461bcd60e51b815280610a87600482016111fe565b600435906001600160a01b038216820361060b57565b60843590811515820361060b57565b60a43590811515820361060b57565b6003198101610160811261060b576101401361060b576004916001600160401b0391610144359083821161060b578060238301121561060b578185013593841161060b576024848301011161060b576024019190565b601f909101601f19168101906001600160401b038211908210176110d357604052565b634e487b7160e01b600052604160045260246000fd5b6001600160401b0381116110d357601f01601f191660200190565b6000546001600160a01b0316330361111857565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b60405190608082016001600160401b038111838210176110d35760405260006060838281528260208201528260408201520152565b60408051919082016001600160401b038111838210176110d35760405260006020838281520152565b60405190606082016001600160401b038111838210176110d357604052816111e061115c565b81526111ea61115c565b602082015260406111f9611191565b910152565b60609060208152601d60208201527f4375727665537761707065723a206e6f7420696d706c656d656e74656400000060408201520190565b6001600160401b0381116110d35760051b60200190565b80511561125a5760200190565b634e487b7160e01b600052603260045260246000fd5b80516001101561125a5760400190565b6040919493926060820195600f0b8252600f0b60208201520152565b9081602091031261060b57516001600160a01b038116810361060b5790565b919082604091031261060b576020825192015190565b6001600160a01b039091168152602081019190915260400190565b9081602091031261060b5751801515810361060b5790565b60408051908101916001600160a01b03166001600160401b038311828410176110d357611373926040526000806020958685527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c656487860152868151910182855af161136d6113ef565b9161141f565b8051908161138057505050565b82806113909383010191016112ec565b156113985750565b6084906040519062461bcd60e51b82526004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152fd5b3d1561141a573d90611400826110e9565b9161140e60405193846110b0565b82523d6000602084013e565b606090565b919290156114815750815115611433575090565b3b1561143c5790565b60405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606490fd5b8251909150156114945750805190602001fd5b6040519062461bcd60e51b82528160208060048301528251908160248401526000935b8285106114da575050604492506000838284010152601f80199101168101030190fd5b84810182015186860160440152938101938593506114b7565b156114fa57565b60405162461bcd60e51b815260206004820152602860248201527f42617365537761707065723a3a73616665417070726f76653a20617070726f76604482015267194819985a5b195960c21b6064820152608490fd5b929190833b156116915760405163095ea7b360e01b60208083018281526001600160a01b0385166024850152600060448086018290528552919591949293919291608081016001600160401b0381118282101761167d578695936115d9878080966116199d9e99966115ff966040525190828b5af16115cd6113ef565b8161164d575b506114f3565b6115f16040519384928b8401978852602484016112d1565b03601f1981018352826110b0565b51925af19061160c6113ef565b8261161b575b50506114f3565b565b8091925051918215928315611635575b5050503880611612565b61164593508201810191016112ec565b38808061162b565b8051801592508c908315611665575b505050386115d3565b61167593508201810191016112ec565b388b8161165c565b634e487b7160e01b87526041600452602487fd5b60405162461bcd60e51b815260206004820152601460248201527314ddd85c1c195c8e881b9bc818dbdb9d1c9858dd60621b6044820152606490fd5b919082039182116116da57565b634e487b7160e01b600052601160045260246000fd5b94939190929461010435801515810361060b576118c057505050821561188457604080516370a0823160e01b808252306004830152919490926001600160a01b031691602091908285602481875afa9485156118795760009561184a575b5086516323b872dd60e01b8482015233602482015230604482015260648082019390935291825260a082016001600160401b038111838210176110d357839261179991895285611304565b602487518095819382523060048301525afa91821561183f57600092611810575b50828211156117d257506117cf9293506116cd565b90565b60649085519062461bcd60e51b82526004820152601860248201527714ddd85c1c195c8e881d1c985b9cd9995c8819985a5b195960421b6044820152fd5b90918282813d8311611838575b61182781836110b0565b8101031261014a57505190386117ba565b503d61181d565b85513d6000823e3d90fd5b90948382813d8311611872575b61186181836110b0565b8101031261014a575051933861174e565b503d611857565b87513d6000823e3d90fd5b60405162461bcd60e51b81526020600482015260146024820152730537761707065723a20616d6f756e7420697320360641b6044820152606490fd5b6040935090600060a49285979496975196879586946311a5cc7760e31b865260048601523060248601523060448601526064850152608484015260018060a01b03165af190811561193257600091611916575090565b61192e915060403d81116105aa5761059a81836110b0565b5090565b6040513d6000823e3d90fdfe8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0a2646970667358221220618c98d9604f5a06a99dfe02eb96b7412a69a17c0735df620ecbf13731625c8964736f6c63430008120033"; type CurveSwapperConstructorParams = | [signer?: Signer] diff --git a/src/typechain/tapioca-periphery/factories/contracts/Swapper/UniswapV2Swapper__factory.ts b/src/typechain/tapioca-periphery/factories/contracts/Swapper/UniswapV2Swapper__factory.ts index c6ec6486..18d60e97 100644 --- a/src/typechain/tapioca-periphery/factories/contracts/Swapper/UniswapV2Swapper__factory.ts +++ b/src/typechain/tapioca-periphery/factories/contracts/Swapper/UniswapV2Swapper__factory.ts @@ -683,7 +683,7 @@ const _abi = [ ] as const; const _bytecode = - "0x60e0346200015457601f62001af938819003918201601f19168301916001600160401b03831184841017620001595780849260609460405283398101031262000154576200004d816200016f565b60406200005d602084016200016f565b920151916001600160a01b038084169290838503620001545780620000e1926000543360018060a01b0319821617600055823391167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a3600180551692620000ca84151562000184565b1692620000d984151562000184565b151562000184565b60805260a05260c0526040516119279081620001d2823960805181818161027f015281816107c9015281816108dc0152610afb015260a05181610898015260c05181818161024a015281816104d50152818161057b0152818161061c01528181610753015281816108540152610aa20152f35b600080fd5b634e487b7160e01b600052604160045260246000fd5b51906001600160a01b03821682036200015457565b156200018c57565b60405162461bcd60e51b815260206004820152601a60248201527f537761707065723a2061646472657373206e6f742076616c69640000000000006044820152606490fdfe6040608081526004908136101561001557600080fd5b600091823560e01c80631a16321014610bf15780633fa2ef5e14610b5d5780635bf66e4814610a8a578063715018a614610a3f5780637b2a8bd2146109335780638da5cb5b1461090b578063c31c9c07146108c7578063c45a015514610883578063de4065771461083f578063e3c711a01461073b578063efa84c6d146101585763f2fde38b146100a557600080fd5b34610154576020366003190112610154576100be610c5e565b906100c7610d77565b6001600160a01b0391821692831561010257505082546001600160a01b0319811683178455166000805160206118d28339815191528380a380f35b906020608492519162461bcd60e51b8352820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152fd5b8280fd5b50829036600319016101a0811261015457610140136107375761016435916001600160a01b03908184168085036107375761018435936001600160401b03851161015457366023860112156101545784810135936101b585610d5c565b956101c289519788610d39565b8587526024953687828401011161073357869392918187926020998a9301838c0137890101526002600154146106f25760026001558690859783358281168082036105ff57158015906106dd575b15610603579060443583811681036105ff5761022d905b836112a8565b9a6084358981158015816105f4575b15610488575050945b6102777f00000000000000000000000000000000000000000000000000000000000000009660a435908a35878a611509565b926102a684877f00000000000000000000000000000000000000000000000000000000000000001680976113c3565b511561047a575b8a8180518101031261047657928992838f8f96908b958f8a908d940151916102d36112f8565b1561046c575061030d30935b519a8b998a9889976338ed173960e01b8952880152610144359087015260a0604487015260a4860190610f27565b92166064840152608483015203925af19081156104625790610336918891610440575b50610f64565b51986103406112f8565b610357575b8a8a8a8a600180558351928352820152f35b8091929394959697985051600019810190811161042e57815181101561041c57926103978a848d9897958c8c9660a49960051b01015116931680936113c3565b85519687958694634d4d7cbd60e11b865260643590860152309085015260448401528960648401528160848401525af191821561041157916103e2575b509084808080808080610345565b6104029150843d861161040a575b6103fa8183610d39565b810190611308565b9050846103d4565b503d6103f0565b8551903d90823e3d90fd5b634e487b7160e01b8852603285528588fd5b634e487b7160e01b8852601185528588fd5b61045c91503d808a833e6104548183610d39565b810190610eac565b8c610330565b8b513d89823e3d90fd5b61030d90936102df565b8980fd5b50610483610e71565b6102ad565b9096918935918261054a575b5050508d60643590816104a9575b5050610245565b60c43561054357519063442c159960e01b82528882015260e435898201528a60448201528b81606481897f0000000000000000000000000000000000000000000000000000000000000000165afa801561053857908c9161050f575b50505b8e8e6104a2565b813d8311610531575b6105228183610d39565b81010312610476578a8f610505565b503d610518565b508e513d8c823e3d90fd5b5050610508565b9297509091156105ed57508d519063442c159960e01b82528782015260a435888201528960448201528a81606481887f0000000000000000000000000000000000000000000000000000000000000000165afa9081156105e3578a916105b6575b505b948e8080610494565b90508a81813d83116105dc575b6105cd8183610d39565b8101031261047657518e6105ab565b503d6105c3565b8e513d8c823e3d90fd5b90506105ad565b5060c435151561023c565b8880fd5b508a51630cf35bdd60e41b8082528635868301526080917f00000000000000000000000000000000000000000000000000000000000000008516919083818a81865afa90811561053857918f9594939284928b918e916106bc575b5096518094819382526064358c8301525afa9182156105e3579061022d92918b9261068b575b5050610227565b6106aa9250803d106106b5575b6106a28183610d39565b810190610fbf565b505090508e80610684565b503d610698565b6106d39150843d86116106b5576106a28183610d39565b505090503861065e565b506044358381168091036105ff571515610210565b50601f606492868a519362461bcd60e51b85528401528201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152fd5b8580fd5b5080fd5b5034610154578261074b36610c97565b50509161079a7f000000000000000000000000000000000000000000000000000000000000000061078561077f8287610ff8565b906112a8565b946060810135906080602082013591016110f8565b85516307c0329d60e21b815292830152506024810184905291829081906107c5906044830190610f27565b03817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa9081156108335790610810918460209592610818575b5050610f8a565b519051908152f35b61082c92503d8091833e6104548183610d39565b3880610809565b505051903d90823e3d90fd5b505034610737578160031936011261073757517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b505034610737578160031936011261073757517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b505034610737578160031936011261073757517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b505034610737578160031936011261073757905490516001600160a01b039091168152602090f35b509190346107375760c036600319011261073757610a3b92610953610c79565b9061095c610c88565b93610965610e2d565b5061096e610e2d565b94610977610dcf565b926044358452606435602085015261098d610dcf565b928084528684015235602083015260243560608301526109ab610e04565b93151584521515602084015284526020840152818301525191829182919091610120602060406101408401956060815160018060a01b03808251168852858201518689015284820151168488015201516060860152606083820151805160808801528481015160a08801528381015160c0880152015160e086015201518051151561010085015201511515910152565b0390f35b8334610a875780600319360112610a8757610a58610d77565b80546001600160a01b03198116825581906001600160a01b03166000805160206118d28339815191528280a380f35b80fd5b50346101545782610a9a36610c97565b505091610ace7f000000000000000000000000000000000000000000000000000000000000000061078561077f8287610ff8565b5090610af78551948593849363d06ca61f60e01b85528401528660248401526044830190610f27565b03817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa9081156108335790610810918460209592610b42575b5050610f64565b610b5692503d8091833e6104548183610d39565b3880610b3b565b828434610a875760c0366003190112610a8757610b78610c5e565b916024356001600160a01b03818116939184900361073757610a3b94610b9c610c79565b92610ba5610c88565b90610bae610e2d565b50610bb7610e2d565b96610bc0610dcf565b9460443586526064356020870152610bd6610dcf565b941684528684015280602084015260608301526109ab610e04565b505034610737578160031936011261073757610a3b90610c0f610e71565b90519182916020835260208301905b919082519283825260005b848110610c4a575050826000602080949584010152601f8019910116010190565b602081830181015184830182015201610c29565b600435906001600160a01b0382168203610c7457565b600080fd5b608435908115158203610c7457565b60a435908115158203610c7457565b60031981016101608112610c745761014013610c74576004916001600160401b03916101443590838211610c745780602383011215610c745781850135938411610c745760248483010111610c74576024019190565b604081019081106001600160401b03821117610d0857604052565b634e487b7160e01b600052604160045260246000fd5b608081019081106001600160401b03821117610d0857604052565b601f909101601f19168101906001600160401b03821190821017610d0857604052565b6001600160401b038111610d0857601f01601f191660200190565b6000546001600160a01b03163303610d8b57565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b60405190608082016001600160401b03811183821017610d085760405260006060838281528260208201528260408201520152565b60408051919082016001600160401b03811183821017610d085760405260006020838281520152565b60405190606082016001600160401b03811183821017610d085760405281610e53610dcf565b8152610e5d610dcf565b60208201526040610e6c610e04565b910152565b610e104201804211610e965760405190602082015260208152610e9381610ced565b90565b634e487b7160e01b600052601160045260246000fd5b906020908183820312610c745782516001600160401b0393848211610c74570181601f82011215610c74578051938411610d08578360051b9060405194610ef585840187610d39565b85528380860192820101928311610c74578301905b828210610f18575050505090565b81518152908301908301610f0a565b90815180825260208080930193019160005b828110610f47575050505090565b83516001600160a01b031685529381019392810192600101610f39565b805160011015610f745760400190565b634e487b7160e01b600052603260045260246000fd5b805115610f745760200190565b356001600160a01b0381168103610c745790565b51906001600160a01b0382168203610c7457565b9190826080910312610c745781516005811015610c745791610fe360208201610fab565b916060610ff260408401610fab565b92015190565b91906001600160a01b03908161100d85610f97565b16158015906110e2575b15611033575050610e93604061102c84610f97565b9301610f97565b1691604051630cf35bdd60e41b90818152602083013560048201526080928382602481895afa9182156110b55760609385936024926000916110c1575b509760405195869485938452013560048301525afa9182156110b55760009261109857505090565b6110ae9250803d106106b5576106a28183610d39565b5050905090565b6040513d6000823e3d90fd5b6110d89150853d87116106b5576106a28183610d39565b5050905038611070565b50816110f060408601610f97565b161515611017565b93928435926000928392839291861580158161129b575b15611124575050505050505060409092013590565b819293949699959897916111f9575b50505081611142575b50505050565b909192939450604083013580156000146111ef575060405163442c159960e01b8152600481019290925260609092013560248201526044810183905290602090829060649082906001600160a01b03165afa9182156111e35780926111af575b50505b903880808061113c565b9091506020823d82116111db575b816111ca60209383610d39565b81010312610a8757505138806111a2565b3d91506111bd565b604051903d90823e3d90fd5b93505050506111a5565b929850909115611294575060405163442c159960e01b81526004810191909152602083810135602483015260448201859052816064816001600160a01b038b165afa908115611289578491611254575b505b95388080611133565b90506020813d8211611281575b8161126e60209383610d39565b8101031261127d575138611249565b8380fd5b3d9150611261565b6040513d86823e3d90fd5b905061124b565b5060408a0135151561110f565b604051929190606084016001600160401b03811185821017610d08576040526002845260403660208601376112f2846112e081610f8a565b6001600160a01b039384169052610f64565b91169052565b610124358015158103610c745790565b9190826040910312610c74576020825192015190565b3d15611349573d9061132f82610d5c565b9161133d6040519384610d39565b82523d6000602084013e565b606090565b90816020910312610c7457518015158103610c745790565b1561136d57565b60405162461bcd60e51b815260206004820152602860248201527f42617365537761707065723a3a73616665417070726f76653a20617070726f76604482015267194819985a5b195960c21b6064820152608490fd5b803b156114cd576114699261142e91604051936020948581019363095ea7b360e01b9283865260018060a01b0316908160248401526000968780809886826044819901526044815261141481610d1e565b5190828a5af161142261131e565b8161149d575b50611366565b60405191888301948552602483015260448201526044815261144f81610d1e565b51925af19061145c61131e565b8261146b575b5050611366565b565b8091925051918215928315611485575b5050503880611462565b611495935082018101910161134e565b38808061147b565b8051801592508b9083156114b5575b50505038611428565b6114c5935082018101910161134e565b388a816114ac565b60405162461bcd60e51b815260206004820152601460248201527314ddd85c1c195c8e881b9bc818dbdb9d1c9858dd60621b6044820152606490fd5b9391909293610104358015158103610c74576117c35750505081156117875760018060a01b031690604080516370a0823160e01b8082526004923084840152602091602495838588818b5afa94851561177c5760009561174d575b5082516323b872dd60e01b858201908152338983015230604483015260648083019390935291815260a0810191906001600160401b0383118184101761173957916000808b6115f994828a9897868b526115bd87610ced565b8987527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c656460c082015251925af16115f261131e565b908b611834565b8051806116c5575b505086835180998193825230898301525afa9586156116ba5760009661168b575b508286111561164e575050830392831161163b57505090565b601190634e487b7160e01b600052526000fd5b5162461bcd60e51b8152808401919091526018818501527714ddd85c1c195c8e881d1c985b9cd9995c8819985a5b195960421b6044820152606490fd5b90958282813d83116116b3575b6116a28183610d39565b81010312610a875750519438611622565b503d611698565b50513d6000823e3d90fd5b92806116d69394830101910161134e565b156116e45782903880611601565b815162461bcd60e51b8152808601849052602a818801527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608490fd5b88604189634e487b7160e01b600052526000fd5b90948482813d8311611775575b6117648183610d39565b81010312610a875750519338611564565b503d61175a565b83513d6000823e3d90fd5b60405162461bcd60e51b81526020600482015260146024820152730537761707065723a20616d6f756e7420697320360641b6044820152606490fd5b6040935090600060a492859694965196879586946311a5cc7760e31b865260048601523060248601523060448601526064850152608484015260018060a01b03165af19081156110b557600091611818575090565b611830915060403d811161040a576103fa8183610d39565b5090565b919290156118965750815115611848575090565b3b156118515790565b60405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606490fd5b8251909150156118a95750805190602001fd5b60405162461bcd60e51b8152602060048201529081906118cd906024830190610c1e565b0390fdfe8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0a2646970667358221220a524257e8a75d54ec0f79e298295ec933421542d6122b7f4471503298aa909b664736f6c63430008120033"; + "0x60e0346200015457601f62001af938819003918201601f19168301916001600160401b03831184841017620001595780849260609460405283398101031262000154576200004d816200016f565b60406200005d602084016200016f565b920151916001600160a01b038084169290838503620001545780620000e1926000543360018060a01b0319821617600055823391167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a3600180551692620000ca84151562000184565b1692620000d984151562000184565b151562000184565b60805260a05260c0526040516119279081620001d2823960805181818161027f015281816107c9015281816108dc0152610afb015260a05181610898015260c05181818161024a015281816104d50152818161057b0152818161061c01528181610753015281816108540152610aa20152f35b600080fd5b634e487b7160e01b600052604160045260246000fd5b51906001600160a01b03821682036200015457565b156200018c57565b60405162461bcd60e51b815260206004820152601a60248201527f537761707065723a2061646472657373206e6f742076616c69640000000000006044820152606490fdfe6040608081526004908136101561001557600080fd5b600091823560e01c80631a16321014610bf15780633fa2ef5e14610b5d5780635bf66e4814610a8a578063715018a614610a3f5780637b2a8bd2146109335780638da5cb5b1461090b578063c31c9c07146108c7578063c45a015514610883578063de4065771461083f578063e3c711a01461073b578063efa84c6d146101585763f2fde38b146100a557600080fd5b34610154576020366003190112610154576100be610c5e565b906100c7610d77565b6001600160a01b0391821692831561010257505082546001600160a01b0319811683178455166000805160206118d28339815191528380a380f35b906020608492519162461bcd60e51b8352820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152fd5b8280fd5b50829036600319016101a0811261015457610140136107375761016435916001600160a01b03908184168085036107375761018435936001600160401b03851161015457366023860112156101545784810135936101b585610d5c565b956101c289519788610d39565b8587526024953687828401011161073357869392918187926020998a9301838c0137890101526002600154146106f25760026001558690859783358281168082036105ff57158015906106dd575b15610603579060443583811681036105ff5761022d905b836112a8565b9a6084358981158015816105f4575b15610488575050945b6102777f00000000000000000000000000000000000000000000000000000000000000009660a435908a35878a611509565b926102a684877f00000000000000000000000000000000000000000000000000000000000000001680976113c3565b511561047a575b8a8180518101031261047657928992838f8f96908b958f8a908d940151916102d36112f8565b1561046c575061030d30935b519a8b998a9889976338ed173960e01b8952880152610144359087015260a0604487015260a4860190610f27565b92166064840152608483015203925af19081156104625790610336918891610440575b50610f64565b51986103406112f8565b610357575b8a8a8a8a600180558351928352820152f35b8091929394959697985051600019810190811161042e57815181101561041c57926103978a848d9897958c8c9660a49960051b01015116931680936113c3565b85519687958694634d4d7cbd60e11b865260643590860152309085015260448401528960648401528160848401525af191821561041157916103e2575b509084808080808080610345565b6104029150843d861161040a575b6103fa8183610d39565b810190611308565b9050846103d4565b503d6103f0565b8551903d90823e3d90fd5b634e487b7160e01b8852603285528588fd5b634e487b7160e01b8852601185528588fd5b61045c91503d808a833e6104548183610d39565b810190610eac565b8c610330565b8b513d89823e3d90fd5b61030d90936102df565b8980fd5b50610483610e71565b6102ad565b9096918935918261054a575b5050508d60643590816104a9575b5050610245565b60c43561054357519063442c159960e01b82528882015260e435898201528a60448201528b81606481897f0000000000000000000000000000000000000000000000000000000000000000165afa801561053857908c9161050f575b50505b8e8e6104a2565b813d8311610531575b6105228183610d39565b81010312610476578a8f610505565b503d610518565b508e513d8c823e3d90fd5b5050610508565b9297509091156105ed57508d519063442c159960e01b82528782015260a435888201528960448201528a81606481887f0000000000000000000000000000000000000000000000000000000000000000165afa9081156105e3578a916105b6575b505b948e8080610494565b90508a81813d83116105dc575b6105cd8183610d39565b8101031261047657518e6105ab565b503d6105c3565b8e513d8c823e3d90fd5b90506105ad565b5060c435151561023c565b8880fd5b508a51630cf35bdd60e41b8082528635868301526080917f00000000000000000000000000000000000000000000000000000000000000008516919083818a81865afa90811561053857918f9594939284928b918e916106bc575b5096518094819382526064358c8301525afa9182156105e3579061022d92918b9261068b575b5050610227565b6106aa9250803d106106b5575b6106a28183610d39565b810190610fbf565b505090508e80610684565b503d610698565b6106d39150843d86116106b5576106a28183610d39565b505090503861065e565b506044358381168091036105ff571515610210565b50601f606492868a519362461bcd60e51b85528401528201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152fd5b8580fd5b5080fd5b5034610154578261074b36610c97565b50509161079a7f000000000000000000000000000000000000000000000000000000000000000061078561077f8287610ff8565b906112a8565b946060810135906080602082013591016110f8565b85516307c0329d60e21b815292830152506024810184905291829081906107c5906044830190610f27565b03817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa9081156108335790610810918460209592610818575b5050610f8a565b519051908152f35b61082c92503d8091833e6104548183610d39565b3880610809565b505051903d90823e3d90fd5b505034610737578160031936011261073757517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b505034610737578160031936011261073757517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b505034610737578160031936011261073757517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b505034610737578160031936011261073757905490516001600160a01b039091168152602090f35b509190346107375760c036600319011261073757610a3b92610953610c79565b9061095c610c88565b93610965610e2d565b5061096e610e2d565b94610977610dcf565b926044358452606435602085015261098d610dcf565b928084528684015235602083015260243560608301526109ab610e04565b93151584521515602084015284526020840152818301525191829182919091610120602060406101408401956060815160018060a01b03808251168852858201518689015284820151168488015201516060860152606083820151805160808801528481015160a08801528381015160c0880152015160e086015201518051151561010085015201511515910152565b0390f35b8334610a875780600319360112610a8757610a58610d77565b80546001600160a01b03198116825581906001600160a01b03166000805160206118d28339815191528280a380f35b80fd5b50346101545782610a9a36610c97565b505091610ace7f000000000000000000000000000000000000000000000000000000000000000061078561077f8287610ff8565b5090610af78551948593849363d06ca61f60e01b85528401528660248401526044830190610f27565b03817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa9081156108335790610810918460209592610b42575b5050610f64565b610b5692503d8091833e6104548183610d39565b3880610b3b565b828434610a875760c0366003190112610a8757610b78610c5e565b916024356001600160a01b03818116939184900361073757610a3b94610b9c610c79565b92610ba5610c88565b90610bae610e2d565b50610bb7610e2d565b96610bc0610dcf565b9460443586526064356020870152610bd6610dcf565b941684528684015280602084015260608301526109ab610e04565b505034610737578160031936011261073757610a3b90610c0f610e71565b90519182916020835260208301905b919082519283825260005b848110610c4a575050826000602080949584010152601f8019910116010190565b602081830181015184830182015201610c29565b600435906001600160a01b0382168203610c7457565b600080fd5b608435908115158203610c7457565b60a435908115158203610c7457565b60031981016101608112610c745761014013610c74576004916001600160401b03916101443590838211610c745780602383011215610c745781850135938411610c745760248483010111610c74576024019190565b604081019081106001600160401b03821117610d0857604052565b634e487b7160e01b600052604160045260246000fd5b608081019081106001600160401b03821117610d0857604052565b601f909101601f19168101906001600160401b03821190821017610d0857604052565b6001600160401b038111610d0857601f01601f191660200190565b6000546001600160a01b03163303610d8b57565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b60405190608082016001600160401b03811183821017610d085760405260006060838281528260208201528260408201520152565b60408051919082016001600160401b03811183821017610d085760405260006020838281520152565b60405190606082016001600160401b03811183821017610d085760405281610e53610dcf565b8152610e5d610dcf565b60208201526040610e6c610e04565b910152565b610e104201804211610e965760405190602082015260208152610e9381610ced565b90565b634e487b7160e01b600052601160045260246000fd5b906020908183820312610c745782516001600160401b0393848211610c74570181601f82011215610c74578051938411610d08578360051b9060405194610ef585840187610d39565b85528380860192820101928311610c74578301905b828210610f18575050505090565b81518152908301908301610f0a565b90815180825260208080930193019160005b828110610f47575050505090565b83516001600160a01b031685529381019392810192600101610f39565b805160011015610f745760400190565b634e487b7160e01b600052603260045260246000fd5b805115610f745760200190565b356001600160a01b0381168103610c745790565b51906001600160a01b0382168203610c7457565b9190826080910312610c745781516005811015610c745791610fe360208201610fab565b916060610ff260408401610fab565b92015190565b91906001600160a01b03908161100d85610f97565b16158015906110e2575b15611033575050610e93604061102c84610f97565b9301610f97565b1691604051630cf35bdd60e41b90818152602083013560048201526080928382602481895afa9182156110b55760609385936024926000916110c1575b509760405195869485938452013560048301525afa9182156110b55760009261109857505090565b6110ae9250803d106106b5576106a28183610d39565b5050905090565b6040513d6000823e3d90fd5b6110d89150853d87116106b5576106a28183610d39565b5050905038611070565b50816110f060408601610f97565b161515611017565b93928435926000928392839291861580158161129b575b15611124575050505050505060409092013590565b819293949699959897916111f9575b50505081611142575b50505050565b909192939450604083013580156000146111ef575060405163442c159960e01b8152600481019290925260609092013560248201526044810183905290602090829060649082906001600160a01b03165afa9182156111e35780926111af575b50505b903880808061113c565b9091506020823d82116111db575b816111ca60209383610d39565b81010312610a8757505138806111a2565b3d91506111bd565b604051903d90823e3d90fd5b93505050506111a5565b929850909115611294575060405163442c159960e01b81526004810191909152602083810135602483015260448201859052816064816001600160a01b038b165afa908115611289578491611254575b505b95388080611133565b90506020813d8211611281575b8161126e60209383610d39565b8101031261127d575138611249565b8380fd5b3d9150611261565b6040513d86823e3d90fd5b905061124b565b5060408a0135151561110f565b604051929190606084016001600160401b03811185821017610d08576040526002845260403660208601376112f2846112e081610f8a565b6001600160a01b039384169052610f64565b91169052565b610124358015158103610c745790565b9190826040910312610c74576020825192015190565b3d15611349573d9061132f82610d5c565b9161133d6040519384610d39565b82523d6000602084013e565b606090565b90816020910312610c7457518015158103610c745790565b1561136d57565b60405162461bcd60e51b815260206004820152602860248201527f42617365537761707065723a3a73616665417070726f76653a20617070726f76604482015267194819985a5b195960c21b6064820152608490fd5b803b156114cd576114699261142e91604051936020948581019363095ea7b360e01b9283865260018060a01b0316908160248401526000968780809886826044819901526044815261141481610d1e565b5190828a5af161142261131e565b8161149d575b50611366565b60405191888301948552602483015260448201526044815261144f81610d1e565b51925af19061145c61131e565b8261146b575b5050611366565b565b8091925051918215928315611485575b5050503880611462565b611495935082018101910161134e565b38808061147b565b8051801592508b9083156114b5575b50505038611428565b6114c5935082018101910161134e565b388a816114ac565b60405162461bcd60e51b815260206004820152601460248201527314ddd85c1c195c8e881b9bc818dbdb9d1c9858dd60621b6044820152606490fd5b9391909293610104358015158103610c74576117c35750505081156117875760018060a01b031690604080516370a0823160e01b8082526004923084840152602091602495838588818b5afa94851561177c5760009561174d575b5082516323b872dd60e01b858201908152338983015230604483015260648083019390935291815260a0810191906001600160401b0383118184101761173957916000808b6115f994828a9897868b526115bd87610ced565b8987527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c656460c082015251925af16115f261131e565b908b611834565b8051806116c5575b505086835180998193825230898301525afa9586156116ba5760009661168b575b508286111561164e575050830392831161163b57505090565b601190634e487b7160e01b600052526000fd5b5162461bcd60e51b8152808401919091526018818501527714ddd85c1c195c8e881d1c985b9cd9995c8819985a5b195960421b6044820152606490fd5b90958282813d83116116b3575b6116a28183610d39565b81010312610a875750519438611622565b503d611698565b50513d6000823e3d90fd5b92806116d69394830101910161134e565b156116e45782903880611601565b815162461bcd60e51b8152808601849052602a818801527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608490fd5b88604189634e487b7160e01b600052526000fd5b90948482813d8311611775575b6117648183610d39565b81010312610a875750519338611564565b503d61175a565b83513d6000823e3d90fd5b60405162461bcd60e51b81526020600482015260146024820152730537761707065723a20616d6f756e7420697320360641b6044820152606490fd5b6040935090600060a492859694965196879586946311a5cc7760e31b865260048601523060248601523060448601526064850152608484015260018060a01b03165af19081156110b557600091611818575090565b611830915060403d811161040a576103fa8183610d39565b5090565b919290156118965750815115611848575090565b3b156118515790565b60405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606490fd5b8251909150156118a95750805190602001fd5b60405162461bcd60e51b8152602060048201529081906118cd906024830190610c1e565b0390fdfe8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0a2646970667358221220fc1c87c536210cc8676d96b56588969185bbbfd77f6b30a4415ffec639b380aa64736f6c63430008120033"; type UniswapV2SwapperConstructorParams = | [signer?: Signer] diff --git a/src/typechain/tapioca-periphery/factories/contracts/Swapper/UniswapV3Swapper__factory.ts b/src/typechain/tapioca-periphery/factories/contracts/Swapper/UniswapV3Swapper__factory.ts index 1643cccc..a80a87f0 100644 --- a/src/typechain/tapioca-periphery/factories/contracts/Swapper/UniswapV3Swapper__factory.ts +++ b/src/typechain/tapioca-periphery/factories/contracts/Swapper/UniswapV3Swapper__factory.ts @@ -728,7 +728,7 @@ const _abi = [ ] as const; const _bytecode = - "0x60e0346200016a57601f6200267b38819003918201601f19168301916001600160401b038311848410176200016f578084926060946040528339810103126200016a5780516001600160a01b038082169291908382036200016a57602083015192818416908185036200016a576040015194828616918287036200016a57620000e8620000e892620000f095600054903360018060a01b03198316176000553391167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a360018055633c000bb866ffffffffffffff196002541617600255151562000185565b151562000185565b60805260a05260c0526040516124a89081620001d38239608051818181610251015281816104410152818161075701528181610803015281816108a901528181610903015281816109cb0152610d69015260a05181818161029a015281816103ef0152610b46015260c051818181610a3c0152610b010152f35b600080fd5b634e487b7160e01b600052604160045260246000fd5b156200018d57565b60405162461bcd60e51b815260206004820152601a60248201527f537761707065723a2061646472657373206e6f742076616c69640000000000006044820152606490fdfe608080604052600436101561001357600080fd5b60003560e01c908163089fe6aa14610ec4575080631a16321014610e9457806326d8954514610e6d5780633fa2ef5e14610dd85780635bf66e4814610d57578063715018a614610d1057806373dd250c14610cae5780637b2a8bd214610b9e5780638da5cb5b14610b75578063c31c9c0714610b30578063c45a015514610aeb578063e3c711a0146109b6578063efa84c6d1461016d5763f2fde38b146100b957600080fd5b34610168576020366003190112610168576100d2610f24565b6100da611007565b6001600160a01b03908116908115610114576000548260018060a01b031982161760005516600080516020612453833981519152600080a3005b60405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608490fd5b600080fd5b36600319016101a08112610168576101401361016857610164356001600160a01b038116900361016857610184356001600160401b03811161016857366023820112156101685780600401356101c281610fec565b916101d06040519384610fc9565b8183523660248383010111610168578160009260246020930183860137830101528060006004356001600160a01b0381168082036101685715801590610999575b1561088a57916044356001600160a01b038116810361016857935b6000608435801580158161087f575b15610703575061027591505b60a43590602435877f0000000000000000000000000000000000000000000000000000000000000000611550565b60405163095ea7b360e01b602082019081529193916000918291906102d9816102cb897f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031660248401611490565b03601f198101835282610fc9565b519082895af16102e76114ab565b816106d4575b50156106aa57511561069c575b602081805181010312610168576020015162ffffff6002541661031b61146a565b156106925730905b604051956001600160401b0361010088019081119088111761060c57610100870160409081526001600160a01b0391821688528882166020808a01918252828a0194855294831660608a0190815260808a0196875260a08a019788526101443560c08b01908152600060e08c01818152945163414bf38960e01b81529b51861660048d01529251851660248c0152945162ffffff1660448b015251831660648a015294516084890152945160a4880152905160c48701529251831660e4860152918491610104918391907f0000000000000000000000000000000000000000000000000000000000000000165af19182156105a25760009261065e575b5061042961146a565b61043e575b6040809350519182526020820152f35b507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031691803b156106225760405163095ea7b360e01b6020820190815260248201859052600060448084019190915282526080820194916001600160401b0386118187101761060c5760006040946104de828061051996819b9682978b52519082865af16104d26114ab565b816105dd575b506114f3565b855182602082019163095ea7b360e01b8352610502816102cb8c8b60248401611490565b51925af161050e6114ab565b816105ae57506114f3565b8151634d4d7cbd60e11b8152606480356004830152306024830152610164356001600160a01b0316604483015281018490526084810185905293849160a49183915af180156105a257604092600091610573575b5061042e565b6105939150833d851161059b575b61058b8183610fc9565b81019061147a565b90508361056d565b503d610581565b6040513d6000823e3d90fd5b80518015925082156105c3575b5050866104d8565b6105d692506020809183010191016114db565b86806105bb565b80518015925082156105f2575b50508a6104d8565b61060592506020809183010191016114db565b8a806105ea565b634e487b7160e01b600052604160045260246000fd5b60405162461bcd60e51b815260206004820152601460248201527314ddd85c1c195c8e881b9bc818dbdb9d1c9858dd60621b6044820152606490fd5b9091506020813d60201161068a575b8161067a60209383610fc9565b8101031261016857519083610420565b3d915061066d565b6101643590610323565b506106a5611101565b6102fa565b60405162461bcd60e51b8152602060048201526002602482015261534160f01b6044820152606490fd5b80518015925082156106e9575b5050876102ed565b6106fc92506020809183010191016114db565b87806106e1565b9060243591826107cd575b50505060643580610724575b5061027590610247565b60c4356107c35760405163442c159960e01b8152600481019190915260e4356024820152600060448201526020816064817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa80156105a257610798575b50610275905b9061071a565b602090813d83116107bc575b6107ae8183610fc9565b81010312610168578661078c565b503d6107a4565b5061027590610792565b9192509015610878575060405163442c159960e01b8152600481019190915260a4356024820152600060448201526020816064817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa9081156105a257600091610846575b505b86808061070e565b90506020813d602011610870575b8161086160209383610fc9565b8101031261016857518661083c565b3d9150610854565b905061083e565b5060c435151561023b565b50604051630cf35bdd60e41b81526024803560048301526080908290817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa9081156105a257600091610976575b50604051630cf35bdd60e41b815260643560048201529092906080816024817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa9081156105a257600091610943575b509361022c565b610965915060803d60801161096f575b61095d8183610fc9565b81019061118a565b505090508561093c565b503d610953565b61098f915060803d60801161096f5761095d8183610fc9565b50509050846108e2565b506044356001600160a01b03811690819003610168571515610211565b34610168576109c436610f58565b5050610a0d7f00000000000000000000000000000000000000000000000000000000000000006109f481846111c3565b92909160209460608101359060808782013591016112b7565b600254604051630b4c774160e11b815290949250858180610a3862ffffff8916878960048501611150565b03817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa9081156105a257600091610aa7575b50610a8d9063ffffffff610a9f9660181c1690611962565b506001600160801b0390911690611cd1565b604051908152f35b90508581813d8311610ae4575b610abe8183610fc9565b8101031261016857610a9f9463ffffffff610adb610a8d9361113c565b92505094610a75565b503d610ab4565b34610168576000366003190112610168576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b34610168576000366003190112610168576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b34610168576000366003190112610168576000546040516001600160a01b039091168152602090f35b346101685760c036600319011261016857610caa610bba610f3a565b610bc2610f49565b90610bcb6110bd565b50610bd46110bd565b91610bdd61105f565b9060443582526064356020830152610bf361105f565b90600082526000604083015260043560208301526024356060830152610c17611094565b93151584521515602084015283526020830152604082015260405191829182919091610120602060406101408401956060815160018060a01b03808251168852858201518689015284820151168488015201516060860152606083820151805160808801528481015160a08801528381015160c0880152015160e086015201518051151561010085015201511515910152565b0390f35b346101685760203660031901126101685760043562ffffff80821680920361016857610cd8611007565b816002549182167f2bff118b9b9e3deb4fc5204e6ba828351c954685d0b119d0e21add79f8783399600080a362ffffff191617600255005b3461016857600036600319011261016857610d29611007565b600080546001600160a01b0319811682556001600160a01b03166000805160206124538339815191528280a3005b3461016857610d6536610f58565b50507f0000000000000000000000000000000000000000000000000000000000000000610dae610d9582846111c3565b91909260209460608101359060808782013591016112b7565b509160025492604051630b4c774160e11b8152858180610a3862ffffff8916888860048501611150565b346101685760c036600319011261016857610df1610f24565b6001600160a01b0390602435828116919082900361016857610caa92610e15610f3a565b91610e1e610f49565b610e266110bd565b50610e2f6110bd565b94610e3861105f565b9360443585526064356020860152610e4e61105f565b9316835260408301526000602083015260006060830152610c17611094565b3461016857600036600319011261016857602063ffffffff60025460181c16604051908152f35b3461016857600036600319011261016857610caa610eb0611101565b604051918291602083526020830190610ee4565b346101685760003660031901126101685760209062ffffff600254168152f35b919082519283825260005b848110610f10575050826000602080949584010152601f8019910116010190565b602081830181015184830182015201610eef565b600435906001600160a01b038216820361016857565b60843590811515820361016857565b60a43590811515820361016857565b600319810161016081126101685761014013610168576004916001600160401b03916101443590838211610168578060238301121561016857818501359384116101685760248483010111610168576024019190565b604081019081106001600160401b0382111761060c57604052565b601f909101601f19168101906001600160401b0382119082101761060c57604052565b6001600160401b03811161060c57601f01601f191660200190565b6000546001600160a01b0316330361101b57565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b60405190608082016001600160401b0381118382101761060c5760405260006060838281528260208201528260408201520152565b60408051919082016001600160401b0381118382101761060c5760405260006020838281520152565b60405190606082016001600160401b0381118382101761060c57604052816110e361105f565b81526110ed61105f565b602082015260406110fc611094565b910152565b610e104201804211611126576040519060208201526020815261112381610fae565b90565b634e487b7160e01b600052601160045260246000fd5b51906001600160a01b038216820361016857565b6001600160a01b0391821681529116602082015262ffffff909116604082015260600190565b356001600160a01b03811681036101685790565b9190826080910312610168578151600581101561016857916111ae6020820161113c565b9160606111bd6040840161113c565b92015190565b91906001600160a01b0390816111d885611176565b16158015906112a1575b156111fe57505061112360406111f784611176565b9301611176565b1691604051630cf35bdd60e41b90818152602083013560048201526080928382602481895afa9182156105a2576060938593602492600091611280575b509760405195869485938452013560048301525afa9182156105a25760009261126357505090565b6112799250803d1061096f5761095d8183610fc9565b5050905090565b6112979150853d871161096f5761095d8183610fc9565b505090503861123b565b50816112af60408601611176565b1615156111e2565b93928435926000928392839291861580158161145d575b156112e3575050505050505060409092013590565b819293949699959897916113bb575b50505081611301575b50505050565b909192939450604083013580156000146113b1575060405163442c159960e01b8152600481019290925260609092013560248201526044810183905290602090829060649082906001600160a01b03165afa9182156113a557809261136e575b50505b90388080806112fb565b9091506020823d821161139d575b8161138960209383610fc9565b8101031261139a5750513880611361565b80fd5b3d915061137c565b604051903d90823e3d90fd5b9350505050611364565b929850909115611456575060405163442c159960e01b81526004810191909152602083810135602483015260448201859052816064816001600160a01b038b165afa90811561144b578491611416575b505b953880806112f2565b90506020813d8211611443575b8161143060209383610fc9565b8101031261143f57513861140b565b8380fd5b3d9150611423565b6040513d86823e3d90fd5b905061140d565b5060408a013515156112ce565b6101243580151581036101685790565b9190826040910312610168576020825192015190565b6001600160a01b039091168152602081019190915260400190565b3d156114d6573d906114bc82610fec565b916114ca6040519384610fc9565b82523d6000602084013e565b606090565b90816020910312610168575180151581036101685790565b156114fa57565b60405162461bcd60e51b815260206004820152602860248201527f42617365537761707065723a3a73616665417070726f76653a20617070726f76604482015267194819985a5b195960c21b6064820152608490fd5b93919092936101043580151581036101685761180a5750505081156117ce5760018060a01b031690604080516370a0823160e01b8082526004923084840152602091602495838588818b5afa9485156117c357600095611794575b5082516323b872dd60e01b858201908152338983015230604483015260648083019390935291815260a0810191906001600160401b0383118184101761178057916000808b61164094828a9897868b5261160487610fae565b8987527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c656460c082015251925af16116396114ab565b908b61187b565b80518061170c575b505086835180998193825230898301525afa958615611701576000966116d2575b5082861115611695575050830392831161168257505090565b601190634e487b7160e01b600052526000fd5b5162461bcd60e51b8152808401919091526018818501527714ddd85c1c195c8e881d1c985b9cd9995c8819985a5b195960421b6044820152606490fd5b90958282813d83116116fa575b6116e98183610fc9565b8101031261139a5750519438611669565b503d6116df565b50513d6000823e3d90fd5b928061171d939483010191016114db565b1561172b5782903880611648565b815162461bcd60e51b8152808601849052602a818801527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608490fd5b88604189634e487b7160e01b600052526000fd5b90948482813d83116117bc575b6117ab8183610fc9565b8101031261139a57505193386115ab565b503d6117a1565b83513d6000823e3d90fd5b60405162461bcd60e51b81526020600482015260146024820152730537761707065723a20616d6f756e7420697320360641b6044820152606490fd5b6040935090600060a492859694965196879586946311a5cc7760e31b865260048601523060248601523060448601526064850152608484015260018060a01b03165af19081156105a25760009161185f575090565b611877915060403d811161059b5761058b8183610fc9565b5090565b919290156118dd575081511561188f575090565b3b156118985790565b60405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606490fd5b8251909150156118f05750805190602001fd5b60405162461bcd60e51b815260206004820152908190611914906024830190610ee4565b0390fd5b6001600160401b03811161060c5760051b60200190565b80511561193c5760200190565b634e487b7160e01b600052603260045260246000fd5b80516001101561193c5760400190565b63ffffffff92918316908115611ca75760408051909490916001600160401b03606084018181118582101761060c5787929752600284526020908185019083368337866119ae8761192f565b52600093846119bc88611952565b528481519a8b9463883bdbfd60e01b865260249889870160049b898d8a01525180915260448801929185905b8a838310611c7e5750505050509085809260018060a01b039e8f910392165afa928315611c745785928694611b61575b505050611a2e611a2782611952565b519161192f565b5160060b9060060b0397667fffffffffffff1991667fffffffffffff8a13838b1217611b1c5781611a6a81611a6284611952565b51169261192f565b5116900391818311611b1c578760030b9960060b8a15611b4f576000199181148b831416611b3d578a810560020b9a8682129182611b2e575b5050611b07575b508681026001600160c01b031696870403611af557901b600160201b600160c01b0316928315611ae55750505090046001600160801b031690565b634e487b7160e01b825260129052fd5b5050634e487b7160e01b815260118352fd5b9098627fffff198114611b1c57019738611aaa565b634e487b7160e01b8552601187528585fd5b0760060b151590503880611aa3565b634e487b7160e01b8652601188528686fd5b634e487b7160e01b8652601288528686fd5b91935091503d8086843e611b758184610fc9565b8201908383830312611c4f578251818111611c4b5783019282601f85011215611c4b57835193611ba485611918565b94611bb187519687610fc9565b808652878087019160051b83010191858311611c70578801905b828210611c535750505085810151918211611c4b570181601f82011215611c4f57805190611c04611bfb83611918565b95519586610fc9565b818552858086019260051b820101928311611c4b578501905b828210611c2f57505050388080611a18565b81518c81168103611c47578152908501908501611c1d565b8780fd5b8680fd5b8580fd5b81518060060b8103611c6c578152908801908801611bcb565b8a80fd5b8980fd5b81513d87823e3d90fd5b91946001939698999a5084975081839295511681520195019201928e979695938a9593926119e8565b60405162461bcd60e51b8152602060048201526002602482015261042560f41b6044820152606490fd5b9291909260020b906000821260001461226757600160ff1b82146111265781600003915b620d89e8831161223e576001831615612234576ffffcb933bd6fad37aa2d162d1a5940015b6001600160881b03166002841661220a575b6004938481166121de575b600881166121b2575b60108116612186575b6020811661215a575b6040811661212e575b608090818116612103575b61010081166120d8575b61020081166120ad575b6104008116612082575b6108008116612057575b611000811661202c575b6120008116612001575b6140008116611fd6575b6180008116611fab575b620100008116611f80575b620200008116611f56575b620400008116611f18575b6208000016611edd575b5090600012611eb9575b63ffffffff8160201c911615600014611eb05760ff60005b168101809111611e9b576001600160a01b03908116936001600160801b0393848611611e6f5785800295808704811490151715611e5a5750811691161015611e5057611123921690612407565b611123921661238c565b601190634e487b7160e01b6000525260246000fd5b5093611e7c81839261226d565b941691161015611e9157611123921690612341565b61112392166122b8565b601183634e487b7160e01b6000525260246000fd5b60ff6001611e03565b8015611ec85760001904611deb565b601283634e487b7160e01b6000525260246000fd5b6b048a170391f7dc42444e8fa291828102928184041490151715611f03571c6000611de1565b601185634e487b7160e01b6000525260246000fd5b916d2216e584f5fa1ea926041bedfe9890818102918183041490151715611f4157811c91611dd7565b601186634e487b7160e01b6000525260246000fd5b916e5d6af8dedb81196699c329225ee60490818102918183041490151715611f4157811c91611dcc565b916f09aa508b5b7a84e1c677de54f3e99bc990818102918183041490151715611f4157811c91611dc1565b916f31be135f97d08fd981231505542fcfa690818102918183041490151715611f4157811c91611db6565b916f70d869a156d2a1b890bb3df62baf32f790818102918183041490151715611f4157811c91611dac565b916fa9f746462d870fdf8a65dc1f90e061e590818102918183041490151715611f4157811c91611da2565b916fd097f3bdfd2022b8845ad8f792aa582590818102918183041490151715611f4157811c91611d98565b916fe7159475a2c29b7443b29c7fa6e889d990818102918183041490151715611f4157811c91611d8e565b916ff3392b0822b70005940c7a398e4b70f390818102918183041490151715611f4157811c91611d84565b916ff987a7253ac413176f2b074cf7815e5490818102918183041490151715611f4157811c91611d7a565b916ffcbe86c7900a88aedcffc83b479aa3a490818102918183041490151715611f4157811c91611d70565b916ffe5dee046a99a2a811c461f1969c305390818102918183041490151715611f4157811c91611d66565b906fff2ea16466c96a3843ec78b326b5286190818102918183041490151715611f035760801c90611d5b565b906fff973b41fa98c081472e6896dfb254c090818102918183041490151715611f035760801c90611d52565b906fffcb9843d60f6159c9db58835c92664490818102918183041490151715611f035760801c90611d49565b906fffe5caca7e10e4e61c3624eaa0941cd090818102918183041490151715611f035760801c90611d40565b906ffff2e50f5f656932ef12357cf3c7fdcc90818102918183041490151715611f035760801c90611d37565b6ffff97272373d413259a46990580e213a908181029181830414901517156111265760801c611d2c565b600160801b611d1a565b60405162461bcd60e51b81526020600482015260016024820152601560fa1b6044820152606490fd5b81611cf5565b60001982820990828102928380841093039183830393600093146122ad57600160401b928484111561139a57500990828211900360c01b910360401c1790565b505090505060401c90565b600160801b91600019828409928260801b9283808610950394808603951461233357848311156101685782910981806000031680920460028082600302188083028203028083028203028083028203028083028203028083028203028092029003029360018380600003040190848311900302920304170290565b505080925015610168570490565b600019828209908281029283808410930391838303936000931461238157600160801b928484111561139a57500990828211900360801b910360801c1790565b505090505060801c90565b600160c01b91600019828409928260c01b9283808610950394808603951461233357848311156101685782910981806000031680920460028082600302188083028203028083028203028083028203028083028203028083028203028092029003029360018380600003040190848311900302920304170290565b600019828209908281029283808410930391838303936000931461244757600160c01b928484111561139a57500990828211900360401b910360c01c1790565b505090505060c01c9056fe8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0a264697066735822122059319bbddb7110d1a516d690f76a5575b76eba218f17e6ece5668909223855b664736f6c63430008120033"; + "0x60e0346200016a57601f6200267b38819003918201601f19168301916001600160401b038311848410176200016f578084926060946040528339810103126200016a5780516001600160a01b038082169291908382036200016a57602083015192818416908185036200016a576040015194828616918287036200016a57620000e8620000e892620000f095600054903360018060a01b03198316176000553391167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a360018055633c000bb866ffffffffffffff196002541617600255151562000185565b151562000185565b60805260a05260c0526040516124a89081620001d38239608051818181610251015281816104410152818161075701528181610803015281816108a901528181610903015281816109cb0152610d69015260a05181818161029a015281816103ef0152610b46015260c051818181610a3c0152610b010152f35b600080fd5b634e487b7160e01b600052604160045260246000fd5b156200018d57565b60405162461bcd60e51b815260206004820152601a60248201527f537761707065723a2061646472657373206e6f742076616c69640000000000006044820152606490fdfe608080604052600436101561001357600080fd5b60003560e01c908163089fe6aa14610ec4575080631a16321014610e9457806326d8954514610e6d5780633fa2ef5e14610dd85780635bf66e4814610d57578063715018a614610d1057806373dd250c14610cae5780637b2a8bd214610b9e5780638da5cb5b14610b75578063c31c9c0714610b30578063c45a015514610aeb578063e3c711a0146109b6578063efa84c6d1461016d5763f2fde38b146100b957600080fd5b34610168576020366003190112610168576100d2610f24565b6100da611007565b6001600160a01b03908116908115610114576000548260018060a01b031982161760005516600080516020612453833981519152600080a3005b60405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608490fd5b600080fd5b36600319016101a08112610168576101401361016857610164356001600160a01b038116900361016857610184356001600160401b03811161016857366023820112156101685780600401356101c281610fec565b916101d06040519384610fc9565b8183523660248383010111610168578160009260246020930183860137830101528060006004356001600160a01b0381168082036101685715801590610999575b1561088a57916044356001600160a01b038116810361016857935b6000608435801580158161087f575b15610703575061027591505b60a43590602435877f0000000000000000000000000000000000000000000000000000000000000000611550565b60405163095ea7b360e01b602082019081529193916000918291906102d9816102cb897f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031660248401611490565b03601f198101835282610fc9565b519082895af16102e76114ab565b816106d4575b50156106aa57511561069c575b602081805181010312610168576020015162ffffff6002541661031b61146a565b156106925730905b604051956001600160401b0361010088019081119088111761060c57610100870160409081526001600160a01b0391821688528882166020808a01918252828a0194855294831660608a0190815260808a0196875260a08a019788526101443560c08b01908152600060e08c01818152945163414bf38960e01b81529b51861660048d01529251851660248c0152945162ffffff1660448b015251831660648a015294516084890152945160a4880152905160c48701529251831660e4860152918491610104918391907f0000000000000000000000000000000000000000000000000000000000000000165af19182156105a25760009261065e575b5061042961146a565b61043e575b6040809350519182526020820152f35b507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031691803b156106225760405163095ea7b360e01b6020820190815260248201859052600060448084019190915282526080820194916001600160401b0386118187101761060c5760006040946104de828061051996819b9682978b52519082865af16104d26114ab565b816105dd575b506114f3565b855182602082019163095ea7b360e01b8352610502816102cb8c8b60248401611490565b51925af161050e6114ab565b816105ae57506114f3565b8151634d4d7cbd60e11b8152606480356004830152306024830152610164356001600160a01b0316604483015281018490526084810185905293849160a49183915af180156105a257604092600091610573575b5061042e565b6105939150833d851161059b575b61058b8183610fc9565b81019061147a565b90508361056d565b503d610581565b6040513d6000823e3d90fd5b80518015925082156105c3575b5050866104d8565b6105d692506020809183010191016114db565b86806105bb565b80518015925082156105f2575b50508a6104d8565b61060592506020809183010191016114db565b8a806105ea565b634e487b7160e01b600052604160045260246000fd5b60405162461bcd60e51b815260206004820152601460248201527314ddd85c1c195c8e881b9bc818dbdb9d1c9858dd60621b6044820152606490fd5b9091506020813d60201161068a575b8161067a60209383610fc9565b8101031261016857519083610420565b3d915061066d565b6101643590610323565b506106a5611101565b6102fa565b60405162461bcd60e51b8152602060048201526002602482015261534160f01b6044820152606490fd5b80518015925082156106e9575b5050876102ed565b6106fc92506020809183010191016114db565b87806106e1565b9060243591826107cd575b50505060643580610724575b5061027590610247565b60c4356107c35760405163442c159960e01b8152600481019190915260e4356024820152600060448201526020816064817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa80156105a257610798575b50610275905b9061071a565b602090813d83116107bc575b6107ae8183610fc9565b81010312610168578661078c565b503d6107a4565b5061027590610792565b9192509015610878575060405163442c159960e01b8152600481019190915260a4356024820152600060448201526020816064817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa9081156105a257600091610846575b505b86808061070e565b90506020813d602011610870575b8161086160209383610fc9565b8101031261016857518661083c565b3d9150610854565b905061083e565b5060c435151561023b565b50604051630cf35bdd60e41b81526024803560048301526080908290817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa9081156105a257600091610976575b50604051630cf35bdd60e41b815260643560048201529092906080816024817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa9081156105a257600091610943575b509361022c565b610965915060803d60801161096f575b61095d8183610fc9565b81019061118a565b505090508561093c565b503d610953565b61098f915060803d60801161096f5761095d8183610fc9565b50509050846108e2565b506044356001600160a01b03811690819003610168571515610211565b34610168576109c436610f58565b5050610a0d7f00000000000000000000000000000000000000000000000000000000000000006109f481846111c3565b92909160209460608101359060808782013591016112b7565b600254604051630b4c774160e11b815290949250858180610a3862ffffff8916878960048501611150565b03817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa9081156105a257600091610aa7575b50610a8d9063ffffffff610a9f9660181c1690611962565b506001600160801b0390911690611cd1565b604051908152f35b90508581813d8311610ae4575b610abe8183610fc9565b8101031261016857610a9f9463ffffffff610adb610a8d9361113c565b92505094610a75565b503d610ab4565b34610168576000366003190112610168576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b34610168576000366003190112610168576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b34610168576000366003190112610168576000546040516001600160a01b039091168152602090f35b346101685760c036600319011261016857610caa610bba610f3a565b610bc2610f49565b90610bcb6110bd565b50610bd46110bd565b91610bdd61105f565b9060443582526064356020830152610bf361105f565b90600082526000604083015260043560208301526024356060830152610c17611094565b93151584521515602084015283526020830152604082015260405191829182919091610120602060406101408401956060815160018060a01b03808251168852858201518689015284820151168488015201516060860152606083820151805160808801528481015160a08801528381015160c0880152015160e086015201518051151561010085015201511515910152565b0390f35b346101685760203660031901126101685760043562ffffff80821680920361016857610cd8611007565b816002549182167f2bff118b9b9e3deb4fc5204e6ba828351c954685d0b119d0e21add79f8783399600080a362ffffff191617600255005b3461016857600036600319011261016857610d29611007565b600080546001600160a01b0319811682556001600160a01b03166000805160206124538339815191528280a3005b3461016857610d6536610f58565b50507f0000000000000000000000000000000000000000000000000000000000000000610dae610d9582846111c3565b91909260209460608101359060808782013591016112b7565b509160025492604051630b4c774160e11b8152858180610a3862ffffff8916888860048501611150565b346101685760c036600319011261016857610df1610f24565b6001600160a01b0390602435828116919082900361016857610caa92610e15610f3a565b91610e1e610f49565b610e266110bd565b50610e2f6110bd565b94610e3861105f565b9360443585526064356020860152610e4e61105f565b9316835260408301526000602083015260006060830152610c17611094565b3461016857600036600319011261016857602063ffffffff60025460181c16604051908152f35b3461016857600036600319011261016857610caa610eb0611101565b604051918291602083526020830190610ee4565b346101685760003660031901126101685760209062ffffff600254168152f35b919082519283825260005b848110610f10575050826000602080949584010152601f8019910116010190565b602081830181015184830182015201610eef565b600435906001600160a01b038216820361016857565b60843590811515820361016857565b60a43590811515820361016857565b600319810161016081126101685761014013610168576004916001600160401b03916101443590838211610168578060238301121561016857818501359384116101685760248483010111610168576024019190565b604081019081106001600160401b0382111761060c57604052565b601f909101601f19168101906001600160401b0382119082101761060c57604052565b6001600160401b03811161060c57601f01601f191660200190565b6000546001600160a01b0316330361101b57565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b60405190608082016001600160401b0381118382101761060c5760405260006060838281528260208201528260408201520152565b60408051919082016001600160401b0381118382101761060c5760405260006020838281520152565b60405190606082016001600160401b0381118382101761060c57604052816110e361105f565b81526110ed61105f565b602082015260406110fc611094565b910152565b610e104201804211611126576040519060208201526020815261112381610fae565b90565b634e487b7160e01b600052601160045260246000fd5b51906001600160a01b038216820361016857565b6001600160a01b0391821681529116602082015262ffffff909116604082015260600190565b356001600160a01b03811681036101685790565b9190826080910312610168578151600581101561016857916111ae6020820161113c565b9160606111bd6040840161113c565b92015190565b91906001600160a01b0390816111d885611176565b16158015906112a1575b156111fe57505061112360406111f784611176565b9301611176565b1691604051630cf35bdd60e41b90818152602083013560048201526080928382602481895afa9182156105a2576060938593602492600091611280575b509760405195869485938452013560048301525afa9182156105a25760009261126357505090565b6112799250803d1061096f5761095d8183610fc9565b5050905090565b6112979150853d871161096f5761095d8183610fc9565b505090503861123b565b50816112af60408601611176565b1615156111e2565b93928435926000928392839291861580158161145d575b156112e3575050505050505060409092013590565b819293949699959897916113bb575b50505081611301575b50505050565b909192939450604083013580156000146113b1575060405163442c159960e01b8152600481019290925260609092013560248201526044810183905290602090829060649082906001600160a01b03165afa9182156113a557809261136e575b50505b90388080806112fb565b9091506020823d821161139d575b8161138960209383610fc9565b8101031261139a5750513880611361565b80fd5b3d915061137c565b604051903d90823e3d90fd5b9350505050611364565b929850909115611456575060405163442c159960e01b81526004810191909152602083810135602483015260448201859052816064816001600160a01b038b165afa90811561144b578491611416575b505b953880806112f2565b90506020813d8211611443575b8161143060209383610fc9565b8101031261143f57513861140b565b8380fd5b3d9150611423565b6040513d86823e3d90fd5b905061140d565b5060408a013515156112ce565b6101243580151581036101685790565b9190826040910312610168576020825192015190565b6001600160a01b039091168152602081019190915260400190565b3d156114d6573d906114bc82610fec565b916114ca6040519384610fc9565b82523d6000602084013e565b606090565b90816020910312610168575180151581036101685790565b156114fa57565b60405162461bcd60e51b815260206004820152602860248201527f42617365537761707065723a3a73616665417070726f76653a20617070726f76604482015267194819985a5b195960c21b6064820152608490fd5b93919092936101043580151581036101685761180a5750505081156117ce5760018060a01b031690604080516370a0823160e01b8082526004923084840152602091602495838588818b5afa9485156117c357600095611794575b5082516323b872dd60e01b858201908152338983015230604483015260648083019390935291815260a0810191906001600160401b0383118184101761178057916000808b61164094828a9897868b5261160487610fae565b8987527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c656460c082015251925af16116396114ab565b908b61187b565b80518061170c575b505086835180998193825230898301525afa958615611701576000966116d2575b5082861115611695575050830392831161168257505090565b601190634e487b7160e01b600052526000fd5b5162461bcd60e51b8152808401919091526018818501527714ddd85c1c195c8e881d1c985b9cd9995c8819985a5b195960421b6044820152606490fd5b90958282813d83116116fa575b6116e98183610fc9565b8101031261139a5750519438611669565b503d6116df565b50513d6000823e3d90fd5b928061171d939483010191016114db565b1561172b5782903880611648565b815162461bcd60e51b8152808601849052602a818801527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608490fd5b88604189634e487b7160e01b600052526000fd5b90948482813d83116117bc575b6117ab8183610fc9565b8101031261139a57505193386115ab565b503d6117a1565b83513d6000823e3d90fd5b60405162461bcd60e51b81526020600482015260146024820152730537761707065723a20616d6f756e7420697320360641b6044820152606490fd5b6040935090600060a492859694965196879586946311a5cc7760e31b865260048601523060248601523060448601526064850152608484015260018060a01b03165af19081156105a25760009161185f575090565b611877915060403d811161059b5761058b8183610fc9565b5090565b919290156118dd575081511561188f575090565b3b156118985790565b60405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606490fd5b8251909150156118f05750805190602001fd5b60405162461bcd60e51b815260206004820152908190611914906024830190610ee4565b0390fd5b6001600160401b03811161060c5760051b60200190565b80511561193c5760200190565b634e487b7160e01b600052603260045260246000fd5b80516001101561193c5760400190565b63ffffffff92918316908115611ca75760408051909490916001600160401b03606084018181118582101761060c5787929752600284526020908185019083368337866119ae8761192f565b52600093846119bc88611952565b528481519a8b9463883bdbfd60e01b865260249889870160049b898d8a01525180915260448801929185905b8a838310611c7e5750505050509085809260018060a01b039e8f910392165afa928315611c745785928694611b61575b505050611a2e611a2782611952565b519161192f565b5160060b9060060b0397667fffffffffffff1991667fffffffffffff8a13838b1217611b1c5781611a6a81611a6284611952565b51169261192f565b5116900391818311611b1c578760030b9960060b8a15611b4f576000199181148b831416611b3d578a810560020b9a8682129182611b2e575b5050611b07575b508681026001600160c01b031696870403611af557901b600160201b600160c01b0316928315611ae55750505090046001600160801b031690565b634e487b7160e01b825260129052fd5b5050634e487b7160e01b815260118352fd5b9098627fffff198114611b1c57019738611aaa565b634e487b7160e01b8552601187528585fd5b0760060b151590503880611aa3565b634e487b7160e01b8652601188528686fd5b634e487b7160e01b8652601288528686fd5b91935091503d8086843e611b758184610fc9565b8201908383830312611c4f578251818111611c4b5783019282601f85011215611c4b57835193611ba485611918565b94611bb187519687610fc9565b808652878087019160051b83010191858311611c70578801905b828210611c535750505085810151918211611c4b570181601f82011215611c4f57805190611c04611bfb83611918565b95519586610fc9565b818552858086019260051b820101928311611c4b578501905b828210611c2f57505050388080611a18565b81518c81168103611c47578152908501908501611c1d565b8780fd5b8680fd5b8580fd5b81518060060b8103611c6c578152908801908801611bcb565b8a80fd5b8980fd5b81513d87823e3d90fd5b91946001939698999a5084975081839295511681520195019201928e979695938a9593926119e8565b60405162461bcd60e51b8152602060048201526002602482015261042560f41b6044820152606490fd5b9291909260020b906000821260001461226757600160ff1b82146111265781600003915b620d89e8831161223e576001831615612234576ffffcb933bd6fad37aa2d162d1a5940015b6001600160881b03166002841661220a575b6004938481166121de575b600881166121b2575b60108116612186575b6020811661215a575b6040811661212e575b608090818116612103575b61010081166120d8575b61020081166120ad575b6104008116612082575b6108008116612057575b611000811661202c575b6120008116612001575b6140008116611fd6575b6180008116611fab575b620100008116611f80575b620200008116611f56575b620400008116611f18575b6208000016611edd575b5090600012611eb9575b63ffffffff8160201c911615600014611eb05760ff60005b168101809111611e9b576001600160a01b03908116936001600160801b0393848611611e6f5785800295808704811490151715611e5a5750811691161015611e5057611123921690612407565b611123921661238c565b601190634e487b7160e01b6000525260246000fd5b5093611e7c81839261226d565b941691161015611e9157611123921690612341565b61112392166122b8565b601183634e487b7160e01b6000525260246000fd5b60ff6001611e03565b8015611ec85760001904611deb565b601283634e487b7160e01b6000525260246000fd5b6b048a170391f7dc42444e8fa291828102928184041490151715611f03571c6000611de1565b601185634e487b7160e01b6000525260246000fd5b916d2216e584f5fa1ea926041bedfe9890818102918183041490151715611f4157811c91611dd7565b601186634e487b7160e01b6000525260246000fd5b916e5d6af8dedb81196699c329225ee60490818102918183041490151715611f4157811c91611dcc565b916f09aa508b5b7a84e1c677de54f3e99bc990818102918183041490151715611f4157811c91611dc1565b916f31be135f97d08fd981231505542fcfa690818102918183041490151715611f4157811c91611db6565b916f70d869a156d2a1b890bb3df62baf32f790818102918183041490151715611f4157811c91611dac565b916fa9f746462d870fdf8a65dc1f90e061e590818102918183041490151715611f4157811c91611da2565b916fd097f3bdfd2022b8845ad8f792aa582590818102918183041490151715611f4157811c91611d98565b916fe7159475a2c29b7443b29c7fa6e889d990818102918183041490151715611f4157811c91611d8e565b916ff3392b0822b70005940c7a398e4b70f390818102918183041490151715611f4157811c91611d84565b916ff987a7253ac413176f2b074cf7815e5490818102918183041490151715611f4157811c91611d7a565b916ffcbe86c7900a88aedcffc83b479aa3a490818102918183041490151715611f4157811c91611d70565b916ffe5dee046a99a2a811c461f1969c305390818102918183041490151715611f4157811c91611d66565b906fff2ea16466c96a3843ec78b326b5286190818102918183041490151715611f035760801c90611d5b565b906fff973b41fa98c081472e6896dfb254c090818102918183041490151715611f035760801c90611d52565b906fffcb9843d60f6159c9db58835c92664490818102918183041490151715611f035760801c90611d49565b906fffe5caca7e10e4e61c3624eaa0941cd090818102918183041490151715611f035760801c90611d40565b906ffff2e50f5f656932ef12357cf3c7fdcc90818102918183041490151715611f035760801c90611d37565b6ffff97272373d413259a46990580e213a908181029181830414901517156111265760801c611d2c565b600160801b611d1a565b60405162461bcd60e51b81526020600482015260016024820152601560fa1b6044820152606490fd5b81611cf5565b60001982820990828102928380841093039183830393600093146122ad57600160401b928484111561139a57500990828211900360c01b910360401c1790565b505090505060401c90565b600160801b91600019828409928260801b9283808610950394808603951461233357848311156101685782910981806000031680920460028082600302188083028203028083028203028083028203028083028203028083028203028092029003029360018380600003040190848311900302920304170290565b505080925015610168570490565b600019828209908281029283808410930391838303936000931461238157600160801b928484111561139a57500990828211900360801b910360801c1790565b505090505060801c90565b600160c01b91600019828409928260c01b9283808610950394808603951461233357848311156101685782910981806000031680920460028082600302188083028203028083028203028083028203028083028203028083028203028092029003029360018380600003040190848311900302920304170290565b600019828209908281029283808410930391838303936000931461244757600160c01b928484111561139a57500990828211900360401b910360c01c1790565b505090505060c01c9056fe8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0a2646970667358221220962a399ed65c6ba53082a41b0c2c488e88f3f2b1f0a8c8765c5b617a9b9b2cb064736f6c63430008120033"; type UniswapV3SwapperConstructorParams = | [signer?: Signer] From eacb87ff62f276eb8047841ca5d83016cfb8edc4 Mon Sep 17 00:00:00 2001 From: cryptotechmaker Date: Tue, 24 Oct 2023 14:09:54 +0300 Subject: [PATCH 6/6] bar artifacts --- src/artifacts/tapioca-bar/BBBorrow.json | 110 ++- src/artifacts/tapioca-bar/BBCollateral.json | 110 ++- src/artifacts/tapioca-bar/BBCommon.json | 110 ++- .../tapioca-bar/BBLendingCommon.json | 110 ++- src/artifacts/tapioca-bar/BBLeverage.json | 134 ++- src/artifacts/tapioca-bar/BBLiquidation.json | 110 ++- src/artifacts/tapioca-bar/BBStorage.json | 110 ++- src/artifacts/tapioca-bar/BigBang.json | 152 +++- src/artifacts/tapioca-bar/Market.json | 45 + src/artifacts/tapioca-bar/SGLBorrow.json | 49 +- src/artifacts/tapioca-bar/SGLCollateral.json | 49 +- src/artifacts/tapioca-bar/SGLCommon.json | 49 +- .../tapioca-bar/SGLLendingCommon.json | 49 +- src/artifacts/tapioca-bar/SGLLeverage.json | 73 +- src/artifacts/tapioca-bar/SGLLiquidation.json | 49 +- src/artifacts/tapioca-bar/SGLStorage.json | 49 +- .../tapioca-bar/SimpleLeverageExecutor.json | 250 ++++++ src/artifacts/tapioca-bar/Singularity.json | 73 +- .../factories/markets/Market__factory.ts | 45 + .../markets/bigBang/BBBorrow__factory.ts | 108 ++- .../markets/bigBang/BBCollateral__factory.ts | 108 ++- .../markets/bigBang/BBCommon__factory.ts | 108 ++- .../bigBang/BBLendingCommon__factory.ts | 108 ++- .../markets/bigBang/BBLeverage__factory.ts | 132 ++- .../markets/bigBang/BBLiquidation__factory.ts | 108 ++- .../markets/bigBang/BBStorage__factory.ts | 108 ++- .../markets/bigBang/BigBang__factory.ts | 150 +++- .../tapioca-bar/factories/markets/index.ts | 1 + .../SimpleLeverageExecutor__factory.ts | 321 +++++++ .../factories/markets/leverage/index.ts | 4 + .../markets/singularity/SGLBorrow__factory.ts | 47 +- .../singularity/SGLCollateral__factory.ts | 47 +- .../markets/singularity/SGLCommon__factory.ts | 47 +- .../singularity/SGLLendingCommon__factory.ts | 47 +- .../singularity/SGLLeverage__factory.ts | 71 +- .../singularity/SGLLiquidation__factory.ts | 47 +- .../singularity/SGLStorage__factory.ts | 47 +- .../singularity/Singularity__factory.ts | 71 +- src/typechain/tapioca-bar/hardhat.d.ts | 9 + src/typechain/tapioca-bar/index.ts | 2 + src/typechain/tapioca-bar/markets/Market.ts | 136 +++ .../tapioca-bar/markets/bigBang/BBBorrow.ts | 262 +++++- .../markets/bigBang/BBCollateral.ts | 262 +++++- .../tapioca-bar/markets/bigBang/BBCommon.ts | 262 +++++- .../markets/bigBang/BBLendingCommon.ts | 262 +++++- .../tapioca-bar/markets/bigBang/BBLeverage.ts | 386 ++++++--- .../markets/bigBang/BBLiquidation.ts | 262 +++++- .../tapioca-bar/markets/bigBang/BBStorage.ts | 262 +++++- .../tapioca-bar/markets/bigBang/BigBang.ts | 465 ++++++++--- src/typechain/tapioca-bar/markets/index.ts | 2 + .../leverage/SimpleLeverageExecutor.ts | 781 ++++++++++++++++++ .../tapioca-bar/markets/leverage/index.ts | 4 + .../markets/singularity/SGLBorrow.ts | 136 +++ .../markets/singularity/SGLCollateral.ts | 136 +++ .../markets/singularity/SGLCommon.ts | 136 +++ .../markets/singularity/SGLLendingCommon.ts | 136 +++ .../markets/singularity/SGLLeverage.ts | 260 ++++-- .../markets/singularity/SGLLiquidation.ts | 136 +++ .../markets/singularity/SGLStorage.ts | 136 +++ .../markets/singularity/Singularity.ts | 260 ++++-- 60 files changed, 7451 insertions(+), 648 deletions(-) create mode 100644 src/artifacts/tapioca-bar/SimpleLeverageExecutor.json create mode 100644 src/typechain/tapioca-bar/factories/markets/leverage/SimpleLeverageExecutor__factory.ts create mode 100644 src/typechain/tapioca-bar/factories/markets/leverage/index.ts create mode 100644 src/typechain/tapioca-bar/markets/leverage/SimpleLeverageExecutor.ts create mode 100644 src/typechain/tapioca-bar/markets/leverage/index.ts diff --git a/src/artifacts/tapioca-bar/BBBorrow.json b/src/artifacts/tapioca-bar/BBBorrow.json index 63c3555c..d11fdd9b 100644 --- a/src/artifacts/tapioca-bar/BBBorrow.json +++ b/src/artifacts/tapioca-bar/BBBorrow.json @@ -65,13 +65,13 @@ { "indexed": true, "internalType": "address", - "name": "_oldVal", + "name": "oldVal", "type": "address" }, { "indexed": true, "internalType": "address", - "name": "_newVal", + "name": "newVal", "type": "address" } ], @@ -135,6 +135,25 @@ "name": "ExchangeRateDurationUpdated", "type": "event" }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "oldVal", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newVal", + "type": "address" + } + ], + "name": "LeverageExecutorSet", + "type": "event" + }, { "anonymous": false, "inputs": [ @@ -516,6 +535,37 @@ "name": "UpdateMinMaxMintFee", "type": "event" }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint256", + "name": "oldMin", + "type": "uint256" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "newMin", + "type": "uint256" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "oldMax", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "newMax", + "type": "uint256" + } + ], + "name": "UpdateMinMaxMintRange", + "type": "event" + }, { "inputs": [], "name": "DOMAIN_SEPARATOR", @@ -992,6 +1042,19 @@ "stateMutability": "view", "type": "function" }, + { + "inputs": [], + "name": "leverageExecutor", + "outputs": [ + { + "internalType": "contract ILeverageExecutor", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, { "inputs": [], "name": "liquidationBonusAmount", @@ -1070,6 +1133,19 @@ "stateMutability": "view", "type": "function" }, + { + "inputs": [], + "name": "maxMintFeeStart", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, { "inputs": [], "name": "minDebtRate", @@ -1109,6 +1185,19 @@ "stateMutability": "view", "type": "function" }, + { + "inputs": [], + "name": "minMintFeeStart", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, { "inputs": [ { @@ -1408,6 +1497,19 @@ "stateMutability": "nonpayable", "type": "function" }, + { + "inputs": [ + { + "internalType": "contract ILeverageExecutor", + "name": "_executor", + "type": "address" + } + ], + "name": "setLeverageExecutor", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, { "inputs": [ { @@ -1692,8 +1794,8 @@ "type": "function" } ], - "bytecode": "0x61014080604052346200018a5762000017816200018f565b600f81526001602082016e546170696f63612042696742616e6760881b8152602060405162000046816200018f565b8381520192603160f81b845251902091208160e052610100918183524660a0526040519160208301907f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f92838352604085015260608401524660808401523060a084015260a0835260c083019280841060018060401b03851117620001745760408490525190206080523060c052610120908152600580546001600160a01b0319163390811790915560007f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a362013880601b5562015f90601c55612710601d55612ee06020556103e8602d55613cf69283620001ac843960805183612999015260a05183612a64015260c05183612963015260e051836129e801525182612a0e015251816129c50152f35b634e487b7160e01b600052604160045260246000fd5b600080fd5b604081019081106001600160401b03821117620001745760405256fe60806040908082526004918236101561001757600080fd5b60009260e08435811c938462a02a2014611ef65750836302ce728f14611ecd578363078dfbe714611dc8578363095ea7b314611d9e5783630c4e84f014611c8757836318160ddd14611c6c5783631c9e379b14611c345783631d4d3a5d14611c0b5783631da8bf1014611b515783631fb8f81a14611b3257836323b872dd146119aa578363331960ff1461198b57836334ce998a1461196257836334d441d0146119435783633644e5151461192657836337b6b7b91461190757836338d52e0f146118de5783633ba0b9a9146118bf5783633f741adb1461189657836340626d8b1461187757836344de240a14611858578363473e3ce71461183957836348e4163e146118015783634e71e0c81461174c5783635224372c14611695578363529898f214611677578363542afda31461165857836357935462146116395783636b19ad161461161a5783636c3d8b8f146115f157836370a08231146115b9578363727785471461158157836374645ff3146114ed57836374c9e481146114ce5783637dc0d1d0146114a55783637ecebe001461146e5783637fa0b84e1461143d5783638285ef401461140c57836387b27937146113d45783638c5d0ed3146113b55783638da5cb5b1461138c578363910dd7c814611113578363932bc4f81461103657836399a970281461100d5783639e15e89f14610fd2578363a9059cbb14610ef7578363b0e21e8a14610ed8578363b27c0e7414610ea7578363b7113f1914610e83578363bb4cfe3b14610e64578363bde39c5d14610e45578363c1ad5c8d14610e21578363cd0211eb14610a7f578363ce8849ed14610a56578363d3fb2a38146105e1578363d505accf1461045a5750508163d8dfeb4514610431578163dd62ed3e146103e3578163de406577146103ba578163e0996cb61461039b578163e30c397814610372578163ea64dd5614610353578163eec0f42e14610334578163f791395d14610311575063f8ba4cff146102f357600080fd5b3461030e578060031936011261030e5761030b61393b565b80f35b80fd5b9050346103305781600319360112610330576020906027549051908152f35b5080fd5b905034610330578160031936011261033057602090600c549051908152f35b905034610330578160031936011261033057602090601f549051908152f35b90503461033057816003193601126103305760065490516001600160a01b039091168152602090f35b905034610330578160031936011261033057602090601d549051908152f35b90503461033057816003193601126103305760095490516001600160a01b039091168152602090f35b905034610330578060031936011261033057602091610400611f3d565b82610409611f53565b6001600160a01b03928316845260028652922091166000908152908352819020549051908152f35b905034610330578160031936011261033057600b5490516001600160a01b039091168152602090f35b908491346105dd5761046b36611f87565b91839498959793421161059a579161053d91610545938c8b8b60018060a01b0398898d169a8b93846000528d60205285600020908154916104ab83612cba565b90558c87519560208701977f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e266895260008a890152606088015216608086015260a085015260c0840152818301528152610503816120b8565b51902061050e612960565b915190602082019261190160f01b84526022830152604282015260428152610535816120d4565b519020612c35565b919091612b36565b1603610557575061030b939450612d17565b606490602087519162461bcd60e51b8352820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152fd5b8a5162461bcd60e51b8152602081880152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b8280fd5b848383346105dd576101603660031901126105dd576001600160a01b03813581811690819003610a52576024916001600160401b038335818111610a4e5736602382011215610a4e5780860135918211610a4e5736858383010111610a4e5760443593838516809503610a495761065d84600554163314612174565b80610a0b575b5084826108b1575b50505081610871575b505060643580610859575b5060843580610841575b5060a4358061082a575b5060c43580610806575b5060e435806107e2575b5061010435806107b1575b506101243580610740575b506101443592836106cc578480f35b601e5484106106e357505050601f55818080808480f35b608492916020603292519362461bcd60e51b85528401528201527f4d61726b65743a206c69717569646174696f6e436f6c6c61746572616c697a616044820152711d1a5bdb94985d19481d1bdbc81cdb585b1b60721b6064820152fd5b61074f620186a08211156121bf565b601f54811161076157601e55846106bd565b506025906020608494519362461bcd60e51b85528401528201527f4d61726b65743a20636f6c6c61746572616c697a6174696f6e5261746520746f6044820152646f2062696760d81b6064820152fd5b806016547fae6e0ab3b95f0a53ff9660a390ccedcbbf1f2355dce974a9841af106fddcfaba8780a3601655846106b2565b6107f0620186a082106121bf565b6107fd601b5482116121bf565b601c55846106a7565b610814620186a082106121bf565b610821601c5482106121bf565b601b558461069d565b610838620186a082106121bf565b601d5584610693565b610850620186a08211156121bf565b601a5584610689565b610868620186a08211156121bf565b6019558461067f565b816008549182167f5a62d22209e370e38eea92cfddcd228e656e6ec139243392a760a7769f5877fd8880a36001600160a01b031916176008558480610674565b82916108be60105461203a565b601f81116109ac575b508990601f841160011461092c578a9361091f575b5050508160011b916000199060031b1c1916176010555b7fa6f004921c944d4b8bf6e38462b00f36a58d62495d56b51f571ab78f732c98158680a186808461066b565b01013590508489806108dc565b60108b52601f1984169450600080516020613ca183398151915292509087908b60205b87821061098d5750508460019610610971575b50505050811b016010556108f3565b60001960f88660031b161c199201013516905588808681610962565b828501909301358555600194909401938992918201919081019061094f565b60108b529092509050600080516020613ca1833981519152601f840160051c810160208510610a04575b91849391601f8994920160051c01905b8181106109f357506108c7565b8b81558594508893506001016109e6565b50806109d6565b600f80546001600160a01b0319169190911790557f0b2d6eb667d0522c3eb86e4288afecae6c11591ffd1345d4d12407e0598bca9b8880a188610663565b600080fd5b8780fd5b8480fd5b84833461033057816003193601126103305760085490516001600160a01b039091168152602090f35b5083823461033057608036600319011261033057610a9b611f3d565b91610aa4611f53565b93610aad611f78565b506064356001835260209560078752610acc60ff868620541615612d6e565b6001600160a01b039181831691610ae530841415612dab565b610aed612501565b5050610af761393b565b610b3c610b2b610b0e84610b09613390565b613606565b90506011549060ff610b2389600d54166132f3565b1691856134b3565b610b36811515612df6565b89613536565b8286526017895286862054808311610e19575b508115610dde5781610b6091613bec565b9681881015610da35782865260238952868620610b7e898254612256565b9055610b8c82610b09613390565b9890899060018060801b03815116908c60018060801b031991015160801b161760145584885260178b52888820610bc4858254612256565b90558989888860095416868c600e54610bf28651978896879586946311a5cc7760e31b865230928601613a4a565b03925af18015610d99578c9388938c8e99989794610c2794610d6b575b5050610c1b878a612256565b80610d48575b50612256565b80610cad575b50895193845216917fc8e512d8f188ca059984b5853d2bf653da902696b8512785b182b2c813789a6e9190a4600a541690813b156105dd578351632ebe913360e21b81529183918391829084905af18015610ca357610c8f575b505051908152f35b610c998291612074565b61030e5780610c87565b83513d84823e3d90fd5b925092939450600d541690813b15610a4e578851632770a7eb60e21b815230888201908152602081019290925291889183919082908490829060400103925af18015610d3e57918a918a959493610d07575b908691610c2d565b7fc8e512d8f188ca059984b5853d2bf653da902696b8512785b182b2c813789a6e929198610d358892612074565b98919250610cff565b88513d89823e3d90fd5b610d659150610d5e620186a091601a54906121ff565b0489612256565b8f610c21565b81610d8a92903d10610d92575b610d8281836120ef565b810190613a34565b8e9150610c0f565b503d610d78565b8a513d8b823e3d90fd5b865162461bcd60e51b81528086018a9052601560248201527442423a2072657061796d656e7420746f6f206c6f7760581b6044820152606490fd5b865162461bcd60e51b81528086018a9052601560248201527453474c3a206e6f7468696e6720746f20726570617960581b6044820152606490fd5b915089610b4f565b848334610330578160031936011261033057602090610e3e6136ba565b9051908152f35b8483346103305781600319360112610330576020906028549051908152f35b848334610330578160031936011261033057602090601e549051908152f35b84833461033057816003193601126103305760209060ff6025541690519015158152f35b82853461030e578060031936011261030e57506024548151906001600160401b03908181168352831c166020820152f35b848334610330578160031936011261033057602090601a549051908152f35b848334610330578060031936011261033057602091610f14611f3d565b82602435928315801590610fc0575b610f53575b50519182526001600160a01b0316903390600080516020613c81833981519152908590a35160018152f35b3381526001865281812054610f6a85821015612a8a565b6001600160a01b038416908533839003610f87575b505050610f28565b610f9b91610f96841515612acf565b612256565b3383526001885283832055815220610fb4838254612263565b90558285808085610f7f565b50336001600160a01b03841614610f23565b848334610330578060031936011261033057606090610ffb610ff2611f3d565b602435906123a2565b91929081519384526020840152820152f35b848334610330578060031936011261033057602090610e3e61102d611f3d565b6024359061282e565b84833461033057816003193601126103305780519082602b546110588161203a565b808552906001908181169081156110eb5750600114611092575b5050506110848261108e9403836120ef565b5191829182612110565b0390f35b602b8352602095507f11c44e4875b74d31ff9fd779bf2566af7bd15b87fc985d01f5094b89e3669e4f5b8284106110d8575050508261108e946110849282010194611072565b80548685018801529286019281016110bc565b61108e97506110849450602092508693915060ff191682840152151560051b82010194611072565b925090346113885780600319360112611388578135926001600160401b038411610a525736602385011215610a5257838301359261115084612159565b9461115d845196876120ef565b848652866020918288019636602482840101116105dd578060248593018937880101526024359361ffff8516809503610a4e57610100958688805181010312611384576111a99061243c565b936111b5828901612b14565b906111c260608a01612b14565b9860808101519860a0820151926111db60c08401612b28565b91818401519301519360018060a01b03808097169d169a81421161134157928d8f819897948f948f8f968f918f959a8f8c81956112b79f9c61053d9f5060001461131a577f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e2669a5b82528952209384549461125486612cba565b905580519788019889528701528d6060870152608086015260a085015260c0840152818301528152611285816120b8565b519020611290612960565b908951908b82019261190160f01b84526022830152604282015260428152610535816120d4565b16036112d9575050506000146112d05761030b92612d17565b61030b92612cc9565b5162461bcd60e51b815291820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e61747572650000604482015260649150fd5b7f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d69a611242565b875162461bcd60e51b8152808b018a9052601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b8880fd5b8380fd5b84833461033057816003193601126103305760055490516001600160a01b039091168152602090f35b848334610330578160031936011261033057602090601b549051908152f35b8483346103305760203660031901126103305760209181906001600160a01b036113fc611f3d565b1681526023845220549051908152f35b82853461030e578060031936011261030e575060145481516001600160801b038216815260809190911c6020820152f35b84833461033057806003193601126103305760209061146761145d611f3d565b6024359033612cc9565b5160018152f35b848383346105dd5760203660031901126105dd5760209282916001600160a01b03611497611f3d565b168252845220549051908152f35b848334610330578160031936011261033057600f5490516001600160a01b039091168152602090f35b848334610330578160031936011261033057602090602d549051908152f35b8483346103305781600319360112610330578051908260105461150f8161203a565b808552906001908181169081156110eb575060011461153a575050506110848261108e9403836120ef565b6010835260209550600080516020613ca18339815191525b82841061156e575050508261108e946110849282010194611072565b8054868501880152928601928101611552565b848383346105dd5760203660031901126105dd573591600983101561030e575060ff6115ae60209361200b565b541690519015158152f35b8483346103305760203660031901126103305760209181906001600160a01b036115e1611f3d565b1681526001845220549051908152f35b848334610330578160031936011261033057600a5490516001600160a01b039091168152602090f35b8483346103305781600319360112610330576020906026549051908152f35b848334610330578160031936011261033057602090601c549051908152f35b848334610330578160031936011261033057602090602c549051908152f35b84833461033057816003193601126103305760209081549051908152f35b848383346105dd57611703906116f760ff84956116ca6116b436611fd6565b9491989093808052600760205220541615612d6e565b6116df6001600160a01b038216301415612dab565b6116e7612501565b50506116f161393b565b85612e4c565b929093601154906133b6565b15611715575082519182526020820152f35b606490602085519162461bcd60e51b8352820152601160248201527013585c9ad95d0e881a5b9cdbdb1d995b9d607a1b6044820152fd5b509150346105dd57826003193601126105dd576006546001600160a01b039290918383169190338390036117be575050806005549384167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08680a36001600160a01b0319928316176005551660065580f35b906020606492519162461bcd60e51b8352820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b8483346103305760203660031901126103305760209181906001600160a01b03611829611f3d565b1681526017845220549051908152f35b8483346103305781600319360112610330576020906015549051908152f35b848334610330578160031936011261033057602090600e549051908152f35b8483346103305781600319360112610330576020906016549051908152f35b5090833461030e57606036600319011261030e5750610e3e602092604435906024359035612289565b8483346103305781600319360112610330576020906011549051908152f35b848334610330578160031936011261033057600d5490516001600160a01b039091168152602090f35b8483346103305781600319360112610330576020906012549051908152f35b848334610330578160031936011261033057602090610e3e612960565b8483346103305781600319360112610330576020906019549051908152f35b84833461033057816003193601126103305760145490516001600160801b039091168152602090f35b8483346103305781600319360112610330576020906013549051908152f35b5090833461030e576119bb36611fd6565b9192826119f5575b508351918252602094506001600160a01b03908116921690600080516020613c81833981519152908590a35160018152f35b6001600160a01b038481168083526001602090815287842054919892909190611a2087831015612a8a565b851692838a03611a34575b505050506119c3565b898552600283528885203386528352888520549060018201611a9e575b5050928260209960018a94611a7d8a8e99610f96600080516020613c818339815191529c9a1515612acf565b9285525283832055815220611a93858254612263565b905591878080611a2b565b878210611af457509260209960018a94611a7d8a8e9996611acf82600080516020613c818339815191529d9b612256565b86895260028552898920338a5285528989205596995050509450509981949650611a51565b895162461bcd60e51b8152908101849052601860248201527745524332303a20616c6c6f77616e636520746f6f206c6f7760401b6044820152606490fd5b8483346103305781600319360112610330576020906029549051908152f35b908491346105dd57611b6236611f87565b93979496909280421161059a57938693611bf9938c8c8961053d968e9a8e60018060a01b03809c169c8d948587526020528c87872092835493611ba485612cba565b905588519660208801987f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d68a528a890152606088015216608086015260a085015260c0840152818301528152610503816120b8565b1603610557575061030b939450612cc9565b848334610330578160031936011261033057602a5490516001600160a01b039091168152602090f35b8483346103305760203660031901126103305760209181906001600160a01b03611c5c611f3d565b1681526018845220549051908152f35b84833461033057816003193601126103305751908152602090f35b848383346105dd57816003193601126105dd57803590600982101561138857611cae611f69565b6008549093906001600160a01b03163303611d645760ff611cce8461200b565b54161515931515938414611d2c575050808260ff611cee611d1c9461200b565b54161515827feeec81de25875ce1725479bb76f720a8defdb43dea041919ae37bb4aae9847c08780a461200b565b9060ff8019835416911617905580f35b906020606492519162461bcd60e51b835282015260126024820152714d61726b65743a2073616d6520737461746560701b6044820152fd5b906020606492519162461bcd60e51b8352820152601460248201527313585c9ad95d0e881d5b985d5d1a1bdc9a5e995960621b6044820152fd5b848334610330578060031936011261033057602090611467611dbe611f3d565b6024359033612d17565b509150346105dd5760603660031901126105dd57611de4611f3d565b91611ded611f69565b91611df6611f78565b9260018060a01b03948591611e1083600554163314612174565b15611eb4571692831590811591611eac575b5015611e71575050806005549283167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08580a36001600160a01b03199182161760055560068054909116905580f35b906020606492519162461bcd60e51b835282015260156024820152744f776e61626c653a207a65726f206164647265737360581b6044820152fd5b905038611e22565b93505050501660018060a01b0319600654161760065580f35b82853461030e578060031936011261030e5750611ee8612501565b825191151582526020820152f35b93505050346105dd57806003193601126105dd57602092611f15611f3d565b611f1d611f53565b6001600160a01b0391821683526003865283832091168252845220548152f35b600435906001600160a01b0382168203610a4957565b602435906001600160a01b0382168203610a4957565b602435908115158203610a4957565b604435908115158203610a4957565b60e0906003190112610a49576001600160a01b03906004358281168103610a4957916024359081168103610a495790604435906064359060843560ff81168103610a49579060a4359060c43590565b6060906003190112610a49576001600160a01b03906004358281168103610a4957916024359081168103610a49579060443590565b6009811015612024576000526007602052604060002090565b634e487b7160e01b600052602160045260246000fd5b90600182811c9216801561206a575b602083101461205457565b634e487b7160e01b600052602260045260246000fd5b91607f1691612049565b6001600160401b03811161208757604052565b634e487b7160e01b600052604160045260246000fd5b604081019081106001600160401b0382111761208757604052565b61010081019081106001600160401b0382111761208757604052565b608081019081106001600160401b0382111761208757604052565b90601f801991011681019081106001600160401b0382111761208757604052565b6020808252825181830181905290939260005b82811061214557505060409293506000838284010152601f8019910116010190565b818101860151848201604001528501612123565b6001600160401b03811161208757601f01601f191660200190565b1561217b57565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b156121c657565b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881b9bdd081d985b1a59607a1b6044820152606490fd5b8181029291811591840414171561221257565b634e487b7160e01b600052601160045260246000fd5b8115612232570490565b634e487b7160e01b600052601260045260246000fd5b604d811161221257600a0a90565b9190820391821161221257565b9190820180921161221257565b8181039291600013801582851316918412161761221257565b6014549192916122d2916122c3916122b9916122af906001600160801b038316906121ff565b9060801c90612228565b93601f54906121ff565b6122cc83612248565b90612228565b80831061239a576122e66123229184612256565b9161231d61231761230e601e546123086122ff86612248565b60205490612263565b906121ff565b6122cc84612248565b91612248565b612270565b6509184e72a0009081810291818305149015171561221257670de0b6b3a76400009182810292818405149015171561221257801561223257600160ff1b91808314600019831416612212570590600082121561239357811461221257600003905b80821161238e575090565b905090565b5090612383565b505050600090565b6001600160a01b038116600081815260176020526040812054919493929091908115612430579160409161240c85946123e6612424976123e06138aa565b926126a5565b815190936001600160801b0391602091612402918416906121ff565b9201511690612228565b81811061242857035b95815260186020522054612777565b9091565b505080612415565b50509192505080918190565b51908115158203610a4957565b9190826040910312610a495760206124608361243c565b92015190565b60208082526000916010549161247b8361203a565b92838284015260019081811690816000146124de57506001146124a0575b5050505090565b929350601060005280600020926000935b8585106124ca5750505060409250010138808080612499565b8054858501604001529382019381016124b1565b925050506040935060ff929192191683830152151560051b010138808080612499565b600f546040805163d6d7d52560e01b81529290916001600160a01b031682848061252d60048201612466565b0381600080955af1801561264d578194829161261a575b509284156125bd57831561258357507f9f9192b5edb17356c524e08d9e025c8e2f6307e6ea52fb7968faa3081f51c3c883918260115580a25b42601355565b5162461bcd60e51b81526020600482015260146024820152734d61726b65743a20696e76616c6964207261746560601b6044820152606490fd5b919250506125d060135460125490612263565b42116125e057506011549061257d565b5162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881c985d19481d1bdbc81bdb1960621b6044820152606490fd5b905061263d919450833d8511612646575b61263581836120ef565b810190612449565b93909338612544565b503d61262b565b508251903d90823e3d90fd5b1561266057565b60405162461bcd60e51b815260206004820152601e60248201527f4d61726b65743a2065786368616e676552617465206e6f742076616c696400006044820152606490fd5b6126b0821515612659565b60018060a01b036020816009541691600c5490600094168452601882526064604085205491604051948593849263442c159960e01b8452600484015260248301528660448301525afa91821561276b578092612733575b50509061272b61272261273093620186a060215404906121ff565b601e54906121ff565b612228565b90565b9091506020823d8211612763575b8161274e602093836120ef565b8101031261030e57505161272b612722612707565b3d9150612741565b604051903d90823e3d90fd5b612782821515612659565b602060018060a01b0360095416916064600c54604051948593849263442c159960e01b845260048401526024830152600060448301525afa908115612822576000916127ef575b509061272b6127db92602154906121ff565b620186a06127eb601e54836121ff565b0491565b906020823d821161281a575b81612808602093836120ef565b8101031261030e57505161272b6127c9565b3d91506127fb565b6040513d6000823e3d90fd5b6001600160a01b0316600081815260186020526040812054909261285191612777565b91835260176020526040832054801561295a57811561295a5781811061295a57828110156129505760145461289a918391610f96916122af906001600160801b038316906121ff565b90620186a0928383029280840485149015171561293c576128bf92916122cc91612256565b91601b5491601c54936128d28585612270565b80820291848212600160ff1b82141661293c5781830514901517156129285705818482019485129112908015821691151617612914575080821261238e575090565b634e487b7160e01b81526011600452602490fd5b634e487b7160e01b83526011600452602483fd5b634e487b7160e01b85526011600452602485fd5b50505050601b5490565b50505090565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03161480612a61575b156129bb577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f000000000000000000000000000000000000000000000000000000000000000082527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a0815260c081018181106001600160401b038211176120875760405251902090565b507f00000000000000000000000000000000000000000000000000000000000000004614612992565b15612a9157565b60405162461bcd60e51b815260206004820152601660248201527545524332303a2062616c616e636520746f6f206c6f7760501b6044820152606490fd5b15612ad657565b60405162461bcd60e51b815260206004820152601660248201527545524332303a206e6f207a65726f206164647265737360501b6044820152606490fd5b51906001600160a01b0382168203610a4957565b519060ff82168203610a4957565b60058110156120245780612b475750565b60018103612b8f5760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b6044820152606490fd5b60028103612bdc5760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606490fd5b600314612be557565b60405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608490fd5b9291906fa2a8918ca85bafe22016d0b997e4df60600160ff1b038311612cae5791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa15612ca15781516001600160a01b03811615612c9b579190565b50600190565b50604051903d90823e3d90fd5b50505050600090600390565b60001981146122125760010190565b7fe50de2333c10a9502fcb1d8ae13a51bbf423153dfc63c2b8997665b32154afc360018060a01b038092169160009083825260036020526040822094169384825260205284604082205580a4565b909160207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259160018060a01b03809416938460005260028352604060002095169485600052825280604060002055604051908152a3565b15612d7557565b60405162461bcd60e51b815260206004820152600e60248201526d13585c9ad95d0e881c185d5cd95960921b6044820152606490fd5b15612db257565b606460405162461bcd60e51b815260206004820152602060248201527f4d61726b65743a2063616e6e6f742065786563757465206f6e20697473656c666044820152fd5b15612dfd57565b60405162461bcd60e51b815260206004820152602160248201527f42696742616e673a20616c6c6f77616e63655368617265206e6f742076616c696044820152601960fa1b6064820152608490fd5b91929060009060295485106132af5784156132a757612e6a85613a79565b9060115495612eb4612ea3612e7f8584612263565b600d546001600160a01b039a919060ff90612e9b908d166132f3565b16918a6134b3565b612eae811515612df6565b87613536565b8682169182855260209260238452604094858720612ed3828254612263565b9055612edd613390565b98612ee88286612263565b88878951612ef58161209d565b82815201528a516001600160801b039b8c91821661323b5781612f20849e8f955b1682845116613891565b168152612f35828a8301941683855116613891565b8281169093525160809290921b6001600160801b03191691169081176014556016548015918215613230575b5050156131ec57907f3a5151e57d3bc9798e7853034ac52293d1a0e12a2b44725e75b03b21f86477a6878c8795941692838b52601789528c612fa7838d20918254612263565b905581519081528c89820152a487600d5416803b1561316d5784516340c10f1960e01b8152306004820152602481018490529086908290604490829084905af180156131e2576131cf575b5087600d541690600e54918960095416865163095ea7b360e01b91828252600482015288602482015286816044818c875af180156131c5579287928a88938f96613182575b506009548b51928352959095166001600160a01b0316600482015260248101929092529092839190829081604481015b03925af1801561317857908694939291613134575b506130a79450868a6009541692855196879586948593634d4d7cbd60e11b8552309060048601613a4a565b03925af1908115613128578391613109575b509394600a5416803b156105dd57908280926004835180958193632ebe913360e21b83525af190811561310057506130ef575050565b6130f98291612074565b61030e5750565b513d84823e3d90fd5b6131209150823d8411610d9257610d8281836120ef565b9050386130b9565b505051903d90823e3d90fd5b80929450859193953d8311613171575b61314e81836120ef565b8101031261316d57916130a79391613166869461243c565b503861307c565b8580fd5b503d613144565b86513d89823e3d90fd5b9350509290935081813d83116131be575b61319d81836120ef565b81010312611384576130679287928a8e6131b78a9561243c565b5095613037565b503d613193565b88513d8b823e3d90fd5b6131db90959195612074565b9338612ff2565b85513d88823e3d90fd5b865162461bcd60e51b815260048101879052601b60248201527f42696742616e673a20626f72726f7720636170207265616368656400000000006044820152606490fd5b111590503880612f61565b9091808983018481511661324f90836121ff565b8585511661325c91612228565b9e8f8186511661326b916121ff565b91511661327791612228565b1061328b575b9082612f20818f9594612f16565b919b908c612f2061329c8294612cba565b9e505050909161327d565b509250829150565b606460405162461bcd60e51b815260206004820152602060248201527f42696742616e673a20626f72726f7720616d6f756e7420746f6f20736d616c6c6044820152fd5b60405163313ce56760e01b6020820190815260048252906133138161209d565b5160009283928392916001600160a01b03165afa903d15613388573d9161333983612159565b9261334760405194856120ef565b83523d82602085013e5b8061337d575b156133765760208280518101031261030e575060206127309101612b28565b5050601290565b506020825114613357565b606091613351565b6040519061339d8261209d565b6014546001600160801b038116835260801c6020830152565b919060018060a01b038060009416845260206017815260408520549081156134a95760188152604086205480156134a257816133f0613390565b9460095416916064600c54604051948593849263442c159960e01b8452600484015260248301528b60448301525afa96871561276b57809761346c575b505061240261344c612722613467969798620186a060215404906121ff565b9561346260018060801b039485875116906121ff565b6121ff565b111590565b9096508187813d831161349b575b61348481836120ef565b8101031261030e575094519461240261344c61342d565b503d61347a565b5050505050565b5060019450505050565b612317906134d38561273096956134cd6122cc96856126a5565b906134f3565b6001600160a01b03909116600090815260186020526040902054906121ff565b918215801561352e575b61239a57600181018091116122125761351c9261230861272b92612248565b6005810180911161221257600a900490565b5081156134fd565b6001600160a01b031633810361354a575050565b60008181526020906003825260409182822033835281528483832054106135b3578382526003815282822033835281528282205460010161358c575050505050565b6135a793825260038152828220903383525220918254612256565b905538808080806134a2565b60649083519062461bcd60e51b82526004820152601460248201527313585c9ad95d0e881b9bdd08185c1c1c9bdd995960621b6044820152fd5b6001600160801b03918216908216039190821161221257565b919091600060206040516136198161209d565b82815201526020810180516001600160801b0390811661365d5761365681865b81613649818a16828951166135ed565b16865216828451166135ed565b1690529190565b61367761366d82855116876121ff565b8284511690612228565b948061369361368984865116896121ff565b8487511690612228565b106136a3575b8161365691613639565b94816136b161365692612cba565b96915050613699565b60ff6025541661382b576014546001600160801b031690811561382457600a54604051631848f2bf60e31b8152602093916001600160a01b03919085908290600490829086165afa80156128225785916000916137eb575b50600460405180948193631a674cc560e11b8352165afa938415612822576000946137bc575b50506137549192670de0b6b3a7640000928391602854906121ff565b0490818110156137b35761376b6029548092612256565b83810290808204851490151715612212576122cc61378c926137a794612256565b602654926137a1602754926134628487612256565b04612263565b9080821161238e575090565b50505060265490565b81813d83116137e4575b6137d081836120ef565b810103126113885751925061375438613738565b503d6137c6565b909181813d831161381d575b61380181836120ef565b81010312610330575190828216820361030e5750849038613712565b503d6137f7565b6027549150565b600a5460405163e6abad4960e01b815290602090829060049082906001600160a01b03165afa90811561282257600091613863575090565b906020823d8211613889575b8161387c602093836120ef565b8101031261030e57505190565b3d915061386f565b6001600160801b03918216908216019190821161221257565b600060206040516138ba8161209d565b82815201526001600160401b03906138d98260245460401c1642612256565b9182156139305761392b61346291670de0b6b3a76400006139206138fb613390565b9660018060801b03958694858a5116906301e133806139186136ba565b0416906121ff565b041682855116613891565b168252565b509050612730613390565b6040516139478161209d565b6024546001600160401b03908181168352818160401c1661396f602085019180835242612256565b9283156134a257602094816301e133806139876136ba565b041681528142168352613998613390565b670de0b6b3a76400006139bd60018060801b03976134628985511687875116906121ff565b04956139ce81881682845116613891565b1680825296015160801b6001600160801b031990811690961760145551915192909416931692831760409190911b67ffffffffffffffff60401b16176024557f7484db546dcd57af0104c73c8a6968dfbaf5767f047cee0dadd0499ad7df81a0600080a3565b9190826040910312610a49576020825192015190565b9081526001600160a01b0391821660208201529116604082015260608101919091526000608082015260a00190565b8015613be657602a546040805163d6d7d52560e01b81526001600160a01b03909216929190808280613aad60048201612466565b0381600080985af1918215613bdc5784908593613bba575b5015613b6b5750670e27c49886e60000811015613b6257670d99a8cec7e20000811115613b5957602d5490670d99a8cec7e1ffff198101908111613b455790668e1bc9bf040000613b1f613b2693612308602c5485612256565b0490612256565b9081613b3157505090565b620186a0925090613b41916121ff565b0490565b634e487b7160e01b84526011600452602484fd5b505050602d5490565b505050602c5490565b5162461bcd60e51b8152602060048201526024808201527f42696742616e673a202061737365742773206f7261636c652063616c6c2066616044820152631a5b195960e21b6064820152608490fd5b905081613bd49293503d84116126465761263581836120ef565b919038613ac5565b81513d86823e3d90fd5b50600090565b6001600160a01b0390811660008181526017602052604081205491939092828214613c6f579060ff613c24613c2d93600d54166132f3565b169283916134f3565b8015613c685782916122cc612317613c53938760409752602360205286862054906121ff565b9281526023602052205480821161238e575090565b5050905090565b50505060409150602360205220549056feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae672a26469706673582212208082314b105886dbefd0bc64b2f053ab5ae9e4c72ac80611d7162104e8ae4d2064736f6c63430008120033", - "deployedBytecode": "0x60806040908082526004918236101561001757600080fd5b60009260e08435811c938462a02a2014611ef65750836302ce728f14611ecd578363078dfbe714611dc8578363095ea7b314611d9e5783630c4e84f014611c8757836318160ddd14611c6c5783631c9e379b14611c345783631d4d3a5d14611c0b5783631da8bf1014611b515783631fb8f81a14611b3257836323b872dd146119aa578363331960ff1461198b57836334ce998a1461196257836334d441d0146119435783633644e5151461192657836337b6b7b91461190757836338d52e0f146118de5783633ba0b9a9146118bf5783633f741adb1461189657836340626d8b1461187757836344de240a14611858578363473e3ce71461183957836348e4163e146118015783634e71e0c81461174c5783635224372c14611695578363529898f214611677578363542afda31461165857836357935462146116395783636b19ad161461161a5783636c3d8b8f146115f157836370a08231146115b9578363727785471461158157836374645ff3146114ed57836374c9e481146114ce5783637dc0d1d0146114a55783637ecebe001461146e5783637fa0b84e1461143d5783638285ef401461140c57836387b27937146113d45783638c5d0ed3146113b55783638da5cb5b1461138c578363910dd7c814611113578363932bc4f81461103657836399a970281461100d5783639e15e89f14610fd2578363a9059cbb14610ef7578363b0e21e8a14610ed8578363b27c0e7414610ea7578363b7113f1914610e83578363bb4cfe3b14610e64578363bde39c5d14610e45578363c1ad5c8d14610e21578363cd0211eb14610a7f578363ce8849ed14610a56578363d3fb2a38146105e1578363d505accf1461045a5750508163d8dfeb4514610431578163dd62ed3e146103e3578163de406577146103ba578163e0996cb61461039b578163e30c397814610372578163ea64dd5614610353578163eec0f42e14610334578163f791395d14610311575063f8ba4cff146102f357600080fd5b3461030e578060031936011261030e5761030b61393b565b80f35b80fd5b9050346103305781600319360112610330576020906027549051908152f35b5080fd5b905034610330578160031936011261033057602090600c549051908152f35b905034610330578160031936011261033057602090601f549051908152f35b90503461033057816003193601126103305760065490516001600160a01b039091168152602090f35b905034610330578160031936011261033057602090601d549051908152f35b90503461033057816003193601126103305760095490516001600160a01b039091168152602090f35b905034610330578060031936011261033057602091610400611f3d565b82610409611f53565b6001600160a01b03928316845260028652922091166000908152908352819020549051908152f35b905034610330578160031936011261033057600b5490516001600160a01b039091168152602090f35b908491346105dd5761046b36611f87565b91839498959793421161059a579161053d91610545938c8b8b60018060a01b0398898d169a8b93846000528d60205285600020908154916104ab83612cba565b90558c87519560208701977f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e266895260008a890152606088015216608086015260a085015260c0840152818301528152610503816120b8565b51902061050e612960565b915190602082019261190160f01b84526022830152604282015260428152610535816120d4565b519020612c35565b919091612b36565b1603610557575061030b939450612d17565b606490602087519162461bcd60e51b8352820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152fd5b8a5162461bcd60e51b8152602081880152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b8280fd5b848383346105dd576101603660031901126105dd576001600160a01b03813581811690819003610a52576024916001600160401b038335818111610a4e5736602382011215610a4e5780860135918211610a4e5736858383010111610a4e5760443593838516809503610a495761065d84600554163314612174565b80610a0b575b5084826108b1575b50505081610871575b505060643580610859575b5060843580610841575b5060a4358061082a575b5060c43580610806575b5060e435806107e2575b5061010435806107b1575b506101243580610740575b506101443592836106cc578480f35b601e5484106106e357505050601f55818080808480f35b608492916020603292519362461bcd60e51b85528401528201527f4d61726b65743a206c69717569646174696f6e436f6c6c61746572616c697a616044820152711d1a5bdb94985d19481d1bdbc81cdb585b1b60721b6064820152fd5b61074f620186a08211156121bf565b601f54811161076157601e55846106bd565b506025906020608494519362461bcd60e51b85528401528201527f4d61726b65743a20636f6c6c61746572616c697a6174696f6e5261746520746f6044820152646f2062696760d81b6064820152fd5b806016547fae6e0ab3b95f0a53ff9660a390ccedcbbf1f2355dce974a9841af106fddcfaba8780a3601655846106b2565b6107f0620186a082106121bf565b6107fd601b5482116121bf565b601c55846106a7565b610814620186a082106121bf565b610821601c5482106121bf565b601b558461069d565b610838620186a082106121bf565b601d5584610693565b610850620186a08211156121bf565b601a5584610689565b610868620186a08211156121bf565b6019558461067f565b816008549182167f5a62d22209e370e38eea92cfddcd228e656e6ec139243392a760a7769f5877fd8880a36001600160a01b031916176008558480610674565b82916108be60105461203a565b601f81116109ac575b508990601f841160011461092c578a9361091f575b5050508160011b916000199060031b1c1916176010555b7fa6f004921c944d4b8bf6e38462b00f36a58d62495d56b51f571ab78f732c98158680a186808461066b565b01013590508489806108dc565b60108b52601f1984169450600080516020613ca183398151915292509087908b60205b87821061098d5750508460019610610971575b50505050811b016010556108f3565b60001960f88660031b161c199201013516905588808681610962565b828501909301358555600194909401938992918201919081019061094f565b60108b529092509050600080516020613ca1833981519152601f840160051c810160208510610a04575b91849391601f8994920160051c01905b8181106109f357506108c7565b8b81558594508893506001016109e6565b50806109d6565b600f80546001600160a01b0319169190911790557f0b2d6eb667d0522c3eb86e4288afecae6c11591ffd1345d4d12407e0598bca9b8880a188610663565b600080fd5b8780fd5b8480fd5b84833461033057816003193601126103305760085490516001600160a01b039091168152602090f35b5083823461033057608036600319011261033057610a9b611f3d565b91610aa4611f53565b93610aad611f78565b506064356001835260209560078752610acc60ff868620541615612d6e565b6001600160a01b039181831691610ae530841415612dab565b610aed612501565b5050610af761393b565b610b3c610b2b610b0e84610b09613390565b613606565b90506011549060ff610b2389600d54166132f3565b1691856134b3565b610b36811515612df6565b89613536565b8286526017895286862054808311610e19575b508115610dde5781610b6091613bec565b9681881015610da35782865260238952868620610b7e898254612256565b9055610b8c82610b09613390565b9890899060018060801b03815116908c60018060801b031991015160801b161760145584885260178b52888820610bc4858254612256565b90558989888860095416868c600e54610bf28651978896879586946311a5cc7760e31b865230928601613a4a565b03925af18015610d99578c9388938c8e99989794610c2794610d6b575b5050610c1b878a612256565b80610d48575b50612256565b80610cad575b50895193845216917fc8e512d8f188ca059984b5853d2bf653da902696b8512785b182b2c813789a6e9190a4600a541690813b156105dd578351632ebe913360e21b81529183918391829084905af18015610ca357610c8f575b505051908152f35b610c998291612074565b61030e5780610c87565b83513d84823e3d90fd5b925092939450600d541690813b15610a4e578851632770a7eb60e21b815230888201908152602081019290925291889183919082908490829060400103925af18015610d3e57918a918a959493610d07575b908691610c2d565b7fc8e512d8f188ca059984b5853d2bf653da902696b8512785b182b2c813789a6e929198610d358892612074565b98919250610cff565b88513d89823e3d90fd5b610d659150610d5e620186a091601a54906121ff565b0489612256565b8f610c21565b81610d8a92903d10610d92575b610d8281836120ef565b810190613a34565b8e9150610c0f565b503d610d78565b8a513d8b823e3d90fd5b865162461bcd60e51b81528086018a9052601560248201527442423a2072657061796d656e7420746f6f206c6f7760581b6044820152606490fd5b865162461bcd60e51b81528086018a9052601560248201527453474c3a206e6f7468696e6720746f20726570617960581b6044820152606490fd5b915089610b4f565b848334610330578160031936011261033057602090610e3e6136ba565b9051908152f35b8483346103305781600319360112610330576020906028549051908152f35b848334610330578160031936011261033057602090601e549051908152f35b84833461033057816003193601126103305760209060ff6025541690519015158152f35b82853461030e578060031936011261030e57506024548151906001600160401b03908181168352831c166020820152f35b848334610330578160031936011261033057602090601a549051908152f35b848334610330578060031936011261033057602091610f14611f3d565b82602435928315801590610fc0575b610f53575b50519182526001600160a01b0316903390600080516020613c81833981519152908590a35160018152f35b3381526001865281812054610f6a85821015612a8a565b6001600160a01b038416908533839003610f87575b505050610f28565b610f9b91610f96841515612acf565b612256565b3383526001885283832055815220610fb4838254612263565b90558285808085610f7f565b50336001600160a01b03841614610f23565b848334610330578060031936011261033057606090610ffb610ff2611f3d565b602435906123a2565b91929081519384526020840152820152f35b848334610330578060031936011261033057602090610e3e61102d611f3d565b6024359061282e565b84833461033057816003193601126103305780519082602b546110588161203a565b808552906001908181169081156110eb5750600114611092575b5050506110848261108e9403836120ef565b5191829182612110565b0390f35b602b8352602095507f11c44e4875b74d31ff9fd779bf2566af7bd15b87fc985d01f5094b89e3669e4f5b8284106110d8575050508261108e946110849282010194611072565b80548685018801529286019281016110bc565b61108e97506110849450602092508693915060ff191682840152151560051b82010194611072565b925090346113885780600319360112611388578135926001600160401b038411610a525736602385011215610a5257838301359261115084612159565b9461115d845196876120ef565b848652866020918288019636602482840101116105dd578060248593018937880101526024359361ffff8516809503610a4e57610100958688805181010312611384576111a99061243c565b936111b5828901612b14565b906111c260608a01612b14565b9860808101519860a0820151926111db60c08401612b28565b91818401519301519360018060a01b03808097169d169a81421161134157928d8f819897948f948f8f968f918f959a8f8c81956112b79f9c61053d9f5060001461131a577f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e2669a5b82528952209384549461125486612cba565b905580519788019889528701528d6060870152608086015260a085015260c0840152818301528152611285816120b8565b519020611290612960565b908951908b82019261190160f01b84526022830152604282015260428152610535816120d4565b16036112d9575050506000146112d05761030b92612d17565b61030b92612cc9565b5162461bcd60e51b815291820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e61747572650000604482015260649150fd5b7f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d69a611242565b875162461bcd60e51b8152808b018a9052601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b8880fd5b8380fd5b84833461033057816003193601126103305760055490516001600160a01b039091168152602090f35b848334610330578160031936011261033057602090601b549051908152f35b8483346103305760203660031901126103305760209181906001600160a01b036113fc611f3d565b1681526023845220549051908152f35b82853461030e578060031936011261030e575060145481516001600160801b038216815260809190911c6020820152f35b84833461033057806003193601126103305760209061146761145d611f3d565b6024359033612cc9565b5160018152f35b848383346105dd5760203660031901126105dd5760209282916001600160a01b03611497611f3d565b168252845220549051908152f35b848334610330578160031936011261033057600f5490516001600160a01b039091168152602090f35b848334610330578160031936011261033057602090602d549051908152f35b8483346103305781600319360112610330578051908260105461150f8161203a565b808552906001908181169081156110eb575060011461153a575050506110848261108e9403836120ef565b6010835260209550600080516020613ca18339815191525b82841061156e575050508261108e946110849282010194611072565b8054868501880152928601928101611552565b848383346105dd5760203660031901126105dd573591600983101561030e575060ff6115ae60209361200b565b541690519015158152f35b8483346103305760203660031901126103305760209181906001600160a01b036115e1611f3d565b1681526001845220549051908152f35b848334610330578160031936011261033057600a5490516001600160a01b039091168152602090f35b8483346103305781600319360112610330576020906026549051908152f35b848334610330578160031936011261033057602090601c549051908152f35b848334610330578160031936011261033057602090602c549051908152f35b84833461033057816003193601126103305760209081549051908152f35b848383346105dd57611703906116f760ff84956116ca6116b436611fd6565b9491989093808052600760205220541615612d6e565b6116df6001600160a01b038216301415612dab565b6116e7612501565b50506116f161393b565b85612e4c565b929093601154906133b6565b15611715575082519182526020820152f35b606490602085519162461bcd60e51b8352820152601160248201527013585c9ad95d0e881a5b9cdbdb1d995b9d607a1b6044820152fd5b509150346105dd57826003193601126105dd576006546001600160a01b039290918383169190338390036117be575050806005549384167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08680a36001600160a01b0319928316176005551660065580f35b906020606492519162461bcd60e51b8352820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b8483346103305760203660031901126103305760209181906001600160a01b03611829611f3d565b1681526017845220549051908152f35b8483346103305781600319360112610330576020906015549051908152f35b848334610330578160031936011261033057602090600e549051908152f35b8483346103305781600319360112610330576020906016549051908152f35b5090833461030e57606036600319011261030e5750610e3e602092604435906024359035612289565b8483346103305781600319360112610330576020906011549051908152f35b848334610330578160031936011261033057600d5490516001600160a01b039091168152602090f35b8483346103305781600319360112610330576020906012549051908152f35b848334610330578160031936011261033057602090610e3e612960565b8483346103305781600319360112610330576020906019549051908152f35b84833461033057816003193601126103305760145490516001600160801b039091168152602090f35b8483346103305781600319360112610330576020906013549051908152f35b5090833461030e576119bb36611fd6565b9192826119f5575b508351918252602094506001600160a01b03908116921690600080516020613c81833981519152908590a35160018152f35b6001600160a01b038481168083526001602090815287842054919892909190611a2087831015612a8a565b851692838a03611a34575b505050506119c3565b898552600283528885203386528352888520549060018201611a9e575b5050928260209960018a94611a7d8a8e99610f96600080516020613c818339815191529c9a1515612acf565b9285525283832055815220611a93858254612263565b905591878080611a2b565b878210611af457509260209960018a94611a7d8a8e9996611acf82600080516020613c818339815191529d9b612256565b86895260028552898920338a5285528989205596995050509450509981949650611a51565b895162461bcd60e51b8152908101849052601860248201527745524332303a20616c6c6f77616e636520746f6f206c6f7760401b6044820152606490fd5b8483346103305781600319360112610330576020906029549051908152f35b908491346105dd57611b6236611f87565b93979496909280421161059a57938693611bf9938c8c8961053d968e9a8e60018060a01b03809c169c8d948587526020528c87872092835493611ba485612cba565b905588519660208801987f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d68a528a890152606088015216608086015260a085015260c0840152818301528152610503816120b8565b1603610557575061030b939450612cc9565b848334610330578160031936011261033057602a5490516001600160a01b039091168152602090f35b8483346103305760203660031901126103305760209181906001600160a01b03611c5c611f3d565b1681526018845220549051908152f35b84833461033057816003193601126103305751908152602090f35b848383346105dd57816003193601126105dd57803590600982101561138857611cae611f69565b6008549093906001600160a01b03163303611d645760ff611cce8461200b565b54161515931515938414611d2c575050808260ff611cee611d1c9461200b565b54161515827feeec81de25875ce1725479bb76f720a8defdb43dea041919ae37bb4aae9847c08780a461200b565b9060ff8019835416911617905580f35b906020606492519162461bcd60e51b835282015260126024820152714d61726b65743a2073616d6520737461746560701b6044820152fd5b906020606492519162461bcd60e51b8352820152601460248201527313585c9ad95d0e881d5b985d5d1a1bdc9a5e995960621b6044820152fd5b848334610330578060031936011261033057602090611467611dbe611f3d565b6024359033612d17565b509150346105dd5760603660031901126105dd57611de4611f3d565b91611ded611f69565b91611df6611f78565b9260018060a01b03948591611e1083600554163314612174565b15611eb4571692831590811591611eac575b5015611e71575050806005549283167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08580a36001600160a01b03199182161760055560068054909116905580f35b906020606492519162461bcd60e51b835282015260156024820152744f776e61626c653a207a65726f206164647265737360581b6044820152fd5b905038611e22565b93505050501660018060a01b0319600654161760065580f35b82853461030e578060031936011261030e5750611ee8612501565b825191151582526020820152f35b93505050346105dd57806003193601126105dd57602092611f15611f3d565b611f1d611f53565b6001600160a01b0391821683526003865283832091168252845220548152f35b600435906001600160a01b0382168203610a4957565b602435906001600160a01b0382168203610a4957565b602435908115158203610a4957565b604435908115158203610a4957565b60e0906003190112610a49576001600160a01b03906004358281168103610a4957916024359081168103610a495790604435906064359060843560ff81168103610a49579060a4359060c43590565b6060906003190112610a49576001600160a01b03906004358281168103610a4957916024359081168103610a49579060443590565b6009811015612024576000526007602052604060002090565b634e487b7160e01b600052602160045260246000fd5b90600182811c9216801561206a575b602083101461205457565b634e487b7160e01b600052602260045260246000fd5b91607f1691612049565b6001600160401b03811161208757604052565b634e487b7160e01b600052604160045260246000fd5b604081019081106001600160401b0382111761208757604052565b61010081019081106001600160401b0382111761208757604052565b608081019081106001600160401b0382111761208757604052565b90601f801991011681019081106001600160401b0382111761208757604052565b6020808252825181830181905290939260005b82811061214557505060409293506000838284010152601f8019910116010190565b818101860151848201604001528501612123565b6001600160401b03811161208757601f01601f191660200190565b1561217b57565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b156121c657565b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881b9bdd081d985b1a59607a1b6044820152606490fd5b8181029291811591840414171561221257565b634e487b7160e01b600052601160045260246000fd5b8115612232570490565b634e487b7160e01b600052601260045260246000fd5b604d811161221257600a0a90565b9190820391821161221257565b9190820180921161221257565b8181039291600013801582851316918412161761221257565b6014549192916122d2916122c3916122b9916122af906001600160801b038316906121ff565b9060801c90612228565b93601f54906121ff565b6122cc83612248565b90612228565b80831061239a576122e66123229184612256565b9161231d61231761230e601e546123086122ff86612248565b60205490612263565b906121ff565b6122cc84612248565b91612248565b612270565b6509184e72a0009081810291818305149015171561221257670de0b6b3a76400009182810292818405149015171561221257801561223257600160ff1b91808314600019831416612212570590600082121561239357811461221257600003905b80821161238e575090565b905090565b5090612383565b505050600090565b6001600160a01b038116600081815260176020526040812054919493929091908115612430579160409161240c85946123e6612424976123e06138aa565b926126a5565b815190936001600160801b0391602091612402918416906121ff565b9201511690612228565b81811061242857035b95815260186020522054612777565b9091565b505080612415565b50509192505080918190565b51908115158203610a4957565b9190826040910312610a495760206124608361243c565b92015190565b60208082526000916010549161247b8361203a565b92838284015260019081811690816000146124de57506001146124a0575b5050505090565b929350601060005280600020926000935b8585106124ca5750505060409250010138808080612499565b8054858501604001529382019381016124b1565b925050506040935060ff929192191683830152151560051b010138808080612499565b600f546040805163d6d7d52560e01b81529290916001600160a01b031682848061252d60048201612466565b0381600080955af1801561264d578194829161261a575b509284156125bd57831561258357507f9f9192b5edb17356c524e08d9e025c8e2f6307e6ea52fb7968faa3081f51c3c883918260115580a25b42601355565b5162461bcd60e51b81526020600482015260146024820152734d61726b65743a20696e76616c6964207261746560601b6044820152606490fd5b919250506125d060135460125490612263565b42116125e057506011549061257d565b5162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881c985d19481d1bdbc81bdb1960621b6044820152606490fd5b905061263d919450833d8511612646575b61263581836120ef565b810190612449565b93909338612544565b503d61262b565b508251903d90823e3d90fd5b1561266057565b60405162461bcd60e51b815260206004820152601e60248201527f4d61726b65743a2065786368616e676552617465206e6f742076616c696400006044820152606490fd5b6126b0821515612659565b60018060a01b036020816009541691600c5490600094168452601882526064604085205491604051948593849263442c159960e01b8452600484015260248301528660448301525afa91821561276b578092612733575b50509061272b61272261273093620186a060215404906121ff565b601e54906121ff565b612228565b90565b9091506020823d8211612763575b8161274e602093836120ef565b8101031261030e57505161272b612722612707565b3d9150612741565b604051903d90823e3d90fd5b612782821515612659565b602060018060a01b0360095416916064600c54604051948593849263442c159960e01b845260048401526024830152600060448301525afa908115612822576000916127ef575b509061272b6127db92602154906121ff565b620186a06127eb601e54836121ff565b0491565b906020823d821161281a575b81612808602093836120ef565b8101031261030e57505161272b6127c9565b3d91506127fb565b6040513d6000823e3d90fd5b6001600160a01b0316600081815260186020526040812054909261285191612777565b91835260176020526040832054801561295a57811561295a5781811061295a57828110156129505760145461289a918391610f96916122af906001600160801b038316906121ff565b90620186a0928383029280840485149015171561293c576128bf92916122cc91612256565b91601b5491601c54936128d28585612270565b80820291848212600160ff1b82141661293c5781830514901517156129285705818482019485129112908015821691151617612914575080821261238e575090565b634e487b7160e01b81526011600452602490fd5b634e487b7160e01b83526011600452602483fd5b634e487b7160e01b85526011600452602485fd5b50505050601b5490565b50505090565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03161480612a61575b156129bb577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f000000000000000000000000000000000000000000000000000000000000000082527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a0815260c081018181106001600160401b038211176120875760405251902090565b507f00000000000000000000000000000000000000000000000000000000000000004614612992565b15612a9157565b60405162461bcd60e51b815260206004820152601660248201527545524332303a2062616c616e636520746f6f206c6f7760501b6044820152606490fd5b15612ad657565b60405162461bcd60e51b815260206004820152601660248201527545524332303a206e6f207a65726f206164647265737360501b6044820152606490fd5b51906001600160a01b0382168203610a4957565b519060ff82168203610a4957565b60058110156120245780612b475750565b60018103612b8f5760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b6044820152606490fd5b60028103612bdc5760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606490fd5b600314612be557565b60405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608490fd5b9291906fa2a8918ca85bafe22016d0b997e4df60600160ff1b038311612cae5791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa15612ca15781516001600160a01b03811615612c9b579190565b50600190565b50604051903d90823e3d90fd5b50505050600090600390565b60001981146122125760010190565b7fe50de2333c10a9502fcb1d8ae13a51bbf423153dfc63c2b8997665b32154afc360018060a01b038092169160009083825260036020526040822094169384825260205284604082205580a4565b909160207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259160018060a01b03809416938460005260028352604060002095169485600052825280604060002055604051908152a3565b15612d7557565b60405162461bcd60e51b815260206004820152600e60248201526d13585c9ad95d0e881c185d5cd95960921b6044820152606490fd5b15612db257565b606460405162461bcd60e51b815260206004820152602060248201527f4d61726b65743a2063616e6e6f742065786563757465206f6e20697473656c666044820152fd5b15612dfd57565b60405162461bcd60e51b815260206004820152602160248201527f42696742616e673a20616c6c6f77616e63655368617265206e6f742076616c696044820152601960fa1b6064820152608490fd5b91929060009060295485106132af5784156132a757612e6a85613a79565b9060115495612eb4612ea3612e7f8584612263565b600d546001600160a01b039a919060ff90612e9b908d166132f3565b16918a6134b3565b612eae811515612df6565b87613536565b8682169182855260209260238452604094858720612ed3828254612263565b9055612edd613390565b98612ee88286612263565b88878951612ef58161209d565b82815201528a516001600160801b039b8c91821661323b5781612f20849e8f955b1682845116613891565b168152612f35828a8301941683855116613891565b8281169093525160809290921b6001600160801b03191691169081176014556016548015918215613230575b5050156131ec57907f3a5151e57d3bc9798e7853034ac52293d1a0e12a2b44725e75b03b21f86477a6878c8795941692838b52601789528c612fa7838d20918254612263565b905581519081528c89820152a487600d5416803b1561316d5784516340c10f1960e01b8152306004820152602481018490529086908290604490829084905af180156131e2576131cf575b5087600d541690600e54918960095416865163095ea7b360e01b91828252600482015288602482015286816044818c875af180156131c5579287928a88938f96613182575b506009548b51928352959095166001600160a01b0316600482015260248101929092529092839190829081604481015b03925af1801561317857908694939291613134575b506130a79450868a6009541692855196879586948593634d4d7cbd60e11b8552309060048601613a4a565b03925af1908115613128578391613109575b509394600a5416803b156105dd57908280926004835180958193632ebe913360e21b83525af190811561310057506130ef575050565b6130f98291612074565b61030e5750565b513d84823e3d90fd5b6131209150823d8411610d9257610d8281836120ef565b9050386130b9565b505051903d90823e3d90fd5b80929450859193953d8311613171575b61314e81836120ef565b8101031261316d57916130a79391613166869461243c565b503861307c565b8580fd5b503d613144565b86513d89823e3d90fd5b9350509290935081813d83116131be575b61319d81836120ef565b81010312611384576130679287928a8e6131b78a9561243c565b5095613037565b503d613193565b88513d8b823e3d90fd5b6131db90959195612074565b9338612ff2565b85513d88823e3d90fd5b865162461bcd60e51b815260048101879052601b60248201527f42696742616e673a20626f72726f7720636170207265616368656400000000006044820152606490fd5b111590503880612f61565b9091808983018481511661324f90836121ff565b8585511661325c91612228565b9e8f8186511661326b916121ff565b91511661327791612228565b1061328b575b9082612f20818f9594612f16565b919b908c612f2061329c8294612cba565b9e505050909161327d565b509250829150565b606460405162461bcd60e51b815260206004820152602060248201527f42696742616e673a20626f72726f7720616d6f756e7420746f6f20736d616c6c6044820152fd5b60405163313ce56760e01b6020820190815260048252906133138161209d565b5160009283928392916001600160a01b03165afa903d15613388573d9161333983612159565b9261334760405194856120ef565b83523d82602085013e5b8061337d575b156133765760208280518101031261030e575060206127309101612b28565b5050601290565b506020825114613357565b606091613351565b6040519061339d8261209d565b6014546001600160801b038116835260801c6020830152565b919060018060a01b038060009416845260206017815260408520549081156134a95760188152604086205480156134a257816133f0613390565b9460095416916064600c54604051948593849263442c159960e01b8452600484015260248301528b60448301525afa96871561276b57809761346c575b505061240261344c612722613467969798620186a060215404906121ff565b9561346260018060801b039485875116906121ff565b6121ff565b111590565b9096508187813d831161349b575b61348481836120ef565b8101031261030e575094519461240261344c61342d565b503d61347a565b5050505050565b5060019450505050565b612317906134d38561273096956134cd6122cc96856126a5565b906134f3565b6001600160a01b03909116600090815260186020526040902054906121ff565b918215801561352e575b61239a57600181018091116122125761351c9261230861272b92612248565b6005810180911161221257600a900490565b5081156134fd565b6001600160a01b031633810361354a575050565b60008181526020906003825260409182822033835281528483832054106135b3578382526003815282822033835281528282205460010161358c575050505050565b6135a793825260038152828220903383525220918254612256565b905538808080806134a2565b60649083519062461bcd60e51b82526004820152601460248201527313585c9ad95d0e881b9bdd08185c1c1c9bdd995960621b6044820152fd5b6001600160801b03918216908216039190821161221257565b919091600060206040516136198161209d565b82815201526020810180516001600160801b0390811661365d5761365681865b81613649818a16828951166135ed565b16865216828451166135ed565b1690529190565b61367761366d82855116876121ff565b8284511690612228565b948061369361368984865116896121ff565b8487511690612228565b106136a3575b8161365691613639565b94816136b161365692612cba565b96915050613699565b60ff6025541661382b576014546001600160801b031690811561382457600a54604051631848f2bf60e31b8152602093916001600160a01b03919085908290600490829086165afa80156128225785916000916137eb575b50600460405180948193631a674cc560e11b8352165afa938415612822576000946137bc575b50506137549192670de0b6b3a7640000928391602854906121ff565b0490818110156137b35761376b6029548092612256565b83810290808204851490151715612212576122cc61378c926137a794612256565b602654926137a1602754926134628487612256565b04612263565b9080821161238e575090565b50505060265490565b81813d83116137e4575b6137d081836120ef565b810103126113885751925061375438613738565b503d6137c6565b909181813d831161381d575b61380181836120ef565b81010312610330575190828216820361030e5750849038613712565b503d6137f7565b6027549150565b600a5460405163e6abad4960e01b815290602090829060049082906001600160a01b03165afa90811561282257600091613863575090565b906020823d8211613889575b8161387c602093836120ef565b8101031261030e57505190565b3d915061386f565b6001600160801b03918216908216019190821161221257565b600060206040516138ba8161209d565b82815201526001600160401b03906138d98260245460401c1642612256565b9182156139305761392b61346291670de0b6b3a76400006139206138fb613390565b9660018060801b03958694858a5116906301e133806139186136ba565b0416906121ff565b041682855116613891565b168252565b509050612730613390565b6040516139478161209d565b6024546001600160401b03908181168352818160401c1661396f602085019180835242612256565b9283156134a257602094816301e133806139876136ba565b041681528142168352613998613390565b670de0b6b3a76400006139bd60018060801b03976134628985511687875116906121ff565b04956139ce81881682845116613891565b1680825296015160801b6001600160801b031990811690961760145551915192909416931692831760409190911b67ffffffffffffffff60401b16176024557f7484db546dcd57af0104c73c8a6968dfbaf5767f047cee0dadd0499ad7df81a0600080a3565b9190826040910312610a49576020825192015190565b9081526001600160a01b0391821660208201529116604082015260608101919091526000608082015260a00190565b8015613be657602a546040805163d6d7d52560e01b81526001600160a01b03909216929190808280613aad60048201612466565b0381600080985af1918215613bdc5784908593613bba575b5015613b6b5750670e27c49886e60000811015613b6257670d99a8cec7e20000811115613b5957602d5490670d99a8cec7e1ffff198101908111613b455790668e1bc9bf040000613b1f613b2693612308602c5485612256565b0490612256565b9081613b3157505090565b620186a0925090613b41916121ff565b0490565b634e487b7160e01b84526011600452602484fd5b505050602d5490565b505050602c5490565b5162461bcd60e51b8152602060048201526024808201527f42696742616e673a202061737365742773206f7261636c652063616c6c2066616044820152631a5b195960e21b6064820152608490fd5b905081613bd49293503d84116126465761263581836120ef565b919038613ac5565b81513d86823e3d90fd5b50600090565b6001600160a01b0390811660008181526017602052604081205491939092828214613c6f579060ff613c24613c2d93600d54166132f3565b169283916134f3565b8015613c685782916122cc612317613c53938760409752602360205286862054906121ff565b9281526023602052205480821161238e575090565b5050905090565b50505060409150602360205220549056feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae672a26469706673582212208082314b105886dbefd0bc64b2f053ab5ae9e4c72ac80611d7162104e8ae4d2064736f6c63430008120033", + "bytecode": "0x61014080604052346200018a5762000017816200018f565b600f81526001602082016e546170696f63612042696742616e6760881b8152602060405162000046816200018f565b8381520192603160f81b845251902091208160e052610100918183524660a0526040519160208301907f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f92838352604085015260608401524660808401523060a084015260a0835260c083019280841060018060401b03851117620001745760408490525190206080523060c052610120908152600580546001600160a01b0319163390811790915560007f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a362013880601b5562015f90601c55612710601d55612ee06020556103e8602e55613dbb9283620001ac843960805183612a9e015260a05183612b69015260c05183612a68015260e05183612aed01525182612b1301525181612aca0152f35b634e487b7160e01b600052604160045260246000fd5b600080fd5b604081019081106001600160401b03821117620001745760405256fe60806040908082526004918236101561001757600080fd5b60009260e08435811c938462a02a2014611ffb5750836302ce728f14611fd2578363078dfbe714611ecd578363095ea7b314611ea35783630c4e84f014611d8c5783630f8b29ea14611d6d57836318160ddd14611d525783631c9e379b14611d1a5783631d4d3a5d14611cf15783631da8bf1014611c375783631fb8f81a14611c1857836323b872dd14611a90578363331960ff14611a7157836334ce998a14611a4857836334d441d014611a295783633644e51514611a0c57836337b6b7b9146119ed57836338d52e0f146119c45783633ba0b9a9146119a55783633f741adb1461197c57836340626d8b1461195d57836344de240a1461193e578363473e3ce71461191f57836348e4163e146118e75783634e71e0c8146118325783635224372c1461177b578363529898f21461175d578363542afda31461173e578363579354621461171f5783636b19ad16146117005783636c3d8b8f146116d757836370a082311461169f578363727785471461166757836374645ff3146115d357836374c9e481146115b4578363790c8467146115955783637dc0d1d01461156c5783637ecebe00146115355783637fa0b84e146115045783638285ef40146114d357836387b279371461149b5783638c5d0ed31461147c5783638da5cb5b14611453578363910dd7c8146111da578363932bc4f8146110fd57836399a97028146110d45783639e15e89f14611099578363a9059cbb14610fbe578363b0e21e8a14610f9f578363b27c0e7414610f6e578363b7113f1914610f4a578363bb4cfe3b14610f2b578363bde39c5d14610f0c578363c1ad5c8d14610ee8578363cd0211eb14610b46578363ce8849ed14610b1d578363d3fb2a38146106a8578363d505accf1461052557508263d8dfeb45146104fc578263da863f0e146104d3578263dd62ed3e14610485578263de4065771461045c578263e0996cb61461043d578263e30c397814610414578263ea64dd56146103f5578263eec0f42e146103d6578263ef2b234a1461036057508163f791395d1461033d575063f8ba4cff1461031f57600080fd5b3461033a578060031936011261033a57610337613a30565b80f35b80fd5b90503461035c578160031936011261035c576020906028549051908152f35b5080fd5b83903461035c57602036600319011261035c57356001600160a01b03818116918290036103d25761039681600554163314612279565b816021549182167ffb4fd7114609dd603b57adbc2082205bfbbcabf9265c4b437b472f5c592b8cd78580a36001600160a01b0319161760215580f35b8280fd5b83823461035c578160031936011261035c57602090600c549051908152f35b83823461035c578160031936011261035c57602090601f549051908152f35b83823461035c578160031936011261035c5760065490516001600160a01b039091168152602090f35b83823461035c578160031936011261035c57602090601d549051908152f35b83823461035c578160031936011261035c5760095490516001600160a01b039091168152602090f35b83823461035c578060031936011261035c576020916104a2612042565b826104ab612058565b6001600160a01b03928316845260028652922091166000908152908352819020549051908152f35b83823461035c578160031936011261035c5760215490516001600160a01b039091168152602090f35b83823461035c578160031936011261035c57600b5490516001600160a01b039091168152602090f35b908491346103d2576105363661208c565b918394989597934211610665579161060891610610938c8b8b60018060a01b0398898d169a8b93846000528d602052856000209081549161057683612dbf565b90558c87519560208701977f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e266895260008a890152606088015216608086015260a085015260c08401528183015281526105ce816121bd565b5190206105d9612a65565b915190602082019261190160f01b84526022830152604282015260428152610600816121d9565b519020612d3a565b919091612c3b565b16036106225750610337939450612e1c565b606490602087519162461bcd60e51b8352820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152fd5b8a5162461bcd60e51b8152602081880152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b848383346103d2576101603660031901126103d2576001600160a01b03813581811690819003610b19576024916001600160401b038335818111610b155736602382011215610b155780860135918211610b155736858383010111610b155760443593838516809503610b105761072484600554163314612279565b80610ad2575b508482610978575b50505081610938575b505060643580610920575b5060843580610908575b5060a435806108f1575b5060c435806108cd575b5060e435806108a9575b506101043580610878575b506101243580610807575b50610144359283610793578480f35b601e5484106107aa57505050601f55818080808480f35b608492916020603292519362461bcd60e51b85528401528201527f4d61726b65743a206c69717569646174696f6e436f6c6c61746572616c697a616044820152711d1a5bdb94985d19481d1bdbc81cdb585b1b60721b6064820152fd5b610816620186a08211156122c4565b601f54811161082857601e5584610784565b506025906020608494519362461bcd60e51b85528401528201527f4d61726b65743a20636f6c6c61746572616c697a6174696f6e5261746520746f6044820152646f2062696760d81b6064820152fd5b806016547fae6e0ab3b95f0a53ff9660a390ccedcbbf1f2355dce974a9841af106fddcfaba8780a360165584610779565b6108b7620186a082106122c4565b6108c4601b5482116122c4565b601c558461076e565b6108db620186a082106122c4565b6108e8601c5482106122c4565b601b5584610764565b6108ff620186a082106122c4565b601d558461075a565b610917620186a08211156122c4565b601a5584610750565b61092f620186a08211156122c4565b60195584610746565b816008549182167f5a62d22209e370e38eea92cfddcd228e656e6ec139243392a760a7769f5877fd8880a36001600160a01b03191617600855848061073b565b829161098560105461213f565b601f8111610a73575b508990601f84116001146109f3578a936109e6575b5050508160011b916000199060031b1c1916176010555b7fa6f004921c944d4b8bf6e38462b00f36a58d62495d56b51f571ab78f732c98158680a1868084610732565b01013590508489806109a3565b60108b52601f1984169450600080516020613d6683398151915292509087908b60205b878210610a545750508460019610610a38575b50505050811b016010556109ba565b60001960f88660031b161c199201013516905588808681610a29565b8285019093013585556001949094019389929182019190810190610a16565b60108b529092509050600080516020613d66833981519152601f840160051c810160208510610acb575b91849391601f8994920160051c01905b818110610aba575061098e565b8b8155859450889350600101610aad565b5080610a9d565b600f80546001600160a01b0319169190911790557f0b2d6eb667d0522c3eb86e4288afecae6c11591ffd1345d4d12407e0598bca9b8880a18861072a565b600080fd5b8780fd5b8480fd5b84833461035c578160031936011261035c5760085490516001600160a01b039091168152602090f35b5083823461035c57608036600319011261035c57610b62612042565b91610b6b612058565b93610b7461207d565b506064356001835260209560078752610b9360ff868620541615612e73565b6001600160a01b039181831691610bac30841415612eb0565b610bb4612606565b5050610bbe613a30565b610c03610bf2610bd584610bd0613485565b6136fb565b90506011549060ff610bea89600d54166133e8565b1691856135a8565b610bfd811515612efb565b8961362b565b8286526017895286862054808311610ee0575b508115610ea55781610c2791613cb1565b9681881015610e6a5782865260248952868620610c4589825461235b565b9055610c5382610bd0613485565b9890899060018060801b03815116908c60018060801b031991015160801b161760145584885260178b52888820610c8b85825461235b565b90558989888860095416868c600e54610cb98651978896879586946311a5cc7760e31b865230928601613b3f565b03925af18015610e60578c9388938c8e99989794610cee94610e32575b5050610ce2878a61235b565b80610e0f575b5061235b565b80610d74575b50895193845216917fc8e512d8f188ca059984b5853d2bf653da902696b8512785b182b2c813789a6e9190a4600a541690813b156103d2578351632ebe913360e21b81529183918391829084905af18015610d6a57610d56575b505051908152f35b610d608291612179565b61033a5780610d4e565b83513d84823e3d90fd5b925092939450600d541690813b15610b15578851632770a7eb60e21b815230888201908152602081019290925291889183919082908490829060400103925af18015610e0557918a918a959493610dce575b908691610cf4565b7fc8e512d8f188ca059984b5853d2bf653da902696b8512785b182b2c813789a6e929198610dfc8892612179565b98919250610dc6565b88513d89823e3d90fd5b610e2c9150610e25620186a091601a5490612304565b048961235b565b8f610ce8565b81610e5192903d10610e59575b610e4981836121f4565b810190613b29565b8e9150610cd6565b503d610e3f565b8a513d8b823e3d90fd5b865162461bcd60e51b81528086018a9052601560248201527442423a2072657061796d656e7420746f6f206c6f7760581b6044820152606490fd5b865162461bcd60e51b81528086018a9052601560248201527453474c3a206e6f7468696e6720746f20726570617960581b6044820152606490fd5b915089610c16565b84833461035c578160031936011261035c57602090610f056137af565b9051908152f35b84833461035c578160031936011261035c576020906029549051908152f35b84833461035c578160031936011261035c57602090601e549051908152f35b84833461035c578160031936011261035c5760209060ff6026541690519015158152f35b82853461033a578060031936011261033a57506025548151906001600160401b03908181168352831c166020820152f35b84833461035c578160031936011261035c57602090601a549051908152f35b84833461035c578060031936011261035c57602091610fdb612042565b82602435928315801590611087575b61101a575b50519182526001600160a01b0316903390600080516020613d46833981519152908590a35160018152f35b338152600186528181205461103185821015612b8f565b6001600160a01b03841690853383900361104e575b505050610fef565b6110629161105d841515612bd4565b61235b565b338352600188528383205581522061107b838254612368565b90558285808085611046565b50336001600160a01b03841614610fea565b84833461035c578060031936011261035c576060906110c26110b9612042565b602435906124a7565b91929081519384526020840152820152f35b84833461035c578060031936011261035c57602090610f056110f4612042565b60243590612933565b84833461035c578160031936011261035c5780519082602c5461111f8161213f565b808552906001908181169081156111b25750600114611159575b50505061114b826111559403836121f4565b5191829182612215565b0390f35b602c8352602095507f7416c943b4a09859521022fd2e90eac0dd9026dad28fa317782a135f28a860915b82841061119f57505050826111559461114b9282010194611139565b8054868501880152928601928101611183565b611155975061114b9450602092508693915060ff191682840152151560051b82010194611139565b9250903461144f578060031936011261144f578135926001600160401b038411610b195736602385011215610b195783830135926112178461225e565b94611224845196876121f4565b848652866020918288019636602482840101116103d2578060248593018937880101526024359361ffff8516809503610b155761010095868880518101031261144b5761127090612541565b9361127c828901612c19565b9061128960608a01612c19565b9860808101519860a0820151926112a260c08401612c2d565b91818401519301519360018060a01b03808097169d169a81421161140857928d8f819897948f948f8f968f918f959a8f8c819561137e9f9c6106089f506000146113e1577f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e2669a5b82528952209384549461131b86612dbf565b905580519788019889528701528d6060870152608086015260a085015260c084015281830152815261134c816121bd565b519020611357612a65565b908951908b82019261190160f01b84526022830152604282015260428152610600816121d9565b16036113a0575050506000146113975761033792612e1c565b61033792612dce565b5162461bcd60e51b815291820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e61747572650000604482015260649150fd5b7f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d69a611309565b875162461bcd60e51b8152808b018a9052601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b8880fd5b8380fd5b84833461035c578160031936011261035c5760055490516001600160a01b039091168152602090f35b84833461035c578160031936011261035c57602090601b549051908152f35b84833461035c57602036600319011261035c5760209181906001600160a01b036114c3612042565b1681526024845220549051908152f35b82853461033a578060031936011261033a575060145481516001600160801b038216815260809190911c6020820152f35b84833461035c578060031936011261035c5760209061152e611524612042565b6024359033612dce565b5160018152f35b848383346103d25760203660031901126103d25760209282916001600160a01b0361155e612042565b168252845220549051908152f35b84833461035c578160031936011261035c57600f5490516001600160a01b039091168152602090f35b84833461035c578160031936011261035c576020906030549051908152f35b84833461035c578160031936011261035c57602090602e549051908152f35b84833461035c578160031936011261035c57805190826010546115f58161213f565b808552906001908181169081156111b257506001146116205750505061114b826111559403836121f4565b6010835260209550600080516020613d668339815191525b82841061165457505050826111559461114b9282010194611139565b8054868501880152928601928101611638565b848383346103d25760203660031901126103d2573591600983101561033a575060ff611694602093612110565b541690519015158152f35b84833461035c57602036600319011261035c5760209181906001600160a01b036116c7612042565b1681526001845220549051908152f35b84833461035c578160031936011261035c57600a5490516001600160a01b039091168152602090f35b84833461035c578160031936011261035c576020906027549051908152f35b84833461035c578160031936011261035c57602090601c549051908152f35b84833461035c578160031936011261035c57602090602d549051908152f35b84833461035c578160031936011261035c5760209081549051908152f35b848383346103d2576117e9906117dd60ff84956117b061179a366120db565b9491989093808052600760205220541615612e73565b6117c56001600160a01b038216301415612eb0565b6117cd612606565b50506117d7613a30565b85612f47565b929093601154906134ab565b156117fb575082519182526020820152f35b606490602085519162461bcd60e51b8352820152601160248201527013585c9ad95d0e881a5b9cdbdb1d995b9d607a1b6044820152fd5b509150346103d257826003193601126103d2576006546001600160a01b039290918383169190338390036118a4575050806005549384167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08680a36001600160a01b0319928316176005551660065580f35b906020606492519162461bcd60e51b8352820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b84833461035c57602036600319011261035c5760209181906001600160a01b0361190f612042565b1681526017845220549051908152f35b84833461035c578160031936011261035c576020906015549051908152f35b84833461035c578160031936011261035c57602090600e549051908152f35b84833461035c578160031936011261035c576020906016549051908152f35b5090833461033a57606036600319011261033a5750610f0560209260443590602435903561238e565b84833461035c578160031936011261035c576020906011549051908152f35b84833461035c578160031936011261035c57600d5490516001600160a01b039091168152602090f35b84833461035c578160031936011261035c576020906012549051908152f35b84833461035c578160031936011261035c57602090610f05612a65565b84833461035c578160031936011261035c576020906019549051908152f35b84833461035c578160031936011261035c5760145490516001600160801b039091168152602090f35b84833461035c578160031936011261035c576020906013549051908152f35b5090833461033a57611aa1366120db565b919282611adb575b508351918252602094506001600160a01b03908116921690600080516020613d46833981519152908590a35160018152f35b6001600160a01b038481168083526001602090815287842054919892909190611b0687831015612b8f565b851692838a03611b1a575b50505050611aa9565b898552600283528885203386528352888520549060018201611b84575b5050928260209960018a94611b638a8e9961105d600080516020613d468339815191529c9a1515612bd4565b9285525283832055815220611b79858254612368565b905591878080611b11565b878210611bda57509260209960018a94611b638a8e9996611bb582600080516020613d468339815191529d9b61235b565b86895260028552898920338a5285528989205596995050509450509981949650611b37565b895162461bcd60e51b8152908101849052601860248201527745524332303a20616c6c6f77616e636520746f6f206c6f7760401b6044820152606490fd5b84833461035c578160031936011261035c57602090602a549051908152f35b908491346103d257611c483661208c565b93979496909280421161066557938693611cdf938c8c89610608968e9a8e60018060a01b03809c169c8d948587526020528c87872092835493611c8a85612dbf565b905588519660208801987f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d68a528a890152606088015216608086015260a085015260c08401528183015281526105ce816121bd565b16036106225750610337939450612dce565b84833461035c578160031936011261035c57602b5490516001600160a01b039091168152602090f35b84833461035c57602036600319011261035c5760209181906001600160a01b03611d42612042565b1681526018845220549051908152f35b84833461035c578160031936011261035c5751908152602090f35b84833461035c578160031936011261035c57602090602f549051908152f35b848383346103d257816003193601126103d257803590600982101561144f57611db361206e565b6008549093906001600160a01b03163303611e695760ff611dd384612110565b54161515931515938414611e31575050808260ff611df3611e2194612110565b54161515827feeec81de25875ce1725479bb76f720a8defdb43dea041919ae37bb4aae9847c08780a4612110565b9060ff8019835416911617905580f35b906020606492519162461bcd60e51b835282015260126024820152714d61726b65743a2073616d6520737461746560701b6044820152fd5b906020606492519162461bcd60e51b8352820152601460248201527313585c9ad95d0e881d5b985d5d1a1bdc9a5e995960621b6044820152fd5b84833461035c578060031936011261035c5760209061152e611ec3612042565b6024359033612e1c565b509150346103d25760603660031901126103d257611ee9612042565b91611ef261206e565b91611efb61207d565b9260018060a01b03948591611f1583600554163314612279565b15611fb9571692831590811591611fb1575b5015611f76575050806005549283167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08580a36001600160a01b03199182161760055560068054909116905580f35b906020606492519162461bcd60e51b835282015260156024820152744f776e61626c653a207a65726f206164647265737360581b6044820152fd5b905038611f27565b93505050501660018060a01b0319600654161760065580f35b82853461033a578060031936011261033a5750611fed612606565b825191151582526020820152f35b93505050346103d257806003193601126103d25760209261201a612042565b612022612058565b6001600160a01b0391821683526003865283832091168252845220548152f35b600435906001600160a01b0382168203610b1057565b602435906001600160a01b0382168203610b1057565b602435908115158203610b1057565b604435908115158203610b1057565b60e0906003190112610b10576001600160a01b03906004358281168103610b1057916024359081168103610b105790604435906064359060843560ff81168103610b10579060a4359060c43590565b6060906003190112610b10576001600160a01b03906004358281168103610b1057916024359081168103610b10579060443590565b6009811015612129576000526007602052604060002090565b634e487b7160e01b600052602160045260246000fd5b90600182811c9216801561216f575b602083101461215957565b634e487b7160e01b600052602260045260246000fd5b91607f169161214e565b6001600160401b03811161218c57604052565b634e487b7160e01b600052604160045260246000fd5b604081019081106001600160401b0382111761218c57604052565b61010081019081106001600160401b0382111761218c57604052565b608081019081106001600160401b0382111761218c57604052565b90601f801991011681019081106001600160401b0382111761218c57604052565b6020808252825181830181905290939260005b82811061224a57505060409293506000838284010152601f8019910116010190565b818101860151848201604001528501612228565b6001600160401b03811161218c57601f01601f191660200190565b1561228057565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b156122cb57565b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881b9bdd081d985b1a59607a1b6044820152606490fd5b8181029291811591840414171561231757565b634e487b7160e01b600052601160045260246000fd5b8115612337570490565b634e487b7160e01b600052601260045260246000fd5b604d811161231757600a0a90565b9190820391821161231757565b9190820180921161231757565b8181039291600013801582851316918412161761231757565b6014549192916123d7916123c8916123be916123b4906001600160801b03831690612304565b9060801c9061232d565b93601f5490612304565b6123d18361234d565b9061232d565b80831061249f576123eb612427918461235b565b9161242261241c612413601e5461240d6124048661234d565b60205490612368565b90612304565b6123d18461234d565b9161234d565b612375565b6509184e72a0009081810291818305149015171561231757670de0b6b3a76400009182810292818405149015171561231757801561233757600160ff1b91808314600019831416612317570590600082121561249857811461231757600003905b808211612493575090565b905090565b5090612488565b505050600090565b6001600160a01b038116600081815260176020526040812054919493929091908115612535579160409161251185946124eb612529976124e561399f565b926127aa565b815190936001600160801b039160209161250791841690612304565b920151169061232d565b81811061252d57035b9581526018602052205461287c565b9091565b50508061251a565b50509192505080918190565b51908115158203610b1057565b9190826040910312610b1057602061256583612541565b92015190565b6020808252600091601054916125808361213f565b92838284015260019081811690816000146125e357506001146125a5575b5050505090565b929350601060005280600020926000935b8585106125cf575050506040925001013880808061259e565b8054858501604001529382019381016125b6565b925050506040935060ff929192191683830152151560051b01013880808061259e565b600f546040805163d6d7d52560e01b81529290916001600160a01b03168284806126326004820161256b565b0381600080955af18015612752578194829161271f575b509284156126c257831561268857507f9f9192b5edb17356c524e08d9e025c8e2f6307e6ea52fb7968faa3081f51c3c883918260115580a25b42601355565b5162461bcd60e51b81526020600482015260146024820152734d61726b65743a20696e76616c6964207261746560601b6044820152606490fd5b919250506126d560135460125490612368565b42116126e5575060115490612682565b5162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881c985d19481d1bdbc81bdb1960621b6044820152606490fd5b9050612742919450833d851161274b575b61273a81836121f4565b81019061254e565b93909338612649565b503d612730565b508251903d90823e3d90fd5b1561276557565b60405162461bcd60e51b815260206004820152601e60248201527f4d61726b65743a2065786368616e676552617465206e6f742076616c696400006044820152606490fd5b6127b582151561275e565b60018060a01b036020816009541691600c5490600094168452601882526064604085205491604051948593849263442c159960e01b8452600484015260248301528660448301525afa918215612870578092612838575b50509061283061282761283593620186a06022540490612304565b601e5490612304565b61232d565b90565b9091506020823d8211612868575b81612853602093836121f4565b8101031261033a57505161283061282761280c565b3d9150612846565b604051903d90823e3d90fd5b61288782151561275e565b602060018060a01b0360095416916064600c54604051948593849263442c159960e01b845260048401526024830152600060448301525afa908115612927576000916128f4575b50906128306128e09260225490612304565b620186a06128f0601e5483612304565b0491565b906020823d821161291f575b8161290d602093836121f4565b8101031261033a5750516128306128ce565b3d9150612900565b6040513d6000823e3d90fd5b6001600160a01b031660008181526018602052604081205490926129569161287c565b918352601760205260408320548015612a5f578115612a5f57818110612a5f5782811015612a555760145461299f91839161105d916123b4906001600160801b03831690612304565b90620186a09283830292808404851490151715612a41576129c492916123d19161235b565b91601b5491601c54936129d78585612375565b80820291848212600160ff1b821416612a41578183051490151715612a2d5705818482019485129112908015821691151617612a195750808212612493575090565b634e487b7160e01b81526011600452602490fd5b634e487b7160e01b83526011600452602483fd5b634e487b7160e01b85526011600452602485fd5b50505050601b5490565b50505090565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03161480612b66575b15612ac0577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f000000000000000000000000000000000000000000000000000000000000000082527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a0815260c081018181106001600160401b0382111761218c5760405251902090565b507f00000000000000000000000000000000000000000000000000000000000000004614612a97565b15612b9657565b60405162461bcd60e51b815260206004820152601660248201527545524332303a2062616c616e636520746f6f206c6f7760501b6044820152606490fd5b15612bdb57565b60405162461bcd60e51b815260206004820152601660248201527545524332303a206e6f207a65726f206164647265737360501b6044820152606490fd5b51906001600160a01b0382168203610b1057565b519060ff82168203610b1057565b60058110156121295780612c4c5750565b60018103612c945760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b6044820152606490fd5b60028103612ce15760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606490fd5b600314612cea57565b60405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608490fd5b9291906fa2a8918ca85bafe22016d0b997e4df60600160ff1b038311612db35791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa15612da65781516001600160a01b03811615612da0579190565b50600190565b50604051903d90823e3d90fd5b50505050600090600390565b60001981146123175760010190565b7fe50de2333c10a9502fcb1d8ae13a51bbf423153dfc63c2b8997665b32154afc360018060a01b038092169160009083825260036020526040822094169384825260205284604082205580a4565b909160207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259160018060a01b03809416938460005260028352604060002095169485600052825280604060002055604051908152a3565b15612e7a57565b60405162461bcd60e51b815260206004820152600e60248201526d13585c9ad95d0e881c185d5cd95960921b6044820152606490fd5b15612eb757565b606460405162461bcd60e51b815260206004820152602060248201527f4d61726b65743a2063616e6e6f742065786563757465206f6e20697473656c666044820152fd5b15612f0257565b60405162461bcd60e51b815260206004820152601c60248201527f42423a20616c6c6f77616e63655368617265206e6f742076616c6964000000006044820152606490fd5b919290600090602a5485106133a357841561339b57612f6585613b6e565b9060115495612faf612f9e612f7a8584612368565b600d546001600160a01b039a919060ff90612f96908d166133e8565b16918a6135a8565b612fa9811515612efb565b8761362b565b8682169182855260209260248452604094858720612fce828254612368565b9055612fd8613485565b98612fe38286612368565b88878951612ff0816121a2565b82815201528a516001600160801b039b8c91821661332f578161301b849e8f955b1682845116613986565b168152613030828a8301941683855116613986565b8281169093525160809290921b6001600160801b03191691169081176014556016548015918215613324575b5050156132e757907f3a5151e57d3bc9798e7853034ac52293d1a0e12a2b44725e75b03b21f86477a6878c8795941692838b52601789528c6130a2838d20918254612368565b905581519081528c89820152a487600d5416803b156132685784516340c10f1960e01b8152306004820152602481018490529086908290604490829084905af180156132dd576132ca575b5087600d541690600e54918960095416865163095ea7b360e01b91828252600482015288602482015286816044818c875af180156132c0579287928a88938f9661327d575b506009548b51928352959095166001600160a01b0316600482015260248101929092529092839190829081604481015b03925af180156132735790869493929161322f575b506131a29450868a6009541692855196879586948593634d4d7cbd60e11b8552309060048601613b3f565b03925af1908115613223578391613204575b509394600a5416803b156103d257908280926004835180958193632ebe913360e21b83525af19081156131fb57506131ea575050565b6131f48291612179565b61033a5750565b513d84823e3d90fd5b61321b9150823d8411610e5957610e4981836121f4565b9050386131b4565b505051903d90823e3d90fd5b80929450859193953d831161326c575b61324981836121f4565b8101031261326857916131a293916132618694612541565b5038613177565b8580fd5b503d61323f565b86513d89823e3d90fd5b9350509290935081813d83116132b9575b61329881836121f4565b8101031261144b576131629287928a8e6132b28a95612541565b5095613132565b503d61328e565b88513d8b823e3d90fd5b6132d690959195612179565b93386130ed565b85513d88823e3d90fd5b865162461bcd60e51b815260048101879052601660248201527510908e88189bdc9c9bddc818d85c081c995858da195960521b6044820152606490fd5b11159050388061305c565b909180898301848151166133439083612304565b858551166133509161232d565b9e8f8186511661335f91612304565b91511661336b9161232d565b1061337f575b908261301b818f9594613011565b919b908c61301b6133908294612dbf565b9e5050509091613371565b509250829150565b60405162461bcd60e51b815260206004820152601b60248201527f42423a20626f72726f7720616d6f756e7420746f6f20736d616c6c00000000006044820152606490fd5b60405163313ce56760e01b602082019081526004825290613408816121a2565b5160009283928392916001600160a01b03165afa903d1561347d573d9161342e8361225e565b9261343c60405194856121f4565b83523d82602085013e5b80613472575b1561346b5760208280518101031261033a575060206128359101612c2d565b5050601290565b50602082511461344c565b606091613446565b60405190613492826121a2565b6014546001600160801b038116835260801c6020830152565b919060018060a01b0380600094168452602060178152604085205490811561359e57601881526040862054801561359757816134e5613485565b9460095416916064600c54604051948593849263442c159960e01b8452600484015260248301528b60448301525afa968715612870578097613561575b505061250761354161282761355c969798620186a06022540490612304565b9561355760018060801b03948587511690612304565b612304565b111590565b9096508187813d8311613590575b61357981836121f4565b8101031261033a5750945194612507613541613522565b503d61356f565b5050505050565b5060019450505050565b61241c906135c88561283596956135c26123d196856127aa565b906135e8565b6001600160a01b0390911660009081526018602052604090205490612304565b9182158015613623575b61249f5760018101809111612317576136119261240d6128309261234d565b6005810180911161231757600a900490565b5081156135f2565b6001600160a01b031633810361363f575050565b60008181526020906003825260409182822033835281528483832054106136a85783825260038152828220338352815282822054600101613681575050505050565b61369c9382526003815282822090338352522091825461235b565b90553880808080613597565b60649083519062461bcd60e51b82526004820152601460248201527313585c9ad95d0e881b9bdd08185c1c1c9bdd995960621b6044820152fd5b6001600160801b03918216908216039190821161231757565b9190916000602060405161370e816121a2565b82815201526020810180516001600160801b039081166137525761374b81865b8161373e818a16828951166136e2565b16865216828451166136e2565b1690529190565b61376c6137628285511687612304565b828451169061232d565b948061378861377e8486511689612304565b848751169061232d565b10613798575b8161374b9161372e565b94816137a661374b92612dbf565b9691505061378e565b60ff60265416613920576014546001600160801b031690811561391957600a54604051631848f2bf60e31b8152602093916001600160a01b03919085908290600490829086165afa80156129275785916000916138e0575b50600460405180948193631a674cc560e11b8352165afa938415612927576000946138b1575b50506138499192670de0b6b3a764000092839160295490612304565b0490818110156138a857613860602a54809261235b565b83810290808204851490151715612317576123d16138819261389c9461235b565b6027549261389660285492613557848761235b565b04612368565b90808211612493575090565b50505060275490565b81813d83116138d9575b6138c581836121f4565b8101031261144f575192506138493861382d565b503d6138bb565b909181813d8311613912575b6138f681836121f4565b8101031261035c575190828216820361033a5750849038613807565b503d6138ec565b6028549150565b600a5460405163e6abad4960e01b815290602090829060049082906001600160a01b03165afa90811561292757600091613958575090565b906020823d821161397e575b81613971602093836121f4565b8101031261033a57505190565b3d9150613964565b6001600160801b03918216908216019190821161231757565b600060206040516139af816121a2565b82815201526001600160401b03906139ce8260255460401c164261235b565b918215613a2557613a2061355791670de0b6b3a7640000613a156139f0613485565b9660018060801b03958694858a5116906301e13380613a0d6137af565b041690612304565b041682855116613986565b168252565b509050612835613485565b604051613a3c816121a2565b6025546001600160401b03908181168352818160401c16613a6460208501918083524261235b565b92831561359757602094816301e13380613a7c6137af565b041681528142168352613a8d613485565b670de0b6b3a7640000613ab260018060801b0397613557898551168787511690612304565b0495613ac381881682845116613986565b1680825296015160801b6001600160801b031990811690961760145551915192909416931692831760409190911b67ffffffffffffffff60401b16176025557f7484db546dcd57af0104c73c8a6968dfbaf5767f047cee0dadd0499ad7df81a0600080a3565b9190826040910312610b10576020825192015190565b9081526001600160a01b0391821660208201529116604082015260608101919091526000608082015260a00190565b8015613cab57602b546040805163d6d7d52560e01b815291819083906001600160a01b031681600081613ba36004820161256b565b03925af1918215613ca0576000908193613c7e575b5015613c3b57506030549081811015613c3257602f5480821115613c2857613c09926123d182613bfd613bf1613c0395602e549761235b565b61240d602d548861235b565b9261235b565b9061235b565b9081613c16575050600090565b620186a091613c2491612304565b0490565b50505050602e5490565b505050602d5490565b5162461bcd60e51b815260206004820152601f60248201527f42423a202061737365742773206f7261636c652063616c6c206661696c6564006044820152606490fd5b905081613c989293503d841161274b5761273a81836121f4565b919038613bb8565b50513d6000823e3d90fd5b50600090565b6001600160a01b0390811660008181526017602052604081205491939092828214613d34579060ff613ce9613cf293600d54166133e8565b169283916135e8565b8015613d2d5782916123d161241c613d1893876040975260246020528686205490612304565b92815260246020522054808211612493575090565b5050905090565b50505060409150602460205220549056feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae672a26469706673582212202f0236d01d67334b20bf7b7ff153b636773bb8df63027bc52fc351b6b9d39d0264736f6c63430008120033", + "deployedBytecode": "0x60806040908082526004918236101561001757600080fd5b60009260e08435811c938462a02a2014611ffb5750836302ce728f14611fd2578363078dfbe714611ecd578363095ea7b314611ea35783630c4e84f014611d8c5783630f8b29ea14611d6d57836318160ddd14611d525783631c9e379b14611d1a5783631d4d3a5d14611cf15783631da8bf1014611c375783631fb8f81a14611c1857836323b872dd14611a90578363331960ff14611a7157836334ce998a14611a4857836334d441d014611a295783633644e51514611a0c57836337b6b7b9146119ed57836338d52e0f146119c45783633ba0b9a9146119a55783633f741adb1461197c57836340626d8b1461195d57836344de240a1461193e578363473e3ce71461191f57836348e4163e146118e75783634e71e0c8146118325783635224372c1461177b578363529898f21461175d578363542afda31461173e578363579354621461171f5783636b19ad16146117005783636c3d8b8f146116d757836370a082311461169f578363727785471461166757836374645ff3146115d357836374c9e481146115b4578363790c8467146115955783637dc0d1d01461156c5783637ecebe00146115355783637fa0b84e146115045783638285ef40146114d357836387b279371461149b5783638c5d0ed31461147c5783638da5cb5b14611453578363910dd7c8146111da578363932bc4f8146110fd57836399a97028146110d45783639e15e89f14611099578363a9059cbb14610fbe578363b0e21e8a14610f9f578363b27c0e7414610f6e578363b7113f1914610f4a578363bb4cfe3b14610f2b578363bde39c5d14610f0c578363c1ad5c8d14610ee8578363cd0211eb14610b46578363ce8849ed14610b1d578363d3fb2a38146106a8578363d505accf1461052557508263d8dfeb45146104fc578263da863f0e146104d3578263dd62ed3e14610485578263de4065771461045c578263e0996cb61461043d578263e30c397814610414578263ea64dd56146103f5578263eec0f42e146103d6578263ef2b234a1461036057508163f791395d1461033d575063f8ba4cff1461031f57600080fd5b3461033a578060031936011261033a57610337613a30565b80f35b80fd5b90503461035c578160031936011261035c576020906028549051908152f35b5080fd5b83903461035c57602036600319011261035c57356001600160a01b03818116918290036103d25761039681600554163314612279565b816021549182167ffb4fd7114609dd603b57adbc2082205bfbbcabf9265c4b437b472f5c592b8cd78580a36001600160a01b0319161760215580f35b8280fd5b83823461035c578160031936011261035c57602090600c549051908152f35b83823461035c578160031936011261035c57602090601f549051908152f35b83823461035c578160031936011261035c5760065490516001600160a01b039091168152602090f35b83823461035c578160031936011261035c57602090601d549051908152f35b83823461035c578160031936011261035c5760095490516001600160a01b039091168152602090f35b83823461035c578060031936011261035c576020916104a2612042565b826104ab612058565b6001600160a01b03928316845260028652922091166000908152908352819020549051908152f35b83823461035c578160031936011261035c5760215490516001600160a01b039091168152602090f35b83823461035c578160031936011261035c57600b5490516001600160a01b039091168152602090f35b908491346103d2576105363661208c565b918394989597934211610665579161060891610610938c8b8b60018060a01b0398898d169a8b93846000528d602052856000209081549161057683612dbf565b90558c87519560208701977f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e266895260008a890152606088015216608086015260a085015260c08401528183015281526105ce816121bd565b5190206105d9612a65565b915190602082019261190160f01b84526022830152604282015260428152610600816121d9565b519020612d3a565b919091612c3b565b16036106225750610337939450612e1c565b606490602087519162461bcd60e51b8352820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152fd5b8a5162461bcd60e51b8152602081880152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b848383346103d2576101603660031901126103d2576001600160a01b03813581811690819003610b19576024916001600160401b038335818111610b155736602382011215610b155780860135918211610b155736858383010111610b155760443593838516809503610b105761072484600554163314612279565b80610ad2575b508482610978575b50505081610938575b505060643580610920575b5060843580610908575b5060a435806108f1575b5060c435806108cd575b5060e435806108a9575b506101043580610878575b506101243580610807575b50610144359283610793578480f35b601e5484106107aa57505050601f55818080808480f35b608492916020603292519362461bcd60e51b85528401528201527f4d61726b65743a206c69717569646174696f6e436f6c6c61746572616c697a616044820152711d1a5bdb94985d19481d1bdbc81cdb585b1b60721b6064820152fd5b610816620186a08211156122c4565b601f54811161082857601e5584610784565b506025906020608494519362461bcd60e51b85528401528201527f4d61726b65743a20636f6c6c61746572616c697a6174696f6e5261746520746f6044820152646f2062696760d81b6064820152fd5b806016547fae6e0ab3b95f0a53ff9660a390ccedcbbf1f2355dce974a9841af106fddcfaba8780a360165584610779565b6108b7620186a082106122c4565b6108c4601b5482116122c4565b601c558461076e565b6108db620186a082106122c4565b6108e8601c5482106122c4565b601b5584610764565b6108ff620186a082106122c4565b601d558461075a565b610917620186a08211156122c4565b601a5584610750565b61092f620186a08211156122c4565b60195584610746565b816008549182167f5a62d22209e370e38eea92cfddcd228e656e6ec139243392a760a7769f5877fd8880a36001600160a01b03191617600855848061073b565b829161098560105461213f565b601f8111610a73575b508990601f84116001146109f3578a936109e6575b5050508160011b916000199060031b1c1916176010555b7fa6f004921c944d4b8bf6e38462b00f36a58d62495d56b51f571ab78f732c98158680a1868084610732565b01013590508489806109a3565b60108b52601f1984169450600080516020613d6683398151915292509087908b60205b878210610a545750508460019610610a38575b50505050811b016010556109ba565b60001960f88660031b161c199201013516905588808681610a29565b8285019093013585556001949094019389929182019190810190610a16565b60108b529092509050600080516020613d66833981519152601f840160051c810160208510610acb575b91849391601f8994920160051c01905b818110610aba575061098e565b8b8155859450889350600101610aad565b5080610a9d565b600f80546001600160a01b0319169190911790557f0b2d6eb667d0522c3eb86e4288afecae6c11591ffd1345d4d12407e0598bca9b8880a18861072a565b600080fd5b8780fd5b8480fd5b84833461035c578160031936011261035c5760085490516001600160a01b039091168152602090f35b5083823461035c57608036600319011261035c57610b62612042565b91610b6b612058565b93610b7461207d565b506064356001835260209560078752610b9360ff868620541615612e73565b6001600160a01b039181831691610bac30841415612eb0565b610bb4612606565b5050610bbe613a30565b610c03610bf2610bd584610bd0613485565b6136fb565b90506011549060ff610bea89600d54166133e8565b1691856135a8565b610bfd811515612efb565b8961362b565b8286526017895286862054808311610ee0575b508115610ea55781610c2791613cb1565b9681881015610e6a5782865260248952868620610c4589825461235b565b9055610c5382610bd0613485565b9890899060018060801b03815116908c60018060801b031991015160801b161760145584885260178b52888820610c8b85825461235b565b90558989888860095416868c600e54610cb98651978896879586946311a5cc7760e31b865230928601613b3f565b03925af18015610e60578c9388938c8e99989794610cee94610e32575b5050610ce2878a61235b565b80610e0f575b5061235b565b80610d74575b50895193845216917fc8e512d8f188ca059984b5853d2bf653da902696b8512785b182b2c813789a6e9190a4600a541690813b156103d2578351632ebe913360e21b81529183918391829084905af18015610d6a57610d56575b505051908152f35b610d608291612179565b61033a5780610d4e565b83513d84823e3d90fd5b925092939450600d541690813b15610b15578851632770a7eb60e21b815230888201908152602081019290925291889183919082908490829060400103925af18015610e0557918a918a959493610dce575b908691610cf4565b7fc8e512d8f188ca059984b5853d2bf653da902696b8512785b182b2c813789a6e929198610dfc8892612179565b98919250610dc6565b88513d89823e3d90fd5b610e2c9150610e25620186a091601a5490612304565b048961235b565b8f610ce8565b81610e5192903d10610e59575b610e4981836121f4565b810190613b29565b8e9150610cd6565b503d610e3f565b8a513d8b823e3d90fd5b865162461bcd60e51b81528086018a9052601560248201527442423a2072657061796d656e7420746f6f206c6f7760581b6044820152606490fd5b865162461bcd60e51b81528086018a9052601560248201527453474c3a206e6f7468696e6720746f20726570617960581b6044820152606490fd5b915089610c16565b84833461035c578160031936011261035c57602090610f056137af565b9051908152f35b84833461035c578160031936011261035c576020906029549051908152f35b84833461035c578160031936011261035c57602090601e549051908152f35b84833461035c578160031936011261035c5760209060ff6026541690519015158152f35b82853461033a578060031936011261033a57506025548151906001600160401b03908181168352831c166020820152f35b84833461035c578160031936011261035c57602090601a549051908152f35b84833461035c578060031936011261035c57602091610fdb612042565b82602435928315801590611087575b61101a575b50519182526001600160a01b0316903390600080516020613d46833981519152908590a35160018152f35b338152600186528181205461103185821015612b8f565b6001600160a01b03841690853383900361104e575b505050610fef565b6110629161105d841515612bd4565b61235b565b338352600188528383205581522061107b838254612368565b90558285808085611046565b50336001600160a01b03841614610fea565b84833461035c578060031936011261035c576060906110c26110b9612042565b602435906124a7565b91929081519384526020840152820152f35b84833461035c578060031936011261035c57602090610f056110f4612042565b60243590612933565b84833461035c578160031936011261035c5780519082602c5461111f8161213f565b808552906001908181169081156111b25750600114611159575b50505061114b826111559403836121f4565b5191829182612215565b0390f35b602c8352602095507f7416c943b4a09859521022fd2e90eac0dd9026dad28fa317782a135f28a860915b82841061119f57505050826111559461114b9282010194611139565b8054868501880152928601928101611183565b611155975061114b9450602092508693915060ff191682840152151560051b82010194611139565b9250903461144f578060031936011261144f578135926001600160401b038411610b195736602385011215610b195783830135926112178461225e565b94611224845196876121f4565b848652866020918288019636602482840101116103d2578060248593018937880101526024359361ffff8516809503610b155761010095868880518101031261144b5761127090612541565b9361127c828901612c19565b9061128960608a01612c19565b9860808101519860a0820151926112a260c08401612c2d565b91818401519301519360018060a01b03808097169d169a81421161140857928d8f819897948f948f8f968f918f959a8f8c819561137e9f9c6106089f506000146113e1577f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e2669a5b82528952209384549461131b86612dbf565b905580519788019889528701528d6060870152608086015260a085015260c084015281830152815261134c816121bd565b519020611357612a65565b908951908b82019261190160f01b84526022830152604282015260428152610600816121d9565b16036113a0575050506000146113975761033792612e1c565b61033792612dce565b5162461bcd60e51b815291820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e61747572650000604482015260649150fd5b7f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d69a611309565b875162461bcd60e51b8152808b018a9052601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b8880fd5b8380fd5b84833461035c578160031936011261035c5760055490516001600160a01b039091168152602090f35b84833461035c578160031936011261035c57602090601b549051908152f35b84833461035c57602036600319011261035c5760209181906001600160a01b036114c3612042565b1681526024845220549051908152f35b82853461033a578060031936011261033a575060145481516001600160801b038216815260809190911c6020820152f35b84833461035c578060031936011261035c5760209061152e611524612042565b6024359033612dce565b5160018152f35b848383346103d25760203660031901126103d25760209282916001600160a01b0361155e612042565b168252845220549051908152f35b84833461035c578160031936011261035c57600f5490516001600160a01b039091168152602090f35b84833461035c578160031936011261035c576020906030549051908152f35b84833461035c578160031936011261035c57602090602e549051908152f35b84833461035c578160031936011261035c57805190826010546115f58161213f565b808552906001908181169081156111b257506001146116205750505061114b826111559403836121f4565b6010835260209550600080516020613d668339815191525b82841061165457505050826111559461114b9282010194611139565b8054868501880152928601928101611638565b848383346103d25760203660031901126103d2573591600983101561033a575060ff611694602093612110565b541690519015158152f35b84833461035c57602036600319011261035c5760209181906001600160a01b036116c7612042565b1681526001845220549051908152f35b84833461035c578160031936011261035c57600a5490516001600160a01b039091168152602090f35b84833461035c578160031936011261035c576020906027549051908152f35b84833461035c578160031936011261035c57602090601c549051908152f35b84833461035c578160031936011261035c57602090602d549051908152f35b84833461035c578160031936011261035c5760209081549051908152f35b848383346103d2576117e9906117dd60ff84956117b061179a366120db565b9491989093808052600760205220541615612e73565b6117c56001600160a01b038216301415612eb0565b6117cd612606565b50506117d7613a30565b85612f47565b929093601154906134ab565b156117fb575082519182526020820152f35b606490602085519162461bcd60e51b8352820152601160248201527013585c9ad95d0e881a5b9cdbdb1d995b9d607a1b6044820152fd5b509150346103d257826003193601126103d2576006546001600160a01b039290918383169190338390036118a4575050806005549384167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08680a36001600160a01b0319928316176005551660065580f35b906020606492519162461bcd60e51b8352820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b84833461035c57602036600319011261035c5760209181906001600160a01b0361190f612042565b1681526017845220549051908152f35b84833461035c578160031936011261035c576020906015549051908152f35b84833461035c578160031936011261035c57602090600e549051908152f35b84833461035c578160031936011261035c576020906016549051908152f35b5090833461033a57606036600319011261033a5750610f0560209260443590602435903561238e565b84833461035c578160031936011261035c576020906011549051908152f35b84833461035c578160031936011261035c57600d5490516001600160a01b039091168152602090f35b84833461035c578160031936011261035c576020906012549051908152f35b84833461035c578160031936011261035c57602090610f05612a65565b84833461035c578160031936011261035c576020906019549051908152f35b84833461035c578160031936011261035c5760145490516001600160801b039091168152602090f35b84833461035c578160031936011261035c576020906013549051908152f35b5090833461033a57611aa1366120db565b919282611adb575b508351918252602094506001600160a01b03908116921690600080516020613d46833981519152908590a35160018152f35b6001600160a01b038481168083526001602090815287842054919892909190611b0687831015612b8f565b851692838a03611b1a575b50505050611aa9565b898552600283528885203386528352888520549060018201611b84575b5050928260209960018a94611b638a8e9961105d600080516020613d468339815191529c9a1515612bd4565b9285525283832055815220611b79858254612368565b905591878080611b11565b878210611bda57509260209960018a94611b638a8e9996611bb582600080516020613d468339815191529d9b61235b565b86895260028552898920338a5285528989205596995050509450509981949650611b37565b895162461bcd60e51b8152908101849052601860248201527745524332303a20616c6c6f77616e636520746f6f206c6f7760401b6044820152606490fd5b84833461035c578160031936011261035c57602090602a549051908152f35b908491346103d257611c483661208c565b93979496909280421161066557938693611cdf938c8c89610608968e9a8e60018060a01b03809c169c8d948587526020528c87872092835493611c8a85612dbf565b905588519660208801987f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d68a528a890152606088015216608086015260a085015260c08401528183015281526105ce816121bd565b16036106225750610337939450612dce565b84833461035c578160031936011261035c57602b5490516001600160a01b039091168152602090f35b84833461035c57602036600319011261035c5760209181906001600160a01b03611d42612042565b1681526018845220549051908152f35b84833461035c578160031936011261035c5751908152602090f35b84833461035c578160031936011261035c57602090602f549051908152f35b848383346103d257816003193601126103d257803590600982101561144f57611db361206e565b6008549093906001600160a01b03163303611e695760ff611dd384612110565b54161515931515938414611e31575050808260ff611df3611e2194612110565b54161515827feeec81de25875ce1725479bb76f720a8defdb43dea041919ae37bb4aae9847c08780a4612110565b9060ff8019835416911617905580f35b906020606492519162461bcd60e51b835282015260126024820152714d61726b65743a2073616d6520737461746560701b6044820152fd5b906020606492519162461bcd60e51b8352820152601460248201527313585c9ad95d0e881d5b985d5d1a1bdc9a5e995960621b6044820152fd5b84833461035c578060031936011261035c5760209061152e611ec3612042565b6024359033612e1c565b509150346103d25760603660031901126103d257611ee9612042565b91611ef261206e565b91611efb61207d565b9260018060a01b03948591611f1583600554163314612279565b15611fb9571692831590811591611fb1575b5015611f76575050806005549283167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08580a36001600160a01b03199182161760055560068054909116905580f35b906020606492519162461bcd60e51b835282015260156024820152744f776e61626c653a207a65726f206164647265737360581b6044820152fd5b905038611f27565b93505050501660018060a01b0319600654161760065580f35b82853461033a578060031936011261033a5750611fed612606565b825191151582526020820152f35b93505050346103d257806003193601126103d25760209261201a612042565b612022612058565b6001600160a01b0391821683526003865283832091168252845220548152f35b600435906001600160a01b0382168203610b1057565b602435906001600160a01b0382168203610b1057565b602435908115158203610b1057565b604435908115158203610b1057565b60e0906003190112610b10576001600160a01b03906004358281168103610b1057916024359081168103610b105790604435906064359060843560ff81168103610b10579060a4359060c43590565b6060906003190112610b10576001600160a01b03906004358281168103610b1057916024359081168103610b10579060443590565b6009811015612129576000526007602052604060002090565b634e487b7160e01b600052602160045260246000fd5b90600182811c9216801561216f575b602083101461215957565b634e487b7160e01b600052602260045260246000fd5b91607f169161214e565b6001600160401b03811161218c57604052565b634e487b7160e01b600052604160045260246000fd5b604081019081106001600160401b0382111761218c57604052565b61010081019081106001600160401b0382111761218c57604052565b608081019081106001600160401b0382111761218c57604052565b90601f801991011681019081106001600160401b0382111761218c57604052565b6020808252825181830181905290939260005b82811061224a57505060409293506000838284010152601f8019910116010190565b818101860151848201604001528501612228565b6001600160401b03811161218c57601f01601f191660200190565b1561228057565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b156122cb57565b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881b9bdd081d985b1a59607a1b6044820152606490fd5b8181029291811591840414171561231757565b634e487b7160e01b600052601160045260246000fd5b8115612337570490565b634e487b7160e01b600052601260045260246000fd5b604d811161231757600a0a90565b9190820391821161231757565b9190820180921161231757565b8181039291600013801582851316918412161761231757565b6014549192916123d7916123c8916123be916123b4906001600160801b03831690612304565b9060801c9061232d565b93601f5490612304565b6123d18361234d565b9061232d565b80831061249f576123eb612427918461235b565b9161242261241c612413601e5461240d6124048661234d565b60205490612368565b90612304565b6123d18461234d565b9161234d565b612375565b6509184e72a0009081810291818305149015171561231757670de0b6b3a76400009182810292818405149015171561231757801561233757600160ff1b91808314600019831416612317570590600082121561249857811461231757600003905b808211612493575090565b905090565b5090612488565b505050600090565b6001600160a01b038116600081815260176020526040812054919493929091908115612535579160409161251185946124eb612529976124e561399f565b926127aa565b815190936001600160801b039160209161250791841690612304565b920151169061232d565b81811061252d57035b9581526018602052205461287c565b9091565b50508061251a565b50509192505080918190565b51908115158203610b1057565b9190826040910312610b1057602061256583612541565b92015190565b6020808252600091601054916125808361213f565b92838284015260019081811690816000146125e357506001146125a5575b5050505090565b929350601060005280600020926000935b8585106125cf575050506040925001013880808061259e565b8054858501604001529382019381016125b6565b925050506040935060ff929192191683830152151560051b01013880808061259e565b600f546040805163d6d7d52560e01b81529290916001600160a01b03168284806126326004820161256b565b0381600080955af18015612752578194829161271f575b509284156126c257831561268857507f9f9192b5edb17356c524e08d9e025c8e2f6307e6ea52fb7968faa3081f51c3c883918260115580a25b42601355565b5162461bcd60e51b81526020600482015260146024820152734d61726b65743a20696e76616c6964207261746560601b6044820152606490fd5b919250506126d560135460125490612368565b42116126e5575060115490612682565b5162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881c985d19481d1bdbc81bdb1960621b6044820152606490fd5b9050612742919450833d851161274b575b61273a81836121f4565b81019061254e565b93909338612649565b503d612730565b508251903d90823e3d90fd5b1561276557565b60405162461bcd60e51b815260206004820152601e60248201527f4d61726b65743a2065786368616e676552617465206e6f742076616c696400006044820152606490fd5b6127b582151561275e565b60018060a01b036020816009541691600c5490600094168452601882526064604085205491604051948593849263442c159960e01b8452600484015260248301528660448301525afa918215612870578092612838575b50509061283061282761283593620186a06022540490612304565b601e5490612304565b61232d565b90565b9091506020823d8211612868575b81612853602093836121f4565b8101031261033a57505161283061282761280c565b3d9150612846565b604051903d90823e3d90fd5b61288782151561275e565b602060018060a01b0360095416916064600c54604051948593849263442c159960e01b845260048401526024830152600060448301525afa908115612927576000916128f4575b50906128306128e09260225490612304565b620186a06128f0601e5483612304565b0491565b906020823d821161291f575b8161290d602093836121f4565b8101031261033a5750516128306128ce565b3d9150612900565b6040513d6000823e3d90fd5b6001600160a01b031660008181526018602052604081205490926129569161287c565b918352601760205260408320548015612a5f578115612a5f57818110612a5f5782811015612a555760145461299f91839161105d916123b4906001600160801b03831690612304565b90620186a09283830292808404851490151715612a41576129c492916123d19161235b565b91601b5491601c54936129d78585612375565b80820291848212600160ff1b821416612a41578183051490151715612a2d5705818482019485129112908015821691151617612a195750808212612493575090565b634e487b7160e01b81526011600452602490fd5b634e487b7160e01b83526011600452602483fd5b634e487b7160e01b85526011600452602485fd5b50505050601b5490565b50505090565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03161480612b66575b15612ac0577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f000000000000000000000000000000000000000000000000000000000000000082527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a0815260c081018181106001600160401b0382111761218c5760405251902090565b507f00000000000000000000000000000000000000000000000000000000000000004614612a97565b15612b9657565b60405162461bcd60e51b815260206004820152601660248201527545524332303a2062616c616e636520746f6f206c6f7760501b6044820152606490fd5b15612bdb57565b60405162461bcd60e51b815260206004820152601660248201527545524332303a206e6f207a65726f206164647265737360501b6044820152606490fd5b51906001600160a01b0382168203610b1057565b519060ff82168203610b1057565b60058110156121295780612c4c5750565b60018103612c945760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b6044820152606490fd5b60028103612ce15760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606490fd5b600314612cea57565b60405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608490fd5b9291906fa2a8918ca85bafe22016d0b997e4df60600160ff1b038311612db35791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa15612da65781516001600160a01b03811615612da0579190565b50600190565b50604051903d90823e3d90fd5b50505050600090600390565b60001981146123175760010190565b7fe50de2333c10a9502fcb1d8ae13a51bbf423153dfc63c2b8997665b32154afc360018060a01b038092169160009083825260036020526040822094169384825260205284604082205580a4565b909160207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259160018060a01b03809416938460005260028352604060002095169485600052825280604060002055604051908152a3565b15612e7a57565b60405162461bcd60e51b815260206004820152600e60248201526d13585c9ad95d0e881c185d5cd95960921b6044820152606490fd5b15612eb757565b606460405162461bcd60e51b815260206004820152602060248201527f4d61726b65743a2063616e6e6f742065786563757465206f6e20697473656c666044820152fd5b15612f0257565b60405162461bcd60e51b815260206004820152601c60248201527f42423a20616c6c6f77616e63655368617265206e6f742076616c6964000000006044820152606490fd5b919290600090602a5485106133a357841561339b57612f6585613b6e565b9060115495612faf612f9e612f7a8584612368565b600d546001600160a01b039a919060ff90612f96908d166133e8565b16918a6135a8565b612fa9811515612efb565b8761362b565b8682169182855260209260248452604094858720612fce828254612368565b9055612fd8613485565b98612fe38286612368565b88878951612ff0816121a2565b82815201528a516001600160801b039b8c91821661332f578161301b849e8f955b1682845116613986565b168152613030828a8301941683855116613986565b8281169093525160809290921b6001600160801b03191691169081176014556016548015918215613324575b5050156132e757907f3a5151e57d3bc9798e7853034ac52293d1a0e12a2b44725e75b03b21f86477a6878c8795941692838b52601789528c6130a2838d20918254612368565b905581519081528c89820152a487600d5416803b156132685784516340c10f1960e01b8152306004820152602481018490529086908290604490829084905af180156132dd576132ca575b5087600d541690600e54918960095416865163095ea7b360e01b91828252600482015288602482015286816044818c875af180156132c0579287928a88938f9661327d575b506009548b51928352959095166001600160a01b0316600482015260248101929092529092839190829081604481015b03925af180156132735790869493929161322f575b506131a29450868a6009541692855196879586948593634d4d7cbd60e11b8552309060048601613b3f565b03925af1908115613223578391613204575b509394600a5416803b156103d257908280926004835180958193632ebe913360e21b83525af19081156131fb57506131ea575050565b6131f48291612179565b61033a5750565b513d84823e3d90fd5b61321b9150823d8411610e5957610e4981836121f4565b9050386131b4565b505051903d90823e3d90fd5b80929450859193953d831161326c575b61324981836121f4565b8101031261326857916131a293916132618694612541565b5038613177565b8580fd5b503d61323f565b86513d89823e3d90fd5b9350509290935081813d83116132b9575b61329881836121f4565b8101031261144b576131629287928a8e6132b28a95612541565b5095613132565b503d61328e565b88513d8b823e3d90fd5b6132d690959195612179565b93386130ed565b85513d88823e3d90fd5b865162461bcd60e51b815260048101879052601660248201527510908e88189bdc9c9bddc818d85c081c995858da195960521b6044820152606490fd5b11159050388061305c565b909180898301848151166133439083612304565b858551166133509161232d565b9e8f8186511661335f91612304565b91511661336b9161232d565b1061337f575b908261301b818f9594613011565b919b908c61301b6133908294612dbf565b9e5050509091613371565b509250829150565b60405162461bcd60e51b815260206004820152601b60248201527f42423a20626f72726f7720616d6f756e7420746f6f20736d616c6c00000000006044820152606490fd5b60405163313ce56760e01b602082019081526004825290613408816121a2565b5160009283928392916001600160a01b03165afa903d1561347d573d9161342e8361225e565b9261343c60405194856121f4565b83523d82602085013e5b80613472575b1561346b5760208280518101031261033a575060206128359101612c2d565b5050601290565b50602082511461344c565b606091613446565b60405190613492826121a2565b6014546001600160801b038116835260801c6020830152565b919060018060a01b0380600094168452602060178152604085205490811561359e57601881526040862054801561359757816134e5613485565b9460095416916064600c54604051948593849263442c159960e01b8452600484015260248301528b60448301525afa968715612870578097613561575b505061250761354161282761355c969798620186a06022540490612304565b9561355760018060801b03948587511690612304565b612304565b111590565b9096508187813d8311613590575b61357981836121f4565b8101031261033a5750945194612507613541613522565b503d61356f565b5050505050565b5060019450505050565b61241c906135c88561283596956135c26123d196856127aa565b906135e8565b6001600160a01b0390911660009081526018602052604090205490612304565b9182158015613623575b61249f5760018101809111612317576136119261240d6128309261234d565b6005810180911161231757600a900490565b5081156135f2565b6001600160a01b031633810361363f575050565b60008181526020906003825260409182822033835281528483832054106136a85783825260038152828220338352815282822054600101613681575050505050565b61369c9382526003815282822090338352522091825461235b565b90553880808080613597565b60649083519062461bcd60e51b82526004820152601460248201527313585c9ad95d0e881b9bdd08185c1c1c9bdd995960621b6044820152fd5b6001600160801b03918216908216039190821161231757565b9190916000602060405161370e816121a2565b82815201526020810180516001600160801b039081166137525761374b81865b8161373e818a16828951166136e2565b16865216828451166136e2565b1690529190565b61376c6137628285511687612304565b828451169061232d565b948061378861377e8486511689612304565b848751169061232d565b10613798575b8161374b9161372e565b94816137a661374b92612dbf565b9691505061378e565b60ff60265416613920576014546001600160801b031690811561391957600a54604051631848f2bf60e31b8152602093916001600160a01b03919085908290600490829086165afa80156129275785916000916138e0575b50600460405180948193631a674cc560e11b8352165afa938415612927576000946138b1575b50506138499192670de0b6b3a764000092839160295490612304565b0490818110156138a857613860602a54809261235b565b83810290808204851490151715612317576123d16138819261389c9461235b565b6027549261389660285492613557848761235b565b04612368565b90808211612493575090565b50505060275490565b81813d83116138d9575b6138c581836121f4565b8101031261144f575192506138493861382d565b503d6138bb565b909181813d8311613912575b6138f681836121f4565b8101031261035c575190828216820361033a5750849038613807565b503d6138ec565b6028549150565b600a5460405163e6abad4960e01b815290602090829060049082906001600160a01b03165afa90811561292757600091613958575090565b906020823d821161397e575b81613971602093836121f4565b8101031261033a57505190565b3d9150613964565b6001600160801b03918216908216019190821161231757565b600060206040516139af816121a2565b82815201526001600160401b03906139ce8260255460401c164261235b565b918215613a2557613a2061355791670de0b6b3a7640000613a156139f0613485565b9660018060801b03958694858a5116906301e13380613a0d6137af565b041690612304565b041682855116613986565b168252565b509050612835613485565b604051613a3c816121a2565b6025546001600160401b03908181168352818160401c16613a6460208501918083524261235b565b92831561359757602094816301e13380613a7c6137af565b041681528142168352613a8d613485565b670de0b6b3a7640000613ab260018060801b0397613557898551168787511690612304565b0495613ac381881682845116613986565b1680825296015160801b6001600160801b031990811690961760145551915192909416931692831760409190911b67ffffffffffffffff60401b16176025557f7484db546dcd57af0104c73c8a6968dfbaf5767f047cee0dadd0499ad7df81a0600080a3565b9190826040910312610b10576020825192015190565b9081526001600160a01b0391821660208201529116604082015260608101919091526000608082015260a00190565b8015613cab57602b546040805163d6d7d52560e01b815291819083906001600160a01b031681600081613ba36004820161256b565b03925af1918215613ca0576000908193613c7e575b5015613c3b57506030549081811015613c3257602f5480821115613c2857613c09926123d182613bfd613bf1613c0395602e549761235b565b61240d602d548861235b565b9261235b565b9061235b565b9081613c16575050600090565b620186a091613c2491612304565b0490565b50505050602e5490565b505050602d5490565b5162461bcd60e51b815260206004820152601f60248201527f42423a202061737365742773206f7261636c652063616c6c206661696c6564006044820152606490fd5b905081613c989293503d841161274b5761273a81836121f4565b919038613bb8565b50513d6000823e3d90fd5b50600090565b6001600160a01b0390811660008181526017602052604081205491939092828214613d34579060ff613ce9613cf293600d54166133e8565b169283916135e8565b8015613d2d5782916123d161241c613d1893876040975260246020528686205490612304565b92815260246020522054808211612493575090565b5050905090565b50505060409150602460205220549056feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae672a26469706673582212202f0236d01d67334b20bf7b7ff153b636773bb8df63027bc52fc351b6b9d39d0264736f6c63430008120033", "linkReferences": {}, "deployedLinkReferences": {} } diff --git a/src/artifacts/tapioca-bar/BBCollateral.json b/src/artifacts/tapioca-bar/BBCollateral.json index 382d6d59..0476eb26 100644 --- a/src/artifacts/tapioca-bar/BBCollateral.json +++ b/src/artifacts/tapioca-bar/BBCollateral.json @@ -65,13 +65,13 @@ { "indexed": true, "internalType": "address", - "name": "_oldVal", + "name": "oldVal", "type": "address" }, { "indexed": true, "internalType": "address", - "name": "_newVal", + "name": "newVal", "type": "address" } ], @@ -135,6 +135,25 @@ "name": "ExchangeRateDurationUpdated", "type": "event" }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "oldVal", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newVal", + "type": "address" + } + ], + "name": "LeverageExecutorSet", + "type": "event" + }, { "anonymous": false, "inputs": [ @@ -516,6 +535,37 @@ "name": "UpdateMinMaxMintFee", "type": "event" }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint256", + "name": "oldMin", + "type": "uint256" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "newMin", + "type": "uint256" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "oldMax", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "newMax", + "type": "uint256" + } + ], + "name": "UpdateMinMaxMintRange", + "type": "event" + }, { "inputs": [], "name": "DOMAIN_SEPARATOR", @@ -991,6 +1041,19 @@ "stateMutability": "view", "type": "function" }, + { + "inputs": [], + "name": "leverageExecutor", + "outputs": [ + { + "internalType": "contract ILeverageExecutor", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, { "inputs": [], "name": "liquidationBonusAmount", @@ -1069,6 +1132,19 @@ "stateMutability": "view", "type": "function" }, + { + "inputs": [], + "name": "maxMintFeeStart", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, { "inputs": [], "name": "minDebtRate", @@ -1108,6 +1184,19 @@ "stateMutability": "view", "type": "function" }, + { + "inputs": [], + "name": "minMintFeeStart", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, { "inputs": [ { @@ -1396,6 +1485,19 @@ "stateMutability": "nonpayable", "type": "function" }, + { + "inputs": [ + { + "internalType": "contract ILeverageExecutor", + "name": "_executor", + "type": "address" + } + ], + "name": "setLeverageExecutor", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, { "inputs": [ { @@ -1680,8 +1782,8 @@ "type": "function" } ], - "bytecode": "0x61014080604052346200018a5762000017816200018f565b600f81526001602082016e546170696f63612042696742616e6760881b8152602060405162000046816200018f565b8381520192603160f81b845251902091208160e052610100918183524660a0526040519160208301907f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f92838352604085015260608401524660808401523060a084015260a0835260c083019280841060018060401b03851117620001745760408490525190206080523060c052610120908152600580546001600160a01b0319163390811790915560007f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a362013880601b5562015f90601c55612710601d55612ee06020556103e8602d556133559283620001ac843960805183612942015260a05183612a0d015260c0518361290c015260e05183612991015251826129b70152518161296e0152f35b634e487b7160e01b600052604160045260246000fd5b600080fd5b604081019081106001600160401b03821117620001745760405256fe608080604052600436101561001357600080fd5b600090813560e01c908162a02a2014611f095750806302ce728f14611ee0578063078dfbe714611de1578063095ea7b314611dba5780630c4e84f014611c9e57806318160ddd14611c825780631c9e379b14611c495780631d4d3a5d14611c205780631da8bf1014611b4c5780631fb8f81a14611b2e57806323b872dd146119a7578063331960ff1461198957806334ce998a1461196057806334d441d0146119425780633644e5151461192757806337b6b7b91461190957806338d52e0f146118e05780633ba0b9a9146118c25780633f741adb1461189d57806340626d8b1461187f57806344de240a14611861578063473e3ce71461184357806348e4163e1461180a5780634e71e0c81461175c578063529898f21461173f578063542afda31461172157806357935462146117035780636b19ad16146116e55780636c3d8b8f146116bc57806370a0823114611683578063727785471461164b57806374645ff3146115ba57806374c9e4811461159c5780637dc0d1d0146115735780637ecebe001461153a5780637fa0b84e146115085780638285ef40146114d657806387b279371461149d5780638c5d0ed31461147f5780638da5cb5b14611456578063910dd7c814611221578063932bc4f81461114557806399a970281461111d5780639e15e89f146110e2578063a9059cbb14610fff578063b0e21e8a14610fe1578063b27c0e7414610fb0578063b7113f1914610f8d578063bb4cfe3b14610f6f578063bde39c5d14610f51578063c1ad5c8d14610f2e578063cce19f8114610dae578063ce8849ed14610d85578063d3fb2a381461091d578063d505accf1461077c578063d8dfeb4514610753578063dd62ed3e14610704578063de406577146106db578063e0996cb6146106bd578063e30c397814610694578063e9a4925214610363578063ea64dd5614610345578063eec0f42e14610327578063f791395d146103095763f8ba4cff146102eb57600080fd5b346103065780600319360112610306576103036131e6565b80f35b80fd5b50346103065780600319360112610306576020602754604051908152f35b50346103065780600319360112610306576020600c54604051908152f35b50346103065780600319360112610306576020601f54604051908152f35b50346103065760a03660031901126103065761037d611f51565b610385611f67565b9061038e611f8c565b608435926001600160a01b039081169290916064356103af30861415612cfa565b6002600052602090600782526103cd60ff6040600020541615612d45565b8615610616575b6103de8785612d82565b8615610595575b5084875260188152604087206103fc878254612246565b905560155461040b8782612246565b601555600c549088841561050f575082866009541692604460405180958193627eeac760e11b835230600484015260248301525afa80156105045789906104d0575b6104579250612239565b861161049857505b15610493575080600954165b167f9ed03113de523cebfe5e49d5f8e12894b1c0d42ce805990461726444c90eab878480a480f35b61046b565b6064906040519062461bcd60e51b825260048201526011602482015270084d2ce84c2dcce7440e8dede40daeac6d607b1b6044820152fd5b508282813d83116104fd575b6104e68183612103565b810103126104f857610457915161044d565b600080fd5b503d6104dc565b6040513d8b823e3d90fd5b9250508460095416803b1561059157604051630208d92960e11b81526001600160a01b038616600482015230602482015260448101929092526064820188905282908290608490829084905af180156105865761056e575b505061045f565b61057790612088565b610582578538610567565b8580fd5b6040513d84823e3d90fd5b8280fd5b908096508460095416916064600c546040519485938492638eb22cdd60e01b8452600484015260248301528b60448301525afa90811561060b5787916105de575b5094386103e5565b90508581813d8311610604575b6105f58183612103565b810103126104f85751386105d6565b503d6105eb565b6040513d89823e3d90fd5b9550836009541681600c54606460405180948193638eb22cdd60e01b835260048301528b60248301528c60448301525afa90811561068957889161065c575b50956103d4565b90508181813d8311610682575b6106738183612103565b810103126104f8575138610655565b503d610669565b6040513d8a823e3d90fd5b50346103065780600319360112610306576006546040516001600160a01b039091168152602090f35b50346103065780600319360112610306576020601d54604051908152f35b50346103065780600319360112610306576009546040516001600160a01b039091168152602090f35b50346103065760403660031901126103065761071e611f51565b6040610728611f67565b9260018060a01b03809316815260026020522091166000526020526020604060002054604051908152f35b5034610306578060031936011261030657600b546040516001600160a01b039091168152602090f35b50346103065761078b36611f9b565b9183919395949542116108d85760018060a01b039283881694856000526004602052604060002092835460001981146108c25761086e95610866956001830190556040519060208201927f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e2668452600060408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e0815261082a816120cc565b519020610835612909565b9060405190602082019261190160f01b8452602283015260428201526042815261085e816120e8565b519020612bd0565b919091612ad1565b160361087d5761030392612ca3565b60405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152606490fd5b634e487b7160e01b600052601160045260246000fd5b60405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b503461030657610160366003190112610306576001600160a01b0360043581811690819003610591576024916001600160401b0383358181116105825736602382011215610582578060040135918211610582573685838301011161058257604435938385168095036104f8576109998460055416331461216d565b80610d47575b508482610bed575b50505081610bad575b505060643580610b95575b5060843580610b7d575b5060a43580610b66575b5060c43580610b42575b5060e43580610b1e575b506101043580610aed575b506101243580610a7a575b50610144359081610a08578280f35b601e548210610a1b5750601f5538808280f35b60849060326040519162461bcd60e51b8352602060048401528201527f4d61726b65743a206c69717569646174696f6e436f6c6c61746572616c697a616044820152711d1a5bdb94985d19481d1bdbc81cdb585b1b60721b6064820152fd5b610a89620186a08211156121b8565b601f548111610a9b57601e55386109f9565b60405162461bcd60e51b8152602060048201526025818401527f4d61726b65743a20636f6c6c61746572616c697a6174696f6e5261746520746f6044820152646f2062696760d81b6064820152608490fd5b806016547fae6e0ab3b95f0a53ff9660a390ccedcbbf1f2355dce974a9841af106fddcfaba8580a3601655386109ee565b610b2c620186a082106121b8565b610b39601b5482116121b8565b601c55386109e3565b610b50620186a082106121b8565b610b5d601c5482106121b8565b601b55386109d9565b610b74620186a082106121b8565b601d55386109cf565b610b8c620186a08211156121b8565b601a55386109c5565b610ba4620186a08211156121b8565b601955386109bb565b816008549182167f5a62d22209e370e38eea92cfddcd228e656e6ec139243392a760a7769f5877fd8680a36001600160a01b0319161760085538806109b0565b8291610bfa60105461204e565b601f8111610ce8575b508790601f8411600114610c68578893610c5b575b5050508160011b916000199060031b1c1916176010555b7fa6f004921c944d4b8bf6e38462b00f36a58d62495d56b51f571ab78f732c98158480a13880846109a7565b0101359050843880610c18565b60108952601f198416945060008051602061330083398151915292509087908960205b878210610cc95750508460019610610cad575b50505050811b01601055610c2f565b60001960f88660031b161c199201013516905538808681610c9e565b8285019093013585556001949094019389929182019190810190610c8b565b601089529092509050600080516020613300833981519152601f840160051c810160208510610d40575b91849391601f8994920160051c01905b818110610d2f5750610c03565b898155859450889350600101610d22565b5080610d12565b600f80546001600160a01b0319169190911790557f0b2d6eb667d0522c3eb86e4288afecae6c11591ffd1345d4d12407e0598bca9b8680a13861099f565b50346103065780600319360112610306576008546040516001600160a01b039091168152602090f35b50346103065780610dbe36611fea565b600384929394526007602052610ddb60ff60408420541615612d45565b610de36124dc565b5050610ded6131e6565b6001600160a01b038381169390610e0630861415612cfa565b610e108387612d82565b8281871695868652601860205260408620610e2c838254612239565b9055610e3a82601554612239565b601555604051967f8ad4d3ff00da092c7ad9a573ea4f5f6a3dffc6712dc06d3f78f49b862297c4028780a46009541690600c5492823b15610f2a57630208d92960e11b86523060048701526001600160a01b03919091166024860152604485019290925260648401919091528290608490829084905af18015610f1f57610f0a575b50601154610ec991612e60565b15610ed15780f35b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881a5b9cdbdb1d995b9d607a1b6044820152606490fd5b91610f18610ec99293612088565b9190610ebc565b6040513d85823e3d90fd5b8480fd5b50346103065780600319360112610306576020610f49612f62565b604051908152f35b50346103065780600319360112610306576020602854604051908152f35b50346103065780600319360112610306576020601e54604051908152f35b5034610306578060031936011261030657602060ff602554166040519015158152f35b503461030657806003193601126103065760406024548151906001600160401b03908181168352831c166020820152f35b50346103065780600319360112610306576020601a54604051908152f35b503461030657604036600319011261030657611019611f51565b602435809281158015906110d0575b611060575b50506040519182526001600160a01b03169033906000805160206132e083398151915290602090a3602060405160018152f35b3381526001602052604081205461107983821015612a33565b6001600160a01b0384169033829003611094575b505061102d565b6040936110ab916110a6841515612a78565b612239565b3383526001602052838320558152206110c5838254612246565b90558138808061108d565b50336001600160a01b03841614611028565b503461030657604036600319011261030657606061110a611101611f51565b60243590612385565b9060405192835260208301526040820152f35b5034610306576040366003190112610306576020610f4961113c611f51565b602435906127d7565b503461030657806003193601126103065760405181602b546111668161204e565b808452906001908181169081156111f957506001146111a0575b61119c8461119081880382612103565b60405191829182612124565b0390f35b602b8352602094507f11c44e4875b74d31ff9fd779bf2566af7bd15b87fc985d01f5094b89e3669e4f5b8284106111e6575050508161119c936111909282010193611180565b80548585018701529285019281016111ca565b61119c96506111909450602092508593915060ff191682840152151560051b82010193611180565b5034610306576040366003190112610306576004356001600160401b0380821161059157366023830112156105915781600401359081116114425782604051926112756020601f19601f8601160185612103565b82845260208401923660248284010111610591578060246020930185378401015260243561ffff8116810361143e57610100918284805181010312610f2a576112bd906124cf565b6112c960408501612abd565b916112d660608601612abd565b9460808101519460a08201519260c08301519160ff8316830361143a5760e0840151930151938042116108d8578515611413577f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e266915b6001600160a01b0388168b52600460205260408b208054919060001983146113ff579161ffff6113bc9896949261086698969460018401905560405194602086015216604084015260018060a01b038a16606084015260018060a01b038c1660808401528a60a084015260c083015260e082015260e081526113ad816120cc565b60208151910120610835612909565b6001600160a01b0383811691160361087d57156113e957610303926001600160a01b039081169116612ca3565b610303926001600160a01b039081169116612c55565b634e487b7160e01b8d52601160045260248dfd5b7f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d69161132c565b8980fd5b8380fd5b634e487b7160e01b83526041600452602483fd5b50346103065780600319360112610306576005546040516001600160a01b039091168152602090f35b50346103065780600319360112610306576020601b54604051908152f35b5034610306576020366003190112610306576020906040906001600160a01b036114c5611f51565b168152602383522054604051908152f35b5034610306578060031936011261030657601454604080516001600160801b038316815260809290921c602083015290f35b50346103065760403660031901126103065761152f611525611f51565b6024359033612c55565b602060405160018152f35b5034610306576020366003190112610306576020906040906001600160a01b03611562611f51565b168152600483522054604051908152f35b5034610306578060031936011261030657600f546040516001600160a01b039091168152602090f35b50346103065780600319360112610306576020602d54604051908152f35b5034610306578060031936011261030657604051816010546115db8161204e565b808452906001908181169081156111f957506001146116045761119c8461119081880382612103565b60108352602094506000805160206133008339815191525b828410611638575050508161119c936111909282010193611180565b805485850187015292850192810161161c565b50346103065760203660031901126103065760043590600982101561030657602060ff6116778461201f565b54166040519015158152f35b5034610306576020366003190112610306576020906040906001600160a01b036116ab611f51565b168152600183522054604051908152f35b5034610306578060031936011261030657600a546040516001600160a01b039091168152602090f35b50346103065780600319360112610306576020602654604051908152f35b50346103065780600319360112610306576020601c54604051908152f35b50346103065780600319360112610306576020602c54604051908152f35b503461030657806003193601126103065760208054604051908152f35b50346103065780600319360112610306576006546001600160a01b0390818116338190036117c657806005549384167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08680a36001600160a01b0319928316176005551660065580f35b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b5034610306576020366003190112610306576020906040906001600160a01b03611832611f51565b168152601783522054604051908152f35b50346103065780600319360112610306576020601554604051908152f35b50346103065780600319360112610306576020600e54604051908152f35b50346103065780600319360112610306576020601654604051908152f35b5034610306576060366003190112610306576020610f4960443560243560043561226c565b50346103065780600319360112610306576020601154604051908152f35b5034610306578060031936011261030657600d546040516001600160a01b039091168152602090f35b50346103065780600319360112610306576020601254604051908152f35b50346103065780600319360112610306576020610f49612909565b50346103065780600319360112610306576020601954604051908152f35b50346103065780600319360112610306576014546040516001600160801b039091168152602090f35b50346103065780600319360112610306576020601354604051908152f35b5034610306576119b636611fea565b9192826119f2575b506040519182526001600160a01b039081169216906000805160206132e083398151915290602090a3602060405160018152f35b6001600160a01b03848116808352600160209081526040842054928690611a1b82861015612a33565b861693848403611a30575b50505050506119be565b838652600283526040808720338852845286205460018101611a9a575b5092600160209693611a7887946040976110a66000805160206132e08339815191529c9a1515612a78565b9285525283832055815220611a8e858254612246565b90559138808581611a26565b90918110611aee5792600160209693611a788a6000805160206132e08339815191529a9895611acb8260409a612239565b86895260028552898920338a528552898920559497509497995050939650611a4d565b60405162461bcd60e51b815260048101849052601860248201527745524332303a20616c6c6f77616e636520746f6f206c6f7760401b6044820152606490fd5b50346103065780600319360112610306576020602954604051908152f35b503461030657611b5b36611f9b565b908395949542116108d8576001600160a01b03878116808a52600460205260408a2080549196929592906000198314611c0c5782611bfd9694928d92600161086698960190556040519160208301937f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d6855260408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e0815261082a816120cc565b160361087d5761030392612c55565b634e487b7160e01b8c52601160045260248cfd5b5034610306578060031936011261030657602a546040516001600160a01b039091168152602090f35b5034610306576020366003190112610306576020906040906001600160a01b03611c71611f51565b168152601883522054604051908152f35b5034610306578060031936011261030657602090604051908152f35b5034610306576040366003190112610306576004356009811015611db657611cc4611f7d565b6008549091906001600160a01b03163303611d7a5760ff611ce48261201f565b54161515911515918214611d4057808260ff611d02611d309461201f565b54161515827feeec81de25875ce1725479bb76f720a8defdb43dea041919ae37bb4aae9847c08780a461201f565b9060ff8019835416911617905580f35b60405162461bcd60e51b81526020600482015260126024820152714d61726b65743a2073616d6520737461746560701b6044820152606490fd5b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881d5b985d5d1a1bdc9a5e995960621b6044820152606490fd5b5080fd5b50346103065760403660031901126103065761152f611dd7611f51565b6024359033612ca3565b503461030657606036600319011261030657611dfb611f51565b611e03611f7d565b611e0b611f8c565b9060018060a01b03928391611e258360055416331461216d565b15611ec9571690811590811591611ec1575b5015611e8457806005549283167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08580a36001600160a01b03199182161760055560068054909116905580f35b60405162461bcd60e51b81526020600482015260156024820152744f776e61626c653a207a65726f206164647265737360581b6044820152606490fd5b905038611e37565b9150501660018060a01b0319600654161760065580f35b50346103065780600319360112610306576040611efb6124dc565b825191151582526020820152f35b905034611db6576040366003190112611db6576040602092611f29611f51565b611f31611f67565b6001600160a01b0391821683526003865283832091168252845220548152f35b600435906001600160a01b03821682036104f857565b602435906001600160a01b03821682036104f857565b6024359081151582036104f857565b6044359081151582036104f857565b60e09060031901126104f8576001600160a01b039060043582811681036104f8579160243590811681036104f85790604435906064359060843560ff811681036104f8579060a4359060c43590565b60609060031901126104f8576001600160a01b039060043582811681036104f8579160243590811681036104f8579060443590565b6009811015612038576000526007602052604060002090565b634e487b7160e01b600052602160045260246000fd5b90600182811c9216801561207e575b602083101461206857565b634e487b7160e01b600052602260045260246000fd5b91607f169161205d565b6001600160401b03811161209b57604052565b634e487b7160e01b600052604160045260246000fd5b604081019081106001600160401b0382111761209b57604052565b61010081019081106001600160401b0382111761209b57604052565b608081019081106001600160401b0382111761209b57604052565b90601f801991011681019081106001600160401b0382111761209b57604052565b6020808252825181830181905290939260005b82811061215957505060409293506000838284010152601f8019910116010190565b818101860151848201604001528501612137565b1561217457565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b156121bf57565b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881b9bdd081d985b1a59607a1b6044820152606490fd5b818102929181159184041417156108c257565b8115612215570490565b634e487b7160e01b600052601260045260246000fd5b604d81116108c257600a0a90565b919082039182116108c257565b919082018092116108c257565b818103929160001380158285131691841216176108c257565b6014549192916122b5916122a69161229c91612292906001600160801b038316906121f8565b9060801c9061220b565b93601f54906121f8565b6122af8361222b565b9061220b565b80831061237d576122c96123059184612239565b916123006122fa6122f1601e546122eb6122e28661222b565b60205490612246565b906121f8565b6122af8461222b565b9161222b565b612253565b6509184e72a000908181029181830514901517156108c257670de0b6b3a7640000918281029281840514901517156108c257801561221557600160ff1b918083146000198314166108c257059060008212156123765781146108c257600003905b808211612371575090565b905090565b5090612366565b505050600090565b6001600160a01b039081166000818152601760209081526040822054929594939192909181156124c2576123b7613152565b906123c38615156126d4565b6009541683600c54898752601882526064604088205491604051948593849263442c159960e01b8452600484015260248301528960448301525afa9081156124b7578591612488575b509285949261246860189361244361247c9961243e61243560409a620186a060215404906121f8565b601e54906121f8565b61220b565b815190936001600160801b0391869161245e918416906121f8565b920151169061220b565b81811061248057035b978352522054612720565b9091565b505082612471565b90508381813d83116124b0575b61249f8183612103565b81010312610f2a575161247c61240c565b503d612495565b6040513d87823e3d90fd5b5050509192505080918190565b519081151582036104f857565b60018060a01b03600f54169060409081519263d6d7d52560e01b8452828460209283600483015260006010546125118161204e565b908160248601526001908582821691826000146126b057505060011461266c575b5050600083809203925af18015612661576000948591612626575b509284156125c857831561258e57505081601155817f9f9192b5edb17356c524e08d9e025c8e2f6307e6ea52fb7968faa3081f51c3c8600080a25b42601355565b60649250519062461bcd60e51b8252600482015260146024820152734d61726b65743a20696e76616c6964207261746560601b6044820152fd5b909192506125db60135460125490612246565b42116125ec57505060115490612588565b60649250519062461bcd60e51b82526004820152601460248201527313585c9ad95d0e881c985d19481d1bdbc81bdb1960621b6044820152fd5b9490508385813d831161265a575b61263e8183612103565b81010312610306575080612651856124cf565b9401513861254d565b503d612634565b83513d6000823e3d90fd5b915060106000528560002091866000935b83851061269557505050508201604401600083612532565b80548c8601604401528a97508b96509301928790820161267d565b8195506000949193506044925060ff191682840152151560051b8201019250612532565b156126db57565b60405162461bcd60e51b815260206004820152601e60248201527f4d61726b65743a2065786368616e676552617465206e6f742076616c696400006044820152606490fd5b61272b8215156126d4565b602060018060a01b0360095416916064600c54604051948593849263442c159960e01b845260048401526024830152600060448301525afa9081156127cb57600091612798575b509061243e61278492602154906121f8565b620186a0612794601e54836121f8565b0491565b906020823d82116127c3575b816127b160209383612103565b8101031261030657505161243e612772565b3d91506127a4565b6040513d6000823e3d90fd5b6001600160a01b031660008181526018602052604081205490926127fa91612720565b9183526017602052604083205480156129035781156129035781811061290357828110156128f9576014546128439183916110a691612292906001600160801b038316906121f8565b90620186a092838302928084048514901517156128e55761286892916122af91612239565b91601b5491601c549361287b8585612253565b80820291848212600160ff1b8214166128e55781830514901517156128d157058184820194851291129080158216911516176128bd5750808212612371575090565b634e487b7160e01b81526011600452602490fd5b634e487b7160e01b83526011600452602483fd5b634e487b7160e01b85526011600452602485fd5b50505050601b5490565b50505090565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03161480612a0a575b15612964577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f000000000000000000000000000000000000000000000000000000000000000082527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a0815260c081018181106001600160401b0382111761209b5760405251902090565b507f0000000000000000000000000000000000000000000000000000000000000000461461293b565b15612a3a57565b60405162461bcd60e51b815260206004820152601660248201527545524332303a2062616c616e636520746f6f206c6f7760501b6044820152606490fd5b15612a7f57565b60405162461bcd60e51b815260206004820152601660248201527545524332303a206e6f207a65726f206164647265737360501b6044820152606490fd5b51906001600160a01b03821682036104f857565b60058110156120385780612ae25750565b60018103612b2a5760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b6044820152606490fd5b60028103612b775760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606490fd5b600314612b8057565b60405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608490fd5b9291906fa2a8918ca85bafe22016d0b997e4df60600160ff1b038311612c495791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa15612c3c5781516001600160a01b03811615612c36579190565b50600190565b50604051903d90823e3d90fd5b50505050600090600390565b7fe50de2333c10a9502fcb1d8ae13a51bbf423153dfc63c2b8997665b32154afc360018060a01b038092169160009083825260036020526040822094169384825260205284604082205580a4565b909160207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259160018060a01b03809416938460005260028352604060002095169485600052825280604060002055604051908152a3565b15612d0157565b606460405162461bcd60e51b815260206004820152602060248201527f4d61726b65743a2063616e6e6f742065786563757465206f6e20697473656c666044820152fd5b15612d4c57565b60405162461bcd60e51b815260206004820152600e60248201526d13585c9ad95d0e881c185d5cd95960921b6044820152606490fd5b6001600160a01b0316338103612d96575050565b6000818152602090600382526040918282203383528152848383205410612e005783825260038152828220338352815282822054600101612dd9575b5050505050565b612df493825260038152828220903383525220918254612239565b90553880808080612dd2565b60649083519062461bcd60e51b82526004820152601460248201527313585c9ad95d0e881b9bdd08185c1c1c9bdd995960621b6044820152fd5b60405190612e47826120b1565b6014546001600160801b038116835260801c6020830152565b919060018060a01b03806000941684526020601781526040852054908115612f58576018815260408620548015612dd25781612e9a612e3a565b9460095416916064600c54604051948593849263442c159960e01b8452600484015260248301528b60448301525afa968715612f4c578097612f16575b505061245e612ef6612435612f11969798620186a060215404906121f8565b95612f0c60018060801b039485875116906121f8565b6121f8565b111590565b9096508187813d8311612f45575b612f2e8183612103565b81010312610306575094519461245e612ef6612ed7565b503d612f24565b604051903d90823e3d90fd5b5060019450505050565b60ff602554166130d3576014546001600160801b03169081156130cc57600a54604051631848f2bf60e31b8152602093916001600160a01b03919085908290600490829086165afa80156127cb578591600091613093575b50600460405180948193631a674cc560e11b8352165afa9384156127cb57600094613064575b5050612ffc9192670de0b6b3a7640000928391602854906121f8565b04908181101561305b576130136029548092612239565b838102908082048514901517156108c2576122af6130349261304f94612239565b6026549261304960275492612f0c8487612239565b04612246565b90808211612371575090565b50505060265490565b81813d831161308c575b6130788183612103565b8101031261143e57519250612ffc38612fe0565b503d61306e565b909181813d83116130c5575b6130a98183612103565b81010312611db657519082821682036103065750849038612fba565b503d61309f565b6027549150565b600a5460405163e6abad4960e01b815290602090829060049082906001600160a01b03165afa9081156127cb5760009161310b575090565b906020823d8211613131575b8161312460209383612103565b8101031261030657505190565b3d9150613117565b6001600160801b0391821690821601919082116108c257565b60006020604051613162816120b1565b82815201526001600160401b03906131818260245460401c1642612239565b9182156131d8576131d3612f0c91670de0b6b3a76400006131c86131a3612e3a565b9660018060801b03958694858a5116906301e133806131c0612f62565b0416906121f8565b041682855116613139565b168252565b5090506131e3612e3a565b90565b6040516131f2816120b1565b6024546001600160401b03908181168352818160401c1661321a602085019180835242612239565b928315612dd257602094816301e13380613232612f62565b041681528142168352613243612e3a565b670de0b6b3a764000061326860018060801b0397612f0c8985511687875116906121f8565b049561327981881682845116613139565b1680825296015160801b6001600160801b031990811690961760145551915192909416931692831760409190911b67ffffffffffffffff60401b16176024557f7484db546dcd57af0104c73c8a6968dfbaf5767f047cee0dadd0499ad7df81a0600080a356feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae672a2646970667358221220bef39f6b490096eaa1e8d926eac411159da5d2d4f5f5ff5f896ffa34eabf6b2b64736f6c63430008120033", - "deployedBytecode": "0x608080604052600436101561001357600080fd5b600090813560e01c908162a02a2014611f095750806302ce728f14611ee0578063078dfbe714611de1578063095ea7b314611dba5780630c4e84f014611c9e57806318160ddd14611c825780631c9e379b14611c495780631d4d3a5d14611c205780631da8bf1014611b4c5780631fb8f81a14611b2e57806323b872dd146119a7578063331960ff1461198957806334ce998a1461196057806334d441d0146119425780633644e5151461192757806337b6b7b91461190957806338d52e0f146118e05780633ba0b9a9146118c25780633f741adb1461189d57806340626d8b1461187f57806344de240a14611861578063473e3ce71461184357806348e4163e1461180a5780634e71e0c81461175c578063529898f21461173f578063542afda31461172157806357935462146117035780636b19ad16146116e55780636c3d8b8f146116bc57806370a0823114611683578063727785471461164b57806374645ff3146115ba57806374c9e4811461159c5780637dc0d1d0146115735780637ecebe001461153a5780637fa0b84e146115085780638285ef40146114d657806387b279371461149d5780638c5d0ed31461147f5780638da5cb5b14611456578063910dd7c814611221578063932bc4f81461114557806399a970281461111d5780639e15e89f146110e2578063a9059cbb14610fff578063b0e21e8a14610fe1578063b27c0e7414610fb0578063b7113f1914610f8d578063bb4cfe3b14610f6f578063bde39c5d14610f51578063c1ad5c8d14610f2e578063cce19f8114610dae578063ce8849ed14610d85578063d3fb2a381461091d578063d505accf1461077c578063d8dfeb4514610753578063dd62ed3e14610704578063de406577146106db578063e0996cb6146106bd578063e30c397814610694578063e9a4925214610363578063ea64dd5614610345578063eec0f42e14610327578063f791395d146103095763f8ba4cff146102eb57600080fd5b346103065780600319360112610306576103036131e6565b80f35b80fd5b50346103065780600319360112610306576020602754604051908152f35b50346103065780600319360112610306576020600c54604051908152f35b50346103065780600319360112610306576020601f54604051908152f35b50346103065760a03660031901126103065761037d611f51565b610385611f67565b9061038e611f8c565b608435926001600160a01b039081169290916064356103af30861415612cfa565b6002600052602090600782526103cd60ff6040600020541615612d45565b8615610616575b6103de8785612d82565b8615610595575b5084875260188152604087206103fc878254612246565b905560155461040b8782612246565b601555600c549088841561050f575082866009541692604460405180958193627eeac760e11b835230600484015260248301525afa80156105045789906104d0575b6104579250612239565b861161049857505b15610493575080600954165b167f9ed03113de523cebfe5e49d5f8e12894b1c0d42ce805990461726444c90eab878480a480f35b61046b565b6064906040519062461bcd60e51b825260048201526011602482015270084d2ce84c2dcce7440e8dede40daeac6d607b1b6044820152fd5b508282813d83116104fd575b6104e68183612103565b810103126104f857610457915161044d565b600080fd5b503d6104dc565b6040513d8b823e3d90fd5b9250508460095416803b1561059157604051630208d92960e11b81526001600160a01b038616600482015230602482015260448101929092526064820188905282908290608490829084905af180156105865761056e575b505061045f565b61057790612088565b610582578538610567565b8580fd5b6040513d84823e3d90fd5b8280fd5b908096508460095416916064600c546040519485938492638eb22cdd60e01b8452600484015260248301528b60448301525afa90811561060b5787916105de575b5094386103e5565b90508581813d8311610604575b6105f58183612103565b810103126104f85751386105d6565b503d6105eb565b6040513d89823e3d90fd5b9550836009541681600c54606460405180948193638eb22cdd60e01b835260048301528b60248301528c60448301525afa90811561068957889161065c575b50956103d4565b90508181813d8311610682575b6106738183612103565b810103126104f8575138610655565b503d610669565b6040513d8a823e3d90fd5b50346103065780600319360112610306576006546040516001600160a01b039091168152602090f35b50346103065780600319360112610306576020601d54604051908152f35b50346103065780600319360112610306576009546040516001600160a01b039091168152602090f35b50346103065760403660031901126103065761071e611f51565b6040610728611f67565b9260018060a01b03809316815260026020522091166000526020526020604060002054604051908152f35b5034610306578060031936011261030657600b546040516001600160a01b039091168152602090f35b50346103065761078b36611f9b565b9183919395949542116108d85760018060a01b039283881694856000526004602052604060002092835460001981146108c25761086e95610866956001830190556040519060208201927f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e2668452600060408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e0815261082a816120cc565b519020610835612909565b9060405190602082019261190160f01b8452602283015260428201526042815261085e816120e8565b519020612bd0565b919091612ad1565b160361087d5761030392612ca3565b60405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152606490fd5b634e487b7160e01b600052601160045260246000fd5b60405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b503461030657610160366003190112610306576001600160a01b0360043581811690819003610591576024916001600160401b0383358181116105825736602382011215610582578060040135918211610582573685838301011161058257604435938385168095036104f8576109998460055416331461216d565b80610d47575b508482610bed575b50505081610bad575b505060643580610b95575b5060843580610b7d575b5060a43580610b66575b5060c43580610b42575b5060e43580610b1e575b506101043580610aed575b506101243580610a7a575b50610144359081610a08578280f35b601e548210610a1b5750601f5538808280f35b60849060326040519162461bcd60e51b8352602060048401528201527f4d61726b65743a206c69717569646174696f6e436f6c6c61746572616c697a616044820152711d1a5bdb94985d19481d1bdbc81cdb585b1b60721b6064820152fd5b610a89620186a08211156121b8565b601f548111610a9b57601e55386109f9565b60405162461bcd60e51b8152602060048201526025818401527f4d61726b65743a20636f6c6c61746572616c697a6174696f6e5261746520746f6044820152646f2062696760d81b6064820152608490fd5b806016547fae6e0ab3b95f0a53ff9660a390ccedcbbf1f2355dce974a9841af106fddcfaba8580a3601655386109ee565b610b2c620186a082106121b8565b610b39601b5482116121b8565b601c55386109e3565b610b50620186a082106121b8565b610b5d601c5482106121b8565b601b55386109d9565b610b74620186a082106121b8565b601d55386109cf565b610b8c620186a08211156121b8565b601a55386109c5565b610ba4620186a08211156121b8565b601955386109bb565b816008549182167f5a62d22209e370e38eea92cfddcd228e656e6ec139243392a760a7769f5877fd8680a36001600160a01b0319161760085538806109b0565b8291610bfa60105461204e565b601f8111610ce8575b508790601f8411600114610c68578893610c5b575b5050508160011b916000199060031b1c1916176010555b7fa6f004921c944d4b8bf6e38462b00f36a58d62495d56b51f571ab78f732c98158480a13880846109a7565b0101359050843880610c18565b60108952601f198416945060008051602061330083398151915292509087908960205b878210610cc95750508460019610610cad575b50505050811b01601055610c2f565b60001960f88660031b161c199201013516905538808681610c9e565b8285019093013585556001949094019389929182019190810190610c8b565b601089529092509050600080516020613300833981519152601f840160051c810160208510610d40575b91849391601f8994920160051c01905b818110610d2f5750610c03565b898155859450889350600101610d22565b5080610d12565b600f80546001600160a01b0319169190911790557f0b2d6eb667d0522c3eb86e4288afecae6c11591ffd1345d4d12407e0598bca9b8680a13861099f565b50346103065780600319360112610306576008546040516001600160a01b039091168152602090f35b50346103065780610dbe36611fea565b600384929394526007602052610ddb60ff60408420541615612d45565b610de36124dc565b5050610ded6131e6565b6001600160a01b038381169390610e0630861415612cfa565b610e108387612d82565b8281871695868652601860205260408620610e2c838254612239565b9055610e3a82601554612239565b601555604051967f8ad4d3ff00da092c7ad9a573ea4f5f6a3dffc6712dc06d3f78f49b862297c4028780a46009541690600c5492823b15610f2a57630208d92960e11b86523060048701526001600160a01b03919091166024860152604485019290925260648401919091528290608490829084905af18015610f1f57610f0a575b50601154610ec991612e60565b15610ed15780f35b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881a5b9cdbdb1d995b9d607a1b6044820152606490fd5b91610f18610ec99293612088565b9190610ebc565b6040513d85823e3d90fd5b8480fd5b50346103065780600319360112610306576020610f49612f62565b604051908152f35b50346103065780600319360112610306576020602854604051908152f35b50346103065780600319360112610306576020601e54604051908152f35b5034610306578060031936011261030657602060ff602554166040519015158152f35b503461030657806003193601126103065760406024548151906001600160401b03908181168352831c166020820152f35b50346103065780600319360112610306576020601a54604051908152f35b503461030657604036600319011261030657611019611f51565b602435809281158015906110d0575b611060575b50506040519182526001600160a01b03169033906000805160206132e083398151915290602090a3602060405160018152f35b3381526001602052604081205461107983821015612a33565b6001600160a01b0384169033829003611094575b505061102d565b6040936110ab916110a6841515612a78565b612239565b3383526001602052838320558152206110c5838254612246565b90558138808061108d565b50336001600160a01b03841614611028565b503461030657604036600319011261030657606061110a611101611f51565b60243590612385565b9060405192835260208301526040820152f35b5034610306576040366003190112610306576020610f4961113c611f51565b602435906127d7565b503461030657806003193601126103065760405181602b546111668161204e565b808452906001908181169081156111f957506001146111a0575b61119c8461119081880382612103565b60405191829182612124565b0390f35b602b8352602094507f11c44e4875b74d31ff9fd779bf2566af7bd15b87fc985d01f5094b89e3669e4f5b8284106111e6575050508161119c936111909282010193611180565b80548585018701529285019281016111ca565b61119c96506111909450602092508593915060ff191682840152151560051b82010193611180565b5034610306576040366003190112610306576004356001600160401b0380821161059157366023830112156105915781600401359081116114425782604051926112756020601f19601f8601160185612103565b82845260208401923660248284010111610591578060246020930185378401015260243561ffff8116810361143e57610100918284805181010312610f2a576112bd906124cf565b6112c960408501612abd565b916112d660608601612abd565b9460808101519460a08201519260c08301519160ff8316830361143a5760e0840151930151938042116108d8578515611413577f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e266915b6001600160a01b0388168b52600460205260408b208054919060001983146113ff579161ffff6113bc9896949261086698969460018401905560405194602086015216604084015260018060a01b038a16606084015260018060a01b038c1660808401528a60a084015260c083015260e082015260e081526113ad816120cc565b60208151910120610835612909565b6001600160a01b0383811691160361087d57156113e957610303926001600160a01b039081169116612ca3565b610303926001600160a01b039081169116612c55565b634e487b7160e01b8d52601160045260248dfd5b7f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d69161132c565b8980fd5b8380fd5b634e487b7160e01b83526041600452602483fd5b50346103065780600319360112610306576005546040516001600160a01b039091168152602090f35b50346103065780600319360112610306576020601b54604051908152f35b5034610306576020366003190112610306576020906040906001600160a01b036114c5611f51565b168152602383522054604051908152f35b5034610306578060031936011261030657601454604080516001600160801b038316815260809290921c602083015290f35b50346103065760403660031901126103065761152f611525611f51565b6024359033612c55565b602060405160018152f35b5034610306576020366003190112610306576020906040906001600160a01b03611562611f51565b168152600483522054604051908152f35b5034610306578060031936011261030657600f546040516001600160a01b039091168152602090f35b50346103065780600319360112610306576020602d54604051908152f35b5034610306578060031936011261030657604051816010546115db8161204e565b808452906001908181169081156111f957506001146116045761119c8461119081880382612103565b60108352602094506000805160206133008339815191525b828410611638575050508161119c936111909282010193611180565b805485850187015292850192810161161c565b50346103065760203660031901126103065760043590600982101561030657602060ff6116778461201f565b54166040519015158152f35b5034610306576020366003190112610306576020906040906001600160a01b036116ab611f51565b168152600183522054604051908152f35b5034610306578060031936011261030657600a546040516001600160a01b039091168152602090f35b50346103065780600319360112610306576020602654604051908152f35b50346103065780600319360112610306576020601c54604051908152f35b50346103065780600319360112610306576020602c54604051908152f35b503461030657806003193601126103065760208054604051908152f35b50346103065780600319360112610306576006546001600160a01b0390818116338190036117c657806005549384167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08680a36001600160a01b0319928316176005551660065580f35b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b5034610306576020366003190112610306576020906040906001600160a01b03611832611f51565b168152601783522054604051908152f35b50346103065780600319360112610306576020601554604051908152f35b50346103065780600319360112610306576020600e54604051908152f35b50346103065780600319360112610306576020601654604051908152f35b5034610306576060366003190112610306576020610f4960443560243560043561226c565b50346103065780600319360112610306576020601154604051908152f35b5034610306578060031936011261030657600d546040516001600160a01b039091168152602090f35b50346103065780600319360112610306576020601254604051908152f35b50346103065780600319360112610306576020610f49612909565b50346103065780600319360112610306576020601954604051908152f35b50346103065780600319360112610306576014546040516001600160801b039091168152602090f35b50346103065780600319360112610306576020601354604051908152f35b5034610306576119b636611fea565b9192826119f2575b506040519182526001600160a01b039081169216906000805160206132e083398151915290602090a3602060405160018152f35b6001600160a01b03848116808352600160209081526040842054928690611a1b82861015612a33565b861693848403611a30575b50505050506119be565b838652600283526040808720338852845286205460018101611a9a575b5092600160209693611a7887946040976110a66000805160206132e08339815191529c9a1515612a78565b9285525283832055815220611a8e858254612246565b90559138808581611a26565b90918110611aee5792600160209693611a788a6000805160206132e08339815191529a9895611acb8260409a612239565b86895260028552898920338a528552898920559497509497995050939650611a4d565b60405162461bcd60e51b815260048101849052601860248201527745524332303a20616c6c6f77616e636520746f6f206c6f7760401b6044820152606490fd5b50346103065780600319360112610306576020602954604051908152f35b503461030657611b5b36611f9b565b908395949542116108d8576001600160a01b03878116808a52600460205260408a2080549196929592906000198314611c0c5782611bfd9694928d92600161086698960190556040519160208301937f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d6855260408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e0815261082a816120cc565b160361087d5761030392612c55565b634e487b7160e01b8c52601160045260248cfd5b5034610306578060031936011261030657602a546040516001600160a01b039091168152602090f35b5034610306576020366003190112610306576020906040906001600160a01b03611c71611f51565b168152601883522054604051908152f35b5034610306578060031936011261030657602090604051908152f35b5034610306576040366003190112610306576004356009811015611db657611cc4611f7d565b6008549091906001600160a01b03163303611d7a5760ff611ce48261201f565b54161515911515918214611d4057808260ff611d02611d309461201f565b54161515827feeec81de25875ce1725479bb76f720a8defdb43dea041919ae37bb4aae9847c08780a461201f565b9060ff8019835416911617905580f35b60405162461bcd60e51b81526020600482015260126024820152714d61726b65743a2073616d6520737461746560701b6044820152606490fd5b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881d5b985d5d1a1bdc9a5e995960621b6044820152606490fd5b5080fd5b50346103065760403660031901126103065761152f611dd7611f51565b6024359033612ca3565b503461030657606036600319011261030657611dfb611f51565b611e03611f7d565b611e0b611f8c565b9060018060a01b03928391611e258360055416331461216d565b15611ec9571690811590811591611ec1575b5015611e8457806005549283167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08580a36001600160a01b03199182161760055560068054909116905580f35b60405162461bcd60e51b81526020600482015260156024820152744f776e61626c653a207a65726f206164647265737360581b6044820152606490fd5b905038611e37565b9150501660018060a01b0319600654161760065580f35b50346103065780600319360112610306576040611efb6124dc565b825191151582526020820152f35b905034611db6576040366003190112611db6576040602092611f29611f51565b611f31611f67565b6001600160a01b0391821683526003865283832091168252845220548152f35b600435906001600160a01b03821682036104f857565b602435906001600160a01b03821682036104f857565b6024359081151582036104f857565b6044359081151582036104f857565b60e09060031901126104f8576001600160a01b039060043582811681036104f8579160243590811681036104f85790604435906064359060843560ff811681036104f8579060a4359060c43590565b60609060031901126104f8576001600160a01b039060043582811681036104f8579160243590811681036104f8579060443590565b6009811015612038576000526007602052604060002090565b634e487b7160e01b600052602160045260246000fd5b90600182811c9216801561207e575b602083101461206857565b634e487b7160e01b600052602260045260246000fd5b91607f169161205d565b6001600160401b03811161209b57604052565b634e487b7160e01b600052604160045260246000fd5b604081019081106001600160401b0382111761209b57604052565b61010081019081106001600160401b0382111761209b57604052565b608081019081106001600160401b0382111761209b57604052565b90601f801991011681019081106001600160401b0382111761209b57604052565b6020808252825181830181905290939260005b82811061215957505060409293506000838284010152601f8019910116010190565b818101860151848201604001528501612137565b1561217457565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b156121bf57565b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881b9bdd081d985b1a59607a1b6044820152606490fd5b818102929181159184041417156108c257565b8115612215570490565b634e487b7160e01b600052601260045260246000fd5b604d81116108c257600a0a90565b919082039182116108c257565b919082018092116108c257565b818103929160001380158285131691841216176108c257565b6014549192916122b5916122a69161229c91612292906001600160801b038316906121f8565b9060801c9061220b565b93601f54906121f8565b6122af8361222b565b9061220b565b80831061237d576122c96123059184612239565b916123006122fa6122f1601e546122eb6122e28661222b565b60205490612246565b906121f8565b6122af8461222b565b9161222b565b612253565b6509184e72a000908181029181830514901517156108c257670de0b6b3a7640000918281029281840514901517156108c257801561221557600160ff1b918083146000198314166108c257059060008212156123765781146108c257600003905b808211612371575090565b905090565b5090612366565b505050600090565b6001600160a01b039081166000818152601760209081526040822054929594939192909181156124c2576123b7613152565b906123c38615156126d4565b6009541683600c54898752601882526064604088205491604051948593849263442c159960e01b8452600484015260248301528960448301525afa9081156124b7578591612488575b509285949261246860189361244361247c9961243e61243560409a620186a060215404906121f8565b601e54906121f8565b61220b565b815190936001600160801b0391869161245e918416906121f8565b920151169061220b565b81811061248057035b978352522054612720565b9091565b505082612471565b90508381813d83116124b0575b61249f8183612103565b81010312610f2a575161247c61240c565b503d612495565b6040513d87823e3d90fd5b5050509192505080918190565b519081151582036104f857565b60018060a01b03600f54169060409081519263d6d7d52560e01b8452828460209283600483015260006010546125118161204e565b908160248601526001908582821691826000146126b057505060011461266c575b5050600083809203925af18015612661576000948591612626575b509284156125c857831561258e57505081601155817f9f9192b5edb17356c524e08d9e025c8e2f6307e6ea52fb7968faa3081f51c3c8600080a25b42601355565b60649250519062461bcd60e51b8252600482015260146024820152734d61726b65743a20696e76616c6964207261746560601b6044820152fd5b909192506125db60135460125490612246565b42116125ec57505060115490612588565b60649250519062461bcd60e51b82526004820152601460248201527313585c9ad95d0e881c985d19481d1bdbc81bdb1960621b6044820152fd5b9490508385813d831161265a575b61263e8183612103565b81010312610306575080612651856124cf565b9401513861254d565b503d612634565b83513d6000823e3d90fd5b915060106000528560002091866000935b83851061269557505050508201604401600083612532565b80548c8601604401528a97508b96509301928790820161267d565b8195506000949193506044925060ff191682840152151560051b8201019250612532565b156126db57565b60405162461bcd60e51b815260206004820152601e60248201527f4d61726b65743a2065786368616e676552617465206e6f742076616c696400006044820152606490fd5b61272b8215156126d4565b602060018060a01b0360095416916064600c54604051948593849263442c159960e01b845260048401526024830152600060448301525afa9081156127cb57600091612798575b509061243e61278492602154906121f8565b620186a0612794601e54836121f8565b0491565b906020823d82116127c3575b816127b160209383612103565b8101031261030657505161243e612772565b3d91506127a4565b6040513d6000823e3d90fd5b6001600160a01b031660008181526018602052604081205490926127fa91612720565b9183526017602052604083205480156129035781156129035781811061290357828110156128f9576014546128439183916110a691612292906001600160801b038316906121f8565b90620186a092838302928084048514901517156128e55761286892916122af91612239565b91601b5491601c549361287b8585612253565b80820291848212600160ff1b8214166128e55781830514901517156128d157058184820194851291129080158216911516176128bd5750808212612371575090565b634e487b7160e01b81526011600452602490fd5b634e487b7160e01b83526011600452602483fd5b634e487b7160e01b85526011600452602485fd5b50505050601b5490565b50505090565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03161480612a0a575b15612964577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f000000000000000000000000000000000000000000000000000000000000000082527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a0815260c081018181106001600160401b0382111761209b5760405251902090565b507f0000000000000000000000000000000000000000000000000000000000000000461461293b565b15612a3a57565b60405162461bcd60e51b815260206004820152601660248201527545524332303a2062616c616e636520746f6f206c6f7760501b6044820152606490fd5b15612a7f57565b60405162461bcd60e51b815260206004820152601660248201527545524332303a206e6f207a65726f206164647265737360501b6044820152606490fd5b51906001600160a01b03821682036104f857565b60058110156120385780612ae25750565b60018103612b2a5760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b6044820152606490fd5b60028103612b775760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606490fd5b600314612b8057565b60405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608490fd5b9291906fa2a8918ca85bafe22016d0b997e4df60600160ff1b038311612c495791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa15612c3c5781516001600160a01b03811615612c36579190565b50600190565b50604051903d90823e3d90fd5b50505050600090600390565b7fe50de2333c10a9502fcb1d8ae13a51bbf423153dfc63c2b8997665b32154afc360018060a01b038092169160009083825260036020526040822094169384825260205284604082205580a4565b909160207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259160018060a01b03809416938460005260028352604060002095169485600052825280604060002055604051908152a3565b15612d0157565b606460405162461bcd60e51b815260206004820152602060248201527f4d61726b65743a2063616e6e6f742065786563757465206f6e20697473656c666044820152fd5b15612d4c57565b60405162461bcd60e51b815260206004820152600e60248201526d13585c9ad95d0e881c185d5cd95960921b6044820152606490fd5b6001600160a01b0316338103612d96575050565b6000818152602090600382526040918282203383528152848383205410612e005783825260038152828220338352815282822054600101612dd9575b5050505050565b612df493825260038152828220903383525220918254612239565b90553880808080612dd2565b60649083519062461bcd60e51b82526004820152601460248201527313585c9ad95d0e881b9bdd08185c1c1c9bdd995960621b6044820152fd5b60405190612e47826120b1565b6014546001600160801b038116835260801c6020830152565b919060018060a01b03806000941684526020601781526040852054908115612f58576018815260408620548015612dd25781612e9a612e3a565b9460095416916064600c54604051948593849263442c159960e01b8452600484015260248301528b60448301525afa968715612f4c578097612f16575b505061245e612ef6612435612f11969798620186a060215404906121f8565b95612f0c60018060801b039485875116906121f8565b6121f8565b111590565b9096508187813d8311612f45575b612f2e8183612103565b81010312610306575094519461245e612ef6612ed7565b503d612f24565b604051903d90823e3d90fd5b5060019450505050565b60ff602554166130d3576014546001600160801b03169081156130cc57600a54604051631848f2bf60e31b8152602093916001600160a01b03919085908290600490829086165afa80156127cb578591600091613093575b50600460405180948193631a674cc560e11b8352165afa9384156127cb57600094613064575b5050612ffc9192670de0b6b3a7640000928391602854906121f8565b04908181101561305b576130136029548092612239565b838102908082048514901517156108c2576122af6130349261304f94612239565b6026549261304960275492612f0c8487612239565b04612246565b90808211612371575090565b50505060265490565b81813d831161308c575b6130788183612103565b8101031261143e57519250612ffc38612fe0565b503d61306e565b909181813d83116130c5575b6130a98183612103565b81010312611db657519082821682036103065750849038612fba565b503d61309f565b6027549150565b600a5460405163e6abad4960e01b815290602090829060049082906001600160a01b03165afa9081156127cb5760009161310b575090565b906020823d8211613131575b8161312460209383612103565b8101031261030657505190565b3d9150613117565b6001600160801b0391821690821601919082116108c257565b60006020604051613162816120b1565b82815201526001600160401b03906131818260245460401c1642612239565b9182156131d8576131d3612f0c91670de0b6b3a76400006131c86131a3612e3a565b9660018060801b03958694858a5116906301e133806131c0612f62565b0416906121f8565b041682855116613139565b168252565b5090506131e3612e3a565b90565b6040516131f2816120b1565b6024546001600160401b03908181168352818160401c1661321a602085019180835242612239565b928315612dd257602094816301e13380613232612f62565b041681528142168352613243612e3a565b670de0b6b3a764000061326860018060801b0397612f0c8985511687875116906121f8565b049561327981881682845116613139565b1680825296015160801b6001600160801b031990811690961760145551915192909416931692831760409190911b67ffffffffffffffff60401b16176024557f7484db546dcd57af0104c73c8a6968dfbaf5767f047cee0dadd0499ad7df81a0600080a356feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae672a2646970667358221220bef39f6b490096eaa1e8d926eac411159da5d2d4f5f5ff5f896ffa34eabf6b2b64736f6c63430008120033", + "bytecode": "0x61014080604052346200018a5762000017816200018f565b600f81526001602082016e546170696f63612042696742616e6760881b8152602060405162000046816200018f565b8381520192603160f81b845251902091208160e052610100918183524660a0526040519160208301907f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f92838352604085015260608401524660808401523060a084015260a0835260c083019280841060018060401b03851117620001745760408490525190206080523060c052610120908152600580546001600160a01b0319163390811790915560007f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a362013880601b5562015f90601c55612710601d55612ee06020556103e8602e556134549283620001ac843960805183612a41015260a05183612b0c015260c05183612a0b015260e05183612a9001525182612ab601525181612a6d0152f35b634e487b7160e01b600052604160045260246000fd5b600080fd5b604081019081106001600160401b03821117620001745760405256fe608080604052600436101561001357600080fd5b600090813560e01c908162a02a20146120085750806302ce728f14611fdf578063078dfbe714611ee0578063095ea7b314611eb95780630c4e84f014611d9d5780630f8b29ea14611d7f57806318160ddd14611d635780631c9e379b14611d2a5780631d4d3a5d14611d015780631da8bf1014611c2d5780631fb8f81a14611c0f57806323b872dd14611a88578063331960ff14611a6a57806334ce998a14611a4157806334d441d014611a235780633644e51514611a0857806337b6b7b9146119ea57806338d52e0f146119c15780633ba0b9a9146119a35780633f741adb1461197e57806340626d8b1461196057806344de240a14611942578063473e3ce71461192457806348e4163e146118eb5780634e71e0c81461183d578063529898f214611820578063542afda31461180257806357935462146117e45780636b19ad16146117c65780636c3d8b8f1461179d57806370a0823114611764578063727785471461172c57806374645ff31461169b57806374c9e4811461167d578063790c84671461165f5780637dc0d1d0146116365780637ecebe00146115fd5780637fa0b84e146115cb5780638285ef401461159957806387b27937146115605780638c5d0ed3146115425780638da5cb5b14611519578063910dd7c8146112e4578063932bc4f81461120857806399a97028146111e05780639e15e89f146111a5578063a9059cbb146110c2578063b0e21e8a146110a4578063b27c0e7414611073578063b7113f1914611050578063bb4cfe3b14611032578063bde39c5d14611014578063c1ad5c8d14610ff1578063cce19f8114610e71578063ce8849ed14610e48578063d3fb2a38146109e0578063d505accf1461083f578063d8dfeb4514610816578063da863f0e146107ed578063dd62ed3e1461079e578063de40657714610775578063e0996cb614610757578063e30c39781461072e578063e9a4925214610406578063ea64dd56146103e8578063eec0f42e146103ca578063ef2b234a14610353578063f791395d146103355763f8ba4cff1461031757600080fd5b3461033257806003193601126103325761032f6132e5565b80f35b80fd5b50346103325780600319360112610332576020602854604051908152f35b5034610332576020366003190112610332576004356001600160a01b03818116918290036103c65761038a8160055416331461226c565b816021549182167ffb4fd7114609dd603b57adbc2082205bfbbcabf9265c4b437b472f5c592b8cd78580a36001600160a01b0319161760215580f35b8280fd5b50346103325780600319360112610332576020600c54604051908152f35b50346103325780600319360112610332576020601f54604051908152f35b50346103325760a036600319011261033257610420612050565b610428612066565b9061043161208b565b608435926001600160a01b0390811692909160643561045230861415612df9565b60026000526020906007825261047060ff6040600020541615612e44565b86156106b0575b6104818785612e81565b861561062f575b50848752601881526040872061049f878254612345565b90556015546104ae8782612345565b601555600c54908884156105ad575082866009541692604460405180958193627eeac760e11b835230600484015260248301525afa80156105a257899061056e575b6104fa9250612338565b861161053b57505b15610536575080600954165b167f9ed03113de523cebfe5e49d5f8e12894b1c0d42ce805990461726444c90eab878480a480f35b61050e565b6064906040519062461bcd60e51b82526004820152600c60248201526b084847440e8dede40daeac6d60a31b6044820152fd5b508282813d831161059b575b6105848183612202565b81010312610596576104fa91516104f0565b600080fd5b503d61057a565b6040513d8b823e3d90fd5b9250508460095416803b156103c657604051630208d92960e11b81526001600160a01b038616600482015230602482015260448101929092526064820188905282908290608490829084905af180156106245761060c575b5050610502565b61061590612187565b610620578538610605565b8580fd5b6040513d84823e3d90fd5b908096508460095416916064600c546040519485938492638eb22cdd60e01b8452600484015260248301528b60448301525afa9081156106a5578791610678575b509438610488565b90508581813d831161069e575b61068f8183612202565b81010312610596575138610670565b503d610685565b6040513d89823e3d90fd5b9550836009541681600c54606460405180948193638eb22cdd60e01b835260048301528b60248301528c60448301525afa9081156107235788916106f6575b5095610477565b90508181813d831161071c575b61070d8183612202565b810103126105965751386106ef565b503d610703565b6040513d8a823e3d90fd5b50346103325780600319360112610332576006546040516001600160a01b039091168152602090f35b50346103325780600319360112610332576020601d54604051908152f35b50346103325780600319360112610332576009546040516001600160a01b039091168152602090f35b5034610332576040366003190112610332576107b8612050565b60406107c2612066565b9260018060a01b03809316815260026020522091166000526020526020604060002054604051908152f35b50346103325780600319360112610332576021546040516001600160a01b039091168152602090f35b5034610332578060031936011261033257600b546040516001600160a01b039091168152602090f35b50346103325761084e3661209a565b91839193959495421161099b5760018060a01b039283881694856000526004602052604060002092835460001981146109855761093195610929956001830190556040519060208201927f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e2668452600060408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e081526108ed816121cb565b5190206108f8612a08565b9060405190602082019261190160f01b84526022830152604282015260428152610921816121e7565b519020612ccf565b919091612bd0565b16036109405761032f92612da2565b60405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152606490fd5b634e487b7160e01b600052601160045260246000fd5b60405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b503461033257610160366003190112610332576001600160a01b03600435818116908190036103c6576024916001600160401b03833581811161062057366023820112156106205780600401359182116106205736858383010111610620576044359383851680950361059657610a5c8460055416331461226c565b80610e0a575b508482610cb0575b50505081610c70575b505060643580610c58575b5060843580610c40575b5060a43580610c29575b5060c43580610c05575b5060e43580610be1575b506101043580610bb0575b506101243580610b3d575b50610144359081610acb578280f35b601e548210610ade5750601f5538808280f35b60849060326040519162461bcd60e51b8352602060048401528201527f4d61726b65743a206c69717569646174696f6e436f6c6c61746572616c697a616044820152711d1a5bdb94985d19481d1bdbc81cdb585b1b60721b6064820152fd5b610b4c620186a08211156122b7565b601f548111610b5e57601e5538610abc565b60405162461bcd60e51b8152602060048201526025818401527f4d61726b65743a20636f6c6c61746572616c697a6174696f6e5261746520746f6044820152646f2062696760d81b6064820152608490fd5b806016547fae6e0ab3b95f0a53ff9660a390ccedcbbf1f2355dce974a9841af106fddcfaba8580a360165538610ab1565b610bef620186a082106122b7565b610bfc601b5482116122b7565b601c5538610aa6565b610c13620186a082106122b7565b610c20601c5482106122b7565b601b5538610a9c565b610c37620186a082106122b7565b601d5538610a92565b610c4f620186a08211156122b7565b601a5538610a88565b610c67620186a08211156122b7565b60195538610a7e565b816008549182167f5a62d22209e370e38eea92cfddcd228e656e6ec139243392a760a7769f5877fd8680a36001600160a01b031916176008553880610a73565b8291610cbd60105461214d565b601f8111610dab575b508790601f8411600114610d2b578893610d1e575b5050508160011b916000199060031b1c1916176010555b7fa6f004921c944d4b8bf6e38462b00f36a58d62495d56b51f571ab78f732c98158480a1388084610a6a565b0101359050843880610cdb565b60108952601f19841694506000805160206133ff83398151915292509087908960205b878210610d8c5750508460019610610d70575b50505050811b01601055610cf2565b60001960f88660031b161c199201013516905538808681610d61565b8285019093013585556001949094019389929182019190810190610d4e565b6010895290925090506000805160206133ff833981519152601f840160051c810160208510610e03575b91849391601f8994920160051c01905b818110610df25750610cc6565b898155859450889350600101610de5565b5080610dd5565b600f80546001600160a01b0319169190911790557f0b2d6eb667d0522c3eb86e4288afecae6c11591ffd1345d4d12407e0598bca9b8680a138610a62565b50346103325780600319360112610332576008546040516001600160a01b039091168152602090f35b50346103325780610e81366120e9565b600384929394526007602052610e9e60ff60408420541615612e44565b610ea66125db565b5050610eb06132e5565b6001600160a01b038381169390610ec930861415612df9565b610ed38387612e81565b8281871695868652601860205260408620610eef838254612338565b9055610efd82601554612338565b601555604051967f8ad4d3ff00da092c7ad9a573ea4f5f6a3dffc6712dc06d3f78f49b862297c4028780a46009541690600c5492823b15610fed57630208d92960e11b86523060048701526001600160a01b03919091166024860152604485019290925260648401919091528290608490829084905af18015610fe257610fcd575b50601154610f8c91612f5f565b15610f945780f35b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881a5b9cdbdb1d995b9d607a1b6044820152606490fd5b91610fdb610f8c9293612187565b9190610f7f565b6040513d85823e3d90fd5b8480fd5b5034610332578060031936011261033257602061100c613061565b604051908152f35b50346103325780600319360112610332576020602954604051908152f35b50346103325780600319360112610332576020601e54604051908152f35b5034610332578060031936011261033257602060ff602654166040519015158152f35b503461033257806003193601126103325760406025548151906001600160401b03908181168352831c166020820152f35b50346103325780600319360112610332576020601a54604051908152f35b5034610332576040366003190112610332576110dc612050565b60243580928115801590611193575b611123575b50506040519182526001600160a01b03169033906000805160206133df83398151915290602090a3602060405160018152f35b3381526001602052604081205461113c83821015612b32565b6001600160a01b0384169033829003611157575b50506110f0565b60409361116e91611169841515612b77565b612338565b338352600160205283832055815220611188838254612345565b905581388080611150565b50336001600160a01b038416146110eb565b50346103325760403660031901126103325760606111cd6111c4612050565b60243590612484565b9060405192835260208301526040820152f35b503461033257604036600319011261033257602061100c6111ff612050565b602435906128d6565b503461033257806003193601126103325760405181602c546112298161214d565b808452906001908181169081156112bc5750600114611263575b61125f8461125381880382612202565b60405191829182612223565b0390f35b602c8352602094507f7416c943b4a09859521022fd2e90eac0dd9026dad28fa317782a135f28a860915b8284106112a9575050508161125f936112539282010193611243565b805485850187015292850192810161128d565b61125f96506112539450602092508593915060ff191682840152151560051b82010193611243565b5034610332576040366003190112610332576004356001600160401b038082116103c657366023830112156103c65781600401359081116115055782604051926113386020601f19601f8601160185612202565b828452602084019236602482840101116103c6578060246020930185378401015260243561ffff8116810361150157610100918284805181010312610fed57611380906125ce565b61138c60408501612bbc565b9161139960608601612bbc565b9460808101519460a08201519260c08301519160ff831683036114fd5760e08401519301519380421161099b5785156114d6577f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e266915b6001600160a01b0388168b52600460205260408b208054919060001983146114c2579161ffff61147f9896949261092998969460018401905560405194602086015216604084015260018060a01b038a16606084015260018060a01b038c1660808401528a60a084015260c083015260e082015260e08152611470816121cb565b602081519101206108f8612a08565b6001600160a01b0383811691160361094057156114ac5761032f926001600160a01b039081169116612da2565b61032f926001600160a01b039081169116612d54565b634e487b7160e01b8d52601160045260248dfd5b7f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d6916113ef565b8980fd5b8380fd5b634e487b7160e01b83526041600452602483fd5b50346103325780600319360112610332576005546040516001600160a01b039091168152602090f35b50346103325780600319360112610332576020601b54604051908152f35b5034610332576020366003190112610332576020906040906001600160a01b03611588612050565b168152602483522054604051908152f35b5034610332578060031936011261033257601454604080516001600160801b038316815260809290921c602083015290f35b5034610332576040366003190112610332576115f26115e8612050565b6024359033612d54565b602060405160018152f35b5034610332576020366003190112610332576020906040906001600160a01b03611625612050565b168152600483522054604051908152f35b5034610332578060031936011261033257600f546040516001600160a01b039091168152602090f35b50346103325780600319360112610332576020603054604051908152f35b50346103325780600319360112610332576020602e54604051908152f35b5034610332578060031936011261033257604051816010546116bc8161214d565b808452906001908181169081156112bc57506001146116e55761125f8461125381880382612202565b60108352602094506000805160206133ff8339815191525b828410611719575050508161125f936112539282010193611243565b80548585018701529285019281016116fd565b50346103325760203660031901126103325760043590600982101561033257602060ff6117588461211e565b54166040519015158152f35b5034610332576020366003190112610332576020906040906001600160a01b0361178c612050565b168152600183522054604051908152f35b5034610332578060031936011261033257600a546040516001600160a01b039091168152602090f35b50346103325780600319360112610332576020602754604051908152f35b50346103325780600319360112610332576020601c54604051908152f35b50346103325780600319360112610332576020602d54604051908152f35b503461033257806003193601126103325760208054604051908152f35b50346103325780600319360112610332576006546001600160a01b0390818116338190036118a757806005549384167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08680a36001600160a01b0319928316176005551660065580f35b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b5034610332576020366003190112610332576020906040906001600160a01b03611913612050565b168152601783522054604051908152f35b50346103325780600319360112610332576020601554604051908152f35b50346103325780600319360112610332576020600e54604051908152f35b50346103325780600319360112610332576020601654604051908152f35b503461033257606036600319011261033257602061100c60443560243560043561236b565b50346103325780600319360112610332576020601154604051908152f35b5034610332578060031936011261033257600d546040516001600160a01b039091168152602090f35b50346103325780600319360112610332576020601254604051908152f35b5034610332578060031936011261033257602061100c612a08565b50346103325780600319360112610332576020601954604051908152f35b50346103325780600319360112610332576014546040516001600160801b039091168152602090f35b50346103325780600319360112610332576020601354604051908152f35b503461033257611a97366120e9565b919282611ad3575b506040519182526001600160a01b039081169216906000805160206133df83398151915290602090a3602060405160018152f35b6001600160a01b03848116808352600160209081526040842054928690611afc82861015612b32565b861693848403611b11575b5050505050611a9f565b838652600283526040808720338852845286205460018101611b7b575b5092600160209693611b5987946040976111696000805160206133df8339815191529c9a1515612b77565b9285525283832055815220611b6f858254612345565b90559138808581611b07565b90918110611bcf5792600160209693611b598a6000805160206133df8339815191529a9895611bac8260409a612338565b86895260028552898920338a528552898920559497509497995050939650611b2e565b60405162461bcd60e51b815260048101849052601860248201527745524332303a20616c6c6f77616e636520746f6f206c6f7760401b6044820152606490fd5b50346103325780600319360112610332576020602a54604051908152f35b503461033257611c3c3661209a565b9083959495421161099b576001600160a01b03878116808a52600460205260408a2080549196929592906000198314611ced5782611cde9694928d92600161092998960190556040519160208301937f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d6855260408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e081526108ed816121cb565b16036109405761032f92612d54565b634e487b7160e01b8c52601160045260248cfd5b5034610332578060031936011261033257602b546040516001600160a01b039091168152602090f35b5034610332576020366003190112610332576020906040906001600160a01b03611d52612050565b168152601883522054604051908152f35b5034610332578060031936011261033257602090604051908152f35b50346103325780600319360112610332576020602f54604051908152f35b5034610332576040366003190112610332576004356009811015611eb557611dc361207c565b6008549091906001600160a01b03163303611e795760ff611de38261211e565b54161515911515918214611e3f57808260ff611e01611e2f9461211e565b54161515827feeec81de25875ce1725479bb76f720a8defdb43dea041919ae37bb4aae9847c08780a461211e565b9060ff8019835416911617905580f35b60405162461bcd60e51b81526020600482015260126024820152714d61726b65743a2073616d6520737461746560701b6044820152606490fd5b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881d5b985d5d1a1bdc9a5e995960621b6044820152606490fd5b5080fd5b5034610332576040366003190112610332576115f2611ed6612050565b6024359033612da2565b503461033257606036600319011261033257611efa612050565b611f0261207c565b611f0a61208b565b9060018060a01b03928391611f248360055416331461226c565b15611fc8571690811590811591611fc0575b5015611f8357806005549283167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08580a36001600160a01b03199182161760055560068054909116905580f35b60405162461bcd60e51b81526020600482015260156024820152744f776e61626c653a207a65726f206164647265737360581b6044820152606490fd5b905038611f36565b9150501660018060a01b0319600654161760065580f35b50346103325780600319360112610332576040611ffa6125db565b825191151582526020820152f35b905034611eb5576040366003190112611eb5576040602092612028612050565b612030612066565b6001600160a01b0391821683526003865283832091168252845220548152f35b600435906001600160a01b038216820361059657565b602435906001600160a01b038216820361059657565b60243590811515820361059657565b60443590811515820361059657565b60e0906003190112610596576001600160a01b03906004358281168103610596579160243590811681036105965790604435906064359060843560ff81168103610596579060a4359060c43590565b6060906003190112610596576001600160a01b0390600435828116810361059657916024359081168103610596579060443590565b6009811015612137576000526007602052604060002090565b634e487b7160e01b600052602160045260246000fd5b90600182811c9216801561217d575b602083101461216757565b634e487b7160e01b600052602260045260246000fd5b91607f169161215c565b6001600160401b03811161219a57604052565b634e487b7160e01b600052604160045260246000fd5b604081019081106001600160401b0382111761219a57604052565b61010081019081106001600160401b0382111761219a57604052565b608081019081106001600160401b0382111761219a57604052565b90601f801991011681019081106001600160401b0382111761219a57604052565b6020808252825181830181905290939260005b82811061225857505060409293506000838284010152601f8019910116010190565b818101860151848201604001528501612236565b1561227357565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b156122be57565b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881b9bdd081d985b1a59607a1b6044820152606490fd5b8181029291811591840414171561098557565b8115612314570490565b634e487b7160e01b600052601260045260246000fd5b604d811161098557600a0a90565b9190820391821161098557565b9190820180921161098557565b8181039291600013801582851316918412161761098557565b6014549192916123b4916123a59161239b91612391906001600160801b038316906122f7565b9060801c9061230a565b93601f54906122f7565b6123ae8361232a565b9061230a565b80831061247c576123c86124049184612338565b916123ff6123f96123f0601e546123ea6123e18661232a565b60205490612345565b906122f7565b6123ae8461232a565b9161232a565b612352565b6509184e72a0009081810291818305149015171561098557670de0b6b3a76400009182810292818405149015171561098557801561231457600160ff1b91808314600019831416610985570590600082121561247557811461098557600003905b808211612470575090565b905090565b5090612465565b505050600090565b6001600160a01b039081166000818152601760209081526040822054929594939192909181156125c1576124b6613251565b906124c28615156127d3565b6009541683600c54898752601882526064604088205491604051948593849263442c159960e01b8452600484015260248301528960448301525afa9081156125b6578591612587575b509285949261256760189361254261257b9961253d61253460409a620186a060225404906122f7565b601e54906122f7565b61230a565b815190936001600160801b0391869161255d918416906122f7565b920151169061230a565b81811061257f57035b97835252205461281f565b9091565b505082612570565b90508381813d83116125af575b61259e8183612202565b81010312610fed575161257b61250b565b503d612594565b6040513d87823e3d90fd5b5050509192505080918190565b5190811515820361059657565b60018060a01b03600f54169060409081519263d6d7d52560e01b8452828460209283600483015260006010546126108161214d565b908160248601526001908582821691826000146127af57505060011461276b575b5050600083809203925af18015612760576000948591612725575b509284156126c757831561268d57505081601155817f9f9192b5edb17356c524e08d9e025c8e2f6307e6ea52fb7968faa3081f51c3c8600080a25b42601355565b60649250519062461bcd60e51b8252600482015260146024820152734d61726b65743a20696e76616c6964207261746560601b6044820152fd5b909192506126da60135460125490612345565b42116126eb57505060115490612687565b60649250519062461bcd60e51b82526004820152601460248201527313585c9ad95d0e881c985d19481d1bdbc81bdb1960621b6044820152fd5b9490508385813d8311612759575b61273d8183612202565b81010312610332575080612750856125ce565b9401513861264c565b503d612733565b83513d6000823e3d90fd5b915060106000528560002091866000935b83851061279457505050508201604401600083612631565b80548c8601604401528a97508b96509301928790820161277c565b8195506000949193506044925060ff191682840152151560051b8201019250612631565b156127da57565b60405162461bcd60e51b815260206004820152601e60248201527f4d61726b65743a2065786368616e676552617465206e6f742076616c696400006044820152606490fd5b61282a8215156127d3565b602060018060a01b0360095416916064600c54604051948593849263442c159960e01b845260048401526024830152600060448301525afa9081156128ca57600091612897575b509061253d61288392602254906122f7565b620186a0612893601e54836122f7565b0491565b906020823d82116128c2575b816128b060209383612202565b8101031261033257505161253d612871565b3d91506128a3565b6040513d6000823e3d90fd5b6001600160a01b031660008181526018602052604081205490926128f99161281f565b918352601760205260408320548015612a02578115612a0257818110612a0257828110156129f85760145461294291839161116991612391906001600160801b038316906122f7565b90620186a092838302928084048514901517156129e45761296792916123ae91612338565b91601b5491601c549361297a8585612352565b80820291848212600160ff1b8214166129e45781830514901517156129d057058184820194851291129080158216911516176129bc5750808212612470575090565b634e487b7160e01b81526011600452602490fd5b634e487b7160e01b83526011600452602483fd5b634e487b7160e01b85526011600452602485fd5b50505050601b5490565b50505090565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03161480612b09575b15612a63577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f000000000000000000000000000000000000000000000000000000000000000082527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a0815260c081018181106001600160401b0382111761219a5760405251902090565b507f00000000000000000000000000000000000000000000000000000000000000004614612a3a565b15612b3957565b60405162461bcd60e51b815260206004820152601660248201527545524332303a2062616c616e636520746f6f206c6f7760501b6044820152606490fd5b15612b7e57565b60405162461bcd60e51b815260206004820152601660248201527545524332303a206e6f207a65726f206164647265737360501b6044820152606490fd5b51906001600160a01b038216820361059657565b60058110156121375780612be15750565b60018103612c295760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b6044820152606490fd5b60028103612c765760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606490fd5b600314612c7f57565b60405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608490fd5b9291906fa2a8918ca85bafe22016d0b997e4df60600160ff1b038311612d485791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa15612d3b5781516001600160a01b03811615612d35579190565b50600190565b50604051903d90823e3d90fd5b50505050600090600390565b7fe50de2333c10a9502fcb1d8ae13a51bbf423153dfc63c2b8997665b32154afc360018060a01b038092169160009083825260036020526040822094169384825260205284604082205580a4565b909160207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259160018060a01b03809416938460005260028352604060002095169485600052825280604060002055604051908152a3565b15612e0057565b606460405162461bcd60e51b815260206004820152602060248201527f4d61726b65743a2063616e6e6f742065786563757465206f6e20697473656c666044820152fd5b15612e4b57565b60405162461bcd60e51b815260206004820152600e60248201526d13585c9ad95d0e881c185d5cd95960921b6044820152606490fd5b6001600160a01b0316338103612e95575050565b6000818152602090600382526040918282203383528152848383205410612eff5783825260038152828220338352815282822054600101612ed8575b5050505050565b612ef393825260038152828220903383525220918254612338565b90553880808080612ed1565b60649083519062461bcd60e51b82526004820152601460248201527313585c9ad95d0e881b9bdd08185c1c1c9bdd995960621b6044820152fd5b60405190612f46826121b0565b6014546001600160801b038116835260801c6020830152565b919060018060a01b03806000941684526020601781526040852054908115613057576018815260408620548015612ed15781612f99612f39565b9460095416916064600c54604051948593849263442c159960e01b8452600484015260248301528b60448301525afa96871561304b578097613015575b505061255d612ff5612534613010969798620186a060225404906122f7565b9561300b60018060801b039485875116906122f7565b6122f7565b111590565b9096508187813d8311613044575b61302d8183612202565b81010312610332575094519461255d612ff5612fd6565b503d613023565b604051903d90823e3d90fd5b5060019450505050565b60ff602654166131d2576014546001600160801b03169081156131cb57600a54604051631848f2bf60e31b8152602093916001600160a01b03919085908290600490829086165afa80156128ca578591600091613192575b50600460405180948193631a674cc560e11b8352165afa9384156128ca57600094613163575b50506130fb9192670de0b6b3a7640000928391602954906122f7565b04908181101561315a57613112602a548092612338565b83810290808204851490151715610985576123ae6131339261314e94612338565b602754926131486028549261300b8487612338565b04612345565b90808211612470575090565b50505060275490565b81813d831161318b575b6131778183612202565b81010312611501575192506130fb386130df565b503d61316d565b909181813d83116131c4575b6131a88183612202565b81010312611eb5575190828216820361033257508490386130b9565b503d61319e565b6028549150565b600a5460405163e6abad4960e01b815290602090829060049082906001600160a01b03165afa9081156128ca5760009161320a575090565b906020823d8211613230575b8161322360209383612202565b8101031261033257505190565b3d9150613216565b6001600160801b03918216908216019190821161098557565b60006020604051613261816121b0565b82815201526001600160401b03906132808260255460401c1642612338565b9182156132d7576132d261300b91670de0b6b3a76400006132c76132a2612f39565b9660018060801b03958694858a5116906301e133806132bf613061565b0416906122f7565b041682855116613238565b168252565b5090506132e2612f39565b90565b6040516132f1816121b0565b6025546001600160401b03908181168352818160401c16613319602085019180835242612338565b928315612ed157602094816301e13380613331613061565b041681528142168352613342612f39565b670de0b6b3a764000061336760018060801b039761300b8985511687875116906122f7565b049561337881881682845116613238565b1680825296015160801b6001600160801b031990811690961760145551915192909416931692831760409190911b67ffffffffffffffff60401b16176025557f7484db546dcd57af0104c73c8a6968dfbaf5767f047cee0dadd0499ad7df81a0600080a356feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae672a2646970667358221220de0671eaac8fb5ef4b9604acb9ea063778c9ec56a150a45aaf583e9220ecf2f264736f6c63430008120033", + "deployedBytecode": "0x608080604052600436101561001357600080fd5b600090813560e01c908162a02a20146120085750806302ce728f14611fdf578063078dfbe714611ee0578063095ea7b314611eb95780630c4e84f014611d9d5780630f8b29ea14611d7f57806318160ddd14611d635780631c9e379b14611d2a5780631d4d3a5d14611d015780631da8bf1014611c2d5780631fb8f81a14611c0f57806323b872dd14611a88578063331960ff14611a6a57806334ce998a14611a4157806334d441d014611a235780633644e51514611a0857806337b6b7b9146119ea57806338d52e0f146119c15780633ba0b9a9146119a35780633f741adb1461197e57806340626d8b1461196057806344de240a14611942578063473e3ce71461192457806348e4163e146118eb5780634e71e0c81461183d578063529898f214611820578063542afda31461180257806357935462146117e45780636b19ad16146117c65780636c3d8b8f1461179d57806370a0823114611764578063727785471461172c57806374645ff31461169b57806374c9e4811461167d578063790c84671461165f5780637dc0d1d0146116365780637ecebe00146115fd5780637fa0b84e146115cb5780638285ef401461159957806387b27937146115605780638c5d0ed3146115425780638da5cb5b14611519578063910dd7c8146112e4578063932bc4f81461120857806399a97028146111e05780639e15e89f146111a5578063a9059cbb146110c2578063b0e21e8a146110a4578063b27c0e7414611073578063b7113f1914611050578063bb4cfe3b14611032578063bde39c5d14611014578063c1ad5c8d14610ff1578063cce19f8114610e71578063ce8849ed14610e48578063d3fb2a38146109e0578063d505accf1461083f578063d8dfeb4514610816578063da863f0e146107ed578063dd62ed3e1461079e578063de40657714610775578063e0996cb614610757578063e30c39781461072e578063e9a4925214610406578063ea64dd56146103e8578063eec0f42e146103ca578063ef2b234a14610353578063f791395d146103355763f8ba4cff1461031757600080fd5b3461033257806003193601126103325761032f6132e5565b80f35b80fd5b50346103325780600319360112610332576020602854604051908152f35b5034610332576020366003190112610332576004356001600160a01b03818116918290036103c65761038a8160055416331461226c565b816021549182167ffb4fd7114609dd603b57adbc2082205bfbbcabf9265c4b437b472f5c592b8cd78580a36001600160a01b0319161760215580f35b8280fd5b50346103325780600319360112610332576020600c54604051908152f35b50346103325780600319360112610332576020601f54604051908152f35b50346103325760a036600319011261033257610420612050565b610428612066565b9061043161208b565b608435926001600160a01b0390811692909160643561045230861415612df9565b60026000526020906007825261047060ff6040600020541615612e44565b86156106b0575b6104818785612e81565b861561062f575b50848752601881526040872061049f878254612345565b90556015546104ae8782612345565b601555600c54908884156105ad575082866009541692604460405180958193627eeac760e11b835230600484015260248301525afa80156105a257899061056e575b6104fa9250612338565b861161053b57505b15610536575080600954165b167f9ed03113de523cebfe5e49d5f8e12894b1c0d42ce805990461726444c90eab878480a480f35b61050e565b6064906040519062461bcd60e51b82526004820152600c60248201526b084847440e8dede40daeac6d60a31b6044820152fd5b508282813d831161059b575b6105848183612202565b81010312610596576104fa91516104f0565b600080fd5b503d61057a565b6040513d8b823e3d90fd5b9250508460095416803b156103c657604051630208d92960e11b81526001600160a01b038616600482015230602482015260448101929092526064820188905282908290608490829084905af180156106245761060c575b5050610502565b61061590612187565b610620578538610605565b8580fd5b6040513d84823e3d90fd5b908096508460095416916064600c546040519485938492638eb22cdd60e01b8452600484015260248301528b60448301525afa9081156106a5578791610678575b509438610488565b90508581813d831161069e575b61068f8183612202565b81010312610596575138610670565b503d610685565b6040513d89823e3d90fd5b9550836009541681600c54606460405180948193638eb22cdd60e01b835260048301528b60248301528c60448301525afa9081156107235788916106f6575b5095610477565b90508181813d831161071c575b61070d8183612202565b810103126105965751386106ef565b503d610703565b6040513d8a823e3d90fd5b50346103325780600319360112610332576006546040516001600160a01b039091168152602090f35b50346103325780600319360112610332576020601d54604051908152f35b50346103325780600319360112610332576009546040516001600160a01b039091168152602090f35b5034610332576040366003190112610332576107b8612050565b60406107c2612066565b9260018060a01b03809316815260026020522091166000526020526020604060002054604051908152f35b50346103325780600319360112610332576021546040516001600160a01b039091168152602090f35b5034610332578060031936011261033257600b546040516001600160a01b039091168152602090f35b50346103325761084e3661209a565b91839193959495421161099b5760018060a01b039283881694856000526004602052604060002092835460001981146109855761093195610929956001830190556040519060208201927f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e2668452600060408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e081526108ed816121cb565b5190206108f8612a08565b9060405190602082019261190160f01b84526022830152604282015260428152610921816121e7565b519020612ccf565b919091612bd0565b16036109405761032f92612da2565b60405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152606490fd5b634e487b7160e01b600052601160045260246000fd5b60405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b503461033257610160366003190112610332576001600160a01b03600435818116908190036103c6576024916001600160401b03833581811161062057366023820112156106205780600401359182116106205736858383010111610620576044359383851680950361059657610a5c8460055416331461226c565b80610e0a575b508482610cb0575b50505081610c70575b505060643580610c58575b5060843580610c40575b5060a43580610c29575b5060c43580610c05575b5060e43580610be1575b506101043580610bb0575b506101243580610b3d575b50610144359081610acb578280f35b601e548210610ade5750601f5538808280f35b60849060326040519162461bcd60e51b8352602060048401528201527f4d61726b65743a206c69717569646174696f6e436f6c6c61746572616c697a616044820152711d1a5bdb94985d19481d1bdbc81cdb585b1b60721b6064820152fd5b610b4c620186a08211156122b7565b601f548111610b5e57601e5538610abc565b60405162461bcd60e51b8152602060048201526025818401527f4d61726b65743a20636f6c6c61746572616c697a6174696f6e5261746520746f6044820152646f2062696760d81b6064820152608490fd5b806016547fae6e0ab3b95f0a53ff9660a390ccedcbbf1f2355dce974a9841af106fddcfaba8580a360165538610ab1565b610bef620186a082106122b7565b610bfc601b5482116122b7565b601c5538610aa6565b610c13620186a082106122b7565b610c20601c5482106122b7565b601b5538610a9c565b610c37620186a082106122b7565b601d5538610a92565b610c4f620186a08211156122b7565b601a5538610a88565b610c67620186a08211156122b7565b60195538610a7e565b816008549182167f5a62d22209e370e38eea92cfddcd228e656e6ec139243392a760a7769f5877fd8680a36001600160a01b031916176008553880610a73565b8291610cbd60105461214d565b601f8111610dab575b508790601f8411600114610d2b578893610d1e575b5050508160011b916000199060031b1c1916176010555b7fa6f004921c944d4b8bf6e38462b00f36a58d62495d56b51f571ab78f732c98158480a1388084610a6a565b0101359050843880610cdb565b60108952601f19841694506000805160206133ff83398151915292509087908960205b878210610d8c5750508460019610610d70575b50505050811b01601055610cf2565b60001960f88660031b161c199201013516905538808681610d61565b8285019093013585556001949094019389929182019190810190610d4e565b6010895290925090506000805160206133ff833981519152601f840160051c810160208510610e03575b91849391601f8994920160051c01905b818110610df25750610cc6565b898155859450889350600101610de5565b5080610dd5565b600f80546001600160a01b0319169190911790557f0b2d6eb667d0522c3eb86e4288afecae6c11591ffd1345d4d12407e0598bca9b8680a138610a62565b50346103325780600319360112610332576008546040516001600160a01b039091168152602090f35b50346103325780610e81366120e9565b600384929394526007602052610e9e60ff60408420541615612e44565b610ea66125db565b5050610eb06132e5565b6001600160a01b038381169390610ec930861415612df9565b610ed38387612e81565b8281871695868652601860205260408620610eef838254612338565b9055610efd82601554612338565b601555604051967f8ad4d3ff00da092c7ad9a573ea4f5f6a3dffc6712dc06d3f78f49b862297c4028780a46009541690600c5492823b15610fed57630208d92960e11b86523060048701526001600160a01b03919091166024860152604485019290925260648401919091528290608490829084905af18015610fe257610fcd575b50601154610f8c91612f5f565b15610f945780f35b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881a5b9cdbdb1d995b9d607a1b6044820152606490fd5b91610fdb610f8c9293612187565b9190610f7f565b6040513d85823e3d90fd5b8480fd5b5034610332578060031936011261033257602061100c613061565b604051908152f35b50346103325780600319360112610332576020602954604051908152f35b50346103325780600319360112610332576020601e54604051908152f35b5034610332578060031936011261033257602060ff602654166040519015158152f35b503461033257806003193601126103325760406025548151906001600160401b03908181168352831c166020820152f35b50346103325780600319360112610332576020601a54604051908152f35b5034610332576040366003190112610332576110dc612050565b60243580928115801590611193575b611123575b50506040519182526001600160a01b03169033906000805160206133df83398151915290602090a3602060405160018152f35b3381526001602052604081205461113c83821015612b32565b6001600160a01b0384169033829003611157575b50506110f0565b60409361116e91611169841515612b77565b612338565b338352600160205283832055815220611188838254612345565b905581388080611150565b50336001600160a01b038416146110eb565b50346103325760403660031901126103325760606111cd6111c4612050565b60243590612484565b9060405192835260208301526040820152f35b503461033257604036600319011261033257602061100c6111ff612050565b602435906128d6565b503461033257806003193601126103325760405181602c546112298161214d565b808452906001908181169081156112bc5750600114611263575b61125f8461125381880382612202565b60405191829182612223565b0390f35b602c8352602094507f7416c943b4a09859521022fd2e90eac0dd9026dad28fa317782a135f28a860915b8284106112a9575050508161125f936112539282010193611243565b805485850187015292850192810161128d565b61125f96506112539450602092508593915060ff191682840152151560051b82010193611243565b5034610332576040366003190112610332576004356001600160401b038082116103c657366023830112156103c65781600401359081116115055782604051926113386020601f19601f8601160185612202565b828452602084019236602482840101116103c6578060246020930185378401015260243561ffff8116810361150157610100918284805181010312610fed57611380906125ce565b61138c60408501612bbc565b9161139960608601612bbc565b9460808101519460a08201519260c08301519160ff831683036114fd5760e08401519301519380421161099b5785156114d6577f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e266915b6001600160a01b0388168b52600460205260408b208054919060001983146114c2579161ffff61147f9896949261092998969460018401905560405194602086015216604084015260018060a01b038a16606084015260018060a01b038c1660808401528a60a084015260c083015260e082015260e08152611470816121cb565b602081519101206108f8612a08565b6001600160a01b0383811691160361094057156114ac5761032f926001600160a01b039081169116612da2565b61032f926001600160a01b039081169116612d54565b634e487b7160e01b8d52601160045260248dfd5b7f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d6916113ef565b8980fd5b8380fd5b634e487b7160e01b83526041600452602483fd5b50346103325780600319360112610332576005546040516001600160a01b039091168152602090f35b50346103325780600319360112610332576020601b54604051908152f35b5034610332576020366003190112610332576020906040906001600160a01b03611588612050565b168152602483522054604051908152f35b5034610332578060031936011261033257601454604080516001600160801b038316815260809290921c602083015290f35b5034610332576040366003190112610332576115f26115e8612050565b6024359033612d54565b602060405160018152f35b5034610332576020366003190112610332576020906040906001600160a01b03611625612050565b168152600483522054604051908152f35b5034610332578060031936011261033257600f546040516001600160a01b039091168152602090f35b50346103325780600319360112610332576020603054604051908152f35b50346103325780600319360112610332576020602e54604051908152f35b5034610332578060031936011261033257604051816010546116bc8161214d565b808452906001908181169081156112bc57506001146116e55761125f8461125381880382612202565b60108352602094506000805160206133ff8339815191525b828410611719575050508161125f936112539282010193611243565b80548585018701529285019281016116fd565b50346103325760203660031901126103325760043590600982101561033257602060ff6117588461211e565b54166040519015158152f35b5034610332576020366003190112610332576020906040906001600160a01b0361178c612050565b168152600183522054604051908152f35b5034610332578060031936011261033257600a546040516001600160a01b039091168152602090f35b50346103325780600319360112610332576020602754604051908152f35b50346103325780600319360112610332576020601c54604051908152f35b50346103325780600319360112610332576020602d54604051908152f35b503461033257806003193601126103325760208054604051908152f35b50346103325780600319360112610332576006546001600160a01b0390818116338190036118a757806005549384167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08680a36001600160a01b0319928316176005551660065580f35b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b5034610332576020366003190112610332576020906040906001600160a01b03611913612050565b168152601783522054604051908152f35b50346103325780600319360112610332576020601554604051908152f35b50346103325780600319360112610332576020600e54604051908152f35b50346103325780600319360112610332576020601654604051908152f35b503461033257606036600319011261033257602061100c60443560243560043561236b565b50346103325780600319360112610332576020601154604051908152f35b5034610332578060031936011261033257600d546040516001600160a01b039091168152602090f35b50346103325780600319360112610332576020601254604051908152f35b5034610332578060031936011261033257602061100c612a08565b50346103325780600319360112610332576020601954604051908152f35b50346103325780600319360112610332576014546040516001600160801b039091168152602090f35b50346103325780600319360112610332576020601354604051908152f35b503461033257611a97366120e9565b919282611ad3575b506040519182526001600160a01b039081169216906000805160206133df83398151915290602090a3602060405160018152f35b6001600160a01b03848116808352600160209081526040842054928690611afc82861015612b32565b861693848403611b11575b5050505050611a9f565b838652600283526040808720338852845286205460018101611b7b575b5092600160209693611b5987946040976111696000805160206133df8339815191529c9a1515612b77565b9285525283832055815220611b6f858254612345565b90559138808581611b07565b90918110611bcf5792600160209693611b598a6000805160206133df8339815191529a9895611bac8260409a612338565b86895260028552898920338a528552898920559497509497995050939650611b2e565b60405162461bcd60e51b815260048101849052601860248201527745524332303a20616c6c6f77616e636520746f6f206c6f7760401b6044820152606490fd5b50346103325780600319360112610332576020602a54604051908152f35b503461033257611c3c3661209a565b9083959495421161099b576001600160a01b03878116808a52600460205260408a2080549196929592906000198314611ced5782611cde9694928d92600161092998960190556040519160208301937f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d6855260408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e081526108ed816121cb565b16036109405761032f92612d54565b634e487b7160e01b8c52601160045260248cfd5b5034610332578060031936011261033257602b546040516001600160a01b039091168152602090f35b5034610332576020366003190112610332576020906040906001600160a01b03611d52612050565b168152601883522054604051908152f35b5034610332578060031936011261033257602090604051908152f35b50346103325780600319360112610332576020602f54604051908152f35b5034610332576040366003190112610332576004356009811015611eb557611dc361207c565b6008549091906001600160a01b03163303611e795760ff611de38261211e565b54161515911515918214611e3f57808260ff611e01611e2f9461211e565b54161515827feeec81de25875ce1725479bb76f720a8defdb43dea041919ae37bb4aae9847c08780a461211e565b9060ff8019835416911617905580f35b60405162461bcd60e51b81526020600482015260126024820152714d61726b65743a2073616d6520737461746560701b6044820152606490fd5b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881d5b985d5d1a1bdc9a5e995960621b6044820152606490fd5b5080fd5b5034610332576040366003190112610332576115f2611ed6612050565b6024359033612da2565b503461033257606036600319011261033257611efa612050565b611f0261207c565b611f0a61208b565b9060018060a01b03928391611f248360055416331461226c565b15611fc8571690811590811591611fc0575b5015611f8357806005549283167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08580a36001600160a01b03199182161760055560068054909116905580f35b60405162461bcd60e51b81526020600482015260156024820152744f776e61626c653a207a65726f206164647265737360581b6044820152606490fd5b905038611f36565b9150501660018060a01b0319600654161760065580f35b50346103325780600319360112610332576040611ffa6125db565b825191151582526020820152f35b905034611eb5576040366003190112611eb5576040602092612028612050565b612030612066565b6001600160a01b0391821683526003865283832091168252845220548152f35b600435906001600160a01b038216820361059657565b602435906001600160a01b038216820361059657565b60243590811515820361059657565b60443590811515820361059657565b60e0906003190112610596576001600160a01b03906004358281168103610596579160243590811681036105965790604435906064359060843560ff81168103610596579060a4359060c43590565b6060906003190112610596576001600160a01b0390600435828116810361059657916024359081168103610596579060443590565b6009811015612137576000526007602052604060002090565b634e487b7160e01b600052602160045260246000fd5b90600182811c9216801561217d575b602083101461216757565b634e487b7160e01b600052602260045260246000fd5b91607f169161215c565b6001600160401b03811161219a57604052565b634e487b7160e01b600052604160045260246000fd5b604081019081106001600160401b0382111761219a57604052565b61010081019081106001600160401b0382111761219a57604052565b608081019081106001600160401b0382111761219a57604052565b90601f801991011681019081106001600160401b0382111761219a57604052565b6020808252825181830181905290939260005b82811061225857505060409293506000838284010152601f8019910116010190565b818101860151848201604001528501612236565b1561227357565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b156122be57565b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881b9bdd081d985b1a59607a1b6044820152606490fd5b8181029291811591840414171561098557565b8115612314570490565b634e487b7160e01b600052601260045260246000fd5b604d811161098557600a0a90565b9190820391821161098557565b9190820180921161098557565b8181039291600013801582851316918412161761098557565b6014549192916123b4916123a59161239b91612391906001600160801b038316906122f7565b9060801c9061230a565b93601f54906122f7565b6123ae8361232a565b9061230a565b80831061247c576123c86124049184612338565b916123ff6123f96123f0601e546123ea6123e18661232a565b60205490612345565b906122f7565b6123ae8461232a565b9161232a565b612352565b6509184e72a0009081810291818305149015171561098557670de0b6b3a76400009182810292818405149015171561098557801561231457600160ff1b91808314600019831416610985570590600082121561247557811461098557600003905b808211612470575090565b905090565b5090612465565b505050600090565b6001600160a01b039081166000818152601760209081526040822054929594939192909181156125c1576124b6613251565b906124c28615156127d3565b6009541683600c54898752601882526064604088205491604051948593849263442c159960e01b8452600484015260248301528960448301525afa9081156125b6578591612587575b509285949261256760189361254261257b9961253d61253460409a620186a060225404906122f7565b601e54906122f7565b61230a565b815190936001600160801b0391869161255d918416906122f7565b920151169061230a565b81811061257f57035b97835252205461281f565b9091565b505082612570565b90508381813d83116125af575b61259e8183612202565b81010312610fed575161257b61250b565b503d612594565b6040513d87823e3d90fd5b5050509192505080918190565b5190811515820361059657565b60018060a01b03600f54169060409081519263d6d7d52560e01b8452828460209283600483015260006010546126108161214d565b908160248601526001908582821691826000146127af57505060011461276b575b5050600083809203925af18015612760576000948591612725575b509284156126c757831561268d57505081601155817f9f9192b5edb17356c524e08d9e025c8e2f6307e6ea52fb7968faa3081f51c3c8600080a25b42601355565b60649250519062461bcd60e51b8252600482015260146024820152734d61726b65743a20696e76616c6964207261746560601b6044820152fd5b909192506126da60135460125490612345565b42116126eb57505060115490612687565b60649250519062461bcd60e51b82526004820152601460248201527313585c9ad95d0e881c985d19481d1bdbc81bdb1960621b6044820152fd5b9490508385813d8311612759575b61273d8183612202565b81010312610332575080612750856125ce565b9401513861264c565b503d612733565b83513d6000823e3d90fd5b915060106000528560002091866000935b83851061279457505050508201604401600083612631565b80548c8601604401528a97508b96509301928790820161277c565b8195506000949193506044925060ff191682840152151560051b8201019250612631565b156127da57565b60405162461bcd60e51b815260206004820152601e60248201527f4d61726b65743a2065786368616e676552617465206e6f742076616c696400006044820152606490fd5b61282a8215156127d3565b602060018060a01b0360095416916064600c54604051948593849263442c159960e01b845260048401526024830152600060448301525afa9081156128ca57600091612897575b509061253d61288392602254906122f7565b620186a0612893601e54836122f7565b0491565b906020823d82116128c2575b816128b060209383612202565b8101031261033257505161253d612871565b3d91506128a3565b6040513d6000823e3d90fd5b6001600160a01b031660008181526018602052604081205490926128f99161281f565b918352601760205260408320548015612a02578115612a0257818110612a0257828110156129f85760145461294291839161116991612391906001600160801b038316906122f7565b90620186a092838302928084048514901517156129e45761296792916123ae91612338565b91601b5491601c549361297a8585612352565b80820291848212600160ff1b8214166129e45781830514901517156129d057058184820194851291129080158216911516176129bc5750808212612470575090565b634e487b7160e01b81526011600452602490fd5b634e487b7160e01b83526011600452602483fd5b634e487b7160e01b85526011600452602485fd5b50505050601b5490565b50505090565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03161480612b09575b15612a63577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f000000000000000000000000000000000000000000000000000000000000000082527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a0815260c081018181106001600160401b0382111761219a5760405251902090565b507f00000000000000000000000000000000000000000000000000000000000000004614612a3a565b15612b3957565b60405162461bcd60e51b815260206004820152601660248201527545524332303a2062616c616e636520746f6f206c6f7760501b6044820152606490fd5b15612b7e57565b60405162461bcd60e51b815260206004820152601660248201527545524332303a206e6f207a65726f206164647265737360501b6044820152606490fd5b51906001600160a01b038216820361059657565b60058110156121375780612be15750565b60018103612c295760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b6044820152606490fd5b60028103612c765760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606490fd5b600314612c7f57565b60405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608490fd5b9291906fa2a8918ca85bafe22016d0b997e4df60600160ff1b038311612d485791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa15612d3b5781516001600160a01b03811615612d35579190565b50600190565b50604051903d90823e3d90fd5b50505050600090600390565b7fe50de2333c10a9502fcb1d8ae13a51bbf423153dfc63c2b8997665b32154afc360018060a01b038092169160009083825260036020526040822094169384825260205284604082205580a4565b909160207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259160018060a01b03809416938460005260028352604060002095169485600052825280604060002055604051908152a3565b15612e0057565b606460405162461bcd60e51b815260206004820152602060248201527f4d61726b65743a2063616e6e6f742065786563757465206f6e20697473656c666044820152fd5b15612e4b57565b60405162461bcd60e51b815260206004820152600e60248201526d13585c9ad95d0e881c185d5cd95960921b6044820152606490fd5b6001600160a01b0316338103612e95575050565b6000818152602090600382526040918282203383528152848383205410612eff5783825260038152828220338352815282822054600101612ed8575b5050505050565b612ef393825260038152828220903383525220918254612338565b90553880808080612ed1565b60649083519062461bcd60e51b82526004820152601460248201527313585c9ad95d0e881b9bdd08185c1c1c9bdd995960621b6044820152fd5b60405190612f46826121b0565b6014546001600160801b038116835260801c6020830152565b919060018060a01b03806000941684526020601781526040852054908115613057576018815260408620548015612ed15781612f99612f39565b9460095416916064600c54604051948593849263442c159960e01b8452600484015260248301528b60448301525afa96871561304b578097613015575b505061255d612ff5612534613010969798620186a060225404906122f7565b9561300b60018060801b039485875116906122f7565b6122f7565b111590565b9096508187813d8311613044575b61302d8183612202565b81010312610332575094519461255d612ff5612fd6565b503d613023565b604051903d90823e3d90fd5b5060019450505050565b60ff602654166131d2576014546001600160801b03169081156131cb57600a54604051631848f2bf60e31b8152602093916001600160a01b03919085908290600490829086165afa80156128ca578591600091613192575b50600460405180948193631a674cc560e11b8352165afa9384156128ca57600094613163575b50506130fb9192670de0b6b3a7640000928391602954906122f7565b04908181101561315a57613112602a548092612338565b83810290808204851490151715610985576123ae6131339261314e94612338565b602754926131486028549261300b8487612338565b04612345565b90808211612470575090565b50505060275490565b81813d831161318b575b6131778183612202565b81010312611501575192506130fb386130df565b503d61316d565b909181813d83116131c4575b6131a88183612202565b81010312611eb5575190828216820361033257508490386130b9565b503d61319e565b6028549150565b600a5460405163e6abad4960e01b815290602090829060049082906001600160a01b03165afa9081156128ca5760009161320a575090565b906020823d8211613230575b8161322360209383612202565b8101031261033257505190565b3d9150613216565b6001600160801b03918216908216019190821161098557565b60006020604051613261816121b0565b82815201526001600160401b03906132808260255460401c1642612338565b9182156132d7576132d261300b91670de0b6b3a76400006132c76132a2612f39565b9660018060801b03958694858a5116906301e133806132bf613061565b0416906122f7565b041682855116613238565b168252565b5090506132e2612f39565b90565b6040516132f1816121b0565b6025546001600160401b03908181168352818160401c16613319602085019180835242612338565b928315612ed157602094816301e13380613331613061565b041681528142168352613342612f39565b670de0b6b3a764000061336760018060801b039761300b8985511687875116906122f7565b049561337881881682845116613238565b1680825296015160801b6001600160801b031990811690961760145551915192909416931692831760409190911b67ffffffffffffffff60401b16176025557f7484db546dcd57af0104c73c8a6968dfbaf5767f047cee0dadd0499ad7df81a0600080a356feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae672a2646970667358221220de0671eaac8fb5ef4b9604acb9ea063778c9ec56a150a45aaf583e9220ecf2f264736f6c63430008120033", "linkReferences": {}, "deployedLinkReferences": {} } diff --git a/src/artifacts/tapioca-bar/BBCommon.json b/src/artifacts/tapioca-bar/BBCommon.json index 51fffea6..e5c2964d 100644 --- a/src/artifacts/tapioca-bar/BBCommon.json +++ b/src/artifacts/tapioca-bar/BBCommon.json @@ -65,13 +65,13 @@ { "indexed": true, "internalType": "address", - "name": "_oldVal", + "name": "oldVal", "type": "address" }, { "indexed": true, "internalType": "address", - "name": "_newVal", + "name": "newVal", "type": "address" } ], @@ -135,6 +135,25 @@ "name": "ExchangeRateDurationUpdated", "type": "event" }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "oldVal", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newVal", + "type": "address" + } + ], + "name": "LeverageExecutorSet", + "type": "event" + }, { "anonymous": false, "inputs": [ @@ -516,6 +535,37 @@ "name": "UpdateMinMaxMintFee", "type": "event" }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint256", + "name": "oldMin", + "type": "uint256" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "newMin", + "type": "uint256" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "oldMax", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "newMax", + "type": "uint256" + } + ], + "name": "UpdateMinMaxMintRange", + "type": "event" + }, { "inputs": [], "name": "DOMAIN_SEPARATOR", @@ -958,6 +1008,19 @@ "stateMutability": "view", "type": "function" }, + { + "inputs": [], + "name": "leverageExecutor", + "outputs": [ + { + "internalType": "contract ILeverageExecutor", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, { "inputs": [], "name": "liquidationBonusAmount", @@ -1036,6 +1099,19 @@ "stateMutability": "view", "type": "function" }, + { + "inputs": [], + "name": "maxMintFeeStart", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, { "inputs": [], "name": "minDebtRate", @@ -1075,6 +1151,19 @@ "stateMutability": "view", "type": "function" }, + { + "inputs": [], + "name": "minMintFeeStart", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, { "inputs": [ { @@ -1340,6 +1429,19 @@ "stateMutability": "view", "type": "function" }, + { + "inputs": [ + { + "internalType": "contract ILeverageExecutor", + "name": "_executor", + "type": "address" + } + ], + "name": "setLeverageExecutor", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, { "inputs": [ { @@ -1624,8 +1726,8 @@ "type": "function" } ], - "bytecode": "0x61014080604052346200018a5762000017816200018f565b600f81526001602082016e546170696f63612042696742616e6760881b8152602060405162000046816200018f565b8381520192603160f81b845251902091208160e052610100918183524660a0526040519160208301907f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f92838352604085015260608401524660808401523060a084015260a0835260c083019280841060018060401b03851117620001745760408490525190206080523060c052610120908152600580546001600160a01b0319163390811790915560007f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a362013880601b5562015f90601c55612710601d55612ee06020556103e8602d55612bdf9283620001ac8439608051836123fa015260a051836124c5015260c051836123c4015260e051836124490152518261246f015251816124260152f35b634e487b7160e01b600052604160045260246000fd5b600080fd5b604081019081106001600160401b03821117620001745760405256fe608080604052600436101561001357600080fd5b60003560e01c908162a02a2014611c275750806302ce728f14611a10578063078dfbe71461190c578063095ea7b3146118e65780630c4e84f0146117cc57806318160ddd146117b05780631c9e379b146117765780631d4d3a5d1461174d5780631da8bf10146116915780631fb8f81a1461167357806323b872dd146114cf578063331960ff146114b157806334ce998a1461148857806334d441d01461146a5780633644e5151461144f57806337b6b7b91461143157806338d52e0f146114085780633ba0b9a9146113ea5780633f741adb146113c657806340626d8b146113a857806344de240a1461138a578063473e3ce71461136c57806348e4163e146113325780634e71e0c814611284578063529898f214611267578063542afda314611249578063579354621461122b5780636b19ad161461120d5780636c3d8b8f146111e457806370a08231146111aa578063727785471461117457806374645ff3146110e157806374c9e481146110c35780637dc0d1d01461109a5780637ecebe00146110605780637fa0b84e1461102f5780638285ef4014610ffd57806387b2793714610fc35780638c5d0ed314610fa55780638da5cb5b14610f7c578063910dd7c814610d63578063932bc4f814610c8557806399a9702814610c5e5780639e15e89f14610c24578063a9059cbb14610b3d578063b0e21e8a14610b1f578063b27c0e7414610aee578063b7113f1914610acb578063bb4cfe3b14610aad578063bde39c5d14610a8f578063c1ad5c8d14610a6c578063ce8849ed14610a43578063d3fb2a38146105d7578063d505accf14610437578063d8dfeb451461040e578063dd62ed3e146103bd578063de40657714610394578063e0996cb614610376578063e30c39781461034d578063ea64dd561461032f578063eec0f42e14610311578063f791395d146102f35763f8ba4cff146102d357600080fd5b346102ee5760003660031901126102ee576102ec612a69565b005b600080fd5b346102ee5760003660031901126102ee576020602754604051908152f35b346102ee5760003660031901126102ee576020600c54604051908152f35b346102ee5760003660031901126102ee576020601f54604051908152f35b346102ee5760003660031901126102ee576006546040516001600160a01b039091168152602090f35b346102ee5760003660031901126102ee576020601d54604051908152f35b346102ee5760003660031901126102ee576009546040516001600160a01b039091168152602090f35b346102ee5760403660031901126102ee576103d6611c73565b6103de611c89565b9060018060a01b038091166000526002602052604060002091166000526020526020604060002054604051908152f35b346102ee5760003660031901126102ee57600b546040516001600160a01b039091168152602090f35b346102ee5761044536611cae565b9183919395949542116105925760018060a01b0392838816948560005260046020526040600020928354600019811461057c5761052895610520956001830190556040519060208201927f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e2668452600060408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e081526104e481611d81565b5190206104ef6123c1565b9060405190602082019261190160f01b8452602283015260428201526042815261051881611d9d565b519020612688565b919091612589565b1603610537576102ec9261275b565b60405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152606490fd5b634e487b7160e01b600052601160045260246000fd5b60405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b346102ee576101603660031901126102ee576001600160a01b03600435818116908190036102ee576024916001600160401b0383358181116102ee57366023820112156102ee5780600401359182116102ee57368583830101116102ee57604435938385168095036102ee5761065284600554163314611e22565b80610a04575b5084826108a2575b50505081610861575b505060643580610849575b5060843580610831575b5060a4358061081a575b5060c435806107f6575b5060e435806107d2575b5061010435806107a0575b50610124358061072d575b506101443590816106bf57005b601e5482106106ce5750601f55005b60849060326040519162461bcd60e51b8352602060048401528201527f4d61726b65743a206c69717569646174696f6e436f6c6c61746572616c697a616044820152711d1a5bdb94985d19481d1bdbc81cdb585b1b60721b6064820152fd5b61073c620186a0821115611e6d565b601f54811161074e57601e55816106b2565b60405162461bcd60e51b8152602060048201526025818401527f4d61726b65743a20636f6c6c61746572616c697a6174696f6e5261746520746f6044820152646f2062696760d81b6064820152608490fd5b806016547fae6e0ab3b95f0a53ff9660a390ccedcbbf1f2355dce974a9841af106fddcfaba600080a3601655816106a7565b6107e0620186a08210611e6d565b6107ed601b548211611e6d565b601c558161069c565b610804620186a08210611e6d565b610811601c548210611e6d565b601b5581610692565b610828620186a08210611e6d565b601d5581610688565b610840620186a0821115611e6d565b601a558161067e565b610858620186a0821115611e6d565b60195581610674565b816008549182167f5a62d22209e370e38eea92cfddcd228e656e6ec139243392a760a7769f5877fd600080a36001600160a01b031916176008558180610669565b82916108af601054611d2c565b601f81116109a3575b50600090601f841160011461092057600093610913575b5050508160011b916000199060031b1c1916176010555b7fa6f004921c944d4b8bf6e38462b00f36a58d62495d56b51f571ab78f732c9815600080a1838084610660565b01013590508486806108cf565b60106000908152601f1985169550600080516020612b8a83398151915293509091889160205b8782106109845750508460019610610968575b50505050811b016010556108e6565b60001960f88660031b161c199201013516905585808681610959565b8285019093013585556001949094019389929182019190810190610946565b60106000529092509050600080516020612b8a833981519152601f840160051c8101602085106109fd575b91849391601f8994920160051c01905b8181106109eb57506108b8565b600081558594508893506001016109de565b50806109ce565b600f80546001600160a01b0319169190911790557f0b2d6eb667d0522c3eb86e4288afecae6c11591ffd1345d4d12407e0598bca9b600080a185610658565b346102ee5760003660031901126102ee576008546040516001600160a01b039091168152602090f35b346102ee5760003660031901126102ee576020610a876127b2565b604051908152f35b346102ee5760003660031901126102ee576020602854604051908152f35b346102ee5760003660031901126102ee576020601e54604051908152f35b346102ee5760003660031901126102ee57602060ff602554166040519015158152f35b346102ee5760003660031901126102ee5760406024548151906001600160401b03908181168352831c166020820152f35b346102ee5760003660031901126102ee576020601a54604051908152f35b346102ee5760403660031901126102ee57610b56611c73565b602435908115801590610c12575b610b9a575b6040519182526001600160a01b0316903390600080516020612b6a83398151915290602090a3602060405160018152f35b336000526001602052604060002054610bb5838210156124eb565b6001600160a01b038216908333839003610bd2575b505050610b69565b610be691610be1841515612530565b611eee565b3360005260016020526040600020556000526040600020610c08838254611efb565b9055828083610bca565b50336001600160a01b03821614610b64565b346102ee5760403660031901126102ee576060610c4b610c42611c73565b6024359061203a565b9060405192835260208301526040820152f35b346102ee5760403660031901126102ee576020610a87610c7c611c73565b6024359061228f565b346102ee5760003660031901126102ee57604051600090602b54610ca881611d2c565b808352600191808316908115610d3b5750600114610ce1575b610cdd83610cd181870382611db8565b60405191829182611dd9565b0390f35b602b600090815260209450917f11c44e4875b74d31ff9fd779bf2566af7bd15b87fc985d01f5094b89e3669e4f5b828410610d2857505050810190910190610cd181610cc1565b8054858501870152928501928101610d0f565b610cdd9550610cd193506020915091849260ff191682840152151560051b8201019350610cc1565b346102ee5760403660031901126102ee576001600160401b036004358181116102ee57366023820112156102ee578060040135918211610f665760405191610db5601f8201601f191660200184611db8565b808352602083019136602483830101116102ee57816000926024602093018537840101526024359161ffff831683036102ee576101009182828051810103126102ee57610e0190612188565b610e0d60408301612575565b91610e1a60608201612575565b9460808201519460a08301519260c08101519160ff831683036102ee5760e082015191015191844211610592578515610f40577f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e2665b6001600160a01b03881660009081526004602052604090208054909690600019811461057c5761ffff61052097610efd9960018401905560405194602086015216604084015260018060a01b038a16606084015260018060a01b038c1660808401528a60a084015260c083015260e082015260e08152610eee81611d81565b602081519101206104ef6123c1565b6001600160a01b038381169116036105375715610f2a576102ec926001600160a01b03908116911661275b565b6102ec926001600160a01b03908116911661270d565b7f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d6610e6f565b634e487b7160e01b600052604160045260246000fd5b346102ee5760003660031901126102ee576005546040516001600160a01b039091168152602090f35b346102ee5760003660031901126102ee576020601b54604051908152f35b346102ee5760203660031901126102ee576001600160a01b03610fe4611c73565b1660005260236020526020604060002054604051908152f35b346102ee5760003660031901126102ee57601454604080516001600160801b038316815260809290921c602083015290f35b346102ee5760403660031901126102ee5761105561104b611c73565b602435903361270d565b602060405160018152f35b346102ee5760203660031901126102ee576001600160a01b03611081611c73565b1660005260046020526020604060002054604051908152f35b346102ee5760003660031901126102ee57600f546040516001600160a01b039091168152602090f35b346102ee5760003660031901126102ee576020602d54604051908152f35b346102ee5760003660031901126102ee5760405160009060105461110481611d2c565b808352600191808316908115610d3b575060011461112c57610cdd83610cd181870382611db8565b601060009081526020945091600080516020612b8a8339815191525b82841061116157505050810190910190610cd181610cc1565b8054858501870152928501928101611148565b346102ee5760203660031901126102ee5760043560098110156102ee5760ff61119e602092611cfd565b54166040519015158152f35b346102ee5760203660031901126102ee576001600160a01b036111cb611c73565b1660005260016020526020604060002054604051908152f35b346102ee5760003660031901126102ee57600a546040516001600160a01b039091168152602090f35b346102ee5760003660031901126102ee576020602654604051908152f35b346102ee5760003660031901126102ee576020601c54604051908152f35b346102ee5760003660031901126102ee576020602c54604051908152f35b346102ee5760003660031901126102ee5760208054604051908152f35b346102ee5760003660031901126102ee576006546001600160a01b0390818116338190036112ee57806005549384167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a36001600160a01b03199283161760055516600655005b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b346102ee5760203660031901126102ee576001600160a01b03611353611c73565b1660005260176020526020604060002054604051908152f35b346102ee5760003660031901126102ee576020601554604051908152f35b346102ee5760003660031901126102ee576020600e54604051908152f35b346102ee5760003660031901126102ee576020601654604051908152f35b346102ee5760603660031901126102ee576020610a87604435602435600435611f21565b346102ee5760003660031901126102ee576020601154604051908152f35b346102ee5760003660031901126102ee57600d546040516001600160a01b039091168152602090f35b346102ee5760003660031901126102ee576020601254604051908152f35b346102ee5760003660031901126102ee576020610a876123c1565b346102ee5760003660031901126102ee576020601954604051908152f35b346102ee5760003660031901126102ee576014546040516001600160801b039091168152602090f35b346102ee5760003660031901126102ee576020601354604051908152f35b346102ee5760603660031901126102ee576114e8611c73565b6114f0611c89565b604435908161152d575b6040519182526001600160a01b03908116921690600080516020612b6a83398151915290602090a3602060405160018152f35b60018060a01b03808416806000526020600181528460406000205493611555828610156124eb565b85169384840361156a575b50505050506114fa565b8360005260028352604060002033600052835260406000205460001981036115de575b5084926115b5600080516020612b6a833981519152979593600193610be16020991515612530565b926000525260406000205560005260406000206115d3858254611efb565b905591858481611560565b9091811061163357602094926115b588600080516020612b6a83398151915298969461160c82600196611eee565b8660005260028552604060002033600052855260406000205593509395975050929461158d565b60405162461bcd60e51b815260048101849052601860248201527745524332303a20616c6c6f77616e636520746f6f206c6f7760401b6044820152606490fd5b346102ee5760003660031901126102ee576020602954604051908152f35b346102ee5761169f36611cae565b9183919395949542116105925760018060a01b0392838816948560005260046020526040600020928354600019811461057c5761173e95610520956001830190556040519060208201927f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d68452600060408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e081526104e481611d81565b1603610537576102ec9261270d565b346102ee5760003660031901126102ee57602a546040516001600160a01b039091168152602090f35b346102ee5760203660031901126102ee576001600160a01b03611797611c73565b1660005260186020526020604060002054604051908152f35b346102ee5760003660031901126102ee57602060405160008152f35b346102ee5760403660031901126102ee5760043560098110156102ee576117f1611c9f565b6008549091906001600160a01b031633036118aa5760ff61181182611cfd565b5416151591151591821461187057808260ff61182f61185e94611cfd565b54161515827feeec81de25875ce1725479bb76f720a8defdb43dea041919ae37bb4aae9847c0600080a4611cfd565b9060ff80198354169116179055600080f35b60405162461bcd60e51b81526020600482015260126024820152714d61726b65743a2073616d6520737461746560701b6044820152606490fd5b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881d5b985d5d1a1bdc9a5e995960621b6044820152606490fd5b346102ee5760403660031901126102ee57611055611902611c73565b602435903361275b565b346102ee5760603660031901126102ee57611925611c73565b61192d611c9f565b6044359081151582036102ee5760018060a01b0392839161195383600554163314611e22565b156119f75716908115908115916119ef575b50156119b257806005549283167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a36001600160a01b031991821617600555600680549091169055005b60405162461bcd60e51b81526020600482015260156024820152744f776e61626c653a207a65726f206164647265737360581b6044820152606490fd5b905083611965565b9150501660018060a01b03196006541617600655600080f35b346102ee5760003660031901126102ee5760018060a01b03600f54166040519063d6d7d52560e01b8252602091826004820152600091601054611a5281611d2c565b908160248501526001908181169081600014611c015750600114611bc1575b50509060409181600081809603925af18015611bb557600091600091611b76575b508115611b19578015611add5760409281601155817f9f9192b5edb17356c524e08d9e025c8e2f6307e6ea52fb7968faa3081f51c3c8600080a25b4260135583519215158352820152f35b60405162461bcd60e51b81526004810184905260146024820152734d61726b65743a20696e76616c6964207261746560601b6044820152606490fd5b50611b2960135460125490611efb565b4211611b3a57601154604092611acd565b60405162461bcd60e51b815260048101839052601460248201527313585c9ad95d0e881c985d19481d1bdbc81bdb1960621b6044820152606490fd5b9150506040813d604011611bad575b81611b9260409383611db8565b810103126102ee5781611ba482612188565b91015183611a92565b3d9150611b85565b6040513d6000823e3d90fd5b935060106000528460002093856000955b838710611bec575050505091810160440191806040611a71565b80548688016044015295019486908201611bd2565b60ff191660448087019190915292151560051b8501909201945082915060409050611a71565b346102ee5760403660031901126102ee57602090611c43611c73565b611c4b611c89565b9060018060a01b03809116600052600384526040600020911660005282526040600020548152f35b600435906001600160a01b03821682036102ee57565b602435906001600160a01b03821682036102ee57565b6024359081151582036102ee57565b60e09060031901126102ee576001600160a01b039060043582811681036102ee579160243590811681036102ee5790604435906064359060843560ff811681036102ee579060a4359060c43590565b6009811015611d16576000526007602052604060002090565b634e487b7160e01b600052602160045260246000fd5b90600182811c92168015611d5c575b6020831014611d4657565b634e487b7160e01b600052602260045260246000fd5b91607f1691611d3b565b604081019081106001600160401b03821117610f6657604052565b61010081019081106001600160401b03821117610f6657604052565b608081019081106001600160401b03821117610f6657604052565b90601f801991011681019081106001600160401b03821117610f6657604052565b6020808252825181830181905290939260005b828110611e0e57505060409293506000838284010152601f8019910116010190565b818101860151848201604001528501611dec565b15611e2957565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b15611e7457565b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881b9bdd081d985b1a59607a1b6044820152606490fd5b8181029291811591840414171561057c57565b8115611eca570490565b634e487b7160e01b600052601260045260246000fd5b604d811161057c57600a0a90565b9190820391821161057c57565b9190820180921161057c57565b8181039291600013801582851316918412161761057c57565b601454919291611f6a91611f5b91611f5191611f47906001600160801b03831690611ead565b9060801c90611ec0565b93601f5490611ead565b611f6483611ee0565b90611ec0565b80831061203257611f7e611fba9184611eee565b91611fb5611faf611fa6601e54611fa0611f9786611ee0565b60205490611efb565b90611ead565b611f6484611ee0565b91611ee0565b611f08565b6509184e72a0009081810291818305149015171561057c57670de0b6b3a76400009182810292818405149015171561057c578015611eca57600160ff1b9180831460001983141661057c570590600082121561202b57811461057c57600003905b808211612026575090565b905090565b509061201b565b505050600090565b6001600160a01b0390811660008181526017602090815260408220549295949391929091811561217b5761206c6129d5565b90612078861515612195565b6009541683600c54898752601882526064604088205491604051948593849263442c159960e01b8452600484015260248301528960448301525afa90811561217057859161213d575b509285949261211d6018936120f8612131996120f36120ea60409a620186a06021540490611ead565b601e5490611ead565b611ec0565b815190936001600160801b0391869161211391841690611ead565b9201511690611ec0565b81811061213557035b9783525220546121e1565b9091565b505082612126565b90508381813d8311612169575b6121548183611db8565b8101031261216557516121316120c1565b8480fd5b503d61214a565b6040513d87823e3d90fd5b5050509192505080918190565b519081151582036102ee57565b1561219c57565b60405162461bcd60e51b815260206004820152601e60248201527f4d61726b65743a2065786368616e676552617465206e6f742076616c696400006044820152606490fd5b6121ec821515612195565b602060018060a01b0360095416916064600c54604051948593849263442c159960e01b845260048401526024830152600060448301525afa908115611bb557600091612259575b50906120f36122459260215490611ead565b620186a0612255601e5483611ead565b0491565b906020823d8211612287575b8161227260209383611db8565b810103126122845750516120f3612233565b80fd5b3d9150612265565b6001600160a01b031660008181526018602052604081205490926122b2916121e1565b9183526017602052604083205480156123bb5781156123bb578181106123bb57828110156123b1576014546122fb918391610be191611f47906001600160801b03831690611ead565b90620186a0928383029280840485149015171561239d576123209291611f6491611eee565b91601b5491601c54936123338585611f08565b80820291848212600160ff1b82141661239d57818305149015171561238957058184820194851291129080158216911516176123755750808212612026575090565b634e487b7160e01b81526011600452602490fd5b634e487b7160e01b83526011600452602483fd5b634e487b7160e01b85526011600452602485fd5b50505050601b5490565b50505090565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031614806124c2575b1561241c577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f000000000000000000000000000000000000000000000000000000000000000082527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a0815260c081018181106001600160401b03821117610f665760405251902090565b507f000000000000000000000000000000000000000000000000000000000000000046146123f3565b156124f257565b60405162461bcd60e51b815260206004820152601660248201527545524332303a2062616c616e636520746f6f206c6f7760501b6044820152606490fd5b1561253757565b60405162461bcd60e51b815260206004820152601660248201527545524332303a206e6f207a65726f206164647265737360501b6044820152606490fd5b51906001600160a01b03821682036102ee57565b6005811015611d16578061259a5750565b600181036125e25760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b6044820152606490fd5b6002810361262f5760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606490fd5b60031461263857565b60405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608490fd5b9291906fa2a8918ca85bafe22016d0b997e4df60600160ff1b0383116127015791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa156126f45781516001600160a01b038116156126ee579190565b50600190565b50604051903d90823e3d90fd5b50505050600090600390565b7fe50de2333c10a9502fcb1d8ae13a51bbf423153dfc63c2b8997665b32154afc360018060a01b038092169160009083825260036020526040822094169384825260205284604082205580a4565b909160207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259160018060a01b03809416938460005260028352604060002095169485600052825280604060002055604051908152a3565b60ff60255416612930576014546001600160801b031690811561292957600a54604051631848f2bf60e31b8152602093916001600160a01b03919085908290600490829086165afa8015611bb55785916000916128ec575b50600460405180948193631a674cc560e11b8352165afa938415611bb5576000946128b9575b505061284c9192670de0b6b3a764000092839160285490611ead565b0490818110156128b0576128636029548092611eee565b8381029080820485149015171561057c57611f64612884926128a494611eee565b6026549261289e602754926128998487611eee565b611ead565b04611efb565b90808211612026575090565b50505060265490565b81813d83116128e5575b6128cd8183611db8565b810103126128e15751925061284c38612830565b8380fd5b503d6128c3565b909181813d8311612922575b6129028183611db8565b8101031261291e5751908282168203612284575084903861280a565b5080fd5b503d6128f8565b6027549150565b600a5460405163e6abad4960e01b815290602090829060049082906001600160a01b03165afa908115611bb557600091612968575090565b906020823d821161298e575b8161298160209383611db8565b8101031261228457505190565b3d9150612974565b604051906129a382611d66565b6014546001600160801b038116835260801c6020830152565b6001600160801b03918216908216019190821161057c57565b600060206040516129e581611d66565b82815201526001600160401b0390612a048260245460401c1642611eee565b918215612a5b57612a5661289991670de0b6b3a7640000612a4b612a26612996565b9660018060801b03958694858a5116906301e13380612a436127b2565b041690611ead565b0416828551166129bc565b168252565b509050612a66612996565b90565b604051612a7581611d66565b6024546001600160401b03908181168352818160401c16612a9d602085019180835242611eee565b928315612b6257602094816301e13380612ab56127b2565b041681528142168352612ac6612996565b670de0b6b3a7640000612aeb60018060801b0397612899898551168787511690611ead565b0495612afc818816828451166129bc565b1680825296015160801b6001600160801b031990811690961760145551915192909416931692831760409190911b67ffffffffffffffff60401b16176024557f7484db546dcd57af0104c73c8a6968dfbaf5767f047cee0dadd0499ad7df81a0600080a3565b505050505056feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae672a2646970667358221220a0cbe3086b31edd259f56d95eb68ed1e6d574fa7458606dfdfe4d71e2381e24764736f6c63430008120033", - "deployedBytecode": "0x608080604052600436101561001357600080fd5b60003560e01c908162a02a2014611c275750806302ce728f14611a10578063078dfbe71461190c578063095ea7b3146118e65780630c4e84f0146117cc57806318160ddd146117b05780631c9e379b146117765780631d4d3a5d1461174d5780631da8bf10146116915780631fb8f81a1461167357806323b872dd146114cf578063331960ff146114b157806334ce998a1461148857806334d441d01461146a5780633644e5151461144f57806337b6b7b91461143157806338d52e0f146114085780633ba0b9a9146113ea5780633f741adb146113c657806340626d8b146113a857806344de240a1461138a578063473e3ce71461136c57806348e4163e146113325780634e71e0c814611284578063529898f214611267578063542afda314611249578063579354621461122b5780636b19ad161461120d5780636c3d8b8f146111e457806370a08231146111aa578063727785471461117457806374645ff3146110e157806374c9e481146110c35780637dc0d1d01461109a5780637ecebe00146110605780637fa0b84e1461102f5780638285ef4014610ffd57806387b2793714610fc35780638c5d0ed314610fa55780638da5cb5b14610f7c578063910dd7c814610d63578063932bc4f814610c8557806399a9702814610c5e5780639e15e89f14610c24578063a9059cbb14610b3d578063b0e21e8a14610b1f578063b27c0e7414610aee578063b7113f1914610acb578063bb4cfe3b14610aad578063bde39c5d14610a8f578063c1ad5c8d14610a6c578063ce8849ed14610a43578063d3fb2a38146105d7578063d505accf14610437578063d8dfeb451461040e578063dd62ed3e146103bd578063de40657714610394578063e0996cb614610376578063e30c39781461034d578063ea64dd561461032f578063eec0f42e14610311578063f791395d146102f35763f8ba4cff146102d357600080fd5b346102ee5760003660031901126102ee576102ec612a69565b005b600080fd5b346102ee5760003660031901126102ee576020602754604051908152f35b346102ee5760003660031901126102ee576020600c54604051908152f35b346102ee5760003660031901126102ee576020601f54604051908152f35b346102ee5760003660031901126102ee576006546040516001600160a01b039091168152602090f35b346102ee5760003660031901126102ee576020601d54604051908152f35b346102ee5760003660031901126102ee576009546040516001600160a01b039091168152602090f35b346102ee5760403660031901126102ee576103d6611c73565b6103de611c89565b9060018060a01b038091166000526002602052604060002091166000526020526020604060002054604051908152f35b346102ee5760003660031901126102ee57600b546040516001600160a01b039091168152602090f35b346102ee5761044536611cae565b9183919395949542116105925760018060a01b0392838816948560005260046020526040600020928354600019811461057c5761052895610520956001830190556040519060208201927f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e2668452600060408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e081526104e481611d81565b5190206104ef6123c1565b9060405190602082019261190160f01b8452602283015260428201526042815261051881611d9d565b519020612688565b919091612589565b1603610537576102ec9261275b565b60405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152606490fd5b634e487b7160e01b600052601160045260246000fd5b60405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b346102ee576101603660031901126102ee576001600160a01b03600435818116908190036102ee576024916001600160401b0383358181116102ee57366023820112156102ee5780600401359182116102ee57368583830101116102ee57604435938385168095036102ee5761065284600554163314611e22565b80610a04575b5084826108a2575b50505081610861575b505060643580610849575b5060843580610831575b5060a4358061081a575b5060c435806107f6575b5060e435806107d2575b5061010435806107a0575b50610124358061072d575b506101443590816106bf57005b601e5482106106ce5750601f55005b60849060326040519162461bcd60e51b8352602060048401528201527f4d61726b65743a206c69717569646174696f6e436f6c6c61746572616c697a616044820152711d1a5bdb94985d19481d1bdbc81cdb585b1b60721b6064820152fd5b61073c620186a0821115611e6d565b601f54811161074e57601e55816106b2565b60405162461bcd60e51b8152602060048201526025818401527f4d61726b65743a20636f6c6c61746572616c697a6174696f6e5261746520746f6044820152646f2062696760d81b6064820152608490fd5b806016547fae6e0ab3b95f0a53ff9660a390ccedcbbf1f2355dce974a9841af106fddcfaba600080a3601655816106a7565b6107e0620186a08210611e6d565b6107ed601b548211611e6d565b601c558161069c565b610804620186a08210611e6d565b610811601c548210611e6d565b601b5581610692565b610828620186a08210611e6d565b601d5581610688565b610840620186a0821115611e6d565b601a558161067e565b610858620186a0821115611e6d565b60195581610674565b816008549182167f5a62d22209e370e38eea92cfddcd228e656e6ec139243392a760a7769f5877fd600080a36001600160a01b031916176008558180610669565b82916108af601054611d2c565b601f81116109a3575b50600090601f841160011461092057600093610913575b5050508160011b916000199060031b1c1916176010555b7fa6f004921c944d4b8bf6e38462b00f36a58d62495d56b51f571ab78f732c9815600080a1838084610660565b01013590508486806108cf565b60106000908152601f1985169550600080516020612b8a83398151915293509091889160205b8782106109845750508460019610610968575b50505050811b016010556108e6565b60001960f88660031b161c199201013516905585808681610959565b8285019093013585556001949094019389929182019190810190610946565b60106000529092509050600080516020612b8a833981519152601f840160051c8101602085106109fd575b91849391601f8994920160051c01905b8181106109eb57506108b8565b600081558594508893506001016109de565b50806109ce565b600f80546001600160a01b0319169190911790557f0b2d6eb667d0522c3eb86e4288afecae6c11591ffd1345d4d12407e0598bca9b600080a185610658565b346102ee5760003660031901126102ee576008546040516001600160a01b039091168152602090f35b346102ee5760003660031901126102ee576020610a876127b2565b604051908152f35b346102ee5760003660031901126102ee576020602854604051908152f35b346102ee5760003660031901126102ee576020601e54604051908152f35b346102ee5760003660031901126102ee57602060ff602554166040519015158152f35b346102ee5760003660031901126102ee5760406024548151906001600160401b03908181168352831c166020820152f35b346102ee5760003660031901126102ee576020601a54604051908152f35b346102ee5760403660031901126102ee57610b56611c73565b602435908115801590610c12575b610b9a575b6040519182526001600160a01b0316903390600080516020612b6a83398151915290602090a3602060405160018152f35b336000526001602052604060002054610bb5838210156124eb565b6001600160a01b038216908333839003610bd2575b505050610b69565b610be691610be1841515612530565b611eee565b3360005260016020526040600020556000526040600020610c08838254611efb565b9055828083610bca565b50336001600160a01b03821614610b64565b346102ee5760403660031901126102ee576060610c4b610c42611c73565b6024359061203a565b9060405192835260208301526040820152f35b346102ee5760403660031901126102ee576020610a87610c7c611c73565b6024359061228f565b346102ee5760003660031901126102ee57604051600090602b54610ca881611d2c565b808352600191808316908115610d3b5750600114610ce1575b610cdd83610cd181870382611db8565b60405191829182611dd9565b0390f35b602b600090815260209450917f11c44e4875b74d31ff9fd779bf2566af7bd15b87fc985d01f5094b89e3669e4f5b828410610d2857505050810190910190610cd181610cc1565b8054858501870152928501928101610d0f565b610cdd9550610cd193506020915091849260ff191682840152151560051b8201019350610cc1565b346102ee5760403660031901126102ee576001600160401b036004358181116102ee57366023820112156102ee578060040135918211610f665760405191610db5601f8201601f191660200184611db8565b808352602083019136602483830101116102ee57816000926024602093018537840101526024359161ffff831683036102ee576101009182828051810103126102ee57610e0190612188565b610e0d60408301612575565b91610e1a60608201612575565b9460808201519460a08301519260c08101519160ff831683036102ee5760e082015191015191844211610592578515610f40577f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e2665b6001600160a01b03881660009081526004602052604090208054909690600019811461057c5761ffff61052097610efd9960018401905560405194602086015216604084015260018060a01b038a16606084015260018060a01b038c1660808401528a60a084015260c083015260e082015260e08152610eee81611d81565b602081519101206104ef6123c1565b6001600160a01b038381169116036105375715610f2a576102ec926001600160a01b03908116911661275b565b6102ec926001600160a01b03908116911661270d565b7f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d6610e6f565b634e487b7160e01b600052604160045260246000fd5b346102ee5760003660031901126102ee576005546040516001600160a01b039091168152602090f35b346102ee5760003660031901126102ee576020601b54604051908152f35b346102ee5760203660031901126102ee576001600160a01b03610fe4611c73565b1660005260236020526020604060002054604051908152f35b346102ee5760003660031901126102ee57601454604080516001600160801b038316815260809290921c602083015290f35b346102ee5760403660031901126102ee5761105561104b611c73565b602435903361270d565b602060405160018152f35b346102ee5760203660031901126102ee576001600160a01b03611081611c73565b1660005260046020526020604060002054604051908152f35b346102ee5760003660031901126102ee57600f546040516001600160a01b039091168152602090f35b346102ee5760003660031901126102ee576020602d54604051908152f35b346102ee5760003660031901126102ee5760405160009060105461110481611d2c565b808352600191808316908115610d3b575060011461112c57610cdd83610cd181870382611db8565b601060009081526020945091600080516020612b8a8339815191525b82841061116157505050810190910190610cd181610cc1565b8054858501870152928501928101611148565b346102ee5760203660031901126102ee5760043560098110156102ee5760ff61119e602092611cfd565b54166040519015158152f35b346102ee5760203660031901126102ee576001600160a01b036111cb611c73565b1660005260016020526020604060002054604051908152f35b346102ee5760003660031901126102ee57600a546040516001600160a01b039091168152602090f35b346102ee5760003660031901126102ee576020602654604051908152f35b346102ee5760003660031901126102ee576020601c54604051908152f35b346102ee5760003660031901126102ee576020602c54604051908152f35b346102ee5760003660031901126102ee5760208054604051908152f35b346102ee5760003660031901126102ee576006546001600160a01b0390818116338190036112ee57806005549384167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a36001600160a01b03199283161760055516600655005b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b346102ee5760203660031901126102ee576001600160a01b03611353611c73565b1660005260176020526020604060002054604051908152f35b346102ee5760003660031901126102ee576020601554604051908152f35b346102ee5760003660031901126102ee576020600e54604051908152f35b346102ee5760003660031901126102ee576020601654604051908152f35b346102ee5760603660031901126102ee576020610a87604435602435600435611f21565b346102ee5760003660031901126102ee576020601154604051908152f35b346102ee5760003660031901126102ee57600d546040516001600160a01b039091168152602090f35b346102ee5760003660031901126102ee576020601254604051908152f35b346102ee5760003660031901126102ee576020610a876123c1565b346102ee5760003660031901126102ee576020601954604051908152f35b346102ee5760003660031901126102ee576014546040516001600160801b039091168152602090f35b346102ee5760003660031901126102ee576020601354604051908152f35b346102ee5760603660031901126102ee576114e8611c73565b6114f0611c89565b604435908161152d575b6040519182526001600160a01b03908116921690600080516020612b6a83398151915290602090a3602060405160018152f35b60018060a01b03808416806000526020600181528460406000205493611555828610156124eb565b85169384840361156a575b50505050506114fa565b8360005260028352604060002033600052835260406000205460001981036115de575b5084926115b5600080516020612b6a833981519152979593600193610be16020991515612530565b926000525260406000205560005260406000206115d3858254611efb565b905591858481611560565b9091811061163357602094926115b588600080516020612b6a83398151915298969461160c82600196611eee565b8660005260028552604060002033600052855260406000205593509395975050929461158d565b60405162461bcd60e51b815260048101849052601860248201527745524332303a20616c6c6f77616e636520746f6f206c6f7760401b6044820152606490fd5b346102ee5760003660031901126102ee576020602954604051908152f35b346102ee5761169f36611cae565b9183919395949542116105925760018060a01b0392838816948560005260046020526040600020928354600019811461057c5761173e95610520956001830190556040519060208201927f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d68452600060408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e081526104e481611d81565b1603610537576102ec9261270d565b346102ee5760003660031901126102ee57602a546040516001600160a01b039091168152602090f35b346102ee5760203660031901126102ee576001600160a01b03611797611c73565b1660005260186020526020604060002054604051908152f35b346102ee5760003660031901126102ee57602060405160008152f35b346102ee5760403660031901126102ee5760043560098110156102ee576117f1611c9f565b6008549091906001600160a01b031633036118aa5760ff61181182611cfd565b5416151591151591821461187057808260ff61182f61185e94611cfd565b54161515827feeec81de25875ce1725479bb76f720a8defdb43dea041919ae37bb4aae9847c0600080a4611cfd565b9060ff80198354169116179055600080f35b60405162461bcd60e51b81526020600482015260126024820152714d61726b65743a2073616d6520737461746560701b6044820152606490fd5b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881d5b985d5d1a1bdc9a5e995960621b6044820152606490fd5b346102ee5760403660031901126102ee57611055611902611c73565b602435903361275b565b346102ee5760603660031901126102ee57611925611c73565b61192d611c9f565b6044359081151582036102ee5760018060a01b0392839161195383600554163314611e22565b156119f75716908115908115916119ef575b50156119b257806005549283167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a36001600160a01b031991821617600555600680549091169055005b60405162461bcd60e51b81526020600482015260156024820152744f776e61626c653a207a65726f206164647265737360581b6044820152606490fd5b905083611965565b9150501660018060a01b03196006541617600655600080f35b346102ee5760003660031901126102ee5760018060a01b03600f54166040519063d6d7d52560e01b8252602091826004820152600091601054611a5281611d2c565b908160248501526001908181169081600014611c015750600114611bc1575b50509060409181600081809603925af18015611bb557600091600091611b76575b508115611b19578015611add5760409281601155817f9f9192b5edb17356c524e08d9e025c8e2f6307e6ea52fb7968faa3081f51c3c8600080a25b4260135583519215158352820152f35b60405162461bcd60e51b81526004810184905260146024820152734d61726b65743a20696e76616c6964207261746560601b6044820152606490fd5b50611b2960135460125490611efb565b4211611b3a57601154604092611acd565b60405162461bcd60e51b815260048101839052601460248201527313585c9ad95d0e881c985d19481d1bdbc81bdb1960621b6044820152606490fd5b9150506040813d604011611bad575b81611b9260409383611db8565b810103126102ee5781611ba482612188565b91015183611a92565b3d9150611b85565b6040513d6000823e3d90fd5b935060106000528460002093856000955b838710611bec575050505091810160440191806040611a71565b80548688016044015295019486908201611bd2565b60ff191660448087019190915292151560051b8501909201945082915060409050611a71565b346102ee5760403660031901126102ee57602090611c43611c73565b611c4b611c89565b9060018060a01b03809116600052600384526040600020911660005282526040600020548152f35b600435906001600160a01b03821682036102ee57565b602435906001600160a01b03821682036102ee57565b6024359081151582036102ee57565b60e09060031901126102ee576001600160a01b039060043582811681036102ee579160243590811681036102ee5790604435906064359060843560ff811681036102ee579060a4359060c43590565b6009811015611d16576000526007602052604060002090565b634e487b7160e01b600052602160045260246000fd5b90600182811c92168015611d5c575b6020831014611d4657565b634e487b7160e01b600052602260045260246000fd5b91607f1691611d3b565b604081019081106001600160401b03821117610f6657604052565b61010081019081106001600160401b03821117610f6657604052565b608081019081106001600160401b03821117610f6657604052565b90601f801991011681019081106001600160401b03821117610f6657604052565b6020808252825181830181905290939260005b828110611e0e57505060409293506000838284010152601f8019910116010190565b818101860151848201604001528501611dec565b15611e2957565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b15611e7457565b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881b9bdd081d985b1a59607a1b6044820152606490fd5b8181029291811591840414171561057c57565b8115611eca570490565b634e487b7160e01b600052601260045260246000fd5b604d811161057c57600a0a90565b9190820391821161057c57565b9190820180921161057c57565b8181039291600013801582851316918412161761057c57565b601454919291611f6a91611f5b91611f5191611f47906001600160801b03831690611ead565b9060801c90611ec0565b93601f5490611ead565b611f6483611ee0565b90611ec0565b80831061203257611f7e611fba9184611eee565b91611fb5611faf611fa6601e54611fa0611f9786611ee0565b60205490611efb565b90611ead565b611f6484611ee0565b91611ee0565b611f08565b6509184e72a0009081810291818305149015171561057c57670de0b6b3a76400009182810292818405149015171561057c578015611eca57600160ff1b9180831460001983141661057c570590600082121561202b57811461057c57600003905b808211612026575090565b905090565b509061201b565b505050600090565b6001600160a01b0390811660008181526017602090815260408220549295949391929091811561217b5761206c6129d5565b90612078861515612195565b6009541683600c54898752601882526064604088205491604051948593849263442c159960e01b8452600484015260248301528960448301525afa90811561217057859161213d575b509285949261211d6018936120f8612131996120f36120ea60409a620186a06021540490611ead565b601e5490611ead565b611ec0565b815190936001600160801b0391869161211391841690611ead565b9201511690611ec0565b81811061213557035b9783525220546121e1565b9091565b505082612126565b90508381813d8311612169575b6121548183611db8565b8101031261216557516121316120c1565b8480fd5b503d61214a565b6040513d87823e3d90fd5b5050509192505080918190565b519081151582036102ee57565b1561219c57565b60405162461bcd60e51b815260206004820152601e60248201527f4d61726b65743a2065786368616e676552617465206e6f742076616c696400006044820152606490fd5b6121ec821515612195565b602060018060a01b0360095416916064600c54604051948593849263442c159960e01b845260048401526024830152600060448301525afa908115611bb557600091612259575b50906120f36122459260215490611ead565b620186a0612255601e5483611ead565b0491565b906020823d8211612287575b8161227260209383611db8565b810103126122845750516120f3612233565b80fd5b3d9150612265565b6001600160a01b031660008181526018602052604081205490926122b2916121e1565b9183526017602052604083205480156123bb5781156123bb578181106123bb57828110156123b1576014546122fb918391610be191611f47906001600160801b03831690611ead565b90620186a0928383029280840485149015171561239d576123209291611f6491611eee565b91601b5491601c54936123338585611f08565b80820291848212600160ff1b82141661239d57818305149015171561238957058184820194851291129080158216911516176123755750808212612026575090565b634e487b7160e01b81526011600452602490fd5b634e487b7160e01b83526011600452602483fd5b634e487b7160e01b85526011600452602485fd5b50505050601b5490565b50505090565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031614806124c2575b1561241c577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f000000000000000000000000000000000000000000000000000000000000000082527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a0815260c081018181106001600160401b03821117610f665760405251902090565b507f000000000000000000000000000000000000000000000000000000000000000046146123f3565b156124f257565b60405162461bcd60e51b815260206004820152601660248201527545524332303a2062616c616e636520746f6f206c6f7760501b6044820152606490fd5b1561253757565b60405162461bcd60e51b815260206004820152601660248201527545524332303a206e6f207a65726f206164647265737360501b6044820152606490fd5b51906001600160a01b03821682036102ee57565b6005811015611d16578061259a5750565b600181036125e25760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b6044820152606490fd5b6002810361262f5760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606490fd5b60031461263857565b60405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608490fd5b9291906fa2a8918ca85bafe22016d0b997e4df60600160ff1b0383116127015791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa156126f45781516001600160a01b038116156126ee579190565b50600190565b50604051903d90823e3d90fd5b50505050600090600390565b7fe50de2333c10a9502fcb1d8ae13a51bbf423153dfc63c2b8997665b32154afc360018060a01b038092169160009083825260036020526040822094169384825260205284604082205580a4565b909160207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259160018060a01b03809416938460005260028352604060002095169485600052825280604060002055604051908152a3565b60ff60255416612930576014546001600160801b031690811561292957600a54604051631848f2bf60e31b8152602093916001600160a01b03919085908290600490829086165afa8015611bb55785916000916128ec575b50600460405180948193631a674cc560e11b8352165afa938415611bb5576000946128b9575b505061284c9192670de0b6b3a764000092839160285490611ead565b0490818110156128b0576128636029548092611eee565b8381029080820485149015171561057c57611f64612884926128a494611eee565b6026549261289e602754926128998487611eee565b611ead565b04611efb565b90808211612026575090565b50505060265490565b81813d83116128e5575b6128cd8183611db8565b810103126128e15751925061284c38612830565b8380fd5b503d6128c3565b909181813d8311612922575b6129028183611db8565b8101031261291e5751908282168203612284575084903861280a565b5080fd5b503d6128f8565b6027549150565b600a5460405163e6abad4960e01b815290602090829060049082906001600160a01b03165afa908115611bb557600091612968575090565b906020823d821161298e575b8161298160209383611db8565b8101031261228457505190565b3d9150612974565b604051906129a382611d66565b6014546001600160801b038116835260801c6020830152565b6001600160801b03918216908216019190821161057c57565b600060206040516129e581611d66565b82815201526001600160401b0390612a048260245460401c1642611eee565b918215612a5b57612a5661289991670de0b6b3a7640000612a4b612a26612996565b9660018060801b03958694858a5116906301e13380612a436127b2565b041690611ead565b0416828551166129bc565b168252565b509050612a66612996565b90565b604051612a7581611d66565b6024546001600160401b03908181168352818160401c16612a9d602085019180835242611eee565b928315612b6257602094816301e13380612ab56127b2565b041681528142168352612ac6612996565b670de0b6b3a7640000612aeb60018060801b0397612899898551168787511690611ead565b0495612afc818816828451166129bc565b1680825296015160801b6001600160801b031990811690961760145551915192909416931692831760409190911b67ffffffffffffffff60401b16176024557f7484db546dcd57af0104c73c8a6968dfbaf5767f047cee0dadd0499ad7df81a0600080a3565b505050505056feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae672a2646970667358221220a0cbe3086b31edd259f56d95eb68ed1e6d574fa7458606dfdfe4d71e2381e24764736f6c63430008120033", + "bytecode": "0x61014080604052346200018a5762000017816200018f565b600f81526001602082016e546170696f63612042696742616e6760881b8152602060405162000046816200018f565b8381520192603160f81b845251902091208160e052610100918183524660a0526040519160208301907f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f92838352604085015260608401524660808401523060a084015260a0835260c083019280841060018060401b03851117620001745760408490525190206080523060c052610120908152600580546001600160a01b0319163390811790915560007f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a362013880601b5562015f90601c55612710601d55612ee06020556103e8602e55612ce29283620001ac8439608051836124fd015260a051836125c8015260c051836124c7015260e0518361254c01525182612572015251816125290152f35b634e487b7160e01b600052604160045260246000fd5b600080fd5b604081019081106001600160401b03821117620001745760405256fe608080604052600436101561001357600080fd5b60003560e01c908162a02a2014611d2a5750806302ce728f14611b13578063078dfbe714611a0f578063095ea7b3146119e95780630c4e84f0146118cf5780630f8b29ea146118b157806318160ddd146118955780631c9e379b1461185b5780631d4d3a5d146118325780631da8bf10146117765780631fb8f81a1461175857806323b872dd146115b4578063331960ff1461159657806334ce998a1461156d57806334d441d01461154f5780633644e5151461153457806337b6b7b91461151657806338d52e0f146114ed5780633ba0b9a9146114cf5780633f741adb146114ab57806340626d8b1461148d57806344de240a1461146f578063473e3ce71461145157806348e4163e146114175780634e71e0c814611369578063529898f21461134c578063542afda31461132e57806357935462146113105780636b19ad16146112f25780636c3d8b8f146112c957806370a082311461128f578063727785471461125957806374645ff3146111c657806374c9e481146111a8578063790c84671461118a5780637dc0d1d0146111615780637ecebe00146111275780637fa0b84e146110f65780638285ef40146110c457806387b279371461108a5780638c5d0ed31461106c5780638da5cb5b14611043578063910dd7c814610e2a578063932bc4f814610d4c57806399a9702814610d255780639e15e89f14610ceb578063a9059cbb14610c04578063b0e21e8a14610be6578063b27c0e7414610bb5578063b7113f1914610b92578063bb4cfe3b14610b74578063bde39c5d14610b56578063c1ad5c8d14610b33578063ce8849ed14610b0a578063d3fb2a381461069e578063d505accf146104fe578063d8dfeb45146104d5578063da863f0e146104ac578063dd62ed3e1461045b578063de40657714610432578063e0996cb614610414578063e30c3978146103eb578063ea64dd56146103cd578063eec0f42e146103af578063ef2b234a1461033d578063f791395d1461031f5763f8ba4cff146102ff57600080fd5b3461031a57600036600319011261031a57610318612b6c565b005b600080fd5b3461031a57600036600319011261031a576020602854604051908152f35b3461031a57602036600319011261031a576004356001600160a01b038181169182900361031a5761037381600554163314611f25565b816021549182167ffb4fd7114609dd603b57adbc2082205bfbbcabf9265c4b437b472f5c592b8cd7600080a36001600160a01b03191617602155005b3461031a57600036600319011261031a576020600c54604051908152f35b3461031a57600036600319011261031a576020601f54604051908152f35b3461031a57600036600319011261031a576006546040516001600160a01b039091168152602090f35b3461031a57600036600319011261031a576020601d54604051908152f35b3461031a57600036600319011261031a576009546040516001600160a01b039091168152602090f35b3461031a57604036600319011261031a57610474611d76565b61047c611d8c565b9060018060a01b038091166000526002602052604060002091166000526020526020604060002054604051908152f35b3461031a57600036600319011261031a576021546040516001600160a01b039091168152602090f35b3461031a57600036600319011261031a57600b546040516001600160a01b039091168152602090f35b3461031a5761050c36611db1565b9183919395949542116106595760018060a01b03928388169485600052600460205260406000209283546000198114610643576105ef956105e7956001830190556040519060208201927f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e2668452600060408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e081526105ab81611e84565b5190206105b66124c4565b9060405190602082019261190160f01b845260228301526042820152604281526105df81611ea0565b51902061278b565b91909161268c565b16036105fe576103189261285e565b60405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152606490fd5b634e487b7160e01b600052601160045260246000fd5b60405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b3461031a5761016036600319011261031a576001600160a01b036004358181169081900361031a576024916001600160401b03833581811161031a573660238201121561031a57806004013591821161031a573685838301011161031a576044359383851680950361031a5761071984600554163314611f25565b80610acb575b508482610969575b50505081610928575b505060643580610910575b50608435806108f8575b5060a435806108e1575b5060c435806108bd575b5060e43580610899575b506101043580610867575b5061012435806107f4575b5061014435908161078657005b601e5482106107955750601f55005b60849060326040519162461bcd60e51b8352602060048401528201527f4d61726b65743a206c69717569646174696f6e436f6c6c61746572616c697a616044820152711d1a5bdb94985d19481d1bdbc81cdb585b1b60721b6064820152fd5b610803620186a0821115611f70565b601f54811161081557601e5581610779565b60405162461bcd60e51b8152602060048201526025818401527f4d61726b65743a20636f6c6c61746572616c697a6174696f6e5261746520746f6044820152646f2062696760d81b6064820152608490fd5b806016547fae6e0ab3b95f0a53ff9660a390ccedcbbf1f2355dce974a9841af106fddcfaba600080a36016558161076e565b6108a7620186a08210611f70565b6108b4601b548211611f70565b601c5581610763565b6108cb620186a08210611f70565b6108d8601c548210611f70565b601b5581610759565b6108ef620186a08210611f70565b601d558161074f565b610907620186a0821115611f70565b601a5581610745565b61091f620186a0821115611f70565b6019558161073b565b816008549182167f5a62d22209e370e38eea92cfddcd228e656e6ec139243392a760a7769f5877fd600080a36001600160a01b031916176008558180610730565b8291610976601054611e2f565b601f8111610a6a575b50600090601f84116001146109e7576000936109da575b5050508160011b916000199060031b1c1916176010555b7fa6f004921c944d4b8bf6e38462b00f36a58d62495d56b51f571ab78f732c9815600080a1838084610727565b0101359050848680610996565b60106000908152601f1985169550600080516020612c8d83398151915293509091889160205b878210610a4b5750508460019610610a2f575b50505050811b016010556109ad565b60001960f88660031b161c199201013516905585808681610a20565b8285019093013585556001949094019389929182019190810190610a0d565b60106000529092509050600080516020612c8d833981519152601f840160051c810160208510610ac4575b91849391601f8994920160051c01905b818110610ab2575061097f565b60008155859450889350600101610aa5565b5080610a95565b600f80546001600160a01b0319169190911790557f0b2d6eb667d0522c3eb86e4288afecae6c11591ffd1345d4d12407e0598bca9b600080a18561071f565b3461031a57600036600319011261031a576008546040516001600160a01b039091168152602090f35b3461031a57600036600319011261031a576020610b4e6128b5565b604051908152f35b3461031a57600036600319011261031a576020602954604051908152f35b3461031a57600036600319011261031a576020601e54604051908152f35b3461031a57600036600319011261031a57602060ff602654166040519015158152f35b3461031a57600036600319011261031a5760406025548151906001600160401b03908181168352831c166020820152f35b3461031a57600036600319011261031a576020601a54604051908152f35b3461031a57604036600319011261031a57610c1d611d76565b602435908115801590610cd9575b610c61575b6040519182526001600160a01b0316903390600080516020612c6d83398151915290602090a3602060405160018152f35b336000526001602052604060002054610c7c838210156125ee565b6001600160a01b038216908333839003610c99575b505050610c30565b610cad91610ca8841515612633565b611ff1565b3360005260016020526040600020556000526040600020610ccf838254611ffe565b9055828083610c91565b50336001600160a01b03821614610c2b565b3461031a57604036600319011261031a576060610d12610d09611d76565b6024359061213d565b9060405192835260208301526040820152f35b3461031a57604036600319011261031a576020610b4e610d43611d76565b60243590612392565b3461031a57600036600319011261031a57604051600090602c54610d6f81611e2f565b808352600191808316908115610e025750600114610da8575b610da483610d9881870382611ebb565b60405191829182611edc565b0390f35b602c600090815260209450917f7416c943b4a09859521022fd2e90eac0dd9026dad28fa317782a135f28a860915b828410610def57505050810190910190610d9881610d88565b8054858501870152928501928101610dd6565b610da49550610d9893506020915091849260ff191682840152151560051b8201019350610d88565b3461031a57604036600319011261031a576001600160401b0360043581811161031a573660238201121561031a57806004013591821161102d5760405191610e7c601f8201601f191660200184611ebb565b8083526020830191366024838301011161031a57816000926024602093018537840101526024359161ffff8316830361031a5761010091828280518101031261031a57610ec89061228b565b610ed460408301612678565b91610ee160608201612678565b9460808201519460a08301519260c08101519160ff8316830361031a5760e082015191015191844211610659578515611007577f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e2665b6001600160a01b0388166000908152600460205260409020805490969060001981146106435761ffff6105e797610fc49960018401905560405194602086015216604084015260018060a01b038a16606084015260018060a01b038c1660808401528a60a084015260c083015260e082015260e08152610fb581611e84565b602081519101206105b66124c4565b6001600160a01b038381169116036105fe5715610ff157610318926001600160a01b03908116911661285e565b610318926001600160a01b039081169116612810565b7f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d6610f36565b634e487b7160e01b600052604160045260246000fd5b3461031a57600036600319011261031a576005546040516001600160a01b039091168152602090f35b3461031a57600036600319011261031a576020601b54604051908152f35b3461031a57602036600319011261031a576001600160a01b036110ab611d76565b1660005260246020526020604060002054604051908152f35b3461031a57600036600319011261031a57601454604080516001600160801b038316815260809290921c602083015290f35b3461031a57604036600319011261031a5761111c611112611d76565b6024359033612810565b602060405160018152f35b3461031a57602036600319011261031a576001600160a01b03611148611d76565b1660005260046020526020604060002054604051908152f35b3461031a57600036600319011261031a57600f546040516001600160a01b039091168152602090f35b3461031a57600036600319011261031a576020603054604051908152f35b3461031a57600036600319011261031a576020602e54604051908152f35b3461031a57600036600319011261031a576040516000906010546111e981611e2f565b808352600191808316908115610e02575060011461121157610da483610d9881870382611ebb565b601060009081526020945091600080516020612c8d8339815191525b82841061124657505050810190910190610d9881610d88565b805485850187015292850192810161122d565b3461031a57602036600319011261031a57600435600981101561031a5760ff611283602092611e00565b54166040519015158152f35b3461031a57602036600319011261031a576001600160a01b036112b0611d76565b1660005260016020526020604060002054604051908152f35b3461031a57600036600319011261031a57600a546040516001600160a01b039091168152602090f35b3461031a57600036600319011261031a576020602754604051908152f35b3461031a57600036600319011261031a576020601c54604051908152f35b3461031a57600036600319011261031a576020602d54604051908152f35b3461031a57600036600319011261031a5760208054604051908152f35b3461031a57600036600319011261031a576006546001600160a01b0390818116338190036113d357806005549384167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a36001600160a01b03199283161760055516600655005b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b3461031a57602036600319011261031a576001600160a01b03611438611d76565b1660005260176020526020604060002054604051908152f35b3461031a57600036600319011261031a576020601554604051908152f35b3461031a57600036600319011261031a576020600e54604051908152f35b3461031a57600036600319011261031a576020601654604051908152f35b3461031a57606036600319011261031a576020610b4e604435602435600435612024565b3461031a57600036600319011261031a576020601154604051908152f35b3461031a57600036600319011261031a57600d546040516001600160a01b039091168152602090f35b3461031a57600036600319011261031a576020601254604051908152f35b3461031a57600036600319011261031a576020610b4e6124c4565b3461031a57600036600319011261031a576020601954604051908152f35b3461031a57600036600319011261031a576014546040516001600160801b039091168152602090f35b3461031a57600036600319011261031a576020601354604051908152f35b3461031a57606036600319011261031a576115cd611d76565b6115d5611d8c565b6044359081611612575b6040519182526001600160a01b03908116921690600080516020612c6d83398151915290602090a3602060405160018152f35b60018060a01b0380841680600052602060018152846040600020549361163a828610156125ee565b85169384840361164f575b50505050506115df565b8360005260028352604060002033600052835260406000205460001981036116c3575b50849261169a600080516020612c6d833981519152979593600193610ca86020991515612633565b926000525260406000205560005260406000206116b8858254611ffe565b905591858481611645565b90918110611718576020949261169a88600080516020612c6d8339815191529896946116f182600196611ff1565b86600052600285526040600020336000528552604060002055935093959750509294611672565b60405162461bcd60e51b815260048101849052601860248201527745524332303a20616c6c6f77616e636520746f6f206c6f7760401b6044820152606490fd5b3461031a57600036600319011261031a576020602a54604051908152f35b3461031a5761178436611db1565b9183919395949542116106595760018060a01b0392838816948560005260046020526040600020928354600019811461064357611823956105e7956001830190556040519060208201927f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d68452600060408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e081526105ab81611e84565b16036105fe5761031892612810565b3461031a57600036600319011261031a57602b546040516001600160a01b039091168152602090f35b3461031a57602036600319011261031a576001600160a01b0361187c611d76565b1660005260186020526020604060002054604051908152f35b3461031a57600036600319011261031a57602060405160008152f35b3461031a57600036600319011261031a576020602f54604051908152f35b3461031a57604036600319011261031a57600435600981101561031a576118f4611da2565b6008549091906001600160a01b031633036119ad5760ff61191482611e00565b5416151591151591821461197357808260ff61193261196194611e00565b54161515827feeec81de25875ce1725479bb76f720a8defdb43dea041919ae37bb4aae9847c0600080a4611e00565b9060ff80198354169116179055600080f35b60405162461bcd60e51b81526020600482015260126024820152714d61726b65743a2073616d6520737461746560701b6044820152606490fd5b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881d5b985d5d1a1bdc9a5e995960621b6044820152606490fd5b3461031a57604036600319011261031a5761111c611a05611d76565b602435903361285e565b3461031a57606036600319011261031a57611a28611d76565b611a30611da2565b60443590811515820361031a5760018060a01b03928391611a5683600554163314611f25565b15611afa571690811590811591611af2575b5015611ab557806005549283167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a36001600160a01b031991821617600555600680549091169055005b60405162461bcd60e51b81526020600482015260156024820152744f776e61626c653a207a65726f206164647265737360581b6044820152606490fd5b905083611a68565b9150501660018060a01b03196006541617600655600080f35b3461031a57600036600319011261031a5760018060a01b03600f54166040519063d6d7d52560e01b8252602091826004820152600091601054611b5581611e2f565b908160248501526001908181169081600014611d045750600114611cc4575b50509060409181600081809603925af18015611cb857600091600091611c79575b508115611c1c578015611be05760409281601155817f9f9192b5edb17356c524e08d9e025c8e2f6307e6ea52fb7968faa3081f51c3c8600080a25b4260135583519215158352820152f35b60405162461bcd60e51b81526004810184905260146024820152734d61726b65743a20696e76616c6964207261746560601b6044820152606490fd5b50611c2c60135460125490611ffe565b4211611c3d57601154604092611bd0565b60405162461bcd60e51b815260048101839052601460248201527313585c9ad95d0e881c985d19481d1bdbc81bdb1960621b6044820152606490fd5b9150506040813d604011611cb0575b81611c9560409383611ebb565b8101031261031a5781611ca78261228b565b91015183611b95565b3d9150611c88565b6040513d6000823e3d90fd5b935060106000528460002093856000955b838710611cef575050505091810160440191806040611b74565b80548688016044015295019486908201611cd5565b60ff191660448087019190915292151560051b8501909201945082915060409050611b74565b3461031a57604036600319011261031a57602090611d46611d76565b611d4e611d8c565b9060018060a01b03809116600052600384526040600020911660005282526040600020548152f35b600435906001600160a01b038216820361031a57565b602435906001600160a01b038216820361031a57565b60243590811515820361031a57565b60e090600319011261031a576001600160a01b0390600435828116810361031a5791602435908116810361031a5790604435906064359060843560ff8116810361031a579060a4359060c43590565b6009811015611e19576000526007602052604060002090565b634e487b7160e01b600052602160045260246000fd5b90600182811c92168015611e5f575b6020831014611e4957565b634e487b7160e01b600052602260045260246000fd5b91607f1691611e3e565b604081019081106001600160401b0382111761102d57604052565b61010081019081106001600160401b0382111761102d57604052565b608081019081106001600160401b0382111761102d57604052565b90601f801991011681019081106001600160401b0382111761102d57604052565b6020808252825181830181905290939260005b828110611f1157505060409293506000838284010152601f8019910116010190565b818101860151848201604001528501611eef565b15611f2c57565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b15611f7757565b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881b9bdd081d985b1a59607a1b6044820152606490fd5b8181029291811591840414171561064357565b8115611fcd570490565b634e487b7160e01b600052601260045260246000fd5b604d811161064357600a0a90565b9190820391821161064357565b9190820180921161064357565b8181039291600013801582851316918412161761064357565b60145491929161206d9161205e916120549161204a906001600160801b03831690611fb0565b9060801c90611fc3565b93601f5490611fb0565b61206783611fe3565b90611fc3565b808310612135576120816120bd9184611ff1565b916120b86120b26120a9601e546120a361209a86611fe3565b60205490611ffe565b90611fb0565b61206784611fe3565b91611fe3565b61200b565b6509184e72a0009081810291818305149015171561064357670de0b6b3a764000091828102928184051490151715610643578015611fcd57600160ff1b91808314600019831416610643570590600082121561212e57811461064357600003905b808211612129575090565b905090565b509061211e565b505050600090565b6001600160a01b0390811660008181526017602090815260408220549295949391929091811561227e5761216f612ad8565b9061217b861515612298565b6009541683600c54898752601882526064604088205491604051948593849263442c159960e01b8452600484015260248301528960448301525afa908115612273578591612240575b50928594926122206018936121fb612234996121f66121ed60409a620186a06022540490611fb0565b601e5490611fb0565b611fc3565b815190936001600160801b0391869161221691841690611fb0565b9201511690611fc3565b81811061223857035b9783525220546122e4565b9091565b505082612229565b90508381813d831161226c575b6122578183611ebb565b8101031261226857516122346121c4565b8480fd5b503d61224d565b6040513d87823e3d90fd5b5050509192505080918190565b5190811515820361031a57565b1561229f57565b60405162461bcd60e51b815260206004820152601e60248201527f4d61726b65743a2065786368616e676552617465206e6f742076616c696400006044820152606490fd5b6122ef821515612298565b602060018060a01b0360095416916064600c54604051948593849263442c159960e01b845260048401526024830152600060448301525afa908115611cb85760009161235c575b50906121f66123489260225490611fb0565b620186a0612358601e5483611fb0565b0491565b906020823d821161238a575b8161237560209383611ebb565b810103126123875750516121f6612336565b80fd5b3d9150612368565b6001600160a01b031660008181526018602052604081205490926123b5916122e4565b9183526017602052604083205480156124be5781156124be578181106124be57828110156124b4576014546123fe918391610ca89161204a906001600160801b03831690611fb0565b90620186a092838302928084048514901517156124a057612423929161206791611ff1565b91601b5491601c5493612436858561200b565b80820291848212600160ff1b8214166124a057818305149015171561248c57058184820194851291129080158216911516176124785750808212612129575090565b634e487b7160e01b81526011600452602490fd5b634e487b7160e01b83526011600452602483fd5b634e487b7160e01b85526011600452602485fd5b50505050601b5490565b50505090565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031614806125c5575b1561251f577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f000000000000000000000000000000000000000000000000000000000000000082527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a0815260c081018181106001600160401b0382111761102d5760405251902090565b507f000000000000000000000000000000000000000000000000000000000000000046146124f6565b156125f557565b60405162461bcd60e51b815260206004820152601660248201527545524332303a2062616c616e636520746f6f206c6f7760501b6044820152606490fd5b1561263a57565b60405162461bcd60e51b815260206004820152601660248201527545524332303a206e6f207a65726f206164647265737360501b6044820152606490fd5b51906001600160a01b038216820361031a57565b6005811015611e19578061269d5750565b600181036126e55760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b6044820152606490fd5b600281036127325760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606490fd5b60031461273b57565b60405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608490fd5b9291906fa2a8918ca85bafe22016d0b997e4df60600160ff1b0383116128045791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa156127f75781516001600160a01b038116156127f1579190565b50600190565b50604051903d90823e3d90fd5b50505050600090600390565b7fe50de2333c10a9502fcb1d8ae13a51bbf423153dfc63c2b8997665b32154afc360018060a01b038092169160009083825260036020526040822094169384825260205284604082205580a4565b909160207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259160018060a01b03809416938460005260028352604060002095169485600052825280604060002055604051908152a3565b60ff60265416612a33576014546001600160801b0316908115612a2c57600a54604051631848f2bf60e31b8152602093916001600160a01b03919085908290600490829086165afa8015611cb85785916000916129ef575b50600460405180948193631a674cc560e11b8352165afa938415611cb8576000946129bc575b505061294f9192670de0b6b3a764000092839160295490611fb0565b0490818110156129b357612966602a548092611ff1565b8381029080820485149015171561064357612067612987926129a794611ff1565b602754926129a16028549261299c8487611ff1565b611fb0565b04611ffe565b90808211612129575090565b50505060275490565b81813d83116129e8575b6129d08183611ebb565b810103126129e45751925061294f38612933565b8380fd5b503d6129c6565b909181813d8311612a25575b612a058183611ebb565b81010312612a215751908282168203612387575084903861290d565b5080fd5b503d6129fb565b6028549150565b600a5460405163e6abad4960e01b815290602090829060049082906001600160a01b03165afa908115611cb857600091612a6b575090565b906020823d8211612a91575b81612a8460209383611ebb565b8101031261238757505190565b3d9150612a77565b60405190612aa682611e69565b6014546001600160801b038116835260801c6020830152565b6001600160801b03918216908216019190821161064357565b60006020604051612ae881611e69565b82815201526001600160401b0390612b078260255460401c1642611ff1565b918215612b5e57612b5961299c91670de0b6b3a7640000612b4e612b29612a99565b9660018060801b03958694858a5116906301e13380612b466128b5565b041690611fb0565b041682855116612abf565b168252565b509050612b69612a99565b90565b604051612b7881611e69565b6025546001600160401b03908181168352818160401c16612ba0602085019180835242611ff1565b928315612c6557602094816301e13380612bb86128b5565b041681528142168352612bc9612a99565b670de0b6b3a7640000612bee60018060801b039761299c898551168787511690611fb0565b0495612bff81881682845116612abf565b1680825296015160801b6001600160801b031990811690961760145551915192909416931692831760409190911b67ffffffffffffffff60401b16176025557f7484db546dcd57af0104c73c8a6968dfbaf5767f047cee0dadd0499ad7df81a0600080a3565b505050505056feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae672a2646970667358221220f1406785f25656ff9105122c994a488fdfde1771f78a5e73a630e4773713bbcf64736f6c63430008120033", + "deployedBytecode": "0x608080604052600436101561001357600080fd5b60003560e01c908162a02a2014611d2a5750806302ce728f14611b13578063078dfbe714611a0f578063095ea7b3146119e95780630c4e84f0146118cf5780630f8b29ea146118b157806318160ddd146118955780631c9e379b1461185b5780631d4d3a5d146118325780631da8bf10146117765780631fb8f81a1461175857806323b872dd146115b4578063331960ff1461159657806334ce998a1461156d57806334d441d01461154f5780633644e5151461153457806337b6b7b91461151657806338d52e0f146114ed5780633ba0b9a9146114cf5780633f741adb146114ab57806340626d8b1461148d57806344de240a1461146f578063473e3ce71461145157806348e4163e146114175780634e71e0c814611369578063529898f21461134c578063542afda31461132e57806357935462146113105780636b19ad16146112f25780636c3d8b8f146112c957806370a082311461128f578063727785471461125957806374645ff3146111c657806374c9e481146111a8578063790c84671461118a5780637dc0d1d0146111615780637ecebe00146111275780637fa0b84e146110f65780638285ef40146110c457806387b279371461108a5780638c5d0ed31461106c5780638da5cb5b14611043578063910dd7c814610e2a578063932bc4f814610d4c57806399a9702814610d255780639e15e89f14610ceb578063a9059cbb14610c04578063b0e21e8a14610be6578063b27c0e7414610bb5578063b7113f1914610b92578063bb4cfe3b14610b74578063bde39c5d14610b56578063c1ad5c8d14610b33578063ce8849ed14610b0a578063d3fb2a381461069e578063d505accf146104fe578063d8dfeb45146104d5578063da863f0e146104ac578063dd62ed3e1461045b578063de40657714610432578063e0996cb614610414578063e30c3978146103eb578063ea64dd56146103cd578063eec0f42e146103af578063ef2b234a1461033d578063f791395d1461031f5763f8ba4cff146102ff57600080fd5b3461031a57600036600319011261031a57610318612b6c565b005b600080fd5b3461031a57600036600319011261031a576020602854604051908152f35b3461031a57602036600319011261031a576004356001600160a01b038181169182900361031a5761037381600554163314611f25565b816021549182167ffb4fd7114609dd603b57adbc2082205bfbbcabf9265c4b437b472f5c592b8cd7600080a36001600160a01b03191617602155005b3461031a57600036600319011261031a576020600c54604051908152f35b3461031a57600036600319011261031a576020601f54604051908152f35b3461031a57600036600319011261031a576006546040516001600160a01b039091168152602090f35b3461031a57600036600319011261031a576020601d54604051908152f35b3461031a57600036600319011261031a576009546040516001600160a01b039091168152602090f35b3461031a57604036600319011261031a57610474611d76565b61047c611d8c565b9060018060a01b038091166000526002602052604060002091166000526020526020604060002054604051908152f35b3461031a57600036600319011261031a576021546040516001600160a01b039091168152602090f35b3461031a57600036600319011261031a57600b546040516001600160a01b039091168152602090f35b3461031a5761050c36611db1565b9183919395949542116106595760018060a01b03928388169485600052600460205260406000209283546000198114610643576105ef956105e7956001830190556040519060208201927f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e2668452600060408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e081526105ab81611e84565b5190206105b66124c4565b9060405190602082019261190160f01b845260228301526042820152604281526105df81611ea0565b51902061278b565b91909161268c565b16036105fe576103189261285e565b60405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152606490fd5b634e487b7160e01b600052601160045260246000fd5b60405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b3461031a5761016036600319011261031a576001600160a01b036004358181169081900361031a576024916001600160401b03833581811161031a573660238201121561031a57806004013591821161031a573685838301011161031a576044359383851680950361031a5761071984600554163314611f25565b80610acb575b508482610969575b50505081610928575b505060643580610910575b50608435806108f8575b5060a435806108e1575b5060c435806108bd575b5060e43580610899575b506101043580610867575b5061012435806107f4575b5061014435908161078657005b601e5482106107955750601f55005b60849060326040519162461bcd60e51b8352602060048401528201527f4d61726b65743a206c69717569646174696f6e436f6c6c61746572616c697a616044820152711d1a5bdb94985d19481d1bdbc81cdb585b1b60721b6064820152fd5b610803620186a0821115611f70565b601f54811161081557601e5581610779565b60405162461bcd60e51b8152602060048201526025818401527f4d61726b65743a20636f6c6c61746572616c697a6174696f6e5261746520746f6044820152646f2062696760d81b6064820152608490fd5b806016547fae6e0ab3b95f0a53ff9660a390ccedcbbf1f2355dce974a9841af106fddcfaba600080a36016558161076e565b6108a7620186a08210611f70565b6108b4601b548211611f70565b601c5581610763565b6108cb620186a08210611f70565b6108d8601c548210611f70565b601b5581610759565b6108ef620186a08210611f70565b601d558161074f565b610907620186a0821115611f70565b601a5581610745565b61091f620186a0821115611f70565b6019558161073b565b816008549182167f5a62d22209e370e38eea92cfddcd228e656e6ec139243392a760a7769f5877fd600080a36001600160a01b031916176008558180610730565b8291610976601054611e2f565b601f8111610a6a575b50600090601f84116001146109e7576000936109da575b5050508160011b916000199060031b1c1916176010555b7fa6f004921c944d4b8bf6e38462b00f36a58d62495d56b51f571ab78f732c9815600080a1838084610727565b0101359050848680610996565b60106000908152601f1985169550600080516020612c8d83398151915293509091889160205b878210610a4b5750508460019610610a2f575b50505050811b016010556109ad565b60001960f88660031b161c199201013516905585808681610a20565b8285019093013585556001949094019389929182019190810190610a0d565b60106000529092509050600080516020612c8d833981519152601f840160051c810160208510610ac4575b91849391601f8994920160051c01905b818110610ab2575061097f565b60008155859450889350600101610aa5565b5080610a95565b600f80546001600160a01b0319169190911790557f0b2d6eb667d0522c3eb86e4288afecae6c11591ffd1345d4d12407e0598bca9b600080a18561071f565b3461031a57600036600319011261031a576008546040516001600160a01b039091168152602090f35b3461031a57600036600319011261031a576020610b4e6128b5565b604051908152f35b3461031a57600036600319011261031a576020602954604051908152f35b3461031a57600036600319011261031a576020601e54604051908152f35b3461031a57600036600319011261031a57602060ff602654166040519015158152f35b3461031a57600036600319011261031a5760406025548151906001600160401b03908181168352831c166020820152f35b3461031a57600036600319011261031a576020601a54604051908152f35b3461031a57604036600319011261031a57610c1d611d76565b602435908115801590610cd9575b610c61575b6040519182526001600160a01b0316903390600080516020612c6d83398151915290602090a3602060405160018152f35b336000526001602052604060002054610c7c838210156125ee565b6001600160a01b038216908333839003610c99575b505050610c30565b610cad91610ca8841515612633565b611ff1565b3360005260016020526040600020556000526040600020610ccf838254611ffe565b9055828083610c91565b50336001600160a01b03821614610c2b565b3461031a57604036600319011261031a576060610d12610d09611d76565b6024359061213d565b9060405192835260208301526040820152f35b3461031a57604036600319011261031a576020610b4e610d43611d76565b60243590612392565b3461031a57600036600319011261031a57604051600090602c54610d6f81611e2f565b808352600191808316908115610e025750600114610da8575b610da483610d9881870382611ebb565b60405191829182611edc565b0390f35b602c600090815260209450917f7416c943b4a09859521022fd2e90eac0dd9026dad28fa317782a135f28a860915b828410610def57505050810190910190610d9881610d88565b8054858501870152928501928101610dd6565b610da49550610d9893506020915091849260ff191682840152151560051b8201019350610d88565b3461031a57604036600319011261031a576001600160401b0360043581811161031a573660238201121561031a57806004013591821161102d5760405191610e7c601f8201601f191660200184611ebb565b8083526020830191366024838301011161031a57816000926024602093018537840101526024359161ffff8316830361031a5761010091828280518101031261031a57610ec89061228b565b610ed460408301612678565b91610ee160608201612678565b9460808201519460a08301519260c08101519160ff8316830361031a5760e082015191015191844211610659578515611007577f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e2665b6001600160a01b0388166000908152600460205260409020805490969060001981146106435761ffff6105e797610fc49960018401905560405194602086015216604084015260018060a01b038a16606084015260018060a01b038c1660808401528a60a084015260c083015260e082015260e08152610fb581611e84565b602081519101206105b66124c4565b6001600160a01b038381169116036105fe5715610ff157610318926001600160a01b03908116911661285e565b610318926001600160a01b039081169116612810565b7f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d6610f36565b634e487b7160e01b600052604160045260246000fd5b3461031a57600036600319011261031a576005546040516001600160a01b039091168152602090f35b3461031a57600036600319011261031a576020601b54604051908152f35b3461031a57602036600319011261031a576001600160a01b036110ab611d76565b1660005260246020526020604060002054604051908152f35b3461031a57600036600319011261031a57601454604080516001600160801b038316815260809290921c602083015290f35b3461031a57604036600319011261031a5761111c611112611d76565b6024359033612810565b602060405160018152f35b3461031a57602036600319011261031a576001600160a01b03611148611d76565b1660005260046020526020604060002054604051908152f35b3461031a57600036600319011261031a57600f546040516001600160a01b039091168152602090f35b3461031a57600036600319011261031a576020603054604051908152f35b3461031a57600036600319011261031a576020602e54604051908152f35b3461031a57600036600319011261031a576040516000906010546111e981611e2f565b808352600191808316908115610e02575060011461121157610da483610d9881870382611ebb565b601060009081526020945091600080516020612c8d8339815191525b82841061124657505050810190910190610d9881610d88565b805485850187015292850192810161122d565b3461031a57602036600319011261031a57600435600981101561031a5760ff611283602092611e00565b54166040519015158152f35b3461031a57602036600319011261031a576001600160a01b036112b0611d76565b1660005260016020526020604060002054604051908152f35b3461031a57600036600319011261031a57600a546040516001600160a01b039091168152602090f35b3461031a57600036600319011261031a576020602754604051908152f35b3461031a57600036600319011261031a576020601c54604051908152f35b3461031a57600036600319011261031a576020602d54604051908152f35b3461031a57600036600319011261031a5760208054604051908152f35b3461031a57600036600319011261031a576006546001600160a01b0390818116338190036113d357806005549384167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a36001600160a01b03199283161760055516600655005b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b3461031a57602036600319011261031a576001600160a01b03611438611d76565b1660005260176020526020604060002054604051908152f35b3461031a57600036600319011261031a576020601554604051908152f35b3461031a57600036600319011261031a576020600e54604051908152f35b3461031a57600036600319011261031a576020601654604051908152f35b3461031a57606036600319011261031a576020610b4e604435602435600435612024565b3461031a57600036600319011261031a576020601154604051908152f35b3461031a57600036600319011261031a57600d546040516001600160a01b039091168152602090f35b3461031a57600036600319011261031a576020601254604051908152f35b3461031a57600036600319011261031a576020610b4e6124c4565b3461031a57600036600319011261031a576020601954604051908152f35b3461031a57600036600319011261031a576014546040516001600160801b039091168152602090f35b3461031a57600036600319011261031a576020601354604051908152f35b3461031a57606036600319011261031a576115cd611d76565b6115d5611d8c565b6044359081611612575b6040519182526001600160a01b03908116921690600080516020612c6d83398151915290602090a3602060405160018152f35b60018060a01b0380841680600052602060018152846040600020549361163a828610156125ee565b85169384840361164f575b50505050506115df565b8360005260028352604060002033600052835260406000205460001981036116c3575b50849261169a600080516020612c6d833981519152979593600193610ca86020991515612633565b926000525260406000205560005260406000206116b8858254611ffe565b905591858481611645565b90918110611718576020949261169a88600080516020612c6d8339815191529896946116f182600196611ff1565b86600052600285526040600020336000528552604060002055935093959750509294611672565b60405162461bcd60e51b815260048101849052601860248201527745524332303a20616c6c6f77616e636520746f6f206c6f7760401b6044820152606490fd5b3461031a57600036600319011261031a576020602a54604051908152f35b3461031a5761178436611db1565b9183919395949542116106595760018060a01b0392838816948560005260046020526040600020928354600019811461064357611823956105e7956001830190556040519060208201927f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d68452600060408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e081526105ab81611e84565b16036105fe5761031892612810565b3461031a57600036600319011261031a57602b546040516001600160a01b039091168152602090f35b3461031a57602036600319011261031a576001600160a01b0361187c611d76565b1660005260186020526020604060002054604051908152f35b3461031a57600036600319011261031a57602060405160008152f35b3461031a57600036600319011261031a576020602f54604051908152f35b3461031a57604036600319011261031a57600435600981101561031a576118f4611da2565b6008549091906001600160a01b031633036119ad5760ff61191482611e00565b5416151591151591821461197357808260ff61193261196194611e00565b54161515827feeec81de25875ce1725479bb76f720a8defdb43dea041919ae37bb4aae9847c0600080a4611e00565b9060ff80198354169116179055600080f35b60405162461bcd60e51b81526020600482015260126024820152714d61726b65743a2073616d6520737461746560701b6044820152606490fd5b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881d5b985d5d1a1bdc9a5e995960621b6044820152606490fd5b3461031a57604036600319011261031a5761111c611a05611d76565b602435903361285e565b3461031a57606036600319011261031a57611a28611d76565b611a30611da2565b60443590811515820361031a5760018060a01b03928391611a5683600554163314611f25565b15611afa571690811590811591611af2575b5015611ab557806005549283167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a36001600160a01b031991821617600555600680549091169055005b60405162461bcd60e51b81526020600482015260156024820152744f776e61626c653a207a65726f206164647265737360581b6044820152606490fd5b905083611a68565b9150501660018060a01b03196006541617600655600080f35b3461031a57600036600319011261031a5760018060a01b03600f54166040519063d6d7d52560e01b8252602091826004820152600091601054611b5581611e2f565b908160248501526001908181169081600014611d045750600114611cc4575b50509060409181600081809603925af18015611cb857600091600091611c79575b508115611c1c578015611be05760409281601155817f9f9192b5edb17356c524e08d9e025c8e2f6307e6ea52fb7968faa3081f51c3c8600080a25b4260135583519215158352820152f35b60405162461bcd60e51b81526004810184905260146024820152734d61726b65743a20696e76616c6964207261746560601b6044820152606490fd5b50611c2c60135460125490611ffe565b4211611c3d57601154604092611bd0565b60405162461bcd60e51b815260048101839052601460248201527313585c9ad95d0e881c985d19481d1bdbc81bdb1960621b6044820152606490fd5b9150506040813d604011611cb0575b81611c9560409383611ebb565b8101031261031a5781611ca78261228b565b91015183611b95565b3d9150611c88565b6040513d6000823e3d90fd5b935060106000528460002093856000955b838710611cef575050505091810160440191806040611b74565b80548688016044015295019486908201611cd5565b60ff191660448087019190915292151560051b8501909201945082915060409050611b74565b3461031a57604036600319011261031a57602090611d46611d76565b611d4e611d8c565b9060018060a01b03809116600052600384526040600020911660005282526040600020548152f35b600435906001600160a01b038216820361031a57565b602435906001600160a01b038216820361031a57565b60243590811515820361031a57565b60e090600319011261031a576001600160a01b0390600435828116810361031a5791602435908116810361031a5790604435906064359060843560ff8116810361031a579060a4359060c43590565b6009811015611e19576000526007602052604060002090565b634e487b7160e01b600052602160045260246000fd5b90600182811c92168015611e5f575b6020831014611e4957565b634e487b7160e01b600052602260045260246000fd5b91607f1691611e3e565b604081019081106001600160401b0382111761102d57604052565b61010081019081106001600160401b0382111761102d57604052565b608081019081106001600160401b0382111761102d57604052565b90601f801991011681019081106001600160401b0382111761102d57604052565b6020808252825181830181905290939260005b828110611f1157505060409293506000838284010152601f8019910116010190565b818101860151848201604001528501611eef565b15611f2c57565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b15611f7757565b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881b9bdd081d985b1a59607a1b6044820152606490fd5b8181029291811591840414171561064357565b8115611fcd570490565b634e487b7160e01b600052601260045260246000fd5b604d811161064357600a0a90565b9190820391821161064357565b9190820180921161064357565b8181039291600013801582851316918412161761064357565b60145491929161206d9161205e916120549161204a906001600160801b03831690611fb0565b9060801c90611fc3565b93601f5490611fb0565b61206783611fe3565b90611fc3565b808310612135576120816120bd9184611ff1565b916120b86120b26120a9601e546120a361209a86611fe3565b60205490611ffe565b90611fb0565b61206784611fe3565b91611fe3565b61200b565b6509184e72a0009081810291818305149015171561064357670de0b6b3a764000091828102928184051490151715610643578015611fcd57600160ff1b91808314600019831416610643570590600082121561212e57811461064357600003905b808211612129575090565b905090565b509061211e565b505050600090565b6001600160a01b0390811660008181526017602090815260408220549295949391929091811561227e5761216f612ad8565b9061217b861515612298565b6009541683600c54898752601882526064604088205491604051948593849263442c159960e01b8452600484015260248301528960448301525afa908115612273578591612240575b50928594926122206018936121fb612234996121f66121ed60409a620186a06022540490611fb0565b601e5490611fb0565b611fc3565b815190936001600160801b0391869161221691841690611fb0565b9201511690611fc3565b81811061223857035b9783525220546122e4565b9091565b505082612229565b90508381813d831161226c575b6122578183611ebb565b8101031261226857516122346121c4565b8480fd5b503d61224d565b6040513d87823e3d90fd5b5050509192505080918190565b5190811515820361031a57565b1561229f57565b60405162461bcd60e51b815260206004820152601e60248201527f4d61726b65743a2065786368616e676552617465206e6f742076616c696400006044820152606490fd5b6122ef821515612298565b602060018060a01b0360095416916064600c54604051948593849263442c159960e01b845260048401526024830152600060448301525afa908115611cb85760009161235c575b50906121f66123489260225490611fb0565b620186a0612358601e5483611fb0565b0491565b906020823d821161238a575b8161237560209383611ebb565b810103126123875750516121f6612336565b80fd5b3d9150612368565b6001600160a01b031660008181526018602052604081205490926123b5916122e4565b9183526017602052604083205480156124be5781156124be578181106124be57828110156124b4576014546123fe918391610ca89161204a906001600160801b03831690611fb0565b90620186a092838302928084048514901517156124a057612423929161206791611ff1565b91601b5491601c5493612436858561200b565b80820291848212600160ff1b8214166124a057818305149015171561248c57058184820194851291129080158216911516176124785750808212612129575090565b634e487b7160e01b81526011600452602490fd5b634e487b7160e01b83526011600452602483fd5b634e487b7160e01b85526011600452602485fd5b50505050601b5490565b50505090565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031614806125c5575b1561251f577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f000000000000000000000000000000000000000000000000000000000000000082527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a0815260c081018181106001600160401b0382111761102d5760405251902090565b507f000000000000000000000000000000000000000000000000000000000000000046146124f6565b156125f557565b60405162461bcd60e51b815260206004820152601660248201527545524332303a2062616c616e636520746f6f206c6f7760501b6044820152606490fd5b1561263a57565b60405162461bcd60e51b815260206004820152601660248201527545524332303a206e6f207a65726f206164647265737360501b6044820152606490fd5b51906001600160a01b038216820361031a57565b6005811015611e19578061269d5750565b600181036126e55760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b6044820152606490fd5b600281036127325760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606490fd5b60031461273b57565b60405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608490fd5b9291906fa2a8918ca85bafe22016d0b997e4df60600160ff1b0383116128045791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa156127f75781516001600160a01b038116156127f1579190565b50600190565b50604051903d90823e3d90fd5b50505050600090600390565b7fe50de2333c10a9502fcb1d8ae13a51bbf423153dfc63c2b8997665b32154afc360018060a01b038092169160009083825260036020526040822094169384825260205284604082205580a4565b909160207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259160018060a01b03809416938460005260028352604060002095169485600052825280604060002055604051908152a3565b60ff60265416612a33576014546001600160801b0316908115612a2c57600a54604051631848f2bf60e31b8152602093916001600160a01b03919085908290600490829086165afa8015611cb85785916000916129ef575b50600460405180948193631a674cc560e11b8352165afa938415611cb8576000946129bc575b505061294f9192670de0b6b3a764000092839160295490611fb0565b0490818110156129b357612966602a548092611ff1565b8381029080820485149015171561064357612067612987926129a794611ff1565b602754926129a16028549261299c8487611ff1565b611fb0565b04611ffe565b90808211612129575090565b50505060275490565b81813d83116129e8575b6129d08183611ebb565b810103126129e45751925061294f38612933565b8380fd5b503d6129c6565b909181813d8311612a25575b612a058183611ebb565b81010312612a215751908282168203612387575084903861290d565b5080fd5b503d6129fb565b6028549150565b600a5460405163e6abad4960e01b815290602090829060049082906001600160a01b03165afa908115611cb857600091612a6b575090565b906020823d8211612a91575b81612a8460209383611ebb565b8101031261238757505190565b3d9150612a77565b60405190612aa682611e69565b6014546001600160801b038116835260801c6020830152565b6001600160801b03918216908216019190821161064357565b60006020604051612ae881611e69565b82815201526001600160401b0390612b078260255460401c1642611ff1565b918215612b5e57612b5961299c91670de0b6b3a7640000612b4e612b29612a99565b9660018060801b03958694858a5116906301e13380612b466128b5565b041690611fb0565b041682855116612abf565b168252565b509050612b69612a99565b90565b604051612b7881611e69565b6025546001600160401b03908181168352818160401c16612ba0602085019180835242611ff1565b928315612c6557602094816301e13380612bb86128b5565b041681528142168352612bc9612a99565b670de0b6b3a7640000612bee60018060801b039761299c898551168787511690611fb0565b0495612bff81881682845116612abf565b1680825296015160801b6001600160801b031990811690961760145551915192909416931692831760409190911b67ffffffffffffffff60401b16176025557f7484db546dcd57af0104c73c8a6968dfbaf5767f047cee0dadd0499ad7df81a0600080a3565b505050505056feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae672a2646970667358221220f1406785f25656ff9105122c994a488fdfde1771f78a5e73a630e4773713bbcf64736f6c63430008120033", "linkReferences": {}, "deployedLinkReferences": {} } diff --git a/src/artifacts/tapioca-bar/BBLendingCommon.json b/src/artifacts/tapioca-bar/BBLendingCommon.json index fd596f9d..9080c9be 100644 --- a/src/artifacts/tapioca-bar/BBLendingCommon.json +++ b/src/artifacts/tapioca-bar/BBLendingCommon.json @@ -65,13 +65,13 @@ { "indexed": true, "internalType": "address", - "name": "_oldVal", + "name": "oldVal", "type": "address" }, { "indexed": true, "internalType": "address", - "name": "_newVal", + "name": "newVal", "type": "address" } ], @@ -135,6 +135,25 @@ "name": "ExchangeRateDurationUpdated", "type": "event" }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "oldVal", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newVal", + "type": "address" + } + ], + "name": "LeverageExecutorSet", + "type": "event" + }, { "anonymous": false, "inputs": [ @@ -516,6 +535,37 @@ "name": "UpdateMinMaxMintFee", "type": "event" }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint256", + "name": "oldMin", + "type": "uint256" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "newMin", + "type": "uint256" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "oldMax", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "newMax", + "type": "uint256" + } + ], + "name": "UpdateMinMaxMintRange", + "type": "event" + }, { "inputs": [], "name": "DOMAIN_SEPARATOR", @@ -958,6 +1008,19 @@ "stateMutability": "view", "type": "function" }, + { + "inputs": [], + "name": "leverageExecutor", + "outputs": [ + { + "internalType": "contract ILeverageExecutor", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, { "inputs": [], "name": "liquidationBonusAmount", @@ -1036,6 +1099,19 @@ "stateMutability": "view", "type": "function" }, + { + "inputs": [], + "name": "maxMintFeeStart", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, { "inputs": [], "name": "minDebtRate", @@ -1075,6 +1151,19 @@ "stateMutability": "view", "type": "function" }, + { + "inputs": [], + "name": "minMintFeeStart", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, { "inputs": [ { @@ -1340,6 +1429,19 @@ "stateMutability": "view", "type": "function" }, + { + "inputs": [ + { + "internalType": "contract ILeverageExecutor", + "name": "_executor", + "type": "address" + } + ], + "name": "setLeverageExecutor", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, { "inputs": [ { @@ -1624,8 +1726,8 @@ "type": "function" } ], - "bytecode": "0x61014080604052346200018a5762000017816200018f565b600f81526001602082016e546170696f63612042696742616e6760881b8152602060405162000046816200018f565b8381520192603160f81b845251902091208160e052610100918183524660a0526040519160208301907f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f92838352604085015260608401524660808401523060a084015260a0835260c083019280841060018060401b03851117620001745760408490525190206080523060c052610120908152600580546001600160a01b0319163390811790915560007f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a362013880601b5562015f90601c55612710601d55612ee06020556103e8602d55612bdf9283620001ac8439608051836123fa015260a051836124c5015260c051836123c4015260e051836124490152518261246f015251816124260152f35b634e487b7160e01b600052604160045260246000fd5b600080fd5b604081019081106001600160401b03821117620001745760405256fe608080604052600436101561001357600080fd5b60003560e01c908162a02a2014611c275750806302ce728f14611a10578063078dfbe71461190c578063095ea7b3146118e65780630c4e84f0146117cc57806318160ddd146117b05780631c9e379b146117765780631d4d3a5d1461174d5780631da8bf10146116915780631fb8f81a1461167357806323b872dd146114cf578063331960ff146114b157806334ce998a1461148857806334d441d01461146a5780633644e5151461144f57806337b6b7b91461143157806338d52e0f146114085780633ba0b9a9146113ea5780633f741adb146113c657806340626d8b146113a857806344de240a1461138a578063473e3ce71461136c57806348e4163e146113325780634e71e0c814611284578063529898f214611267578063542afda314611249578063579354621461122b5780636b19ad161461120d5780636c3d8b8f146111e457806370a08231146111aa578063727785471461117457806374645ff3146110e157806374c9e481146110c35780637dc0d1d01461109a5780637ecebe00146110605780637fa0b84e1461102f5780638285ef4014610ffd57806387b2793714610fc35780638c5d0ed314610fa55780638da5cb5b14610f7c578063910dd7c814610d63578063932bc4f814610c8557806399a9702814610c5e5780639e15e89f14610c24578063a9059cbb14610b3d578063b0e21e8a14610b1f578063b27c0e7414610aee578063b7113f1914610acb578063bb4cfe3b14610aad578063bde39c5d14610a8f578063c1ad5c8d14610a6c578063ce8849ed14610a43578063d3fb2a38146105d7578063d505accf14610437578063d8dfeb451461040e578063dd62ed3e146103bd578063de40657714610394578063e0996cb614610376578063e30c39781461034d578063ea64dd561461032f578063eec0f42e14610311578063f791395d146102f35763f8ba4cff146102d357600080fd5b346102ee5760003660031901126102ee576102ec612a69565b005b600080fd5b346102ee5760003660031901126102ee576020602754604051908152f35b346102ee5760003660031901126102ee576020600c54604051908152f35b346102ee5760003660031901126102ee576020601f54604051908152f35b346102ee5760003660031901126102ee576006546040516001600160a01b039091168152602090f35b346102ee5760003660031901126102ee576020601d54604051908152f35b346102ee5760003660031901126102ee576009546040516001600160a01b039091168152602090f35b346102ee5760403660031901126102ee576103d6611c73565b6103de611c89565b9060018060a01b038091166000526002602052604060002091166000526020526020604060002054604051908152f35b346102ee5760003660031901126102ee57600b546040516001600160a01b039091168152602090f35b346102ee5761044536611cae565b9183919395949542116105925760018060a01b0392838816948560005260046020526040600020928354600019811461057c5761052895610520956001830190556040519060208201927f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e2668452600060408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e081526104e481611d81565b5190206104ef6123c1565b9060405190602082019261190160f01b8452602283015260428201526042815261051881611d9d565b519020612688565b919091612589565b1603610537576102ec9261275b565b60405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152606490fd5b634e487b7160e01b600052601160045260246000fd5b60405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b346102ee576101603660031901126102ee576001600160a01b03600435818116908190036102ee576024916001600160401b0383358181116102ee57366023820112156102ee5780600401359182116102ee57368583830101116102ee57604435938385168095036102ee5761065284600554163314611e22565b80610a04575b5084826108a2575b50505081610861575b505060643580610849575b5060843580610831575b5060a4358061081a575b5060c435806107f6575b5060e435806107d2575b5061010435806107a0575b50610124358061072d575b506101443590816106bf57005b601e5482106106ce5750601f55005b60849060326040519162461bcd60e51b8352602060048401528201527f4d61726b65743a206c69717569646174696f6e436f6c6c61746572616c697a616044820152711d1a5bdb94985d19481d1bdbc81cdb585b1b60721b6064820152fd5b61073c620186a0821115611e6d565b601f54811161074e57601e55816106b2565b60405162461bcd60e51b8152602060048201526025818401527f4d61726b65743a20636f6c6c61746572616c697a6174696f6e5261746520746f6044820152646f2062696760d81b6064820152608490fd5b806016547fae6e0ab3b95f0a53ff9660a390ccedcbbf1f2355dce974a9841af106fddcfaba600080a3601655816106a7565b6107e0620186a08210611e6d565b6107ed601b548211611e6d565b601c558161069c565b610804620186a08210611e6d565b610811601c548210611e6d565b601b5581610692565b610828620186a08210611e6d565b601d5581610688565b610840620186a0821115611e6d565b601a558161067e565b610858620186a0821115611e6d565b60195581610674565b816008549182167f5a62d22209e370e38eea92cfddcd228e656e6ec139243392a760a7769f5877fd600080a36001600160a01b031916176008558180610669565b82916108af601054611d2c565b601f81116109a3575b50600090601f841160011461092057600093610913575b5050508160011b916000199060031b1c1916176010555b7fa6f004921c944d4b8bf6e38462b00f36a58d62495d56b51f571ab78f732c9815600080a1838084610660565b01013590508486806108cf565b60106000908152601f1985169550600080516020612b8a83398151915293509091889160205b8782106109845750508460019610610968575b50505050811b016010556108e6565b60001960f88660031b161c199201013516905585808681610959565b8285019093013585556001949094019389929182019190810190610946565b60106000529092509050600080516020612b8a833981519152601f840160051c8101602085106109fd575b91849391601f8994920160051c01905b8181106109eb57506108b8565b600081558594508893506001016109de565b50806109ce565b600f80546001600160a01b0319169190911790557f0b2d6eb667d0522c3eb86e4288afecae6c11591ffd1345d4d12407e0598bca9b600080a185610658565b346102ee5760003660031901126102ee576008546040516001600160a01b039091168152602090f35b346102ee5760003660031901126102ee576020610a876127b2565b604051908152f35b346102ee5760003660031901126102ee576020602854604051908152f35b346102ee5760003660031901126102ee576020601e54604051908152f35b346102ee5760003660031901126102ee57602060ff602554166040519015158152f35b346102ee5760003660031901126102ee5760406024548151906001600160401b03908181168352831c166020820152f35b346102ee5760003660031901126102ee576020601a54604051908152f35b346102ee5760403660031901126102ee57610b56611c73565b602435908115801590610c12575b610b9a575b6040519182526001600160a01b0316903390600080516020612b6a83398151915290602090a3602060405160018152f35b336000526001602052604060002054610bb5838210156124eb565b6001600160a01b038216908333839003610bd2575b505050610b69565b610be691610be1841515612530565b611eee565b3360005260016020526040600020556000526040600020610c08838254611efb565b9055828083610bca565b50336001600160a01b03821614610b64565b346102ee5760403660031901126102ee576060610c4b610c42611c73565b6024359061203a565b9060405192835260208301526040820152f35b346102ee5760403660031901126102ee576020610a87610c7c611c73565b6024359061228f565b346102ee5760003660031901126102ee57604051600090602b54610ca881611d2c565b808352600191808316908115610d3b5750600114610ce1575b610cdd83610cd181870382611db8565b60405191829182611dd9565b0390f35b602b600090815260209450917f11c44e4875b74d31ff9fd779bf2566af7bd15b87fc985d01f5094b89e3669e4f5b828410610d2857505050810190910190610cd181610cc1565b8054858501870152928501928101610d0f565b610cdd9550610cd193506020915091849260ff191682840152151560051b8201019350610cc1565b346102ee5760403660031901126102ee576001600160401b036004358181116102ee57366023820112156102ee578060040135918211610f665760405191610db5601f8201601f191660200184611db8565b808352602083019136602483830101116102ee57816000926024602093018537840101526024359161ffff831683036102ee576101009182828051810103126102ee57610e0190612188565b610e0d60408301612575565b91610e1a60608201612575565b9460808201519460a08301519260c08101519160ff831683036102ee5760e082015191015191844211610592578515610f40577f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e2665b6001600160a01b03881660009081526004602052604090208054909690600019811461057c5761ffff61052097610efd9960018401905560405194602086015216604084015260018060a01b038a16606084015260018060a01b038c1660808401528a60a084015260c083015260e082015260e08152610eee81611d81565b602081519101206104ef6123c1565b6001600160a01b038381169116036105375715610f2a576102ec926001600160a01b03908116911661275b565b6102ec926001600160a01b03908116911661270d565b7f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d6610e6f565b634e487b7160e01b600052604160045260246000fd5b346102ee5760003660031901126102ee576005546040516001600160a01b039091168152602090f35b346102ee5760003660031901126102ee576020601b54604051908152f35b346102ee5760203660031901126102ee576001600160a01b03610fe4611c73565b1660005260236020526020604060002054604051908152f35b346102ee5760003660031901126102ee57601454604080516001600160801b038316815260809290921c602083015290f35b346102ee5760403660031901126102ee5761105561104b611c73565b602435903361270d565b602060405160018152f35b346102ee5760203660031901126102ee576001600160a01b03611081611c73565b1660005260046020526020604060002054604051908152f35b346102ee5760003660031901126102ee57600f546040516001600160a01b039091168152602090f35b346102ee5760003660031901126102ee576020602d54604051908152f35b346102ee5760003660031901126102ee5760405160009060105461110481611d2c565b808352600191808316908115610d3b575060011461112c57610cdd83610cd181870382611db8565b601060009081526020945091600080516020612b8a8339815191525b82841061116157505050810190910190610cd181610cc1565b8054858501870152928501928101611148565b346102ee5760203660031901126102ee5760043560098110156102ee5760ff61119e602092611cfd565b54166040519015158152f35b346102ee5760203660031901126102ee576001600160a01b036111cb611c73565b1660005260016020526020604060002054604051908152f35b346102ee5760003660031901126102ee57600a546040516001600160a01b039091168152602090f35b346102ee5760003660031901126102ee576020602654604051908152f35b346102ee5760003660031901126102ee576020601c54604051908152f35b346102ee5760003660031901126102ee576020602c54604051908152f35b346102ee5760003660031901126102ee5760208054604051908152f35b346102ee5760003660031901126102ee576006546001600160a01b0390818116338190036112ee57806005549384167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a36001600160a01b03199283161760055516600655005b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b346102ee5760203660031901126102ee576001600160a01b03611353611c73565b1660005260176020526020604060002054604051908152f35b346102ee5760003660031901126102ee576020601554604051908152f35b346102ee5760003660031901126102ee576020600e54604051908152f35b346102ee5760003660031901126102ee576020601654604051908152f35b346102ee5760603660031901126102ee576020610a87604435602435600435611f21565b346102ee5760003660031901126102ee576020601154604051908152f35b346102ee5760003660031901126102ee57600d546040516001600160a01b039091168152602090f35b346102ee5760003660031901126102ee576020601254604051908152f35b346102ee5760003660031901126102ee576020610a876123c1565b346102ee5760003660031901126102ee576020601954604051908152f35b346102ee5760003660031901126102ee576014546040516001600160801b039091168152602090f35b346102ee5760003660031901126102ee576020601354604051908152f35b346102ee5760603660031901126102ee576114e8611c73565b6114f0611c89565b604435908161152d575b6040519182526001600160a01b03908116921690600080516020612b6a83398151915290602090a3602060405160018152f35b60018060a01b03808416806000526020600181528460406000205493611555828610156124eb565b85169384840361156a575b50505050506114fa565b8360005260028352604060002033600052835260406000205460001981036115de575b5084926115b5600080516020612b6a833981519152979593600193610be16020991515612530565b926000525260406000205560005260406000206115d3858254611efb565b905591858481611560565b9091811061163357602094926115b588600080516020612b6a83398151915298969461160c82600196611eee565b8660005260028552604060002033600052855260406000205593509395975050929461158d565b60405162461bcd60e51b815260048101849052601860248201527745524332303a20616c6c6f77616e636520746f6f206c6f7760401b6044820152606490fd5b346102ee5760003660031901126102ee576020602954604051908152f35b346102ee5761169f36611cae565b9183919395949542116105925760018060a01b0392838816948560005260046020526040600020928354600019811461057c5761173e95610520956001830190556040519060208201927f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d68452600060408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e081526104e481611d81565b1603610537576102ec9261270d565b346102ee5760003660031901126102ee57602a546040516001600160a01b039091168152602090f35b346102ee5760203660031901126102ee576001600160a01b03611797611c73565b1660005260186020526020604060002054604051908152f35b346102ee5760003660031901126102ee57602060405160008152f35b346102ee5760403660031901126102ee5760043560098110156102ee576117f1611c9f565b6008549091906001600160a01b031633036118aa5760ff61181182611cfd565b5416151591151591821461187057808260ff61182f61185e94611cfd565b54161515827feeec81de25875ce1725479bb76f720a8defdb43dea041919ae37bb4aae9847c0600080a4611cfd565b9060ff80198354169116179055600080f35b60405162461bcd60e51b81526020600482015260126024820152714d61726b65743a2073616d6520737461746560701b6044820152606490fd5b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881d5b985d5d1a1bdc9a5e995960621b6044820152606490fd5b346102ee5760403660031901126102ee57611055611902611c73565b602435903361275b565b346102ee5760603660031901126102ee57611925611c73565b61192d611c9f565b6044359081151582036102ee5760018060a01b0392839161195383600554163314611e22565b156119f75716908115908115916119ef575b50156119b257806005549283167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a36001600160a01b031991821617600555600680549091169055005b60405162461bcd60e51b81526020600482015260156024820152744f776e61626c653a207a65726f206164647265737360581b6044820152606490fd5b905083611965565b9150501660018060a01b03196006541617600655600080f35b346102ee5760003660031901126102ee5760018060a01b03600f54166040519063d6d7d52560e01b8252602091826004820152600091601054611a5281611d2c565b908160248501526001908181169081600014611c015750600114611bc1575b50509060409181600081809603925af18015611bb557600091600091611b76575b508115611b19578015611add5760409281601155817f9f9192b5edb17356c524e08d9e025c8e2f6307e6ea52fb7968faa3081f51c3c8600080a25b4260135583519215158352820152f35b60405162461bcd60e51b81526004810184905260146024820152734d61726b65743a20696e76616c6964207261746560601b6044820152606490fd5b50611b2960135460125490611efb565b4211611b3a57601154604092611acd565b60405162461bcd60e51b815260048101839052601460248201527313585c9ad95d0e881c985d19481d1bdbc81bdb1960621b6044820152606490fd5b9150506040813d604011611bad575b81611b9260409383611db8565b810103126102ee5781611ba482612188565b91015183611a92565b3d9150611b85565b6040513d6000823e3d90fd5b935060106000528460002093856000955b838710611bec575050505091810160440191806040611a71565b80548688016044015295019486908201611bd2565b60ff191660448087019190915292151560051b8501909201945082915060409050611a71565b346102ee5760403660031901126102ee57602090611c43611c73565b611c4b611c89565b9060018060a01b03809116600052600384526040600020911660005282526040600020548152f35b600435906001600160a01b03821682036102ee57565b602435906001600160a01b03821682036102ee57565b6024359081151582036102ee57565b60e09060031901126102ee576001600160a01b039060043582811681036102ee579160243590811681036102ee5790604435906064359060843560ff811681036102ee579060a4359060c43590565b6009811015611d16576000526007602052604060002090565b634e487b7160e01b600052602160045260246000fd5b90600182811c92168015611d5c575b6020831014611d4657565b634e487b7160e01b600052602260045260246000fd5b91607f1691611d3b565b604081019081106001600160401b03821117610f6657604052565b61010081019081106001600160401b03821117610f6657604052565b608081019081106001600160401b03821117610f6657604052565b90601f801991011681019081106001600160401b03821117610f6657604052565b6020808252825181830181905290939260005b828110611e0e57505060409293506000838284010152601f8019910116010190565b818101860151848201604001528501611dec565b15611e2957565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b15611e7457565b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881b9bdd081d985b1a59607a1b6044820152606490fd5b8181029291811591840414171561057c57565b8115611eca570490565b634e487b7160e01b600052601260045260246000fd5b604d811161057c57600a0a90565b9190820391821161057c57565b9190820180921161057c57565b8181039291600013801582851316918412161761057c57565b601454919291611f6a91611f5b91611f5191611f47906001600160801b03831690611ead565b9060801c90611ec0565b93601f5490611ead565b611f6483611ee0565b90611ec0565b80831061203257611f7e611fba9184611eee565b91611fb5611faf611fa6601e54611fa0611f9786611ee0565b60205490611efb565b90611ead565b611f6484611ee0565b91611ee0565b611f08565b6509184e72a0009081810291818305149015171561057c57670de0b6b3a76400009182810292818405149015171561057c578015611eca57600160ff1b9180831460001983141661057c570590600082121561202b57811461057c57600003905b808211612026575090565b905090565b509061201b565b505050600090565b6001600160a01b0390811660008181526017602090815260408220549295949391929091811561217b5761206c6129d5565b90612078861515612195565b6009541683600c54898752601882526064604088205491604051948593849263442c159960e01b8452600484015260248301528960448301525afa90811561217057859161213d575b509285949261211d6018936120f8612131996120f36120ea60409a620186a06021540490611ead565b601e5490611ead565b611ec0565b815190936001600160801b0391869161211391841690611ead565b9201511690611ec0565b81811061213557035b9783525220546121e1565b9091565b505082612126565b90508381813d8311612169575b6121548183611db8565b8101031261216557516121316120c1565b8480fd5b503d61214a565b6040513d87823e3d90fd5b5050509192505080918190565b519081151582036102ee57565b1561219c57565b60405162461bcd60e51b815260206004820152601e60248201527f4d61726b65743a2065786368616e676552617465206e6f742076616c696400006044820152606490fd5b6121ec821515612195565b602060018060a01b0360095416916064600c54604051948593849263442c159960e01b845260048401526024830152600060448301525afa908115611bb557600091612259575b50906120f36122459260215490611ead565b620186a0612255601e5483611ead565b0491565b906020823d8211612287575b8161227260209383611db8565b810103126122845750516120f3612233565b80fd5b3d9150612265565b6001600160a01b031660008181526018602052604081205490926122b2916121e1565b9183526017602052604083205480156123bb5781156123bb578181106123bb57828110156123b1576014546122fb918391610be191611f47906001600160801b03831690611ead565b90620186a0928383029280840485149015171561239d576123209291611f6491611eee565b91601b5491601c54936123338585611f08565b80820291848212600160ff1b82141661239d57818305149015171561238957058184820194851291129080158216911516176123755750808212612026575090565b634e487b7160e01b81526011600452602490fd5b634e487b7160e01b83526011600452602483fd5b634e487b7160e01b85526011600452602485fd5b50505050601b5490565b50505090565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031614806124c2575b1561241c577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f000000000000000000000000000000000000000000000000000000000000000082527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a0815260c081018181106001600160401b03821117610f665760405251902090565b507f000000000000000000000000000000000000000000000000000000000000000046146123f3565b156124f257565b60405162461bcd60e51b815260206004820152601660248201527545524332303a2062616c616e636520746f6f206c6f7760501b6044820152606490fd5b1561253757565b60405162461bcd60e51b815260206004820152601660248201527545524332303a206e6f207a65726f206164647265737360501b6044820152606490fd5b51906001600160a01b03821682036102ee57565b6005811015611d16578061259a5750565b600181036125e25760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b6044820152606490fd5b6002810361262f5760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606490fd5b60031461263857565b60405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608490fd5b9291906fa2a8918ca85bafe22016d0b997e4df60600160ff1b0383116127015791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa156126f45781516001600160a01b038116156126ee579190565b50600190565b50604051903d90823e3d90fd5b50505050600090600390565b7fe50de2333c10a9502fcb1d8ae13a51bbf423153dfc63c2b8997665b32154afc360018060a01b038092169160009083825260036020526040822094169384825260205284604082205580a4565b909160207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259160018060a01b03809416938460005260028352604060002095169485600052825280604060002055604051908152a3565b60ff60255416612930576014546001600160801b031690811561292957600a54604051631848f2bf60e31b8152602093916001600160a01b03919085908290600490829086165afa8015611bb55785916000916128ec575b50600460405180948193631a674cc560e11b8352165afa938415611bb5576000946128b9575b505061284c9192670de0b6b3a764000092839160285490611ead565b0490818110156128b0576128636029548092611eee565b8381029080820485149015171561057c57611f64612884926128a494611eee565b6026549261289e602754926128998487611eee565b611ead565b04611efb565b90808211612026575090565b50505060265490565b81813d83116128e5575b6128cd8183611db8565b810103126128e15751925061284c38612830565b8380fd5b503d6128c3565b909181813d8311612922575b6129028183611db8565b8101031261291e5751908282168203612284575084903861280a565b5080fd5b503d6128f8565b6027549150565b600a5460405163e6abad4960e01b815290602090829060049082906001600160a01b03165afa908115611bb557600091612968575090565b906020823d821161298e575b8161298160209383611db8565b8101031261228457505190565b3d9150612974565b604051906129a382611d66565b6014546001600160801b038116835260801c6020830152565b6001600160801b03918216908216019190821161057c57565b600060206040516129e581611d66565b82815201526001600160401b0390612a048260245460401c1642611eee565b918215612a5b57612a5661289991670de0b6b3a7640000612a4b612a26612996565b9660018060801b03958694858a5116906301e13380612a436127b2565b041690611ead565b0416828551166129bc565b168252565b509050612a66612996565b90565b604051612a7581611d66565b6024546001600160401b03908181168352818160401c16612a9d602085019180835242611eee565b928315612b6257602094816301e13380612ab56127b2565b041681528142168352612ac6612996565b670de0b6b3a7640000612aeb60018060801b0397612899898551168787511690611ead565b0495612afc818816828451166129bc565b1680825296015160801b6001600160801b031990811690961760145551915192909416931692831760409190911b67ffffffffffffffff60401b16176024557f7484db546dcd57af0104c73c8a6968dfbaf5767f047cee0dadd0499ad7df81a0600080a3565b505050505056feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae672a2646970667358221220421a530c998631c56a8d4e60d98acc9217a38659635c3f947a0ebf1b3b58a90464736f6c63430008120033", - "deployedBytecode": "0x608080604052600436101561001357600080fd5b60003560e01c908162a02a2014611c275750806302ce728f14611a10578063078dfbe71461190c578063095ea7b3146118e65780630c4e84f0146117cc57806318160ddd146117b05780631c9e379b146117765780631d4d3a5d1461174d5780631da8bf10146116915780631fb8f81a1461167357806323b872dd146114cf578063331960ff146114b157806334ce998a1461148857806334d441d01461146a5780633644e5151461144f57806337b6b7b91461143157806338d52e0f146114085780633ba0b9a9146113ea5780633f741adb146113c657806340626d8b146113a857806344de240a1461138a578063473e3ce71461136c57806348e4163e146113325780634e71e0c814611284578063529898f214611267578063542afda314611249578063579354621461122b5780636b19ad161461120d5780636c3d8b8f146111e457806370a08231146111aa578063727785471461117457806374645ff3146110e157806374c9e481146110c35780637dc0d1d01461109a5780637ecebe00146110605780637fa0b84e1461102f5780638285ef4014610ffd57806387b2793714610fc35780638c5d0ed314610fa55780638da5cb5b14610f7c578063910dd7c814610d63578063932bc4f814610c8557806399a9702814610c5e5780639e15e89f14610c24578063a9059cbb14610b3d578063b0e21e8a14610b1f578063b27c0e7414610aee578063b7113f1914610acb578063bb4cfe3b14610aad578063bde39c5d14610a8f578063c1ad5c8d14610a6c578063ce8849ed14610a43578063d3fb2a38146105d7578063d505accf14610437578063d8dfeb451461040e578063dd62ed3e146103bd578063de40657714610394578063e0996cb614610376578063e30c39781461034d578063ea64dd561461032f578063eec0f42e14610311578063f791395d146102f35763f8ba4cff146102d357600080fd5b346102ee5760003660031901126102ee576102ec612a69565b005b600080fd5b346102ee5760003660031901126102ee576020602754604051908152f35b346102ee5760003660031901126102ee576020600c54604051908152f35b346102ee5760003660031901126102ee576020601f54604051908152f35b346102ee5760003660031901126102ee576006546040516001600160a01b039091168152602090f35b346102ee5760003660031901126102ee576020601d54604051908152f35b346102ee5760003660031901126102ee576009546040516001600160a01b039091168152602090f35b346102ee5760403660031901126102ee576103d6611c73565b6103de611c89565b9060018060a01b038091166000526002602052604060002091166000526020526020604060002054604051908152f35b346102ee5760003660031901126102ee57600b546040516001600160a01b039091168152602090f35b346102ee5761044536611cae565b9183919395949542116105925760018060a01b0392838816948560005260046020526040600020928354600019811461057c5761052895610520956001830190556040519060208201927f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e2668452600060408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e081526104e481611d81565b5190206104ef6123c1565b9060405190602082019261190160f01b8452602283015260428201526042815261051881611d9d565b519020612688565b919091612589565b1603610537576102ec9261275b565b60405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152606490fd5b634e487b7160e01b600052601160045260246000fd5b60405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b346102ee576101603660031901126102ee576001600160a01b03600435818116908190036102ee576024916001600160401b0383358181116102ee57366023820112156102ee5780600401359182116102ee57368583830101116102ee57604435938385168095036102ee5761065284600554163314611e22565b80610a04575b5084826108a2575b50505081610861575b505060643580610849575b5060843580610831575b5060a4358061081a575b5060c435806107f6575b5060e435806107d2575b5061010435806107a0575b50610124358061072d575b506101443590816106bf57005b601e5482106106ce5750601f55005b60849060326040519162461bcd60e51b8352602060048401528201527f4d61726b65743a206c69717569646174696f6e436f6c6c61746572616c697a616044820152711d1a5bdb94985d19481d1bdbc81cdb585b1b60721b6064820152fd5b61073c620186a0821115611e6d565b601f54811161074e57601e55816106b2565b60405162461bcd60e51b8152602060048201526025818401527f4d61726b65743a20636f6c6c61746572616c697a6174696f6e5261746520746f6044820152646f2062696760d81b6064820152608490fd5b806016547fae6e0ab3b95f0a53ff9660a390ccedcbbf1f2355dce974a9841af106fddcfaba600080a3601655816106a7565b6107e0620186a08210611e6d565b6107ed601b548211611e6d565b601c558161069c565b610804620186a08210611e6d565b610811601c548210611e6d565b601b5581610692565b610828620186a08210611e6d565b601d5581610688565b610840620186a0821115611e6d565b601a558161067e565b610858620186a0821115611e6d565b60195581610674565b816008549182167f5a62d22209e370e38eea92cfddcd228e656e6ec139243392a760a7769f5877fd600080a36001600160a01b031916176008558180610669565b82916108af601054611d2c565b601f81116109a3575b50600090601f841160011461092057600093610913575b5050508160011b916000199060031b1c1916176010555b7fa6f004921c944d4b8bf6e38462b00f36a58d62495d56b51f571ab78f732c9815600080a1838084610660565b01013590508486806108cf565b60106000908152601f1985169550600080516020612b8a83398151915293509091889160205b8782106109845750508460019610610968575b50505050811b016010556108e6565b60001960f88660031b161c199201013516905585808681610959565b8285019093013585556001949094019389929182019190810190610946565b60106000529092509050600080516020612b8a833981519152601f840160051c8101602085106109fd575b91849391601f8994920160051c01905b8181106109eb57506108b8565b600081558594508893506001016109de565b50806109ce565b600f80546001600160a01b0319169190911790557f0b2d6eb667d0522c3eb86e4288afecae6c11591ffd1345d4d12407e0598bca9b600080a185610658565b346102ee5760003660031901126102ee576008546040516001600160a01b039091168152602090f35b346102ee5760003660031901126102ee576020610a876127b2565b604051908152f35b346102ee5760003660031901126102ee576020602854604051908152f35b346102ee5760003660031901126102ee576020601e54604051908152f35b346102ee5760003660031901126102ee57602060ff602554166040519015158152f35b346102ee5760003660031901126102ee5760406024548151906001600160401b03908181168352831c166020820152f35b346102ee5760003660031901126102ee576020601a54604051908152f35b346102ee5760403660031901126102ee57610b56611c73565b602435908115801590610c12575b610b9a575b6040519182526001600160a01b0316903390600080516020612b6a83398151915290602090a3602060405160018152f35b336000526001602052604060002054610bb5838210156124eb565b6001600160a01b038216908333839003610bd2575b505050610b69565b610be691610be1841515612530565b611eee565b3360005260016020526040600020556000526040600020610c08838254611efb565b9055828083610bca565b50336001600160a01b03821614610b64565b346102ee5760403660031901126102ee576060610c4b610c42611c73565b6024359061203a565b9060405192835260208301526040820152f35b346102ee5760403660031901126102ee576020610a87610c7c611c73565b6024359061228f565b346102ee5760003660031901126102ee57604051600090602b54610ca881611d2c565b808352600191808316908115610d3b5750600114610ce1575b610cdd83610cd181870382611db8565b60405191829182611dd9565b0390f35b602b600090815260209450917f11c44e4875b74d31ff9fd779bf2566af7bd15b87fc985d01f5094b89e3669e4f5b828410610d2857505050810190910190610cd181610cc1565b8054858501870152928501928101610d0f565b610cdd9550610cd193506020915091849260ff191682840152151560051b8201019350610cc1565b346102ee5760403660031901126102ee576001600160401b036004358181116102ee57366023820112156102ee578060040135918211610f665760405191610db5601f8201601f191660200184611db8565b808352602083019136602483830101116102ee57816000926024602093018537840101526024359161ffff831683036102ee576101009182828051810103126102ee57610e0190612188565b610e0d60408301612575565b91610e1a60608201612575565b9460808201519460a08301519260c08101519160ff831683036102ee5760e082015191015191844211610592578515610f40577f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e2665b6001600160a01b03881660009081526004602052604090208054909690600019811461057c5761ffff61052097610efd9960018401905560405194602086015216604084015260018060a01b038a16606084015260018060a01b038c1660808401528a60a084015260c083015260e082015260e08152610eee81611d81565b602081519101206104ef6123c1565b6001600160a01b038381169116036105375715610f2a576102ec926001600160a01b03908116911661275b565b6102ec926001600160a01b03908116911661270d565b7f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d6610e6f565b634e487b7160e01b600052604160045260246000fd5b346102ee5760003660031901126102ee576005546040516001600160a01b039091168152602090f35b346102ee5760003660031901126102ee576020601b54604051908152f35b346102ee5760203660031901126102ee576001600160a01b03610fe4611c73565b1660005260236020526020604060002054604051908152f35b346102ee5760003660031901126102ee57601454604080516001600160801b038316815260809290921c602083015290f35b346102ee5760403660031901126102ee5761105561104b611c73565b602435903361270d565b602060405160018152f35b346102ee5760203660031901126102ee576001600160a01b03611081611c73565b1660005260046020526020604060002054604051908152f35b346102ee5760003660031901126102ee57600f546040516001600160a01b039091168152602090f35b346102ee5760003660031901126102ee576020602d54604051908152f35b346102ee5760003660031901126102ee5760405160009060105461110481611d2c565b808352600191808316908115610d3b575060011461112c57610cdd83610cd181870382611db8565b601060009081526020945091600080516020612b8a8339815191525b82841061116157505050810190910190610cd181610cc1565b8054858501870152928501928101611148565b346102ee5760203660031901126102ee5760043560098110156102ee5760ff61119e602092611cfd565b54166040519015158152f35b346102ee5760203660031901126102ee576001600160a01b036111cb611c73565b1660005260016020526020604060002054604051908152f35b346102ee5760003660031901126102ee57600a546040516001600160a01b039091168152602090f35b346102ee5760003660031901126102ee576020602654604051908152f35b346102ee5760003660031901126102ee576020601c54604051908152f35b346102ee5760003660031901126102ee576020602c54604051908152f35b346102ee5760003660031901126102ee5760208054604051908152f35b346102ee5760003660031901126102ee576006546001600160a01b0390818116338190036112ee57806005549384167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a36001600160a01b03199283161760055516600655005b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b346102ee5760203660031901126102ee576001600160a01b03611353611c73565b1660005260176020526020604060002054604051908152f35b346102ee5760003660031901126102ee576020601554604051908152f35b346102ee5760003660031901126102ee576020600e54604051908152f35b346102ee5760003660031901126102ee576020601654604051908152f35b346102ee5760603660031901126102ee576020610a87604435602435600435611f21565b346102ee5760003660031901126102ee576020601154604051908152f35b346102ee5760003660031901126102ee57600d546040516001600160a01b039091168152602090f35b346102ee5760003660031901126102ee576020601254604051908152f35b346102ee5760003660031901126102ee576020610a876123c1565b346102ee5760003660031901126102ee576020601954604051908152f35b346102ee5760003660031901126102ee576014546040516001600160801b039091168152602090f35b346102ee5760003660031901126102ee576020601354604051908152f35b346102ee5760603660031901126102ee576114e8611c73565b6114f0611c89565b604435908161152d575b6040519182526001600160a01b03908116921690600080516020612b6a83398151915290602090a3602060405160018152f35b60018060a01b03808416806000526020600181528460406000205493611555828610156124eb565b85169384840361156a575b50505050506114fa565b8360005260028352604060002033600052835260406000205460001981036115de575b5084926115b5600080516020612b6a833981519152979593600193610be16020991515612530565b926000525260406000205560005260406000206115d3858254611efb565b905591858481611560565b9091811061163357602094926115b588600080516020612b6a83398151915298969461160c82600196611eee565b8660005260028552604060002033600052855260406000205593509395975050929461158d565b60405162461bcd60e51b815260048101849052601860248201527745524332303a20616c6c6f77616e636520746f6f206c6f7760401b6044820152606490fd5b346102ee5760003660031901126102ee576020602954604051908152f35b346102ee5761169f36611cae565b9183919395949542116105925760018060a01b0392838816948560005260046020526040600020928354600019811461057c5761173e95610520956001830190556040519060208201927f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d68452600060408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e081526104e481611d81565b1603610537576102ec9261270d565b346102ee5760003660031901126102ee57602a546040516001600160a01b039091168152602090f35b346102ee5760203660031901126102ee576001600160a01b03611797611c73565b1660005260186020526020604060002054604051908152f35b346102ee5760003660031901126102ee57602060405160008152f35b346102ee5760403660031901126102ee5760043560098110156102ee576117f1611c9f565b6008549091906001600160a01b031633036118aa5760ff61181182611cfd565b5416151591151591821461187057808260ff61182f61185e94611cfd565b54161515827feeec81de25875ce1725479bb76f720a8defdb43dea041919ae37bb4aae9847c0600080a4611cfd565b9060ff80198354169116179055600080f35b60405162461bcd60e51b81526020600482015260126024820152714d61726b65743a2073616d6520737461746560701b6044820152606490fd5b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881d5b985d5d1a1bdc9a5e995960621b6044820152606490fd5b346102ee5760403660031901126102ee57611055611902611c73565b602435903361275b565b346102ee5760603660031901126102ee57611925611c73565b61192d611c9f565b6044359081151582036102ee5760018060a01b0392839161195383600554163314611e22565b156119f75716908115908115916119ef575b50156119b257806005549283167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a36001600160a01b031991821617600555600680549091169055005b60405162461bcd60e51b81526020600482015260156024820152744f776e61626c653a207a65726f206164647265737360581b6044820152606490fd5b905083611965565b9150501660018060a01b03196006541617600655600080f35b346102ee5760003660031901126102ee5760018060a01b03600f54166040519063d6d7d52560e01b8252602091826004820152600091601054611a5281611d2c565b908160248501526001908181169081600014611c015750600114611bc1575b50509060409181600081809603925af18015611bb557600091600091611b76575b508115611b19578015611add5760409281601155817f9f9192b5edb17356c524e08d9e025c8e2f6307e6ea52fb7968faa3081f51c3c8600080a25b4260135583519215158352820152f35b60405162461bcd60e51b81526004810184905260146024820152734d61726b65743a20696e76616c6964207261746560601b6044820152606490fd5b50611b2960135460125490611efb565b4211611b3a57601154604092611acd565b60405162461bcd60e51b815260048101839052601460248201527313585c9ad95d0e881c985d19481d1bdbc81bdb1960621b6044820152606490fd5b9150506040813d604011611bad575b81611b9260409383611db8565b810103126102ee5781611ba482612188565b91015183611a92565b3d9150611b85565b6040513d6000823e3d90fd5b935060106000528460002093856000955b838710611bec575050505091810160440191806040611a71565b80548688016044015295019486908201611bd2565b60ff191660448087019190915292151560051b8501909201945082915060409050611a71565b346102ee5760403660031901126102ee57602090611c43611c73565b611c4b611c89565b9060018060a01b03809116600052600384526040600020911660005282526040600020548152f35b600435906001600160a01b03821682036102ee57565b602435906001600160a01b03821682036102ee57565b6024359081151582036102ee57565b60e09060031901126102ee576001600160a01b039060043582811681036102ee579160243590811681036102ee5790604435906064359060843560ff811681036102ee579060a4359060c43590565b6009811015611d16576000526007602052604060002090565b634e487b7160e01b600052602160045260246000fd5b90600182811c92168015611d5c575b6020831014611d4657565b634e487b7160e01b600052602260045260246000fd5b91607f1691611d3b565b604081019081106001600160401b03821117610f6657604052565b61010081019081106001600160401b03821117610f6657604052565b608081019081106001600160401b03821117610f6657604052565b90601f801991011681019081106001600160401b03821117610f6657604052565b6020808252825181830181905290939260005b828110611e0e57505060409293506000838284010152601f8019910116010190565b818101860151848201604001528501611dec565b15611e2957565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b15611e7457565b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881b9bdd081d985b1a59607a1b6044820152606490fd5b8181029291811591840414171561057c57565b8115611eca570490565b634e487b7160e01b600052601260045260246000fd5b604d811161057c57600a0a90565b9190820391821161057c57565b9190820180921161057c57565b8181039291600013801582851316918412161761057c57565b601454919291611f6a91611f5b91611f5191611f47906001600160801b03831690611ead565b9060801c90611ec0565b93601f5490611ead565b611f6483611ee0565b90611ec0565b80831061203257611f7e611fba9184611eee565b91611fb5611faf611fa6601e54611fa0611f9786611ee0565b60205490611efb565b90611ead565b611f6484611ee0565b91611ee0565b611f08565b6509184e72a0009081810291818305149015171561057c57670de0b6b3a76400009182810292818405149015171561057c578015611eca57600160ff1b9180831460001983141661057c570590600082121561202b57811461057c57600003905b808211612026575090565b905090565b509061201b565b505050600090565b6001600160a01b0390811660008181526017602090815260408220549295949391929091811561217b5761206c6129d5565b90612078861515612195565b6009541683600c54898752601882526064604088205491604051948593849263442c159960e01b8452600484015260248301528960448301525afa90811561217057859161213d575b509285949261211d6018936120f8612131996120f36120ea60409a620186a06021540490611ead565b601e5490611ead565b611ec0565b815190936001600160801b0391869161211391841690611ead565b9201511690611ec0565b81811061213557035b9783525220546121e1565b9091565b505082612126565b90508381813d8311612169575b6121548183611db8565b8101031261216557516121316120c1565b8480fd5b503d61214a565b6040513d87823e3d90fd5b5050509192505080918190565b519081151582036102ee57565b1561219c57565b60405162461bcd60e51b815260206004820152601e60248201527f4d61726b65743a2065786368616e676552617465206e6f742076616c696400006044820152606490fd5b6121ec821515612195565b602060018060a01b0360095416916064600c54604051948593849263442c159960e01b845260048401526024830152600060448301525afa908115611bb557600091612259575b50906120f36122459260215490611ead565b620186a0612255601e5483611ead565b0491565b906020823d8211612287575b8161227260209383611db8565b810103126122845750516120f3612233565b80fd5b3d9150612265565b6001600160a01b031660008181526018602052604081205490926122b2916121e1565b9183526017602052604083205480156123bb5781156123bb578181106123bb57828110156123b1576014546122fb918391610be191611f47906001600160801b03831690611ead565b90620186a0928383029280840485149015171561239d576123209291611f6491611eee565b91601b5491601c54936123338585611f08565b80820291848212600160ff1b82141661239d57818305149015171561238957058184820194851291129080158216911516176123755750808212612026575090565b634e487b7160e01b81526011600452602490fd5b634e487b7160e01b83526011600452602483fd5b634e487b7160e01b85526011600452602485fd5b50505050601b5490565b50505090565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031614806124c2575b1561241c577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f000000000000000000000000000000000000000000000000000000000000000082527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a0815260c081018181106001600160401b03821117610f665760405251902090565b507f000000000000000000000000000000000000000000000000000000000000000046146123f3565b156124f257565b60405162461bcd60e51b815260206004820152601660248201527545524332303a2062616c616e636520746f6f206c6f7760501b6044820152606490fd5b1561253757565b60405162461bcd60e51b815260206004820152601660248201527545524332303a206e6f207a65726f206164647265737360501b6044820152606490fd5b51906001600160a01b03821682036102ee57565b6005811015611d16578061259a5750565b600181036125e25760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b6044820152606490fd5b6002810361262f5760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606490fd5b60031461263857565b60405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608490fd5b9291906fa2a8918ca85bafe22016d0b997e4df60600160ff1b0383116127015791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa156126f45781516001600160a01b038116156126ee579190565b50600190565b50604051903d90823e3d90fd5b50505050600090600390565b7fe50de2333c10a9502fcb1d8ae13a51bbf423153dfc63c2b8997665b32154afc360018060a01b038092169160009083825260036020526040822094169384825260205284604082205580a4565b909160207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259160018060a01b03809416938460005260028352604060002095169485600052825280604060002055604051908152a3565b60ff60255416612930576014546001600160801b031690811561292957600a54604051631848f2bf60e31b8152602093916001600160a01b03919085908290600490829086165afa8015611bb55785916000916128ec575b50600460405180948193631a674cc560e11b8352165afa938415611bb5576000946128b9575b505061284c9192670de0b6b3a764000092839160285490611ead565b0490818110156128b0576128636029548092611eee565b8381029080820485149015171561057c57611f64612884926128a494611eee565b6026549261289e602754926128998487611eee565b611ead565b04611efb565b90808211612026575090565b50505060265490565b81813d83116128e5575b6128cd8183611db8565b810103126128e15751925061284c38612830565b8380fd5b503d6128c3565b909181813d8311612922575b6129028183611db8565b8101031261291e5751908282168203612284575084903861280a565b5080fd5b503d6128f8565b6027549150565b600a5460405163e6abad4960e01b815290602090829060049082906001600160a01b03165afa908115611bb557600091612968575090565b906020823d821161298e575b8161298160209383611db8565b8101031261228457505190565b3d9150612974565b604051906129a382611d66565b6014546001600160801b038116835260801c6020830152565b6001600160801b03918216908216019190821161057c57565b600060206040516129e581611d66565b82815201526001600160401b0390612a048260245460401c1642611eee565b918215612a5b57612a5661289991670de0b6b3a7640000612a4b612a26612996565b9660018060801b03958694858a5116906301e13380612a436127b2565b041690611ead565b0416828551166129bc565b168252565b509050612a66612996565b90565b604051612a7581611d66565b6024546001600160401b03908181168352818160401c16612a9d602085019180835242611eee565b928315612b6257602094816301e13380612ab56127b2565b041681528142168352612ac6612996565b670de0b6b3a7640000612aeb60018060801b0397612899898551168787511690611ead565b0495612afc818816828451166129bc565b1680825296015160801b6001600160801b031990811690961760145551915192909416931692831760409190911b67ffffffffffffffff60401b16176024557f7484db546dcd57af0104c73c8a6968dfbaf5767f047cee0dadd0499ad7df81a0600080a3565b505050505056feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae672a2646970667358221220421a530c998631c56a8d4e60d98acc9217a38659635c3f947a0ebf1b3b58a90464736f6c63430008120033", + "bytecode": "0x61014080604052346200018a5762000017816200018f565b600f81526001602082016e546170696f63612042696742616e6760881b8152602060405162000046816200018f565b8381520192603160f81b845251902091208160e052610100918183524660a0526040519160208301907f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f92838352604085015260608401524660808401523060a084015260a0835260c083019280841060018060401b03851117620001745760408490525190206080523060c052610120908152600580546001600160a01b0319163390811790915560007f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a362013880601b5562015f90601c55612710601d55612ee06020556103e8602e55612ce29283620001ac8439608051836124fd015260a051836125c8015260c051836124c7015260e0518361254c01525182612572015251816125290152f35b634e487b7160e01b600052604160045260246000fd5b600080fd5b604081019081106001600160401b03821117620001745760405256fe608080604052600436101561001357600080fd5b60003560e01c908162a02a2014611d2a5750806302ce728f14611b13578063078dfbe714611a0f578063095ea7b3146119e95780630c4e84f0146118cf5780630f8b29ea146118b157806318160ddd146118955780631c9e379b1461185b5780631d4d3a5d146118325780631da8bf10146117765780631fb8f81a1461175857806323b872dd146115b4578063331960ff1461159657806334ce998a1461156d57806334d441d01461154f5780633644e5151461153457806337b6b7b91461151657806338d52e0f146114ed5780633ba0b9a9146114cf5780633f741adb146114ab57806340626d8b1461148d57806344de240a1461146f578063473e3ce71461145157806348e4163e146114175780634e71e0c814611369578063529898f21461134c578063542afda31461132e57806357935462146113105780636b19ad16146112f25780636c3d8b8f146112c957806370a082311461128f578063727785471461125957806374645ff3146111c657806374c9e481146111a8578063790c84671461118a5780637dc0d1d0146111615780637ecebe00146111275780637fa0b84e146110f65780638285ef40146110c457806387b279371461108a5780638c5d0ed31461106c5780638da5cb5b14611043578063910dd7c814610e2a578063932bc4f814610d4c57806399a9702814610d255780639e15e89f14610ceb578063a9059cbb14610c04578063b0e21e8a14610be6578063b27c0e7414610bb5578063b7113f1914610b92578063bb4cfe3b14610b74578063bde39c5d14610b56578063c1ad5c8d14610b33578063ce8849ed14610b0a578063d3fb2a381461069e578063d505accf146104fe578063d8dfeb45146104d5578063da863f0e146104ac578063dd62ed3e1461045b578063de40657714610432578063e0996cb614610414578063e30c3978146103eb578063ea64dd56146103cd578063eec0f42e146103af578063ef2b234a1461033d578063f791395d1461031f5763f8ba4cff146102ff57600080fd5b3461031a57600036600319011261031a57610318612b6c565b005b600080fd5b3461031a57600036600319011261031a576020602854604051908152f35b3461031a57602036600319011261031a576004356001600160a01b038181169182900361031a5761037381600554163314611f25565b816021549182167ffb4fd7114609dd603b57adbc2082205bfbbcabf9265c4b437b472f5c592b8cd7600080a36001600160a01b03191617602155005b3461031a57600036600319011261031a576020600c54604051908152f35b3461031a57600036600319011261031a576020601f54604051908152f35b3461031a57600036600319011261031a576006546040516001600160a01b039091168152602090f35b3461031a57600036600319011261031a576020601d54604051908152f35b3461031a57600036600319011261031a576009546040516001600160a01b039091168152602090f35b3461031a57604036600319011261031a57610474611d76565b61047c611d8c565b9060018060a01b038091166000526002602052604060002091166000526020526020604060002054604051908152f35b3461031a57600036600319011261031a576021546040516001600160a01b039091168152602090f35b3461031a57600036600319011261031a57600b546040516001600160a01b039091168152602090f35b3461031a5761050c36611db1565b9183919395949542116106595760018060a01b03928388169485600052600460205260406000209283546000198114610643576105ef956105e7956001830190556040519060208201927f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e2668452600060408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e081526105ab81611e84565b5190206105b66124c4565b9060405190602082019261190160f01b845260228301526042820152604281526105df81611ea0565b51902061278b565b91909161268c565b16036105fe576103189261285e565b60405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152606490fd5b634e487b7160e01b600052601160045260246000fd5b60405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b3461031a5761016036600319011261031a576001600160a01b036004358181169081900361031a576024916001600160401b03833581811161031a573660238201121561031a57806004013591821161031a573685838301011161031a576044359383851680950361031a5761071984600554163314611f25565b80610acb575b508482610969575b50505081610928575b505060643580610910575b50608435806108f8575b5060a435806108e1575b5060c435806108bd575b5060e43580610899575b506101043580610867575b5061012435806107f4575b5061014435908161078657005b601e5482106107955750601f55005b60849060326040519162461bcd60e51b8352602060048401528201527f4d61726b65743a206c69717569646174696f6e436f6c6c61746572616c697a616044820152711d1a5bdb94985d19481d1bdbc81cdb585b1b60721b6064820152fd5b610803620186a0821115611f70565b601f54811161081557601e5581610779565b60405162461bcd60e51b8152602060048201526025818401527f4d61726b65743a20636f6c6c61746572616c697a6174696f6e5261746520746f6044820152646f2062696760d81b6064820152608490fd5b806016547fae6e0ab3b95f0a53ff9660a390ccedcbbf1f2355dce974a9841af106fddcfaba600080a36016558161076e565b6108a7620186a08210611f70565b6108b4601b548211611f70565b601c5581610763565b6108cb620186a08210611f70565b6108d8601c548210611f70565b601b5581610759565b6108ef620186a08210611f70565b601d558161074f565b610907620186a0821115611f70565b601a5581610745565b61091f620186a0821115611f70565b6019558161073b565b816008549182167f5a62d22209e370e38eea92cfddcd228e656e6ec139243392a760a7769f5877fd600080a36001600160a01b031916176008558180610730565b8291610976601054611e2f565b601f8111610a6a575b50600090601f84116001146109e7576000936109da575b5050508160011b916000199060031b1c1916176010555b7fa6f004921c944d4b8bf6e38462b00f36a58d62495d56b51f571ab78f732c9815600080a1838084610727565b0101359050848680610996565b60106000908152601f1985169550600080516020612c8d83398151915293509091889160205b878210610a4b5750508460019610610a2f575b50505050811b016010556109ad565b60001960f88660031b161c199201013516905585808681610a20565b8285019093013585556001949094019389929182019190810190610a0d565b60106000529092509050600080516020612c8d833981519152601f840160051c810160208510610ac4575b91849391601f8994920160051c01905b818110610ab2575061097f565b60008155859450889350600101610aa5565b5080610a95565b600f80546001600160a01b0319169190911790557f0b2d6eb667d0522c3eb86e4288afecae6c11591ffd1345d4d12407e0598bca9b600080a18561071f565b3461031a57600036600319011261031a576008546040516001600160a01b039091168152602090f35b3461031a57600036600319011261031a576020610b4e6128b5565b604051908152f35b3461031a57600036600319011261031a576020602954604051908152f35b3461031a57600036600319011261031a576020601e54604051908152f35b3461031a57600036600319011261031a57602060ff602654166040519015158152f35b3461031a57600036600319011261031a5760406025548151906001600160401b03908181168352831c166020820152f35b3461031a57600036600319011261031a576020601a54604051908152f35b3461031a57604036600319011261031a57610c1d611d76565b602435908115801590610cd9575b610c61575b6040519182526001600160a01b0316903390600080516020612c6d83398151915290602090a3602060405160018152f35b336000526001602052604060002054610c7c838210156125ee565b6001600160a01b038216908333839003610c99575b505050610c30565b610cad91610ca8841515612633565b611ff1565b3360005260016020526040600020556000526040600020610ccf838254611ffe565b9055828083610c91565b50336001600160a01b03821614610c2b565b3461031a57604036600319011261031a576060610d12610d09611d76565b6024359061213d565b9060405192835260208301526040820152f35b3461031a57604036600319011261031a576020610b4e610d43611d76565b60243590612392565b3461031a57600036600319011261031a57604051600090602c54610d6f81611e2f565b808352600191808316908115610e025750600114610da8575b610da483610d9881870382611ebb565b60405191829182611edc565b0390f35b602c600090815260209450917f7416c943b4a09859521022fd2e90eac0dd9026dad28fa317782a135f28a860915b828410610def57505050810190910190610d9881610d88565b8054858501870152928501928101610dd6565b610da49550610d9893506020915091849260ff191682840152151560051b8201019350610d88565b3461031a57604036600319011261031a576001600160401b0360043581811161031a573660238201121561031a57806004013591821161102d5760405191610e7c601f8201601f191660200184611ebb565b8083526020830191366024838301011161031a57816000926024602093018537840101526024359161ffff8316830361031a5761010091828280518101031261031a57610ec89061228b565b610ed460408301612678565b91610ee160608201612678565b9460808201519460a08301519260c08101519160ff8316830361031a5760e082015191015191844211610659578515611007577f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e2665b6001600160a01b0388166000908152600460205260409020805490969060001981146106435761ffff6105e797610fc49960018401905560405194602086015216604084015260018060a01b038a16606084015260018060a01b038c1660808401528a60a084015260c083015260e082015260e08152610fb581611e84565b602081519101206105b66124c4565b6001600160a01b038381169116036105fe5715610ff157610318926001600160a01b03908116911661285e565b610318926001600160a01b039081169116612810565b7f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d6610f36565b634e487b7160e01b600052604160045260246000fd5b3461031a57600036600319011261031a576005546040516001600160a01b039091168152602090f35b3461031a57600036600319011261031a576020601b54604051908152f35b3461031a57602036600319011261031a576001600160a01b036110ab611d76565b1660005260246020526020604060002054604051908152f35b3461031a57600036600319011261031a57601454604080516001600160801b038316815260809290921c602083015290f35b3461031a57604036600319011261031a5761111c611112611d76565b6024359033612810565b602060405160018152f35b3461031a57602036600319011261031a576001600160a01b03611148611d76565b1660005260046020526020604060002054604051908152f35b3461031a57600036600319011261031a57600f546040516001600160a01b039091168152602090f35b3461031a57600036600319011261031a576020603054604051908152f35b3461031a57600036600319011261031a576020602e54604051908152f35b3461031a57600036600319011261031a576040516000906010546111e981611e2f565b808352600191808316908115610e02575060011461121157610da483610d9881870382611ebb565b601060009081526020945091600080516020612c8d8339815191525b82841061124657505050810190910190610d9881610d88565b805485850187015292850192810161122d565b3461031a57602036600319011261031a57600435600981101561031a5760ff611283602092611e00565b54166040519015158152f35b3461031a57602036600319011261031a576001600160a01b036112b0611d76565b1660005260016020526020604060002054604051908152f35b3461031a57600036600319011261031a57600a546040516001600160a01b039091168152602090f35b3461031a57600036600319011261031a576020602754604051908152f35b3461031a57600036600319011261031a576020601c54604051908152f35b3461031a57600036600319011261031a576020602d54604051908152f35b3461031a57600036600319011261031a5760208054604051908152f35b3461031a57600036600319011261031a576006546001600160a01b0390818116338190036113d357806005549384167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a36001600160a01b03199283161760055516600655005b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b3461031a57602036600319011261031a576001600160a01b03611438611d76565b1660005260176020526020604060002054604051908152f35b3461031a57600036600319011261031a576020601554604051908152f35b3461031a57600036600319011261031a576020600e54604051908152f35b3461031a57600036600319011261031a576020601654604051908152f35b3461031a57606036600319011261031a576020610b4e604435602435600435612024565b3461031a57600036600319011261031a576020601154604051908152f35b3461031a57600036600319011261031a57600d546040516001600160a01b039091168152602090f35b3461031a57600036600319011261031a576020601254604051908152f35b3461031a57600036600319011261031a576020610b4e6124c4565b3461031a57600036600319011261031a576020601954604051908152f35b3461031a57600036600319011261031a576014546040516001600160801b039091168152602090f35b3461031a57600036600319011261031a576020601354604051908152f35b3461031a57606036600319011261031a576115cd611d76565b6115d5611d8c565b6044359081611612575b6040519182526001600160a01b03908116921690600080516020612c6d83398151915290602090a3602060405160018152f35b60018060a01b0380841680600052602060018152846040600020549361163a828610156125ee565b85169384840361164f575b50505050506115df565b8360005260028352604060002033600052835260406000205460001981036116c3575b50849261169a600080516020612c6d833981519152979593600193610ca86020991515612633565b926000525260406000205560005260406000206116b8858254611ffe565b905591858481611645565b90918110611718576020949261169a88600080516020612c6d8339815191529896946116f182600196611ff1565b86600052600285526040600020336000528552604060002055935093959750509294611672565b60405162461bcd60e51b815260048101849052601860248201527745524332303a20616c6c6f77616e636520746f6f206c6f7760401b6044820152606490fd5b3461031a57600036600319011261031a576020602a54604051908152f35b3461031a5761178436611db1565b9183919395949542116106595760018060a01b0392838816948560005260046020526040600020928354600019811461064357611823956105e7956001830190556040519060208201927f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d68452600060408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e081526105ab81611e84565b16036105fe5761031892612810565b3461031a57600036600319011261031a57602b546040516001600160a01b039091168152602090f35b3461031a57602036600319011261031a576001600160a01b0361187c611d76565b1660005260186020526020604060002054604051908152f35b3461031a57600036600319011261031a57602060405160008152f35b3461031a57600036600319011261031a576020602f54604051908152f35b3461031a57604036600319011261031a57600435600981101561031a576118f4611da2565b6008549091906001600160a01b031633036119ad5760ff61191482611e00565b5416151591151591821461197357808260ff61193261196194611e00565b54161515827feeec81de25875ce1725479bb76f720a8defdb43dea041919ae37bb4aae9847c0600080a4611e00565b9060ff80198354169116179055600080f35b60405162461bcd60e51b81526020600482015260126024820152714d61726b65743a2073616d6520737461746560701b6044820152606490fd5b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881d5b985d5d1a1bdc9a5e995960621b6044820152606490fd5b3461031a57604036600319011261031a5761111c611a05611d76565b602435903361285e565b3461031a57606036600319011261031a57611a28611d76565b611a30611da2565b60443590811515820361031a5760018060a01b03928391611a5683600554163314611f25565b15611afa571690811590811591611af2575b5015611ab557806005549283167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a36001600160a01b031991821617600555600680549091169055005b60405162461bcd60e51b81526020600482015260156024820152744f776e61626c653a207a65726f206164647265737360581b6044820152606490fd5b905083611a68565b9150501660018060a01b03196006541617600655600080f35b3461031a57600036600319011261031a5760018060a01b03600f54166040519063d6d7d52560e01b8252602091826004820152600091601054611b5581611e2f565b908160248501526001908181169081600014611d045750600114611cc4575b50509060409181600081809603925af18015611cb857600091600091611c79575b508115611c1c578015611be05760409281601155817f9f9192b5edb17356c524e08d9e025c8e2f6307e6ea52fb7968faa3081f51c3c8600080a25b4260135583519215158352820152f35b60405162461bcd60e51b81526004810184905260146024820152734d61726b65743a20696e76616c6964207261746560601b6044820152606490fd5b50611c2c60135460125490611ffe565b4211611c3d57601154604092611bd0565b60405162461bcd60e51b815260048101839052601460248201527313585c9ad95d0e881c985d19481d1bdbc81bdb1960621b6044820152606490fd5b9150506040813d604011611cb0575b81611c9560409383611ebb565b8101031261031a5781611ca78261228b565b91015183611b95565b3d9150611c88565b6040513d6000823e3d90fd5b935060106000528460002093856000955b838710611cef575050505091810160440191806040611b74565b80548688016044015295019486908201611cd5565b60ff191660448087019190915292151560051b8501909201945082915060409050611b74565b3461031a57604036600319011261031a57602090611d46611d76565b611d4e611d8c565b9060018060a01b03809116600052600384526040600020911660005282526040600020548152f35b600435906001600160a01b038216820361031a57565b602435906001600160a01b038216820361031a57565b60243590811515820361031a57565b60e090600319011261031a576001600160a01b0390600435828116810361031a5791602435908116810361031a5790604435906064359060843560ff8116810361031a579060a4359060c43590565b6009811015611e19576000526007602052604060002090565b634e487b7160e01b600052602160045260246000fd5b90600182811c92168015611e5f575b6020831014611e4957565b634e487b7160e01b600052602260045260246000fd5b91607f1691611e3e565b604081019081106001600160401b0382111761102d57604052565b61010081019081106001600160401b0382111761102d57604052565b608081019081106001600160401b0382111761102d57604052565b90601f801991011681019081106001600160401b0382111761102d57604052565b6020808252825181830181905290939260005b828110611f1157505060409293506000838284010152601f8019910116010190565b818101860151848201604001528501611eef565b15611f2c57565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b15611f7757565b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881b9bdd081d985b1a59607a1b6044820152606490fd5b8181029291811591840414171561064357565b8115611fcd570490565b634e487b7160e01b600052601260045260246000fd5b604d811161064357600a0a90565b9190820391821161064357565b9190820180921161064357565b8181039291600013801582851316918412161761064357565b60145491929161206d9161205e916120549161204a906001600160801b03831690611fb0565b9060801c90611fc3565b93601f5490611fb0565b61206783611fe3565b90611fc3565b808310612135576120816120bd9184611ff1565b916120b86120b26120a9601e546120a361209a86611fe3565b60205490611ffe565b90611fb0565b61206784611fe3565b91611fe3565b61200b565b6509184e72a0009081810291818305149015171561064357670de0b6b3a764000091828102928184051490151715610643578015611fcd57600160ff1b91808314600019831416610643570590600082121561212e57811461064357600003905b808211612129575090565b905090565b509061211e565b505050600090565b6001600160a01b0390811660008181526017602090815260408220549295949391929091811561227e5761216f612ad8565b9061217b861515612298565b6009541683600c54898752601882526064604088205491604051948593849263442c159960e01b8452600484015260248301528960448301525afa908115612273578591612240575b50928594926122206018936121fb612234996121f66121ed60409a620186a06022540490611fb0565b601e5490611fb0565b611fc3565b815190936001600160801b0391869161221691841690611fb0565b9201511690611fc3565b81811061223857035b9783525220546122e4565b9091565b505082612229565b90508381813d831161226c575b6122578183611ebb565b8101031261226857516122346121c4565b8480fd5b503d61224d565b6040513d87823e3d90fd5b5050509192505080918190565b5190811515820361031a57565b1561229f57565b60405162461bcd60e51b815260206004820152601e60248201527f4d61726b65743a2065786368616e676552617465206e6f742076616c696400006044820152606490fd5b6122ef821515612298565b602060018060a01b0360095416916064600c54604051948593849263442c159960e01b845260048401526024830152600060448301525afa908115611cb85760009161235c575b50906121f66123489260225490611fb0565b620186a0612358601e5483611fb0565b0491565b906020823d821161238a575b8161237560209383611ebb565b810103126123875750516121f6612336565b80fd5b3d9150612368565b6001600160a01b031660008181526018602052604081205490926123b5916122e4565b9183526017602052604083205480156124be5781156124be578181106124be57828110156124b4576014546123fe918391610ca89161204a906001600160801b03831690611fb0565b90620186a092838302928084048514901517156124a057612423929161206791611ff1565b91601b5491601c5493612436858561200b565b80820291848212600160ff1b8214166124a057818305149015171561248c57058184820194851291129080158216911516176124785750808212612129575090565b634e487b7160e01b81526011600452602490fd5b634e487b7160e01b83526011600452602483fd5b634e487b7160e01b85526011600452602485fd5b50505050601b5490565b50505090565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031614806125c5575b1561251f577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f000000000000000000000000000000000000000000000000000000000000000082527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a0815260c081018181106001600160401b0382111761102d5760405251902090565b507f000000000000000000000000000000000000000000000000000000000000000046146124f6565b156125f557565b60405162461bcd60e51b815260206004820152601660248201527545524332303a2062616c616e636520746f6f206c6f7760501b6044820152606490fd5b1561263a57565b60405162461bcd60e51b815260206004820152601660248201527545524332303a206e6f207a65726f206164647265737360501b6044820152606490fd5b51906001600160a01b038216820361031a57565b6005811015611e19578061269d5750565b600181036126e55760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b6044820152606490fd5b600281036127325760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606490fd5b60031461273b57565b60405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608490fd5b9291906fa2a8918ca85bafe22016d0b997e4df60600160ff1b0383116128045791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa156127f75781516001600160a01b038116156127f1579190565b50600190565b50604051903d90823e3d90fd5b50505050600090600390565b7fe50de2333c10a9502fcb1d8ae13a51bbf423153dfc63c2b8997665b32154afc360018060a01b038092169160009083825260036020526040822094169384825260205284604082205580a4565b909160207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259160018060a01b03809416938460005260028352604060002095169485600052825280604060002055604051908152a3565b60ff60265416612a33576014546001600160801b0316908115612a2c57600a54604051631848f2bf60e31b8152602093916001600160a01b03919085908290600490829086165afa8015611cb85785916000916129ef575b50600460405180948193631a674cc560e11b8352165afa938415611cb8576000946129bc575b505061294f9192670de0b6b3a764000092839160295490611fb0565b0490818110156129b357612966602a548092611ff1565b8381029080820485149015171561064357612067612987926129a794611ff1565b602754926129a16028549261299c8487611ff1565b611fb0565b04611ffe565b90808211612129575090565b50505060275490565b81813d83116129e8575b6129d08183611ebb565b810103126129e45751925061294f38612933565b8380fd5b503d6129c6565b909181813d8311612a25575b612a058183611ebb565b81010312612a215751908282168203612387575084903861290d565b5080fd5b503d6129fb565b6028549150565b600a5460405163e6abad4960e01b815290602090829060049082906001600160a01b03165afa908115611cb857600091612a6b575090565b906020823d8211612a91575b81612a8460209383611ebb565b8101031261238757505190565b3d9150612a77565b60405190612aa682611e69565b6014546001600160801b038116835260801c6020830152565b6001600160801b03918216908216019190821161064357565b60006020604051612ae881611e69565b82815201526001600160401b0390612b078260255460401c1642611ff1565b918215612b5e57612b5961299c91670de0b6b3a7640000612b4e612b29612a99565b9660018060801b03958694858a5116906301e13380612b466128b5565b041690611fb0565b041682855116612abf565b168252565b509050612b69612a99565b90565b604051612b7881611e69565b6025546001600160401b03908181168352818160401c16612ba0602085019180835242611ff1565b928315612c6557602094816301e13380612bb86128b5565b041681528142168352612bc9612a99565b670de0b6b3a7640000612bee60018060801b039761299c898551168787511690611fb0565b0495612bff81881682845116612abf565b1680825296015160801b6001600160801b031990811690961760145551915192909416931692831760409190911b67ffffffffffffffff60401b16176025557f7484db546dcd57af0104c73c8a6968dfbaf5767f047cee0dadd0499ad7df81a0600080a3565b505050505056feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae672a2646970667358221220feeb266066a1958799d1bb77fe20bcef60656c5564a85c34be2da035377678ae64736f6c63430008120033", + "deployedBytecode": "0x608080604052600436101561001357600080fd5b60003560e01c908162a02a2014611d2a5750806302ce728f14611b13578063078dfbe714611a0f578063095ea7b3146119e95780630c4e84f0146118cf5780630f8b29ea146118b157806318160ddd146118955780631c9e379b1461185b5780631d4d3a5d146118325780631da8bf10146117765780631fb8f81a1461175857806323b872dd146115b4578063331960ff1461159657806334ce998a1461156d57806334d441d01461154f5780633644e5151461153457806337b6b7b91461151657806338d52e0f146114ed5780633ba0b9a9146114cf5780633f741adb146114ab57806340626d8b1461148d57806344de240a1461146f578063473e3ce71461145157806348e4163e146114175780634e71e0c814611369578063529898f21461134c578063542afda31461132e57806357935462146113105780636b19ad16146112f25780636c3d8b8f146112c957806370a082311461128f578063727785471461125957806374645ff3146111c657806374c9e481146111a8578063790c84671461118a5780637dc0d1d0146111615780637ecebe00146111275780637fa0b84e146110f65780638285ef40146110c457806387b279371461108a5780638c5d0ed31461106c5780638da5cb5b14611043578063910dd7c814610e2a578063932bc4f814610d4c57806399a9702814610d255780639e15e89f14610ceb578063a9059cbb14610c04578063b0e21e8a14610be6578063b27c0e7414610bb5578063b7113f1914610b92578063bb4cfe3b14610b74578063bde39c5d14610b56578063c1ad5c8d14610b33578063ce8849ed14610b0a578063d3fb2a381461069e578063d505accf146104fe578063d8dfeb45146104d5578063da863f0e146104ac578063dd62ed3e1461045b578063de40657714610432578063e0996cb614610414578063e30c3978146103eb578063ea64dd56146103cd578063eec0f42e146103af578063ef2b234a1461033d578063f791395d1461031f5763f8ba4cff146102ff57600080fd5b3461031a57600036600319011261031a57610318612b6c565b005b600080fd5b3461031a57600036600319011261031a576020602854604051908152f35b3461031a57602036600319011261031a576004356001600160a01b038181169182900361031a5761037381600554163314611f25565b816021549182167ffb4fd7114609dd603b57adbc2082205bfbbcabf9265c4b437b472f5c592b8cd7600080a36001600160a01b03191617602155005b3461031a57600036600319011261031a576020600c54604051908152f35b3461031a57600036600319011261031a576020601f54604051908152f35b3461031a57600036600319011261031a576006546040516001600160a01b039091168152602090f35b3461031a57600036600319011261031a576020601d54604051908152f35b3461031a57600036600319011261031a576009546040516001600160a01b039091168152602090f35b3461031a57604036600319011261031a57610474611d76565b61047c611d8c565b9060018060a01b038091166000526002602052604060002091166000526020526020604060002054604051908152f35b3461031a57600036600319011261031a576021546040516001600160a01b039091168152602090f35b3461031a57600036600319011261031a57600b546040516001600160a01b039091168152602090f35b3461031a5761050c36611db1565b9183919395949542116106595760018060a01b03928388169485600052600460205260406000209283546000198114610643576105ef956105e7956001830190556040519060208201927f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e2668452600060408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e081526105ab81611e84565b5190206105b66124c4565b9060405190602082019261190160f01b845260228301526042820152604281526105df81611ea0565b51902061278b565b91909161268c565b16036105fe576103189261285e565b60405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152606490fd5b634e487b7160e01b600052601160045260246000fd5b60405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b3461031a5761016036600319011261031a576001600160a01b036004358181169081900361031a576024916001600160401b03833581811161031a573660238201121561031a57806004013591821161031a573685838301011161031a576044359383851680950361031a5761071984600554163314611f25565b80610acb575b508482610969575b50505081610928575b505060643580610910575b50608435806108f8575b5060a435806108e1575b5060c435806108bd575b5060e43580610899575b506101043580610867575b5061012435806107f4575b5061014435908161078657005b601e5482106107955750601f55005b60849060326040519162461bcd60e51b8352602060048401528201527f4d61726b65743a206c69717569646174696f6e436f6c6c61746572616c697a616044820152711d1a5bdb94985d19481d1bdbc81cdb585b1b60721b6064820152fd5b610803620186a0821115611f70565b601f54811161081557601e5581610779565b60405162461bcd60e51b8152602060048201526025818401527f4d61726b65743a20636f6c6c61746572616c697a6174696f6e5261746520746f6044820152646f2062696760d81b6064820152608490fd5b806016547fae6e0ab3b95f0a53ff9660a390ccedcbbf1f2355dce974a9841af106fddcfaba600080a36016558161076e565b6108a7620186a08210611f70565b6108b4601b548211611f70565b601c5581610763565b6108cb620186a08210611f70565b6108d8601c548210611f70565b601b5581610759565b6108ef620186a08210611f70565b601d558161074f565b610907620186a0821115611f70565b601a5581610745565b61091f620186a0821115611f70565b6019558161073b565b816008549182167f5a62d22209e370e38eea92cfddcd228e656e6ec139243392a760a7769f5877fd600080a36001600160a01b031916176008558180610730565b8291610976601054611e2f565b601f8111610a6a575b50600090601f84116001146109e7576000936109da575b5050508160011b916000199060031b1c1916176010555b7fa6f004921c944d4b8bf6e38462b00f36a58d62495d56b51f571ab78f732c9815600080a1838084610727565b0101359050848680610996565b60106000908152601f1985169550600080516020612c8d83398151915293509091889160205b878210610a4b5750508460019610610a2f575b50505050811b016010556109ad565b60001960f88660031b161c199201013516905585808681610a20565b8285019093013585556001949094019389929182019190810190610a0d565b60106000529092509050600080516020612c8d833981519152601f840160051c810160208510610ac4575b91849391601f8994920160051c01905b818110610ab2575061097f565b60008155859450889350600101610aa5565b5080610a95565b600f80546001600160a01b0319169190911790557f0b2d6eb667d0522c3eb86e4288afecae6c11591ffd1345d4d12407e0598bca9b600080a18561071f565b3461031a57600036600319011261031a576008546040516001600160a01b039091168152602090f35b3461031a57600036600319011261031a576020610b4e6128b5565b604051908152f35b3461031a57600036600319011261031a576020602954604051908152f35b3461031a57600036600319011261031a576020601e54604051908152f35b3461031a57600036600319011261031a57602060ff602654166040519015158152f35b3461031a57600036600319011261031a5760406025548151906001600160401b03908181168352831c166020820152f35b3461031a57600036600319011261031a576020601a54604051908152f35b3461031a57604036600319011261031a57610c1d611d76565b602435908115801590610cd9575b610c61575b6040519182526001600160a01b0316903390600080516020612c6d83398151915290602090a3602060405160018152f35b336000526001602052604060002054610c7c838210156125ee565b6001600160a01b038216908333839003610c99575b505050610c30565b610cad91610ca8841515612633565b611ff1565b3360005260016020526040600020556000526040600020610ccf838254611ffe565b9055828083610c91565b50336001600160a01b03821614610c2b565b3461031a57604036600319011261031a576060610d12610d09611d76565b6024359061213d565b9060405192835260208301526040820152f35b3461031a57604036600319011261031a576020610b4e610d43611d76565b60243590612392565b3461031a57600036600319011261031a57604051600090602c54610d6f81611e2f565b808352600191808316908115610e025750600114610da8575b610da483610d9881870382611ebb565b60405191829182611edc565b0390f35b602c600090815260209450917f7416c943b4a09859521022fd2e90eac0dd9026dad28fa317782a135f28a860915b828410610def57505050810190910190610d9881610d88565b8054858501870152928501928101610dd6565b610da49550610d9893506020915091849260ff191682840152151560051b8201019350610d88565b3461031a57604036600319011261031a576001600160401b0360043581811161031a573660238201121561031a57806004013591821161102d5760405191610e7c601f8201601f191660200184611ebb565b8083526020830191366024838301011161031a57816000926024602093018537840101526024359161ffff8316830361031a5761010091828280518101031261031a57610ec89061228b565b610ed460408301612678565b91610ee160608201612678565b9460808201519460a08301519260c08101519160ff8316830361031a5760e082015191015191844211610659578515611007577f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e2665b6001600160a01b0388166000908152600460205260409020805490969060001981146106435761ffff6105e797610fc49960018401905560405194602086015216604084015260018060a01b038a16606084015260018060a01b038c1660808401528a60a084015260c083015260e082015260e08152610fb581611e84565b602081519101206105b66124c4565b6001600160a01b038381169116036105fe5715610ff157610318926001600160a01b03908116911661285e565b610318926001600160a01b039081169116612810565b7f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d6610f36565b634e487b7160e01b600052604160045260246000fd5b3461031a57600036600319011261031a576005546040516001600160a01b039091168152602090f35b3461031a57600036600319011261031a576020601b54604051908152f35b3461031a57602036600319011261031a576001600160a01b036110ab611d76565b1660005260246020526020604060002054604051908152f35b3461031a57600036600319011261031a57601454604080516001600160801b038316815260809290921c602083015290f35b3461031a57604036600319011261031a5761111c611112611d76565b6024359033612810565b602060405160018152f35b3461031a57602036600319011261031a576001600160a01b03611148611d76565b1660005260046020526020604060002054604051908152f35b3461031a57600036600319011261031a57600f546040516001600160a01b039091168152602090f35b3461031a57600036600319011261031a576020603054604051908152f35b3461031a57600036600319011261031a576020602e54604051908152f35b3461031a57600036600319011261031a576040516000906010546111e981611e2f565b808352600191808316908115610e02575060011461121157610da483610d9881870382611ebb565b601060009081526020945091600080516020612c8d8339815191525b82841061124657505050810190910190610d9881610d88565b805485850187015292850192810161122d565b3461031a57602036600319011261031a57600435600981101561031a5760ff611283602092611e00565b54166040519015158152f35b3461031a57602036600319011261031a576001600160a01b036112b0611d76565b1660005260016020526020604060002054604051908152f35b3461031a57600036600319011261031a57600a546040516001600160a01b039091168152602090f35b3461031a57600036600319011261031a576020602754604051908152f35b3461031a57600036600319011261031a576020601c54604051908152f35b3461031a57600036600319011261031a576020602d54604051908152f35b3461031a57600036600319011261031a5760208054604051908152f35b3461031a57600036600319011261031a576006546001600160a01b0390818116338190036113d357806005549384167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a36001600160a01b03199283161760055516600655005b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b3461031a57602036600319011261031a576001600160a01b03611438611d76565b1660005260176020526020604060002054604051908152f35b3461031a57600036600319011261031a576020601554604051908152f35b3461031a57600036600319011261031a576020600e54604051908152f35b3461031a57600036600319011261031a576020601654604051908152f35b3461031a57606036600319011261031a576020610b4e604435602435600435612024565b3461031a57600036600319011261031a576020601154604051908152f35b3461031a57600036600319011261031a57600d546040516001600160a01b039091168152602090f35b3461031a57600036600319011261031a576020601254604051908152f35b3461031a57600036600319011261031a576020610b4e6124c4565b3461031a57600036600319011261031a576020601954604051908152f35b3461031a57600036600319011261031a576014546040516001600160801b039091168152602090f35b3461031a57600036600319011261031a576020601354604051908152f35b3461031a57606036600319011261031a576115cd611d76565b6115d5611d8c565b6044359081611612575b6040519182526001600160a01b03908116921690600080516020612c6d83398151915290602090a3602060405160018152f35b60018060a01b0380841680600052602060018152846040600020549361163a828610156125ee565b85169384840361164f575b50505050506115df565b8360005260028352604060002033600052835260406000205460001981036116c3575b50849261169a600080516020612c6d833981519152979593600193610ca86020991515612633565b926000525260406000205560005260406000206116b8858254611ffe565b905591858481611645565b90918110611718576020949261169a88600080516020612c6d8339815191529896946116f182600196611ff1565b86600052600285526040600020336000528552604060002055935093959750509294611672565b60405162461bcd60e51b815260048101849052601860248201527745524332303a20616c6c6f77616e636520746f6f206c6f7760401b6044820152606490fd5b3461031a57600036600319011261031a576020602a54604051908152f35b3461031a5761178436611db1565b9183919395949542116106595760018060a01b0392838816948560005260046020526040600020928354600019811461064357611823956105e7956001830190556040519060208201927f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d68452600060408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e081526105ab81611e84565b16036105fe5761031892612810565b3461031a57600036600319011261031a57602b546040516001600160a01b039091168152602090f35b3461031a57602036600319011261031a576001600160a01b0361187c611d76565b1660005260186020526020604060002054604051908152f35b3461031a57600036600319011261031a57602060405160008152f35b3461031a57600036600319011261031a576020602f54604051908152f35b3461031a57604036600319011261031a57600435600981101561031a576118f4611da2565b6008549091906001600160a01b031633036119ad5760ff61191482611e00565b5416151591151591821461197357808260ff61193261196194611e00565b54161515827feeec81de25875ce1725479bb76f720a8defdb43dea041919ae37bb4aae9847c0600080a4611e00565b9060ff80198354169116179055600080f35b60405162461bcd60e51b81526020600482015260126024820152714d61726b65743a2073616d6520737461746560701b6044820152606490fd5b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881d5b985d5d1a1bdc9a5e995960621b6044820152606490fd5b3461031a57604036600319011261031a5761111c611a05611d76565b602435903361285e565b3461031a57606036600319011261031a57611a28611d76565b611a30611da2565b60443590811515820361031a5760018060a01b03928391611a5683600554163314611f25565b15611afa571690811590811591611af2575b5015611ab557806005549283167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a36001600160a01b031991821617600555600680549091169055005b60405162461bcd60e51b81526020600482015260156024820152744f776e61626c653a207a65726f206164647265737360581b6044820152606490fd5b905083611a68565b9150501660018060a01b03196006541617600655600080f35b3461031a57600036600319011261031a5760018060a01b03600f54166040519063d6d7d52560e01b8252602091826004820152600091601054611b5581611e2f565b908160248501526001908181169081600014611d045750600114611cc4575b50509060409181600081809603925af18015611cb857600091600091611c79575b508115611c1c578015611be05760409281601155817f9f9192b5edb17356c524e08d9e025c8e2f6307e6ea52fb7968faa3081f51c3c8600080a25b4260135583519215158352820152f35b60405162461bcd60e51b81526004810184905260146024820152734d61726b65743a20696e76616c6964207261746560601b6044820152606490fd5b50611c2c60135460125490611ffe565b4211611c3d57601154604092611bd0565b60405162461bcd60e51b815260048101839052601460248201527313585c9ad95d0e881c985d19481d1bdbc81bdb1960621b6044820152606490fd5b9150506040813d604011611cb0575b81611c9560409383611ebb565b8101031261031a5781611ca78261228b565b91015183611b95565b3d9150611c88565b6040513d6000823e3d90fd5b935060106000528460002093856000955b838710611cef575050505091810160440191806040611b74565b80548688016044015295019486908201611cd5565b60ff191660448087019190915292151560051b8501909201945082915060409050611b74565b3461031a57604036600319011261031a57602090611d46611d76565b611d4e611d8c565b9060018060a01b03809116600052600384526040600020911660005282526040600020548152f35b600435906001600160a01b038216820361031a57565b602435906001600160a01b038216820361031a57565b60243590811515820361031a57565b60e090600319011261031a576001600160a01b0390600435828116810361031a5791602435908116810361031a5790604435906064359060843560ff8116810361031a579060a4359060c43590565b6009811015611e19576000526007602052604060002090565b634e487b7160e01b600052602160045260246000fd5b90600182811c92168015611e5f575b6020831014611e4957565b634e487b7160e01b600052602260045260246000fd5b91607f1691611e3e565b604081019081106001600160401b0382111761102d57604052565b61010081019081106001600160401b0382111761102d57604052565b608081019081106001600160401b0382111761102d57604052565b90601f801991011681019081106001600160401b0382111761102d57604052565b6020808252825181830181905290939260005b828110611f1157505060409293506000838284010152601f8019910116010190565b818101860151848201604001528501611eef565b15611f2c57565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b15611f7757565b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881b9bdd081d985b1a59607a1b6044820152606490fd5b8181029291811591840414171561064357565b8115611fcd570490565b634e487b7160e01b600052601260045260246000fd5b604d811161064357600a0a90565b9190820391821161064357565b9190820180921161064357565b8181039291600013801582851316918412161761064357565b60145491929161206d9161205e916120549161204a906001600160801b03831690611fb0565b9060801c90611fc3565b93601f5490611fb0565b61206783611fe3565b90611fc3565b808310612135576120816120bd9184611ff1565b916120b86120b26120a9601e546120a361209a86611fe3565b60205490611ffe565b90611fb0565b61206784611fe3565b91611fe3565b61200b565b6509184e72a0009081810291818305149015171561064357670de0b6b3a764000091828102928184051490151715610643578015611fcd57600160ff1b91808314600019831416610643570590600082121561212e57811461064357600003905b808211612129575090565b905090565b509061211e565b505050600090565b6001600160a01b0390811660008181526017602090815260408220549295949391929091811561227e5761216f612ad8565b9061217b861515612298565b6009541683600c54898752601882526064604088205491604051948593849263442c159960e01b8452600484015260248301528960448301525afa908115612273578591612240575b50928594926122206018936121fb612234996121f66121ed60409a620186a06022540490611fb0565b601e5490611fb0565b611fc3565b815190936001600160801b0391869161221691841690611fb0565b9201511690611fc3565b81811061223857035b9783525220546122e4565b9091565b505082612229565b90508381813d831161226c575b6122578183611ebb565b8101031261226857516122346121c4565b8480fd5b503d61224d565b6040513d87823e3d90fd5b5050509192505080918190565b5190811515820361031a57565b1561229f57565b60405162461bcd60e51b815260206004820152601e60248201527f4d61726b65743a2065786368616e676552617465206e6f742076616c696400006044820152606490fd5b6122ef821515612298565b602060018060a01b0360095416916064600c54604051948593849263442c159960e01b845260048401526024830152600060448301525afa908115611cb85760009161235c575b50906121f66123489260225490611fb0565b620186a0612358601e5483611fb0565b0491565b906020823d821161238a575b8161237560209383611ebb565b810103126123875750516121f6612336565b80fd5b3d9150612368565b6001600160a01b031660008181526018602052604081205490926123b5916122e4565b9183526017602052604083205480156124be5781156124be578181106124be57828110156124b4576014546123fe918391610ca89161204a906001600160801b03831690611fb0565b90620186a092838302928084048514901517156124a057612423929161206791611ff1565b91601b5491601c5493612436858561200b565b80820291848212600160ff1b8214166124a057818305149015171561248c57058184820194851291129080158216911516176124785750808212612129575090565b634e487b7160e01b81526011600452602490fd5b634e487b7160e01b83526011600452602483fd5b634e487b7160e01b85526011600452602485fd5b50505050601b5490565b50505090565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031614806125c5575b1561251f577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f000000000000000000000000000000000000000000000000000000000000000082527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a0815260c081018181106001600160401b0382111761102d5760405251902090565b507f000000000000000000000000000000000000000000000000000000000000000046146124f6565b156125f557565b60405162461bcd60e51b815260206004820152601660248201527545524332303a2062616c616e636520746f6f206c6f7760501b6044820152606490fd5b1561263a57565b60405162461bcd60e51b815260206004820152601660248201527545524332303a206e6f207a65726f206164647265737360501b6044820152606490fd5b51906001600160a01b038216820361031a57565b6005811015611e19578061269d5750565b600181036126e55760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b6044820152606490fd5b600281036127325760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606490fd5b60031461273b57565b60405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608490fd5b9291906fa2a8918ca85bafe22016d0b997e4df60600160ff1b0383116128045791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa156127f75781516001600160a01b038116156127f1579190565b50600190565b50604051903d90823e3d90fd5b50505050600090600390565b7fe50de2333c10a9502fcb1d8ae13a51bbf423153dfc63c2b8997665b32154afc360018060a01b038092169160009083825260036020526040822094169384825260205284604082205580a4565b909160207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259160018060a01b03809416938460005260028352604060002095169485600052825280604060002055604051908152a3565b60ff60265416612a33576014546001600160801b0316908115612a2c57600a54604051631848f2bf60e31b8152602093916001600160a01b03919085908290600490829086165afa8015611cb85785916000916129ef575b50600460405180948193631a674cc560e11b8352165afa938415611cb8576000946129bc575b505061294f9192670de0b6b3a764000092839160295490611fb0565b0490818110156129b357612966602a548092611ff1565b8381029080820485149015171561064357612067612987926129a794611ff1565b602754926129a16028549261299c8487611ff1565b611fb0565b04611ffe565b90808211612129575090565b50505060275490565b81813d83116129e8575b6129d08183611ebb565b810103126129e45751925061294f38612933565b8380fd5b503d6129c6565b909181813d8311612a25575b612a058183611ebb565b81010312612a215751908282168203612387575084903861290d565b5080fd5b503d6129fb565b6028549150565b600a5460405163e6abad4960e01b815290602090829060049082906001600160a01b03165afa908115611cb857600091612a6b575090565b906020823d8211612a91575b81612a8460209383611ebb565b8101031261238757505190565b3d9150612a77565b60405190612aa682611e69565b6014546001600160801b038116835260801c6020830152565b6001600160801b03918216908216019190821161064357565b60006020604051612ae881611e69565b82815201526001600160401b0390612b078260255460401c1642611ff1565b918215612b5e57612b5961299c91670de0b6b3a7640000612b4e612b29612a99565b9660018060801b03958694858a5116906301e13380612b466128b5565b041690611fb0565b041682855116612abf565b168252565b509050612b69612a99565b90565b604051612b7881611e69565b6025546001600160401b03908181168352818160401c16612ba0602085019180835242611ff1565b928315612c6557602094816301e13380612bb86128b5565b041681528142168352612bc9612a99565b670de0b6b3a7640000612bee60018060801b039761299c898551168787511690611fb0565b0495612bff81881682845116612abf565b1680825296015160801b6001600160801b031990811690961760145551915192909416931692831760409190911b67ffffffffffffffff60401b16176025557f7484db546dcd57af0104c73c8a6968dfbaf5767f047cee0dadd0499ad7df81a0600080a3565b505050505056feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae672a2646970667358221220feeb266066a1958799d1bb77fe20bcef60656c5564a85c34be2da035377678ae64736f6c63430008120033", "linkReferences": {}, "deployedLinkReferences": {} } diff --git a/src/artifacts/tapioca-bar/BBLeverage.json b/src/artifacts/tapioca-bar/BBLeverage.json index 397ab49f..1c4f6918 100644 --- a/src/artifacts/tapioca-bar/BBLeverage.json +++ b/src/artifacts/tapioca-bar/BBLeverage.json @@ -65,13 +65,13 @@ { "indexed": true, "internalType": "address", - "name": "_oldVal", + "name": "oldVal", "type": "address" }, { "indexed": true, "internalType": "address", - "name": "_newVal", + "name": "newVal", "type": "address" } ], @@ -135,6 +135,25 @@ "name": "ExchangeRateDurationUpdated", "type": "event" }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "oldVal", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newVal", + "type": "address" + } + ], + "name": "LeverageExecutorSet", + "type": "event" + }, { "anonymous": false, "inputs": [ @@ -516,6 +535,37 @@ "name": "UpdateMinMaxMintFee", "type": "event" }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint256", + "name": "oldMin", + "type": "uint256" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "newMin", + "type": "uint256" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "oldMax", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "newMax", + "type": "uint256" + } + ], + "name": "UpdateMinMaxMintRange", + "type": "event" + }, { "inputs": [], "name": "DOMAIN_SEPARATOR", @@ -738,19 +788,9 @@ "name": "supplyAmount", "type": "uint256" }, - { - "internalType": "uint256", - "name": "minAmountOut", - "type": "uint256" - }, - { - "internalType": "contract ISwapper", - "name": "swapper", - "type": "address" - }, { "internalType": "bytes", - "name": "dexData", + "name": "data", "type": "bytes" } ], @@ -1002,6 +1042,19 @@ "stateMutability": "view", "type": "function" }, + { + "inputs": [], + "name": "leverageExecutor", + "outputs": [ + { + "internalType": "contract ILeverageExecutor", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, { "inputs": [], "name": "liquidationBonusAmount", @@ -1080,6 +1133,19 @@ "stateMutability": "view", "type": "function" }, + { + "inputs": [], + "name": "maxMintFeeStart", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, { "inputs": [], "name": "minDebtRate", @@ -1119,6 +1185,19 @@ "stateMutability": "view", "type": "function" }, + { + "inputs": [], + "name": "minMintFeeStart", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, { "inputs": [ { @@ -1396,19 +1475,9 @@ "name": "share", "type": "uint256" }, - { - "internalType": "uint256", - "name": "minAmountOut", - "type": "uint256" - }, - { - "internalType": "contract ISwapper", - "name": "swapper", - "type": "address" - }, { "internalType": "bytes", - "name": "dexData", + "name": "data", "type": "bytes" } ], @@ -1423,6 +1492,19 @@ "stateMutability": "nonpayable", "type": "function" }, + { + "inputs": [ + { + "internalType": "contract ILeverageExecutor", + "name": "_executor", + "type": "address" + } + ], + "name": "setLeverageExecutor", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, { "inputs": [ { @@ -1707,8 +1789,8 @@ "type": "function" } ], - "bytecode": "0x61014080604052346200018a5762000017816200018f565b600f81526001602082016e546170696f63612042696742616e6760881b8152602060405162000046816200018f565b8381520192603160f81b845251902091208160e052610100918183524660a0526040519160208301907f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f92838352604085015260608401524660808401523060a084015260a0835260c083019280841060018060401b03851117620001745760408490525190206080523060c052610120908152600580546001600160a01b0319163390811790915560007f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a362013880601b5562015f90601c55612710601d55612ee06020556103e8602d556145bd9283620001ac8439608051836131bd015260a05183613288015260c05183613187015260e0518361320c01525182613232015251816131e90152f35b634e487b7160e01b600052604160045260246000fd5b600080fd5b604081019081106001600160401b03821117620001745760405256fe608080604052600436101561001357600080fd5b60009060e08235811c918262a02a201461275d5750816302ce728f14612734578163078dfbe714612631578163095ea7b31461260a5781630c4e84f0146124f257816318160ddd146124d65781631c9e379b1461249d5781631d4d3a5d146124745781631da8bf10146123be5781631ee9c8f214611b355781631fb8f81a14611b1757816323b872dd14611974578163331960ff1461195657816334ce998a1461192d57816334d441d01461190f5781633644e515146118f457816337b6b7b9146118d657816338d52e0f146118ad5781633ba0b9a91461188f5781633f741adb1461186a57816340626d8b1461184c57816344de240a1461182e578163473e3ce71461181057816348e4163e146117d75781634e71e0c814611729578163529898f21461170c578163542afda3146116ee57816357935462146116d057816358db9afe146112825781636b19ad16146112645781636c3d8b8f1461123b57816370a082311461120257816372778547146111ca57816374645ff31461113757816374c9e481146111195781637dc0d1d0146110f05781637ecebe00146110b75781637fa0b84e146110855781638285ef401461105357816387b279371461101a5781638c5d0ed314610ffc5781638da5cb5b14610fd3578163910dd7c814610d53578163932bc4f814610c7557816399a9702814610c4d5781639e15e89f14610c12578163a9059cbb14610b2f578163b0e21e8a14610b11578163b27c0e7414610ae0578163b7113f1914610abd578163bb4cfe3b14610a9f578163bde39c5d14610a81578163c1ad5c8d14610a5e578163ce8849ed14610a35578163d3fb2a38146105d8578163d505accf1461044d57508063d8dfeb4514610424578063dd62ed3e146103d5578063de406577146103ac578063e0996cb61461038e578063e30c397814610365578063ea64dd5614610347578063eec0f42e14610329578063f791395d1461030b5763f8ba4cff146102ed57600080fd5b34610308578060031936011261030857610305613830565b80f35b80fd5b50346103085780600319360112610308576020602754604051908152f35b50346103085780600319360112610308576020600c54604051908152f35b50346103085780600319360112610308576020601f54604051908152f35b50346103085780600319360112610308576006546040516001600160a01b039091168152602090f35b50346103085780600319360112610308576020601d54604051908152f35b50346103085780600319360112610308576009546040516001600160a01b039091168152602090f35b5034610308576040366003190112610308576103ef6127a5565b60406103f96127bb565b9260018060a01b03809316815260026020522091166000526020526020604060002054604051908152f35b5034610308578060031936011261030857600b546040516001600160a01b039091168152602090f35b9050346105d45761045d366127e0565b8394969793929192421161058f5761053b926105339260018060a01b0395868b169788600052600460205260406000209182549261049a846134d1565b90556040519160208301937f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e2668552600060408501528b60608501528a8d1660808501528d60a085015260c08401528183015281526104f781612924565b519020610502613184565b9060405190602082019261190160f01b8452602283015260428201526042815261052b81612909565b519020613459565b91909161335a565b160361054a576103059261352e565b60405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152606490fd5b60405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b5080fd5b823461030857610160366003190112610308576001600160a01b0390600435828116908190036105d4576001600160401b0392602435848111610a315761062390369060040161282f565b909460443593838516809503610a2c57610642846005541633146129c5565b806109ee575b5081610895575b50509080929350610855575b50506064358061083d575b5060843580610825575b5060a4358061080e575b5060c435806107ea575b5060e435806107c6575b506101043580610795575b506101243580610721575b5061014435806106b2575080f35b601e5481106106c157601f5580f35b60405162461bcd60e51b815260206004820152603260248201527f4d61726b65743a206c69717569646174696f6e436f6c6c61746572616c697a616044820152711d1a5bdb94985d19481d1bdbc81cdb585b1b60721b6064820152608490fd5b610730620186a0821115612a10565b601f54811161074257601e55816106a4565b60405162461bcd60e51b815260206004820152602560248201527f4d61726b65743a20636f6c6c61746572616c697a6174696f6e5261746520746f6044820152646f2062696760d81b6064820152608490fd5b806016547fae6e0ab3b95f0a53ff9660a390ccedcbbf1f2355dce974a9841af106fddcfaba8480a360165581610699565b6107d4620186a08210612a10565b6107e1601b548211612a10565b601c558161068e565b6107f8620186a08210612a10565b610805601c548210612a10565b601b5581610684565b61081c620186a08210612a10565b601d558161067a565b610834620186a0821115612a10565b601a5581610670565b61084c620186a0821115612a10565b60195581610666565b816008549182167f5a62d22209e370e38eea92cfddcd228e656e6ec139243392a760a7769f5877fd8580a36001600160a01b03191617600855818061065b565b81116109da576108a660105461288b565b601f811161098b575b5083601f8211600114610917578495829394959261090c575b50508160011b916000199060031b1c1916176010555b7fa6f004921c944d4b8bf6e38462b00f36a58d62495d56b51f571ab78f732c98158380a1908291848061064f565b0135905085806108c8565b60108552601f19821695600080516020614568833981519152918660205b8982106109735750508360019596979810610959575b505050811b016010556108de565b0135600019600384901b60f8161c1916905585808061094b565b80600184968294958701358155019501920190610935565b60108552600080516020614568833981519152601f830160051c8101602084106109d3575b601f90920160051c01905b8181106109c857506108af565b8581556001016109bb565b50806109b0565b634e487b7160e01b84526041600452602484fd5b600f80546001600160a01b0319169190911790557f0b2d6eb667d0522c3eb86e4288afecae6c11591ffd1345d4d12407e0598bca9b8580a186610648565b600080fd5b8380fd5b82346103085780600319360112610308576008546040516001600160a01b039091168152602090f35b82346103085780600319360112610308576020610a79613585565b604051908152f35b82346103085780600319360112610308576020602854604051908152f35b82346103085780600319360112610308576020601e54604051908152f35b8234610308578060031936011261030857602060ff602554166040519015158152f35b823461030857806003193601126103085760406024548151906001600160401b03908181168352831c166020820152f35b82346103085780600319360112610308576020601a54604051908152f35b823461030857604036600319011261030857610b496127a5565b60243580928115801590610c00575b610b90575b50506040519182526001600160a01b031690339060008051602061454883398151915290602090a3602060405160018152f35b33815260016020526040812054610ba9838210156132ae565b6001600160a01b0384169033829003610bc4575b5050610b5d565b604093610bdb91610bd68415156132f3565b612aa7565b338352600160205283832055815220610bf5838254612ab4565b905581838080610bbd565b50336001600160a01b03841614610b58565b8234610308576040366003190112610308576060610c3a610c316127a5565b60243590612bf3565b9060405192835260208301526040820152f35b8234610308576040366003190112610308576020610a79610c6c6127a5565b60243590613052565b8234610308578060031936011261030857604051600090602b54610c988161288b565b808352600191808316908115610d2b5750600114610cd1575b610ccd83610cc181870382612940565b60405191829182612961565b0390f35b602b600090815260209450917f11c44e4875b74d31ff9fd779bf2566af7bd15b87fc985d01f5094b89e3669e4f5b828410610d1857505050810190910190610cc181610cb1565b8054858501870152928501928101610cff565b610ccd9550610cc193506020915091849260ff191682840152151560051b8201019350610cb1565b9050346105d45760403660031901126105d4576004356001600160401b038111610fcf5736602382011215610fcf57806004013590610d91826129aa565b92610d9f6040519485612940565b82845284602092838601943660248284010111610fcf578060248693018737860101526024359161ffff8316809303610fcb57610100938486805181010312610fc757610deb90612d32565b91610df860408701613338565b90610e0560608801613338565b9660808101519660a082015192610e1e60c0840161334c565b91818401519301519360018060a01b03808097169b1698814211610f82579289888d989794610ef99794610533978f8e600014610f5b577f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e266955b8d60005260048652604060002092835493610e92856134d1565b905560405196870197885260408701528d6060870152608086015260a085015260c0840152818301528152610ec681612924565b519020610ed1613184565b90604051908a82019261190160f01b8452602283015260428201526042815261052b81612909565b1603610f17575015610f0e576103059261352e565b610305926134e0565b6064906040519062461bcd60e51b82526004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152fd5b7f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d695610e78565b60405162461bcd60e51b815260048101899052601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b8680fd5b8580fd5b8280fd5b82346103085780600319360112610308576005546040516001600160a01b039091168152602090f35b82346103085780600319360112610308576020601b54604051908152f35b8234610308576020366003190112610308576020906040906001600160a01b036110426127a5565b168152602383522054604051908152f35b8234610308578060031936011261030857601454604080516001600160801b038316815260809290921c602083015290f35b8234610308576040366003190112610308576110ac6110a26127a5565b60243590336134e0565b602060405160018152f35b8234610308576020366003190112610308576020906040906001600160a01b036110df6127a5565b168152600483522054604051908152f35b8234610308578060031936011261030857600f546040516001600160a01b039091168152602090f35b82346103085780600319360112610308576020602d54604051908152f35b823461030857806003193601126103085760405160009060105461115a8161288b565b808352600191808316908115610d2b575060011461118257610ccd83610cc181870382612940565b6010600090815260209450916000805160206145688339815191525b8284106111b757505050810190910190610cc181610cb1565b805485850187015292850192810161119e565b82346103085760203660031901126103085760043590600982101561030857602060ff6111f68461285c565b54166040519015158152f35b8234610308576020366003190112610308576020906040906001600160a01b0361122a6127a5565b168152600183522054604051908152f35b8234610308578060031936011261030857600a546040516001600160a01b039091168152602090f35b82346103085780600319360112610308576020602654604051908152f35b82346103085760a03660031901126103085761129c6127a5565b606435916001600160a01b0383168303610a2c576084356001600160401b0381116105d4576112cf90369060040161282f565b92906006600052602094600786526112ef60ff6040600020541615613930565b6112f7612df7565b5050611301613830565b6113166001600160a01b0384163014156139ad565b600a5460405163433e762d60e01b8152908790829060049082906001600160a01b03165afa90811561168457611367916113629187916116a3575b506001600160a01b03841690613b74565b613a12565b61137360243584613e4c565b6001600160a01b0383168452601886526040842080546113969060243590612aa7565b90556113a6602435601554612aa7565b6015556040516024356001600160a01b038381169086167f8ad4d3ff00da092c7ad9a573ea4f5f6a3dffc6712dc06d3f78f49b862297c4028880a460018060a01b0360095416600c54813b15610fc757630208d92960e11b83528691839182908490829061142690602435906001600160a01b038b163060048601613a59565b03925af180156116845790859161168f575b5050600c54600e54604051633d9545e960e11b815260048101929092526024808301919091526000604483015235606482015260016084820181905260a48201526101408160c4816001600160a01b0386165afa9081156116845785604094939286928291611653575b506114c68651998a968795869463efa84c6d60e01b86526044359060048701613d61565b03926001600160a01b03165af1918215611610578093819361161c575b506114f2604435851015613e0a565b6001600160a01b0382168152601785526040812054906115198261151461375d565b6140a5565b8660018060a01b0360095416916064600e546040519485938492638eb22cdd60e01b845260048401526024830152600160448301525afa91821561161057916115db575b50610a79936115839392911161158857611578908280614103565b505b60115490613a83565b61396d565b5061159161375d565b80516001600160801b039081166115b65750506115b0845b8280614103565b5061157a565b81816115cd6115d6938a6115b09601511689612a50565b91511690612a79565b6115a9565b929190508583813d8311611609575b6115f48183612940565b81010312610a2c579151909190610a7961155d565b503d6115ea565b604051903d90823e3d90fd5b90925061164291935060403d60401161164c575b61163a8183612940565b810190613d4b565b92909291856114e3565b503d611630565b61167791506101403d6101401161167d575b61166f8183612940565b810190613c61565b8a6114a2565b503d611665565b6040513d87823e3d90fd5b611698906128c5565b610a31578387611438565b6116c39150893d8b116116c9575b6116bb8183612940565b8101906139f8565b89611351565b503d6116b1565b82346103085780600319360112610308576020601c54604051908152f35b82346103085780600319360112610308576020602c54604051908152f35b823461030857806003193601126103085760208054604051908152f35b82346103085780600319360112610308576006546001600160a01b03908181163381900361179357806005549384167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08680a36001600160a01b0319928316176005551660065580f35b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b8234610308576020366003190112610308576020906040906001600160a01b036117ff6127a5565b168152601783522054604051908152f35b82346103085780600319360112610308576020601554604051908152f35b82346103085780600319360112610308576020600e54604051908152f35b82346103085780600319360112610308576020601654604051908152f35b8234610308576060366003190112610308576020610a79604435602435600435612ada565b82346103085780600319360112610308576020601154604051908152f35b8234610308578060031936011261030857600d546040516001600160a01b039091168152602090f35b82346103085780600319360112610308576020601254604051908152f35b82346103085780600319360112610308576020610a79613184565b82346103085780600319360112610308576020601954604051908152f35b82346103085780600319360112610308576014546040516001600160801b039091168152602090f35b82346103085780600319360112610308576020601354604051908152f35b82346103085760603660031901126103085761198e6127a5565b906119976127bb565b60443591826119d5575b506040519182526001600160a01b0390811692169060008051602061454883398151915290602090a3602060405160018152f35b6001600160a01b038481168083526001602090815260408420549286906119fe828610156132ae565b861693848403611a13575b50505050506119a1565b83865260028352604086203360005283526040600020546000198103611a81575b5092600160209693611a5f8794604097610bd66000805160206145488339815191529c9a15156132f3565b9285525283832055815220611a75858254612ab4565b90559185808581611a09565b90918110611ad75792600160209693611a5f8a6000805160206145488339815191529a9895611ab28260409a612aa7565b8689526002855289892033600052855289600020559497509497995050939650611a34565b60405162461bcd60e51b815260048101849052601860248201527745524332303a20616c6c6f77616e636520746f6f206c6f7760401b6044820152606490fd5b82346103085780600319360112610308576020602954604051908152f35b82346103085760c036600319011261030857611b4f6127a5565b608435906001600160a01b0382168203610fcf5760a4356001600160401b038111610a3157611b8290369060040161282f565b9290600585526007602052611b9e60ff60408720541615613930565b611ba6612df7565b5050611bb0613830565b611bc56001600160a01b0384163014156139ad565b600a5460405163433e762d60e01b815290602090829060049082906001600160a01b03165afa9081156121ca57611c129161136291889161239f575b506001600160a01b03851690613b74565b600954600e54604051638eb22cdd60e01b81526004810182905260448035602483015260019082015293916001600160a01b0316908790602086606481865afa958615612394578296612360575b50856122f5575b505050611c75602435613f32565b9260018060a01b0382168752602360205260408720611c95858254612ab4565b9055611c9f61375d565b93611cac81602435612ab4565b9460006020604051611cbd816128ee565b828152015280516001600160801b039081166122995780611ce481895b1682855116613783565b168252806020830192611cfc828a1683865116613783565b9382851690525116918a6014549160801b9116928b60018060801b03199182841681871717601455601654948515968715612283575b505050505050501561223e57879460018060a01b0387168652601760205260408620611d5f828254612ab4565b9055604080519283526020830191909152602435916001600160a01b0385811692908916917f3a5151e57d3bc9798e7853034ac52293d1a0e12a2b44725e75b03b21f86477a69190a4600d546001600160a01b0316803b1561223a576040516340c10f1960e01b815230600482015260248035908201529085908290604490829084905af1908115611684578591612226575b5050600d54600e5460095460405163095ea7b360e01b8082526001600160a01b0392831660048301526024820189905291909316926020816044818b885af1801561221b576121d5575b506009546040519182526001600160a01b031660048201526024803590820152916020908390818981604481015b03925af19182156121ca578692612187575b5060095460408051634d4d7cbd60e11b815297909288926001600160a01b0390811692849290918391611ebc9160243591908c1690309060048601613f03565b03925af1801561215957611f27958291612166575b50611ee2600e5491600c5494612ab4565b60405180978192633d9545e960e11b83526101409687956004850160a091949360019360c0830196835260208301526000604083015260608201528260808201520152565b03816001600160a01b0387165afa8015612159576040958793839261213c575b5050611f6c86519889968795869463efa84c6d60e01b86526064359060048701613d61565b03926001600160a01b03165af18015612131578392849161210c575b50611f97606435841015613e0a565b611fa18183613e4c565b8015612084575b6001600160a01b03821684526018602052604084208054611fca908390612ab4565b9055611fd881601554612ab4565b601555600c546009546001600160a01b0316908590823b156105d45761201992849183604051809681958294630208d92960e11b8452308c60048601613a59565b03925af1801561168457612070575b50602093610a79926115839290916001600160a01b0383169081907f9ed03113de523cebfe5e49d5f8e12894b1c0d42ce805990461726444c90eab879080a460115490613a83565b61207a85916128c5565b610a315784612028565b5060018060a01b03600954166020600c54606460405180948193638eb22cdd60e01b835260048301528860248301528860448301525afa9081156121015784916120cf575b50611fa8565b90506020813d6020116120f9575b816120ea60209383612940565b81010312610a2c5751846120c9565b3d91506120dd565b6040513d86823e3d90fd5b905061212891925060403d60401161164c5761163a8183612940565b91909184611f88565b6040513d85823e3d90fd5b6121529250803d1061167d5761166f8183612940565b8980611f47565b50604051903d90823e3d90fd5b61217f915060403d60401161164c5761163a8183612940565b905089611ed1565b91506020823d6020116121c2575b816121a260209383612940565b81010312610fcb57611ebc6040916121ba8894612d32565b509150611e7c565b3d9150612195565b6040513d88823e3d90fd5b906020823d602011612213575b816121ef60209383612940565b8101031261220f57611e6a93612206602093612d32565b50935090611e3c565b8780fd5b3d91506121e2565b6040513d8a823e3d90fd5b61222f906128c5565b610a31578388611df2565b8480fd5b60405162461bcd60e51b815260206004820152601b60248201527f42696742616e673a20626f72726f7720636170207265616368656400000000006044820152606490fd5b161792161617111590508980808b818080611d32565b6020820196806122cb6122bc6122b2858c511684612a50565b8587511690612a79565b99846115cd818851168d612a50565b106122dc575b611ce4828092611cda565b96611ce4826122eb81936134d1565b99925050506122d1565b823b156105d457604051630208d92960e11b815292839182908490829061232c908b906001600160a01b038b168e60048601613a59565b03925af1801561235557612342575b8681611c67565b61234e909691966128c5565b948661233b565b6040513d89823e3d90fd5b9095506020813d60201161238c575b8161237c60209383612940565b810103126105d457519489611c60565b3d915061236f565b6040513d84823e3d90fd5b6123b8915060203d6020116116c9576116bb8183612940565b88611c01565b9050346105d4576123ce366127e0565b8397949697929192421161058f5761246592610533928a60018060a01b0396878c16988983526004602052604083209182549261240a846134d1565b90556040519260208401947f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d6865260408501528b60608501528a8d1660808501528d60a085015260c08401528183015281526104f781612924565b160361054a57610305926134e0565b8234610308578060031936011261030857602a546040516001600160a01b039091168152602090f35b8234610308576020366003190112610308576020906040906001600160a01b036124c56127a5565b168152601883522054604051908152f35b8234610308578060031936011261030857602090604051908152f35b82346103085760403660031901126103085760043560098110156105d4576125186127d1565b6008549091906001600160a01b031633036125ce5760ff6125388261285c565b5416151591151591821461259457808260ff6125566125849461285c565b54161515827feeec81de25875ce1725479bb76f720a8defdb43dea041919ae37bb4aae9847c08780a461285c565b9060ff8019835416911617905580f35b60405162461bcd60e51b81526020600482015260126024820152714d61726b65743a2073616d6520737461746560701b6044820152606490fd5b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881d5b985d5d1a1bdc9a5e995960621b6044820152606490fd5b8234610308576040366003190112610308576110ac6126276127a5565b602435903361352e565b82346103085760603660031901126103085761264b6127a5565b6126536127d1565b604435908115158203610a315760018060a01b03928391612679836005541633146129c5565b1561271d571690811590811591612715575b50156126d857806005549283167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08580a36001600160a01b03199182161760055560068054909116905580f35b60405162461bcd60e51b81526020600482015260156024820152744f776e61626c653a207a65726f206164647265737360581b6044820152606490fd5b90508461268b565b9150501660018060a01b0319600654161760065580f35b8234610308578060031936011261030857604061274f612df7565b825191151582526020820152f35b8390346105d45760403660031901126105d457604060209261277d6127a5565b6127856127bb565b6001600160a01b0391821683526003865283832091168252845220548152f35b600435906001600160a01b0382168203610a2c57565b602435906001600160a01b0382168203610a2c57565b602435908115158203610a2c57565b60e0906003190112610a2c576001600160a01b03906004358281168103610a2c57916024359081168103610a2c5790604435906064359060843560ff81168103610a2c579060a4359060c43590565b9181601f84011215610a2c578235916001600160401b038311610a2c5760208381860195010111610a2c57565b6009811015612875576000526007602052604060002090565b634e487b7160e01b600052602160045260246000fd5b90600182811c921680156128bb575b60208310146128a557565b634e487b7160e01b600052602260045260246000fd5b91607f169161289a565b6001600160401b0381116128d857604052565b634e487b7160e01b600052604160045260246000fd5b604081019081106001600160401b038211176128d857604052565b608081019081106001600160401b038211176128d857604052565b61010081019081106001600160401b038211176128d857604052565b90601f801991011681019081106001600160401b038211176128d857604052565b6020808252825181830181905290939260005b82811061299657505060409293506000838284010152601f8019910116010190565b818101860151848201604001528501612974565b6001600160401b0381116128d857601f01601f191660200190565b156129cc57565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b15612a1757565b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881b9bdd081d985b1a59607a1b6044820152606490fd5b81810292918115918404141715612a6357565b634e487b7160e01b600052601160045260246000fd5b8115612a83570490565b634e487b7160e01b600052601260045260246000fd5b604d8111612a6357600a0a90565b91908203918211612a6357565b91908201809211612a6357565b81810392916000138015828513169184121617612a6357565b601454919291612b2391612b1491612b0a91612b00906001600160801b03831690612a50565b9060801c90612a79565b93601f5490612a50565b612b1d83612a99565b90612a79565b808310612beb57612b37612b739184612aa7565b91612b6e612b68612b5f601e54612b59612b5086612a99565b60205490612ab4565b90612a50565b612b1d84612a99565b91612a99565b612ac1565b6509184e72a00090818102918183051490151715612a6357670de0b6b3a764000091828102928184051490151715612a63578015612a8357600160ff1b91808314600019831416612a635705906000821215612be4578114612a6357600003905b808211612bdf575090565b905090565b5090612bd4565b505050600090565b6001600160a01b03908116600081815260176020908152604082205492959493919290918115612d2557612c2561379c565b90612c31861515612f4f565b6009541683600c54898752601882526064604088205491604051948593849263442c159960e01b8452600484015260248301528960448301525afa908115611684578591612cf6575b5092859492612cd6601893612cb1612cea99612cac612ca360409a620186a06021540490612a50565b601e5490612a50565b612a79565b815190936001600160801b03918691612ccc91841690612a50565b9201511690612a79565b818110612cee57035b978352522054612f9b565b9091565b505082612cdf565b90508381813d8311612d1e575b612d0d8183612940565b8101031261223a5751612cea612c7a565b503d612d03565b5050509192505080918190565b51908115158203610a2c57565b9190826040910312610a2c576020612d5683612d32565b92015190565b602080825260009160105491612d718361288b565b9283828401526001908181169081600014612dd45750600114612d96575b5050505090565b929350601060005280600020926000935b858510612dc05750505060409250010138808080612d8f565b805485850160400152938201938101612da7565b925050506040935060ff929192191683830152151560051b010138808080612d8f565b600f546040805163d6d7d52560e01b81529290916001600160a01b0316828480612e2360048201612d5c565b0381600080955af18015612f435781948291612f10575b50928415612eb3578315612e7957507f9f9192b5edb17356c524e08d9e025c8e2f6307e6ea52fb7968faa3081f51c3c883918260115580a25b42601355565b5162461bcd60e51b81526020600482015260146024820152734d61726b65743a20696e76616c6964207261746560601b6044820152606490fd5b91925050612ec660135460125490612ab4565b4211612ed6575060115490612e73565b5162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881c985d19481d1bdbc81bdb1960621b6044820152606490fd5b9050612f33919450833d8511612f3c575b612f2b8183612940565b810190612d3f565b93909338612e3a565b503d612f21565b508251903d90823e3d90fd5b15612f5657565b60405162461bcd60e51b815260206004820152601e60248201527f4d61726b65743a2065786368616e676552617465206e6f742076616c696400006044820152606490fd5b612fa6821515612f4f565b602060018060a01b0360095416916064600c54604051948593849263442c159960e01b845260048401526024830152600060448301525afa90811561304657600091613013575b5090612cac612fff9260215490612a50565b620186a061300f601e5483612a50565b0491565b906020823d821161303e575b8161302c60209383612940565b81010312610308575051612cac612fed565b3d915061301f565b6040513d6000823e3d90fd5b6001600160a01b0316600081815260186020526040812054909261307591612f9b565b91835260176020526040832054801561317e57811561317e5781811061317e5782811015613174576014546130be918391610bd691612b00906001600160801b03831690612a50565b90620186a09283830292808404851490151715613160576130e39291612b1d91612aa7565b91601b5491601c54936130f68585612ac1565b80820291848212600160ff1b82141661316057818305149015171561314c57058184820194851291129080158216911516176131385750808212612bdf575090565b634e487b7160e01b81526011600452602490fd5b634e487b7160e01b83526011600452602483fd5b634e487b7160e01b85526011600452602485fd5b50505050601b5490565b50505090565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03161480613285575b156131df577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f000000000000000000000000000000000000000000000000000000000000000082527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a0815260c081018181106001600160401b038211176128d85760405251902090565b507f000000000000000000000000000000000000000000000000000000000000000046146131b6565b156132b557565b60405162461bcd60e51b815260206004820152601660248201527545524332303a2062616c616e636520746f6f206c6f7760501b6044820152606490fd5b156132fa57565b60405162461bcd60e51b815260206004820152601660248201527545524332303a206e6f207a65726f206164647265737360501b6044820152606490fd5b51906001600160a01b0382168203610a2c57565b519060ff82168203610a2c57565b6005811015612875578061336b5750565b600181036133b35760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b6044820152606490fd5b600281036134005760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606490fd5b60031461340957565b60405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608490fd5b9291906fa2a8918ca85bafe22016d0b997e4df60600160ff1b0383116134c55791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa156121595781516001600160a01b038116156134bf579190565b50600190565b50505050600090600390565b6000198114612a635760010190565b7fe50de2333c10a9502fcb1d8ae13a51bbf423153dfc63c2b8997665b32154afc360018060a01b038092169160009083825260036020526040822094169384825260205284604082205580a4565b909160207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259160018060a01b03809416938460005260028352604060002095169485600052825280604060002055604051908152a3565b60ff602554166136f7576014546001600160801b03169081156136f057600a54604051631848f2bf60e31b8152602093916001600160a01b03919085908290600490829086165afa80156130465785916000916136bb575b50600460405180948193631a674cc560e11b8352165afa9384156130465760009461368c575b505061361f9192670de0b6b3a764000092839160285490612a50565b049081811015613683576136366029548092612aa7565b83810290808204851490151715612a6357612b1d6136579261367794612aa7565b602654926136716027549261366c8487612aa7565b612a50565b04612ab4565b90808211612bdf575090565b50505060265490565b81813d83116136b4575b6136a08183612940565b81010312610a315751925061361f38613603565b503d613696565b9182813d83116136e9575b6136d08183612940565b8101031261030857506136e38591613338565b386135dd565b503d6136c6565b6027549150565b600a5460405163e6abad4960e01b815290602090829060049082906001600160a01b03165afa9081156130465760009161372f575090565b906020823d8211613755575b8161374860209383612940565b8101031261030857505190565b3d915061373b565b6040519061376a826128ee565b6014546001600160801b038116835260801c6020830152565b6001600160801b039182169082160191908211612a6357565b600060206040516137ac816128ee565b82815201526001600160401b03906137cb8260245460401c1642612aa7565b9182156138225761381d61366c91670de0b6b3a76400006138126137ed61375d565b9660018060801b03958694858a5116906301e1338061380a613585565b041690612a50565b041682855116613783565b168252565b50905061382d61375d565b90565b60405161383c816128ee565b6024546001600160401b03908181168352818160401c16613864602085019180835242612aa7565b92831561392957602094816301e1338061387c613585565b04168152814216835261388d61375d565b670de0b6b3a76400006138b260018060801b039761366c898551168787511690612a50565b04956138c381881682845116613783565b1680825296015160801b6001600160801b031990811690961760145551915192909416931692831760409190911b67ffffffffffffffff60401b16176024557f7484db546dcd57af0104c73c8a6968dfbaf5767f047cee0dadd0499ad7df81a0600080a3565b5050505050565b1561393757565b60405162461bcd60e51b815260206004820152600e60248201526d13585c9ad95d0e881c185d5cd95960921b6044820152606490fd5b1561397457565b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881a5b9cdbdb1d995b9d607a1b6044820152606490fd5b156139b457565b606460405162461bcd60e51b815260206004820152602060248201527f4d61726b65743a2063616e6e6f742065786563757465206f6e20697473656c666044820152fd5b90816020910312610a2c575161ffff81168103610a2c5790565b15613a1957565b60405162461bcd60e51b81526020600482015260186024820152772134b3a130b7339d1024b73b30b634b21039bbb0b83832b960411b6044820152606490fd5b6001600160a01b039182168152911660208201526040810191909152606081019190915260800190565b919060018060a01b03806000941684526020601781526040852054908115613b6a5760188152604086205480156139295781613abd61375d565b9460095416916064600c54604051948593849263442c159960e01b8452600484015260248301528b60448301525afa968715611610578097613b34575b5050612ccc613b19612ca3613b2f969798620186a06021540490612a50565b9561366c60018060801b03948587511690612a50565b111590565b9096508187813d8311613b63575b613b4c8183612940565b810103126103085750945194612ccc613b19613afa565b503d613b42565b5060019450505050565b600a5460405163dbd01de160e01b815260209290916001600160a01b039084908490600490829085165afa8015613046578493600091613c23575b50918161ffff936044936040519889968795633a304d8b60e21b8752166004860152166024840152165afa90811561304657600091613bef575b50905090565b82813d8311613c1c575b613c038183612940565b810103126103085750613c1590612d32565b8038613be9565b503d613bf9565b9091929381813d8311613c5a575b613c3b8183612940565b810103126105d457519082821682036103085750839291906044613baf565b503d613c31565b809103906101408212610a2c576040805192606084018481106001600160401b038211176128d85780835260808212610a2c57613c9d81612909565b613ca684613338565b815260208401516080860152613cbd838501613338565b60a0860152606084015160c086015284526080607f19820112610a2c5781908151613ce781612909565b6080850151815260a0850151602082015260c08501518382015260e08501516060820152602086015260ff190112610a2c57613d40610120825193613d2b856128ee565b613d386101008201612d32565b855201612d32565b602083015282015290565b9190826040910312610a2c576020825192015190565b939492909160206040845194606060018060a01b0396878151168a5284810151858b0152878482015116848b015201516060890152606083820151805160808b01528481015160a08b01528381015160c08b0152015160e08901520151805115156101008801520151151561012086015261014085015216610160830152806101a080610180850152830152806101c093848401376000828201840152601f01601f1916010190565b15613e1157565b60405162461bcd60e51b8152602060048201526013602482015272084d2ce84c2dcce7440dcdee840cadcdeeaced606b1b6044820152606490fd5b6001600160a01b0316338103613e60575050565b6000818152602090600382526040918282203383528152848383205410613ec95783825260038152828220338352815282822054600101613ea2575050505050565b613ebd93825260038152828220903383525220918254612aa7565b90553880808080613929565b60649083519062461bcd60e51b82526004820152601460248201527313585c9ad95d0e881b9bdd08185c1c1c9bdd995960621b6044820152fd5b9081526001600160a01b0391821660208201529116604082015260608101919091526000608082015260a00190565b801561409f57602a546040805163d6d7d52560e01b81526001600160a01b03909216929190808280613f6660048201612d5c565b0381600080985af19182156140955784908593614073575b50156140245750670e27c49886e6000081101561401b57670d99a8cec7e2000081111561401257602d5490670d99a8cec7e1ffff198101908111613ffe5790668e1bc9bf040000613fd8613fdf93612b59602c5485612aa7565b0490612aa7565b9081613fea57505090565b620186a0925090613ffa91612a50565b0490565b634e487b7160e01b84526011600452602484fd5b505050602d5490565b505050602c5490565b5162461bcd60e51b8152602060048201526024808201527f42696742616e673a202061737365742773206f7261636c652063616c6c2066616044820152631a5b195960e21b6064820152608490fd5b90508161408d9293503d8411612f3c57612f2b8183612940565b919038613f7e565b81513d86823e3d90fd5b50600090565b60208101805190939291906001600160801b039081166140c6575090925050565b90816115cd816140e96140df6140f29686511688612a50565b828a511690612a79565b97511687612a50565b106140f957565b9061382d906134d1565b92909260018060a01b03928385169060009482865260209060178252604097888820548085116143ca575b50831561438e578361413f916143eb565b94838610156143525787988589526023845280892061415f888254612aa7565b905561416961375d565b9689858351614177816128ee565b828152015261418686896140a5565b9760018060801b038061419e818c16828551166143d2565b168252868201906141b4818a16828451166143d2565b9181831690528a9251169060018060801b03199060801b1617601455878b5260178652828b206141e5888254612aa7565b9055614216838a809d886009541690600e549084518096819582946311a5cc7760e31b84528d309160048601613f03565b03925af18015614348579061424393929161432c575b50614237888b612aa7565b80614309575b50612aa7565b8061427b575b507fc8e512d8f188ca059984b5853d2bf653da902696b8512785b182b2c813789a6e94959697989950519485521692a4565b8a9084600d541690813b15610fcf578351632770a7eb60e21b8152306004820152602481019190915291908290604490829084905af180156142ff577fc8e512d8f188ca059984b5853d2bf653da902696b8512785b182b2c813789a6e969798999a9b506142f0575b8a999897969550614249565b6142f9906128c5565b386142e4565b82513d8d823e3d90fd5b614326915061431f620186a091601a5490612a50565b048a612aa7565b3861423d565b61434290853d871161164c5761163a8183612940565b5061422c565b84513d8f823e3d90fd5b885162461bcd60e51b815260048101849052601560248201527442423a2072657061796d656e7420746f6f206c6f7760581b6044820152606490fd5b885162461bcd60e51b815260048101849052601560248201527453474c3a206e6f7468696e6720746f20726570617960581b6044820152606490fd5b93503861412e565b6001600160801b039182169082160391908211612a6357565b6001600160a01b0390811660008181526017602090815260408083205493959094929391928282146144f557848091600d541687518681019063313ce56760e01b82526004815261443b816128ee565b51915afa3d156144ed573d90614450826129aa565b9161445d88519384612940565b82523d868684013e5b806144e3575b156144d557838180518101031261223a579060ff61448e85614497940161334c565b16928391614504565b80156144cc5760239291612b1d612b686144bb938988528686528888205490612a50565b948352522054808211612bdf575090565b50505091505090565b506144979060ff601261448e565b508381511461446c565b606090614466565b50505060239192935052205490565b918215801561453f575b612beb5760018101809111612a635761452d92612b59612cac92612a99565b60058101809111612a6357600a900490565b50811561450e56feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae672a2646970667358221220c7deb7235e9f54a8e6e04aa952925a28656e8f828ba8927ff1e71014692abd0e64736f6c63430008120033", - "deployedBytecode": "0x608080604052600436101561001357600080fd5b60009060e08235811c918262a02a201461275d5750816302ce728f14612734578163078dfbe714612631578163095ea7b31461260a5781630c4e84f0146124f257816318160ddd146124d65781631c9e379b1461249d5781631d4d3a5d146124745781631da8bf10146123be5781631ee9c8f214611b355781631fb8f81a14611b1757816323b872dd14611974578163331960ff1461195657816334ce998a1461192d57816334d441d01461190f5781633644e515146118f457816337b6b7b9146118d657816338d52e0f146118ad5781633ba0b9a91461188f5781633f741adb1461186a57816340626d8b1461184c57816344de240a1461182e578163473e3ce71461181057816348e4163e146117d75781634e71e0c814611729578163529898f21461170c578163542afda3146116ee57816357935462146116d057816358db9afe146112825781636b19ad16146112645781636c3d8b8f1461123b57816370a082311461120257816372778547146111ca57816374645ff31461113757816374c9e481146111195781637dc0d1d0146110f05781637ecebe00146110b75781637fa0b84e146110855781638285ef401461105357816387b279371461101a5781638c5d0ed314610ffc5781638da5cb5b14610fd3578163910dd7c814610d53578163932bc4f814610c7557816399a9702814610c4d5781639e15e89f14610c12578163a9059cbb14610b2f578163b0e21e8a14610b11578163b27c0e7414610ae0578163b7113f1914610abd578163bb4cfe3b14610a9f578163bde39c5d14610a81578163c1ad5c8d14610a5e578163ce8849ed14610a35578163d3fb2a38146105d8578163d505accf1461044d57508063d8dfeb4514610424578063dd62ed3e146103d5578063de406577146103ac578063e0996cb61461038e578063e30c397814610365578063ea64dd5614610347578063eec0f42e14610329578063f791395d1461030b5763f8ba4cff146102ed57600080fd5b34610308578060031936011261030857610305613830565b80f35b80fd5b50346103085780600319360112610308576020602754604051908152f35b50346103085780600319360112610308576020600c54604051908152f35b50346103085780600319360112610308576020601f54604051908152f35b50346103085780600319360112610308576006546040516001600160a01b039091168152602090f35b50346103085780600319360112610308576020601d54604051908152f35b50346103085780600319360112610308576009546040516001600160a01b039091168152602090f35b5034610308576040366003190112610308576103ef6127a5565b60406103f96127bb565b9260018060a01b03809316815260026020522091166000526020526020604060002054604051908152f35b5034610308578060031936011261030857600b546040516001600160a01b039091168152602090f35b9050346105d45761045d366127e0565b8394969793929192421161058f5761053b926105339260018060a01b0395868b169788600052600460205260406000209182549261049a846134d1565b90556040519160208301937f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e2668552600060408501528b60608501528a8d1660808501528d60a085015260c08401528183015281526104f781612924565b519020610502613184565b9060405190602082019261190160f01b8452602283015260428201526042815261052b81612909565b519020613459565b91909161335a565b160361054a576103059261352e565b60405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152606490fd5b60405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b5080fd5b823461030857610160366003190112610308576001600160a01b0390600435828116908190036105d4576001600160401b0392602435848111610a315761062390369060040161282f565b909460443593838516809503610a2c57610642846005541633146129c5565b806109ee575b5081610895575b50509080929350610855575b50506064358061083d575b5060843580610825575b5060a4358061080e575b5060c435806107ea575b5060e435806107c6575b506101043580610795575b506101243580610721575b5061014435806106b2575080f35b601e5481106106c157601f5580f35b60405162461bcd60e51b815260206004820152603260248201527f4d61726b65743a206c69717569646174696f6e436f6c6c61746572616c697a616044820152711d1a5bdb94985d19481d1bdbc81cdb585b1b60721b6064820152608490fd5b610730620186a0821115612a10565b601f54811161074257601e55816106a4565b60405162461bcd60e51b815260206004820152602560248201527f4d61726b65743a20636f6c6c61746572616c697a6174696f6e5261746520746f6044820152646f2062696760d81b6064820152608490fd5b806016547fae6e0ab3b95f0a53ff9660a390ccedcbbf1f2355dce974a9841af106fddcfaba8480a360165581610699565b6107d4620186a08210612a10565b6107e1601b548211612a10565b601c558161068e565b6107f8620186a08210612a10565b610805601c548210612a10565b601b5581610684565b61081c620186a08210612a10565b601d558161067a565b610834620186a0821115612a10565b601a5581610670565b61084c620186a0821115612a10565b60195581610666565b816008549182167f5a62d22209e370e38eea92cfddcd228e656e6ec139243392a760a7769f5877fd8580a36001600160a01b03191617600855818061065b565b81116109da576108a660105461288b565b601f811161098b575b5083601f8211600114610917578495829394959261090c575b50508160011b916000199060031b1c1916176010555b7fa6f004921c944d4b8bf6e38462b00f36a58d62495d56b51f571ab78f732c98158380a1908291848061064f565b0135905085806108c8565b60108552601f19821695600080516020614568833981519152918660205b8982106109735750508360019596979810610959575b505050811b016010556108de565b0135600019600384901b60f8161c1916905585808061094b565b80600184968294958701358155019501920190610935565b60108552600080516020614568833981519152601f830160051c8101602084106109d3575b601f90920160051c01905b8181106109c857506108af565b8581556001016109bb565b50806109b0565b634e487b7160e01b84526041600452602484fd5b600f80546001600160a01b0319169190911790557f0b2d6eb667d0522c3eb86e4288afecae6c11591ffd1345d4d12407e0598bca9b8580a186610648565b600080fd5b8380fd5b82346103085780600319360112610308576008546040516001600160a01b039091168152602090f35b82346103085780600319360112610308576020610a79613585565b604051908152f35b82346103085780600319360112610308576020602854604051908152f35b82346103085780600319360112610308576020601e54604051908152f35b8234610308578060031936011261030857602060ff602554166040519015158152f35b823461030857806003193601126103085760406024548151906001600160401b03908181168352831c166020820152f35b82346103085780600319360112610308576020601a54604051908152f35b823461030857604036600319011261030857610b496127a5565b60243580928115801590610c00575b610b90575b50506040519182526001600160a01b031690339060008051602061454883398151915290602090a3602060405160018152f35b33815260016020526040812054610ba9838210156132ae565b6001600160a01b0384169033829003610bc4575b5050610b5d565b604093610bdb91610bd68415156132f3565b612aa7565b338352600160205283832055815220610bf5838254612ab4565b905581838080610bbd565b50336001600160a01b03841614610b58565b8234610308576040366003190112610308576060610c3a610c316127a5565b60243590612bf3565b9060405192835260208301526040820152f35b8234610308576040366003190112610308576020610a79610c6c6127a5565b60243590613052565b8234610308578060031936011261030857604051600090602b54610c988161288b565b808352600191808316908115610d2b5750600114610cd1575b610ccd83610cc181870382612940565b60405191829182612961565b0390f35b602b600090815260209450917f11c44e4875b74d31ff9fd779bf2566af7bd15b87fc985d01f5094b89e3669e4f5b828410610d1857505050810190910190610cc181610cb1565b8054858501870152928501928101610cff565b610ccd9550610cc193506020915091849260ff191682840152151560051b8201019350610cb1565b9050346105d45760403660031901126105d4576004356001600160401b038111610fcf5736602382011215610fcf57806004013590610d91826129aa565b92610d9f6040519485612940565b82845284602092838601943660248284010111610fcf578060248693018737860101526024359161ffff8316809303610fcb57610100938486805181010312610fc757610deb90612d32565b91610df860408701613338565b90610e0560608801613338565b9660808101519660a082015192610e1e60c0840161334c565b91818401519301519360018060a01b03808097169b1698814211610f82579289888d989794610ef99794610533978f8e600014610f5b577f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e266955b8d60005260048652604060002092835493610e92856134d1565b905560405196870197885260408701528d6060870152608086015260a085015260c0840152818301528152610ec681612924565b519020610ed1613184565b90604051908a82019261190160f01b8452602283015260428201526042815261052b81612909565b1603610f17575015610f0e576103059261352e565b610305926134e0565b6064906040519062461bcd60e51b82526004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152fd5b7f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d695610e78565b60405162461bcd60e51b815260048101899052601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b8680fd5b8580fd5b8280fd5b82346103085780600319360112610308576005546040516001600160a01b039091168152602090f35b82346103085780600319360112610308576020601b54604051908152f35b8234610308576020366003190112610308576020906040906001600160a01b036110426127a5565b168152602383522054604051908152f35b8234610308578060031936011261030857601454604080516001600160801b038316815260809290921c602083015290f35b8234610308576040366003190112610308576110ac6110a26127a5565b60243590336134e0565b602060405160018152f35b8234610308576020366003190112610308576020906040906001600160a01b036110df6127a5565b168152600483522054604051908152f35b8234610308578060031936011261030857600f546040516001600160a01b039091168152602090f35b82346103085780600319360112610308576020602d54604051908152f35b823461030857806003193601126103085760405160009060105461115a8161288b565b808352600191808316908115610d2b575060011461118257610ccd83610cc181870382612940565b6010600090815260209450916000805160206145688339815191525b8284106111b757505050810190910190610cc181610cb1565b805485850187015292850192810161119e565b82346103085760203660031901126103085760043590600982101561030857602060ff6111f68461285c565b54166040519015158152f35b8234610308576020366003190112610308576020906040906001600160a01b0361122a6127a5565b168152600183522054604051908152f35b8234610308578060031936011261030857600a546040516001600160a01b039091168152602090f35b82346103085780600319360112610308576020602654604051908152f35b82346103085760a03660031901126103085761129c6127a5565b606435916001600160a01b0383168303610a2c576084356001600160401b0381116105d4576112cf90369060040161282f565b92906006600052602094600786526112ef60ff6040600020541615613930565b6112f7612df7565b5050611301613830565b6113166001600160a01b0384163014156139ad565b600a5460405163433e762d60e01b8152908790829060049082906001600160a01b03165afa90811561168457611367916113629187916116a3575b506001600160a01b03841690613b74565b613a12565b61137360243584613e4c565b6001600160a01b0383168452601886526040842080546113969060243590612aa7565b90556113a6602435601554612aa7565b6015556040516024356001600160a01b038381169086167f8ad4d3ff00da092c7ad9a573ea4f5f6a3dffc6712dc06d3f78f49b862297c4028880a460018060a01b0360095416600c54813b15610fc757630208d92960e11b83528691839182908490829061142690602435906001600160a01b038b163060048601613a59565b03925af180156116845790859161168f575b5050600c54600e54604051633d9545e960e11b815260048101929092526024808301919091526000604483015235606482015260016084820181905260a48201526101408160c4816001600160a01b0386165afa9081156116845785604094939286928291611653575b506114c68651998a968795869463efa84c6d60e01b86526044359060048701613d61565b03926001600160a01b03165af1918215611610578093819361161c575b506114f2604435851015613e0a565b6001600160a01b0382168152601785526040812054906115198261151461375d565b6140a5565b8660018060a01b0360095416916064600e546040519485938492638eb22cdd60e01b845260048401526024830152600160448301525afa91821561161057916115db575b50610a79936115839392911161158857611578908280614103565b505b60115490613a83565b61396d565b5061159161375d565b80516001600160801b039081166115b65750506115b0845b8280614103565b5061157a565b81816115cd6115d6938a6115b09601511689612a50565b91511690612a79565b6115a9565b929190508583813d8311611609575b6115f48183612940565b81010312610a2c579151909190610a7961155d565b503d6115ea565b604051903d90823e3d90fd5b90925061164291935060403d60401161164c575b61163a8183612940565b810190613d4b565b92909291856114e3565b503d611630565b61167791506101403d6101401161167d575b61166f8183612940565b810190613c61565b8a6114a2565b503d611665565b6040513d87823e3d90fd5b611698906128c5565b610a31578387611438565b6116c39150893d8b116116c9575b6116bb8183612940565b8101906139f8565b89611351565b503d6116b1565b82346103085780600319360112610308576020601c54604051908152f35b82346103085780600319360112610308576020602c54604051908152f35b823461030857806003193601126103085760208054604051908152f35b82346103085780600319360112610308576006546001600160a01b03908181163381900361179357806005549384167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08680a36001600160a01b0319928316176005551660065580f35b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b8234610308576020366003190112610308576020906040906001600160a01b036117ff6127a5565b168152601783522054604051908152f35b82346103085780600319360112610308576020601554604051908152f35b82346103085780600319360112610308576020600e54604051908152f35b82346103085780600319360112610308576020601654604051908152f35b8234610308576060366003190112610308576020610a79604435602435600435612ada565b82346103085780600319360112610308576020601154604051908152f35b8234610308578060031936011261030857600d546040516001600160a01b039091168152602090f35b82346103085780600319360112610308576020601254604051908152f35b82346103085780600319360112610308576020610a79613184565b82346103085780600319360112610308576020601954604051908152f35b82346103085780600319360112610308576014546040516001600160801b039091168152602090f35b82346103085780600319360112610308576020601354604051908152f35b82346103085760603660031901126103085761198e6127a5565b906119976127bb565b60443591826119d5575b506040519182526001600160a01b0390811692169060008051602061454883398151915290602090a3602060405160018152f35b6001600160a01b038481168083526001602090815260408420549286906119fe828610156132ae565b861693848403611a13575b50505050506119a1565b83865260028352604086203360005283526040600020546000198103611a81575b5092600160209693611a5f8794604097610bd66000805160206145488339815191529c9a15156132f3565b9285525283832055815220611a75858254612ab4565b90559185808581611a09565b90918110611ad75792600160209693611a5f8a6000805160206145488339815191529a9895611ab28260409a612aa7565b8689526002855289892033600052855289600020559497509497995050939650611a34565b60405162461bcd60e51b815260048101849052601860248201527745524332303a20616c6c6f77616e636520746f6f206c6f7760401b6044820152606490fd5b82346103085780600319360112610308576020602954604051908152f35b82346103085760c036600319011261030857611b4f6127a5565b608435906001600160a01b0382168203610fcf5760a4356001600160401b038111610a3157611b8290369060040161282f565b9290600585526007602052611b9e60ff60408720541615613930565b611ba6612df7565b5050611bb0613830565b611bc56001600160a01b0384163014156139ad565b600a5460405163433e762d60e01b815290602090829060049082906001600160a01b03165afa9081156121ca57611c129161136291889161239f575b506001600160a01b03851690613b74565b600954600e54604051638eb22cdd60e01b81526004810182905260448035602483015260019082015293916001600160a01b0316908790602086606481865afa958615612394578296612360575b50856122f5575b505050611c75602435613f32565b9260018060a01b0382168752602360205260408720611c95858254612ab4565b9055611c9f61375d565b93611cac81602435612ab4565b9460006020604051611cbd816128ee565b828152015280516001600160801b039081166122995780611ce481895b1682855116613783565b168252806020830192611cfc828a1683865116613783565b9382851690525116918a6014549160801b9116928b60018060801b03199182841681871717601455601654948515968715612283575b505050505050501561223e57879460018060a01b0387168652601760205260408620611d5f828254612ab4565b9055604080519283526020830191909152602435916001600160a01b0385811692908916917f3a5151e57d3bc9798e7853034ac52293d1a0e12a2b44725e75b03b21f86477a69190a4600d546001600160a01b0316803b1561223a576040516340c10f1960e01b815230600482015260248035908201529085908290604490829084905af1908115611684578591612226575b5050600d54600e5460095460405163095ea7b360e01b8082526001600160a01b0392831660048301526024820189905291909316926020816044818b885af1801561221b576121d5575b506009546040519182526001600160a01b031660048201526024803590820152916020908390818981604481015b03925af19182156121ca578692612187575b5060095460408051634d4d7cbd60e11b815297909288926001600160a01b0390811692849290918391611ebc9160243591908c1690309060048601613f03565b03925af1801561215957611f27958291612166575b50611ee2600e5491600c5494612ab4565b60405180978192633d9545e960e11b83526101409687956004850160a091949360019360c0830196835260208301526000604083015260608201528260808201520152565b03816001600160a01b0387165afa8015612159576040958793839261213c575b5050611f6c86519889968795869463efa84c6d60e01b86526064359060048701613d61565b03926001600160a01b03165af18015612131578392849161210c575b50611f97606435841015613e0a565b611fa18183613e4c565b8015612084575b6001600160a01b03821684526018602052604084208054611fca908390612ab4565b9055611fd881601554612ab4565b601555600c546009546001600160a01b0316908590823b156105d45761201992849183604051809681958294630208d92960e11b8452308c60048601613a59565b03925af1801561168457612070575b50602093610a79926115839290916001600160a01b0383169081907f9ed03113de523cebfe5e49d5f8e12894b1c0d42ce805990461726444c90eab879080a460115490613a83565b61207a85916128c5565b610a315784612028565b5060018060a01b03600954166020600c54606460405180948193638eb22cdd60e01b835260048301528860248301528860448301525afa9081156121015784916120cf575b50611fa8565b90506020813d6020116120f9575b816120ea60209383612940565b81010312610a2c5751846120c9565b3d91506120dd565b6040513d86823e3d90fd5b905061212891925060403d60401161164c5761163a8183612940565b91909184611f88565b6040513d85823e3d90fd5b6121529250803d1061167d5761166f8183612940565b8980611f47565b50604051903d90823e3d90fd5b61217f915060403d60401161164c5761163a8183612940565b905089611ed1565b91506020823d6020116121c2575b816121a260209383612940565b81010312610fcb57611ebc6040916121ba8894612d32565b509150611e7c565b3d9150612195565b6040513d88823e3d90fd5b906020823d602011612213575b816121ef60209383612940565b8101031261220f57611e6a93612206602093612d32565b50935090611e3c565b8780fd5b3d91506121e2565b6040513d8a823e3d90fd5b61222f906128c5565b610a31578388611df2565b8480fd5b60405162461bcd60e51b815260206004820152601b60248201527f42696742616e673a20626f72726f7720636170207265616368656400000000006044820152606490fd5b161792161617111590508980808b818080611d32565b6020820196806122cb6122bc6122b2858c511684612a50565b8587511690612a79565b99846115cd818851168d612a50565b106122dc575b611ce4828092611cda565b96611ce4826122eb81936134d1565b99925050506122d1565b823b156105d457604051630208d92960e11b815292839182908490829061232c908b906001600160a01b038b168e60048601613a59565b03925af1801561235557612342575b8681611c67565b61234e909691966128c5565b948661233b565b6040513d89823e3d90fd5b9095506020813d60201161238c575b8161237c60209383612940565b810103126105d457519489611c60565b3d915061236f565b6040513d84823e3d90fd5b6123b8915060203d6020116116c9576116bb8183612940565b88611c01565b9050346105d4576123ce366127e0565b8397949697929192421161058f5761246592610533928a60018060a01b0396878c16988983526004602052604083209182549261240a846134d1565b90556040519260208401947f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d6865260408501528b60608501528a8d1660808501528d60a085015260c08401528183015281526104f781612924565b160361054a57610305926134e0565b8234610308578060031936011261030857602a546040516001600160a01b039091168152602090f35b8234610308576020366003190112610308576020906040906001600160a01b036124c56127a5565b168152601883522054604051908152f35b8234610308578060031936011261030857602090604051908152f35b82346103085760403660031901126103085760043560098110156105d4576125186127d1565b6008549091906001600160a01b031633036125ce5760ff6125388261285c565b5416151591151591821461259457808260ff6125566125849461285c565b54161515827feeec81de25875ce1725479bb76f720a8defdb43dea041919ae37bb4aae9847c08780a461285c565b9060ff8019835416911617905580f35b60405162461bcd60e51b81526020600482015260126024820152714d61726b65743a2073616d6520737461746560701b6044820152606490fd5b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881d5b985d5d1a1bdc9a5e995960621b6044820152606490fd5b8234610308576040366003190112610308576110ac6126276127a5565b602435903361352e565b82346103085760603660031901126103085761264b6127a5565b6126536127d1565b604435908115158203610a315760018060a01b03928391612679836005541633146129c5565b1561271d571690811590811591612715575b50156126d857806005549283167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08580a36001600160a01b03199182161760055560068054909116905580f35b60405162461bcd60e51b81526020600482015260156024820152744f776e61626c653a207a65726f206164647265737360581b6044820152606490fd5b90508461268b565b9150501660018060a01b0319600654161760065580f35b8234610308578060031936011261030857604061274f612df7565b825191151582526020820152f35b8390346105d45760403660031901126105d457604060209261277d6127a5565b6127856127bb565b6001600160a01b0391821683526003865283832091168252845220548152f35b600435906001600160a01b0382168203610a2c57565b602435906001600160a01b0382168203610a2c57565b602435908115158203610a2c57565b60e0906003190112610a2c576001600160a01b03906004358281168103610a2c57916024359081168103610a2c5790604435906064359060843560ff81168103610a2c579060a4359060c43590565b9181601f84011215610a2c578235916001600160401b038311610a2c5760208381860195010111610a2c57565b6009811015612875576000526007602052604060002090565b634e487b7160e01b600052602160045260246000fd5b90600182811c921680156128bb575b60208310146128a557565b634e487b7160e01b600052602260045260246000fd5b91607f169161289a565b6001600160401b0381116128d857604052565b634e487b7160e01b600052604160045260246000fd5b604081019081106001600160401b038211176128d857604052565b608081019081106001600160401b038211176128d857604052565b61010081019081106001600160401b038211176128d857604052565b90601f801991011681019081106001600160401b038211176128d857604052565b6020808252825181830181905290939260005b82811061299657505060409293506000838284010152601f8019910116010190565b818101860151848201604001528501612974565b6001600160401b0381116128d857601f01601f191660200190565b156129cc57565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b15612a1757565b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881b9bdd081d985b1a59607a1b6044820152606490fd5b81810292918115918404141715612a6357565b634e487b7160e01b600052601160045260246000fd5b8115612a83570490565b634e487b7160e01b600052601260045260246000fd5b604d8111612a6357600a0a90565b91908203918211612a6357565b91908201809211612a6357565b81810392916000138015828513169184121617612a6357565b601454919291612b2391612b1491612b0a91612b00906001600160801b03831690612a50565b9060801c90612a79565b93601f5490612a50565b612b1d83612a99565b90612a79565b808310612beb57612b37612b739184612aa7565b91612b6e612b68612b5f601e54612b59612b5086612a99565b60205490612ab4565b90612a50565b612b1d84612a99565b91612a99565b612ac1565b6509184e72a00090818102918183051490151715612a6357670de0b6b3a764000091828102928184051490151715612a63578015612a8357600160ff1b91808314600019831416612a635705906000821215612be4578114612a6357600003905b808211612bdf575090565b905090565b5090612bd4565b505050600090565b6001600160a01b03908116600081815260176020908152604082205492959493919290918115612d2557612c2561379c565b90612c31861515612f4f565b6009541683600c54898752601882526064604088205491604051948593849263442c159960e01b8452600484015260248301528960448301525afa908115611684578591612cf6575b5092859492612cd6601893612cb1612cea99612cac612ca360409a620186a06021540490612a50565b601e5490612a50565b612a79565b815190936001600160801b03918691612ccc91841690612a50565b9201511690612a79565b818110612cee57035b978352522054612f9b565b9091565b505082612cdf565b90508381813d8311612d1e575b612d0d8183612940565b8101031261223a5751612cea612c7a565b503d612d03565b5050509192505080918190565b51908115158203610a2c57565b9190826040910312610a2c576020612d5683612d32565b92015190565b602080825260009160105491612d718361288b565b9283828401526001908181169081600014612dd45750600114612d96575b5050505090565b929350601060005280600020926000935b858510612dc05750505060409250010138808080612d8f565b805485850160400152938201938101612da7565b925050506040935060ff929192191683830152151560051b010138808080612d8f565b600f546040805163d6d7d52560e01b81529290916001600160a01b0316828480612e2360048201612d5c565b0381600080955af18015612f435781948291612f10575b50928415612eb3578315612e7957507f9f9192b5edb17356c524e08d9e025c8e2f6307e6ea52fb7968faa3081f51c3c883918260115580a25b42601355565b5162461bcd60e51b81526020600482015260146024820152734d61726b65743a20696e76616c6964207261746560601b6044820152606490fd5b91925050612ec660135460125490612ab4565b4211612ed6575060115490612e73565b5162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881c985d19481d1bdbc81bdb1960621b6044820152606490fd5b9050612f33919450833d8511612f3c575b612f2b8183612940565b810190612d3f565b93909338612e3a565b503d612f21565b508251903d90823e3d90fd5b15612f5657565b60405162461bcd60e51b815260206004820152601e60248201527f4d61726b65743a2065786368616e676552617465206e6f742076616c696400006044820152606490fd5b612fa6821515612f4f565b602060018060a01b0360095416916064600c54604051948593849263442c159960e01b845260048401526024830152600060448301525afa90811561304657600091613013575b5090612cac612fff9260215490612a50565b620186a061300f601e5483612a50565b0491565b906020823d821161303e575b8161302c60209383612940565b81010312610308575051612cac612fed565b3d915061301f565b6040513d6000823e3d90fd5b6001600160a01b0316600081815260186020526040812054909261307591612f9b565b91835260176020526040832054801561317e57811561317e5781811061317e5782811015613174576014546130be918391610bd691612b00906001600160801b03831690612a50565b90620186a09283830292808404851490151715613160576130e39291612b1d91612aa7565b91601b5491601c54936130f68585612ac1565b80820291848212600160ff1b82141661316057818305149015171561314c57058184820194851291129080158216911516176131385750808212612bdf575090565b634e487b7160e01b81526011600452602490fd5b634e487b7160e01b83526011600452602483fd5b634e487b7160e01b85526011600452602485fd5b50505050601b5490565b50505090565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03161480613285575b156131df577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f000000000000000000000000000000000000000000000000000000000000000082527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a0815260c081018181106001600160401b038211176128d85760405251902090565b507f000000000000000000000000000000000000000000000000000000000000000046146131b6565b156132b557565b60405162461bcd60e51b815260206004820152601660248201527545524332303a2062616c616e636520746f6f206c6f7760501b6044820152606490fd5b156132fa57565b60405162461bcd60e51b815260206004820152601660248201527545524332303a206e6f207a65726f206164647265737360501b6044820152606490fd5b51906001600160a01b0382168203610a2c57565b519060ff82168203610a2c57565b6005811015612875578061336b5750565b600181036133b35760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b6044820152606490fd5b600281036134005760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606490fd5b60031461340957565b60405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608490fd5b9291906fa2a8918ca85bafe22016d0b997e4df60600160ff1b0383116134c55791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa156121595781516001600160a01b038116156134bf579190565b50600190565b50505050600090600390565b6000198114612a635760010190565b7fe50de2333c10a9502fcb1d8ae13a51bbf423153dfc63c2b8997665b32154afc360018060a01b038092169160009083825260036020526040822094169384825260205284604082205580a4565b909160207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259160018060a01b03809416938460005260028352604060002095169485600052825280604060002055604051908152a3565b60ff602554166136f7576014546001600160801b03169081156136f057600a54604051631848f2bf60e31b8152602093916001600160a01b03919085908290600490829086165afa80156130465785916000916136bb575b50600460405180948193631a674cc560e11b8352165afa9384156130465760009461368c575b505061361f9192670de0b6b3a764000092839160285490612a50565b049081811015613683576136366029548092612aa7565b83810290808204851490151715612a6357612b1d6136579261367794612aa7565b602654926136716027549261366c8487612aa7565b612a50565b04612ab4565b90808211612bdf575090565b50505060265490565b81813d83116136b4575b6136a08183612940565b81010312610a315751925061361f38613603565b503d613696565b9182813d83116136e9575b6136d08183612940565b8101031261030857506136e38591613338565b386135dd565b503d6136c6565b6027549150565b600a5460405163e6abad4960e01b815290602090829060049082906001600160a01b03165afa9081156130465760009161372f575090565b906020823d8211613755575b8161374860209383612940565b8101031261030857505190565b3d915061373b565b6040519061376a826128ee565b6014546001600160801b038116835260801c6020830152565b6001600160801b039182169082160191908211612a6357565b600060206040516137ac816128ee565b82815201526001600160401b03906137cb8260245460401c1642612aa7565b9182156138225761381d61366c91670de0b6b3a76400006138126137ed61375d565b9660018060801b03958694858a5116906301e1338061380a613585565b041690612a50565b041682855116613783565b168252565b50905061382d61375d565b90565b60405161383c816128ee565b6024546001600160401b03908181168352818160401c16613864602085019180835242612aa7565b92831561392957602094816301e1338061387c613585565b04168152814216835261388d61375d565b670de0b6b3a76400006138b260018060801b039761366c898551168787511690612a50565b04956138c381881682845116613783565b1680825296015160801b6001600160801b031990811690961760145551915192909416931692831760409190911b67ffffffffffffffff60401b16176024557f7484db546dcd57af0104c73c8a6968dfbaf5767f047cee0dadd0499ad7df81a0600080a3565b5050505050565b1561393757565b60405162461bcd60e51b815260206004820152600e60248201526d13585c9ad95d0e881c185d5cd95960921b6044820152606490fd5b1561397457565b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881a5b9cdbdb1d995b9d607a1b6044820152606490fd5b156139b457565b606460405162461bcd60e51b815260206004820152602060248201527f4d61726b65743a2063616e6e6f742065786563757465206f6e20697473656c666044820152fd5b90816020910312610a2c575161ffff81168103610a2c5790565b15613a1957565b60405162461bcd60e51b81526020600482015260186024820152772134b3a130b7339d1024b73b30b634b21039bbb0b83832b960411b6044820152606490fd5b6001600160a01b039182168152911660208201526040810191909152606081019190915260800190565b919060018060a01b03806000941684526020601781526040852054908115613b6a5760188152604086205480156139295781613abd61375d565b9460095416916064600c54604051948593849263442c159960e01b8452600484015260248301528b60448301525afa968715611610578097613b34575b5050612ccc613b19612ca3613b2f969798620186a06021540490612a50565b9561366c60018060801b03948587511690612a50565b111590565b9096508187813d8311613b63575b613b4c8183612940565b810103126103085750945194612ccc613b19613afa565b503d613b42565b5060019450505050565b600a5460405163dbd01de160e01b815260209290916001600160a01b039084908490600490829085165afa8015613046578493600091613c23575b50918161ffff936044936040519889968795633a304d8b60e21b8752166004860152166024840152165afa90811561304657600091613bef575b50905090565b82813d8311613c1c575b613c038183612940565b810103126103085750613c1590612d32565b8038613be9565b503d613bf9565b9091929381813d8311613c5a575b613c3b8183612940565b810103126105d457519082821682036103085750839291906044613baf565b503d613c31565b809103906101408212610a2c576040805192606084018481106001600160401b038211176128d85780835260808212610a2c57613c9d81612909565b613ca684613338565b815260208401516080860152613cbd838501613338565b60a0860152606084015160c086015284526080607f19820112610a2c5781908151613ce781612909565b6080850151815260a0850151602082015260c08501518382015260e08501516060820152602086015260ff190112610a2c57613d40610120825193613d2b856128ee565b613d386101008201612d32565b855201612d32565b602083015282015290565b9190826040910312610a2c576020825192015190565b939492909160206040845194606060018060a01b0396878151168a5284810151858b0152878482015116848b015201516060890152606083820151805160808b01528481015160a08b01528381015160c08b0152015160e08901520151805115156101008801520151151561012086015261014085015216610160830152806101a080610180850152830152806101c093848401376000828201840152601f01601f1916010190565b15613e1157565b60405162461bcd60e51b8152602060048201526013602482015272084d2ce84c2dcce7440dcdee840cadcdeeaced606b1b6044820152606490fd5b6001600160a01b0316338103613e60575050565b6000818152602090600382526040918282203383528152848383205410613ec95783825260038152828220338352815282822054600101613ea2575050505050565b613ebd93825260038152828220903383525220918254612aa7565b90553880808080613929565b60649083519062461bcd60e51b82526004820152601460248201527313585c9ad95d0e881b9bdd08185c1c1c9bdd995960621b6044820152fd5b9081526001600160a01b0391821660208201529116604082015260608101919091526000608082015260a00190565b801561409f57602a546040805163d6d7d52560e01b81526001600160a01b03909216929190808280613f6660048201612d5c565b0381600080985af19182156140955784908593614073575b50156140245750670e27c49886e6000081101561401b57670d99a8cec7e2000081111561401257602d5490670d99a8cec7e1ffff198101908111613ffe5790668e1bc9bf040000613fd8613fdf93612b59602c5485612aa7565b0490612aa7565b9081613fea57505090565b620186a0925090613ffa91612a50565b0490565b634e487b7160e01b84526011600452602484fd5b505050602d5490565b505050602c5490565b5162461bcd60e51b8152602060048201526024808201527f42696742616e673a202061737365742773206f7261636c652063616c6c2066616044820152631a5b195960e21b6064820152608490fd5b90508161408d9293503d8411612f3c57612f2b8183612940565b919038613f7e565b81513d86823e3d90fd5b50600090565b60208101805190939291906001600160801b039081166140c6575090925050565b90816115cd816140e96140df6140f29686511688612a50565b828a511690612a79565b97511687612a50565b106140f957565b9061382d906134d1565b92909260018060a01b03928385169060009482865260209060178252604097888820548085116143ca575b50831561438e578361413f916143eb565b94838610156143525787988589526023845280892061415f888254612aa7565b905561416961375d565b9689858351614177816128ee565b828152015261418686896140a5565b9760018060801b038061419e818c16828551166143d2565b168252868201906141b4818a16828451166143d2565b9181831690528a9251169060018060801b03199060801b1617601455878b5260178652828b206141e5888254612aa7565b9055614216838a809d886009541690600e549084518096819582946311a5cc7760e31b84528d309160048601613f03565b03925af18015614348579061424393929161432c575b50614237888b612aa7565b80614309575b50612aa7565b8061427b575b507fc8e512d8f188ca059984b5853d2bf653da902696b8512785b182b2c813789a6e94959697989950519485521692a4565b8a9084600d541690813b15610fcf578351632770a7eb60e21b8152306004820152602481019190915291908290604490829084905af180156142ff577fc8e512d8f188ca059984b5853d2bf653da902696b8512785b182b2c813789a6e969798999a9b506142f0575b8a999897969550614249565b6142f9906128c5565b386142e4565b82513d8d823e3d90fd5b614326915061431f620186a091601a5490612a50565b048a612aa7565b3861423d565b61434290853d871161164c5761163a8183612940565b5061422c565b84513d8f823e3d90fd5b885162461bcd60e51b815260048101849052601560248201527442423a2072657061796d656e7420746f6f206c6f7760581b6044820152606490fd5b885162461bcd60e51b815260048101849052601560248201527453474c3a206e6f7468696e6720746f20726570617960581b6044820152606490fd5b93503861412e565b6001600160801b039182169082160391908211612a6357565b6001600160a01b0390811660008181526017602090815260408083205493959094929391928282146144f557848091600d541687518681019063313ce56760e01b82526004815261443b816128ee565b51915afa3d156144ed573d90614450826129aa565b9161445d88519384612940565b82523d868684013e5b806144e3575b156144d557838180518101031261223a579060ff61448e85614497940161334c565b16928391614504565b80156144cc5760239291612b1d612b686144bb938988528686528888205490612a50565b948352522054808211612bdf575090565b50505091505090565b506144979060ff601261448e565b508381511461446c565b606090614466565b50505060239192935052205490565b918215801561453f575b612beb5760018101809111612a635761452d92612b59612cac92612a99565b60058101809111612a6357600a900490565b50811561450e56feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae672a2646970667358221220c7deb7235e9f54a8e6e04aa952925a28656e8f828ba8927ff1e71014692abd0e64736f6c63430008120033", + "bytecode": "0x61014080604052346200018a5762000017816200018f565b600f81526001602082016e546170696f63612042696742616e6760881b8152602060405162000046816200018f565b8381520192603160f81b845251902091208160e052610100918183524660a0526040519160208301907f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f92838352604085015260608401524660808401523060a084015260a0835260c083019280841060018060401b03851117620001745760408490525190206080523060c052610120908152600580546001600160a01b0319163390811790915560007f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a362013880601b5562015f90601c55612710601d55612ee06020556103e8602e556143d89283620001ac8439608051836132db015260a051836133a6015260c051836132a5015260e0518361332a01525182613350015251816133070152f35b634e487b7160e01b600052604160045260246000fd5b600080fd5b604081019081106001600160401b03821117620001745760405256fe608080604052600436101561001357600080fd5b60009060e08235811c918262a02a20146128775750816302ce728f1461284e578163078dfbe71461274b578163095ea7b3146127245781630c4e84f01461260c5781630f8b29ea146125ee57816318160ddd146125d25781631c9e379b146125995781631d4d3a5d146125705781631da8bf10146124ba5781631fb8f81a1461249c57816323b872dd146122ff578163331960ff146122e157816334ce998a146122b857816334d441d01461229a5781633644e5151461227f57816337b6b7b91461226157816338d52e0f146122385781633ba0b9a91461221a5781633f741adb146121f557816340626d8b146121d757816344de240a146121b9578163473e3ce71461219b57816348e4163e146121625781634e71e0c8146120b4578163529898f214612097578163542afda314612079578163579354621461205b5781636b19ad161461203d5781636c3d8b8f1461201457816370a0823114611fdb5781637277854714611fa357816374645ff314611f1257816374c9e48114611ef4578163790c846714611ed65781637dc0d1d014611ead5781637ecebe0014611e745781637fa0b84e14611e425781638285ef4014611e1057816387b2793714611dd75781638c5d0ed314611db95781638da5cb5b14611d90578163910dd7c814611b16578163932bc4f814611a3a57816399a9702814611a125781639e15e89f146119d7578163a9059cbb146118f4578163b0e21e8a146118d6578163b27c0e74146118a5578163b7113f1914611882578163bb4cfe3b14611864578163bde39c5d14611846578163c1ad5c8d1461182b578163ce8849ed14611802578163d3fb2a38146113ae578163d4e4534e14610ad7578163d505accf1461094c57508063d8dfeb4514610923578063da863f0e146108fa578063dd62ed3e146108ab578063de40657714610882578063e0996cb614610864578063e30c39781461083b578063e7d6de8014610408578063ea64dd56146103ea578063eec0f42e146103cc578063ef2b234a14610355578063f791395d146103375763f8ba4cff1461031957600080fd5b34610334578060031936011261033457610331613955565b80f35b80fd5b50346103345780600319360112610334576020602854604051908152f35b5034610334576020366003190112610334576004356001600160a01b03818116918290036103c85761038c81600554163314612adf565b816021549182167ffb4fd7114609dd603b57adbc2082205bfbbcabf9265c4b437b472f5c592b8cd78580a36001600160a01b0319161760215580f35b8280fd5b50346103345780600319360112610334576020600c54604051908152f35b50346103345780600319360112610334576020601f54604051908152f35b5034610334576060366003190112610334576104226128bf565b6044356001600160401b0381116103c857610441903690600401612ab2565b600660005260076020527f55c5b153ab560fcde54a63b18c7f53d75501706907cef8767fbded79ab9997c75491929161047d9060ff1615613a55565b610485612f15565b505061048f613955565b6104a46001600160a01b038316301415613ad2565b6104b060243583613c81565b602154604051632b3297f960e01b815290602090829060049082906001600160a01b03165afa908115610830578591610801575b506001600160a01b038316855260186020526040852080546105099060243590612bc1565b9055610519602435601554612bc1565b6015556040519085906024356001600160a01b038083169087167f8ad4d3ff00da092c7ad9a573ea4f5f6a3dffc6712dc06d3f78f49b862297c4028580a4600954600c54906001600160a01b0316803b156107f05784848161059082968296630208d92960e11b8452602435913060048601613b1d565b03925af19182156107f45784926107d9575b505060209160018060a01b03602154169086600e54916105e0600c5491604051998a978896879563927d1df160e01b87526024359160048801613b47565b03925af191821561079a5783926107a5575b5060018060a01b0360095416600e549360405191638eb22cdd60e01b95868452806004850152856024850152826044850152602084606481855afa93841561079a578394610765575b5060209060018060a01b03861684526017825260646040852054986106678a610662613882565b613ec0565b946040519586948593845260048401526024830152600160448301525afa918215610759579161071b575b506020946106c0936106bb939092116106c8576106b0908280613f1e565b505b60115490613b90565b613a92565b604051908152f35b506106d1613882565b80516001600160801b039081166106f65750506106f0845b8280613f1e565b506106b2565b818161070d610716938a6106f09601511689612b6a565b91511690612b93565b6106e9565b919290506020823d602011610751575b8161073860209383612a2d565b8101031261074c5790519091906020610692565b600080fd5b3d915061072b565b604051903d90823e3d90fd5b9093506020813d602011610792575b8161078160209383612a2d565b8101031261074c575192602061063b565b3d9150610774565b6040513d85823e3d90fd5b9091506020813d6020116107d1575b816107c160209383612a2d565b8101031261074c575190386105f2565b3d91506107b4565b6107e49192506129b2565b6107f0578184386105a2565b8380fd5b50604051903d90823e3d90fd5b610823915060203d602011610829575b61081b8183612a2d565b8101906136a3565b386104e4565b503d610811565b6040513d87823e3d90fd5b50346103345780600319360112610334576006546040516001600160a01b039091168152602090f35b50346103345780600319360112610334576020601d54604051908152f35b50346103345780600319360112610334576009546040516001600160a01b039091168152602090f35b5034610334576040366003190112610334576108c56128bf565b60406108cf6128d5565b9260018060a01b03809316815260026020522091166000526020526020604060002054604051908152f35b50346103345780600319360112610334576021546040516001600160a01b039091168152602090f35b5034610334578060031936011261033457600b546040516001600160a01b039091168152602090f35b905034610ad35761095c366128fa565b83949697939291924211610a8e57610a3a92610a329260018060a01b0395868b1697886000526004602052604060002091825492610999846135ef565b90556040519160208301937f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e2668552600060408501528b60608501528a8d1660808501528d60a085015260c08401528183015281526109f6816129f6565b519020610a016132a2565b9060405190602082019261190160f01b84526022830152604282015260428152610a2a81612a12565b519020613577565b919091613478565b1603610a49576103319261364c565b60405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152606490fd5b60405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b5080fd5b823461033457608036600319011261033457610af16128bf565b6064356001600160401b0381116103c857610b10903690600401612ab2565b90600584526007602052610b2b60ff60408620541615613a55565b610b33612f15565b5050610b3d613955565b610b526001600160a01b038416301415613ad2565b6021546001600160a01b031690811561136957600954600e54604051638eb22cdd60e01b81526004810182905260448035602483015260019082015294918791906001600160a01b0316602087606481845afa96871561079a578397611335575b5086611291575b5050602154604051632b3297f960e01b8152945060209150849060049082906001600160a01b03165afa928315611286578693611265575b50610bfe602435613d7d565b6001600160a01b03841687526024602052604087208054610c20908390612bce565b9055610c2a613882565b610c3682602435612bce565b9060006020604051610c47816129db565b828152015280516001600160801b039081166112095780610c6e81855b16828551166138a8565b168252806020830192610c86828616838651166138a8565b9382851690525116918a6014549160801b9116928b60018060801b031991828416818717176014556016549485159687156111f3575b50505050505050156111b5576001600160a01b03871688526017602052604088208054610cea908390612bce565b9055604080519283526020830191909152602435916001600160a01b0386811692908916917f3a5151e57d3bc9798e7853034ac52293d1a0e12a2b44725e75b03b21f86477a69190a4600d5486906001600160a01b0316803b15610ad3576040516340c10f1960e01b815230600482015260248035908201529082908290604490829084905af180156111aa57611192575b5050600d54600e5460095460405163095ea7b360e01b81526001600160a01b039182166004820152602481018a90529192899291169060208160448186865af1801561079a57611152575b5060095460405163095ea7b360e01b81526001600160a01b0390911660048201526024803590820152916020918391829081604481015b03925af1801561114757611101575b5060095460408051634d4d7cbd60e11b815295909286926001600160a01b03169183918b918391610e479160243591309060048601613d4e565b03925af19386851561075957869560209582916110d0575b50610e9d60018060a01b036021541694610e7f600e5493600c5496612bce565b966040519a8b9889978896630394b9c560e21b885260048801613b47565b03925af191821561079a57839261109c575b5060018060a01b03600954166020600c54606460405180948193638eb22cdd60e01b835260048301528760248301528860448301525afa90811561105f57849161106a575b50610eff8183613c81565b8015610fe2575b6001600160a01b03821684526018602052604084208054610f28908390612bce565b9055610f3681601554612bce565b601555600c546009546001600160a01b0316908590823b15610ad357610f7792849183604051809681958294630208d92960e11b8452308c60048601613b1d565b03925af1801561083057610fce575b506020936106c0926106bb9290916001600160a01b0383169081907f9ed03113de523cebfe5e49d5f8e12894b1c0d42ce805990461726444c90eab879080a460115490613b90565b610fd885916129b2565b6107f05784610f86565b5060018060a01b03600954166020600c54606460405180948193638eb22cdd60e01b835260048301528860248301528860448301525afa90811561105f57849161102d575b50610f06565b90506020813d602011611057575b8161104860209383612a2d565b8101031261074c575184611027565b3d915061103b565b6040513d86823e3d90fd5b90506020813d602011611094575b8161108560209383612a2d565b8101031261074c575184610ef4565b3d9150611078565b9091506020813d6020116110c8575b816110b860209383612a2d565b8101031261074c57519083610eaf565b3d91506110ab565b6110f2915060403d6040116110fa575b6110ea8183612a2d565b810190613d38565b905089610e5f565b503d6110e0565b906020823d60201161113f575b8161111b60209383612a2d565b8101031261113b57610e4794611132604093612e50565b50945090610e0d565b8780fd5b3d915061110e565b6040513d8a823e3d90fd5b6020813d60201161118a575b8161116b60209383612a2d565b810103126103c857602091611182610dfe92612e50565b509150610dc7565b3d915061115e565b61119b906129b2565b6111a6578587610d7c565b8580fd5b6040513d84823e3d90fd5b60405162461bcd60e51b815260206004820152601660248201527510908e88189bdc9c9bddc818d85c081c995858da195960521b6044820152606490fd5b161792161617111590508980808b818080610cbc565b60208201928061123b61122c6112228588511684612b6a565b8587511690612b93565b958461070d8188511689612b6a565b1061124c575b610c6e828092610c64565b92610c6e8261125b81936135ef565b9592505050611241565b61127f91935060203d6020116108295761081b8183612a2d565b9186610bf2565b6040513d88823e3d90fd5b6020600494959660405195868092632b3297f960e01b82525afa93841561079a578394611314575b50803b156103c857869383896112e560405197889687958694630208d92960e11b865260048601613b1d565b03925af18015611286576112fe575b9085828493610bba565b9461130c60049392966129b2565b9490916112f4565b61132e91945060203d6020116108295761081b8183612a2d565b92896112b9565b9096506020813d602011611361575b8161135160209383612a2d565b810103126103c857519589610bb3565b3d9150611344565b60405162461bcd60e51b815260206004820152601f60248201527f42423a206c65766572616765206578656375746f72206e6f742076616c6964006044820152606490fd5b823461033457610160366003190112610334576001600160a01b039060043582811690819003610ad3576001600160401b03926024358481116107f0576113f9903690600401612ab2565b9094604435938385168095036111a65761141884600554163314612adf565b806117c4575b508161166b575b5050908092935061162b575b505060643580611613575b50608435806115fb575b5060a435806115e4575b5060c435806115c0575b5060e4358061159c575b50610104358061156b575b5061012435806114f7575b506101443580611488575080f35b601e54811061149757601f5580f35b60405162461bcd60e51b815260206004820152603260248201527f4d61726b65743a206c69717569646174696f6e436f6c6c61746572616c697a616044820152711d1a5bdb94985d19481d1bdbc81cdb585b1b60721b6064820152608490fd5b611506620186a0821115612b2a565b601f54811161151857601e558161147a565b60405162461bcd60e51b815260206004820152602560248201527f4d61726b65743a20636f6c6c61746572616c697a6174696f6e5261746520746f6044820152646f2062696760d81b6064820152608490fd5b806016547fae6e0ab3b95f0a53ff9660a390ccedcbbf1f2355dce974a9841af106fddcfaba8480a36016558161146f565b6115aa620186a08210612b2a565b6115b7601b548211612b2a565b601c5581611464565b6115ce620186a08210612b2a565b6115db601c548210612b2a565b601b558161145a565b6115f2620186a08210612b2a565b601d5581611450565b61160a620186a0821115612b2a565b601a5581611446565b611622620186a0821115612b2a565b6019558161143c565b816008549182167f5a62d22209e370e38eea92cfddcd228e656e6ec139243392a760a7769f5877fd8580a36001600160a01b031916176008558180611431565b81116117b05761167c601054612978565b601f8111611761575b5083601f82116001146116ed57849582939495926116e2575b50508160011b916000199060031b1c1916176010555b7fa6f004921c944d4b8bf6e38462b00f36a58d62495d56b51f571ab78f732c98158380a19082918480611425565b01359050858061169e565b60108552601f19821695600080516020614383833981519152918660205b898210611749575050836001959697981061172f575b505050811b016010556116b4565b0135600019600384901b60f8161c19169055858080611721565b8060018496829495870135815501950192019061170b565b60108552600080516020614383833981519152601f830160051c8101602084106117a9575b601f90920160051c01905b81811061179e5750611685565b858155600101611791565b5080611786565b634e487b7160e01b84526041600452602484fd5b600f80546001600160a01b0319169190911790557f0b2d6eb667d0522c3eb86e4288afecae6c11591ffd1345d4d12407e0598bca9b8580a18661141e565b82346103345780600319360112610334576008546040516001600160a01b039091168152602090f35b823461033457806003193601126103345760206106c06136c2565b82346103345780600319360112610334576020602954604051908152f35b82346103345780600319360112610334576020601e54604051908152f35b8234610334578060031936011261033457602060ff602654166040519015158152f35b823461033457806003193601126103345760406025548151906001600160401b03908181168352831c166020820152f35b82346103345780600319360112610334576020601a54604051908152f35b82346103345760403660031901126103345761190e6128bf565b602435809281158015906119c5575b611955575b50506040519182526001600160a01b031690339060008051602061436383398151915290602090a3602060405160018152f35b3381526001602052604081205461196e838210156133cc565b6001600160a01b0384169033829003611989575b5050611922565b6040936119a09161199b841515613411565b612bc1565b3383526001602052838320558152206119ba838254612bce565b905581838080611982565b50336001600160a01b0384161461191d565b82346103345760403660031901126103345760606119ff6119f66128bf565b60243590612d0d565b9060405192835260208301526040820152f35b82346103345760403660031901126103345760206106c0611a316128bf565b60243590613170565b823461033457806003193601126103345760405181602c54611a5b81612978565b80845290600190818116908115611aee5750600114611a95575b611a9184611a8581880382612a2d565b60405191829182612a4e565b0390f35b602c8352602094507f7416c943b4a09859521022fd2e90eac0dd9026dad28fa317782a135f28a860915b828410611adb5750505081611a9193611a859282010193611a75565b8054858501870152928501928101611abf565b611a919650611a859450602092508593915060ff191682840152151560051b82010193611a75565b905034610ad3576040366003190112610ad3576004356001600160401b0381116103c857366023820112156103c857806004013590611b5482612a97565b92611b626040519485612a2d565b828452846020928386019436602482840101116103c8578060248693018737860101526024359161ffff83168093036111a657610100938486805181010312611d8c57611bae90612e50565b91611bbb60408701613456565b90611bc860608801613456565b9660808101519660a082015192611be160c0840161346a565b91818401519301519360018060a01b03808097169b1698814211611d4757928b88819897948f94610a32978f8f8f89604091611cbe9e9b50600014611d20577f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e266985b8152600488522092835493611c57856135ef565b905560405196870197885260408701528d6060870152608086015260a085015260c0840152818301528152611c8b816129f6565b519020611c966132a2565b90604051908a82019261190160f01b84526022830152604282015260428152610a2a81612a12565b1603611cdc575015611cd3576103319261364c565b610331926135fe565b6064906040519062461bcd60e51b82526004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152fd5b7f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d698611c43565b60405162461bcd60e51b815260048101899052601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b8680fd5b82346103345780600319360112610334576005546040516001600160a01b039091168152602090f35b82346103345780600319360112610334576020601b54604051908152f35b8234610334576020366003190112610334576020906040906001600160a01b03611dff6128bf565b168152602483522054604051908152f35b8234610334578060031936011261033457601454604080516001600160801b038316815260809290921c602083015290f35b823461033457604036600319011261033457611e69611e5f6128bf565b60243590336135fe565b602060405160018152f35b8234610334576020366003190112610334576020906040906001600160a01b03611e9c6128bf565b168152600483522054604051908152f35b8234610334578060031936011261033457600f546040516001600160a01b039091168152602090f35b82346103345780600319360112610334576020603054604051908152f35b82346103345780600319360112610334576020602e54604051908152f35b823461033457806003193601126103345760405181601054611f3381612978565b80845290600190818116908115611aee5750600114611f5c57611a9184611a8581880382612a2d565b60108352602094506000805160206143838339815191525b828410611f905750505081611a9193611a859282010193611a75565b8054858501870152928501928101611f74565b82346103345760203660031901126103345760043590600982101561033457602060ff611fcf84612949565b54166040519015158152f35b8234610334576020366003190112610334576020906040906001600160a01b036120036128bf565b168152600183522054604051908152f35b8234610334578060031936011261033457600a546040516001600160a01b039091168152602090f35b82346103345780600319360112610334576020602754604051908152f35b82346103345780600319360112610334576020601c54604051908152f35b82346103345780600319360112610334576020602d54604051908152f35b823461033457806003193601126103345760208054604051908152f35b82346103345780600319360112610334576006546001600160a01b03908181163381900361211e57806005549384167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08680a36001600160a01b0319928316176005551660065580f35b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b8234610334576020366003190112610334576020906040906001600160a01b0361218a6128bf565b168152601783522054604051908152f35b82346103345780600319360112610334576020601554604051908152f35b82346103345780600319360112610334576020600e54604051908152f35b82346103345780600319360112610334576020601654604051908152f35b82346103345760603660031901126103345760206106c0604435602435600435612bf4565b82346103345780600319360112610334576020601154604051908152f35b8234610334578060031936011261033457600d546040516001600160a01b039091168152602090f35b82346103345780600319360112610334576020601254604051908152f35b823461033457806003193601126103345760206106c06132a2565b82346103345780600319360112610334576020601954604051908152f35b82346103345780600319360112610334576014546040516001600160801b039091168152602090f35b82346103345780600319360112610334576020601354604051908152f35b8234610334576060366003190112610334576123196128bf565b906123226128d5565b6044359182612360575b506040519182526001600160a01b0390811692169060008051602061436383398151915290602090a3602060405160018152f35b6001600160a01b03848116808352600160209081526040842054928690612389828610156133cc565b86169384840361239e575b505050505061232c565b838652600283526040808720338852845286205460018101612408575b50926001602096936123e6879460409761199b6000805160206143638339815191529c9a1515613411565b92855252838320558152206123fc858254612bce565b90559185808581612394565b9091811061245c57926001602096936123e68a6000805160206143638339815191529a98956124398260409a612bc1565b86895260028552898920338a5285528989205594975094979950509396506123bb565b60405162461bcd60e51b815260048101849052601860248201527745524332303a20616c6c6f77616e636520746f6f206c6f7760401b6044820152606490fd5b82346103345780600319360112610334576020602a54604051908152f35b905034610ad3576124ca366128fa565b83979496979291924211610a8e5761256192610a32928a60018060a01b0396878c169889835260046020526040832091825492612506846135ef565b90556040519260208401947f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d6865260408501528b60608501528a8d1660808501528d60a085015260c08401528183015281526109f6816129f6565b1603610a4957610331926135fe565b8234610334578060031936011261033457602b546040516001600160a01b039091168152602090f35b8234610334576020366003190112610334576020906040906001600160a01b036125c16128bf565b168152601883522054604051908152f35b8234610334578060031936011261033457602090604051908152f35b82346103345780600319360112610334576020602f54604051908152f35b8234610334576040366003190112610334576004356009811015610ad3576126326128eb565b6008549091906001600160a01b031633036126e85760ff61265282612949565b541615159115159182146126ae57808260ff61267061269e94612949565b54161515827feeec81de25875ce1725479bb76f720a8defdb43dea041919ae37bb4aae9847c08780a4612949565b9060ff8019835416911617905580f35b60405162461bcd60e51b81526020600482015260126024820152714d61726b65743a2073616d6520737461746560701b6044820152606490fd5b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881d5b985d5d1a1bdc9a5e995960621b6044820152606490fd5b823461033457604036600319011261033457611e696127416128bf565b602435903361364c565b8234610334576060366003190112610334576127656128bf565b61276d6128eb565b6044359081151582036107f05760018060a01b0392839161279383600554163314612adf565b1561283757169081159081159161282f575b50156127f257806005549283167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08580a36001600160a01b03199182161760055560068054909116905580f35b60405162461bcd60e51b81526020600482015260156024820152744f776e61626c653a207a65726f206164647265737360581b6044820152606490fd5b9050846127a5565b9150501660018060a01b0319600654161760065580f35b82346103345780600319360112610334576040612869612f15565b825191151582526020820152f35b839034610ad3576040366003190112610ad35760406020926128976128bf565b61289f6128d5565b6001600160a01b0391821683526003865283832091168252845220548152f35b600435906001600160a01b038216820361074c57565b602435906001600160a01b038216820361074c57565b60243590811515820361074c57565b60e090600319011261074c576001600160a01b0390600435828116810361074c5791602435908116810361074c5790604435906064359060843560ff8116810361074c579060a4359060c43590565b6009811015612962576000526007602052604060002090565b634e487b7160e01b600052602160045260246000fd5b90600182811c921680156129a8575b602083101461299257565b634e487b7160e01b600052602260045260246000fd5b91607f1691612987565b6001600160401b0381116129c557604052565b634e487b7160e01b600052604160045260246000fd5b604081019081106001600160401b038211176129c557604052565b61010081019081106001600160401b038211176129c557604052565b608081019081106001600160401b038211176129c557604052565b90601f801991011681019081106001600160401b038211176129c557604052565b6020808252825181830181905290939260005b828110612a8357505060409293506000838284010152601f8019910116010190565b818101860151848201604001528501612a61565b6001600160401b0381116129c557601f01601f191660200190565b9181601f8401121561074c578235916001600160401b03831161074c576020838186019501011161074c57565b15612ae657565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b15612b3157565b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881b9bdd081d985b1a59607a1b6044820152606490fd5b81810292918115918404141715612b7d57565b634e487b7160e01b600052601160045260246000fd5b8115612b9d570490565b634e487b7160e01b600052601260045260246000fd5b604d8111612b7d57600a0a90565b91908203918211612b7d57565b91908201809211612b7d57565b81810392916000138015828513169184121617612b7d57565b601454919291612c3d91612c2e91612c2491612c1a906001600160801b03831690612b6a565b9060801c90612b93565b93601f5490612b6a565b612c3783612bb3565b90612b93565b808310612d0557612c51612c8d9184612bc1565b91612c88612c82612c79601e54612c73612c6a86612bb3565b60205490612bce565b90612b6a565b612c3784612bb3565b91612bb3565b612bdb565b6509184e72a00090818102918183051490151715612b7d57670de0b6b3a764000091828102928184051490151715612b7d578015612b9d57600160ff1b91808314600019831416612b7d5705906000821215612cfe578114612b7d57600003905b808211612cf9575090565b905090565b5090612cee565b505050600090565b6001600160a01b03908116600081815260176020908152604082205492959493919290918115612e4357612d3f6138c1565b90612d4b86151561306d565b6009541683600c54898752601882526064604088205491604051948593849263442c159960e01b8452600484015260248301528960448301525afa908115610830578591612e10575b5092859492612df0601893612dcb612e0499612dc6612dbd60409a620186a06022540490612b6a565b601e5490612b6a565b612b93565b815190936001600160801b03918691612de691841690612b6a565b9201511690612b93565b818110612e0857035b9783525220546130b9565b9091565b505082612df9565b90508381813d8311612e3c575b612e278183612a2d565b81010312612e385751612e04612d94565b8480fd5b503d612e1d565b5050509192505080918190565b5190811515820361074c57565b919082604091031261074c576020612e7483612e50565b92015190565b602080825260009160105491612e8f83612978565b9283828401526001908181169081600014612ef25750600114612eb4575b5050505090565b929350601060005280600020926000935b858510612ede5750505060409250010138808080612ead565b805485850160400152938201938101612ec5565b925050506040935060ff929192191683830152151560051b010138808080612ead565b600f546040805163d6d7d52560e01b81529290916001600160a01b0316828480612f4160048201612e7a565b0381600080955af18015613061578194829161302e575b50928415612fd1578315612f9757507f9f9192b5edb17356c524e08d9e025c8e2f6307e6ea52fb7968faa3081f51c3c883918260115580a25b42601355565b5162461bcd60e51b81526020600482015260146024820152734d61726b65743a20696e76616c6964207261746560601b6044820152606490fd5b91925050612fe460135460125490612bce565b4211612ff4575060115490612f91565b5162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881c985d19481d1bdbc81bdb1960621b6044820152606490fd5b9050613051919450833d851161305a575b6130498183612a2d565b810190612e5d565b93909338612f58565b503d61303f565b508251903d90823e3d90fd5b1561307457565b60405162461bcd60e51b815260206004820152601e60248201527f4d61726b65743a2065786368616e676552617465206e6f742076616c696400006044820152606490fd5b6130c482151561306d565b602060018060a01b0360095416916064600c54604051948593849263442c159960e01b845260048401526024830152600060448301525afa90811561316457600091613131575b5090612dc661311d9260225490612b6a565b620186a061312d601e5483612b6a565b0491565b906020823d821161315c575b8161314a60209383612a2d565b81010312610334575051612dc661310b565b3d915061313d565b6040513d6000823e3d90fd5b6001600160a01b03166000818152601860205260408120549092613193916130b9565b91835260176020526040832054801561329c57811561329c5781811061329c5782811015613292576014546131dc91839161199b91612c1a906001600160801b03831690612b6a565b90620186a0928383029280840485149015171561327e576132019291612c3791612bc1565b91601b5491601c54936132148585612bdb565b80820291848212600160ff1b82141661327e57818305149015171561326a57058184820194851291129080158216911516176132565750808212612cf9575090565b634e487b7160e01b81526011600452602490fd5b634e487b7160e01b83526011600452602483fd5b634e487b7160e01b85526011600452602485fd5b50505050601b5490565b50505090565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031614806133a3575b156132fd577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f000000000000000000000000000000000000000000000000000000000000000082527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a0815260c081018181106001600160401b038211176129c55760405251902090565b507f000000000000000000000000000000000000000000000000000000000000000046146132d4565b156133d357565b60405162461bcd60e51b815260206004820152601660248201527545524332303a2062616c616e636520746f6f206c6f7760501b6044820152606490fd5b1561341857565b60405162461bcd60e51b815260206004820152601660248201527545524332303a206e6f207a65726f206164647265737360501b6044820152606490fd5b51906001600160a01b038216820361074c57565b519060ff8216820361074c57565b600581101561296257806134895750565b600181036134d15760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b6044820152606490fd5b6002810361351e5760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606490fd5b60031461352757565b60405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608490fd5b9291906fa2a8918ca85bafe22016d0b997e4df60600160ff1b0383116135e35791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa156107f45781516001600160a01b038116156135dd579190565b50600190565b50505050600090600390565b6000198114612b7d5760010190565b7fe50de2333c10a9502fcb1d8ae13a51bbf423153dfc63c2b8997665b32154afc360018060a01b038092169160009083825260036020526040822094169384825260205284604082205580a4565b909160207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259160018060a01b03809416938460005260028352604060002095169485600052825280604060002055604051908152a3565b9081602091031261074c57516001600160a01b038116810361074c5790565b60ff6026541661381c576014546001600160801b031690811561381557600a54604051631848f2bf60e31b8152602093916001600160a01b03919085908290600490829086165afa80156131645785916000916137f8575b50600460405180948193631a674cc560e11b8352165afa938415613164576000946137c9575b505061375c9192670de0b6b3a764000092839160295490612b6a565b0490818110156137c057613773602a548092612bc1565b83810290808204851490151715612b7d57612c37613794926137b494612bc1565b602754926137ae602854926137a98487612bc1565b612b6a565b04612bce565b90808211612cf9575090565b50505060275490565b81813d83116137f1575b6137dd8183612a2d565b810103126107f05751925061375c38613740565b503d6137d3565b61380f9150823d84116108295761081b8183612a2d565b3861371a565b6028549150565b600a5460405163e6abad4960e01b815290602090829060049082906001600160a01b03165afa90811561316457600091613854575090565b906020823d821161387a575b8161386d60209383612a2d565b8101031261033457505190565b3d9150613860565b6040519061388f826129db565b6014546001600160801b038116835260801c6020830152565b6001600160801b039182169082160191908211612b7d57565b600060206040516138d1816129db565b82815201526001600160401b03906138f08260255460401c1642612bc1565b918215613947576139426137a991670de0b6b3a7640000613937613912613882565b9660018060801b03958694858a5116906301e1338061392f6136c2565b041690612b6a565b0416828551166138a8565b168252565b509050613952613882565b90565b604051613961816129db565b6025546001600160401b03908181168352818160401c16613989602085019180835242612bc1565b928315613a4e57602094816301e133806139a16136c2565b0416815281421683526139b2613882565b670de0b6b3a76400006139d760018060801b03976137a9898551168787511690612b6a565b04956139e8818816828451166138a8565b1680825296015160801b6001600160801b031990811690961760145551915192909416931692831760409190911b67ffffffffffffffff60401b16176025557f7484db546dcd57af0104c73c8a6968dfbaf5767f047cee0dadd0499ad7df81a0600080a3565b5050505050565b15613a5c57565b60405162461bcd60e51b815260206004820152600e60248201526d13585c9ad95d0e881c185d5cd95960921b6044820152606490fd5b15613a9957565b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881a5b9cdbdb1d995b9d607a1b6044820152606490fd5b15613ad957565b606460405162461bcd60e51b815260206004820152602060248201527f4d61726b65743a2063616e6e6f742065786563757465206f6e20697473656c666044820152fd5b6001600160a01b039182168152911660208201526040810191909152606081019190915260800190565b9491928694919360c0979487526020870152604086015260018060a01b0316606085015260a060808501528160a0850152848401376000828201840152601f01601f1916010190565b919060018060a01b03806000941684526020601781526040852054908115613c77576018815260408620548015613a4e5781613bca613882565b9460095416916064600c54604051948593849263442c159960e01b8452600484015260248301528b60448301525afa968715610759578097613c41575b5050612de6613c26612dbd613c3c969798620186a06022540490612b6a565b956137a960018060801b03948587511690612b6a565b111590565b9096508187813d8311613c70575b613c598183612a2d565b810103126103345750945194612de6613c26613c07565b503d613c4f565b5060019450505050565b6001600160a01b0316338103613c95575050565b6000818152602090600382526040918282203383528152848383205410613cfe5783825260038152828220338352815282822054600101613cd7575050505050565b613cf293825260038152828220903383525220918254612bc1565b90553880808080613a4e565b60649083519062461bcd60e51b82526004820152601460248201527313585c9ad95d0e881b9bdd08185c1c1c9bdd995960621b6044820152fd5b919082604091031261074c576020825192015190565b9081526001600160a01b0391821660208201529116604082015260608101919091526000608082015260a00190565b8015613eba57602b546040805163d6d7d52560e01b815291819083906001600160a01b031681600081613db260048201612e7a565b03925af1918215613eaf576000908193613e8d575b5015613e4a57506030549081811015613e4157602f5480821115613e3757613e1892612c3782613e0c613e00613e1295602e5497612bc1565b612c73602d5488612bc1565b92612bc1565b90612bc1565b9081613e25575050600090565b620186a091613e3391612b6a565b0490565b50505050602e5490565b505050602d5490565b5162461bcd60e51b815260206004820152601f60248201527f42423a202061737365742773206f7261636c652063616c6c206661696c6564006044820152606490fd5b905081613ea79293503d841161305a576130498183612a2d565b919038613dc7565b50513d6000823e3d90fd5b50600090565b60208101805190939291906001600160801b03908116613ee1575090925050565b908161070d81613f04613efa613f0d9686511688612b6a565b828a511690612b93565b97511687612b6a565b10613f1457565b90613952906135ef565b92909260018060a01b03928385169060009482865260209060178252604097888820548085116141e5575b5083156141a95783613f5a91614206565b948386101561416d57879885895260248452808920613f7a888254612bc1565b9055613f84613882565b9689858351613f92816129db565b8281520152613fa18689613ec0565b9760018060801b0380613fb9818c16828551166141ed565b16825286820190613fcf818a16828451166141ed565b9181831690528a9251169060018060801b03199060801b1617601455878b5260178652828b20614000888254612bc1565b9055614031838a809d886009541690600e549084518096819582946311a5cc7760e31b84528d309160048601613d4e565b03925af18015614163579061405e939291614147575b50614052888b612bc1565b80614124575b50612bc1565b80614096575b507fc8e512d8f188ca059984b5853d2bf653da902696b8512785b182b2c813789a6e94959697989950519485521692a4565b8a9084600d541690813b156103c8578351632770a7eb60e21b8152306004820152602481019190915291908290604490829084905af1801561411a577fc8e512d8f188ca059984b5853d2bf653da902696b8512785b182b2c813789a6e969798999a9b5061410b575b8a999897969550614064565b614114906129b2565b386140ff565b82513d8d823e3d90fd5b614141915061413a620186a091601a5490612b6a565b048a612bc1565b38614058565b61415d90853d87116110fa576110ea8183612a2d565b50614047565b84513d8f823e3d90fd5b885162461bcd60e51b815260048101849052601560248201527442423a2072657061796d656e7420746f6f206c6f7760581b6044820152606490fd5b885162461bcd60e51b815260048101849052601560248201527453474c3a206e6f7468696e6720746f20726570617960581b6044820152606490fd5b935038613f49565b6001600160801b039182169082160391908211612b7d57565b6001600160a01b03908116600081815260176020908152604080832054939590949293919282821461431057848091600d541687518681019063313ce56760e01b825260048152614256816129db565b51915afa3d15614308573d9061426b82612a97565b9161427888519384612a2d565b82523d868684013e5b806142fe575b156142f0578381805181010312612e38579060ff6142a9856142b2940161346a565b1692839161431f565b80156142e75760249291612c37612c826142d6938988528686528888205490612b6a565b948352522054808211612cf9575090565b50505091505090565b506142b29060ff60126142a9565b5083815114614287565b606090614281565b50505060249192935052205490565b918215801561435a575b612d055760018101809111612b7d5761434892612c73612dc692612bb3565b60058101809111612b7d57600a900490565b50811561432956feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae672a2646970667358221220a1197db6a98872461397e061d3ea7e2d9eaefdf63644f086a26f1977e9d4205c64736f6c63430008120033", + "deployedBytecode": "0x608080604052600436101561001357600080fd5b60009060e08235811c918262a02a20146128775750816302ce728f1461284e578163078dfbe71461274b578163095ea7b3146127245781630c4e84f01461260c5781630f8b29ea146125ee57816318160ddd146125d25781631c9e379b146125995781631d4d3a5d146125705781631da8bf10146124ba5781631fb8f81a1461249c57816323b872dd146122ff578163331960ff146122e157816334ce998a146122b857816334d441d01461229a5781633644e5151461227f57816337b6b7b91461226157816338d52e0f146122385781633ba0b9a91461221a5781633f741adb146121f557816340626d8b146121d757816344de240a146121b9578163473e3ce71461219b57816348e4163e146121625781634e71e0c8146120b4578163529898f214612097578163542afda314612079578163579354621461205b5781636b19ad161461203d5781636c3d8b8f1461201457816370a0823114611fdb5781637277854714611fa357816374645ff314611f1257816374c9e48114611ef4578163790c846714611ed65781637dc0d1d014611ead5781637ecebe0014611e745781637fa0b84e14611e425781638285ef4014611e1057816387b2793714611dd75781638c5d0ed314611db95781638da5cb5b14611d90578163910dd7c814611b16578163932bc4f814611a3a57816399a9702814611a125781639e15e89f146119d7578163a9059cbb146118f4578163b0e21e8a146118d6578163b27c0e74146118a5578163b7113f1914611882578163bb4cfe3b14611864578163bde39c5d14611846578163c1ad5c8d1461182b578163ce8849ed14611802578163d3fb2a38146113ae578163d4e4534e14610ad7578163d505accf1461094c57508063d8dfeb4514610923578063da863f0e146108fa578063dd62ed3e146108ab578063de40657714610882578063e0996cb614610864578063e30c39781461083b578063e7d6de8014610408578063ea64dd56146103ea578063eec0f42e146103cc578063ef2b234a14610355578063f791395d146103375763f8ba4cff1461031957600080fd5b34610334578060031936011261033457610331613955565b80f35b80fd5b50346103345780600319360112610334576020602854604051908152f35b5034610334576020366003190112610334576004356001600160a01b03818116918290036103c85761038c81600554163314612adf565b816021549182167ffb4fd7114609dd603b57adbc2082205bfbbcabf9265c4b437b472f5c592b8cd78580a36001600160a01b0319161760215580f35b8280fd5b50346103345780600319360112610334576020600c54604051908152f35b50346103345780600319360112610334576020601f54604051908152f35b5034610334576060366003190112610334576104226128bf565b6044356001600160401b0381116103c857610441903690600401612ab2565b600660005260076020527f55c5b153ab560fcde54a63b18c7f53d75501706907cef8767fbded79ab9997c75491929161047d9060ff1615613a55565b610485612f15565b505061048f613955565b6104a46001600160a01b038316301415613ad2565b6104b060243583613c81565b602154604051632b3297f960e01b815290602090829060049082906001600160a01b03165afa908115610830578591610801575b506001600160a01b038316855260186020526040852080546105099060243590612bc1565b9055610519602435601554612bc1565b6015556040519085906024356001600160a01b038083169087167f8ad4d3ff00da092c7ad9a573ea4f5f6a3dffc6712dc06d3f78f49b862297c4028580a4600954600c54906001600160a01b0316803b156107f05784848161059082968296630208d92960e11b8452602435913060048601613b1d565b03925af19182156107f45784926107d9575b505060209160018060a01b03602154169086600e54916105e0600c5491604051998a978896879563927d1df160e01b87526024359160048801613b47565b03925af191821561079a5783926107a5575b5060018060a01b0360095416600e549360405191638eb22cdd60e01b95868452806004850152856024850152826044850152602084606481855afa93841561079a578394610765575b5060209060018060a01b03861684526017825260646040852054986106678a610662613882565b613ec0565b946040519586948593845260048401526024830152600160448301525afa918215610759579161071b575b506020946106c0936106bb939092116106c8576106b0908280613f1e565b505b60115490613b90565b613a92565b604051908152f35b506106d1613882565b80516001600160801b039081166106f65750506106f0845b8280613f1e565b506106b2565b818161070d610716938a6106f09601511689612b6a565b91511690612b93565b6106e9565b919290506020823d602011610751575b8161073860209383612a2d565b8101031261074c5790519091906020610692565b600080fd5b3d915061072b565b604051903d90823e3d90fd5b9093506020813d602011610792575b8161078160209383612a2d565b8101031261074c575192602061063b565b3d9150610774565b6040513d85823e3d90fd5b9091506020813d6020116107d1575b816107c160209383612a2d565b8101031261074c575190386105f2565b3d91506107b4565b6107e49192506129b2565b6107f0578184386105a2565b8380fd5b50604051903d90823e3d90fd5b610823915060203d602011610829575b61081b8183612a2d565b8101906136a3565b386104e4565b503d610811565b6040513d87823e3d90fd5b50346103345780600319360112610334576006546040516001600160a01b039091168152602090f35b50346103345780600319360112610334576020601d54604051908152f35b50346103345780600319360112610334576009546040516001600160a01b039091168152602090f35b5034610334576040366003190112610334576108c56128bf565b60406108cf6128d5565b9260018060a01b03809316815260026020522091166000526020526020604060002054604051908152f35b50346103345780600319360112610334576021546040516001600160a01b039091168152602090f35b5034610334578060031936011261033457600b546040516001600160a01b039091168152602090f35b905034610ad35761095c366128fa565b83949697939291924211610a8e57610a3a92610a329260018060a01b0395868b1697886000526004602052604060002091825492610999846135ef565b90556040519160208301937f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e2668552600060408501528b60608501528a8d1660808501528d60a085015260c08401528183015281526109f6816129f6565b519020610a016132a2565b9060405190602082019261190160f01b84526022830152604282015260428152610a2a81612a12565b519020613577565b919091613478565b1603610a49576103319261364c565b60405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152606490fd5b60405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b5080fd5b823461033457608036600319011261033457610af16128bf565b6064356001600160401b0381116103c857610b10903690600401612ab2565b90600584526007602052610b2b60ff60408620541615613a55565b610b33612f15565b5050610b3d613955565b610b526001600160a01b038416301415613ad2565b6021546001600160a01b031690811561136957600954600e54604051638eb22cdd60e01b81526004810182905260448035602483015260019082015294918791906001600160a01b0316602087606481845afa96871561079a578397611335575b5086611291575b5050602154604051632b3297f960e01b8152945060209150849060049082906001600160a01b03165afa928315611286578693611265575b50610bfe602435613d7d565b6001600160a01b03841687526024602052604087208054610c20908390612bce565b9055610c2a613882565b610c3682602435612bce565b9060006020604051610c47816129db565b828152015280516001600160801b039081166112095780610c6e81855b16828551166138a8565b168252806020830192610c86828616838651166138a8565b9382851690525116918a6014549160801b9116928b60018060801b031991828416818717176014556016549485159687156111f3575b50505050505050156111b5576001600160a01b03871688526017602052604088208054610cea908390612bce565b9055604080519283526020830191909152602435916001600160a01b0386811692908916917f3a5151e57d3bc9798e7853034ac52293d1a0e12a2b44725e75b03b21f86477a69190a4600d5486906001600160a01b0316803b15610ad3576040516340c10f1960e01b815230600482015260248035908201529082908290604490829084905af180156111aa57611192575b5050600d54600e5460095460405163095ea7b360e01b81526001600160a01b039182166004820152602481018a90529192899291169060208160448186865af1801561079a57611152575b5060095460405163095ea7b360e01b81526001600160a01b0390911660048201526024803590820152916020918391829081604481015b03925af1801561114757611101575b5060095460408051634d4d7cbd60e11b815295909286926001600160a01b03169183918b918391610e479160243591309060048601613d4e565b03925af19386851561075957869560209582916110d0575b50610e9d60018060a01b036021541694610e7f600e5493600c5496612bce565b966040519a8b9889978896630394b9c560e21b885260048801613b47565b03925af191821561079a57839261109c575b5060018060a01b03600954166020600c54606460405180948193638eb22cdd60e01b835260048301528760248301528860448301525afa90811561105f57849161106a575b50610eff8183613c81565b8015610fe2575b6001600160a01b03821684526018602052604084208054610f28908390612bce565b9055610f3681601554612bce565b601555600c546009546001600160a01b0316908590823b15610ad357610f7792849183604051809681958294630208d92960e11b8452308c60048601613b1d565b03925af1801561083057610fce575b506020936106c0926106bb9290916001600160a01b0383169081907f9ed03113de523cebfe5e49d5f8e12894b1c0d42ce805990461726444c90eab879080a460115490613b90565b610fd885916129b2565b6107f05784610f86565b5060018060a01b03600954166020600c54606460405180948193638eb22cdd60e01b835260048301528860248301528860448301525afa90811561105f57849161102d575b50610f06565b90506020813d602011611057575b8161104860209383612a2d565b8101031261074c575184611027565b3d915061103b565b6040513d86823e3d90fd5b90506020813d602011611094575b8161108560209383612a2d565b8101031261074c575184610ef4565b3d9150611078565b9091506020813d6020116110c8575b816110b860209383612a2d565b8101031261074c57519083610eaf565b3d91506110ab565b6110f2915060403d6040116110fa575b6110ea8183612a2d565b810190613d38565b905089610e5f565b503d6110e0565b906020823d60201161113f575b8161111b60209383612a2d565b8101031261113b57610e4794611132604093612e50565b50945090610e0d565b8780fd5b3d915061110e565b6040513d8a823e3d90fd5b6020813d60201161118a575b8161116b60209383612a2d565b810103126103c857602091611182610dfe92612e50565b509150610dc7565b3d915061115e565b61119b906129b2565b6111a6578587610d7c565b8580fd5b6040513d84823e3d90fd5b60405162461bcd60e51b815260206004820152601660248201527510908e88189bdc9c9bddc818d85c081c995858da195960521b6044820152606490fd5b161792161617111590508980808b818080610cbc565b60208201928061123b61122c6112228588511684612b6a565b8587511690612b93565b958461070d8188511689612b6a565b1061124c575b610c6e828092610c64565b92610c6e8261125b81936135ef565b9592505050611241565b61127f91935060203d6020116108295761081b8183612a2d565b9186610bf2565b6040513d88823e3d90fd5b6020600494959660405195868092632b3297f960e01b82525afa93841561079a578394611314575b50803b156103c857869383896112e560405197889687958694630208d92960e11b865260048601613b1d565b03925af18015611286576112fe575b9085828493610bba565b9461130c60049392966129b2565b9490916112f4565b61132e91945060203d6020116108295761081b8183612a2d565b92896112b9565b9096506020813d602011611361575b8161135160209383612a2d565b810103126103c857519589610bb3565b3d9150611344565b60405162461bcd60e51b815260206004820152601f60248201527f42423a206c65766572616765206578656375746f72206e6f742076616c6964006044820152606490fd5b823461033457610160366003190112610334576001600160a01b039060043582811690819003610ad3576001600160401b03926024358481116107f0576113f9903690600401612ab2565b9094604435938385168095036111a65761141884600554163314612adf565b806117c4575b508161166b575b5050908092935061162b575b505060643580611613575b50608435806115fb575b5060a435806115e4575b5060c435806115c0575b5060e4358061159c575b50610104358061156b575b5061012435806114f7575b506101443580611488575080f35b601e54811061149757601f5580f35b60405162461bcd60e51b815260206004820152603260248201527f4d61726b65743a206c69717569646174696f6e436f6c6c61746572616c697a616044820152711d1a5bdb94985d19481d1bdbc81cdb585b1b60721b6064820152608490fd5b611506620186a0821115612b2a565b601f54811161151857601e558161147a565b60405162461bcd60e51b815260206004820152602560248201527f4d61726b65743a20636f6c6c61746572616c697a6174696f6e5261746520746f6044820152646f2062696760d81b6064820152608490fd5b806016547fae6e0ab3b95f0a53ff9660a390ccedcbbf1f2355dce974a9841af106fddcfaba8480a36016558161146f565b6115aa620186a08210612b2a565b6115b7601b548211612b2a565b601c5581611464565b6115ce620186a08210612b2a565b6115db601c548210612b2a565b601b558161145a565b6115f2620186a08210612b2a565b601d5581611450565b61160a620186a0821115612b2a565b601a5581611446565b611622620186a0821115612b2a565b6019558161143c565b816008549182167f5a62d22209e370e38eea92cfddcd228e656e6ec139243392a760a7769f5877fd8580a36001600160a01b031916176008558180611431565b81116117b05761167c601054612978565b601f8111611761575b5083601f82116001146116ed57849582939495926116e2575b50508160011b916000199060031b1c1916176010555b7fa6f004921c944d4b8bf6e38462b00f36a58d62495d56b51f571ab78f732c98158380a19082918480611425565b01359050858061169e565b60108552601f19821695600080516020614383833981519152918660205b898210611749575050836001959697981061172f575b505050811b016010556116b4565b0135600019600384901b60f8161c19169055858080611721565b8060018496829495870135815501950192019061170b565b60108552600080516020614383833981519152601f830160051c8101602084106117a9575b601f90920160051c01905b81811061179e5750611685565b858155600101611791565b5080611786565b634e487b7160e01b84526041600452602484fd5b600f80546001600160a01b0319169190911790557f0b2d6eb667d0522c3eb86e4288afecae6c11591ffd1345d4d12407e0598bca9b8580a18661141e565b82346103345780600319360112610334576008546040516001600160a01b039091168152602090f35b823461033457806003193601126103345760206106c06136c2565b82346103345780600319360112610334576020602954604051908152f35b82346103345780600319360112610334576020601e54604051908152f35b8234610334578060031936011261033457602060ff602654166040519015158152f35b823461033457806003193601126103345760406025548151906001600160401b03908181168352831c166020820152f35b82346103345780600319360112610334576020601a54604051908152f35b82346103345760403660031901126103345761190e6128bf565b602435809281158015906119c5575b611955575b50506040519182526001600160a01b031690339060008051602061436383398151915290602090a3602060405160018152f35b3381526001602052604081205461196e838210156133cc565b6001600160a01b0384169033829003611989575b5050611922565b6040936119a09161199b841515613411565b612bc1565b3383526001602052838320558152206119ba838254612bce565b905581838080611982565b50336001600160a01b0384161461191d565b82346103345760403660031901126103345760606119ff6119f66128bf565b60243590612d0d565b9060405192835260208301526040820152f35b82346103345760403660031901126103345760206106c0611a316128bf565b60243590613170565b823461033457806003193601126103345760405181602c54611a5b81612978565b80845290600190818116908115611aee5750600114611a95575b611a9184611a8581880382612a2d565b60405191829182612a4e565b0390f35b602c8352602094507f7416c943b4a09859521022fd2e90eac0dd9026dad28fa317782a135f28a860915b828410611adb5750505081611a9193611a859282010193611a75565b8054858501870152928501928101611abf565b611a919650611a859450602092508593915060ff191682840152151560051b82010193611a75565b905034610ad3576040366003190112610ad3576004356001600160401b0381116103c857366023820112156103c857806004013590611b5482612a97565b92611b626040519485612a2d565b828452846020928386019436602482840101116103c8578060248693018737860101526024359161ffff83168093036111a657610100938486805181010312611d8c57611bae90612e50565b91611bbb60408701613456565b90611bc860608801613456565b9660808101519660a082015192611be160c0840161346a565b91818401519301519360018060a01b03808097169b1698814211611d4757928b88819897948f94610a32978f8f8f89604091611cbe9e9b50600014611d20577f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e266985b8152600488522092835493611c57856135ef565b905560405196870197885260408701528d6060870152608086015260a085015260c0840152818301528152611c8b816129f6565b519020611c966132a2565b90604051908a82019261190160f01b84526022830152604282015260428152610a2a81612a12565b1603611cdc575015611cd3576103319261364c565b610331926135fe565b6064906040519062461bcd60e51b82526004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152fd5b7f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d698611c43565b60405162461bcd60e51b815260048101899052601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b8680fd5b82346103345780600319360112610334576005546040516001600160a01b039091168152602090f35b82346103345780600319360112610334576020601b54604051908152f35b8234610334576020366003190112610334576020906040906001600160a01b03611dff6128bf565b168152602483522054604051908152f35b8234610334578060031936011261033457601454604080516001600160801b038316815260809290921c602083015290f35b823461033457604036600319011261033457611e69611e5f6128bf565b60243590336135fe565b602060405160018152f35b8234610334576020366003190112610334576020906040906001600160a01b03611e9c6128bf565b168152600483522054604051908152f35b8234610334578060031936011261033457600f546040516001600160a01b039091168152602090f35b82346103345780600319360112610334576020603054604051908152f35b82346103345780600319360112610334576020602e54604051908152f35b823461033457806003193601126103345760405181601054611f3381612978565b80845290600190818116908115611aee5750600114611f5c57611a9184611a8581880382612a2d565b60108352602094506000805160206143838339815191525b828410611f905750505081611a9193611a859282010193611a75565b8054858501870152928501928101611f74565b82346103345760203660031901126103345760043590600982101561033457602060ff611fcf84612949565b54166040519015158152f35b8234610334576020366003190112610334576020906040906001600160a01b036120036128bf565b168152600183522054604051908152f35b8234610334578060031936011261033457600a546040516001600160a01b039091168152602090f35b82346103345780600319360112610334576020602754604051908152f35b82346103345780600319360112610334576020601c54604051908152f35b82346103345780600319360112610334576020602d54604051908152f35b823461033457806003193601126103345760208054604051908152f35b82346103345780600319360112610334576006546001600160a01b03908181163381900361211e57806005549384167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08680a36001600160a01b0319928316176005551660065580f35b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b8234610334576020366003190112610334576020906040906001600160a01b0361218a6128bf565b168152601783522054604051908152f35b82346103345780600319360112610334576020601554604051908152f35b82346103345780600319360112610334576020600e54604051908152f35b82346103345780600319360112610334576020601654604051908152f35b82346103345760603660031901126103345760206106c0604435602435600435612bf4565b82346103345780600319360112610334576020601154604051908152f35b8234610334578060031936011261033457600d546040516001600160a01b039091168152602090f35b82346103345780600319360112610334576020601254604051908152f35b823461033457806003193601126103345760206106c06132a2565b82346103345780600319360112610334576020601954604051908152f35b82346103345780600319360112610334576014546040516001600160801b039091168152602090f35b82346103345780600319360112610334576020601354604051908152f35b8234610334576060366003190112610334576123196128bf565b906123226128d5565b6044359182612360575b506040519182526001600160a01b0390811692169060008051602061436383398151915290602090a3602060405160018152f35b6001600160a01b03848116808352600160209081526040842054928690612389828610156133cc565b86169384840361239e575b505050505061232c565b838652600283526040808720338852845286205460018101612408575b50926001602096936123e6879460409761199b6000805160206143638339815191529c9a1515613411565b92855252838320558152206123fc858254612bce565b90559185808581612394565b9091811061245c57926001602096936123e68a6000805160206143638339815191529a98956124398260409a612bc1565b86895260028552898920338a5285528989205594975094979950509396506123bb565b60405162461bcd60e51b815260048101849052601860248201527745524332303a20616c6c6f77616e636520746f6f206c6f7760401b6044820152606490fd5b82346103345780600319360112610334576020602a54604051908152f35b905034610ad3576124ca366128fa565b83979496979291924211610a8e5761256192610a32928a60018060a01b0396878c169889835260046020526040832091825492612506846135ef565b90556040519260208401947f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d6865260408501528b60608501528a8d1660808501528d60a085015260c08401528183015281526109f6816129f6565b1603610a4957610331926135fe565b8234610334578060031936011261033457602b546040516001600160a01b039091168152602090f35b8234610334576020366003190112610334576020906040906001600160a01b036125c16128bf565b168152601883522054604051908152f35b8234610334578060031936011261033457602090604051908152f35b82346103345780600319360112610334576020602f54604051908152f35b8234610334576040366003190112610334576004356009811015610ad3576126326128eb565b6008549091906001600160a01b031633036126e85760ff61265282612949565b541615159115159182146126ae57808260ff61267061269e94612949565b54161515827feeec81de25875ce1725479bb76f720a8defdb43dea041919ae37bb4aae9847c08780a4612949565b9060ff8019835416911617905580f35b60405162461bcd60e51b81526020600482015260126024820152714d61726b65743a2073616d6520737461746560701b6044820152606490fd5b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881d5b985d5d1a1bdc9a5e995960621b6044820152606490fd5b823461033457604036600319011261033457611e696127416128bf565b602435903361364c565b8234610334576060366003190112610334576127656128bf565b61276d6128eb565b6044359081151582036107f05760018060a01b0392839161279383600554163314612adf565b1561283757169081159081159161282f575b50156127f257806005549283167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08580a36001600160a01b03199182161760055560068054909116905580f35b60405162461bcd60e51b81526020600482015260156024820152744f776e61626c653a207a65726f206164647265737360581b6044820152606490fd5b9050846127a5565b9150501660018060a01b0319600654161760065580f35b82346103345780600319360112610334576040612869612f15565b825191151582526020820152f35b839034610ad3576040366003190112610ad35760406020926128976128bf565b61289f6128d5565b6001600160a01b0391821683526003865283832091168252845220548152f35b600435906001600160a01b038216820361074c57565b602435906001600160a01b038216820361074c57565b60243590811515820361074c57565b60e090600319011261074c576001600160a01b0390600435828116810361074c5791602435908116810361074c5790604435906064359060843560ff8116810361074c579060a4359060c43590565b6009811015612962576000526007602052604060002090565b634e487b7160e01b600052602160045260246000fd5b90600182811c921680156129a8575b602083101461299257565b634e487b7160e01b600052602260045260246000fd5b91607f1691612987565b6001600160401b0381116129c557604052565b634e487b7160e01b600052604160045260246000fd5b604081019081106001600160401b038211176129c557604052565b61010081019081106001600160401b038211176129c557604052565b608081019081106001600160401b038211176129c557604052565b90601f801991011681019081106001600160401b038211176129c557604052565b6020808252825181830181905290939260005b828110612a8357505060409293506000838284010152601f8019910116010190565b818101860151848201604001528501612a61565b6001600160401b0381116129c557601f01601f191660200190565b9181601f8401121561074c578235916001600160401b03831161074c576020838186019501011161074c57565b15612ae657565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b15612b3157565b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881b9bdd081d985b1a59607a1b6044820152606490fd5b81810292918115918404141715612b7d57565b634e487b7160e01b600052601160045260246000fd5b8115612b9d570490565b634e487b7160e01b600052601260045260246000fd5b604d8111612b7d57600a0a90565b91908203918211612b7d57565b91908201809211612b7d57565b81810392916000138015828513169184121617612b7d57565b601454919291612c3d91612c2e91612c2491612c1a906001600160801b03831690612b6a565b9060801c90612b93565b93601f5490612b6a565b612c3783612bb3565b90612b93565b808310612d0557612c51612c8d9184612bc1565b91612c88612c82612c79601e54612c73612c6a86612bb3565b60205490612bce565b90612b6a565b612c3784612bb3565b91612bb3565b612bdb565b6509184e72a00090818102918183051490151715612b7d57670de0b6b3a764000091828102928184051490151715612b7d578015612b9d57600160ff1b91808314600019831416612b7d5705906000821215612cfe578114612b7d57600003905b808211612cf9575090565b905090565b5090612cee565b505050600090565b6001600160a01b03908116600081815260176020908152604082205492959493919290918115612e4357612d3f6138c1565b90612d4b86151561306d565b6009541683600c54898752601882526064604088205491604051948593849263442c159960e01b8452600484015260248301528960448301525afa908115610830578591612e10575b5092859492612df0601893612dcb612e0499612dc6612dbd60409a620186a06022540490612b6a565b601e5490612b6a565b612b93565b815190936001600160801b03918691612de691841690612b6a565b9201511690612b93565b818110612e0857035b9783525220546130b9565b9091565b505082612df9565b90508381813d8311612e3c575b612e278183612a2d565b81010312612e385751612e04612d94565b8480fd5b503d612e1d565b5050509192505080918190565b5190811515820361074c57565b919082604091031261074c576020612e7483612e50565b92015190565b602080825260009160105491612e8f83612978565b9283828401526001908181169081600014612ef25750600114612eb4575b5050505090565b929350601060005280600020926000935b858510612ede5750505060409250010138808080612ead565b805485850160400152938201938101612ec5565b925050506040935060ff929192191683830152151560051b010138808080612ead565b600f546040805163d6d7d52560e01b81529290916001600160a01b0316828480612f4160048201612e7a565b0381600080955af18015613061578194829161302e575b50928415612fd1578315612f9757507f9f9192b5edb17356c524e08d9e025c8e2f6307e6ea52fb7968faa3081f51c3c883918260115580a25b42601355565b5162461bcd60e51b81526020600482015260146024820152734d61726b65743a20696e76616c6964207261746560601b6044820152606490fd5b91925050612fe460135460125490612bce565b4211612ff4575060115490612f91565b5162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881c985d19481d1bdbc81bdb1960621b6044820152606490fd5b9050613051919450833d851161305a575b6130498183612a2d565b810190612e5d565b93909338612f58565b503d61303f565b508251903d90823e3d90fd5b1561307457565b60405162461bcd60e51b815260206004820152601e60248201527f4d61726b65743a2065786368616e676552617465206e6f742076616c696400006044820152606490fd5b6130c482151561306d565b602060018060a01b0360095416916064600c54604051948593849263442c159960e01b845260048401526024830152600060448301525afa90811561316457600091613131575b5090612dc661311d9260225490612b6a565b620186a061312d601e5483612b6a565b0491565b906020823d821161315c575b8161314a60209383612a2d565b81010312610334575051612dc661310b565b3d915061313d565b6040513d6000823e3d90fd5b6001600160a01b03166000818152601860205260408120549092613193916130b9565b91835260176020526040832054801561329c57811561329c5781811061329c5782811015613292576014546131dc91839161199b91612c1a906001600160801b03831690612b6a565b90620186a0928383029280840485149015171561327e576132019291612c3791612bc1565b91601b5491601c54936132148585612bdb565b80820291848212600160ff1b82141661327e57818305149015171561326a57058184820194851291129080158216911516176132565750808212612cf9575090565b634e487b7160e01b81526011600452602490fd5b634e487b7160e01b83526011600452602483fd5b634e487b7160e01b85526011600452602485fd5b50505050601b5490565b50505090565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031614806133a3575b156132fd577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f000000000000000000000000000000000000000000000000000000000000000082527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a0815260c081018181106001600160401b038211176129c55760405251902090565b507f000000000000000000000000000000000000000000000000000000000000000046146132d4565b156133d357565b60405162461bcd60e51b815260206004820152601660248201527545524332303a2062616c616e636520746f6f206c6f7760501b6044820152606490fd5b1561341857565b60405162461bcd60e51b815260206004820152601660248201527545524332303a206e6f207a65726f206164647265737360501b6044820152606490fd5b51906001600160a01b038216820361074c57565b519060ff8216820361074c57565b600581101561296257806134895750565b600181036134d15760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b6044820152606490fd5b6002810361351e5760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606490fd5b60031461352757565b60405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608490fd5b9291906fa2a8918ca85bafe22016d0b997e4df60600160ff1b0383116135e35791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa156107f45781516001600160a01b038116156135dd579190565b50600190565b50505050600090600390565b6000198114612b7d5760010190565b7fe50de2333c10a9502fcb1d8ae13a51bbf423153dfc63c2b8997665b32154afc360018060a01b038092169160009083825260036020526040822094169384825260205284604082205580a4565b909160207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259160018060a01b03809416938460005260028352604060002095169485600052825280604060002055604051908152a3565b9081602091031261074c57516001600160a01b038116810361074c5790565b60ff6026541661381c576014546001600160801b031690811561381557600a54604051631848f2bf60e31b8152602093916001600160a01b03919085908290600490829086165afa80156131645785916000916137f8575b50600460405180948193631a674cc560e11b8352165afa938415613164576000946137c9575b505061375c9192670de0b6b3a764000092839160295490612b6a565b0490818110156137c057613773602a548092612bc1565b83810290808204851490151715612b7d57612c37613794926137b494612bc1565b602754926137ae602854926137a98487612bc1565b612b6a565b04612bce565b90808211612cf9575090565b50505060275490565b81813d83116137f1575b6137dd8183612a2d565b810103126107f05751925061375c38613740565b503d6137d3565b61380f9150823d84116108295761081b8183612a2d565b3861371a565b6028549150565b600a5460405163e6abad4960e01b815290602090829060049082906001600160a01b03165afa90811561316457600091613854575090565b906020823d821161387a575b8161386d60209383612a2d565b8101031261033457505190565b3d9150613860565b6040519061388f826129db565b6014546001600160801b038116835260801c6020830152565b6001600160801b039182169082160191908211612b7d57565b600060206040516138d1816129db565b82815201526001600160401b03906138f08260255460401c1642612bc1565b918215613947576139426137a991670de0b6b3a7640000613937613912613882565b9660018060801b03958694858a5116906301e1338061392f6136c2565b041690612b6a565b0416828551166138a8565b168252565b509050613952613882565b90565b604051613961816129db565b6025546001600160401b03908181168352818160401c16613989602085019180835242612bc1565b928315613a4e57602094816301e133806139a16136c2565b0416815281421683526139b2613882565b670de0b6b3a76400006139d760018060801b03976137a9898551168787511690612b6a565b04956139e8818816828451166138a8565b1680825296015160801b6001600160801b031990811690961760145551915192909416931692831760409190911b67ffffffffffffffff60401b16176025557f7484db546dcd57af0104c73c8a6968dfbaf5767f047cee0dadd0499ad7df81a0600080a3565b5050505050565b15613a5c57565b60405162461bcd60e51b815260206004820152600e60248201526d13585c9ad95d0e881c185d5cd95960921b6044820152606490fd5b15613a9957565b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881a5b9cdbdb1d995b9d607a1b6044820152606490fd5b15613ad957565b606460405162461bcd60e51b815260206004820152602060248201527f4d61726b65743a2063616e6e6f742065786563757465206f6e20697473656c666044820152fd5b6001600160a01b039182168152911660208201526040810191909152606081019190915260800190565b9491928694919360c0979487526020870152604086015260018060a01b0316606085015260a060808501528160a0850152848401376000828201840152601f01601f1916010190565b919060018060a01b03806000941684526020601781526040852054908115613c77576018815260408620548015613a4e5781613bca613882565b9460095416916064600c54604051948593849263442c159960e01b8452600484015260248301528b60448301525afa968715610759578097613c41575b5050612de6613c26612dbd613c3c969798620186a06022540490612b6a565b956137a960018060801b03948587511690612b6a565b111590565b9096508187813d8311613c70575b613c598183612a2d565b810103126103345750945194612de6613c26613c07565b503d613c4f565b5060019450505050565b6001600160a01b0316338103613c95575050565b6000818152602090600382526040918282203383528152848383205410613cfe5783825260038152828220338352815282822054600101613cd7575050505050565b613cf293825260038152828220903383525220918254612bc1565b90553880808080613a4e565b60649083519062461bcd60e51b82526004820152601460248201527313585c9ad95d0e881b9bdd08185c1c1c9bdd995960621b6044820152fd5b919082604091031261074c576020825192015190565b9081526001600160a01b0391821660208201529116604082015260608101919091526000608082015260a00190565b8015613eba57602b546040805163d6d7d52560e01b815291819083906001600160a01b031681600081613db260048201612e7a565b03925af1918215613eaf576000908193613e8d575b5015613e4a57506030549081811015613e4157602f5480821115613e3757613e1892612c3782613e0c613e00613e1295602e5497612bc1565b612c73602d5488612bc1565b92612bc1565b90612bc1565b9081613e25575050600090565b620186a091613e3391612b6a565b0490565b50505050602e5490565b505050602d5490565b5162461bcd60e51b815260206004820152601f60248201527f42423a202061737365742773206f7261636c652063616c6c206661696c6564006044820152606490fd5b905081613ea79293503d841161305a576130498183612a2d565b919038613dc7565b50513d6000823e3d90fd5b50600090565b60208101805190939291906001600160801b03908116613ee1575090925050565b908161070d81613f04613efa613f0d9686511688612b6a565b828a511690612b93565b97511687612b6a565b10613f1457565b90613952906135ef565b92909260018060a01b03928385169060009482865260209060178252604097888820548085116141e5575b5083156141a95783613f5a91614206565b948386101561416d57879885895260248452808920613f7a888254612bc1565b9055613f84613882565b9689858351613f92816129db565b8281520152613fa18689613ec0565b9760018060801b0380613fb9818c16828551166141ed565b16825286820190613fcf818a16828451166141ed565b9181831690528a9251169060018060801b03199060801b1617601455878b5260178652828b20614000888254612bc1565b9055614031838a809d886009541690600e549084518096819582946311a5cc7760e31b84528d309160048601613d4e565b03925af18015614163579061405e939291614147575b50614052888b612bc1565b80614124575b50612bc1565b80614096575b507fc8e512d8f188ca059984b5853d2bf653da902696b8512785b182b2c813789a6e94959697989950519485521692a4565b8a9084600d541690813b156103c8578351632770a7eb60e21b8152306004820152602481019190915291908290604490829084905af1801561411a577fc8e512d8f188ca059984b5853d2bf653da902696b8512785b182b2c813789a6e969798999a9b5061410b575b8a999897969550614064565b614114906129b2565b386140ff565b82513d8d823e3d90fd5b614141915061413a620186a091601a5490612b6a565b048a612bc1565b38614058565b61415d90853d87116110fa576110ea8183612a2d565b50614047565b84513d8f823e3d90fd5b885162461bcd60e51b815260048101849052601560248201527442423a2072657061796d656e7420746f6f206c6f7760581b6044820152606490fd5b885162461bcd60e51b815260048101849052601560248201527453474c3a206e6f7468696e6720746f20726570617960581b6044820152606490fd5b935038613f49565b6001600160801b039182169082160391908211612b7d57565b6001600160a01b03908116600081815260176020908152604080832054939590949293919282821461431057848091600d541687518681019063313ce56760e01b825260048152614256816129db565b51915afa3d15614308573d9061426b82612a97565b9161427888519384612a2d565b82523d868684013e5b806142fe575b156142f0578381805181010312612e38579060ff6142a9856142b2940161346a565b1692839161431f565b80156142e75760249291612c37612c826142d6938988528686528888205490612b6a565b948352522054808211612cf9575090565b50505091505090565b506142b29060ff60126142a9565b5083815114614287565b606090614281565b50505060249192935052205490565b918215801561435a575b612d055760018101809111612b7d5761434892612c73612dc692612bb3565b60058101809111612b7d57600a900490565b50811561432956feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae672a2646970667358221220a1197db6a98872461397e061d3ea7e2d9eaefdf63644f086a26f1977e9d4205c64736f6c63430008120033", "linkReferences": {}, "deployedLinkReferences": {} } diff --git a/src/artifacts/tapioca-bar/BBLiquidation.json b/src/artifacts/tapioca-bar/BBLiquidation.json index 33ba52f7..26594ed5 100644 --- a/src/artifacts/tapioca-bar/BBLiquidation.json +++ b/src/artifacts/tapioca-bar/BBLiquidation.json @@ -65,13 +65,13 @@ { "indexed": true, "internalType": "address", - "name": "_oldVal", + "name": "oldVal", "type": "address" }, { "indexed": true, "internalType": "address", - "name": "_newVal", + "name": "newVal", "type": "address" } ], @@ -135,6 +135,25 @@ "name": "ExchangeRateDurationUpdated", "type": "event" }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "oldVal", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newVal", + "type": "address" + } + ], + "name": "LeverageExecutorSet", + "type": "event" + }, { "anonymous": false, "inputs": [ @@ -516,6 +535,37 @@ "name": "UpdateMinMaxMintFee", "type": "event" }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint256", + "name": "oldMin", + "type": "uint256" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "newMin", + "type": "uint256" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "oldMax", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "newMax", + "type": "uint256" + } + ], + "name": "UpdateMinMaxMintRange", + "type": "event" + }, { "inputs": [], "name": "DOMAIN_SEPARATOR", @@ -958,6 +1008,19 @@ "stateMutability": "view", "type": "function" }, + { + "inputs": [], + "name": "leverageExecutor", + "outputs": [ + { + "internalType": "contract ILeverageExecutor", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, { "inputs": [ { @@ -1092,6 +1155,19 @@ "stateMutability": "view", "type": "function" }, + { + "inputs": [], + "name": "maxMintFeeStart", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, { "inputs": [], "name": "minDebtRate", @@ -1131,6 +1207,19 @@ "stateMutability": "view", "type": "function" }, + { + "inputs": [], + "name": "minMintFeeStart", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, { "inputs": [ { @@ -1396,6 +1485,19 @@ "stateMutability": "view", "type": "function" }, + { + "inputs": [ + { + "internalType": "contract ILeverageExecutor", + "name": "_executor", + "type": "address" + } + ], + "name": "setLeverageExecutor", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, { "inputs": [ { @@ -1680,8 +1782,8 @@ "type": "function" } ], - "bytecode": "0x61014080604052346200018a5762000017816200018f565b600f81526001602082016e546170696f63612042696742616e6760881b8152602060405162000046816200018f565b8381520192603160f81b845251902091208160e052610100918183524660a0526040519160208301907f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f92838352604085015260608401524660808401523060a084015260a0835260c083019280841060018060401b03851117620001745760408490525190206080523060c052610120908152600580546001600160a01b0319163390811790915560007f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a362013880601b5562015f90601c55612710601d55612ee06020556103e8602d556143b69283620001ac843960805183613688015260a05183613753015260c05183613652015260e051836136d7015251826136fd015251816136b40152f35b634e487b7160e01b600052604160045260246000fd5b600080fd5b604081019081106001600160401b03821117620001745760405256fe608080604052600436101561001357600080fd5b60e0600035811c918262a02a2014612c715750816302ce728f14612b15578163078dfbe714612a11578163095ea7b3146129eb5781630c4e84f0146128d157816318160ddd146128b55781631c9e379b1461287b5781631d4d3a5d146128525781631da8bf101461279b5781631fb8f81a1461277d57816323b872dd146125d9578163331960ff146125bb57816334ce998a1461259257816334d441d0146125745781633644e5151461255957816337b6b7b91461253b57816338d52e0f146125125781633ba0b9a9146124f45781633f741adb146124d057816340626d8b146124b257816344de240a14612494578163473e3ce71461247657816348e4163e1461243c5781634e71e0c81461238e578163529898f214612371578163542afda31461235357816357935462146123355781636b19ad16146123175781636c3d8b8f146122ee57816370a08231146122b4578163727785471461227e57816374645ff3146121eb57816374c9e481146121cd5781637dc0d1d0146121a45781637ecebe001461216a5781637fa0b84e146121395781638285ef401461210757816387b27937146120cd5781638c5d0ed3146120af5781638da5cb5b14612086578163910dd7c814611e36578163932bc4f814611d5457816399a9702814611d2d5781639e15e89f14611ce4578163a28e6b8214611828578163a9059cbb14611741578163b0e21e8a14611723578163b27c0e74146116f2578163b7113f19146116cf578163bb4cfe3b146116b1578163bde39c5d14611693578163c1ad5c8d14611670578163ce8849ed14611647578163d3fb2a3814611204578163d505accf1461107f57508063d8dfeb4514611056578063dd62ed3e14611005578063de40657714610fdc578063e0996cb614610fbe578063e30c397814610f95578063e5644d8b14610365578063ea64dd5614610347578063eec0f42e14610329578063f791395d1461030b5763f8ba4cff146102eb57600080fd5b3461030657600036600319011261030657610304613d06565b005b600080fd5b34610306576000366003190112610306576020602754604051908152f35b34610306576000366003190112610306576020600c54604051908152f35b34610306576000366003190112610306576020601f54604051908152f35b34610306576080366003190112610306576004356001600160401b03811161030657610395903690600401612ee2565b906024356001600160401b038111610306576103b5903690600401612ee2565b6044356001600160401b038111610306576103d4903690600401612ee2565b9290916064356001600160401b038111610306576103f6903690600401612ee2565b9490916004600052600760205260ff60406000205416610f5f578715610f1f57808803610ee457610428828914613e5c565b610433828714613e5c565b600f546040805163d6d7d52560e01b8152959186906001600160a01b031681600081610461600482016133b0565b03925af1948515610a1b57600090600096610eb0575b508581610ea6575b5015610e9c57846011555b8415610e4c57610498613d06565b60009860005b8181106104e7578a156104ad57005b60405162461bcd60e51b815260206004820152601260248201527110908e881b9bc81d5cd95c9cc8199bdd5b9960721b6044820152606490fd5b6104f281838c614223565b356001600160a01b03811681036103065761050d8882614233565b15610522575b5061051d9061399b565b61049e565b9a61052c9061399b565b9a610538828686614223565b359061054583888c614223565b35906001600160a01b0382168203610306578b8410156109d8578360051b890135601e198a360301811215610306578901926001600160401b03843511610306578335360360208501136103065761059d8b83613545565b938b15610e075760018060a01b03600954166020600c5460018060a01b03861660005260188252606460406000205491604051948593849263442c159960e01b845260048401526024830152600060448301525afa908115610a1b578d90600092610dd1575b506106146106199260215490612f9d565b612fc6565b9360018060a01b038416600052601760205261063a8560406000205461307a565b80601d5480610db2575b5080851115610dab575b6001600160a01b0386166000908152601760205260409020549081811115610da2575080965b1115610d69578d9381811115610d6257505b6001600160a01b0385166000908152601760205260409020549081811115610d5757506106b38180612ff4565b6001600160a01b0386166000908152601760205260409020556106d4613c33565b6020810180519091906001600160801b0316610d25575050602081965b606461071761070e60018060a01b036009541698600c5494612f9d565b60215490612fc6565b916040519788938492638eb22cdd60e01b845260048401526024830152600060448301525afa938415610a1b57600094610cf1575b506001600160a01b0385166000908152601860205260409020548411610cb05760018060a01b0385166000526018602052604060002061078d858254612ff4565b90558515610c7d576014805490916107d66001600160801b036107b48a8216828616613e43565b16926001600160801b0319926001600160801b0316908316841760801c613e43565b60801b16179055601580548480821115610c73576107f391612ff4565b905b5560018060a01b0360095416906020600e54606460405180958193638eb22cdd60e01b835260048301528a6024830152600160448301525afa918215610a1b57600092610c3d575b5061085361085a92933690602081359101612e7e565b9084613eb9565b50818110610bf85781811115610be45761088661087e61088e93620186a093612ff4565b965b87612f9d565b048095612ff4565b9184610a60575b600d5460095460405163095ea7b360e01b81526001600160a01b039182166004820152600060248201819052909260209284926044928492165af18015610a1b57610a27575b50600d546001600160a01b0316803b1561030657604051632770a7eb60e21b815230600482015260248101869052906000908290604490829084905af18015610a1b576109ee575b506040519061093182612db0565b60018252602036818401378151156109d8576001600160a01b03166020820190815260405191518291906000905b8082106109b65750505081900390206040805193845260208401949094529282015261051d9392919033907f85b91d472e69b2cfe848ed50eb5d8582ae96c22057b6e46250255dd6f6c3519290606090a490610513565b82516001600160a01b031684526020938401939092019160019091019061095f565b634e487b7160e01b600052603260045260246000fd5b6001600160401b038111610a055760405238610923565b634e487b7160e01b600052604160045260246000fd5b6040513d6000823e3d90fd5b6020813d602011610a58575b81610a4060209383612e02565b8101031261030657610a5190613386565b50386108db565b3d9150610a33565b600d5460095460405163095ea7b360e01b81526001600160a01b039182166004820152600060248201819052909260209284926044928492165af18015610a1b57610bab575b50600d5460095460405163095ea7b360e01b81526001600160a01b03918216600482015260001960248201529160209183916044918391600091165af18015610a1b57610b72575b506000604060018060a01b036009541660a4600e5483519485938492634d4d7cbd60e11b845260048401523060248401523360448401528160648401528b60848401525af18015610a1b57610b44575b50610895565b610b659060403d604011610b6b575b610b5d8183612e02565b810190613ea3565b50610b3e565b503d610b53565b6020813d602011610ba3575b81610b8b60209383612e02565b8101031261030657610b9c90613386565b5038610aee565b3d9150610b7e565b6020813d602011610bdc575b81610bc460209383612e02565b8101031261030657610bd590613386565b5038610aa6565b3d9150610bb7565b505061088e620186a0610886600096610880565b60405162461bcd60e51b815260206004820152601f60248201527f42696742616e673a20617373657420616d6f756e74206e6f742076616c6964006044820152606490fd5b91506020823d602011610c6b575b81610c5860209383612e02565b810103126103065790519061085361083d565b3d9150610c4b565b50506000906107f5565b60405162461bcd60e51b815260206004820152600b60248201526a10908e881cdbdb1d995b9d60aa1b6044820152606490fd5b60405162461bcd60e51b815260206004820152601960248201527810908e881b9bdd08195b9bdd59da0818dbdb1b185d195c985b603a1b6044820152606490fd5b9093506020813d602011610d1d575b81610d0d60209383612e02565b810103126103065751923861074c565b3d9150610d00565b51602091610d5191610d40906001600160801b031685612f9d565b90516001600160801b031690612fc6565b966106f1565b6106b3908092612ff4565b9050610686565b60405162461bcd60e51b8152602060048201526011602482015270109a59d0985b99ce88189859081919589d607a1b6044820152606490fd5b90508096610674565b508361064e565b90620186a0610dc4610dcb9383612f9d565b0490613001565b38610644565b9150506020813d602011610dff575b81610ded60209383612e02565b8101031261030657518c610614610603565b3d9150610de0565b60405162461bcd60e51b815260206004820152601f60248201527f42696742616e673a2065786368616e676552617465206e6f742076616c6964006044820152606490fd5b60405162461bcd60e51b815260206004820152602260248201527f42423a2063757272656e742065786368616e676552617465206e6f742076616c6044820152611a5960f21b6064820152608490fd5b601154945061048a565b905015158a61047f565b9050610ed591955060403d604011610edd575b610ecd8183612e02565b810190613393565b94908a610477565b503d610ec3565b60405162461bcd60e51b8152602060048201526013602482015272084847440d8cadccee8d040dad2e6dac2e8c6d606b1b6044820152606490fd5b60405162461bcd60e51b815260206004820152601860248201527742423a206e6f7468696e6720746f206c697175696461746560401b6044820152606490fd5b60405162461bcd60e51b815260206004820152600e60248201526d13585c9ad95d0e881c185d5cd95960921b6044820152606490fd5b34610306576000366003190112610306576006546040516001600160a01b039091168152602090f35b34610306576000366003190112610306576020601d54604051908152f35b34610306576000366003190112610306576009546040516001600160a01b039091168152602090f35b346103065760403660031901126103065761101e612cbd565b611026612cd3565b9060018060a01b038091166000526002602052604060002091166000526020526020604060002054604051908152f35b3461030657600036600319011261030657600b546040516001600160a01b039091168152602090f35b346103065761108d36612cf8565b839496979392919242116111bf5761116b926111639260018060a01b0395868b16978860005260046020526040600020918254926110ca8461399b565b90556040519160208301937f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e2668552600060408501528b60608501528a8d1660808501528d60a085015260c084015281830152815261112781612dcb565b51902061113261364f565b9060405190602082019261190160f01b8452602283015260428201526042815261115b81612de7565b519020613916565b919091613817565b160361117a57610304926139f8565b60405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152606490fd5b60405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b3461030657610160366003190112610306576001600160a01b0360043581811690819003610306576001600160401b03916024358381116103065761124d903690600401612eb5565b9093604435938385168095036103065761126c84600554163314612f12565b80611608575b50816114bd575b50509080925061147c575b505060643580611464575b506084358061144c575b5060a43580611435575b5060c43580611411575b5060e435806113ed575b5061010435806113bb575b506101243580611347575b5061014435806112d957005b601e5481106112e757601f55005b60405162461bcd60e51b815260206004820152603260248201527f4d61726b65743a206c69717569646174696f6e436f6c6c61746572616c697a616044820152711d1a5bdb94985d19481d1bdbc81cdb585b1b60721b6064820152608490fd5b611356620186a0821115612f5d565b601f54811161136857601e55806112cd565b60405162461bcd60e51b815260206004820152602560248201527f4d61726b65743a20636f6c6c61746572616c697a6174696f6e5261746520746f6044820152646f2062696760d81b6064820152608490fd5b806016547fae6e0ab3b95f0a53ff9660a390ccedcbbf1f2355dce974a9841af106fddcfaba600080a3601655806112c2565b6113fb620186a08210612f5d565b611408601b548211612f5d565b601c55806112b7565b61141f620186a08210612f5d565b61142c601c548210612f5d565b601b55806112ad565b611443620186a08210612f5d565b601d55806112a3565b61145b620186a0821115612f5d565b601a5580611299565b611473620186a0821115612f5d565b6019558061128f565b816008549182167f5a62d22209e370e38eea92cfddcd228e656e6ec139243392a760a7769f5877fd600080a36001600160a01b031916176008558080611284565b8111610a05576114ce601054612d76565b601f81116115b7575b506000601f82116001146115405781929394600092611535575b50508160011b916000199060031b1c1916176010555b7fa6f004921c944d4b8bf6e38462b00f36a58d62495d56b51f571ab78f732c9815600080a181908380611279565b0135905084806114f1565b60106000908152601f1983169560008051602061436183398151915292909160205b88821061159f57505083600195969710611585575b505050811b01601055611507565b0135600019600384901b60f8161c19169055848080611577565b80600184968294958701358155019501920190611562565b6010600052600080516020614361833981519152601f830160051c810160208410611601575b601f90920160051c01905b8181106115f557506114d7565b600081556001016115e8565b50806115dd565b600f80546001600160a01b0319169190911790557f0b2d6eb667d0522c3eb86e4288afecae6c11591ffd1345d4d12407e0598bca9b600080a185611272565b34610306576000366003190112610306576008546040516001600160a01b039091168152602090f35b3461030657600036600319011261030657602061168b613a4f565b604051908152f35b34610306576000366003190112610306576020602854604051908152f35b34610306576000366003190112610306576020601e54604051908152f35b3461030657600036600319011261030657602060ff602554166040519015158152f35b346103065760003660031901126103065760406024548151906001600160401b03908181168352831c166020820152f35b34610306576000366003190112610306576020601a54604051908152f35b346103065760403660031901126103065761175a612cbd565b602435908115801590611816575b61179e575b6040519182526001600160a01b031690339060008051602061434183398151915290602090a3602060405160018152f35b3360005260016020526040600020546117b983821015613779565b6001600160a01b0382169083338390036117d6575b50505061176d565b6117ea916117e58415156137be565b612ff4565b336000526001602052604060002055600052604060002061180c838254613001565b90558280836117ce565b50336001600160a01b03821614611768565b3461030657608036600319011261030657611841612cbd565b611849612cd3565b604435916001600160a01b0391908284168403610306576064356001600160401b0381116103065761187f903690600401612eb5565b94909161189185600554163314612f12565b600f546040805163d6d7d52560e01b81529182908816816000816118b7600482016133b0565b03925af1908115610a1b57600090600092611cc2575b508181611cb8575b5015611caf57806011555b15611c5a5784906118ef613d06565b16918260005260209560178752611914604060002054620186a0610dc48a5483612f9d565b87876009541691606461193061070e600c549360115490612f9d565b916040519485938492638eb22cdd60e01b845260048401526024830152600060448301525afa908115610a1b57600091611c2d575b50846000526018885260406000205411611bea5785856000611ad2611ae0611a97898d99611a91869a879a60188e868b5281815260408b205496611a5e6119aa613c33565b828e5260178452611a39611a108f6040902054926000876040516119cd81612db0565b82815201528681019360018060801b03928382818094868a8381511615600014611b9d57505081611a03915b1682885116613e43565b1685521682875116613e43565b169384905251601480546001600160801b0319166001600160801b039390921692909216179055565b601480546001600160801b031660809290921b6001600160801b031916919091179055565b808c52601782528b6040812055828252611a7e60408d2054601554612ff4565b6015558b52528860408120553691612e7e565b91613eb9565b600d5460405163a9059cbb60e01b8c82019081526001600160a01b039098166024820152604481019290925290961695928391506064820190565b03601f198101835282612e02565b51925af13d15611b96573d611af481612e63565b90611b026040519283612e02565b81523d60008483013e5b81611b5e575b5015611b1a57005b6064906040519062461bcd60e51b82526004820152601c60248201527f426f72696e6745524332303a205472616e73666572206661696c6564000000006044820152fd5b80915051828115918215611b77575b5050905082611b12565b83809293500103126103065781611b8e9101613386565b808284611b6d565b6060611b0c565b611a0392611bd6611bcc86611bc3611bb9828098511686612f9d565b8287511690612fc6565b94511684612f9d565b848c511690612fc6565b10156119f957611be59061399b565b6119f9565b6064876040519062461bcd60e51b825280600483015260248201527f42696742616e673a2043616e6e6f7420666f726365206c6971756964617465646044820152fd5b90508781813d8311611c53575b611c448183612e02565b81010312610306575188611965565b503d611c3a565b60405162461bcd60e51b815260206004820152602760248201527f42696742616e673a2063757272656e742065786368616e676552617465206e6f6044820152661d081d985b1a5960ca1b6064820152608490fd5b506011546118e0565b90501515886118d5565b9050611cdd915060403d604011610edd57610ecd8183612e02565b90886118cd565b3461030657604036600319011261030657611d29611d0c611d03612cbd565b6024359061323d565b604080519384526020840192909252908201529081906060820190565b0390f35b3461030657604036600319011261030657602061168b611d4b612cbd565b60243590613545565b3461030657600036600319011261030657604051600090602b54611d7781612d76565b808352600191808316908115611e0e5750600114611db4575b611d2983611da081870382612e02565b604051918291602083526020830190612e23565b602b600090815260209450917f11c44e4875b74d31ff9fd779bf2566af7bd15b87fc985d01f5094b89e3669e4f5b828410611dfb57505050810190910190611da081611d90565b8054858501870152928501928101611de2565b611d299550611da093506020915091849260ff191682840152151560051b8201019350611d90565b34610306576040366003190112610306576004356001600160401b038111610306573660238201121561030657611e77903690602481600401359101612e7e565b9060243561ffff811680910361030657610100918284805181010312610306576020611ea4818601613386565b91611eb160408701613803565b90611ebe60608801613803565b9660808101519660a08201519260c08301519160ff8316830361030657838201519301516001600160a01b039586169a861698909490428210612041579289888d989794611fb89794611163978f8e60001461201a577f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e266955b8d60005260048652604060002092835493611f518561399b565b905560405196870197885260408701528d6060870152608086015260a085015260c0840152818301528152611f8581612dcb565b519020611f9061364f565b90604051908a82019261190160f01b8452602283015260428201526042815261115b81612de7565b1603611fd6575015611fcd57610304926139f8565b610304926139aa565b6064906040519062461bcd60e51b82526004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152fd5b7f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d695611f37565b60405162461bcd60e51b815260048101899052601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b34610306576000366003190112610306576005546040516001600160a01b039091168152602090f35b34610306576000366003190112610306576020601b54604051908152f35b34610306576020366003190112610306576001600160a01b036120ee612cbd565b1660005260236020526020604060002054604051908152f35b3461030657600036600319011261030657601454604080516001600160801b038316815260809290921c602083015290f35b346103065760403660031901126103065761215f612155612cbd565b60243590336139aa565b602060405160018152f35b34610306576020366003190112610306576001600160a01b0361218b612cbd565b1660005260046020526020604060002054604051908152f35b3461030657600036600319011261030657600f546040516001600160a01b039091168152602090f35b34610306576000366003190112610306576020602d54604051908152f35b346103065760003660031901126103065760405160009060105461220e81612d76565b808352600191808316908115611e0e575060011461223657611d2983611da081870382612e02565b6010600090815260209450916000805160206143618339815191525b82841061226b57505050810190910190611da081611d90565b8054858501870152928501928101612252565b346103065760203660031901126103065760043560098110156103065760ff6122a8602092612d47565b54166040519015158152f35b34610306576020366003190112610306576001600160a01b036122d5612cbd565b1660005260016020526020604060002054604051908152f35b3461030657600036600319011261030657600a546040516001600160a01b039091168152602090f35b34610306576000366003190112610306576020602654604051908152f35b34610306576000366003190112610306576020601c54604051908152f35b34610306576000366003190112610306576020602c54604051908152f35b346103065760003660031901126103065760208054604051908152f35b34610306576000366003190112610306576006546001600160a01b0390818116338190036123f857806005549384167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a36001600160a01b03199283161760055516600655005b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b34610306576020366003190112610306576001600160a01b0361245d612cbd565b1660005260176020526020604060002054604051908152f35b34610306576000366003190112610306576020601554604051908152f35b34610306576000366003190112610306576020600e54604051908152f35b34610306576000366003190112610306576020601654604051908152f35b3461030657606036600319011261030657602061168b604435602435600435613176565b34610306576000366003190112610306576020601154604051908152f35b3461030657600036600319011261030657600d546040516001600160a01b039091168152602090f35b34610306576000366003190112610306576020601254604051908152f35b3461030657600036600319011261030657602061168b61364f565b34610306576000366003190112610306576020601954604051908152f35b34610306576000366003190112610306576014546040516001600160801b039091168152602090f35b34610306576000366003190112610306576020601354604051908152f35b34610306576060366003190112610306576125f2612cbd565b6125fa612cd3565b6044359081612637575b6040519182526001600160a01b0390811692169060008051602061434183398151915290602090a3602060405160018152f35b60018060a01b0380841680600052602060018152846040600020549361265f82861015613779565b851693848403612674575b5050505050612604565b8360005260028352604060002033600052835260406000205460001981036126e8575b5084926126bf6000805160206143418339815191529795936001936117e560209915156137be565b926000525260406000205560005260406000206126dd858254613001565b90559185848161266a565b9091811061273d57602094926126bf8860008051602061434183398151915298969461271682600196612ff4565b86600052600285526040600020336000528552604060002055935093959750509294612697565b60405162461bcd60e51b815260048101849052601860248201527745524332303a20616c6c6f77616e636520746f6f206c6f7760401b6044820152606490fd5b34610306576000366003190112610306576020602954604051908152f35b34610306576127a936612cf8565b839496979392919242116111bf57612843926111639260018060a01b0395868b16978860005260046020526040600020918254926127e68461399b565b90556040519160208301937f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d68552600060408501528b60608501528a8d1660808501528d60a085015260c084015281830152815261112781612dcb565b160361117a57610304926139aa565b3461030657600036600319011261030657602a546040516001600160a01b039091168152602090f35b34610306576020366003190112610306576001600160a01b0361289c612cbd565b1660005260186020526020604060002054604051908152f35b3461030657600036600319011261030657602060405160008152f35b34610306576040366003190112610306576004356009811015610306576128f6612ce9565b6008549091906001600160a01b031633036129af5760ff61291682612d47565b5416151591151591821461297557808260ff61293461296394612d47565b54161515827feeec81de25875ce1725479bb76f720a8defdb43dea041919ae37bb4aae9847c0600080a4612d47565b9060ff80198354169116179055600080f35b60405162461bcd60e51b81526020600482015260126024820152714d61726b65743a2073616d6520737461746560701b6044820152606490fd5b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881d5b985d5d1a1bdc9a5e995960621b6044820152606490fd5b346103065760403660031901126103065761215f612a07612cbd565b60243590336139f8565b3461030657606036600319011261030657612a2a612cbd565b612a32612ce9565b6044359081151582036103065760018060a01b03928391612a5883600554163314612f12565b15612afc571690811590811591612af4575b5015612ab757806005549283167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a36001600160a01b031991821617600555600680549091169055005b60405162461bcd60e51b81526020600482015260156024820152744f776e61626c653a207a65726f206164647265737360581b6044820152606490fd5b905083612a6a565b9150501660018060a01b03196006541617600655600080f35b3461030657600036600319011261030657600f546040805163d6d7d52560e01b81529182906001600160a01b031681600081612b53600482016133b0565b03925af18015610a1b57600091600091612c50575b50908015612bf2578115612bb65781604092601155807f9f9192b5edb17356c524e08d9e025c8e2f6307e6ea52fb7968faa3081f51c3c8600080a25b42601355825191151582526020820152f35b60405162461bcd60e51b81526020600482015260146024820152734d61726b65743a20696e76616c6964207261746560601b6044820152606490fd5b9050612c0360135460125490613001565b4211612c1457604090601154612ba4565b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881c985d19481d1bdbc81bdb1960621b6044820152606490fd5b9050612c6b915060403d604011610edd57610ecd8183612e02565b82612b68565b3461030657604036600319011261030657602090612c8d612cbd565b612c95612cd3565b9060018060a01b03809116600052600384526040600020911660005282526040600020548152f35b600435906001600160a01b038216820361030657565b602435906001600160a01b038216820361030657565b60243590811515820361030657565b60e0906003190112610306576001600160a01b03906004358281168103610306579160243590811681036103065790604435906064359060843560ff81168103610306579060a4359060c43590565b6009811015612d60576000526007602052604060002090565b634e487b7160e01b600052602160045260246000fd5b90600182811c92168015612da6575b6020831014612d9057565b634e487b7160e01b600052602260045260246000fd5b91607f1691612d85565b604081019081106001600160401b03821117610a0557604052565b61010081019081106001600160401b03821117610a0557604052565b608081019081106001600160401b03821117610a0557604052565b90601f801991011681019081106001600160401b03821117610a0557604052565b919082519283825260005b848110612e4f575050826000602080949584010152601f8019910116010190565b602081830181015184830182015201612e2e565b6001600160401b038111610a0557601f01601f191660200190565b929192612e8a82612e63565b91612e986040519384612e02565b829481845281830111610306578281602093846000960137010152565b9181601f84011215610306578235916001600160401b038311610306576020838186019501011161030657565b9181601f84011215610306578235916001600160401b038311610306576020808501948460051b01011161030657565b15612f1957565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b15612f6457565b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881b9bdd081d985b1a59607a1b6044820152606490fd5b81810292918115918404141715612fb057565b634e487b7160e01b600052601160045260246000fd5b8115612fd0570490565b634e487b7160e01b600052601260045260246000fd5b604d8111612fb057600a0a90565b91908203918211612fb057565b91908201809211612fb057565b81810392916000138015828513169184121617612fb057565b906509184e72a00091828102928184051490151715612fb057565b90670de0b6b3a764000091828102928184051490151715612fb057565b8115612fd057600160ff1b8114600019831416612fb0570590565b6014546130b5916130a4919061309a906001600160801b03831690612f9d565b9060801c90612fc6565b91620186a0918291601f5490612f9d565b0480831061316e576130c79083612ff4565b601e54602054830190818411612fb05783916130e291612f9d565b049182810390600080941281831281169183139015161761315a579061311361310d61311893613027565b91613042565b61305f565b908082121561315357600160ff1b821461313f5703905b80821161313a575090565b905090565b634e487b7160e01b81526011600452602490fd5b509061312f565b634e487b7160e01b83526011600452602483fd5b505050600090565b6014549192916131b5916131a69161319c9161309a906001600160801b03831690612f9d565b93601f5490612f9d565b6131af83612fe6565b90612fc6565b9081831061316e5761311361310d61320f6131d36132149587612ff4565b9361320a6132046131fb601e546131f56131ec86612fe6565b60205490613001565b90612f9d565b6131af84612fe6565b91612fe6565b61300e565b613027565b600081121561323757600160ff1b8114612fb0576000039080821161313a575090565b9061312f565b6001600160a01b039081166000818152601760209081526040822054929594939192909181156133795761326f613c72565b9061327b86151561344b565b6009541683600c54898752601882526064604088205491604051948593849263442c159960e01b8452600484015260248301528960448301525afa90811561336e57859161333b575b509285949261331b6018936132f661332f996106146132ed60409a620186a06021540490612f9d565b601e5490612f9d565b815190936001600160801b0391869161331191841690612f9d565b9201511690612fc6565b81811061333357035b978352522054613497565b9091565b505082613324565b90508381813d8311613367575b6133528183612e02565b81010312613363575161332f6132c4565b8480fd5b503d613348565b6040513d87823e3d90fd5b5050509192505080918190565b5190811515820361030657565b91908260409103126103065760206133aa83613386565b92015190565b6020808252600091601054916133c583612d76565b928382840152600190818116908160001461342857506001146133ea575b5050505090565b929350601060005280600020926000935b85851061341457505050604092500101388080806133e3565b8054858501604001529382019381016133fb565b925050506040935060ff929192191683830152151560051b0101388080806133e3565b1561345257565b60405162461bcd60e51b815260206004820152601e60248201527f4d61726b65743a2065786368616e676552617465206e6f742076616c696400006044820152606490fd5b6134a282151561344b565b602060018060a01b0360095416916064600c54604051948593849263442c159960e01b845260048401526024830152600060448301525afa908115610a1b5760009161350f575b50906106146134fb9260215490612f9d565b620186a061350b601e5483612f9d565b0491565b906020823d821161353d575b8161352860209383612e02565b8101031261353a5750516106146134e9565b80fd5b3d915061351b565b6001600160a01b0316600081815260186020526040812054909261356891613497565b91835260176020526040832054801561364957811561364957818110613649578281101561363f576014546135b19183916117e59161309a906001600160801b03831690612f9d565b90620186a0928383029280840485149015171561362b576135d692916131af91612ff4565b91601b5491601c54936135e9858561300e565b80820291848212600160ff1b82141661362b57818305149015171561315a570581848201948512911290801582169115161761313f575080821261313a575090565b634e487b7160e01b85526011600452602485fd5b50505050601b5490565b50505090565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03161480613750575b156136aa577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f000000000000000000000000000000000000000000000000000000000000000082527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a0815260c081018181106001600160401b03821117610a055760405251902090565b507f00000000000000000000000000000000000000000000000000000000000000004614613681565b1561378057565b60405162461bcd60e51b815260206004820152601660248201527545524332303a2062616c616e636520746f6f206c6f7760501b6044820152606490fd5b156137c557565b60405162461bcd60e51b815260206004820152601660248201527545524332303a206e6f207a65726f206164647265737360501b6044820152606490fd5b51906001600160a01b038216820361030657565b6005811015612d6057806138285750565b600181036138705760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b6044820152606490fd5b600281036138bd5760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606490fd5b6003146138c657565b60405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608490fd5b9291906fa2a8918ca85bafe22016d0b997e4df60600160ff1b03831161398f5791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa156139825781516001600160a01b0381161561397c579190565b50600190565b50604051903d90823e3d90fd5b50505050600090600390565b6000198114612fb05760010190565b7fe50de2333c10a9502fcb1d8ae13a51bbf423153dfc63c2b8997665b32154afc360018060a01b038092169160009083825260036020526040822094169384825260205284604082205580a4565b909160207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259160018060a01b03809416938460005260028352604060002095169485600052825280604060002055604051908152a3565b60ff60255416613bcd576014546001600160801b0316908115613bc657600a54604051631848f2bf60e31b8152602093916001600160a01b03919085908290600490829086165afa8015610a1b578591600091613b89575b50600460405180948193631a674cc560e11b8352165afa938415610a1b57600094613b56575b5050613ae99192670de0b6b3a764000092839160285490612f9d565b049081811015613b4d57613b006029548092612ff4565b83810290808204851490151715612fb0576131af613b2192613b4194612ff4565b60265492613b3b60275492613b368487612ff4565b612f9d565b04613001565b9080821161313a575090565b50505060265490565b81813d8311613b82575b613b6a8183612e02565b81010312613b7e57519250613ae938613acd565b8380fd5b503d613b60565b909181813d8311613bbf575b613b9f8183612e02565b81010312613bbb575190828216820361353a5750849038613aa7565b5080fd5b503d613b95565b6027549150565b600a5460405163e6abad4960e01b815290602090829060049082906001600160a01b03165afa908115610a1b57600091613c05575090565b906020823d8211613c2b575b81613c1e60209383612e02565b8101031261353a57505190565b3d9150613c11565b60405190613c4082612db0565b6014546001600160801b038116835260801c6020830152565b6001600160801b039182169082160191908211612fb057565b60006020604051613c8281612db0565b82815201526001600160401b0390613ca18260245460401c1642612ff4565b918215613cf857613cf3613b3691670de0b6b3a7640000613ce8613cc3613c33565b9660018060801b03958694858a5116906301e13380613ce0613a4f565b041690612f9d565b041682855116613c59565b168252565b509050613d03613c33565b90565b604051613d1281612db0565b602454906001600160401b038281809416835260401c1691613d3b602083019380855242612ff4565b918215613e3d57816301e13380613d50613a4f565b041681528142168452613dee613d64613c33565b936020670de0b6b3a7640000613d8c60018060801b0393613b36858a51168989511690612f9d565b0495613dc683613da1818a1682855116613c59565b16808352601480546001600160801b0319166001600160801b03909216919091179055565b0151601480546001600160801b03169290911660801b6001600160801b031916919091179055565b51169182602454916001600160401b0360401b905160401b169160018060801b03191617176024557f7484db546dcd57af0104c73c8a6968dfbaf5767f047cee0dadd0499ad7df81a0600080a3565b50505050565b6001600160801b039182169082160391908211612fb057565b15613e6357565b60405162461bcd60e51b8152602060048201526018602482015277084d2ce84c2dcce7440d8cadccee8d040dad2e6dac2e8c6d60431b6044820152606490fd5b9190826040910312610306576020825192015190565b91909160018060a01b0392836009541690600c5460409485519063442c159960e01b82526004928084840152602496878401526000958660448501526020958685606481855afa94851561421957918b8b928a9485986141db575b509060a4911694835194859384926311a5cc7760e31b84528b8401528d30908401528760448401528960648401528160848401525af180156141d1576141b5575b5088600d5416908851926370a0823160e01b94858552308786015287858b81875afa9485156141ab5789888d948f948c97958f95859b61415f575b5090613fd19291600b54169751998a9889978896635cd3dc1560e01b885233908801528601526044850152606484015260a0608484015260a4830190612e23565b03925af180156141555761411d575b508388600d54169287895180958193825230888301525afa80156141135785906140e2575b61400f9250612ff4565b9586156140955790606483926009541691600e54928989519889958694638eb22cdd60e01b86528501528301528660448301525afa93841561408a57508193614059575b50505091565b9091809350813d8311614083575b6140718183612e02565b8101031261353a575051388080614053565b503d614067565b51913d9150823e3d90fd5b508360849286519262461bcd60e51b8452830152808201527f42696742616e673a206f6e436f6c6c61746572616c52656365697665722066616044820152631a5b195960e21b6064820152fd5b50908381813d831161410c575b6140f98183612e02565b81010312613363579061400f9151614005565b503d6140ef565b87513d87823e3d90fd5b8481813d831161414e575b6141328183612e02565b8101031261414a5761414390613386565b5038613fe0565b8580fd5b503d614128565b88513d88823e3d90fd5b96999a50509550959250505081813d83116141a4575b61417f8183612e02565b810103126141a05792898988613fd18f9897968f968d98519a909192613f90565b8880fd5b503d614175565b8b513d8b823e3d90fd5b6141cb90893d8b11610b6b57610b5d8183612e02565b50613f55565b89513d89823e3d90fd5b935096505091508681813d8311614212575b6141f78183612e02565b8101031261420e57519387918a918c9060a4613f14565b8780fd5b503d6141ed565b8a513d8a823e3d90fd5b91908110156109d85760051b0190565b919060018060a01b0380600094168452602060178152604085205490811561433657601881526040862054801561432f578161426d613c33565b9460095416916064600c54604051948593849263442c159960e01b8452600484015260248301528b60448301525afa9687156143235780976142ed575b50506133116142d26142c96142e8969798620186a06021540490612f9d565b601f5490612f9d565b95613b3660018060801b03948587511690612f9d565b111590565b9096508187813d831161431c575b6143058183612e02565b8101031261353a57509451946133116142d26142aa565b503d6142fb565b604051903d90823e3d90fd5b5050505050565b506001945050505056feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae672a264697066735822122026d7281b9d5c6add42eb74ad5c11d713ae9c41a17f450c2287e4258e6fd718c364736f6c63430008120033", - "deployedBytecode": "0x608080604052600436101561001357600080fd5b60e0600035811c918262a02a2014612c715750816302ce728f14612b15578163078dfbe714612a11578163095ea7b3146129eb5781630c4e84f0146128d157816318160ddd146128b55781631c9e379b1461287b5781631d4d3a5d146128525781631da8bf101461279b5781631fb8f81a1461277d57816323b872dd146125d9578163331960ff146125bb57816334ce998a1461259257816334d441d0146125745781633644e5151461255957816337b6b7b91461253b57816338d52e0f146125125781633ba0b9a9146124f45781633f741adb146124d057816340626d8b146124b257816344de240a14612494578163473e3ce71461247657816348e4163e1461243c5781634e71e0c81461238e578163529898f214612371578163542afda31461235357816357935462146123355781636b19ad16146123175781636c3d8b8f146122ee57816370a08231146122b4578163727785471461227e57816374645ff3146121eb57816374c9e481146121cd5781637dc0d1d0146121a45781637ecebe001461216a5781637fa0b84e146121395781638285ef401461210757816387b27937146120cd5781638c5d0ed3146120af5781638da5cb5b14612086578163910dd7c814611e36578163932bc4f814611d5457816399a9702814611d2d5781639e15e89f14611ce4578163a28e6b8214611828578163a9059cbb14611741578163b0e21e8a14611723578163b27c0e74146116f2578163b7113f19146116cf578163bb4cfe3b146116b1578163bde39c5d14611693578163c1ad5c8d14611670578163ce8849ed14611647578163d3fb2a3814611204578163d505accf1461107f57508063d8dfeb4514611056578063dd62ed3e14611005578063de40657714610fdc578063e0996cb614610fbe578063e30c397814610f95578063e5644d8b14610365578063ea64dd5614610347578063eec0f42e14610329578063f791395d1461030b5763f8ba4cff146102eb57600080fd5b3461030657600036600319011261030657610304613d06565b005b600080fd5b34610306576000366003190112610306576020602754604051908152f35b34610306576000366003190112610306576020600c54604051908152f35b34610306576000366003190112610306576020601f54604051908152f35b34610306576080366003190112610306576004356001600160401b03811161030657610395903690600401612ee2565b906024356001600160401b038111610306576103b5903690600401612ee2565b6044356001600160401b038111610306576103d4903690600401612ee2565b9290916064356001600160401b038111610306576103f6903690600401612ee2565b9490916004600052600760205260ff60406000205416610f5f578715610f1f57808803610ee457610428828914613e5c565b610433828714613e5c565b600f546040805163d6d7d52560e01b8152959186906001600160a01b031681600081610461600482016133b0565b03925af1948515610a1b57600090600096610eb0575b508581610ea6575b5015610e9c57846011555b8415610e4c57610498613d06565b60009860005b8181106104e7578a156104ad57005b60405162461bcd60e51b815260206004820152601260248201527110908e881b9bc81d5cd95c9cc8199bdd5b9960721b6044820152606490fd5b6104f281838c614223565b356001600160a01b03811681036103065761050d8882614233565b15610522575b5061051d9061399b565b61049e565b9a61052c9061399b565b9a610538828686614223565b359061054583888c614223565b35906001600160a01b0382168203610306578b8410156109d8578360051b890135601e198a360301811215610306578901926001600160401b03843511610306578335360360208501136103065761059d8b83613545565b938b15610e075760018060a01b03600954166020600c5460018060a01b03861660005260188252606460406000205491604051948593849263442c159960e01b845260048401526024830152600060448301525afa908115610a1b578d90600092610dd1575b506106146106199260215490612f9d565b612fc6565b9360018060a01b038416600052601760205261063a8560406000205461307a565b80601d5480610db2575b5080851115610dab575b6001600160a01b0386166000908152601760205260409020549081811115610da2575080965b1115610d69578d9381811115610d6257505b6001600160a01b0385166000908152601760205260409020549081811115610d5757506106b38180612ff4565b6001600160a01b0386166000908152601760205260409020556106d4613c33565b6020810180519091906001600160801b0316610d25575050602081965b606461071761070e60018060a01b036009541698600c5494612f9d565b60215490612fc6565b916040519788938492638eb22cdd60e01b845260048401526024830152600060448301525afa938415610a1b57600094610cf1575b506001600160a01b0385166000908152601860205260409020548411610cb05760018060a01b0385166000526018602052604060002061078d858254612ff4565b90558515610c7d576014805490916107d66001600160801b036107b48a8216828616613e43565b16926001600160801b0319926001600160801b0316908316841760801c613e43565b60801b16179055601580548480821115610c73576107f391612ff4565b905b5560018060a01b0360095416906020600e54606460405180958193638eb22cdd60e01b835260048301528a6024830152600160448301525afa918215610a1b57600092610c3d575b5061085361085a92933690602081359101612e7e565b9084613eb9565b50818110610bf85781811115610be45761088661087e61088e93620186a093612ff4565b965b87612f9d565b048095612ff4565b9184610a60575b600d5460095460405163095ea7b360e01b81526001600160a01b039182166004820152600060248201819052909260209284926044928492165af18015610a1b57610a27575b50600d546001600160a01b0316803b1561030657604051632770a7eb60e21b815230600482015260248101869052906000908290604490829084905af18015610a1b576109ee575b506040519061093182612db0565b60018252602036818401378151156109d8576001600160a01b03166020820190815260405191518291906000905b8082106109b65750505081900390206040805193845260208401949094529282015261051d9392919033907f85b91d472e69b2cfe848ed50eb5d8582ae96c22057b6e46250255dd6f6c3519290606090a490610513565b82516001600160a01b031684526020938401939092019160019091019061095f565b634e487b7160e01b600052603260045260246000fd5b6001600160401b038111610a055760405238610923565b634e487b7160e01b600052604160045260246000fd5b6040513d6000823e3d90fd5b6020813d602011610a58575b81610a4060209383612e02565b8101031261030657610a5190613386565b50386108db565b3d9150610a33565b600d5460095460405163095ea7b360e01b81526001600160a01b039182166004820152600060248201819052909260209284926044928492165af18015610a1b57610bab575b50600d5460095460405163095ea7b360e01b81526001600160a01b03918216600482015260001960248201529160209183916044918391600091165af18015610a1b57610b72575b506000604060018060a01b036009541660a4600e5483519485938492634d4d7cbd60e11b845260048401523060248401523360448401528160648401528b60848401525af18015610a1b57610b44575b50610895565b610b659060403d604011610b6b575b610b5d8183612e02565b810190613ea3565b50610b3e565b503d610b53565b6020813d602011610ba3575b81610b8b60209383612e02565b8101031261030657610b9c90613386565b5038610aee565b3d9150610b7e565b6020813d602011610bdc575b81610bc460209383612e02565b8101031261030657610bd590613386565b5038610aa6565b3d9150610bb7565b505061088e620186a0610886600096610880565b60405162461bcd60e51b815260206004820152601f60248201527f42696742616e673a20617373657420616d6f756e74206e6f742076616c6964006044820152606490fd5b91506020823d602011610c6b575b81610c5860209383612e02565b810103126103065790519061085361083d565b3d9150610c4b565b50506000906107f5565b60405162461bcd60e51b815260206004820152600b60248201526a10908e881cdbdb1d995b9d60aa1b6044820152606490fd5b60405162461bcd60e51b815260206004820152601960248201527810908e881b9bdd08195b9bdd59da0818dbdb1b185d195c985b603a1b6044820152606490fd5b9093506020813d602011610d1d575b81610d0d60209383612e02565b810103126103065751923861074c565b3d9150610d00565b51602091610d5191610d40906001600160801b031685612f9d565b90516001600160801b031690612fc6565b966106f1565b6106b3908092612ff4565b9050610686565b60405162461bcd60e51b8152602060048201526011602482015270109a59d0985b99ce88189859081919589d607a1b6044820152606490fd5b90508096610674565b508361064e565b90620186a0610dc4610dcb9383612f9d565b0490613001565b38610644565b9150506020813d602011610dff575b81610ded60209383612e02565b8101031261030657518c610614610603565b3d9150610de0565b60405162461bcd60e51b815260206004820152601f60248201527f42696742616e673a2065786368616e676552617465206e6f742076616c6964006044820152606490fd5b60405162461bcd60e51b815260206004820152602260248201527f42423a2063757272656e742065786368616e676552617465206e6f742076616c6044820152611a5960f21b6064820152608490fd5b601154945061048a565b905015158a61047f565b9050610ed591955060403d604011610edd575b610ecd8183612e02565b810190613393565b94908a610477565b503d610ec3565b60405162461bcd60e51b8152602060048201526013602482015272084847440d8cadccee8d040dad2e6dac2e8c6d606b1b6044820152606490fd5b60405162461bcd60e51b815260206004820152601860248201527742423a206e6f7468696e6720746f206c697175696461746560401b6044820152606490fd5b60405162461bcd60e51b815260206004820152600e60248201526d13585c9ad95d0e881c185d5cd95960921b6044820152606490fd5b34610306576000366003190112610306576006546040516001600160a01b039091168152602090f35b34610306576000366003190112610306576020601d54604051908152f35b34610306576000366003190112610306576009546040516001600160a01b039091168152602090f35b346103065760403660031901126103065761101e612cbd565b611026612cd3565b9060018060a01b038091166000526002602052604060002091166000526020526020604060002054604051908152f35b3461030657600036600319011261030657600b546040516001600160a01b039091168152602090f35b346103065761108d36612cf8565b839496979392919242116111bf5761116b926111639260018060a01b0395868b16978860005260046020526040600020918254926110ca8461399b565b90556040519160208301937f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e2668552600060408501528b60608501528a8d1660808501528d60a085015260c084015281830152815261112781612dcb565b51902061113261364f565b9060405190602082019261190160f01b8452602283015260428201526042815261115b81612de7565b519020613916565b919091613817565b160361117a57610304926139f8565b60405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152606490fd5b60405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b3461030657610160366003190112610306576001600160a01b0360043581811690819003610306576001600160401b03916024358381116103065761124d903690600401612eb5565b9093604435938385168095036103065761126c84600554163314612f12565b80611608575b50816114bd575b50509080925061147c575b505060643580611464575b506084358061144c575b5060a43580611435575b5060c43580611411575b5060e435806113ed575b5061010435806113bb575b506101243580611347575b5061014435806112d957005b601e5481106112e757601f55005b60405162461bcd60e51b815260206004820152603260248201527f4d61726b65743a206c69717569646174696f6e436f6c6c61746572616c697a616044820152711d1a5bdb94985d19481d1bdbc81cdb585b1b60721b6064820152608490fd5b611356620186a0821115612f5d565b601f54811161136857601e55806112cd565b60405162461bcd60e51b815260206004820152602560248201527f4d61726b65743a20636f6c6c61746572616c697a6174696f6e5261746520746f6044820152646f2062696760d81b6064820152608490fd5b806016547fae6e0ab3b95f0a53ff9660a390ccedcbbf1f2355dce974a9841af106fddcfaba600080a3601655806112c2565b6113fb620186a08210612f5d565b611408601b548211612f5d565b601c55806112b7565b61141f620186a08210612f5d565b61142c601c548210612f5d565b601b55806112ad565b611443620186a08210612f5d565b601d55806112a3565b61145b620186a0821115612f5d565b601a5580611299565b611473620186a0821115612f5d565b6019558061128f565b816008549182167f5a62d22209e370e38eea92cfddcd228e656e6ec139243392a760a7769f5877fd600080a36001600160a01b031916176008558080611284565b8111610a05576114ce601054612d76565b601f81116115b7575b506000601f82116001146115405781929394600092611535575b50508160011b916000199060031b1c1916176010555b7fa6f004921c944d4b8bf6e38462b00f36a58d62495d56b51f571ab78f732c9815600080a181908380611279565b0135905084806114f1565b60106000908152601f1983169560008051602061436183398151915292909160205b88821061159f57505083600195969710611585575b505050811b01601055611507565b0135600019600384901b60f8161c19169055848080611577565b80600184968294958701358155019501920190611562565b6010600052600080516020614361833981519152601f830160051c810160208410611601575b601f90920160051c01905b8181106115f557506114d7565b600081556001016115e8565b50806115dd565b600f80546001600160a01b0319169190911790557f0b2d6eb667d0522c3eb86e4288afecae6c11591ffd1345d4d12407e0598bca9b600080a185611272565b34610306576000366003190112610306576008546040516001600160a01b039091168152602090f35b3461030657600036600319011261030657602061168b613a4f565b604051908152f35b34610306576000366003190112610306576020602854604051908152f35b34610306576000366003190112610306576020601e54604051908152f35b3461030657600036600319011261030657602060ff602554166040519015158152f35b346103065760003660031901126103065760406024548151906001600160401b03908181168352831c166020820152f35b34610306576000366003190112610306576020601a54604051908152f35b346103065760403660031901126103065761175a612cbd565b602435908115801590611816575b61179e575b6040519182526001600160a01b031690339060008051602061434183398151915290602090a3602060405160018152f35b3360005260016020526040600020546117b983821015613779565b6001600160a01b0382169083338390036117d6575b50505061176d565b6117ea916117e58415156137be565b612ff4565b336000526001602052604060002055600052604060002061180c838254613001565b90558280836117ce565b50336001600160a01b03821614611768565b3461030657608036600319011261030657611841612cbd565b611849612cd3565b604435916001600160a01b0391908284168403610306576064356001600160401b0381116103065761187f903690600401612eb5565b94909161189185600554163314612f12565b600f546040805163d6d7d52560e01b81529182908816816000816118b7600482016133b0565b03925af1908115610a1b57600090600092611cc2575b508181611cb8575b5015611caf57806011555b15611c5a5784906118ef613d06565b16918260005260209560178752611914604060002054620186a0610dc48a5483612f9d565b87876009541691606461193061070e600c549360115490612f9d565b916040519485938492638eb22cdd60e01b845260048401526024830152600060448301525afa908115610a1b57600091611c2d575b50846000526018885260406000205411611bea5785856000611ad2611ae0611a97898d99611a91869a879a60188e868b5281815260408b205496611a5e6119aa613c33565b828e5260178452611a39611a108f6040902054926000876040516119cd81612db0565b82815201528681019360018060801b03928382818094868a8381511615600014611b9d57505081611a03915b1682885116613e43565b1685521682875116613e43565b169384905251601480546001600160801b0319166001600160801b039390921692909216179055565b601480546001600160801b031660809290921b6001600160801b031916919091179055565b808c52601782528b6040812055828252611a7e60408d2054601554612ff4565b6015558b52528860408120553691612e7e565b91613eb9565b600d5460405163a9059cbb60e01b8c82019081526001600160a01b039098166024820152604481019290925290961695928391506064820190565b03601f198101835282612e02565b51925af13d15611b96573d611af481612e63565b90611b026040519283612e02565b81523d60008483013e5b81611b5e575b5015611b1a57005b6064906040519062461bcd60e51b82526004820152601c60248201527f426f72696e6745524332303a205472616e73666572206661696c6564000000006044820152fd5b80915051828115918215611b77575b5050905082611b12565b83809293500103126103065781611b8e9101613386565b808284611b6d565b6060611b0c565b611a0392611bd6611bcc86611bc3611bb9828098511686612f9d565b8287511690612fc6565b94511684612f9d565b848c511690612fc6565b10156119f957611be59061399b565b6119f9565b6064876040519062461bcd60e51b825280600483015260248201527f42696742616e673a2043616e6e6f7420666f726365206c6971756964617465646044820152fd5b90508781813d8311611c53575b611c448183612e02565b81010312610306575188611965565b503d611c3a565b60405162461bcd60e51b815260206004820152602760248201527f42696742616e673a2063757272656e742065786368616e676552617465206e6f6044820152661d081d985b1a5960ca1b6064820152608490fd5b506011546118e0565b90501515886118d5565b9050611cdd915060403d604011610edd57610ecd8183612e02565b90886118cd565b3461030657604036600319011261030657611d29611d0c611d03612cbd565b6024359061323d565b604080519384526020840192909252908201529081906060820190565b0390f35b3461030657604036600319011261030657602061168b611d4b612cbd565b60243590613545565b3461030657600036600319011261030657604051600090602b54611d7781612d76565b808352600191808316908115611e0e5750600114611db4575b611d2983611da081870382612e02565b604051918291602083526020830190612e23565b602b600090815260209450917f11c44e4875b74d31ff9fd779bf2566af7bd15b87fc985d01f5094b89e3669e4f5b828410611dfb57505050810190910190611da081611d90565b8054858501870152928501928101611de2565b611d299550611da093506020915091849260ff191682840152151560051b8201019350611d90565b34610306576040366003190112610306576004356001600160401b038111610306573660238201121561030657611e77903690602481600401359101612e7e565b9060243561ffff811680910361030657610100918284805181010312610306576020611ea4818601613386565b91611eb160408701613803565b90611ebe60608801613803565b9660808101519660a08201519260c08301519160ff8316830361030657838201519301516001600160a01b039586169a861698909490428210612041579289888d989794611fb89794611163978f8e60001461201a577f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e266955b8d60005260048652604060002092835493611f518561399b565b905560405196870197885260408701528d6060870152608086015260a085015260c0840152818301528152611f8581612dcb565b519020611f9061364f565b90604051908a82019261190160f01b8452602283015260428201526042815261115b81612de7565b1603611fd6575015611fcd57610304926139f8565b610304926139aa565b6064906040519062461bcd60e51b82526004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152fd5b7f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d695611f37565b60405162461bcd60e51b815260048101899052601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b34610306576000366003190112610306576005546040516001600160a01b039091168152602090f35b34610306576000366003190112610306576020601b54604051908152f35b34610306576020366003190112610306576001600160a01b036120ee612cbd565b1660005260236020526020604060002054604051908152f35b3461030657600036600319011261030657601454604080516001600160801b038316815260809290921c602083015290f35b346103065760403660031901126103065761215f612155612cbd565b60243590336139aa565b602060405160018152f35b34610306576020366003190112610306576001600160a01b0361218b612cbd565b1660005260046020526020604060002054604051908152f35b3461030657600036600319011261030657600f546040516001600160a01b039091168152602090f35b34610306576000366003190112610306576020602d54604051908152f35b346103065760003660031901126103065760405160009060105461220e81612d76565b808352600191808316908115611e0e575060011461223657611d2983611da081870382612e02565b6010600090815260209450916000805160206143618339815191525b82841061226b57505050810190910190611da081611d90565b8054858501870152928501928101612252565b346103065760203660031901126103065760043560098110156103065760ff6122a8602092612d47565b54166040519015158152f35b34610306576020366003190112610306576001600160a01b036122d5612cbd565b1660005260016020526020604060002054604051908152f35b3461030657600036600319011261030657600a546040516001600160a01b039091168152602090f35b34610306576000366003190112610306576020602654604051908152f35b34610306576000366003190112610306576020601c54604051908152f35b34610306576000366003190112610306576020602c54604051908152f35b346103065760003660031901126103065760208054604051908152f35b34610306576000366003190112610306576006546001600160a01b0390818116338190036123f857806005549384167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a36001600160a01b03199283161760055516600655005b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b34610306576020366003190112610306576001600160a01b0361245d612cbd565b1660005260176020526020604060002054604051908152f35b34610306576000366003190112610306576020601554604051908152f35b34610306576000366003190112610306576020600e54604051908152f35b34610306576000366003190112610306576020601654604051908152f35b3461030657606036600319011261030657602061168b604435602435600435613176565b34610306576000366003190112610306576020601154604051908152f35b3461030657600036600319011261030657600d546040516001600160a01b039091168152602090f35b34610306576000366003190112610306576020601254604051908152f35b3461030657600036600319011261030657602061168b61364f565b34610306576000366003190112610306576020601954604051908152f35b34610306576000366003190112610306576014546040516001600160801b039091168152602090f35b34610306576000366003190112610306576020601354604051908152f35b34610306576060366003190112610306576125f2612cbd565b6125fa612cd3565b6044359081612637575b6040519182526001600160a01b0390811692169060008051602061434183398151915290602090a3602060405160018152f35b60018060a01b0380841680600052602060018152846040600020549361265f82861015613779565b851693848403612674575b5050505050612604565b8360005260028352604060002033600052835260406000205460001981036126e8575b5084926126bf6000805160206143418339815191529795936001936117e560209915156137be565b926000525260406000205560005260406000206126dd858254613001565b90559185848161266a565b9091811061273d57602094926126bf8860008051602061434183398151915298969461271682600196612ff4565b86600052600285526040600020336000528552604060002055935093959750509294612697565b60405162461bcd60e51b815260048101849052601860248201527745524332303a20616c6c6f77616e636520746f6f206c6f7760401b6044820152606490fd5b34610306576000366003190112610306576020602954604051908152f35b34610306576127a936612cf8565b839496979392919242116111bf57612843926111639260018060a01b0395868b16978860005260046020526040600020918254926127e68461399b565b90556040519160208301937f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d68552600060408501528b60608501528a8d1660808501528d60a085015260c084015281830152815261112781612dcb565b160361117a57610304926139aa565b3461030657600036600319011261030657602a546040516001600160a01b039091168152602090f35b34610306576020366003190112610306576001600160a01b0361289c612cbd565b1660005260186020526020604060002054604051908152f35b3461030657600036600319011261030657602060405160008152f35b34610306576040366003190112610306576004356009811015610306576128f6612ce9565b6008549091906001600160a01b031633036129af5760ff61291682612d47565b5416151591151591821461297557808260ff61293461296394612d47565b54161515827feeec81de25875ce1725479bb76f720a8defdb43dea041919ae37bb4aae9847c0600080a4612d47565b9060ff80198354169116179055600080f35b60405162461bcd60e51b81526020600482015260126024820152714d61726b65743a2073616d6520737461746560701b6044820152606490fd5b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881d5b985d5d1a1bdc9a5e995960621b6044820152606490fd5b346103065760403660031901126103065761215f612a07612cbd565b60243590336139f8565b3461030657606036600319011261030657612a2a612cbd565b612a32612ce9565b6044359081151582036103065760018060a01b03928391612a5883600554163314612f12565b15612afc571690811590811591612af4575b5015612ab757806005549283167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a36001600160a01b031991821617600555600680549091169055005b60405162461bcd60e51b81526020600482015260156024820152744f776e61626c653a207a65726f206164647265737360581b6044820152606490fd5b905083612a6a565b9150501660018060a01b03196006541617600655600080f35b3461030657600036600319011261030657600f546040805163d6d7d52560e01b81529182906001600160a01b031681600081612b53600482016133b0565b03925af18015610a1b57600091600091612c50575b50908015612bf2578115612bb65781604092601155807f9f9192b5edb17356c524e08d9e025c8e2f6307e6ea52fb7968faa3081f51c3c8600080a25b42601355825191151582526020820152f35b60405162461bcd60e51b81526020600482015260146024820152734d61726b65743a20696e76616c6964207261746560601b6044820152606490fd5b9050612c0360135460125490613001565b4211612c1457604090601154612ba4565b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881c985d19481d1bdbc81bdb1960621b6044820152606490fd5b9050612c6b915060403d604011610edd57610ecd8183612e02565b82612b68565b3461030657604036600319011261030657602090612c8d612cbd565b612c95612cd3565b9060018060a01b03809116600052600384526040600020911660005282526040600020548152f35b600435906001600160a01b038216820361030657565b602435906001600160a01b038216820361030657565b60243590811515820361030657565b60e0906003190112610306576001600160a01b03906004358281168103610306579160243590811681036103065790604435906064359060843560ff81168103610306579060a4359060c43590565b6009811015612d60576000526007602052604060002090565b634e487b7160e01b600052602160045260246000fd5b90600182811c92168015612da6575b6020831014612d9057565b634e487b7160e01b600052602260045260246000fd5b91607f1691612d85565b604081019081106001600160401b03821117610a0557604052565b61010081019081106001600160401b03821117610a0557604052565b608081019081106001600160401b03821117610a0557604052565b90601f801991011681019081106001600160401b03821117610a0557604052565b919082519283825260005b848110612e4f575050826000602080949584010152601f8019910116010190565b602081830181015184830182015201612e2e565b6001600160401b038111610a0557601f01601f191660200190565b929192612e8a82612e63565b91612e986040519384612e02565b829481845281830111610306578281602093846000960137010152565b9181601f84011215610306578235916001600160401b038311610306576020838186019501011161030657565b9181601f84011215610306578235916001600160401b038311610306576020808501948460051b01011161030657565b15612f1957565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b15612f6457565b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881b9bdd081d985b1a59607a1b6044820152606490fd5b81810292918115918404141715612fb057565b634e487b7160e01b600052601160045260246000fd5b8115612fd0570490565b634e487b7160e01b600052601260045260246000fd5b604d8111612fb057600a0a90565b91908203918211612fb057565b91908201809211612fb057565b81810392916000138015828513169184121617612fb057565b906509184e72a00091828102928184051490151715612fb057565b90670de0b6b3a764000091828102928184051490151715612fb057565b8115612fd057600160ff1b8114600019831416612fb0570590565b6014546130b5916130a4919061309a906001600160801b03831690612f9d565b9060801c90612fc6565b91620186a0918291601f5490612f9d565b0480831061316e576130c79083612ff4565b601e54602054830190818411612fb05783916130e291612f9d565b049182810390600080941281831281169183139015161761315a579061311361310d61311893613027565b91613042565b61305f565b908082121561315357600160ff1b821461313f5703905b80821161313a575090565b905090565b634e487b7160e01b81526011600452602490fd5b509061312f565b634e487b7160e01b83526011600452602483fd5b505050600090565b6014549192916131b5916131a69161319c9161309a906001600160801b03831690612f9d565b93601f5490612f9d565b6131af83612fe6565b90612fc6565b9081831061316e5761311361310d61320f6131d36132149587612ff4565b9361320a6132046131fb601e546131f56131ec86612fe6565b60205490613001565b90612f9d565b6131af84612fe6565b91612fe6565b61300e565b613027565b600081121561323757600160ff1b8114612fb0576000039080821161313a575090565b9061312f565b6001600160a01b039081166000818152601760209081526040822054929594939192909181156133795761326f613c72565b9061327b86151561344b565b6009541683600c54898752601882526064604088205491604051948593849263442c159960e01b8452600484015260248301528960448301525afa90811561336e57859161333b575b509285949261331b6018936132f661332f996106146132ed60409a620186a06021540490612f9d565b601e5490612f9d565b815190936001600160801b0391869161331191841690612f9d565b9201511690612fc6565b81811061333357035b978352522054613497565b9091565b505082613324565b90508381813d8311613367575b6133528183612e02565b81010312613363575161332f6132c4565b8480fd5b503d613348565b6040513d87823e3d90fd5b5050509192505080918190565b5190811515820361030657565b91908260409103126103065760206133aa83613386565b92015190565b6020808252600091601054916133c583612d76565b928382840152600190818116908160001461342857506001146133ea575b5050505090565b929350601060005280600020926000935b85851061341457505050604092500101388080806133e3565b8054858501604001529382019381016133fb565b925050506040935060ff929192191683830152151560051b0101388080806133e3565b1561345257565b60405162461bcd60e51b815260206004820152601e60248201527f4d61726b65743a2065786368616e676552617465206e6f742076616c696400006044820152606490fd5b6134a282151561344b565b602060018060a01b0360095416916064600c54604051948593849263442c159960e01b845260048401526024830152600060448301525afa908115610a1b5760009161350f575b50906106146134fb9260215490612f9d565b620186a061350b601e5483612f9d565b0491565b906020823d821161353d575b8161352860209383612e02565b8101031261353a5750516106146134e9565b80fd5b3d915061351b565b6001600160a01b0316600081815260186020526040812054909261356891613497565b91835260176020526040832054801561364957811561364957818110613649578281101561363f576014546135b19183916117e59161309a906001600160801b03831690612f9d565b90620186a0928383029280840485149015171561362b576135d692916131af91612ff4565b91601b5491601c54936135e9858561300e565b80820291848212600160ff1b82141661362b57818305149015171561315a570581848201948512911290801582169115161761313f575080821261313a575090565b634e487b7160e01b85526011600452602485fd5b50505050601b5490565b50505090565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03161480613750575b156136aa577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f000000000000000000000000000000000000000000000000000000000000000082527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a0815260c081018181106001600160401b03821117610a055760405251902090565b507f00000000000000000000000000000000000000000000000000000000000000004614613681565b1561378057565b60405162461bcd60e51b815260206004820152601660248201527545524332303a2062616c616e636520746f6f206c6f7760501b6044820152606490fd5b156137c557565b60405162461bcd60e51b815260206004820152601660248201527545524332303a206e6f207a65726f206164647265737360501b6044820152606490fd5b51906001600160a01b038216820361030657565b6005811015612d6057806138285750565b600181036138705760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b6044820152606490fd5b600281036138bd5760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606490fd5b6003146138c657565b60405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608490fd5b9291906fa2a8918ca85bafe22016d0b997e4df60600160ff1b03831161398f5791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa156139825781516001600160a01b0381161561397c579190565b50600190565b50604051903d90823e3d90fd5b50505050600090600390565b6000198114612fb05760010190565b7fe50de2333c10a9502fcb1d8ae13a51bbf423153dfc63c2b8997665b32154afc360018060a01b038092169160009083825260036020526040822094169384825260205284604082205580a4565b909160207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259160018060a01b03809416938460005260028352604060002095169485600052825280604060002055604051908152a3565b60ff60255416613bcd576014546001600160801b0316908115613bc657600a54604051631848f2bf60e31b8152602093916001600160a01b03919085908290600490829086165afa8015610a1b578591600091613b89575b50600460405180948193631a674cc560e11b8352165afa938415610a1b57600094613b56575b5050613ae99192670de0b6b3a764000092839160285490612f9d565b049081811015613b4d57613b006029548092612ff4565b83810290808204851490151715612fb0576131af613b2192613b4194612ff4565b60265492613b3b60275492613b368487612ff4565b612f9d565b04613001565b9080821161313a575090565b50505060265490565b81813d8311613b82575b613b6a8183612e02565b81010312613b7e57519250613ae938613acd565b8380fd5b503d613b60565b909181813d8311613bbf575b613b9f8183612e02565b81010312613bbb575190828216820361353a5750849038613aa7565b5080fd5b503d613b95565b6027549150565b600a5460405163e6abad4960e01b815290602090829060049082906001600160a01b03165afa908115610a1b57600091613c05575090565b906020823d8211613c2b575b81613c1e60209383612e02565b8101031261353a57505190565b3d9150613c11565b60405190613c4082612db0565b6014546001600160801b038116835260801c6020830152565b6001600160801b039182169082160191908211612fb057565b60006020604051613c8281612db0565b82815201526001600160401b0390613ca18260245460401c1642612ff4565b918215613cf857613cf3613b3691670de0b6b3a7640000613ce8613cc3613c33565b9660018060801b03958694858a5116906301e13380613ce0613a4f565b041690612f9d565b041682855116613c59565b168252565b509050613d03613c33565b90565b604051613d1281612db0565b602454906001600160401b038281809416835260401c1691613d3b602083019380855242612ff4565b918215613e3d57816301e13380613d50613a4f565b041681528142168452613dee613d64613c33565b936020670de0b6b3a7640000613d8c60018060801b0393613b36858a51168989511690612f9d565b0495613dc683613da1818a1682855116613c59565b16808352601480546001600160801b0319166001600160801b03909216919091179055565b0151601480546001600160801b03169290911660801b6001600160801b031916919091179055565b51169182602454916001600160401b0360401b905160401b169160018060801b03191617176024557f7484db546dcd57af0104c73c8a6968dfbaf5767f047cee0dadd0499ad7df81a0600080a3565b50505050565b6001600160801b039182169082160391908211612fb057565b15613e6357565b60405162461bcd60e51b8152602060048201526018602482015277084d2ce84c2dcce7440d8cadccee8d040dad2e6dac2e8c6d60431b6044820152606490fd5b9190826040910312610306576020825192015190565b91909160018060a01b0392836009541690600c5460409485519063442c159960e01b82526004928084840152602496878401526000958660448501526020958685606481855afa94851561421957918b8b928a9485986141db575b509060a4911694835194859384926311a5cc7760e31b84528b8401528d30908401528760448401528960648401528160848401525af180156141d1576141b5575b5088600d5416908851926370a0823160e01b94858552308786015287858b81875afa9485156141ab5789888d948f948c97958f95859b61415f575b5090613fd19291600b54169751998a9889978896635cd3dc1560e01b885233908801528601526044850152606484015260a0608484015260a4830190612e23565b03925af180156141555761411d575b508388600d54169287895180958193825230888301525afa80156141135785906140e2575b61400f9250612ff4565b9586156140955790606483926009541691600e54928989519889958694638eb22cdd60e01b86528501528301528660448301525afa93841561408a57508193614059575b50505091565b9091809350813d8311614083575b6140718183612e02565b8101031261353a575051388080614053565b503d614067565b51913d9150823e3d90fd5b508360849286519262461bcd60e51b8452830152808201527f42696742616e673a206f6e436f6c6c61746572616c52656365697665722066616044820152631a5b195960e21b6064820152fd5b50908381813d831161410c575b6140f98183612e02565b81010312613363579061400f9151614005565b503d6140ef565b87513d87823e3d90fd5b8481813d831161414e575b6141328183612e02565b8101031261414a5761414390613386565b5038613fe0565b8580fd5b503d614128565b88513d88823e3d90fd5b96999a50509550959250505081813d83116141a4575b61417f8183612e02565b810103126141a05792898988613fd18f9897968f968d98519a909192613f90565b8880fd5b503d614175565b8b513d8b823e3d90fd5b6141cb90893d8b11610b6b57610b5d8183612e02565b50613f55565b89513d89823e3d90fd5b935096505091508681813d8311614212575b6141f78183612e02565b8101031261420e57519387918a918c9060a4613f14565b8780fd5b503d6141ed565b8a513d8a823e3d90fd5b91908110156109d85760051b0190565b919060018060a01b0380600094168452602060178152604085205490811561433657601881526040862054801561432f578161426d613c33565b9460095416916064600c54604051948593849263442c159960e01b8452600484015260248301528b60448301525afa9687156143235780976142ed575b50506133116142d26142c96142e8969798620186a06021540490612f9d565b601f5490612f9d565b95613b3660018060801b03948587511690612f9d565b111590565b9096508187813d831161431c575b6143058183612e02565b8101031261353a57509451946133116142d26142aa565b503d6142fb565b604051903d90823e3d90fd5b5050505050565b506001945050505056feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae672a264697066735822122026d7281b9d5c6add42eb74ad5c11d713ae9c41a17f450c2287e4258e6fd718c364736f6c63430008120033", + "bytecode": "0x61014080604052346200018a5762000017816200018f565b600f81526001602082016e546170696f63612042696742616e6760881b8152602060405162000046816200018f565b8381520192603160f81b845251902091208160e052610100918183524660a0526040519160208301907f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f92838352604085015260608401524660808401523060a084015260a0835260c083019280841060018060401b03851117620001745760408490525190206080523060c052610120908152600580546001600160a01b0319163390811790915560007f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a362013880601b5562015f90601c55612710601d55612ee06020556103e8602e5561443a9283620001ac8439608051836136c6015260a05183613791015260c05183613690015260e051836137150152518261373b015251816136f20152f35b634e487b7160e01b600052604160045260246000fd5b600080fd5b604081019081106001600160401b03821117620001745760405256fe608080604052600436101561001357600080fd5b60e0600035811c918262a02a2014612caf5750816302ce728f14612b53578163078dfbe714612a4f578163095ea7b314612a295781630c4e84f01461290f5781630f8b29ea146128f157816318160ddd146128d55781631c9e379b1461289b5781631d4d3a5d146128725781631da8bf10146127bb5781631fb8f81a1461279d57816323b872dd146125f9578163331960ff146125db57816334ce998a146125b257816334d441d0146125945781633644e5151461257957816337b6b7b91461255b57816338d52e0f146125325781633ba0b9a9146125145781633f741adb146124f057816340626d8b146124d257816344de240a146124b4578163473e3ce71461249657816348e4163e1461245c5781634e71e0c8146123ae578163529898f214612391578163542afda31461237357816357935462146123555781636b19ad16146123375781636c3d8b8f1461230e57816370a08231146122d4578163727785471461229e57816374645ff31461220b57816374c9e481146121ed578163790c8467146121cf5781637dc0d1d0146121a65781637ecebe001461216c5781637fa0b84e1461213b5781638285ef401461210957816387b27937146120cf5781638c5d0ed3146120b15781638da5cb5b14612088578163910dd7c814611e38578163932bc4f814611d5657816399a9702814611d2f5781639e15e89f14611ce6578163a28e6b8214611874578163a9059cbb1461178d578163b0e21e8a1461176f578163b27c0e741461173e578163b7113f191461171b578163bb4cfe3b146116fd578163bde39c5d146116df578163c1ad5c8d146116bc578163ce8849ed14611693578163d3fb2a3814611250578163d505accf146110cb57508063d8dfeb45146110a2578063da863f0e14611079578063dd62ed3e14611028578063de40657714610fff578063e0996cb614610fe1578063e30c397814610fb8578063e5644d8b14610403578063ea64dd56146103e5578063eec0f42e146103c7578063ef2b234a14610355578063f791395d146103375763f8ba4cff1461031757600080fd5b3461033257600036600319011261033257610330613d44565b005b600080fd5b34610332576000366003190112610332576020602854604051908152f35b34610332576020366003190112610332576004356001600160a01b03818116918290036103325761038b81600554163314612f50565b816021549182167ffb4fd7114609dd603b57adbc2082205bfbbcabf9265c4b437b472f5c592b8cd7600080a36001600160a01b03191617602155005b34610332576000366003190112610332576020600c54604051908152f35b34610332576000366003190112610332576020601f54604051908152f35b34610332576080366003190112610332576004356001600160401b03811161033257610433903690600401612f20565b906024356001600160401b03811161033257610453903690600401612f20565b6044356001600160401b03811161033257610472903690600401612f20565b9290916064356001600160401b03811161033257610494903690600401612f20565b9490916004600052600760205260ff60406000205416610f82578715610f42576104bf818914613ef1565b6104ca828914613ef1565b6104d5828714613ef1565b600f546040805163d6d7d52560e01b8152959186906001600160a01b031681600081610503600482016133ee565b03925af1948515610aca57600090600096610f0e575b508581610f04575b5015610efa57846011555b610537851515613e81565b61053f613d44565b60009860005b81811061058e578a1561055457005b60405162461bcd60e51b815260206004820152601260248201527110908e881b9bc81d5cd95c9cc8199bdd5b9960721b6044820152606490fd5b61059981838c6142a7565b356001600160a01b0381168103610332576105b488826142b7565b156105c9575b506105c4906139d9565b610545565b9a6105d3906139d9565b9a6105df8286866142a7565b35906105ec83888c6142a7565b35906001600160a01b0382168203610332578b841015610a87578360051b89013592601e198a360301841215610332576001600160401b03848b01351161033257838a013536036020858c010113610332576106488b83613583565b938b15610eb55760018060a01b03600954166020600c5460018060a01b03861660005260188252606460406000205491604051948593849263442c159960e01b845260048401526024830152600060448301525afa908115610aca578d90600092610e7f575b506106bf6106c49260225490612fdb565b613004565b9360018060a01b03841660005260176020526106e5856040600020546130b8565b80601d5480610e60575b5080851115610e59575b6001600160a01b0386166000908152601760205260409020549081811115610e50575080965b1115610e1c578d9381811115610e1557505b6001600160a01b0385166000908152601760205260409020549081811115610e0a575061075e8180613032565b6001600160a01b03861660009081526017602052604090205561077f613c71565b6020810180519091906001600160801b0316610dd8575050602081965b60646107c26107b960018060a01b036009541698600c5494612fdb565b60225490613004565b916040519788938492638eb22cdd60e01b845260048401526024830152600060448301525afa938415610aca57600094610da4575b506001600160a01b0385166000908152601860205260409020548411610d635760018060a01b03851660005260186020526040600020610838858254613032565b90558515610d30576014805490916108816001600160801b0361085f8a8216828616613ed8565b16926001600160801b0319926001600160801b0316908316841760801c613ed8565b60801b16179055601580548480821115610d265761089e91613032565b905b5560018060a01b0360095416916020600e54606460405180968193638eb22cdd60e01b835260048301528a6024830152600160448301525afa928315610aca578d90600094610cec575b50610909929161090291369101803590602001612ebc565b9084613f49565b50818110610ca75781811115610c935761093561092d61093d93620186a093613032565b965b87612fdb565b048095613032565b9184610b0f575b600d5460095460405163095ea7b360e01b81526001600160a01b039182166004820152600060248201819052909260209284926044928492165af18015610aca57610ad6575b50600d546001600160a01b0316803b1561033257604051632770a7eb60e21b815230600482015260248101869052906000908290604490829084905af18015610aca57610a9d575b50604051906109e082612dee565b6001825260203681840137815115610a87576001600160a01b03166020820190815260405191518291906000905b808210610a65575050508190039020604080519384526020840194909452928201526105c49392919033907f85b91d472e69b2cfe848ed50eb5d8582ae96c22057b6e46250255dd6f6c3519290606090a4906105ba565b82516001600160a01b0316845260209384019390920191600190910190610a0e565b634e487b7160e01b600052603260045260246000fd5b6001600160401b038111610ab457604052386109d2565b634e487b7160e01b600052604160045260246000fd5b6040513d6000823e3d90fd5b6020813d602011610b07575b81610aef60209383612e40565b8101031261033257610b00906133c4565b503861098a565b3d9150610ae2565b600d5460095460405163095ea7b360e01b81526001600160a01b039182166004820152600060248201819052909260209284926044928492165af18015610aca57610c5a575b50600d5460095460405163095ea7b360e01b81526001600160a01b03918216600482015260001960248201529160209183916044918391600091165af18015610aca57610c21575b506000604060018060a01b036009541660a4600e5483519485938492634d4d7cbd60e11b845260048401523060248401523360448401528160648401528b60848401525af18015610aca57610bf3575b50610944565b610c149060403d604011610c1a575b610c0c8183612e40565b810190613f33565b50610bed565b503d610c02565b6020813d602011610c52575b81610c3a60209383612e40565b8101031261033257610c4b906133c4565b5038610b9d565b3d9150610c2d565b6020813d602011610c8b575b81610c7360209383612e40565b8101031261033257610c84906133c4565b5038610b55565b3d9150610c66565b505061093d620186a061093560009661092f565b60405162461bcd60e51b815260206004820152601a60248201527f42423a20617373657420616d6f756e74206e6f742076616c69640000000000006044820152606490fd5b935050906020833d602011610d1e575b81610d0960209383612e40565b8101031261033257915191908c6109096108ea565b3d9150610cfc565b50506000906108a0565b60405162461bcd60e51b815260206004820152600b60248201526a10908e881cdbdb1d995b9d60aa1b6044820152606490fd5b60405162461bcd60e51b815260206004820152601960248201527810908e881b9bdd08195b9bdd59da0818dbdb1b185d195c985b603a1b6044820152606490fd5b9093506020813d602011610dd0575b81610dc060209383612e40565b81010312610332575192386107f7565b3d9150610db3565b51602091610e0491610df3906001600160801b031685612fdb565b90516001600160801b031690613004565b9661079c565b61075e908092613032565b9050610731565b60405162461bcd60e51b815260206004820152600c60248201526b10908e88189859081919589d60a21b6044820152606490fd5b9050809661071f565b50836106f9565b90620186a0610e72610e799383612fdb565b049061303f565b386106ef565b9150506020813d602011610ead575b81610e9b60209383612e40565b8101031261033257518c6106bf6106ae565b3d9150610e8e565b60405162461bcd60e51b815260206004820152601a60248201527f42423a2065786368616e676552617465206e6f742076616c69640000000000006044820152606490fd5b601154945061052c565b905015158a610521565b9050610f3391955060403d604011610f3b575b610f2b8183612e40565b8101906133d1565b94908a610519565b503d610f21565b60405162461bcd60e51b815260206004820152601860248201527742423a206e6f7468696e6720746f206c697175696461746560401b6044820152606490fd5b60405162461bcd60e51b815260206004820152600e60248201526d13585c9ad95d0e881c185d5cd95960921b6044820152606490fd5b34610332576000366003190112610332576006546040516001600160a01b039091168152602090f35b34610332576000366003190112610332576020601d54604051908152f35b34610332576000366003190112610332576009546040516001600160a01b039091168152602090f35b3461033257604036600319011261033257611041612cfb565b611049612d11565b9060018060a01b038091166000526002602052604060002091166000526020526020604060002054604051908152f35b34610332576000366003190112610332576021546040516001600160a01b039091168152602090f35b3461033257600036600319011261033257600b546040516001600160a01b039091168152602090f35b34610332576110d936612d36565b8394969793929192421161120b576111b7926111af9260018060a01b0395868b1697886000526004602052604060002091825492611116846139d9565b90556040519160208301937f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e2668552600060408501528b60608501528a8d1660808501528d60a085015260c084015281830152815261117381612e09565b51902061117e61368d565b9060405190602082019261190160f01b845260228301526042820152604281526111a781612e25565b519020613954565b919091613855565b16036111c65761033092613a36565b60405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152606490fd5b60405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b3461033257610160366003190112610332576001600160a01b0360043581811690819003610332576001600160401b039160243583811161033257611299903690600401612ef3565b909360443593838516809503610332576112b884600554163314612f50565b80611654575b5081611509575b5050908092506114c8575b5050606435806114b0575b5060843580611498575b5060a43580611481575b5060c4358061145d575b5060e43580611439575b506101043580611407575b506101243580611393575b50610144358061132557005b601e54811061133357601f55005b60405162461bcd60e51b815260206004820152603260248201527f4d61726b65743a206c69717569646174696f6e436f6c6c61746572616c697a616044820152711d1a5bdb94985d19481d1bdbc81cdb585b1b60721b6064820152608490fd5b6113a2620186a0821115612f9b565b601f5481116113b457601e5580611319565b60405162461bcd60e51b815260206004820152602560248201527f4d61726b65743a20636f6c6c61746572616c697a6174696f6e5261746520746f6044820152646f2062696760d81b6064820152608490fd5b806016547fae6e0ab3b95f0a53ff9660a390ccedcbbf1f2355dce974a9841af106fddcfaba600080a36016558061130e565b611447620186a08210612f9b565b611454601b548211612f9b565b601c5580611303565b61146b620186a08210612f9b565b611478601c548210612f9b565b601b55806112f9565b61148f620186a08210612f9b565b601d55806112ef565b6114a7620186a0821115612f9b565b601a55806112e5565b6114bf620186a0821115612f9b565b601955806112db565b816008549182167f5a62d22209e370e38eea92cfddcd228e656e6ec139243392a760a7769f5877fd600080a36001600160a01b0319161760085580806112d0565b8111610ab45761151a601054612db4565b601f8111611603575b506000601f821160011461158c5781929394600092611581575b50508160011b916000199060031b1c1916176010555b7fa6f004921c944d4b8bf6e38462b00f36a58d62495d56b51f571ab78f732c9815600080a1819083806112c5565b01359050848061153d565b60106000908152601f198316956000805160206143e583398151915292909160205b8882106115eb575050836001959697106115d1575b505050811b01601055611553565b0135600019600384901b60f8161c191690558480806115c3565b806001849682949587013581550195019201906115ae565b60106000526000805160206143e5833981519152601f830160051c81016020841061164d575b601f90920160051c01905b8181106116415750611523565b60008155600101611634565b5080611629565b600f80546001600160a01b0319169190911790557f0b2d6eb667d0522c3eb86e4288afecae6c11591ffd1345d4d12407e0598bca9b600080a1856112be565b34610332576000366003190112610332576008546040516001600160a01b039091168152602090f35b346103325760003660031901126103325760206116d7613a8d565b604051908152f35b34610332576000366003190112610332576020602954604051908152f35b34610332576000366003190112610332576020601e54604051908152f35b3461033257600036600319011261033257602060ff602654166040519015158152f35b346103325760003660031901126103325760406025548151906001600160401b03908181168352831c166020820152f35b34610332576000366003190112610332576020601a54604051908152f35b34610332576040366003190112610332576117a6612cfb565b602435908115801590611862575b6117ea575b6040519182526001600160a01b03169033906000805160206143c583398151915290602090a3602060405160018152f35b336000526001602052604060002054611805838210156137b7565b6001600160a01b038216908333839003611822575b5050506117b9565b611836916118318415156137fc565b613032565b336000526001602052604060002055600052604060002061185883825461303f565b905582808361181a565b50336001600160a01b038216146117b4565b346103325760803660031901126103325761188d612cfb565b611895612d11565b604435916001600160a01b0391908284168403610332576064356001600160401b038111610332576118cb903690600401612ef3565b9490916118dd85600554163314612f50565b600f546040805163d6d7d52560e01b815292918390881681600081611904600482016133ee565b03925af18015610aca578692600090600092611cc4575b508181611cba575b5015611cae5780611939916011555b1515613e81565b611941613d44565b16918260005260209560178752611966604060002054620186a0610e728a5483612fdb565b8787600954169160646119826107b9600c549360115490612fdb565b916040519485938492638eb22cdd60e01b845260048401526024830152600060448301525afa908115610aca57600091611c81575b50846000526018885260406000205411611c3c5785856000611b24611b32611ae9898d99611ae3869a879a60188e868b5281815260408b205496611ab06119fc613c71565b828e5260178452611a8b611a628f604090205492600087604051611a1f81612dee565b82815201528681019360018060801b03928382818094868a8381511615600014611bef57505081611a55915b1682885116613ed8565b1685521682875116613ed8565b169384905251601480546001600160801b0319166001600160801b039390921692909216179055565b601480546001600160801b031660809290921b6001600160801b031916919091179055565b808c52601782528b6040812055828252611ad060408d2054601554613032565b6015558b52528860408120553691612ebc565b91613f49565b600d5460405163a9059cbb60e01b8c82019081526001600160a01b039098166024820152604481019290925290961695928391506064820190565b03601f198101835282612e40565b51925af13d15611be8573d611b4681612ea1565b90611b546040519283612e40565b81523d60008483013e5b81611bb0575b5015611b6c57005b6064906040519062461bcd60e51b82526004820152601c60248201527f426f72696e6745524332303a205472616e73666572206661696c6564000000006044820152fd5b80915051828115918215611bc9575b5050905082611b64565b83809293500103126103325781611be091016133c4565b808284611bbf565b6060611b5e565b611a5592611c28611c1e86611c15611c0b828098511686612fdb565b8287511690613004565b94511684612fdb565b848c511690613004565b1015611a4b57611c37906139d9565b611a4b565b60405162461bcd60e51b815260048101889052601b60248201527f42423a2043616e6e6f7420666f726365206c69717569646174656400000000006044820152606490fd5b90508781813d8311611ca7575b611c988183612e40565b810103126103325751886119b7565b503d611c8e565b50611939601154611932565b9050151589611923565b9050611cdf915060403d604011610f3b57610f2b8183612e40565b908961191b565b3461033257604036600319011261033257611d2b611d0e611d05612cfb565b6024359061327b565b604080519384526020840192909252908201529081906060820190565b0390f35b346103325760403660031901126103325760206116d7611d4d612cfb565b60243590613583565b3461033257600036600319011261033257604051600090602c54611d7981612db4565b808352600191808316908115611e105750600114611db6575b611d2b83611da281870382612e40565b604051918291602083526020830190612e61565b602c600090815260209450917f7416c943b4a09859521022fd2e90eac0dd9026dad28fa317782a135f28a860915b828410611dfd57505050810190910190611da281611d92565b8054858501870152928501928101611de4565b611d2b9550611da293506020915091849260ff191682840152151560051b8201019350611d92565b34610332576040366003190112610332576004356001600160401b038111610332573660238201121561033257611e79903690602481600401359101612ebc565b9060243561ffff811680910361033257610100918284805181010312610332576020611ea68186016133c4565b91611eb360408701613841565b90611ec060608801613841565b9660808101519660a08201519260c08301519160ff8316830361033257838201519301516001600160a01b039586169a861698909490428210612043579289888d989794611fba97946111af978f8e60001461201c577f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e266955b8d60005260048652604060002092835493611f53856139d9565b905560405196870197885260408701528d6060870152608086015260a085015260c0840152818301528152611f8781612e09565b519020611f9261368d565b90604051908a82019261190160f01b845260228301526042820152604281526111a781612e25565b1603611fd8575015611fcf5761033092613a36565b610330926139e8565b6064906040519062461bcd60e51b82526004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152fd5b7f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d695611f39565b60405162461bcd60e51b815260048101899052601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b34610332576000366003190112610332576005546040516001600160a01b039091168152602090f35b34610332576000366003190112610332576020601b54604051908152f35b34610332576020366003190112610332576001600160a01b036120f0612cfb565b1660005260246020526020604060002054604051908152f35b3461033257600036600319011261033257601454604080516001600160801b038316815260809290921c602083015290f35b3461033257604036600319011261033257612161612157612cfb565b60243590336139e8565b602060405160018152f35b34610332576020366003190112610332576001600160a01b0361218d612cfb565b1660005260046020526020604060002054604051908152f35b3461033257600036600319011261033257600f546040516001600160a01b039091168152602090f35b34610332576000366003190112610332576020603054604051908152f35b34610332576000366003190112610332576020602e54604051908152f35b346103325760003660031901126103325760405160009060105461222e81612db4565b808352600191808316908115611e10575060011461225657611d2b83611da281870382612e40565b6010600090815260209450916000805160206143e58339815191525b82841061228b57505050810190910190611da281611d92565b8054858501870152928501928101612272565b346103325760203660031901126103325760043560098110156103325760ff6122c8602092612d85565b54166040519015158152f35b34610332576020366003190112610332576001600160a01b036122f5612cfb565b1660005260016020526020604060002054604051908152f35b3461033257600036600319011261033257600a546040516001600160a01b039091168152602090f35b34610332576000366003190112610332576020602754604051908152f35b34610332576000366003190112610332576020601c54604051908152f35b34610332576000366003190112610332576020602d54604051908152f35b346103325760003660031901126103325760208054604051908152f35b34610332576000366003190112610332576006546001600160a01b03908181163381900361241857806005549384167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a36001600160a01b03199283161760055516600655005b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b34610332576020366003190112610332576001600160a01b0361247d612cfb565b1660005260176020526020604060002054604051908152f35b34610332576000366003190112610332576020601554604051908152f35b34610332576000366003190112610332576020600e54604051908152f35b34610332576000366003190112610332576020601654604051908152f35b346103325760603660031901126103325760206116d76044356024356004356131b4565b34610332576000366003190112610332576020601154604051908152f35b3461033257600036600319011261033257600d546040516001600160a01b039091168152602090f35b34610332576000366003190112610332576020601254604051908152f35b346103325760003660031901126103325760206116d761368d565b34610332576000366003190112610332576020601954604051908152f35b34610332576000366003190112610332576014546040516001600160801b039091168152602090f35b34610332576000366003190112610332576020601354604051908152f35b3461033257606036600319011261033257612612612cfb565b61261a612d11565b6044359081612657575b6040519182526001600160a01b039081169216906000805160206143c583398151915290602090a3602060405160018152f35b60018060a01b0380841680600052602060018152846040600020549361267f828610156137b7565b851693848403612694575b5050505050612624565b836000526002835260406000203360005283526040600020546000198103612708575b5084926126df6000805160206143c583398151915297959360019361183160209915156137fc565b926000525260406000205560005260406000206126fd85825461303f565b90559185848161268a565b9091811061275d57602094926126df886000805160206143c583398151915298969461273682600196613032565b866000526002855260406000203360005285526040600020559350939597505092946126b7565b60405162461bcd60e51b815260048101849052601860248201527745524332303a20616c6c6f77616e636520746f6f206c6f7760401b6044820152606490fd5b34610332576000366003190112610332576020602a54604051908152f35b34610332576127c936612d36565b8394969793929192421161120b57612863926111af9260018060a01b0395868b1697886000526004602052604060002091825492612806846139d9565b90556040519160208301937f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d68552600060408501528b60608501528a8d1660808501528d60a085015260c084015281830152815261117381612e09565b16036111c657610330926139e8565b3461033257600036600319011261033257602b546040516001600160a01b039091168152602090f35b34610332576020366003190112610332576001600160a01b036128bc612cfb565b1660005260186020526020604060002054604051908152f35b3461033257600036600319011261033257602060405160008152f35b34610332576000366003190112610332576020602f54604051908152f35b3461033257604036600319011261033257600435600981101561033257612934612d27565b6008549091906001600160a01b031633036129ed5760ff61295482612d85565b541615159115159182146129b357808260ff6129726129a194612d85565b54161515827feeec81de25875ce1725479bb76f720a8defdb43dea041919ae37bb4aae9847c0600080a4612d85565b9060ff80198354169116179055600080f35b60405162461bcd60e51b81526020600482015260126024820152714d61726b65743a2073616d6520737461746560701b6044820152606490fd5b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881d5b985d5d1a1bdc9a5e995960621b6044820152606490fd5b3461033257604036600319011261033257612161612a45612cfb565b6024359033613a36565b3461033257606036600319011261033257612a68612cfb565b612a70612d27565b6044359081151582036103325760018060a01b03928391612a9683600554163314612f50565b15612b3a571690811590811591612b32575b5015612af557806005549283167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a36001600160a01b031991821617600555600680549091169055005b60405162461bcd60e51b81526020600482015260156024820152744f776e61626c653a207a65726f206164647265737360581b6044820152606490fd5b905083612aa8565b9150501660018060a01b03196006541617600655600080f35b3461033257600036600319011261033257600f546040805163d6d7d52560e01b81529182906001600160a01b031681600081612b91600482016133ee565b03925af18015610aca57600091600091612c8e575b50908015612c30578115612bf45781604092601155807f9f9192b5edb17356c524e08d9e025c8e2f6307e6ea52fb7968faa3081f51c3c8600080a25b42601355825191151582526020820152f35b60405162461bcd60e51b81526020600482015260146024820152734d61726b65743a20696e76616c6964207261746560601b6044820152606490fd5b9050612c416013546012549061303f565b4211612c5257604090601154612be2565b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881c985d19481d1bdbc81bdb1960621b6044820152606490fd5b9050612ca9915060403d604011610f3b57610f2b8183612e40565b82612ba6565b3461033257604036600319011261033257602090612ccb612cfb565b612cd3612d11565b9060018060a01b03809116600052600384526040600020911660005282526040600020548152f35b600435906001600160a01b038216820361033257565b602435906001600160a01b038216820361033257565b60243590811515820361033257565b60e0906003190112610332576001600160a01b03906004358281168103610332579160243590811681036103325790604435906064359060843560ff81168103610332579060a4359060c43590565b6009811015612d9e576000526007602052604060002090565b634e487b7160e01b600052602160045260246000fd5b90600182811c92168015612de4575b6020831014612dce57565b634e487b7160e01b600052602260045260246000fd5b91607f1691612dc3565b604081019081106001600160401b03821117610ab457604052565b61010081019081106001600160401b03821117610ab457604052565b608081019081106001600160401b03821117610ab457604052565b90601f801991011681019081106001600160401b03821117610ab457604052565b919082519283825260005b848110612e8d575050826000602080949584010152601f8019910116010190565b602081830181015184830182015201612e6c565b6001600160401b038111610ab457601f01601f191660200190565b929192612ec882612ea1565b91612ed66040519384612e40565b829481845281830111610332578281602093846000960137010152565b9181601f84011215610332578235916001600160401b038311610332576020838186019501011161033257565b9181601f84011215610332578235916001600160401b038311610332576020808501948460051b01011161033257565b15612f5757565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b15612fa257565b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881b9bdd081d985b1a59607a1b6044820152606490fd5b81810292918115918404141715612fee57565b634e487b7160e01b600052601160045260246000fd5b811561300e570490565b634e487b7160e01b600052601260045260246000fd5b604d8111612fee57600a0a90565b91908203918211612fee57565b91908201809211612fee57565b81810392916000138015828513169184121617612fee57565b906509184e72a00091828102928184051490151715612fee57565b90670de0b6b3a764000091828102928184051490151715612fee57565b811561300e57600160ff1b8114600019831416612fee570590565b6014546130f3916130e291906130d8906001600160801b03831690612fdb565b9060801c90613004565b91620186a0918291601f5490612fdb565b048083106131ac576131059083613032565b601e54602054830190818411612fee57839161312091612fdb565b0491828103906000809412818312811691831390151617613198579061315161314b61315693613065565b91613080565b61309d565b908082121561319157600160ff1b821461317d5703905b808211613178575090565b905090565b634e487b7160e01b81526011600452602490fd5b509061316d565b634e487b7160e01b83526011600452602483fd5b505050600090565b6014549192916131f3916131e4916131da916130d8906001600160801b03831690612fdb565b93601f5490612fdb565b6131ed83613024565b90613004565b908183106131ac5761315161314b61324d6132116132529587613032565b93613248613242613239601e5461323361322a86613024565b6020549061303f565b90612fdb565b6131ed84613024565b91613024565b61304c565b613065565b600081121561327557600160ff1b8114612fee5760000390808211613178575090565b9061316d565b6001600160a01b039081166000818152601760209081526040822054929594939192909181156133b7576132ad613cb0565b906132b9861515613489565b6009541683600c54898752601882526064604088205491604051948593849263442c159960e01b8452600484015260248301528960448301525afa9081156133ac578591613379575b509285949261335960189361333461336d996106bf61332b60409a620186a06022540490612fdb565b601e5490612fdb565b815190936001600160801b0391869161334f91841690612fdb565b9201511690613004565b81811061337157035b9783525220546134d5565b9091565b505082613362565b90508381813d83116133a5575b6133908183612e40565b810103126133a1575161336d613302565b8480fd5b503d613386565b6040513d87823e3d90fd5b5050509192505080918190565b5190811515820361033257565b91908260409103126103325760206133e8836133c4565b92015190565b60208082526000916010549161340383612db4565b92838284015260019081811690816000146134665750600114613428575b5050505090565b929350601060005280600020926000935b8585106134525750505060409250010138808080613421565b805485850160400152938201938101613439565b925050506040935060ff929192191683830152151560051b010138808080613421565b1561349057565b60405162461bcd60e51b815260206004820152601e60248201527f4d61726b65743a2065786368616e676552617465206e6f742076616c696400006044820152606490fd5b6134e0821515613489565b602060018060a01b0360095416916064600c54604051948593849263442c159960e01b845260048401526024830152600060448301525afa908115610aca5760009161354d575b50906106bf6135399260225490612fdb565b620186a0613549601e5483612fdb565b0491565b906020823d821161357b575b8161356660209383612e40565b810103126135785750516106bf613527565b80fd5b3d9150613559565b6001600160a01b031660008181526018602052604081205490926135a6916134d5565b91835260176020526040832054801561368757811561368757818110613687578281101561367d576014546135ef918391611831916130d8906001600160801b03831690612fdb565b90620186a092838302928084048514901517156136695761361492916131ed91613032565b91601b5491601c5493613627858561304c565b80820291848212600160ff1b821416613669578183051490151715613198570581848201948512911290801582169115161761317d5750808212613178575090565b634e487b7160e01b85526011600452602485fd5b50505050601b5490565b50505090565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316148061378e575b156136e8577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f000000000000000000000000000000000000000000000000000000000000000082527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a0815260c081018181106001600160401b03821117610ab45760405251902090565b507f000000000000000000000000000000000000000000000000000000000000000046146136bf565b156137be57565b60405162461bcd60e51b815260206004820152601660248201527545524332303a2062616c616e636520746f6f206c6f7760501b6044820152606490fd5b1561380357565b60405162461bcd60e51b815260206004820152601660248201527545524332303a206e6f207a65726f206164647265737360501b6044820152606490fd5b51906001600160a01b038216820361033257565b6005811015612d9e57806138665750565b600181036138ae5760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b6044820152606490fd5b600281036138fb5760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606490fd5b60031461390457565b60405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608490fd5b9291906fa2a8918ca85bafe22016d0b997e4df60600160ff1b0383116139cd5791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa156139c05781516001600160a01b038116156139ba579190565b50600190565b50604051903d90823e3d90fd5b50505050600090600390565b6000198114612fee5760010190565b7fe50de2333c10a9502fcb1d8ae13a51bbf423153dfc63c2b8997665b32154afc360018060a01b038092169160009083825260036020526040822094169384825260205284604082205580a4565b909160207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259160018060a01b03809416938460005260028352604060002095169485600052825280604060002055604051908152a3565b60ff60265416613c0b576014546001600160801b0316908115613c0457600a54604051631848f2bf60e31b8152602093916001600160a01b03919085908290600490829086165afa8015610aca578591600091613bc7575b50600460405180948193631a674cc560e11b8352165afa938415610aca57600094613b94575b5050613b279192670de0b6b3a764000092839160295490612fdb565b049081811015613b8b57613b3e602a548092613032565b83810290808204851490151715612fee576131ed613b5f92613b7f94613032565b60275492613b7960285492613b748487613032565b612fdb565b0461303f565b90808211613178575090565b50505060275490565b81813d8311613bc0575b613ba88183612e40565b81010312613bbc57519250613b2738613b0b565b8380fd5b503d613b9e565b909181813d8311613bfd575b613bdd8183612e40565b81010312613bf957519082821682036135785750849038613ae5565b5080fd5b503d613bd3565b6028549150565b600a5460405163e6abad4960e01b815290602090829060049082906001600160a01b03165afa908115610aca57600091613c43575090565b906020823d8211613c69575b81613c5c60209383612e40565b8101031261357857505190565b3d9150613c4f565b60405190613c7e82612dee565b6014546001600160801b038116835260801c6020830152565b6001600160801b039182169082160191908211612fee57565b60006020604051613cc081612dee565b82815201526001600160401b0390613cdf8260255460401c1642613032565b918215613d3657613d31613b7491670de0b6b3a7640000613d26613d01613c71565b9660018060801b03958694858a5116906301e13380613d1e613a8d565b041690612fdb565b041682855116613c97565b168252565b509050613d41613c71565b90565b604051613d5081612dee565b602554906001600160401b038281809416835260401c1691613d79602083019380855242613032565b918215613e7b57816301e13380613d8e613a8d565b041681528142168452613e2c613da2613c71565b936020670de0b6b3a7640000613dca60018060801b0393613b74858a51168989511690612fdb565b0495613e0483613ddf818a1682855116613c97565b16808352601480546001600160801b0319166001600160801b03909216919091179055565b0151601480546001600160801b03169290911660801b6001600160801b031916919091179055565b51169182602554916001600160401b0360401b905160401b169160018060801b03191617176025557f7484db546dcd57af0104c73c8a6968dfbaf5767f047cee0dadd0499ad7df81a0600080a3565b50505050565b15613e8857565b60405162461bcd60e51b815260206004820152602260248201527f42423a2063757272656e742065786368616e676552617465206e6f742076616c6044820152611a5960f21b6064820152608490fd5b6001600160801b039182169082160391908211612fee57565b15613ef857565b60405162461bcd60e51b8152602060048201526013602482015272084847440d8cadccee8d040dad2e6dac2e8c6d606b1b6044820152606490fd5b9190826040910312610332576020825192015190565b91909160018060a01b0392836009541690600c5460409485519063442c159960e01b82526004928084840152602496878401526000958660448501526020958685606481855afa94851561429d57918b8b928a94859861425f575b509060a4911694835194859384926311a5cc7760e31b84528b8401528d30908401528760448401528960648401528160848401525af1801561425557614239575b5088600d5416908851926370a0823160e01b94858552308786015287858b81875afa94851561422f5789888d948f948c97958f95859b6141e3575b50906140619291600b54169751998a9889978896635cd3dc1560e01b885233908801528601526044850152606484015260a0608484015260a4830190612e61565b03925af180156141d9576141a1575b508388600d54169287895180958193825230888301525afa8015614197578590614166575b61409f9250613032565b9586156141255790606483926009541691600e54928989519889958694638eb22cdd60e01b86528501528301528660448301525afa93841561411a575081936140e9575b50505091565b9091809350813d8311614113575b6141018183612e40565b810103126135785750513880806140e3565b503d6140f7565b51913d9150823e3d90fd5b50601f8460649387519362461bcd60e51b85528401528201527f42423a206f6e436f6c6c61746572616c5265636569766572206661696c6564006044820152fd5b50908381813d8311614190575b61417d8183612e40565b810103126133a1579061409f9151614095565b503d614173565b87513d87823e3d90fd5b8481813d83116141d2575b6141b68183612e40565b810103126141ce576141c7906133c4565b5038614070565b8580fd5b503d6141ac565b88513d88823e3d90fd5b96999a50509550959250505081813d8311614228575b6142038183612e40565b8101031261422457928989886140618f9897968f968d98519a909192614020565b8880fd5b503d6141f9565b8b513d8b823e3d90fd5b61424f90893d8b11610c1a57610c0c8183612e40565b50613fe5565b89513d89823e3d90fd5b935096505091508681813d8311614296575b61427b8183612e40565b8101031261429257519387918a918c9060a4613fa4565b8780fd5b503d614271565b8a513d8a823e3d90fd5b9190811015610a875760051b0190565b919060018060a01b038060009416845260206017815260408520549081156143ba5760188152604086205480156143b357816142f1613c71565b9460095416916064600c54604051948593849263442c159960e01b8452600484015260248301528b60448301525afa9687156143a7578097614371575b505061334f61435661434d61436c969798620186a06022540490612fdb565b601f5490612fdb565b95613b7460018060801b03948587511690612fdb565b111590565b9096508187813d83116143a0575b6143898183612e40565b81010312613578575094519461334f61435661432e565b503d61437f565b604051903d90823e3d90fd5b5050505050565b506001945050505056feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae672a2646970667358221220a5a38f91c781126cc768c4994e7d36d938f79cdf08aa791d78e2ea1bfd335ea864736f6c63430008120033", + "deployedBytecode": "0x608080604052600436101561001357600080fd5b60e0600035811c918262a02a2014612caf5750816302ce728f14612b53578163078dfbe714612a4f578163095ea7b314612a295781630c4e84f01461290f5781630f8b29ea146128f157816318160ddd146128d55781631c9e379b1461289b5781631d4d3a5d146128725781631da8bf10146127bb5781631fb8f81a1461279d57816323b872dd146125f9578163331960ff146125db57816334ce998a146125b257816334d441d0146125945781633644e5151461257957816337b6b7b91461255b57816338d52e0f146125325781633ba0b9a9146125145781633f741adb146124f057816340626d8b146124d257816344de240a146124b4578163473e3ce71461249657816348e4163e1461245c5781634e71e0c8146123ae578163529898f214612391578163542afda31461237357816357935462146123555781636b19ad16146123375781636c3d8b8f1461230e57816370a08231146122d4578163727785471461229e57816374645ff31461220b57816374c9e481146121ed578163790c8467146121cf5781637dc0d1d0146121a65781637ecebe001461216c5781637fa0b84e1461213b5781638285ef401461210957816387b27937146120cf5781638c5d0ed3146120b15781638da5cb5b14612088578163910dd7c814611e38578163932bc4f814611d5657816399a9702814611d2f5781639e15e89f14611ce6578163a28e6b8214611874578163a9059cbb1461178d578163b0e21e8a1461176f578163b27c0e741461173e578163b7113f191461171b578163bb4cfe3b146116fd578163bde39c5d146116df578163c1ad5c8d146116bc578163ce8849ed14611693578163d3fb2a3814611250578163d505accf146110cb57508063d8dfeb45146110a2578063da863f0e14611079578063dd62ed3e14611028578063de40657714610fff578063e0996cb614610fe1578063e30c397814610fb8578063e5644d8b14610403578063ea64dd56146103e5578063eec0f42e146103c7578063ef2b234a14610355578063f791395d146103375763f8ba4cff1461031757600080fd5b3461033257600036600319011261033257610330613d44565b005b600080fd5b34610332576000366003190112610332576020602854604051908152f35b34610332576020366003190112610332576004356001600160a01b03818116918290036103325761038b81600554163314612f50565b816021549182167ffb4fd7114609dd603b57adbc2082205bfbbcabf9265c4b437b472f5c592b8cd7600080a36001600160a01b03191617602155005b34610332576000366003190112610332576020600c54604051908152f35b34610332576000366003190112610332576020601f54604051908152f35b34610332576080366003190112610332576004356001600160401b03811161033257610433903690600401612f20565b906024356001600160401b03811161033257610453903690600401612f20565b6044356001600160401b03811161033257610472903690600401612f20565b9290916064356001600160401b03811161033257610494903690600401612f20565b9490916004600052600760205260ff60406000205416610f82578715610f42576104bf818914613ef1565b6104ca828914613ef1565b6104d5828714613ef1565b600f546040805163d6d7d52560e01b8152959186906001600160a01b031681600081610503600482016133ee565b03925af1948515610aca57600090600096610f0e575b508581610f04575b5015610efa57846011555b610537851515613e81565b61053f613d44565b60009860005b81811061058e578a1561055457005b60405162461bcd60e51b815260206004820152601260248201527110908e881b9bc81d5cd95c9cc8199bdd5b9960721b6044820152606490fd5b61059981838c6142a7565b356001600160a01b0381168103610332576105b488826142b7565b156105c9575b506105c4906139d9565b610545565b9a6105d3906139d9565b9a6105df8286866142a7565b35906105ec83888c6142a7565b35906001600160a01b0382168203610332578b841015610a87578360051b89013592601e198a360301841215610332576001600160401b03848b01351161033257838a013536036020858c010113610332576106488b83613583565b938b15610eb55760018060a01b03600954166020600c5460018060a01b03861660005260188252606460406000205491604051948593849263442c159960e01b845260048401526024830152600060448301525afa908115610aca578d90600092610e7f575b506106bf6106c49260225490612fdb565b613004565b9360018060a01b03841660005260176020526106e5856040600020546130b8565b80601d5480610e60575b5080851115610e59575b6001600160a01b0386166000908152601760205260409020549081811115610e50575080965b1115610e1c578d9381811115610e1557505b6001600160a01b0385166000908152601760205260409020549081811115610e0a575061075e8180613032565b6001600160a01b03861660009081526017602052604090205561077f613c71565b6020810180519091906001600160801b0316610dd8575050602081965b60646107c26107b960018060a01b036009541698600c5494612fdb565b60225490613004565b916040519788938492638eb22cdd60e01b845260048401526024830152600060448301525afa938415610aca57600094610da4575b506001600160a01b0385166000908152601860205260409020548411610d635760018060a01b03851660005260186020526040600020610838858254613032565b90558515610d30576014805490916108816001600160801b0361085f8a8216828616613ed8565b16926001600160801b0319926001600160801b0316908316841760801c613ed8565b60801b16179055601580548480821115610d265761089e91613032565b905b5560018060a01b0360095416916020600e54606460405180968193638eb22cdd60e01b835260048301528a6024830152600160448301525afa928315610aca578d90600094610cec575b50610909929161090291369101803590602001612ebc565b9084613f49565b50818110610ca75781811115610c935761093561092d61093d93620186a093613032565b965b87612fdb565b048095613032565b9184610b0f575b600d5460095460405163095ea7b360e01b81526001600160a01b039182166004820152600060248201819052909260209284926044928492165af18015610aca57610ad6575b50600d546001600160a01b0316803b1561033257604051632770a7eb60e21b815230600482015260248101869052906000908290604490829084905af18015610aca57610a9d575b50604051906109e082612dee565b6001825260203681840137815115610a87576001600160a01b03166020820190815260405191518291906000905b808210610a65575050508190039020604080519384526020840194909452928201526105c49392919033907f85b91d472e69b2cfe848ed50eb5d8582ae96c22057b6e46250255dd6f6c3519290606090a4906105ba565b82516001600160a01b0316845260209384019390920191600190910190610a0e565b634e487b7160e01b600052603260045260246000fd5b6001600160401b038111610ab457604052386109d2565b634e487b7160e01b600052604160045260246000fd5b6040513d6000823e3d90fd5b6020813d602011610b07575b81610aef60209383612e40565b8101031261033257610b00906133c4565b503861098a565b3d9150610ae2565b600d5460095460405163095ea7b360e01b81526001600160a01b039182166004820152600060248201819052909260209284926044928492165af18015610aca57610c5a575b50600d5460095460405163095ea7b360e01b81526001600160a01b03918216600482015260001960248201529160209183916044918391600091165af18015610aca57610c21575b506000604060018060a01b036009541660a4600e5483519485938492634d4d7cbd60e11b845260048401523060248401523360448401528160648401528b60848401525af18015610aca57610bf3575b50610944565b610c149060403d604011610c1a575b610c0c8183612e40565b810190613f33565b50610bed565b503d610c02565b6020813d602011610c52575b81610c3a60209383612e40565b8101031261033257610c4b906133c4565b5038610b9d565b3d9150610c2d565b6020813d602011610c8b575b81610c7360209383612e40565b8101031261033257610c84906133c4565b5038610b55565b3d9150610c66565b505061093d620186a061093560009661092f565b60405162461bcd60e51b815260206004820152601a60248201527f42423a20617373657420616d6f756e74206e6f742076616c69640000000000006044820152606490fd5b935050906020833d602011610d1e575b81610d0960209383612e40565b8101031261033257915191908c6109096108ea565b3d9150610cfc565b50506000906108a0565b60405162461bcd60e51b815260206004820152600b60248201526a10908e881cdbdb1d995b9d60aa1b6044820152606490fd5b60405162461bcd60e51b815260206004820152601960248201527810908e881b9bdd08195b9bdd59da0818dbdb1b185d195c985b603a1b6044820152606490fd5b9093506020813d602011610dd0575b81610dc060209383612e40565b81010312610332575192386107f7565b3d9150610db3565b51602091610e0491610df3906001600160801b031685612fdb565b90516001600160801b031690613004565b9661079c565b61075e908092613032565b9050610731565b60405162461bcd60e51b815260206004820152600c60248201526b10908e88189859081919589d60a21b6044820152606490fd5b9050809661071f565b50836106f9565b90620186a0610e72610e799383612fdb565b049061303f565b386106ef565b9150506020813d602011610ead575b81610e9b60209383612e40565b8101031261033257518c6106bf6106ae565b3d9150610e8e565b60405162461bcd60e51b815260206004820152601a60248201527f42423a2065786368616e676552617465206e6f742076616c69640000000000006044820152606490fd5b601154945061052c565b905015158a610521565b9050610f3391955060403d604011610f3b575b610f2b8183612e40565b8101906133d1565b94908a610519565b503d610f21565b60405162461bcd60e51b815260206004820152601860248201527742423a206e6f7468696e6720746f206c697175696461746560401b6044820152606490fd5b60405162461bcd60e51b815260206004820152600e60248201526d13585c9ad95d0e881c185d5cd95960921b6044820152606490fd5b34610332576000366003190112610332576006546040516001600160a01b039091168152602090f35b34610332576000366003190112610332576020601d54604051908152f35b34610332576000366003190112610332576009546040516001600160a01b039091168152602090f35b3461033257604036600319011261033257611041612cfb565b611049612d11565b9060018060a01b038091166000526002602052604060002091166000526020526020604060002054604051908152f35b34610332576000366003190112610332576021546040516001600160a01b039091168152602090f35b3461033257600036600319011261033257600b546040516001600160a01b039091168152602090f35b34610332576110d936612d36565b8394969793929192421161120b576111b7926111af9260018060a01b0395868b1697886000526004602052604060002091825492611116846139d9565b90556040519160208301937f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e2668552600060408501528b60608501528a8d1660808501528d60a085015260c084015281830152815261117381612e09565b51902061117e61368d565b9060405190602082019261190160f01b845260228301526042820152604281526111a781612e25565b519020613954565b919091613855565b16036111c65761033092613a36565b60405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152606490fd5b60405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b3461033257610160366003190112610332576001600160a01b0360043581811690819003610332576001600160401b039160243583811161033257611299903690600401612ef3565b909360443593838516809503610332576112b884600554163314612f50565b80611654575b5081611509575b5050908092506114c8575b5050606435806114b0575b5060843580611498575b5060a43580611481575b5060c4358061145d575b5060e43580611439575b506101043580611407575b506101243580611393575b50610144358061132557005b601e54811061133357601f55005b60405162461bcd60e51b815260206004820152603260248201527f4d61726b65743a206c69717569646174696f6e436f6c6c61746572616c697a616044820152711d1a5bdb94985d19481d1bdbc81cdb585b1b60721b6064820152608490fd5b6113a2620186a0821115612f9b565b601f5481116113b457601e5580611319565b60405162461bcd60e51b815260206004820152602560248201527f4d61726b65743a20636f6c6c61746572616c697a6174696f6e5261746520746f6044820152646f2062696760d81b6064820152608490fd5b806016547fae6e0ab3b95f0a53ff9660a390ccedcbbf1f2355dce974a9841af106fddcfaba600080a36016558061130e565b611447620186a08210612f9b565b611454601b548211612f9b565b601c5580611303565b61146b620186a08210612f9b565b611478601c548210612f9b565b601b55806112f9565b61148f620186a08210612f9b565b601d55806112ef565b6114a7620186a0821115612f9b565b601a55806112e5565b6114bf620186a0821115612f9b565b601955806112db565b816008549182167f5a62d22209e370e38eea92cfddcd228e656e6ec139243392a760a7769f5877fd600080a36001600160a01b0319161760085580806112d0565b8111610ab45761151a601054612db4565b601f8111611603575b506000601f821160011461158c5781929394600092611581575b50508160011b916000199060031b1c1916176010555b7fa6f004921c944d4b8bf6e38462b00f36a58d62495d56b51f571ab78f732c9815600080a1819083806112c5565b01359050848061153d565b60106000908152601f198316956000805160206143e583398151915292909160205b8882106115eb575050836001959697106115d1575b505050811b01601055611553565b0135600019600384901b60f8161c191690558480806115c3565b806001849682949587013581550195019201906115ae565b60106000526000805160206143e5833981519152601f830160051c81016020841061164d575b601f90920160051c01905b8181106116415750611523565b60008155600101611634565b5080611629565b600f80546001600160a01b0319169190911790557f0b2d6eb667d0522c3eb86e4288afecae6c11591ffd1345d4d12407e0598bca9b600080a1856112be565b34610332576000366003190112610332576008546040516001600160a01b039091168152602090f35b346103325760003660031901126103325760206116d7613a8d565b604051908152f35b34610332576000366003190112610332576020602954604051908152f35b34610332576000366003190112610332576020601e54604051908152f35b3461033257600036600319011261033257602060ff602654166040519015158152f35b346103325760003660031901126103325760406025548151906001600160401b03908181168352831c166020820152f35b34610332576000366003190112610332576020601a54604051908152f35b34610332576040366003190112610332576117a6612cfb565b602435908115801590611862575b6117ea575b6040519182526001600160a01b03169033906000805160206143c583398151915290602090a3602060405160018152f35b336000526001602052604060002054611805838210156137b7565b6001600160a01b038216908333839003611822575b5050506117b9565b611836916118318415156137fc565b613032565b336000526001602052604060002055600052604060002061185883825461303f565b905582808361181a565b50336001600160a01b038216146117b4565b346103325760803660031901126103325761188d612cfb565b611895612d11565b604435916001600160a01b0391908284168403610332576064356001600160401b038111610332576118cb903690600401612ef3565b9490916118dd85600554163314612f50565b600f546040805163d6d7d52560e01b815292918390881681600081611904600482016133ee565b03925af18015610aca578692600090600092611cc4575b508181611cba575b5015611cae5780611939916011555b1515613e81565b611941613d44565b16918260005260209560178752611966604060002054620186a0610e728a5483612fdb565b8787600954169160646119826107b9600c549360115490612fdb565b916040519485938492638eb22cdd60e01b845260048401526024830152600060448301525afa908115610aca57600091611c81575b50846000526018885260406000205411611c3c5785856000611b24611b32611ae9898d99611ae3869a879a60188e868b5281815260408b205496611ab06119fc613c71565b828e5260178452611a8b611a628f604090205492600087604051611a1f81612dee565b82815201528681019360018060801b03928382818094868a8381511615600014611bef57505081611a55915b1682885116613ed8565b1685521682875116613ed8565b169384905251601480546001600160801b0319166001600160801b039390921692909216179055565b601480546001600160801b031660809290921b6001600160801b031916919091179055565b808c52601782528b6040812055828252611ad060408d2054601554613032565b6015558b52528860408120553691612ebc565b91613f49565b600d5460405163a9059cbb60e01b8c82019081526001600160a01b039098166024820152604481019290925290961695928391506064820190565b03601f198101835282612e40565b51925af13d15611be8573d611b4681612ea1565b90611b546040519283612e40565b81523d60008483013e5b81611bb0575b5015611b6c57005b6064906040519062461bcd60e51b82526004820152601c60248201527f426f72696e6745524332303a205472616e73666572206661696c6564000000006044820152fd5b80915051828115918215611bc9575b5050905082611b64565b83809293500103126103325781611be091016133c4565b808284611bbf565b6060611b5e565b611a5592611c28611c1e86611c15611c0b828098511686612fdb565b8287511690613004565b94511684612fdb565b848c511690613004565b1015611a4b57611c37906139d9565b611a4b565b60405162461bcd60e51b815260048101889052601b60248201527f42423a2043616e6e6f7420666f726365206c69717569646174656400000000006044820152606490fd5b90508781813d8311611ca7575b611c988183612e40565b810103126103325751886119b7565b503d611c8e565b50611939601154611932565b9050151589611923565b9050611cdf915060403d604011610f3b57610f2b8183612e40565b908961191b565b3461033257604036600319011261033257611d2b611d0e611d05612cfb565b6024359061327b565b604080519384526020840192909252908201529081906060820190565b0390f35b346103325760403660031901126103325760206116d7611d4d612cfb565b60243590613583565b3461033257600036600319011261033257604051600090602c54611d7981612db4565b808352600191808316908115611e105750600114611db6575b611d2b83611da281870382612e40565b604051918291602083526020830190612e61565b602c600090815260209450917f7416c943b4a09859521022fd2e90eac0dd9026dad28fa317782a135f28a860915b828410611dfd57505050810190910190611da281611d92565b8054858501870152928501928101611de4565b611d2b9550611da293506020915091849260ff191682840152151560051b8201019350611d92565b34610332576040366003190112610332576004356001600160401b038111610332573660238201121561033257611e79903690602481600401359101612ebc565b9060243561ffff811680910361033257610100918284805181010312610332576020611ea68186016133c4565b91611eb360408701613841565b90611ec060608801613841565b9660808101519660a08201519260c08301519160ff8316830361033257838201519301516001600160a01b039586169a861698909490428210612043579289888d989794611fba97946111af978f8e60001461201c577f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e266955b8d60005260048652604060002092835493611f53856139d9565b905560405196870197885260408701528d6060870152608086015260a085015260c0840152818301528152611f8781612e09565b519020611f9261368d565b90604051908a82019261190160f01b845260228301526042820152604281526111a781612e25565b1603611fd8575015611fcf5761033092613a36565b610330926139e8565b6064906040519062461bcd60e51b82526004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152fd5b7f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d695611f39565b60405162461bcd60e51b815260048101899052601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b34610332576000366003190112610332576005546040516001600160a01b039091168152602090f35b34610332576000366003190112610332576020601b54604051908152f35b34610332576020366003190112610332576001600160a01b036120f0612cfb565b1660005260246020526020604060002054604051908152f35b3461033257600036600319011261033257601454604080516001600160801b038316815260809290921c602083015290f35b3461033257604036600319011261033257612161612157612cfb565b60243590336139e8565b602060405160018152f35b34610332576020366003190112610332576001600160a01b0361218d612cfb565b1660005260046020526020604060002054604051908152f35b3461033257600036600319011261033257600f546040516001600160a01b039091168152602090f35b34610332576000366003190112610332576020603054604051908152f35b34610332576000366003190112610332576020602e54604051908152f35b346103325760003660031901126103325760405160009060105461222e81612db4565b808352600191808316908115611e10575060011461225657611d2b83611da281870382612e40565b6010600090815260209450916000805160206143e58339815191525b82841061228b57505050810190910190611da281611d92565b8054858501870152928501928101612272565b346103325760203660031901126103325760043560098110156103325760ff6122c8602092612d85565b54166040519015158152f35b34610332576020366003190112610332576001600160a01b036122f5612cfb565b1660005260016020526020604060002054604051908152f35b3461033257600036600319011261033257600a546040516001600160a01b039091168152602090f35b34610332576000366003190112610332576020602754604051908152f35b34610332576000366003190112610332576020601c54604051908152f35b34610332576000366003190112610332576020602d54604051908152f35b346103325760003660031901126103325760208054604051908152f35b34610332576000366003190112610332576006546001600160a01b03908181163381900361241857806005549384167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a36001600160a01b03199283161760055516600655005b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b34610332576020366003190112610332576001600160a01b0361247d612cfb565b1660005260176020526020604060002054604051908152f35b34610332576000366003190112610332576020601554604051908152f35b34610332576000366003190112610332576020600e54604051908152f35b34610332576000366003190112610332576020601654604051908152f35b346103325760603660031901126103325760206116d76044356024356004356131b4565b34610332576000366003190112610332576020601154604051908152f35b3461033257600036600319011261033257600d546040516001600160a01b039091168152602090f35b34610332576000366003190112610332576020601254604051908152f35b346103325760003660031901126103325760206116d761368d565b34610332576000366003190112610332576020601954604051908152f35b34610332576000366003190112610332576014546040516001600160801b039091168152602090f35b34610332576000366003190112610332576020601354604051908152f35b3461033257606036600319011261033257612612612cfb565b61261a612d11565b6044359081612657575b6040519182526001600160a01b039081169216906000805160206143c583398151915290602090a3602060405160018152f35b60018060a01b0380841680600052602060018152846040600020549361267f828610156137b7565b851693848403612694575b5050505050612624565b836000526002835260406000203360005283526040600020546000198103612708575b5084926126df6000805160206143c583398151915297959360019361183160209915156137fc565b926000525260406000205560005260406000206126fd85825461303f565b90559185848161268a565b9091811061275d57602094926126df886000805160206143c583398151915298969461273682600196613032565b866000526002855260406000203360005285526040600020559350939597505092946126b7565b60405162461bcd60e51b815260048101849052601860248201527745524332303a20616c6c6f77616e636520746f6f206c6f7760401b6044820152606490fd5b34610332576000366003190112610332576020602a54604051908152f35b34610332576127c936612d36565b8394969793929192421161120b57612863926111af9260018060a01b0395868b1697886000526004602052604060002091825492612806846139d9565b90556040519160208301937f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d68552600060408501528b60608501528a8d1660808501528d60a085015260c084015281830152815261117381612e09565b16036111c657610330926139e8565b3461033257600036600319011261033257602b546040516001600160a01b039091168152602090f35b34610332576020366003190112610332576001600160a01b036128bc612cfb565b1660005260186020526020604060002054604051908152f35b3461033257600036600319011261033257602060405160008152f35b34610332576000366003190112610332576020602f54604051908152f35b3461033257604036600319011261033257600435600981101561033257612934612d27565b6008549091906001600160a01b031633036129ed5760ff61295482612d85565b541615159115159182146129b357808260ff6129726129a194612d85565b54161515827feeec81de25875ce1725479bb76f720a8defdb43dea041919ae37bb4aae9847c0600080a4612d85565b9060ff80198354169116179055600080f35b60405162461bcd60e51b81526020600482015260126024820152714d61726b65743a2073616d6520737461746560701b6044820152606490fd5b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881d5b985d5d1a1bdc9a5e995960621b6044820152606490fd5b3461033257604036600319011261033257612161612a45612cfb565b6024359033613a36565b3461033257606036600319011261033257612a68612cfb565b612a70612d27565b6044359081151582036103325760018060a01b03928391612a9683600554163314612f50565b15612b3a571690811590811591612b32575b5015612af557806005549283167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a36001600160a01b031991821617600555600680549091169055005b60405162461bcd60e51b81526020600482015260156024820152744f776e61626c653a207a65726f206164647265737360581b6044820152606490fd5b905083612aa8565b9150501660018060a01b03196006541617600655600080f35b3461033257600036600319011261033257600f546040805163d6d7d52560e01b81529182906001600160a01b031681600081612b91600482016133ee565b03925af18015610aca57600091600091612c8e575b50908015612c30578115612bf45781604092601155807f9f9192b5edb17356c524e08d9e025c8e2f6307e6ea52fb7968faa3081f51c3c8600080a25b42601355825191151582526020820152f35b60405162461bcd60e51b81526020600482015260146024820152734d61726b65743a20696e76616c6964207261746560601b6044820152606490fd5b9050612c416013546012549061303f565b4211612c5257604090601154612be2565b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881c985d19481d1bdbc81bdb1960621b6044820152606490fd5b9050612ca9915060403d604011610f3b57610f2b8183612e40565b82612ba6565b3461033257604036600319011261033257602090612ccb612cfb565b612cd3612d11565b9060018060a01b03809116600052600384526040600020911660005282526040600020548152f35b600435906001600160a01b038216820361033257565b602435906001600160a01b038216820361033257565b60243590811515820361033257565b60e0906003190112610332576001600160a01b03906004358281168103610332579160243590811681036103325790604435906064359060843560ff81168103610332579060a4359060c43590565b6009811015612d9e576000526007602052604060002090565b634e487b7160e01b600052602160045260246000fd5b90600182811c92168015612de4575b6020831014612dce57565b634e487b7160e01b600052602260045260246000fd5b91607f1691612dc3565b604081019081106001600160401b03821117610ab457604052565b61010081019081106001600160401b03821117610ab457604052565b608081019081106001600160401b03821117610ab457604052565b90601f801991011681019081106001600160401b03821117610ab457604052565b919082519283825260005b848110612e8d575050826000602080949584010152601f8019910116010190565b602081830181015184830182015201612e6c565b6001600160401b038111610ab457601f01601f191660200190565b929192612ec882612ea1565b91612ed66040519384612e40565b829481845281830111610332578281602093846000960137010152565b9181601f84011215610332578235916001600160401b038311610332576020838186019501011161033257565b9181601f84011215610332578235916001600160401b038311610332576020808501948460051b01011161033257565b15612f5757565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b15612fa257565b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881b9bdd081d985b1a59607a1b6044820152606490fd5b81810292918115918404141715612fee57565b634e487b7160e01b600052601160045260246000fd5b811561300e570490565b634e487b7160e01b600052601260045260246000fd5b604d8111612fee57600a0a90565b91908203918211612fee57565b91908201809211612fee57565b81810392916000138015828513169184121617612fee57565b906509184e72a00091828102928184051490151715612fee57565b90670de0b6b3a764000091828102928184051490151715612fee57565b811561300e57600160ff1b8114600019831416612fee570590565b6014546130f3916130e291906130d8906001600160801b03831690612fdb565b9060801c90613004565b91620186a0918291601f5490612fdb565b048083106131ac576131059083613032565b601e54602054830190818411612fee57839161312091612fdb565b0491828103906000809412818312811691831390151617613198579061315161314b61315693613065565b91613080565b61309d565b908082121561319157600160ff1b821461317d5703905b808211613178575090565b905090565b634e487b7160e01b81526011600452602490fd5b509061316d565b634e487b7160e01b83526011600452602483fd5b505050600090565b6014549192916131f3916131e4916131da916130d8906001600160801b03831690612fdb565b93601f5490612fdb565b6131ed83613024565b90613004565b908183106131ac5761315161314b61324d6132116132529587613032565b93613248613242613239601e5461323361322a86613024565b6020549061303f565b90612fdb565b6131ed84613024565b91613024565b61304c565b613065565b600081121561327557600160ff1b8114612fee5760000390808211613178575090565b9061316d565b6001600160a01b039081166000818152601760209081526040822054929594939192909181156133b7576132ad613cb0565b906132b9861515613489565b6009541683600c54898752601882526064604088205491604051948593849263442c159960e01b8452600484015260248301528960448301525afa9081156133ac578591613379575b509285949261335960189361333461336d996106bf61332b60409a620186a06022540490612fdb565b601e5490612fdb565b815190936001600160801b0391869161334f91841690612fdb565b9201511690613004565b81811061337157035b9783525220546134d5565b9091565b505082613362565b90508381813d83116133a5575b6133908183612e40565b810103126133a1575161336d613302565b8480fd5b503d613386565b6040513d87823e3d90fd5b5050509192505080918190565b5190811515820361033257565b91908260409103126103325760206133e8836133c4565b92015190565b60208082526000916010549161340383612db4565b92838284015260019081811690816000146134665750600114613428575b5050505090565b929350601060005280600020926000935b8585106134525750505060409250010138808080613421565b805485850160400152938201938101613439565b925050506040935060ff929192191683830152151560051b010138808080613421565b1561349057565b60405162461bcd60e51b815260206004820152601e60248201527f4d61726b65743a2065786368616e676552617465206e6f742076616c696400006044820152606490fd5b6134e0821515613489565b602060018060a01b0360095416916064600c54604051948593849263442c159960e01b845260048401526024830152600060448301525afa908115610aca5760009161354d575b50906106bf6135399260225490612fdb565b620186a0613549601e5483612fdb565b0491565b906020823d821161357b575b8161356660209383612e40565b810103126135785750516106bf613527565b80fd5b3d9150613559565b6001600160a01b031660008181526018602052604081205490926135a6916134d5565b91835260176020526040832054801561368757811561368757818110613687578281101561367d576014546135ef918391611831916130d8906001600160801b03831690612fdb565b90620186a092838302928084048514901517156136695761361492916131ed91613032565b91601b5491601c5493613627858561304c565b80820291848212600160ff1b821416613669578183051490151715613198570581848201948512911290801582169115161761317d5750808212613178575090565b634e487b7160e01b85526011600452602485fd5b50505050601b5490565b50505090565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316148061378e575b156136e8577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f000000000000000000000000000000000000000000000000000000000000000082527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a0815260c081018181106001600160401b03821117610ab45760405251902090565b507f000000000000000000000000000000000000000000000000000000000000000046146136bf565b156137be57565b60405162461bcd60e51b815260206004820152601660248201527545524332303a2062616c616e636520746f6f206c6f7760501b6044820152606490fd5b1561380357565b60405162461bcd60e51b815260206004820152601660248201527545524332303a206e6f207a65726f206164647265737360501b6044820152606490fd5b51906001600160a01b038216820361033257565b6005811015612d9e57806138665750565b600181036138ae5760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b6044820152606490fd5b600281036138fb5760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606490fd5b60031461390457565b60405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608490fd5b9291906fa2a8918ca85bafe22016d0b997e4df60600160ff1b0383116139cd5791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa156139c05781516001600160a01b038116156139ba579190565b50600190565b50604051903d90823e3d90fd5b50505050600090600390565b6000198114612fee5760010190565b7fe50de2333c10a9502fcb1d8ae13a51bbf423153dfc63c2b8997665b32154afc360018060a01b038092169160009083825260036020526040822094169384825260205284604082205580a4565b909160207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259160018060a01b03809416938460005260028352604060002095169485600052825280604060002055604051908152a3565b60ff60265416613c0b576014546001600160801b0316908115613c0457600a54604051631848f2bf60e31b8152602093916001600160a01b03919085908290600490829086165afa8015610aca578591600091613bc7575b50600460405180948193631a674cc560e11b8352165afa938415610aca57600094613b94575b5050613b279192670de0b6b3a764000092839160295490612fdb565b049081811015613b8b57613b3e602a548092613032565b83810290808204851490151715612fee576131ed613b5f92613b7f94613032565b60275492613b7960285492613b748487613032565b612fdb565b0461303f565b90808211613178575090565b50505060275490565b81813d8311613bc0575b613ba88183612e40565b81010312613bbc57519250613b2738613b0b565b8380fd5b503d613b9e565b909181813d8311613bfd575b613bdd8183612e40565b81010312613bf957519082821682036135785750849038613ae5565b5080fd5b503d613bd3565b6028549150565b600a5460405163e6abad4960e01b815290602090829060049082906001600160a01b03165afa908115610aca57600091613c43575090565b906020823d8211613c69575b81613c5c60209383612e40565b8101031261357857505190565b3d9150613c4f565b60405190613c7e82612dee565b6014546001600160801b038116835260801c6020830152565b6001600160801b039182169082160191908211612fee57565b60006020604051613cc081612dee565b82815201526001600160401b0390613cdf8260255460401c1642613032565b918215613d3657613d31613b7491670de0b6b3a7640000613d26613d01613c71565b9660018060801b03958694858a5116906301e13380613d1e613a8d565b041690612fdb565b041682855116613c97565b168252565b509050613d41613c71565b90565b604051613d5081612dee565b602554906001600160401b038281809416835260401c1691613d79602083019380855242613032565b918215613e7b57816301e13380613d8e613a8d565b041681528142168452613e2c613da2613c71565b936020670de0b6b3a7640000613dca60018060801b0393613b74858a51168989511690612fdb565b0495613e0483613ddf818a1682855116613c97565b16808352601480546001600160801b0319166001600160801b03909216919091179055565b0151601480546001600160801b03169290911660801b6001600160801b031916919091179055565b51169182602554916001600160401b0360401b905160401b169160018060801b03191617176025557f7484db546dcd57af0104c73c8a6968dfbaf5767f047cee0dadd0499ad7df81a0600080a3565b50505050565b15613e8857565b60405162461bcd60e51b815260206004820152602260248201527f42423a2063757272656e742065786368616e676552617465206e6f742076616c6044820152611a5960f21b6064820152608490fd5b6001600160801b039182169082160391908211612fee57565b15613ef857565b60405162461bcd60e51b8152602060048201526013602482015272084847440d8cadccee8d040dad2e6dac2e8c6d606b1b6044820152606490fd5b9190826040910312610332576020825192015190565b91909160018060a01b0392836009541690600c5460409485519063442c159960e01b82526004928084840152602496878401526000958660448501526020958685606481855afa94851561429d57918b8b928a94859861425f575b509060a4911694835194859384926311a5cc7760e31b84528b8401528d30908401528760448401528960648401528160848401525af1801561425557614239575b5088600d5416908851926370a0823160e01b94858552308786015287858b81875afa94851561422f5789888d948f948c97958f95859b6141e3575b50906140619291600b54169751998a9889978896635cd3dc1560e01b885233908801528601526044850152606484015260a0608484015260a4830190612e61565b03925af180156141d9576141a1575b508388600d54169287895180958193825230888301525afa8015614197578590614166575b61409f9250613032565b9586156141255790606483926009541691600e54928989519889958694638eb22cdd60e01b86528501528301528660448301525afa93841561411a575081936140e9575b50505091565b9091809350813d8311614113575b6141018183612e40565b810103126135785750513880806140e3565b503d6140f7565b51913d9150823e3d90fd5b50601f8460649387519362461bcd60e51b85528401528201527f42423a206f6e436f6c6c61746572616c5265636569766572206661696c6564006044820152fd5b50908381813d8311614190575b61417d8183612e40565b810103126133a1579061409f9151614095565b503d614173565b87513d87823e3d90fd5b8481813d83116141d2575b6141b68183612e40565b810103126141ce576141c7906133c4565b5038614070565b8580fd5b503d6141ac565b88513d88823e3d90fd5b96999a50509550959250505081813d8311614228575b6142038183612e40565b8101031261422457928989886140618f9897968f968d98519a909192614020565b8880fd5b503d6141f9565b8b513d8b823e3d90fd5b61424f90893d8b11610c1a57610c0c8183612e40565b50613fe5565b89513d89823e3d90fd5b935096505091508681813d8311614296575b61427b8183612e40565b8101031261429257519387918a918c9060a4613fa4565b8780fd5b503d614271565b8a513d8a823e3d90fd5b9190811015610a875760051b0190565b919060018060a01b038060009416845260206017815260408520549081156143ba5760188152604086205480156143b357816142f1613c71565b9460095416916064600c54604051948593849263442c159960e01b8452600484015260248301528b60448301525afa9687156143a7578097614371575b505061334f61435661434d61436c969798620186a06022540490612fdb565b601f5490612fdb565b95613b7460018060801b03948587511690612fdb565b111590565b9096508187813d83116143a0575b6143898183612e40565b81010312613578575094519461334f61435661432e565b503d61437f565b604051903d90823e3d90fd5b5050505050565b506001945050505056feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae672a2646970667358221220a5a38f91c781126cc768c4994e7d36d938f79cdf08aa791d78e2ea1bfd335ea864736f6c63430008120033", "linkReferences": {}, "deployedLinkReferences": {} } diff --git a/src/artifacts/tapioca-bar/BBStorage.json b/src/artifacts/tapioca-bar/BBStorage.json index 9b294f53..62dd658d 100644 --- a/src/artifacts/tapioca-bar/BBStorage.json +++ b/src/artifacts/tapioca-bar/BBStorage.json @@ -70,13 +70,13 @@ { "indexed": true, "internalType": "address", - "name": "_oldVal", + "name": "oldVal", "type": "address" }, { "indexed": true, "internalType": "address", - "name": "_newVal", + "name": "newVal", "type": "address" } ], @@ -140,6 +140,25 @@ "name": "ExchangeRateDurationUpdated", "type": "event" }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "oldVal", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newVal", + "type": "address" + } + ], + "name": "LeverageExecutorSet", + "type": "event" + }, { "anonymous": false, "inputs": [ @@ -521,6 +540,37 @@ "name": "UpdateMinMaxMintFee", "type": "event" }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint256", + "name": "oldMin", + "type": "uint256" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "newMin", + "type": "uint256" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "oldMax", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "newMax", + "type": "uint256" + } + ], + "name": "UpdateMinMaxMintRange", + "type": "event" + }, { "inputs": [], "name": "DOMAIN_SEPARATOR", @@ -930,6 +980,19 @@ "stateMutability": "view", "type": "function" }, + { + "inputs": [], + "name": "leverageExecutor", + "outputs": [ + { + "internalType": "contract ILeverageExecutor", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, { "inputs": [], "name": "liquidationBonusAmount", @@ -1008,6 +1071,19 @@ "stateMutability": "view", "type": "function" }, + { + "inputs": [], + "name": "maxMintFeeStart", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, { "inputs": [], "name": "minDebtRate", @@ -1047,6 +1123,19 @@ "stateMutability": "view", "type": "function" }, + { + "inputs": [], + "name": "minMintFeeStart", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, { "inputs": [ { @@ -1312,6 +1401,19 @@ "stateMutability": "view", "type": "function" }, + { + "inputs": [ + { + "internalType": "contract ILeverageExecutor", + "name": "_executor", + "type": "address" + } + ], + "name": "setLeverageExecutor", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, { "inputs": [ { @@ -1596,8 +1698,8 @@ "type": "function" } ], - "bytecode": "0x61014080604052346200018a5762000017816200018f565b600f81526001602082016e546170696f63612042696742616e6760881b8152602060405162000046816200018f565b8381520192603160f81b845251902091208160e052610100918183524660a0526040519160208301907f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f92838352604085015260608401524660808401523060a084015260a0835260c083019280841060018060401b03851117620001745760408490525190206080523060c052610120908152600580546001600160a01b0319163390811790915560007f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a362013880601b5562015f90601c55612710601d55612ee06020556103e8602d556127b29283620001ac843960805183612384015260a0518361244f015260c0518361234e015260e051836123d3015251826123f9015251816123b00152f35b634e487b7160e01b600052604160045260246000fd5b600080fd5b604081019081106001600160401b03821117620001745760405256fe608080604052600436101561001357600080fd5b60003560e01c908162a02a2014611ba95750806302ce728f14611992578063078dfbe71461188e578063095ea7b3146118685780630c4e84f01461174e57806318160ddd146117325780631c9e379b146116f85780631d4d3a5d146116cf5780631da8bf10146116135780631fb8f81a146115f557806323b872dd14611451578063331960ff1461143357806334d441d0146114155780633644e515146113fa57806337b6b7b9146113dc57806338d52e0f146113b35780633ba0b9a9146113955780633f741adb1461137157806340626d8b1461135357806344de240a14611335578063473e3ce71461131757806348e4163e146112dd5780634e71e0c81461122f578063529898f214611212578063542afda3146111f457806357935462146111d65780636b19ad16146111b85780636c3d8b8f1461118f57806370a0823114611155578063727785471461111f57806374645ff31461108c57806374c9e4811461106e5780637dc0d1d0146110455780637ecebe001461100b5780637fa0b84e14610fda5780638285ef4014610fa857806387b2793714610f6e5780638c5d0ed314610f505780638da5cb5b14610f27578063910dd7c814610d0e578063932bc4f814610c3057806399a9702814610c015780639e15e89f14610bc7578063a9059cbb14610ae0578063b0e21e8a14610ac2578063b27c0e7414610a91578063b7113f1914610a6e578063bb4cfe3b14610a50578063bde39c5d14610a32578063ce8849ed14610a09578063d3fb2a381461059d578063d505accf146103fb578063d8dfeb45146103d2578063dd62ed3e14610381578063de40657714610358578063e0996cb61461033a578063e30c397814610311578063ea64dd56146102f3578063eec0f42e146102d55763f791395d146102b257600080fd5b346102d05760003660031901126102d0576020602754604051908152f35b600080fd5b346102d05760003660031901126102d0576020600c54604051908152f35b346102d05760003660031901126102d0576020601f54604051908152f35b346102d05760003660031901126102d0576006546040516001600160a01b039091168152602090f35b346102d05760003660031901126102d0576020601d54604051908152f35b346102d05760003660031901126102d0576009546040516001600160a01b039091168152602090f35b346102d05760403660031901126102d05761039a611bf5565b6103a2611c0b565b9060018060a01b038091166000526002602052604060002091166000526020526020604060002054604051908152f35b346102d05760003660031901126102d057600b546040516001600160a01b039091168152602090f35b346102d05761040936611c30565b9183919395949542116105585760018060a01b03928388169485600052600460205260406000209283546000198114610542576104ec956104e4956001830190556040519060208201927f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e2668452600060408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e081526104a881611ce8565b5190206104b361234b565b9060405190602082019261190160f01b845260228301526042820152604281526104dc81611d04565b519020612612565b919091612513565b16036104fd576104fb926126e5565b005b60405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152606490fd5b634e487b7160e01b600052601160045260246000fd5b60405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b346102d0576101603660031901126102d0576001600160a01b03600435818116908190036102d0576024916001600160401b0383358181116102d057366023820112156102d05780600401359182116102d057368583830101116102d057604435938385168095036102d05761061884600554163314611d89565b806109ca575b508482610868575b50505081610827575b50506064358061080f575b50608435806107f7575b5060a435806107e0575b5060c435806107bc575b5060e43580610798575b506101043580610766575b5061012435806106f3575b5061014435908161068557005b601e5482106106945750601f55005b60849060326040519162461bcd60e51b8352602060048401528201527f4d61726b65743a206c69717569646174696f6e436f6c6c61746572616c697a616044820152711d1a5bdb94985d19481d1bdbc81cdb585b1b60721b6064820152fd5b610702620186a0821115611dd4565b601f54811161071457601e5581610678565b60405162461bcd60e51b8152602060048201526025818401527f4d61726b65743a20636f6c6c61746572616c697a6174696f6e5261746520746f6044820152646f2062696760d81b6064820152608490fd5b806016547fae6e0ab3b95f0a53ff9660a390ccedcbbf1f2355dce974a9841af106fddcfaba600080a36016558161066d565b6107a6620186a08210611dd4565b6107b3601b548211611dd4565b601c5581610662565b6107ca620186a08210611dd4565b6107d7601c548210611dd4565b601b5581610658565b6107ee620186a08210611dd4565b601d558161064e565b610806620186a0821115611dd4565b601a5581610644565b61081e620186a0821115611dd4565b6019558161063a565b816008549182167f5a62d22209e370e38eea92cfddcd228e656e6ec139243392a760a7769f5877fd600080a36001600160a01b03191617600855818061062f565b8291610875601054611cae565b601f8111610969575b50600090601f84116001146108e6576000936108d9575b5050508160011b916000199060031b1c1916176010555b7fa6f004921c944d4b8bf6e38462b00f36a58d62495d56b51f571ab78f732c9815600080a1838084610626565b0101359050848680610895565b60106000908152601f198516955060008051602061275d83398151915293509091889160205b87821061094a575050846001961061092e575b50505050811b016010556108ac565b60001960f88660031b161c19920101351690558580868161091f565b828501909301358555600194909401938992918201919081019061090c565b6010600052909250905060008051602061275d833981519152601f840160051c8101602085106109c3575b91849391601f8994920160051c01905b8181106109b1575061087e565b600081558594508893506001016109a4565b5080610994565b600f80546001600160a01b0319169190911790557f0b2d6eb667d0522c3eb86e4288afecae6c11591ffd1345d4d12407e0598bca9b600080a18561061e565b346102d05760003660031901126102d0576008546040516001600160a01b039091168152602090f35b346102d05760003660031901126102d0576020602854604051908152f35b346102d05760003660031901126102d0576020601e54604051908152f35b346102d05760003660031901126102d057602060ff602554166040519015158152f35b346102d05760003660031901126102d05760406024548151906001600160401b03908181168352831c166020820152f35b346102d05760003660031901126102d0576020601a54604051908152f35b346102d05760403660031901126102d057610af9611bf5565b602435908115801590610bb5575b610b3d575b6040519182526001600160a01b031690339060008051602061273d83398151915290602090a3602060405160018152f35b336000526001602052604060002054610b5883821015612475565b6001600160a01b038216908333839003610b75575b505050610b0c565b610b8991610b848415156124ba565b611e55565b3360005260016020526040600020556000526040600020610bab838254611e62565b9055828083610b6d565b50336001600160a01b03821614610b07565b346102d05760403660031901126102d0576060610bee610be5611bf5565b60243590611fa1565b9060405192835260208301526040820152f35b346102d05760403660031901126102d0576020610c28610c1f611bf5565b60243590612219565b604051908152f35b346102d05760003660031901126102d057604051600090602b54610c5381611cae565b808352600191808316908115610ce65750600114610c8c575b610c8883610c7c81870382611d1f565b60405191829182611d40565b0390f35b602b600090815260209450917f11c44e4875b74d31ff9fd779bf2566af7bd15b87fc985d01f5094b89e3669e4f5b828410610cd357505050810190910190610c7c81610c6c565b8054858501870152928501928101610cba565b610c889550610c7c93506020915091849260ff191682840152151560051b8201019350610c6c565b346102d05760403660031901126102d0576001600160401b036004358181116102d057366023820112156102d0578060040135918211610f115760405191610d60601f8201601f191660200184611d1f565b808352602083019136602483830101116102d057816000926024602093018537840101526024359161ffff831683036102d0576101009182828051810103126102d057610dac90612112565b610db8604083016124ff565b91610dc5606082016124ff565b9460808201519460a08301519260c08101519160ff831683036102d05760e082015191015191844211610558578515610eeb577f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e2665b6001600160a01b0388166000908152600460205260409020805490969060001981146105425761ffff6104e497610ea89960018401905560405194602086015216604084015260018060a01b038a16606084015260018060a01b038c1660808401528a60a084015260c083015260e082015260e08152610e9981611ce8565b602081519101206104b361234b565b6001600160a01b038381169116036104fd5715610ed5576104fb926001600160a01b0390811691166126e5565b6104fb926001600160a01b039081169116612697565b7f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d6610e1a565b634e487b7160e01b600052604160045260246000fd5b346102d05760003660031901126102d0576005546040516001600160a01b039091168152602090f35b346102d05760003660031901126102d0576020601b54604051908152f35b346102d05760203660031901126102d0576001600160a01b03610f8f611bf5565b1660005260236020526020604060002054604051908152f35b346102d05760003660031901126102d057601454604080516001600160801b038316815260809290921c602083015290f35b346102d05760403660031901126102d057611000610ff6611bf5565b6024359033612697565b602060405160018152f35b346102d05760203660031901126102d0576001600160a01b0361102c611bf5565b1660005260046020526020604060002054604051908152f35b346102d05760003660031901126102d057600f546040516001600160a01b039091168152602090f35b346102d05760003660031901126102d0576020602d54604051908152f35b346102d05760003660031901126102d0576040516000906010546110af81611cae565b808352600191808316908115610ce657506001146110d757610c8883610c7c81870382611d1f565b60106000908152602094509160008051602061275d8339815191525b82841061110c57505050810190910190610c7c81610c6c565b80548585018701529285019281016110f3565b346102d05760203660031901126102d05760043560098110156102d05760ff611149602092611c7f565b54166040519015158152f35b346102d05760203660031901126102d0576001600160a01b03611176611bf5565b1660005260016020526020604060002054604051908152f35b346102d05760003660031901126102d057600a546040516001600160a01b039091168152602090f35b346102d05760003660031901126102d0576020602654604051908152f35b346102d05760003660031901126102d0576020601c54604051908152f35b346102d05760003660031901126102d0576020602c54604051908152f35b346102d05760003660031901126102d05760208054604051908152f35b346102d05760003660031901126102d0576006546001600160a01b03908181163381900361129957806005549384167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a36001600160a01b03199283161760055516600655005b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b346102d05760203660031901126102d0576001600160a01b036112fe611bf5565b1660005260176020526020604060002054604051908152f35b346102d05760003660031901126102d0576020601554604051908152f35b346102d05760003660031901126102d0576020600e54604051908152f35b346102d05760003660031901126102d0576020601654604051908152f35b346102d05760603660031901126102d0576020610c28604435602435600435611e88565b346102d05760003660031901126102d0576020601154604051908152f35b346102d05760003660031901126102d057600d546040516001600160a01b039091168152602090f35b346102d05760003660031901126102d0576020601254604051908152f35b346102d05760003660031901126102d0576020610c2861234b565b346102d05760003660031901126102d0576020601954604051908152f35b346102d05760003660031901126102d0576020601354604051908152f35b346102d05760603660031901126102d05761146a611bf5565b611472611c0b565b60443590816114af575b6040519182526001600160a01b0390811692169060008051602061273d83398151915290602090a3602060405160018152f35b60018060a01b038084168060005260206001815284604060002054936114d782861015612475565b8516938484036114ec575b505050505061147c565b836000526002835260406000203360005283526040600020546000198103611560575b50849261153760008051602061273d833981519152979593600193610b8460209915156124ba565b92600052526040600020556000526040600020611555858254611e62565b9055918584816114e2565b909181106115b557602094926115378860008051602061273d83398151915298969461158e82600196611e55565b8660005260028552604060002033600052855260406000205593509395975050929461150f565b60405162461bcd60e51b815260048101849052601860248201527745524332303a20616c6c6f77616e636520746f6f206c6f7760401b6044820152606490fd5b346102d05760003660031901126102d0576020602954604051908152f35b346102d05761162136611c30565b9183919395949542116105585760018060a01b03928388169485600052600460205260406000209283546000198114610542576116c0956104e4956001830190556040519060208201927f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d68452600060408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e081526104a881611ce8565b16036104fd576104fb92612697565b346102d05760003660031901126102d057602a546040516001600160a01b039091168152602090f35b346102d05760203660031901126102d0576001600160a01b03611719611bf5565b1660005260186020526020604060002054604051908152f35b346102d05760003660031901126102d057602060405160008152f35b346102d05760403660031901126102d05760043560098110156102d057611773611c21565b6008549091906001600160a01b0316330361182c5760ff61179382611c7f565b541615159115159182146117f257808260ff6117b16117e094611c7f565b54161515827feeec81de25875ce1725479bb76f720a8defdb43dea041919ae37bb4aae9847c0600080a4611c7f565b9060ff80198354169116179055600080f35b60405162461bcd60e51b81526020600482015260126024820152714d61726b65743a2073616d6520737461746560701b6044820152606490fd5b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881d5b985d5d1a1bdc9a5e995960621b6044820152606490fd5b346102d05760403660031901126102d057611000611884611bf5565b60243590336126e5565b346102d05760603660031901126102d0576118a7611bf5565b6118af611c21565b6044359081151582036102d05760018060a01b039283916118d583600554163314611d89565b15611979571690811590811591611971575b501561193457806005549283167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a36001600160a01b031991821617600555600680549091169055005b60405162461bcd60e51b81526020600482015260156024820152744f776e61626c653a207a65726f206164647265737360581b6044820152606490fd5b9050836118e7565b9150501660018060a01b03196006541617600655600080f35b346102d05760003660031901126102d05760018060a01b03600f54166040519063d6d7d52560e01b82526020918260048201526000916010546119d481611cae565b908160248501526001908181169081600014611b835750600114611b43575b50509060409181600081809603925af18015611b3757600091600091611af8575b508115611a9b578015611a5f5760409281601155817f9f9192b5edb17356c524e08d9e025c8e2f6307e6ea52fb7968faa3081f51c3c8600080a25b4260135583519215158352820152f35b60405162461bcd60e51b81526004810184905260146024820152734d61726b65743a20696e76616c6964207261746560601b6044820152606490fd5b50611aab60135460125490611e62565b4211611abc57601154604092611a4f565b60405162461bcd60e51b815260048101839052601460248201527313585c9ad95d0e881c985d19481d1bdbc81bdb1960621b6044820152606490fd5b9150506040813d604011611b2f575b81611b1460409383611d1f565b810103126102d05781611b2682612112565b91015183611a14565b3d9150611b07565b6040513d6000823e3d90fd5b935060106000528460002093856000955b838710611b6e5750505050918101604401918060406119f3565b80548688016044015295019486908201611b54565b60ff191660448087019190915292151560051b85019092019450829150604090506119f3565b346102d05760403660031901126102d057602090611bc5611bf5565b611bcd611c0b565b9060018060a01b03809116600052600384526040600020911660005282526040600020548152f35b600435906001600160a01b03821682036102d057565b602435906001600160a01b03821682036102d057565b6024359081151582036102d057565b60e09060031901126102d0576001600160a01b039060043582811681036102d0579160243590811681036102d05790604435906064359060843560ff811681036102d0579060a4359060c43590565b6009811015611c98576000526007602052604060002090565b634e487b7160e01b600052602160045260246000fd5b90600182811c92168015611cde575b6020831014611cc857565b634e487b7160e01b600052602260045260246000fd5b91607f1691611cbd565b61010081019081106001600160401b03821117610f1157604052565b608081019081106001600160401b03821117610f1157604052565b90601f801991011681019081106001600160401b03821117610f1157604052565b6020808252825181830181905290939260005b828110611d7557505060409293506000838284010152601f8019910116010190565b818101860151848201604001528501611d53565b15611d9057565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b15611ddb57565b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881b9bdd081d985b1a59607a1b6044820152606490fd5b8181029291811591840414171561054257565b8115611e31570490565b634e487b7160e01b600052601260045260246000fd5b604d811161054257600a0a90565b9190820391821161054257565b9190820180921161054257565b8181039291600013801582851316918412161761054257565b601454919291611ed191611ec291611eb891611eae906001600160801b03831690611e14565b9060801c90611e27565b93601f5490611e14565b611ecb83611e47565b90611e27565b808310611f9957611ee5611f219184611e55565b91611f1c611f16611f0d601e54611f07611efe86611e47565b60205490611e62565b90611e14565b611ecb84611e47565b91611e47565b611e6f565b6509184e72a0009081810291818305149015171561054257670de0b6b3a764000091828102928184051490151715610542578015611e3157600160ff1b918083146000198314166105425705906000821215611f9257811461054257600003905b808211611f8d575090565b905090565b5090611f82565b505050600090565b9160018060a01b0380931691600093838552602060178152604091828720549081156121055783518481018181106001600160401b038211176120f1578552888152888480830193828552611ff789151561211f565b600954166064600c548c85526018845289852054928a51958694859363442c159960e01b85526004850152602484015260448301525afa9081156120e7578a916120b4575b506120a897989994926018949261208b6120768a61207161206861209497620186a06021540490611e14565b601e5490611e14565b611e27565b915191946001600160801b0392831690611e14565b91511690611e27565b8181106120ac57035b97835252205461216b565b9091565b50508261209d565b90508481813d83116120e0575b6120cb8183611d1f565b810103126120dc57516120a861203c565b8980fd5b503d6120c1565b86513d8c823e3d90fd5b634e487b7160e01b8a52604160045260248afd5b5086955085949350505050565b519081151582036102d057565b1561212657565b60405162461bcd60e51b815260206004820152601e60248201527f4d61726b65743a2065786368616e676552617465206e6f742076616c696400006044820152606490fd5b61217682151561211f565b602060018060a01b0360095416916064600c54604051948593849263442c159960e01b845260048401526024830152600060448301525afa908115611b37576000916121e3575b50906120716121cf9260215490611e14565b620186a06121df601e5483611e14565b0491565b906020823d8211612211575b816121fc60209383611d1f565b8101031261220e5750516120716121bd565b80fd5b3d91506121ef565b6001600160a01b0316600081815260186020526040812054909261223c9161216b565b91835260176020526040832054801561234557811561234557818110612345578281101561233b57601454612285918391610b8491611eae906001600160801b03831690611e14565b90620186a09283830292808404851490151715612327576122aa9291611ecb91611e55565b91601b5491601c54936122bd8585611e6f565b80820291848212600160ff1b82141661232757818305149015171561231357058184820194851291129080158216911516176122ff5750808212611f8d575090565b634e487b7160e01b81526011600452602490fd5b634e487b7160e01b83526011600452602483fd5b634e487b7160e01b85526011600452602485fd5b50505050601b5490565b50505090565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316148061244c575b156123a6577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f000000000000000000000000000000000000000000000000000000000000000082527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a0815260c081018181106001600160401b03821117610f115760405251902090565b507f0000000000000000000000000000000000000000000000000000000000000000461461237d565b1561247c57565b60405162461bcd60e51b815260206004820152601660248201527545524332303a2062616c616e636520746f6f206c6f7760501b6044820152606490fd5b156124c157565b60405162461bcd60e51b815260206004820152601660248201527545524332303a206e6f207a65726f206164647265737360501b6044820152606490fd5b51906001600160a01b03821682036102d057565b6005811015611c9857806125245750565b6001810361256c5760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b6044820152606490fd5b600281036125b95760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606490fd5b6003146125c257565b60405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608490fd5b9291906fa2a8918ca85bafe22016d0b997e4df60600160ff1b03831161268b5791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa1561267e5781516001600160a01b03811615612678579190565b50600190565b50604051903d90823e3d90fd5b50505050600090600390565b7fe50de2333c10a9502fcb1d8ae13a51bbf423153dfc63c2b8997665b32154afc360018060a01b038092169160009083825260036020526040822094169384825260205284604082205580a4565b909160207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259160018060a01b03809416938460005260028352604060002095169485600052825280604060002055604051908152a356feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae672a2646970667358221220a1f57aa74ba0e0d61c5f384052bbd0214403e2555455c840b50acfdc9c6ed70b64736f6c63430008120033", - "deployedBytecode": "0x608080604052600436101561001357600080fd5b60003560e01c908162a02a2014611ba95750806302ce728f14611992578063078dfbe71461188e578063095ea7b3146118685780630c4e84f01461174e57806318160ddd146117325780631c9e379b146116f85780631d4d3a5d146116cf5780631da8bf10146116135780631fb8f81a146115f557806323b872dd14611451578063331960ff1461143357806334d441d0146114155780633644e515146113fa57806337b6b7b9146113dc57806338d52e0f146113b35780633ba0b9a9146113955780633f741adb1461137157806340626d8b1461135357806344de240a14611335578063473e3ce71461131757806348e4163e146112dd5780634e71e0c81461122f578063529898f214611212578063542afda3146111f457806357935462146111d65780636b19ad16146111b85780636c3d8b8f1461118f57806370a0823114611155578063727785471461111f57806374645ff31461108c57806374c9e4811461106e5780637dc0d1d0146110455780637ecebe001461100b5780637fa0b84e14610fda5780638285ef4014610fa857806387b2793714610f6e5780638c5d0ed314610f505780638da5cb5b14610f27578063910dd7c814610d0e578063932bc4f814610c3057806399a9702814610c015780639e15e89f14610bc7578063a9059cbb14610ae0578063b0e21e8a14610ac2578063b27c0e7414610a91578063b7113f1914610a6e578063bb4cfe3b14610a50578063bde39c5d14610a32578063ce8849ed14610a09578063d3fb2a381461059d578063d505accf146103fb578063d8dfeb45146103d2578063dd62ed3e14610381578063de40657714610358578063e0996cb61461033a578063e30c397814610311578063ea64dd56146102f3578063eec0f42e146102d55763f791395d146102b257600080fd5b346102d05760003660031901126102d0576020602754604051908152f35b600080fd5b346102d05760003660031901126102d0576020600c54604051908152f35b346102d05760003660031901126102d0576020601f54604051908152f35b346102d05760003660031901126102d0576006546040516001600160a01b039091168152602090f35b346102d05760003660031901126102d0576020601d54604051908152f35b346102d05760003660031901126102d0576009546040516001600160a01b039091168152602090f35b346102d05760403660031901126102d05761039a611bf5565b6103a2611c0b565b9060018060a01b038091166000526002602052604060002091166000526020526020604060002054604051908152f35b346102d05760003660031901126102d057600b546040516001600160a01b039091168152602090f35b346102d05761040936611c30565b9183919395949542116105585760018060a01b03928388169485600052600460205260406000209283546000198114610542576104ec956104e4956001830190556040519060208201927f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e2668452600060408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e081526104a881611ce8565b5190206104b361234b565b9060405190602082019261190160f01b845260228301526042820152604281526104dc81611d04565b519020612612565b919091612513565b16036104fd576104fb926126e5565b005b60405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152606490fd5b634e487b7160e01b600052601160045260246000fd5b60405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b346102d0576101603660031901126102d0576001600160a01b03600435818116908190036102d0576024916001600160401b0383358181116102d057366023820112156102d05780600401359182116102d057368583830101116102d057604435938385168095036102d05761061884600554163314611d89565b806109ca575b508482610868575b50505081610827575b50506064358061080f575b50608435806107f7575b5060a435806107e0575b5060c435806107bc575b5060e43580610798575b506101043580610766575b5061012435806106f3575b5061014435908161068557005b601e5482106106945750601f55005b60849060326040519162461bcd60e51b8352602060048401528201527f4d61726b65743a206c69717569646174696f6e436f6c6c61746572616c697a616044820152711d1a5bdb94985d19481d1bdbc81cdb585b1b60721b6064820152fd5b610702620186a0821115611dd4565b601f54811161071457601e5581610678565b60405162461bcd60e51b8152602060048201526025818401527f4d61726b65743a20636f6c6c61746572616c697a6174696f6e5261746520746f6044820152646f2062696760d81b6064820152608490fd5b806016547fae6e0ab3b95f0a53ff9660a390ccedcbbf1f2355dce974a9841af106fddcfaba600080a36016558161066d565b6107a6620186a08210611dd4565b6107b3601b548211611dd4565b601c5581610662565b6107ca620186a08210611dd4565b6107d7601c548210611dd4565b601b5581610658565b6107ee620186a08210611dd4565b601d558161064e565b610806620186a0821115611dd4565b601a5581610644565b61081e620186a0821115611dd4565b6019558161063a565b816008549182167f5a62d22209e370e38eea92cfddcd228e656e6ec139243392a760a7769f5877fd600080a36001600160a01b03191617600855818061062f565b8291610875601054611cae565b601f8111610969575b50600090601f84116001146108e6576000936108d9575b5050508160011b916000199060031b1c1916176010555b7fa6f004921c944d4b8bf6e38462b00f36a58d62495d56b51f571ab78f732c9815600080a1838084610626565b0101359050848680610895565b60106000908152601f198516955060008051602061275d83398151915293509091889160205b87821061094a575050846001961061092e575b50505050811b016010556108ac565b60001960f88660031b161c19920101351690558580868161091f565b828501909301358555600194909401938992918201919081019061090c565b6010600052909250905060008051602061275d833981519152601f840160051c8101602085106109c3575b91849391601f8994920160051c01905b8181106109b1575061087e565b600081558594508893506001016109a4565b5080610994565b600f80546001600160a01b0319169190911790557f0b2d6eb667d0522c3eb86e4288afecae6c11591ffd1345d4d12407e0598bca9b600080a18561061e565b346102d05760003660031901126102d0576008546040516001600160a01b039091168152602090f35b346102d05760003660031901126102d0576020602854604051908152f35b346102d05760003660031901126102d0576020601e54604051908152f35b346102d05760003660031901126102d057602060ff602554166040519015158152f35b346102d05760003660031901126102d05760406024548151906001600160401b03908181168352831c166020820152f35b346102d05760003660031901126102d0576020601a54604051908152f35b346102d05760403660031901126102d057610af9611bf5565b602435908115801590610bb5575b610b3d575b6040519182526001600160a01b031690339060008051602061273d83398151915290602090a3602060405160018152f35b336000526001602052604060002054610b5883821015612475565b6001600160a01b038216908333839003610b75575b505050610b0c565b610b8991610b848415156124ba565b611e55565b3360005260016020526040600020556000526040600020610bab838254611e62565b9055828083610b6d565b50336001600160a01b03821614610b07565b346102d05760403660031901126102d0576060610bee610be5611bf5565b60243590611fa1565b9060405192835260208301526040820152f35b346102d05760403660031901126102d0576020610c28610c1f611bf5565b60243590612219565b604051908152f35b346102d05760003660031901126102d057604051600090602b54610c5381611cae565b808352600191808316908115610ce65750600114610c8c575b610c8883610c7c81870382611d1f565b60405191829182611d40565b0390f35b602b600090815260209450917f11c44e4875b74d31ff9fd779bf2566af7bd15b87fc985d01f5094b89e3669e4f5b828410610cd357505050810190910190610c7c81610c6c565b8054858501870152928501928101610cba565b610c889550610c7c93506020915091849260ff191682840152151560051b8201019350610c6c565b346102d05760403660031901126102d0576001600160401b036004358181116102d057366023820112156102d0578060040135918211610f115760405191610d60601f8201601f191660200184611d1f565b808352602083019136602483830101116102d057816000926024602093018537840101526024359161ffff831683036102d0576101009182828051810103126102d057610dac90612112565b610db8604083016124ff565b91610dc5606082016124ff565b9460808201519460a08301519260c08101519160ff831683036102d05760e082015191015191844211610558578515610eeb577f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e2665b6001600160a01b0388166000908152600460205260409020805490969060001981146105425761ffff6104e497610ea89960018401905560405194602086015216604084015260018060a01b038a16606084015260018060a01b038c1660808401528a60a084015260c083015260e082015260e08152610e9981611ce8565b602081519101206104b361234b565b6001600160a01b038381169116036104fd5715610ed5576104fb926001600160a01b0390811691166126e5565b6104fb926001600160a01b039081169116612697565b7f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d6610e1a565b634e487b7160e01b600052604160045260246000fd5b346102d05760003660031901126102d0576005546040516001600160a01b039091168152602090f35b346102d05760003660031901126102d0576020601b54604051908152f35b346102d05760203660031901126102d0576001600160a01b03610f8f611bf5565b1660005260236020526020604060002054604051908152f35b346102d05760003660031901126102d057601454604080516001600160801b038316815260809290921c602083015290f35b346102d05760403660031901126102d057611000610ff6611bf5565b6024359033612697565b602060405160018152f35b346102d05760203660031901126102d0576001600160a01b0361102c611bf5565b1660005260046020526020604060002054604051908152f35b346102d05760003660031901126102d057600f546040516001600160a01b039091168152602090f35b346102d05760003660031901126102d0576020602d54604051908152f35b346102d05760003660031901126102d0576040516000906010546110af81611cae565b808352600191808316908115610ce657506001146110d757610c8883610c7c81870382611d1f565b60106000908152602094509160008051602061275d8339815191525b82841061110c57505050810190910190610c7c81610c6c565b80548585018701529285019281016110f3565b346102d05760203660031901126102d05760043560098110156102d05760ff611149602092611c7f565b54166040519015158152f35b346102d05760203660031901126102d0576001600160a01b03611176611bf5565b1660005260016020526020604060002054604051908152f35b346102d05760003660031901126102d057600a546040516001600160a01b039091168152602090f35b346102d05760003660031901126102d0576020602654604051908152f35b346102d05760003660031901126102d0576020601c54604051908152f35b346102d05760003660031901126102d0576020602c54604051908152f35b346102d05760003660031901126102d05760208054604051908152f35b346102d05760003660031901126102d0576006546001600160a01b03908181163381900361129957806005549384167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a36001600160a01b03199283161760055516600655005b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b346102d05760203660031901126102d0576001600160a01b036112fe611bf5565b1660005260176020526020604060002054604051908152f35b346102d05760003660031901126102d0576020601554604051908152f35b346102d05760003660031901126102d0576020600e54604051908152f35b346102d05760003660031901126102d0576020601654604051908152f35b346102d05760603660031901126102d0576020610c28604435602435600435611e88565b346102d05760003660031901126102d0576020601154604051908152f35b346102d05760003660031901126102d057600d546040516001600160a01b039091168152602090f35b346102d05760003660031901126102d0576020601254604051908152f35b346102d05760003660031901126102d0576020610c2861234b565b346102d05760003660031901126102d0576020601954604051908152f35b346102d05760003660031901126102d0576020601354604051908152f35b346102d05760603660031901126102d05761146a611bf5565b611472611c0b565b60443590816114af575b6040519182526001600160a01b0390811692169060008051602061273d83398151915290602090a3602060405160018152f35b60018060a01b038084168060005260206001815284604060002054936114d782861015612475565b8516938484036114ec575b505050505061147c565b836000526002835260406000203360005283526040600020546000198103611560575b50849261153760008051602061273d833981519152979593600193610b8460209915156124ba565b92600052526040600020556000526040600020611555858254611e62565b9055918584816114e2565b909181106115b557602094926115378860008051602061273d83398151915298969461158e82600196611e55565b8660005260028552604060002033600052855260406000205593509395975050929461150f565b60405162461bcd60e51b815260048101849052601860248201527745524332303a20616c6c6f77616e636520746f6f206c6f7760401b6044820152606490fd5b346102d05760003660031901126102d0576020602954604051908152f35b346102d05761162136611c30565b9183919395949542116105585760018060a01b03928388169485600052600460205260406000209283546000198114610542576116c0956104e4956001830190556040519060208201927f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d68452600060408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e081526104a881611ce8565b16036104fd576104fb92612697565b346102d05760003660031901126102d057602a546040516001600160a01b039091168152602090f35b346102d05760203660031901126102d0576001600160a01b03611719611bf5565b1660005260186020526020604060002054604051908152f35b346102d05760003660031901126102d057602060405160008152f35b346102d05760403660031901126102d05760043560098110156102d057611773611c21565b6008549091906001600160a01b0316330361182c5760ff61179382611c7f565b541615159115159182146117f257808260ff6117b16117e094611c7f565b54161515827feeec81de25875ce1725479bb76f720a8defdb43dea041919ae37bb4aae9847c0600080a4611c7f565b9060ff80198354169116179055600080f35b60405162461bcd60e51b81526020600482015260126024820152714d61726b65743a2073616d6520737461746560701b6044820152606490fd5b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881d5b985d5d1a1bdc9a5e995960621b6044820152606490fd5b346102d05760403660031901126102d057611000611884611bf5565b60243590336126e5565b346102d05760603660031901126102d0576118a7611bf5565b6118af611c21565b6044359081151582036102d05760018060a01b039283916118d583600554163314611d89565b15611979571690811590811591611971575b501561193457806005549283167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a36001600160a01b031991821617600555600680549091169055005b60405162461bcd60e51b81526020600482015260156024820152744f776e61626c653a207a65726f206164647265737360581b6044820152606490fd5b9050836118e7565b9150501660018060a01b03196006541617600655600080f35b346102d05760003660031901126102d05760018060a01b03600f54166040519063d6d7d52560e01b82526020918260048201526000916010546119d481611cae565b908160248501526001908181169081600014611b835750600114611b43575b50509060409181600081809603925af18015611b3757600091600091611af8575b508115611a9b578015611a5f5760409281601155817f9f9192b5edb17356c524e08d9e025c8e2f6307e6ea52fb7968faa3081f51c3c8600080a25b4260135583519215158352820152f35b60405162461bcd60e51b81526004810184905260146024820152734d61726b65743a20696e76616c6964207261746560601b6044820152606490fd5b50611aab60135460125490611e62565b4211611abc57601154604092611a4f565b60405162461bcd60e51b815260048101839052601460248201527313585c9ad95d0e881c985d19481d1bdbc81bdb1960621b6044820152606490fd5b9150506040813d604011611b2f575b81611b1460409383611d1f565b810103126102d05781611b2682612112565b91015183611a14565b3d9150611b07565b6040513d6000823e3d90fd5b935060106000528460002093856000955b838710611b6e5750505050918101604401918060406119f3565b80548688016044015295019486908201611b54565b60ff191660448087019190915292151560051b85019092019450829150604090506119f3565b346102d05760403660031901126102d057602090611bc5611bf5565b611bcd611c0b565b9060018060a01b03809116600052600384526040600020911660005282526040600020548152f35b600435906001600160a01b03821682036102d057565b602435906001600160a01b03821682036102d057565b6024359081151582036102d057565b60e09060031901126102d0576001600160a01b039060043582811681036102d0579160243590811681036102d05790604435906064359060843560ff811681036102d0579060a4359060c43590565b6009811015611c98576000526007602052604060002090565b634e487b7160e01b600052602160045260246000fd5b90600182811c92168015611cde575b6020831014611cc857565b634e487b7160e01b600052602260045260246000fd5b91607f1691611cbd565b61010081019081106001600160401b03821117610f1157604052565b608081019081106001600160401b03821117610f1157604052565b90601f801991011681019081106001600160401b03821117610f1157604052565b6020808252825181830181905290939260005b828110611d7557505060409293506000838284010152601f8019910116010190565b818101860151848201604001528501611d53565b15611d9057565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b15611ddb57565b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881b9bdd081d985b1a59607a1b6044820152606490fd5b8181029291811591840414171561054257565b8115611e31570490565b634e487b7160e01b600052601260045260246000fd5b604d811161054257600a0a90565b9190820391821161054257565b9190820180921161054257565b8181039291600013801582851316918412161761054257565b601454919291611ed191611ec291611eb891611eae906001600160801b03831690611e14565b9060801c90611e27565b93601f5490611e14565b611ecb83611e47565b90611e27565b808310611f9957611ee5611f219184611e55565b91611f1c611f16611f0d601e54611f07611efe86611e47565b60205490611e62565b90611e14565b611ecb84611e47565b91611e47565b611e6f565b6509184e72a0009081810291818305149015171561054257670de0b6b3a764000091828102928184051490151715610542578015611e3157600160ff1b918083146000198314166105425705906000821215611f9257811461054257600003905b808211611f8d575090565b905090565b5090611f82565b505050600090565b9160018060a01b0380931691600093838552602060178152604091828720549081156121055783518481018181106001600160401b038211176120f1578552888152888480830193828552611ff789151561211f565b600954166064600c548c85526018845289852054928a51958694859363442c159960e01b85526004850152602484015260448301525afa9081156120e7578a916120b4575b506120a897989994926018949261208b6120768a61207161206861209497620186a06021540490611e14565b601e5490611e14565b611e27565b915191946001600160801b0392831690611e14565b91511690611e27565b8181106120ac57035b97835252205461216b565b9091565b50508261209d565b90508481813d83116120e0575b6120cb8183611d1f565b810103126120dc57516120a861203c565b8980fd5b503d6120c1565b86513d8c823e3d90fd5b634e487b7160e01b8a52604160045260248afd5b5086955085949350505050565b519081151582036102d057565b1561212657565b60405162461bcd60e51b815260206004820152601e60248201527f4d61726b65743a2065786368616e676552617465206e6f742076616c696400006044820152606490fd5b61217682151561211f565b602060018060a01b0360095416916064600c54604051948593849263442c159960e01b845260048401526024830152600060448301525afa908115611b37576000916121e3575b50906120716121cf9260215490611e14565b620186a06121df601e5483611e14565b0491565b906020823d8211612211575b816121fc60209383611d1f565b8101031261220e5750516120716121bd565b80fd5b3d91506121ef565b6001600160a01b0316600081815260186020526040812054909261223c9161216b565b91835260176020526040832054801561234557811561234557818110612345578281101561233b57601454612285918391610b8491611eae906001600160801b03831690611e14565b90620186a09283830292808404851490151715612327576122aa9291611ecb91611e55565b91601b5491601c54936122bd8585611e6f565b80820291848212600160ff1b82141661232757818305149015171561231357058184820194851291129080158216911516176122ff5750808212611f8d575090565b634e487b7160e01b81526011600452602490fd5b634e487b7160e01b83526011600452602483fd5b634e487b7160e01b85526011600452602485fd5b50505050601b5490565b50505090565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316148061244c575b156123a6577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f000000000000000000000000000000000000000000000000000000000000000082527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a0815260c081018181106001600160401b03821117610f115760405251902090565b507f0000000000000000000000000000000000000000000000000000000000000000461461237d565b1561247c57565b60405162461bcd60e51b815260206004820152601660248201527545524332303a2062616c616e636520746f6f206c6f7760501b6044820152606490fd5b156124c157565b60405162461bcd60e51b815260206004820152601660248201527545524332303a206e6f207a65726f206164647265737360501b6044820152606490fd5b51906001600160a01b03821682036102d057565b6005811015611c9857806125245750565b6001810361256c5760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b6044820152606490fd5b600281036125b95760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606490fd5b6003146125c257565b60405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608490fd5b9291906fa2a8918ca85bafe22016d0b997e4df60600160ff1b03831161268b5791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa1561267e5781516001600160a01b03811615612678579190565b50600190565b50604051903d90823e3d90fd5b50505050600090600390565b7fe50de2333c10a9502fcb1d8ae13a51bbf423153dfc63c2b8997665b32154afc360018060a01b038092169160009083825260036020526040822094169384825260205284604082205580a4565b909160207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259160018060a01b03809416938460005260028352604060002095169485600052825280604060002055604051908152a356feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae672a2646970667358221220a1f57aa74ba0e0d61c5f384052bbd0214403e2555455c840b50acfdc9c6ed70b64736f6c63430008120033", + "bytecode": "0x61014080604052346200018a5762000017816200018f565b600f81526001602082016e546170696f63612042696742616e6760881b8152602060405162000046816200018f565b8381520192603160f81b845251902091208160e052610100918183524660a0526040519160208301907f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f92838352604085015260608401524660808401523060a084015260a0835260c083019280841060018060401b03851117620001745760408490525190206080523060c052610120908152600580546001600160a01b0319163390811790915560007f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a362013880601b5562015f90601c55612710601d55612ee06020556103e8602e556128b59283620001ac843960805183612487015260a05183612552015260c05183612451015260e051836124d6015251826124fc015251816124b30152f35b634e487b7160e01b600052604160045260246000fd5b600080fd5b604081019081106001600160401b03821117620001745760405256fe608080604052600436101561001357600080fd5b60003560e01c908162a02a2014611cac5750806302ce728f14611a95578063078dfbe714611991578063095ea7b31461196b5780630c4e84f0146118515780630f8b29ea1461183357806318160ddd146118175780631c9e379b146117dd5780631d4d3a5d146117b45780631da8bf10146116f85780631fb8f81a146116da57806323b872dd14611536578063331960ff1461151857806334d441d0146114fa5780633644e515146114df57806337b6b7b9146114c157806338d52e0f146114985780633ba0b9a91461147a5780633f741adb1461145657806340626d8b1461143857806344de240a1461141a578063473e3ce7146113fc57806348e4163e146113c25780634e71e0c814611314578063529898f2146112f7578063542afda3146112d957806357935462146112bb5780636b19ad161461129d5780636c3d8b8f1461127457806370a082311461123a578063727785471461120457806374645ff31461117157806374c9e48114611153578063790c8467146111355780637dc0d1d01461110c5780637ecebe00146110d25780637fa0b84e146110a15780638285ef401461106f57806387b27937146110355780638c5d0ed3146110175780638da5cb5b14610fee578063910dd7c814610dd5578063932bc4f814610cf757806399a9702814610cc85780639e15e89f14610c8e578063a9059cbb14610ba7578063b0e21e8a14610b89578063b27c0e7414610b58578063b7113f1914610b35578063bb4cfe3b14610b17578063bde39c5d14610af9578063ce8849ed14610ad0578063d3fb2a3814610664578063d505accf146104c2578063d8dfeb4514610499578063da863f0e14610470578063dd62ed3e1461041f578063de406577146103f6578063e0996cb6146103d8578063e30c3978146103af578063ea64dd5614610391578063eec0f42e14610373578063ef2b234a146103015763f791395d146102de57600080fd5b346102fc5760003660031901126102fc576020602854604051908152f35b600080fd5b346102fc5760203660031901126102fc576004356001600160a01b03818116918290036102fc5761033781600554163314611e8c565b816021549182167ffb4fd7114609dd603b57adbc2082205bfbbcabf9265c4b437b472f5c592b8cd7600080a36001600160a01b03191617602155005b346102fc5760003660031901126102fc576020600c54604051908152f35b346102fc5760003660031901126102fc576020601f54604051908152f35b346102fc5760003660031901126102fc576006546040516001600160a01b039091168152602090f35b346102fc5760003660031901126102fc576020601d54604051908152f35b346102fc5760003660031901126102fc576009546040516001600160a01b039091168152602090f35b346102fc5760403660031901126102fc57610438611cf8565b610440611d0e565b9060018060a01b038091166000526002602052604060002091166000526020526020604060002054604051908152f35b346102fc5760003660031901126102fc576021546040516001600160a01b039091168152602090f35b346102fc5760003660031901126102fc57600b546040516001600160a01b039091168152602090f35b346102fc576104d036611d33565b91839193959495421161061f5760018060a01b03928388169485600052600460205260406000209283546000198114610609576105b3956105ab956001830190556040519060208201927f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e2668452600060408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e0815261056f81611deb565b51902061057a61244e565b9060405190602082019261190160f01b845260228301526042820152604281526105a381611e07565b519020612715565b919091612616565b16036105c4576105c2926127e8565b005b60405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152606490fd5b634e487b7160e01b600052601160045260246000fd5b60405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b346102fc576101603660031901126102fc576001600160a01b03600435818116908190036102fc576024916001600160401b0383358181116102fc57366023820112156102fc5780600401359182116102fc57368583830101116102fc57604435938385168095036102fc576106df84600554163314611e8c565b80610a91575b50848261092f575b505050816108ee575b5050606435806108d6575b50608435806108be575b5060a435806108a7575b5060c43580610883575b5060e4358061085f575b50610104358061082d575b5061012435806107ba575b5061014435908161074c57005b601e54821061075b5750601f55005b60849060326040519162461bcd60e51b8352602060048401528201527f4d61726b65743a206c69717569646174696f6e436f6c6c61746572616c697a616044820152711d1a5bdb94985d19481d1bdbc81cdb585b1b60721b6064820152fd5b6107c9620186a0821115611ed7565b601f5481116107db57601e558161073f565b60405162461bcd60e51b8152602060048201526025818401527f4d61726b65743a20636f6c6c61746572616c697a6174696f6e5261746520746f6044820152646f2062696760d81b6064820152608490fd5b806016547fae6e0ab3b95f0a53ff9660a390ccedcbbf1f2355dce974a9841af106fddcfaba600080a360165581610734565b61086d620186a08210611ed7565b61087a601b548211611ed7565b601c5581610729565b610891620186a08210611ed7565b61089e601c548210611ed7565b601b558161071f565b6108b5620186a08210611ed7565b601d5581610715565b6108cd620186a0821115611ed7565b601a558161070b565b6108e5620186a0821115611ed7565b60195581610701565b816008549182167f5a62d22209e370e38eea92cfddcd228e656e6ec139243392a760a7769f5877fd600080a36001600160a01b0319161760085581806106f6565b829161093c601054611db1565b601f8111610a30575b50600090601f84116001146109ad576000936109a0575b5050508160011b916000199060031b1c1916176010555b7fa6f004921c944d4b8bf6e38462b00f36a58d62495d56b51f571ab78f732c9815600080a18380846106ed565b010135905084868061095c565b60106000908152601f198516955060008051602061286083398151915293509091889160205b878210610a1157505084600196106109f5575b50505050811b01601055610973565b60001960f88660031b161c1992010135169055858086816109e6565b82850190930135855560019490940193899291820191908101906109d3565b60106000529092509050600080516020612860833981519152601f840160051c810160208510610a8a575b91849391601f8994920160051c01905b818110610a785750610945565b60008155859450889350600101610a6b565b5080610a5b565b600f80546001600160a01b0319169190911790557f0b2d6eb667d0522c3eb86e4288afecae6c11591ffd1345d4d12407e0598bca9b600080a1856106e5565b346102fc5760003660031901126102fc576008546040516001600160a01b039091168152602090f35b346102fc5760003660031901126102fc576020602954604051908152f35b346102fc5760003660031901126102fc576020601e54604051908152f35b346102fc5760003660031901126102fc57602060ff602654166040519015158152f35b346102fc5760003660031901126102fc5760406025548151906001600160401b03908181168352831c166020820152f35b346102fc5760003660031901126102fc576020601a54604051908152f35b346102fc5760403660031901126102fc57610bc0611cf8565b602435908115801590610c7c575b610c04575b6040519182526001600160a01b031690339060008051602061284083398151915290602090a3602060405160018152f35b336000526001602052604060002054610c1f83821015612578565b6001600160a01b038216908333839003610c3c575b505050610bd3565b610c5091610c4b8415156125bd565b611f58565b3360005260016020526040600020556000526040600020610c72838254611f65565b9055828083610c34565b50336001600160a01b03821614610bce565b346102fc5760403660031901126102fc576060610cb5610cac611cf8565b602435906120a4565b9060405192835260208301526040820152f35b346102fc5760403660031901126102fc576020610cef610ce6611cf8565b6024359061231c565b604051908152f35b346102fc5760003660031901126102fc57604051600090602c54610d1a81611db1565b808352600191808316908115610dad5750600114610d53575b610d4f83610d4381870382611e22565b60405191829182611e43565b0390f35b602c600090815260209450917f7416c943b4a09859521022fd2e90eac0dd9026dad28fa317782a135f28a860915b828410610d9a57505050810190910190610d4381610d33565b8054858501870152928501928101610d81565b610d4f9550610d4393506020915091849260ff191682840152151560051b8201019350610d33565b346102fc5760403660031901126102fc576001600160401b036004358181116102fc57366023820112156102fc578060040135918211610fd85760405191610e27601f8201601f191660200184611e22565b808352602083019136602483830101116102fc57816000926024602093018537840101526024359161ffff831683036102fc576101009182828051810103126102fc57610e7390612215565b610e7f60408301612602565b91610e8c60608201612602565b9460808201519460a08301519260c08101519160ff831683036102fc5760e08201519101519184421161061f578515610fb2577f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e2665b6001600160a01b0388166000908152600460205260409020805490969060001981146106095761ffff6105ab97610f6f9960018401905560405194602086015216604084015260018060a01b038a16606084015260018060a01b038c1660808401528a60a084015260c083015260e082015260e08152610f6081611deb565b6020815191012061057a61244e565b6001600160a01b038381169116036105c45715610f9c576105c2926001600160a01b0390811691166127e8565b6105c2926001600160a01b03908116911661279a565b7f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d6610ee1565b634e487b7160e01b600052604160045260246000fd5b346102fc5760003660031901126102fc576005546040516001600160a01b039091168152602090f35b346102fc5760003660031901126102fc576020601b54604051908152f35b346102fc5760203660031901126102fc576001600160a01b03611056611cf8565b1660005260246020526020604060002054604051908152f35b346102fc5760003660031901126102fc57601454604080516001600160801b038316815260809290921c602083015290f35b346102fc5760403660031901126102fc576110c76110bd611cf8565b602435903361279a565b602060405160018152f35b346102fc5760203660031901126102fc576001600160a01b036110f3611cf8565b1660005260046020526020604060002054604051908152f35b346102fc5760003660031901126102fc57600f546040516001600160a01b039091168152602090f35b346102fc5760003660031901126102fc576020603054604051908152f35b346102fc5760003660031901126102fc576020602e54604051908152f35b346102fc5760003660031901126102fc5760405160009060105461119481611db1565b808352600191808316908115610dad57506001146111bc57610d4f83610d4381870382611e22565b6010600090815260209450916000805160206128608339815191525b8284106111f157505050810190910190610d4381610d33565b80548585018701529285019281016111d8565b346102fc5760203660031901126102fc5760043560098110156102fc5760ff61122e602092611d82565b54166040519015158152f35b346102fc5760203660031901126102fc576001600160a01b0361125b611cf8565b1660005260016020526020604060002054604051908152f35b346102fc5760003660031901126102fc57600a546040516001600160a01b039091168152602090f35b346102fc5760003660031901126102fc576020602754604051908152f35b346102fc5760003660031901126102fc576020601c54604051908152f35b346102fc5760003660031901126102fc576020602d54604051908152f35b346102fc5760003660031901126102fc5760208054604051908152f35b346102fc5760003660031901126102fc576006546001600160a01b03908181163381900361137e57806005549384167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a36001600160a01b03199283161760055516600655005b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b346102fc5760203660031901126102fc576001600160a01b036113e3611cf8565b1660005260176020526020604060002054604051908152f35b346102fc5760003660031901126102fc576020601554604051908152f35b346102fc5760003660031901126102fc576020600e54604051908152f35b346102fc5760003660031901126102fc576020601654604051908152f35b346102fc5760603660031901126102fc576020610cef604435602435600435611f8b565b346102fc5760003660031901126102fc576020601154604051908152f35b346102fc5760003660031901126102fc57600d546040516001600160a01b039091168152602090f35b346102fc5760003660031901126102fc576020601254604051908152f35b346102fc5760003660031901126102fc576020610cef61244e565b346102fc5760003660031901126102fc576020601954604051908152f35b346102fc5760003660031901126102fc576020601354604051908152f35b346102fc5760603660031901126102fc5761154f611cf8565b611557611d0e565b6044359081611594575b6040519182526001600160a01b0390811692169060008051602061284083398151915290602090a3602060405160018152f35b60018060a01b038084168060005260206001815284604060002054936115bc82861015612578565b8516938484036115d1575b5050505050611561565b836000526002835260406000203360005283526040600020546000198103611645575b50849261161c600080516020612840833981519152979593600193610c4b60209915156125bd565b9260005252604060002055600052604060002061163a858254611f65565b9055918584816115c7565b9091811061169a576020949261161c8860008051602061284083398151915298969461167382600196611f58565b866000526002855260406000203360005285526040600020559350939597505092946115f4565b60405162461bcd60e51b815260048101849052601860248201527745524332303a20616c6c6f77616e636520746f6f206c6f7760401b6044820152606490fd5b346102fc5760003660031901126102fc576020602a54604051908152f35b346102fc5761170636611d33565b91839193959495421161061f5760018060a01b03928388169485600052600460205260406000209283546000198114610609576117a5956105ab956001830190556040519060208201927f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d68452600060408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e0815261056f81611deb565b16036105c4576105c29261279a565b346102fc5760003660031901126102fc57602b546040516001600160a01b039091168152602090f35b346102fc5760203660031901126102fc576001600160a01b036117fe611cf8565b1660005260186020526020604060002054604051908152f35b346102fc5760003660031901126102fc57602060405160008152f35b346102fc5760003660031901126102fc576020602f54604051908152f35b346102fc5760403660031901126102fc5760043560098110156102fc57611876611d24565b6008549091906001600160a01b0316330361192f5760ff61189682611d82565b541615159115159182146118f557808260ff6118b46118e394611d82565b54161515827feeec81de25875ce1725479bb76f720a8defdb43dea041919ae37bb4aae9847c0600080a4611d82565b9060ff80198354169116179055600080f35b60405162461bcd60e51b81526020600482015260126024820152714d61726b65743a2073616d6520737461746560701b6044820152606490fd5b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881d5b985d5d1a1bdc9a5e995960621b6044820152606490fd5b346102fc5760403660031901126102fc576110c7611987611cf8565b60243590336127e8565b346102fc5760603660031901126102fc576119aa611cf8565b6119b2611d24565b6044359081151582036102fc5760018060a01b039283916119d883600554163314611e8c565b15611a7c571690811590811591611a74575b5015611a3757806005549283167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a36001600160a01b031991821617600555600680549091169055005b60405162461bcd60e51b81526020600482015260156024820152744f776e61626c653a207a65726f206164647265737360581b6044820152606490fd5b9050836119ea565b9150501660018060a01b03196006541617600655600080f35b346102fc5760003660031901126102fc5760018060a01b03600f54166040519063d6d7d52560e01b8252602091826004820152600091601054611ad781611db1565b908160248501526001908181169081600014611c865750600114611c46575b50509060409181600081809603925af18015611c3a57600091600091611bfb575b508115611b9e578015611b625760409281601155817f9f9192b5edb17356c524e08d9e025c8e2f6307e6ea52fb7968faa3081f51c3c8600080a25b4260135583519215158352820152f35b60405162461bcd60e51b81526004810184905260146024820152734d61726b65743a20696e76616c6964207261746560601b6044820152606490fd5b50611bae60135460125490611f65565b4211611bbf57601154604092611b52565b60405162461bcd60e51b815260048101839052601460248201527313585c9ad95d0e881c985d19481d1bdbc81bdb1960621b6044820152606490fd5b9150506040813d604011611c32575b81611c1760409383611e22565b810103126102fc5781611c2982612215565b91015183611b17565b3d9150611c0a565b6040513d6000823e3d90fd5b935060106000528460002093856000955b838710611c71575050505091810160440191806040611af6565b80548688016044015295019486908201611c57565b60ff191660448087019190915292151560051b8501909201945082915060409050611af6565b346102fc5760403660031901126102fc57602090611cc8611cf8565b611cd0611d0e565b9060018060a01b03809116600052600384526040600020911660005282526040600020548152f35b600435906001600160a01b03821682036102fc57565b602435906001600160a01b03821682036102fc57565b6024359081151582036102fc57565b60e09060031901126102fc576001600160a01b039060043582811681036102fc579160243590811681036102fc5790604435906064359060843560ff811681036102fc579060a4359060c43590565b6009811015611d9b576000526007602052604060002090565b634e487b7160e01b600052602160045260246000fd5b90600182811c92168015611de1575b6020831014611dcb57565b634e487b7160e01b600052602260045260246000fd5b91607f1691611dc0565b61010081019081106001600160401b03821117610fd857604052565b608081019081106001600160401b03821117610fd857604052565b90601f801991011681019081106001600160401b03821117610fd857604052565b6020808252825181830181905290939260005b828110611e7857505060409293506000838284010152601f8019910116010190565b818101860151848201604001528501611e56565b15611e9357565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b15611ede57565b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881b9bdd081d985b1a59607a1b6044820152606490fd5b8181029291811591840414171561060957565b8115611f34570490565b634e487b7160e01b600052601260045260246000fd5b604d811161060957600a0a90565b9190820391821161060957565b9190820180921161060957565b8181039291600013801582851316918412161761060957565b601454919291611fd491611fc591611fbb91611fb1906001600160801b03831690611f17565b9060801c90611f2a565b93601f5490611f17565b611fce83611f4a565b90611f2a565b80831061209c57611fe86120249184611f58565b9161201f612019612010601e5461200a61200186611f4a565b60205490611f65565b90611f17565b611fce84611f4a565b91611f4a565b611f72565b6509184e72a0009081810291818305149015171561060957670de0b6b3a764000091828102928184051490151715610609578015611f3457600160ff1b91808314600019831416610609570590600082121561209557811461060957600003905b808211612090575090565b905090565b5090612085565b505050600090565b9160018060a01b0380931691600093838552602060178152604091828720549081156122085783518481018181106001600160401b038211176121f45785528881528884808301938285526120fa891515612222565b600954166064600c548c85526018845289852054928a51958694859363442c159960e01b85526004850152602484015260448301525afa9081156121ea578a916121b7575b506121ab97989994926018949261218e6121798a61217461216b61219797620186a06022540490611f17565b601e5490611f17565b611f2a565b915191946001600160801b0392831690611f17565b91511690611f2a565b8181106121af57035b97835252205461226e565b9091565b5050826121a0565b90508481813d83116121e3575b6121ce8183611e22565b810103126121df57516121ab61213f565b8980fd5b503d6121c4565b86513d8c823e3d90fd5b634e487b7160e01b8a52604160045260248afd5b5086955085949350505050565b519081151582036102fc57565b1561222957565b60405162461bcd60e51b815260206004820152601e60248201527f4d61726b65743a2065786368616e676552617465206e6f742076616c696400006044820152606490fd5b612279821515612222565b602060018060a01b0360095416916064600c54604051948593849263442c159960e01b845260048401526024830152600060448301525afa908115611c3a576000916122e6575b50906121746122d29260225490611f17565b620186a06122e2601e5483611f17565b0491565b906020823d8211612314575b816122ff60209383611e22565b810103126123115750516121746122c0565b80fd5b3d91506122f2565b6001600160a01b0316600081815260186020526040812054909261233f9161226e565b91835260176020526040832054801561244857811561244857818110612448578281101561243e57601454612388918391610c4b91611fb1906001600160801b03831690611f17565b90620186a0928383029280840485149015171561242a576123ad9291611fce91611f58565b91601b5491601c54936123c08585611f72565b80820291848212600160ff1b82141661242a57818305149015171561241657058184820194851291129080158216911516176124025750808212612090575090565b634e487b7160e01b81526011600452602490fd5b634e487b7160e01b83526011600452602483fd5b634e487b7160e01b85526011600452602485fd5b50505050601b5490565b50505090565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316148061254f575b156124a9577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f000000000000000000000000000000000000000000000000000000000000000082527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a0815260c081018181106001600160401b03821117610fd85760405251902090565b507f00000000000000000000000000000000000000000000000000000000000000004614612480565b1561257f57565b60405162461bcd60e51b815260206004820152601660248201527545524332303a2062616c616e636520746f6f206c6f7760501b6044820152606490fd5b156125c457565b60405162461bcd60e51b815260206004820152601660248201527545524332303a206e6f207a65726f206164647265737360501b6044820152606490fd5b51906001600160a01b03821682036102fc57565b6005811015611d9b57806126275750565b6001810361266f5760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b6044820152606490fd5b600281036126bc5760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606490fd5b6003146126c557565b60405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608490fd5b9291906fa2a8918ca85bafe22016d0b997e4df60600160ff1b03831161278e5791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa156127815781516001600160a01b0381161561277b579190565b50600190565b50604051903d90823e3d90fd5b50505050600090600390565b7fe50de2333c10a9502fcb1d8ae13a51bbf423153dfc63c2b8997665b32154afc360018060a01b038092169160009083825260036020526040822094169384825260205284604082205580a4565b909160207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259160018060a01b03809416938460005260028352604060002095169485600052825280604060002055604051908152a356feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae672a2646970667358221220175361522ccf85d353159ae4a6ad7644d6e7f5abbe3cc2d23707a8dc0fc4a8bd64736f6c63430008120033", + "deployedBytecode": "0x608080604052600436101561001357600080fd5b60003560e01c908162a02a2014611cac5750806302ce728f14611a95578063078dfbe714611991578063095ea7b31461196b5780630c4e84f0146118515780630f8b29ea1461183357806318160ddd146118175780631c9e379b146117dd5780631d4d3a5d146117b45780631da8bf10146116f85780631fb8f81a146116da57806323b872dd14611536578063331960ff1461151857806334d441d0146114fa5780633644e515146114df57806337b6b7b9146114c157806338d52e0f146114985780633ba0b9a91461147a5780633f741adb1461145657806340626d8b1461143857806344de240a1461141a578063473e3ce7146113fc57806348e4163e146113c25780634e71e0c814611314578063529898f2146112f7578063542afda3146112d957806357935462146112bb5780636b19ad161461129d5780636c3d8b8f1461127457806370a082311461123a578063727785471461120457806374645ff31461117157806374c9e48114611153578063790c8467146111355780637dc0d1d01461110c5780637ecebe00146110d25780637fa0b84e146110a15780638285ef401461106f57806387b27937146110355780638c5d0ed3146110175780638da5cb5b14610fee578063910dd7c814610dd5578063932bc4f814610cf757806399a9702814610cc85780639e15e89f14610c8e578063a9059cbb14610ba7578063b0e21e8a14610b89578063b27c0e7414610b58578063b7113f1914610b35578063bb4cfe3b14610b17578063bde39c5d14610af9578063ce8849ed14610ad0578063d3fb2a3814610664578063d505accf146104c2578063d8dfeb4514610499578063da863f0e14610470578063dd62ed3e1461041f578063de406577146103f6578063e0996cb6146103d8578063e30c3978146103af578063ea64dd5614610391578063eec0f42e14610373578063ef2b234a146103015763f791395d146102de57600080fd5b346102fc5760003660031901126102fc576020602854604051908152f35b600080fd5b346102fc5760203660031901126102fc576004356001600160a01b03818116918290036102fc5761033781600554163314611e8c565b816021549182167ffb4fd7114609dd603b57adbc2082205bfbbcabf9265c4b437b472f5c592b8cd7600080a36001600160a01b03191617602155005b346102fc5760003660031901126102fc576020600c54604051908152f35b346102fc5760003660031901126102fc576020601f54604051908152f35b346102fc5760003660031901126102fc576006546040516001600160a01b039091168152602090f35b346102fc5760003660031901126102fc576020601d54604051908152f35b346102fc5760003660031901126102fc576009546040516001600160a01b039091168152602090f35b346102fc5760403660031901126102fc57610438611cf8565b610440611d0e565b9060018060a01b038091166000526002602052604060002091166000526020526020604060002054604051908152f35b346102fc5760003660031901126102fc576021546040516001600160a01b039091168152602090f35b346102fc5760003660031901126102fc57600b546040516001600160a01b039091168152602090f35b346102fc576104d036611d33565b91839193959495421161061f5760018060a01b03928388169485600052600460205260406000209283546000198114610609576105b3956105ab956001830190556040519060208201927f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e2668452600060408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e0815261056f81611deb565b51902061057a61244e565b9060405190602082019261190160f01b845260228301526042820152604281526105a381611e07565b519020612715565b919091612616565b16036105c4576105c2926127e8565b005b60405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152606490fd5b634e487b7160e01b600052601160045260246000fd5b60405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b346102fc576101603660031901126102fc576001600160a01b03600435818116908190036102fc576024916001600160401b0383358181116102fc57366023820112156102fc5780600401359182116102fc57368583830101116102fc57604435938385168095036102fc576106df84600554163314611e8c565b80610a91575b50848261092f575b505050816108ee575b5050606435806108d6575b50608435806108be575b5060a435806108a7575b5060c43580610883575b5060e4358061085f575b50610104358061082d575b5061012435806107ba575b5061014435908161074c57005b601e54821061075b5750601f55005b60849060326040519162461bcd60e51b8352602060048401528201527f4d61726b65743a206c69717569646174696f6e436f6c6c61746572616c697a616044820152711d1a5bdb94985d19481d1bdbc81cdb585b1b60721b6064820152fd5b6107c9620186a0821115611ed7565b601f5481116107db57601e558161073f565b60405162461bcd60e51b8152602060048201526025818401527f4d61726b65743a20636f6c6c61746572616c697a6174696f6e5261746520746f6044820152646f2062696760d81b6064820152608490fd5b806016547fae6e0ab3b95f0a53ff9660a390ccedcbbf1f2355dce974a9841af106fddcfaba600080a360165581610734565b61086d620186a08210611ed7565b61087a601b548211611ed7565b601c5581610729565b610891620186a08210611ed7565b61089e601c548210611ed7565b601b558161071f565b6108b5620186a08210611ed7565b601d5581610715565b6108cd620186a0821115611ed7565b601a558161070b565b6108e5620186a0821115611ed7565b60195581610701565b816008549182167f5a62d22209e370e38eea92cfddcd228e656e6ec139243392a760a7769f5877fd600080a36001600160a01b0319161760085581806106f6565b829161093c601054611db1565b601f8111610a30575b50600090601f84116001146109ad576000936109a0575b5050508160011b916000199060031b1c1916176010555b7fa6f004921c944d4b8bf6e38462b00f36a58d62495d56b51f571ab78f732c9815600080a18380846106ed565b010135905084868061095c565b60106000908152601f198516955060008051602061286083398151915293509091889160205b878210610a1157505084600196106109f5575b50505050811b01601055610973565b60001960f88660031b161c1992010135169055858086816109e6565b82850190930135855560019490940193899291820191908101906109d3565b60106000529092509050600080516020612860833981519152601f840160051c810160208510610a8a575b91849391601f8994920160051c01905b818110610a785750610945565b60008155859450889350600101610a6b565b5080610a5b565b600f80546001600160a01b0319169190911790557f0b2d6eb667d0522c3eb86e4288afecae6c11591ffd1345d4d12407e0598bca9b600080a1856106e5565b346102fc5760003660031901126102fc576008546040516001600160a01b039091168152602090f35b346102fc5760003660031901126102fc576020602954604051908152f35b346102fc5760003660031901126102fc576020601e54604051908152f35b346102fc5760003660031901126102fc57602060ff602654166040519015158152f35b346102fc5760003660031901126102fc5760406025548151906001600160401b03908181168352831c166020820152f35b346102fc5760003660031901126102fc576020601a54604051908152f35b346102fc5760403660031901126102fc57610bc0611cf8565b602435908115801590610c7c575b610c04575b6040519182526001600160a01b031690339060008051602061284083398151915290602090a3602060405160018152f35b336000526001602052604060002054610c1f83821015612578565b6001600160a01b038216908333839003610c3c575b505050610bd3565b610c5091610c4b8415156125bd565b611f58565b3360005260016020526040600020556000526040600020610c72838254611f65565b9055828083610c34565b50336001600160a01b03821614610bce565b346102fc5760403660031901126102fc576060610cb5610cac611cf8565b602435906120a4565b9060405192835260208301526040820152f35b346102fc5760403660031901126102fc576020610cef610ce6611cf8565b6024359061231c565b604051908152f35b346102fc5760003660031901126102fc57604051600090602c54610d1a81611db1565b808352600191808316908115610dad5750600114610d53575b610d4f83610d4381870382611e22565b60405191829182611e43565b0390f35b602c600090815260209450917f7416c943b4a09859521022fd2e90eac0dd9026dad28fa317782a135f28a860915b828410610d9a57505050810190910190610d4381610d33565b8054858501870152928501928101610d81565b610d4f9550610d4393506020915091849260ff191682840152151560051b8201019350610d33565b346102fc5760403660031901126102fc576001600160401b036004358181116102fc57366023820112156102fc578060040135918211610fd85760405191610e27601f8201601f191660200184611e22565b808352602083019136602483830101116102fc57816000926024602093018537840101526024359161ffff831683036102fc576101009182828051810103126102fc57610e7390612215565b610e7f60408301612602565b91610e8c60608201612602565b9460808201519460a08301519260c08101519160ff831683036102fc5760e08201519101519184421161061f578515610fb2577f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e2665b6001600160a01b0388166000908152600460205260409020805490969060001981146106095761ffff6105ab97610f6f9960018401905560405194602086015216604084015260018060a01b038a16606084015260018060a01b038c1660808401528a60a084015260c083015260e082015260e08152610f6081611deb565b6020815191012061057a61244e565b6001600160a01b038381169116036105c45715610f9c576105c2926001600160a01b0390811691166127e8565b6105c2926001600160a01b03908116911661279a565b7f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d6610ee1565b634e487b7160e01b600052604160045260246000fd5b346102fc5760003660031901126102fc576005546040516001600160a01b039091168152602090f35b346102fc5760003660031901126102fc576020601b54604051908152f35b346102fc5760203660031901126102fc576001600160a01b03611056611cf8565b1660005260246020526020604060002054604051908152f35b346102fc5760003660031901126102fc57601454604080516001600160801b038316815260809290921c602083015290f35b346102fc5760403660031901126102fc576110c76110bd611cf8565b602435903361279a565b602060405160018152f35b346102fc5760203660031901126102fc576001600160a01b036110f3611cf8565b1660005260046020526020604060002054604051908152f35b346102fc5760003660031901126102fc57600f546040516001600160a01b039091168152602090f35b346102fc5760003660031901126102fc576020603054604051908152f35b346102fc5760003660031901126102fc576020602e54604051908152f35b346102fc5760003660031901126102fc5760405160009060105461119481611db1565b808352600191808316908115610dad57506001146111bc57610d4f83610d4381870382611e22565b6010600090815260209450916000805160206128608339815191525b8284106111f157505050810190910190610d4381610d33565b80548585018701529285019281016111d8565b346102fc5760203660031901126102fc5760043560098110156102fc5760ff61122e602092611d82565b54166040519015158152f35b346102fc5760203660031901126102fc576001600160a01b0361125b611cf8565b1660005260016020526020604060002054604051908152f35b346102fc5760003660031901126102fc57600a546040516001600160a01b039091168152602090f35b346102fc5760003660031901126102fc576020602754604051908152f35b346102fc5760003660031901126102fc576020601c54604051908152f35b346102fc5760003660031901126102fc576020602d54604051908152f35b346102fc5760003660031901126102fc5760208054604051908152f35b346102fc5760003660031901126102fc576006546001600160a01b03908181163381900361137e57806005549384167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a36001600160a01b03199283161760055516600655005b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b346102fc5760203660031901126102fc576001600160a01b036113e3611cf8565b1660005260176020526020604060002054604051908152f35b346102fc5760003660031901126102fc576020601554604051908152f35b346102fc5760003660031901126102fc576020600e54604051908152f35b346102fc5760003660031901126102fc576020601654604051908152f35b346102fc5760603660031901126102fc576020610cef604435602435600435611f8b565b346102fc5760003660031901126102fc576020601154604051908152f35b346102fc5760003660031901126102fc57600d546040516001600160a01b039091168152602090f35b346102fc5760003660031901126102fc576020601254604051908152f35b346102fc5760003660031901126102fc576020610cef61244e565b346102fc5760003660031901126102fc576020601954604051908152f35b346102fc5760003660031901126102fc576020601354604051908152f35b346102fc5760603660031901126102fc5761154f611cf8565b611557611d0e565b6044359081611594575b6040519182526001600160a01b0390811692169060008051602061284083398151915290602090a3602060405160018152f35b60018060a01b038084168060005260206001815284604060002054936115bc82861015612578565b8516938484036115d1575b5050505050611561565b836000526002835260406000203360005283526040600020546000198103611645575b50849261161c600080516020612840833981519152979593600193610c4b60209915156125bd565b9260005252604060002055600052604060002061163a858254611f65565b9055918584816115c7565b9091811061169a576020949261161c8860008051602061284083398151915298969461167382600196611f58565b866000526002855260406000203360005285526040600020559350939597505092946115f4565b60405162461bcd60e51b815260048101849052601860248201527745524332303a20616c6c6f77616e636520746f6f206c6f7760401b6044820152606490fd5b346102fc5760003660031901126102fc576020602a54604051908152f35b346102fc5761170636611d33565b91839193959495421161061f5760018060a01b03928388169485600052600460205260406000209283546000198114610609576117a5956105ab956001830190556040519060208201927f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d68452600060408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e0815261056f81611deb565b16036105c4576105c29261279a565b346102fc5760003660031901126102fc57602b546040516001600160a01b039091168152602090f35b346102fc5760203660031901126102fc576001600160a01b036117fe611cf8565b1660005260186020526020604060002054604051908152f35b346102fc5760003660031901126102fc57602060405160008152f35b346102fc5760003660031901126102fc576020602f54604051908152f35b346102fc5760403660031901126102fc5760043560098110156102fc57611876611d24565b6008549091906001600160a01b0316330361192f5760ff61189682611d82565b541615159115159182146118f557808260ff6118b46118e394611d82565b54161515827feeec81de25875ce1725479bb76f720a8defdb43dea041919ae37bb4aae9847c0600080a4611d82565b9060ff80198354169116179055600080f35b60405162461bcd60e51b81526020600482015260126024820152714d61726b65743a2073616d6520737461746560701b6044820152606490fd5b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881d5b985d5d1a1bdc9a5e995960621b6044820152606490fd5b346102fc5760403660031901126102fc576110c7611987611cf8565b60243590336127e8565b346102fc5760603660031901126102fc576119aa611cf8565b6119b2611d24565b6044359081151582036102fc5760018060a01b039283916119d883600554163314611e8c565b15611a7c571690811590811591611a74575b5015611a3757806005549283167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a36001600160a01b031991821617600555600680549091169055005b60405162461bcd60e51b81526020600482015260156024820152744f776e61626c653a207a65726f206164647265737360581b6044820152606490fd5b9050836119ea565b9150501660018060a01b03196006541617600655600080f35b346102fc5760003660031901126102fc5760018060a01b03600f54166040519063d6d7d52560e01b8252602091826004820152600091601054611ad781611db1565b908160248501526001908181169081600014611c865750600114611c46575b50509060409181600081809603925af18015611c3a57600091600091611bfb575b508115611b9e578015611b625760409281601155817f9f9192b5edb17356c524e08d9e025c8e2f6307e6ea52fb7968faa3081f51c3c8600080a25b4260135583519215158352820152f35b60405162461bcd60e51b81526004810184905260146024820152734d61726b65743a20696e76616c6964207261746560601b6044820152606490fd5b50611bae60135460125490611f65565b4211611bbf57601154604092611b52565b60405162461bcd60e51b815260048101839052601460248201527313585c9ad95d0e881c985d19481d1bdbc81bdb1960621b6044820152606490fd5b9150506040813d604011611c32575b81611c1760409383611e22565b810103126102fc5781611c2982612215565b91015183611b17565b3d9150611c0a565b6040513d6000823e3d90fd5b935060106000528460002093856000955b838710611c71575050505091810160440191806040611af6565b80548688016044015295019486908201611c57565b60ff191660448087019190915292151560051b8501909201945082915060409050611af6565b346102fc5760403660031901126102fc57602090611cc8611cf8565b611cd0611d0e565b9060018060a01b03809116600052600384526040600020911660005282526040600020548152f35b600435906001600160a01b03821682036102fc57565b602435906001600160a01b03821682036102fc57565b6024359081151582036102fc57565b60e09060031901126102fc576001600160a01b039060043582811681036102fc579160243590811681036102fc5790604435906064359060843560ff811681036102fc579060a4359060c43590565b6009811015611d9b576000526007602052604060002090565b634e487b7160e01b600052602160045260246000fd5b90600182811c92168015611de1575b6020831014611dcb57565b634e487b7160e01b600052602260045260246000fd5b91607f1691611dc0565b61010081019081106001600160401b03821117610fd857604052565b608081019081106001600160401b03821117610fd857604052565b90601f801991011681019081106001600160401b03821117610fd857604052565b6020808252825181830181905290939260005b828110611e7857505060409293506000838284010152601f8019910116010190565b818101860151848201604001528501611e56565b15611e9357565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b15611ede57565b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881b9bdd081d985b1a59607a1b6044820152606490fd5b8181029291811591840414171561060957565b8115611f34570490565b634e487b7160e01b600052601260045260246000fd5b604d811161060957600a0a90565b9190820391821161060957565b9190820180921161060957565b8181039291600013801582851316918412161761060957565b601454919291611fd491611fc591611fbb91611fb1906001600160801b03831690611f17565b9060801c90611f2a565b93601f5490611f17565b611fce83611f4a565b90611f2a565b80831061209c57611fe86120249184611f58565b9161201f612019612010601e5461200a61200186611f4a565b60205490611f65565b90611f17565b611fce84611f4a565b91611f4a565b611f72565b6509184e72a0009081810291818305149015171561060957670de0b6b3a764000091828102928184051490151715610609578015611f3457600160ff1b91808314600019831416610609570590600082121561209557811461060957600003905b808211612090575090565b905090565b5090612085565b505050600090565b9160018060a01b0380931691600093838552602060178152604091828720549081156122085783518481018181106001600160401b038211176121f45785528881528884808301938285526120fa891515612222565b600954166064600c548c85526018845289852054928a51958694859363442c159960e01b85526004850152602484015260448301525afa9081156121ea578a916121b7575b506121ab97989994926018949261218e6121798a61217461216b61219797620186a06022540490611f17565b601e5490611f17565b611f2a565b915191946001600160801b0392831690611f17565b91511690611f2a565b8181106121af57035b97835252205461226e565b9091565b5050826121a0565b90508481813d83116121e3575b6121ce8183611e22565b810103126121df57516121ab61213f565b8980fd5b503d6121c4565b86513d8c823e3d90fd5b634e487b7160e01b8a52604160045260248afd5b5086955085949350505050565b519081151582036102fc57565b1561222957565b60405162461bcd60e51b815260206004820152601e60248201527f4d61726b65743a2065786368616e676552617465206e6f742076616c696400006044820152606490fd5b612279821515612222565b602060018060a01b0360095416916064600c54604051948593849263442c159960e01b845260048401526024830152600060448301525afa908115611c3a576000916122e6575b50906121746122d29260225490611f17565b620186a06122e2601e5483611f17565b0491565b906020823d8211612314575b816122ff60209383611e22565b810103126123115750516121746122c0565b80fd5b3d91506122f2565b6001600160a01b0316600081815260186020526040812054909261233f9161226e565b91835260176020526040832054801561244857811561244857818110612448578281101561243e57601454612388918391610c4b91611fb1906001600160801b03831690611f17565b90620186a0928383029280840485149015171561242a576123ad9291611fce91611f58565b91601b5491601c54936123c08585611f72565b80820291848212600160ff1b82141661242a57818305149015171561241657058184820194851291129080158216911516176124025750808212612090575090565b634e487b7160e01b81526011600452602490fd5b634e487b7160e01b83526011600452602483fd5b634e487b7160e01b85526011600452602485fd5b50505050601b5490565b50505090565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316148061254f575b156124a9577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f000000000000000000000000000000000000000000000000000000000000000082527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a0815260c081018181106001600160401b03821117610fd85760405251902090565b507f00000000000000000000000000000000000000000000000000000000000000004614612480565b1561257f57565b60405162461bcd60e51b815260206004820152601660248201527545524332303a2062616c616e636520746f6f206c6f7760501b6044820152606490fd5b156125c457565b60405162461bcd60e51b815260206004820152601660248201527545524332303a206e6f207a65726f206164647265737360501b6044820152606490fd5b51906001600160a01b03821682036102fc57565b6005811015611d9b57806126275750565b6001810361266f5760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b6044820152606490fd5b600281036126bc5760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606490fd5b6003146126c557565b60405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608490fd5b9291906fa2a8918ca85bafe22016d0b997e4df60600160ff1b03831161278e5791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa156127815781516001600160a01b0381161561277b579190565b50600190565b50604051903d90823e3d90fd5b50505050600090600390565b7fe50de2333c10a9502fcb1d8ae13a51bbf423153dfc63c2b8997665b32154afc360018060a01b038092169160009083825260036020526040822094169384825260205284604082205580a4565b909160207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259160018060a01b03809416938460005260028352604060002095169485600052825280604060002055604051908152a356feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae672a2646970667358221220175361522ccf85d353159ae4a6ad7644d6e7f5abbe3cc2d23707a8dc0fc4a8bd64736f6c63430008120033", "linkReferences": {}, "deployedLinkReferences": {} } diff --git a/src/artifacts/tapioca-bar/BigBang.json b/src/artifacts/tapioca-bar/BigBang.json index 2d6673ab..c8969f11 100644 --- a/src/artifacts/tapioca-bar/BigBang.json +++ b/src/artifacts/tapioca-bar/BigBang.json @@ -65,13 +65,13 @@ { "indexed": true, "internalType": "address", - "name": "_oldVal", + "name": "oldVal", "type": "address" }, { "indexed": true, "internalType": "address", - "name": "_newVal", + "name": "newVal", "type": "address" } ], @@ -135,6 +135,25 @@ "name": "ExchangeRateDurationUpdated", "type": "event" }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "oldVal", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newVal", + "type": "address" + } + ], + "name": "LeverageExecutorSet", + "type": "event" + }, { "anonymous": false, "inputs": [ @@ -516,6 +535,37 @@ "name": "UpdateMinMaxMintFee", "type": "event" }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint256", + "name": "oldMin", + "type": "uint256" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "newMin", + "type": "uint256" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "oldMax", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "newMax", + "type": "uint256" + } + ], + "name": "UpdateMinMaxMintRange", + "type": "event" + }, { "inputs": [], "name": "DOMAIN_SEPARATOR", @@ -818,19 +868,9 @@ "name": "supplyAmount", "type": "uint256" }, - { - "internalType": "uint256", - "name": "minAmountOut", - "type": "uint256" - }, - { - "internalType": "contract ISwapper", - "name": "swapper", - "type": "address" - }, { "internalType": "bytes", - "name": "dexData", + "name": "data", "type": "bytes" } ], @@ -1137,6 +1177,19 @@ "stateMutability": "view", "type": "function" }, + { + "inputs": [], + "name": "leverageExecutor", + "outputs": [ + { + "internalType": "contract ILeverageExecutor", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, { "inputs": [], "name": "leverageModule", @@ -1297,6 +1350,19 @@ "stateMutability": "view", "type": "function" }, + { + "inputs": [], + "name": "maxMintFeeStart", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, { "inputs": [], "name": "minDebtRate", @@ -1336,6 +1402,19 @@ "stateMutability": "view", "type": "function" }, + { + "inputs": [], + "name": "minMintFeeStart", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, { "inputs": [ { @@ -1701,19 +1780,9 @@ "name": "share", "type": "uint256" }, - { - "internalType": "uint256", - "name": "minAmountOut", - "type": "uint256" - }, - { - "internalType": "contract ISwapper", - "name": "swapper", - "type": "address" - }, { "internalType": "bytes", - "name": "dexData", + "name": "data", "type": "bytes" } ], @@ -1774,6 +1843,19 @@ "stateMutability": "nonpayable", "type": "function" }, + { + "inputs": [ + { + "internalType": "contract ILeverageExecutor", + "name": "_executor", + "type": "address" + } + ], + "name": "setLeverageExecutor", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, { "inputs": [ { @@ -1855,6 +1937,24 @@ "stateMutability": "nonpayable", "type": "function" }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_min", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "_max", + "type": "uint256" + } + ], + "name": "setMinAndMaxMintRange", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, { "inputs": [], "name": "totalBorrow", @@ -2080,8 +2180,8 @@ "type": "receive" } ], - "bytecode": "0x61014080604052346200018a5762000017816200018f565b600f81526001602082016e546170696f63612042696742616e6760881b8152602060405162000046816200018f565b8381520192603160f81b845251902091208160e052610100918183524660a0526040519160208301907f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f92838352604085015260608401524660808401523060a084015260a0835260c083019280841060018060401b03851117620001745760408490525190206080523060c052610120908152600580546001600160a01b0319163390811790915560007f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a362013880601b5562015f90601c55612710601d55612ee06020556103e8602d556148c59283620001ac843960805183613497015260a05183613552015260c05183613461015260e051836134e60152518261350c015251816134c30152f35b634e487b7160e01b600052604160045260246000fd5b600080fd5b604081019081106001600160401b03821117620001745760405256fe6080604052600436101561001b575b361561001957600080fd5b005b60003560e01c8062a02a201461053a57806302ce728f14610535578063078dfbe714610530578063095ea7b31461052b5780630c4e84f01461052657806318160ddd146105215780631c9e379b1461051c5780631d4d3a5d146105175780631da8bf10146105125780631ee9c8f21461050d5780631fb8f81a1461050857806323b872dd1461050357806325384fd8146104fe57806327c811a8146104f9578063331960ff146104f457806334ce998a146104ef57806334d441d0146104ea5780633644e515146104e557806337b6b7b9146104e057806338d52e0f146104db5780633ba0b9a9146104d65780633f741adb146104d157806340626d8b146104cc57806344de240a146104c7578063473e3ce7146104c257806348e4163e146104bd5780634ddf47d4146104b85780634e71e0c8146104b35780635224372c146104ae578063529898f2146104a9578063542afda3146104a4578063579354621461049f57806358db9afe1461049a5780635d5f73ef146104955780636b19ad16146104905780636c3d8b8f1461048b57806370a0823114610486578063727785471461048157806374645ff31461047c57806374c9e481146104775780637dc0d1d0146104725780637ecebe001461046d5780637fa0b84e146104685780638285ef401461046357806387b279371461045e5780638c5d0ed3146104595780638da5cb5b14610454578063910dd7c81461044f578063932bc4f81461044a57806399a97028146104455780639e15e89f14610440578063a28e6b821461043b578063a9059cbb14610436578063aa7d966514610431578063af405b4c1461042c578063b0e21e8a14610427578063b25ea8fb14610422578063b27c0e741461041d578063b7113f1914610418578063bb4cfe3b14610413578063bde39c5d1461040e578063c1ad5c8d14610409578063c861a52614610404578063c9c7d837146103ff578063cce19f81146103fa578063cd0211eb146103f5578063ce8849ed146103f0578063d3fb2a38146103eb578063d505accf146103e6578063d8dfeb45146103e1578063dd62ed3e146103dc578063de406577146103d7578063e0996cb6146103d2578063e30c3978146103cd578063e5644d8b146103c8578063e9a49252146103c3578063ea64dd56146103be578063eec0f42e146103b9578063f5b33dfa146103b4578063f791395d146103af578063f88188cb146103aa5763f8ba4cff0361000e57612862565b6127fb565b6127dd565b6127b4565b612796565b612778565b6126f4565b61266b565b612642565b612624565b6125fb565b6125bf565b612596565b6124e8565b612203565b6121cd565b61214b565b6120f7565b61201f565b611ff6565b611fdb565b611fbd565b611f9f565b611f7c565b611f4b565b611ebf565b611ea1565b611c6f565b611b5c565b611a6f565b6119c5565b611987565b61195c565b6118b8565b611837565b6117f3565b6117d5565b611798565b611766565b61173c565b6116ff565b6116d6565b6116b8565b6115df565b611480565b611405565b6113dc565b6113be565b611395565b6112f2565b6112d4565b6112b6565b611299565b611226565b611144565b610fa1565b610f64565b610f46565b610f28565b610f0a565b610ee6565b610ec8565b610e9f565b610e81565b610e5e565b610e40565b610e17565b610df9565b610bf7565b610bce565b610bb8565b610b6e565b610a9b565b610945565b6108cc565b61088f565b610873565b61077c565b610738565b6105f5565b6105c2565b61057d565b6001600160a01b0381160361055057565b600080fd5b60409060031901126105505760043561056d8161053f565b9060243561057a8161053f565b90565b346105505760206105b961059036610555565b6001600160a01b0391821660009081526003855260408082209290931681526020919091522090565b54604051908152f35b346105505760003660031901126105505760406105dd613167565b825191151582526020820152f35b8015150361055057565b34610550576060366003190112610550576004356106128161053f565b6024359061061f826105eb565b6044359161062c836105eb565b6005546001600160a01b039190610646908316331461287b565b1561071f57811691821590811591610717575b50156106da576005546106c89290610681906001600160a01b03165b6001600160a01b031690565b7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b600680546001600160a01b0319169055005b60405162461bcd60e51b81526020600482015260156024820152744f776e61626c653a207a65726f206164647265737360581b6044820152606490fd5b905038610659565b60068054919092166001600160a01b0319909116179055005b34610550576040366003190112610550576107626004356107588161053f565b6024359033613997565b602060405160018152f35b60043590600982101561055057565b346105505760403660031901126105505761079561076d565b6024356107a1816105eb565b6008546001600160a01b0316330361083757610826826107d56107d06107c961001996611467565b5460ff1690565b151590565b6107e484151591821415612c29565b6107f06107c983611467565b6107f983611458565b1515827feeec81de25875ce1725479bb76f720a8defdb43dea041919ae37bb4aae9847c0600080a4611467565b9060ff801983541691151516179055565b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881d5b985d5d1a1bdc9a5e995960621b6044820152606490fd5b3461055057600036600319011261055057602060405160008152f35b34610550576020366003190112610550576004356108ac8161053f565b60018060a01b031660005260186020526020604060002054604051908152f35b3461055057600036600319011261055057602a546040516001600160a01b039091168152602090f35b60ff81160361055057565b60e0906003190112610550576004356109188161053f565b906024356109258161053f565b90604435906064359060843561093a816108f5565b9060a4359060c43590565b346105505761095336610900565b9592809594959291924211610a295761001996610a2493610a1193610a04878a6109fc8b6109ee610a09996109878661391c565b60405195869460208601988991959493909260c09360e08401977f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d685526000602086015260018060a01b038092166040860152166060840152608083015260a08201520152565b03601f198101835282611565565b5190206138c6565b61384e565b919091613733565b6001600160a01b038381169116146136ce565b613944565b60405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b9181601f84011215610550578235916001600160401b038311610550576020838186019501011161055057565b346105505760c036600319011261055057600435610ab88161053f565b608435610ac48161053f565b60a435906001600160401b03821161055057610b6a92610b46610b4b926109ee610af5610b5a963690600401610a6e565b604051958694630f74e47960e11b602087015260018060a01b0380921660248701526024356044870152604435606487015260643560848701521660a485015260c060c485015260e484019161453e565b614779565b602080825183010191016132a3565b6040519081529081906020820190565b0390f35b34610550576000366003190112610550576020602954604051908152f35b606090600319011261055057600435610ba48161053f565b90602435610bb18161053f565b9060443590565b3461055057610bc636610b8c565b5050506146f1565b3461055057600036600319011261055057602f546040516001600160a01b039091168152602090f35b34610550576080366003190112610550576004356024356044359060643592610c2b60018060a01b0360055416331461287b565b600c54600a5460049190602090610c4a906001600160a01b0316610675565b6040516364cfdbb760e11b815293849182905afa908115610df457610c8592600092610dc4575b501460ff8019602554169115151617602555565b610c98610c9460255460ff1690565b1590565b610c9e57005b610ca6613c7e565b80610d7f575b5080610d3a575b5080610d02575b5080610cc257005b80610cd4620186a0610019931061473d565b806020547f1f1d0e9e5e3fd195010504141e7472fc7f53e44d7cd3f236f0892778039c6326600080a3602055565b80610d34916028547fd00c912c9d1f75ac893827b7bb73eb82874daea46c2eaa6d2bd89f0c8ee57366600080a3602855565b38610cba565b610d7990610d4b602754821161473d565b806026547f5391ae26cacff12a54d10d45f0f04678de8bb9c9b2f784eb7074dac7cc0f8fd9600080a3602655565b38610cb3565b610dbe90610d90602654821061473d565b806027547fa54af2279046b0207f426565497319c4e274479ce71cb53598ec2391459be3f3600080a3602755565b38610cac565b610de691925060203d8111610ded575b610dde8183611565565b8101906132a3565b9038610c71565b503d610dd4565b6130d5565b34610550576000366003190112610550576020601354604051908152f35b34610550576000366003190112610550576014546040516001600160801b039091168152602090f35b34610550576000366003190112610550576020601954604051908152f35b34610550576000366003190112610550576020610e7961345e565b604051908152f35b34610550576000366003190112610550576020601254604051908152f35b3461055057600036600319011261055057600d546040516001600160a01b039091168152602090f35b34610550576000366003190112610550576020601154604051908152f35b34610550576060366003190112610550576020610e79604435602435600435612dba565b34610550576000366003190112610550576020601654604051908152f35b34610550576000366003190112610550576020600e54604051908152f35b34610550576000366003190112610550576020601554604051908152f35b3461055057602036600319011261055057600435610f818161053f565b60018060a01b031660005260176020526020604060002054604051908152f35b34610550576020366003190112610550576004356001600160401b03811161055057610fd1903690600401610a6e565b60ff6022541661110957816101e0918101031261055057806110b7610ff86110d6936121f6565b611004602084016121f6565b611010604085016121f6565b91611097611020606087016121f6565b9361102d608088016121f6565b9361103a60a089016121f6565b9361104760e08a016121f6565b602e80546001600160a01b03199081166001600160a01b039485161790915560308054821695841695909517909455602f8054851693831693909317909255603180549093169616959095179055565b6101c0850135926101a0860135926101008701359260c088013591614017565b6101808101359061016081013590610120610140820135910135613e9d565b6110e262015180601255565b6110ec6000602c55565b6110f76103e8602d55565b610019600160ff196022541617602255565b60405162461bcd60e51b815260206004820152601360248201527213585c9ad95d0e881a5b9a5d1a585b1a5e9959606a1b6044820152606490fd5b3461055057600080600319360112611223576006546001600160a01b0316338190036111df576005546111cc91908190611186906001600160a01b0316610675565b7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08580a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b600680546001600160a01b031916905580f35b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b80fd5b3461055057604061128d61127e6109ee61127961124236610b8c565b87516314890dcb60e21b60208201526001600160a01b03938416602482015292909116604483015260648201529182906084820190565b614811565b60208082518301019101614528565b82519182526020820152f35b346105505760003660031901126105505760208054604051908152f35b34610550576000366003190112610550576020602c54604051908152f35b34610550576000366003190112610550576020601c54604051908152f35b346105505760a03660031901126105505760043561130f8161053f565b60643561131b8161053f565b608435906001600160401b03821161055057610b6a92610b46610b4b926109ee61134c610b5a963690600401610a6e565b604051958694632c6dcd7f60e11b602087015260018060a01b0380921660248701526024356044870152604435606487015216608485015260a060a485015260c484019161453e565b3461055057600036600319011261055057602e546040516001600160a01b039091168152602090f35b34610550576000366003190112610550576020602654604051908152f35b3461055057600036600319011261055057600a546040516001600160a01b039091168152602090f35b34610550576020366003190112610550576004356114228161053f565b60018060a01b031660005260016020526020604060002054604051908152f35b634e487b7160e01b600052602160045260246000fd5b6009111561146257565b611442565b6009811015611462576000526007602052604060002090565b346105505760203660031901126105505761149961076d565b6009811015611462576000526007602052602060ff604060002054166040519015158152f35b90600182811c921680156114ef575b60208310146114d957565b634e487b7160e01b600052602260045260246000fd5b91607f16916114ce565b634e487b7160e01b600052604160045260246000fd5b604081019081106001600160401b0382111761152a57604052565b6114f9565b60c081019081106001600160401b0382111761152a57604052565b60e081019081106001600160401b0382111761152a57604052565b90601f801991011681019081106001600160401b0382111761152a57604052565b60005b8381106115995750506000910152565b8181015183820152602001611589565b906020916115c281518092818552858086019101611586565b601f01601f1916010190565b90602061057a9281815201906115a9565b34610550576000806003193601126112235760405181601054611601816114bf565b808452906001908181169081156116905750600114611637575b610b6a8461162b81880382611565565b604051918291826115ce565b60108352602094507f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae6725b82841061167d5750505081610b6a9361162b928201019361161b565b8054858501870152928501928101611661565b610b6a965061162b9450602092508593915060ff191682840152151560051b8201019361161b565b34610550576000366003190112610550576020602d54604051908152f35b3461055057600036600319011261055057600f546040516001600160a01b039091168152602090f35b346105505760203660031901126105505760043561171c8161053f565b60018060a01b031660005260046020526020604060002054604051908152f35b346105505760403660031901126105505761076260043561175c8161053f565b6024359033613944565b3461055057600036600319011261055057601454604080516001600160801b038316815260809290921c602083015290f35b34610550576020366003190112610550576004356117b58161053f565b60018060a01b031660005260236020526020604060002054604051908152f35b34610550576000366003190112610550576020601b54604051908152f35b34610550576000366003190112610550576005546040516001600160a01b039091168152602090f35b6001600160401b03811161152a57601f01601f191660200190565b34610550576040366003190112610550576004356001600160401b03811161055057366023820112156105505780600401356118728161181c565b916118806040519384611565565b81835236602483830101116105505781600092602460209301838601378301015260243561ffff811681036105505761001991613578565b34610550576000806003193601126112235760405181602b546118da816114bf565b80845290600190818116908115611690575060011461190357610b6a8461162b81880382611565565b602b8352602094507f11c44e4875b74d31ff9fd779bf2566af7bd15b87fc985d01f5094b89e3669e4f5b8284106119495750505081610b6a9361162b928201019361161b565b805485850187015292850192810161192d565b34610550576040366003190112610550576020610e7960043561197e8161053f565b6024359061337b565b346105505760403660031901126105505760606119b26004356119a98161053f565b60243590612e9e565b9060405192835260208301526040820152f35b34610550576080366003190112610550576004356119e28161053f565b6024356119ee8161053f565b604435906119fb8261053f565b606435926001600160401b038411610550576109ee611a6a92611a25610019963690600401610a6e565b60405163514735c160e11b60208201526001600160a01b03958616602482015292851660448401529390951660648201526080608482015293849260a484019161453e565b61483b565b3461055057604036600319011261055057611a8b60043561053f565b6146f1565b9181601f84011215610550578235916001600160401b038311610550576020808501948460051b01011161055057565b906040820191604081528151809352606081019260208093019060005b818110611b4657505050818184039101528251908183528083019281808460051b8301019501936000915b848310611b185750505050505090565b9091929394958480611b36600193601f198682030187528a516115a9565b9801930193019194939290611b08565b8251151586529484019491840191600101611add565b346105505760408060031936011261055057600480356001600160401b03811161055057611b8d9036908301611a90565b9290602435611b9b816105eb565b611ba485614313565b93611bae86614345565b95600090815b818110611bc957865180610b6a8b8b83611ac0565b8280611bd683858a6143a5565b90611be58b51809381936143eb565b0390305af4611bf26143f9565b90801580611c68575b611c41578291611c1c611c2192611c15611c3c968e614429565b9015159052565b61443d565b611c2b828c614429565b52611c36818b614429565b5061390d565b611bb4565b8886611c64611c4f8561443d565b925162461bcd60e51b815292839283016115ce565b0390fd5b5086611bfb565b346105505760008060031936011261122357611c9660018060a01b0360055416331461287b565b600d54611cab906001600160a01b0316610675565b604080516370a0823160e01b815230600482015260209390928484602481845afa908115610df457611d27948392611e82575b50600954611cf4906001600160a01b0316610675565b600e548551638eb22cdd60e01b815260048101919091526024810184905260006044820152958790879081906064820190565b0381845afa958615610df4578496611e63575b5085611d4b575b8451868152602090f35b845163095ea7b360e01b81526001600160a01b03919091166004820152602481019290925290919085908390604490829085905af1908115610df457611ded9584938693611e35575b5050600954611dab906001600160a01b0316610675565b600e548451634d4d7cbd60e11b8152600481019190915230602482015233604482015260006064820152608481019390935291958692918391829060a4820190565b03925af1928315610df457610b6a93611e09575b808080611d41565b611e2890823d8411611e2e575b611e208183611565565b810190614528565b50611e01565b503d611e16565b81611e5492903d10611e5c575b611e4c8183611565565b810190614728565b503880611d94565b503d611e42565b611e7b919650873d8911610ded57610dde8183611565565b9438611d3a565b611e9a919250863d8811610ded57610dde8183611565565b9038611cde565b34610550576000366003190112610550576020601a54604051908152f35b3461055057604036600319011261055057602435611edc8161053f565b611ef160018060a01b0360055416331461287b565b60008080808094600435905af1611f066143f9565b5015611f0f5780f35b60405162461bcd60e51b815260206004820152601460248201527321211d103a3930b739b332b9103330b4b632b21760611b6044820152606490fd5b346105505760003660031901126105505760406024548151906001600160401b03908181168352831c166020820152f35b3461055057600036600319011261055057602060ff602554166040519015158152f35b34610550576000366003190112610550576020601e54604051908152f35b34610550576000366003190112610550576020602854604051908152f35b34610550576000366003190112610550576020610e79613a06565b34610550576000366003190112610550576030546040516001600160a01b039091168152602090f35b346105505760403660031901126105505760043561203c8161053f565b6024356001600160401b0381116105505761205b903690600401610a6e565b909160018060a01b0380916120758260055416331461287b565b1690816120b6575b50508061208657005b61208f9161296e565b7f01ac0e23e087c4b2e9f1a163db44f946de9dd51461fe7a401c523fc8d5db1c29600080a1005b81602a549182167f126a75207b8b11156ec1f4a0ad246f458582451fc5bee4b8a729a1a68886e132600080a36001600160a01b03191617602a55388061207d565b34610550576100196109ee61214661210e36610b8c565b60405163cce19f8160e01b60208201526001600160a01b03938416602482015292909116604483015260648201529182906084820190565b614865565b3461055057608036600319011261055057610b6a610b5a610b4b6004356121718161053f565b6024359061217e8261053f565b6044359061218b826105eb565b6040519263cd0211eb60e01b602085015260018060a01b038092166024850152166044830152151560648201526064356084820152608481526112798161152f565b34610550576000366003190112610550576008546040516001600160a01b039091168152602090f35b35906122018261053f565b565b3461055057610160366003190112610550576004356122218161053f565b6024356001600160401b03811161055057612240903690600401610a6e565b9160443561224d8161053f565b60643560843560a4359060c4359260e4359461010435966101243598610144359a60018060a01b03926122858460055416331461287b565b83811661249e575b5080612469575b505081169081612401575b5050806123e3575b50806123c5575b50806123a8575b508061237e575b5080612354575b508061231c575b50806122f0575b50806122d957005b610019906122eb601e54821015612bc2565b601f55565b80612303620186a0612316931115612b28565b612311601f54821115612b68565b601e55565b386122d1565b8061234e916016547fae6e0ab3b95f0a53ff9660a390ccedcbbf1f2355dce974a9841af106fddcfaba600080a3601655565b386122ca565b80612366620186a06123789310612b28565b612373601b548211612b28565b601c55565b386122c3565b80612390620186a06123a29310612b28565b61239d601c548210612b28565b601b55565b386122bc565b806123ba620186a06123bf9310612b28565b601d55565b386122b5565b806123d8620186a06123dd931115612b28565b601a55565b386122ae565b806123f6620186a06123fb931115612b28565b601955565b386122a7565b600854612462929061241b906001600160a01b0316610675565b7f5a62d22209e370e38eea92cfddcd228e656e6ec139243392a760a7769f5877fd600080a3600880546001600160a01b0319166001600160a01b0392909216919091179055565b388061229f565b61247291612a4b565b7fa6f004921c944d4b8bf6e38462b00f36a58d62495d56b51f571ab78f732c9815600080a13880612294565b600f80546001600160a01b0319166001600160a01b039092169190911790557f0b2d6eb667d0522c3eb86e4288afecae6c11591ffd1345d4d12407e0598bca9b600080a13861228d565b34610550576124f636610900565b9592809594959291924211610a29576100199661259193610a1193610a04878a6109fc8b6109ee610a099961252a8661391c565b60405195869460208601988991959493909260c09360e08401977f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e26685526000602086015260018060a01b038092166040860152166060840152608083015260a08201520152565b613997565b3461055057600036600319011261055057600b546040516001600160a01b039091168152602090f35b346105505760206105b96125d236610555565b6001600160a01b0391821660009081526002855260408082209290931681526020919091522090565b34610550576000366003190112610550576009546040516001600160a01b039091168152602090f35b34610550576000366003190112610550576020601d54604051908152f35b34610550576000366003190112610550576006546040516001600160a01b039091168152602090f35b34610550576080366003190112610550576001600160401b036004358181116105505761269c903690600401611a90565b90602435838111610550576126b5903690600401611a90565b90604435858111610550576126ce903690600401611a90565b929091606435968711610550576126ec610019973690600401611a90565b96909561462a565b346105505760a0366003190112610550576100196004356127148161053f565b602435906127218261053f565b6044359061272e826105eb565b604051926374d2492960e11b602085015260018060a01b03809216602485015216604483015215156064820152606435608482015260843560a482015260a481526121468161154a565b34610550576000366003190112610550576020601f54604051908152f35b34610550576000366003190112610550576020600c54604051908152f35b34610550576000366003190112610550576031546040516001600160a01b039091168152602090f35b34610550576000366003190112610550576020602754604051908152f35b34610550576040366003190112610550576004356024359061282860018060a01b0360055416331461287b565b602c5481602d54917f1eafaac7ca8c5e231c2378dbf01de74321ec7c0c9b113ecc54b2cbd513ec6b5e6020604051878152a4602c55602d55005b3461055057600036600319011261055057610019613c7e565b1561288257565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b601f81116128d2575050565b600090602b825260208220906020601f850160051c83019410612910575b601f0160051c01915b82811061290557505050565b8181556001016128f9565b90925082906128f0565b601f8111612926575050565b6000906010825260208220906020601f850160051c83019410612964575b601f0160051c01915b82811061295957505050565b81815560010161294d565b9092508290612944565b91906001600160401b03811161152a576129928161298d602b546114bf565b6128c6565b6000601f82116001146129cc578192936000926129c1575b50508160011b916000199060031b1c191617602b55565b0135905038806129aa565b602b600052601f198216937f11c44e4875b74d31ff9fd779bf2566af7bd15b87fc985d01f5094b89e3669e4f91805b868110612a335750836001959610612a19575b505050811b01602b55565b0135600019600384901b60f8161c19169055388080612a0e565b909260206001819286860135815501940191016129fb565b91906001600160401b03811161152a57612a6f81612a6a6010546114bf565b61291a565b6000601f8211600114612aa957819293600092612a9e575b50508160011b916000199060031b1c191617601055565b013590503880612a87565b6010600052601f198216937f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae67291805b868110612b105750836001959610612af6575b505050811b01601055565b0135600019600384901b60f8161c19169055388080612aeb565b90926020600181928686013581550194019101612ad8565b15612b2f57565b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881b9bdd081d985b1a59607a1b6044820152606490fd5b15612b6f57565b60405162461bcd60e51b815260206004820152602560248201527f4d61726b65743a20636f6c6c61746572616c697a6174696f6e5261746520746f6044820152646f2062696760d81b6064820152608490fd5b15612bc957565b60405162461bcd60e51b815260206004820152603260248201527f4d61726b65743a206c69717569646174696f6e436f6c6c61746572616c697a616044820152711d1a5bdb94985d19481d1bdbc81cdb585b1b60721b6064820152608490fd5b15612c3057565b60405162461bcd60e51b81526020600482015260126024820152714d61726b65743a2073616d6520737461746560701b6044820152606490fd5b634e487b7160e01b600052601160045260246000fd5b90620186a091828102928184041490151715612c9857565b612c6a565b90670de0b6b3a764000091828102928184041490151715612c9857565b81810292918115918404141715612c9857565b634e487b7160e01b600052601260045260246000fd5b8115612ced570490565b612ccd565b604d8111612c9857600a0a90565b91908203918211612c9857565b91908201809211612c9857565b81810392916000138015828513169184121617612c9857565b906509184e72a00091828102928184051490151715612c9857565b90670de0b6b3a764000091828102928184051490151715612c9857565b818102929160008212600160ff1b821416612c98578184051490151715612c9857565b8115612ced57600160ff1b8114600019831416612c98570590565b600160ff1b8114612c985760000390565b60145491929190612dd5906001600160801b03831690612cba565b9060801c908115612ced57612e0291612df3910493601f5490612cba565b612dfc83612cf2565b90612ce3565b90818310612e9657612e67612e61612e5c612e20612e6c9587612d00565b93612e57612e51612e48601e54612e42612e3986612cf2565b60205490612d0d565b90612cba565b612dfc84612cf2565b91612cf2565b612d1a565b612d33565b91612d4e565b612d8e565b6000811215612e9057612e7e90612da9565b905b808211612e8b575090565b905090565b90612e80565b505050600090565b6001600160a01b0381166000908152601760205260408120549193929091801561301057612f3c90612ece613beb565b93612eda841515613257565b600954602090612ef2906001600160a01b0316610675565b600c546001600160a01b038a1660009081526018602052604080822054905163442c159960e01b815260048101939093526024830152604482015294859190829081906064820190565b03915afa928315610df457612fe795612dfc612f9f6020612fab612f8c8a612f87612f7e612fe19c612fba9a8c91612ff3575b50602154620186a09004612e42565b601e5490612cba565b612ce3565b8551909890612e42906001600160801b03165b6001600160801b031690565b9301516001600160801b031690565b90828210612feb5750035b6001600160a01b03909516600090815260186020526040902090565b546132b2565b9091565b915050612fc5565b61300a9150873d8111610ded57610dde8183611565565b38612f6f565b505080919250918190565b91908260409103126105505760208251613034816105eb565b92015190565b60208082526000916010549161304f836114bf565b92838284015260019081811690816000146130b25750600114613074575b5050505090565b929350601060005280600020926000935b85851061309e575050506040925001013880808061306d565b805485850160400152938201938101613085565b925050506040935060ff929192191683830152151560051b01013880808061306d565b6040513d6000823e3d90fd5b156130e857565b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881c985d19481d1bdbc81bdb1960621b6044820152606490fd5b1561312b57565b60405162461bcd60e51b81526020600482015260146024820152734d61726b65743a20696e76616c6964207261746560601b6044820152606490fd5b600f5461317c906001600160a01b0316610675565b6040805163d6d7d52560e01b8152929183908160008161319e6004820161303a565b03925af18015610df4576000928391613223575b509082156131fe576131c5821515613124565b6131ce82601155565b817f9f9192b5edb17356c524e08d9e025c8e2f6307e6ea52fb7968faa3081f51c3c8600080a25b61220142601355565b905061321a61321260135460125490612d0d565b4211156130e1565b601154906131f5565b905061324791925060403d8111613250575b61323f8183611565565b81019061301b565b919091386131b2565b503d613235565b1561325e57565b60405162461bcd60e51b815260206004820152601e60248201527f4d61726b65743a2065786368616e676552617465206e6f742076616c696400006044820152606490fd5b90816020910312610550575190565b61330760208315926132c48415613257565b600954600c5460405163442c159960e01b81526004810191909152602481019290925260006044830152909283916001600160a01b031690829081906064820190565b03915afa8015610df45761332791600091613341575b5060215490612cba565b90612ced5704620186a061333d601e5483612cba565b0491565b613359915060203d8111610ded57610dde8183611565565b3861331d565b91909160008382019384129112908015821691151617612c9857565b9061339f6133bd91612fe18460018060a01b03166000526018602052604060002090565b6001600160a01b039093166000908152601760205260409020909291565b548015612e96578215612e9657828110612e965781811015613455578261341561341061341b9561340b612dfc956134016014549160018060801b03831690612cba565b9060801c90612ce3565b612d00565b612c80565b92612d00565b613449601b549161344461343b601c54926134368487612d1a565b612d6b565b620186a0900590565b61335f565b90808212612e8b575090565b505050601b5490565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316148061354f575b156134b9577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f000000000000000000000000000000000000000000000000000000000000000082527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a081526135498161152f565b51902090565b507f00000000000000000000000000000000000000000000000000000000000000004614613490565b610100908181805181010312610550576020810151613596816105eb565b6040820151926135a58461053f565b6060830151946135b48661053f565b60808401519460a085015160c0860151936135ce856108f5565b60e08701519601516001600160a01b0392831698831696428310610a2957613690956136848a8c6109fc81996109ee613689998f8f6000146136a7577f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e266965b6136368761391c565b60408051602081019a8b5261ffff909716908701526001600160a01b03978816606087015296909116608085015260a084015260c083019490945260e0820193909352918290610100820190565b61371a565b16146136ce565b1561369e5761220192613997565b61220192613944565b7f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d69661362d565b156136d557565b60405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152606490fd5b9161057a9391610a099361384e565b6005111561146257565b61373c81613729565b806137445750565b61374d81613729565b600181036137955760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b6044820152606490fd5b61379e81613729565b600281036137eb5760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606490fd5b806137f7600392613729565b146137fe57565b60405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608490fd5b9291906fa2a8918ca85bafe22016d0b997e4df60600160ff1b0383116138ba5791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa15610df45781516001600160a01b038116156138b4579190565b50600190565b50505050600090600390565b6138ce61345e565b9060405190602082019261190160f01b84526022830152604282015260428152608081018181106001600160401b0382111761152a5760405251902090565b6000198114612c985760010190565b6001600160a01b0316600090815260046020526040902080549061393f8261390d565b905590565b6001600160a01b03908116600081815260036020908152604080832095909416808352949052918220849055907fe50de2333c10a9502fcb1d8ae13a51bbf423153dfc63c2b8997665b32154afc39080a4565b6001600160a01b0390811660008181526002602090815260408083208686168452825290912091937f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259391928690556040519586521693a3565b90816020910312610550575161057a8161053f565b60255460ff16613b53576014546001600160801b03168015613b4c57600a54613a37906001600160a01b0316610675565b6040518091631848f2bf60e31b825281600460209384935afa918215610df4576004928291600091613b1f575b50604051631a674cc560e11b815293849182906001600160a01b03165afa8015610df457613ab192613aa392600092613b02575b505060285490612cba565b670de0b6b3a7640000900490565b80821015613afa57612dfc613ad592613415613ad06029548093612d00565b612c9d565b612e7e60265491613af5613aa360275492613af08487612d00565b612cba565b612d0d565b505060265490565b613b189250803d10610ded57610dde8183611565565b3880613a98565b613b3f9150823d8411613b45575b613b378183611565565b8101906139f1565b38613a64565b503d613b2d565b5060275490565b600a54600490602090613b6e906001600160a01b0316610675565b60405163e6abad4960e01b815292839182905afa908115610df457600091613b94575090565b61057a915060203d8111610ded57610dde8183611565565b60405190613bb98261150f565b6014546001600160801b038116835260801c6020830152565b6001600160801b039182169082160191908211612c9857565b60006020604051613bfb8161150f565b82815201526001600160401b03908160245460401c169182420392428411612c98574214613c7357613c6e613af091670de0b6b3a7640000613c63613c3e613bac565b9660018060801b03958694858a5116906301e13380613c5b613a06565b041690612cba565b041682855116613bd2565b168252565b50905061057a613bac565b604051613c8a8161150f565b6024546001600160401b038181809316845260401c16613cb1602084019180835242612d00565b928315613e0457613d03613ddb92613cf3613ce6613cda613cd0613a06565b6301e13380900490565b6001600160401b031690565b6001600160401b03168452565b8442166001600160401b03169052565b613d96613d43613aa3613d14613bac565b8051909790613af090613d2f906001600160801b0316612f9f565b612e42613cda88516001600160401b031690565b8551909590613d6f90613d62906001600160801b03808a169116613bd2565b6001600160801b03168252565b805160209091015160801b6001600160801b0319166001600160801b039190911617601455565b613dce816001600160401b038151166024549160206001600160401b0360401b91015160401b169160018060801b0319161717602455565b516001600160401b031690565b16907f7484db546dcd57af0104c73c8a6968dfbaf5767f047cee0dadd0499ad7df81a0600080a3565b50505050565b15613e1157565b60405162461bcd60e51b815260206004820152601860248201527710908e881919589d081c985d195cc81b9bdd081d985b1a5960421b6044820152606490fd5b15613e5857565b60405162461bcd60e51b815260206004820152601b60248201527f42423a206d617820646562742072617465206e6f742076616c696400000000006044820152606490fd5b9291906004600c546020613ebb610675600a5460018060a01b031690565b6040516364cfdbb760e11b815293849182905afa908115610df457613ef592600092610dc457501460ff8019602554169115151617602555565b613f04610c9460255460ff1690565b613f0e5750505050565b613f35613f3a92613f30613f3f96602754151580613f6c575b613f4857602855565b602655565b602755565b602955565b38808080613e04565b613f53838610613e0a565b613f67670de0b6b3a7640000841115613e51565b602855565b506026541515613f27565b15613f7e57565b60405162461bcd60e51b815260206004820152600c60248201526b21211d103130b2103830b4b960a11b6044820152606490fd5b15613fb957565b60405162461bcd60e51b815260206004820152603060248201527f42423a206c69717569646174696f6e20636f6c6c61746572616c697a6174696f60448201526f1b881c985d19481b9bdd081d985b1a5960821b6064820152608490fd5b600a80546001600160a01b0319166001600160a01b03831617905593959493929160405163de40657760e01b81526020946001600160a01b039086908390600490829085165afa8015610df45781614097916004946000916142df575b5060098054919092166001600160a01b03166001600160a01b0319909116179055565b600a546140d2906140b0906001600160a01b0316610675565b600580546001600160a01b0319166001600160a01b0392909216919091179055565b600a5486906140e9906001600160a01b0316610675565b604051631192124760e11b815293849182905afa8015610df45761414c926000916142c2575b508185161515806142b7575b806142ac575b61412a90613f77565b600d8054919092166001600160a01b03166001600160a01b0319909116179055565b600a546004908590614166906001600160a01b0316610675565b6040516386c8e21d60e01b815292839182905afa928315610df45761419f6141c6946141c1936141e89860009261428f575b5050600e55565b600b80546001600160a01b0319166001600160a01b0392909216919091179055565b600c55565b600f80546001600160a01b0319166001600160a01b0392909216919091179055565b6141f0613167565b50506141fe62015f90601955565b6142086000601a55565b801561428257601e555b801561427557601f555b61422b601f54601e5410613fb2565b8015614263576021555b61424162013880601b55565b61424d62015f90601c55565b614258612710601d55565b612201612ee0602055565b50614235670de0b6b3a7640000602155565b5061421c620138806122eb565b50614212620124f8612311565b6142a59250803d10610ded57610dde8183611565565b3880614198565b508582161515614121565b50818116151561411b565b6142d99150873d8911613b4557613b378183611565565b3861410f565b6142f69150893d8b11613b4557613b378183611565565b38614074565b6001600160401b03811161152a5760051b60200190565b9061431d826142fc565b61432a6040519182611565565b828152809261433b601f19916142fc565b0190602036910137565b9061434f826142fc565b61435c6040519182611565565b828152809261436d601f19916142fc565b019060005b82811061437e57505050565b806060602080938501015201614372565b634e487b7160e01b600052603260045260246000fd5b91908110156143e65760051b81013590601e19813603018212156105505701908135916001600160401b038311610550576020018236038113610550579190565b61438f565b908092918237016000815290565b3d15614424573d9061440a8261181c565b916144186040519384611565565b82523d6000602084013e565b606090565b80518210156143e65760209160051b010190565b6103e88151116144f45760448151106144c157600481015181019060208160248401930312610550576024810151906001600160401b0382116105505701816043820112156105505760248101516144948161181c565b926144a26040519485611565565b818452604482840101116105505761057a916044602085019101611586565b506040516144ce8161150f565b60168152754d61726b65743a206e6f2072657475726e206461746160501b602082015290565b506040516145018161150f565b60178152764d61726b65743a20726561736f6e20746f6f206c6f6e6760481b602082015290565b9190826040910312610550576020825192015190565b908060209392818452848401376000828201840152601f01601f1916010190565b91908082526020809201929160005b82811061457c575050505090565b90919293828060019287356145908161053f565b848060a01b0316815201950191019291909261456e565b90808352602080930192838260051b850194846000925b8584106145cf575050505050505090565b9091929394959681810384528735601e19843603018112156105505783018681019190356001600160401b038111610550578036038313610550576146198892839260019561453e565b9901940194019295949391906145be565b9295969094969391936040519660209663e5644d8b60e01b888a01528060a48a01608060248c01525260c48901959060005b898282106146c9575050505087850360231990810160448a0152818652936001600160fb1b038211610550576146c699611a6a988a986109ee986146b79560051b809284830137018981036003190160648b0152019161455f565b928584030160848601526145a7565b50565b8084996001939495356146db8161053f565b848060a01b03168152019801910191909161465c565b60405162461bcd60e51b815260206004820152600f60248201526e10908e881b9bdd08185b1b1bddd959608a1b6044820152606490fd5b90816020910312610550575161057a816105eb565b1561474457565b60405162461bcd60e51b815260206004820152600d60248201526c10908e881b9bdd081d985b1a59609a1b6044820152606490fd5b6031546001600160a01b031680156147d757816000929160208493519201905af4906147a36143f9565b91156147ab57565b611c646147b78361443d565b60405162461bcd60e51b81526020600482015291829160248301906115a9565b60405162461bcd60e51b815260206004820152601260248201527110908e881b5bd91d5b19481b9bdd081cd95d60721b6044820152606490fd5b602f546001600160a01b031680156147d757816000929160208493519201905af4906147a36143f9565b602e546001600160a01b031680156147d757816000929160208493519201905af4906147a36143f9565b6030546001600160a01b031680156147d757816000929160208493519201905af4906147a36143f956fea26469706673582212207be7e320bb2984fbf65472f8cfd2c46711293c44db184c62ca0c381f1e9bef8f64736f6c63430008120033", - "deployedBytecode": "0x6080604052600436101561001b575b361561001957600080fd5b005b60003560e01c8062a02a201461053a57806302ce728f14610535578063078dfbe714610530578063095ea7b31461052b5780630c4e84f01461052657806318160ddd146105215780631c9e379b1461051c5780631d4d3a5d146105175780631da8bf10146105125780631ee9c8f21461050d5780631fb8f81a1461050857806323b872dd1461050357806325384fd8146104fe57806327c811a8146104f9578063331960ff146104f457806334ce998a146104ef57806334d441d0146104ea5780633644e515146104e557806337b6b7b9146104e057806338d52e0f146104db5780633ba0b9a9146104d65780633f741adb146104d157806340626d8b146104cc57806344de240a146104c7578063473e3ce7146104c257806348e4163e146104bd5780634ddf47d4146104b85780634e71e0c8146104b35780635224372c146104ae578063529898f2146104a9578063542afda3146104a4578063579354621461049f57806358db9afe1461049a5780635d5f73ef146104955780636b19ad16146104905780636c3d8b8f1461048b57806370a0823114610486578063727785471461048157806374645ff31461047c57806374c9e481146104775780637dc0d1d0146104725780637ecebe001461046d5780637fa0b84e146104685780638285ef401461046357806387b279371461045e5780638c5d0ed3146104595780638da5cb5b14610454578063910dd7c81461044f578063932bc4f81461044a57806399a97028146104455780639e15e89f14610440578063a28e6b821461043b578063a9059cbb14610436578063aa7d966514610431578063af405b4c1461042c578063b0e21e8a14610427578063b25ea8fb14610422578063b27c0e741461041d578063b7113f1914610418578063bb4cfe3b14610413578063bde39c5d1461040e578063c1ad5c8d14610409578063c861a52614610404578063c9c7d837146103ff578063cce19f81146103fa578063cd0211eb146103f5578063ce8849ed146103f0578063d3fb2a38146103eb578063d505accf146103e6578063d8dfeb45146103e1578063dd62ed3e146103dc578063de406577146103d7578063e0996cb6146103d2578063e30c3978146103cd578063e5644d8b146103c8578063e9a49252146103c3578063ea64dd56146103be578063eec0f42e146103b9578063f5b33dfa146103b4578063f791395d146103af578063f88188cb146103aa5763f8ba4cff0361000e57612862565b6127fb565b6127dd565b6127b4565b612796565b612778565b6126f4565b61266b565b612642565b612624565b6125fb565b6125bf565b612596565b6124e8565b612203565b6121cd565b61214b565b6120f7565b61201f565b611ff6565b611fdb565b611fbd565b611f9f565b611f7c565b611f4b565b611ebf565b611ea1565b611c6f565b611b5c565b611a6f565b6119c5565b611987565b61195c565b6118b8565b611837565b6117f3565b6117d5565b611798565b611766565b61173c565b6116ff565b6116d6565b6116b8565b6115df565b611480565b611405565b6113dc565b6113be565b611395565b6112f2565b6112d4565b6112b6565b611299565b611226565b611144565b610fa1565b610f64565b610f46565b610f28565b610f0a565b610ee6565b610ec8565b610e9f565b610e81565b610e5e565b610e40565b610e17565b610df9565b610bf7565b610bce565b610bb8565b610b6e565b610a9b565b610945565b6108cc565b61088f565b610873565b61077c565b610738565b6105f5565b6105c2565b61057d565b6001600160a01b0381160361055057565b600080fd5b60409060031901126105505760043561056d8161053f565b9060243561057a8161053f565b90565b346105505760206105b961059036610555565b6001600160a01b0391821660009081526003855260408082209290931681526020919091522090565b54604051908152f35b346105505760003660031901126105505760406105dd613167565b825191151582526020820152f35b8015150361055057565b34610550576060366003190112610550576004356106128161053f565b6024359061061f826105eb565b6044359161062c836105eb565b6005546001600160a01b039190610646908316331461287b565b1561071f57811691821590811591610717575b50156106da576005546106c89290610681906001600160a01b03165b6001600160a01b031690565b7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b600680546001600160a01b0319169055005b60405162461bcd60e51b81526020600482015260156024820152744f776e61626c653a207a65726f206164647265737360581b6044820152606490fd5b905038610659565b60068054919092166001600160a01b0319909116179055005b34610550576040366003190112610550576107626004356107588161053f565b6024359033613997565b602060405160018152f35b60043590600982101561055057565b346105505760403660031901126105505761079561076d565b6024356107a1816105eb565b6008546001600160a01b0316330361083757610826826107d56107d06107c961001996611467565b5460ff1690565b151590565b6107e484151591821415612c29565b6107f06107c983611467565b6107f983611458565b1515827feeec81de25875ce1725479bb76f720a8defdb43dea041919ae37bb4aae9847c0600080a4611467565b9060ff801983541691151516179055565b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881d5b985d5d1a1bdc9a5e995960621b6044820152606490fd5b3461055057600036600319011261055057602060405160008152f35b34610550576020366003190112610550576004356108ac8161053f565b60018060a01b031660005260186020526020604060002054604051908152f35b3461055057600036600319011261055057602a546040516001600160a01b039091168152602090f35b60ff81160361055057565b60e0906003190112610550576004356109188161053f565b906024356109258161053f565b90604435906064359060843561093a816108f5565b9060a4359060c43590565b346105505761095336610900565b9592809594959291924211610a295761001996610a2493610a1193610a04878a6109fc8b6109ee610a09996109878661391c565b60405195869460208601988991959493909260c09360e08401977f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d685526000602086015260018060a01b038092166040860152166060840152608083015260a08201520152565b03601f198101835282611565565b5190206138c6565b61384e565b919091613733565b6001600160a01b038381169116146136ce565b613944565b60405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b9181601f84011215610550578235916001600160401b038311610550576020838186019501011161055057565b346105505760c036600319011261055057600435610ab88161053f565b608435610ac48161053f565b60a435906001600160401b03821161055057610b6a92610b46610b4b926109ee610af5610b5a963690600401610a6e565b604051958694630f74e47960e11b602087015260018060a01b0380921660248701526024356044870152604435606487015260643560848701521660a485015260c060c485015260e484019161453e565b614779565b602080825183010191016132a3565b6040519081529081906020820190565b0390f35b34610550576000366003190112610550576020602954604051908152f35b606090600319011261055057600435610ba48161053f565b90602435610bb18161053f565b9060443590565b3461055057610bc636610b8c565b5050506146f1565b3461055057600036600319011261055057602f546040516001600160a01b039091168152602090f35b34610550576080366003190112610550576004356024356044359060643592610c2b60018060a01b0360055416331461287b565b600c54600a5460049190602090610c4a906001600160a01b0316610675565b6040516364cfdbb760e11b815293849182905afa908115610df457610c8592600092610dc4575b501460ff8019602554169115151617602555565b610c98610c9460255460ff1690565b1590565b610c9e57005b610ca6613c7e565b80610d7f575b5080610d3a575b5080610d02575b5080610cc257005b80610cd4620186a0610019931061473d565b806020547f1f1d0e9e5e3fd195010504141e7472fc7f53e44d7cd3f236f0892778039c6326600080a3602055565b80610d34916028547fd00c912c9d1f75ac893827b7bb73eb82874daea46c2eaa6d2bd89f0c8ee57366600080a3602855565b38610cba565b610d7990610d4b602754821161473d565b806026547f5391ae26cacff12a54d10d45f0f04678de8bb9c9b2f784eb7074dac7cc0f8fd9600080a3602655565b38610cb3565b610dbe90610d90602654821061473d565b806027547fa54af2279046b0207f426565497319c4e274479ce71cb53598ec2391459be3f3600080a3602755565b38610cac565b610de691925060203d8111610ded575b610dde8183611565565b8101906132a3565b9038610c71565b503d610dd4565b6130d5565b34610550576000366003190112610550576020601354604051908152f35b34610550576000366003190112610550576014546040516001600160801b039091168152602090f35b34610550576000366003190112610550576020601954604051908152f35b34610550576000366003190112610550576020610e7961345e565b604051908152f35b34610550576000366003190112610550576020601254604051908152f35b3461055057600036600319011261055057600d546040516001600160a01b039091168152602090f35b34610550576000366003190112610550576020601154604051908152f35b34610550576060366003190112610550576020610e79604435602435600435612dba565b34610550576000366003190112610550576020601654604051908152f35b34610550576000366003190112610550576020600e54604051908152f35b34610550576000366003190112610550576020601554604051908152f35b3461055057602036600319011261055057600435610f818161053f565b60018060a01b031660005260176020526020604060002054604051908152f35b34610550576020366003190112610550576004356001600160401b03811161055057610fd1903690600401610a6e565b60ff6022541661110957816101e0918101031261055057806110b7610ff86110d6936121f6565b611004602084016121f6565b611010604085016121f6565b91611097611020606087016121f6565b9361102d608088016121f6565b9361103a60a089016121f6565b9361104760e08a016121f6565b602e80546001600160a01b03199081166001600160a01b039485161790915560308054821695841695909517909455602f8054851693831693909317909255603180549093169616959095179055565b6101c0850135926101a0860135926101008701359260c088013591614017565b6101808101359061016081013590610120610140820135910135613e9d565b6110e262015180601255565b6110ec6000602c55565b6110f76103e8602d55565b610019600160ff196022541617602255565b60405162461bcd60e51b815260206004820152601360248201527213585c9ad95d0e881a5b9a5d1a585b1a5e9959606a1b6044820152606490fd5b3461055057600080600319360112611223576006546001600160a01b0316338190036111df576005546111cc91908190611186906001600160a01b0316610675565b7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08580a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b600680546001600160a01b031916905580f35b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b80fd5b3461055057604061128d61127e6109ee61127961124236610b8c565b87516314890dcb60e21b60208201526001600160a01b03938416602482015292909116604483015260648201529182906084820190565b614811565b60208082518301019101614528565b82519182526020820152f35b346105505760003660031901126105505760208054604051908152f35b34610550576000366003190112610550576020602c54604051908152f35b34610550576000366003190112610550576020601c54604051908152f35b346105505760a03660031901126105505760043561130f8161053f565b60643561131b8161053f565b608435906001600160401b03821161055057610b6a92610b46610b4b926109ee61134c610b5a963690600401610a6e565b604051958694632c6dcd7f60e11b602087015260018060a01b0380921660248701526024356044870152604435606487015216608485015260a060a485015260c484019161453e565b3461055057600036600319011261055057602e546040516001600160a01b039091168152602090f35b34610550576000366003190112610550576020602654604051908152f35b3461055057600036600319011261055057600a546040516001600160a01b039091168152602090f35b34610550576020366003190112610550576004356114228161053f565b60018060a01b031660005260016020526020604060002054604051908152f35b634e487b7160e01b600052602160045260246000fd5b6009111561146257565b611442565b6009811015611462576000526007602052604060002090565b346105505760203660031901126105505761149961076d565b6009811015611462576000526007602052602060ff604060002054166040519015158152f35b90600182811c921680156114ef575b60208310146114d957565b634e487b7160e01b600052602260045260246000fd5b91607f16916114ce565b634e487b7160e01b600052604160045260246000fd5b604081019081106001600160401b0382111761152a57604052565b6114f9565b60c081019081106001600160401b0382111761152a57604052565b60e081019081106001600160401b0382111761152a57604052565b90601f801991011681019081106001600160401b0382111761152a57604052565b60005b8381106115995750506000910152565b8181015183820152602001611589565b906020916115c281518092818552858086019101611586565b601f01601f1916010190565b90602061057a9281815201906115a9565b34610550576000806003193601126112235760405181601054611601816114bf565b808452906001908181169081156116905750600114611637575b610b6a8461162b81880382611565565b604051918291826115ce565b60108352602094507f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae6725b82841061167d5750505081610b6a9361162b928201019361161b565b8054858501870152928501928101611661565b610b6a965061162b9450602092508593915060ff191682840152151560051b8201019361161b565b34610550576000366003190112610550576020602d54604051908152f35b3461055057600036600319011261055057600f546040516001600160a01b039091168152602090f35b346105505760203660031901126105505760043561171c8161053f565b60018060a01b031660005260046020526020604060002054604051908152f35b346105505760403660031901126105505761076260043561175c8161053f565b6024359033613944565b3461055057600036600319011261055057601454604080516001600160801b038316815260809290921c602083015290f35b34610550576020366003190112610550576004356117b58161053f565b60018060a01b031660005260236020526020604060002054604051908152f35b34610550576000366003190112610550576020601b54604051908152f35b34610550576000366003190112610550576005546040516001600160a01b039091168152602090f35b6001600160401b03811161152a57601f01601f191660200190565b34610550576040366003190112610550576004356001600160401b03811161055057366023820112156105505780600401356118728161181c565b916118806040519384611565565b81835236602483830101116105505781600092602460209301838601378301015260243561ffff811681036105505761001991613578565b34610550576000806003193601126112235760405181602b546118da816114bf565b80845290600190818116908115611690575060011461190357610b6a8461162b81880382611565565b602b8352602094507f11c44e4875b74d31ff9fd779bf2566af7bd15b87fc985d01f5094b89e3669e4f5b8284106119495750505081610b6a9361162b928201019361161b565b805485850187015292850192810161192d565b34610550576040366003190112610550576020610e7960043561197e8161053f565b6024359061337b565b346105505760403660031901126105505760606119b26004356119a98161053f565b60243590612e9e565b9060405192835260208301526040820152f35b34610550576080366003190112610550576004356119e28161053f565b6024356119ee8161053f565b604435906119fb8261053f565b606435926001600160401b038411610550576109ee611a6a92611a25610019963690600401610a6e565b60405163514735c160e11b60208201526001600160a01b03958616602482015292851660448401529390951660648201526080608482015293849260a484019161453e565b61483b565b3461055057604036600319011261055057611a8b60043561053f565b6146f1565b9181601f84011215610550578235916001600160401b038311610550576020808501948460051b01011161055057565b906040820191604081528151809352606081019260208093019060005b818110611b4657505050818184039101528251908183528083019281808460051b8301019501936000915b848310611b185750505050505090565b9091929394958480611b36600193601f198682030187528a516115a9565b9801930193019194939290611b08565b8251151586529484019491840191600101611add565b346105505760408060031936011261055057600480356001600160401b03811161055057611b8d9036908301611a90565b9290602435611b9b816105eb565b611ba485614313565b93611bae86614345565b95600090815b818110611bc957865180610b6a8b8b83611ac0565b8280611bd683858a6143a5565b90611be58b51809381936143eb565b0390305af4611bf26143f9565b90801580611c68575b611c41578291611c1c611c2192611c15611c3c968e614429565b9015159052565b61443d565b611c2b828c614429565b52611c36818b614429565b5061390d565b611bb4565b8886611c64611c4f8561443d565b925162461bcd60e51b815292839283016115ce565b0390fd5b5086611bfb565b346105505760008060031936011261122357611c9660018060a01b0360055416331461287b565b600d54611cab906001600160a01b0316610675565b604080516370a0823160e01b815230600482015260209390928484602481845afa908115610df457611d27948392611e82575b50600954611cf4906001600160a01b0316610675565b600e548551638eb22cdd60e01b815260048101919091526024810184905260006044820152958790879081906064820190565b0381845afa958615610df4578496611e63575b5085611d4b575b8451868152602090f35b845163095ea7b360e01b81526001600160a01b03919091166004820152602481019290925290919085908390604490829085905af1908115610df457611ded9584938693611e35575b5050600954611dab906001600160a01b0316610675565b600e548451634d4d7cbd60e11b8152600481019190915230602482015233604482015260006064820152608481019390935291958692918391829060a4820190565b03925af1928315610df457610b6a93611e09575b808080611d41565b611e2890823d8411611e2e575b611e208183611565565b810190614528565b50611e01565b503d611e16565b81611e5492903d10611e5c575b611e4c8183611565565b810190614728565b503880611d94565b503d611e42565b611e7b919650873d8911610ded57610dde8183611565565b9438611d3a565b611e9a919250863d8811610ded57610dde8183611565565b9038611cde565b34610550576000366003190112610550576020601a54604051908152f35b3461055057604036600319011261055057602435611edc8161053f565b611ef160018060a01b0360055416331461287b565b60008080808094600435905af1611f066143f9565b5015611f0f5780f35b60405162461bcd60e51b815260206004820152601460248201527321211d103a3930b739b332b9103330b4b632b21760611b6044820152606490fd5b346105505760003660031901126105505760406024548151906001600160401b03908181168352831c166020820152f35b3461055057600036600319011261055057602060ff602554166040519015158152f35b34610550576000366003190112610550576020601e54604051908152f35b34610550576000366003190112610550576020602854604051908152f35b34610550576000366003190112610550576020610e79613a06565b34610550576000366003190112610550576030546040516001600160a01b039091168152602090f35b346105505760403660031901126105505760043561203c8161053f565b6024356001600160401b0381116105505761205b903690600401610a6e565b909160018060a01b0380916120758260055416331461287b565b1690816120b6575b50508061208657005b61208f9161296e565b7f01ac0e23e087c4b2e9f1a163db44f946de9dd51461fe7a401c523fc8d5db1c29600080a1005b81602a549182167f126a75207b8b11156ec1f4a0ad246f458582451fc5bee4b8a729a1a68886e132600080a36001600160a01b03191617602a55388061207d565b34610550576100196109ee61214661210e36610b8c565b60405163cce19f8160e01b60208201526001600160a01b03938416602482015292909116604483015260648201529182906084820190565b614865565b3461055057608036600319011261055057610b6a610b5a610b4b6004356121718161053f565b6024359061217e8261053f565b6044359061218b826105eb565b6040519263cd0211eb60e01b602085015260018060a01b038092166024850152166044830152151560648201526064356084820152608481526112798161152f565b34610550576000366003190112610550576008546040516001600160a01b039091168152602090f35b35906122018261053f565b565b3461055057610160366003190112610550576004356122218161053f565b6024356001600160401b03811161055057612240903690600401610a6e565b9160443561224d8161053f565b60643560843560a4359060c4359260e4359461010435966101243598610144359a60018060a01b03926122858460055416331461287b565b83811661249e575b5080612469575b505081169081612401575b5050806123e3575b50806123c5575b50806123a8575b508061237e575b5080612354575b508061231c575b50806122f0575b50806122d957005b610019906122eb601e54821015612bc2565b601f55565b80612303620186a0612316931115612b28565b612311601f54821115612b68565b601e55565b386122d1565b8061234e916016547fae6e0ab3b95f0a53ff9660a390ccedcbbf1f2355dce974a9841af106fddcfaba600080a3601655565b386122ca565b80612366620186a06123789310612b28565b612373601b548211612b28565b601c55565b386122c3565b80612390620186a06123a29310612b28565b61239d601c548210612b28565b601b55565b386122bc565b806123ba620186a06123bf9310612b28565b601d55565b386122b5565b806123d8620186a06123dd931115612b28565b601a55565b386122ae565b806123f6620186a06123fb931115612b28565b601955565b386122a7565b600854612462929061241b906001600160a01b0316610675565b7f5a62d22209e370e38eea92cfddcd228e656e6ec139243392a760a7769f5877fd600080a3600880546001600160a01b0319166001600160a01b0392909216919091179055565b388061229f565b61247291612a4b565b7fa6f004921c944d4b8bf6e38462b00f36a58d62495d56b51f571ab78f732c9815600080a13880612294565b600f80546001600160a01b0319166001600160a01b039092169190911790557f0b2d6eb667d0522c3eb86e4288afecae6c11591ffd1345d4d12407e0598bca9b600080a13861228d565b34610550576124f636610900565b9592809594959291924211610a29576100199661259193610a1193610a04878a6109fc8b6109ee610a099961252a8661391c565b60405195869460208601988991959493909260c09360e08401977f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e26685526000602086015260018060a01b038092166040860152166060840152608083015260a08201520152565b613997565b3461055057600036600319011261055057600b546040516001600160a01b039091168152602090f35b346105505760206105b96125d236610555565b6001600160a01b0391821660009081526002855260408082209290931681526020919091522090565b34610550576000366003190112610550576009546040516001600160a01b039091168152602090f35b34610550576000366003190112610550576020601d54604051908152f35b34610550576000366003190112610550576006546040516001600160a01b039091168152602090f35b34610550576080366003190112610550576001600160401b036004358181116105505761269c903690600401611a90565b90602435838111610550576126b5903690600401611a90565b90604435858111610550576126ce903690600401611a90565b929091606435968711610550576126ec610019973690600401611a90565b96909561462a565b346105505760a0366003190112610550576100196004356127148161053f565b602435906127218261053f565b6044359061272e826105eb565b604051926374d2492960e11b602085015260018060a01b03809216602485015216604483015215156064820152606435608482015260843560a482015260a481526121468161154a565b34610550576000366003190112610550576020601f54604051908152f35b34610550576000366003190112610550576020600c54604051908152f35b34610550576000366003190112610550576031546040516001600160a01b039091168152602090f35b34610550576000366003190112610550576020602754604051908152f35b34610550576040366003190112610550576004356024359061282860018060a01b0360055416331461287b565b602c5481602d54917f1eafaac7ca8c5e231c2378dbf01de74321ec7c0c9b113ecc54b2cbd513ec6b5e6020604051878152a4602c55602d55005b3461055057600036600319011261055057610019613c7e565b1561288257565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b601f81116128d2575050565b600090602b825260208220906020601f850160051c83019410612910575b601f0160051c01915b82811061290557505050565b8181556001016128f9565b90925082906128f0565b601f8111612926575050565b6000906010825260208220906020601f850160051c83019410612964575b601f0160051c01915b82811061295957505050565b81815560010161294d565b9092508290612944565b91906001600160401b03811161152a576129928161298d602b546114bf565b6128c6565b6000601f82116001146129cc578192936000926129c1575b50508160011b916000199060031b1c191617602b55565b0135905038806129aa565b602b600052601f198216937f11c44e4875b74d31ff9fd779bf2566af7bd15b87fc985d01f5094b89e3669e4f91805b868110612a335750836001959610612a19575b505050811b01602b55565b0135600019600384901b60f8161c19169055388080612a0e565b909260206001819286860135815501940191016129fb565b91906001600160401b03811161152a57612a6f81612a6a6010546114bf565b61291a565b6000601f8211600114612aa957819293600092612a9e575b50508160011b916000199060031b1c191617601055565b013590503880612a87565b6010600052601f198216937f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae67291805b868110612b105750836001959610612af6575b505050811b01601055565b0135600019600384901b60f8161c19169055388080612aeb565b90926020600181928686013581550194019101612ad8565b15612b2f57565b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881b9bdd081d985b1a59607a1b6044820152606490fd5b15612b6f57565b60405162461bcd60e51b815260206004820152602560248201527f4d61726b65743a20636f6c6c61746572616c697a6174696f6e5261746520746f6044820152646f2062696760d81b6064820152608490fd5b15612bc957565b60405162461bcd60e51b815260206004820152603260248201527f4d61726b65743a206c69717569646174696f6e436f6c6c61746572616c697a616044820152711d1a5bdb94985d19481d1bdbc81cdb585b1b60721b6064820152608490fd5b15612c3057565b60405162461bcd60e51b81526020600482015260126024820152714d61726b65743a2073616d6520737461746560701b6044820152606490fd5b634e487b7160e01b600052601160045260246000fd5b90620186a091828102928184041490151715612c9857565b612c6a565b90670de0b6b3a764000091828102928184041490151715612c9857565b81810292918115918404141715612c9857565b634e487b7160e01b600052601260045260246000fd5b8115612ced570490565b612ccd565b604d8111612c9857600a0a90565b91908203918211612c9857565b91908201809211612c9857565b81810392916000138015828513169184121617612c9857565b906509184e72a00091828102928184051490151715612c9857565b90670de0b6b3a764000091828102928184051490151715612c9857565b818102929160008212600160ff1b821416612c98578184051490151715612c9857565b8115612ced57600160ff1b8114600019831416612c98570590565b600160ff1b8114612c985760000390565b60145491929190612dd5906001600160801b03831690612cba565b9060801c908115612ced57612e0291612df3910493601f5490612cba565b612dfc83612cf2565b90612ce3565b90818310612e9657612e67612e61612e5c612e20612e6c9587612d00565b93612e57612e51612e48601e54612e42612e3986612cf2565b60205490612d0d565b90612cba565b612dfc84612cf2565b91612cf2565b612d1a565b612d33565b91612d4e565b612d8e565b6000811215612e9057612e7e90612da9565b905b808211612e8b575090565b905090565b90612e80565b505050600090565b6001600160a01b0381166000908152601760205260408120549193929091801561301057612f3c90612ece613beb565b93612eda841515613257565b600954602090612ef2906001600160a01b0316610675565b600c546001600160a01b038a1660009081526018602052604080822054905163442c159960e01b815260048101939093526024830152604482015294859190829081906064820190565b03915afa928315610df457612fe795612dfc612f9f6020612fab612f8c8a612f87612f7e612fe19c612fba9a8c91612ff3575b50602154620186a09004612e42565b601e5490612cba565b612ce3565b8551909890612e42906001600160801b03165b6001600160801b031690565b9301516001600160801b031690565b90828210612feb5750035b6001600160a01b03909516600090815260186020526040902090565b546132b2565b9091565b915050612fc5565b61300a9150873d8111610ded57610dde8183611565565b38612f6f565b505080919250918190565b91908260409103126105505760208251613034816105eb565b92015190565b60208082526000916010549161304f836114bf565b92838284015260019081811690816000146130b25750600114613074575b5050505090565b929350601060005280600020926000935b85851061309e575050506040925001013880808061306d565b805485850160400152938201938101613085565b925050506040935060ff929192191683830152151560051b01013880808061306d565b6040513d6000823e3d90fd5b156130e857565b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881c985d19481d1bdbc81bdb1960621b6044820152606490fd5b1561312b57565b60405162461bcd60e51b81526020600482015260146024820152734d61726b65743a20696e76616c6964207261746560601b6044820152606490fd5b600f5461317c906001600160a01b0316610675565b6040805163d6d7d52560e01b8152929183908160008161319e6004820161303a565b03925af18015610df4576000928391613223575b509082156131fe576131c5821515613124565b6131ce82601155565b817f9f9192b5edb17356c524e08d9e025c8e2f6307e6ea52fb7968faa3081f51c3c8600080a25b61220142601355565b905061321a61321260135460125490612d0d565b4211156130e1565b601154906131f5565b905061324791925060403d8111613250575b61323f8183611565565b81019061301b565b919091386131b2565b503d613235565b1561325e57565b60405162461bcd60e51b815260206004820152601e60248201527f4d61726b65743a2065786368616e676552617465206e6f742076616c696400006044820152606490fd5b90816020910312610550575190565b61330760208315926132c48415613257565b600954600c5460405163442c159960e01b81526004810191909152602481019290925260006044830152909283916001600160a01b031690829081906064820190565b03915afa8015610df45761332791600091613341575b5060215490612cba565b90612ced5704620186a061333d601e5483612cba565b0491565b613359915060203d8111610ded57610dde8183611565565b3861331d565b91909160008382019384129112908015821691151617612c9857565b9061339f6133bd91612fe18460018060a01b03166000526018602052604060002090565b6001600160a01b039093166000908152601760205260409020909291565b548015612e96578215612e9657828110612e965781811015613455578261341561341061341b9561340b612dfc956134016014549160018060801b03831690612cba565b9060801c90612ce3565b612d00565b612c80565b92612d00565b613449601b549161344461343b601c54926134368487612d1a565b612d6b565b620186a0900590565b61335f565b90808212612e8b575090565b505050601b5490565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316148061354f575b156134b9577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f000000000000000000000000000000000000000000000000000000000000000082527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a081526135498161152f565b51902090565b507f00000000000000000000000000000000000000000000000000000000000000004614613490565b610100908181805181010312610550576020810151613596816105eb565b6040820151926135a58461053f565b6060830151946135b48661053f565b60808401519460a085015160c0860151936135ce856108f5565b60e08701519601516001600160a01b0392831698831696428310610a2957613690956136848a8c6109fc81996109ee613689998f8f6000146136a7577f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e266965b6136368761391c565b60408051602081019a8b5261ffff909716908701526001600160a01b03978816606087015296909116608085015260a084015260c083019490945260e0820193909352918290610100820190565b61371a565b16146136ce565b1561369e5761220192613997565b61220192613944565b7f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d69661362d565b156136d557565b60405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152606490fd5b9161057a9391610a099361384e565b6005111561146257565b61373c81613729565b806137445750565b61374d81613729565b600181036137955760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b6044820152606490fd5b61379e81613729565b600281036137eb5760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606490fd5b806137f7600392613729565b146137fe57565b60405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608490fd5b9291906fa2a8918ca85bafe22016d0b997e4df60600160ff1b0383116138ba5791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa15610df45781516001600160a01b038116156138b4579190565b50600190565b50505050600090600390565b6138ce61345e565b9060405190602082019261190160f01b84526022830152604282015260428152608081018181106001600160401b0382111761152a5760405251902090565b6000198114612c985760010190565b6001600160a01b0316600090815260046020526040902080549061393f8261390d565b905590565b6001600160a01b03908116600081815260036020908152604080832095909416808352949052918220849055907fe50de2333c10a9502fcb1d8ae13a51bbf423153dfc63c2b8997665b32154afc39080a4565b6001600160a01b0390811660008181526002602090815260408083208686168452825290912091937f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259391928690556040519586521693a3565b90816020910312610550575161057a8161053f565b60255460ff16613b53576014546001600160801b03168015613b4c57600a54613a37906001600160a01b0316610675565b6040518091631848f2bf60e31b825281600460209384935afa918215610df4576004928291600091613b1f575b50604051631a674cc560e11b815293849182906001600160a01b03165afa8015610df457613ab192613aa392600092613b02575b505060285490612cba565b670de0b6b3a7640000900490565b80821015613afa57612dfc613ad592613415613ad06029548093612d00565b612c9d565b612e7e60265491613af5613aa360275492613af08487612d00565b612cba565b612d0d565b505060265490565b613b189250803d10610ded57610dde8183611565565b3880613a98565b613b3f9150823d8411613b45575b613b378183611565565b8101906139f1565b38613a64565b503d613b2d565b5060275490565b600a54600490602090613b6e906001600160a01b0316610675565b60405163e6abad4960e01b815292839182905afa908115610df457600091613b94575090565b61057a915060203d8111610ded57610dde8183611565565b60405190613bb98261150f565b6014546001600160801b038116835260801c6020830152565b6001600160801b039182169082160191908211612c9857565b60006020604051613bfb8161150f565b82815201526001600160401b03908160245460401c169182420392428411612c98574214613c7357613c6e613af091670de0b6b3a7640000613c63613c3e613bac565b9660018060801b03958694858a5116906301e13380613c5b613a06565b041690612cba565b041682855116613bd2565b168252565b50905061057a613bac565b604051613c8a8161150f565b6024546001600160401b038181809316845260401c16613cb1602084019180835242612d00565b928315613e0457613d03613ddb92613cf3613ce6613cda613cd0613a06565b6301e13380900490565b6001600160401b031690565b6001600160401b03168452565b8442166001600160401b03169052565b613d96613d43613aa3613d14613bac565b8051909790613af090613d2f906001600160801b0316612f9f565b612e42613cda88516001600160401b031690565b8551909590613d6f90613d62906001600160801b03808a169116613bd2565b6001600160801b03168252565b805160209091015160801b6001600160801b0319166001600160801b039190911617601455565b613dce816001600160401b038151166024549160206001600160401b0360401b91015160401b169160018060801b0319161717602455565b516001600160401b031690565b16907f7484db546dcd57af0104c73c8a6968dfbaf5767f047cee0dadd0499ad7df81a0600080a3565b50505050565b15613e1157565b60405162461bcd60e51b815260206004820152601860248201527710908e881919589d081c985d195cc81b9bdd081d985b1a5960421b6044820152606490fd5b15613e5857565b60405162461bcd60e51b815260206004820152601b60248201527f42423a206d617820646562742072617465206e6f742076616c696400000000006044820152606490fd5b9291906004600c546020613ebb610675600a5460018060a01b031690565b6040516364cfdbb760e11b815293849182905afa908115610df457613ef592600092610dc457501460ff8019602554169115151617602555565b613f04610c9460255460ff1690565b613f0e5750505050565b613f35613f3a92613f30613f3f96602754151580613f6c575b613f4857602855565b602655565b602755565b602955565b38808080613e04565b613f53838610613e0a565b613f67670de0b6b3a7640000841115613e51565b602855565b506026541515613f27565b15613f7e57565b60405162461bcd60e51b815260206004820152600c60248201526b21211d103130b2103830b4b960a11b6044820152606490fd5b15613fb957565b60405162461bcd60e51b815260206004820152603060248201527f42423a206c69717569646174696f6e20636f6c6c61746572616c697a6174696f60448201526f1b881c985d19481b9bdd081d985b1a5960821b6064820152608490fd5b600a80546001600160a01b0319166001600160a01b03831617905593959493929160405163de40657760e01b81526020946001600160a01b039086908390600490829085165afa8015610df45781614097916004946000916142df575b5060098054919092166001600160a01b03166001600160a01b0319909116179055565b600a546140d2906140b0906001600160a01b0316610675565b600580546001600160a01b0319166001600160a01b0392909216919091179055565b600a5486906140e9906001600160a01b0316610675565b604051631192124760e11b815293849182905afa8015610df45761414c926000916142c2575b508185161515806142b7575b806142ac575b61412a90613f77565b600d8054919092166001600160a01b03166001600160a01b0319909116179055565b600a546004908590614166906001600160a01b0316610675565b6040516386c8e21d60e01b815292839182905afa928315610df45761419f6141c6946141c1936141e89860009261428f575b5050600e55565b600b80546001600160a01b0319166001600160a01b0392909216919091179055565b600c55565b600f80546001600160a01b0319166001600160a01b0392909216919091179055565b6141f0613167565b50506141fe62015f90601955565b6142086000601a55565b801561428257601e555b801561427557601f555b61422b601f54601e5410613fb2565b8015614263576021555b61424162013880601b55565b61424d62015f90601c55565b614258612710601d55565b612201612ee0602055565b50614235670de0b6b3a7640000602155565b5061421c620138806122eb565b50614212620124f8612311565b6142a59250803d10610ded57610dde8183611565565b3880614198565b508582161515614121565b50818116151561411b565b6142d99150873d8911613b4557613b378183611565565b3861410f565b6142f69150893d8b11613b4557613b378183611565565b38614074565b6001600160401b03811161152a5760051b60200190565b9061431d826142fc565b61432a6040519182611565565b828152809261433b601f19916142fc565b0190602036910137565b9061434f826142fc565b61435c6040519182611565565b828152809261436d601f19916142fc565b019060005b82811061437e57505050565b806060602080938501015201614372565b634e487b7160e01b600052603260045260246000fd5b91908110156143e65760051b81013590601e19813603018212156105505701908135916001600160401b038311610550576020018236038113610550579190565b61438f565b908092918237016000815290565b3d15614424573d9061440a8261181c565b916144186040519384611565565b82523d6000602084013e565b606090565b80518210156143e65760209160051b010190565b6103e88151116144f45760448151106144c157600481015181019060208160248401930312610550576024810151906001600160401b0382116105505701816043820112156105505760248101516144948161181c565b926144a26040519485611565565b818452604482840101116105505761057a916044602085019101611586565b506040516144ce8161150f565b60168152754d61726b65743a206e6f2072657475726e206461746160501b602082015290565b506040516145018161150f565b60178152764d61726b65743a20726561736f6e20746f6f206c6f6e6760481b602082015290565b9190826040910312610550576020825192015190565b908060209392818452848401376000828201840152601f01601f1916010190565b91908082526020809201929160005b82811061457c575050505090565b90919293828060019287356145908161053f565b848060a01b0316815201950191019291909261456e565b90808352602080930192838260051b850194846000925b8584106145cf575050505050505090565b9091929394959681810384528735601e19843603018112156105505783018681019190356001600160401b038111610550578036038313610550576146198892839260019561453e565b9901940194019295949391906145be565b9295969094969391936040519660209663e5644d8b60e01b888a01528060a48a01608060248c01525260c48901959060005b898282106146c9575050505087850360231990810160448a0152818652936001600160fb1b038211610550576146c699611a6a988a986109ee986146b79560051b809284830137018981036003190160648b0152019161455f565b928584030160848601526145a7565b50565b8084996001939495356146db8161053f565b848060a01b03168152019801910191909161465c565b60405162461bcd60e51b815260206004820152600f60248201526e10908e881b9bdd08185b1b1bddd959608a1b6044820152606490fd5b90816020910312610550575161057a816105eb565b1561474457565b60405162461bcd60e51b815260206004820152600d60248201526c10908e881b9bdd081d985b1a59609a1b6044820152606490fd5b6031546001600160a01b031680156147d757816000929160208493519201905af4906147a36143f9565b91156147ab57565b611c646147b78361443d565b60405162461bcd60e51b81526020600482015291829160248301906115a9565b60405162461bcd60e51b815260206004820152601260248201527110908e881b5bd91d5b19481b9bdd081cd95d60721b6044820152606490fd5b602f546001600160a01b031680156147d757816000929160208493519201905af4906147a36143f9565b602e546001600160a01b031680156147d757816000929160208493519201905af4906147a36143f9565b6030546001600160a01b031680156147d757816000929160208493519201905af4906147a36143f956fea26469706673582212207be7e320bb2984fbf65472f8cfd2c46711293c44db184c62ca0c381f1e9bef8f64736f6c63430008120033", + "bytecode": "0x61014080604052346200018a5762000017816200018f565b600f81526001602082016e546170696f63612042696742616e6760881b8152602060405162000046816200018f565b8381520192603160f81b845251902091208160e052610100918183524660a0526040519160208301907f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f92838352604085015260608401524660808401523060a084015260a0835260c083019280841060018060401b03851117620001745760408490525190206080523060c052610120908152600580546001600160a01b0319163390811790915560007f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a362013880601b5562015f90601c55612710601d55612ee06020556103e8602e55614a779283620001ac8439608051836135e0015260a0518361369b015260c051836135aa015260e0518361362f015251826136550152518161360c0152f35b634e487b7160e01b600052604160045260246000fd5b600080fd5b604081019081106001600160401b03821117620001745760405256fe6080604052600436101561001b575b361561001957600080fd5b005b60003560e01c8062a02a201461058a57806302ce728f14610585578063078dfbe714610580578063095ea7b31461057b5780630c4e84f0146105765780630f8b29ea1461057157806318160ddd1461056c5780631c9e379b146105675780631d4d3a5d146105625780631da8bf101461055d5780631fb8f81a1461055857806323b872dd1461055357806325384fd81461054e57806327c811a814610549578063331960ff1461054457806334ce998a1461053f57806334d441d01461053a5780633644e5151461053557806337b6b7b91461053057806338d52e0f1461052b5780633ba0b9a9146105265780633f741adb1461052157806340626d8b1461051c57806344de240a14610517578063473e3ce71461051257806348e4163e1461050d5780634ddf47d4146105085780634e71e0c8146105035780635224372c146104fe578063529898f2146104f9578063542afda3146104f457806357935462146104ef5780635d5f73ef146104ea5780636b19ad16146104e55780636c3d8b8f146104e057806370a08231146104db57806372778547146104d657806374645ff3146104d157806374c9e481146104cc578063790c8467146104c75780637dc0d1d0146104c25780637ecebe00146104bd5780637fa0b84e146104b85780638285ef40146104b357806387b27937146104ae5780638c5d0ed3146104a95780638da5cb5b146104a4578063910dd7c81461049f578063932bc4f81461049a57806399a97028146104955780639e15e89f14610490578063a28e6b821461048b578063a9059cbb14610486578063aa7d966514610481578063af1827c41461047c578063af405b4c14610477578063b0e21e8a14610472578063b25ea8fb1461046d578063b27c0e7414610468578063b7113f1914610463578063bb4cfe3b1461045e578063bde39c5d14610459578063c1ad5c8d14610454578063c861a5261461044f578063c9c7d8371461044a578063cce19f8114610445578063cd0211eb14610440578063ce8849ed1461043b578063d3fb2a3814610436578063d4e4534e14610431578063d505accf1461042c578063d8dfeb4514610427578063da863f0e14610422578063dd62ed3e1461041d578063de40657714610418578063e0996cb614610413578063e30c39781461040e578063e5644d8b14610409578063e7d6de8014610404578063e9a49252146103ff578063ea64dd56146103fa578063eec0f42e146103f5578063ef2b234a146103f0578063f5b33dfa146103eb578063f791395d146103e6578063f88188cb146103e15763f8ba4cff0361000e576129ab565b612944565b612926565b6128fd565b612887565b612869565b61284b565b6127c7565b61273f565b6126b6565b61268d565b61266f565b612646565b61260a565b6125e1565b6125b8565b61250a565b612475565b612190565b61215a565b6120b9565b612065565b611f8d565b611f64565b611f49565b611f2b565b611f0d565b611eea565b611eb9565b611e2d565b611e0f565b611bdd565b611b76565b611a63565b611976565b6118cc565b61188e565b611863565b6117bf565b61173e565b6116fa565b6116dc565b61169f565b61166d565b611643565b611606565b6115dd565b6115bf565b6115a1565b6114c4565b611365565b6112ea565b6112c1565b6112a3565b61127a565b61125c565b61123e565b611221565b6111ae565b6110cc565b610f3c565b610ed2565b610eb4565b610e96565b610e78565b610e54565b610e36565b610e0d565b610def565b610dcc565b610dae565b610d85565b610d67565b610b65565b610b3c565b610b26565b610adc565b6109b3565b61093a565b6108fd565b6108e1565b6108c3565b6107cc565b610788565b610645565b610612565b6105cd565b6001600160a01b038116036105a057565b600080fd5b60409060031901126105a0576004356105bd8161058f565b906024356105ca8161058f565b90565b346105a05760206106096105e0366105a5565b6001600160a01b0391821660009081526003855260408082209290931681526020919091522090565b54604051908152f35b346105a05760003660031901126105a057604061062d6132b0565b825191151582526020820152f35b801515036105a057565b346105a05760603660031901126105a0576004356106628161058f565b6024359061066f8261063b565b6044359161067c8361063b565b6005546001600160a01b03919061069690831633146129c4565b1561076f57811691821590811591610767575b501561072a5760055461071892906106d1906001600160a01b03165b6001600160a01b031690565b7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b600680546001600160a01b0319169055005b60405162461bcd60e51b81526020600482015260156024820152744f776e61626c653a207a65726f206164647265737360581b6044820152606490fd5b9050386106a9565b60068054919092166001600160a01b0319909116179055005b346105a05760403660031901126105a0576107b26004356107a88161058f565b6024359033613ae0565b602060405160018152f35b6004359060098210156105a057565b346105a05760403660031901126105a0576107e56107bd565b6024356107f18161063b565b6008546001600160a01b0316330361088757610876826108256108206108196100199661134c565b5460ff1690565b151590565b61083484151591821415612d72565b6108406108198361134c565b6108498361133d565b1515827feeec81de25875ce1725479bb76f720a8defdb43dea041919ae37bb4aae9847c0600080a461134c565b9060ff801983541691151516179055565b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881d5b985d5d1a1bdc9a5e995960621b6044820152606490fd5b346105a05760003660031901126105a0576020602f54604051908152f35b346105a05760003660031901126105a057602060405160008152f35b346105a05760203660031901126105a05760043561091a8161058f565b60018060a01b031660005260186020526020604060002054604051908152f35b346105a05760003660031901126105a057602b546040516001600160a01b039091168152602090f35b60ff8116036105a057565b60e09060031901126105a0576004356109868161058f565b906024356109938161058f565b9060443590606435906084356109a881610963565b9060a4359060c43590565b346105a0576109c13661096e565b9592809594959291924211610a975761001996610a9293610a7f93610a72878a610a6a8b610a5c610a77996109f586613a65565b60405195869460208601988991959493909260c09360e08401977f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d685526000602086015260018060a01b038092166040860152166060840152608083015260a08201520152565b03601f19810183528261144a565b519020613a0f565b613997565b91909161387c565b6001600160a01b03838116911614613817565b613a8d565b60405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b346105a05760003660031901126105a0576020602a54604051908152f35b60609060031901126105a057600435610b128161058f565b90602435610b1f8161058f565b9060443590565b346105a057610b3436610afa565b5050506148a3565b346105a05760003660031901126105a0576032546040516001600160a01b039091168152602090f35b346105a05760803660031901126105a0576004356024356044359060643592610b9960018060a01b036005541633146129c4565b600c54600a5460049190602090610bb8906001600160a01b03166106c5565b6040516364cfdbb760e11b815293849182905afa908115610d6257610bf392600092610d32575b501460ff8019602654169115151617602655565b610c06610c0260265460ff1690565b1590565b610c0c57005b610c14613dc7565b80610ced575b5080610ca8575b5080610c70575b5080610c3057005b80610c42620186a061001993106148ef565b806020547f1f1d0e9e5e3fd195010504141e7472fc7f53e44d7cd3f236f0892778039c6326600080a3602055565b80610ca2916029547fd00c912c9d1f75ac893827b7bb73eb82874daea46c2eaa6d2bd89f0c8ee57366600080a3602955565b38610c28565b610ce790610cb960285482116148ef565b806027547f5391ae26cacff12a54d10d45f0f04678de8bb9c9b2f784eb7074dac7cc0f8fd9600080a3602755565b38610c21565b610d2c90610cfe60275482106148ef565b806028547fa54af2279046b0207f426565497319c4e274479ce71cb53598ec2391459be3f3600080a3602855565b38610c1a565b610d5491925060203d8111610d5b575b610d4c818361144a565b8101906133ec565b9038610bdf565b503d610d42565b61321e565b346105a05760003660031901126105a0576020601354604051908152f35b346105a05760003660031901126105a0576014546040516001600160801b039091168152602090f35b346105a05760003660031901126105a0576020601954604051908152f35b346105a05760003660031901126105a0576020610de76135a7565b604051908152f35b346105a05760003660031901126105a0576020601254604051908152f35b346105a05760003660031901126105a057600d546040516001600160a01b039091168152602090f35b346105a05760003660031901126105a0576020601154604051908152f35b346105a05760603660031901126105a0576020610de7604435602435600435612f03565b346105a05760003660031901126105a0576020601654604051908152f35b346105a05760003660031901126105a0576020600e54604051908152f35b346105a05760003660031901126105a0576020601554604051908152f35b346105a05760203660031901126105a057600435610eef8161058f565b60018060a01b031660005260176020526020604060002054604051908152f35b9181601f840112156105a0578235916001600160401b0383116105a057602083818601950101116105a057565b346105a05760203660031901126105a0576004356001600160401b0381116105a057610f6c903690600401610f0f565b60ff60235416611091578161020091810103126105a05780611060610f9361107f93612183565b610f9f60208401612183565b90610fac60408501612183565b610fb860608601612183565b92611040610fc860808801612183565b92610fd560a08901612183565b92610fe260e08a01612183565b95610ff06101e08b01612183565b603180546001600160a01b03199081166001600160a01b03948516179091556033805482169584169590951790945560328054851693831693909317909255603480549093169716969096179055565b6101c0860135926101a0870135926101008801359260c089013591614160565b6101808101359061016081013590610120610140820135910135613fe6565b610019600160ff196023541617602355565b60405162461bcd60e51b815260206004820152601360248201527213585c9ad95d0e881a5b9a5d1a585b1a5e9959606a1b6044820152606490fd5b346105a0576000806003193601126111ab576006546001600160a01b031633819003611167576005546111549190819061110e906001600160a01b03166106c5565b7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08580a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b600680546001600160a01b031916905580f35b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b80fd5b346105a0576040611215611206610a5c6112016111ca36610afa565b87516314890dcb60e21b60208201526001600160a01b03938416602482015292909116604483015260648201529182906084820190565b61492b565b602080825183010191016146da565b82519182526020820152f35b346105a05760003660031901126105a05760208054604051908152f35b346105a05760003660031901126105a0576020602d54604051908152f35b346105a05760003660031901126105a0576020601c54604051908152f35b346105a05760003660031901126105a0576031546040516001600160a01b039091168152602090f35b346105a05760003660031901126105a0576020602754604051908152f35b346105a05760003660031901126105a057600a546040516001600160a01b039091168152602090f35b346105a05760203660031901126105a0576004356113078161058f565b60018060a01b031660005260016020526020604060002054604051908152f35b634e487b7160e01b600052602160045260246000fd5b6009111561134757565b611327565b6009811015611347576000526007602052604060002090565b346105a05760203660031901126105a05761137e6107bd565b6009811015611347576000526007602052602060ff604060002054166040519015158152f35b90600182811c921680156113d4575b60208310146113be57565b634e487b7160e01b600052602260045260246000fd5b91607f16916113b3565b634e487b7160e01b600052604160045260246000fd5b604081019081106001600160401b0382111761140f57604052565b6113de565b60c081019081106001600160401b0382111761140f57604052565b60e081019081106001600160401b0382111761140f57604052565b90601f801991011681019081106001600160401b0382111761140f57604052565b60005b83811061147e5750506000910152565b818101518382015260200161146e565b906020916114a78151809281855285808601910161146b565b601f01601f1916010190565b9060206105ca92818152019061148e565b346105a0576000806003193601126111ab57604051816010546114e6816113a4565b808452906001908181169081156115795750600114611520575b61151c846115108188038261144a565b604051918291826114b3565b0390f35b60108352602094507f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae6725b828410611566575050508161151c936115109282010193611500565b805485850187015292850192810161154a565b61151c96506115109450602092508593915060ff191682840152151560051b82010193611500565b346105a05760003660031901126105a0576020602e54604051908152f35b346105a05760003660031901126105a0576020603054604051908152f35b346105a05760003660031901126105a057600f546040516001600160a01b039091168152602090f35b346105a05760203660031901126105a0576004356116238161058f565b60018060a01b031660005260046020526020604060002054604051908152f35b346105a05760403660031901126105a0576107b26004356116638161058f565b6024359033613a8d565b346105a05760003660031901126105a057601454604080516001600160801b038316815260809290921c602083015290f35b346105a05760203660031901126105a0576004356116bc8161058f565b60018060a01b031660005260246020526020604060002054604051908152f35b346105a05760003660031901126105a0576020601b54604051908152f35b346105a05760003660031901126105a0576005546040516001600160a01b039091168152602090f35b6001600160401b03811161140f57601f01601f191660200190565b346105a05760403660031901126105a0576004356001600160401b0381116105a057366023820112156105a057806004013561177981611723565b91611787604051938461144a565b81835236602483830101116105a05781600092602460209301838601378301015260243561ffff811681036105a057610019916136c1565b346105a0576000806003193601126111ab5760405181602c546117e1816113a4565b80845290600190818116908115611579575060011461180a5761151c846115108188038261144a565b602c8352602094507f7416c943b4a09859521022fd2e90eac0dd9026dad28fa317782a135f28a860915b828410611850575050508161151c936115109282010193611500565b8054858501870152928501928101611834565b346105a05760403660031901126105a0576020610de76004356118858161058f565b602435906134c4565b346105a05760403660031901126105a05760606118b96004356118b08161058f565b60243590612fe7565b9060405192835260208301526040820152f35b346105a05760803660031901126105a0576004356118e98161058f565b6024356118f58161058f565b604435906119028261058f565b606435926001600160401b0384116105a057610a5c6119719261192c610019963690600401610f0f565b60405163514735c160e11b60208201526001600160a01b03958616602482015292851660448401529390951660648201526080608482015293849260a48401916146f0565b6149c3565b346105a05760403660031901126105a05761199260043561058f565b6148a3565b9181601f840112156105a0578235916001600160401b0383116105a0576020808501948460051b0101116105a057565b906040820191604081528151809352606081019260208093019060005b818110611a4d57505050818184039101528251908183528083019281808460051b8301019501936000915b848310611a1f5750505050505090565b9091929394958480611a3d600193601f198682030187528a5161148e565b9801930193019194939290611a0f565b82511515865294840194918401916001016119e4565b346105a0576040806003193601126105a057600480356001600160401b0381116105a057611a949036908301611997565b9290602435611aa28161063b565b611aab856144c5565b93611ab5866144f7565b95600090815b818110611ad05786518061151c8b8b836119c7565b8280611add83858a614557565b90611aec8b518093819361459d565b0390305af4611af96145ab565b90801580611b6f575b611b48578291611b23611b2892611b1c611b43968e6145db565b9015159052565b6145ef565b611b32828c6145db565b52611b3d818b6145db565b50613a56565b611abb565b8886611b6b611b56856145ef565b925162461bcd60e51b815292839283016114b3565b0390fd5b5086611b02565b346105a05760403660031901126105a05760043560243590611ba360018060a01b036005541633146129c4565b60305481602f54917f9ba515d5ad02a934b077fb0eba07a4ec79463a8dc735c8b4ad44a434abc8607a6020604051878152a4603055602f55005b346105a0576000806003193601126111ab57611c0460018060a01b036005541633146129c4565b600d54611c19906001600160a01b03166106c5565b604080516370a0823160e01b815230600482015260209390928484602481845afa908115610d6257611c95948392611df0575b50600954611c62906001600160a01b03166106c5565b600e548551638eb22cdd60e01b815260048101919091526024810184905260006044820152958790879081906064820190565b0381845afa958615610d62578496611dd1575b5085611cb9575b8451868152602090f35b845163095ea7b360e01b81526001600160a01b03919091166004820152602481019290925290919085908390604490829085905af1908115610d6257611d5b9584938693611da3575b5050600954611d19906001600160a01b03166106c5565b600e548451634d4d7cbd60e11b8152600481019190915230602482015233604482015260006064820152608481019390935291958692918391829060a4820190565b03925af1928315610d625761151c93611d77575b808080611caf565b611d9690823d8411611d9c575b611d8e818361144a565b8101906146da565b50611d6f565b503d611d84565b81611dc292903d10611dca575b611dba818361144a565b8101906148da565b503880611d02565b503d611db0565b611de9919650873d8911610d5b57610d4c818361144a565b9438611ca8565b611e08919250863d8811610d5b57610d4c818361144a565b9038611c4c565b346105a05760003660031901126105a0576020601a54604051908152f35b346105a05760403660031901126105a057602435611e4a8161058f565b611e5f60018060a01b036005541633146129c4565b60008080808094600435905af1611e746145ab565b5015611e7d5780f35b60405162461bcd60e51b815260206004820152601460248201527321211d103a3930b739b332b9103330b4b632b21760611b6044820152606490fd5b346105a05760003660031901126105a05760406025548151906001600160401b03908181168352831c166020820152f35b346105a05760003660031901126105a057602060ff602654166040519015158152f35b346105a05760003660031901126105a0576020601e54604051908152f35b346105a05760003660031901126105a0576020602954604051908152f35b346105a05760003660031901126105a0576020610de7613b4f565b346105a05760003660031901126105a0576033546040516001600160a01b039091168152602090f35b346105a05760403660031901126105a057600435611faa8161058f565b6024356001600160401b0381116105a057611fc9903690600401610f0f565b909160018060a01b038091611fe3826005541633146129c4565b169081612024575b505080611ff457005b611ffd91612ab7565b7f01ac0e23e087c4b2e9f1a163db44f946de9dd51461fe7a401c523fc8d5db1c29600080a1005b81602b549182167f126a75207b8b11156ec1f4a0ad246f458582451fc5bee4b8a729a1a68886e132600080a36001600160a01b03191617602b553880611feb565b346105a057610019610a5c6120b461207c36610afa565b60405163cce19f8160e01b60208201526001600160a01b03938416602482015292909116604483015260648201529182906084820190565b6149ed565b346105a05760803660031901126105a05761151c61214a61213b6004356120df8161058f565b602435906120ec8261058f565b604435906120f98261063b565b6040519263cd0211eb60e01b602085015260018060a01b0380921660248501521660448301521515606482015260643560848201526084815261120181611414565b602080825183010191016133ec565b6040519081529081906020820190565b346105a05760003660031901126105a0576008546040516001600160a01b039091168152602090f35b359061218e8261058f565b565b346105a0576101603660031901126105a0576004356121ae8161058f565b6024356001600160401b0381116105a0576121cd903690600401610f0f565b916044356121da8161058f565b60643560843560a4359060c4359260e4359461010435966101243598610144359a60018060a01b0392612212846005541633146129c4565b83811661242b575b50806123f6575b50508116908161238e575b505080612370575b5080612352575b5080612335575b508061230b575b50806122e1575b50806122a9575b508061227d575b508061226657005b61001990612278601e54821015612d0b565b601f55565b80612290620186a06122a3931115612c71565b61229e601f54821115612cb1565b601e55565b3861225e565b806122db916016547fae6e0ab3b95f0a53ff9660a390ccedcbbf1f2355dce974a9841af106fddcfaba600080a3601655565b38612257565b806122f3620186a06123059310612c71565b612300601b548211612c71565b601c55565b38612250565b8061231d620186a061232f9310612c71565b61232a601c548210612c71565b601b55565b38612249565b80612347620186a061234c9310612c71565b601d55565b38612242565b80612365620186a061236a931115612c71565b601a55565b3861223b565b80612383620186a0612388931115612c71565b601955565b38612234565b6008546123ef92906123a8906001600160a01b03166106c5565b7f5a62d22209e370e38eea92cfddcd228e656e6ec139243392a760a7769f5877fd600080a3600880546001600160a01b0319166001600160a01b0392909216919091179055565b388061222c565b6123ff91612b94565b7fa6f004921c944d4b8bf6e38462b00f36a58d62495d56b51f571ab78f732c9815600080a13880612221565b600f80546001600160a01b0319166001600160a01b039092169190911790557f0b2d6eb667d0522c3eb86e4288afecae6c11591ffd1345d4d12407e0598bca9b600080a13861221a565b346105a05760803660031901126105a0576004356124928161058f565b606435906001600160401b0382116105a05761213b610a5c61250561214a936124c261151c963690600401610f0f565b9390604051948593636a7229a760e11b602086015260018060a01b03166024850152602435604485015260443560648501526080608485015260a48401916146f0565b614a17565b346105a0576125183661096e565b9592809594959291924211610a9757610019966125b393610a7f93610a72878a610a6a8b610a5c610a779961254c86613a65565b60405195869460208601988991959493909260c09360e08401977f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e26685526000602086015260018060a01b038092166040860152166060840152608083015260a08201520152565b613ae0565b346105a05760003660031901126105a057600b546040516001600160a01b039091168152602090f35b346105a05760003660031901126105a0576021546040516001600160a01b039091168152602090f35b346105a057602061060961261d366105a5565b6001600160a01b0391821660009081526002855260408082209290931681526020919091522090565b346105a05760003660031901126105a0576009546040516001600160a01b039091168152602090f35b346105a05760003660031901126105a0576020601d54604051908152f35b346105a05760003660031901126105a0576006546040516001600160a01b039091168152602090f35b346105a05760803660031901126105a0576001600160401b036004358181116105a0576126e7903690600401611997565b906024358381116105a057612700903690600401611997565b906044358581116105a057612719903690600401611997565b9290916064359687116105a057612737610019973690600401611997565b9690956147dc565b346105a05760603660031901126105a05760043561275c8161058f565b604435906001600160401b0382116105a05761213b610a5c61250561214a9361278c61151c963690600401610f0f565b93906040519485936301cfadbd60e71b602086015260018060a01b0316602485015260243560448501526060606485015260848401916146f0565b346105a05760a03660031901126105a0576100196004356127e78161058f565b602435906127f48261058f565b604435906128018261063b565b604051926374d2492960e11b602085015260018060a01b03809216602485015216604483015215156064820152606435608482015260843560a482015260a481526120b48161142f565b346105a05760003660031901126105a0576020601f54604051908152f35b346105a05760003660031901126105a0576020600c54604051908152f35b346105a05760203660031901126105a0576004356128a48161058f565b6005546001600160a01b0391906128be90831633146129c4565b816021549116809282167ffb4fd7114609dd603b57adbc2082205bfbbcabf9265c4b437b472f5c592b8cd7600080a36001600160a01b03191617602155005b346105a05760003660031901126105a0576034546040516001600160a01b039091168152602090f35b346105a05760003660031901126105a0576020602854604051908152f35b346105a05760403660031901126105a0576004356024359061297160018060a01b036005541633146129c4565b602d5481602e54917f1eafaac7ca8c5e231c2378dbf01de74321ec7c0c9b113ecc54b2cbd513ec6b5e6020604051878152a4602d55602e55005b346105a05760003660031901126105a057610019613dc7565b156129cb57565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b601f8111612a1b575050565b600090602c825260208220906020601f850160051c83019410612a59575b601f0160051c01915b828110612a4e57505050565b818155600101612a42565b9092508290612a39565b601f8111612a6f575050565b6000906010825260208220906020601f850160051c83019410612aad575b601f0160051c01915b828110612aa257505050565b818155600101612a96565b9092508290612a8d565b91906001600160401b03811161140f57612adb81612ad6602c546113a4565b612a0f565b6000601f8211600114612b1557819293600092612b0a575b50508160011b916000199060031b1c191617602c55565b013590503880612af3565b602c600052601f198216937f7416c943b4a09859521022fd2e90eac0dd9026dad28fa317782a135f28a8609191805b868110612b7c5750836001959610612b62575b505050811b01602c55565b0135600019600384901b60f8161c19169055388080612b57565b90926020600181928686013581550194019101612b44565b91906001600160401b03811161140f57612bb881612bb36010546113a4565b612a63565b6000601f8211600114612bf257819293600092612be7575b50508160011b916000199060031b1c191617601055565b013590503880612bd0565b6010600052601f198216937f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae67291805b868110612c595750836001959610612c3f575b505050811b01601055565b0135600019600384901b60f8161c19169055388080612c34565b90926020600181928686013581550194019101612c21565b15612c7857565b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881b9bdd081d985b1a59607a1b6044820152606490fd5b15612cb857565b60405162461bcd60e51b815260206004820152602560248201527f4d61726b65743a20636f6c6c61746572616c697a6174696f6e5261746520746f6044820152646f2062696760d81b6064820152608490fd5b15612d1257565b60405162461bcd60e51b815260206004820152603260248201527f4d61726b65743a206c69717569646174696f6e436f6c6c61746572616c697a616044820152711d1a5bdb94985d19481d1bdbc81cdb585b1b60721b6064820152608490fd5b15612d7957565b60405162461bcd60e51b81526020600482015260126024820152714d61726b65743a2073616d6520737461746560701b6044820152606490fd5b634e487b7160e01b600052601160045260246000fd5b90620186a091828102928184041490151715612de157565b612db3565b90670de0b6b3a764000091828102928184041490151715612de157565b81810292918115918404141715612de157565b634e487b7160e01b600052601260045260246000fd5b8115612e36570490565b612e16565b604d8111612de157600a0a90565b91908203918211612de157565b91908201809211612de157565b81810392916000138015828513169184121617612de157565b906509184e72a00091828102928184051490151715612de157565b90670de0b6b3a764000091828102928184051490151715612de157565b818102929160008212600160ff1b821416612de1578184051490151715612de157565b8115612e3657600160ff1b8114600019831416612de1570590565b600160ff1b8114612de15760000390565b60145491929190612f1e906001600160801b03831690612e03565b9060801c908115612e3657612f4b91612f3c910493601f5490612e03565b612f4583612e3b565b90612e2c565b90818310612fdf57612fb0612faa612fa5612f69612fb59587612e49565b93612fa0612f9a612f91601e54612f8b612f8286612e3b565b60205490612e56565b90612e03565b612f4584612e3b565b91612e3b565b612e63565b612e7c565b91612e97565b612ed7565b6000811215612fd957612fc790612ef2565b905b808211612fd4575090565b905090565b90612fc9565b505050600090565b6001600160a01b038116600090815260176020526040812054919392909180156131595761308590613017613d34565b936130238415156133a0565b60095460209061303b906001600160a01b03166106c5565b600c546001600160a01b038a1660009081526018602052604080822054905163442c159960e01b815260048101939093526024830152604482015294859190829081906064820190565b03915afa928315610d625761313095612f456130e860206130f46130d58a6130d06130c761312a9c6131039a8c9161313c575b50602254620186a09004612f8b565b601e5490612e03565b612e2c565b8551909890612f8b906001600160801b03165b6001600160801b031690565b9301516001600160801b031690565b908282106131345750035b6001600160a01b03909516600090815260186020526040902090565b546133fb565b9091565b91505061310e565b6131539150873d8111610d5b57610d4c818361144a565b386130b8565b505080919250918190565b91908260409103126105a0576020825161317d8161063b565b92015190565b602080825260009160105491613198836113a4565b92838284015260019081811690816000146131fb57506001146131bd575b5050505090565b929350601060005280600020926000935b8585106131e757505050604092500101388080806131b6565b8054858501604001529382019381016131ce565b925050506040935060ff929192191683830152151560051b0101388080806131b6565b6040513d6000823e3d90fd5b1561323157565b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881c985d19481d1bdbc81bdb1960621b6044820152606490fd5b1561327457565b60405162461bcd60e51b81526020600482015260146024820152734d61726b65743a20696e76616c6964207261746560601b6044820152606490fd5b600f546132c5906001600160a01b03166106c5565b6040805163d6d7d52560e01b815292918390816000816132e760048201613183565b03925af18015610d6257600092839161336c575b509082156133475761330e82151561326d565b61331782601155565b817f9f9192b5edb17356c524e08d9e025c8e2f6307e6ea52fb7968faa3081f51c3c8600080a25b61218e42601355565b905061336361335b60135460125490612e56565b42111561322a565b6011549061333e565b905061339091925060403d8111613399575b613388818361144a565b810190613164565b919091386132fb565b503d61337e565b156133a757565b60405162461bcd60e51b815260206004820152601e60248201527f4d61726b65743a2065786368616e676552617465206e6f742076616c696400006044820152606490fd5b908160209103126105a0575190565b613450602083159261340d84156133a0565b600954600c5460405163442c159960e01b81526004810191909152602481019290925260006044830152909283916001600160a01b031690829081906064820190565b03915afa8015610d62576134709160009161348a575b5060225490612e03565b90612e365704620186a0613486601e5483612e03565b0491565b6134a2915060203d8111610d5b57610d4c818361144a565b38613466565b91909160008382019384129112908015821691151617612de157565b906134e86135069161312a8460018060a01b03166000526018602052604060002090565b6001600160a01b039093166000908152601760205260409020909291565b548015612fdf578215612fdf57828110612fdf578181101561359e578261355e61355961356495613554612f459561354a6014549160018060801b03831690612e03565b9060801c90612e2c565b612e49565b612dc9565b92612e49565b613592601b549161358d613584601c549261357f8487612e63565b612eb4565b620186a0900590565b6134a8565b90808212612fd4575090565b505050601b5490565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03161480613698575b15613602577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f000000000000000000000000000000000000000000000000000000000000000082527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a0815261369281611414565b51902090565b507f000000000000000000000000000000000000000000000000000000000000000046146135d9565b6101009081818051810103126105a05760208101516136df8161063b565b6040820151926136ee8461058f565b6060830151946136fd8661058f565b60808401519460a085015160c08601519361371785610963565b60e08701519601516001600160a01b0392831698831696428310610a97576137d9956137cd8a8c610a6a8199610a5c6137d2998f8f6000146137f0577f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e266965b61377f87613a65565b60408051602081019a8b5261ffff909716908701526001600160a01b03978816606087015296909116608085015260a084015260c083019490945260e0820193909352918290610100820190565b613863565b1614613817565b156137e75761218e92613ae0565b61218e92613a8d565b7f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d696613776565b1561381e57565b60405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152606490fd5b916105ca9391610a7793613997565b6005111561134757565b61388581613872565b8061388d5750565b61389681613872565b600181036138de5760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b6044820152606490fd5b6138e781613872565b600281036139345760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606490fd5b80613940600392613872565b1461394757565b60405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608490fd5b9291906fa2a8918ca85bafe22016d0b997e4df60600160ff1b038311613a035791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa15610d625781516001600160a01b038116156139fd579190565b50600190565b50505050600090600390565b613a176135a7565b9060405190602082019261190160f01b84526022830152604282015260428152608081018181106001600160401b0382111761140f5760405251902090565b6000198114612de15760010190565b6001600160a01b03166000908152600460205260409020805490613a8882613a56565b905590565b6001600160a01b03908116600081815260036020908152604080832095909416808352949052918220849055907fe50de2333c10a9502fcb1d8ae13a51bbf423153dfc63c2b8997665b32154afc39080a4565b6001600160a01b0390811660008181526002602090815260408083208686168452825290912091937f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259391928690556040519586521693a3565b908160209103126105a057516105ca8161058f565b60265460ff16613c9c576014546001600160801b03168015613c9557600a54613b80906001600160a01b03166106c5565b6040518091631848f2bf60e31b825281600460209384935afa918215610d62576004928291600091613c68575b50604051631a674cc560e11b815293849182906001600160a01b03165afa8015610d6257613bfa92613bec92600092613c4b575b505060295490612e03565b670de0b6b3a7640000900490565b80821015613c4357612f45613c1e9261355e613c19602a548093612e49565b612de6565b612fc760275491613c3e613bec60285492613c398487612e49565b612e03565b612e56565b505060275490565b613c619250803d10610d5b57610d4c818361144a565b3880613be1565b613c889150823d8411613c8e575b613c80818361144a565b810190613b3a565b38613bad565b503d613c76565b5060285490565b600a54600490602090613cb7906001600160a01b03166106c5565b60405163e6abad4960e01b815292839182905afa908115610d6257600091613cdd575090565b6105ca915060203d8111610d5b57610d4c818361144a565b60405190613d02826113f4565b6014546001600160801b038116835260801c6020830152565b6001600160801b039182169082160191908211612de157565b60006020604051613d44816113f4565b82815201526001600160401b03908160255460401c169182420392428411612de1574214613dbc57613db7613c3991670de0b6b3a7640000613dac613d87613cf5565b9660018060801b03958694858a5116906301e13380613da4613b4f565b041690612e03565b041682855116613d1b565b168252565b5090506105ca613cf5565b604051613dd3816113f4565b6025546001600160401b038181809316845260401c16613dfa602084019180835242612e49565b928315613f4d57613e4c613f2492613e3c613e2f613e23613e19613b4f565b6301e13380900490565b6001600160401b031690565b6001600160401b03168452565b8442166001600160401b03169052565b613edf613e8c613bec613e5d613cf5565b8051909790613c3990613e78906001600160801b03166130e8565b612f8b613e2388516001600160401b031690565b8551909590613eb890613eab906001600160801b03808a169116613d1b565b6001600160801b03168252565b805160209091015160801b6001600160801b0319166001600160801b039190911617601455565b613f17816001600160401b038151166025549160206001600160401b0360401b91015160401b169160018060801b0319161717602555565b516001600160401b031690565b16907f7484db546dcd57af0104c73c8a6968dfbaf5767f047cee0dadd0499ad7df81a0600080a3565b50505050565b15613f5a57565b60405162461bcd60e51b815260206004820152601860248201527710908e881919589d081c985d195cc81b9bdd081d985b1a5960421b6044820152606490fd5b15613fa157565b60405162461bcd60e51b815260206004820152601b60248201527f42423a206d617820646562742072617465206e6f742076616c696400000000006044820152606490fd5b9291906004600c5460206140046106c5600a5460018060a01b031690565b6040516364cfdbb760e11b815293849182905afa908115610d625761403e92600092610d3257501460ff8019602654169115151617602655565b61404d610c0260265460ff1690565b6140575750505050565b61407e61408392614079614088966028541515806140b5575b61409157602955565b602755565b602855565b602a55565b38808080613f4d565b61409c838610613f53565b6140b0670de0b6b3a7640000841115613f9a565b602955565b506027541515614070565b156140c757565b60405162461bcd60e51b815260206004820152600c60248201526b21211d103130b2103830b4b960a11b6044820152606490fd5b1561410257565b60405162461bcd60e51b815260206004820152603060248201527f42423a206c69717569646174696f6e20636f6c6c61746572616c697a6174696f60448201526f1b881c985d19481b9bdd081d985b1a5960821b6064820152608490fd5b600a80546001600160a01b0319166001600160a01b038316179055909695939492906040519263de40657760e01b8452602093848160048160018060a01b038097165afa908115610d62576141dc918491600091614491575b5060098054919092166001600160a01b03166001600160a01b0319909116179055565b600a54614217906141f5906001600160a01b03166106c5565b600580546001600160a01b0319166001600160a01b0392909216919091179055565b600a546004908590614231906001600160a01b03166106c5565b604051631192124760e11b815292839182905afa928315610d625760049361429892600091614474575b50818c16151580614469575b8061445e575b614276906140c0565b600d8054919092166001600160a01b03166001600160a01b0319909116179055565b600a5484906142af906001600160a01b03166106c5565b6040516386c8e21d60e01b815293849182905afa918215610d625761218e996142ec6143139461430e9361433598600092614441575b5050600e55565b600b80546001600160a01b0319166001600160a01b0392909216919091179055565b600c55565b600f80546001600160a01b0319166001600160a01b0392909216919091179055565b61433d6132b0565b505061434b62015f90601955565b6143556000601a55565b801561443457601e555b801561442757601f555b614378601f54601e54106140fb565b8015614415576022555b61438e62013880601b55565b61439a62015f90601c55565b6143a5612710601d55565b6143b0612ee0602055565b6143bc62015180601255565b6143c66000602d55565b6143d16103e8602e55565b6143e2670d99a8cec7e20000602f55565b6143f3670e27c49886e60000603055565b602180546001600160a01b0319166001600160a01b0392909216919091179055565b50614382670de0b6b3a7640000602255565b5061436962013880612278565b5061435f620124f861229e565b6144579250803d10610d5b57610d4c818361144a565b38806142e5565b50858216151561426d565b508181161515614267565b61448b9150873d8911613c8e57613c80818361144a565b3861425b565b6144a89150873d8911613c8e57613c80818361144a565b386141b9565b6001600160401b03811161140f5760051b60200190565b906144cf826144ae565b6144dc604051918261144a565b82815280926144ed601f19916144ae565b0190602036910137565b90614501826144ae565b61450e604051918261144a565b828152809261451f601f19916144ae565b019060005b82811061453057505050565b806060602080938501015201614524565b634e487b7160e01b600052603260045260246000fd5b91908110156145985760051b81013590601e19813603018212156105a05701908135916001600160401b0383116105a05760200182360381136105a0579190565b614541565b908092918237016000815290565b3d156145d6573d906145bc82611723565b916145ca604051938461144a565b82523d6000602084013e565b606090565b80518210156145985760209160051b010190565b6103e88151116146a6576044815110614673576004810151810190602081602484019303126105a0576024810151906001600160401b0382116105a05701816043820112156105a057602481015161464681611723565b92614654604051948561144a565b818452604482840101116105a0576105ca91604460208501910161146b565b50604051614680816113f4565b60168152754d61726b65743a206e6f2072657475726e206461746160501b602082015290565b506040516146b3816113f4565b60178152764d61726b65743a20726561736f6e20746f6f206c6f6e6760481b602082015290565b91908260409103126105a0576020825192015190565b908060209392818452848401376000828201840152601f01601f1916010190565b91908082526020809201929160005b82811061472e575050505090565b90919293828060019287356147428161058f565b848060a01b03168152019501910192919092614720565b90808352602080930192838260051b850194846000925b858410614781575050505050505090565b9091929394959681810384528735601e19843603018112156105a05783018681019190356001600160401b0381116105a05780360383136105a0576147cb889283926001956146f0565b990194019401929594939190614770565b9295969094969391936040519660209663e5644d8b60e01b888a01528060a48a01608060248c01525260c48901959060005b8982821061487b575050505087850360231990810160448a0152818652936001600160fb1b0382116105a05761487899611971988a98610a5c986148699560051b809284830137018981036003190160648b01520191614711565b92858403016084860152614759565b50565b80849960019394953561488d8161058f565b848060a01b03168152019801910191909161480e565b60405162461bcd60e51b815260206004820152600f60248201526e10908e881b9bdd08185b1b1bddd959608a1b6044820152606490fd5b908160209103126105a057516105ca8161063b565b156148f657565b60405162461bcd60e51b815260206004820152600d60248201526c10908e881b9bdd081d985b1a59609a1b6044820152606490fd5b6032546001600160a01b0316801561498957816000929160208493519201905af4906149556145ab565b911561495d57565b611b6b614969836145ef565b60405162461bcd60e51b815260206004820152918291602483019061148e565b60405162461bcd60e51b815260206004820152601260248201527110908e881b5bd91d5b19481b9bdd081cd95d60721b6044820152606490fd5b6031546001600160a01b0316801561498957816000929160208493519201905af4906149556145ab565b6033546001600160a01b0316801561498957816000929160208493519201905af4906149556145ab565b6034546001600160a01b0316801561498957816000929160208493519201905af4906149556145ab56fea2646970667358221220c1f761866ef15f296d21eb463dccd8cfcee28cb5d98c5d2c1c762ffce1a176a564736f6c63430008120033", + "deployedBytecode": "0x6080604052600436101561001b575b361561001957600080fd5b005b60003560e01c8062a02a201461058a57806302ce728f14610585578063078dfbe714610580578063095ea7b31461057b5780630c4e84f0146105765780630f8b29ea1461057157806318160ddd1461056c5780631c9e379b146105675780631d4d3a5d146105625780631da8bf101461055d5780631fb8f81a1461055857806323b872dd1461055357806325384fd81461054e57806327c811a814610549578063331960ff1461054457806334ce998a1461053f57806334d441d01461053a5780633644e5151461053557806337b6b7b91461053057806338d52e0f1461052b5780633ba0b9a9146105265780633f741adb1461052157806340626d8b1461051c57806344de240a14610517578063473e3ce71461051257806348e4163e1461050d5780634ddf47d4146105085780634e71e0c8146105035780635224372c146104fe578063529898f2146104f9578063542afda3146104f457806357935462146104ef5780635d5f73ef146104ea5780636b19ad16146104e55780636c3d8b8f146104e057806370a08231146104db57806372778547146104d657806374645ff3146104d157806374c9e481146104cc578063790c8467146104c75780637dc0d1d0146104c25780637ecebe00146104bd5780637fa0b84e146104b85780638285ef40146104b357806387b27937146104ae5780638c5d0ed3146104a95780638da5cb5b146104a4578063910dd7c81461049f578063932bc4f81461049a57806399a97028146104955780639e15e89f14610490578063a28e6b821461048b578063a9059cbb14610486578063aa7d966514610481578063af1827c41461047c578063af405b4c14610477578063b0e21e8a14610472578063b25ea8fb1461046d578063b27c0e7414610468578063b7113f1914610463578063bb4cfe3b1461045e578063bde39c5d14610459578063c1ad5c8d14610454578063c861a5261461044f578063c9c7d8371461044a578063cce19f8114610445578063cd0211eb14610440578063ce8849ed1461043b578063d3fb2a3814610436578063d4e4534e14610431578063d505accf1461042c578063d8dfeb4514610427578063da863f0e14610422578063dd62ed3e1461041d578063de40657714610418578063e0996cb614610413578063e30c39781461040e578063e5644d8b14610409578063e7d6de8014610404578063e9a49252146103ff578063ea64dd56146103fa578063eec0f42e146103f5578063ef2b234a146103f0578063f5b33dfa146103eb578063f791395d146103e6578063f88188cb146103e15763f8ba4cff0361000e576129ab565b612944565b612926565b6128fd565b612887565b612869565b61284b565b6127c7565b61273f565b6126b6565b61268d565b61266f565b612646565b61260a565b6125e1565b6125b8565b61250a565b612475565b612190565b61215a565b6120b9565b612065565b611f8d565b611f64565b611f49565b611f2b565b611f0d565b611eea565b611eb9565b611e2d565b611e0f565b611bdd565b611b76565b611a63565b611976565b6118cc565b61188e565b611863565b6117bf565b61173e565b6116fa565b6116dc565b61169f565b61166d565b611643565b611606565b6115dd565b6115bf565b6115a1565b6114c4565b611365565b6112ea565b6112c1565b6112a3565b61127a565b61125c565b61123e565b611221565b6111ae565b6110cc565b610f3c565b610ed2565b610eb4565b610e96565b610e78565b610e54565b610e36565b610e0d565b610def565b610dcc565b610dae565b610d85565b610d67565b610b65565b610b3c565b610b26565b610adc565b6109b3565b61093a565b6108fd565b6108e1565b6108c3565b6107cc565b610788565b610645565b610612565b6105cd565b6001600160a01b038116036105a057565b600080fd5b60409060031901126105a0576004356105bd8161058f565b906024356105ca8161058f565b90565b346105a05760206106096105e0366105a5565b6001600160a01b0391821660009081526003855260408082209290931681526020919091522090565b54604051908152f35b346105a05760003660031901126105a057604061062d6132b0565b825191151582526020820152f35b801515036105a057565b346105a05760603660031901126105a0576004356106628161058f565b6024359061066f8261063b565b6044359161067c8361063b565b6005546001600160a01b03919061069690831633146129c4565b1561076f57811691821590811591610767575b501561072a5760055461071892906106d1906001600160a01b03165b6001600160a01b031690565b7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b600680546001600160a01b0319169055005b60405162461bcd60e51b81526020600482015260156024820152744f776e61626c653a207a65726f206164647265737360581b6044820152606490fd5b9050386106a9565b60068054919092166001600160a01b0319909116179055005b346105a05760403660031901126105a0576107b26004356107a88161058f565b6024359033613ae0565b602060405160018152f35b6004359060098210156105a057565b346105a05760403660031901126105a0576107e56107bd565b6024356107f18161063b565b6008546001600160a01b0316330361088757610876826108256108206108196100199661134c565b5460ff1690565b151590565b61083484151591821415612d72565b6108406108198361134c565b6108498361133d565b1515827feeec81de25875ce1725479bb76f720a8defdb43dea041919ae37bb4aae9847c0600080a461134c565b9060ff801983541691151516179055565b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881d5b985d5d1a1bdc9a5e995960621b6044820152606490fd5b346105a05760003660031901126105a0576020602f54604051908152f35b346105a05760003660031901126105a057602060405160008152f35b346105a05760203660031901126105a05760043561091a8161058f565b60018060a01b031660005260186020526020604060002054604051908152f35b346105a05760003660031901126105a057602b546040516001600160a01b039091168152602090f35b60ff8116036105a057565b60e09060031901126105a0576004356109868161058f565b906024356109938161058f565b9060443590606435906084356109a881610963565b9060a4359060c43590565b346105a0576109c13661096e565b9592809594959291924211610a975761001996610a9293610a7f93610a72878a610a6a8b610a5c610a77996109f586613a65565b60405195869460208601988991959493909260c09360e08401977f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d685526000602086015260018060a01b038092166040860152166060840152608083015260a08201520152565b03601f19810183528261144a565b519020613a0f565b613997565b91909161387c565b6001600160a01b03838116911614613817565b613a8d565b60405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b346105a05760003660031901126105a0576020602a54604051908152f35b60609060031901126105a057600435610b128161058f565b90602435610b1f8161058f565b9060443590565b346105a057610b3436610afa565b5050506148a3565b346105a05760003660031901126105a0576032546040516001600160a01b039091168152602090f35b346105a05760803660031901126105a0576004356024356044359060643592610b9960018060a01b036005541633146129c4565b600c54600a5460049190602090610bb8906001600160a01b03166106c5565b6040516364cfdbb760e11b815293849182905afa908115610d6257610bf392600092610d32575b501460ff8019602654169115151617602655565b610c06610c0260265460ff1690565b1590565b610c0c57005b610c14613dc7565b80610ced575b5080610ca8575b5080610c70575b5080610c3057005b80610c42620186a061001993106148ef565b806020547f1f1d0e9e5e3fd195010504141e7472fc7f53e44d7cd3f236f0892778039c6326600080a3602055565b80610ca2916029547fd00c912c9d1f75ac893827b7bb73eb82874daea46c2eaa6d2bd89f0c8ee57366600080a3602955565b38610c28565b610ce790610cb960285482116148ef565b806027547f5391ae26cacff12a54d10d45f0f04678de8bb9c9b2f784eb7074dac7cc0f8fd9600080a3602755565b38610c21565b610d2c90610cfe60275482106148ef565b806028547fa54af2279046b0207f426565497319c4e274479ce71cb53598ec2391459be3f3600080a3602855565b38610c1a565b610d5491925060203d8111610d5b575b610d4c818361144a565b8101906133ec565b9038610bdf565b503d610d42565b61321e565b346105a05760003660031901126105a0576020601354604051908152f35b346105a05760003660031901126105a0576014546040516001600160801b039091168152602090f35b346105a05760003660031901126105a0576020601954604051908152f35b346105a05760003660031901126105a0576020610de76135a7565b604051908152f35b346105a05760003660031901126105a0576020601254604051908152f35b346105a05760003660031901126105a057600d546040516001600160a01b039091168152602090f35b346105a05760003660031901126105a0576020601154604051908152f35b346105a05760603660031901126105a0576020610de7604435602435600435612f03565b346105a05760003660031901126105a0576020601654604051908152f35b346105a05760003660031901126105a0576020600e54604051908152f35b346105a05760003660031901126105a0576020601554604051908152f35b346105a05760203660031901126105a057600435610eef8161058f565b60018060a01b031660005260176020526020604060002054604051908152f35b9181601f840112156105a0578235916001600160401b0383116105a057602083818601950101116105a057565b346105a05760203660031901126105a0576004356001600160401b0381116105a057610f6c903690600401610f0f565b60ff60235416611091578161020091810103126105a05780611060610f9361107f93612183565b610f9f60208401612183565b90610fac60408501612183565b610fb860608601612183565b92611040610fc860808801612183565b92610fd560a08901612183565b92610fe260e08a01612183565b95610ff06101e08b01612183565b603180546001600160a01b03199081166001600160a01b03948516179091556033805482169584169590951790945560328054851693831693909317909255603480549093169716969096179055565b6101c0860135926101a0870135926101008801359260c089013591614160565b6101808101359061016081013590610120610140820135910135613fe6565b610019600160ff196023541617602355565b60405162461bcd60e51b815260206004820152601360248201527213585c9ad95d0e881a5b9a5d1a585b1a5e9959606a1b6044820152606490fd5b346105a0576000806003193601126111ab576006546001600160a01b031633819003611167576005546111549190819061110e906001600160a01b03166106c5565b7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08580a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b600680546001600160a01b031916905580f35b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b80fd5b346105a0576040611215611206610a5c6112016111ca36610afa565b87516314890dcb60e21b60208201526001600160a01b03938416602482015292909116604483015260648201529182906084820190565b61492b565b602080825183010191016146da565b82519182526020820152f35b346105a05760003660031901126105a05760208054604051908152f35b346105a05760003660031901126105a0576020602d54604051908152f35b346105a05760003660031901126105a0576020601c54604051908152f35b346105a05760003660031901126105a0576031546040516001600160a01b039091168152602090f35b346105a05760003660031901126105a0576020602754604051908152f35b346105a05760003660031901126105a057600a546040516001600160a01b039091168152602090f35b346105a05760203660031901126105a0576004356113078161058f565b60018060a01b031660005260016020526020604060002054604051908152f35b634e487b7160e01b600052602160045260246000fd5b6009111561134757565b611327565b6009811015611347576000526007602052604060002090565b346105a05760203660031901126105a05761137e6107bd565b6009811015611347576000526007602052602060ff604060002054166040519015158152f35b90600182811c921680156113d4575b60208310146113be57565b634e487b7160e01b600052602260045260246000fd5b91607f16916113b3565b634e487b7160e01b600052604160045260246000fd5b604081019081106001600160401b0382111761140f57604052565b6113de565b60c081019081106001600160401b0382111761140f57604052565b60e081019081106001600160401b0382111761140f57604052565b90601f801991011681019081106001600160401b0382111761140f57604052565b60005b83811061147e5750506000910152565b818101518382015260200161146e565b906020916114a78151809281855285808601910161146b565b601f01601f1916010190565b9060206105ca92818152019061148e565b346105a0576000806003193601126111ab57604051816010546114e6816113a4565b808452906001908181169081156115795750600114611520575b61151c846115108188038261144a565b604051918291826114b3565b0390f35b60108352602094507f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae6725b828410611566575050508161151c936115109282010193611500565b805485850187015292850192810161154a565b61151c96506115109450602092508593915060ff191682840152151560051b82010193611500565b346105a05760003660031901126105a0576020602e54604051908152f35b346105a05760003660031901126105a0576020603054604051908152f35b346105a05760003660031901126105a057600f546040516001600160a01b039091168152602090f35b346105a05760203660031901126105a0576004356116238161058f565b60018060a01b031660005260046020526020604060002054604051908152f35b346105a05760403660031901126105a0576107b26004356116638161058f565b6024359033613a8d565b346105a05760003660031901126105a057601454604080516001600160801b038316815260809290921c602083015290f35b346105a05760203660031901126105a0576004356116bc8161058f565b60018060a01b031660005260246020526020604060002054604051908152f35b346105a05760003660031901126105a0576020601b54604051908152f35b346105a05760003660031901126105a0576005546040516001600160a01b039091168152602090f35b6001600160401b03811161140f57601f01601f191660200190565b346105a05760403660031901126105a0576004356001600160401b0381116105a057366023820112156105a057806004013561177981611723565b91611787604051938461144a565b81835236602483830101116105a05781600092602460209301838601378301015260243561ffff811681036105a057610019916136c1565b346105a0576000806003193601126111ab5760405181602c546117e1816113a4565b80845290600190818116908115611579575060011461180a5761151c846115108188038261144a565b602c8352602094507f7416c943b4a09859521022fd2e90eac0dd9026dad28fa317782a135f28a860915b828410611850575050508161151c936115109282010193611500565b8054858501870152928501928101611834565b346105a05760403660031901126105a0576020610de76004356118858161058f565b602435906134c4565b346105a05760403660031901126105a05760606118b96004356118b08161058f565b60243590612fe7565b9060405192835260208301526040820152f35b346105a05760803660031901126105a0576004356118e98161058f565b6024356118f58161058f565b604435906119028261058f565b606435926001600160401b0384116105a057610a5c6119719261192c610019963690600401610f0f565b60405163514735c160e11b60208201526001600160a01b03958616602482015292851660448401529390951660648201526080608482015293849260a48401916146f0565b6149c3565b346105a05760403660031901126105a05761199260043561058f565b6148a3565b9181601f840112156105a0578235916001600160401b0383116105a0576020808501948460051b0101116105a057565b906040820191604081528151809352606081019260208093019060005b818110611a4d57505050818184039101528251908183528083019281808460051b8301019501936000915b848310611a1f5750505050505090565b9091929394958480611a3d600193601f198682030187528a5161148e565b9801930193019194939290611a0f565b82511515865294840194918401916001016119e4565b346105a0576040806003193601126105a057600480356001600160401b0381116105a057611a949036908301611997565b9290602435611aa28161063b565b611aab856144c5565b93611ab5866144f7565b95600090815b818110611ad05786518061151c8b8b836119c7565b8280611add83858a614557565b90611aec8b518093819361459d565b0390305af4611af96145ab565b90801580611b6f575b611b48578291611b23611b2892611b1c611b43968e6145db565b9015159052565b6145ef565b611b32828c6145db565b52611b3d818b6145db565b50613a56565b611abb565b8886611b6b611b56856145ef565b925162461bcd60e51b815292839283016114b3565b0390fd5b5086611b02565b346105a05760403660031901126105a05760043560243590611ba360018060a01b036005541633146129c4565b60305481602f54917f9ba515d5ad02a934b077fb0eba07a4ec79463a8dc735c8b4ad44a434abc8607a6020604051878152a4603055602f55005b346105a0576000806003193601126111ab57611c0460018060a01b036005541633146129c4565b600d54611c19906001600160a01b03166106c5565b604080516370a0823160e01b815230600482015260209390928484602481845afa908115610d6257611c95948392611df0575b50600954611c62906001600160a01b03166106c5565b600e548551638eb22cdd60e01b815260048101919091526024810184905260006044820152958790879081906064820190565b0381845afa958615610d62578496611dd1575b5085611cb9575b8451868152602090f35b845163095ea7b360e01b81526001600160a01b03919091166004820152602481019290925290919085908390604490829085905af1908115610d6257611d5b9584938693611da3575b5050600954611d19906001600160a01b03166106c5565b600e548451634d4d7cbd60e11b8152600481019190915230602482015233604482015260006064820152608481019390935291958692918391829060a4820190565b03925af1928315610d625761151c93611d77575b808080611caf565b611d9690823d8411611d9c575b611d8e818361144a565b8101906146da565b50611d6f565b503d611d84565b81611dc292903d10611dca575b611dba818361144a565b8101906148da565b503880611d02565b503d611db0565b611de9919650873d8911610d5b57610d4c818361144a565b9438611ca8565b611e08919250863d8811610d5b57610d4c818361144a565b9038611c4c565b346105a05760003660031901126105a0576020601a54604051908152f35b346105a05760403660031901126105a057602435611e4a8161058f565b611e5f60018060a01b036005541633146129c4565b60008080808094600435905af1611e746145ab565b5015611e7d5780f35b60405162461bcd60e51b815260206004820152601460248201527321211d103a3930b739b332b9103330b4b632b21760611b6044820152606490fd5b346105a05760003660031901126105a05760406025548151906001600160401b03908181168352831c166020820152f35b346105a05760003660031901126105a057602060ff602654166040519015158152f35b346105a05760003660031901126105a0576020601e54604051908152f35b346105a05760003660031901126105a0576020602954604051908152f35b346105a05760003660031901126105a0576020610de7613b4f565b346105a05760003660031901126105a0576033546040516001600160a01b039091168152602090f35b346105a05760403660031901126105a057600435611faa8161058f565b6024356001600160401b0381116105a057611fc9903690600401610f0f565b909160018060a01b038091611fe3826005541633146129c4565b169081612024575b505080611ff457005b611ffd91612ab7565b7f01ac0e23e087c4b2e9f1a163db44f946de9dd51461fe7a401c523fc8d5db1c29600080a1005b81602b549182167f126a75207b8b11156ec1f4a0ad246f458582451fc5bee4b8a729a1a68886e132600080a36001600160a01b03191617602b553880611feb565b346105a057610019610a5c6120b461207c36610afa565b60405163cce19f8160e01b60208201526001600160a01b03938416602482015292909116604483015260648201529182906084820190565b6149ed565b346105a05760803660031901126105a05761151c61214a61213b6004356120df8161058f565b602435906120ec8261058f565b604435906120f98261063b565b6040519263cd0211eb60e01b602085015260018060a01b0380921660248501521660448301521515606482015260643560848201526084815261120181611414565b602080825183010191016133ec565b6040519081529081906020820190565b346105a05760003660031901126105a0576008546040516001600160a01b039091168152602090f35b359061218e8261058f565b565b346105a0576101603660031901126105a0576004356121ae8161058f565b6024356001600160401b0381116105a0576121cd903690600401610f0f565b916044356121da8161058f565b60643560843560a4359060c4359260e4359461010435966101243598610144359a60018060a01b0392612212846005541633146129c4565b83811661242b575b50806123f6575b50508116908161238e575b505080612370575b5080612352575b5080612335575b508061230b575b50806122e1575b50806122a9575b508061227d575b508061226657005b61001990612278601e54821015612d0b565b601f55565b80612290620186a06122a3931115612c71565b61229e601f54821115612cb1565b601e55565b3861225e565b806122db916016547fae6e0ab3b95f0a53ff9660a390ccedcbbf1f2355dce974a9841af106fddcfaba600080a3601655565b38612257565b806122f3620186a06123059310612c71565b612300601b548211612c71565b601c55565b38612250565b8061231d620186a061232f9310612c71565b61232a601c548210612c71565b601b55565b38612249565b80612347620186a061234c9310612c71565b601d55565b38612242565b80612365620186a061236a931115612c71565b601a55565b3861223b565b80612383620186a0612388931115612c71565b601955565b38612234565b6008546123ef92906123a8906001600160a01b03166106c5565b7f5a62d22209e370e38eea92cfddcd228e656e6ec139243392a760a7769f5877fd600080a3600880546001600160a01b0319166001600160a01b0392909216919091179055565b388061222c565b6123ff91612b94565b7fa6f004921c944d4b8bf6e38462b00f36a58d62495d56b51f571ab78f732c9815600080a13880612221565b600f80546001600160a01b0319166001600160a01b039092169190911790557f0b2d6eb667d0522c3eb86e4288afecae6c11591ffd1345d4d12407e0598bca9b600080a13861221a565b346105a05760803660031901126105a0576004356124928161058f565b606435906001600160401b0382116105a05761213b610a5c61250561214a936124c261151c963690600401610f0f565b9390604051948593636a7229a760e11b602086015260018060a01b03166024850152602435604485015260443560648501526080608485015260a48401916146f0565b614a17565b346105a0576125183661096e565b9592809594959291924211610a9757610019966125b393610a7f93610a72878a610a6a8b610a5c610a779961254c86613a65565b60405195869460208601988991959493909260c09360e08401977f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e26685526000602086015260018060a01b038092166040860152166060840152608083015260a08201520152565b613ae0565b346105a05760003660031901126105a057600b546040516001600160a01b039091168152602090f35b346105a05760003660031901126105a0576021546040516001600160a01b039091168152602090f35b346105a057602061060961261d366105a5565b6001600160a01b0391821660009081526002855260408082209290931681526020919091522090565b346105a05760003660031901126105a0576009546040516001600160a01b039091168152602090f35b346105a05760003660031901126105a0576020601d54604051908152f35b346105a05760003660031901126105a0576006546040516001600160a01b039091168152602090f35b346105a05760803660031901126105a0576001600160401b036004358181116105a0576126e7903690600401611997565b906024358381116105a057612700903690600401611997565b906044358581116105a057612719903690600401611997565b9290916064359687116105a057612737610019973690600401611997565b9690956147dc565b346105a05760603660031901126105a05760043561275c8161058f565b604435906001600160401b0382116105a05761213b610a5c61250561214a9361278c61151c963690600401610f0f565b93906040519485936301cfadbd60e71b602086015260018060a01b0316602485015260243560448501526060606485015260848401916146f0565b346105a05760a03660031901126105a0576100196004356127e78161058f565b602435906127f48261058f565b604435906128018261063b565b604051926374d2492960e11b602085015260018060a01b03809216602485015216604483015215156064820152606435608482015260843560a482015260a481526120b48161142f565b346105a05760003660031901126105a0576020601f54604051908152f35b346105a05760003660031901126105a0576020600c54604051908152f35b346105a05760203660031901126105a0576004356128a48161058f565b6005546001600160a01b0391906128be90831633146129c4565b816021549116809282167ffb4fd7114609dd603b57adbc2082205bfbbcabf9265c4b437b472f5c592b8cd7600080a36001600160a01b03191617602155005b346105a05760003660031901126105a0576034546040516001600160a01b039091168152602090f35b346105a05760003660031901126105a0576020602854604051908152f35b346105a05760403660031901126105a0576004356024359061297160018060a01b036005541633146129c4565b602d5481602e54917f1eafaac7ca8c5e231c2378dbf01de74321ec7c0c9b113ecc54b2cbd513ec6b5e6020604051878152a4602d55602e55005b346105a05760003660031901126105a057610019613dc7565b156129cb57565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b601f8111612a1b575050565b600090602c825260208220906020601f850160051c83019410612a59575b601f0160051c01915b828110612a4e57505050565b818155600101612a42565b9092508290612a39565b601f8111612a6f575050565b6000906010825260208220906020601f850160051c83019410612aad575b601f0160051c01915b828110612aa257505050565b818155600101612a96565b9092508290612a8d565b91906001600160401b03811161140f57612adb81612ad6602c546113a4565b612a0f565b6000601f8211600114612b1557819293600092612b0a575b50508160011b916000199060031b1c191617602c55565b013590503880612af3565b602c600052601f198216937f7416c943b4a09859521022fd2e90eac0dd9026dad28fa317782a135f28a8609191805b868110612b7c5750836001959610612b62575b505050811b01602c55565b0135600019600384901b60f8161c19169055388080612b57565b90926020600181928686013581550194019101612b44565b91906001600160401b03811161140f57612bb881612bb36010546113a4565b612a63565b6000601f8211600114612bf257819293600092612be7575b50508160011b916000199060031b1c191617601055565b013590503880612bd0565b6010600052601f198216937f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae67291805b868110612c595750836001959610612c3f575b505050811b01601055565b0135600019600384901b60f8161c19169055388080612c34565b90926020600181928686013581550194019101612c21565b15612c7857565b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881b9bdd081d985b1a59607a1b6044820152606490fd5b15612cb857565b60405162461bcd60e51b815260206004820152602560248201527f4d61726b65743a20636f6c6c61746572616c697a6174696f6e5261746520746f6044820152646f2062696760d81b6064820152608490fd5b15612d1257565b60405162461bcd60e51b815260206004820152603260248201527f4d61726b65743a206c69717569646174696f6e436f6c6c61746572616c697a616044820152711d1a5bdb94985d19481d1bdbc81cdb585b1b60721b6064820152608490fd5b15612d7957565b60405162461bcd60e51b81526020600482015260126024820152714d61726b65743a2073616d6520737461746560701b6044820152606490fd5b634e487b7160e01b600052601160045260246000fd5b90620186a091828102928184041490151715612de157565b612db3565b90670de0b6b3a764000091828102928184041490151715612de157565b81810292918115918404141715612de157565b634e487b7160e01b600052601260045260246000fd5b8115612e36570490565b612e16565b604d8111612de157600a0a90565b91908203918211612de157565b91908201809211612de157565b81810392916000138015828513169184121617612de157565b906509184e72a00091828102928184051490151715612de157565b90670de0b6b3a764000091828102928184051490151715612de157565b818102929160008212600160ff1b821416612de1578184051490151715612de157565b8115612e3657600160ff1b8114600019831416612de1570590565b600160ff1b8114612de15760000390565b60145491929190612f1e906001600160801b03831690612e03565b9060801c908115612e3657612f4b91612f3c910493601f5490612e03565b612f4583612e3b565b90612e2c565b90818310612fdf57612fb0612faa612fa5612f69612fb59587612e49565b93612fa0612f9a612f91601e54612f8b612f8286612e3b565b60205490612e56565b90612e03565b612f4584612e3b565b91612e3b565b612e63565b612e7c565b91612e97565b612ed7565b6000811215612fd957612fc790612ef2565b905b808211612fd4575090565b905090565b90612fc9565b505050600090565b6001600160a01b038116600090815260176020526040812054919392909180156131595761308590613017613d34565b936130238415156133a0565b60095460209061303b906001600160a01b03166106c5565b600c546001600160a01b038a1660009081526018602052604080822054905163442c159960e01b815260048101939093526024830152604482015294859190829081906064820190565b03915afa928315610d625761313095612f456130e860206130f46130d58a6130d06130c761312a9c6131039a8c9161313c575b50602254620186a09004612f8b565b601e5490612e03565b612e2c565b8551909890612f8b906001600160801b03165b6001600160801b031690565b9301516001600160801b031690565b908282106131345750035b6001600160a01b03909516600090815260186020526040902090565b546133fb565b9091565b91505061310e565b6131539150873d8111610d5b57610d4c818361144a565b386130b8565b505080919250918190565b91908260409103126105a0576020825161317d8161063b565b92015190565b602080825260009160105491613198836113a4565b92838284015260019081811690816000146131fb57506001146131bd575b5050505090565b929350601060005280600020926000935b8585106131e757505050604092500101388080806131b6565b8054858501604001529382019381016131ce565b925050506040935060ff929192191683830152151560051b0101388080806131b6565b6040513d6000823e3d90fd5b1561323157565b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881c985d19481d1bdbc81bdb1960621b6044820152606490fd5b1561327457565b60405162461bcd60e51b81526020600482015260146024820152734d61726b65743a20696e76616c6964207261746560601b6044820152606490fd5b600f546132c5906001600160a01b03166106c5565b6040805163d6d7d52560e01b815292918390816000816132e760048201613183565b03925af18015610d6257600092839161336c575b509082156133475761330e82151561326d565b61331782601155565b817f9f9192b5edb17356c524e08d9e025c8e2f6307e6ea52fb7968faa3081f51c3c8600080a25b61218e42601355565b905061336361335b60135460125490612e56565b42111561322a565b6011549061333e565b905061339091925060403d8111613399575b613388818361144a565b810190613164565b919091386132fb565b503d61337e565b156133a757565b60405162461bcd60e51b815260206004820152601e60248201527f4d61726b65743a2065786368616e676552617465206e6f742076616c696400006044820152606490fd5b908160209103126105a0575190565b613450602083159261340d84156133a0565b600954600c5460405163442c159960e01b81526004810191909152602481019290925260006044830152909283916001600160a01b031690829081906064820190565b03915afa8015610d62576134709160009161348a575b5060225490612e03565b90612e365704620186a0613486601e5483612e03565b0491565b6134a2915060203d8111610d5b57610d4c818361144a565b38613466565b91909160008382019384129112908015821691151617612de157565b906134e86135069161312a8460018060a01b03166000526018602052604060002090565b6001600160a01b039093166000908152601760205260409020909291565b548015612fdf578215612fdf57828110612fdf578181101561359e578261355e61355961356495613554612f459561354a6014549160018060801b03831690612e03565b9060801c90612e2c565b612e49565b612dc9565b92612e49565b613592601b549161358d613584601c549261357f8487612e63565b612eb4565b620186a0900590565b6134a8565b90808212612fd4575090565b505050601b5490565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03161480613698575b15613602577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f000000000000000000000000000000000000000000000000000000000000000082527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a0815261369281611414565b51902090565b507f000000000000000000000000000000000000000000000000000000000000000046146135d9565b6101009081818051810103126105a05760208101516136df8161063b565b6040820151926136ee8461058f565b6060830151946136fd8661058f565b60808401519460a085015160c08601519361371785610963565b60e08701519601516001600160a01b0392831698831696428310610a97576137d9956137cd8a8c610a6a8199610a5c6137d2998f8f6000146137f0577f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e266965b61377f87613a65565b60408051602081019a8b5261ffff909716908701526001600160a01b03978816606087015296909116608085015260a084015260c083019490945260e0820193909352918290610100820190565b613863565b1614613817565b156137e75761218e92613ae0565b61218e92613a8d565b7f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d696613776565b1561381e57565b60405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152606490fd5b916105ca9391610a7793613997565b6005111561134757565b61388581613872565b8061388d5750565b61389681613872565b600181036138de5760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b6044820152606490fd5b6138e781613872565b600281036139345760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606490fd5b80613940600392613872565b1461394757565b60405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608490fd5b9291906fa2a8918ca85bafe22016d0b997e4df60600160ff1b038311613a035791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa15610d625781516001600160a01b038116156139fd579190565b50600190565b50505050600090600390565b613a176135a7565b9060405190602082019261190160f01b84526022830152604282015260428152608081018181106001600160401b0382111761140f5760405251902090565b6000198114612de15760010190565b6001600160a01b03166000908152600460205260409020805490613a8882613a56565b905590565b6001600160a01b03908116600081815260036020908152604080832095909416808352949052918220849055907fe50de2333c10a9502fcb1d8ae13a51bbf423153dfc63c2b8997665b32154afc39080a4565b6001600160a01b0390811660008181526002602090815260408083208686168452825290912091937f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259391928690556040519586521693a3565b908160209103126105a057516105ca8161058f565b60265460ff16613c9c576014546001600160801b03168015613c9557600a54613b80906001600160a01b03166106c5565b6040518091631848f2bf60e31b825281600460209384935afa918215610d62576004928291600091613c68575b50604051631a674cc560e11b815293849182906001600160a01b03165afa8015610d6257613bfa92613bec92600092613c4b575b505060295490612e03565b670de0b6b3a7640000900490565b80821015613c4357612f45613c1e9261355e613c19602a548093612e49565b612de6565b612fc760275491613c3e613bec60285492613c398487612e49565b612e03565b612e56565b505060275490565b613c619250803d10610d5b57610d4c818361144a565b3880613be1565b613c889150823d8411613c8e575b613c80818361144a565b810190613b3a565b38613bad565b503d613c76565b5060285490565b600a54600490602090613cb7906001600160a01b03166106c5565b60405163e6abad4960e01b815292839182905afa908115610d6257600091613cdd575090565b6105ca915060203d8111610d5b57610d4c818361144a565b60405190613d02826113f4565b6014546001600160801b038116835260801c6020830152565b6001600160801b039182169082160191908211612de157565b60006020604051613d44816113f4565b82815201526001600160401b03908160255460401c169182420392428411612de1574214613dbc57613db7613c3991670de0b6b3a7640000613dac613d87613cf5565b9660018060801b03958694858a5116906301e13380613da4613b4f565b041690612e03565b041682855116613d1b565b168252565b5090506105ca613cf5565b604051613dd3816113f4565b6025546001600160401b038181809316845260401c16613dfa602084019180835242612e49565b928315613f4d57613e4c613f2492613e3c613e2f613e23613e19613b4f565b6301e13380900490565b6001600160401b031690565b6001600160401b03168452565b8442166001600160401b03169052565b613edf613e8c613bec613e5d613cf5565b8051909790613c3990613e78906001600160801b03166130e8565b612f8b613e2388516001600160401b031690565b8551909590613eb890613eab906001600160801b03808a169116613d1b565b6001600160801b03168252565b805160209091015160801b6001600160801b0319166001600160801b039190911617601455565b613f17816001600160401b038151166025549160206001600160401b0360401b91015160401b169160018060801b0319161717602555565b516001600160401b031690565b16907f7484db546dcd57af0104c73c8a6968dfbaf5767f047cee0dadd0499ad7df81a0600080a3565b50505050565b15613f5a57565b60405162461bcd60e51b815260206004820152601860248201527710908e881919589d081c985d195cc81b9bdd081d985b1a5960421b6044820152606490fd5b15613fa157565b60405162461bcd60e51b815260206004820152601b60248201527f42423a206d617820646562742072617465206e6f742076616c696400000000006044820152606490fd5b9291906004600c5460206140046106c5600a5460018060a01b031690565b6040516364cfdbb760e11b815293849182905afa908115610d625761403e92600092610d3257501460ff8019602654169115151617602655565b61404d610c0260265460ff1690565b6140575750505050565b61407e61408392614079614088966028541515806140b5575b61409157602955565b602755565b602855565b602a55565b38808080613f4d565b61409c838610613f53565b6140b0670de0b6b3a7640000841115613f9a565b602955565b506027541515614070565b156140c757565b60405162461bcd60e51b815260206004820152600c60248201526b21211d103130b2103830b4b960a11b6044820152606490fd5b1561410257565b60405162461bcd60e51b815260206004820152603060248201527f42423a206c69717569646174696f6e20636f6c6c61746572616c697a6174696f60448201526f1b881c985d19481b9bdd081d985b1a5960821b6064820152608490fd5b600a80546001600160a01b0319166001600160a01b038316179055909695939492906040519263de40657760e01b8452602093848160048160018060a01b038097165afa908115610d62576141dc918491600091614491575b5060098054919092166001600160a01b03166001600160a01b0319909116179055565b600a54614217906141f5906001600160a01b03166106c5565b600580546001600160a01b0319166001600160a01b0392909216919091179055565b600a546004908590614231906001600160a01b03166106c5565b604051631192124760e11b815292839182905afa928315610d625760049361429892600091614474575b50818c16151580614469575b8061445e575b614276906140c0565b600d8054919092166001600160a01b03166001600160a01b0319909116179055565b600a5484906142af906001600160a01b03166106c5565b6040516386c8e21d60e01b815293849182905afa918215610d625761218e996142ec6143139461430e9361433598600092614441575b5050600e55565b600b80546001600160a01b0319166001600160a01b0392909216919091179055565b600c55565b600f80546001600160a01b0319166001600160a01b0392909216919091179055565b61433d6132b0565b505061434b62015f90601955565b6143556000601a55565b801561443457601e555b801561442757601f555b614378601f54601e54106140fb565b8015614415576022555b61438e62013880601b55565b61439a62015f90601c55565b6143a5612710601d55565b6143b0612ee0602055565b6143bc62015180601255565b6143c66000602d55565b6143d16103e8602e55565b6143e2670d99a8cec7e20000602f55565b6143f3670e27c49886e60000603055565b602180546001600160a01b0319166001600160a01b0392909216919091179055565b50614382670de0b6b3a7640000602255565b5061436962013880612278565b5061435f620124f861229e565b6144579250803d10610d5b57610d4c818361144a565b38806142e5565b50858216151561426d565b508181161515614267565b61448b9150873d8911613c8e57613c80818361144a565b3861425b565b6144a89150873d8911613c8e57613c80818361144a565b386141b9565b6001600160401b03811161140f5760051b60200190565b906144cf826144ae565b6144dc604051918261144a565b82815280926144ed601f19916144ae565b0190602036910137565b90614501826144ae565b61450e604051918261144a565b828152809261451f601f19916144ae565b019060005b82811061453057505050565b806060602080938501015201614524565b634e487b7160e01b600052603260045260246000fd5b91908110156145985760051b81013590601e19813603018212156105a05701908135916001600160401b0383116105a05760200182360381136105a0579190565b614541565b908092918237016000815290565b3d156145d6573d906145bc82611723565b916145ca604051938461144a565b82523d6000602084013e565b606090565b80518210156145985760209160051b010190565b6103e88151116146a6576044815110614673576004810151810190602081602484019303126105a0576024810151906001600160401b0382116105a05701816043820112156105a057602481015161464681611723565b92614654604051948561144a565b818452604482840101116105a0576105ca91604460208501910161146b565b50604051614680816113f4565b60168152754d61726b65743a206e6f2072657475726e206461746160501b602082015290565b506040516146b3816113f4565b60178152764d61726b65743a20726561736f6e20746f6f206c6f6e6760481b602082015290565b91908260409103126105a0576020825192015190565b908060209392818452848401376000828201840152601f01601f1916010190565b91908082526020809201929160005b82811061472e575050505090565b90919293828060019287356147428161058f565b848060a01b03168152019501910192919092614720565b90808352602080930192838260051b850194846000925b858410614781575050505050505090565b9091929394959681810384528735601e19843603018112156105a05783018681019190356001600160401b0381116105a05780360383136105a0576147cb889283926001956146f0565b990194019401929594939190614770565b9295969094969391936040519660209663e5644d8b60e01b888a01528060a48a01608060248c01525260c48901959060005b8982821061487b575050505087850360231990810160448a0152818652936001600160fb1b0382116105a05761487899611971988a98610a5c986148699560051b809284830137018981036003190160648b01520191614711565b92858403016084860152614759565b50565b80849960019394953561488d8161058f565b848060a01b03168152019801910191909161480e565b60405162461bcd60e51b815260206004820152600f60248201526e10908e881b9bdd08185b1b1bddd959608a1b6044820152606490fd5b908160209103126105a057516105ca8161063b565b156148f657565b60405162461bcd60e51b815260206004820152600d60248201526c10908e881b9bdd081d985b1a59609a1b6044820152606490fd5b6032546001600160a01b0316801561498957816000929160208493519201905af4906149556145ab565b911561495d57565b611b6b614969836145ef565b60405162461bcd60e51b815260206004820152918291602483019061148e565b60405162461bcd60e51b815260206004820152601260248201527110908e881b5bd91d5b19481b9bdd081cd95d60721b6044820152606490fd5b6031546001600160a01b0316801561498957816000929160208493519201905af4906149556145ab565b6033546001600160a01b0316801561498957816000929160208493519201905af4906149556145ab565b6034546001600160a01b0316801561498957816000929160208493519201905af4906149556145ab56fea2646970667358221220c1f761866ef15f296d21eb463dccd8cfcee28cb5d98c5d2c1c762ffce1a176a564736f6c63430008120033", "linkReferences": {}, "deployedLinkReferences": {} } diff --git a/src/artifacts/tapioca-bar/Market.json b/src/artifacts/tapioca-bar/Market.json index 0b56ea80..c60a8e72 100644 --- a/src/artifacts/tapioca-bar/Market.json +++ b/src/artifacts/tapioca-bar/Market.json @@ -91,6 +91,25 @@ "name": "ExchangeRateDurationUpdated", "type": "event" }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "oldVal", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newVal", + "type": "address" + } + ], + "name": "LeverageExecutorSet", + "type": "event" + }, { "anonymous": false, "inputs": [ @@ -592,6 +611,19 @@ "stateMutability": "view", "type": "function" }, + { + "inputs": [], + "name": "leverageExecutor", + "outputs": [ + { + "internalType": "contract ILeverageExecutor", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, { "inputs": [], "name": "liquidationBonusAmount", @@ -903,6 +935,19 @@ "stateMutability": "view", "type": "function" }, + { + "inputs": [ + { + "internalType": "contract ILeverageExecutor", + "name": "_executor", + "type": "address" + } + ], + "name": "setLeverageExecutor", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, { "inputs": [ { diff --git a/src/artifacts/tapioca-bar/SGLBorrow.json b/src/artifacts/tapioca-bar/SGLBorrow.json index 049c627e..acc32297 100644 --- a/src/artifacts/tapioca-bar/SGLBorrow.json +++ b/src/artifacts/tapioca-bar/SGLBorrow.json @@ -123,6 +123,25 @@ "name": "InterestElasticityUpdated", "type": "event" }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "oldVal", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newVal", + "type": "address" + } + ], + "name": "LeverageExecutorSet", + "type": "event" + }, { "anonymous": false, "inputs": [ @@ -1170,6 +1189,19 @@ "stateMutability": "view", "type": "function" }, + { + "inputs": [], + "name": "leverageExecutor", + "outputs": [ + { + "internalType": "contract ILeverageExecutor", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, { "inputs": [], "name": "liquidationBonusAmount", @@ -1593,6 +1625,19 @@ "stateMutability": "nonpayable", "type": "function" }, + { + "inputs": [ + { + "internalType": "contract ILeverageExecutor", + "name": "_executor", + "type": "address" + } + ], + "name": "setLeverageExecutor", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, { "inputs": [ { @@ -1921,8 +1966,8 @@ "type": "function" } ], - "bytecode": "0x6101408060405234620001e5576200001781620001ea565b601381526001602082017f546170696f63612053696e67756c617269747900000000000000000000000000815260206040516200005481620001ea565b8381520192603160f81b845251902091208160e052610100918183524660a0526040519160208301907f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f92838352604085015260608401524660808401523060a084015260a0835260c083019280841060018060401b03851117620001cf5760408490525190206080523060c052610120908152600580546001600160a01b0319163390811790915560007f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a362013880601b5562015f90601c55612710601d55612ee06020557f0bd4060688a1800ae986e4840aebc924bb40b5bf44de4583df2257220b54b77c6026557f7d1dc38e60930664f8cbf495da6556ca091d2f92d6550877750c049864b182306027556161a86028556032602f5561407c928362000207843960805183612b7e015260a05183612c49015260c05183612b48015260e05183612bcd01525182612bf301525181612baa0152f35b634e487b7160e01b600052604160045260246000fd5b600080fd5b604081019081106001600160401b03821117620001cf5760405256fe608060408181526004918236101561001657600080fd5b60009260e08435811c928362a02a20146120cb5750826302ce728f146120a257826306fdde0314611fea578263078dfbe714611ee5578263095ea7b314611eba5782630c4e84f014611da357826318160ddd14611d805782631c9e379b14611d475782631da8bf1014611c8d57826323b872dd14611b05578263313ce56714611ace578263331960ff14611aae57826334d441d014611a8e5782633644e51514611a7057826337b6b7b914611a5057826338d52e0f14611a265782633ba0b9a914611a065782633f741adb146119dd57826340626d8b146119bd57826344de240a1461199d578263473e3ce71461197d57826348e4163e146119445782634d7f2a34146119245782634e71e0c81461186f5782635224372c146117b8578263529898f21461179957826352f353eb14611770578263551402321461174757826355c2ab941461171d57826357935462146116fd5782635dfe04e81461169c5782636c3d8b8f1461167257826370a0823114611639578263727785471461160157826374645ff3146115d45782637dc0d1d0146115aa5782637ecebe00146115735782637fa0b84e14611541578263821226e8146115215782638285ef40146114ed5782638c5d0ed3146114cd5782638da5cb5b146114a3578263910dd7c81461122a578263959916dc1461120a57826395d89b411461115157826399a97028146111205782639c5d7192146111005782639e15e89f146110c4578263a9059cbb14610fe8578263b0e21e8a14610fc8578263b27c0e7414610f8c578263bb4cfe3b14610f6c578263cd0211eb14610b04578263ce8849ed14610ada578263d3fb2a3814610641578263d505accf146104ba5750508063d8dfeb4514610492578063dd62ed3e14610445578063de4065771461041d578063e0996cb6146103ff578063e30c3978146103d7578063ea64dd56146103b9578063eec0f42e1461039b578063f42760b71461037d578063f8ba4cff1461035e578063f9557ccb146103285763ffe04c661461030757600080fd5b346103245781600319360112610324576020906029549051908152f35b5080fd5b503461032457816003193601126103245760245490516001600160801b038216815260809190911c6020820152604090f35b0390f35b823461037a578060031936011261037a57610377613d3e565b80f35b80fd5b5034610324578160031936011261032457602090602a549051908152f35b5034610324578160031936011261032457602090600c549051908152f35b5034610324578160031936011261032457602090601f549051908152f35b503461032457816003193601126103245760065490516001600160a01b039091168152602090f35b5034610324578160031936011261032457602090601d549051908152f35b503461032457816003193601126103245760095490516001600160a01b039091168152602090f35b5034610324578060031936011261032457602091610461612111565b8261046a612127565b6001600160a01b03928316845260028652922091166000908152908352819020549051908152f35b5034610324578160031936011261032457600b5490516001600160a01b039091168152602090f35b8492503461063d576104cb366121a3565b9183949895979342116105fa579161059d916105a5938c8b8b60018060a01b0398898d169a8b93846000528d602052856000209081549161050b83612e9f565b90558c87519560208701977f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e266895260008a890152606088015216608086015260a085015260c084015281830152815261056381612374565b51902061056e612b45565b915190602082019261190160f01b8452602283015260428201526042815261059581612390565b519020612e1a565b919091612d1b565b16036105b75750610377939450612efc565b606490602087519162461bcd60e51b8352820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152fd5b8a5162461bcd60e51b8152602081880152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b8280fd5b5090503461063d5761016036600319011261063d576001600160a01b03813581811690819003610ad6576024916001600160401b038335818111610ad25736602382011215610ad25780860135918211610ad25736858383010111610ad25760443593838516809503610acd576106bd846005541633146123e7565b80610a8f575b508482610911575b505050816108d1575b5050606435806108b9575b50608435806108a1575b5060a4358061088a575b5060c43580610866575b5060e43580610842575b506101043580610811575b5061012435806107a0575b5061014435928361072c578480f35b601e54841061074357505050601f55388080808480f35b608492916020603292519362461bcd60e51b85528401528201527f4d61726b65743a206c69717569646174696f6e436f6c6c61746572616c697a616044820152711d1a5bdb94985d19481d1bdbc81cdb585b1b60721b6064820152fd5b6107af620186a0821115612432565b601f5481116107c157601e553861071d565b506025906020608494519362461bcd60e51b85528401528201527f4d61726b65743a20636f6c6c61746572616c697a6174696f6e5261746520746f6044820152646f2062696760d81b6064820152fd5b806016547fae6e0ab3b95f0a53ff9660a390ccedcbbf1f2355dce974a9841af106fddcfaba8780a360165538610712565b610850620186a08210612432565b61085d601b548211612432565b601c5538610707565b610874620186a08210612432565b610881601c548210612432565b601b55386106fd565b610898620186a08210612432565b601d55386106f3565b6108b0620186a0821115612432565b601a55386106e9565b6108c8620186a0821115612432565b601955386106df565b816008549182167f5a62d22209e370e38eea92cfddcd228e656e6ec139243392a760a7769f5877fd8880a36001600160a01b0319161760085538806106d4565b829161091e601054612256565b601f8111610a1e575b508990601f841160011461098c578a9361097f575b5050508160011b916000199060031b1c1916176010555b7fa6f004921c944d4b8bf6e38462b00f36a58d62495d56b51f571ab78f732c98158680a13880846106cb565b010135905084388061093c565b60108b52601f19841694507f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae67292509087908b60205b8782106109ff57505084600196106109e3575b50505050811b01601055610953565b60001960f88660031b161c1992010135169055388086816109d4565b82850190930135855560019490940193899291820191908101906109c1565b60108b5290925090507f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae672601f840160051c810160208510610a88575b91849391601f8994920160051c01905b818110610a775750610927565b8b8155859450889350600101610a6a565b5080610a5a565b600f80546001600160a01b0319169190911790557f0b2d6eb667d0522c3eb86e4288afecae6c11591ffd1345d4d12407e0598bca9b8880a1386106c3565b600080fd5b8780fd5b8480fd5b5050503461032457816003193601126103245760085490516001600160a01b039091168152602090f35b5083833461032457608036600319011261032457610b20612111565b610b28612127565b90610b31612194565b93606435916001825260209560078752610b5160ff878520541615612f53565b6001600160a01b0385811695909390610bae90610b7030891415612f90565b610b786126d6565b5050610b82613d3e565b610b9387610b8e6134cc565b613768565b905060115460ff610ba789600d541661345e565b1692613615565b8015610f2957610bbe9084613698565b8581526017885286812054808611610f21575b508415610ee6578798610c1a98610bea87610b8e6134cc565b8151601480546001600160801b0319166001600160801b03928316179055909b909290918391905b015116613d19565b87835260178b52888320610c2f8882546124c9565b90558560095416600e54928a5193638eb22cdd60e01b855280828601528c6024860152600160448601528d85606481865afa948515610df2578c918f918897610eb0575b506024548616948915610dfc575060448b60095416935180948193627eeac760e11b8352308884015260248301525afa8015610df25783908790610dc1575b610cbc92506124c9565b8411610d8e5750927fc8e512d8f188ca059984b5853d2bf653da902696b8512785b182b2c813789a6e95928c9592610cfc8d9b9a99965b8284169061383b565b1660018060801b0319602454161760245584841690818352602587528b83206026549081855288528c8420548211600014610d6957505081526025855289812060265482528552808a8120555b5015610d64575080600954165b87519485521692a451908152f35b610d56565b90918352602587528b83209083528652610d878b83209182546124c9565b9055610d49565b8a5162461bcd60e51b81529081018d9052600d60248201526c0a68e987440e8dede40daeac6d609b1b6044820152606490fd5b50508d81813d8311610deb575b610dd881836123ab565b81010312610acd5782610cbc9151610cb2565b503d610dce565b8c513d88823e3d90fd5b9250929050813b15610eac578c51630208d92960e11b81526001600160a01b038a169181019182523060208301526040820193909352606081018690528691839182908490829060800103925af18015610ea257928c9a999895927fc8e512d8f188ca059984b5853d2bf653da902696b8512785b182b2c813789a6e9895928f9895610e8d575b50610cfc90610cf3565b93610e9b610cfc9295612315565b9390610e83565b8b513d87823e3d90fd5b8680fd5b9250955081813d8311610edf575b610ec881836123ab565b81010312610edb578d8c91519538610c73565b8580fd5b503d610ebe565b865162461bcd60e51b8152808a01899052601560248201527453474c3a206e6f7468696e6720746f20726570617960581b6044820152606490fd5b945089610bd1565b875162461bcd60e51b8152808b018a9052601d60248201527f53474c3a20616c6c6f77616e63655368617265206e6f742076616c69640000006044820152606490fd5b50505034610324578160031936011261032457602090601e549051908152f35b50505034610324578160031936011261032457606090602354908051916001600160401b03808216845281831c16602084015260801c90820152f35b50505034610324578160031936011261032457602090601a549051908152f35b50505034610324578060031936011261032457602091611006612111565b826024359283158015906110b2575b611045575b50519182526001600160a01b0316903390600080516020614027833981519152908590a35160018152f35b338152600186528181205461105c85821015612c6f565b6001600160a01b038416908533839003611079575b50505061101a565b61108d91611088841515612cb4565b6124c9565b33835260018852838320558152206110a68382546124d6565b90558238808085611071565b50336001600160a01b03841614611015565b505050346103245780600319360112610324576060906110ee6110e5612111565b60243590612615565b91929081519384526020840152820152f35b50505034610324578160031936011261032457602090602b549051908152f35b5050503461032457806003193601126103245760209061114a611141612111565b60243590612a13565b9051908152f35b5090503461063d578260031936011261063d5791808061035a9460018060a01b03600b541690855160208101916395d89b4160e01b835281526111938161233e565b51915afa61119f61342e565b9150156111fb576111af90613eb5565b905b6111e960238251809462746d2d60e81b60208301526111d9815180926020868601910161213d565b81010360038101855201836123ab565b51918291602083526020830190612160565b50611204613e5e565b906111b1565b50505034610324578160031936011261032457602090602f549051908152f35b8491843461149f578060031936011261149f578135926001600160401b038411610ad65736602385011215610ad6578383013592611267846123cc565b94611274845196876123ab565b8486528660209182880196366024828401011161063d578060248593018937880101526024359361ffff8516809503610ad25761010095868880518101031261149b576112c0906126c9565b936112cc828901612cf9565b906112d960608a01612cf9565b9860808101519860a0820151926112f260c08401612d0d565b91818401519301519360018060a01b03808097169d169a81421161145857928d8f819897948f948f8f968f918f959a8f8c81956113ce9f9c61059d9f50600014611431577f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e2669a5b82528952209384549461136b86612e9f565b905580519788019889528701528d6060870152608086015260a085015260c084015281830152815261139c81612374565b5190206113a7612b45565b908951908b82019261190160f01b8452602283015260428201526042815261059581612390565b16036113f0575050506000146113e75761037792612efc565b61037792612eae565b5162461bcd60e51b815291820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e61747572650000604482015260649150fd5b7f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d69a611359565b875162461bcd60e51b8152808b018a9052601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b8880fd5b8380fd5b5050503461032457816003193601126103245760055490516001600160a01b039091168152602090f35b50505034610324578160031936011261032457602090601b549051908152f35b5050503461032457816003193601126103245760145490516001600160801b038216815260809190911c6020820152604090f35b50505034610324578160031936011261032457602090602d549051908152f35b5050503461032457806003193601126103245760209061156c611562612111565b6024359033612eae565b5160018152f35b5090503461063d57602036600319011261063d5760209282916001600160a01b0361159c612111565b168252845220549051908152f35b50505034610324578160031936011261032457600f5490516001600160a01b039091168152602090f35b50505034610324578160031936011261032457805161035a916111e9826115fa81612290565b03836123ab565b5090503461063d57602036600319011261063d573591600983101561037a575060ff61162e602093612227565b541690519015158152f35b505050346103245760203660031901126103245760209181906001600160a01b03611662612111565b1681526001845220549051908152f35b50505034610324578160031936011261032457600a5490516001600160a01b039091168152602090f35b505050346103245781600319360112610324576080906116ba61381c565b506116c3613854565b50949593505050508051926001600160401b03808251168552602082015116602085015281600180871b0391015116908301526060820152f35b50505034610324578160031936011261032457602090601c549051908152f35b50505034610324578160031936011261032457602c548151911c6001600160401b03168152602090f35b505050346103245781600319360112610324576020906001600160401b03602c54169051908152f35b505050346103245781600319360112610324576020906001600160401b03602e54169051908152f35b5050503461032457816003193601126103245760209081549051908152f35b5090503461063d576118269061181a60ff84956117ed6117d7366121f2565b9491989093808052600760205220541615612f53565b6117f56126d6565b50506117ff613d3e565b6118146001600160a01b038216301415612f90565b85612fdb565b92909360115490613518565b15611838575082519182526020820152f35b606490602085519162461bcd60e51b8352820152601160248201527013585c9ad95d0e881a5b9cdbdb1d995b9d607a1b6044820152fd5b8482853461063d578260031936011261063d576006546001600160a01b039290918383169190338390036118e1575050806005549384167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08680a36001600160a01b0319928316176005551660065580f35b906020606492519162461bcd60e51b8352820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b505050346103245781600319360112610324576020906028549051908152f35b505050346103245760203660031901126103245760209181906001600160a01b0361196d612111565b1681526017845220549051908152f35b505050346103245781600319360112610324576020906015549051908152f35b50505034610324578160031936011261032457602090600e549051908152f35b505050346103245781600319360112610324576020906016549051908152f35b5082843461037a57606036600319011261037a575061114a6020926044359060243590356124fc565b505050346103245781600319360112610324576020906011549051908152f35b50505034610324578160031936011261032457600d5490516001600160a01b039091168152602090f35b505050346103245781600319360112610324576020906012549051908152f35b5050503461032457816003193601126103245760209061114a612b45565b505050346103245781600319360112610324576020906019549051908152f35b505050346103245781600319360112610324576020906013549051908152f35b50505034610324578160031936011261032457600d546020919060ff90611afd906001600160a01b031661345e565b915191168152f35b5082843461037a57611b16366121f2565b919282611b50575b508351918252602094506001600160a01b03908116921690600080516020614027833981519152908590a35160018152f35b6001600160a01b038481168083526001602090815287842054919892909190611b7b87831015612c6f565b851692838a03611b8f575b50505050611b1e565b898552600283528885203386528352888520549060018201611bf9575b5050928260209960018a94611bd88a8e996110886000805160206140278339815191529c9a1515612cb4565b9285525283832055815220611bee8582546124d6565b905591878080611b86565b878210611c4f57509260209960018a94611bd88a8e9996611c2a826000805160206140278339815191529d9b6124c9565b86895260028552898920338a5285528989205596995050509450509981949650611bac565b895162461bcd60e51b8152908101849052601860248201527745524332303a20616c6c6f77616e636520746f6f206c6f7760401b6044820152606490fd5b8492503461063d57611c9e366121a3565b9397949690928042116105fa57938693611d35938c8c8961059d968e9a8e60018060a01b03809c169c8d948587526020528c87872092835493611ce085612e9f565b905588519660208801987f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d68a528a890152606088015216608086015260a085015260c084015281830152815261056381612374565b16036105b75750610377939450612eae565b505050346103245760203660031901126103245760209181906001600160a01b03611d70612111565b1681526018845220549051908152f35b5050503461032457816003193601126103245760209060245460801c9051908152f35b5090503461063d578160031936011261063d57803590600982101561149f57611dca612185565b6008549093906001600160a01b03163303611e805760ff611dea84612227565b54161515931515938414611e48575050808260ff611e0a611e3894612227565b54161515827feeec81de25875ce1725479bb76f720a8defdb43dea041919ae37bb4aae9847c08780a4612227565b9060ff8019835416911617905580f35b906020606492519162461bcd60e51b835282015260126024820152714d61726b65743a2073616d6520737461746560701b6044820152fd5b906020606492519162461bcd60e51b8352820152601460248201527313585c9ad95d0e881d5b985d5d1a1bdc9a5e995960621b6044820152fd5b5050503461032457806003193601126103245760209061156c611edb612111565b6024359033612efc565b8482853461063d57606036600319011261063d57611f01612111565b91611f0a612185565b91611f13612194565b9260018060a01b03948591611f2d836005541633146123e7565b15611fd1571692831590811591611fc9575b5015611f8e575050806005549283167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08580a36001600160a01b03199182161760055560068054909116905580f35b906020606492519162461bcd60e51b835282015260156024820152744f776e61626c653a207a65726f206164647265737360581b6044820152fd5b905086611f3f565b93505050501660018060a01b0319600654161760065580f35b5090503461063d578260031936011261063d5791808061035a9460018060a01b03600b541690855160208101916306fdde0360e01b8352815261202c8161233e565b51915afa61203861342e565b9150156120935761204890613eb5565b905b6111e960348251809473546170696f63612053696e67756c61726974792d60601b6020830152612083815180926020868601910161213d565b81010360148101855201836123ab565b5061209c613e5e565b9061204a565b83853461037a578060031936011261037a57506120bd6126d6565b825191151582526020820152f35b8590853461063d578060031936011261063d576020926120e9612111565b6120f1612127565b6001600160a01b0391821683526003865283832091168252845220548152f35b600435906001600160a01b0382168203610acd57565b602435906001600160a01b0382168203610acd57565b60005b8381106121505750506000910152565b8181015183820152602001612140565b906020916121798151809281855285808601910161213d565b601f01601f1916010190565b602435908115158203610acd57565b604435908115158203610acd57565b60e0906003190112610acd576001600160a01b03906004358281168103610acd57916024359081168103610acd5790604435906064359060843560ff81168103610acd579060a4359060c43590565b6060906003190112610acd576001600160a01b03906004358281168103610acd57916024359081168103610acd579060443590565b6009811015612240576000526007602052604060002090565b634e487b7160e01b600052602160045260246000fd5b90600182811c92168015612286575b602083101461227057565b634e487b7160e01b600052602260045260246000fd5b91607f1691612265565b601054600092916122a082612256565b9081815260019283811690816000146122fa57506001146122c057505050565b9092935060106000526020928360002092846000945b8386106122e65750505050010190565b8054858701830152940193859082016122d6565b91935050602093945060ff191683830152151560051b010190565b6001600160401b03811161232857604052565b634e487b7160e01b600052604160045260246000fd5b604081019081106001600160401b0382111761232857604052565b606081019081106001600160401b0382111761232857604052565b61010081019081106001600160401b0382111761232857604052565b608081019081106001600160401b0382111761232857604052565b90601f801991011681019081106001600160401b0382111761232857604052565b6001600160401b03811161232857601f01601f191660200190565b156123ee57565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b1561243957565b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881b9bdd081d985b1a59607a1b6044820152606490fd5b8181029291811591840414171561248557565b634e487b7160e01b600052601160045260246000fd5b81156124a5570490565b634e487b7160e01b600052601260045260246000fd5b604d811161248557600a0a90565b9190820391821161248557565b9190820180921161248557565b8181039291600013801582851316918412161761248557565b601454919291612545916125369161252c91612522906001600160801b03831690612472565b9060801c9061249b565b93601f5490612472565b61253f836124bb565b9061249b565b80831061260d5761255961259591846124c9565b9161259061258a612581601e5461257b612572866124bb565b602054906124d6565b90612472565b61253f846124bb565b916124bb565b6124e3565b6509184e72a0009081810291818305149015171561248557670de0b6b3a7640000918281029281840514901517156124855780156124a557600160ff1b91808314600019831416612485570590600082121561260657811461248557600003905b808211612601575090565b905090565b50906125f6565b505050600090565b6001600160a01b0381166000818152601760205260408120549194939290919081156126bd57916040916126996126b1959483602086516126558161233e565b828152015261267386612666613854565b505050505093905061288a565b815190936001600160801b039160209161268f91841690612472565b920151169061249b565b8181106126b557035b9581526018602052205461295c565b9091565b5050806126a2565b50509192505080918190565b51908115158203610acd57565b600f546040805163d6d7d52560e01b8152602060048201529290916001600160a01b031682848061270960248201612290565b0381600080955af1801561283257819482916127f6575b5092841561279957831561275f57507f9f9192b5edb17356c524e08d9e025c8e2f6307e6ea52fb7968faa3081f51c3c883918260115580a25b42601355565b5162461bcd60e51b81526020600482015260146024820152734d61726b65743a20696e76616c6964207261746560601b6044820152606490fd5b919250506127ac601354601254906124d6565b42116127bc575060115490612759565b5162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881c985d19481d1bdbc81bdb1960621b6044820152606490fd5b809550848092503d831161282b575b61280f81836123ab565b8101031261037a576020612822856126c9565b94015138612720565b503d612805565b508251903d90823e3d90fd5b1561284557565b60405162461bcd60e51b815260206004820152601e60248201527f4d61726b65743a2065786368616e676552617465206e6f742076616c696400006044820152606490fd5b61289582151561283e565b60018060a01b036020816009541691600c5490600094168452601882526064604085205491604051948593849263442c159960e01b8452600484015260248301528660448301525afa918215612950578092612918575b50509061291061290761291593620186a06021540490612472565b601e5490612472565b61249b565b90565b9091506020823d8211612948575b81612933602093836123ab565b8101031261037a5750516129106129076128ec565b3d9150612926565b604051903d90823e3d90fd5b61296782151561283e565b602060018060a01b0360095416916064600c54604051948593849263442c159960e01b845260048401526024830152600060448301525afa908115612a07576000916129d4575b50906129106129c09260215490612472565b620186a06129d0601e5483612472565b0491565b906020823d82116129ff575b816129ed602093836123ab565b8101031261037a5750516129106129ae565b3d91506129e0565b6040513d6000823e3d90fd5b6001600160a01b03166000818152601860205260408120549092612a369161295c565b918352601760205260408320548015612b3f578115612b3f57818110612b3f5782811015612b3557601454612a7f91839161108891612522906001600160801b03831690612472565b90620186a09283830292808404851490151715612b2157612aa4929161253f916124c9565b91601b5491601c5493612ab785856124e3565b80820291848212600160ff1b821416612b21578183051490151715612b0d5705818482019485129112908015821691151617612af95750808212612601575090565b634e487b7160e01b81526011600452602490fd5b634e487b7160e01b83526011600452602483fd5b634e487b7160e01b85526011600452602485fd5b50505050601b5490565b50505090565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03161480612c46575b15612ba0577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f000000000000000000000000000000000000000000000000000000000000000082527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a0815260c081018181106001600160401b038211176123285760405251902090565b507f00000000000000000000000000000000000000000000000000000000000000004614612b77565b15612c7657565b60405162461bcd60e51b815260206004820152601660248201527545524332303a2062616c616e636520746f6f206c6f7760501b6044820152606490fd5b15612cbb57565b60405162461bcd60e51b815260206004820152601660248201527545524332303a206e6f207a65726f206164647265737360501b6044820152606490fd5b51906001600160a01b0382168203610acd57565b519060ff82168203610acd57565b60058110156122405780612d2c5750565b60018103612d745760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b6044820152606490fd5b60028103612dc15760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606490fd5b600314612dca57565b60405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608490fd5b9291906fa2a8918ca85bafe22016d0b997e4df60600160ff1b038311612e935791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa15612e865781516001600160a01b03811615612e80579190565b50600190565b50604051903d90823e3d90fd5b50505050600090600390565b60001981146124855760010190565b7fe50de2333c10a9502fcb1d8ae13a51bbf423153dfc63c2b8997665b32154afc360018060a01b038092169160009083825260036020526040822094169384825260205284604082205580a4565b909160207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259160018060a01b03809416938460005260028352604060002095169485600052825280604060002055604051908152a3565b15612f5a57565b60405162461bcd60e51b815260206004820152600e60248201526d13585c9ad95d0e881c185d5cd95960921b6044820152606490fd5b15612f9757565b606460405162461bcd60e51b815260206004820152602060248201527f4d61726b65743a2063616e6e6f742065786563757465206f6e20697473656c666044820152fd5b9190811561342357620186a09283612ff5602f5485612472565b049361302b61300760115496866124d6565b600d546001600160a01b0397919060ff90613023908a1661345e565b169185613615565b80156133d45761303b9083613698565b613047602f5485612472565b04916130516134cc565b9461305c84866124d6565b60409485519061306b8261233e565b60008083526020928301819052895190966001600160801b03949091851661336557996130ef908b906130ea908790816130ab81865b168284511661383b565b168152816130c1818a840196168287511661383b565b169384905251601480546001600160801b0319166001600160801b039390921692909216179055565b613d19565b6016548015908115613356575b501561331857848991168088526017845288882061311b8c82546124d6565b90558851908382528b858301527f3a5151e57d3bc9798e7853034ac52293d1a0e12a2b44725e75b03b21f86477a68a888a1693a4806132f7575b50808360095416976064600e5489519a8b938492638eb22cdd60e01b8452600484015260248301528960448301525afa9687156132ed5785976132be575b5061319c6134f2565b818101916103e8848451161061328a5750906131ec8392836131c6613213968c168284511661374f565b1690819052602480546001600160801b0319166001600160801b03909216919091179055565b51602480546001600160801b03169290911660801b6001600160801b031916919091179055565b6009541690600e5490823b1561149f578451630208d92960e11b81523060048201526001600160a01b0391909116602482015260448101919091526064810185905292919081908490608490829084905af191821561328057505061327757509091565b6126b190612315565b51903d90823e3d90fd5b60649088519062461bcd60e51b82526004820152600e60248201526d14d1d30e881b5a5b881b1a5b5a5d60921b6044820152fd5b9080975081813d83116132e6575b6132d681836123ab565b81010312610ad657519538613193565b503d6132cc565b86513d87823e3d90fd5b83600a54168652600182526133108787209182546124d6565b905538613155565b875162461bcd60e51b815260048101849052601760248201527614d1d30e88189bdc9c9bddc818d85c081c995858da1959604a1b6044820152606490fd5b905084601454161115386130fc565b998a859b8583018781511661337a9083612472565b888551166133879161249b565b9d8e8186511661339691612472565b9151166133a29161249b565b106133bd575b6130ea866130ef93818f94816130ab916130a1565b85806133ca81949e612e9f565b9d935050506133a8565b60405162461bcd60e51b815260206004820152602160248201527f42696742616e673a20616c6c6f77616e63655368617265206e6f742076616c696044820152601960fa1b6064820152608490fd5b505050600090600090565b3d15613459573d9061343f826123cc565b9161344d60405193846123ab565b82523d6000602084013e565b606090565b60008091604051602081019063313ce56760e01b8252600481526134818161233e565b51916001600160a01b03165afa61349661342e565b90806134c1575b156134bb57602081805181010312610acd5760206129159101612d0d565b50601290565b50602081511461349d565b604051906134d98261233e565b6014546001600160801b038116835260801c6020830152565b604051906134ff8261233e565b6024546001600160801b038116835260801c6020830152565b919060018060a01b0380600094168452602060178152604085205490811561360b57601881526040862054801561360457816135526134cc565b9460095416916064600c54604051948593849263442c159960e01b8452600484015260248301528b60448301525afa9687156129505780976135ce575b505061268f6135ae6129076135c9969798620186a06021540490612472565b956135c460018060801b03948587511690612472565b612472565b111590565b9096508187813d83116135fd575b6135e681836123ab565b8101031261037a575094519461268f6135ae61358f565b503d6135dc565b5050505050565b5060019450505050565b61258a9061363585612915969561362f61253f968561288a565b90613655565b6001600160a01b0390911660009081526018602052604090205490612472565b9182158015613690575b61260d57600181018091116124855761367e9261257b612910926124bb565b6005810180911161248557600a900490565b50811561365f565b6001600160a01b03163381036136ac575050565b600081815260209060038252604091828220338352815284838320541061371557838252600381528282203383528152828220546001016136ee575050505050565b613709938252600381528282209033835252209182546124c9565b90553880808080613604565b60649083519062461bcd60e51b82526004820152601460248201527313585c9ad95d0e881b9bdd08185c1c1c9bdd995960621b6044820152fd5b6001600160801b03918216908216039190821161248557565b9190916000602060405161377b8161233e565b82815201526020810180516001600160801b039081166137bf576137b881865b816137ab818a168289511661374f565b168652168284511661374f565b1690529190565b6137d96137cf8285511687612472565b828451169061249b565b94806137f56137eb8486511689612472565b848751169061249b565b10613805575b816137b89161379b565b94816138136137b892612e9f565b969150506137fb565b6040519061382982612359565b60006040838281528260208201520152565b6001600160801b03918216908216019190821161248557565b61385c61381c565b506000602060405161386d8161233e565b8281520152600060206040516138828161233e565b828152015260405161389381612359565b6023546001600160401b03811682526001600160401b038160401c16602083015260801c604082015280916138c66134cc565b916138cf6134f2565b600954600e54825160405163442c159960e01b8152600481018390526001600160801b03909116602482015260006044820181905293959194919391926001600160a01b031690602081606481855afa8015612a0757600090613ce5575b885161394392506001600160801b0316906124d6565b80613cb0575060005b806139646001600160401b03602087015116426124c9565b948515613c86575050426001600160401b031660208a8101919091528801516001600160801b031615613c3c57506020670de0b6b3a76400006139c1856135c48c6001600160401b038d60018060801b0390511691511690612472565b895191900496906001600160801b03906139e090828a1690831661383b565b168952875160405163442c159960e01b815260048101929092526001600160801b031660248201526000604482015291829060649082905afa8015612a0757600090613c08575b8751613a3d92506001600160801b0316906124d6565b92613a6b84612910620186a0613a55601a548a612472565b60208c01516001600160801b0316919004612472565b6040890180519195916001600160801b038088169291613a8e908490831661383b565b16905260208801805190916001600160801b0391613aae9190831661383b565b16905280613bd3575060005b60295490938482811015613b4e57613ad290836124c9565b90670de0b6b3a7640000820291808304670de0b6b3a7640000149015171561248557612910613b26613b20613b126001600160401b0396613b309661249b565b936135c4602d549580612472565b836124d6565b91848d5116612472565b168089526001600160401b03602c5416809110613b4a5750565b8852565b909150602a54808211613b6057505050565b613b69916124c9565b670de0b6b3a7640000810290808204670de0b6b3a76400001490151715612485576001600160401b0391612910613bac613b20613b12613bb595602b549061249b565b848d5116612472565b81602c5460401c16808211613bcb575b50168852565b905038613bc5565b87516001600160801b0316670de0b6b3a764000081810292918084049091149015171561248557613c039161249b565b613aba565b506020813d602011613c34575b81613c22602093836123ab565b81010312610acd57613a3d9051613a27565b3d9150613c15565b9697939450509350506001600160401b038151166001600160401b03602e5416809103613c7a575b509392613c6f6134f2565b926000926000929190565b81526001925038613c64565b975098505050505092505091613c9a6134cc565b91613ca36134f2565b9160009160009190600090565b87516001600160801b0316670de0b6b3a764000081810292918084049091149015171561248557613ce09161249b565b61394c565b506020813d602011613d11575b81613cff602093836123ab565b81010312610acd57613943905161392d565b3d9150613cf2565b601480546001600160801b031660809290921b6001600160801b031916919091179055565b613e22602080613df8613d4f613854565b9396959390929015613e24575050506001600160401b03602e54166000807f33af5ce86e8438eff54589f85332916444457dfa8685493fbd579b809097026b88604051838152a45b805185820151604092830151921b67ffffffffffffffff60401b166001600160401b03919091161760809190911b6001600160801b0319908116919091176023558151601480549092166001600160801b0391821617909155948591610c12565b8051910151821660801b6001600160801b0319166001600160801b03929091169190911617602455565b565b7f33af5ce86e8438eff54589f85332916444457dfa8685493fbd579b809097026b886001600160401b0386511694604051908152a4613d97565b60405190613e6b8261233e565b60038252623f3f3f60e81b6020830152565b908151811015613e8e570160200190565b634e487b7160e01b600052603260045260246000fd5b60ff1660ff81146124855760010190565b805160408110613f2d57508051810190602081818401930312610acd576020810151906001600160401b038211610acd570181603f82011215610acd576020810151613f00816123cc565b92613f0e60405194856123ab565b81845260408284010111610acd5761291591604060208501910161213d565b60209290830361401b576000805b60ff81168581109081613ffc575b5015613f5d57613f5890613ea4565b613f3b565b9260ff80941692613f6d846123cc565b93613f7b60405195866123ab565b808552613f8a601f19916123cc565b013687860137825b85811687811080613fdf575b15613fd457613fcf9190613fc96001600160f81b0319613fbe8388613e7d565b5116871a9188613e7d565b53613ea4565b613f92565b505094505050905090565b506001600160f81b0319613ff38286613e7d565b51161515613f9e565b6001600160f81b031991506140119086613e7d565b5116151538613f49565b915050612915613e5e56feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220457eee7610cc68599fce8b1a9000e3d857d63e416048e92b9d7bd9f8cb2a6a0d64736f6c63430008120033", - "deployedBytecode": "0x608060408181526004918236101561001657600080fd5b60009260e08435811c928362a02a20146120cb5750826302ce728f146120a257826306fdde0314611fea578263078dfbe714611ee5578263095ea7b314611eba5782630c4e84f014611da357826318160ddd14611d805782631c9e379b14611d475782631da8bf1014611c8d57826323b872dd14611b05578263313ce56714611ace578263331960ff14611aae57826334d441d014611a8e5782633644e51514611a7057826337b6b7b914611a5057826338d52e0f14611a265782633ba0b9a914611a065782633f741adb146119dd57826340626d8b146119bd57826344de240a1461199d578263473e3ce71461197d57826348e4163e146119445782634d7f2a34146119245782634e71e0c81461186f5782635224372c146117b8578263529898f21461179957826352f353eb14611770578263551402321461174757826355c2ab941461171d57826357935462146116fd5782635dfe04e81461169c5782636c3d8b8f1461167257826370a0823114611639578263727785471461160157826374645ff3146115d45782637dc0d1d0146115aa5782637ecebe00146115735782637fa0b84e14611541578263821226e8146115215782638285ef40146114ed5782638c5d0ed3146114cd5782638da5cb5b146114a3578263910dd7c81461122a578263959916dc1461120a57826395d89b411461115157826399a97028146111205782639c5d7192146111005782639e15e89f146110c4578263a9059cbb14610fe8578263b0e21e8a14610fc8578263b27c0e7414610f8c578263bb4cfe3b14610f6c578263cd0211eb14610b04578263ce8849ed14610ada578263d3fb2a3814610641578263d505accf146104ba5750508063d8dfeb4514610492578063dd62ed3e14610445578063de4065771461041d578063e0996cb6146103ff578063e30c3978146103d7578063ea64dd56146103b9578063eec0f42e1461039b578063f42760b71461037d578063f8ba4cff1461035e578063f9557ccb146103285763ffe04c661461030757600080fd5b346103245781600319360112610324576020906029549051908152f35b5080fd5b503461032457816003193601126103245760245490516001600160801b038216815260809190911c6020820152604090f35b0390f35b823461037a578060031936011261037a57610377613d3e565b80f35b80fd5b5034610324578160031936011261032457602090602a549051908152f35b5034610324578160031936011261032457602090600c549051908152f35b5034610324578160031936011261032457602090601f549051908152f35b503461032457816003193601126103245760065490516001600160a01b039091168152602090f35b5034610324578160031936011261032457602090601d549051908152f35b503461032457816003193601126103245760095490516001600160a01b039091168152602090f35b5034610324578060031936011261032457602091610461612111565b8261046a612127565b6001600160a01b03928316845260028652922091166000908152908352819020549051908152f35b5034610324578160031936011261032457600b5490516001600160a01b039091168152602090f35b8492503461063d576104cb366121a3565b9183949895979342116105fa579161059d916105a5938c8b8b60018060a01b0398898d169a8b93846000528d602052856000209081549161050b83612e9f565b90558c87519560208701977f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e266895260008a890152606088015216608086015260a085015260c084015281830152815261056381612374565b51902061056e612b45565b915190602082019261190160f01b8452602283015260428201526042815261059581612390565b519020612e1a565b919091612d1b565b16036105b75750610377939450612efc565b606490602087519162461bcd60e51b8352820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152fd5b8a5162461bcd60e51b8152602081880152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b8280fd5b5090503461063d5761016036600319011261063d576001600160a01b03813581811690819003610ad6576024916001600160401b038335818111610ad25736602382011215610ad25780860135918211610ad25736858383010111610ad25760443593838516809503610acd576106bd846005541633146123e7565b80610a8f575b508482610911575b505050816108d1575b5050606435806108b9575b50608435806108a1575b5060a4358061088a575b5060c43580610866575b5060e43580610842575b506101043580610811575b5061012435806107a0575b5061014435928361072c578480f35b601e54841061074357505050601f55388080808480f35b608492916020603292519362461bcd60e51b85528401528201527f4d61726b65743a206c69717569646174696f6e436f6c6c61746572616c697a616044820152711d1a5bdb94985d19481d1bdbc81cdb585b1b60721b6064820152fd5b6107af620186a0821115612432565b601f5481116107c157601e553861071d565b506025906020608494519362461bcd60e51b85528401528201527f4d61726b65743a20636f6c6c61746572616c697a6174696f6e5261746520746f6044820152646f2062696760d81b6064820152fd5b806016547fae6e0ab3b95f0a53ff9660a390ccedcbbf1f2355dce974a9841af106fddcfaba8780a360165538610712565b610850620186a08210612432565b61085d601b548211612432565b601c5538610707565b610874620186a08210612432565b610881601c548210612432565b601b55386106fd565b610898620186a08210612432565b601d55386106f3565b6108b0620186a0821115612432565b601a55386106e9565b6108c8620186a0821115612432565b601955386106df565b816008549182167f5a62d22209e370e38eea92cfddcd228e656e6ec139243392a760a7769f5877fd8880a36001600160a01b0319161760085538806106d4565b829161091e601054612256565b601f8111610a1e575b508990601f841160011461098c578a9361097f575b5050508160011b916000199060031b1c1916176010555b7fa6f004921c944d4b8bf6e38462b00f36a58d62495d56b51f571ab78f732c98158680a13880846106cb565b010135905084388061093c565b60108b52601f19841694507f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae67292509087908b60205b8782106109ff57505084600196106109e3575b50505050811b01601055610953565b60001960f88660031b161c1992010135169055388086816109d4565b82850190930135855560019490940193899291820191908101906109c1565b60108b5290925090507f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae672601f840160051c810160208510610a88575b91849391601f8994920160051c01905b818110610a775750610927565b8b8155859450889350600101610a6a565b5080610a5a565b600f80546001600160a01b0319169190911790557f0b2d6eb667d0522c3eb86e4288afecae6c11591ffd1345d4d12407e0598bca9b8880a1386106c3565b600080fd5b8780fd5b8480fd5b5050503461032457816003193601126103245760085490516001600160a01b039091168152602090f35b5083833461032457608036600319011261032457610b20612111565b610b28612127565b90610b31612194565b93606435916001825260209560078752610b5160ff878520541615612f53565b6001600160a01b0385811695909390610bae90610b7030891415612f90565b610b786126d6565b5050610b82613d3e565b610b9387610b8e6134cc565b613768565b905060115460ff610ba789600d541661345e565b1692613615565b8015610f2957610bbe9084613698565b8581526017885286812054808611610f21575b508415610ee6578798610c1a98610bea87610b8e6134cc565b8151601480546001600160801b0319166001600160801b03928316179055909b909290918391905b015116613d19565b87835260178b52888320610c2f8882546124c9565b90558560095416600e54928a5193638eb22cdd60e01b855280828601528c6024860152600160448601528d85606481865afa948515610df2578c918f918897610eb0575b506024548616948915610dfc575060448b60095416935180948193627eeac760e11b8352308884015260248301525afa8015610df25783908790610dc1575b610cbc92506124c9565b8411610d8e5750927fc8e512d8f188ca059984b5853d2bf653da902696b8512785b182b2c813789a6e95928c9592610cfc8d9b9a99965b8284169061383b565b1660018060801b0319602454161760245584841690818352602587528b83206026549081855288528c8420548211600014610d6957505081526025855289812060265482528552808a8120555b5015610d64575080600954165b87519485521692a451908152f35b610d56565b90918352602587528b83209083528652610d878b83209182546124c9565b9055610d49565b8a5162461bcd60e51b81529081018d9052600d60248201526c0a68e987440e8dede40daeac6d609b1b6044820152606490fd5b50508d81813d8311610deb575b610dd881836123ab565b81010312610acd5782610cbc9151610cb2565b503d610dce565b8c513d88823e3d90fd5b9250929050813b15610eac578c51630208d92960e11b81526001600160a01b038a169181019182523060208301526040820193909352606081018690528691839182908490829060800103925af18015610ea257928c9a999895927fc8e512d8f188ca059984b5853d2bf653da902696b8512785b182b2c813789a6e9895928f9895610e8d575b50610cfc90610cf3565b93610e9b610cfc9295612315565b9390610e83565b8b513d87823e3d90fd5b8680fd5b9250955081813d8311610edf575b610ec881836123ab565b81010312610edb578d8c91519538610c73565b8580fd5b503d610ebe565b865162461bcd60e51b8152808a01899052601560248201527453474c3a206e6f7468696e6720746f20726570617960581b6044820152606490fd5b945089610bd1565b875162461bcd60e51b8152808b018a9052601d60248201527f53474c3a20616c6c6f77616e63655368617265206e6f742076616c69640000006044820152606490fd5b50505034610324578160031936011261032457602090601e549051908152f35b50505034610324578160031936011261032457606090602354908051916001600160401b03808216845281831c16602084015260801c90820152f35b50505034610324578160031936011261032457602090601a549051908152f35b50505034610324578060031936011261032457602091611006612111565b826024359283158015906110b2575b611045575b50519182526001600160a01b0316903390600080516020614027833981519152908590a35160018152f35b338152600186528181205461105c85821015612c6f565b6001600160a01b038416908533839003611079575b50505061101a565b61108d91611088841515612cb4565b6124c9565b33835260018852838320558152206110a68382546124d6565b90558238808085611071565b50336001600160a01b03841614611015565b505050346103245780600319360112610324576060906110ee6110e5612111565b60243590612615565b91929081519384526020840152820152f35b50505034610324578160031936011261032457602090602b549051908152f35b5050503461032457806003193601126103245760209061114a611141612111565b60243590612a13565b9051908152f35b5090503461063d578260031936011261063d5791808061035a9460018060a01b03600b541690855160208101916395d89b4160e01b835281526111938161233e565b51915afa61119f61342e565b9150156111fb576111af90613eb5565b905b6111e960238251809462746d2d60e81b60208301526111d9815180926020868601910161213d565b81010360038101855201836123ab565b51918291602083526020830190612160565b50611204613e5e565b906111b1565b50505034610324578160031936011261032457602090602f549051908152f35b8491843461149f578060031936011261149f578135926001600160401b038411610ad65736602385011215610ad6578383013592611267846123cc565b94611274845196876123ab565b8486528660209182880196366024828401011161063d578060248593018937880101526024359361ffff8516809503610ad25761010095868880518101031261149b576112c0906126c9565b936112cc828901612cf9565b906112d960608a01612cf9565b9860808101519860a0820151926112f260c08401612d0d565b91818401519301519360018060a01b03808097169d169a81421161145857928d8f819897948f948f8f968f918f959a8f8c81956113ce9f9c61059d9f50600014611431577f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e2669a5b82528952209384549461136b86612e9f565b905580519788019889528701528d6060870152608086015260a085015260c084015281830152815261139c81612374565b5190206113a7612b45565b908951908b82019261190160f01b8452602283015260428201526042815261059581612390565b16036113f0575050506000146113e75761037792612efc565b61037792612eae565b5162461bcd60e51b815291820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e61747572650000604482015260649150fd5b7f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d69a611359565b875162461bcd60e51b8152808b018a9052601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b8880fd5b8380fd5b5050503461032457816003193601126103245760055490516001600160a01b039091168152602090f35b50505034610324578160031936011261032457602090601b549051908152f35b5050503461032457816003193601126103245760145490516001600160801b038216815260809190911c6020820152604090f35b50505034610324578160031936011261032457602090602d549051908152f35b5050503461032457806003193601126103245760209061156c611562612111565b6024359033612eae565b5160018152f35b5090503461063d57602036600319011261063d5760209282916001600160a01b0361159c612111565b168252845220549051908152f35b50505034610324578160031936011261032457600f5490516001600160a01b039091168152602090f35b50505034610324578160031936011261032457805161035a916111e9826115fa81612290565b03836123ab565b5090503461063d57602036600319011261063d573591600983101561037a575060ff61162e602093612227565b541690519015158152f35b505050346103245760203660031901126103245760209181906001600160a01b03611662612111565b1681526001845220549051908152f35b50505034610324578160031936011261032457600a5490516001600160a01b039091168152602090f35b505050346103245781600319360112610324576080906116ba61381c565b506116c3613854565b50949593505050508051926001600160401b03808251168552602082015116602085015281600180871b0391015116908301526060820152f35b50505034610324578160031936011261032457602090601c549051908152f35b50505034610324578160031936011261032457602c548151911c6001600160401b03168152602090f35b505050346103245781600319360112610324576020906001600160401b03602c54169051908152f35b505050346103245781600319360112610324576020906001600160401b03602e54169051908152f35b5050503461032457816003193601126103245760209081549051908152f35b5090503461063d576118269061181a60ff84956117ed6117d7366121f2565b9491989093808052600760205220541615612f53565b6117f56126d6565b50506117ff613d3e565b6118146001600160a01b038216301415612f90565b85612fdb565b92909360115490613518565b15611838575082519182526020820152f35b606490602085519162461bcd60e51b8352820152601160248201527013585c9ad95d0e881a5b9cdbdb1d995b9d607a1b6044820152fd5b8482853461063d578260031936011261063d576006546001600160a01b039290918383169190338390036118e1575050806005549384167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08680a36001600160a01b0319928316176005551660065580f35b906020606492519162461bcd60e51b8352820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b505050346103245781600319360112610324576020906028549051908152f35b505050346103245760203660031901126103245760209181906001600160a01b0361196d612111565b1681526017845220549051908152f35b505050346103245781600319360112610324576020906015549051908152f35b50505034610324578160031936011261032457602090600e549051908152f35b505050346103245781600319360112610324576020906016549051908152f35b5082843461037a57606036600319011261037a575061114a6020926044359060243590356124fc565b505050346103245781600319360112610324576020906011549051908152f35b50505034610324578160031936011261032457600d5490516001600160a01b039091168152602090f35b505050346103245781600319360112610324576020906012549051908152f35b5050503461032457816003193601126103245760209061114a612b45565b505050346103245781600319360112610324576020906019549051908152f35b505050346103245781600319360112610324576020906013549051908152f35b50505034610324578160031936011261032457600d546020919060ff90611afd906001600160a01b031661345e565b915191168152f35b5082843461037a57611b16366121f2565b919282611b50575b508351918252602094506001600160a01b03908116921690600080516020614027833981519152908590a35160018152f35b6001600160a01b038481168083526001602090815287842054919892909190611b7b87831015612c6f565b851692838a03611b8f575b50505050611b1e565b898552600283528885203386528352888520549060018201611bf9575b5050928260209960018a94611bd88a8e996110886000805160206140278339815191529c9a1515612cb4565b9285525283832055815220611bee8582546124d6565b905591878080611b86565b878210611c4f57509260209960018a94611bd88a8e9996611c2a826000805160206140278339815191529d9b6124c9565b86895260028552898920338a5285528989205596995050509450509981949650611bac565b895162461bcd60e51b8152908101849052601860248201527745524332303a20616c6c6f77616e636520746f6f206c6f7760401b6044820152606490fd5b8492503461063d57611c9e366121a3565b9397949690928042116105fa57938693611d35938c8c8961059d968e9a8e60018060a01b03809c169c8d948587526020528c87872092835493611ce085612e9f565b905588519660208801987f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d68a528a890152606088015216608086015260a085015260c084015281830152815261056381612374565b16036105b75750610377939450612eae565b505050346103245760203660031901126103245760209181906001600160a01b03611d70612111565b1681526018845220549051908152f35b5050503461032457816003193601126103245760209060245460801c9051908152f35b5090503461063d578160031936011261063d57803590600982101561149f57611dca612185565b6008549093906001600160a01b03163303611e805760ff611dea84612227565b54161515931515938414611e48575050808260ff611e0a611e3894612227565b54161515827feeec81de25875ce1725479bb76f720a8defdb43dea041919ae37bb4aae9847c08780a4612227565b9060ff8019835416911617905580f35b906020606492519162461bcd60e51b835282015260126024820152714d61726b65743a2073616d6520737461746560701b6044820152fd5b906020606492519162461bcd60e51b8352820152601460248201527313585c9ad95d0e881d5b985d5d1a1bdc9a5e995960621b6044820152fd5b5050503461032457806003193601126103245760209061156c611edb612111565b6024359033612efc565b8482853461063d57606036600319011261063d57611f01612111565b91611f0a612185565b91611f13612194565b9260018060a01b03948591611f2d836005541633146123e7565b15611fd1571692831590811591611fc9575b5015611f8e575050806005549283167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08580a36001600160a01b03199182161760055560068054909116905580f35b906020606492519162461bcd60e51b835282015260156024820152744f776e61626c653a207a65726f206164647265737360581b6044820152fd5b905086611f3f565b93505050501660018060a01b0319600654161760065580f35b5090503461063d578260031936011261063d5791808061035a9460018060a01b03600b541690855160208101916306fdde0360e01b8352815261202c8161233e565b51915afa61203861342e565b9150156120935761204890613eb5565b905b6111e960348251809473546170696f63612053696e67756c61726974792d60601b6020830152612083815180926020868601910161213d565b81010360148101855201836123ab565b5061209c613e5e565b9061204a565b83853461037a578060031936011261037a57506120bd6126d6565b825191151582526020820152f35b8590853461063d578060031936011261063d576020926120e9612111565b6120f1612127565b6001600160a01b0391821683526003865283832091168252845220548152f35b600435906001600160a01b0382168203610acd57565b602435906001600160a01b0382168203610acd57565b60005b8381106121505750506000910152565b8181015183820152602001612140565b906020916121798151809281855285808601910161213d565b601f01601f1916010190565b602435908115158203610acd57565b604435908115158203610acd57565b60e0906003190112610acd576001600160a01b03906004358281168103610acd57916024359081168103610acd5790604435906064359060843560ff81168103610acd579060a4359060c43590565b6060906003190112610acd576001600160a01b03906004358281168103610acd57916024359081168103610acd579060443590565b6009811015612240576000526007602052604060002090565b634e487b7160e01b600052602160045260246000fd5b90600182811c92168015612286575b602083101461227057565b634e487b7160e01b600052602260045260246000fd5b91607f1691612265565b601054600092916122a082612256565b9081815260019283811690816000146122fa57506001146122c057505050565b9092935060106000526020928360002092846000945b8386106122e65750505050010190565b8054858701830152940193859082016122d6565b91935050602093945060ff191683830152151560051b010190565b6001600160401b03811161232857604052565b634e487b7160e01b600052604160045260246000fd5b604081019081106001600160401b0382111761232857604052565b606081019081106001600160401b0382111761232857604052565b61010081019081106001600160401b0382111761232857604052565b608081019081106001600160401b0382111761232857604052565b90601f801991011681019081106001600160401b0382111761232857604052565b6001600160401b03811161232857601f01601f191660200190565b156123ee57565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b1561243957565b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881b9bdd081d985b1a59607a1b6044820152606490fd5b8181029291811591840414171561248557565b634e487b7160e01b600052601160045260246000fd5b81156124a5570490565b634e487b7160e01b600052601260045260246000fd5b604d811161248557600a0a90565b9190820391821161248557565b9190820180921161248557565b8181039291600013801582851316918412161761248557565b601454919291612545916125369161252c91612522906001600160801b03831690612472565b9060801c9061249b565b93601f5490612472565b61253f836124bb565b9061249b565b80831061260d5761255961259591846124c9565b9161259061258a612581601e5461257b612572866124bb565b602054906124d6565b90612472565b61253f846124bb565b916124bb565b6124e3565b6509184e72a0009081810291818305149015171561248557670de0b6b3a7640000918281029281840514901517156124855780156124a557600160ff1b91808314600019831416612485570590600082121561260657811461248557600003905b808211612601575090565b905090565b50906125f6565b505050600090565b6001600160a01b0381166000818152601760205260408120549194939290919081156126bd57916040916126996126b1959483602086516126558161233e565b828152015261267386612666613854565b505050505093905061288a565b815190936001600160801b039160209161268f91841690612472565b920151169061249b565b8181106126b557035b9581526018602052205461295c565b9091565b5050806126a2565b50509192505080918190565b51908115158203610acd57565b600f546040805163d6d7d52560e01b8152602060048201529290916001600160a01b031682848061270960248201612290565b0381600080955af1801561283257819482916127f6575b5092841561279957831561275f57507f9f9192b5edb17356c524e08d9e025c8e2f6307e6ea52fb7968faa3081f51c3c883918260115580a25b42601355565b5162461bcd60e51b81526020600482015260146024820152734d61726b65743a20696e76616c6964207261746560601b6044820152606490fd5b919250506127ac601354601254906124d6565b42116127bc575060115490612759565b5162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881c985d19481d1bdbc81bdb1960621b6044820152606490fd5b809550848092503d831161282b575b61280f81836123ab565b8101031261037a576020612822856126c9565b94015138612720565b503d612805565b508251903d90823e3d90fd5b1561284557565b60405162461bcd60e51b815260206004820152601e60248201527f4d61726b65743a2065786368616e676552617465206e6f742076616c696400006044820152606490fd5b61289582151561283e565b60018060a01b036020816009541691600c5490600094168452601882526064604085205491604051948593849263442c159960e01b8452600484015260248301528660448301525afa918215612950578092612918575b50509061291061290761291593620186a06021540490612472565b601e5490612472565b61249b565b90565b9091506020823d8211612948575b81612933602093836123ab565b8101031261037a5750516129106129076128ec565b3d9150612926565b604051903d90823e3d90fd5b61296782151561283e565b602060018060a01b0360095416916064600c54604051948593849263442c159960e01b845260048401526024830152600060448301525afa908115612a07576000916129d4575b50906129106129c09260215490612472565b620186a06129d0601e5483612472565b0491565b906020823d82116129ff575b816129ed602093836123ab565b8101031261037a5750516129106129ae565b3d91506129e0565b6040513d6000823e3d90fd5b6001600160a01b03166000818152601860205260408120549092612a369161295c565b918352601760205260408320548015612b3f578115612b3f57818110612b3f5782811015612b3557601454612a7f91839161108891612522906001600160801b03831690612472565b90620186a09283830292808404851490151715612b2157612aa4929161253f916124c9565b91601b5491601c5493612ab785856124e3565b80820291848212600160ff1b821416612b21578183051490151715612b0d5705818482019485129112908015821691151617612af95750808212612601575090565b634e487b7160e01b81526011600452602490fd5b634e487b7160e01b83526011600452602483fd5b634e487b7160e01b85526011600452602485fd5b50505050601b5490565b50505090565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03161480612c46575b15612ba0577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f000000000000000000000000000000000000000000000000000000000000000082527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a0815260c081018181106001600160401b038211176123285760405251902090565b507f00000000000000000000000000000000000000000000000000000000000000004614612b77565b15612c7657565b60405162461bcd60e51b815260206004820152601660248201527545524332303a2062616c616e636520746f6f206c6f7760501b6044820152606490fd5b15612cbb57565b60405162461bcd60e51b815260206004820152601660248201527545524332303a206e6f207a65726f206164647265737360501b6044820152606490fd5b51906001600160a01b0382168203610acd57565b519060ff82168203610acd57565b60058110156122405780612d2c5750565b60018103612d745760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b6044820152606490fd5b60028103612dc15760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606490fd5b600314612dca57565b60405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608490fd5b9291906fa2a8918ca85bafe22016d0b997e4df60600160ff1b038311612e935791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa15612e865781516001600160a01b03811615612e80579190565b50600190565b50604051903d90823e3d90fd5b50505050600090600390565b60001981146124855760010190565b7fe50de2333c10a9502fcb1d8ae13a51bbf423153dfc63c2b8997665b32154afc360018060a01b038092169160009083825260036020526040822094169384825260205284604082205580a4565b909160207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259160018060a01b03809416938460005260028352604060002095169485600052825280604060002055604051908152a3565b15612f5a57565b60405162461bcd60e51b815260206004820152600e60248201526d13585c9ad95d0e881c185d5cd95960921b6044820152606490fd5b15612f9757565b606460405162461bcd60e51b815260206004820152602060248201527f4d61726b65743a2063616e6e6f742065786563757465206f6e20697473656c666044820152fd5b9190811561342357620186a09283612ff5602f5485612472565b049361302b61300760115496866124d6565b600d546001600160a01b0397919060ff90613023908a1661345e565b169185613615565b80156133d45761303b9083613698565b613047602f5485612472565b04916130516134cc565b9461305c84866124d6565b60409485519061306b8261233e565b60008083526020928301819052895190966001600160801b03949091851661336557996130ef908b906130ea908790816130ab81865b168284511661383b565b168152816130c1818a840196168287511661383b565b169384905251601480546001600160801b0319166001600160801b039390921692909216179055565b613d19565b6016548015908115613356575b501561331857848991168088526017845288882061311b8c82546124d6565b90558851908382528b858301527f3a5151e57d3bc9798e7853034ac52293d1a0e12a2b44725e75b03b21f86477a68a888a1693a4806132f7575b50808360095416976064600e5489519a8b938492638eb22cdd60e01b8452600484015260248301528960448301525afa9687156132ed5785976132be575b5061319c6134f2565b818101916103e8848451161061328a5750906131ec8392836131c6613213968c168284511661374f565b1690819052602480546001600160801b0319166001600160801b03909216919091179055565b51602480546001600160801b03169290911660801b6001600160801b031916919091179055565b6009541690600e5490823b1561149f578451630208d92960e11b81523060048201526001600160a01b0391909116602482015260448101919091526064810185905292919081908490608490829084905af191821561328057505061327757509091565b6126b190612315565b51903d90823e3d90fd5b60649088519062461bcd60e51b82526004820152600e60248201526d14d1d30e881b5a5b881b1a5b5a5d60921b6044820152fd5b9080975081813d83116132e6575b6132d681836123ab565b81010312610ad657519538613193565b503d6132cc565b86513d87823e3d90fd5b83600a54168652600182526133108787209182546124d6565b905538613155565b875162461bcd60e51b815260048101849052601760248201527614d1d30e88189bdc9c9bddc818d85c081c995858da1959604a1b6044820152606490fd5b905084601454161115386130fc565b998a859b8583018781511661337a9083612472565b888551166133879161249b565b9d8e8186511661339691612472565b9151166133a29161249b565b106133bd575b6130ea866130ef93818f94816130ab916130a1565b85806133ca81949e612e9f565b9d935050506133a8565b60405162461bcd60e51b815260206004820152602160248201527f42696742616e673a20616c6c6f77616e63655368617265206e6f742076616c696044820152601960fa1b6064820152608490fd5b505050600090600090565b3d15613459573d9061343f826123cc565b9161344d60405193846123ab565b82523d6000602084013e565b606090565b60008091604051602081019063313ce56760e01b8252600481526134818161233e565b51916001600160a01b03165afa61349661342e565b90806134c1575b156134bb57602081805181010312610acd5760206129159101612d0d565b50601290565b50602081511461349d565b604051906134d98261233e565b6014546001600160801b038116835260801c6020830152565b604051906134ff8261233e565b6024546001600160801b038116835260801c6020830152565b919060018060a01b0380600094168452602060178152604085205490811561360b57601881526040862054801561360457816135526134cc565b9460095416916064600c54604051948593849263442c159960e01b8452600484015260248301528b60448301525afa9687156129505780976135ce575b505061268f6135ae6129076135c9969798620186a06021540490612472565b956135c460018060801b03948587511690612472565b612472565b111590565b9096508187813d83116135fd575b6135e681836123ab565b8101031261037a575094519461268f6135ae61358f565b503d6135dc565b5050505050565b5060019450505050565b61258a9061363585612915969561362f61253f968561288a565b90613655565b6001600160a01b0390911660009081526018602052604090205490612472565b9182158015613690575b61260d57600181018091116124855761367e9261257b612910926124bb565b6005810180911161248557600a900490565b50811561365f565b6001600160a01b03163381036136ac575050565b600081815260209060038252604091828220338352815284838320541061371557838252600381528282203383528152828220546001016136ee575050505050565b613709938252600381528282209033835252209182546124c9565b90553880808080613604565b60649083519062461bcd60e51b82526004820152601460248201527313585c9ad95d0e881b9bdd08185c1c1c9bdd995960621b6044820152fd5b6001600160801b03918216908216039190821161248557565b9190916000602060405161377b8161233e565b82815201526020810180516001600160801b039081166137bf576137b881865b816137ab818a168289511661374f565b168652168284511661374f565b1690529190565b6137d96137cf8285511687612472565b828451169061249b565b94806137f56137eb8486511689612472565b848751169061249b565b10613805575b816137b89161379b565b94816138136137b892612e9f565b969150506137fb565b6040519061382982612359565b60006040838281528260208201520152565b6001600160801b03918216908216019190821161248557565b61385c61381c565b506000602060405161386d8161233e565b8281520152600060206040516138828161233e565b828152015260405161389381612359565b6023546001600160401b03811682526001600160401b038160401c16602083015260801c604082015280916138c66134cc565b916138cf6134f2565b600954600e54825160405163442c159960e01b8152600481018390526001600160801b03909116602482015260006044820181905293959194919391926001600160a01b031690602081606481855afa8015612a0757600090613ce5575b885161394392506001600160801b0316906124d6565b80613cb0575060005b806139646001600160401b03602087015116426124c9565b948515613c86575050426001600160401b031660208a8101919091528801516001600160801b031615613c3c57506020670de0b6b3a76400006139c1856135c48c6001600160401b038d60018060801b0390511691511690612472565b895191900496906001600160801b03906139e090828a1690831661383b565b168952875160405163442c159960e01b815260048101929092526001600160801b031660248201526000604482015291829060649082905afa8015612a0757600090613c08575b8751613a3d92506001600160801b0316906124d6565b92613a6b84612910620186a0613a55601a548a612472565b60208c01516001600160801b0316919004612472565b6040890180519195916001600160801b038088169291613a8e908490831661383b565b16905260208801805190916001600160801b0391613aae9190831661383b565b16905280613bd3575060005b60295490938482811015613b4e57613ad290836124c9565b90670de0b6b3a7640000820291808304670de0b6b3a7640000149015171561248557612910613b26613b20613b126001600160401b0396613b309661249b565b936135c4602d549580612472565b836124d6565b91848d5116612472565b168089526001600160401b03602c5416809110613b4a5750565b8852565b909150602a54808211613b6057505050565b613b69916124c9565b670de0b6b3a7640000810290808204670de0b6b3a76400001490151715612485576001600160401b0391612910613bac613b20613b12613bb595602b549061249b565b848d5116612472565b81602c5460401c16808211613bcb575b50168852565b905038613bc5565b87516001600160801b0316670de0b6b3a764000081810292918084049091149015171561248557613c039161249b565b613aba565b506020813d602011613c34575b81613c22602093836123ab565b81010312610acd57613a3d9051613a27565b3d9150613c15565b9697939450509350506001600160401b038151166001600160401b03602e5416809103613c7a575b509392613c6f6134f2565b926000926000929190565b81526001925038613c64565b975098505050505092505091613c9a6134cc565b91613ca36134f2565b9160009160009190600090565b87516001600160801b0316670de0b6b3a764000081810292918084049091149015171561248557613ce09161249b565b61394c565b506020813d602011613d11575b81613cff602093836123ab565b81010312610acd57613943905161392d565b3d9150613cf2565b601480546001600160801b031660809290921b6001600160801b031916919091179055565b613e22602080613df8613d4f613854565b9396959390929015613e24575050506001600160401b03602e54166000807f33af5ce86e8438eff54589f85332916444457dfa8685493fbd579b809097026b88604051838152a45b805185820151604092830151921b67ffffffffffffffff60401b166001600160401b03919091161760809190911b6001600160801b0319908116919091176023558151601480549092166001600160801b0391821617909155948591610c12565b8051910151821660801b6001600160801b0319166001600160801b03929091169190911617602455565b565b7f33af5ce86e8438eff54589f85332916444457dfa8685493fbd579b809097026b886001600160401b0386511694604051908152a4613d97565b60405190613e6b8261233e565b60038252623f3f3f60e81b6020830152565b908151811015613e8e570160200190565b634e487b7160e01b600052603260045260246000fd5b60ff1660ff81146124855760010190565b805160408110613f2d57508051810190602081818401930312610acd576020810151906001600160401b038211610acd570181603f82011215610acd576020810151613f00816123cc565b92613f0e60405194856123ab565b81845260408284010111610acd5761291591604060208501910161213d565b60209290830361401b576000805b60ff81168581109081613ffc575b5015613f5d57613f5890613ea4565b613f3b565b9260ff80941692613f6d846123cc565b93613f7b60405195866123ab565b808552613f8a601f19916123cc565b013687860137825b85811687811080613fdf575b15613fd457613fcf9190613fc96001600160f81b0319613fbe8388613e7d565b5116871a9188613e7d565b53613ea4565b613f92565b505094505050905090565b506001600160f81b0319613ff38286613e7d565b51161515613f9e565b6001600160f81b031991506140119086613e7d565b5116151538613f49565b915050612915613e5e56feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220457eee7610cc68599fce8b1a9000e3d857d63e416048e92b9d7bd9f8cb2a6a0d64736f6c63430008120033", + "bytecode": "0x6101408060405234620001e5576200001781620001ea565b601381526001602082017f546170696f63612053696e67756c617269747900000000000000000000000000815260206040516200005481620001ea565b8381520192603160f81b845251902091208160e052610100918183524660a0526040519160208301907f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f92838352604085015260608401524660808401523060a084015260a0835260c083019280841060018060401b03851117620001cf5760408490525190206080523060c052610120908152600580546001600160a01b0319163390811790915560007f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a362013880601b5562015f90601c55612710601d55612ee06020557f0bd4060688a1800ae986e4840aebc924bb40b5bf44de4583df2257220b54b77c6027557f7d1dc38e60930664f8cbf495da6556ca091d2f92d6550877750c049864b182306028556161a86029556032603055614120928362000207843960805183612c36015260a05183612d01015260c05183612c00015260e05183612c8501525182612cab01525181612c620152f35b634e487b7160e01b600052604160045260246000fd5b600080fd5b604081019081106001600160401b03821117620001cf5760405256fe608060408181526004918236101561001657600080fd5b60009260e08435811c928362a02a20146121835750826302ce728f1461215a57826306fdde03146120a2578263078dfbe714611f9d578263095ea7b314611f725782630c4e84f014611e5b57826318160ddd14611e385782631c9e379b14611dff5782631da8bf1014611d4557826323b872dd14611bbd578263313ce56714611b86578263331960ff14611b6657826334d441d014611b465782633644e51514611b2857826337b6b7b914611b0857826338d52e0f14611ade5782633ba0b9a914611abe5782633f741adb14611a9557826340626d8b14611a7557826344de240a14611a55578263473e3ce714611a3557826348e4163e146119fc5782634d7f2a34146119dc5782634e71e0c8146119275782635224372c14611870578263529898f21461185157826352f353eb1461182857826355140232146117ff57826355c2ab94146117d557826357935462146117b55782635dfe04e8146117545782636c3d8b8f1461172a57826370a08231146116f157826372778547146116b957826374645ff31461168c5782637dc0d1d0146116625782637ecebe001461162b5782637fa0b84e146115f9578263821226e8146115d95782638285ef40146115a55782638c5d0ed3146115855782638da5cb5b1461155b578263910dd7c8146112e2578263959916dc146112c257826395d89b411461120957826399a97028146111d85782639c5d7192146111b85782639e15e89f1461117c578263a9059cbb146110a0578263b0e21e8a14611080578263b27c0e7414611044578263bb4cfe3b14611024578263cd0211eb14610bbc578263ce8849ed14610b92578263d3fb2a38146106f9578263d505accf1461057657508163d8dfeb451461054d578163da863f0e14610524578163dd62ed3e146104d6578163de406577146104ad578163e0996cb61461048e578163e30c397814610465578163ea64dd5614610446578163eec0f42e14610427578163ef2b234a146103b157508063f42760b714610393578063f8ba4cff14610374578063f9557ccb1461033e5763ffe04c661461031d57600080fd5b3461033a578160031936011261033a57602090602a549051908152f35b5080fd5b503461033a578160031936011261033a5760255490516001600160801b038216815260809190911c6020820152604090f35b0390f35b823461039057806003193601126103905761038d613de2565b80f35b80fd5b503461033a578160031936011261033a57602090602b549051908152f35b83903461033a57602036600319011261033a57356001600160a01b0381811691829003610423576103e78160055416331461249f565b816021549182167ffb4fd7114609dd603b57adbc2082205bfbbcabf9265c4b437b472f5c592b8cd78580a36001600160a01b0319161760215580f35b8280fd5b50503461033a578160031936011261033a57602090600c549051908152f35b50503461033a578160031936011261033a57602090601f549051908152f35b50503461033a578160031936011261033a5760065490516001600160a01b039091168152602090f35b50503461033a578160031936011261033a57602090601d549051908152f35b50503461033a578160031936011261033a5760095490516001600160a01b039091168152602090f35b50503461033a578060031936011261033a576020916104f36121c9565b826104fc6121df565b6001600160a01b03928316845260028652922091166000908152908352819020549051908152f35b50503461033a578160031936011261033a5760215490516001600160a01b039091168152602090f35b50503461033a578160031936011261033a57600b5490516001600160a01b039091168152602090f35b84925034610423576105873661225b565b9183949895979342116106b6579161065991610661938c8b8b60018060a01b0398898d169a8b93846000528d60205285600020908154916105c783612f57565b90558c87519560208701977f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e266895260008a890152606088015216608086015260a085015260c084015281830152815261061f8161242c565b51902061062a612bfd565b915190602082019261190160f01b8452602283015260428201526042815261065181612448565b519020612ed2565b919091612dd3565b1603610673575061038d939450612fb4565b606490602087519162461bcd60e51b8352820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152fd5b8a5162461bcd60e51b8152602081880152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b5090503461042357610160366003190112610423576001600160a01b03813581811690819003610b8e576024916001600160401b038335818111610b8a5736602382011215610b8a5780860135918211610b8a5736858383010111610b8a5760443593838516809503610b85576107758460055416331461249f565b80610b47575b5084826109c9575b50505081610989575b505060643580610971575b5060843580610959575b5060a43580610942575b5060c4358061091e575b5060e435806108fa575b5061010435806108c9575b506101243580610858575b506101443592836107e4578480f35b601e5484106107fb57505050601f55388080808480f35b608492916020603292519362461bcd60e51b85528401528201527f4d61726b65743a206c69717569646174696f6e436f6c6c61746572616c697a616044820152711d1a5bdb94985d19481d1bdbc81cdb585b1b60721b6064820152fd5b610867620186a08211156124ea565b601f54811161087957601e55386107d5565b506025906020608494519362461bcd60e51b85528401528201527f4d61726b65743a20636f6c6c61746572616c697a6174696f6e5261746520746f6044820152646f2062696760d81b6064820152fd5b806016547fae6e0ab3b95f0a53ff9660a390ccedcbbf1f2355dce974a9841af106fddcfaba8780a3601655386107ca565b610908620186a082106124ea565b610915601b5482116124ea565b601c55386107bf565b61092c620186a082106124ea565b610939601c5482106124ea565b601b55386107b5565b610950620186a082106124ea565b601d55386107ab565b610968620186a08211156124ea565b601a55386107a1565b610980620186a08211156124ea565b60195538610797565b816008549182167f5a62d22209e370e38eea92cfddcd228e656e6ec139243392a760a7769f5877fd8880a36001600160a01b03191617600855388061078c565b82916109d660105461230e565b601f8111610ad6575b508990601f8411600114610a44578a93610a37575b5050508160011b916000199060031b1c1916176010555b7fa6f004921c944d4b8bf6e38462b00f36a58d62495d56b51f571ab78f732c98158680a1388084610783565b01013590508438806109f4565b60108b52601f19841694507f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae67292509087908b60205b878210610ab75750508460019610610a9b575b50505050811b01601055610a0b565b60001960f88660031b161c199201013516905538808681610a8c565b8285019093013585556001949094019389929182019190810190610a79565b60108b5290925090507f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae672601f840160051c810160208510610b40575b91849391601f8994920160051c01905b818110610b2f57506109df565b8b8155859450889350600101610b22565b5080610b12565b600f80546001600160a01b0319169190911790557f0b2d6eb667d0522c3eb86e4288afecae6c11591ffd1345d4d12407e0598bca9b8880a13861077b565b600080fd5b8780fd5b8480fd5b5050503461033a578160031936011261033a5760085490516001600160a01b039091168152602090f35b5083833461033a57608036600319011261033a57610bd86121c9565b610be06121df565b90610be961224c565b93606435916001825260209560078752610c0960ff87852054161561300b565b6001600160a01b0385811695909390610c6690610c2830891415613048565b610c3061278e565b5050610c3a613de2565b610c4b87610c4661357a565b613816565b905060115460ff610c5f89600d541661350c565b16926136c3565b8015610fe157610c769084613746565b8581526017885286812054808611610fd9575b508415610f9e578798610cd298610ca287610c4661357a565b8151601480546001600160801b0319166001600160801b03928316179055909b909290918391905b015116613dbd565b87835260178b52888320610ce7888254612581565b90558560095416600e54928a5193638eb22cdd60e01b855280828601528c6024860152600160448601528d85606481865afa948515610eaa578c918f918897610f68575b506025548616948915610eb4575060448b60095416935180948193627eeac760e11b8352308884015260248301525afa8015610eaa5783908790610e79575b610d749250612581565b8411610e465750927fc8e512d8f188ca059984b5853d2bf653da902696b8512785b182b2c813789a6e95928c9592610db48d9b9a99965b828416906138e9565b1660018060801b0319602554161760255584841690818352602687528b83206027549081855288528c8420548211600014610e2157505081526026855289812060275482528552808a8120555b5015610e1c575080600954165b87519485521692a451908152f35b610e0e565b90918352602687528b83209083528652610e3f8b8320918254612581565b9055610e01565b8a5162461bcd60e51b81529081018d9052600d60248201526c0a68e987440e8dede40daeac6d609b1b6044820152606490fd5b50508d81813d8311610ea3575b610e908183612463565b81010312610b855782610d749151610d6a565b503d610e86565b8c513d88823e3d90fd5b9250929050813b15610f64578c51630208d92960e11b81526001600160a01b038a169181019182523060208301526040820193909352606081018690528691839182908490829060800103925af18015610f5a57928c9a999895927fc8e512d8f188ca059984b5853d2bf653da902696b8512785b182b2c813789a6e9895928f9895610f45575b50610db490610dab565b93610f53610db492956123cd565b9390610f3b565b8b513d87823e3d90fd5b8680fd5b9250955081813d8311610f97575b610f808183612463565b81010312610f93578d8c91519538610d2b565b8580fd5b503d610f76565b865162461bcd60e51b8152808a01899052601560248201527453474c3a206e6f7468696e6720746f20726570617960581b6044820152606490fd5b945089610c89565b875162461bcd60e51b8152808b018a9052601d60248201527f53474c3a20616c6c6f77616e63655368617265206e6f742076616c69640000006044820152606490fd5b5050503461033a578160031936011261033a57602090601e549051908152f35b5050503461033a578160031936011261033a57606090602454908051916001600160401b03808216845281831c16602084015260801c90820152f35b5050503461033a578160031936011261033a57602090601a549051908152f35b5050503461033a578060031936011261033a576020916110be6121c9565b8260243592831580159061116a575b6110fd575b50519182526001600160a01b03169033906000805160206140cb833981519152908590a35160018152f35b338152600186528181205461111485821015612d27565b6001600160a01b038416908533839003611131575b5050506110d2565b61114591611140841515612d6c565b612581565b338352600188528383205581522061115e83825461258e565b90558238808085611129565b50336001600160a01b038416146110cd565b5050503461033a578060031936011261033a576060906111a661119d6121c9565b602435906126cd565b91929081519384526020840152820152f35b5050503461033a578160031936011261033a57602090602c549051908152f35b5050503461033a578060031936011261033a576020906112026111f96121c9565b60243590612acb565b9051908152f35b509050346104235782600319360112610423579180806103709460018060a01b03600b541690855160208101916395d89b4160e01b8352815261124b816123f6565b51915afa6112576134dc565b9150156112b35761126790613f59565b905b6112a160238251809462746d2d60e81b602083015261129181518092602086860191016121f5565b8101036003810185520183612463565b51918291602083526020830190612218565b506112bc613f02565b90611269565b5050503461033a578160031936011261033a576020906030549051908152f35b849184346115575780600319360112611557578135926001600160401b038411610b8e5736602385011215610b8e57838301359261131f84612484565b9461132c84519687612463565b84865286602091828801963660248284010111610423578060248593018937880101526024359361ffff8516809503610b8a576101009586888051810103126115535761137890612781565b93611384828901612db1565b9061139160608a01612db1565b9860808101519860a0820151926113aa60c08401612dc5565b91818401519301519360018060a01b03808097169d169a81421161151057928d8f819897948f948f8f968f918f959a8f8c81956114869f9c6106599f506000146114e9577f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e2669a5b82528952209384549461142386612f57565b905580519788019889528701528d6060870152608086015260a085015260c08401528183015281526114548161242c565b51902061145f612bfd565b908951908b82019261190160f01b8452602283015260428201526042815261065181612448565b16036114a85750505060001461149f5761038d92612fb4565b61038d92612f66565b5162461bcd60e51b815291820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e61747572650000604482015260649150fd5b7f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d69a611411565b875162461bcd60e51b8152808b018a9052601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b8880fd5b8380fd5b5050503461033a578160031936011261033a5760055490516001600160a01b039091168152602090f35b5050503461033a578160031936011261033a57602090601b549051908152f35b5050503461033a578160031936011261033a5760145490516001600160801b038216815260809190911c6020820152604090f35b5050503461033a578160031936011261033a57602090602e549051908152f35b5050503461033a578060031936011261033a5760209061162461161a6121c9565b6024359033612f66565b5160018152f35b509050346104235760203660031901126104235760209282916001600160a01b036116546121c9565b168252845220549051908152f35b5050503461033a578160031936011261033a57600f5490516001600160a01b039091168152602090f35b5050503461033a578160031936011261033a578051610370916112a1826116b281612348565b0383612463565b509050346104235760203660031901126104235735916009831015610390575060ff6116e66020936122df565b541690519015158152f35b5050503461033a57602036600319011261033a5760209181906001600160a01b0361171a6121c9565b1681526001845220549051908152f35b5050503461033a578160031936011261033a57600a5490516001600160a01b039091168152602090f35b5050503461033a578160031936011261033a576080906117726138ca565b5061177b613902565b50949593505050508051926001600160401b03808251168552602082015116602085015281600180871b0391015116908301526060820152f35b5050503461033a578160031936011261033a57602090601c549051908152f35b5050503461033a578160031936011261033a57602d548151911c6001600160401b03168152602090f35b5050503461033a578160031936011261033a576020906001600160401b03602d54169051908152f35b5050503461033a578160031936011261033a576020906001600160401b03602f54169051908152f35b5050503461033a578160031936011261033a5760209081549051908152f35b50905034610423576118de906118d260ff84956118a561188f366122aa565b949198909380805260076020522054161561300b565b6118ad61278e565b50506118b7613de2565b6118cc6001600160a01b038216301415613048565b85613093565b929093601154906135c6565b156118f0575082519182526020820152f35b606490602085519162461bcd60e51b8352820152601160248201527013585c9ad95d0e881a5b9cdbdb1d995b9d607a1b6044820152fd5b848285346104235782600319360112610423576006546001600160a01b03929091838316919033839003611999575050806005549384167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08680a36001600160a01b0319928316176005551660065580f35b906020606492519162461bcd60e51b8352820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b5050503461033a578160031936011261033a576020906029549051908152f35b5050503461033a57602036600319011261033a5760209181906001600160a01b03611a256121c9565b1681526017845220549051908152f35b5050503461033a578160031936011261033a576020906015549051908152f35b5050503461033a578160031936011261033a57602090600e549051908152f35b5050503461033a578160031936011261033a576020906016549051908152f35b5082843461039057606036600319011261039057506112026020926044359060243590356125b4565b5050503461033a578160031936011261033a576020906011549051908152f35b5050503461033a578160031936011261033a57600d5490516001600160a01b039091168152602090f35b5050503461033a578160031936011261033a576020906012549051908152f35b5050503461033a578160031936011261033a57602090611202612bfd565b5050503461033a578160031936011261033a576020906019549051908152f35b5050503461033a578160031936011261033a576020906013549051908152f35b5050503461033a578160031936011261033a57600d546020919060ff90611bb5906001600160a01b031661350c565b915191168152f35b5082843461039057611bce366122aa565b919282611c08575b508351918252602094506001600160a01b039081169216906000805160206140cb833981519152908590a35160018152f35b6001600160a01b038481168083526001602090815287842054919892909190611c3387831015612d27565b851692838a03611c47575b50505050611bd6565b898552600283528885203386528352888520549060018201611cb1575b5050928260209960018a94611c908a8e996111406000805160206140cb8339815191529c9a1515612d6c565b9285525283832055815220611ca685825461258e565b905591878080611c3e565b878210611d0757509260209960018a94611c908a8e9996611ce2826000805160206140cb8339815191529d9b612581565b86895260028552898920338a5285528989205596995050509450509981949650611c64565b895162461bcd60e51b8152908101849052601860248201527745524332303a20616c6c6f77616e636520746f6f206c6f7760401b6044820152606490fd5b8492503461042357611d563661225b565b9397949690928042116106b657938693611ded938c8c89610659968e9a8e60018060a01b03809c169c8d948587526020528c87872092835493611d9885612f57565b905588519660208801987f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d68a528a890152606088015216608086015260a085015260c084015281830152815261061f8161242c565b1603610673575061038d939450612f66565b5050503461033a57602036600319011261033a5760209181906001600160a01b03611e286121c9565b1681526018845220549051908152f35b5050503461033a578160031936011261033a5760209060255460801c9051908152f35b50905034610423578160031936011261042357803590600982101561155757611e8261223d565b6008549093906001600160a01b03163303611f385760ff611ea2846122df565b54161515931515938414611f00575050808260ff611ec2611ef0946122df565b54161515827feeec81de25875ce1725479bb76f720a8defdb43dea041919ae37bb4aae9847c08780a46122df565b9060ff8019835416911617905580f35b906020606492519162461bcd60e51b835282015260126024820152714d61726b65743a2073616d6520737461746560701b6044820152fd5b906020606492519162461bcd60e51b8352820152601460248201527313585c9ad95d0e881d5b985d5d1a1bdc9a5e995960621b6044820152fd5b5050503461033a578060031936011261033a57602090611624611f936121c9565b6024359033612fb4565b8482853461042357606036600319011261042357611fb96121c9565b91611fc261223d565b91611fcb61224c565b9260018060a01b03948591611fe58360055416331461249f565b15612089571692831590811591612081575b5015612046575050806005549283167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08580a36001600160a01b03199182161760055560068054909116905580f35b906020606492519162461bcd60e51b835282015260156024820152744f776e61626c653a207a65726f206164647265737360581b6044820152fd5b905086611ff7565b93505050501660018060a01b0319600654161760065580f35b509050346104235782600319360112610423579180806103709460018060a01b03600b541690855160208101916306fdde0360e01b835281526120e4816123f6565b51915afa6120f06134dc565b91501561214b5761210090613f59565b905b6112a160348251809473546170696f63612053696e67756c61726974792d60601b602083015261213b81518092602086860191016121f5565b8101036014810185520183612463565b50612154613f02565b90612102565b8385346103905780600319360112610390575061217561278e565b825191151582526020820152f35b859085346104235780600319360112610423576020926121a16121c9565b6121a96121df565b6001600160a01b0391821683526003865283832091168252845220548152f35b600435906001600160a01b0382168203610b8557565b602435906001600160a01b0382168203610b8557565b60005b8381106122085750506000910152565b81810151838201526020016121f8565b90602091612231815180928185528580860191016121f5565b601f01601f1916010190565b602435908115158203610b8557565b604435908115158203610b8557565b60e0906003190112610b85576001600160a01b03906004358281168103610b8557916024359081168103610b855790604435906064359060843560ff81168103610b85579060a4359060c43590565b6060906003190112610b85576001600160a01b03906004358281168103610b8557916024359081168103610b85579060443590565b60098110156122f8576000526007602052604060002090565b634e487b7160e01b600052602160045260246000fd5b90600182811c9216801561233e575b602083101461232857565b634e487b7160e01b600052602260045260246000fd5b91607f169161231d565b601054600092916123588261230e565b9081815260019283811690816000146123b2575060011461237857505050565b9092935060106000526020928360002092846000945b83861061239e5750505050010190565b80548587018301529401938590820161238e565b91935050602093945060ff191683830152151560051b010190565b6001600160401b0381116123e057604052565b634e487b7160e01b600052604160045260246000fd5b604081019081106001600160401b038211176123e057604052565b606081019081106001600160401b038211176123e057604052565b61010081019081106001600160401b038211176123e057604052565b608081019081106001600160401b038211176123e057604052565b90601f801991011681019081106001600160401b038211176123e057604052565b6001600160401b0381116123e057601f01601f191660200190565b156124a657565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b156124f157565b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881b9bdd081d985b1a59607a1b6044820152606490fd5b8181029291811591840414171561253d57565b634e487b7160e01b600052601160045260246000fd5b811561255d570490565b634e487b7160e01b600052601260045260246000fd5b604d811161253d57600a0a90565b9190820391821161253d57565b9190820180921161253d57565b8181039291600013801582851316918412161761253d57565b6014549192916125fd916125ee916125e4916125da906001600160801b0383169061252a565b9060801c90612553565b93601f549061252a565b6125f783612573565b90612553565b8083106126c55761261161264d9184612581565b91612648612642612639601e5461263361262a86612573565b6020549061258e565b9061252a565b6125f784612573565b91612573565b61259b565b6509184e72a0009081810291818305149015171561253d57670de0b6b3a76400009182810292818405149015171561253d57801561255d57600160ff1b9180831460001983141661253d57059060008212156126be57811461253d57600003905b8082116126b9575090565b905090565b50906126ae565b505050600090565b6001600160a01b03811660008181526017602052604081205491949392909190811561277557916040916127516127699594836020865161270d816123f6565b828152015261272b8661271e613902565b5050505050939050612942565b815190936001600160801b03916020916127479184169061252a565b9201511690612553565b81811061276d57035b95815260186020522054612a14565b9091565b50508061275a565b50509192505080918190565b51908115158203610b8557565b600f546040805163d6d7d52560e01b8152602060048201529290916001600160a01b03168284806127c160248201612348565b0381600080955af180156128ea57819482916128ae575b5092841561285157831561281757507f9f9192b5edb17356c524e08d9e025c8e2f6307e6ea52fb7968faa3081f51c3c883918260115580a25b42601355565b5162461bcd60e51b81526020600482015260146024820152734d61726b65743a20696e76616c6964207261746560601b6044820152606490fd5b919250506128646013546012549061258e565b4211612874575060115490612811565b5162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881c985d19481d1bdbc81bdb1960621b6044820152606490fd5b809550848092503d83116128e3575b6128c78183612463565b810103126103905760206128da85612781565b940151386127d8565b503d6128bd565b508251903d90823e3d90fd5b156128fd57565b60405162461bcd60e51b815260206004820152601e60248201527f4d61726b65743a2065786368616e676552617465206e6f742076616c696400006044820152606490fd5b61294d8215156128f6565b60018060a01b036020816009541691600c5490600094168452601882526064604085205491604051948593849263442c159960e01b8452600484015260248301528660448301525afa918215612a085780926129d0575b5050906129c86129bf6129cd93620186a0602254049061252a565b601e549061252a565b612553565b90565b9091506020823d8211612a00575b816129eb60209383612463565b810103126103905750516129c86129bf6129a4565b3d91506129de565b604051903d90823e3d90fd5b612a1f8215156128f6565b602060018060a01b0360095416916064600c54604051948593849263442c159960e01b845260048401526024830152600060448301525afa908115612abf57600091612a8c575b50906129c8612a78926022549061252a565b620186a0612a88601e548361252a565b0491565b906020823d8211612ab7575b81612aa560209383612463565b810103126103905750516129c8612a66565b3d9150612a98565b6040513d6000823e3d90fd5b6001600160a01b03166000818152601860205260408120549092612aee91612a14565b918352601760205260408320548015612bf7578115612bf757818110612bf75782811015612bed57601454612b37918391611140916125da906001600160801b0383169061252a565b90620186a09283830292808404851490151715612bd957612b5c92916125f791612581565b91601b5491601c5493612b6f858561259b565b80820291848212600160ff1b821416612bd9578183051490151715612bc55705818482019485129112908015821691151617612bb157508082126126b9575090565b634e487b7160e01b81526011600452602490fd5b634e487b7160e01b83526011600452602483fd5b634e487b7160e01b85526011600452602485fd5b50505050601b5490565b50505090565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03161480612cfe575b15612c58577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f000000000000000000000000000000000000000000000000000000000000000082527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a0815260c081018181106001600160401b038211176123e05760405251902090565b507f00000000000000000000000000000000000000000000000000000000000000004614612c2f565b15612d2e57565b60405162461bcd60e51b815260206004820152601660248201527545524332303a2062616c616e636520746f6f206c6f7760501b6044820152606490fd5b15612d7357565b60405162461bcd60e51b815260206004820152601660248201527545524332303a206e6f207a65726f206164647265737360501b6044820152606490fd5b51906001600160a01b0382168203610b8557565b519060ff82168203610b8557565b60058110156122f85780612de45750565b60018103612e2c5760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b6044820152606490fd5b60028103612e795760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606490fd5b600314612e8257565b60405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608490fd5b9291906fa2a8918ca85bafe22016d0b997e4df60600160ff1b038311612f4b5791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa15612f3e5781516001600160a01b03811615612f38579190565b50600190565b50604051903d90823e3d90fd5b50505050600090600390565b600019811461253d5760010190565b7fe50de2333c10a9502fcb1d8ae13a51bbf423153dfc63c2b8997665b32154afc360018060a01b038092169160009083825260036020526040822094169384825260205284604082205580a4565b909160207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259160018060a01b03809416938460005260028352604060002095169485600052825280604060002055604051908152a3565b1561301257565b60405162461bcd60e51b815260206004820152600e60248201526d13585c9ad95d0e881c185d5cd95960921b6044820152606490fd5b1561304f57565b606460405162461bcd60e51b815260206004820152602060248201527f4d61726b65743a2063616e6e6f742065786563757465206f6e20697473656c666044820152fd5b919081156134d157620186a092836130ad6030548561252a565b04936130e36130bf601154968661258e565b600d546001600160a01b0397919060ff906130db908a1661350c565b1691856136c3565b801561348c576130f39083613746565b6130ff6030548561252a565b049161310961357a565b94613114848661258e565b604094855190613123826123f6565b60008083526020928301819052895190966001600160801b03949091851661341d57996131a7908b906131a29087908161316381865b16828451166138e9565b16815281613179818a84019616828751166138e9565b169384905251601480546001600160801b0319166001600160801b039390921692909216179055565b613dbd565b601654801590811561340e575b50156133d05784899116808852601784528888206131d38c825461258e565b90558851908382528b858301527f3a5151e57d3bc9798e7853034ac52293d1a0e12a2b44725e75b03b21f86477a68a888a1693a4806133af575b50808360095416976064600e5489519a8b938492638eb22cdd60e01b8452600484015260248301528960448301525afa9687156133a5578597613376575b506132546135a0565b818101916103e884845116106133425750906132a483928361327e6132cb968c16828451166137fd565b1690819052602580546001600160801b0319166001600160801b03909216919091179055565b51602580546001600160801b03169290911660801b6001600160801b031916919091179055565b6009541690600e5490823b15611557578451630208d92960e11b81523060048201526001600160a01b0391909116602482015260448101919091526064810185905292919081908490608490829084905af191821561333857505061332f57509091565b612769906123cd565b51903d90823e3d90fd5b60649088519062461bcd60e51b82526004820152600e60248201526d14d1d30e881b5a5b881b1a5b5a5d60921b6044820152fd5b9080975081813d831161339e575b61338e8183612463565b81010312610b8e5751953861324b565b503d613384565b86513d87823e3d90fd5b83600a54168652600182526133c887872091825461258e565b90553861320d565b875162461bcd60e51b815260048101849052601760248201527614d1d30e88189bdc9c9bddc818d85c081c995858da1959604a1b6044820152606490fd5b905084601454161115386131b4565b998a859b85830187815116613432908361252a565b8885511661343f91612553565b9d8e8186511661344e9161252a565b91511661345a91612553565b10613475575b6131a2866131a793818f948161316391613159565b858061348281949e612f57565b9d93505050613460565b60405162461bcd60e51b815260206004820152601c60248201527f42423a20616c6c6f77616e63655368617265206e6f742076616c6964000000006044820152606490fd5b505050600090600090565b3d15613507573d906134ed82612484565b916134fb6040519384612463565b82523d6000602084013e565b606090565b60008091604051602081019063313ce56760e01b82526004815261352f816123f6565b51916001600160a01b03165afa6135446134dc565b908061356f575b1561356957602081805181010312610b855760206129cd9101612dc5565b50601290565b50602081511461354b565b60405190613587826123f6565b6014546001600160801b038116835260801c6020830152565b604051906135ad826123f6565b6025546001600160801b038116835260801c6020830152565b919060018060a01b038060009416845260206017815260408520549081156136b95760188152604086205480156136b2578161360061357a565b9460095416916064600c54604051948593849263442c159960e01b8452600484015260248301528b60448301525afa968715612a0857809761367c575b505061274761365c6129bf613677969798620186a0602254049061252a565b9561367260018060801b0394858751169061252a565b61252a565b111590565b9096508187813d83116136ab575b6136948183612463565b81010312610390575094519461274761365c61363d565b503d61368a565b5050505050565b5060019450505050565b612642906136e3856129cd96956136dd6125f79685612942565b90613703565b6001600160a01b039091166000908152601860205260409020549061252a565b918215801561373e575b6126c5576001810180911161253d5761372c926126336129c892612573565b6005810180911161253d57600a900490565b50811561370d565b6001600160a01b031633810361375a575050565b60008181526020906003825260409182822033835281528483832054106137c3578382526003815282822033835281528282205460010161379c575050505050565b6137b793825260038152828220903383525220918254612581565b905538808080806136b2565b60649083519062461bcd60e51b82526004820152601460248201527313585c9ad95d0e881b9bdd08185c1c1c9bdd995960621b6044820152fd5b6001600160801b03918216908216039190821161253d57565b91909160006020604051613829816123f6565b82815201526020810180516001600160801b0390811661386d5761386681865b81613859818a16828951166137fd565b16865216828451166137fd565b1690529190565b61388761387d828551168761252a565b8284511690612553565b94806138a3613899848651168961252a565b8487511690612553565b106138b3575b8161386691613849565b94816138c161386692612f57565b969150506138a9565b604051906138d782612411565b60006040838281528260208201520152565b6001600160801b03918216908216019190821161253d57565b61390a6138ca565b506000602060405161391b816123f6565b828152015260006020604051613930816123f6565b82815201526040519061394282612411565b602454916001600160401b038316815260208101926001600160401b038160401c16845260801c6040820152809261397861357a565b926139816135a0565b92600060018060a01b0360095416600e549460018060801b038751166040519063442c159960e01b8252876004830152602482015260006044820152602081606481865afa8015612abf57600090613d89575b89516139ea92506001600160801b03169061258e565b80613d54575060005b613a086001600160401b038293511642612581565b948515613d2a575050426001600160401b031660208a8101919091528801516001600160801b031615613ce057506020670de0b6b3a7640000613a65856136728c6001600160401b038d60018060801b039051169151169061252a565b895191900496906001600160801b0390613a8490828a169083166138e9565b168952875160405163442c159960e01b815260048101929092526001600160801b031660248201526000604482015291829060649082905afa8015612abf57600090613cac575b8751613ae192506001600160801b03169061258e565b92613b0f846129c8620186a0613af9601a548a61252a565b60208c01516001600160801b031691900461252a565b6040890180519195916001600160801b038088169291613b3290849083166138e9565b16905260208801805190916001600160801b0391613b52919083166138e9565b16905280613c77575060005b602a5490938482811015613bf257613b769083612581565b90670de0b6b3a7640000820291808304670de0b6b3a7640000149015171561253d576129c8613bca613bc4613bb66001600160401b0396613bd496612553565b93613672602e54958061252a565b8361258e565b91848d511661252a565b168089526001600160401b03602d5416809110613bee5750565b8852565b909150602b54808211613c0457505050565b613c0d91612581565b670de0b6b3a7640000810290808204670de0b6b3a7640000149015171561253d576001600160401b03916129c8613c50613bc4613bb6613c5995602c5490612553565b848d511661252a565b81602d5460401c16808211613c6f575b50168852565b905038613c69565b87516001600160801b0316670de0b6b3a764000081810292918084049091149015171561253d57613ca791612553565b613b5e565b506020813d602011613cd8575b81613cc660209383612463565b81010312610b8557613ae19051613acb565b3d9150613cb9565b9697939450509350506001600160401b038151166001600160401b03602f5416809103613d1e575b509392613d136135a0565b926000926000929190565b81526001925038613d08565b975098505050505092505091613d3e61357a565b91613d476135a0565b9160009160009190600090565b88516001600160801b0316670de0b6b3a764000081810292918084049091149015171561253d57613d8491612553565b6139f3565b506020813d602011613db5575b81613da360209383612463565b81010312610b85576139ea90516139d4565b3d9150613d96565b601480546001600160801b031660809290921b6001600160801b031916919091179055565b613ec6602080613e9c613df3613902565b9396959390929015613ec8575050506001600160401b03602f54166000807f33af5ce86e8438eff54589f85332916444457dfa8685493fbd579b809097026b88604051838152a45b805185820151604092830151921b67ffffffffffffffff60401b166001600160401b03919091161760809190911b6001600160801b0319908116919091176024558151601480549092166001600160801b0391821617909155948591610cca565b8051910151821660801b6001600160801b0319166001600160801b03929091169190911617602555565b565b7f33af5ce86e8438eff54589f85332916444457dfa8685493fbd579b809097026b886001600160401b0386511694604051908152a4613e3b565b60405190613f0f826123f6565b60038252623f3f3f60e81b6020830152565b908151811015613f32570160200190565b634e487b7160e01b600052603260045260246000fd5b60ff1660ff811461253d5760010190565b805160408110613fd157508051810190602081818401930312610b85576020810151906001600160401b038211610b85570181603f82011215610b85576020810151613fa481612484565b92613fb26040519485612463565b81845260408284010111610b85576129cd9160406020850191016121f5565b6020929083036140bf576000805b60ff811685811090816140a0575b501561400157613ffc90613f48565b613fdf565b9260ff8094169261401184612484565b9361401f6040519586612463565b80855261402e601f1991612484565b013687860137825b85811687811080614083575b1561407857614073919061406d6001600160f81b03196140628388613f21565b5116871a9188613f21565b53613f48565b614036565b505094505050905090565b506001600160f81b03196140978286613f21565b51161515614042565b6001600160f81b031991506140b59086613f21565b5116151538613fed565b9150506129cd613f0256feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220c633020dadd6beb370b79705991da174e51cf984afd892dc9ee50ab89d89323364736f6c63430008120033", + "deployedBytecode": "0x608060408181526004918236101561001657600080fd5b60009260e08435811c928362a02a20146121835750826302ce728f1461215a57826306fdde03146120a2578263078dfbe714611f9d578263095ea7b314611f725782630c4e84f014611e5b57826318160ddd14611e385782631c9e379b14611dff5782631da8bf1014611d4557826323b872dd14611bbd578263313ce56714611b86578263331960ff14611b6657826334d441d014611b465782633644e51514611b2857826337b6b7b914611b0857826338d52e0f14611ade5782633ba0b9a914611abe5782633f741adb14611a9557826340626d8b14611a7557826344de240a14611a55578263473e3ce714611a3557826348e4163e146119fc5782634d7f2a34146119dc5782634e71e0c8146119275782635224372c14611870578263529898f21461185157826352f353eb1461182857826355140232146117ff57826355c2ab94146117d557826357935462146117b55782635dfe04e8146117545782636c3d8b8f1461172a57826370a08231146116f157826372778547146116b957826374645ff31461168c5782637dc0d1d0146116625782637ecebe001461162b5782637fa0b84e146115f9578263821226e8146115d95782638285ef40146115a55782638c5d0ed3146115855782638da5cb5b1461155b578263910dd7c8146112e2578263959916dc146112c257826395d89b411461120957826399a97028146111d85782639c5d7192146111b85782639e15e89f1461117c578263a9059cbb146110a0578263b0e21e8a14611080578263b27c0e7414611044578263bb4cfe3b14611024578263cd0211eb14610bbc578263ce8849ed14610b92578263d3fb2a38146106f9578263d505accf1461057657508163d8dfeb451461054d578163da863f0e14610524578163dd62ed3e146104d6578163de406577146104ad578163e0996cb61461048e578163e30c397814610465578163ea64dd5614610446578163eec0f42e14610427578163ef2b234a146103b157508063f42760b714610393578063f8ba4cff14610374578063f9557ccb1461033e5763ffe04c661461031d57600080fd5b3461033a578160031936011261033a57602090602a549051908152f35b5080fd5b503461033a578160031936011261033a5760255490516001600160801b038216815260809190911c6020820152604090f35b0390f35b823461039057806003193601126103905761038d613de2565b80f35b80fd5b503461033a578160031936011261033a57602090602b549051908152f35b83903461033a57602036600319011261033a57356001600160a01b0381811691829003610423576103e78160055416331461249f565b816021549182167ffb4fd7114609dd603b57adbc2082205bfbbcabf9265c4b437b472f5c592b8cd78580a36001600160a01b0319161760215580f35b8280fd5b50503461033a578160031936011261033a57602090600c549051908152f35b50503461033a578160031936011261033a57602090601f549051908152f35b50503461033a578160031936011261033a5760065490516001600160a01b039091168152602090f35b50503461033a578160031936011261033a57602090601d549051908152f35b50503461033a578160031936011261033a5760095490516001600160a01b039091168152602090f35b50503461033a578060031936011261033a576020916104f36121c9565b826104fc6121df565b6001600160a01b03928316845260028652922091166000908152908352819020549051908152f35b50503461033a578160031936011261033a5760215490516001600160a01b039091168152602090f35b50503461033a578160031936011261033a57600b5490516001600160a01b039091168152602090f35b84925034610423576105873661225b565b9183949895979342116106b6579161065991610661938c8b8b60018060a01b0398898d169a8b93846000528d60205285600020908154916105c783612f57565b90558c87519560208701977f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e266895260008a890152606088015216608086015260a085015260c084015281830152815261061f8161242c565b51902061062a612bfd565b915190602082019261190160f01b8452602283015260428201526042815261065181612448565b519020612ed2565b919091612dd3565b1603610673575061038d939450612fb4565b606490602087519162461bcd60e51b8352820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152fd5b8a5162461bcd60e51b8152602081880152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b5090503461042357610160366003190112610423576001600160a01b03813581811690819003610b8e576024916001600160401b038335818111610b8a5736602382011215610b8a5780860135918211610b8a5736858383010111610b8a5760443593838516809503610b85576107758460055416331461249f565b80610b47575b5084826109c9575b50505081610989575b505060643580610971575b5060843580610959575b5060a43580610942575b5060c4358061091e575b5060e435806108fa575b5061010435806108c9575b506101243580610858575b506101443592836107e4578480f35b601e5484106107fb57505050601f55388080808480f35b608492916020603292519362461bcd60e51b85528401528201527f4d61726b65743a206c69717569646174696f6e436f6c6c61746572616c697a616044820152711d1a5bdb94985d19481d1bdbc81cdb585b1b60721b6064820152fd5b610867620186a08211156124ea565b601f54811161087957601e55386107d5565b506025906020608494519362461bcd60e51b85528401528201527f4d61726b65743a20636f6c6c61746572616c697a6174696f6e5261746520746f6044820152646f2062696760d81b6064820152fd5b806016547fae6e0ab3b95f0a53ff9660a390ccedcbbf1f2355dce974a9841af106fddcfaba8780a3601655386107ca565b610908620186a082106124ea565b610915601b5482116124ea565b601c55386107bf565b61092c620186a082106124ea565b610939601c5482106124ea565b601b55386107b5565b610950620186a082106124ea565b601d55386107ab565b610968620186a08211156124ea565b601a55386107a1565b610980620186a08211156124ea565b60195538610797565b816008549182167f5a62d22209e370e38eea92cfddcd228e656e6ec139243392a760a7769f5877fd8880a36001600160a01b03191617600855388061078c565b82916109d660105461230e565b601f8111610ad6575b508990601f8411600114610a44578a93610a37575b5050508160011b916000199060031b1c1916176010555b7fa6f004921c944d4b8bf6e38462b00f36a58d62495d56b51f571ab78f732c98158680a1388084610783565b01013590508438806109f4565b60108b52601f19841694507f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae67292509087908b60205b878210610ab75750508460019610610a9b575b50505050811b01601055610a0b565b60001960f88660031b161c199201013516905538808681610a8c565b8285019093013585556001949094019389929182019190810190610a79565b60108b5290925090507f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae672601f840160051c810160208510610b40575b91849391601f8994920160051c01905b818110610b2f57506109df565b8b8155859450889350600101610b22565b5080610b12565b600f80546001600160a01b0319169190911790557f0b2d6eb667d0522c3eb86e4288afecae6c11591ffd1345d4d12407e0598bca9b8880a13861077b565b600080fd5b8780fd5b8480fd5b5050503461033a578160031936011261033a5760085490516001600160a01b039091168152602090f35b5083833461033a57608036600319011261033a57610bd86121c9565b610be06121df565b90610be961224c565b93606435916001825260209560078752610c0960ff87852054161561300b565b6001600160a01b0385811695909390610c6690610c2830891415613048565b610c3061278e565b5050610c3a613de2565b610c4b87610c4661357a565b613816565b905060115460ff610c5f89600d541661350c565b16926136c3565b8015610fe157610c769084613746565b8581526017885286812054808611610fd9575b508415610f9e578798610cd298610ca287610c4661357a565b8151601480546001600160801b0319166001600160801b03928316179055909b909290918391905b015116613dbd565b87835260178b52888320610ce7888254612581565b90558560095416600e54928a5193638eb22cdd60e01b855280828601528c6024860152600160448601528d85606481865afa948515610eaa578c918f918897610f68575b506025548616948915610eb4575060448b60095416935180948193627eeac760e11b8352308884015260248301525afa8015610eaa5783908790610e79575b610d749250612581565b8411610e465750927fc8e512d8f188ca059984b5853d2bf653da902696b8512785b182b2c813789a6e95928c9592610db48d9b9a99965b828416906138e9565b1660018060801b0319602554161760255584841690818352602687528b83206027549081855288528c8420548211600014610e2157505081526026855289812060275482528552808a8120555b5015610e1c575080600954165b87519485521692a451908152f35b610e0e565b90918352602687528b83209083528652610e3f8b8320918254612581565b9055610e01565b8a5162461bcd60e51b81529081018d9052600d60248201526c0a68e987440e8dede40daeac6d609b1b6044820152606490fd5b50508d81813d8311610ea3575b610e908183612463565b81010312610b855782610d749151610d6a565b503d610e86565b8c513d88823e3d90fd5b9250929050813b15610f64578c51630208d92960e11b81526001600160a01b038a169181019182523060208301526040820193909352606081018690528691839182908490829060800103925af18015610f5a57928c9a999895927fc8e512d8f188ca059984b5853d2bf653da902696b8512785b182b2c813789a6e9895928f9895610f45575b50610db490610dab565b93610f53610db492956123cd565b9390610f3b565b8b513d87823e3d90fd5b8680fd5b9250955081813d8311610f97575b610f808183612463565b81010312610f93578d8c91519538610d2b565b8580fd5b503d610f76565b865162461bcd60e51b8152808a01899052601560248201527453474c3a206e6f7468696e6720746f20726570617960581b6044820152606490fd5b945089610c89565b875162461bcd60e51b8152808b018a9052601d60248201527f53474c3a20616c6c6f77616e63655368617265206e6f742076616c69640000006044820152606490fd5b5050503461033a578160031936011261033a57602090601e549051908152f35b5050503461033a578160031936011261033a57606090602454908051916001600160401b03808216845281831c16602084015260801c90820152f35b5050503461033a578160031936011261033a57602090601a549051908152f35b5050503461033a578060031936011261033a576020916110be6121c9565b8260243592831580159061116a575b6110fd575b50519182526001600160a01b03169033906000805160206140cb833981519152908590a35160018152f35b338152600186528181205461111485821015612d27565b6001600160a01b038416908533839003611131575b5050506110d2565b61114591611140841515612d6c565b612581565b338352600188528383205581522061115e83825461258e565b90558238808085611129565b50336001600160a01b038416146110cd565b5050503461033a578060031936011261033a576060906111a661119d6121c9565b602435906126cd565b91929081519384526020840152820152f35b5050503461033a578160031936011261033a57602090602c549051908152f35b5050503461033a578060031936011261033a576020906112026111f96121c9565b60243590612acb565b9051908152f35b509050346104235782600319360112610423579180806103709460018060a01b03600b541690855160208101916395d89b4160e01b8352815261124b816123f6565b51915afa6112576134dc565b9150156112b35761126790613f59565b905b6112a160238251809462746d2d60e81b602083015261129181518092602086860191016121f5565b8101036003810185520183612463565b51918291602083526020830190612218565b506112bc613f02565b90611269565b5050503461033a578160031936011261033a576020906030549051908152f35b849184346115575780600319360112611557578135926001600160401b038411610b8e5736602385011215610b8e57838301359261131f84612484565b9461132c84519687612463565b84865286602091828801963660248284010111610423578060248593018937880101526024359361ffff8516809503610b8a576101009586888051810103126115535761137890612781565b93611384828901612db1565b9061139160608a01612db1565b9860808101519860a0820151926113aa60c08401612dc5565b91818401519301519360018060a01b03808097169d169a81421161151057928d8f819897948f948f8f968f918f959a8f8c81956114869f9c6106599f506000146114e9577f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e2669a5b82528952209384549461142386612f57565b905580519788019889528701528d6060870152608086015260a085015260c08401528183015281526114548161242c565b51902061145f612bfd565b908951908b82019261190160f01b8452602283015260428201526042815261065181612448565b16036114a85750505060001461149f5761038d92612fb4565b61038d92612f66565b5162461bcd60e51b815291820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e61747572650000604482015260649150fd5b7f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d69a611411565b875162461bcd60e51b8152808b018a9052601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b8880fd5b8380fd5b5050503461033a578160031936011261033a5760055490516001600160a01b039091168152602090f35b5050503461033a578160031936011261033a57602090601b549051908152f35b5050503461033a578160031936011261033a5760145490516001600160801b038216815260809190911c6020820152604090f35b5050503461033a578160031936011261033a57602090602e549051908152f35b5050503461033a578060031936011261033a5760209061162461161a6121c9565b6024359033612f66565b5160018152f35b509050346104235760203660031901126104235760209282916001600160a01b036116546121c9565b168252845220549051908152f35b5050503461033a578160031936011261033a57600f5490516001600160a01b039091168152602090f35b5050503461033a578160031936011261033a578051610370916112a1826116b281612348565b0383612463565b509050346104235760203660031901126104235735916009831015610390575060ff6116e66020936122df565b541690519015158152f35b5050503461033a57602036600319011261033a5760209181906001600160a01b0361171a6121c9565b1681526001845220549051908152f35b5050503461033a578160031936011261033a57600a5490516001600160a01b039091168152602090f35b5050503461033a578160031936011261033a576080906117726138ca565b5061177b613902565b50949593505050508051926001600160401b03808251168552602082015116602085015281600180871b0391015116908301526060820152f35b5050503461033a578160031936011261033a57602090601c549051908152f35b5050503461033a578160031936011261033a57602d548151911c6001600160401b03168152602090f35b5050503461033a578160031936011261033a576020906001600160401b03602d54169051908152f35b5050503461033a578160031936011261033a576020906001600160401b03602f54169051908152f35b5050503461033a578160031936011261033a5760209081549051908152f35b50905034610423576118de906118d260ff84956118a561188f366122aa565b949198909380805260076020522054161561300b565b6118ad61278e565b50506118b7613de2565b6118cc6001600160a01b038216301415613048565b85613093565b929093601154906135c6565b156118f0575082519182526020820152f35b606490602085519162461bcd60e51b8352820152601160248201527013585c9ad95d0e881a5b9cdbdb1d995b9d607a1b6044820152fd5b848285346104235782600319360112610423576006546001600160a01b03929091838316919033839003611999575050806005549384167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08680a36001600160a01b0319928316176005551660065580f35b906020606492519162461bcd60e51b8352820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b5050503461033a578160031936011261033a576020906029549051908152f35b5050503461033a57602036600319011261033a5760209181906001600160a01b03611a256121c9565b1681526017845220549051908152f35b5050503461033a578160031936011261033a576020906015549051908152f35b5050503461033a578160031936011261033a57602090600e549051908152f35b5050503461033a578160031936011261033a576020906016549051908152f35b5082843461039057606036600319011261039057506112026020926044359060243590356125b4565b5050503461033a578160031936011261033a576020906011549051908152f35b5050503461033a578160031936011261033a57600d5490516001600160a01b039091168152602090f35b5050503461033a578160031936011261033a576020906012549051908152f35b5050503461033a578160031936011261033a57602090611202612bfd565b5050503461033a578160031936011261033a576020906019549051908152f35b5050503461033a578160031936011261033a576020906013549051908152f35b5050503461033a578160031936011261033a57600d546020919060ff90611bb5906001600160a01b031661350c565b915191168152f35b5082843461039057611bce366122aa565b919282611c08575b508351918252602094506001600160a01b039081169216906000805160206140cb833981519152908590a35160018152f35b6001600160a01b038481168083526001602090815287842054919892909190611c3387831015612d27565b851692838a03611c47575b50505050611bd6565b898552600283528885203386528352888520549060018201611cb1575b5050928260209960018a94611c908a8e996111406000805160206140cb8339815191529c9a1515612d6c565b9285525283832055815220611ca685825461258e565b905591878080611c3e565b878210611d0757509260209960018a94611c908a8e9996611ce2826000805160206140cb8339815191529d9b612581565b86895260028552898920338a5285528989205596995050509450509981949650611c64565b895162461bcd60e51b8152908101849052601860248201527745524332303a20616c6c6f77616e636520746f6f206c6f7760401b6044820152606490fd5b8492503461042357611d563661225b565b9397949690928042116106b657938693611ded938c8c89610659968e9a8e60018060a01b03809c169c8d948587526020528c87872092835493611d9885612f57565b905588519660208801987f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d68a528a890152606088015216608086015260a085015260c084015281830152815261061f8161242c565b1603610673575061038d939450612f66565b5050503461033a57602036600319011261033a5760209181906001600160a01b03611e286121c9565b1681526018845220549051908152f35b5050503461033a578160031936011261033a5760209060255460801c9051908152f35b50905034610423578160031936011261042357803590600982101561155757611e8261223d565b6008549093906001600160a01b03163303611f385760ff611ea2846122df565b54161515931515938414611f00575050808260ff611ec2611ef0946122df565b54161515827feeec81de25875ce1725479bb76f720a8defdb43dea041919ae37bb4aae9847c08780a46122df565b9060ff8019835416911617905580f35b906020606492519162461bcd60e51b835282015260126024820152714d61726b65743a2073616d6520737461746560701b6044820152fd5b906020606492519162461bcd60e51b8352820152601460248201527313585c9ad95d0e881d5b985d5d1a1bdc9a5e995960621b6044820152fd5b5050503461033a578060031936011261033a57602090611624611f936121c9565b6024359033612fb4565b8482853461042357606036600319011261042357611fb96121c9565b91611fc261223d565b91611fcb61224c565b9260018060a01b03948591611fe58360055416331461249f565b15612089571692831590811591612081575b5015612046575050806005549283167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08580a36001600160a01b03199182161760055560068054909116905580f35b906020606492519162461bcd60e51b835282015260156024820152744f776e61626c653a207a65726f206164647265737360581b6044820152fd5b905086611ff7565b93505050501660018060a01b0319600654161760065580f35b509050346104235782600319360112610423579180806103709460018060a01b03600b541690855160208101916306fdde0360e01b835281526120e4816123f6565b51915afa6120f06134dc565b91501561214b5761210090613f59565b905b6112a160348251809473546170696f63612053696e67756c61726974792d60601b602083015261213b81518092602086860191016121f5565b8101036014810185520183612463565b50612154613f02565b90612102565b8385346103905780600319360112610390575061217561278e565b825191151582526020820152f35b859085346104235780600319360112610423576020926121a16121c9565b6121a96121df565b6001600160a01b0391821683526003865283832091168252845220548152f35b600435906001600160a01b0382168203610b8557565b602435906001600160a01b0382168203610b8557565b60005b8381106122085750506000910152565b81810151838201526020016121f8565b90602091612231815180928185528580860191016121f5565b601f01601f1916010190565b602435908115158203610b8557565b604435908115158203610b8557565b60e0906003190112610b85576001600160a01b03906004358281168103610b8557916024359081168103610b855790604435906064359060843560ff81168103610b85579060a4359060c43590565b6060906003190112610b85576001600160a01b03906004358281168103610b8557916024359081168103610b85579060443590565b60098110156122f8576000526007602052604060002090565b634e487b7160e01b600052602160045260246000fd5b90600182811c9216801561233e575b602083101461232857565b634e487b7160e01b600052602260045260246000fd5b91607f169161231d565b601054600092916123588261230e565b9081815260019283811690816000146123b2575060011461237857505050565b9092935060106000526020928360002092846000945b83861061239e5750505050010190565b80548587018301529401938590820161238e565b91935050602093945060ff191683830152151560051b010190565b6001600160401b0381116123e057604052565b634e487b7160e01b600052604160045260246000fd5b604081019081106001600160401b038211176123e057604052565b606081019081106001600160401b038211176123e057604052565b61010081019081106001600160401b038211176123e057604052565b608081019081106001600160401b038211176123e057604052565b90601f801991011681019081106001600160401b038211176123e057604052565b6001600160401b0381116123e057601f01601f191660200190565b156124a657565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b156124f157565b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881b9bdd081d985b1a59607a1b6044820152606490fd5b8181029291811591840414171561253d57565b634e487b7160e01b600052601160045260246000fd5b811561255d570490565b634e487b7160e01b600052601260045260246000fd5b604d811161253d57600a0a90565b9190820391821161253d57565b9190820180921161253d57565b8181039291600013801582851316918412161761253d57565b6014549192916125fd916125ee916125e4916125da906001600160801b0383169061252a565b9060801c90612553565b93601f549061252a565b6125f783612573565b90612553565b8083106126c55761261161264d9184612581565b91612648612642612639601e5461263361262a86612573565b6020549061258e565b9061252a565b6125f784612573565b91612573565b61259b565b6509184e72a0009081810291818305149015171561253d57670de0b6b3a76400009182810292818405149015171561253d57801561255d57600160ff1b9180831460001983141661253d57059060008212156126be57811461253d57600003905b8082116126b9575090565b905090565b50906126ae565b505050600090565b6001600160a01b03811660008181526017602052604081205491949392909190811561277557916040916127516127699594836020865161270d816123f6565b828152015261272b8661271e613902565b5050505050939050612942565b815190936001600160801b03916020916127479184169061252a565b9201511690612553565b81811061276d57035b95815260186020522054612a14565b9091565b50508061275a565b50509192505080918190565b51908115158203610b8557565b600f546040805163d6d7d52560e01b8152602060048201529290916001600160a01b03168284806127c160248201612348565b0381600080955af180156128ea57819482916128ae575b5092841561285157831561281757507f9f9192b5edb17356c524e08d9e025c8e2f6307e6ea52fb7968faa3081f51c3c883918260115580a25b42601355565b5162461bcd60e51b81526020600482015260146024820152734d61726b65743a20696e76616c6964207261746560601b6044820152606490fd5b919250506128646013546012549061258e565b4211612874575060115490612811565b5162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881c985d19481d1bdbc81bdb1960621b6044820152606490fd5b809550848092503d83116128e3575b6128c78183612463565b810103126103905760206128da85612781565b940151386127d8565b503d6128bd565b508251903d90823e3d90fd5b156128fd57565b60405162461bcd60e51b815260206004820152601e60248201527f4d61726b65743a2065786368616e676552617465206e6f742076616c696400006044820152606490fd5b61294d8215156128f6565b60018060a01b036020816009541691600c5490600094168452601882526064604085205491604051948593849263442c159960e01b8452600484015260248301528660448301525afa918215612a085780926129d0575b5050906129c86129bf6129cd93620186a0602254049061252a565b601e549061252a565b612553565b90565b9091506020823d8211612a00575b816129eb60209383612463565b810103126103905750516129c86129bf6129a4565b3d91506129de565b604051903d90823e3d90fd5b612a1f8215156128f6565b602060018060a01b0360095416916064600c54604051948593849263442c159960e01b845260048401526024830152600060448301525afa908115612abf57600091612a8c575b50906129c8612a78926022549061252a565b620186a0612a88601e548361252a565b0491565b906020823d8211612ab7575b81612aa560209383612463565b810103126103905750516129c8612a66565b3d9150612a98565b6040513d6000823e3d90fd5b6001600160a01b03166000818152601860205260408120549092612aee91612a14565b918352601760205260408320548015612bf7578115612bf757818110612bf75782811015612bed57601454612b37918391611140916125da906001600160801b0383169061252a565b90620186a09283830292808404851490151715612bd957612b5c92916125f791612581565b91601b5491601c5493612b6f858561259b565b80820291848212600160ff1b821416612bd9578183051490151715612bc55705818482019485129112908015821691151617612bb157508082126126b9575090565b634e487b7160e01b81526011600452602490fd5b634e487b7160e01b83526011600452602483fd5b634e487b7160e01b85526011600452602485fd5b50505050601b5490565b50505090565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03161480612cfe575b15612c58577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f000000000000000000000000000000000000000000000000000000000000000082527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a0815260c081018181106001600160401b038211176123e05760405251902090565b507f00000000000000000000000000000000000000000000000000000000000000004614612c2f565b15612d2e57565b60405162461bcd60e51b815260206004820152601660248201527545524332303a2062616c616e636520746f6f206c6f7760501b6044820152606490fd5b15612d7357565b60405162461bcd60e51b815260206004820152601660248201527545524332303a206e6f207a65726f206164647265737360501b6044820152606490fd5b51906001600160a01b0382168203610b8557565b519060ff82168203610b8557565b60058110156122f85780612de45750565b60018103612e2c5760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b6044820152606490fd5b60028103612e795760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606490fd5b600314612e8257565b60405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608490fd5b9291906fa2a8918ca85bafe22016d0b997e4df60600160ff1b038311612f4b5791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa15612f3e5781516001600160a01b03811615612f38579190565b50600190565b50604051903d90823e3d90fd5b50505050600090600390565b600019811461253d5760010190565b7fe50de2333c10a9502fcb1d8ae13a51bbf423153dfc63c2b8997665b32154afc360018060a01b038092169160009083825260036020526040822094169384825260205284604082205580a4565b909160207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259160018060a01b03809416938460005260028352604060002095169485600052825280604060002055604051908152a3565b1561301257565b60405162461bcd60e51b815260206004820152600e60248201526d13585c9ad95d0e881c185d5cd95960921b6044820152606490fd5b1561304f57565b606460405162461bcd60e51b815260206004820152602060248201527f4d61726b65743a2063616e6e6f742065786563757465206f6e20697473656c666044820152fd5b919081156134d157620186a092836130ad6030548561252a565b04936130e36130bf601154968661258e565b600d546001600160a01b0397919060ff906130db908a1661350c565b1691856136c3565b801561348c576130f39083613746565b6130ff6030548561252a565b049161310961357a565b94613114848661258e565b604094855190613123826123f6565b60008083526020928301819052895190966001600160801b03949091851661341d57996131a7908b906131a29087908161316381865b16828451166138e9565b16815281613179818a84019616828751166138e9565b169384905251601480546001600160801b0319166001600160801b039390921692909216179055565b613dbd565b601654801590811561340e575b50156133d05784899116808852601784528888206131d38c825461258e565b90558851908382528b858301527f3a5151e57d3bc9798e7853034ac52293d1a0e12a2b44725e75b03b21f86477a68a888a1693a4806133af575b50808360095416976064600e5489519a8b938492638eb22cdd60e01b8452600484015260248301528960448301525afa9687156133a5578597613376575b506132546135a0565b818101916103e884845116106133425750906132a483928361327e6132cb968c16828451166137fd565b1690819052602580546001600160801b0319166001600160801b03909216919091179055565b51602580546001600160801b03169290911660801b6001600160801b031916919091179055565b6009541690600e5490823b15611557578451630208d92960e11b81523060048201526001600160a01b0391909116602482015260448101919091526064810185905292919081908490608490829084905af191821561333857505061332f57509091565b612769906123cd565b51903d90823e3d90fd5b60649088519062461bcd60e51b82526004820152600e60248201526d14d1d30e881b5a5b881b1a5b5a5d60921b6044820152fd5b9080975081813d831161339e575b61338e8183612463565b81010312610b8e5751953861324b565b503d613384565b86513d87823e3d90fd5b83600a54168652600182526133c887872091825461258e565b90553861320d565b875162461bcd60e51b815260048101849052601760248201527614d1d30e88189bdc9c9bddc818d85c081c995858da1959604a1b6044820152606490fd5b905084601454161115386131b4565b998a859b85830187815116613432908361252a565b8885511661343f91612553565b9d8e8186511661344e9161252a565b91511661345a91612553565b10613475575b6131a2866131a793818f948161316391613159565b858061348281949e612f57565b9d93505050613460565b60405162461bcd60e51b815260206004820152601c60248201527f42423a20616c6c6f77616e63655368617265206e6f742076616c6964000000006044820152606490fd5b505050600090600090565b3d15613507573d906134ed82612484565b916134fb6040519384612463565b82523d6000602084013e565b606090565b60008091604051602081019063313ce56760e01b82526004815261352f816123f6565b51916001600160a01b03165afa6135446134dc565b908061356f575b1561356957602081805181010312610b855760206129cd9101612dc5565b50601290565b50602081511461354b565b60405190613587826123f6565b6014546001600160801b038116835260801c6020830152565b604051906135ad826123f6565b6025546001600160801b038116835260801c6020830152565b919060018060a01b038060009416845260206017815260408520549081156136b95760188152604086205480156136b2578161360061357a565b9460095416916064600c54604051948593849263442c159960e01b8452600484015260248301528b60448301525afa968715612a0857809761367c575b505061274761365c6129bf613677969798620186a0602254049061252a565b9561367260018060801b0394858751169061252a565b61252a565b111590565b9096508187813d83116136ab575b6136948183612463565b81010312610390575094519461274761365c61363d565b503d61368a565b5050505050565b5060019450505050565b612642906136e3856129cd96956136dd6125f79685612942565b90613703565b6001600160a01b039091166000908152601860205260409020549061252a565b918215801561373e575b6126c5576001810180911161253d5761372c926126336129c892612573565b6005810180911161253d57600a900490565b50811561370d565b6001600160a01b031633810361375a575050565b60008181526020906003825260409182822033835281528483832054106137c3578382526003815282822033835281528282205460010161379c575050505050565b6137b793825260038152828220903383525220918254612581565b905538808080806136b2565b60649083519062461bcd60e51b82526004820152601460248201527313585c9ad95d0e881b9bdd08185c1c1c9bdd995960621b6044820152fd5b6001600160801b03918216908216039190821161253d57565b91909160006020604051613829816123f6565b82815201526020810180516001600160801b0390811661386d5761386681865b81613859818a16828951166137fd565b16865216828451166137fd565b1690529190565b61388761387d828551168761252a565b8284511690612553565b94806138a3613899848651168961252a565b8487511690612553565b106138b3575b8161386691613849565b94816138c161386692612f57565b969150506138a9565b604051906138d782612411565b60006040838281528260208201520152565b6001600160801b03918216908216019190821161253d57565b61390a6138ca565b506000602060405161391b816123f6565b828152015260006020604051613930816123f6565b82815201526040519061394282612411565b602454916001600160401b038316815260208101926001600160401b038160401c16845260801c6040820152809261397861357a565b926139816135a0565b92600060018060a01b0360095416600e549460018060801b038751166040519063442c159960e01b8252876004830152602482015260006044820152602081606481865afa8015612abf57600090613d89575b89516139ea92506001600160801b03169061258e565b80613d54575060005b613a086001600160401b038293511642612581565b948515613d2a575050426001600160401b031660208a8101919091528801516001600160801b031615613ce057506020670de0b6b3a7640000613a65856136728c6001600160401b038d60018060801b039051169151169061252a565b895191900496906001600160801b0390613a8490828a169083166138e9565b168952875160405163442c159960e01b815260048101929092526001600160801b031660248201526000604482015291829060649082905afa8015612abf57600090613cac575b8751613ae192506001600160801b03169061258e565b92613b0f846129c8620186a0613af9601a548a61252a565b60208c01516001600160801b031691900461252a565b6040890180519195916001600160801b038088169291613b3290849083166138e9565b16905260208801805190916001600160801b0391613b52919083166138e9565b16905280613c77575060005b602a5490938482811015613bf257613b769083612581565b90670de0b6b3a7640000820291808304670de0b6b3a7640000149015171561253d576129c8613bca613bc4613bb66001600160401b0396613bd496612553565b93613672602e54958061252a565b8361258e565b91848d511661252a565b168089526001600160401b03602d5416809110613bee5750565b8852565b909150602b54808211613c0457505050565b613c0d91612581565b670de0b6b3a7640000810290808204670de0b6b3a7640000149015171561253d576001600160401b03916129c8613c50613bc4613bb6613c5995602c5490612553565b848d511661252a565b81602d5460401c16808211613c6f575b50168852565b905038613c69565b87516001600160801b0316670de0b6b3a764000081810292918084049091149015171561253d57613ca791612553565b613b5e565b506020813d602011613cd8575b81613cc660209383612463565b81010312610b8557613ae19051613acb565b3d9150613cb9565b9697939450509350506001600160401b038151166001600160401b03602f5416809103613d1e575b509392613d136135a0565b926000926000929190565b81526001925038613d08565b975098505050505092505091613d3e61357a565b91613d476135a0565b9160009160009190600090565b88516001600160801b0316670de0b6b3a764000081810292918084049091149015171561253d57613d8491612553565b6139f3565b506020813d602011613db5575b81613da360209383612463565b81010312610b85576139ea90516139d4565b3d9150613d96565b601480546001600160801b031660809290921b6001600160801b031916919091179055565b613ec6602080613e9c613df3613902565b9396959390929015613ec8575050506001600160401b03602f54166000807f33af5ce86e8438eff54589f85332916444457dfa8685493fbd579b809097026b88604051838152a45b805185820151604092830151921b67ffffffffffffffff60401b166001600160401b03919091161760809190911b6001600160801b0319908116919091176024558151601480549092166001600160801b0391821617909155948591610cca565b8051910151821660801b6001600160801b0319166001600160801b03929091169190911617602555565b565b7f33af5ce86e8438eff54589f85332916444457dfa8685493fbd579b809097026b886001600160401b0386511694604051908152a4613e3b565b60405190613f0f826123f6565b60038252623f3f3f60e81b6020830152565b908151811015613f32570160200190565b634e487b7160e01b600052603260045260246000fd5b60ff1660ff811461253d5760010190565b805160408110613fd157508051810190602081818401930312610b85576020810151906001600160401b038211610b85570181603f82011215610b85576020810151613fa481612484565b92613fb26040519485612463565b81845260408284010111610b85576129cd9160406020850191016121f5565b6020929083036140bf576000805b60ff811685811090816140a0575b501561400157613ffc90613f48565b613fdf565b9260ff8094169261401184612484565b9361401f6040519586612463565b80855261402e601f1991612484565b013687860137825b85811687811080614083575b1561407857614073919061406d6001600160f81b03196140628388613f21565b5116871a9188613f21565b53613f48565b614036565b505094505050905090565b506001600160f81b03196140978286613f21565b51161515614042565b6001600160f81b031991506140b59086613f21565b5116151538613fed565b9150506129cd613f0256feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220c633020dadd6beb370b79705991da174e51cf984afd892dc9ee50ab89d89323364736f6c63430008120033", "linkReferences": {}, "deployedLinkReferences": {} } diff --git a/src/artifacts/tapioca-bar/SGLCollateral.json b/src/artifacts/tapioca-bar/SGLCollateral.json index ddba8b28..acdfc38c 100644 --- a/src/artifacts/tapioca-bar/SGLCollateral.json +++ b/src/artifacts/tapioca-bar/SGLCollateral.json @@ -123,6 +123,25 @@ "name": "InterestElasticityUpdated", "type": "event" }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "oldVal", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newVal", + "type": "address" + } + ], + "name": "LeverageExecutorSet", + "type": "event" + }, { "anonymous": false, "inputs": [ @@ -1169,6 +1188,19 @@ "stateMutability": "view", "type": "function" }, + { + "inputs": [], + "name": "leverageExecutor", + "outputs": [ + { + "internalType": "contract ILeverageExecutor", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, { "inputs": [], "name": "liquidationBonusAmount", @@ -1581,6 +1613,19 @@ "stateMutability": "nonpayable", "type": "function" }, + { + "inputs": [ + { + "internalType": "contract ILeverageExecutor", + "name": "_executor", + "type": "address" + } + ], + "name": "setLeverageExecutor", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, { "inputs": [ { @@ -1909,8 +1954,8 @@ "type": "function" } ], - "bytecode": "0x6101408060405234620001e5576200001781620001ea565b601381526001602082017f546170696f63612053696e67756c617269747900000000000000000000000000815260206040516200005481620001ea565b8381520192603160f81b845251902091208160e052610100918183524660a0526040519160208301907f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f92838352604085015260608401524660808401523060a084015260a0835260c083019280841060018060401b03851117620001cf5760408490525190206080523060c052610120908152600580546001600160a01b0319163390811790915560007f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a362013880601b5562015f90601c55612710601d55612ee06020557f0bd4060688a1800ae986e4840aebc924bb40b5bf44de4583df2257220b54b77c6026557f7d1dc38e60930664f8cbf495da6556ca091d2f92d6550877750c049864b182306027556161a86028556032602f556139ca928362000207843960805183612b3c015260a05183612c07015260c05183612b06015260e05183612b8b01525182612bb101525181612b680152f35b634e487b7160e01b600052604160045260246000fd5b600080fd5b604081019081106001600160401b03821117620001cf5760405256fe608080604052600436101561001357600080fd5b600090813560e01c908162a02a20146120c45750806302ce728f1461209b57806306fdde0314611fe4578063078dfbe714611ee5578063095ea7b314611ebe5780630c4e84f014611da657806318160ddd14611d855780631c9e379b14611d4c5780631da8bf1014611c7857806323b872dd14611af1578063313ce56714611a5f578063331960ff14611a4157806334d441d014611a235780633644e51514611a0857806337b6b7b9146119ea57806338d52e0f146119c15780633ba0b9a9146119a35780633f741adb1461197e57806340626d8b1461196057806344de240a14611942578063473e3ce71461192457806348e4163e146118eb5780634d7f2a34146118cd5780634e71e0c81461181f578063529898f21461180257806352f353eb146117db57806355140232146117b457806355c2ab941461178a578063579354621461176c5780635dfe04e81461170d5780636c3d8b8f146116e457806370a08231146116ab578063727785471461167357806374645ff3146116485780637dc0d1d01461161f5780637ecebe00146115e65780637fa0b84e146115b4578063821226e8146115965780638285ef40146115645780638c5d0ed3146115465780638da5cb5b1461151d578063910dd7c814611304578063959916dc146112e657806395d89b411461122c57806399a97028146111fc5780639c5d7192146111de5780639e15e89f146111a3578063a9059cbb146110c0578063b0e21e8a146110a2578063b27c0e7414611067578063bb4cfe3b14611049578063cce19f8114610e5d578063ce8849ed14610e34578063d3fb2a38146109a4578063d505accf14610803578063d8dfeb45146107da578063dd62ed3e1461078b578063de40657714610762578063e0996cb614610744578063e30c39781461071b578063e9a49252146103cd578063ea64dd56146103af578063eec0f42e14610391578063f42760b714610373578063f8ba4cff14610357578063f9557ccb146103215763ffe04c661461030157600080fd5b3461031e578060031936011261031e576020602954604051908152f35b80fd5b503461031e578060031936011261031e57602454604080516001600160801b038316815260809290921c602083015290f35b0390f35b503461031e578060031936011261031e5761037061368d565b80f35b503461031e578060031936011261031e576020602a54604051908152f35b503461031e578060031936011261031e576020600c54604051908152f35b503461031e578060031936011261031e576020601f54604051908152f35b503461031e5760a036600319011261031e576103e761210c565b6103ef612122565b906103f861218f565b916064359160843593600260005260206007815261041e60ff6040600020541615612f02565b6001600160a01b039384169461043630871415612f3f565b861561069d575b6104478785612f8a565b861561061c575b5084875260188152604087206104658782546124bb565b905560155461047487826124bb565b601555600c5490888415610596575082866009541692604460405180958193627eeac760e11b835230600484015260248301525afa801561058b578990610557575b6104c092506124ae565b8611610523575b848752602581526040872090602754885252604086206104e88682546124bb565b90551561051e575080600954165b167f9ed03113de523cebfe5e49d5f8e12894b1c0d42ce805990461726444c90eab878480a480f35b6104f6565b6064906040519062461bcd60e51b82526004820152600d60248201526c0a68e987440e8dede40daeac6d609b1b6044820152fd5b508282813d8311610584575b61056d81836123a6565b8101031261057f576104c091516104b6565b600080fd5b503d610563565b6040513d8b823e3d90fd5b9190508560095416803b1561061857604051630208d92960e11b81526001600160a01b038716600482015230602482015260448101929092526064820189905282908290608490829084905af1801561060d576105f5575b50506104c7565b6105fe90612310565b6106095786386105ee565b8680fd5b6040513d84823e3d90fd5b8280fd5b908096508460095416916064600c546040519485938492638eb22cdd60e01b8452600484015260248301528b60448301525afa908115610692578791610665575b50943861044e565b90508581813d831161068b575b61067c81836123a6565b8101031261057f57513861065d565b503d610672565b6040513d89823e3d90fd5b9550836009541681600c54606460405180948193638eb22cdd60e01b835260048301528b60248301528c60448301525afa9081156107105788916106e3575b509561043d565b90508181813d8311610709575b6106fa81836123a6565b8101031261057f5751386106dc565b503d6106f0565b6040513d8a823e3d90fd5b503461031e578060031936011261031e576006546040516001600160a01b039091168152602090f35b503461031e578060031936011261031e576020601d54604051908152f35b503461031e578060031936011261031e576009546040516001600160a01b039091168152602090f35b503461031e57604036600319011261031e576107a561210c565b60406107af612122565b9260018060a01b03809316815260026020522091166000526020526020604060002054604051908152f35b503461031e578060031936011261031e57600b546040516001600160a01b039091168152602090f35b503461031e576108123661219e565b91839193959495421161095f5760018060a01b03928388169485600052600460205260406000209283546000198114610949576108f5956108ed956001830190556040519060208201927f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e2668452600060408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e081526108b18161236f565b5190206108bc612b03565b9060405190602082019261190160f01b845260228301526042820152604281526108e58161238b565b519020612dd8565b919091612cd9565b16036109045761037092612eab565b60405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152606490fd5b634e487b7160e01b600052601160045260246000fd5b60405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b503461031e5761016036600319011261031e576001600160a01b0360043581811690819003610618576024916001600160401b038335818111610e305736602382011215610e30578060040135918211610e305736858383010111610e30576044359383851680950361057f57610a20846005541633146123e2565b80610df2575b508482610c74575b50505081610c34575b505060643580610c1c575b5060843580610c04575b5060a43580610bed575b5060c43580610bc9575b5060e43580610ba5575b506101043580610b74575b506101243580610b01575b50610144359081610a8f578280f35b601e548210610aa25750601f5538808280f35b60849060326040519162461bcd60e51b8352602060048401528201527f4d61726b65743a206c69717569646174696f6e436f6c6c61746572616c697a616044820152711d1a5bdb94985d19481d1bdbc81cdb585b1b60721b6064820152fd5b610b10620186a082111561242d565b601f548111610b2257601e5538610a80565b60405162461bcd60e51b8152602060048201526025818401527f4d61726b65743a20636f6c6c61746572616c697a6174696f6e5261746520746f6044820152646f2062696760d81b6064820152608490fd5b806016547fae6e0ab3b95f0a53ff9660a390ccedcbbf1f2355dce974a9841af106fddcfaba8580a360165538610a75565b610bb3620186a0821061242d565b610bc0601b54821161242d565b601c5538610a6a565b610bd7620186a0821061242d565b610be4601c54821061242d565b601b5538610a60565b610bfb620186a0821061242d565b601d5538610a56565b610c13620186a082111561242d565b601a5538610a4c565b610c2b620186a082111561242d565b60195538610a42565b816008549182167f5a62d22209e370e38eea92cfddcd228e656e6ec139243392a760a7769f5877fd8680a36001600160a01b031916176008553880610a37565b8291610c81601054612251565b601f8111610d81575b508790601f8411600114610cef578893610ce2575b5050508160011b916000199060031b1c1916176010555b7fa6f004921c944d4b8bf6e38462b00f36a58d62495d56b51f571ab78f732c98158480a1388084610a2e565b0101359050843880610c9f565b60108952601f19841694507f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae67292509087908960205b878210610d625750508460019610610d46575b50505050811b01601055610cb6565b60001960f88660031b161c199201013516905538808681610d37565b8285019093013585556001949094019389929182019190810190610d24565b6010895290925090507f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae672601f840160051c810160208510610deb575b91849391601f8994920160051c01905b818110610dda5750610c8a565b898155859450889350600101610dcd565b5080610dbd565b600f80546001600160a01b0319169190911790557f0b2d6eb667d0522c3eb86e4288afecae6c11591ffd1345d4d12407e0598bca9b8680a138610a26565b8580fd5b503461031e578060031936011261031e576008546040516001600160a01b039091168152602090f35b503461031e57610e6c366121ed565b9092916003835260209160078352610e8b60ff60408620541615612f02565b610e93612766565b5050610e9d61368d565b610ea78183612f8a565b6001600160a01b0385811695909190610ec230881415612f3f565b828416928387526018865260408720610edc8482546124ae565b9055610eea836015546124ae565b6015556009541690600c5490823b1561104557604051630208d92960e11b81523060048201526001600160a01b039190911660248201526044810191909152606481018390529086908290608490829084905af1801561103a57611023575b50808596837f8ad4d3ff00da092c7ad9a573ea4f5f6a3dffc6712dc06d3f78f49b862297c40288610fbb9899a4818652602585526040862060275490818852865260408720548211600014610ffc57505084526025835260408420602754855283528360408120555b6011549061308e565b15610fc4575080f35b6064906040519062461bcd60e51b82526004820152601160248201527013585c9ad95d0e881a5b9cdbdb1d995b9d607a1b6044820152fd5b909186526025855260408620908652845261101c604086209182546124ae565b9055610fb2565b610fbb94956110328392612310565b959450610f49565b6040513d88823e3d90fd5b8780fd5b503461031e578060031936011261031e576020601e54604051908152f35b503461031e578060031936011261031e576060602354604051906001600160401b0380821683528160401c16602083015260801c6040820152f35b503461031e578060031936011261031e576020601a54604051908152f35b503461031e57604036600319011261031e576110da61210c565b60243580928115801590611191575b611121575b50506040519182526001600160a01b031690339060008051602061397583398151915290602090a3602060405160018152f35b3381526001602052604081205461113a83821015612c2d565b6001600160a01b0384169033829003611155575b50506110ee565b60409361116c91611167841515612c72565b6124ae565b3383526001602052838320558152206111868382546124bb565b90558138808061114e565b50336001600160a01b038416146110e9565b503461031e57604036600319011261031e5760606111cb6111c261210c565b602435906125fa565b9060405192835260208301526040820152f35b503461031e578060031936011261031e576020602b54604051908152f35b503461031e57604036600319011261031e57602061122461121b61210c565b602435906129d1565b604051908152f35b503461031e578060031936011261031e57808060018060a01b03600b541660405160208101906395d89b4160e01b82526004815261126981612339565b51915afa611275613779565b9150156112d55761128861035391613800565b6112c16023604051809362746d2d60e81b60208301526112b18151809260208686019101612138565b81010360038101845201826123a6565b60405191829160208352602083019061215b565b506103536112e16137a9565b611288565b503461031e578060031936011261031e576020602f54604051908152f35b503461031e57604036600319011261031e576004356001600160401b038111611519573660238201121561151957806004013582611341826123c7565b9261134f60405194856123a6565b82845260208401923660248284010111610618578060246020930185378401015260243561ffff81168103611515576101009182848051810103126115115761139790612759565b6113a360408501612cb7565b916113b060608601612cb7565b9460808101519460a0820151926113c960c08401612ccb565b9160e08401519301519380421161095f5785156114ea577f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e266915b6001600160a01b0388168b52600460205260408b208054919060001983146114d6579161ffff611493989694926108ed98969460018401905560405194602086015216604084015260018060a01b038a16606084015260018060a01b038c1660808401528a60a084015260c083015260e082015260e081526114848161236f565b602081519101206108bc612b03565b6001600160a01b0383811691160361090457156114c057610370926001600160a01b039081169116612eab565b610370926001600160a01b039081169116612e5d565b634e487b7160e01b8d52601160045260248dfd5b7f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d691611403565b8480fd5b8380fd5b5080fd5b503461031e578060031936011261031e576005546040516001600160a01b039091168152602090f35b503461031e578060031936011261031e576020601b54604051908152f35b503461031e578060031936011261031e57601454604080516001600160801b038316815260809290921c602083015290f35b503461031e578060031936011261031e576020602d54604051908152f35b503461031e57604036600319011261031e576115db6115d161210c565b6024359033612e5d565b602060405160018152f35b503461031e57602036600319011261031e576020906040906001600160a01b0361160e61210c565b168152600483522054604051908152f35b503461031e578060031936011261031e57600f546040516001600160a01b039091168152602090f35b503461031e578060031936011261031e576103536040516112c18161166c8161228b565b03826123a6565b503461031e57602036600319011261031e5760043590600982101561031e57602060ff61169f84612222565b54166040519015158152f35b503461031e57602036600319011261031e576020906040906001600160a01b036116d361210c565b168152600183522054604051908152f35b503461031e578060031936011261031e57600a546040516001600160a01b039091168152602090f35b503461031e578060031936011261031e57611726613190565b5060806117316131c8565b509350505050604051916001600160401b0380825116845260208201511660208401526040600180861b039101511660408301526060820152f35b503461031e578060031936011261031e576020601c54604051908152f35b503461031e578060031936011261031e5760206001600160401b03602c5460401c16604051908152f35b503461031e578060031936011261031e5760206001600160401b03602c5416604051908152f35b503461031e578060031936011261031e5760206001600160401b03602e5416604051908152f35b503461031e578060031936011261031e5760208054604051908152f35b503461031e578060031936011261031e576006546001600160a01b03908181163381900361188957806005549384167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08680a36001600160a01b0319928316176005551660065580f35b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b503461031e578060031936011261031e576020602854604051908152f35b503461031e57602036600319011261031e576020906040906001600160a01b0361191361210c565b168152601783522054604051908152f35b503461031e578060031936011261031e576020601554604051908152f35b503461031e578060031936011261031e576020600e54604051908152f35b503461031e578060031936011261031e576020601654604051908152f35b503461031e57606036600319011261031e5760206112246044356024356004356124e1565b503461031e578060031936011261031e576020601154604051908152f35b503461031e578060031936011261031e57600d546040516001600160a01b039091168152602090f35b503461031e578060031936011261031e576020601254604051908152f35b503461031e578060031936011261031e576020611224612b03565b503461031e578060031936011261031e576020601954604051908152f35b503461031e578060031936011261031e576020601354604051908152f35b503461031e578060031936011261031e57808060018060a01b03600d5416604051602081019063313ce56760e01b825260048152611a9c81612339565b51915afa90611aa9613779565b9180611ae6575b15611adb5760208280518101031261031e5750611ad06020809201612ccb565b60ff60405191168152f35b505060206012611ad0565b506020825114611ab0565b503461031e57611b00366121ed565b919282611b3c575b506040519182526001600160a01b0390811692169060008051602061397583398151915290602090a3602060405160018152f35b6001600160a01b03848116808352600160209081526040842054928690611b6582861015612c2d565b861693848403611b7a575b5050505050611b08565b838652600283526040808720338852845286205460018101611be4575b5092600160209693611bc287946040976111676000805160206139758339815191529c9a1515612c72565b9285525283832055815220611bd88582546124bb565b90559138808581611b70565b90918110611c385792600160209693611bc28a6000805160206139758339815191529a9895611c158260409a6124ae565b86895260028552898920338a528552898920559497509497995050939650611b97565b60405162461bcd60e51b815260048101849052601860248201527745524332303a20616c6c6f77616e636520746f6f206c6f7760401b6044820152606490fd5b503461031e57611c873661219e565b9083959495421161095f576001600160a01b03878116808a52600460205260408a2080549196929592906000198314611d385782611d299694928d9260016108ed98960190556040519160208301937f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d6855260408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e081526108b18161236f565b16036109045761037092612e5d565b634e487b7160e01b8c52601160045260248cfd5b503461031e57602036600319011261031e576020906040906001600160a01b03611d7461210c565b168152601883522054604051908152f35b503461031e578060031936011261031e57602060245460801c604051908152f35b503461031e57604036600319011261031e57600435600981101561151957611dcc612180565b6008549091906001600160a01b03163303611e825760ff611dec82612222565b54161515911515918214611e4857808260ff611e0a611e3894612222565b54161515827feeec81de25875ce1725479bb76f720a8defdb43dea041919ae37bb4aae9847c08780a4612222565b9060ff8019835416911617905580f35b60405162461bcd60e51b81526020600482015260126024820152714d61726b65743a2073616d6520737461746560701b6044820152606490fd5b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881d5b985d5d1a1bdc9a5e995960621b6044820152606490fd5b503461031e57604036600319011261031e576115db611edb61210c565b6024359033612eab565b503461031e57606036600319011261031e57611eff61210c565b611f07612180565b611f0f61218f565b9060018060a01b03928391611f29836005541633146123e2565b15611fcd571690811590811591611fc5575b5015611f8857806005549283167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08580a36001600160a01b03199182161760055560068054909116905580f35b60405162461bcd60e51b81526020600482015260156024820152744f776e61626c653a207a65726f206164647265737360581b6044820152606490fd5b905038611f3b565b9150501660018060a01b0319600654161760065580f35b503461031e578060031936011261031e57808060018060a01b03600b541660405160208101906306fdde0360e01b82526004815261202181612339565b51915afa61202d613779565b91501561208a5761204061035391613800565b6112c16034604051809373546170696f63612053696e67756c61726974792d60601b602083015261207a8151809260208686019101612138565b81010360148101845201826123a6565b506103536120966137a9565b612040565b503461031e578060031936011261031e5760406120b6612766565b825191151582526020820152f35b9050346115195760403660031901126115195760406020926120e461210c565b6120ec612122565b6001600160a01b0391821683526003865283832091168252845220548152f35b600435906001600160a01b038216820361057f57565b602435906001600160a01b038216820361057f57565b60005b83811061214b5750506000910152565b818101518382015260200161213b565b9060209161217481518092818552858086019101612138565b601f01601f1916010190565b60243590811515820361057f57565b60443590811515820361057f57565b60e090600319011261057f576001600160a01b0390600435828116810361057f5791602435908116810361057f5790604435906064359060843560ff8116810361057f579060a4359060c43590565b606090600319011261057f576001600160a01b0390600435828116810361057f5791602435908116810361057f579060443590565b600981101561223b576000526007602052604060002090565b634e487b7160e01b600052602160045260246000fd5b90600182811c92168015612281575b602083101461226b57565b634e487b7160e01b600052602260045260246000fd5b91607f1691612260565b6010546000929161229b82612251565b9081815260019283811690816000146122f557506001146122bb57505050565b9092935060106000526020928360002092846000945b8386106122e15750505050010190565b8054858701830152940193859082016122d1565b91935050602093945060ff191683830152151560051b010190565b6001600160401b03811161232357604052565b634e487b7160e01b600052604160045260246000fd5b604081019081106001600160401b0382111761232357604052565b606081019081106001600160401b0382111761232357604052565b61010081019081106001600160401b0382111761232357604052565b608081019081106001600160401b0382111761232357604052565b90601f801991011681019081106001600160401b0382111761232357604052565b6001600160401b03811161232357601f01601f191660200190565b156123e957565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b1561243457565b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881b9bdd081d985b1a59607a1b6044820152606490fd5b8181029291811591840414171561094957565b811561248a570490565b634e487b7160e01b600052601260045260246000fd5b604d811161094957600a0a90565b9190820391821161094957565b9190820180921161094957565b8181039291600013801582851316918412161761094957565b60145491929161252a9161251b9161251191612507906001600160801b0383169061246d565b9060801c90612480565b93601f549061246d565b612524836124a0565b90612480565b8083106125f25761253e61257a91846124ae565b9161257561256f612566601e54612560612557866124a0565b602054906124bb565b9061246d565b612524846124a0565b916124a0565b6124c8565b6509184e72a0009081810291818305149015171561094957670de0b6b3a76400009182810292818405149015171561094957801561248a57600160ff1b9180831460001983141661094957059060008212156125eb57811461094957600003905b8082116125e6575090565b905090565b50906125db565b505050600090565b9160018060a01b03809316916000938385526020601781526040918287205490811561274c578783855161262d81612339565b828152015261263a6131c8565b505050505091905061264d8615156128ce565b6009541683600c54898b52601882526064878c2054918851948593849263442c159960e01b8452600484015260248301528d60448301525afa90811561274257899161270f575b50916126ef61270397989994926126ca886126c56126bc601898620186a0602154049061246d565b601e549061246d565b612480565b815190936001600160801b039186916126e59184169061246d565b9201511690612480565b81811061270757035b97835252205461291a565b9091565b5050826126f8565b90508381813d831161273b575b61272681836123a6565b8101031261273757516126ef612694565b8880fd5b503d61271c565b85513d8b823e3d90fd5b5086955085949350505050565b5190811515820361057f57565b600f546040805163d6d7d52560e01b8152602060048201529290916001600160a01b03168284806127996024820161228b565b0381600080955af180156128c25781948291612886575b509284156128295783156127ef57507f9f9192b5edb17356c524e08d9e025c8e2f6307e6ea52fb7968faa3081f51c3c883918260115580a25b42601355565b5162461bcd60e51b81526020600482015260146024820152734d61726b65743a20696e76616c6964207261746560601b6044820152606490fd5b9192505061283c601354601254906124bb565b421161284c5750601154906127e9565b5162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881c985d19481d1bdbc81bdb1960621b6044820152606490fd5b809550848092503d83116128bb575b61289f81836123a6565b8101031261031e5760206128b285612759565b940151386127b0565b503d612895565b508251903d90823e3d90fd5b156128d557565b60405162461bcd60e51b815260206004820152601e60248201527f4d61726b65743a2065786368616e676552617465206e6f742076616c696400006044820152606490fd5b6129258215156128ce565b602060018060a01b0360095416916064600c54604051948593849263442c159960e01b845260048401526024830152600060448301525afa9081156129c557600091612992575b50906126c561297e926021549061246d565b620186a061298e601e548361246d565b0491565b906020823d82116129bd575b816129ab602093836123a6565b8101031261031e5750516126c561296c565b3d915061299e565b6040513d6000823e3d90fd5b6001600160a01b031660008181526018602052604081205490926129f49161291a565b918352601760205260408320548015612afd578115612afd57818110612afd5782811015612af357601454612a3d91839161116791612507906001600160801b0383169061246d565b90620186a09283830292808404851490151715612adf57612a629291612524916124ae565b91601b5491601c5493612a7585856124c8565b80820291848212600160ff1b821416612adf578183051490151715612acb5705818482019485129112908015821691151617612ab757508082126125e6575090565b634e487b7160e01b81526011600452602490fd5b634e487b7160e01b83526011600452602483fd5b634e487b7160e01b85526011600452602485fd5b50505050601b5490565b50505090565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03161480612c04575b15612b5e577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f000000000000000000000000000000000000000000000000000000000000000082527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a0815260c081018181106001600160401b038211176123235760405251902090565b507f00000000000000000000000000000000000000000000000000000000000000004614612b35565b15612c3457565b60405162461bcd60e51b815260206004820152601660248201527545524332303a2062616c616e636520746f6f206c6f7760501b6044820152606490fd5b15612c7957565b60405162461bcd60e51b815260206004820152601660248201527545524332303a206e6f207a65726f206164647265737360501b6044820152606490fd5b51906001600160a01b038216820361057f57565b519060ff8216820361057f57565b600581101561223b5780612cea5750565b60018103612d325760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b6044820152606490fd5b60028103612d7f5760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606490fd5b600314612d8857565b60405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608490fd5b9291906fa2a8918ca85bafe22016d0b997e4df60600160ff1b038311612e515791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa15612e445781516001600160a01b03811615612e3e579190565b50600190565b50604051903d90823e3d90fd5b50505050600090600390565b7fe50de2333c10a9502fcb1d8ae13a51bbf423153dfc63c2b8997665b32154afc360018060a01b038092169160009083825260036020526040822094169384825260205284604082205580a4565b909160207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259160018060a01b03809416938460005260028352604060002095169485600052825280604060002055604051908152a3565b15612f0957565b60405162461bcd60e51b815260206004820152600e60248201526d13585c9ad95d0e881c185d5cd95960921b6044820152606490fd5b15612f4657565b606460405162461bcd60e51b815260206004820152602060248201527f4d61726b65743a2063616e6e6f742065786563757465206f6e20697473656c666044820152fd5b6001600160a01b0316338103612f9e575050565b60008181526020906003825260409182822033835281528483832054106130085783825260038152828220338352815282822054600101612fe1575b5050505050565b612ffc938252600381528282209033835252209182546124ae565b90553880808080612fda565b60649083519062461bcd60e51b82526004820152601460248201527313585c9ad95d0e881b9bdd08185c1c1c9bdd995960621b6044820152fd5b6040519061304f82612339565b6014546001600160801b038116835260801c6020830152565b6040519061307582612339565b6024546001600160801b038116835260801c6020830152565b919060018060a01b03806000941684526020601781526040852054908115613186576018815260408620548015612fda57816130c8613042565b9460095416916064600c54604051948593849263442c159960e01b8452600484015260248301528b60448301525afa96871561317a578097613144575b50506126e56131246126bc61313f969798620186a0602154049061246d565b9561313a60018060801b0394858751169061246d565b61246d565b111590565b9096508187813d8311613173575b61315c81836123a6565b8101031261031e57509451946126e5613124613105565b503d613152565b604051903d90823e3d90fd5b5060019450505050565b6040519061319d82612354565b60006040838281528260208201520152565b6001600160801b03918216908216019190821161094957565b6131d0613190565b50600060206040516131e181612339565b8281520152600060206040516131f681612339565b828152015260405161320781612354565b6023546001600160401b03811682526001600160401b038160401c16602083015260801c6040820152809161323a613042565b91613243613068565b600954600e54825160405163442c159960e01b8152600481018390526001600160801b03909116602482015260006044820181905293959194919391926001600160a01b031690602081606481855afa80156129c557600090613659575b88516132b792506001600160801b0316906124bb565b80613624575060005b806132d86001600160401b03602087015116426124ae565b9485156135fa575050426001600160401b031660208a8101919091528801516001600160801b0316156135b057506020670de0b6b3a76400006133358561313a8c6001600160401b038d60018060801b039051169151169061246d565b895191900496906001600160801b039061335490828a169083166131af565b168952875160405163442c159960e01b815260048101929092526001600160801b031660248201526000604482015291829060649082905afa80156129c55760009061357c575b87516133b192506001600160801b0316906124bb565b926133df846126c5620186a06133c9601a548a61246d565b60208c01516001600160801b031691900461246d565b6040890180519195916001600160801b03808816929161340290849083166131af565b16905260208801805190916001600160801b0391613422919083166131af565b16905280613547575060005b602954909384828110156134c25761344690836124ae565b90670de0b6b3a7640000820291808304670de0b6b3a76400001490151715610949576126c561349a6134946134866001600160401b03966134a496612480565b9361313a602d54958061246d565b836124bb565b91848d511661246d565b168089526001600160401b03602c54168091106134be5750565b8852565b909150602a548082116134d457505050565b6134dd916124ae565b670de0b6b3a7640000810290808204670de0b6b3a76400001490151715610949576001600160401b03916126c561352061349461348661352995602b5490612480565b848d511661246d565b81602c5460401c1680821161353f575b50168852565b905038613539565b87516001600160801b0316670de0b6b3a76400008181029291808404909114901517156109495761357791612480565b61342e565b506020813d6020116135a8575b81613596602093836123a6565b8101031261057f576133b1905161339b565b3d9150613589565b9697939450509350506001600160401b038151166001600160401b03602e54168091036135ee575b5093926135e3613068565b926000926000929190565b815260019250386135d8565b97509850505050509250509161360e613042565b91613617613068565b9160009160009190600090565b87516001600160801b0316670de0b6b3a76400008181029291808404909114901517156109495761365491612480565b6132c0565b506020813d602011613685575b81613673602093836123a6565b8101031261057f576132b790516132a1565b3d9150613666565b602060406136996131c8565b9397959390929015613740575050506001600160401b03602e54166000807f33af5ce86e8438eff54589f85332916444457dfa8685493fbd579b809097026b868851838152a45b6001600160401b03815116838201519160018060801b0319958691015160801b16916001600160401b0360401b9060401b16171760235560018060801b039083838383511692015160801b161760145583511692015160801b1617602455565b7f33af5ce86e8438eff54589f85332916444457dfa8685493fbd579b809097026b866001600160401b03865116948951908152a46136e0565b3d156137a4573d9061378a826123c7565b9161379860405193846123a6565b82523d6000602084013e565b606090565b604051906137b682612339565b60038252623f3f3f60e81b6020830152565b9081518110156137d9570160200190565b634e487b7160e01b600052603260045260246000fd5b60ff1660ff81146109495760010190565b80516040811061387b5750805181019060208181840193031261057f576020810151906001600160401b03821161057f570181603f8201121561057f57602081015161384b816123c7565b9261385960405194856123a6565b8184526040828401011161057f57613878916040602085019101612138565b90565b602092908303613969576000805b60ff8116858110908161394a575b50156138ab576138a6906137ef565b613889565b9260ff809416926138bb846123c7565b936138c960405195866123a6565b8085526138d8601f19916123c7565b013687860137825b8581168781108061392d575b156139225761391d91906139176001600160f81b031961390c83886137c8565b5116871a91886137c8565b536137ef565b6138e0565b505094505050905090565b506001600160f81b031961394182866137c8565b511615156138ec565b6001600160f81b0319915061395f90866137c8565b5116151538613897565b9150506138786137a956feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220b1bf97fefb2a28e789adf6d8f76790365fe56f5052cdc53826c08fce9eb6784664736f6c63430008120033", - "deployedBytecode": "0x608080604052600436101561001357600080fd5b600090813560e01c908162a02a20146120c45750806302ce728f1461209b57806306fdde0314611fe4578063078dfbe714611ee5578063095ea7b314611ebe5780630c4e84f014611da657806318160ddd14611d855780631c9e379b14611d4c5780631da8bf1014611c7857806323b872dd14611af1578063313ce56714611a5f578063331960ff14611a4157806334d441d014611a235780633644e51514611a0857806337b6b7b9146119ea57806338d52e0f146119c15780633ba0b9a9146119a35780633f741adb1461197e57806340626d8b1461196057806344de240a14611942578063473e3ce71461192457806348e4163e146118eb5780634d7f2a34146118cd5780634e71e0c81461181f578063529898f21461180257806352f353eb146117db57806355140232146117b457806355c2ab941461178a578063579354621461176c5780635dfe04e81461170d5780636c3d8b8f146116e457806370a08231146116ab578063727785471461167357806374645ff3146116485780637dc0d1d01461161f5780637ecebe00146115e65780637fa0b84e146115b4578063821226e8146115965780638285ef40146115645780638c5d0ed3146115465780638da5cb5b1461151d578063910dd7c814611304578063959916dc146112e657806395d89b411461122c57806399a97028146111fc5780639c5d7192146111de5780639e15e89f146111a3578063a9059cbb146110c0578063b0e21e8a146110a2578063b27c0e7414611067578063bb4cfe3b14611049578063cce19f8114610e5d578063ce8849ed14610e34578063d3fb2a38146109a4578063d505accf14610803578063d8dfeb45146107da578063dd62ed3e1461078b578063de40657714610762578063e0996cb614610744578063e30c39781461071b578063e9a49252146103cd578063ea64dd56146103af578063eec0f42e14610391578063f42760b714610373578063f8ba4cff14610357578063f9557ccb146103215763ffe04c661461030157600080fd5b3461031e578060031936011261031e576020602954604051908152f35b80fd5b503461031e578060031936011261031e57602454604080516001600160801b038316815260809290921c602083015290f35b0390f35b503461031e578060031936011261031e5761037061368d565b80f35b503461031e578060031936011261031e576020602a54604051908152f35b503461031e578060031936011261031e576020600c54604051908152f35b503461031e578060031936011261031e576020601f54604051908152f35b503461031e5760a036600319011261031e576103e761210c565b6103ef612122565b906103f861218f565b916064359160843593600260005260206007815261041e60ff6040600020541615612f02565b6001600160a01b039384169461043630871415612f3f565b861561069d575b6104478785612f8a565b861561061c575b5084875260188152604087206104658782546124bb565b905560155461047487826124bb565b601555600c5490888415610596575082866009541692604460405180958193627eeac760e11b835230600484015260248301525afa801561058b578990610557575b6104c092506124ae565b8611610523575b848752602581526040872090602754885252604086206104e88682546124bb565b90551561051e575080600954165b167f9ed03113de523cebfe5e49d5f8e12894b1c0d42ce805990461726444c90eab878480a480f35b6104f6565b6064906040519062461bcd60e51b82526004820152600d60248201526c0a68e987440e8dede40daeac6d609b1b6044820152fd5b508282813d8311610584575b61056d81836123a6565b8101031261057f576104c091516104b6565b600080fd5b503d610563565b6040513d8b823e3d90fd5b9190508560095416803b1561061857604051630208d92960e11b81526001600160a01b038716600482015230602482015260448101929092526064820189905282908290608490829084905af1801561060d576105f5575b50506104c7565b6105fe90612310565b6106095786386105ee565b8680fd5b6040513d84823e3d90fd5b8280fd5b908096508460095416916064600c546040519485938492638eb22cdd60e01b8452600484015260248301528b60448301525afa908115610692578791610665575b50943861044e565b90508581813d831161068b575b61067c81836123a6565b8101031261057f57513861065d565b503d610672565b6040513d89823e3d90fd5b9550836009541681600c54606460405180948193638eb22cdd60e01b835260048301528b60248301528c60448301525afa9081156107105788916106e3575b509561043d565b90508181813d8311610709575b6106fa81836123a6565b8101031261057f5751386106dc565b503d6106f0565b6040513d8a823e3d90fd5b503461031e578060031936011261031e576006546040516001600160a01b039091168152602090f35b503461031e578060031936011261031e576020601d54604051908152f35b503461031e578060031936011261031e576009546040516001600160a01b039091168152602090f35b503461031e57604036600319011261031e576107a561210c565b60406107af612122565b9260018060a01b03809316815260026020522091166000526020526020604060002054604051908152f35b503461031e578060031936011261031e57600b546040516001600160a01b039091168152602090f35b503461031e576108123661219e565b91839193959495421161095f5760018060a01b03928388169485600052600460205260406000209283546000198114610949576108f5956108ed956001830190556040519060208201927f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e2668452600060408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e081526108b18161236f565b5190206108bc612b03565b9060405190602082019261190160f01b845260228301526042820152604281526108e58161238b565b519020612dd8565b919091612cd9565b16036109045761037092612eab565b60405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152606490fd5b634e487b7160e01b600052601160045260246000fd5b60405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b503461031e5761016036600319011261031e576001600160a01b0360043581811690819003610618576024916001600160401b038335818111610e305736602382011215610e30578060040135918211610e305736858383010111610e30576044359383851680950361057f57610a20846005541633146123e2565b80610df2575b508482610c74575b50505081610c34575b505060643580610c1c575b5060843580610c04575b5060a43580610bed575b5060c43580610bc9575b5060e43580610ba5575b506101043580610b74575b506101243580610b01575b50610144359081610a8f578280f35b601e548210610aa25750601f5538808280f35b60849060326040519162461bcd60e51b8352602060048401528201527f4d61726b65743a206c69717569646174696f6e436f6c6c61746572616c697a616044820152711d1a5bdb94985d19481d1bdbc81cdb585b1b60721b6064820152fd5b610b10620186a082111561242d565b601f548111610b2257601e5538610a80565b60405162461bcd60e51b8152602060048201526025818401527f4d61726b65743a20636f6c6c61746572616c697a6174696f6e5261746520746f6044820152646f2062696760d81b6064820152608490fd5b806016547fae6e0ab3b95f0a53ff9660a390ccedcbbf1f2355dce974a9841af106fddcfaba8580a360165538610a75565b610bb3620186a0821061242d565b610bc0601b54821161242d565b601c5538610a6a565b610bd7620186a0821061242d565b610be4601c54821061242d565b601b5538610a60565b610bfb620186a0821061242d565b601d5538610a56565b610c13620186a082111561242d565b601a5538610a4c565b610c2b620186a082111561242d565b60195538610a42565b816008549182167f5a62d22209e370e38eea92cfddcd228e656e6ec139243392a760a7769f5877fd8680a36001600160a01b031916176008553880610a37565b8291610c81601054612251565b601f8111610d81575b508790601f8411600114610cef578893610ce2575b5050508160011b916000199060031b1c1916176010555b7fa6f004921c944d4b8bf6e38462b00f36a58d62495d56b51f571ab78f732c98158480a1388084610a2e565b0101359050843880610c9f565b60108952601f19841694507f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae67292509087908960205b878210610d625750508460019610610d46575b50505050811b01601055610cb6565b60001960f88660031b161c199201013516905538808681610d37565b8285019093013585556001949094019389929182019190810190610d24565b6010895290925090507f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae672601f840160051c810160208510610deb575b91849391601f8994920160051c01905b818110610dda5750610c8a565b898155859450889350600101610dcd565b5080610dbd565b600f80546001600160a01b0319169190911790557f0b2d6eb667d0522c3eb86e4288afecae6c11591ffd1345d4d12407e0598bca9b8680a138610a26565b8580fd5b503461031e578060031936011261031e576008546040516001600160a01b039091168152602090f35b503461031e57610e6c366121ed565b9092916003835260209160078352610e8b60ff60408620541615612f02565b610e93612766565b5050610e9d61368d565b610ea78183612f8a565b6001600160a01b0385811695909190610ec230881415612f3f565b828416928387526018865260408720610edc8482546124ae565b9055610eea836015546124ae565b6015556009541690600c5490823b1561104557604051630208d92960e11b81523060048201526001600160a01b039190911660248201526044810191909152606481018390529086908290608490829084905af1801561103a57611023575b50808596837f8ad4d3ff00da092c7ad9a573ea4f5f6a3dffc6712dc06d3f78f49b862297c40288610fbb9899a4818652602585526040862060275490818852865260408720548211600014610ffc57505084526025835260408420602754855283528360408120555b6011549061308e565b15610fc4575080f35b6064906040519062461bcd60e51b82526004820152601160248201527013585c9ad95d0e881a5b9cdbdb1d995b9d607a1b6044820152fd5b909186526025855260408620908652845261101c604086209182546124ae565b9055610fb2565b610fbb94956110328392612310565b959450610f49565b6040513d88823e3d90fd5b8780fd5b503461031e578060031936011261031e576020601e54604051908152f35b503461031e578060031936011261031e576060602354604051906001600160401b0380821683528160401c16602083015260801c6040820152f35b503461031e578060031936011261031e576020601a54604051908152f35b503461031e57604036600319011261031e576110da61210c565b60243580928115801590611191575b611121575b50506040519182526001600160a01b031690339060008051602061397583398151915290602090a3602060405160018152f35b3381526001602052604081205461113a83821015612c2d565b6001600160a01b0384169033829003611155575b50506110ee565b60409361116c91611167841515612c72565b6124ae565b3383526001602052838320558152206111868382546124bb565b90558138808061114e565b50336001600160a01b038416146110e9565b503461031e57604036600319011261031e5760606111cb6111c261210c565b602435906125fa565b9060405192835260208301526040820152f35b503461031e578060031936011261031e576020602b54604051908152f35b503461031e57604036600319011261031e57602061122461121b61210c565b602435906129d1565b604051908152f35b503461031e578060031936011261031e57808060018060a01b03600b541660405160208101906395d89b4160e01b82526004815261126981612339565b51915afa611275613779565b9150156112d55761128861035391613800565b6112c16023604051809362746d2d60e81b60208301526112b18151809260208686019101612138565b81010360038101845201826123a6565b60405191829160208352602083019061215b565b506103536112e16137a9565b611288565b503461031e578060031936011261031e576020602f54604051908152f35b503461031e57604036600319011261031e576004356001600160401b038111611519573660238201121561151957806004013582611341826123c7565b9261134f60405194856123a6565b82845260208401923660248284010111610618578060246020930185378401015260243561ffff81168103611515576101009182848051810103126115115761139790612759565b6113a360408501612cb7565b916113b060608601612cb7565b9460808101519460a0820151926113c960c08401612ccb565b9160e08401519301519380421161095f5785156114ea577f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e266915b6001600160a01b0388168b52600460205260408b208054919060001983146114d6579161ffff611493989694926108ed98969460018401905560405194602086015216604084015260018060a01b038a16606084015260018060a01b038c1660808401528a60a084015260c083015260e082015260e081526114848161236f565b602081519101206108bc612b03565b6001600160a01b0383811691160361090457156114c057610370926001600160a01b039081169116612eab565b610370926001600160a01b039081169116612e5d565b634e487b7160e01b8d52601160045260248dfd5b7f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d691611403565b8480fd5b8380fd5b5080fd5b503461031e578060031936011261031e576005546040516001600160a01b039091168152602090f35b503461031e578060031936011261031e576020601b54604051908152f35b503461031e578060031936011261031e57601454604080516001600160801b038316815260809290921c602083015290f35b503461031e578060031936011261031e576020602d54604051908152f35b503461031e57604036600319011261031e576115db6115d161210c565b6024359033612e5d565b602060405160018152f35b503461031e57602036600319011261031e576020906040906001600160a01b0361160e61210c565b168152600483522054604051908152f35b503461031e578060031936011261031e57600f546040516001600160a01b039091168152602090f35b503461031e578060031936011261031e576103536040516112c18161166c8161228b565b03826123a6565b503461031e57602036600319011261031e5760043590600982101561031e57602060ff61169f84612222565b54166040519015158152f35b503461031e57602036600319011261031e576020906040906001600160a01b036116d361210c565b168152600183522054604051908152f35b503461031e578060031936011261031e57600a546040516001600160a01b039091168152602090f35b503461031e578060031936011261031e57611726613190565b5060806117316131c8565b509350505050604051916001600160401b0380825116845260208201511660208401526040600180861b039101511660408301526060820152f35b503461031e578060031936011261031e576020601c54604051908152f35b503461031e578060031936011261031e5760206001600160401b03602c5460401c16604051908152f35b503461031e578060031936011261031e5760206001600160401b03602c5416604051908152f35b503461031e578060031936011261031e5760206001600160401b03602e5416604051908152f35b503461031e578060031936011261031e5760208054604051908152f35b503461031e578060031936011261031e576006546001600160a01b03908181163381900361188957806005549384167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08680a36001600160a01b0319928316176005551660065580f35b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b503461031e578060031936011261031e576020602854604051908152f35b503461031e57602036600319011261031e576020906040906001600160a01b0361191361210c565b168152601783522054604051908152f35b503461031e578060031936011261031e576020601554604051908152f35b503461031e578060031936011261031e576020600e54604051908152f35b503461031e578060031936011261031e576020601654604051908152f35b503461031e57606036600319011261031e5760206112246044356024356004356124e1565b503461031e578060031936011261031e576020601154604051908152f35b503461031e578060031936011261031e57600d546040516001600160a01b039091168152602090f35b503461031e578060031936011261031e576020601254604051908152f35b503461031e578060031936011261031e576020611224612b03565b503461031e578060031936011261031e576020601954604051908152f35b503461031e578060031936011261031e576020601354604051908152f35b503461031e578060031936011261031e57808060018060a01b03600d5416604051602081019063313ce56760e01b825260048152611a9c81612339565b51915afa90611aa9613779565b9180611ae6575b15611adb5760208280518101031261031e5750611ad06020809201612ccb565b60ff60405191168152f35b505060206012611ad0565b506020825114611ab0565b503461031e57611b00366121ed565b919282611b3c575b506040519182526001600160a01b0390811692169060008051602061397583398151915290602090a3602060405160018152f35b6001600160a01b03848116808352600160209081526040842054928690611b6582861015612c2d565b861693848403611b7a575b5050505050611b08565b838652600283526040808720338852845286205460018101611be4575b5092600160209693611bc287946040976111676000805160206139758339815191529c9a1515612c72565b9285525283832055815220611bd88582546124bb565b90559138808581611b70565b90918110611c385792600160209693611bc28a6000805160206139758339815191529a9895611c158260409a6124ae565b86895260028552898920338a528552898920559497509497995050939650611b97565b60405162461bcd60e51b815260048101849052601860248201527745524332303a20616c6c6f77616e636520746f6f206c6f7760401b6044820152606490fd5b503461031e57611c873661219e565b9083959495421161095f576001600160a01b03878116808a52600460205260408a2080549196929592906000198314611d385782611d299694928d9260016108ed98960190556040519160208301937f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d6855260408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e081526108b18161236f565b16036109045761037092612e5d565b634e487b7160e01b8c52601160045260248cfd5b503461031e57602036600319011261031e576020906040906001600160a01b03611d7461210c565b168152601883522054604051908152f35b503461031e578060031936011261031e57602060245460801c604051908152f35b503461031e57604036600319011261031e57600435600981101561151957611dcc612180565b6008549091906001600160a01b03163303611e825760ff611dec82612222565b54161515911515918214611e4857808260ff611e0a611e3894612222565b54161515827feeec81de25875ce1725479bb76f720a8defdb43dea041919ae37bb4aae9847c08780a4612222565b9060ff8019835416911617905580f35b60405162461bcd60e51b81526020600482015260126024820152714d61726b65743a2073616d6520737461746560701b6044820152606490fd5b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881d5b985d5d1a1bdc9a5e995960621b6044820152606490fd5b503461031e57604036600319011261031e576115db611edb61210c565b6024359033612eab565b503461031e57606036600319011261031e57611eff61210c565b611f07612180565b611f0f61218f565b9060018060a01b03928391611f29836005541633146123e2565b15611fcd571690811590811591611fc5575b5015611f8857806005549283167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08580a36001600160a01b03199182161760055560068054909116905580f35b60405162461bcd60e51b81526020600482015260156024820152744f776e61626c653a207a65726f206164647265737360581b6044820152606490fd5b905038611f3b565b9150501660018060a01b0319600654161760065580f35b503461031e578060031936011261031e57808060018060a01b03600b541660405160208101906306fdde0360e01b82526004815261202181612339565b51915afa61202d613779565b91501561208a5761204061035391613800565b6112c16034604051809373546170696f63612053696e67756c61726974792d60601b602083015261207a8151809260208686019101612138565b81010360148101845201826123a6565b506103536120966137a9565b612040565b503461031e578060031936011261031e5760406120b6612766565b825191151582526020820152f35b9050346115195760403660031901126115195760406020926120e461210c565b6120ec612122565b6001600160a01b0391821683526003865283832091168252845220548152f35b600435906001600160a01b038216820361057f57565b602435906001600160a01b038216820361057f57565b60005b83811061214b5750506000910152565b818101518382015260200161213b565b9060209161217481518092818552858086019101612138565b601f01601f1916010190565b60243590811515820361057f57565b60443590811515820361057f57565b60e090600319011261057f576001600160a01b0390600435828116810361057f5791602435908116810361057f5790604435906064359060843560ff8116810361057f579060a4359060c43590565b606090600319011261057f576001600160a01b0390600435828116810361057f5791602435908116810361057f579060443590565b600981101561223b576000526007602052604060002090565b634e487b7160e01b600052602160045260246000fd5b90600182811c92168015612281575b602083101461226b57565b634e487b7160e01b600052602260045260246000fd5b91607f1691612260565b6010546000929161229b82612251565b9081815260019283811690816000146122f557506001146122bb57505050565b9092935060106000526020928360002092846000945b8386106122e15750505050010190565b8054858701830152940193859082016122d1565b91935050602093945060ff191683830152151560051b010190565b6001600160401b03811161232357604052565b634e487b7160e01b600052604160045260246000fd5b604081019081106001600160401b0382111761232357604052565b606081019081106001600160401b0382111761232357604052565b61010081019081106001600160401b0382111761232357604052565b608081019081106001600160401b0382111761232357604052565b90601f801991011681019081106001600160401b0382111761232357604052565b6001600160401b03811161232357601f01601f191660200190565b156123e957565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b1561243457565b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881b9bdd081d985b1a59607a1b6044820152606490fd5b8181029291811591840414171561094957565b811561248a570490565b634e487b7160e01b600052601260045260246000fd5b604d811161094957600a0a90565b9190820391821161094957565b9190820180921161094957565b8181039291600013801582851316918412161761094957565b60145491929161252a9161251b9161251191612507906001600160801b0383169061246d565b9060801c90612480565b93601f549061246d565b612524836124a0565b90612480565b8083106125f25761253e61257a91846124ae565b9161257561256f612566601e54612560612557866124a0565b602054906124bb565b9061246d565b612524846124a0565b916124a0565b6124c8565b6509184e72a0009081810291818305149015171561094957670de0b6b3a76400009182810292818405149015171561094957801561248a57600160ff1b9180831460001983141661094957059060008212156125eb57811461094957600003905b8082116125e6575090565b905090565b50906125db565b505050600090565b9160018060a01b03809316916000938385526020601781526040918287205490811561274c578783855161262d81612339565b828152015261263a6131c8565b505050505091905061264d8615156128ce565b6009541683600c54898b52601882526064878c2054918851948593849263442c159960e01b8452600484015260248301528d60448301525afa90811561274257899161270f575b50916126ef61270397989994926126ca886126c56126bc601898620186a0602154049061246d565b601e549061246d565b612480565b815190936001600160801b039186916126e59184169061246d565b9201511690612480565b81811061270757035b97835252205461291a565b9091565b5050826126f8565b90508381813d831161273b575b61272681836123a6565b8101031261273757516126ef612694565b8880fd5b503d61271c565b85513d8b823e3d90fd5b5086955085949350505050565b5190811515820361057f57565b600f546040805163d6d7d52560e01b8152602060048201529290916001600160a01b03168284806127996024820161228b565b0381600080955af180156128c25781948291612886575b509284156128295783156127ef57507f9f9192b5edb17356c524e08d9e025c8e2f6307e6ea52fb7968faa3081f51c3c883918260115580a25b42601355565b5162461bcd60e51b81526020600482015260146024820152734d61726b65743a20696e76616c6964207261746560601b6044820152606490fd5b9192505061283c601354601254906124bb565b421161284c5750601154906127e9565b5162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881c985d19481d1bdbc81bdb1960621b6044820152606490fd5b809550848092503d83116128bb575b61289f81836123a6565b8101031261031e5760206128b285612759565b940151386127b0565b503d612895565b508251903d90823e3d90fd5b156128d557565b60405162461bcd60e51b815260206004820152601e60248201527f4d61726b65743a2065786368616e676552617465206e6f742076616c696400006044820152606490fd5b6129258215156128ce565b602060018060a01b0360095416916064600c54604051948593849263442c159960e01b845260048401526024830152600060448301525afa9081156129c557600091612992575b50906126c561297e926021549061246d565b620186a061298e601e548361246d565b0491565b906020823d82116129bd575b816129ab602093836123a6565b8101031261031e5750516126c561296c565b3d915061299e565b6040513d6000823e3d90fd5b6001600160a01b031660008181526018602052604081205490926129f49161291a565b918352601760205260408320548015612afd578115612afd57818110612afd5782811015612af357601454612a3d91839161116791612507906001600160801b0383169061246d565b90620186a09283830292808404851490151715612adf57612a629291612524916124ae565b91601b5491601c5493612a7585856124c8565b80820291848212600160ff1b821416612adf578183051490151715612acb5705818482019485129112908015821691151617612ab757508082126125e6575090565b634e487b7160e01b81526011600452602490fd5b634e487b7160e01b83526011600452602483fd5b634e487b7160e01b85526011600452602485fd5b50505050601b5490565b50505090565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03161480612c04575b15612b5e577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f000000000000000000000000000000000000000000000000000000000000000082527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a0815260c081018181106001600160401b038211176123235760405251902090565b507f00000000000000000000000000000000000000000000000000000000000000004614612b35565b15612c3457565b60405162461bcd60e51b815260206004820152601660248201527545524332303a2062616c616e636520746f6f206c6f7760501b6044820152606490fd5b15612c7957565b60405162461bcd60e51b815260206004820152601660248201527545524332303a206e6f207a65726f206164647265737360501b6044820152606490fd5b51906001600160a01b038216820361057f57565b519060ff8216820361057f57565b600581101561223b5780612cea5750565b60018103612d325760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b6044820152606490fd5b60028103612d7f5760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606490fd5b600314612d8857565b60405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608490fd5b9291906fa2a8918ca85bafe22016d0b997e4df60600160ff1b038311612e515791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa15612e445781516001600160a01b03811615612e3e579190565b50600190565b50604051903d90823e3d90fd5b50505050600090600390565b7fe50de2333c10a9502fcb1d8ae13a51bbf423153dfc63c2b8997665b32154afc360018060a01b038092169160009083825260036020526040822094169384825260205284604082205580a4565b909160207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259160018060a01b03809416938460005260028352604060002095169485600052825280604060002055604051908152a3565b15612f0957565b60405162461bcd60e51b815260206004820152600e60248201526d13585c9ad95d0e881c185d5cd95960921b6044820152606490fd5b15612f4657565b606460405162461bcd60e51b815260206004820152602060248201527f4d61726b65743a2063616e6e6f742065786563757465206f6e20697473656c666044820152fd5b6001600160a01b0316338103612f9e575050565b60008181526020906003825260409182822033835281528483832054106130085783825260038152828220338352815282822054600101612fe1575b5050505050565b612ffc938252600381528282209033835252209182546124ae565b90553880808080612fda565b60649083519062461bcd60e51b82526004820152601460248201527313585c9ad95d0e881b9bdd08185c1c1c9bdd995960621b6044820152fd5b6040519061304f82612339565b6014546001600160801b038116835260801c6020830152565b6040519061307582612339565b6024546001600160801b038116835260801c6020830152565b919060018060a01b03806000941684526020601781526040852054908115613186576018815260408620548015612fda57816130c8613042565b9460095416916064600c54604051948593849263442c159960e01b8452600484015260248301528b60448301525afa96871561317a578097613144575b50506126e56131246126bc61313f969798620186a0602154049061246d565b9561313a60018060801b0394858751169061246d565b61246d565b111590565b9096508187813d8311613173575b61315c81836123a6565b8101031261031e57509451946126e5613124613105565b503d613152565b604051903d90823e3d90fd5b5060019450505050565b6040519061319d82612354565b60006040838281528260208201520152565b6001600160801b03918216908216019190821161094957565b6131d0613190565b50600060206040516131e181612339565b8281520152600060206040516131f681612339565b828152015260405161320781612354565b6023546001600160401b03811682526001600160401b038160401c16602083015260801c6040820152809161323a613042565b91613243613068565b600954600e54825160405163442c159960e01b8152600481018390526001600160801b03909116602482015260006044820181905293959194919391926001600160a01b031690602081606481855afa80156129c557600090613659575b88516132b792506001600160801b0316906124bb565b80613624575060005b806132d86001600160401b03602087015116426124ae565b9485156135fa575050426001600160401b031660208a8101919091528801516001600160801b0316156135b057506020670de0b6b3a76400006133358561313a8c6001600160401b038d60018060801b039051169151169061246d565b895191900496906001600160801b039061335490828a169083166131af565b168952875160405163442c159960e01b815260048101929092526001600160801b031660248201526000604482015291829060649082905afa80156129c55760009061357c575b87516133b192506001600160801b0316906124bb565b926133df846126c5620186a06133c9601a548a61246d565b60208c01516001600160801b031691900461246d565b6040890180519195916001600160801b03808816929161340290849083166131af565b16905260208801805190916001600160801b0391613422919083166131af565b16905280613547575060005b602954909384828110156134c25761344690836124ae565b90670de0b6b3a7640000820291808304670de0b6b3a76400001490151715610949576126c561349a6134946134866001600160401b03966134a496612480565b9361313a602d54958061246d565b836124bb565b91848d511661246d565b168089526001600160401b03602c54168091106134be5750565b8852565b909150602a548082116134d457505050565b6134dd916124ae565b670de0b6b3a7640000810290808204670de0b6b3a76400001490151715610949576001600160401b03916126c561352061349461348661352995602b5490612480565b848d511661246d565b81602c5460401c1680821161353f575b50168852565b905038613539565b87516001600160801b0316670de0b6b3a76400008181029291808404909114901517156109495761357791612480565b61342e565b506020813d6020116135a8575b81613596602093836123a6565b8101031261057f576133b1905161339b565b3d9150613589565b9697939450509350506001600160401b038151166001600160401b03602e54168091036135ee575b5093926135e3613068565b926000926000929190565b815260019250386135d8565b97509850505050509250509161360e613042565b91613617613068565b9160009160009190600090565b87516001600160801b0316670de0b6b3a76400008181029291808404909114901517156109495761365491612480565b6132c0565b506020813d602011613685575b81613673602093836123a6565b8101031261057f576132b790516132a1565b3d9150613666565b602060406136996131c8565b9397959390929015613740575050506001600160401b03602e54166000807f33af5ce86e8438eff54589f85332916444457dfa8685493fbd579b809097026b868851838152a45b6001600160401b03815116838201519160018060801b0319958691015160801b16916001600160401b0360401b9060401b16171760235560018060801b039083838383511692015160801b161760145583511692015160801b1617602455565b7f33af5ce86e8438eff54589f85332916444457dfa8685493fbd579b809097026b866001600160401b03865116948951908152a46136e0565b3d156137a4573d9061378a826123c7565b9161379860405193846123a6565b82523d6000602084013e565b606090565b604051906137b682612339565b60038252623f3f3f60e81b6020830152565b9081518110156137d9570160200190565b634e487b7160e01b600052603260045260246000fd5b60ff1660ff81146109495760010190565b80516040811061387b5750805181019060208181840193031261057f576020810151906001600160401b03821161057f570181603f8201121561057f57602081015161384b816123c7565b9261385960405194856123a6565b8184526040828401011161057f57613878916040602085019101612138565b90565b602092908303613969576000805b60ff8116858110908161394a575b50156138ab576138a6906137ef565b613889565b9260ff809416926138bb846123c7565b936138c960405195866123a6565b8085526138d8601f19916123c7565b013687860137825b8581168781108061392d575b156139225761391d91906139176001600160f81b031961390c83886137c8565b5116871a91886137c8565b536137ef565b6138e0565b505094505050905090565b506001600160f81b031961394182866137c8565b511615156138ec565b6001600160f81b0319915061395f90866137c8565b5116151538613897565b9150506138786137a956feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220b1bf97fefb2a28e789adf6d8f76790365fe56f5052cdc53826c08fce9eb6784664736f6c63430008120033", + "bytecode": "0x6101408060405234620001e5576200001781620001ea565b601381526001602082017f546170696f63612053696e67756c617269747900000000000000000000000000815260206040516200005481620001ea565b8381520192603160f81b845251902091208160e052610100918183524660a0526040519160208301907f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f92838352604085015260608401524660808401523060a084015260a0835260c083019280841060018060401b03851117620001cf5760408490525190206080523060c052610120908152600580546001600160a01b0319163390811790915560007f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a362013880601b5562015f90601c55612710601d55612ee06020557f0bd4060688a1800ae986e4840aebc924bb40b5bf44de4583df2257220b54b77c6027557f7d1dc38e60930664f8cbf495da6556ca091d2f92d6550877750c049864b182306028556161a86029556032603055613a72928362000207843960805183612bee015260a05183612cb9015260c05183612bb8015260e05183612c3d01525182612c6301525181612c1a0152f35b634e487b7160e01b600052604160045260246000fd5b600080fd5b604081019081106001600160401b03821117620001cf5760405256fe608080604052600436101561001357600080fd5b600090813560e01c908162a02a20146121765750806302ce728f1461214d57806306fdde0314612096578063078dfbe714611f97578063095ea7b314611f705780630c4e84f014611e5857806318160ddd14611e375780631c9e379b14611dfe5780631da8bf1014611d2a57806323b872dd14611ba3578063313ce56714611b11578063331960ff14611af357806334d441d014611ad55780633644e51514611aba57806337b6b7b914611a9c57806338d52e0f14611a735780633ba0b9a914611a555780633f741adb14611a3057806340626d8b14611a1257806344de240a146119f4578063473e3ce7146119d657806348e4163e1461199d5780634d7f2a341461197f5780634e71e0c8146118d1578063529898f2146118b457806352f353eb1461188d578063551402321461186657806355c2ab941461183c578063579354621461181e5780635dfe04e8146117bf5780636c3d8b8f1461179657806370a082311461175d578063727785471461172557806374645ff3146116fa5780637dc0d1d0146116d15780637ecebe00146116985780637fa0b84e14611666578063821226e8146116485780638285ef40146116165780638c5d0ed3146115f85780638da5cb5b146115cf578063910dd7c8146113b6578063959916dc1461139857806395d89b41146112de57806399a97028146112ae5780639c5d7192146112905780639e15e89f14611255578063a9059cbb14611172578063b0e21e8a14611154578063b27c0e7414611119578063bb4cfe3b146110fb578063cce19f8114610f0f578063ce8849ed14610ee6578063d3fb2a3814610a56578063d505accf146108b5578063d8dfeb451461088c578063da863f0e14610863578063dd62ed3e14610814578063de406577146107eb578063e0996cb6146107cd578063e30c3978146107a4578063e9a492521461045a578063ea64dd561461043c578063eec0f42e1461041e578063ef2b234a146103a7578063f42760b714610389578063f8ba4cff1461036d578063f9557ccb146103375763ffe04c661461031757600080fd5b346103345780600319360112610334576020602a54604051908152f35b80fd5b5034610334578060031936011261033457602554604080516001600160801b038316815260809290921c602083015290f35b0390f35b5034610334578060031936011261033457610386613735565b80f35b50346103345780600319360112610334576020602b54604051908152f35b5034610334576020366003190112610334576004356001600160a01b038181169182900361041a576103de81600554163314612494565b816021549182167ffb4fd7114609dd603b57adbc2082205bfbbcabf9265c4b437b472f5c592b8cd78580a36001600160a01b0319161760215580f35b8280fd5b50346103345780600319360112610334576020600c54604051908152f35b50346103345780600319360112610334576020601f54604051908152f35b50346103345760a0366003190112610334576104746121be565b61047c6121d4565b90610485612241565b91606435916084359360026000526020600781526104ab60ff6040600020541615612fb4565b6001600160a01b03938416946104c330871415612ff1565b8615610726575b6104d4878561303c565b86156106a5575b5084875260188152604087206104f287825461256d565b9055601554610501878261256d565b601555600c5490888415610623575082866009541692604460405180958193627eeac760e11b835230600484015260248301525afa80156106185789906105e4575b61054d9250612560565b86116105b0575b8487526026815260408720906028548852526040862061057586825461256d565b9055156105ab575080600954165b167f9ed03113de523cebfe5e49d5f8e12894b1c0d42ce805990461726444c90eab878480a480f35b610583565b6064906040519062461bcd60e51b82526004820152600d60248201526c0a68e987440e8dede40daeac6d609b1b6044820152fd5b508282813d8311610611575b6105fa8183612458565b8101031261060c5761054d9151610543565b600080fd5b503d6105f0565b6040513d8b823e3d90fd5b9190508560095416803b1561041a57604051630208d92960e11b81526001600160a01b038716600482015230602482015260448101929092526064820189905282908290608490829084905af1801561069a57610682575b5050610554565b61068b906123c2565b61069657863861067b565b8680fd5b6040513d84823e3d90fd5b908096508460095416916064600c546040519485938492638eb22cdd60e01b8452600484015260248301528b60448301525afa90811561071b5787916106ee575b5094386104db565b90508581813d8311610714575b6107058183612458565b8101031261060c5751386106e6565b503d6106fb565b6040513d89823e3d90fd5b9550836009541681600c54606460405180948193638eb22cdd60e01b835260048301528b60248301528c60448301525afa90811561079957889161076c575b50956104ca565b90508181813d8311610792575b6107838183612458565b8101031261060c575138610765565b503d610779565b6040513d8a823e3d90fd5b50346103345780600319360112610334576006546040516001600160a01b039091168152602090f35b50346103345780600319360112610334576020601d54604051908152f35b50346103345780600319360112610334576009546040516001600160a01b039091168152602090f35b50346103345760403660031901126103345761082e6121be565b60406108386121d4565b9260018060a01b03809316815260026020522091166000526020526020604060002054604051908152f35b50346103345780600319360112610334576021546040516001600160a01b039091168152602090f35b5034610334578060031936011261033457600b546040516001600160a01b039091168152602090f35b5034610334576108c436612250565b918391939594954211610a115760018060a01b039283881694856000526004602052604060002092835460001981146109fb576109a79561099f956001830190556040519060208201927f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e2668452600060408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e0815261096381612421565b51902061096e612bb5565b9060405190602082019261190160f01b845260228301526042820152604281526109978161243d565b519020612e8a565b919091612d8b565b16036109b65761038692612f5d565b60405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152606490fd5b634e487b7160e01b600052601160045260246000fd5b60405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b503461033457610160366003190112610334576001600160a01b036004358181169081900361041a576024916001600160401b038335818111610ee25736602382011215610ee2578060040135918211610ee25736858383010111610ee2576044359383851680950361060c57610ad284600554163314612494565b80610ea4575b508482610d26575b50505081610ce6575b505060643580610cce575b5060843580610cb6575b5060a43580610c9f575b5060c43580610c7b575b5060e43580610c57575b506101043580610c26575b506101243580610bb3575b50610144359081610b41578280f35b601e548210610b545750601f5538808280f35b60849060326040519162461bcd60e51b8352602060048401528201527f4d61726b65743a206c69717569646174696f6e436f6c6c61746572616c697a616044820152711d1a5bdb94985d19481d1bdbc81cdb585b1b60721b6064820152fd5b610bc2620186a08211156124df565b601f548111610bd457601e5538610b32565b60405162461bcd60e51b8152602060048201526025818401527f4d61726b65743a20636f6c6c61746572616c697a6174696f6e5261746520746f6044820152646f2062696760d81b6064820152608490fd5b806016547fae6e0ab3b95f0a53ff9660a390ccedcbbf1f2355dce974a9841af106fddcfaba8580a360165538610b27565b610c65620186a082106124df565b610c72601b5482116124df565b601c5538610b1c565b610c89620186a082106124df565b610c96601c5482106124df565b601b5538610b12565b610cad620186a082106124df565b601d5538610b08565b610cc5620186a08211156124df565b601a5538610afe565b610cdd620186a08211156124df565b60195538610af4565b816008549182167f5a62d22209e370e38eea92cfddcd228e656e6ec139243392a760a7769f5877fd8680a36001600160a01b031916176008553880610ae9565b8291610d33601054612303565b601f8111610e33575b508790601f8411600114610da1578893610d94575b5050508160011b916000199060031b1c1916176010555b7fa6f004921c944d4b8bf6e38462b00f36a58d62495d56b51f571ab78f732c98158480a1388084610ae0565b0101359050843880610d51565b60108952601f19841694507f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae67292509087908960205b878210610e145750508460019610610df8575b50505050811b01601055610d68565b60001960f88660031b161c199201013516905538808681610de9565b8285019093013585556001949094019389929182019190810190610dd6565b6010895290925090507f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae672601f840160051c810160208510610e9d575b91849391601f8994920160051c01905b818110610e8c5750610d3c565b898155859450889350600101610e7f565b5080610e6f565b600f80546001600160a01b0319169190911790557f0b2d6eb667d0522c3eb86e4288afecae6c11591ffd1345d4d12407e0598bca9b8680a138610ad8565b8580fd5b50346103345780600319360112610334576008546040516001600160a01b039091168152602090f35b503461033457610f1e3661229f565b9092916003835260209160078352610f3d60ff60408620541615612fb4565b610f45612818565b5050610f4f613735565b610f59818361303c565b6001600160a01b0385811695909190610f7430881415612ff1565b828416928387526018865260408720610f8e848254612560565b9055610f9c83601554612560565b6015556009541690600c5490823b156110f757604051630208d92960e11b81523060048201526001600160a01b039190911660248201526044810191909152606481018390529086908290608490829084905af180156110ec576110d5575b50808596837f8ad4d3ff00da092c7ad9a573ea4f5f6a3dffc6712dc06d3f78f49b862297c4028861106d9899a48186526026855260408620602854908188528652604087205482116000146110ae57505084526026835260408420602854855283528360408120555b60115490613140565b15611076575080f35b6064906040519062461bcd60e51b82526004820152601160248201527013585c9ad95d0e881a5b9cdbdb1d995b9d607a1b6044820152fd5b90918652602685526040862090865284526110ce60408620918254612560565b9055611064565b61106d94956110e483926123c2565b959450610ffb565b6040513d88823e3d90fd5b8780fd5b50346103345780600319360112610334576020601e54604051908152f35b50346103345780600319360112610334576060602454604051906001600160401b0380821683528160401c16602083015260801c6040820152f35b50346103345780600319360112610334576020601a54604051908152f35b50346103345760403660031901126103345761118c6121be565b60243580928115801590611243575b6111d3575b50506040519182526001600160a01b0316903390600080516020613a1d83398151915290602090a3602060405160018152f35b338152600160205260408120546111ec83821015612cdf565b6001600160a01b0384169033829003611207575b50506111a0565b60409361121e91611219841515612d24565b612560565b33835260016020528383205581522061123883825461256d565b905581388080611200565b50336001600160a01b0384161461119b565b503461033457604036600319011261033457606061127d6112746121be565b602435906126ac565b9060405192835260208301526040820152f35b50346103345780600319360112610334576020602c54604051908152f35b50346103345760403660031901126103345760206112d66112cd6121be565b60243590612a83565b604051908152f35b5034610334578060031936011261033457808060018060a01b03600b541660405160208101906395d89b4160e01b82526004815261131b816123eb565b51915afa611327613821565b9150156113875761133a610369916138a8565b6113736023604051809362746d2d60e81b602083015261136381518092602086860191016121ea565b8101036003810184520182612458565b60405191829160208352602083019061220d565b50610369611393613851565b61133a565b50346103345780600319360112610334576020603054604051908152f35b5034610334576040366003190112610334576004356001600160401b0381116115cb57366023820112156115cb578060040135826113f382612479565b926114016040519485612458565b8284526020840192366024828401011161041a578060246020930185378401015260243561ffff811681036115c7576101009182848051810103126115c3576114499061280b565b61145560408501612d69565b9161146260608601612d69565b9460808101519460a08201519261147b60c08401612d7d565b9160e084015193015193804211610a1157851561159c577f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e266915b6001600160a01b0388168b52600460205260408b20805491906000198314611588579161ffff6115459896949261099f98969460018401905560405194602086015216604084015260018060a01b038a16606084015260018060a01b038c1660808401528a60a084015260c083015260e082015260e0815261153681612421565b6020815191012061096e612bb5565b6001600160a01b038381169116036109b6571561157257610386926001600160a01b039081169116612f5d565b610386926001600160a01b039081169116612f0f565b634e487b7160e01b8d52601160045260248dfd5b7f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d6916114b5565b8480fd5b8380fd5b5080fd5b50346103345780600319360112610334576005546040516001600160a01b039091168152602090f35b50346103345780600319360112610334576020601b54604051908152f35b5034610334578060031936011261033457601454604080516001600160801b038316815260809290921c602083015290f35b50346103345780600319360112610334576020602e54604051908152f35b50346103345760403660031901126103345761168d6116836121be565b6024359033612f0f565b602060405160018152f35b5034610334576020366003190112610334576020906040906001600160a01b036116c06121be565b168152600483522054604051908152f35b5034610334578060031936011261033457600f546040516001600160a01b039091168152602090f35b50346103345780600319360112610334576103696040516113738161171e8161233d565b0382612458565b50346103345760203660031901126103345760043590600982101561033457602060ff611751846122d4565b54166040519015158152f35b5034610334576020366003190112610334576020906040906001600160a01b036117856121be565b168152600183522054604051908152f35b5034610334578060031936011261033457600a546040516001600160a01b039091168152602090f35b50346103345780600319360112610334576117d8613242565b5060806117e361327a565b509350505050604051916001600160401b0380825116845260208201511660208401526040600180861b039101511660408301526060820152f35b50346103345780600319360112610334576020601c54604051908152f35b503461033457806003193601126103345760206001600160401b03602d5460401c16604051908152f35b503461033457806003193601126103345760206001600160401b03602d5416604051908152f35b503461033457806003193601126103345760206001600160401b03602f5416604051908152f35b503461033457806003193601126103345760208054604051908152f35b50346103345780600319360112610334576006546001600160a01b03908181163381900361193b57806005549384167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08680a36001600160a01b0319928316176005551660065580f35b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b50346103345780600319360112610334576020602954604051908152f35b5034610334576020366003190112610334576020906040906001600160a01b036119c56121be565b168152601783522054604051908152f35b50346103345780600319360112610334576020601554604051908152f35b50346103345780600319360112610334576020600e54604051908152f35b50346103345780600319360112610334576020601654604051908152f35b50346103345760603660031901126103345760206112d6604435602435600435612593565b50346103345780600319360112610334576020601154604051908152f35b5034610334578060031936011261033457600d546040516001600160a01b039091168152602090f35b50346103345780600319360112610334576020601254604051908152f35b503461033457806003193601126103345760206112d6612bb5565b50346103345780600319360112610334576020601954604051908152f35b50346103345780600319360112610334576020601354604051908152f35b5034610334578060031936011261033457808060018060a01b03600d5416604051602081019063313ce56760e01b825260048152611b4e816123eb565b51915afa90611b5b613821565b9180611b98575b15611b8d576020828051810103126103345750611b826020809201612d7d565b60ff60405191168152f35b505060206012611b82565b506020825114611b62565b503461033457611bb23661229f565b919282611bee575b506040519182526001600160a01b03908116921690600080516020613a1d83398151915290602090a3602060405160018152f35b6001600160a01b03848116808352600160209081526040842054928690611c1782861015612cdf565b861693848403611c2c575b5050505050611bba565b838652600283526040808720338852845286205460018101611c96575b5092600160209693611c748794604097611219600080516020613a1d8339815191529c9a1515612d24565b9285525283832055815220611c8a85825461256d565b90559138808581611c22565b90918110611cea5792600160209693611c748a600080516020613a1d8339815191529a9895611cc78260409a612560565b86895260028552898920338a528552898920559497509497995050939650611c49565b60405162461bcd60e51b815260048101849052601860248201527745524332303a20616c6c6f77616e636520746f6f206c6f7760401b6044820152606490fd5b503461033457611d3936612250565b90839594954211610a11576001600160a01b03878116808a52600460205260408a2080549196929592906000198314611dea5782611ddb9694928d92600161099f98960190556040519160208301937f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d6855260408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e0815261096381612421565b16036109b65761038692612f0f565b634e487b7160e01b8c52601160045260248cfd5b5034610334576020366003190112610334576020906040906001600160a01b03611e266121be565b168152601883522054604051908152f35b5034610334578060031936011261033457602060255460801c604051908152f35b50346103345760403660031901126103345760043560098110156115cb57611e7e612232565b6008549091906001600160a01b03163303611f345760ff611e9e826122d4565b54161515911515918214611efa57808260ff611ebc611eea946122d4565b54161515827feeec81de25875ce1725479bb76f720a8defdb43dea041919ae37bb4aae9847c08780a46122d4565b9060ff8019835416911617905580f35b60405162461bcd60e51b81526020600482015260126024820152714d61726b65743a2073616d6520737461746560701b6044820152606490fd5b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881d5b985d5d1a1bdc9a5e995960621b6044820152606490fd5b50346103345760403660031901126103345761168d611f8d6121be565b6024359033612f5d565b503461033457606036600319011261033457611fb16121be565b611fb9612232565b611fc1612241565b9060018060a01b03928391611fdb83600554163314612494565b1561207f571690811590811591612077575b501561203a57806005549283167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08580a36001600160a01b03199182161760055560068054909116905580f35b60405162461bcd60e51b81526020600482015260156024820152744f776e61626c653a207a65726f206164647265737360581b6044820152606490fd5b905038611fed565b9150501660018060a01b0319600654161760065580f35b5034610334578060031936011261033457808060018060a01b03600b541660405160208101906306fdde0360e01b8252600481526120d3816123eb565b51915afa6120df613821565b91501561213c576120f2610369916138a8565b6113736034604051809373546170696f63612053696e67756c61726974792d60601b602083015261212c81518092602086860191016121ea565b8101036014810184520182612458565b50610369612148613851565b6120f2565b50346103345780600319360112610334576040612168612818565b825191151582526020820152f35b9050346115cb5760403660031901126115cb5760406020926121966121be565b61219e6121d4565b6001600160a01b0391821683526003865283832091168252845220548152f35b600435906001600160a01b038216820361060c57565b602435906001600160a01b038216820361060c57565b60005b8381106121fd5750506000910152565b81810151838201526020016121ed565b90602091612226815180928185528580860191016121ea565b601f01601f1916010190565b60243590811515820361060c57565b60443590811515820361060c57565b60e090600319011261060c576001600160a01b0390600435828116810361060c5791602435908116810361060c5790604435906064359060843560ff8116810361060c579060a4359060c43590565b606090600319011261060c576001600160a01b0390600435828116810361060c5791602435908116810361060c579060443590565b60098110156122ed576000526007602052604060002090565b634e487b7160e01b600052602160045260246000fd5b90600182811c92168015612333575b602083101461231d57565b634e487b7160e01b600052602260045260246000fd5b91607f1691612312565b6010546000929161234d82612303565b9081815260019283811690816000146123a7575060011461236d57505050565b9092935060106000526020928360002092846000945b8386106123935750505050010190565b805485870183015294019385908201612383565b91935050602093945060ff191683830152151560051b010190565b6001600160401b0381116123d557604052565b634e487b7160e01b600052604160045260246000fd5b604081019081106001600160401b038211176123d557604052565b606081019081106001600160401b038211176123d557604052565b61010081019081106001600160401b038211176123d557604052565b608081019081106001600160401b038211176123d557604052565b90601f801991011681019081106001600160401b038211176123d557604052565b6001600160401b0381116123d557601f01601f191660200190565b1561249b57565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b156124e657565b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881b9bdd081d985b1a59607a1b6044820152606490fd5b818102929181159184041417156109fb57565b811561253c570490565b634e487b7160e01b600052601260045260246000fd5b604d81116109fb57600a0a90565b919082039182116109fb57565b919082018092116109fb57565b818103929160001380158285131691841216176109fb57565b6014549192916125dc916125cd916125c3916125b9906001600160801b0383169061251f565b9060801c90612532565b93601f549061251f565b6125d683612552565b90612532565b8083106126a4576125f061262c9184612560565b91612627612621612618601e5461261261260986612552565b6020549061256d565b9061251f565b6125d684612552565b91612552565b61257a565b6509184e72a000908181029181830514901517156109fb57670de0b6b3a7640000918281029281840514901517156109fb57801561253c57600160ff1b918083146000198314166109fb570590600082121561269d5781146109fb57600003905b808211612698575090565b905090565b509061268d565b505050600090565b9160018060a01b0380931691600093838552602060178152604091828720549081156127fe57878385516126df816123eb565b82815201526126ec61327a565b50505050509190506126ff861515612980565b6009541683600c54898b52601882526064878c2054918851948593849263442c159960e01b8452600484015260248301528d60448301525afa9081156127f45789916127c1575b50916127a16127b5979899949261277c8861277761276e601898620186a0602254049061251f565b601e549061251f565b612532565b815190936001600160801b039186916127979184169061251f565b9201511690612532565b8181106127b957035b9783525220546129cc565b9091565b5050826127aa565b90508381813d83116127ed575b6127d88183612458565b810103126127e957516127a1612746565b8880fd5b503d6127ce565b85513d8b823e3d90fd5b5086955085949350505050565b5190811515820361060c57565b600f546040805163d6d7d52560e01b8152602060048201529290916001600160a01b031682848061284b6024820161233d565b0381600080955af180156129745781948291612938575b509284156128db5783156128a157507f9f9192b5edb17356c524e08d9e025c8e2f6307e6ea52fb7968faa3081f51c3c883918260115580a25b42601355565b5162461bcd60e51b81526020600482015260146024820152734d61726b65743a20696e76616c6964207261746560601b6044820152606490fd5b919250506128ee6013546012549061256d565b42116128fe57506011549061289b565b5162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881c985d19481d1bdbc81bdb1960621b6044820152606490fd5b809550848092503d831161296d575b6129518183612458565b810103126103345760206129648561280b565b94015138612862565b503d612947565b508251903d90823e3d90fd5b1561298757565b60405162461bcd60e51b815260206004820152601e60248201527f4d61726b65743a2065786368616e676552617465206e6f742076616c696400006044820152606490fd5b6129d7821515612980565b602060018060a01b0360095416916064600c54604051948593849263442c159960e01b845260048401526024830152600060448301525afa908115612a7757600091612a44575b5090612777612a30926022549061251f565b620186a0612a40601e548361251f565b0491565b906020823d8211612a6f575b81612a5d60209383612458565b81010312610334575051612777612a1e565b3d9150612a50565b6040513d6000823e3d90fd5b6001600160a01b03166000818152601860205260408120549092612aa6916129cc565b918352601760205260408320548015612baf578115612baf57818110612baf5782811015612ba557601454612aef918391611219916125b9906001600160801b0383169061251f565b90620186a09283830292808404851490151715612b9157612b1492916125d691612560565b91601b5491601c5493612b27858561257a565b80820291848212600160ff1b821416612b91578183051490151715612b7d5705818482019485129112908015821691151617612b695750808212612698575090565b634e487b7160e01b81526011600452602490fd5b634e487b7160e01b83526011600452602483fd5b634e487b7160e01b85526011600452602485fd5b50505050601b5490565b50505090565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03161480612cb6575b15612c10577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f000000000000000000000000000000000000000000000000000000000000000082527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a0815260c081018181106001600160401b038211176123d55760405251902090565b507f00000000000000000000000000000000000000000000000000000000000000004614612be7565b15612ce657565b60405162461bcd60e51b815260206004820152601660248201527545524332303a2062616c616e636520746f6f206c6f7760501b6044820152606490fd5b15612d2b57565b60405162461bcd60e51b815260206004820152601660248201527545524332303a206e6f207a65726f206164647265737360501b6044820152606490fd5b51906001600160a01b038216820361060c57565b519060ff8216820361060c57565b60058110156122ed5780612d9c5750565b60018103612de45760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b6044820152606490fd5b60028103612e315760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606490fd5b600314612e3a57565b60405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608490fd5b9291906fa2a8918ca85bafe22016d0b997e4df60600160ff1b038311612f035791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa15612ef65781516001600160a01b03811615612ef0579190565b50600190565b50604051903d90823e3d90fd5b50505050600090600390565b7fe50de2333c10a9502fcb1d8ae13a51bbf423153dfc63c2b8997665b32154afc360018060a01b038092169160009083825260036020526040822094169384825260205284604082205580a4565b909160207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259160018060a01b03809416938460005260028352604060002095169485600052825280604060002055604051908152a3565b15612fbb57565b60405162461bcd60e51b815260206004820152600e60248201526d13585c9ad95d0e881c185d5cd95960921b6044820152606490fd5b15612ff857565b606460405162461bcd60e51b815260206004820152602060248201527f4d61726b65743a2063616e6e6f742065786563757465206f6e20697473656c666044820152fd5b6001600160a01b0316338103613050575050565b60008181526020906003825260409182822033835281528483832054106130ba5783825260038152828220338352815282822054600101613093575b5050505050565b6130ae93825260038152828220903383525220918254612560565b9055388080808061308c565b60649083519062461bcd60e51b82526004820152601460248201527313585c9ad95d0e881b9bdd08185c1c1c9bdd995960621b6044820152fd5b60405190613101826123eb565b6014546001600160801b038116835260801c6020830152565b60405190613127826123eb565b6025546001600160801b038116835260801c6020830152565b919060018060a01b0380600094168452602060178152604085205490811561323857601881526040862054801561308c578161317a6130f4565b9460095416916064600c54604051948593849263442c159960e01b8452600484015260248301528b60448301525afa96871561322c5780976131f6575b50506127976131d661276e6131f1969798620186a0602254049061251f565b956131ec60018060801b0394858751169061251f565b61251f565b111590565b9096508187813d8311613225575b61320e8183612458565b8101031261033457509451946127976131d66131b7565b503d613204565b604051903d90823e3d90fd5b5060019450505050565b6040519061324f82612406565b60006040838281528260208201520152565b6001600160801b0391821690821601919082116109fb57565b613282613242565b5060006020604051613293816123eb565b8281520152600060206040516132a8816123eb565b8281520152604051906132ba82612406565b602454916001600160401b038316815260208101926001600160401b038160401c16845260801c604082015280926132f06130f4565b926132f961311a565b92600060018060a01b0360095416600e549460018060801b038751166040519063442c159960e01b8252876004830152602482015260006044820152602081606481865afa8015612a7757600090613701575b895161336292506001600160801b03169061256d565b806136cc575060005b6133806001600160401b038293511642612560565b9485156136a2575050426001600160401b031660208a8101919091528801516001600160801b03161561365857506020670de0b6b3a76400006133dd856131ec8c6001600160401b038d60018060801b039051169151169061251f565b895191900496906001600160801b03906133fc90828a16908316613261565b168952875160405163442c159960e01b815260048101929092526001600160801b031660248201526000604482015291829060649082905afa8015612a7757600090613624575b875161345992506001600160801b03169061256d565b9261348784612777620186a0613471601a548a61251f565b60208c01516001600160801b031691900461251f565b6040890180519195916001600160801b0380881692916134aa9084908316613261565b16905260208801805190916001600160801b03916134ca91908316613261565b169052806135ef575060005b602a549093848281101561356a576134ee9083612560565b90670de0b6b3a7640000820291808304670de0b6b3a764000014901517156109fb5761277761354261353c61352e6001600160401b039661354c96612532565b936131ec602e54958061251f565b8361256d565b91848d511661251f565b168089526001600160401b03602d54168091106135665750565b8852565b909150602b5480821161357c57505050565b61358591612560565b670de0b6b3a7640000810290808204670de0b6b3a764000014901517156109fb576001600160401b03916127776135c861353c61352e6135d195602c5490612532565b848d511661251f565b81602d5460401c168082116135e7575b50168852565b9050386135e1565b87516001600160801b0316670de0b6b3a76400008181029291808404909114901517156109fb5761361f91612532565b6134d6565b506020813d602011613650575b8161363e60209383612458565b8101031261060c576134599051613443565b3d9150613631565b9697939450509350506001600160401b038151166001600160401b03602f5416809103613696575b50939261368b61311a565b926000926000929190565b81526001925038613680565b9750985050505050925050916136b66130f4565b916136bf61311a565b9160009160009190600090565b88516001600160801b0316670de0b6b3a76400008181029291808404909114901517156109fb576136fc91612532565b61336b565b506020813d60201161372d575b8161371b60209383612458565b8101031261060c57613362905161334c565b3d915061370e565b6020604061374161327a565b93979593909290156137e8575050506001600160401b03602f54166000807f33af5ce86e8438eff54589f85332916444457dfa8685493fbd579b809097026b868851838152a45b6001600160401b03815116838201519160018060801b0319958691015160801b16916001600160401b0360401b9060401b16171760245560018060801b039083838383511692015160801b161760145583511692015160801b1617602555565b7f33af5ce86e8438eff54589f85332916444457dfa8685493fbd579b809097026b866001600160401b03865116948951908152a4613788565b3d1561384c573d9061383282612479565b916138406040519384612458565b82523d6000602084013e565b606090565b6040519061385e826123eb565b60038252623f3f3f60e81b6020830152565b908151811015613881570160200190565b634e487b7160e01b600052603260045260246000fd5b60ff1660ff81146109fb5760010190565b8051604081106139235750805181019060208181840193031261060c576020810151906001600160401b03821161060c570181603f8201121561060c5760208101516138f381612479565b926139016040519485612458565b8184526040828401011161060c576139209160406020850191016121ea565b90565b602092908303613a11576000805b60ff811685811090816139f2575b50156139535761394e90613897565b613931565b9260ff8094169261396384612479565b936139716040519586612458565b808552613980601f1991612479565b013687860137825b858116878110806139d5575b156139ca576139c591906139bf6001600160f81b03196139b48388613870565b5116871a9188613870565b53613897565b613988565b505094505050905090565b506001600160f81b03196139e98286613870565b51161515613994565b6001600160f81b03199150613a079086613870565b511615153861393f565b91505061392061385156feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa264697066735822122010b138ea759083f9d693a64a028add5ca8d16178ec6a44e920bda62dd541befb64736f6c63430008120033", + "deployedBytecode": "0x608080604052600436101561001357600080fd5b600090813560e01c908162a02a20146121765750806302ce728f1461214d57806306fdde0314612096578063078dfbe714611f97578063095ea7b314611f705780630c4e84f014611e5857806318160ddd14611e375780631c9e379b14611dfe5780631da8bf1014611d2a57806323b872dd14611ba3578063313ce56714611b11578063331960ff14611af357806334d441d014611ad55780633644e51514611aba57806337b6b7b914611a9c57806338d52e0f14611a735780633ba0b9a914611a555780633f741adb14611a3057806340626d8b14611a1257806344de240a146119f4578063473e3ce7146119d657806348e4163e1461199d5780634d7f2a341461197f5780634e71e0c8146118d1578063529898f2146118b457806352f353eb1461188d578063551402321461186657806355c2ab941461183c578063579354621461181e5780635dfe04e8146117bf5780636c3d8b8f1461179657806370a082311461175d578063727785471461172557806374645ff3146116fa5780637dc0d1d0146116d15780637ecebe00146116985780637fa0b84e14611666578063821226e8146116485780638285ef40146116165780638c5d0ed3146115f85780638da5cb5b146115cf578063910dd7c8146113b6578063959916dc1461139857806395d89b41146112de57806399a97028146112ae5780639c5d7192146112905780639e15e89f14611255578063a9059cbb14611172578063b0e21e8a14611154578063b27c0e7414611119578063bb4cfe3b146110fb578063cce19f8114610f0f578063ce8849ed14610ee6578063d3fb2a3814610a56578063d505accf146108b5578063d8dfeb451461088c578063da863f0e14610863578063dd62ed3e14610814578063de406577146107eb578063e0996cb6146107cd578063e30c3978146107a4578063e9a492521461045a578063ea64dd561461043c578063eec0f42e1461041e578063ef2b234a146103a7578063f42760b714610389578063f8ba4cff1461036d578063f9557ccb146103375763ffe04c661461031757600080fd5b346103345780600319360112610334576020602a54604051908152f35b80fd5b5034610334578060031936011261033457602554604080516001600160801b038316815260809290921c602083015290f35b0390f35b5034610334578060031936011261033457610386613735565b80f35b50346103345780600319360112610334576020602b54604051908152f35b5034610334576020366003190112610334576004356001600160a01b038181169182900361041a576103de81600554163314612494565b816021549182167ffb4fd7114609dd603b57adbc2082205bfbbcabf9265c4b437b472f5c592b8cd78580a36001600160a01b0319161760215580f35b8280fd5b50346103345780600319360112610334576020600c54604051908152f35b50346103345780600319360112610334576020601f54604051908152f35b50346103345760a0366003190112610334576104746121be565b61047c6121d4565b90610485612241565b91606435916084359360026000526020600781526104ab60ff6040600020541615612fb4565b6001600160a01b03938416946104c330871415612ff1565b8615610726575b6104d4878561303c565b86156106a5575b5084875260188152604087206104f287825461256d565b9055601554610501878261256d565b601555600c5490888415610623575082866009541692604460405180958193627eeac760e11b835230600484015260248301525afa80156106185789906105e4575b61054d9250612560565b86116105b0575b8487526026815260408720906028548852526040862061057586825461256d565b9055156105ab575080600954165b167f9ed03113de523cebfe5e49d5f8e12894b1c0d42ce805990461726444c90eab878480a480f35b610583565b6064906040519062461bcd60e51b82526004820152600d60248201526c0a68e987440e8dede40daeac6d609b1b6044820152fd5b508282813d8311610611575b6105fa8183612458565b8101031261060c5761054d9151610543565b600080fd5b503d6105f0565b6040513d8b823e3d90fd5b9190508560095416803b1561041a57604051630208d92960e11b81526001600160a01b038716600482015230602482015260448101929092526064820189905282908290608490829084905af1801561069a57610682575b5050610554565b61068b906123c2565b61069657863861067b565b8680fd5b6040513d84823e3d90fd5b908096508460095416916064600c546040519485938492638eb22cdd60e01b8452600484015260248301528b60448301525afa90811561071b5787916106ee575b5094386104db565b90508581813d8311610714575b6107058183612458565b8101031261060c5751386106e6565b503d6106fb565b6040513d89823e3d90fd5b9550836009541681600c54606460405180948193638eb22cdd60e01b835260048301528b60248301528c60448301525afa90811561079957889161076c575b50956104ca565b90508181813d8311610792575b6107838183612458565b8101031261060c575138610765565b503d610779565b6040513d8a823e3d90fd5b50346103345780600319360112610334576006546040516001600160a01b039091168152602090f35b50346103345780600319360112610334576020601d54604051908152f35b50346103345780600319360112610334576009546040516001600160a01b039091168152602090f35b50346103345760403660031901126103345761082e6121be565b60406108386121d4565b9260018060a01b03809316815260026020522091166000526020526020604060002054604051908152f35b50346103345780600319360112610334576021546040516001600160a01b039091168152602090f35b5034610334578060031936011261033457600b546040516001600160a01b039091168152602090f35b5034610334576108c436612250565b918391939594954211610a115760018060a01b039283881694856000526004602052604060002092835460001981146109fb576109a79561099f956001830190556040519060208201927f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e2668452600060408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e0815261096381612421565b51902061096e612bb5565b9060405190602082019261190160f01b845260228301526042820152604281526109978161243d565b519020612e8a565b919091612d8b565b16036109b65761038692612f5d565b60405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152606490fd5b634e487b7160e01b600052601160045260246000fd5b60405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b503461033457610160366003190112610334576001600160a01b036004358181169081900361041a576024916001600160401b038335818111610ee25736602382011215610ee2578060040135918211610ee25736858383010111610ee2576044359383851680950361060c57610ad284600554163314612494565b80610ea4575b508482610d26575b50505081610ce6575b505060643580610cce575b5060843580610cb6575b5060a43580610c9f575b5060c43580610c7b575b5060e43580610c57575b506101043580610c26575b506101243580610bb3575b50610144359081610b41578280f35b601e548210610b545750601f5538808280f35b60849060326040519162461bcd60e51b8352602060048401528201527f4d61726b65743a206c69717569646174696f6e436f6c6c61746572616c697a616044820152711d1a5bdb94985d19481d1bdbc81cdb585b1b60721b6064820152fd5b610bc2620186a08211156124df565b601f548111610bd457601e5538610b32565b60405162461bcd60e51b8152602060048201526025818401527f4d61726b65743a20636f6c6c61746572616c697a6174696f6e5261746520746f6044820152646f2062696760d81b6064820152608490fd5b806016547fae6e0ab3b95f0a53ff9660a390ccedcbbf1f2355dce974a9841af106fddcfaba8580a360165538610b27565b610c65620186a082106124df565b610c72601b5482116124df565b601c5538610b1c565b610c89620186a082106124df565b610c96601c5482106124df565b601b5538610b12565b610cad620186a082106124df565b601d5538610b08565b610cc5620186a08211156124df565b601a5538610afe565b610cdd620186a08211156124df565b60195538610af4565b816008549182167f5a62d22209e370e38eea92cfddcd228e656e6ec139243392a760a7769f5877fd8680a36001600160a01b031916176008553880610ae9565b8291610d33601054612303565b601f8111610e33575b508790601f8411600114610da1578893610d94575b5050508160011b916000199060031b1c1916176010555b7fa6f004921c944d4b8bf6e38462b00f36a58d62495d56b51f571ab78f732c98158480a1388084610ae0565b0101359050843880610d51565b60108952601f19841694507f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae67292509087908960205b878210610e145750508460019610610df8575b50505050811b01601055610d68565b60001960f88660031b161c199201013516905538808681610de9565b8285019093013585556001949094019389929182019190810190610dd6565b6010895290925090507f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae672601f840160051c810160208510610e9d575b91849391601f8994920160051c01905b818110610e8c5750610d3c565b898155859450889350600101610e7f565b5080610e6f565b600f80546001600160a01b0319169190911790557f0b2d6eb667d0522c3eb86e4288afecae6c11591ffd1345d4d12407e0598bca9b8680a138610ad8565b8580fd5b50346103345780600319360112610334576008546040516001600160a01b039091168152602090f35b503461033457610f1e3661229f565b9092916003835260209160078352610f3d60ff60408620541615612fb4565b610f45612818565b5050610f4f613735565b610f59818361303c565b6001600160a01b0385811695909190610f7430881415612ff1565b828416928387526018865260408720610f8e848254612560565b9055610f9c83601554612560565b6015556009541690600c5490823b156110f757604051630208d92960e11b81523060048201526001600160a01b039190911660248201526044810191909152606481018390529086908290608490829084905af180156110ec576110d5575b50808596837f8ad4d3ff00da092c7ad9a573ea4f5f6a3dffc6712dc06d3f78f49b862297c4028861106d9899a48186526026855260408620602854908188528652604087205482116000146110ae57505084526026835260408420602854855283528360408120555b60115490613140565b15611076575080f35b6064906040519062461bcd60e51b82526004820152601160248201527013585c9ad95d0e881a5b9cdbdb1d995b9d607a1b6044820152fd5b90918652602685526040862090865284526110ce60408620918254612560565b9055611064565b61106d94956110e483926123c2565b959450610ffb565b6040513d88823e3d90fd5b8780fd5b50346103345780600319360112610334576020601e54604051908152f35b50346103345780600319360112610334576060602454604051906001600160401b0380821683528160401c16602083015260801c6040820152f35b50346103345780600319360112610334576020601a54604051908152f35b50346103345760403660031901126103345761118c6121be565b60243580928115801590611243575b6111d3575b50506040519182526001600160a01b0316903390600080516020613a1d83398151915290602090a3602060405160018152f35b338152600160205260408120546111ec83821015612cdf565b6001600160a01b0384169033829003611207575b50506111a0565b60409361121e91611219841515612d24565b612560565b33835260016020528383205581522061123883825461256d565b905581388080611200565b50336001600160a01b0384161461119b565b503461033457604036600319011261033457606061127d6112746121be565b602435906126ac565b9060405192835260208301526040820152f35b50346103345780600319360112610334576020602c54604051908152f35b50346103345760403660031901126103345760206112d66112cd6121be565b60243590612a83565b604051908152f35b5034610334578060031936011261033457808060018060a01b03600b541660405160208101906395d89b4160e01b82526004815261131b816123eb565b51915afa611327613821565b9150156113875761133a610369916138a8565b6113736023604051809362746d2d60e81b602083015261136381518092602086860191016121ea565b8101036003810184520182612458565b60405191829160208352602083019061220d565b50610369611393613851565b61133a565b50346103345780600319360112610334576020603054604051908152f35b5034610334576040366003190112610334576004356001600160401b0381116115cb57366023820112156115cb578060040135826113f382612479565b926114016040519485612458565b8284526020840192366024828401011161041a578060246020930185378401015260243561ffff811681036115c7576101009182848051810103126115c3576114499061280b565b61145560408501612d69565b9161146260608601612d69565b9460808101519460a08201519261147b60c08401612d7d565b9160e084015193015193804211610a1157851561159c577f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e266915b6001600160a01b0388168b52600460205260408b20805491906000198314611588579161ffff6115459896949261099f98969460018401905560405194602086015216604084015260018060a01b038a16606084015260018060a01b038c1660808401528a60a084015260c083015260e082015260e0815261153681612421565b6020815191012061096e612bb5565b6001600160a01b038381169116036109b6571561157257610386926001600160a01b039081169116612f5d565b610386926001600160a01b039081169116612f0f565b634e487b7160e01b8d52601160045260248dfd5b7f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d6916114b5565b8480fd5b8380fd5b5080fd5b50346103345780600319360112610334576005546040516001600160a01b039091168152602090f35b50346103345780600319360112610334576020601b54604051908152f35b5034610334578060031936011261033457601454604080516001600160801b038316815260809290921c602083015290f35b50346103345780600319360112610334576020602e54604051908152f35b50346103345760403660031901126103345761168d6116836121be565b6024359033612f0f565b602060405160018152f35b5034610334576020366003190112610334576020906040906001600160a01b036116c06121be565b168152600483522054604051908152f35b5034610334578060031936011261033457600f546040516001600160a01b039091168152602090f35b50346103345780600319360112610334576103696040516113738161171e8161233d565b0382612458565b50346103345760203660031901126103345760043590600982101561033457602060ff611751846122d4565b54166040519015158152f35b5034610334576020366003190112610334576020906040906001600160a01b036117856121be565b168152600183522054604051908152f35b5034610334578060031936011261033457600a546040516001600160a01b039091168152602090f35b50346103345780600319360112610334576117d8613242565b5060806117e361327a565b509350505050604051916001600160401b0380825116845260208201511660208401526040600180861b039101511660408301526060820152f35b50346103345780600319360112610334576020601c54604051908152f35b503461033457806003193601126103345760206001600160401b03602d5460401c16604051908152f35b503461033457806003193601126103345760206001600160401b03602d5416604051908152f35b503461033457806003193601126103345760206001600160401b03602f5416604051908152f35b503461033457806003193601126103345760208054604051908152f35b50346103345780600319360112610334576006546001600160a01b03908181163381900361193b57806005549384167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08680a36001600160a01b0319928316176005551660065580f35b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b50346103345780600319360112610334576020602954604051908152f35b5034610334576020366003190112610334576020906040906001600160a01b036119c56121be565b168152601783522054604051908152f35b50346103345780600319360112610334576020601554604051908152f35b50346103345780600319360112610334576020600e54604051908152f35b50346103345780600319360112610334576020601654604051908152f35b50346103345760603660031901126103345760206112d6604435602435600435612593565b50346103345780600319360112610334576020601154604051908152f35b5034610334578060031936011261033457600d546040516001600160a01b039091168152602090f35b50346103345780600319360112610334576020601254604051908152f35b503461033457806003193601126103345760206112d6612bb5565b50346103345780600319360112610334576020601954604051908152f35b50346103345780600319360112610334576020601354604051908152f35b5034610334578060031936011261033457808060018060a01b03600d5416604051602081019063313ce56760e01b825260048152611b4e816123eb565b51915afa90611b5b613821565b9180611b98575b15611b8d576020828051810103126103345750611b826020809201612d7d565b60ff60405191168152f35b505060206012611b82565b506020825114611b62565b503461033457611bb23661229f565b919282611bee575b506040519182526001600160a01b03908116921690600080516020613a1d83398151915290602090a3602060405160018152f35b6001600160a01b03848116808352600160209081526040842054928690611c1782861015612cdf565b861693848403611c2c575b5050505050611bba565b838652600283526040808720338852845286205460018101611c96575b5092600160209693611c748794604097611219600080516020613a1d8339815191529c9a1515612d24565b9285525283832055815220611c8a85825461256d565b90559138808581611c22565b90918110611cea5792600160209693611c748a600080516020613a1d8339815191529a9895611cc78260409a612560565b86895260028552898920338a528552898920559497509497995050939650611c49565b60405162461bcd60e51b815260048101849052601860248201527745524332303a20616c6c6f77616e636520746f6f206c6f7760401b6044820152606490fd5b503461033457611d3936612250565b90839594954211610a11576001600160a01b03878116808a52600460205260408a2080549196929592906000198314611dea5782611ddb9694928d92600161099f98960190556040519160208301937f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d6855260408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e0815261096381612421565b16036109b65761038692612f0f565b634e487b7160e01b8c52601160045260248cfd5b5034610334576020366003190112610334576020906040906001600160a01b03611e266121be565b168152601883522054604051908152f35b5034610334578060031936011261033457602060255460801c604051908152f35b50346103345760403660031901126103345760043560098110156115cb57611e7e612232565b6008549091906001600160a01b03163303611f345760ff611e9e826122d4565b54161515911515918214611efa57808260ff611ebc611eea946122d4565b54161515827feeec81de25875ce1725479bb76f720a8defdb43dea041919ae37bb4aae9847c08780a46122d4565b9060ff8019835416911617905580f35b60405162461bcd60e51b81526020600482015260126024820152714d61726b65743a2073616d6520737461746560701b6044820152606490fd5b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881d5b985d5d1a1bdc9a5e995960621b6044820152606490fd5b50346103345760403660031901126103345761168d611f8d6121be565b6024359033612f5d565b503461033457606036600319011261033457611fb16121be565b611fb9612232565b611fc1612241565b9060018060a01b03928391611fdb83600554163314612494565b1561207f571690811590811591612077575b501561203a57806005549283167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08580a36001600160a01b03199182161760055560068054909116905580f35b60405162461bcd60e51b81526020600482015260156024820152744f776e61626c653a207a65726f206164647265737360581b6044820152606490fd5b905038611fed565b9150501660018060a01b0319600654161760065580f35b5034610334578060031936011261033457808060018060a01b03600b541660405160208101906306fdde0360e01b8252600481526120d3816123eb565b51915afa6120df613821565b91501561213c576120f2610369916138a8565b6113736034604051809373546170696f63612053696e67756c61726974792d60601b602083015261212c81518092602086860191016121ea565b8101036014810184520182612458565b50610369612148613851565b6120f2565b50346103345780600319360112610334576040612168612818565b825191151582526020820152f35b9050346115cb5760403660031901126115cb5760406020926121966121be565b61219e6121d4565b6001600160a01b0391821683526003865283832091168252845220548152f35b600435906001600160a01b038216820361060c57565b602435906001600160a01b038216820361060c57565b60005b8381106121fd5750506000910152565b81810151838201526020016121ed565b90602091612226815180928185528580860191016121ea565b601f01601f1916010190565b60243590811515820361060c57565b60443590811515820361060c57565b60e090600319011261060c576001600160a01b0390600435828116810361060c5791602435908116810361060c5790604435906064359060843560ff8116810361060c579060a4359060c43590565b606090600319011261060c576001600160a01b0390600435828116810361060c5791602435908116810361060c579060443590565b60098110156122ed576000526007602052604060002090565b634e487b7160e01b600052602160045260246000fd5b90600182811c92168015612333575b602083101461231d57565b634e487b7160e01b600052602260045260246000fd5b91607f1691612312565b6010546000929161234d82612303565b9081815260019283811690816000146123a7575060011461236d57505050565b9092935060106000526020928360002092846000945b8386106123935750505050010190565b805485870183015294019385908201612383565b91935050602093945060ff191683830152151560051b010190565b6001600160401b0381116123d557604052565b634e487b7160e01b600052604160045260246000fd5b604081019081106001600160401b038211176123d557604052565b606081019081106001600160401b038211176123d557604052565b61010081019081106001600160401b038211176123d557604052565b608081019081106001600160401b038211176123d557604052565b90601f801991011681019081106001600160401b038211176123d557604052565b6001600160401b0381116123d557601f01601f191660200190565b1561249b57565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b156124e657565b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881b9bdd081d985b1a59607a1b6044820152606490fd5b818102929181159184041417156109fb57565b811561253c570490565b634e487b7160e01b600052601260045260246000fd5b604d81116109fb57600a0a90565b919082039182116109fb57565b919082018092116109fb57565b818103929160001380158285131691841216176109fb57565b6014549192916125dc916125cd916125c3916125b9906001600160801b0383169061251f565b9060801c90612532565b93601f549061251f565b6125d683612552565b90612532565b8083106126a4576125f061262c9184612560565b91612627612621612618601e5461261261260986612552565b6020549061256d565b9061251f565b6125d684612552565b91612552565b61257a565b6509184e72a000908181029181830514901517156109fb57670de0b6b3a7640000918281029281840514901517156109fb57801561253c57600160ff1b918083146000198314166109fb570590600082121561269d5781146109fb57600003905b808211612698575090565b905090565b509061268d565b505050600090565b9160018060a01b0380931691600093838552602060178152604091828720549081156127fe57878385516126df816123eb565b82815201526126ec61327a565b50505050509190506126ff861515612980565b6009541683600c54898b52601882526064878c2054918851948593849263442c159960e01b8452600484015260248301528d60448301525afa9081156127f45789916127c1575b50916127a16127b5979899949261277c8861277761276e601898620186a0602254049061251f565b601e549061251f565b612532565b815190936001600160801b039186916127979184169061251f565b9201511690612532565b8181106127b957035b9783525220546129cc565b9091565b5050826127aa565b90508381813d83116127ed575b6127d88183612458565b810103126127e957516127a1612746565b8880fd5b503d6127ce565b85513d8b823e3d90fd5b5086955085949350505050565b5190811515820361060c57565b600f546040805163d6d7d52560e01b8152602060048201529290916001600160a01b031682848061284b6024820161233d565b0381600080955af180156129745781948291612938575b509284156128db5783156128a157507f9f9192b5edb17356c524e08d9e025c8e2f6307e6ea52fb7968faa3081f51c3c883918260115580a25b42601355565b5162461bcd60e51b81526020600482015260146024820152734d61726b65743a20696e76616c6964207261746560601b6044820152606490fd5b919250506128ee6013546012549061256d565b42116128fe57506011549061289b565b5162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881c985d19481d1bdbc81bdb1960621b6044820152606490fd5b809550848092503d831161296d575b6129518183612458565b810103126103345760206129648561280b565b94015138612862565b503d612947565b508251903d90823e3d90fd5b1561298757565b60405162461bcd60e51b815260206004820152601e60248201527f4d61726b65743a2065786368616e676552617465206e6f742076616c696400006044820152606490fd5b6129d7821515612980565b602060018060a01b0360095416916064600c54604051948593849263442c159960e01b845260048401526024830152600060448301525afa908115612a7757600091612a44575b5090612777612a30926022549061251f565b620186a0612a40601e548361251f565b0491565b906020823d8211612a6f575b81612a5d60209383612458565b81010312610334575051612777612a1e565b3d9150612a50565b6040513d6000823e3d90fd5b6001600160a01b03166000818152601860205260408120549092612aa6916129cc565b918352601760205260408320548015612baf578115612baf57818110612baf5782811015612ba557601454612aef918391611219916125b9906001600160801b0383169061251f565b90620186a09283830292808404851490151715612b9157612b1492916125d691612560565b91601b5491601c5493612b27858561257a565b80820291848212600160ff1b821416612b91578183051490151715612b7d5705818482019485129112908015821691151617612b695750808212612698575090565b634e487b7160e01b81526011600452602490fd5b634e487b7160e01b83526011600452602483fd5b634e487b7160e01b85526011600452602485fd5b50505050601b5490565b50505090565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03161480612cb6575b15612c10577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f000000000000000000000000000000000000000000000000000000000000000082527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a0815260c081018181106001600160401b038211176123d55760405251902090565b507f00000000000000000000000000000000000000000000000000000000000000004614612be7565b15612ce657565b60405162461bcd60e51b815260206004820152601660248201527545524332303a2062616c616e636520746f6f206c6f7760501b6044820152606490fd5b15612d2b57565b60405162461bcd60e51b815260206004820152601660248201527545524332303a206e6f207a65726f206164647265737360501b6044820152606490fd5b51906001600160a01b038216820361060c57565b519060ff8216820361060c57565b60058110156122ed5780612d9c5750565b60018103612de45760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b6044820152606490fd5b60028103612e315760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606490fd5b600314612e3a57565b60405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608490fd5b9291906fa2a8918ca85bafe22016d0b997e4df60600160ff1b038311612f035791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa15612ef65781516001600160a01b03811615612ef0579190565b50600190565b50604051903d90823e3d90fd5b50505050600090600390565b7fe50de2333c10a9502fcb1d8ae13a51bbf423153dfc63c2b8997665b32154afc360018060a01b038092169160009083825260036020526040822094169384825260205284604082205580a4565b909160207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259160018060a01b03809416938460005260028352604060002095169485600052825280604060002055604051908152a3565b15612fbb57565b60405162461bcd60e51b815260206004820152600e60248201526d13585c9ad95d0e881c185d5cd95960921b6044820152606490fd5b15612ff857565b606460405162461bcd60e51b815260206004820152602060248201527f4d61726b65743a2063616e6e6f742065786563757465206f6e20697473656c666044820152fd5b6001600160a01b0316338103613050575050565b60008181526020906003825260409182822033835281528483832054106130ba5783825260038152828220338352815282822054600101613093575b5050505050565b6130ae93825260038152828220903383525220918254612560565b9055388080808061308c565b60649083519062461bcd60e51b82526004820152601460248201527313585c9ad95d0e881b9bdd08185c1c1c9bdd995960621b6044820152fd5b60405190613101826123eb565b6014546001600160801b038116835260801c6020830152565b60405190613127826123eb565b6025546001600160801b038116835260801c6020830152565b919060018060a01b0380600094168452602060178152604085205490811561323857601881526040862054801561308c578161317a6130f4565b9460095416916064600c54604051948593849263442c159960e01b8452600484015260248301528b60448301525afa96871561322c5780976131f6575b50506127976131d661276e6131f1969798620186a0602254049061251f565b956131ec60018060801b0394858751169061251f565b61251f565b111590565b9096508187813d8311613225575b61320e8183612458565b8101031261033457509451946127976131d66131b7565b503d613204565b604051903d90823e3d90fd5b5060019450505050565b6040519061324f82612406565b60006040838281528260208201520152565b6001600160801b0391821690821601919082116109fb57565b613282613242565b5060006020604051613293816123eb565b8281520152600060206040516132a8816123eb565b8281520152604051906132ba82612406565b602454916001600160401b038316815260208101926001600160401b038160401c16845260801c604082015280926132f06130f4565b926132f961311a565b92600060018060a01b0360095416600e549460018060801b038751166040519063442c159960e01b8252876004830152602482015260006044820152602081606481865afa8015612a7757600090613701575b895161336292506001600160801b03169061256d565b806136cc575060005b6133806001600160401b038293511642612560565b9485156136a2575050426001600160401b031660208a8101919091528801516001600160801b03161561365857506020670de0b6b3a76400006133dd856131ec8c6001600160401b038d60018060801b039051169151169061251f565b895191900496906001600160801b03906133fc90828a16908316613261565b168952875160405163442c159960e01b815260048101929092526001600160801b031660248201526000604482015291829060649082905afa8015612a7757600090613624575b875161345992506001600160801b03169061256d565b9261348784612777620186a0613471601a548a61251f565b60208c01516001600160801b031691900461251f565b6040890180519195916001600160801b0380881692916134aa9084908316613261565b16905260208801805190916001600160801b03916134ca91908316613261565b169052806135ef575060005b602a549093848281101561356a576134ee9083612560565b90670de0b6b3a7640000820291808304670de0b6b3a764000014901517156109fb5761277761354261353c61352e6001600160401b039661354c96612532565b936131ec602e54958061251f565b8361256d565b91848d511661251f565b168089526001600160401b03602d54168091106135665750565b8852565b909150602b5480821161357c57505050565b61358591612560565b670de0b6b3a7640000810290808204670de0b6b3a764000014901517156109fb576001600160401b03916127776135c861353c61352e6135d195602c5490612532565b848d511661251f565b81602d5460401c168082116135e7575b50168852565b9050386135e1565b87516001600160801b0316670de0b6b3a76400008181029291808404909114901517156109fb5761361f91612532565b6134d6565b506020813d602011613650575b8161363e60209383612458565b8101031261060c576134599051613443565b3d9150613631565b9697939450509350506001600160401b038151166001600160401b03602f5416809103613696575b50939261368b61311a565b926000926000929190565b81526001925038613680565b9750985050505050925050916136b66130f4565b916136bf61311a565b9160009160009190600090565b88516001600160801b0316670de0b6b3a76400008181029291808404909114901517156109fb576136fc91612532565b61336b565b506020813d60201161372d575b8161371b60209383612458565b8101031261060c57613362905161334c565b3d915061370e565b6020604061374161327a565b93979593909290156137e8575050506001600160401b03602f54166000807f33af5ce86e8438eff54589f85332916444457dfa8685493fbd579b809097026b868851838152a45b6001600160401b03815116838201519160018060801b0319958691015160801b16916001600160401b0360401b9060401b16171760245560018060801b039083838383511692015160801b161760145583511692015160801b1617602555565b7f33af5ce86e8438eff54589f85332916444457dfa8685493fbd579b809097026b866001600160401b03865116948951908152a4613788565b3d1561384c573d9061383282612479565b916138406040519384612458565b82523d6000602084013e565b606090565b6040519061385e826123eb565b60038252623f3f3f60e81b6020830152565b908151811015613881570160200190565b634e487b7160e01b600052603260045260246000fd5b60ff1660ff81146109fb5760010190565b8051604081106139235750805181019060208181840193031261060c576020810151906001600160401b03821161060c570181603f8201121561060c5760208101516138f381612479565b926139016040519485612458565b8184526040828401011161060c576139209160406020850191016121ea565b90565b602092908303613a11576000805b60ff811685811090816139f2575b50156139535761394e90613897565b613931565b9260ff8094169261396384612479565b936139716040519586612458565b808552613980601f1991612479565b013687860137825b858116878110806139d5575b156139ca576139c591906139bf6001600160f81b03196139b48388613870565b5116871a9188613870565b53613897565b613988565b505094505050905090565b506001600160f81b03196139e98286613870565b51161515613994565b6001600160f81b03199150613a079086613870565b511615153861393f565b91505061392061385156feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa264697066735822122010b138ea759083f9d693a64a028add5ca8d16178ec6a44e920bda62dd541befb64736f6c63430008120033", "linkReferences": {}, "deployedLinkReferences": {} } diff --git a/src/artifacts/tapioca-bar/SGLCommon.json b/src/artifacts/tapioca-bar/SGLCommon.json index 3b8bde84..cdaf913d 100644 --- a/src/artifacts/tapioca-bar/SGLCommon.json +++ b/src/artifacts/tapioca-bar/SGLCommon.json @@ -123,6 +123,25 @@ "name": "InterestElasticityUpdated", "type": "event" }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "oldVal", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newVal", + "type": "address" + } + ], + "name": "LeverageExecutorSet", + "type": "event" + }, { "anonymous": false, "inputs": [ @@ -1136,6 +1155,19 @@ "stateMutability": "view", "type": "function" }, + { + "inputs": [], + "name": "leverageExecutor", + "outputs": [ + { + "internalType": "contract ILeverageExecutor", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, { "inputs": [], "name": "liquidationBonusAmount", @@ -1525,6 +1557,19 @@ "stateMutability": "view", "type": "function" }, + { + "inputs": [ + { + "internalType": "contract ILeverageExecutor", + "name": "_executor", + "type": "address" + } + ], + "name": "setLeverageExecutor", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, { "inputs": [ { @@ -1853,8 +1898,8 @@ "type": "function" } ], - "bytecode": "0x6101408060405234620001e5576200001781620001ea565b601381526001602082017f546170696f63612053696e67756c617269747900000000000000000000000000815260206040516200005481620001ea565b8381520192603160f81b845251902091208160e052610100918183524660a0526040519160208301907f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f92838352604085015260608401524660808401523060a084015260a0835260c083019280841060018060401b03851117620001cf5760408490525190206080523060c052610120908152600580546001600160a01b0319163390811790915560007f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a362013880601b5562015f90601c55612710601d55612ee06020557f0bd4060688a1800ae986e4840aebc924bb40b5bf44de4583df2257220b54b77c6026557f7d1dc38e60930664f8cbf495da6556ca091d2f92d6550877750c049864b182306027556161a86028556032602f556131f8928362000207843960805183612693015260a0518361275e015260c0518361265d015260e051836126e201525182612708015251816126bf0152f35b634e487b7160e01b600052604160045260246000fd5b600080fd5b604081019081106001600160401b03821117620001cf5760405256fe608080604052600436101561001357600080fd5b600090813560e01c908162a02a2014611dbf5750806302ce728f14611c3757806306fdde0314611b80578063078dfbe714611a7d578063095ea7b314611a565780630c4e84f01461193e57806318160ddd1461191d5780631c9e379b146118e45780631da8bf101461182457806323b872dd14611687578063313ce567146115f5578063331960ff146115d757806334d441d0146115b95780633644e5151461159e57806337b6b7b91461158057806338d52e0f146115575780633ba0b9a9146115395780633f741adb1461151457806340626d8b146114f657806344de240a146114d8578063473e3ce7146114ba57806348e4163e146114815780634d7f2a34146114635780634e71e0c8146113b5578063529898f21461139857806352f353eb14611371578063551402321461134a57806355c2ab941461132057806357935462146113025780635dfe04e8146112a35780636c3d8b8f1461127a57806370a0823114611241578063727785471461120957806374645ff3146111de5780637dc0d1d0146111b55780637ecebe001461117c5780637fa0b84e1461114a578063821226e81461112c5780638285ef40146110fa5780638c5d0ed3146110dc5780638da5cb5b146110b3578063910dd7c814610e9a578063959916dc14610e7c57806395d89b4114610dc257806399a9702814610d925780639c5d719214610d745780639e15e89f14610d39578063a9059cbb14610c56578063b0e21e8a14610c38578063b27c0e7414610bfd578063bb4cfe3b14610bdf578063ce8849ed14610bb6578063d3fb2a381461071e578063d505accf14610579578063d8dfeb4514610550578063dd62ed3e14610505578063de406577146104dc578063e0996cb6146104be578063e30c397814610495578063ea64dd5614610477578063eec0f42e14610459578063f42760b71461043b578063f8ba4cff14610341578063f9557ccb1461030b5763ffe04c66146102eb57600080fd5b346103085780600319360112610308576020602954604051908152f35b80fd5b5034610308578060031936011261030857602454604080516001600160801b038316815260809290921c602083015290f35b0390f35b50346103085780600319360112610308576020604061035e612add565b9397959390929015610402575050506001600160401b03602e541686807f33af5ce86e8438eff54589f85332916444457dfa8685493fbd579b809097026b868851838152a45b6001600160401b038151166001600160401b03851b84830151861b169160018060801b0319958691015160801b1691171760235560018060801b039083838383511692015160801b161760145583511692015160801b161760245580f35b7f33af5ce86e8438eff54589f85332916444457dfa8685493fbd579b809097026b866001600160401b03865116948951908152a46103a4565b50346103085780600319360112610308576020602a54604051908152f35b50346103085780600319360112610308576020600c54604051908152f35b50346103085780600319360112610308576020601f54604051908152f35b50346103085780600319360112610308576006546040516001600160a01b039091168152602090f35b50346103085780600319360112610308576020601d54604051908152f35b50346103085780600319360112610308576009546040516001600160a01b039091168152602090f35b5034610308576040366003190112610308576040602091610524611e07565b61052c611e22565b6001600160a01b039182168352600285528383209116825283522054604051908152f35b5034610308578060031936011261030857600b546040516001600160a01b039091168152602090f35b50346103085761058836611e8f565b908395949542116106d9576001600160a01b03878116808a52600460205260408a20805491969295929060001983146106c5578261066e9694928d92600161066698960190556040519160208301937f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e266855260408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e0815261062a81612018565b51902061063561265a565b9060405190602082019261190160f01b8452602283015260428201526042815261065e81612034565b51902061292f565b919091612830565b16036106805761067d92612a02565b80f35b60405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152606490fd5b634e487b7160e01b8c52601160045260248cfd5b60405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b503461030857610160366003190112610308576001600160a01b0360043581811690819003610bb2576024916001600160401b038335818111610bae5736602382011215610bae578060040135918211610bae5736858383010111610bae5760443593838516809503610baa5761079a8460055416331461208b565b80610b6c575b5084826109ee575b505050816109ae575b505060643580610996575b506084358061097e575b5060a43580610967575b5060c43580610943575b5060e4358061091f575b5061010435806108ee575b50610124358061087b575b50610144359081610809578280f35b601e54821061081c5750601f5538808280f35b60849060326040519162461bcd60e51b8352602060048401528201527f4d61726b65743a206c69717569646174696f6e436f6c6c61746572616c697a616044820152711d1a5bdb94985d19481d1bdbc81cdb585b1b60721b6064820152fd5b61088a620186a08211156120d6565b601f54811161089c57601e55386107fa565b60405162461bcd60e51b8152602060048201526025818401527f4d61726b65743a20636f6c6c61746572616c697a6174696f6e5261746520746f6044820152646f2062696760d81b6064820152608490fd5b806016547fae6e0ab3b95f0a53ff9660a390ccedcbbf1f2355dce974a9841af106fddcfaba8580a3601655386107ef565b61092d620186a082106120d6565b61093a601b5482116120d6565b601c55386107e4565b610951620186a082106120d6565b61095e601c5482106120d6565b601b55386107da565b610975620186a082106120d6565b601d55386107d0565b61098d620186a08211156120d6565b601a55386107c6565b6109a5620186a08211156120d6565b601955386107bc565b816008549182167f5a62d22209e370e38eea92cfddcd228e656e6ec139243392a760a7769f5877fd8680a36001600160a01b0319161760085538806107b1565b82916109fb601054611f0d565b601f8111610afb575b508790601f8411600114610a69578893610a5c575b5050508160011b916000199060031b1c1916176010555b7fa6f004921c944d4b8bf6e38462b00f36a58d62495d56b51f571ab78f732c98158480a13880846107a8565b0101359050843880610a19565b60108952601f19841694507f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae67292509087908960205b878210610adc5750508460019610610ac0575b50505050811b01601055610a30565b60001960f88660031b161c199201013516905538808681610ab1565b8285019093013585556001949094019389929182019190810190610a9e565b6010895290925090507f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae672601f840160051c810160208510610b65575b91849391601f8994920160051c01905b818110610b545750610a04565b898155859450889350600101610b47565b5080610b37565b600f80546001600160a01b0319169190911790557f0b2d6eb667d0522c3eb86e4288afecae6c11591ffd1345d4d12407e0598bca9b8680a1386107a0565b8680fd5b8580fd5b8280fd5b50346103085780600319360112610308576008546040516001600160a01b039091168152602090f35b50346103085780600319360112610308576020601e54604051908152f35b50346103085780600319360112610308576060602354604051906001600160401b0380821683528160401c16602083015260801c6040820152f35b50346103085780600319360112610308576020601a54604051908152f35b503461030857604036600319011261030857610c70611e07565b60243580928115801590610d27575b610cb7575b50506040519182526001600160a01b03169033906000805160206131a383398151915290602090a3602060405160018152f35b33815260016020526040812054610cd083821015612784565b6001600160a01b0384169033829003610ceb575b5050610c84565b604093610d0291610cfd8415156127c9565b61216d565b338352600160205283832055815220610d1c83825461217a565b905581388080610ce4565b50336001600160a01b03841614610c7f565b5034610308576040366003190112610308576060610d61610d58611e07565b602435906122b9565b9060405192835260208301526040820152f35b50346103085780600319360112610308576020602b54604051908152f35b5034610308576040366003190112610308576020610dba610db1611e07565b60243590612528565b604051908152f35b5034610308578060031936011261030857808060018060a01b03600b541660405160208101906395d89b4160e01b825260048152610dff81611ffd565b51915afa610e0b612fa7565b915015610e6b57610e1e61033d9161302e565b610e576023604051809362746d2d60e81b6020830152610e478151809260208686019101611e38565b810103600381018452018261204f565b604051918291602083526020830190611e5b565b5061033d610e77612fd7565b610e1e565b50346103085780600319360112610308576020602f54604051908152f35b5034610308576040366003190112610308576004356001600160401b0381116110af57366023820112156110af57806004013582610ed782612070565b92610ee5604051948561204f565b82845260208401923660248284010111610bb2578060246020930185378401015260243561ffff811681036110ab576101009182848051810103126110a757610f2d90612418565b610f396040850161280e565b91610f466060860161280e565b9460808101519460a082015192610f5f60c08401612822565b9160e0840151930151938042116106d9578515611080577f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e266915b6001600160a01b0388168b52600460205260408b2080549190600019831461106c579161ffff6110299896949261066698969460018401905560405194602086015216604084015260018060a01b038a16606084015260018060a01b038c1660808401528a60a084015260c083015260e082015260e0815261101a81612018565b6020815191012061063561265a565b6001600160a01b0383811691160361068057156110565761067d926001600160a01b039081169116612a02565b61067d926001600160a01b0390811691166129b4565b634e487b7160e01b8d52601160045260248dfd5b7f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d691610f99565b8480fd5b8380fd5b5080fd5b50346103085780600319360112610308576005546040516001600160a01b039091168152602090f35b50346103085780600319360112610308576020601b54604051908152f35b5034610308578060031936011261030857601454604080516001600160801b038316815260809290921c602083015290f35b50346103085780600319360112610308576020602d54604051908152f35b503461030857604036600319011261030857611171611167611e07565b60243590336129b4565b602060405160018152f35b5034610308576020366003190112610308576020906040906001600160a01b036111a4611e07565b168152600483522054604051908152f35b5034610308578060031936011261030857600f546040516001600160a01b039091168152602090f35b503461030857806003193601126103085761033d604051610e578161120281611f47565b038261204f565b50346103085760203660031901126103085760043590600982101561030857602060ff61123584611ede565b54166040519015158152f35b5034610308576020366003190112610308576020906040906001600160a01b03611269611e07565b168152600183522054604051908152f35b5034610308578060031936011261030857600a546040516001600160a01b039091168152602090f35b50346103085780600319360112610308576112bc612a59565b5060806112c7612add565b509350505050604051916001600160401b0380825116845260208201511660208401526040600180861b039101511660408301526060820152f35b50346103085780600319360112610308576020601c54604051908152f35b503461030857806003193601126103085760206001600160401b03602c5460401c16604051908152f35b503461030857806003193601126103085760206001600160401b03602c5416604051908152f35b503461030857806003193601126103085760206001600160401b03602e5416604051908152f35b503461030857806003193601126103085760208054604051908152f35b50346103085780600319360112610308576006546001600160a01b03908181163381900361141f57806005549384167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08680a36001600160a01b0319928316176005551660065580f35b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b50346103085780600319360112610308576020602854604051908152f35b5034610308576020366003190112610308576020906040906001600160a01b036114a9611e07565b168152601783522054604051908152f35b50346103085780600319360112610308576020601554604051908152f35b50346103085780600319360112610308576020600e54604051908152f35b50346103085780600319360112610308576020601654604051908152f35b5034610308576060366003190112610308576020610dba6044356024356004356121a0565b50346103085780600319360112610308576020601154604051908152f35b5034610308578060031936011261030857600d546040516001600160a01b039091168152602090f35b50346103085780600319360112610308576020601254604051908152f35b50346103085780600319360112610308576020610dba61265a565b50346103085780600319360112610308576020601954604051908152f35b50346103085780600319360112610308576020601354604051908152f35b5034610308578060031936011261030857808060018060a01b03600d5416604051602081019063313ce56760e01b82526004815261163281611ffd565b51915afa9061163f612fa7565b918061167c575b156116715760208280518101031261030857506116666020809201612822565b60ff60405191168152f35b505060206012611666565b506020825114611646565b5034610308576060366003190112610308576116a1611e07565b906116aa611e22565b60443591826116e8575b506040519182526001600160a01b039081169216906000805160206131a383398151915290602090a3602060405160018152f35b6001600160a01b0384811680835260016020908152604084205492869061171182861015612784565b861693848403611726575b50505050506116b4565b838652600283526040808720338852845286205460018101611790575b509260016020969361176e8794604097610cfd6000805160206131a38339815191529c9a15156127c9565b928552528383205581522061178485825461217a565b9055913880858161171c565b909181106117e4579260016020969361176e8a6000805160206131a38339815191529a98956117c18260409a61216d565b86895260028552898920338a528552898920559497509497995050939650611743565b60405162461bcd60e51b815260048101849052601860248201527745524332303a20616c6c6f77616e636520746f6f206c6f7760401b6044820152606490fd5b50346103085761183336611e8f565b908395949542116106d9576001600160a01b03878116808a52600460205260408a20805491969295929060001983146106c557826118d59694928d92600161066698960190556040519160208301937f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d6855260408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e0815261062a81612018565b16036106805761067d926129b4565b5034610308576020366003190112610308576020906040906001600160a01b0361190c611e07565b168152601883522054604051908152f35b5034610308578060031936011261030857602060245460801c604051908152f35b50346103085760403660031901126103085760043560098110156110af57611964611e80565b6008549091906001600160a01b03163303611a1a5760ff61198482611ede565b541615159115159182146119e057808260ff6119a26119d094611ede565b54161515827feeec81de25875ce1725479bb76f720a8defdb43dea041919ae37bb4aae9847c08780a4611ede565b9060ff8019835416911617905580f35b60405162461bcd60e51b81526020600482015260126024820152714d61726b65743a2073616d6520737461746560701b6044820152606490fd5b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881d5b985d5d1a1bdc9a5e995960621b6044820152606490fd5b503461030857604036600319011261030857611171611a73611e07565b6024359033612a02565b503461030857606036600319011261030857611a97611e07565b611a9f611e80565b6044359081151582036110ab5760018060a01b03928391611ac58360055416331461208b565b15611b69571690811590811591611b61575b5015611b2457806005549283167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08580a36001600160a01b03199182161760055560068054909116905580f35b60405162461bcd60e51b81526020600482015260156024820152744f776e61626c653a207a65726f206164647265737360581b6044820152606490fd5b905038611ad7565b9150501660018060a01b0319600654161760065580f35b5034610308578060031936011261030857808060018060a01b03600b541660405160208101906306fdde0360e01b825260048152611bbd81611ffd565b51915afa611bc9612fa7565b915015611c2657611bdc61033d9161302e565b610e576034604051809373546170696f63612053696e67756c61726974792d60601b6020830152611c168151809260208686019101611e38565b810103601481018452018261204f565b5061033d611c32612fd7565b611bdc565b5034610308578060031936011261030857600f546040805163d6d7d52560e01b8152602060048201529182906001600160a01b0316818581611c7b60248201611f47565b03925af18015611db45782918391611d74575b508115611d15578015611cd957807f9f9192b5edb17356c524e08d9e025c8e2f6307e6ea52fb7968faa3081f51c3c86040948260115580a25b42601355825191151582526020820152f35b60405162461bcd60e51b81526020600482015260146024820152734d61726b65743a20696e76616c6964207261746560601b6044820152606490fd5b509050611d276013546012549061217a565b4211611d3857604090601154611cc7565b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881c985d19481d1bdbc81bdb1960621b6044820152606490fd5b9150506040813d604011611dac575b81611d906040938361204f565b810103126110af576020611da382612418565b91015138611c8e565b3d9150611d83565b6040513d84823e3d90fd5b9050346110af5760403660031901126110af576040602092611ddf611e07565b611de7611e22565b6001600160a01b0391821683526003865283832091168252845220548152f35b600435906001600160a01b0382168203611e1d57565b600080fd5b602435906001600160a01b0382168203611e1d57565b60005b838110611e4b5750506000910152565b8181015183820152602001611e3b565b90602091611e7481518092818552858086019101611e38565b601f01601f1916010190565b602435908115158203611e1d57565b60e0906003190112611e1d576001600160a01b03906004358281168103611e1d57916024359081168103611e1d5790604435906064359060843560ff81168103611e1d579060a4359060c43590565b6009811015611ef7576000526007602052604060002090565b634e487b7160e01b600052602160045260246000fd5b90600182811c92168015611f3d575b6020831014611f2757565b634e487b7160e01b600052602260045260246000fd5b91607f1691611f1c565b60105460009291611f5782611f0d565b908181526001928381169081600014611fb15750600114611f7757505050565b9092935060106000526020928360002092846000945b838610611f9d5750505050010190565b805485870183015294019385908201611f8d565b91935050602093945060ff191683830152151560051b010190565b606081019081106001600160401b03821117611fe757604052565b634e487b7160e01b600052604160045260246000fd5b604081019081106001600160401b03821117611fe757604052565b61010081019081106001600160401b03821117611fe757604052565b608081019081106001600160401b03821117611fe757604052565b90601f801991011681019081106001600160401b03821117611fe757604052565b6001600160401b038111611fe757601f01601f191660200190565b1561209257565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b156120dd57565b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881b9bdd081d985b1a59607a1b6044820152606490fd5b8181029291811591840414171561212957565b634e487b7160e01b600052601160045260246000fd5b8115612149570490565b634e487b7160e01b600052601260045260246000fd5b604d811161212957600a0a90565b9190820391821161212957565b9190820180921161212957565b8181039291600013801582851316918412161761212957565b6014549192916121e9916121da916121d0916121c6906001600160801b03831690612116565b9060801c9061213f565b93601f5490612116565b6121e38361215f565b9061213f565b8083106122b1576121fd612239918461216d565b9161223461222e612225601e5461221f6122168661215f565b6020549061217a565b90612116565b6121e38461215f565b9161215f565b612187565b6509184e72a0009081810291818305149015171561212957670de0b6b3a76400009182810292818405149015171561212957801561214957600160ff1b9180831460001983141661212957059060008212156122aa57811461212957600003905b8082116122a5575090565b905090565b509061229a565b505050600090565b9160018060a01b03809316916000938385526020601781526040918287205490811561240b57878385516122ec81611ffd565b82815201526122f9612add565b505050505091905061230c861515612425565b6009541683600c54898b52601882526064878c2054918851948593849263442c159960e01b8452600484015260248301528d60448301525afa9081156124015789916123ce575b50916123ae6123c297989994926123898861238461237b601898620186a06021540490612116565b601e5490612116565b61213f565b815190936001600160801b039186916123a491841690612116565b920151169061213f565b8181106123c657035b978352522054612471565b9091565b5050826123b7565b90508381813d83116123fa575b6123e5818361204f565b810103126123f657516123ae612353565b8880fd5b503d6123db565b85513d8b823e3d90fd5b5086955085949350505050565b51908115158203611e1d57565b1561242c57565b60405162461bcd60e51b815260206004820152601e60248201527f4d61726b65743a2065786368616e676552617465206e6f742076616c696400006044820152606490fd5b61247c821515612425565b602060018060a01b0360095416916064600c54604051948593849263442c159960e01b845260048401526024830152600060448301525afa90811561251c576000916124e9575b50906123846124d59260215490612116565b620186a06124e5601e5483612116565b0491565b906020823d8211612514575b816125026020938361204f565b810103126103085750516123846124c3565b3d91506124f5565b6040513d6000823e3d90fd5b6001600160a01b0316600081815260186020526040812054909261254b91612471565b91835260176020526040832054801561265457811561265457818110612654578281101561264a57601454612594918391610cfd916121c6906001600160801b03831690612116565b90620186a09283830292808404851490151715612636576125b992916121e39161216d565b91601b5491601c54936125cc8585612187565b80820291848212600160ff1b821416612636578183051490151715612622570581848201948512911290801582169115161761260e57508082126122a5575090565b634e487b7160e01b81526011600452602490fd5b634e487b7160e01b83526011600452602483fd5b634e487b7160e01b85526011600452602485fd5b50505050601b5490565b50505090565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316148061275b575b156126b5577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f000000000000000000000000000000000000000000000000000000000000000082527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a0815260c081018181106001600160401b03821117611fe75760405251902090565b507f0000000000000000000000000000000000000000000000000000000000000000461461268c565b1561278b57565b60405162461bcd60e51b815260206004820152601660248201527545524332303a2062616c616e636520746f6f206c6f7760501b6044820152606490fd5b156127d057565b60405162461bcd60e51b815260206004820152601660248201527545524332303a206e6f207a65726f206164647265737360501b6044820152606490fd5b51906001600160a01b0382168203611e1d57565b519060ff82168203611e1d57565b6005811015611ef757806128415750565b600181036128895760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b6044820152606490fd5b600281036128d65760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606490fd5b6003146128df57565b60405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608490fd5b9291906fa2a8918ca85bafe22016d0b997e4df60600160ff1b0383116129a85791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa1561299b5781516001600160a01b03811615612995579190565b50600190565b50604051903d90823e3d90fd5b50505050600090600390565b7fe50de2333c10a9502fcb1d8ae13a51bbf423153dfc63c2b8997665b32154afc360018060a01b038092169160009083825260036020526040822094169384825260205284604082205580a4565b909160207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259160018060a01b03809416938460005260028352604060002095169485600052825280604060002055604051908152a3565b60405190612a6682611fcc565b60006040838281528260208201520152565b60405190612a8582611ffd565b6014546001600160801b038116835260801c6020830152565b60405190612aab82611ffd565b6024546001600160801b038116835260801c6020830152565b6001600160801b03918216908216019190821161212957565b612ae5612a59565b5060006020604051612af681611ffd565b828152015260006020604051612b0b81611ffd565b8281520152604051612b1c81611fcc565b6023546001600160401b03811682526001600160401b038160401c16602083015260801c60408201528091612b4f612a78565b91612b58612a9e565b600954600e54825160405163442c159960e01b8152600481018390526001600160801b03909116602482015260006044820181905293959194919391926001600160a01b031690602081606481855afa801561251c57600090612f73575b8851612bcc92506001600160801b03169061217a565b80612f3e575060005b80612bed6001600160401b036020870151164261216d565b948515612f14575050426001600160401b031660208a8101919091528801516001600160801b031615612eca57506020670de0b6b3a7640000612c4f85612c4a8c6001600160401b038d60018060801b0390511691511690612116565b612116565b895191900496906001600160801b0390612c6e90828a16908316612ac4565b168952875160405163442c159960e01b815260048101929092526001600160801b031660248201526000604482015291829060649082905afa801561251c57600090612e96575b8751612ccb92506001600160801b03169061217a565b92612cf984612384620186a0612ce3601a548a612116565b60208c01516001600160801b0316919004612116565b6040890180519195916001600160801b038088169291612d1c9084908316612ac4565b16905260208801805190916001600160801b0391612d3c91908316612ac4565b16905280612e61575060005b60295490938482811015612ddc57612d60908361216d565b90670de0b6b3a7640000820291808304670de0b6b3a7640000149015171561212957612384612db4612dae612da06001600160401b0396612dbe9661213f565b93612c4a602d549580612116565b8361217a565b91848d5116612116565b168089526001600160401b03602c5416809110612dd85750565b8852565b909150602a54808211612dee57505050565b612df79161216d565b670de0b6b3a7640000810290808204670de0b6b3a76400001490151715612129576001600160401b0391612384612e3a612dae612da0612e4395602b549061213f565b848d5116612116565b81602c5460401c16808211612e59575b50168852565b905038612e53565b87516001600160801b0316670de0b6b3a764000081810292918084049091149015171561212957612e919161213f565b612d48565b506020813d602011612ec2575b81612eb06020938361204f565b81010312611e1d57612ccb9051612cb5565b3d9150612ea3565b9697939450509350506001600160401b038151166001600160401b03602e5416809103612f08575b509392612efd612a9e565b926000926000929190565b81526001925038612ef2565b975098505050505092505091612f28612a78565b91612f31612a9e565b9160009160009190600090565b87516001600160801b0316670de0b6b3a764000081810292918084049091149015171561212957612f6e9161213f565b612bd5565b506020813d602011612f9f575b81612f8d6020938361204f565b81010312611e1d57612bcc9051612bb6565b3d9150612f80565b3d15612fd2573d90612fb882612070565b91612fc6604051938461204f565b82523d6000602084013e565b606090565b60405190612fe482611ffd565b60038252623f3f3f60e81b6020830152565b908151811015613007570160200190565b634e487b7160e01b600052603260045260246000fd5b60ff1660ff81146121295760010190565b8051604081106130a957508051810190602081818401930312611e1d576020810151906001600160401b038211611e1d570181603f82011215611e1d57602081015161307981612070565b92613087604051948561204f565b81845260408284010111611e1d576130a6916040602085019101611e38565b90565b602092908303613197576000805b60ff81168581109081613178575b50156130d9576130d49061301d565b6130b7565b9260ff809416926130e984612070565b936130f7604051958661204f565b808552613106601f1991612070565b013687860137825b8581168781108061315b575b156131505761314b91906131456001600160f81b031961313a8388612ff6565b5116871a9188612ff6565b5361301d565b61310e565b505094505050905090565b506001600160f81b031961316f8286612ff6565b5116151561311a565b6001600160f81b0319915061318d9086612ff6565b51161515386130c5565b9150506130a6612fd756feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa264697066735822122013f4fadcc6d8a5582ff6b55236431f484dc8018dcb0d56a344cccb04b2758aa264736f6c63430008120033", - "deployedBytecode": "0x608080604052600436101561001357600080fd5b600090813560e01c908162a02a2014611dbf5750806302ce728f14611c3757806306fdde0314611b80578063078dfbe714611a7d578063095ea7b314611a565780630c4e84f01461193e57806318160ddd1461191d5780631c9e379b146118e45780631da8bf101461182457806323b872dd14611687578063313ce567146115f5578063331960ff146115d757806334d441d0146115b95780633644e5151461159e57806337b6b7b91461158057806338d52e0f146115575780633ba0b9a9146115395780633f741adb1461151457806340626d8b146114f657806344de240a146114d8578063473e3ce7146114ba57806348e4163e146114815780634d7f2a34146114635780634e71e0c8146113b5578063529898f21461139857806352f353eb14611371578063551402321461134a57806355c2ab941461132057806357935462146113025780635dfe04e8146112a35780636c3d8b8f1461127a57806370a0823114611241578063727785471461120957806374645ff3146111de5780637dc0d1d0146111b55780637ecebe001461117c5780637fa0b84e1461114a578063821226e81461112c5780638285ef40146110fa5780638c5d0ed3146110dc5780638da5cb5b146110b3578063910dd7c814610e9a578063959916dc14610e7c57806395d89b4114610dc257806399a9702814610d925780639c5d719214610d745780639e15e89f14610d39578063a9059cbb14610c56578063b0e21e8a14610c38578063b27c0e7414610bfd578063bb4cfe3b14610bdf578063ce8849ed14610bb6578063d3fb2a381461071e578063d505accf14610579578063d8dfeb4514610550578063dd62ed3e14610505578063de406577146104dc578063e0996cb6146104be578063e30c397814610495578063ea64dd5614610477578063eec0f42e14610459578063f42760b71461043b578063f8ba4cff14610341578063f9557ccb1461030b5763ffe04c66146102eb57600080fd5b346103085780600319360112610308576020602954604051908152f35b80fd5b5034610308578060031936011261030857602454604080516001600160801b038316815260809290921c602083015290f35b0390f35b50346103085780600319360112610308576020604061035e612add565b9397959390929015610402575050506001600160401b03602e541686807f33af5ce86e8438eff54589f85332916444457dfa8685493fbd579b809097026b868851838152a45b6001600160401b038151166001600160401b03851b84830151861b169160018060801b0319958691015160801b1691171760235560018060801b039083838383511692015160801b161760145583511692015160801b161760245580f35b7f33af5ce86e8438eff54589f85332916444457dfa8685493fbd579b809097026b866001600160401b03865116948951908152a46103a4565b50346103085780600319360112610308576020602a54604051908152f35b50346103085780600319360112610308576020600c54604051908152f35b50346103085780600319360112610308576020601f54604051908152f35b50346103085780600319360112610308576006546040516001600160a01b039091168152602090f35b50346103085780600319360112610308576020601d54604051908152f35b50346103085780600319360112610308576009546040516001600160a01b039091168152602090f35b5034610308576040366003190112610308576040602091610524611e07565b61052c611e22565b6001600160a01b039182168352600285528383209116825283522054604051908152f35b5034610308578060031936011261030857600b546040516001600160a01b039091168152602090f35b50346103085761058836611e8f565b908395949542116106d9576001600160a01b03878116808a52600460205260408a20805491969295929060001983146106c5578261066e9694928d92600161066698960190556040519160208301937f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e266855260408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e0815261062a81612018565b51902061063561265a565b9060405190602082019261190160f01b8452602283015260428201526042815261065e81612034565b51902061292f565b919091612830565b16036106805761067d92612a02565b80f35b60405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152606490fd5b634e487b7160e01b8c52601160045260248cfd5b60405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b503461030857610160366003190112610308576001600160a01b0360043581811690819003610bb2576024916001600160401b038335818111610bae5736602382011215610bae578060040135918211610bae5736858383010111610bae5760443593838516809503610baa5761079a8460055416331461208b565b80610b6c575b5084826109ee575b505050816109ae575b505060643580610996575b506084358061097e575b5060a43580610967575b5060c43580610943575b5060e4358061091f575b5061010435806108ee575b50610124358061087b575b50610144359081610809578280f35b601e54821061081c5750601f5538808280f35b60849060326040519162461bcd60e51b8352602060048401528201527f4d61726b65743a206c69717569646174696f6e436f6c6c61746572616c697a616044820152711d1a5bdb94985d19481d1bdbc81cdb585b1b60721b6064820152fd5b61088a620186a08211156120d6565b601f54811161089c57601e55386107fa565b60405162461bcd60e51b8152602060048201526025818401527f4d61726b65743a20636f6c6c61746572616c697a6174696f6e5261746520746f6044820152646f2062696760d81b6064820152608490fd5b806016547fae6e0ab3b95f0a53ff9660a390ccedcbbf1f2355dce974a9841af106fddcfaba8580a3601655386107ef565b61092d620186a082106120d6565b61093a601b5482116120d6565b601c55386107e4565b610951620186a082106120d6565b61095e601c5482106120d6565b601b55386107da565b610975620186a082106120d6565b601d55386107d0565b61098d620186a08211156120d6565b601a55386107c6565b6109a5620186a08211156120d6565b601955386107bc565b816008549182167f5a62d22209e370e38eea92cfddcd228e656e6ec139243392a760a7769f5877fd8680a36001600160a01b0319161760085538806107b1565b82916109fb601054611f0d565b601f8111610afb575b508790601f8411600114610a69578893610a5c575b5050508160011b916000199060031b1c1916176010555b7fa6f004921c944d4b8bf6e38462b00f36a58d62495d56b51f571ab78f732c98158480a13880846107a8565b0101359050843880610a19565b60108952601f19841694507f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae67292509087908960205b878210610adc5750508460019610610ac0575b50505050811b01601055610a30565b60001960f88660031b161c199201013516905538808681610ab1565b8285019093013585556001949094019389929182019190810190610a9e565b6010895290925090507f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae672601f840160051c810160208510610b65575b91849391601f8994920160051c01905b818110610b545750610a04565b898155859450889350600101610b47565b5080610b37565b600f80546001600160a01b0319169190911790557f0b2d6eb667d0522c3eb86e4288afecae6c11591ffd1345d4d12407e0598bca9b8680a1386107a0565b8680fd5b8580fd5b8280fd5b50346103085780600319360112610308576008546040516001600160a01b039091168152602090f35b50346103085780600319360112610308576020601e54604051908152f35b50346103085780600319360112610308576060602354604051906001600160401b0380821683528160401c16602083015260801c6040820152f35b50346103085780600319360112610308576020601a54604051908152f35b503461030857604036600319011261030857610c70611e07565b60243580928115801590610d27575b610cb7575b50506040519182526001600160a01b03169033906000805160206131a383398151915290602090a3602060405160018152f35b33815260016020526040812054610cd083821015612784565b6001600160a01b0384169033829003610ceb575b5050610c84565b604093610d0291610cfd8415156127c9565b61216d565b338352600160205283832055815220610d1c83825461217a565b905581388080610ce4565b50336001600160a01b03841614610c7f565b5034610308576040366003190112610308576060610d61610d58611e07565b602435906122b9565b9060405192835260208301526040820152f35b50346103085780600319360112610308576020602b54604051908152f35b5034610308576040366003190112610308576020610dba610db1611e07565b60243590612528565b604051908152f35b5034610308578060031936011261030857808060018060a01b03600b541660405160208101906395d89b4160e01b825260048152610dff81611ffd565b51915afa610e0b612fa7565b915015610e6b57610e1e61033d9161302e565b610e576023604051809362746d2d60e81b6020830152610e478151809260208686019101611e38565b810103600381018452018261204f565b604051918291602083526020830190611e5b565b5061033d610e77612fd7565b610e1e565b50346103085780600319360112610308576020602f54604051908152f35b5034610308576040366003190112610308576004356001600160401b0381116110af57366023820112156110af57806004013582610ed782612070565b92610ee5604051948561204f565b82845260208401923660248284010111610bb2578060246020930185378401015260243561ffff811681036110ab576101009182848051810103126110a757610f2d90612418565b610f396040850161280e565b91610f466060860161280e565b9460808101519460a082015192610f5f60c08401612822565b9160e0840151930151938042116106d9578515611080577f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e266915b6001600160a01b0388168b52600460205260408b2080549190600019831461106c579161ffff6110299896949261066698969460018401905560405194602086015216604084015260018060a01b038a16606084015260018060a01b038c1660808401528a60a084015260c083015260e082015260e0815261101a81612018565b6020815191012061063561265a565b6001600160a01b0383811691160361068057156110565761067d926001600160a01b039081169116612a02565b61067d926001600160a01b0390811691166129b4565b634e487b7160e01b8d52601160045260248dfd5b7f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d691610f99565b8480fd5b8380fd5b5080fd5b50346103085780600319360112610308576005546040516001600160a01b039091168152602090f35b50346103085780600319360112610308576020601b54604051908152f35b5034610308578060031936011261030857601454604080516001600160801b038316815260809290921c602083015290f35b50346103085780600319360112610308576020602d54604051908152f35b503461030857604036600319011261030857611171611167611e07565b60243590336129b4565b602060405160018152f35b5034610308576020366003190112610308576020906040906001600160a01b036111a4611e07565b168152600483522054604051908152f35b5034610308578060031936011261030857600f546040516001600160a01b039091168152602090f35b503461030857806003193601126103085761033d604051610e578161120281611f47565b038261204f565b50346103085760203660031901126103085760043590600982101561030857602060ff61123584611ede565b54166040519015158152f35b5034610308576020366003190112610308576020906040906001600160a01b03611269611e07565b168152600183522054604051908152f35b5034610308578060031936011261030857600a546040516001600160a01b039091168152602090f35b50346103085780600319360112610308576112bc612a59565b5060806112c7612add565b509350505050604051916001600160401b0380825116845260208201511660208401526040600180861b039101511660408301526060820152f35b50346103085780600319360112610308576020601c54604051908152f35b503461030857806003193601126103085760206001600160401b03602c5460401c16604051908152f35b503461030857806003193601126103085760206001600160401b03602c5416604051908152f35b503461030857806003193601126103085760206001600160401b03602e5416604051908152f35b503461030857806003193601126103085760208054604051908152f35b50346103085780600319360112610308576006546001600160a01b03908181163381900361141f57806005549384167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08680a36001600160a01b0319928316176005551660065580f35b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b50346103085780600319360112610308576020602854604051908152f35b5034610308576020366003190112610308576020906040906001600160a01b036114a9611e07565b168152601783522054604051908152f35b50346103085780600319360112610308576020601554604051908152f35b50346103085780600319360112610308576020600e54604051908152f35b50346103085780600319360112610308576020601654604051908152f35b5034610308576060366003190112610308576020610dba6044356024356004356121a0565b50346103085780600319360112610308576020601154604051908152f35b5034610308578060031936011261030857600d546040516001600160a01b039091168152602090f35b50346103085780600319360112610308576020601254604051908152f35b50346103085780600319360112610308576020610dba61265a565b50346103085780600319360112610308576020601954604051908152f35b50346103085780600319360112610308576020601354604051908152f35b5034610308578060031936011261030857808060018060a01b03600d5416604051602081019063313ce56760e01b82526004815261163281611ffd565b51915afa9061163f612fa7565b918061167c575b156116715760208280518101031261030857506116666020809201612822565b60ff60405191168152f35b505060206012611666565b506020825114611646565b5034610308576060366003190112610308576116a1611e07565b906116aa611e22565b60443591826116e8575b506040519182526001600160a01b039081169216906000805160206131a383398151915290602090a3602060405160018152f35b6001600160a01b0384811680835260016020908152604084205492869061171182861015612784565b861693848403611726575b50505050506116b4565b838652600283526040808720338852845286205460018101611790575b509260016020969361176e8794604097610cfd6000805160206131a38339815191529c9a15156127c9565b928552528383205581522061178485825461217a565b9055913880858161171c565b909181106117e4579260016020969361176e8a6000805160206131a38339815191529a98956117c18260409a61216d565b86895260028552898920338a528552898920559497509497995050939650611743565b60405162461bcd60e51b815260048101849052601860248201527745524332303a20616c6c6f77616e636520746f6f206c6f7760401b6044820152606490fd5b50346103085761183336611e8f565b908395949542116106d9576001600160a01b03878116808a52600460205260408a20805491969295929060001983146106c557826118d59694928d92600161066698960190556040519160208301937f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d6855260408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e0815261062a81612018565b16036106805761067d926129b4565b5034610308576020366003190112610308576020906040906001600160a01b0361190c611e07565b168152601883522054604051908152f35b5034610308578060031936011261030857602060245460801c604051908152f35b50346103085760403660031901126103085760043560098110156110af57611964611e80565b6008549091906001600160a01b03163303611a1a5760ff61198482611ede565b541615159115159182146119e057808260ff6119a26119d094611ede565b54161515827feeec81de25875ce1725479bb76f720a8defdb43dea041919ae37bb4aae9847c08780a4611ede565b9060ff8019835416911617905580f35b60405162461bcd60e51b81526020600482015260126024820152714d61726b65743a2073616d6520737461746560701b6044820152606490fd5b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881d5b985d5d1a1bdc9a5e995960621b6044820152606490fd5b503461030857604036600319011261030857611171611a73611e07565b6024359033612a02565b503461030857606036600319011261030857611a97611e07565b611a9f611e80565b6044359081151582036110ab5760018060a01b03928391611ac58360055416331461208b565b15611b69571690811590811591611b61575b5015611b2457806005549283167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08580a36001600160a01b03199182161760055560068054909116905580f35b60405162461bcd60e51b81526020600482015260156024820152744f776e61626c653a207a65726f206164647265737360581b6044820152606490fd5b905038611ad7565b9150501660018060a01b0319600654161760065580f35b5034610308578060031936011261030857808060018060a01b03600b541660405160208101906306fdde0360e01b825260048152611bbd81611ffd565b51915afa611bc9612fa7565b915015611c2657611bdc61033d9161302e565b610e576034604051809373546170696f63612053696e67756c61726974792d60601b6020830152611c168151809260208686019101611e38565b810103601481018452018261204f565b5061033d611c32612fd7565b611bdc565b5034610308578060031936011261030857600f546040805163d6d7d52560e01b8152602060048201529182906001600160a01b0316818581611c7b60248201611f47565b03925af18015611db45782918391611d74575b508115611d15578015611cd957807f9f9192b5edb17356c524e08d9e025c8e2f6307e6ea52fb7968faa3081f51c3c86040948260115580a25b42601355825191151582526020820152f35b60405162461bcd60e51b81526020600482015260146024820152734d61726b65743a20696e76616c6964207261746560601b6044820152606490fd5b509050611d276013546012549061217a565b4211611d3857604090601154611cc7565b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881c985d19481d1bdbc81bdb1960621b6044820152606490fd5b9150506040813d604011611dac575b81611d906040938361204f565b810103126110af576020611da382612418565b91015138611c8e565b3d9150611d83565b6040513d84823e3d90fd5b9050346110af5760403660031901126110af576040602092611ddf611e07565b611de7611e22565b6001600160a01b0391821683526003865283832091168252845220548152f35b600435906001600160a01b0382168203611e1d57565b600080fd5b602435906001600160a01b0382168203611e1d57565b60005b838110611e4b5750506000910152565b8181015183820152602001611e3b565b90602091611e7481518092818552858086019101611e38565b601f01601f1916010190565b602435908115158203611e1d57565b60e0906003190112611e1d576001600160a01b03906004358281168103611e1d57916024359081168103611e1d5790604435906064359060843560ff81168103611e1d579060a4359060c43590565b6009811015611ef7576000526007602052604060002090565b634e487b7160e01b600052602160045260246000fd5b90600182811c92168015611f3d575b6020831014611f2757565b634e487b7160e01b600052602260045260246000fd5b91607f1691611f1c565b60105460009291611f5782611f0d565b908181526001928381169081600014611fb15750600114611f7757505050565b9092935060106000526020928360002092846000945b838610611f9d5750505050010190565b805485870183015294019385908201611f8d565b91935050602093945060ff191683830152151560051b010190565b606081019081106001600160401b03821117611fe757604052565b634e487b7160e01b600052604160045260246000fd5b604081019081106001600160401b03821117611fe757604052565b61010081019081106001600160401b03821117611fe757604052565b608081019081106001600160401b03821117611fe757604052565b90601f801991011681019081106001600160401b03821117611fe757604052565b6001600160401b038111611fe757601f01601f191660200190565b1561209257565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b156120dd57565b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881b9bdd081d985b1a59607a1b6044820152606490fd5b8181029291811591840414171561212957565b634e487b7160e01b600052601160045260246000fd5b8115612149570490565b634e487b7160e01b600052601260045260246000fd5b604d811161212957600a0a90565b9190820391821161212957565b9190820180921161212957565b8181039291600013801582851316918412161761212957565b6014549192916121e9916121da916121d0916121c6906001600160801b03831690612116565b9060801c9061213f565b93601f5490612116565b6121e38361215f565b9061213f565b8083106122b1576121fd612239918461216d565b9161223461222e612225601e5461221f6122168661215f565b6020549061217a565b90612116565b6121e38461215f565b9161215f565b612187565b6509184e72a0009081810291818305149015171561212957670de0b6b3a76400009182810292818405149015171561212957801561214957600160ff1b9180831460001983141661212957059060008212156122aa57811461212957600003905b8082116122a5575090565b905090565b509061229a565b505050600090565b9160018060a01b03809316916000938385526020601781526040918287205490811561240b57878385516122ec81611ffd565b82815201526122f9612add565b505050505091905061230c861515612425565b6009541683600c54898b52601882526064878c2054918851948593849263442c159960e01b8452600484015260248301528d60448301525afa9081156124015789916123ce575b50916123ae6123c297989994926123898861238461237b601898620186a06021540490612116565b601e5490612116565b61213f565b815190936001600160801b039186916123a491841690612116565b920151169061213f565b8181106123c657035b978352522054612471565b9091565b5050826123b7565b90508381813d83116123fa575b6123e5818361204f565b810103126123f657516123ae612353565b8880fd5b503d6123db565b85513d8b823e3d90fd5b5086955085949350505050565b51908115158203611e1d57565b1561242c57565b60405162461bcd60e51b815260206004820152601e60248201527f4d61726b65743a2065786368616e676552617465206e6f742076616c696400006044820152606490fd5b61247c821515612425565b602060018060a01b0360095416916064600c54604051948593849263442c159960e01b845260048401526024830152600060448301525afa90811561251c576000916124e9575b50906123846124d59260215490612116565b620186a06124e5601e5483612116565b0491565b906020823d8211612514575b816125026020938361204f565b810103126103085750516123846124c3565b3d91506124f5565b6040513d6000823e3d90fd5b6001600160a01b0316600081815260186020526040812054909261254b91612471565b91835260176020526040832054801561265457811561265457818110612654578281101561264a57601454612594918391610cfd916121c6906001600160801b03831690612116565b90620186a09283830292808404851490151715612636576125b992916121e39161216d565b91601b5491601c54936125cc8585612187565b80820291848212600160ff1b821416612636578183051490151715612622570581848201948512911290801582169115161761260e57508082126122a5575090565b634e487b7160e01b81526011600452602490fd5b634e487b7160e01b83526011600452602483fd5b634e487b7160e01b85526011600452602485fd5b50505050601b5490565b50505090565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316148061275b575b156126b5577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f000000000000000000000000000000000000000000000000000000000000000082527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a0815260c081018181106001600160401b03821117611fe75760405251902090565b507f0000000000000000000000000000000000000000000000000000000000000000461461268c565b1561278b57565b60405162461bcd60e51b815260206004820152601660248201527545524332303a2062616c616e636520746f6f206c6f7760501b6044820152606490fd5b156127d057565b60405162461bcd60e51b815260206004820152601660248201527545524332303a206e6f207a65726f206164647265737360501b6044820152606490fd5b51906001600160a01b0382168203611e1d57565b519060ff82168203611e1d57565b6005811015611ef757806128415750565b600181036128895760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b6044820152606490fd5b600281036128d65760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606490fd5b6003146128df57565b60405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608490fd5b9291906fa2a8918ca85bafe22016d0b997e4df60600160ff1b0383116129a85791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa1561299b5781516001600160a01b03811615612995579190565b50600190565b50604051903d90823e3d90fd5b50505050600090600390565b7fe50de2333c10a9502fcb1d8ae13a51bbf423153dfc63c2b8997665b32154afc360018060a01b038092169160009083825260036020526040822094169384825260205284604082205580a4565b909160207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259160018060a01b03809416938460005260028352604060002095169485600052825280604060002055604051908152a3565b60405190612a6682611fcc565b60006040838281528260208201520152565b60405190612a8582611ffd565b6014546001600160801b038116835260801c6020830152565b60405190612aab82611ffd565b6024546001600160801b038116835260801c6020830152565b6001600160801b03918216908216019190821161212957565b612ae5612a59565b5060006020604051612af681611ffd565b828152015260006020604051612b0b81611ffd565b8281520152604051612b1c81611fcc565b6023546001600160401b03811682526001600160401b038160401c16602083015260801c60408201528091612b4f612a78565b91612b58612a9e565b600954600e54825160405163442c159960e01b8152600481018390526001600160801b03909116602482015260006044820181905293959194919391926001600160a01b031690602081606481855afa801561251c57600090612f73575b8851612bcc92506001600160801b03169061217a565b80612f3e575060005b80612bed6001600160401b036020870151164261216d565b948515612f14575050426001600160401b031660208a8101919091528801516001600160801b031615612eca57506020670de0b6b3a7640000612c4f85612c4a8c6001600160401b038d60018060801b0390511691511690612116565b612116565b895191900496906001600160801b0390612c6e90828a16908316612ac4565b168952875160405163442c159960e01b815260048101929092526001600160801b031660248201526000604482015291829060649082905afa801561251c57600090612e96575b8751612ccb92506001600160801b03169061217a565b92612cf984612384620186a0612ce3601a548a612116565b60208c01516001600160801b0316919004612116565b6040890180519195916001600160801b038088169291612d1c9084908316612ac4565b16905260208801805190916001600160801b0391612d3c91908316612ac4565b16905280612e61575060005b60295490938482811015612ddc57612d60908361216d565b90670de0b6b3a7640000820291808304670de0b6b3a7640000149015171561212957612384612db4612dae612da06001600160401b0396612dbe9661213f565b93612c4a602d549580612116565b8361217a565b91848d5116612116565b168089526001600160401b03602c5416809110612dd85750565b8852565b909150602a54808211612dee57505050565b612df79161216d565b670de0b6b3a7640000810290808204670de0b6b3a76400001490151715612129576001600160401b0391612384612e3a612dae612da0612e4395602b549061213f565b848d5116612116565b81602c5460401c16808211612e59575b50168852565b905038612e53565b87516001600160801b0316670de0b6b3a764000081810292918084049091149015171561212957612e919161213f565b612d48565b506020813d602011612ec2575b81612eb06020938361204f565b81010312611e1d57612ccb9051612cb5565b3d9150612ea3565b9697939450509350506001600160401b038151166001600160401b03602e5416809103612f08575b509392612efd612a9e565b926000926000929190565b81526001925038612ef2565b975098505050505092505091612f28612a78565b91612f31612a9e565b9160009160009190600090565b87516001600160801b0316670de0b6b3a764000081810292918084049091149015171561212957612f6e9161213f565b612bd5565b506020813d602011612f9f575b81612f8d6020938361204f565b81010312611e1d57612bcc9051612bb6565b3d9150612f80565b3d15612fd2573d90612fb882612070565b91612fc6604051938461204f565b82523d6000602084013e565b606090565b60405190612fe482611ffd565b60038252623f3f3f60e81b6020830152565b908151811015613007570160200190565b634e487b7160e01b600052603260045260246000fd5b60ff1660ff81146121295760010190565b8051604081106130a957508051810190602081818401930312611e1d576020810151906001600160401b038211611e1d570181603f82011215611e1d57602081015161307981612070565b92613087604051948561204f565b81845260408284010111611e1d576130a6916040602085019101611e38565b90565b602092908303613197576000805b60ff81168581109081613178575b50156130d9576130d49061301d565b6130b7565b9260ff809416926130e984612070565b936130f7604051958661204f565b808552613106601f1991612070565b013687860137825b8581168781108061315b575b156131505761314b91906131456001600160f81b031961313a8388612ff6565b5116871a9188612ff6565b5361301d565b61310e565b505094505050905090565b506001600160f81b031961316f8286612ff6565b5116151561311a565b6001600160f81b0319915061318d9086612ff6565b51161515386130c5565b9150506130a6612fd756feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa264697066735822122013f4fadcc6d8a5582ff6b55236431f484dc8018dcb0d56a344cccb04b2758aa264736f6c63430008120033", + "bytecode": "0x6101408060405234620001e5576200001781620001ea565b601381526001602082017f546170696f63612053696e67756c617269747900000000000000000000000000815260206040516200005481620001ea565b8381520192603160f81b845251902091208160e052610100918183524660a0526040519160208301907f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f92838352604085015260608401524660808401523060a084015260a0835260c083019280841060018060401b03851117620001cf5760408490525190206080523060c052610120908152600580546001600160a01b0319163390811790915560007f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a362013880601b5562015f90601c55612710601d55612ee06020557f0bd4060688a1800ae986e4840aebc924bb40b5bf44de4583df2257220b54b77c6027557f7d1dc38e60930664f8cbf495da6556ca091d2f92d6550877750c049864b182306028556161a860295560326030556132a0928362000207843960805183612745015260a05183612810015260c0518361270f015260e05183612794015251826127ba015251816127710152f35b634e487b7160e01b600052604160045260246000fd5b600080fd5b604081019081106001600160401b03821117620001cf5760405256fe608080604052600436101561001357600080fd5b600090813560e01c908162a02a2014611e715750806302ce728f14611ce957806306fdde0314611c32578063078dfbe714611b2f578063095ea7b314611b085780630c4e84f0146119f057806318160ddd146119cf5780631c9e379b146119965780631da8bf10146118d657806323b872dd14611739578063313ce567146116a7578063331960ff1461168957806334d441d01461166b5780633644e5151461165057806337b6b7b91461163257806338d52e0f146116095780633ba0b9a9146115eb5780633f741adb146115c657806340626d8b146115a857806344de240a1461158a578063473e3ce71461156c57806348e4163e146115335780634d7f2a34146115155780634e71e0c814611467578063529898f21461144a57806352f353eb1461142357806355140232146113fc57806355c2ab94146113d257806357935462146113b45780635dfe04e8146113555780636c3d8b8f1461132c57806370a08231146112f357806372778547146112bb57806374645ff3146112905780637dc0d1d0146112675780637ecebe001461122e5780637fa0b84e146111fc578063821226e8146111de5780638285ef40146111ac5780638c5d0ed31461118e5780638da5cb5b14611165578063910dd7c814610f4c578063959916dc14610f2e57806395d89b4114610e7457806399a9702814610e445780639c5d719214610e265780639e15e89f14610deb578063a9059cbb14610d08578063b0e21e8a14610cea578063b27c0e7414610caf578063bb4cfe3b14610c91578063ce8849ed14610c68578063d3fb2a38146107d4578063d505accf1461062f578063d8dfeb4514610606578063da863f0e146105dd578063dd62ed3e14610592578063de40657714610569578063e0996cb61461054b578063e30c397814610522578063ea64dd5614610504578063eec0f42e146104e6578063ef2b234a1461046f578063f42760b714610451578063f8ba4cff14610357578063f9557ccb146103215763ffe04c661461030157600080fd5b3461031e578060031936011261031e576020602a54604051908152f35b80fd5b503461031e578060031936011261031e57602554604080516001600160801b038316815260809290921c602083015290f35b0390f35b503461031e578060031936011261031e5760206040610374612b8f565b9397959390929015610418575050506001600160401b03602f541686807f33af5ce86e8438eff54589f85332916444457dfa8685493fbd579b809097026b868851838152a45b6001600160401b038151166001600160401b03851b84830151861b169160018060801b0319958691015160801b1691171760245560018060801b039083838383511692015160801b161760145583511692015160801b161760255580f35b7f33af5ce86e8438eff54589f85332916444457dfa8685493fbd579b809097026b866001600160401b03865116948951908152a46103ba565b503461031e578060031936011261031e576020602b54604051908152f35b503461031e57602036600319011261031e576004356001600160a01b03818116918290036104e2576104a68160055416331461213d565b816021549182167ffb4fd7114609dd603b57adbc2082205bfbbcabf9265c4b437b472f5c592b8cd78580a36001600160a01b0319161760215580f35b8280fd5b503461031e578060031936011261031e576020600c54604051908152f35b503461031e578060031936011261031e576020601f54604051908152f35b503461031e578060031936011261031e576006546040516001600160a01b039091168152602090f35b503461031e578060031936011261031e576020601d54604051908152f35b503461031e578060031936011261031e576009546040516001600160a01b039091168152602090f35b503461031e57604036600319011261031e5760406020916105b1611eb9565b6105b9611ed4565b6001600160a01b039182168352600285528383209116825283522054604051908152f35b503461031e578060031936011261031e576021546040516001600160a01b039091168152602090f35b503461031e578060031936011261031e57600b546040516001600160a01b039091168152602090f35b503461031e5761063e36611f41565b9083959495421161078f576001600160a01b03878116808a52600460205260408a208054919692959290600019831461077b57826107249694928d92600161071c98960190556040519160208301937f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e266855260408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e081526106e0816120ca565b5190206106eb61270c565b9060405190602082019261190160f01b84526022830152604282015260428152610714816120e6565b5190206129e1565b9190916128e2565b16036107365761073392612ab4565b80f35b60405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152606490fd5b634e487b7160e01b8c52601160045260248cfd5b60405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b503461031e5761016036600319011261031e576001600160a01b03600435818116908190036104e2576024916001600160401b038335818111610c645736602382011215610c64578060040135918211610c645736858383010111610c645760443593838516809503610c60576108508460055416331461213d565b80610c22575b508482610aa4575b50505081610a64575b505060643580610a4c575b5060843580610a34575b5060a43580610a1d575b5060c435806109f9575b5060e435806109d5575b5061010435806109a4575b506101243580610931575b506101443590816108bf578280f35b601e5482106108d25750601f5538808280f35b60849060326040519162461bcd60e51b8352602060048401528201527f4d61726b65743a206c69717569646174696f6e436f6c6c61746572616c697a616044820152711d1a5bdb94985d19481d1bdbc81cdb585b1b60721b6064820152fd5b610940620186a0821115612188565b601f54811161095257601e55386108b0565b60405162461bcd60e51b8152602060048201526025818401527f4d61726b65743a20636f6c6c61746572616c697a6174696f6e5261746520746f6044820152646f2062696760d81b6064820152608490fd5b806016547fae6e0ab3b95f0a53ff9660a390ccedcbbf1f2355dce974a9841af106fddcfaba8580a3601655386108a5565b6109e3620186a08210612188565b6109f0601b548211612188565b601c553861089a565b610a07620186a08210612188565b610a14601c548210612188565b601b5538610890565b610a2b620186a08210612188565b601d5538610886565b610a43620186a0821115612188565b601a553861087c565b610a5b620186a0821115612188565b60195538610872565b816008549182167f5a62d22209e370e38eea92cfddcd228e656e6ec139243392a760a7769f5877fd8680a36001600160a01b031916176008553880610867565b8291610ab1601054611fbf565b601f8111610bb1575b508790601f8411600114610b1f578893610b12575b5050508160011b916000199060031b1c1916176010555b7fa6f004921c944d4b8bf6e38462b00f36a58d62495d56b51f571ab78f732c98158480a138808461085e565b0101359050843880610acf565b60108952601f19841694507f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae67292509087908960205b878210610b925750508460019610610b76575b50505050811b01601055610ae6565b60001960f88660031b161c199201013516905538808681610b67565b8285019093013585556001949094019389929182019190810190610b54565b6010895290925090507f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae672601f840160051c810160208510610c1b575b91849391601f8994920160051c01905b818110610c0a5750610aba565b898155859450889350600101610bfd565b5080610bed565b600f80546001600160a01b0319169190911790557f0b2d6eb667d0522c3eb86e4288afecae6c11591ffd1345d4d12407e0598bca9b8680a138610856565b8680fd5b8580fd5b503461031e578060031936011261031e576008546040516001600160a01b039091168152602090f35b503461031e578060031936011261031e576020601e54604051908152f35b503461031e578060031936011261031e576060602454604051906001600160401b0380821683528160401c16602083015260801c6040820152f35b503461031e578060031936011261031e576020601a54604051908152f35b503461031e57604036600319011261031e57610d22611eb9565b60243580928115801590610dd9575b610d69575b50506040519182526001600160a01b031690339060008051602061324b83398151915290602090a3602060405160018152f35b33815260016020526040812054610d8283821015612836565b6001600160a01b0384169033829003610d9d575b5050610d36565b604093610db491610daf84151561287b565b61221f565b338352600160205283832055815220610dce83825461222c565b905581388080610d96565b50336001600160a01b03841614610d31565b503461031e57604036600319011261031e576060610e13610e0a611eb9565b6024359061236b565b9060405192835260208301526040820152f35b503461031e578060031936011261031e576020602c54604051908152f35b503461031e57604036600319011261031e576020610e6c610e63611eb9565b602435906125da565b604051908152f35b503461031e578060031936011261031e57808060018060a01b03600b541660405160208101906395d89b4160e01b825260048152610eb1816120af565b51915afa610ebd61304f565b915015610f1d57610ed0610353916130d6565b610f096023604051809362746d2d60e81b6020830152610ef98151809260208686019101611eea565b8101036003810184520182612101565b604051918291602083526020830190611f0d565b50610353610f2961307f565b610ed0565b503461031e578060031936011261031e576020603054604051908152f35b503461031e57604036600319011261031e576004356001600160401b038111611161573660238201121561116157806004013582610f8982612122565b92610f976040519485612101565b828452602084019236602482840101116104e2578060246020930185378401015260243561ffff8116810361115d5761010091828480518101031261115957610fdf906124ca565b610feb604085016128c0565b91610ff8606086016128c0565b9460808101519460a08201519261101160c084016128d4565b9160e08401519301519380421161078f578515611132577f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e266915b6001600160a01b0388168b52600460205260408b2080549190600019831461111e579161ffff6110db9896949261071c98969460018401905560405194602086015216604084015260018060a01b038a16606084015260018060a01b038c1660808401528a60a084015260c083015260e082015260e081526110cc816120ca565b602081519101206106eb61270c565b6001600160a01b03838116911603610736571561110857610733926001600160a01b039081169116612ab4565b610733926001600160a01b039081169116612a66565b634e487b7160e01b8d52601160045260248dfd5b7f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d69161104b565b8480fd5b8380fd5b5080fd5b503461031e578060031936011261031e576005546040516001600160a01b039091168152602090f35b503461031e578060031936011261031e576020601b54604051908152f35b503461031e578060031936011261031e57601454604080516001600160801b038316815260809290921c602083015290f35b503461031e578060031936011261031e576020602e54604051908152f35b503461031e57604036600319011261031e57611223611219611eb9565b6024359033612a66565b602060405160018152f35b503461031e57602036600319011261031e576020906040906001600160a01b03611256611eb9565b168152600483522054604051908152f35b503461031e578060031936011261031e57600f546040516001600160a01b039091168152602090f35b503461031e578060031936011261031e57610353604051610f09816112b481611ff9565b0382612101565b503461031e57602036600319011261031e5760043590600982101561031e57602060ff6112e784611f90565b54166040519015158152f35b503461031e57602036600319011261031e576020906040906001600160a01b0361131b611eb9565b168152600183522054604051908152f35b503461031e578060031936011261031e57600a546040516001600160a01b039091168152602090f35b503461031e578060031936011261031e5761136e612b0b565b506080611379612b8f565b509350505050604051916001600160401b0380825116845260208201511660208401526040600180861b039101511660408301526060820152f35b503461031e578060031936011261031e576020601c54604051908152f35b503461031e578060031936011261031e5760206001600160401b03602d5460401c16604051908152f35b503461031e578060031936011261031e5760206001600160401b03602d5416604051908152f35b503461031e578060031936011261031e5760206001600160401b03602f5416604051908152f35b503461031e578060031936011261031e5760208054604051908152f35b503461031e578060031936011261031e576006546001600160a01b0390818116338190036114d157806005549384167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08680a36001600160a01b0319928316176005551660065580f35b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b503461031e578060031936011261031e576020602954604051908152f35b503461031e57602036600319011261031e576020906040906001600160a01b0361155b611eb9565b168152601783522054604051908152f35b503461031e578060031936011261031e576020601554604051908152f35b503461031e578060031936011261031e576020600e54604051908152f35b503461031e578060031936011261031e576020601654604051908152f35b503461031e57606036600319011261031e576020610e6c604435602435600435612252565b503461031e578060031936011261031e576020601154604051908152f35b503461031e578060031936011261031e57600d546040516001600160a01b039091168152602090f35b503461031e578060031936011261031e576020601254604051908152f35b503461031e578060031936011261031e576020610e6c61270c565b503461031e578060031936011261031e576020601954604051908152f35b503461031e578060031936011261031e576020601354604051908152f35b503461031e578060031936011261031e57808060018060a01b03600d5416604051602081019063313ce56760e01b8252600481526116e4816120af565b51915afa906116f161304f565b918061172e575b156117235760208280518101031261031e575061171860208092016128d4565b60ff60405191168152f35b505060206012611718565b5060208251146116f8565b503461031e57606036600319011261031e57611753611eb9565b9061175c611ed4565b604435918261179a575b506040519182526001600160a01b0390811692169060008051602061324b83398151915290602090a3602060405160018152f35b6001600160a01b038481168083526001602090815260408420549286906117c382861015612836565b8616938484036117d8575b5050505050611766565b838652600283526040808720338852845286205460018101611842575b50926001602096936118208794604097610daf60008051602061324b8339815191529c9a151561287b565b928552528383205581522061183685825461222c565b905591388085816117ce565b9091811061189657926001602096936118208a60008051602061324b8339815191529a98956118738260409a61221f565b86895260028552898920338a5285528989205594975094979950509396506117f5565b60405162461bcd60e51b815260048101849052601860248201527745524332303a20616c6c6f77616e636520746f6f206c6f7760401b6044820152606490fd5b503461031e576118e536611f41565b9083959495421161078f576001600160a01b03878116808a52600460205260408a208054919692959290600019831461077b57826119879694928d92600161071c98960190556040519160208301937f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d6855260408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e081526106e0816120ca565b16036107365761073392612a66565b503461031e57602036600319011261031e576020906040906001600160a01b036119be611eb9565b168152601883522054604051908152f35b503461031e578060031936011261031e57602060255460801c604051908152f35b503461031e57604036600319011261031e57600435600981101561116157611a16611f32565b6008549091906001600160a01b03163303611acc5760ff611a3682611f90565b54161515911515918214611a9257808260ff611a54611a8294611f90565b54161515827feeec81de25875ce1725479bb76f720a8defdb43dea041919ae37bb4aae9847c08780a4611f90565b9060ff8019835416911617905580f35b60405162461bcd60e51b81526020600482015260126024820152714d61726b65743a2073616d6520737461746560701b6044820152606490fd5b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881d5b985d5d1a1bdc9a5e995960621b6044820152606490fd5b503461031e57604036600319011261031e57611223611b25611eb9565b6024359033612ab4565b503461031e57606036600319011261031e57611b49611eb9565b611b51611f32565b60443590811515820361115d5760018060a01b03928391611b778360055416331461213d565b15611c1b571690811590811591611c13575b5015611bd657806005549283167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08580a36001600160a01b03199182161760055560068054909116905580f35b60405162461bcd60e51b81526020600482015260156024820152744f776e61626c653a207a65726f206164647265737360581b6044820152606490fd5b905038611b89565b9150501660018060a01b0319600654161760065580f35b503461031e578060031936011261031e57808060018060a01b03600b541660405160208101906306fdde0360e01b825260048152611c6f816120af565b51915afa611c7b61304f565b915015611cd857611c8e610353916130d6565b610f096034604051809373546170696f63612053696e67756c61726974792d60601b6020830152611cc88151809260208686019101611eea565b8101036014810184520182612101565b50610353611ce461307f565b611c8e565b503461031e578060031936011261031e57600f546040805163d6d7d52560e01b8152602060048201529182906001600160a01b0316818581611d2d60248201611ff9565b03925af18015611e665782918391611e26575b508115611dc7578015611d8b57807f9f9192b5edb17356c524e08d9e025c8e2f6307e6ea52fb7968faa3081f51c3c86040948260115580a25b42601355825191151582526020820152f35b60405162461bcd60e51b81526020600482015260146024820152734d61726b65743a20696e76616c6964207261746560601b6044820152606490fd5b509050611dd96013546012549061222c565b4211611dea57604090601154611d79565b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881c985d19481d1bdbc81bdb1960621b6044820152606490fd5b9150506040813d604011611e5e575b81611e4260409383612101565b81010312611161576020611e55826124ca565b91015138611d40565b3d9150611e35565b6040513d84823e3d90fd5b905034611161576040366003190112611161576040602092611e91611eb9565b611e99611ed4565b6001600160a01b0391821683526003865283832091168252845220548152f35b600435906001600160a01b0382168203611ecf57565b600080fd5b602435906001600160a01b0382168203611ecf57565b60005b838110611efd5750506000910152565b8181015183820152602001611eed565b90602091611f2681518092818552858086019101611eea565b601f01601f1916010190565b602435908115158203611ecf57565b60e0906003190112611ecf576001600160a01b03906004358281168103611ecf57916024359081168103611ecf5790604435906064359060843560ff81168103611ecf579060a4359060c43590565b6009811015611fa9576000526007602052604060002090565b634e487b7160e01b600052602160045260246000fd5b90600182811c92168015611fef575b6020831014611fd957565b634e487b7160e01b600052602260045260246000fd5b91607f1691611fce565b6010546000929161200982611fbf565b908181526001928381169081600014612063575060011461202957505050565b9092935060106000526020928360002092846000945b83861061204f5750505050010190565b80548587018301529401938590820161203f565b91935050602093945060ff191683830152151560051b010190565b606081019081106001600160401b0382111761209957604052565b634e487b7160e01b600052604160045260246000fd5b604081019081106001600160401b0382111761209957604052565b61010081019081106001600160401b0382111761209957604052565b608081019081106001600160401b0382111761209957604052565b90601f801991011681019081106001600160401b0382111761209957604052565b6001600160401b03811161209957601f01601f191660200190565b1561214457565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b1561218f57565b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881b9bdd081d985b1a59607a1b6044820152606490fd5b818102929181159184041417156121db57565b634e487b7160e01b600052601160045260246000fd5b81156121fb570490565b634e487b7160e01b600052601260045260246000fd5b604d81116121db57600a0a90565b919082039182116121db57565b919082018092116121db57565b818103929160001380158285131691841216176121db57565b60145491929161229b9161228c9161228291612278906001600160801b038316906121c8565b9060801c906121f1565b93601f54906121c8565b61229583612211565b906121f1565b808310612363576122af6122eb918461221f565b916122e66122e06122d7601e546122d16122c886612211565b6020549061222c565b906121c8565b61229584612211565b91612211565b612239565b6509184e72a000908181029181830514901517156121db57670de0b6b3a7640000918281029281840514901517156121db5780156121fb57600160ff1b918083146000198314166121db570590600082121561235c5781146121db57600003905b808211612357575090565b905090565b509061234c565b505050600090565b9160018060a01b0380931691600093838552602060178152604091828720549081156124bd578783855161239e816120af565b82815201526123ab612b8f565b50505050509190506123be8615156124d7565b6009541683600c54898b52601882526064878c2054918851948593849263442c159960e01b8452600484015260248301528d60448301525afa9081156124b3578991612480575b5091612460612474979899949261243b8861243661242d601898620186a060225404906121c8565b601e54906121c8565b6121f1565b815190936001600160801b03918691612456918416906121c8565b92015116906121f1565b81811061247857035b978352522054612523565b9091565b505082612469565b90508381813d83116124ac575b6124978183612101565b810103126124a85751612460612405565b8880fd5b503d61248d565b85513d8b823e3d90fd5b5086955085949350505050565b51908115158203611ecf57565b156124de57565b60405162461bcd60e51b815260206004820152601e60248201527f4d61726b65743a2065786368616e676552617465206e6f742076616c696400006044820152606490fd5b61252e8215156124d7565b602060018060a01b0360095416916064600c54604051948593849263442c159960e01b845260048401526024830152600060448301525afa9081156125ce5760009161259b575b509061243661258792602254906121c8565b620186a0612597601e54836121c8565b0491565b906020823d82116125c6575b816125b460209383612101565b8101031261031e575051612436612575565b3d91506125a7565b6040513d6000823e3d90fd5b6001600160a01b031660008181526018602052604081205490926125fd91612523565b9183526017602052604083205480156127065781156127065781811061270657828110156126fc57601454612646918391610daf91612278906001600160801b038316906121c8565b90620186a092838302928084048514901517156126e85761266b92916122959161221f565b91601b5491601c549361267e8585612239565b80820291848212600160ff1b8214166126e85781830514901517156126d457058184820194851291129080158216911516176126c05750808212612357575090565b634e487b7160e01b81526011600452602490fd5b634e487b7160e01b83526011600452602483fd5b634e487b7160e01b85526011600452602485fd5b50505050601b5490565b50505090565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316148061280d575b15612767577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f000000000000000000000000000000000000000000000000000000000000000082527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a0815260c081018181106001600160401b038211176120995760405251902090565b507f0000000000000000000000000000000000000000000000000000000000000000461461273e565b1561283d57565b60405162461bcd60e51b815260206004820152601660248201527545524332303a2062616c616e636520746f6f206c6f7760501b6044820152606490fd5b1561288257565b60405162461bcd60e51b815260206004820152601660248201527545524332303a206e6f207a65726f206164647265737360501b6044820152606490fd5b51906001600160a01b0382168203611ecf57565b519060ff82168203611ecf57565b6005811015611fa957806128f35750565b6001810361293b5760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b6044820152606490fd5b600281036129885760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606490fd5b60031461299157565b60405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608490fd5b9291906fa2a8918ca85bafe22016d0b997e4df60600160ff1b038311612a5a5791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa15612a4d5781516001600160a01b03811615612a47579190565b50600190565b50604051903d90823e3d90fd5b50505050600090600390565b7fe50de2333c10a9502fcb1d8ae13a51bbf423153dfc63c2b8997665b32154afc360018060a01b038092169160009083825260036020526040822094169384825260205284604082205580a4565b909160207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259160018060a01b03809416938460005260028352604060002095169485600052825280604060002055604051908152a3565b60405190612b188261207e565b60006040838281528260208201520152565b60405190612b37826120af565b6014546001600160801b038116835260801c6020830152565b60405190612b5d826120af565b6025546001600160801b038116835260801c6020830152565b6001600160801b0391821690821601919082116121db57565b612b97612b0b565b5060006020604051612ba8816120af565b828152015260006020604051612bbd816120af565b828152015260405190612bcf8261207e565b602454916001600160401b038316815260208101926001600160401b038160401c16845260801c60408201528092612c05612b2a565b92612c0e612b50565b92600060018060a01b0360095416600e549460018060801b038751166040519063442c159960e01b8252876004830152602482015260006044820152602081606481865afa80156125ce5760009061301b575b8951612c7792506001600160801b03169061222c565b80612fe6575060005b612c956001600160401b03829351164261221f565b948515612fbc575050426001600160401b031660208a8101919091528801516001600160801b031615612f7257506020670de0b6b3a7640000612cf785612cf28c6001600160401b038d60018060801b03905116915116906121c8565b6121c8565b895191900496906001600160801b0390612d1690828a16908316612b76565b168952875160405163442c159960e01b815260048101929092526001600160801b031660248201526000604482015291829060649082905afa80156125ce57600090612f3e575b8751612d7392506001600160801b03169061222c565b92612da184612436620186a0612d8b601a548a6121c8565b60208c01516001600160801b03169190046121c8565b6040890180519195916001600160801b038088169291612dc49084908316612b76565b16905260208801805190916001600160801b0391612de491908316612b76565b16905280612f09575060005b602a5490938482811015612e8457612e08908361221f565b90670de0b6b3a7640000820291808304670de0b6b3a764000014901517156121db57612436612e5c612e56612e486001600160401b0396612e66966121f1565b93612cf2602e5495806121c8565b8361222c565b91848d51166121c8565b168089526001600160401b03602d5416809110612e805750565b8852565b909150602b54808211612e9657505050565b612e9f9161221f565b670de0b6b3a7640000810290808204670de0b6b3a764000014901517156121db576001600160401b0391612436612ee2612e56612e48612eeb95602c54906121f1565b848d51166121c8565b81602d5460401c16808211612f01575b50168852565b905038612efb565b87516001600160801b0316670de0b6b3a76400008181029291808404909114901517156121db57612f39916121f1565b612df0565b506020813d602011612f6a575b81612f5860209383612101565b81010312611ecf57612d739051612d5d565b3d9150612f4b565b9697939450509350506001600160401b038151166001600160401b03602f5416809103612fb0575b509392612fa5612b50565b926000926000929190565b81526001925038612f9a565b975098505050505092505091612fd0612b2a565b91612fd9612b50565b9160009160009190600090565b88516001600160801b0316670de0b6b3a76400008181029291808404909114901517156121db57613016916121f1565b612c80565b506020813d602011613047575b8161303560209383612101565b81010312611ecf57612c779051612c61565b3d9150613028565b3d1561307a573d9061306082612122565b9161306e6040519384612101565b82523d6000602084013e565b606090565b6040519061308c826120af565b60038252623f3f3f60e81b6020830152565b9081518110156130af570160200190565b634e487b7160e01b600052603260045260246000fd5b60ff1660ff81146121db5760010190565b80516040811061315157508051810190602081818401930312611ecf576020810151906001600160401b038211611ecf570181603f82011215611ecf57602081015161312181612122565b9261312f6040519485612101565b81845260408284010111611ecf5761314e916040602085019101611eea565b90565b60209290830361323f576000805b60ff81168581109081613220575b50156131815761317c906130c5565b61315f565b9260ff8094169261319184612122565b9361319f6040519586612101565b8085526131ae601f1991612122565b013687860137825b85811687811080613203575b156131f8576131f391906131ed6001600160f81b03196131e2838861309e565b5116871a918861309e565b536130c5565b6131b6565b505094505050905090565b506001600160f81b0319613217828661309e565b511615156131c2565b6001600160f81b03199150613235908661309e565b511615153861316d565b91505061314e61307f56feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa26469706673582212201324e883d95715784f23ebd80e84ebeb52319d56457d4edeffc98d6773d4245264736f6c63430008120033", + "deployedBytecode": "0x608080604052600436101561001357600080fd5b600090813560e01c908162a02a2014611e715750806302ce728f14611ce957806306fdde0314611c32578063078dfbe714611b2f578063095ea7b314611b085780630c4e84f0146119f057806318160ddd146119cf5780631c9e379b146119965780631da8bf10146118d657806323b872dd14611739578063313ce567146116a7578063331960ff1461168957806334d441d01461166b5780633644e5151461165057806337b6b7b91461163257806338d52e0f146116095780633ba0b9a9146115eb5780633f741adb146115c657806340626d8b146115a857806344de240a1461158a578063473e3ce71461156c57806348e4163e146115335780634d7f2a34146115155780634e71e0c814611467578063529898f21461144a57806352f353eb1461142357806355140232146113fc57806355c2ab94146113d257806357935462146113b45780635dfe04e8146113555780636c3d8b8f1461132c57806370a08231146112f357806372778547146112bb57806374645ff3146112905780637dc0d1d0146112675780637ecebe001461122e5780637fa0b84e146111fc578063821226e8146111de5780638285ef40146111ac5780638c5d0ed31461118e5780638da5cb5b14611165578063910dd7c814610f4c578063959916dc14610f2e57806395d89b4114610e7457806399a9702814610e445780639c5d719214610e265780639e15e89f14610deb578063a9059cbb14610d08578063b0e21e8a14610cea578063b27c0e7414610caf578063bb4cfe3b14610c91578063ce8849ed14610c68578063d3fb2a38146107d4578063d505accf1461062f578063d8dfeb4514610606578063da863f0e146105dd578063dd62ed3e14610592578063de40657714610569578063e0996cb61461054b578063e30c397814610522578063ea64dd5614610504578063eec0f42e146104e6578063ef2b234a1461046f578063f42760b714610451578063f8ba4cff14610357578063f9557ccb146103215763ffe04c661461030157600080fd5b3461031e578060031936011261031e576020602a54604051908152f35b80fd5b503461031e578060031936011261031e57602554604080516001600160801b038316815260809290921c602083015290f35b0390f35b503461031e578060031936011261031e5760206040610374612b8f565b9397959390929015610418575050506001600160401b03602f541686807f33af5ce86e8438eff54589f85332916444457dfa8685493fbd579b809097026b868851838152a45b6001600160401b038151166001600160401b03851b84830151861b169160018060801b0319958691015160801b1691171760245560018060801b039083838383511692015160801b161760145583511692015160801b161760255580f35b7f33af5ce86e8438eff54589f85332916444457dfa8685493fbd579b809097026b866001600160401b03865116948951908152a46103ba565b503461031e578060031936011261031e576020602b54604051908152f35b503461031e57602036600319011261031e576004356001600160a01b03818116918290036104e2576104a68160055416331461213d565b816021549182167ffb4fd7114609dd603b57adbc2082205bfbbcabf9265c4b437b472f5c592b8cd78580a36001600160a01b0319161760215580f35b8280fd5b503461031e578060031936011261031e576020600c54604051908152f35b503461031e578060031936011261031e576020601f54604051908152f35b503461031e578060031936011261031e576006546040516001600160a01b039091168152602090f35b503461031e578060031936011261031e576020601d54604051908152f35b503461031e578060031936011261031e576009546040516001600160a01b039091168152602090f35b503461031e57604036600319011261031e5760406020916105b1611eb9565b6105b9611ed4565b6001600160a01b039182168352600285528383209116825283522054604051908152f35b503461031e578060031936011261031e576021546040516001600160a01b039091168152602090f35b503461031e578060031936011261031e57600b546040516001600160a01b039091168152602090f35b503461031e5761063e36611f41565b9083959495421161078f576001600160a01b03878116808a52600460205260408a208054919692959290600019831461077b57826107249694928d92600161071c98960190556040519160208301937f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e266855260408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e081526106e0816120ca565b5190206106eb61270c565b9060405190602082019261190160f01b84526022830152604282015260428152610714816120e6565b5190206129e1565b9190916128e2565b16036107365761073392612ab4565b80f35b60405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152606490fd5b634e487b7160e01b8c52601160045260248cfd5b60405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b503461031e5761016036600319011261031e576001600160a01b03600435818116908190036104e2576024916001600160401b038335818111610c645736602382011215610c64578060040135918211610c645736858383010111610c645760443593838516809503610c60576108508460055416331461213d565b80610c22575b508482610aa4575b50505081610a64575b505060643580610a4c575b5060843580610a34575b5060a43580610a1d575b5060c435806109f9575b5060e435806109d5575b5061010435806109a4575b506101243580610931575b506101443590816108bf578280f35b601e5482106108d25750601f5538808280f35b60849060326040519162461bcd60e51b8352602060048401528201527f4d61726b65743a206c69717569646174696f6e436f6c6c61746572616c697a616044820152711d1a5bdb94985d19481d1bdbc81cdb585b1b60721b6064820152fd5b610940620186a0821115612188565b601f54811161095257601e55386108b0565b60405162461bcd60e51b8152602060048201526025818401527f4d61726b65743a20636f6c6c61746572616c697a6174696f6e5261746520746f6044820152646f2062696760d81b6064820152608490fd5b806016547fae6e0ab3b95f0a53ff9660a390ccedcbbf1f2355dce974a9841af106fddcfaba8580a3601655386108a5565b6109e3620186a08210612188565b6109f0601b548211612188565b601c553861089a565b610a07620186a08210612188565b610a14601c548210612188565b601b5538610890565b610a2b620186a08210612188565b601d5538610886565b610a43620186a0821115612188565b601a553861087c565b610a5b620186a0821115612188565b60195538610872565b816008549182167f5a62d22209e370e38eea92cfddcd228e656e6ec139243392a760a7769f5877fd8680a36001600160a01b031916176008553880610867565b8291610ab1601054611fbf565b601f8111610bb1575b508790601f8411600114610b1f578893610b12575b5050508160011b916000199060031b1c1916176010555b7fa6f004921c944d4b8bf6e38462b00f36a58d62495d56b51f571ab78f732c98158480a138808461085e565b0101359050843880610acf565b60108952601f19841694507f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae67292509087908960205b878210610b925750508460019610610b76575b50505050811b01601055610ae6565b60001960f88660031b161c199201013516905538808681610b67565b8285019093013585556001949094019389929182019190810190610b54565b6010895290925090507f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae672601f840160051c810160208510610c1b575b91849391601f8994920160051c01905b818110610c0a5750610aba565b898155859450889350600101610bfd565b5080610bed565b600f80546001600160a01b0319169190911790557f0b2d6eb667d0522c3eb86e4288afecae6c11591ffd1345d4d12407e0598bca9b8680a138610856565b8680fd5b8580fd5b503461031e578060031936011261031e576008546040516001600160a01b039091168152602090f35b503461031e578060031936011261031e576020601e54604051908152f35b503461031e578060031936011261031e576060602454604051906001600160401b0380821683528160401c16602083015260801c6040820152f35b503461031e578060031936011261031e576020601a54604051908152f35b503461031e57604036600319011261031e57610d22611eb9565b60243580928115801590610dd9575b610d69575b50506040519182526001600160a01b031690339060008051602061324b83398151915290602090a3602060405160018152f35b33815260016020526040812054610d8283821015612836565b6001600160a01b0384169033829003610d9d575b5050610d36565b604093610db491610daf84151561287b565b61221f565b338352600160205283832055815220610dce83825461222c565b905581388080610d96565b50336001600160a01b03841614610d31565b503461031e57604036600319011261031e576060610e13610e0a611eb9565b6024359061236b565b9060405192835260208301526040820152f35b503461031e578060031936011261031e576020602c54604051908152f35b503461031e57604036600319011261031e576020610e6c610e63611eb9565b602435906125da565b604051908152f35b503461031e578060031936011261031e57808060018060a01b03600b541660405160208101906395d89b4160e01b825260048152610eb1816120af565b51915afa610ebd61304f565b915015610f1d57610ed0610353916130d6565b610f096023604051809362746d2d60e81b6020830152610ef98151809260208686019101611eea565b8101036003810184520182612101565b604051918291602083526020830190611f0d565b50610353610f2961307f565b610ed0565b503461031e578060031936011261031e576020603054604051908152f35b503461031e57604036600319011261031e576004356001600160401b038111611161573660238201121561116157806004013582610f8982612122565b92610f976040519485612101565b828452602084019236602482840101116104e2578060246020930185378401015260243561ffff8116810361115d5761010091828480518101031261115957610fdf906124ca565b610feb604085016128c0565b91610ff8606086016128c0565b9460808101519460a08201519261101160c084016128d4565b9160e08401519301519380421161078f578515611132577f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e266915b6001600160a01b0388168b52600460205260408b2080549190600019831461111e579161ffff6110db9896949261071c98969460018401905560405194602086015216604084015260018060a01b038a16606084015260018060a01b038c1660808401528a60a084015260c083015260e082015260e081526110cc816120ca565b602081519101206106eb61270c565b6001600160a01b03838116911603610736571561110857610733926001600160a01b039081169116612ab4565b610733926001600160a01b039081169116612a66565b634e487b7160e01b8d52601160045260248dfd5b7f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d69161104b565b8480fd5b8380fd5b5080fd5b503461031e578060031936011261031e576005546040516001600160a01b039091168152602090f35b503461031e578060031936011261031e576020601b54604051908152f35b503461031e578060031936011261031e57601454604080516001600160801b038316815260809290921c602083015290f35b503461031e578060031936011261031e576020602e54604051908152f35b503461031e57604036600319011261031e57611223611219611eb9565b6024359033612a66565b602060405160018152f35b503461031e57602036600319011261031e576020906040906001600160a01b03611256611eb9565b168152600483522054604051908152f35b503461031e578060031936011261031e57600f546040516001600160a01b039091168152602090f35b503461031e578060031936011261031e57610353604051610f09816112b481611ff9565b0382612101565b503461031e57602036600319011261031e5760043590600982101561031e57602060ff6112e784611f90565b54166040519015158152f35b503461031e57602036600319011261031e576020906040906001600160a01b0361131b611eb9565b168152600183522054604051908152f35b503461031e578060031936011261031e57600a546040516001600160a01b039091168152602090f35b503461031e578060031936011261031e5761136e612b0b565b506080611379612b8f565b509350505050604051916001600160401b0380825116845260208201511660208401526040600180861b039101511660408301526060820152f35b503461031e578060031936011261031e576020601c54604051908152f35b503461031e578060031936011261031e5760206001600160401b03602d5460401c16604051908152f35b503461031e578060031936011261031e5760206001600160401b03602d5416604051908152f35b503461031e578060031936011261031e5760206001600160401b03602f5416604051908152f35b503461031e578060031936011261031e5760208054604051908152f35b503461031e578060031936011261031e576006546001600160a01b0390818116338190036114d157806005549384167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08680a36001600160a01b0319928316176005551660065580f35b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b503461031e578060031936011261031e576020602954604051908152f35b503461031e57602036600319011261031e576020906040906001600160a01b0361155b611eb9565b168152601783522054604051908152f35b503461031e578060031936011261031e576020601554604051908152f35b503461031e578060031936011261031e576020600e54604051908152f35b503461031e578060031936011261031e576020601654604051908152f35b503461031e57606036600319011261031e576020610e6c604435602435600435612252565b503461031e578060031936011261031e576020601154604051908152f35b503461031e578060031936011261031e57600d546040516001600160a01b039091168152602090f35b503461031e578060031936011261031e576020601254604051908152f35b503461031e578060031936011261031e576020610e6c61270c565b503461031e578060031936011261031e576020601954604051908152f35b503461031e578060031936011261031e576020601354604051908152f35b503461031e578060031936011261031e57808060018060a01b03600d5416604051602081019063313ce56760e01b8252600481526116e4816120af565b51915afa906116f161304f565b918061172e575b156117235760208280518101031261031e575061171860208092016128d4565b60ff60405191168152f35b505060206012611718565b5060208251146116f8565b503461031e57606036600319011261031e57611753611eb9565b9061175c611ed4565b604435918261179a575b506040519182526001600160a01b0390811692169060008051602061324b83398151915290602090a3602060405160018152f35b6001600160a01b038481168083526001602090815260408420549286906117c382861015612836565b8616938484036117d8575b5050505050611766565b838652600283526040808720338852845286205460018101611842575b50926001602096936118208794604097610daf60008051602061324b8339815191529c9a151561287b565b928552528383205581522061183685825461222c565b905591388085816117ce565b9091811061189657926001602096936118208a60008051602061324b8339815191529a98956118738260409a61221f565b86895260028552898920338a5285528989205594975094979950509396506117f5565b60405162461bcd60e51b815260048101849052601860248201527745524332303a20616c6c6f77616e636520746f6f206c6f7760401b6044820152606490fd5b503461031e576118e536611f41565b9083959495421161078f576001600160a01b03878116808a52600460205260408a208054919692959290600019831461077b57826119879694928d92600161071c98960190556040519160208301937f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d6855260408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e081526106e0816120ca565b16036107365761073392612a66565b503461031e57602036600319011261031e576020906040906001600160a01b036119be611eb9565b168152601883522054604051908152f35b503461031e578060031936011261031e57602060255460801c604051908152f35b503461031e57604036600319011261031e57600435600981101561116157611a16611f32565b6008549091906001600160a01b03163303611acc5760ff611a3682611f90565b54161515911515918214611a9257808260ff611a54611a8294611f90565b54161515827feeec81de25875ce1725479bb76f720a8defdb43dea041919ae37bb4aae9847c08780a4611f90565b9060ff8019835416911617905580f35b60405162461bcd60e51b81526020600482015260126024820152714d61726b65743a2073616d6520737461746560701b6044820152606490fd5b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881d5b985d5d1a1bdc9a5e995960621b6044820152606490fd5b503461031e57604036600319011261031e57611223611b25611eb9565b6024359033612ab4565b503461031e57606036600319011261031e57611b49611eb9565b611b51611f32565b60443590811515820361115d5760018060a01b03928391611b778360055416331461213d565b15611c1b571690811590811591611c13575b5015611bd657806005549283167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08580a36001600160a01b03199182161760055560068054909116905580f35b60405162461bcd60e51b81526020600482015260156024820152744f776e61626c653a207a65726f206164647265737360581b6044820152606490fd5b905038611b89565b9150501660018060a01b0319600654161760065580f35b503461031e578060031936011261031e57808060018060a01b03600b541660405160208101906306fdde0360e01b825260048152611c6f816120af565b51915afa611c7b61304f565b915015611cd857611c8e610353916130d6565b610f096034604051809373546170696f63612053696e67756c61726974792d60601b6020830152611cc88151809260208686019101611eea565b8101036014810184520182612101565b50610353611ce461307f565b611c8e565b503461031e578060031936011261031e57600f546040805163d6d7d52560e01b8152602060048201529182906001600160a01b0316818581611d2d60248201611ff9565b03925af18015611e665782918391611e26575b508115611dc7578015611d8b57807f9f9192b5edb17356c524e08d9e025c8e2f6307e6ea52fb7968faa3081f51c3c86040948260115580a25b42601355825191151582526020820152f35b60405162461bcd60e51b81526020600482015260146024820152734d61726b65743a20696e76616c6964207261746560601b6044820152606490fd5b509050611dd96013546012549061222c565b4211611dea57604090601154611d79565b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881c985d19481d1bdbc81bdb1960621b6044820152606490fd5b9150506040813d604011611e5e575b81611e4260409383612101565b81010312611161576020611e55826124ca565b91015138611d40565b3d9150611e35565b6040513d84823e3d90fd5b905034611161576040366003190112611161576040602092611e91611eb9565b611e99611ed4565b6001600160a01b0391821683526003865283832091168252845220548152f35b600435906001600160a01b0382168203611ecf57565b600080fd5b602435906001600160a01b0382168203611ecf57565b60005b838110611efd5750506000910152565b8181015183820152602001611eed565b90602091611f2681518092818552858086019101611eea565b601f01601f1916010190565b602435908115158203611ecf57565b60e0906003190112611ecf576001600160a01b03906004358281168103611ecf57916024359081168103611ecf5790604435906064359060843560ff81168103611ecf579060a4359060c43590565b6009811015611fa9576000526007602052604060002090565b634e487b7160e01b600052602160045260246000fd5b90600182811c92168015611fef575b6020831014611fd957565b634e487b7160e01b600052602260045260246000fd5b91607f1691611fce565b6010546000929161200982611fbf565b908181526001928381169081600014612063575060011461202957505050565b9092935060106000526020928360002092846000945b83861061204f5750505050010190565b80548587018301529401938590820161203f565b91935050602093945060ff191683830152151560051b010190565b606081019081106001600160401b0382111761209957604052565b634e487b7160e01b600052604160045260246000fd5b604081019081106001600160401b0382111761209957604052565b61010081019081106001600160401b0382111761209957604052565b608081019081106001600160401b0382111761209957604052565b90601f801991011681019081106001600160401b0382111761209957604052565b6001600160401b03811161209957601f01601f191660200190565b1561214457565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b1561218f57565b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881b9bdd081d985b1a59607a1b6044820152606490fd5b818102929181159184041417156121db57565b634e487b7160e01b600052601160045260246000fd5b81156121fb570490565b634e487b7160e01b600052601260045260246000fd5b604d81116121db57600a0a90565b919082039182116121db57565b919082018092116121db57565b818103929160001380158285131691841216176121db57565b60145491929161229b9161228c9161228291612278906001600160801b038316906121c8565b9060801c906121f1565b93601f54906121c8565b61229583612211565b906121f1565b808310612363576122af6122eb918461221f565b916122e66122e06122d7601e546122d16122c886612211565b6020549061222c565b906121c8565b61229584612211565b91612211565b612239565b6509184e72a000908181029181830514901517156121db57670de0b6b3a7640000918281029281840514901517156121db5780156121fb57600160ff1b918083146000198314166121db570590600082121561235c5781146121db57600003905b808211612357575090565b905090565b509061234c565b505050600090565b9160018060a01b0380931691600093838552602060178152604091828720549081156124bd578783855161239e816120af565b82815201526123ab612b8f565b50505050509190506123be8615156124d7565b6009541683600c54898b52601882526064878c2054918851948593849263442c159960e01b8452600484015260248301528d60448301525afa9081156124b3578991612480575b5091612460612474979899949261243b8861243661242d601898620186a060225404906121c8565b601e54906121c8565b6121f1565b815190936001600160801b03918691612456918416906121c8565b92015116906121f1565b81811061247857035b978352522054612523565b9091565b505082612469565b90508381813d83116124ac575b6124978183612101565b810103126124a85751612460612405565b8880fd5b503d61248d565b85513d8b823e3d90fd5b5086955085949350505050565b51908115158203611ecf57565b156124de57565b60405162461bcd60e51b815260206004820152601e60248201527f4d61726b65743a2065786368616e676552617465206e6f742076616c696400006044820152606490fd5b61252e8215156124d7565b602060018060a01b0360095416916064600c54604051948593849263442c159960e01b845260048401526024830152600060448301525afa9081156125ce5760009161259b575b509061243661258792602254906121c8565b620186a0612597601e54836121c8565b0491565b906020823d82116125c6575b816125b460209383612101565b8101031261031e575051612436612575565b3d91506125a7565b6040513d6000823e3d90fd5b6001600160a01b031660008181526018602052604081205490926125fd91612523565b9183526017602052604083205480156127065781156127065781811061270657828110156126fc57601454612646918391610daf91612278906001600160801b038316906121c8565b90620186a092838302928084048514901517156126e85761266b92916122959161221f565b91601b5491601c549361267e8585612239565b80820291848212600160ff1b8214166126e85781830514901517156126d457058184820194851291129080158216911516176126c05750808212612357575090565b634e487b7160e01b81526011600452602490fd5b634e487b7160e01b83526011600452602483fd5b634e487b7160e01b85526011600452602485fd5b50505050601b5490565b50505090565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316148061280d575b15612767577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f000000000000000000000000000000000000000000000000000000000000000082527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a0815260c081018181106001600160401b038211176120995760405251902090565b507f0000000000000000000000000000000000000000000000000000000000000000461461273e565b1561283d57565b60405162461bcd60e51b815260206004820152601660248201527545524332303a2062616c616e636520746f6f206c6f7760501b6044820152606490fd5b1561288257565b60405162461bcd60e51b815260206004820152601660248201527545524332303a206e6f207a65726f206164647265737360501b6044820152606490fd5b51906001600160a01b0382168203611ecf57565b519060ff82168203611ecf57565b6005811015611fa957806128f35750565b6001810361293b5760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b6044820152606490fd5b600281036129885760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606490fd5b60031461299157565b60405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608490fd5b9291906fa2a8918ca85bafe22016d0b997e4df60600160ff1b038311612a5a5791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa15612a4d5781516001600160a01b03811615612a47579190565b50600190565b50604051903d90823e3d90fd5b50505050600090600390565b7fe50de2333c10a9502fcb1d8ae13a51bbf423153dfc63c2b8997665b32154afc360018060a01b038092169160009083825260036020526040822094169384825260205284604082205580a4565b909160207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259160018060a01b03809416938460005260028352604060002095169485600052825280604060002055604051908152a3565b60405190612b188261207e565b60006040838281528260208201520152565b60405190612b37826120af565b6014546001600160801b038116835260801c6020830152565b60405190612b5d826120af565b6025546001600160801b038116835260801c6020830152565b6001600160801b0391821690821601919082116121db57565b612b97612b0b565b5060006020604051612ba8816120af565b828152015260006020604051612bbd816120af565b828152015260405190612bcf8261207e565b602454916001600160401b038316815260208101926001600160401b038160401c16845260801c60408201528092612c05612b2a565b92612c0e612b50565b92600060018060a01b0360095416600e549460018060801b038751166040519063442c159960e01b8252876004830152602482015260006044820152602081606481865afa80156125ce5760009061301b575b8951612c7792506001600160801b03169061222c565b80612fe6575060005b612c956001600160401b03829351164261221f565b948515612fbc575050426001600160401b031660208a8101919091528801516001600160801b031615612f7257506020670de0b6b3a7640000612cf785612cf28c6001600160401b038d60018060801b03905116915116906121c8565b6121c8565b895191900496906001600160801b0390612d1690828a16908316612b76565b168952875160405163442c159960e01b815260048101929092526001600160801b031660248201526000604482015291829060649082905afa80156125ce57600090612f3e575b8751612d7392506001600160801b03169061222c565b92612da184612436620186a0612d8b601a548a6121c8565b60208c01516001600160801b03169190046121c8565b6040890180519195916001600160801b038088169291612dc49084908316612b76565b16905260208801805190916001600160801b0391612de491908316612b76565b16905280612f09575060005b602a5490938482811015612e8457612e08908361221f565b90670de0b6b3a7640000820291808304670de0b6b3a764000014901517156121db57612436612e5c612e56612e486001600160401b0396612e66966121f1565b93612cf2602e5495806121c8565b8361222c565b91848d51166121c8565b168089526001600160401b03602d5416809110612e805750565b8852565b909150602b54808211612e9657505050565b612e9f9161221f565b670de0b6b3a7640000810290808204670de0b6b3a764000014901517156121db576001600160401b0391612436612ee2612e56612e48612eeb95602c54906121f1565b848d51166121c8565b81602d5460401c16808211612f01575b50168852565b905038612efb565b87516001600160801b0316670de0b6b3a76400008181029291808404909114901517156121db57612f39916121f1565b612df0565b506020813d602011612f6a575b81612f5860209383612101565b81010312611ecf57612d739051612d5d565b3d9150612f4b565b9697939450509350506001600160401b038151166001600160401b03602f5416809103612fb0575b509392612fa5612b50565b926000926000929190565b81526001925038612f9a565b975098505050505092505091612fd0612b2a565b91612fd9612b50565b9160009160009190600090565b88516001600160801b0316670de0b6b3a76400008181029291808404909114901517156121db57613016916121f1565b612c80565b506020813d602011613047575b8161303560209383612101565b81010312611ecf57612c779051612c61565b3d9150613028565b3d1561307a573d9061306082612122565b9161306e6040519384612101565b82523d6000602084013e565b606090565b6040519061308c826120af565b60038252623f3f3f60e81b6020830152565b9081518110156130af570160200190565b634e487b7160e01b600052603260045260246000fd5b60ff1660ff81146121db5760010190565b80516040811061315157508051810190602081818401930312611ecf576020810151906001600160401b038211611ecf570181603f82011215611ecf57602081015161312181612122565b9261312f6040519485612101565b81845260408284010111611ecf5761314e916040602085019101611eea565b90565b60209290830361323f576000805b60ff81168581109081613220575b50156131815761317c906130c5565b61315f565b9260ff8094169261319184612122565b9361319f6040519586612101565b8085526131ae601f1991612122565b013687860137825b85811687811080613203575b156131f8576131f391906131ed6001600160f81b03196131e2838861309e565b5116871a918861309e565b536130c5565b6131b6565b505094505050905090565b506001600160f81b0319613217828661309e565b511615156131c2565b6001600160f81b03199150613235908661309e565b511615153861316d565b91505061314e61307f56feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa26469706673582212201324e883d95715784f23ebd80e84ebeb52319d56457d4edeffc98d6773d4245264736f6c63430008120033", "linkReferences": {}, "deployedLinkReferences": {} } diff --git a/src/artifacts/tapioca-bar/SGLLendingCommon.json b/src/artifacts/tapioca-bar/SGLLendingCommon.json index bebe2da1..c460fae6 100644 --- a/src/artifacts/tapioca-bar/SGLLendingCommon.json +++ b/src/artifacts/tapioca-bar/SGLLendingCommon.json @@ -123,6 +123,25 @@ "name": "InterestElasticityUpdated", "type": "event" }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "oldVal", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newVal", + "type": "address" + } + ], + "name": "LeverageExecutorSet", + "type": "event" + }, { "anonymous": false, "inputs": [ @@ -1136,6 +1155,19 @@ "stateMutability": "view", "type": "function" }, + { + "inputs": [], + "name": "leverageExecutor", + "outputs": [ + { + "internalType": "contract ILeverageExecutor", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, { "inputs": [], "name": "liquidationBonusAmount", @@ -1525,6 +1557,19 @@ "stateMutability": "view", "type": "function" }, + { + "inputs": [ + { + "internalType": "contract ILeverageExecutor", + "name": "_executor", + "type": "address" + } + ], + "name": "setLeverageExecutor", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, { "inputs": [ { @@ -1853,8 +1898,8 @@ "type": "function" } ], - "bytecode": "0x6101408060405234620001e5576200001781620001ea565b601381526001602082017f546170696f63612053696e67756c617269747900000000000000000000000000815260206040516200005481620001ea565b8381520192603160f81b845251902091208160e052610100918183524660a0526040519160208301907f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f92838352604085015260608401524660808401523060a084015260a0835260c083019280841060018060401b03851117620001cf5760408490525190206080523060c052610120908152600580546001600160a01b0319163390811790915560007f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a362013880601b5562015f90601c55612710601d55612ee06020557f0bd4060688a1800ae986e4840aebc924bb40b5bf44de4583df2257220b54b77c6026557f7d1dc38e60930664f8cbf495da6556ca091d2f92d6550877750c049864b182306027556161a86028556032602f556131f8928362000207843960805183612693015260a0518361275e015260c0518361265d015260e051836126e201525182612708015251816126bf0152f35b634e487b7160e01b600052604160045260246000fd5b600080fd5b604081019081106001600160401b03821117620001cf5760405256fe608080604052600436101561001357600080fd5b600090813560e01c908162a02a2014611dbf5750806302ce728f14611c3757806306fdde0314611b80578063078dfbe714611a7d578063095ea7b314611a565780630c4e84f01461193e57806318160ddd1461191d5780631c9e379b146118e45780631da8bf101461182457806323b872dd14611687578063313ce567146115f5578063331960ff146115d757806334d441d0146115b95780633644e5151461159e57806337b6b7b91461158057806338d52e0f146115575780633ba0b9a9146115395780633f741adb1461151457806340626d8b146114f657806344de240a146114d8578063473e3ce7146114ba57806348e4163e146114815780634d7f2a34146114635780634e71e0c8146113b5578063529898f21461139857806352f353eb14611371578063551402321461134a57806355c2ab941461132057806357935462146113025780635dfe04e8146112a35780636c3d8b8f1461127a57806370a0823114611241578063727785471461120957806374645ff3146111de5780637dc0d1d0146111b55780637ecebe001461117c5780637fa0b84e1461114a578063821226e81461112c5780638285ef40146110fa5780638c5d0ed3146110dc5780638da5cb5b146110b3578063910dd7c814610e9a578063959916dc14610e7c57806395d89b4114610dc257806399a9702814610d925780639c5d719214610d745780639e15e89f14610d39578063a9059cbb14610c56578063b0e21e8a14610c38578063b27c0e7414610bfd578063bb4cfe3b14610bdf578063ce8849ed14610bb6578063d3fb2a381461071e578063d505accf14610579578063d8dfeb4514610550578063dd62ed3e14610505578063de406577146104dc578063e0996cb6146104be578063e30c397814610495578063ea64dd5614610477578063eec0f42e14610459578063f42760b71461043b578063f8ba4cff14610341578063f9557ccb1461030b5763ffe04c66146102eb57600080fd5b346103085780600319360112610308576020602954604051908152f35b80fd5b5034610308578060031936011261030857602454604080516001600160801b038316815260809290921c602083015290f35b0390f35b50346103085780600319360112610308576020604061035e612add565b9397959390929015610402575050506001600160401b03602e541686807f33af5ce86e8438eff54589f85332916444457dfa8685493fbd579b809097026b868851838152a45b6001600160401b038151166001600160401b03851b84830151861b169160018060801b0319958691015160801b1691171760235560018060801b039083838383511692015160801b161760145583511692015160801b161760245580f35b7f33af5ce86e8438eff54589f85332916444457dfa8685493fbd579b809097026b866001600160401b03865116948951908152a46103a4565b50346103085780600319360112610308576020602a54604051908152f35b50346103085780600319360112610308576020600c54604051908152f35b50346103085780600319360112610308576020601f54604051908152f35b50346103085780600319360112610308576006546040516001600160a01b039091168152602090f35b50346103085780600319360112610308576020601d54604051908152f35b50346103085780600319360112610308576009546040516001600160a01b039091168152602090f35b5034610308576040366003190112610308576040602091610524611e07565b61052c611e22565b6001600160a01b039182168352600285528383209116825283522054604051908152f35b5034610308578060031936011261030857600b546040516001600160a01b039091168152602090f35b50346103085761058836611e8f565b908395949542116106d9576001600160a01b03878116808a52600460205260408a20805491969295929060001983146106c5578261066e9694928d92600161066698960190556040519160208301937f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e266855260408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e0815261062a81612018565b51902061063561265a565b9060405190602082019261190160f01b8452602283015260428201526042815261065e81612034565b51902061292f565b919091612830565b16036106805761067d92612a02565b80f35b60405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152606490fd5b634e487b7160e01b8c52601160045260248cfd5b60405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b503461030857610160366003190112610308576001600160a01b0360043581811690819003610bb2576024916001600160401b038335818111610bae5736602382011215610bae578060040135918211610bae5736858383010111610bae5760443593838516809503610baa5761079a8460055416331461208b565b80610b6c575b5084826109ee575b505050816109ae575b505060643580610996575b506084358061097e575b5060a43580610967575b5060c43580610943575b5060e4358061091f575b5061010435806108ee575b50610124358061087b575b50610144359081610809578280f35b601e54821061081c5750601f5538808280f35b60849060326040519162461bcd60e51b8352602060048401528201527f4d61726b65743a206c69717569646174696f6e436f6c6c61746572616c697a616044820152711d1a5bdb94985d19481d1bdbc81cdb585b1b60721b6064820152fd5b61088a620186a08211156120d6565b601f54811161089c57601e55386107fa565b60405162461bcd60e51b8152602060048201526025818401527f4d61726b65743a20636f6c6c61746572616c697a6174696f6e5261746520746f6044820152646f2062696760d81b6064820152608490fd5b806016547fae6e0ab3b95f0a53ff9660a390ccedcbbf1f2355dce974a9841af106fddcfaba8580a3601655386107ef565b61092d620186a082106120d6565b61093a601b5482116120d6565b601c55386107e4565b610951620186a082106120d6565b61095e601c5482106120d6565b601b55386107da565b610975620186a082106120d6565b601d55386107d0565b61098d620186a08211156120d6565b601a55386107c6565b6109a5620186a08211156120d6565b601955386107bc565b816008549182167f5a62d22209e370e38eea92cfddcd228e656e6ec139243392a760a7769f5877fd8680a36001600160a01b0319161760085538806107b1565b82916109fb601054611f0d565b601f8111610afb575b508790601f8411600114610a69578893610a5c575b5050508160011b916000199060031b1c1916176010555b7fa6f004921c944d4b8bf6e38462b00f36a58d62495d56b51f571ab78f732c98158480a13880846107a8565b0101359050843880610a19565b60108952601f19841694507f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae67292509087908960205b878210610adc5750508460019610610ac0575b50505050811b01601055610a30565b60001960f88660031b161c199201013516905538808681610ab1565b8285019093013585556001949094019389929182019190810190610a9e565b6010895290925090507f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae672601f840160051c810160208510610b65575b91849391601f8994920160051c01905b818110610b545750610a04565b898155859450889350600101610b47565b5080610b37565b600f80546001600160a01b0319169190911790557f0b2d6eb667d0522c3eb86e4288afecae6c11591ffd1345d4d12407e0598bca9b8680a1386107a0565b8680fd5b8580fd5b8280fd5b50346103085780600319360112610308576008546040516001600160a01b039091168152602090f35b50346103085780600319360112610308576020601e54604051908152f35b50346103085780600319360112610308576060602354604051906001600160401b0380821683528160401c16602083015260801c6040820152f35b50346103085780600319360112610308576020601a54604051908152f35b503461030857604036600319011261030857610c70611e07565b60243580928115801590610d27575b610cb7575b50506040519182526001600160a01b03169033906000805160206131a383398151915290602090a3602060405160018152f35b33815260016020526040812054610cd083821015612784565b6001600160a01b0384169033829003610ceb575b5050610c84565b604093610d0291610cfd8415156127c9565b61216d565b338352600160205283832055815220610d1c83825461217a565b905581388080610ce4565b50336001600160a01b03841614610c7f565b5034610308576040366003190112610308576060610d61610d58611e07565b602435906122b9565b9060405192835260208301526040820152f35b50346103085780600319360112610308576020602b54604051908152f35b5034610308576040366003190112610308576020610dba610db1611e07565b60243590612528565b604051908152f35b5034610308578060031936011261030857808060018060a01b03600b541660405160208101906395d89b4160e01b825260048152610dff81611ffd565b51915afa610e0b612fa7565b915015610e6b57610e1e61033d9161302e565b610e576023604051809362746d2d60e81b6020830152610e478151809260208686019101611e38565b810103600381018452018261204f565b604051918291602083526020830190611e5b565b5061033d610e77612fd7565b610e1e565b50346103085780600319360112610308576020602f54604051908152f35b5034610308576040366003190112610308576004356001600160401b0381116110af57366023820112156110af57806004013582610ed782612070565b92610ee5604051948561204f565b82845260208401923660248284010111610bb2578060246020930185378401015260243561ffff811681036110ab576101009182848051810103126110a757610f2d90612418565b610f396040850161280e565b91610f466060860161280e565b9460808101519460a082015192610f5f60c08401612822565b9160e0840151930151938042116106d9578515611080577f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e266915b6001600160a01b0388168b52600460205260408b2080549190600019831461106c579161ffff6110299896949261066698969460018401905560405194602086015216604084015260018060a01b038a16606084015260018060a01b038c1660808401528a60a084015260c083015260e082015260e0815261101a81612018565b6020815191012061063561265a565b6001600160a01b0383811691160361068057156110565761067d926001600160a01b039081169116612a02565b61067d926001600160a01b0390811691166129b4565b634e487b7160e01b8d52601160045260248dfd5b7f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d691610f99565b8480fd5b8380fd5b5080fd5b50346103085780600319360112610308576005546040516001600160a01b039091168152602090f35b50346103085780600319360112610308576020601b54604051908152f35b5034610308578060031936011261030857601454604080516001600160801b038316815260809290921c602083015290f35b50346103085780600319360112610308576020602d54604051908152f35b503461030857604036600319011261030857611171611167611e07565b60243590336129b4565b602060405160018152f35b5034610308576020366003190112610308576020906040906001600160a01b036111a4611e07565b168152600483522054604051908152f35b5034610308578060031936011261030857600f546040516001600160a01b039091168152602090f35b503461030857806003193601126103085761033d604051610e578161120281611f47565b038261204f565b50346103085760203660031901126103085760043590600982101561030857602060ff61123584611ede565b54166040519015158152f35b5034610308576020366003190112610308576020906040906001600160a01b03611269611e07565b168152600183522054604051908152f35b5034610308578060031936011261030857600a546040516001600160a01b039091168152602090f35b50346103085780600319360112610308576112bc612a59565b5060806112c7612add565b509350505050604051916001600160401b0380825116845260208201511660208401526040600180861b039101511660408301526060820152f35b50346103085780600319360112610308576020601c54604051908152f35b503461030857806003193601126103085760206001600160401b03602c5460401c16604051908152f35b503461030857806003193601126103085760206001600160401b03602c5416604051908152f35b503461030857806003193601126103085760206001600160401b03602e5416604051908152f35b503461030857806003193601126103085760208054604051908152f35b50346103085780600319360112610308576006546001600160a01b03908181163381900361141f57806005549384167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08680a36001600160a01b0319928316176005551660065580f35b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b50346103085780600319360112610308576020602854604051908152f35b5034610308576020366003190112610308576020906040906001600160a01b036114a9611e07565b168152601783522054604051908152f35b50346103085780600319360112610308576020601554604051908152f35b50346103085780600319360112610308576020600e54604051908152f35b50346103085780600319360112610308576020601654604051908152f35b5034610308576060366003190112610308576020610dba6044356024356004356121a0565b50346103085780600319360112610308576020601154604051908152f35b5034610308578060031936011261030857600d546040516001600160a01b039091168152602090f35b50346103085780600319360112610308576020601254604051908152f35b50346103085780600319360112610308576020610dba61265a565b50346103085780600319360112610308576020601954604051908152f35b50346103085780600319360112610308576020601354604051908152f35b5034610308578060031936011261030857808060018060a01b03600d5416604051602081019063313ce56760e01b82526004815261163281611ffd565b51915afa9061163f612fa7565b918061167c575b156116715760208280518101031261030857506116666020809201612822565b60ff60405191168152f35b505060206012611666565b506020825114611646565b5034610308576060366003190112610308576116a1611e07565b906116aa611e22565b60443591826116e8575b506040519182526001600160a01b039081169216906000805160206131a383398151915290602090a3602060405160018152f35b6001600160a01b0384811680835260016020908152604084205492869061171182861015612784565b861693848403611726575b50505050506116b4565b838652600283526040808720338852845286205460018101611790575b509260016020969361176e8794604097610cfd6000805160206131a38339815191529c9a15156127c9565b928552528383205581522061178485825461217a565b9055913880858161171c565b909181106117e4579260016020969361176e8a6000805160206131a38339815191529a98956117c18260409a61216d565b86895260028552898920338a528552898920559497509497995050939650611743565b60405162461bcd60e51b815260048101849052601860248201527745524332303a20616c6c6f77616e636520746f6f206c6f7760401b6044820152606490fd5b50346103085761183336611e8f565b908395949542116106d9576001600160a01b03878116808a52600460205260408a20805491969295929060001983146106c557826118d59694928d92600161066698960190556040519160208301937f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d6855260408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e0815261062a81612018565b16036106805761067d926129b4565b5034610308576020366003190112610308576020906040906001600160a01b0361190c611e07565b168152601883522054604051908152f35b5034610308578060031936011261030857602060245460801c604051908152f35b50346103085760403660031901126103085760043560098110156110af57611964611e80565b6008549091906001600160a01b03163303611a1a5760ff61198482611ede565b541615159115159182146119e057808260ff6119a26119d094611ede565b54161515827feeec81de25875ce1725479bb76f720a8defdb43dea041919ae37bb4aae9847c08780a4611ede565b9060ff8019835416911617905580f35b60405162461bcd60e51b81526020600482015260126024820152714d61726b65743a2073616d6520737461746560701b6044820152606490fd5b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881d5b985d5d1a1bdc9a5e995960621b6044820152606490fd5b503461030857604036600319011261030857611171611a73611e07565b6024359033612a02565b503461030857606036600319011261030857611a97611e07565b611a9f611e80565b6044359081151582036110ab5760018060a01b03928391611ac58360055416331461208b565b15611b69571690811590811591611b61575b5015611b2457806005549283167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08580a36001600160a01b03199182161760055560068054909116905580f35b60405162461bcd60e51b81526020600482015260156024820152744f776e61626c653a207a65726f206164647265737360581b6044820152606490fd5b905038611ad7565b9150501660018060a01b0319600654161760065580f35b5034610308578060031936011261030857808060018060a01b03600b541660405160208101906306fdde0360e01b825260048152611bbd81611ffd565b51915afa611bc9612fa7565b915015611c2657611bdc61033d9161302e565b610e576034604051809373546170696f63612053696e67756c61726974792d60601b6020830152611c168151809260208686019101611e38565b810103601481018452018261204f565b5061033d611c32612fd7565b611bdc565b5034610308578060031936011261030857600f546040805163d6d7d52560e01b8152602060048201529182906001600160a01b0316818581611c7b60248201611f47565b03925af18015611db45782918391611d74575b508115611d15578015611cd957807f9f9192b5edb17356c524e08d9e025c8e2f6307e6ea52fb7968faa3081f51c3c86040948260115580a25b42601355825191151582526020820152f35b60405162461bcd60e51b81526020600482015260146024820152734d61726b65743a20696e76616c6964207261746560601b6044820152606490fd5b509050611d276013546012549061217a565b4211611d3857604090601154611cc7565b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881c985d19481d1bdbc81bdb1960621b6044820152606490fd5b9150506040813d604011611dac575b81611d906040938361204f565b810103126110af576020611da382612418565b91015138611c8e565b3d9150611d83565b6040513d84823e3d90fd5b9050346110af5760403660031901126110af576040602092611ddf611e07565b611de7611e22565b6001600160a01b0391821683526003865283832091168252845220548152f35b600435906001600160a01b0382168203611e1d57565b600080fd5b602435906001600160a01b0382168203611e1d57565b60005b838110611e4b5750506000910152565b8181015183820152602001611e3b565b90602091611e7481518092818552858086019101611e38565b601f01601f1916010190565b602435908115158203611e1d57565b60e0906003190112611e1d576001600160a01b03906004358281168103611e1d57916024359081168103611e1d5790604435906064359060843560ff81168103611e1d579060a4359060c43590565b6009811015611ef7576000526007602052604060002090565b634e487b7160e01b600052602160045260246000fd5b90600182811c92168015611f3d575b6020831014611f2757565b634e487b7160e01b600052602260045260246000fd5b91607f1691611f1c565b60105460009291611f5782611f0d565b908181526001928381169081600014611fb15750600114611f7757505050565b9092935060106000526020928360002092846000945b838610611f9d5750505050010190565b805485870183015294019385908201611f8d565b91935050602093945060ff191683830152151560051b010190565b606081019081106001600160401b03821117611fe757604052565b634e487b7160e01b600052604160045260246000fd5b604081019081106001600160401b03821117611fe757604052565b61010081019081106001600160401b03821117611fe757604052565b608081019081106001600160401b03821117611fe757604052565b90601f801991011681019081106001600160401b03821117611fe757604052565b6001600160401b038111611fe757601f01601f191660200190565b1561209257565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b156120dd57565b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881b9bdd081d985b1a59607a1b6044820152606490fd5b8181029291811591840414171561212957565b634e487b7160e01b600052601160045260246000fd5b8115612149570490565b634e487b7160e01b600052601260045260246000fd5b604d811161212957600a0a90565b9190820391821161212957565b9190820180921161212957565b8181039291600013801582851316918412161761212957565b6014549192916121e9916121da916121d0916121c6906001600160801b03831690612116565b9060801c9061213f565b93601f5490612116565b6121e38361215f565b9061213f565b8083106122b1576121fd612239918461216d565b9161223461222e612225601e5461221f6122168661215f565b6020549061217a565b90612116565b6121e38461215f565b9161215f565b612187565b6509184e72a0009081810291818305149015171561212957670de0b6b3a76400009182810292818405149015171561212957801561214957600160ff1b9180831460001983141661212957059060008212156122aa57811461212957600003905b8082116122a5575090565b905090565b509061229a565b505050600090565b9160018060a01b03809316916000938385526020601781526040918287205490811561240b57878385516122ec81611ffd565b82815201526122f9612add565b505050505091905061230c861515612425565b6009541683600c54898b52601882526064878c2054918851948593849263442c159960e01b8452600484015260248301528d60448301525afa9081156124015789916123ce575b50916123ae6123c297989994926123898861238461237b601898620186a06021540490612116565b601e5490612116565b61213f565b815190936001600160801b039186916123a491841690612116565b920151169061213f565b8181106123c657035b978352522054612471565b9091565b5050826123b7565b90508381813d83116123fa575b6123e5818361204f565b810103126123f657516123ae612353565b8880fd5b503d6123db565b85513d8b823e3d90fd5b5086955085949350505050565b51908115158203611e1d57565b1561242c57565b60405162461bcd60e51b815260206004820152601e60248201527f4d61726b65743a2065786368616e676552617465206e6f742076616c696400006044820152606490fd5b61247c821515612425565b602060018060a01b0360095416916064600c54604051948593849263442c159960e01b845260048401526024830152600060448301525afa90811561251c576000916124e9575b50906123846124d59260215490612116565b620186a06124e5601e5483612116565b0491565b906020823d8211612514575b816125026020938361204f565b810103126103085750516123846124c3565b3d91506124f5565b6040513d6000823e3d90fd5b6001600160a01b0316600081815260186020526040812054909261254b91612471565b91835260176020526040832054801561265457811561265457818110612654578281101561264a57601454612594918391610cfd916121c6906001600160801b03831690612116565b90620186a09283830292808404851490151715612636576125b992916121e39161216d565b91601b5491601c54936125cc8585612187565b80820291848212600160ff1b821416612636578183051490151715612622570581848201948512911290801582169115161761260e57508082126122a5575090565b634e487b7160e01b81526011600452602490fd5b634e487b7160e01b83526011600452602483fd5b634e487b7160e01b85526011600452602485fd5b50505050601b5490565b50505090565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316148061275b575b156126b5577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f000000000000000000000000000000000000000000000000000000000000000082527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a0815260c081018181106001600160401b03821117611fe75760405251902090565b507f0000000000000000000000000000000000000000000000000000000000000000461461268c565b1561278b57565b60405162461bcd60e51b815260206004820152601660248201527545524332303a2062616c616e636520746f6f206c6f7760501b6044820152606490fd5b156127d057565b60405162461bcd60e51b815260206004820152601660248201527545524332303a206e6f207a65726f206164647265737360501b6044820152606490fd5b51906001600160a01b0382168203611e1d57565b519060ff82168203611e1d57565b6005811015611ef757806128415750565b600181036128895760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b6044820152606490fd5b600281036128d65760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606490fd5b6003146128df57565b60405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608490fd5b9291906fa2a8918ca85bafe22016d0b997e4df60600160ff1b0383116129a85791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa1561299b5781516001600160a01b03811615612995579190565b50600190565b50604051903d90823e3d90fd5b50505050600090600390565b7fe50de2333c10a9502fcb1d8ae13a51bbf423153dfc63c2b8997665b32154afc360018060a01b038092169160009083825260036020526040822094169384825260205284604082205580a4565b909160207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259160018060a01b03809416938460005260028352604060002095169485600052825280604060002055604051908152a3565b60405190612a6682611fcc565b60006040838281528260208201520152565b60405190612a8582611ffd565b6014546001600160801b038116835260801c6020830152565b60405190612aab82611ffd565b6024546001600160801b038116835260801c6020830152565b6001600160801b03918216908216019190821161212957565b612ae5612a59565b5060006020604051612af681611ffd565b828152015260006020604051612b0b81611ffd565b8281520152604051612b1c81611fcc565b6023546001600160401b03811682526001600160401b038160401c16602083015260801c60408201528091612b4f612a78565b91612b58612a9e565b600954600e54825160405163442c159960e01b8152600481018390526001600160801b03909116602482015260006044820181905293959194919391926001600160a01b031690602081606481855afa801561251c57600090612f73575b8851612bcc92506001600160801b03169061217a565b80612f3e575060005b80612bed6001600160401b036020870151164261216d565b948515612f14575050426001600160401b031660208a8101919091528801516001600160801b031615612eca57506020670de0b6b3a7640000612c4f85612c4a8c6001600160401b038d60018060801b0390511691511690612116565b612116565b895191900496906001600160801b0390612c6e90828a16908316612ac4565b168952875160405163442c159960e01b815260048101929092526001600160801b031660248201526000604482015291829060649082905afa801561251c57600090612e96575b8751612ccb92506001600160801b03169061217a565b92612cf984612384620186a0612ce3601a548a612116565b60208c01516001600160801b0316919004612116565b6040890180519195916001600160801b038088169291612d1c9084908316612ac4565b16905260208801805190916001600160801b0391612d3c91908316612ac4565b16905280612e61575060005b60295490938482811015612ddc57612d60908361216d565b90670de0b6b3a7640000820291808304670de0b6b3a7640000149015171561212957612384612db4612dae612da06001600160401b0396612dbe9661213f565b93612c4a602d549580612116565b8361217a565b91848d5116612116565b168089526001600160401b03602c5416809110612dd85750565b8852565b909150602a54808211612dee57505050565b612df79161216d565b670de0b6b3a7640000810290808204670de0b6b3a76400001490151715612129576001600160401b0391612384612e3a612dae612da0612e4395602b549061213f565b848d5116612116565b81602c5460401c16808211612e59575b50168852565b905038612e53565b87516001600160801b0316670de0b6b3a764000081810292918084049091149015171561212957612e919161213f565b612d48565b506020813d602011612ec2575b81612eb06020938361204f565b81010312611e1d57612ccb9051612cb5565b3d9150612ea3565b9697939450509350506001600160401b038151166001600160401b03602e5416809103612f08575b509392612efd612a9e565b926000926000929190565b81526001925038612ef2565b975098505050505092505091612f28612a78565b91612f31612a9e565b9160009160009190600090565b87516001600160801b0316670de0b6b3a764000081810292918084049091149015171561212957612f6e9161213f565b612bd5565b506020813d602011612f9f575b81612f8d6020938361204f565b81010312611e1d57612bcc9051612bb6565b3d9150612f80565b3d15612fd2573d90612fb882612070565b91612fc6604051938461204f565b82523d6000602084013e565b606090565b60405190612fe482611ffd565b60038252623f3f3f60e81b6020830152565b908151811015613007570160200190565b634e487b7160e01b600052603260045260246000fd5b60ff1660ff81146121295760010190565b8051604081106130a957508051810190602081818401930312611e1d576020810151906001600160401b038211611e1d570181603f82011215611e1d57602081015161307981612070565b92613087604051948561204f565b81845260408284010111611e1d576130a6916040602085019101611e38565b90565b602092908303613197576000805b60ff81168581109081613178575b50156130d9576130d49061301d565b6130b7565b9260ff809416926130e984612070565b936130f7604051958661204f565b808552613106601f1991612070565b013687860137825b8581168781108061315b575b156131505761314b91906131456001600160f81b031961313a8388612ff6565b5116871a9188612ff6565b5361301d565b61310e565b505094505050905090565b506001600160f81b031961316f8286612ff6565b5116151561311a565b6001600160f81b0319915061318d9086612ff6565b51161515386130c5565b9150506130a6612fd756feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa26469706673582212209cb35f7a6fa2711bdb911fbb1801dbf316a9429fa6646759b4239276fd4f8da564736f6c63430008120033", - "deployedBytecode": "0x608080604052600436101561001357600080fd5b600090813560e01c908162a02a2014611dbf5750806302ce728f14611c3757806306fdde0314611b80578063078dfbe714611a7d578063095ea7b314611a565780630c4e84f01461193e57806318160ddd1461191d5780631c9e379b146118e45780631da8bf101461182457806323b872dd14611687578063313ce567146115f5578063331960ff146115d757806334d441d0146115b95780633644e5151461159e57806337b6b7b91461158057806338d52e0f146115575780633ba0b9a9146115395780633f741adb1461151457806340626d8b146114f657806344de240a146114d8578063473e3ce7146114ba57806348e4163e146114815780634d7f2a34146114635780634e71e0c8146113b5578063529898f21461139857806352f353eb14611371578063551402321461134a57806355c2ab941461132057806357935462146113025780635dfe04e8146112a35780636c3d8b8f1461127a57806370a0823114611241578063727785471461120957806374645ff3146111de5780637dc0d1d0146111b55780637ecebe001461117c5780637fa0b84e1461114a578063821226e81461112c5780638285ef40146110fa5780638c5d0ed3146110dc5780638da5cb5b146110b3578063910dd7c814610e9a578063959916dc14610e7c57806395d89b4114610dc257806399a9702814610d925780639c5d719214610d745780639e15e89f14610d39578063a9059cbb14610c56578063b0e21e8a14610c38578063b27c0e7414610bfd578063bb4cfe3b14610bdf578063ce8849ed14610bb6578063d3fb2a381461071e578063d505accf14610579578063d8dfeb4514610550578063dd62ed3e14610505578063de406577146104dc578063e0996cb6146104be578063e30c397814610495578063ea64dd5614610477578063eec0f42e14610459578063f42760b71461043b578063f8ba4cff14610341578063f9557ccb1461030b5763ffe04c66146102eb57600080fd5b346103085780600319360112610308576020602954604051908152f35b80fd5b5034610308578060031936011261030857602454604080516001600160801b038316815260809290921c602083015290f35b0390f35b50346103085780600319360112610308576020604061035e612add565b9397959390929015610402575050506001600160401b03602e541686807f33af5ce86e8438eff54589f85332916444457dfa8685493fbd579b809097026b868851838152a45b6001600160401b038151166001600160401b03851b84830151861b169160018060801b0319958691015160801b1691171760235560018060801b039083838383511692015160801b161760145583511692015160801b161760245580f35b7f33af5ce86e8438eff54589f85332916444457dfa8685493fbd579b809097026b866001600160401b03865116948951908152a46103a4565b50346103085780600319360112610308576020602a54604051908152f35b50346103085780600319360112610308576020600c54604051908152f35b50346103085780600319360112610308576020601f54604051908152f35b50346103085780600319360112610308576006546040516001600160a01b039091168152602090f35b50346103085780600319360112610308576020601d54604051908152f35b50346103085780600319360112610308576009546040516001600160a01b039091168152602090f35b5034610308576040366003190112610308576040602091610524611e07565b61052c611e22565b6001600160a01b039182168352600285528383209116825283522054604051908152f35b5034610308578060031936011261030857600b546040516001600160a01b039091168152602090f35b50346103085761058836611e8f565b908395949542116106d9576001600160a01b03878116808a52600460205260408a20805491969295929060001983146106c5578261066e9694928d92600161066698960190556040519160208301937f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e266855260408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e0815261062a81612018565b51902061063561265a565b9060405190602082019261190160f01b8452602283015260428201526042815261065e81612034565b51902061292f565b919091612830565b16036106805761067d92612a02565b80f35b60405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152606490fd5b634e487b7160e01b8c52601160045260248cfd5b60405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b503461030857610160366003190112610308576001600160a01b0360043581811690819003610bb2576024916001600160401b038335818111610bae5736602382011215610bae578060040135918211610bae5736858383010111610bae5760443593838516809503610baa5761079a8460055416331461208b565b80610b6c575b5084826109ee575b505050816109ae575b505060643580610996575b506084358061097e575b5060a43580610967575b5060c43580610943575b5060e4358061091f575b5061010435806108ee575b50610124358061087b575b50610144359081610809578280f35b601e54821061081c5750601f5538808280f35b60849060326040519162461bcd60e51b8352602060048401528201527f4d61726b65743a206c69717569646174696f6e436f6c6c61746572616c697a616044820152711d1a5bdb94985d19481d1bdbc81cdb585b1b60721b6064820152fd5b61088a620186a08211156120d6565b601f54811161089c57601e55386107fa565b60405162461bcd60e51b8152602060048201526025818401527f4d61726b65743a20636f6c6c61746572616c697a6174696f6e5261746520746f6044820152646f2062696760d81b6064820152608490fd5b806016547fae6e0ab3b95f0a53ff9660a390ccedcbbf1f2355dce974a9841af106fddcfaba8580a3601655386107ef565b61092d620186a082106120d6565b61093a601b5482116120d6565b601c55386107e4565b610951620186a082106120d6565b61095e601c5482106120d6565b601b55386107da565b610975620186a082106120d6565b601d55386107d0565b61098d620186a08211156120d6565b601a55386107c6565b6109a5620186a08211156120d6565b601955386107bc565b816008549182167f5a62d22209e370e38eea92cfddcd228e656e6ec139243392a760a7769f5877fd8680a36001600160a01b0319161760085538806107b1565b82916109fb601054611f0d565b601f8111610afb575b508790601f8411600114610a69578893610a5c575b5050508160011b916000199060031b1c1916176010555b7fa6f004921c944d4b8bf6e38462b00f36a58d62495d56b51f571ab78f732c98158480a13880846107a8565b0101359050843880610a19565b60108952601f19841694507f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae67292509087908960205b878210610adc5750508460019610610ac0575b50505050811b01601055610a30565b60001960f88660031b161c199201013516905538808681610ab1565b8285019093013585556001949094019389929182019190810190610a9e565b6010895290925090507f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae672601f840160051c810160208510610b65575b91849391601f8994920160051c01905b818110610b545750610a04565b898155859450889350600101610b47565b5080610b37565b600f80546001600160a01b0319169190911790557f0b2d6eb667d0522c3eb86e4288afecae6c11591ffd1345d4d12407e0598bca9b8680a1386107a0565b8680fd5b8580fd5b8280fd5b50346103085780600319360112610308576008546040516001600160a01b039091168152602090f35b50346103085780600319360112610308576020601e54604051908152f35b50346103085780600319360112610308576060602354604051906001600160401b0380821683528160401c16602083015260801c6040820152f35b50346103085780600319360112610308576020601a54604051908152f35b503461030857604036600319011261030857610c70611e07565b60243580928115801590610d27575b610cb7575b50506040519182526001600160a01b03169033906000805160206131a383398151915290602090a3602060405160018152f35b33815260016020526040812054610cd083821015612784565b6001600160a01b0384169033829003610ceb575b5050610c84565b604093610d0291610cfd8415156127c9565b61216d565b338352600160205283832055815220610d1c83825461217a565b905581388080610ce4565b50336001600160a01b03841614610c7f565b5034610308576040366003190112610308576060610d61610d58611e07565b602435906122b9565b9060405192835260208301526040820152f35b50346103085780600319360112610308576020602b54604051908152f35b5034610308576040366003190112610308576020610dba610db1611e07565b60243590612528565b604051908152f35b5034610308578060031936011261030857808060018060a01b03600b541660405160208101906395d89b4160e01b825260048152610dff81611ffd565b51915afa610e0b612fa7565b915015610e6b57610e1e61033d9161302e565b610e576023604051809362746d2d60e81b6020830152610e478151809260208686019101611e38565b810103600381018452018261204f565b604051918291602083526020830190611e5b565b5061033d610e77612fd7565b610e1e565b50346103085780600319360112610308576020602f54604051908152f35b5034610308576040366003190112610308576004356001600160401b0381116110af57366023820112156110af57806004013582610ed782612070565b92610ee5604051948561204f565b82845260208401923660248284010111610bb2578060246020930185378401015260243561ffff811681036110ab576101009182848051810103126110a757610f2d90612418565b610f396040850161280e565b91610f466060860161280e565b9460808101519460a082015192610f5f60c08401612822565b9160e0840151930151938042116106d9578515611080577f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e266915b6001600160a01b0388168b52600460205260408b2080549190600019831461106c579161ffff6110299896949261066698969460018401905560405194602086015216604084015260018060a01b038a16606084015260018060a01b038c1660808401528a60a084015260c083015260e082015260e0815261101a81612018565b6020815191012061063561265a565b6001600160a01b0383811691160361068057156110565761067d926001600160a01b039081169116612a02565b61067d926001600160a01b0390811691166129b4565b634e487b7160e01b8d52601160045260248dfd5b7f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d691610f99565b8480fd5b8380fd5b5080fd5b50346103085780600319360112610308576005546040516001600160a01b039091168152602090f35b50346103085780600319360112610308576020601b54604051908152f35b5034610308578060031936011261030857601454604080516001600160801b038316815260809290921c602083015290f35b50346103085780600319360112610308576020602d54604051908152f35b503461030857604036600319011261030857611171611167611e07565b60243590336129b4565b602060405160018152f35b5034610308576020366003190112610308576020906040906001600160a01b036111a4611e07565b168152600483522054604051908152f35b5034610308578060031936011261030857600f546040516001600160a01b039091168152602090f35b503461030857806003193601126103085761033d604051610e578161120281611f47565b038261204f565b50346103085760203660031901126103085760043590600982101561030857602060ff61123584611ede565b54166040519015158152f35b5034610308576020366003190112610308576020906040906001600160a01b03611269611e07565b168152600183522054604051908152f35b5034610308578060031936011261030857600a546040516001600160a01b039091168152602090f35b50346103085780600319360112610308576112bc612a59565b5060806112c7612add565b509350505050604051916001600160401b0380825116845260208201511660208401526040600180861b039101511660408301526060820152f35b50346103085780600319360112610308576020601c54604051908152f35b503461030857806003193601126103085760206001600160401b03602c5460401c16604051908152f35b503461030857806003193601126103085760206001600160401b03602c5416604051908152f35b503461030857806003193601126103085760206001600160401b03602e5416604051908152f35b503461030857806003193601126103085760208054604051908152f35b50346103085780600319360112610308576006546001600160a01b03908181163381900361141f57806005549384167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08680a36001600160a01b0319928316176005551660065580f35b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b50346103085780600319360112610308576020602854604051908152f35b5034610308576020366003190112610308576020906040906001600160a01b036114a9611e07565b168152601783522054604051908152f35b50346103085780600319360112610308576020601554604051908152f35b50346103085780600319360112610308576020600e54604051908152f35b50346103085780600319360112610308576020601654604051908152f35b5034610308576060366003190112610308576020610dba6044356024356004356121a0565b50346103085780600319360112610308576020601154604051908152f35b5034610308578060031936011261030857600d546040516001600160a01b039091168152602090f35b50346103085780600319360112610308576020601254604051908152f35b50346103085780600319360112610308576020610dba61265a565b50346103085780600319360112610308576020601954604051908152f35b50346103085780600319360112610308576020601354604051908152f35b5034610308578060031936011261030857808060018060a01b03600d5416604051602081019063313ce56760e01b82526004815261163281611ffd565b51915afa9061163f612fa7565b918061167c575b156116715760208280518101031261030857506116666020809201612822565b60ff60405191168152f35b505060206012611666565b506020825114611646565b5034610308576060366003190112610308576116a1611e07565b906116aa611e22565b60443591826116e8575b506040519182526001600160a01b039081169216906000805160206131a383398151915290602090a3602060405160018152f35b6001600160a01b0384811680835260016020908152604084205492869061171182861015612784565b861693848403611726575b50505050506116b4565b838652600283526040808720338852845286205460018101611790575b509260016020969361176e8794604097610cfd6000805160206131a38339815191529c9a15156127c9565b928552528383205581522061178485825461217a565b9055913880858161171c565b909181106117e4579260016020969361176e8a6000805160206131a38339815191529a98956117c18260409a61216d565b86895260028552898920338a528552898920559497509497995050939650611743565b60405162461bcd60e51b815260048101849052601860248201527745524332303a20616c6c6f77616e636520746f6f206c6f7760401b6044820152606490fd5b50346103085761183336611e8f565b908395949542116106d9576001600160a01b03878116808a52600460205260408a20805491969295929060001983146106c557826118d59694928d92600161066698960190556040519160208301937f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d6855260408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e0815261062a81612018565b16036106805761067d926129b4565b5034610308576020366003190112610308576020906040906001600160a01b0361190c611e07565b168152601883522054604051908152f35b5034610308578060031936011261030857602060245460801c604051908152f35b50346103085760403660031901126103085760043560098110156110af57611964611e80565b6008549091906001600160a01b03163303611a1a5760ff61198482611ede565b541615159115159182146119e057808260ff6119a26119d094611ede565b54161515827feeec81de25875ce1725479bb76f720a8defdb43dea041919ae37bb4aae9847c08780a4611ede565b9060ff8019835416911617905580f35b60405162461bcd60e51b81526020600482015260126024820152714d61726b65743a2073616d6520737461746560701b6044820152606490fd5b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881d5b985d5d1a1bdc9a5e995960621b6044820152606490fd5b503461030857604036600319011261030857611171611a73611e07565b6024359033612a02565b503461030857606036600319011261030857611a97611e07565b611a9f611e80565b6044359081151582036110ab5760018060a01b03928391611ac58360055416331461208b565b15611b69571690811590811591611b61575b5015611b2457806005549283167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08580a36001600160a01b03199182161760055560068054909116905580f35b60405162461bcd60e51b81526020600482015260156024820152744f776e61626c653a207a65726f206164647265737360581b6044820152606490fd5b905038611ad7565b9150501660018060a01b0319600654161760065580f35b5034610308578060031936011261030857808060018060a01b03600b541660405160208101906306fdde0360e01b825260048152611bbd81611ffd565b51915afa611bc9612fa7565b915015611c2657611bdc61033d9161302e565b610e576034604051809373546170696f63612053696e67756c61726974792d60601b6020830152611c168151809260208686019101611e38565b810103601481018452018261204f565b5061033d611c32612fd7565b611bdc565b5034610308578060031936011261030857600f546040805163d6d7d52560e01b8152602060048201529182906001600160a01b0316818581611c7b60248201611f47565b03925af18015611db45782918391611d74575b508115611d15578015611cd957807f9f9192b5edb17356c524e08d9e025c8e2f6307e6ea52fb7968faa3081f51c3c86040948260115580a25b42601355825191151582526020820152f35b60405162461bcd60e51b81526020600482015260146024820152734d61726b65743a20696e76616c6964207261746560601b6044820152606490fd5b509050611d276013546012549061217a565b4211611d3857604090601154611cc7565b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881c985d19481d1bdbc81bdb1960621b6044820152606490fd5b9150506040813d604011611dac575b81611d906040938361204f565b810103126110af576020611da382612418565b91015138611c8e565b3d9150611d83565b6040513d84823e3d90fd5b9050346110af5760403660031901126110af576040602092611ddf611e07565b611de7611e22565b6001600160a01b0391821683526003865283832091168252845220548152f35b600435906001600160a01b0382168203611e1d57565b600080fd5b602435906001600160a01b0382168203611e1d57565b60005b838110611e4b5750506000910152565b8181015183820152602001611e3b565b90602091611e7481518092818552858086019101611e38565b601f01601f1916010190565b602435908115158203611e1d57565b60e0906003190112611e1d576001600160a01b03906004358281168103611e1d57916024359081168103611e1d5790604435906064359060843560ff81168103611e1d579060a4359060c43590565b6009811015611ef7576000526007602052604060002090565b634e487b7160e01b600052602160045260246000fd5b90600182811c92168015611f3d575b6020831014611f2757565b634e487b7160e01b600052602260045260246000fd5b91607f1691611f1c565b60105460009291611f5782611f0d565b908181526001928381169081600014611fb15750600114611f7757505050565b9092935060106000526020928360002092846000945b838610611f9d5750505050010190565b805485870183015294019385908201611f8d565b91935050602093945060ff191683830152151560051b010190565b606081019081106001600160401b03821117611fe757604052565b634e487b7160e01b600052604160045260246000fd5b604081019081106001600160401b03821117611fe757604052565b61010081019081106001600160401b03821117611fe757604052565b608081019081106001600160401b03821117611fe757604052565b90601f801991011681019081106001600160401b03821117611fe757604052565b6001600160401b038111611fe757601f01601f191660200190565b1561209257565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b156120dd57565b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881b9bdd081d985b1a59607a1b6044820152606490fd5b8181029291811591840414171561212957565b634e487b7160e01b600052601160045260246000fd5b8115612149570490565b634e487b7160e01b600052601260045260246000fd5b604d811161212957600a0a90565b9190820391821161212957565b9190820180921161212957565b8181039291600013801582851316918412161761212957565b6014549192916121e9916121da916121d0916121c6906001600160801b03831690612116565b9060801c9061213f565b93601f5490612116565b6121e38361215f565b9061213f565b8083106122b1576121fd612239918461216d565b9161223461222e612225601e5461221f6122168661215f565b6020549061217a565b90612116565b6121e38461215f565b9161215f565b612187565b6509184e72a0009081810291818305149015171561212957670de0b6b3a76400009182810292818405149015171561212957801561214957600160ff1b9180831460001983141661212957059060008212156122aa57811461212957600003905b8082116122a5575090565b905090565b509061229a565b505050600090565b9160018060a01b03809316916000938385526020601781526040918287205490811561240b57878385516122ec81611ffd565b82815201526122f9612add565b505050505091905061230c861515612425565b6009541683600c54898b52601882526064878c2054918851948593849263442c159960e01b8452600484015260248301528d60448301525afa9081156124015789916123ce575b50916123ae6123c297989994926123898861238461237b601898620186a06021540490612116565b601e5490612116565b61213f565b815190936001600160801b039186916123a491841690612116565b920151169061213f565b8181106123c657035b978352522054612471565b9091565b5050826123b7565b90508381813d83116123fa575b6123e5818361204f565b810103126123f657516123ae612353565b8880fd5b503d6123db565b85513d8b823e3d90fd5b5086955085949350505050565b51908115158203611e1d57565b1561242c57565b60405162461bcd60e51b815260206004820152601e60248201527f4d61726b65743a2065786368616e676552617465206e6f742076616c696400006044820152606490fd5b61247c821515612425565b602060018060a01b0360095416916064600c54604051948593849263442c159960e01b845260048401526024830152600060448301525afa90811561251c576000916124e9575b50906123846124d59260215490612116565b620186a06124e5601e5483612116565b0491565b906020823d8211612514575b816125026020938361204f565b810103126103085750516123846124c3565b3d91506124f5565b6040513d6000823e3d90fd5b6001600160a01b0316600081815260186020526040812054909261254b91612471565b91835260176020526040832054801561265457811561265457818110612654578281101561264a57601454612594918391610cfd916121c6906001600160801b03831690612116565b90620186a09283830292808404851490151715612636576125b992916121e39161216d565b91601b5491601c54936125cc8585612187565b80820291848212600160ff1b821416612636578183051490151715612622570581848201948512911290801582169115161761260e57508082126122a5575090565b634e487b7160e01b81526011600452602490fd5b634e487b7160e01b83526011600452602483fd5b634e487b7160e01b85526011600452602485fd5b50505050601b5490565b50505090565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316148061275b575b156126b5577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f000000000000000000000000000000000000000000000000000000000000000082527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a0815260c081018181106001600160401b03821117611fe75760405251902090565b507f0000000000000000000000000000000000000000000000000000000000000000461461268c565b1561278b57565b60405162461bcd60e51b815260206004820152601660248201527545524332303a2062616c616e636520746f6f206c6f7760501b6044820152606490fd5b156127d057565b60405162461bcd60e51b815260206004820152601660248201527545524332303a206e6f207a65726f206164647265737360501b6044820152606490fd5b51906001600160a01b0382168203611e1d57565b519060ff82168203611e1d57565b6005811015611ef757806128415750565b600181036128895760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b6044820152606490fd5b600281036128d65760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606490fd5b6003146128df57565b60405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608490fd5b9291906fa2a8918ca85bafe22016d0b997e4df60600160ff1b0383116129a85791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa1561299b5781516001600160a01b03811615612995579190565b50600190565b50604051903d90823e3d90fd5b50505050600090600390565b7fe50de2333c10a9502fcb1d8ae13a51bbf423153dfc63c2b8997665b32154afc360018060a01b038092169160009083825260036020526040822094169384825260205284604082205580a4565b909160207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259160018060a01b03809416938460005260028352604060002095169485600052825280604060002055604051908152a3565b60405190612a6682611fcc565b60006040838281528260208201520152565b60405190612a8582611ffd565b6014546001600160801b038116835260801c6020830152565b60405190612aab82611ffd565b6024546001600160801b038116835260801c6020830152565b6001600160801b03918216908216019190821161212957565b612ae5612a59565b5060006020604051612af681611ffd565b828152015260006020604051612b0b81611ffd565b8281520152604051612b1c81611fcc565b6023546001600160401b03811682526001600160401b038160401c16602083015260801c60408201528091612b4f612a78565b91612b58612a9e565b600954600e54825160405163442c159960e01b8152600481018390526001600160801b03909116602482015260006044820181905293959194919391926001600160a01b031690602081606481855afa801561251c57600090612f73575b8851612bcc92506001600160801b03169061217a565b80612f3e575060005b80612bed6001600160401b036020870151164261216d565b948515612f14575050426001600160401b031660208a8101919091528801516001600160801b031615612eca57506020670de0b6b3a7640000612c4f85612c4a8c6001600160401b038d60018060801b0390511691511690612116565b612116565b895191900496906001600160801b0390612c6e90828a16908316612ac4565b168952875160405163442c159960e01b815260048101929092526001600160801b031660248201526000604482015291829060649082905afa801561251c57600090612e96575b8751612ccb92506001600160801b03169061217a565b92612cf984612384620186a0612ce3601a548a612116565b60208c01516001600160801b0316919004612116565b6040890180519195916001600160801b038088169291612d1c9084908316612ac4565b16905260208801805190916001600160801b0391612d3c91908316612ac4565b16905280612e61575060005b60295490938482811015612ddc57612d60908361216d565b90670de0b6b3a7640000820291808304670de0b6b3a7640000149015171561212957612384612db4612dae612da06001600160401b0396612dbe9661213f565b93612c4a602d549580612116565b8361217a565b91848d5116612116565b168089526001600160401b03602c5416809110612dd85750565b8852565b909150602a54808211612dee57505050565b612df79161216d565b670de0b6b3a7640000810290808204670de0b6b3a76400001490151715612129576001600160401b0391612384612e3a612dae612da0612e4395602b549061213f565b848d5116612116565b81602c5460401c16808211612e59575b50168852565b905038612e53565b87516001600160801b0316670de0b6b3a764000081810292918084049091149015171561212957612e919161213f565b612d48565b506020813d602011612ec2575b81612eb06020938361204f565b81010312611e1d57612ccb9051612cb5565b3d9150612ea3565b9697939450509350506001600160401b038151166001600160401b03602e5416809103612f08575b509392612efd612a9e565b926000926000929190565b81526001925038612ef2565b975098505050505092505091612f28612a78565b91612f31612a9e565b9160009160009190600090565b87516001600160801b0316670de0b6b3a764000081810292918084049091149015171561212957612f6e9161213f565b612bd5565b506020813d602011612f9f575b81612f8d6020938361204f565b81010312611e1d57612bcc9051612bb6565b3d9150612f80565b3d15612fd2573d90612fb882612070565b91612fc6604051938461204f565b82523d6000602084013e565b606090565b60405190612fe482611ffd565b60038252623f3f3f60e81b6020830152565b908151811015613007570160200190565b634e487b7160e01b600052603260045260246000fd5b60ff1660ff81146121295760010190565b8051604081106130a957508051810190602081818401930312611e1d576020810151906001600160401b038211611e1d570181603f82011215611e1d57602081015161307981612070565b92613087604051948561204f565b81845260408284010111611e1d576130a6916040602085019101611e38565b90565b602092908303613197576000805b60ff81168581109081613178575b50156130d9576130d49061301d565b6130b7565b9260ff809416926130e984612070565b936130f7604051958661204f565b808552613106601f1991612070565b013687860137825b8581168781108061315b575b156131505761314b91906131456001600160f81b031961313a8388612ff6565b5116871a9188612ff6565b5361301d565b61310e565b505094505050905090565b506001600160f81b031961316f8286612ff6565b5116151561311a565b6001600160f81b0319915061318d9086612ff6565b51161515386130c5565b9150506130a6612fd756feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa26469706673582212209cb35f7a6fa2711bdb911fbb1801dbf316a9429fa6646759b4239276fd4f8da564736f6c63430008120033", + "bytecode": "0x6101408060405234620001e5576200001781620001ea565b601381526001602082017f546170696f63612053696e67756c617269747900000000000000000000000000815260206040516200005481620001ea565b8381520192603160f81b845251902091208160e052610100918183524660a0526040519160208301907f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f92838352604085015260608401524660808401523060a084015260a0835260c083019280841060018060401b03851117620001cf5760408490525190206080523060c052610120908152600580546001600160a01b0319163390811790915560007f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a362013880601b5562015f90601c55612710601d55612ee06020557f0bd4060688a1800ae986e4840aebc924bb40b5bf44de4583df2257220b54b77c6027557f7d1dc38e60930664f8cbf495da6556ca091d2f92d6550877750c049864b182306028556161a860295560326030556132a0928362000207843960805183612745015260a05183612810015260c0518361270f015260e05183612794015251826127ba015251816127710152f35b634e487b7160e01b600052604160045260246000fd5b600080fd5b604081019081106001600160401b03821117620001cf5760405256fe608080604052600436101561001357600080fd5b600090813560e01c908162a02a2014611e715750806302ce728f14611ce957806306fdde0314611c32578063078dfbe714611b2f578063095ea7b314611b085780630c4e84f0146119f057806318160ddd146119cf5780631c9e379b146119965780631da8bf10146118d657806323b872dd14611739578063313ce567146116a7578063331960ff1461168957806334d441d01461166b5780633644e5151461165057806337b6b7b91461163257806338d52e0f146116095780633ba0b9a9146115eb5780633f741adb146115c657806340626d8b146115a857806344de240a1461158a578063473e3ce71461156c57806348e4163e146115335780634d7f2a34146115155780634e71e0c814611467578063529898f21461144a57806352f353eb1461142357806355140232146113fc57806355c2ab94146113d257806357935462146113b45780635dfe04e8146113555780636c3d8b8f1461132c57806370a08231146112f357806372778547146112bb57806374645ff3146112905780637dc0d1d0146112675780637ecebe001461122e5780637fa0b84e146111fc578063821226e8146111de5780638285ef40146111ac5780638c5d0ed31461118e5780638da5cb5b14611165578063910dd7c814610f4c578063959916dc14610f2e57806395d89b4114610e7457806399a9702814610e445780639c5d719214610e265780639e15e89f14610deb578063a9059cbb14610d08578063b0e21e8a14610cea578063b27c0e7414610caf578063bb4cfe3b14610c91578063ce8849ed14610c68578063d3fb2a38146107d4578063d505accf1461062f578063d8dfeb4514610606578063da863f0e146105dd578063dd62ed3e14610592578063de40657714610569578063e0996cb61461054b578063e30c397814610522578063ea64dd5614610504578063eec0f42e146104e6578063ef2b234a1461046f578063f42760b714610451578063f8ba4cff14610357578063f9557ccb146103215763ffe04c661461030157600080fd5b3461031e578060031936011261031e576020602a54604051908152f35b80fd5b503461031e578060031936011261031e57602554604080516001600160801b038316815260809290921c602083015290f35b0390f35b503461031e578060031936011261031e5760206040610374612b8f565b9397959390929015610418575050506001600160401b03602f541686807f33af5ce86e8438eff54589f85332916444457dfa8685493fbd579b809097026b868851838152a45b6001600160401b038151166001600160401b03851b84830151861b169160018060801b0319958691015160801b1691171760245560018060801b039083838383511692015160801b161760145583511692015160801b161760255580f35b7f33af5ce86e8438eff54589f85332916444457dfa8685493fbd579b809097026b866001600160401b03865116948951908152a46103ba565b503461031e578060031936011261031e576020602b54604051908152f35b503461031e57602036600319011261031e576004356001600160a01b03818116918290036104e2576104a68160055416331461213d565b816021549182167ffb4fd7114609dd603b57adbc2082205bfbbcabf9265c4b437b472f5c592b8cd78580a36001600160a01b0319161760215580f35b8280fd5b503461031e578060031936011261031e576020600c54604051908152f35b503461031e578060031936011261031e576020601f54604051908152f35b503461031e578060031936011261031e576006546040516001600160a01b039091168152602090f35b503461031e578060031936011261031e576020601d54604051908152f35b503461031e578060031936011261031e576009546040516001600160a01b039091168152602090f35b503461031e57604036600319011261031e5760406020916105b1611eb9565b6105b9611ed4565b6001600160a01b039182168352600285528383209116825283522054604051908152f35b503461031e578060031936011261031e576021546040516001600160a01b039091168152602090f35b503461031e578060031936011261031e57600b546040516001600160a01b039091168152602090f35b503461031e5761063e36611f41565b9083959495421161078f576001600160a01b03878116808a52600460205260408a208054919692959290600019831461077b57826107249694928d92600161071c98960190556040519160208301937f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e266855260408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e081526106e0816120ca565b5190206106eb61270c565b9060405190602082019261190160f01b84526022830152604282015260428152610714816120e6565b5190206129e1565b9190916128e2565b16036107365761073392612ab4565b80f35b60405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152606490fd5b634e487b7160e01b8c52601160045260248cfd5b60405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b503461031e5761016036600319011261031e576001600160a01b03600435818116908190036104e2576024916001600160401b038335818111610c645736602382011215610c64578060040135918211610c645736858383010111610c645760443593838516809503610c60576108508460055416331461213d565b80610c22575b508482610aa4575b50505081610a64575b505060643580610a4c575b5060843580610a34575b5060a43580610a1d575b5060c435806109f9575b5060e435806109d5575b5061010435806109a4575b506101243580610931575b506101443590816108bf578280f35b601e5482106108d25750601f5538808280f35b60849060326040519162461bcd60e51b8352602060048401528201527f4d61726b65743a206c69717569646174696f6e436f6c6c61746572616c697a616044820152711d1a5bdb94985d19481d1bdbc81cdb585b1b60721b6064820152fd5b610940620186a0821115612188565b601f54811161095257601e55386108b0565b60405162461bcd60e51b8152602060048201526025818401527f4d61726b65743a20636f6c6c61746572616c697a6174696f6e5261746520746f6044820152646f2062696760d81b6064820152608490fd5b806016547fae6e0ab3b95f0a53ff9660a390ccedcbbf1f2355dce974a9841af106fddcfaba8580a3601655386108a5565b6109e3620186a08210612188565b6109f0601b548211612188565b601c553861089a565b610a07620186a08210612188565b610a14601c548210612188565b601b5538610890565b610a2b620186a08210612188565b601d5538610886565b610a43620186a0821115612188565b601a553861087c565b610a5b620186a0821115612188565b60195538610872565b816008549182167f5a62d22209e370e38eea92cfddcd228e656e6ec139243392a760a7769f5877fd8680a36001600160a01b031916176008553880610867565b8291610ab1601054611fbf565b601f8111610bb1575b508790601f8411600114610b1f578893610b12575b5050508160011b916000199060031b1c1916176010555b7fa6f004921c944d4b8bf6e38462b00f36a58d62495d56b51f571ab78f732c98158480a138808461085e565b0101359050843880610acf565b60108952601f19841694507f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae67292509087908960205b878210610b925750508460019610610b76575b50505050811b01601055610ae6565b60001960f88660031b161c199201013516905538808681610b67565b8285019093013585556001949094019389929182019190810190610b54565b6010895290925090507f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae672601f840160051c810160208510610c1b575b91849391601f8994920160051c01905b818110610c0a5750610aba565b898155859450889350600101610bfd565b5080610bed565b600f80546001600160a01b0319169190911790557f0b2d6eb667d0522c3eb86e4288afecae6c11591ffd1345d4d12407e0598bca9b8680a138610856565b8680fd5b8580fd5b503461031e578060031936011261031e576008546040516001600160a01b039091168152602090f35b503461031e578060031936011261031e576020601e54604051908152f35b503461031e578060031936011261031e576060602454604051906001600160401b0380821683528160401c16602083015260801c6040820152f35b503461031e578060031936011261031e576020601a54604051908152f35b503461031e57604036600319011261031e57610d22611eb9565b60243580928115801590610dd9575b610d69575b50506040519182526001600160a01b031690339060008051602061324b83398151915290602090a3602060405160018152f35b33815260016020526040812054610d8283821015612836565b6001600160a01b0384169033829003610d9d575b5050610d36565b604093610db491610daf84151561287b565b61221f565b338352600160205283832055815220610dce83825461222c565b905581388080610d96565b50336001600160a01b03841614610d31565b503461031e57604036600319011261031e576060610e13610e0a611eb9565b6024359061236b565b9060405192835260208301526040820152f35b503461031e578060031936011261031e576020602c54604051908152f35b503461031e57604036600319011261031e576020610e6c610e63611eb9565b602435906125da565b604051908152f35b503461031e578060031936011261031e57808060018060a01b03600b541660405160208101906395d89b4160e01b825260048152610eb1816120af565b51915afa610ebd61304f565b915015610f1d57610ed0610353916130d6565b610f096023604051809362746d2d60e81b6020830152610ef98151809260208686019101611eea565b8101036003810184520182612101565b604051918291602083526020830190611f0d565b50610353610f2961307f565b610ed0565b503461031e578060031936011261031e576020603054604051908152f35b503461031e57604036600319011261031e576004356001600160401b038111611161573660238201121561116157806004013582610f8982612122565b92610f976040519485612101565b828452602084019236602482840101116104e2578060246020930185378401015260243561ffff8116810361115d5761010091828480518101031261115957610fdf906124ca565b610feb604085016128c0565b91610ff8606086016128c0565b9460808101519460a08201519261101160c084016128d4565b9160e08401519301519380421161078f578515611132577f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e266915b6001600160a01b0388168b52600460205260408b2080549190600019831461111e579161ffff6110db9896949261071c98969460018401905560405194602086015216604084015260018060a01b038a16606084015260018060a01b038c1660808401528a60a084015260c083015260e082015260e081526110cc816120ca565b602081519101206106eb61270c565b6001600160a01b03838116911603610736571561110857610733926001600160a01b039081169116612ab4565b610733926001600160a01b039081169116612a66565b634e487b7160e01b8d52601160045260248dfd5b7f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d69161104b565b8480fd5b8380fd5b5080fd5b503461031e578060031936011261031e576005546040516001600160a01b039091168152602090f35b503461031e578060031936011261031e576020601b54604051908152f35b503461031e578060031936011261031e57601454604080516001600160801b038316815260809290921c602083015290f35b503461031e578060031936011261031e576020602e54604051908152f35b503461031e57604036600319011261031e57611223611219611eb9565b6024359033612a66565b602060405160018152f35b503461031e57602036600319011261031e576020906040906001600160a01b03611256611eb9565b168152600483522054604051908152f35b503461031e578060031936011261031e57600f546040516001600160a01b039091168152602090f35b503461031e578060031936011261031e57610353604051610f09816112b481611ff9565b0382612101565b503461031e57602036600319011261031e5760043590600982101561031e57602060ff6112e784611f90565b54166040519015158152f35b503461031e57602036600319011261031e576020906040906001600160a01b0361131b611eb9565b168152600183522054604051908152f35b503461031e578060031936011261031e57600a546040516001600160a01b039091168152602090f35b503461031e578060031936011261031e5761136e612b0b565b506080611379612b8f565b509350505050604051916001600160401b0380825116845260208201511660208401526040600180861b039101511660408301526060820152f35b503461031e578060031936011261031e576020601c54604051908152f35b503461031e578060031936011261031e5760206001600160401b03602d5460401c16604051908152f35b503461031e578060031936011261031e5760206001600160401b03602d5416604051908152f35b503461031e578060031936011261031e5760206001600160401b03602f5416604051908152f35b503461031e578060031936011261031e5760208054604051908152f35b503461031e578060031936011261031e576006546001600160a01b0390818116338190036114d157806005549384167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08680a36001600160a01b0319928316176005551660065580f35b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b503461031e578060031936011261031e576020602954604051908152f35b503461031e57602036600319011261031e576020906040906001600160a01b0361155b611eb9565b168152601783522054604051908152f35b503461031e578060031936011261031e576020601554604051908152f35b503461031e578060031936011261031e576020600e54604051908152f35b503461031e578060031936011261031e576020601654604051908152f35b503461031e57606036600319011261031e576020610e6c604435602435600435612252565b503461031e578060031936011261031e576020601154604051908152f35b503461031e578060031936011261031e57600d546040516001600160a01b039091168152602090f35b503461031e578060031936011261031e576020601254604051908152f35b503461031e578060031936011261031e576020610e6c61270c565b503461031e578060031936011261031e576020601954604051908152f35b503461031e578060031936011261031e576020601354604051908152f35b503461031e578060031936011261031e57808060018060a01b03600d5416604051602081019063313ce56760e01b8252600481526116e4816120af565b51915afa906116f161304f565b918061172e575b156117235760208280518101031261031e575061171860208092016128d4565b60ff60405191168152f35b505060206012611718565b5060208251146116f8565b503461031e57606036600319011261031e57611753611eb9565b9061175c611ed4565b604435918261179a575b506040519182526001600160a01b0390811692169060008051602061324b83398151915290602090a3602060405160018152f35b6001600160a01b038481168083526001602090815260408420549286906117c382861015612836565b8616938484036117d8575b5050505050611766565b838652600283526040808720338852845286205460018101611842575b50926001602096936118208794604097610daf60008051602061324b8339815191529c9a151561287b565b928552528383205581522061183685825461222c565b905591388085816117ce565b9091811061189657926001602096936118208a60008051602061324b8339815191529a98956118738260409a61221f565b86895260028552898920338a5285528989205594975094979950509396506117f5565b60405162461bcd60e51b815260048101849052601860248201527745524332303a20616c6c6f77616e636520746f6f206c6f7760401b6044820152606490fd5b503461031e576118e536611f41565b9083959495421161078f576001600160a01b03878116808a52600460205260408a208054919692959290600019831461077b57826119879694928d92600161071c98960190556040519160208301937f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d6855260408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e081526106e0816120ca565b16036107365761073392612a66565b503461031e57602036600319011261031e576020906040906001600160a01b036119be611eb9565b168152601883522054604051908152f35b503461031e578060031936011261031e57602060255460801c604051908152f35b503461031e57604036600319011261031e57600435600981101561116157611a16611f32565b6008549091906001600160a01b03163303611acc5760ff611a3682611f90565b54161515911515918214611a9257808260ff611a54611a8294611f90565b54161515827feeec81de25875ce1725479bb76f720a8defdb43dea041919ae37bb4aae9847c08780a4611f90565b9060ff8019835416911617905580f35b60405162461bcd60e51b81526020600482015260126024820152714d61726b65743a2073616d6520737461746560701b6044820152606490fd5b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881d5b985d5d1a1bdc9a5e995960621b6044820152606490fd5b503461031e57604036600319011261031e57611223611b25611eb9565b6024359033612ab4565b503461031e57606036600319011261031e57611b49611eb9565b611b51611f32565b60443590811515820361115d5760018060a01b03928391611b778360055416331461213d565b15611c1b571690811590811591611c13575b5015611bd657806005549283167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08580a36001600160a01b03199182161760055560068054909116905580f35b60405162461bcd60e51b81526020600482015260156024820152744f776e61626c653a207a65726f206164647265737360581b6044820152606490fd5b905038611b89565b9150501660018060a01b0319600654161760065580f35b503461031e578060031936011261031e57808060018060a01b03600b541660405160208101906306fdde0360e01b825260048152611c6f816120af565b51915afa611c7b61304f565b915015611cd857611c8e610353916130d6565b610f096034604051809373546170696f63612053696e67756c61726974792d60601b6020830152611cc88151809260208686019101611eea565b8101036014810184520182612101565b50610353611ce461307f565b611c8e565b503461031e578060031936011261031e57600f546040805163d6d7d52560e01b8152602060048201529182906001600160a01b0316818581611d2d60248201611ff9565b03925af18015611e665782918391611e26575b508115611dc7578015611d8b57807f9f9192b5edb17356c524e08d9e025c8e2f6307e6ea52fb7968faa3081f51c3c86040948260115580a25b42601355825191151582526020820152f35b60405162461bcd60e51b81526020600482015260146024820152734d61726b65743a20696e76616c6964207261746560601b6044820152606490fd5b509050611dd96013546012549061222c565b4211611dea57604090601154611d79565b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881c985d19481d1bdbc81bdb1960621b6044820152606490fd5b9150506040813d604011611e5e575b81611e4260409383612101565b81010312611161576020611e55826124ca565b91015138611d40565b3d9150611e35565b6040513d84823e3d90fd5b905034611161576040366003190112611161576040602092611e91611eb9565b611e99611ed4565b6001600160a01b0391821683526003865283832091168252845220548152f35b600435906001600160a01b0382168203611ecf57565b600080fd5b602435906001600160a01b0382168203611ecf57565b60005b838110611efd5750506000910152565b8181015183820152602001611eed565b90602091611f2681518092818552858086019101611eea565b601f01601f1916010190565b602435908115158203611ecf57565b60e0906003190112611ecf576001600160a01b03906004358281168103611ecf57916024359081168103611ecf5790604435906064359060843560ff81168103611ecf579060a4359060c43590565b6009811015611fa9576000526007602052604060002090565b634e487b7160e01b600052602160045260246000fd5b90600182811c92168015611fef575b6020831014611fd957565b634e487b7160e01b600052602260045260246000fd5b91607f1691611fce565b6010546000929161200982611fbf565b908181526001928381169081600014612063575060011461202957505050565b9092935060106000526020928360002092846000945b83861061204f5750505050010190565b80548587018301529401938590820161203f565b91935050602093945060ff191683830152151560051b010190565b606081019081106001600160401b0382111761209957604052565b634e487b7160e01b600052604160045260246000fd5b604081019081106001600160401b0382111761209957604052565b61010081019081106001600160401b0382111761209957604052565b608081019081106001600160401b0382111761209957604052565b90601f801991011681019081106001600160401b0382111761209957604052565b6001600160401b03811161209957601f01601f191660200190565b1561214457565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b1561218f57565b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881b9bdd081d985b1a59607a1b6044820152606490fd5b818102929181159184041417156121db57565b634e487b7160e01b600052601160045260246000fd5b81156121fb570490565b634e487b7160e01b600052601260045260246000fd5b604d81116121db57600a0a90565b919082039182116121db57565b919082018092116121db57565b818103929160001380158285131691841216176121db57565b60145491929161229b9161228c9161228291612278906001600160801b038316906121c8565b9060801c906121f1565b93601f54906121c8565b61229583612211565b906121f1565b808310612363576122af6122eb918461221f565b916122e66122e06122d7601e546122d16122c886612211565b6020549061222c565b906121c8565b61229584612211565b91612211565b612239565b6509184e72a000908181029181830514901517156121db57670de0b6b3a7640000918281029281840514901517156121db5780156121fb57600160ff1b918083146000198314166121db570590600082121561235c5781146121db57600003905b808211612357575090565b905090565b509061234c565b505050600090565b9160018060a01b0380931691600093838552602060178152604091828720549081156124bd578783855161239e816120af565b82815201526123ab612b8f565b50505050509190506123be8615156124d7565b6009541683600c54898b52601882526064878c2054918851948593849263442c159960e01b8452600484015260248301528d60448301525afa9081156124b3578991612480575b5091612460612474979899949261243b8861243661242d601898620186a060225404906121c8565b601e54906121c8565b6121f1565b815190936001600160801b03918691612456918416906121c8565b92015116906121f1565b81811061247857035b978352522054612523565b9091565b505082612469565b90508381813d83116124ac575b6124978183612101565b810103126124a85751612460612405565b8880fd5b503d61248d565b85513d8b823e3d90fd5b5086955085949350505050565b51908115158203611ecf57565b156124de57565b60405162461bcd60e51b815260206004820152601e60248201527f4d61726b65743a2065786368616e676552617465206e6f742076616c696400006044820152606490fd5b61252e8215156124d7565b602060018060a01b0360095416916064600c54604051948593849263442c159960e01b845260048401526024830152600060448301525afa9081156125ce5760009161259b575b509061243661258792602254906121c8565b620186a0612597601e54836121c8565b0491565b906020823d82116125c6575b816125b460209383612101565b8101031261031e575051612436612575565b3d91506125a7565b6040513d6000823e3d90fd5b6001600160a01b031660008181526018602052604081205490926125fd91612523565b9183526017602052604083205480156127065781156127065781811061270657828110156126fc57601454612646918391610daf91612278906001600160801b038316906121c8565b90620186a092838302928084048514901517156126e85761266b92916122959161221f565b91601b5491601c549361267e8585612239565b80820291848212600160ff1b8214166126e85781830514901517156126d457058184820194851291129080158216911516176126c05750808212612357575090565b634e487b7160e01b81526011600452602490fd5b634e487b7160e01b83526011600452602483fd5b634e487b7160e01b85526011600452602485fd5b50505050601b5490565b50505090565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316148061280d575b15612767577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f000000000000000000000000000000000000000000000000000000000000000082527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a0815260c081018181106001600160401b038211176120995760405251902090565b507f0000000000000000000000000000000000000000000000000000000000000000461461273e565b1561283d57565b60405162461bcd60e51b815260206004820152601660248201527545524332303a2062616c616e636520746f6f206c6f7760501b6044820152606490fd5b1561288257565b60405162461bcd60e51b815260206004820152601660248201527545524332303a206e6f207a65726f206164647265737360501b6044820152606490fd5b51906001600160a01b0382168203611ecf57565b519060ff82168203611ecf57565b6005811015611fa957806128f35750565b6001810361293b5760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b6044820152606490fd5b600281036129885760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606490fd5b60031461299157565b60405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608490fd5b9291906fa2a8918ca85bafe22016d0b997e4df60600160ff1b038311612a5a5791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa15612a4d5781516001600160a01b03811615612a47579190565b50600190565b50604051903d90823e3d90fd5b50505050600090600390565b7fe50de2333c10a9502fcb1d8ae13a51bbf423153dfc63c2b8997665b32154afc360018060a01b038092169160009083825260036020526040822094169384825260205284604082205580a4565b909160207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259160018060a01b03809416938460005260028352604060002095169485600052825280604060002055604051908152a3565b60405190612b188261207e565b60006040838281528260208201520152565b60405190612b37826120af565b6014546001600160801b038116835260801c6020830152565b60405190612b5d826120af565b6025546001600160801b038116835260801c6020830152565b6001600160801b0391821690821601919082116121db57565b612b97612b0b565b5060006020604051612ba8816120af565b828152015260006020604051612bbd816120af565b828152015260405190612bcf8261207e565b602454916001600160401b038316815260208101926001600160401b038160401c16845260801c60408201528092612c05612b2a565b92612c0e612b50565b92600060018060a01b0360095416600e549460018060801b038751166040519063442c159960e01b8252876004830152602482015260006044820152602081606481865afa80156125ce5760009061301b575b8951612c7792506001600160801b03169061222c565b80612fe6575060005b612c956001600160401b03829351164261221f565b948515612fbc575050426001600160401b031660208a8101919091528801516001600160801b031615612f7257506020670de0b6b3a7640000612cf785612cf28c6001600160401b038d60018060801b03905116915116906121c8565b6121c8565b895191900496906001600160801b0390612d1690828a16908316612b76565b168952875160405163442c159960e01b815260048101929092526001600160801b031660248201526000604482015291829060649082905afa80156125ce57600090612f3e575b8751612d7392506001600160801b03169061222c565b92612da184612436620186a0612d8b601a548a6121c8565b60208c01516001600160801b03169190046121c8565b6040890180519195916001600160801b038088169291612dc49084908316612b76565b16905260208801805190916001600160801b0391612de491908316612b76565b16905280612f09575060005b602a5490938482811015612e8457612e08908361221f565b90670de0b6b3a7640000820291808304670de0b6b3a764000014901517156121db57612436612e5c612e56612e486001600160401b0396612e66966121f1565b93612cf2602e5495806121c8565b8361222c565b91848d51166121c8565b168089526001600160401b03602d5416809110612e805750565b8852565b909150602b54808211612e9657505050565b612e9f9161221f565b670de0b6b3a7640000810290808204670de0b6b3a764000014901517156121db576001600160401b0391612436612ee2612e56612e48612eeb95602c54906121f1565b848d51166121c8565b81602d5460401c16808211612f01575b50168852565b905038612efb565b87516001600160801b0316670de0b6b3a76400008181029291808404909114901517156121db57612f39916121f1565b612df0565b506020813d602011612f6a575b81612f5860209383612101565b81010312611ecf57612d739051612d5d565b3d9150612f4b565b9697939450509350506001600160401b038151166001600160401b03602f5416809103612fb0575b509392612fa5612b50565b926000926000929190565b81526001925038612f9a565b975098505050505092505091612fd0612b2a565b91612fd9612b50565b9160009160009190600090565b88516001600160801b0316670de0b6b3a76400008181029291808404909114901517156121db57613016916121f1565b612c80565b506020813d602011613047575b8161303560209383612101565b81010312611ecf57612c779051612c61565b3d9150613028565b3d1561307a573d9061306082612122565b9161306e6040519384612101565b82523d6000602084013e565b606090565b6040519061308c826120af565b60038252623f3f3f60e81b6020830152565b9081518110156130af570160200190565b634e487b7160e01b600052603260045260246000fd5b60ff1660ff81146121db5760010190565b80516040811061315157508051810190602081818401930312611ecf576020810151906001600160401b038211611ecf570181603f82011215611ecf57602081015161312181612122565b9261312f6040519485612101565b81845260408284010111611ecf5761314e916040602085019101611eea565b90565b60209290830361323f576000805b60ff81168581109081613220575b50156131815761317c906130c5565b61315f565b9260ff8094169261319184612122565b9361319f6040519586612101565b8085526131ae601f1991612122565b013687860137825b85811687811080613203575b156131f8576131f391906131ed6001600160f81b03196131e2838861309e565b5116871a918861309e565b536130c5565b6131b6565b505094505050905090565b506001600160f81b0319613217828661309e565b511615156131c2565b6001600160f81b03199150613235908661309e565b511615153861316d565b91505061314e61307f56feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220b5c103173ba002e8213331772550d18239789a543d3041edd70a608b0c43c56b64736f6c63430008120033", + "deployedBytecode": "0x608080604052600436101561001357600080fd5b600090813560e01c908162a02a2014611e715750806302ce728f14611ce957806306fdde0314611c32578063078dfbe714611b2f578063095ea7b314611b085780630c4e84f0146119f057806318160ddd146119cf5780631c9e379b146119965780631da8bf10146118d657806323b872dd14611739578063313ce567146116a7578063331960ff1461168957806334d441d01461166b5780633644e5151461165057806337b6b7b91461163257806338d52e0f146116095780633ba0b9a9146115eb5780633f741adb146115c657806340626d8b146115a857806344de240a1461158a578063473e3ce71461156c57806348e4163e146115335780634d7f2a34146115155780634e71e0c814611467578063529898f21461144a57806352f353eb1461142357806355140232146113fc57806355c2ab94146113d257806357935462146113b45780635dfe04e8146113555780636c3d8b8f1461132c57806370a08231146112f357806372778547146112bb57806374645ff3146112905780637dc0d1d0146112675780637ecebe001461122e5780637fa0b84e146111fc578063821226e8146111de5780638285ef40146111ac5780638c5d0ed31461118e5780638da5cb5b14611165578063910dd7c814610f4c578063959916dc14610f2e57806395d89b4114610e7457806399a9702814610e445780639c5d719214610e265780639e15e89f14610deb578063a9059cbb14610d08578063b0e21e8a14610cea578063b27c0e7414610caf578063bb4cfe3b14610c91578063ce8849ed14610c68578063d3fb2a38146107d4578063d505accf1461062f578063d8dfeb4514610606578063da863f0e146105dd578063dd62ed3e14610592578063de40657714610569578063e0996cb61461054b578063e30c397814610522578063ea64dd5614610504578063eec0f42e146104e6578063ef2b234a1461046f578063f42760b714610451578063f8ba4cff14610357578063f9557ccb146103215763ffe04c661461030157600080fd5b3461031e578060031936011261031e576020602a54604051908152f35b80fd5b503461031e578060031936011261031e57602554604080516001600160801b038316815260809290921c602083015290f35b0390f35b503461031e578060031936011261031e5760206040610374612b8f565b9397959390929015610418575050506001600160401b03602f541686807f33af5ce86e8438eff54589f85332916444457dfa8685493fbd579b809097026b868851838152a45b6001600160401b038151166001600160401b03851b84830151861b169160018060801b0319958691015160801b1691171760245560018060801b039083838383511692015160801b161760145583511692015160801b161760255580f35b7f33af5ce86e8438eff54589f85332916444457dfa8685493fbd579b809097026b866001600160401b03865116948951908152a46103ba565b503461031e578060031936011261031e576020602b54604051908152f35b503461031e57602036600319011261031e576004356001600160a01b03818116918290036104e2576104a68160055416331461213d565b816021549182167ffb4fd7114609dd603b57adbc2082205bfbbcabf9265c4b437b472f5c592b8cd78580a36001600160a01b0319161760215580f35b8280fd5b503461031e578060031936011261031e576020600c54604051908152f35b503461031e578060031936011261031e576020601f54604051908152f35b503461031e578060031936011261031e576006546040516001600160a01b039091168152602090f35b503461031e578060031936011261031e576020601d54604051908152f35b503461031e578060031936011261031e576009546040516001600160a01b039091168152602090f35b503461031e57604036600319011261031e5760406020916105b1611eb9565b6105b9611ed4565b6001600160a01b039182168352600285528383209116825283522054604051908152f35b503461031e578060031936011261031e576021546040516001600160a01b039091168152602090f35b503461031e578060031936011261031e57600b546040516001600160a01b039091168152602090f35b503461031e5761063e36611f41565b9083959495421161078f576001600160a01b03878116808a52600460205260408a208054919692959290600019831461077b57826107249694928d92600161071c98960190556040519160208301937f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e266855260408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e081526106e0816120ca565b5190206106eb61270c565b9060405190602082019261190160f01b84526022830152604282015260428152610714816120e6565b5190206129e1565b9190916128e2565b16036107365761073392612ab4565b80f35b60405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152606490fd5b634e487b7160e01b8c52601160045260248cfd5b60405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b503461031e5761016036600319011261031e576001600160a01b03600435818116908190036104e2576024916001600160401b038335818111610c645736602382011215610c64578060040135918211610c645736858383010111610c645760443593838516809503610c60576108508460055416331461213d565b80610c22575b508482610aa4575b50505081610a64575b505060643580610a4c575b5060843580610a34575b5060a43580610a1d575b5060c435806109f9575b5060e435806109d5575b5061010435806109a4575b506101243580610931575b506101443590816108bf578280f35b601e5482106108d25750601f5538808280f35b60849060326040519162461bcd60e51b8352602060048401528201527f4d61726b65743a206c69717569646174696f6e436f6c6c61746572616c697a616044820152711d1a5bdb94985d19481d1bdbc81cdb585b1b60721b6064820152fd5b610940620186a0821115612188565b601f54811161095257601e55386108b0565b60405162461bcd60e51b8152602060048201526025818401527f4d61726b65743a20636f6c6c61746572616c697a6174696f6e5261746520746f6044820152646f2062696760d81b6064820152608490fd5b806016547fae6e0ab3b95f0a53ff9660a390ccedcbbf1f2355dce974a9841af106fddcfaba8580a3601655386108a5565b6109e3620186a08210612188565b6109f0601b548211612188565b601c553861089a565b610a07620186a08210612188565b610a14601c548210612188565b601b5538610890565b610a2b620186a08210612188565b601d5538610886565b610a43620186a0821115612188565b601a553861087c565b610a5b620186a0821115612188565b60195538610872565b816008549182167f5a62d22209e370e38eea92cfddcd228e656e6ec139243392a760a7769f5877fd8680a36001600160a01b031916176008553880610867565b8291610ab1601054611fbf565b601f8111610bb1575b508790601f8411600114610b1f578893610b12575b5050508160011b916000199060031b1c1916176010555b7fa6f004921c944d4b8bf6e38462b00f36a58d62495d56b51f571ab78f732c98158480a138808461085e565b0101359050843880610acf565b60108952601f19841694507f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae67292509087908960205b878210610b925750508460019610610b76575b50505050811b01601055610ae6565b60001960f88660031b161c199201013516905538808681610b67565b8285019093013585556001949094019389929182019190810190610b54565b6010895290925090507f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae672601f840160051c810160208510610c1b575b91849391601f8994920160051c01905b818110610c0a5750610aba565b898155859450889350600101610bfd565b5080610bed565b600f80546001600160a01b0319169190911790557f0b2d6eb667d0522c3eb86e4288afecae6c11591ffd1345d4d12407e0598bca9b8680a138610856565b8680fd5b8580fd5b503461031e578060031936011261031e576008546040516001600160a01b039091168152602090f35b503461031e578060031936011261031e576020601e54604051908152f35b503461031e578060031936011261031e576060602454604051906001600160401b0380821683528160401c16602083015260801c6040820152f35b503461031e578060031936011261031e576020601a54604051908152f35b503461031e57604036600319011261031e57610d22611eb9565b60243580928115801590610dd9575b610d69575b50506040519182526001600160a01b031690339060008051602061324b83398151915290602090a3602060405160018152f35b33815260016020526040812054610d8283821015612836565b6001600160a01b0384169033829003610d9d575b5050610d36565b604093610db491610daf84151561287b565b61221f565b338352600160205283832055815220610dce83825461222c565b905581388080610d96565b50336001600160a01b03841614610d31565b503461031e57604036600319011261031e576060610e13610e0a611eb9565b6024359061236b565b9060405192835260208301526040820152f35b503461031e578060031936011261031e576020602c54604051908152f35b503461031e57604036600319011261031e576020610e6c610e63611eb9565b602435906125da565b604051908152f35b503461031e578060031936011261031e57808060018060a01b03600b541660405160208101906395d89b4160e01b825260048152610eb1816120af565b51915afa610ebd61304f565b915015610f1d57610ed0610353916130d6565b610f096023604051809362746d2d60e81b6020830152610ef98151809260208686019101611eea565b8101036003810184520182612101565b604051918291602083526020830190611f0d565b50610353610f2961307f565b610ed0565b503461031e578060031936011261031e576020603054604051908152f35b503461031e57604036600319011261031e576004356001600160401b038111611161573660238201121561116157806004013582610f8982612122565b92610f976040519485612101565b828452602084019236602482840101116104e2578060246020930185378401015260243561ffff8116810361115d5761010091828480518101031261115957610fdf906124ca565b610feb604085016128c0565b91610ff8606086016128c0565b9460808101519460a08201519261101160c084016128d4565b9160e08401519301519380421161078f578515611132577f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e266915b6001600160a01b0388168b52600460205260408b2080549190600019831461111e579161ffff6110db9896949261071c98969460018401905560405194602086015216604084015260018060a01b038a16606084015260018060a01b038c1660808401528a60a084015260c083015260e082015260e081526110cc816120ca565b602081519101206106eb61270c565b6001600160a01b03838116911603610736571561110857610733926001600160a01b039081169116612ab4565b610733926001600160a01b039081169116612a66565b634e487b7160e01b8d52601160045260248dfd5b7f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d69161104b565b8480fd5b8380fd5b5080fd5b503461031e578060031936011261031e576005546040516001600160a01b039091168152602090f35b503461031e578060031936011261031e576020601b54604051908152f35b503461031e578060031936011261031e57601454604080516001600160801b038316815260809290921c602083015290f35b503461031e578060031936011261031e576020602e54604051908152f35b503461031e57604036600319011261031e57611223611219611eb9565b6024359033612a66565b602060405160018152f35b503461031e57602036600319011261031e576020906040906001600160a01b03611256611eb9565b168152600483522054604051908152f35b503461031e578060031936011261031e57600f546040516001600160a01b039091168152602090f35b503461031e578060031936011261031e57610353604051610f09816112b481611ff9565b0382612101565b503461031e57602036600319011261031e5760043590600982101561031e57602060ff6112e784611f90565b54166040519015158152f35b503461031e57602036600319011261031e576020906040906001600160a01b0361131b611eb9565b168152600183522054604051908152f35b503461031e578060031936011261031e57600a546040516001600160a01b039091168152602090f35b503461031e578060031936011261031e5761136e612b0b565b506080611379612b8f565b509350505050604051916001600160401b0380825116845260208201511660208401526040600180861b039101511660408301526060820152f35b503461031e578060031936011261031e576020601c54604051908152f35b503461031e578060031936011261031e5760206001600160401b03602d5460401c16604051908152f35b503461031e578060031936011261031e5760206001600160401b03602d5416604051908152f35b503461031e578060031936011261031e5760206001600160401b03602f5416604051908152f35b503461031e578060031936011261031e5760208054604051908152f35b503461031e578060031936011261031e576006546001600160a01b0390818116338190036114d157806005549384167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08680a36001600160a01b0319928316176005551660065580f35b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b503461031e578060031936011261031e576020602954604051908152f35b503461031e57602036600319011261031e576020906040906001600160a01b0361155b611eb9565b168152601783522054604051908152f35b503461031e578060031936011261031e576020601554604051908152f35b503461031e578060031936011261031e576020600e54604051908152f35b503461031e578060031936011261031e576020601654604051908152f35b503461031e57606036600319011261031e576020610e6c604435602435600435612252565b503461031e578060031936011261031e576020601154604051908152f35b503461031e578060031936011261031e57600d546040516001600160a01b039091168152602090f35b503461031e578060031936011261031e576020601254604051908152f35b503461031e578060031936011261031e576020610e6c61270c565b503461031e578060031936011261031e576020601954604051908152f35b503461031e578060031936011261031e576020601354604051908152f35b503461031e578060031936011261031e57808060018060a01b03600d5416604051602081019063313ce56760e01b8252600481526116e4816120af565b51915afa906116f161304f565b918061172e575b156117235760208280518101031261031e575061171860208092016128d4565b60ff60405191168152f35b505060206012611718565b5060208251146116f8565b503461031e57606036600319011261031e57611753611eb9565b9061175c611ed4565b604435918261179a575b506040519182526001600160a01b0390811692169060008051602061324b83398151915290602090a3602060405160018152f35b6001600160a01b038481168083526001602090815260408420549286906117c382861015612836565b8616938484036117d8575b5050505050611766565b838652600283526040808720338852845286205460018101611842575b50926001602096936118208794604097610daf60008051602061324b8339815191529c9a151561287b565b928552528383205581522061183685825461222c565b905591388085816117ce565b9091811061189657926001602096936118208a60008051602061324b8339815191529a98956118738260409a61221f565b86895260028552898920338a5285528989205594975094979950509396506117f5565b60405162461bcd60e51b815260048101849052601860248201527745524332303a20616c6c6f77616e636520746f6f206c6f7760401b6044820152606490fd5b503461031e576118e536611f41565b9083959495421161078f576001600160a01b03878116808a52600460205260408a208054919692959290600019831461077b57826119879694928d92600161071c98960190556040519160208301937f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d6855260408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e081526106e0816120ca565b16036107365761073392612a66565b503461031e57602036600319011261031e576020906040906001600160a01b036119be611eb9565b168152601883522054604051908152f35b503461031e578060031936011261031e57602060255460801c604051908152f35b503461031e57604036600319011261031e57600435600981101561116157611a16611f32565b6008549091906001600160a01b03163303611acc5760ff611a3682611f90565b54161515911515918214611a9257808260ff611a54611a8294611f90565b54161515827feeec81de25875ce1725479bb76f720a8defdb43dea041919ae37bb4aae9847c08780a4611f90565b9060ff8019835416911617905580f35b60405162461bcd60e51b81526020600482015260126024820152714d61726b65743a2073616d6520737461746560701b6044820152606490fd5b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881d5b985d5d1a1bdc9a5e995960621b6044820152606490fd5b503461031e57604036600319011261031e57611223611b25611eb9565b6024359033612ab4565b503461031e57606036600319011261031e57611b49611eb9565b611b51611f32565b60443590811515820361115d5760018060a01b03928391611b778360055416331461213d565b15611c1b571690811590811591611c13575b5015611bd657806005549283167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08580a36001600160a01b03199182161760055560068054909116905580f35b60405162461bcd60e51b81526020600482015260156024820152744f776e61626c653a207a65726f206164647265737360581b6044820152606490fd5b905038611b89565b9150501660018060a01b0319600654161760065580f35b503461031e578060031936011261031e57808060018060a01b03600b541660405160208101906306fdde0360e01b825260048152611c6f816120af565b51915afa611c7b61304f565b915015611cd857611c8e610353916130d6565b610f096034604051809373546170696f63612053696e67756c61726974792d60601b6020830152611cc88151809260208686019101611eea565b8101036014810184520182612101565b50610353611ce461307f565b611c8e565b503461031e578060031936011261031e57600f546040805163d6d7d52560e01b8152602060048201529182906001600160a01b0316818581611d2d60248201611ff9565b03925af18015611e665782918391611e26575b508115611dc7578015611d8b57807f9f9192b5edb17356c524e08d9e025c8e2f6307e6ea52fb7968faa3081f51c3c86040948260115580a25b42601355825191151582526020820152f35b60405162461bcd60e51b81526020600482015260146024820152734d61726b65743a20696e76616c6964207261746560601b6044820152606490fd5b509050611dd96013546012549061222c565b4211611dea57604090601154611d79565b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881c985d19481d1bdbc81bdb1960621b6044820152606490fd5b9150506040813d604011611e5e575b81611e4260409383612101565b81010312611161576020611e55826124ca565b91015138611d40565b3d9150611e35565b6040513d84823e3d90fd5b905034611161576040366003190112611161576040602092611e91611eb9565b611e99611ed4565b6001600160a01b0391821683526003865283832091168252845220548152f35b600435906001600160a01b0382168203611ecf57565b600080fd5b602435906001600160a01b0382168203611ecf57565b60005b838110611efd5750506000910152565b8181015183820152602001611eed565b90602091611f2681518092818552858086019101611eea565b601f01601f1916010190565b602435908115158203611ecf57565b60e0906003190112611ecf576001600160a01b03906004358281168103611ecf57916024359081168103611ecf5790604435906064359060843560ff81168103611ecf579060a4359060c43590565b6009811015611fa9576000526007602052604060002090565b634e487b7160e01b600052602160045260246000fd5b90600182811c92168015611fef575b6020831014611fd957565b634e487b7160e01b600052602260045260246000fd5b91607f1691611fce565b6010546000929161200982611fbf565b908181526001928381169081600014612063575060011461202957505050565b9092935060106000526020928360002092846000945b83861061204f5750505050010190565b80548587018301529401938590820161203f565b91935050602093945060ff191683830152151560051b010190565b606081019081106001600160401b0382111761209957604052565b634e487b7160e01b600052604160045260246000fd5b604081019081106001600160401b0382111761209957604052565b61010081019081106001600160401b0382111761209957604052565b608081019081106001600160401b0382111761209957604052565b90601f801991011681019081106001600160401b0382111761209957604052565b6001600160401b03811161209957601f01601f191660200190565b1561214457565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b1561218f57565b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881b9bdd081d985b1a59607a1b6044820152606490fd5b818102929181159184041417156121db57565b634e487b7160e01b600052601160045260246000fd5b81156121fb570490565b634e487b7160e01b600052601260045260246000fd5b604d81116121db57600a0a90565b919082039182116121db57565b919082018092116121db57565b818103929160001380158285131691841216176121db57565b60145491929161229b9161228c9161228291612278906001600160801b038316906121c8565b9060801c906121f1565b93601f54906121c8565b61229583612211565b906121f1565b808310612363576122af6122eb918461221f565b916122e66122e06122d7601e546122d16122c886612211565b6020549061222c565b906121c8565b61229584612211565b91612211565b612239565b6509184e72a000908181029181830514901517156121db57670de0b6b3a7640000918281029281840514901517156121db5780156121fb57600160ff1b918083146000198314166121db570590600082121561235c5781146121db57600003905b808211612357575090565b905090565b509061234c565b505050600090565b9160018060a01b0380931691600093838552602060178152604091828720549081156124bd578783855161239e816120af565b82815201526123ab612b8f565b50505050509190506123be8615156124d7565b6009541683600c54898b52601882526064878c2054918851948593849263442c159960e01b8452600484015260248301528d60448301525afa9081156124b3578991612480575b5091612460612474979899949261243b8861243661242d601898620186a060225404906121c8565b601e54906121c8565b6121f1565b815190936001600160801b03918691612456918416906121c8565b92015116906121f1565b81811061247857035b978352522054612523565b9091565b505082612469565b90508381813d83116124ac575b6124978183612101565b810103126124a85751612460612405565b8880fd5b503d61248d565b85513d8b823e3d90fd5b5086955085949350505050565b51908115158203611ecf57565b156124de57565b60405162461bcd60e51b815260206004820152601e60248201527f4d61726b65743a2065786368616e676552617465206e6f742076616c696400006044820152606490fd5b61252e8215156124d7565b602060018060a01b0360095416916064600c54604051948593849263442c159960e01b845260048401526024830152600060448301525afa9081156125ce5760009161259b575b509061243661258792602254906121c8565b620186a0612597601e54836121c8565b0491565b906020823d82116125c6575b816125b460209383612101565b8101031261031e575051612436612575565b3d91506125a7565b6040513d6000823e3d90fd5b6001600160a01b031660008181526018602052604081205490926125fd91612523565b9183526017602052604083205480156127065781156127065781811061270657828110156126fc57601454612646918391610daf91612278906001600160801b038316906121c8565b90620186a092838302928084048514901517156126e85761266b92916122959161221f565b91601b5491601c549361267e8585612239565b80820291848212600160ff1b8214166126e85781830514901517156126d457058184820194851291129080158216911516176126c05750808212612357575090565b634e487b7160e01b81526011600452602490fd5b634e487b7160e01b83526011600452602483fd5b634e487b7160e01b85526011600452602485fd5b50505050601b5490565b50505090565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316148061280d575b15612767577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f000000000000000000000000000000000000000000000000000000000000000082527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a0815260c081018181106001600160401b038211176120995760405251902090565b507f0000000000000000000000000000000000000000000000000000000000000000461461273e565b1561283d57565b60405162461bcd60e51b815260206004820152601660248201527545524332303a2062616c616e636520746f6f206c6f7760501b6044820152606490fd5b1561288257565b60405162461bcd60e51b815260206004820152601660248201527545524332303a206e6f207a65726f206164647265737360501b6044820152606490fd5b51906001600160a01b0382168203611ecf57565b519060ff82168203611ecf57565b6005811015611fa957806128f35750565b6001810361293b5760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b6044820152606490fd5b600281036129885760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606490fd5b60031461299157565b60405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608490fd5b9291906fa2a8918ca85bafe22016d0b997e4df60600160ff1b038311612a5a5791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa15612a4d5781516001600160a01b03811615612a47579190565b50600190565b50604051903d90823e3d90fd5b50505050600090600390565b7fe50de2333c10a9502fcb1d8ae13a51bbf423153dfc63c2b8997665b32154afc360018060a01b038092169160009083825260036020526040822094169384825260205284604082205580a4565b909160207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259160018060a01b03809416938460005260028352604060002095169485600052825280604060002055604051908152a3565b60405190612b188261207e565b60006040838281528260208201520152565b60405190612b37826120af565b6014546001600160801b038116835260801c6020830152565b60405190612b5d826120af565b6025546001600160801b038116835260801c6020830152565b6001600160801b0391821690821601919082116121db57565b612b97612b0b565b5060006020604051612ba8816120af565b828152015260006020604051612bbd816120af565b828152015260405190612bcf8261207e565b602454916001600160401b038316815260208101926001600160401b038160401c16845260801c60408201528092612c05612b2a565b92612c0e612b50565b92600060018060a01b0360095416600e549460018060801b038751166040519063442c159960e01b8252876004830152602482015260006044820152602081606481865afa80156125ce5760009061301b575b8951612c7792506001600160801b03169061222c565b80612fe6575060005b612c956001600160401b03829351164261221f565b948515612fbc575050426001600160401b031660208a8101919091528801516001600160801b031615612f7257506020670de0b6b3a7640000612cf785612cf28c6001600160401b038d60018060801b03905116915116906121c8565b6121c8565b895191900496906001600160801b0390612d1690828a16908316612b76565b168952875160405163442c159960e01b815260048101929092526001600160801b031660248201526000604482015291829060649082905afa80156125ce57600090612f3e575b8751612d7392506001600160801b03169061222c565b92612da184612436620186a0612d8b601a548a6121c8565b60208c01516001600160801b03169190046121c8565b6040890180519195916001600160801b038088169291612dc49084908316612b76565b16905260208801805190916001600160801b0391612de491908316612b76565b16905280612f09575060005b602a5490938482811015612e8457612e08908361221f565b90670de0b6b3a7640000820291808304670de0b6b3a764000014901517156121db57612436612e5c612e56612e486001600160401b0396612e66966121f1565b93612cf2602e5495806121c8565b8361222c565b91848d51166121c8565b168089526001600160401b03602d5416809110612e805750565b8852565b909150602b54808211612e9657505050565b612e9f9161221f565b670de0b6b3a7640000810290808204670de0b6b3a764000014901517156121db576001600160401b0391612436612ee2612e56612e48612eeb95602c54906121f1565b848d51166121c8565b81602d5460401c16808211612f01575b50168852565b905038612efb565b87516001600160801b0316670de0b6b3a76400008181029291808404909114901517156121db57612f39916121f1565b612df0565b506020813d602011612f6a575b81612f5860209383612101565b81010312611ecf57612d739051612d5d565b3d9150612f4b565b9697939450509350506001600160401b038151166001600160401b03602f5416809103612fb0575b509392612fa5612b50565b926000926000929190565b81526001925038612f9a565b975098505050505092505091612fd0612b2a565b91612fd9612b50565b9160009160009190600090565b88516001600160801b0316670de0b6b3a76400008181029291808404909114901517156121db57613016916121f1565b612c80565b506020813d602011613047575b8161303560209383612101565b81010312611ecf57612c779051612c61565b3d9150613028565b3d1561307a573d9061306082612122565b9161306e6040519384612101565b82523d6000602084013e565b606090565b6040519061308c826120af565b60038252623f3f3f60e81b6020830152565b9081518110156130af570160200190565b634e487b7160e01b600052603260045260246000fd5b60ff1660ff81146121db5760010190565b80516040811061315157508051810190602081818401930312611ecf576020810151906001600160401b038211611ecf570181603f82011215611ecf57602081015161312181612122565b9261312f6040519485612101565b81845260408284010111611ecf5761314e916040602085019101611eea565b90565b60209290830361323f576000805b60ff81168581109081613220575b50156131815761317c906130c5565b61315f565b9260ff8094169261319184612122565b9361319f6040519586612101565b8085526131ae601f1991612122565b013687860137825b85811687811080613203575b156131f8576131f391906131ed6001600160f81b03196131e2838861309e565b5116871a918861309e565b536130c5565b6131b6565b505094505050905090565b506001600160f81b0319613217828661309e565b511615156131c2565b6001600160f81b03199150613235908661309e565b511615153861316d565b91505061314e61307f56feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220b5c103173ba002e8213331772550d18239789a543d3041edd70a608b0c43c56b64736f6c63430008120033", "linkReferences": {}, "deployedLinkReferences": {} } diff --git a/src/artifacts/tapioca-bar/SGLLeverage.json b/src/artifacts/tapioca-bar/SGLLeverage.json index 11ea9634..6f0fa8fd 100644 --- a/src/artifacts/tapioca-bar/SGLLeverage.json +++ b/src/artifacts/tapioca-bar/SGLLeverage.json @@ -123,6 +123,25 @@ "name": "InterestElasticityUpdated", "type": "event" }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "oldVal", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newVal", + "type": "address" + } + ], + "name": "LeverageExecutorSet", + "type": "event" + }, { "anonymous": false, "inputs": [ @@ -907,19 +926,9 @@ "name": "supplyAmount", "type": "uint256" }, - { - "internalType": "uint256", - "name": "minAmountOut", - "type": "uint256" - }, - { - "internalType": "contract ISwapper", - "name": "swapper", - "type": "address" - }, { "internalType": "bytes", - "name": "dexData", + "name": "data", "type": "bytes" } ], @@ -1180,6 +1189,19 @@ "stateMutability": "view", "type": "function" }, + { + "inputs": [], + "name": "leverageExecutor", + "outputs": [ + { + "internalType": "contract ILeverageExecutor", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, { "inputs": [], "name": "liquidationBonusAmount", @@ -1814,19 +1836,9 @@ "name": "share", "type": "uint256" }, - { - "internalType": "uint256", - "name": "minAmountOut", - "type": "uint256" - }, - { - "internalType": "contract ISwapper", - "name": "swapper", - "type": "address" - }, { "internalType": "bytes", - "name": "dexData", + "name": "data", "type": "bytes" } ], @@ -1841,6 +1853,19 @@ "stateMutability": "nonpayable", "type": "function" }, + { + "inputs": [ + { + "internalType": "contract ILeverageExecutor", + "name": "_executor", + "type": "address" + } + ], + "name": "setLeverageExecutor", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, { "inputs": [ { @@ -2169,8 +2194,8 @@ "type": "function" } ], - "bytecode": "0x6101408060405234620001e5576200001781620001ea565b601381526001602082017f546170696f63612053696e67756c617269747900000000000000000000000000815260206040516200005481620001ea565b8381520192603160f81b845251902091208160e052610100918183524660a0526040519160208301907f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f92838352604085015260608401524660808401523060a084015260a0835260c083019280841060018060401b03851117620001cf5760408490525190206080523060c052610120908152600580546001600160a01b0319163390811790915560007f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a362013880601b5562015f90601c55612710601d55612ee06020557f0bd4060688a1800ae986e4840aebc924bb40b5bf44de4583df2257220b54b77c6026557f7d1dc38e60930664f8cbf495da6556ca091d2f92d6550877750c049864b182306027556161a86028556032602f55615349928362000207843960805183613904015260a051836139cf015260c051836138ce015260e0518361395301525182613979015251816139300152f35b634e487b7160e01b600052604160045260246000fd5b600080fd5b604081019081106001600160401b03821117620001cf5760405256fe608080604052600436101561001357600080fd5b600090813560e01c908162a02a2014612e585750806302ce728f14612e2f57806306fdde0314612d78578063078dfbe714612c79578063095ea7b314612c525780630c4e84f014612b3a57806318160ddd14612b195780631c9e379b14612ae05780631da8bf1014612a2b5780631ee9c8f2146125e357806323b872dd146124405780632a9399d91461202c578063313ce56714611ff8578063331960ff14611fda57806334d441d014611fbc5780633644e51514611fa157806337b6b7b914611f8357806338d52e0f14611f5a5780633ba0b9a914611f3c5780633f741adb14611f1757806340626d8b14611ef957806344de240a14611edb578063473e3ce714611ebd57806348e4163e14611e845780634d7f2a3414611e665780634e71e0c814611db8578063529898f214611d9b57806352f353eb14611d745780635514023214611d4d57806355c2ab9414611d235780635793546214611d0557806358db9afe146118c55780635dfe04e8146118665780636c3d8b8f1461183d57806370a082311461180457806372778547146117cc57806374645ff3146117a15780637dc0d1d0146117785780637ecebe001461173f5780637fa0b84e1461170d578063821226e8146116ef5780638285ef40146116bd5780638c5d0ed31461169f5780638da5cb5b14611676578063910dd7c8146113fd578063959916dc146113df57806395d89b411461132557806399a97028146112f55780639c5d7192146112d75780639e15e89f1461129c578063a9059cbb146111b9578063b0e21e8a1461119b578063b27c0e7414611160578063bb4cfe3b14611142578063ce8849ed14611119578063d3fb2a3814610c9d578063d49dffa714610651578063d505accf146104cb578063d8dfeb45146104a2578063dd62ed3e14610453578063de4065771461042a578063e0996cb61461040c578063e30c3978146103e3578063ea64dd56146103c5578063eec0f42e146103a7578063f42760b714610389578063f8ba4cff1461036d578063f9557ccb146103375763ffe04c661461031757600080fd5b346103345780600319360112610334576020602954604051908152f35b80fd5b5034610334578060031936011261033457602454604080516001600160801b038316815260809290921c602083015290f35b0390f35b503461033457806003193601126103345761038661423f565b80f35b50346103345780600319360112610334576020602a54604051908152f35b50346103345780600319360112610334576020600c54604051908152f35b50346103345780600319360112610334576020601f54604051908152f35b50346103345780600319360112610334576006546040516001600160a01b039091168152602090f35b50346103345780600319360112610334576020601d54604051908152f35b50346103345780600319360112610334576009546040516001600160a01b039091168152602090f35b50346103345760403660031901126103345761046d612ea0565b6040610477612eb6565b9260018060a01b03809316815260026020522091166000526020526020604060002054604051908152f35b5034610334578060031936011261033457600b546040516001600160a01b039091168152602090f35b5034610334576104da36612f46565b9083959495421161060c576105b8916105b09160018060a01b0394858a169687600052600460205260406000209081549161051483613c18565b90556040519060208201927f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e2668452600060408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e081526105748161312a565b51902061057f6138cb565b9060405190602082019261190160f01b845260228301526042820152604281526105a88161310f565b519020613ba0565b919091613aa1565b16036105c75761038692613c75565b60405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152606490fd5b60405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b5061014036600319011261033457610667612ea0565b606435151560643503610a5f576001600160401b038060843511610c9957606060843536036003190112610c995760a43511610a505760e060a43536036003190112610a505760803660c3190112610a5057600560005260076020527fbcdda56b5d08466ec462cbbe0adfa57cb0a15fcc8940ef68f702f21b787bc935546106f29060ff1615614362565b6106fa613474565b505061070461423f565b6107196001600160a01b0382163014156143df565b610727604460a4350161442a565b60c4356001600160a01b0381169003610a5f5761074a61074f9160c435906147a3565b614439565b60243580610afd575b506107da6107ac6107d46107ce6107b2620186a061077a602f5460443561321c565b0461078a60115491604435613280565b600d5460ff906107a2906001600160a01b0316614543565b1695869289613628565b906146a9565b6001600160a01b0386168752601860205260408720549061321c565b91613265565b90613245565b336001600160a01b03831603610aa9575b6107f590826146ec565b610836604061080760443584806148d3565b905060018060a01b0360095416600e548684518096819582946311a5cc7760e31b84528a309160048601614492565b03925af1908115610a9e578391610a6e575b50600d546001600160a01b03169060643515610a6857475b823b15610a645760405191633cb7ea1d60e11b8352600483015260018060a01b0384166024830152610100604483015260a4356004013561010483015261ffff6108ae602460a43501613182565b1661012483015261ffff6108c6604460a43501613182565b166101448301526001600160a01b036108e360a435606401612ecc565b166101648301526109af61094161091a610907608460a4350160a4356004016144c1565b60e06101848801526101e48701916144f2565b61092d60a480350160a4356004016144c1565b86830361010319016101a4880152906144f2565b6001600160a01b0361095760a43560c401612ecc565b166101c4850152838103600319016064850152606061099f6004608435016001600160a01b0361098682612ecc565b16845260843560248101356020860152604401906144c1565b91909281604082015201916144f2565b6001600160a01b0360c4358116608485015290939060e43590811690819003610a5f5760a4840152610104356001600160a01b03811690819003610a5f5760c4840152610124356001600160a01b0381169190829003610a5f5783879593818795819560e483015203925af18015610a5457610a3c575b50610386610a3783601154906145b1565b61439f565b610a45906130b0565b610a50578138610a26565b5080fd5b6040513d84823e3d90fd5b600080fd5b8480fd5b34610860565b610a90915060403d604011610a97575b610a888183613146565b81019061447c565b5038610848565b503d610a7e565b6040513d85823e3d90fd5b806107eb5760405162461bcd60e51b815260206004820152602160248201527f42696742616e673a20616c6c6f77616e63655368617265206e6f742076616c696044820152601960fa1b6064820152608490fd5b602060018060a01b0360095416916064600c546040519485938492638eb22cdd60e01b8452600484015260248301528760448301525afa908115610a9e578391610c67575b50610b4d81836146ec565b8015610bdb575b60018060a01b03821660005260186020526040600020610b75828254613280565b9055610b8381601554613280565b60155560018060a01b038216600052602560205260406000206027546000526020526040600020610bb5828254613280565b90556001600160a01b038216806000805160206152d4833981519152600080a438610758565b5060018060a01b03600954166020600c54606460405180948193638eb22cdd60e01b8352600483015260006024830152600060448301525afa908115610c5b57600091610c29575b50610b54565b906020823d602011610c53575b81610c4360209383613146565b8101031261033457505138610c23565b3d9150610c36565b6040513d6000823e3d90fd5b90506020813d602011610c91575b81610c8260209383613146565b81010312610a5f575138610b42565b3d9150610c75565b8280fd5b503461033457610160366003190112610334576001600160a01b039060043582811690819003610a50576001600160401b039260243584811161111557610ce8903690600401612f95565b909460443593838516809503610a5f57610d0784600554163314613191565b806110d7575b5081610f5a575b50509080929350610f1a575b505060643580610f02575b5060843580610eea575b5060a43580610ed3575b5060c43580610eaf575b5060e43580610e8b575b506101043580610e5a575b506101243580610de6575b506101443580610d77575080f35b601e548110610d8657601f5580f35b60405162461bcd60e51b815260206004820152603260248201527f4d61726b65743a206c69717569646174696f6e436f6c6c61746572616c697a616044820152711d1a5bdb94985d19481d1bdbc81cdb585b1b60721b6064820152608490fd5b610df5620186a08211156131dc565b601f548111610e0757601e5538610d69565b60405162461bcd60e51b815260206004820152602560248201527f4d61726b65743a20636f6c6c61746572616c697a6174696f6e5261746520746f6044820152646f2062696760d81b6064820152608490fd5b806016547fae6e0ab3b95f0a53ff9660a390ccedcbbf1f2355dce974a9841af106fddcfaba8480a360165538610d5e565b610e99620186a082106131dc565b610ea6601b5482116131dc565b601c5538610d53565b610ebd620186a082106131dc565b610eca601c5482106131dc565b601b5538610d49565b610ee1620186a082106131dc565b601d5538610d3f565b610ef9620186a08211156131dc565b601a5538610d35565b610f11620186a08211156131dc565b60195538610d2b565b816008549182167f5a62d22209e370e38eea92cfddcd228e656e6ec139243392a760a7769f5877fd8580a36001600160a01b031916176008553880610d20565b81116110c357610f6b601054612ff1565b601f8111611062575b5083601f8211600114610fdc5784958293949592610fd1575b50508160011b916000199060031b1c1916176010555b7fa6f004921c944d4b8bf6e38462b00f36a58d62495d56b51f571ab78f732c98158380a19082913880610d14565b013590503880610f8d565b60108552601f198216957f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae672918660205b89821061104a5750508360019596979810611030575b505050811b01601055610fa3565b0135600019600384901b60f8161c19169055388080611022565b8060018496829495870135815501950192019061100c565b601085527f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae672601f830160051c8101602084106110bc575b601f90920160051c01905b8181106110b15750610f74565b8581556001016110a4565b5080611099565b634e487b7160e01b84526041600452602484fd5b600f80546001600160a01b0319169190911790557f0b2d6eb667d0522c3eb86e4288afecae6c11591ffd1345d4d12407e0598bca9b8580a138610d0d565b8380fd5b50346103345780600319360112610334576008546040516001600160a01b039091168152602090f35b50346103345780600319360112610334576020601e54604051908152f35b50346103345780600319360112610334576060602354604051906001600160401b0380821683528160401c16602083015260801c6040820152f35b50346103345780600319360112610334576020601a54604051908152f35b5034610334576040366003190112610334576111d3612ea0565b6024358092811580159061128a575b61121a575b50506040519182526001600160a01b03169033906000805160206152f483398151915290602090a3602060405160018152f35b33815260016020526040812054611233838210156139f5565b6001600160a01b038416903382900361124e575b50506111e7565b60409361126591611260841515613a3a565b613273565b33835260016020528383205581522061127f838254613280565b905581388080611247565b50336001600160a01b038416146111e2565b50346103345760403660031901126103345760606112c46112bb612ea0565b602435906133b3565b9060405192835260208301526040820152f35b50346103345780600319360112610334576020602b54604051908152f35b503461033457604036600319011261033457602061131d611314612ea0565b60243590613799565b604051908152f35b5034610334578060031936011261033457808060018060a01b03600b541660405160208101906395d89b4160e01b825260048152611362816130f4565b51915afa61136e614513565b9150156113ce5761138161036991615162565b6113ba6023604051809362746d2d60e81b60208301526113aa8151809260208686019101612ee0565b8101036003810184520182613146565b604051918291602083526020830190612f03565b506103696113da61510b565b611381565b50346103345780600319360112610334576020602f54604051908152f35b5034610334576040366003190112610334576004356001600160401b038111610a505736602382011215610a505780600401359061143a82613167565b906114486040519283613146565b82825283602091828401943660248284010111610c99578060248593018737840101526024359061ffff8216809203610a5f576101009384848051810103126116725761149490613467565b906114a160408501613a7f565b6114ad60608601613a7f565b9560808601519560a0810151916114c660c08301613a93565b9060e08301519201519260018060a01b03808096169a169781421161162d57926105b09289888d9897946115a4978e8d600014611606577f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e266945b8c6000526004855260406000209283549361153a85613c18565b905560405195860196875260408601528c6060860152608085015260a084015260c083015260e082015260e081526115718161312a565b51902061157c6138cb565b90604051908a82019261190160f01b845260228301526042820152604281526105a88161310f565b16036115c25750156115b95761038692613c75565b61038692613c27565b6064906040519062461bcd60e51b82526004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152fd5b7f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d694611520565b60405162461bcd60e51b815260048101889052601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b8580fd5b50346103345780600319360112610334576005546040516001600160a01b039091168152602090f35b50346103345780600319360112610334576020601b54604051908152f35b5034610334578060031936011261033457601454604080516001600160801b038316815260809290921c602083015290f35b50346103345780600319360112610334576020602d54604051908152f35b50346103345760403660031901126103345761173461172a612ea0565b6024359033613c27565b602060405160018152f35b5034610334576020366003190112610334576020906040906001600160a01b03611767612ea0565b168152600483522054604051908152f35b5034610334578060031936011261033457600f546040516001600160a01b039091168152602090f35b50346103345780600319360112610334576103696040516113ba816117c58161302b565b0382613146565b50346103345760203660031901126103345760043590600982101561033457602060ff6117f884612fc2565b54166040519015158152f35b5034610334576020366003190112610334576020906040906001600160a01b0361182c612ea0565b168152600183522054604051908152f35b5034610334578060031936011261033457600a546040516001600160a01b039091168152602090f35b503461033457806003193601126103345761187f613ccc565b50608061188a613d50565b509350505050604051916001600160401b0380825116845260208201511660208401526040600180861b039101511660408301526060820152f35b50346103345760a0366003190112610334576118df612ea0565b6001600160a01b036064358181169392602435929091859003610a5f576084356001600160401b038111610a645761191b903690600401612f95565b949060066000526020966007885261193b60ff6040600020541615614362565b611943613474565b505061194d61423f565b8385169561195d308814156143df565b60048986600a54166040519283809263433e762d60e01b82525afa908115611cfa57836119959261074a928891611ccd575b506147a3565b61199f81876146ec565b600087815260188a52604081206119b7838254613273565b90556119c582601554613273565b6015558560095416600c54813b15610c9957836119fd92849283604051809681958294630208d92960e11b84528c3060048601614890565b03925af18015610a5457611cbe575b508183897f8ad4d3ff00da092c7ad9a573ea4f5f6a3dffc6712dc06d3f78f49b862297c4028480a487815260258a5260408120602754908183528b5260408220548311600014611c98575087815260258a526040812060275482528a5260408120555b600c54600e54604051633d9545e960e11b81526004810192909252602482015260006044820152606481019190915260016084820181905260a48201526101408160c481855afa908115611c8d5784604094939288928291611c5c575b50611af086519b8c968795869463efa84c6d60e01b86526044359060048701614d3f565b03925af1938415611c4f5781958295611c28575b50611b13604435871015614dd1565b81526017865260408120549186611b3184611b2c613ceb565b614e0f565b9160095416916064600e546040519485938492638eb22cdd60e01b845260048401526024830152600160448301525afa918215611c1c5791611be7575b5061131d93610a3793929111611b9457611b89908280614e6d565b505b601154906145b1565b50611b9d613ceb565b80516001600160801b03908116611bc2575050611bbc845b8280614e6d565b50611b8b565b8181611bd9611be2938a611bbc960151168961321c565b91511690613245565b611bb5565b929190508583813d8311611c15575b611c008183613146565b81010312610a5f57915190919061131d611b6e565b503d611bf6565b604051903d90823e3d90fd5b909450611c4591955060403d604011610a9757610a888183613146565b9490949338611b04565b50604051903d90823e3d90fd5b611c8091506101403d61014011611c86575b611c788183613146565b810190614c64565b38611acc565b503d611c6e565b6040513d86823e3d90fd5b9060409189825260258c528282209082528b5220611cb7828254613273565b9055611a6f565b611cc7906130b0565b38611a0c565b611ced91508d803d10611cf3575b611ce58183613146565b810190614c4a565b3861198f565b503d611cdb565b6040513d87823e3d90fd5b50346103345780600319360112610334576020601c54604051908152f35b503461033457806003193601126103345760206001600160401b03602c5460401c16604051908152f35b503461033457806003193601126103345760206001600160401b03602c5416604051908152f35b503461033457806003193601126103345760206001600160401b03602e5416604051908152f35b503461033457806003193601126103345760208054604051908152f35b50346103345780600319360112610334576006546001600160a01b039081811633819003611e2257806005549384167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08680a36001600160a01b0319928316176005551660065580f35b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b50346103345780600319360112610334576020602854604051908152f35b5034610334576020366003190112610334576020906040906001600160a01b03611eac612ea0565b168152601783522054604051908152f35b50346103345780600319360112610334576020601554604051908152f35b50346103345780600319360112610334576020600e54604051908152f35b50346103345780600319360112610334576020601654604051908152f35b503461033457606036600319011261033457602061131d6044356024356004356132a6565b50346103345780600319360112610334576020601154604051908152f35b5034610334578060031936011261033457600d546040516001600160a01b039091168152602090f35b50346103345780600319360112610334576020601254604051908152f35b5034610334578060031936011261033457602061131d6138cb565b50346103345780600319360112610334576020601954604051908152f35b50346103345780600319360112610334576020601354604051908152f35b5034610334578060031936011261033457600d54602090612021906001600160a01b0316614543565b60ff60405191168152f35b5060031961012036820112610a5057612043612ea0565b9061204c612f37565b90606435916001600160401b0390818411611672576060838536030112611672576084359182116116725760e08383360301126116725760803660a3190112611672576006600052602090600782526120ad60ff6040600020541615614362565b6120b5613474565b50506120bf61423f565b6001600160a01b03868116939092906120da308614156143df565b60448101916120e88361442a565b9760a435868116998a8203610a5f576121049161074a916147a3565b856009541697828c6064600c546040519c8d938492638eb22cdd60e01b84526004840152602435602484015260448301525afa9889156123da578b908d9a61240d575b50896121586122129b6040936146ec565b89600052601885528160002061216f828254613273565b905561217d81601554613273565b60155580308b7f8ad4d3ff00da092c7ad9a573ea4f5f6a3dffc6712dc06d3f78f49b862297c402600080a489600052602585528160002060275490816000528652826000205482116000146123e5575089600052602585528160002060275460005285526000828120555b8d896009541690600c54908451809e819582946311a5cc7760e31b84523090309060048601614492565b03925af19889156123da578c996123b8575b50600b54871695156123b15747975b863b156123ad5760405199633cb7ea1d60e11b8b5260048b015260248a01526044890161010090528684600401610104968135888d015261ffff908c8260248a0161227d90613182565b1690610124015261228d90613182565b166101448c0152816122a160648801612ecc565b166101648c01526122b560848701826144c1565b6101848d0160e090526101e48d01906122cd926144f2565b9060a487016122db916144c1565b8c830361010319016101a48e01526122f392916144f2565b9460c40161230090612ecc565b166101c48a015288840301606489015280600401918661231f84612ecc565b168452602482013590840152604401612337916144c1565b60606040840181905261234b9301916144f2565b95608486015260c435838116809103610a5f5760a486015260e435838116809103610a5f5760c486015235918216809203610a5f5783879593818795819560e483015203925af18015610a5457610a3c5750610386610a3783601154906145b1565b8c80fd5b3497612233565b6123d291995060403d604011610a9757610a888183613146565b509738612224565b6040513d8e823e3d90fd5b8a600052602586528260002090600052855281600020612406828254613273565b90556121e8565b809a50848092503d8311612439575b6124268183613146565b81010312610a5f579751978a6040612147565b503d61241c565b50346103345760603660031901126103345761245a612ea0565b90612463612eb6565b60443591826124a1575b506040519182526001600160a01b039081169216906000805160206152f483398151915290602090a3602060405160018152f35b6001600160a01b038481168083526001602090815260408420549286906124ca828610156139f5565b8616938484036124df575b505050505061246d565b8386526002835260408620336000528352604060002054600019810361254d575b509260016020969361252b87946040976112606000805160206152f48339815191529c9a1515613a3a565b9285525283832055815220612541858254613280565b905591388085816124d5565b909181106125a3579260016020969361252b8a6000805160206152f48339815191529a989561257e8260409a613273565b8689526002855289892033600052855289600020559497509497995050939650612500565b60405162461bcd60e51b815260048101849052601860248201527745524332303a20616c6c6f77616e636520746f6f206c6f7760401b6044820152606490fd5b50346103345760c0366003190112610334576125fd612ea0565b60643591906001600160a01b0360843581811692908390036111155760a4356001600160401b038111610a6457612638903690600401612f95565b9093600586526020966007885261265660ff60408920541615614362565b61265e613474565b505061266861423f565b84841691612678308414156143df565b60048987600a54166040519283809263433e762d60e01b82525afa908115612a2057826126af9261074a928c91611ccd57506147a3565b856009541693600e549060405191638eb22cdd60e01b968784528160048501526044356024850152600160448501528c84606481845afa9384156123da578c946129f1575b5083612997575b505061276461270d602435858a6148d3565b905061271f600e5491600c5495613280565b60405180938192633d9545e960e11b83526101409788956004850160a091949360019360c0830196835260208301526000604083015260608201528260808201520152565b0381875afa92831561298c5788936040959387938e938493612967575b50506127a39087519d8e978896879563efa84c6d60e01b875260048701614d3f565b03925af195861561295c578796612933575b506127c290871015614dd1565b6127cc85846146ec565b8491600095156128c3575b5080855260188752604085206127ee838254613280565b90556127fc82601554613280565b601555600c54948460095416803b15610a5f57836000916128369883604051809b81958294630208d92960e11b8452308d60048601614890565b03925af1948515610c5b5761131d96610a37966128a1575b506000805160206152d48339815191529083835260258a526040832060275484528a5260408320612880868254613280565b9055821561289b5780600954165b169180a4601154906145b1565b8561288e565b6128ac9192506130b0565b6000906000805160206152d483398151915261284e565b909150868460095416916064600c54916040519485938492835260048301528960248301528960448301525afa908115611cfa578591612906575b5090386127d7565b90508681813d831161292c575b61291d8183613146565b81010312610a645751386128fe565b503d612913565b6127c2975061295291965060403d604011610a9757610a888183613146565b96909695906127b5565b6040513d89823e3d90fd5b6127a3929350908161298492903d10611c8657611c788183613146565b919038612781565b6040513d8d823e3d90fd5b803b156129ed5783918c9186838c6129c560405197889687958694630208d92960e11b865260048601614890565b03925af1801561298c576129da575b806126fb565b6129e6909a919a6130b0565b98386129d4565b8b80fd5b9093508c81813d8311612a19575b612a098183613146565b810103126129ed575192386126f4565b503d6129ff565b6040513d8b823e3d90fd5b503461033457612a3a36612f46565b9083959495421161060c57612ad1916105b09160018060a01b03948a868b169788825260046020526040822090815491612a7383613c18565b90556040519160208301937f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d6855260408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e081526105748161312a565b16036105c75761038692613c27565b5034610334576020366003190112610334576020906040906001600160a01b03612b08612ea0565b168152601883522054604051908152f35b5034610334578060031936011261033457602060245460801c604051908152f35b5034610334576040366003190112610334576004356009811015610a5057612b60612f28565b6008549091906001600160a01b03163303612c165760ff612b8082612fc2565b54161515911515918214612bdc57808260ff612b9e612bcc94612fc2565b54161515827feeec81de25875ce1725479bb76f720a8defdb43dea041919ae37bb4aae9847c08780a4612fc2565b9060ff8019835416911617905580f35b60405162461bcd60e51b81526020600482015260126024820152714d61726b65743a2073616d6520737461746560701b6044820152606490fd5b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881d5b985d5d1a1bdc9a5e995960621b6044820152606490fd5b503461033457604036600319011261033457611734612c6f612ea0565b6024359033613c75565b503461033457606036600319011261033457612c93612ea0565b612c9b612f28565b612ca3612f37565b9060018060a01b03928391612cbd83600554163314613191565b15612d61571690811590811591612d59575b5015612d1c57806005549283167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08580a36001600160a01b03199182161760055560068054909116905580f35b60405162461bcd60e51b81526020600482015260156024820152744f776e61626c653a207a65726f206164647265737360581b6044820152606490fd5b905038612ccf565b9150501660018060a01b0319600654161760065580f35b5034610334578060031936011261033457808060018060a01b03600b541660405160208101906306fdde0360e01b825260048152612db5816130f4565b51915afa612dc1614513565b915015612e1e57612dd461036991615162565b6113ba6034604051809373546170696f63612053696e67756c61726974792d60601b6020830152612e0e8151809260208686019101612ee0565b8101036014810184520182613146565b50610369612e2a61510b565b612dd4565b50346103345780600319360112610334576040612e4a613474565b825191151582526020820152f35b905034610a50576040366003190112610a50576040602092612e78612ea0565b612e80612eb6565b6001600160a01b0391821683526003865283832091168252845220548152f35b600435906001600160a01b0382168203610a5f57565b602435906001600160a01b0382168203610a5f57565b35906001600160a01b0382168203610a5f57565b60005b838110612ef35750506000910152565b8181015183820152602001612ee3565b90602091612f1c81518092818552858086019101612ee0565b601f01601f1916010190565b602435908115158203610a5f57565b604435908115158203610a5f57565b60e0906003190112610a5f576001600160a01b03906004358281168103610a5f57916024359081168103610a5f5790604435906064359060843560ff81168103610a5f579060a4359060c43590565b9181601f84011215610a5f578235916001600160401b038311610a5f5760208381860195010111610a5f57565b6009811015612fdb576000526007602052604060002090565b634e487b7160e01b600052602160045260246000fd5b90600182811c92168015613021575b602083101461300b57565b634e487b7160e01b600052602260045260246000fd5b91607f1691613000565b6010546000929161303b82612ff1565b908181526001928381169081600014613095575060011461305b57505050565b9092935060106000526020928360002092846000945b8386106130815750505050010190565b805485870183015294019385908201613071565b91935050602093945060ff191683830152151560051b010190565b6001600160401b0381116130c357604052565b634e487b7160e01b600052604160045260246000fd5b606081019081106001600160401b038211176130c357604052565b604081019081106001600160401b038211176130c357604052565b608081019081106001600160401b038211176130c357604052565b61010081019081106001600160401b038211176130c357604052565b90601f801991011681019081106001600160401b038211176130c357604052565b6001600160401b0381116130c357601f01601f191660200190565b359061ffff82168203610a5f57565b1561319857565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b156131e357565b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881b9bdd081d985b1a59607a1b6044820152606490fd5b8181029291811591840414171561322f57565b634e487b7160e01b600052601160045260246000fd5b811561324f570490565b634e487b7160e01b600052601260045260246000fd5b604d811161322f57600a0a90565b9190820391821161322f57565b9190820180921161322f57565b8181039291600013801582851316918412161761322f57565b6014549192916132e9916132e0916132d6916132cc906001600160801b0383169061321c565b9060801c90613245565b93601f549061321c565b6107d483613265565b8083106133ab576132fd6133339184613273565b9161332e6107ce613325601e5461331f61331686613265565b60205490613280565b9061321c565b6107d484613265565b61328d565b6509184e72a0009081810291818305149015171561322f57670de0b6b3a76400009182810292818405149015171561322f57801561324f57600160ff1b9180831460001983141661322f57059060008212156133a457811461322f57600003905b80821161339f575090565b905090565b5090613394565b505050600090565b6001600160a01b03811660008181526017602052604081205491949392909190811561345b579160409161343761344f959483602086516133f3816130f4565b828152015261341186613404613d50565b5050505050939050613628565b815190936001600160801b039160209161342d9184169061321c565b9201511690613245565b81811061345357035b958152601860205220546136ee565b9091565b505080613440565b50509192505080918190565b51908115158203610a5f57565b600f546040805163d6d7d52560e01b8152602060048201529290916001600160a01b03168284806134a76024820161302b565b0381600080955af180156135d05781948291613594575b509284156135375783156134fd57507f9f9192b5edb17356c524e08d9e025c8e2f6307e6ea52fb7968faa3081f51c3c883918260115580a25b42601355565b5162461bcd60e51b81526020600482015260146024820152734d61726b65743a20696e76616c6964207261746560601b6044820152606490fd5b9192505061354a60135460125490613280565b421161355a5750601154906134f7565b5162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881c985d19481d1bdbc81bdb1960621b6044820152606490fd5b809550848092503d83116135c9575b6135ad8183613146565b810103126103345760206135c085613467565b940151386134be565b503d6135a3565b508251903d90823e3d90fd5b156135e357565b60405162461bcd60e51b815260206004820152601e60248201527f4d61726b65743a2065786368616e676552617465206e6f742076616c696400006044820152606490fd5b6136338215156135dc565b60018060a01b036020816009541691600c5490600094168452601882526064604085205491604051948593849263442c159960e01b8452600484015260248301528660448301525afa918215611c1c5780926136b6575b5050906136ae6136a56136b393620186a0602154049061321c565b601e549061321c565b613245565b90565b9091506020823d82116136e6575b816136d160209383613146565b810103126103345750516136ae6136a561368a565b3d91506136c4565b6136f98215156135dc565b602060018060a01b0360095416916064600c54604051948593849263442c159960e01b845260048401526024830152600060448301525afa908115610c5b57600091613766575b50906136ae613752926021549061321c565b620186a0613762601e548361321c565b0491565b906020823d8211613791575b8161377f60209383613146565b810103126103345750516136ae613740565b3d9150613772565b6001600160a01b031660008181526018602052604081205490926137bc916136ee565b9183526017602052604083205480156138c55781156138c5578181106138c557828110156138bb57601454613805918391611260916132cc906001600160801b0383169061321c565b90620186a092838302928084048514901517156138a75761382a92916107d491613273565b91601b5491601c549361383d858561328d565b80820291848212600160ff1b8214166138a7578183051490151715613893570581848201948512911290801582169115161761387f575080821261339f575090565b634e487b7160e01b81526011600452602490fd5b634e487b7160e01b83526011600452602483fd5b634e487b7160e01b85526011600452602485fd5b50505050601b5490565b50505090565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031614806139cc575b15613926577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f000000000000000000000000000000000000000000000000000000000000000082527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a0815260c081018181106001600160401b038211176130c35760405251902090565b507f000000000000000000000000000000000000000000000000000000000000000046146138fd565b156139fc57565b60405162461bcd60e51b815260206004820152601660248201527545524332303a2062616c616e636520746f6f206c6f7760501b6044820152606490fd5b15613a4157565b60405162461bcd60e51b815260206004820152601660248201527545524332303a206e6f207a65726f206164647265737360501b6044820152606490fd5b51906001600160a01b0382168203610a5f57565b519060ff82168203610a5f57565b6005811015612fdb5780613ab25750565b60018103613afa5760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b6044820152606490fd5b60028103613b475760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606490fd5b600314613b5057565b60405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608490fd5b9291906fa2a8918ca85bafe22016d0b997e4df60600160ff1b038311613c0c5791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa15611c4f5781516001600160a01b03811615613c06579190565b50600190565b50505050600090600390565b600019811461322f5760010190565b7fe50de2333c10a9502fcb1d8ae13a51bbf423153dfc63c2b8997665b32154afc360018060a01b038092169160009083825260036020526040822094169384825260205284604082205580a4565b909160207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259160018060a01b03809416938460005260028352604060002095169485600052825280604060002055604051908152a3565b60405190613cd9826130d9565b60006040838281528260208201520152565b60405190613cf8826130f4565b6014546001600160801b038116835260801c6020830152565b60405190613d1e826130f4565b6024546001600160801b038116835260801c6020830152565b6001600160801b03918216908216019190821161322f57565b613d58613ccc565b5060006020604051613d69816130f4565b828152015260006020604051613d7e816130f4565b8281520152604051613d8f816130d9565b6023546001600160401b03811682526001600160401b038160401c16602083015260801c60408201528091613dc2613ceb565b91613dcb613d11565b600954600e54825160405163442c159960e01b8152600481018390526001600160801b03909116602482015260006044820181905293959194919391926001600160a01b031690602081606481855afa8015610c5b576000906141e6575b8851613e3f92506001600160801b031690613280565b806141b1575060005b80613e606001600160401b0360208701511642613273565b948515614187575050426001600160401b031660208a8101919091528801516001600160801b03161561413d57506020670de0b6b3a7640000613ec285613ebd8c6001600160401b038d60018060801b039051169151169061321c565b61321c565b895191900496906001600160801b0390613ee190828a16908316613d37565b168952875160405163442c159960e01b815260048101929092526001600160801b031660248201526000604482015291829060649082905afa8015610c5b57600090614109575b8751613f3e92506001600160801b031690613280565b92613f6c846136ae620186a0613f56601a548a61321c565b60208c01516001600160801b031691900461321c565b6040890180519195916001600160801b038088169291613f8f9084908316613d37565b16905260208801805190916001600160801b0391613faf91908316613d37565b169052806140d4575060005b6029549093848281101561404f57613fd39083613273565b90670de0b6b3a7640000820291808304670de0b6b3a7640000149015171561322f576136ae6140276140216140136001600160401b039661403196613245565b93613ebd602d54958061321c565b83613280565b91848d511661321c565b168089526001600160401b03602c541680911061404b5750565b8852565b909150602a5480821161406157505050565b61406a91613273565b670de0b6b3a7640000810290808204670de0b6b3a7640000149015171561322f576001600160401b03916136ae6140ad6140216140136140b695602b5490613245565b848d511661321c565b81602c5460401c168082116140cc575b50168852565b9050386140c6565b87516001600160801b0316670de0b6b3a764000081810292918084049091149015171561322f5761410491613245565b613fbb565b506020813d602011614135575b8161412360209383613146565b81010312610a5f57613f3e9051613f28565b3d9150614116565b9697939450509350506001600160401b038151166001600160401b03602e541680910361417b575b509392614170613d11565b926000926000929190565b81526001925038614165565b97509850505050509250509161419b613ceb565b916141a4613d11565b9160009160009190600090565b87516001600160801b0316670de0b6b3a764000081810292918084049091149015171561322f576141e191613245565b613e48565b506020813d602011614212575b8161420060209383613146565b81010312610a5f57613e3f9051613e29565b3d91506141f3565b601480546001600160801b031660809290921b6001600160801b031916919091179055565b6143266020806142fc614250613d50565b9396959390929015614328575050506001600160401b03602e54166000807f33af5ce86e8438eff54589f85332916444457dfa8685493fbd579b809097026b88604051838152a45b805185820151604092830151921b67ffffffffffffffff60401b166001600160401b03919091161760809190911b6001600160801b0319908116919091176023558151601480549092166001600160801b039182161790915594859101511661421a565b8051910151821660801b6001600160801b0319166001600160801b03929091169190911617602455565b565b7f33af5ce86e8438eff54589f85332916444457dfa8685493fbd579b809097026b886001600160401b0386511694604051908152a4614298565b1561436957565b60405162461bcd60e51b815260206004820152600e60248201526d13585c9ad95d0e881c185d5cd95960921b6044820152606490fd5b156143a657565b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881a5b9cdbdb1d995b9d607a1b6044820152606490fd5b156143e657565b606460405162461bcd60e51b815260206004820152602060248201527f4d61726b65743a2063616e6e6f742065786563757465206f6e20697473656c666044820152fd5b3561ffff81168103610a5f5790565b1561444057565b60405162461bcd60e51b815260206004820152601460248201527329a3a61d1024b73b30b634b21039bbb0b83832b960611b6044820152606490fd5b9190826040910312610a5f576020825192015190565b9081526001600160a01b0391821660208201529116604082015260006060820152608081019190915260a00190565b9035601e1982360301811215610a5f5701602081359101916001600160401b038211610a5f578136038313610a5f57565b908060209392818452848401376000828201840152601f01601f1916010190565b3d1561453e573d9061452482613167565b916145326040519384613146565b82523d6000602084013e565b606090565b60008091604051602081019063313ce56760e01b825260048152614566816130f4565b51916001600160a01b03165afa61457b614513565b90806145a6575b156145a057602081805181010312610a5f5760206136b39101613a93565b50601290565b506020815114614582565b919060018060a01b0380600094168452602060178152604085205490811561469f57601881526040862054801561469857816145eb613ceb565b9460095416916064600c54604051948593849263442c159960e01b8452600484015260248301528b60448301525afa968715611c1c578097614662575b505061342d6146476136a561465d969798620186a0602154049061321c565b95613ebd60018060801b0394858751169061321c565b111590565b9096508187813d8311614691575b61467a8183613146565b81010312610334575094519461342d614647614628565b503d614670565b5050505050565b5060019450505050565b91821580156146e4575b6133ab576001810180911161322f576146d29261331f6136ae92613265565b6005810180911161322f57600a900490565b5081156146b3565b6001600160a01b0316338103614700575050565b60008181526020906003825260409182822033835281528483832054106147695783825260038152828220338352815282822054600101614742575050505050565b61475d93825260038152828220903383525220918254613273565b90553880808080614698565b60649083519062461bcd60e51b82526004820152601460248201527313585c9ad95d0e881b9bdd08185c1c1c9bdd995960621b6044820152fd5b600a5460405163dbd01de160e01b815260209290916001600160a01b039084908490600490829085165afa8015610c5b578493600091614852575b50918161ffff936044936040519889968795633a304d8b60e21b8752166004860152166024840152165afa908115610c5b5760009161481e575b50905090565b82813d831161484b575b6148328183613146565b81010312610334575061484490613467565b8038614818565b503d614828565b9091929381813d8311614889575b61486a8183613146565b81010312610a50575190828216820361033457508392919060446147de565b503d614860565b6001600160a01b039182168152911660208201526040810191909152606081019190915260800190565b6001600160801b03918216908216039190821161322f57565b92909192620186a06148e7602f548661321c565b046148f0613ceb565b946148fb8282613280565b9460409384519661490b886130f4565b60008089526020988901819052895190956001600160801b039290918316614bea578261493f8c8280855b16915116613d37565b168b526149838a8c018461495881851682845116613d37565b1680915261497e85849e511660018060801b031660018060801b03196014541617601455565b61421a565b6016548015908115614bdb575b5015614b9d57859060018060a01b0380951680895260178c528989206149b7838254613280565b90558951918483528c8301527f3a5151e57d3bc9798e7853034ac52293d1a0e12a2b44725e75b03b21f86477a68a87891693a480614b7c575b50878260095416946064600e5489519788938492638eb22cdd60e01b8452600484015260248301528960448301525afa938415614b72578594614b43575b508397614a39613d11565b818101916103e88484511610614b0f575090614a89839283614a63614ab0968a16828451166148ba565b1690819052602480546001600160801b0319166001600160801b03909216919091179055565b51602480546001600160801b03169290911660801b6001600160801b031916919091179055565b6009541690600e5490823b15610a64579184939184879694614ae8985198899586948593630208d92960e11b85523060048601614890565b03925af1918215614b05575050614afc5750565b614326906130b0565b51903d90823e3d90fd5b60649089519062461bcd60e51b82526004820152600e60248201526d14d1d30e881b5a5b881b1a5b5a5d60921b6044820152fd5b9093508781813d8311614b6b575b614b5b8183613146565b81010312610a6457519238614a2e565b503d614b51565b86513d87823e3d90fd5b82600a5416865260018952614b95878720918254613280565b9055386149f0565b875162461bcd60e51b8152600481018b9052601760248201527614d1d30e88189bdc9c9bddc818d85c081c995858da1959604a1b6044820152606490fd5b90508360145416111538614990565b828b8b81019280614c1d614c0e614c04868851168461321c565b8686511690613245565b9585611bd9818751168961321c565b10614c2f575b90828061493f93614936565b92908280614c3f61493f94613c18565b959293505050614c23565b90816020910312610a5f575161ffff81168103610a5f5790565b809103906101408212610a5f576040805192614c7f846130d9565b60808112610a5f578151614c928161310f565b614c9b84613a7f565b815260208401516020820152614cb2838501613a7f565b838201526060840151606082015284526080607f19820112610a5f5781908151614cdb8161310f565b6080850151815260a0850151602082015260c08501518382015260e08501516060820152602086015260ff190112610a5f57614d34610120825193614d1f856130f4565b614d2c6101008201613467565b855201613467565b602083015282015290565b91926136b3959360206040845194606060018060a01b039687815116895284810151858a0152878482015116848a015201516060880152606083820151805160808a01528481015160a08a01528381015160c08a0152015160e088015201518051151561010087015201511515610120850152610140840152166101608201526101a0908161018082015201916144f2565b15614dd857565b60405162461bcd60e51b815260206004820152600f60248201526e0a68e987440dcdee840cadcdeeaced608b1b6044820152606490fd5b60208101805190939291906001600160801b03908116614e30575090925050565b9081611bd981614e53614e49614e5c968651168861321c565b828a511690613245565b9751168761321c565b10614e6357565b906136b390613c18565b92919060009160018060a01b039485831684526020601781526040852054808411615103575b5082156150c757614ea2613ceb565b968582604051614eb1816130f4565b8281520152614ec08489614e0f565b9560018060801b039384614ed9818a16828d51166148ba565b168a52614f18848b0186614ef2818a16828451166148ba565b1680915261497e878b9d511660018060801b031660018060801b03196014541617601455565b82871682526017845260408220614f30878254613273565b90558260095416600e549560405190638eb22cdd60e01b82528760048301528a6024830152600160448301528682606481865afa918215611cfa578592615098575b5080602454169492803b15610a5f5782600091614fa89a83604051809d81958294630208d92960e11b8452308d60048601614890565b03925af1948515610c5b577fc8e512d8f188ca059984b5853d2bf653da902696b8512785b182b2c813789a6e988796615082575b50614fea9082841690613d37565b1660018060801b031960245416176024558383169081835260258752604083206026549081855288526040842054821160001461505b57505081526025855260408120602654825285528060408120555b1561505557508060095416955b60405195865216941692a4565b95615048565b909183526025875260408320908352865261507b60408320918254613273565b905561503b565b61508d9194506130b0565b600092614fea614fdc565b9091508681813d83116150c0575b6150b08183613146565b81010312610a6457519038614f72565b503d6150a6565b6064906040519062461bcd60e51b82526004820152601560248201527453474c3a206e6f7468696e6720746f20726570617960581b6044820152fd5b925038614e93565b60405190615118826130f4565b60038252623f3f3f60e81b6020830152565b90815181101561513b570160200190565b634e487b7160e01b600052603260045260246000fd5b60ff1660ff811461322f5760010190565b8051604081106151da57508051810190602081818401930312610a5f576020810151906001600160401b038211610a5f570181603f82011215610a5f5760208101516151ad81613167565b926151bb6040519485613146565b81845260408284010111610a5f576136b3916040602085019101612ee0565b6020929083036152c8576000805b60ff811685811090816152a9575b501561520a5761520590615151565b6151e8565b9260ff8094169261521a84613167565b936152286040519586613146565b808552615237601f1991613167565b013687860137825b8581168781108061528c575b156152815761527c91906152766001600160f81b031961526b838861512a565b5116871a918861512a565b53615151565b61523f565b505094505050905090565b506001600160f81b03196152a0828661512a565b5116151561524b565b6001600160f81b031991506152be908661512a565b51161515386151f6565b9150506136b361510b56fe9ed03113de523cebfe5e49d5f8e12894b1c0d42ce805990461726444c90eab87ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa264697066735822122031ecdd56d2974cea8d52e59827623447bd12db91d83dc789de7f160f3febe1e164736f6c63430008120033", - "deployedBytecode": "0x608080604052600436101561001357600080fd5b600090813560e01c908162a02a2014612e585750806302ce728f14612e2f57806306fdde0314612d78578063078dfbe714612c79578063095ea7b314612c525780630c4e84f014612b3a57806318160ddd14612b195780631c9e379b14612ae05780631da8bf1014612a2b5780631ee9c8f2146125e357806323b872dd146124405780632a9399d91461202c578063313ce56714611ff8578063331960ff14611fda57806334d441d014611fbc5780633644e51514611fa157806337b6b7b914611f8357806338d52e0f14611f5a5780633ba0b9a914611f3c5780633f741adb14611f1757806340626d8b14611ef957806344de240a14611edb578063473e3ce714611ebd57806348e4163e14611e845780634d7f2a3414611e665780634e71e0c814611db8578063529898f214611d9b57806352f353eb14611d745780635514023214611d4d57806355c2ab9414611d235780635793546214611d0557806358db9afe146118c55780635dfe04e8146118665780636c3d8b8f1461183d57806370a082311461180457806372778547146117cc57806374645ff3146117a15780637dc0d1d0146117785780637ecebe001461173f5780637fa0b84e1461170d578063821226e8146116ef5780638285ef40146116bd5780638c5d0ed31461169f5780638da5cb5b14611676578063910dd7c8146113fd578063959916dc146113df57806395d89b411461132557806399a97028146112f55780639c5d7192146112d75780639e15e89f1461129c578063a9059cbb146111b9578063b0e21e8a1461119b578063b27c0e7414611160578063bb4cfe3b14611142578063ce8849ed14611119578063d3fb2a3814610c9d578063d49dffa714610651578063d505accf146104cb578063d8dfeb45146104a2578063dd62ed3e14610453578063de4065771461042a578063e0996cb61461040c578063e30c3978146103e3578063ea64dd56146103c5578063eec0f42e146103a7578063f42760b714610389578063f8ba4cff1461036d578063f9557ccb146103375763ffe04c661461031757600080fd5b346103345780600319360112610334576020602954604051908152f35b80fd5b5034610334578060031936011261033457602454604080516001600160801b038316815260809290921c602083015290f35b0390f35b503461033457806003193601126103345761038661423f565b80f35b50346103345780600319360112610334576020602a54604051908152f35b50346103345780600319360112610334576020600c54604051908152f35b50346103345780600319360112610334576020601f54604051908152f35b50346103345780600319360112610334576006546040516001600160a01b039091168152602090f35b50346103345780600319360112610334576020601d54604051908152f35b50346103345780600319360112610334576009546040516001600160a01b039091168152602090f35b50346103345760403660031901126103345761046d612ea0565b6040610477612eb6565b9260018060a01b03809316815260026020522091166000526020526020604060002054604051908152f35b5034610334578060031936011261033457600b546040516001600160a01b039091168152602090f35b5034610334576104da36612f46565b9083959495421161060c576105b8916105b09160018060a01b0394858a169687600052600460205260406000209081549161051483613c18565b90556040519060208201927f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e2668452600060408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e081526105748161312a565b51902061057f6138cb565b9060405190602082019261190160f01b845260228301526042820152604281526105a88161310f565b519020613ba0565b919091613aa1565b16036105c75761038692613c75565b60405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152606490fd5b60405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b5061014036600319011261033457610667612ea0565b606435151560643503610a5f576001600160401b038060843511610c9957606060843536036003190112610c995760a43511610a505760e060a43536036003190112610a505760803660c3190112610a5057600560005260076020527fbcdda56b5d08466ec462cbbe0adfa57cb0a15fcc8940ef68f702f21b787bc935546106f29060ff1615614362565b6106fa613474565b505061070461423f565b6107196001600160a01b0382163014156143df565b610727604460a4350161442a565b60c4356001600160a01b0381169003610a5f5761074a61074f9160c435906147a3565b614439565b60243580610afd575b506107da6107ac6107d46107ce6107b2620186a061077a602f5460443561321c565b0461078a60115491604435613280565b600d5460ff906107a2906001600160a01b0316614543565b1695869289613628565b906146a9565b6001600160a01b0386168752601860205260408720549061321c565b91613265565b90613245565b336001600160a01b03831603610aa9575b6107f590826146ec565b610836604061080760443584806148d3565b905060018060a01b0360095416600e548684518096819582946311a5cc7760e31b84528a309160048601614492565b03925af1908115610a9e578391610a6e575b50600d546001600160a01b03169060643515610a6857475b823b15610a645760405191633cb7ea1d60e11b8352600483015260018060a01b0384166024830152610100604483015260a4356004013561010483015261ffff6108ae602460a43501613182565b1661012483015261ffff6108c6604460a43501613182565b166101448301526001600160a01b036108e360a435606401612ecc565b166101648301526109af61094161091a610907608460a4350160a4356004016144c1565b60e06101848801526101e48701916144f2565b61092d60a480350160a4356004016144c1565b86830361010319016101a4880152906144f2565b6001600160a01b0361095760a43560c401612ecc565b166101c4850152838103600319016064850152606061099f6004608435016001600160a01b0361098682612ecc565b16845260843560248101356020860152604401906144c1565b91909281604082015201916144f2565b6001600160a01b0360c4358116608485015290939060e43590811690819003610a5f5760a4840152610104356001600160a01b03811690819003610a5f5760c4840152610124356001600160a01b0381169190829003610a5f5783879593818795819560e483015203925af18015610a5457610a3c575b50610386610a3783601154906145b1565b61439f565b610a45906130b0565b610a50578138610a26565b5080fd5b6040513d84823e3d90fd5b600080fd5b8480fd5b34610860565b610a90915060403d604011610a97575b610a888183613146565b81019061447c565b5038610848565b503d610a7e565b6040513d85823e3d90fd5b806107eb5760405162461bcd60e51b815260206004820152602160248201527f42696742616e673a20616c6c6f77616e63655368617265206e6f742076616c696044820152601960fa1b6064820152608490fd5b602060018060a01b0360095416916064600c546040519485938492638eb22cdd60e01b8452600484015260248301528760448301525afa908115610a9e578391610c67575b50610b4d81836146ec565b8015610bdb575b60018060a01b03821660005260186020526040600020610b75828254613280565b9055610b8381601554613280565b60155560018060a01b038216600052602560205260406000206027546000526020526040600020610bb5828254613280565b90556001600160a01b038216806000805160206152d4833981519152600080a438610758565b5060018060a01b03600954166020600c54606460405180948193638eb22cdd60e01b8352600483015260006024830152600060448301525afa908115610c5b57600091610c29575b50610b54565b906020823d602011610c53575b81610c4360209383613146565b8101031261033457505138610c23565b3d9150610c36565b6040513d6000823e3d90fd5b90506020813d602011610c91575b81610c8260209383613146565b81010312610a5f575138610b42565b3d9150610c75565b8280fd5b503461033457610160366003190112610334576001600160a01b039060043582811690819003610a50576001600160401b039260243584811161111557610ce8903690600401612f95565b909460443593838516809503610a5f57610d0784600554163314613191565b806110d7575b5081610f5a575b50509080929350610f1a575b505060643580610f02575b5060843580610eea575b5060a43580610ed3575b5060c43580610eaf575b5060e43580610e8b575b506101043580610e5a575b506101243580610de6575b506101443580610d77575080f35b601e548110610d8657601f5580f35b60405162461bcd60e51b815260206004820152603260248201527f4d61726b65743a206c69717569646174696f6e436f6c6c61746572616c697a616044820152711d1a5bdb94985d19481d1bdbc81cdb585b1b60721b6064820152608490fd5b610df5620186a08211156131dc565b601f548111610e0757601e5538610d69565b60405162461bcd60e51b815260206004820152602560248201527f4d61726b65743a20636f6c6c61746572616c697a6174696f6e5261746520746f6044820152646f2062696760d81b6064820152608490fd5b806016547fae6e0ab3b95f0a53ff9660a390ccedcbbf1f2355dce974a9841af106fddcfaba8480a360165538610d5e565b610e99620186a082106131dc565b610ea6601b5482116131dc565b601c5538610d53565b610ebd620186a082106131dc565b610eca601c5482106131dc565b601b5538610d49565b610ee1620186a082106131dc565b601d5538610d3f565b610ef9620186a08211156131dc565b601a5538610d35565b610f11620186a08211156131dc565b60195538610d2b565b816008549182167f5a62d22209e370e38eea92cfddcd228e656e6ec139243392a760a7769f5877fd8580a36001600160a01b031916176008553880610d20565b81116110c357610f6b601054612ff1565b601f8111611062575b5083601f8211600114610fdc5784958293949592610fd1575b50508160011b916000199060031b1c1916176010555b7fa6f004921c944d4b8bf6e38462b00f36a58d62495d56b51f571ab78f732c98158380a19082913880610d14565b013590503880610f8d565b60108552601f198216957f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae672918660205b89821061104a5750508360019596979810611030575b505050811b01601055610fa3565b0135600019600384901b60f8161c19169055388080611022565b8060018496829495870135815501950192019061100c565b601085527f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae672601f830160051c8101602084106110bc575b601f90920160051c01905b8181106110b15750610f74565b8581556001016110a4565b5080611099565b634e487b7160e01b84526041600452602484fd5b600f80546001600160a01b0319169190911790557f0b2d6eb667d0522c3eb86e4288afecae6c11591ffd1345d4d12407e0598bca9b8580a138610d0d565b8380fd5b50346103345780600319360112610334576008546040516001600160a01b039091168152602090f35b50346103345780600319360112610334576020601e54604051908152f35b50346103345780600319360112610334576060602354604051906001600160401b0380821683528160401c16602083015260801c6040820152f35b50346103345780600319360112610334576020601a54604051908152f35b5034610334576040366003190112610334576111d3612ea0565b6024358092811580159061128a575b61121a575b50506040519182526001600160a01b03169033906000805160206152f483398151915290602090a3602060405160018152f35b33815260016020526040812054611233838210156139f5565b6001600160a01b038416903382900361124e575b50506111e7565b60409361126591611260841515613a3a565b613273565b33835260016020528383205581522061127f838254613280565b905581388080611247565b50336001600160a01b038416146111e2565b50346103345760403660031901126103345760606112c46112bb612ea0565b602435906133b3565b9060405192835260208301526040820152f35b50346103345780600319360112610334576020602b54604051908152f35b503461033457604036600319011261033457602061131d611314612ea0565b60243590613799565b604051908152f35b5034610334578060031936011261033457808060018060a01b03600b541660405160208101906395d89b4160e01b825260048152611362816130f4565b51915afa61136e614513565b9150156113ce5761138161036991615162565b6113ba6023604051809362746d2d60e81b60208301526113aa8151809260208686019101612ee0565b8101036003810184520182613146565b604051918291602083526020830190612f03565b506103696113da61510b565b611381565b50346103345780600319360112610334576020602f54604051908152f35b5034610334576040366003190112610334576004356001600160401b038111610a505736602382011215610a505780600401359061143a82613167565b906114486040519283613146565b82825283602091828401943660248284010111610c99578060248593018737840101526024359061ffff8216809203610a5f576101009384848051810103126116725761149490613467565b906114a160408501613a7f565b6114ad60608601613a7f565b9560808601519560a0810151916114c660c08301613a93565b9060e08301519201519260018060a01b03808096169a169781421161162d57926105b09289888d9897946115a4978e8d600014611606577f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e266945b8c6000526004855260406000209283549361153a85613c18565b905560405195860196875260408601528c6060860152608085015260a084015260c083015260e082015260e081526115718161312a565b51902061157c6138cb565b90604051908a82019261190160f01b845260228301526042820152604281526105a88161310f565b16036115c25750156115b95761038692613c75565b61038692613c27565b6064906040519062461bcd60e51b82526004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152fd5b7f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d694611520565b60405162461bcd60e51b815260048101889052601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b8580fd5b50346103345780600319360112610334576005546040516001600160a01b039091168152602090f35b50346103345780600319360112610334576020601b54604051908152f35b5034610334578060031936011261033457601454604080516001600160801b038316815260809290921c602083015290f35b50346103345780600319360112610334576020602d54604051908152f35b50346103345760403660031901126103345761173461172a612ea0565b6024359033613c27565b602060405160018152f35b5034610334576020366003190112610334576020906040906001600160a01b03611767612ea0565b168152600483522054604051908152f35b5034610334578060031936011261033457600f546040516001600160a01b039091168152602090f35b50346103345780600319360112610334576103696040516113ba816117c58161302b565b0382613146565b50346103345760203660031901126103345760043590600982101561033457602060ff6117f884612fc2565b54166040519015158152f35b5034610334576020366003190112610334576020906040906001600160a01b0361182c612ea0565b168152600183522054604051908152f35b5034610334578060031936011261033457600a546040516001600160a01b039091168152602090f35b503461033457806003193601126103345761187f613ccc565b50608061188a613d50565b509350505050604051916001600160401b0380825116845260208201511660208401526040600180861b039101511660408301526060820152f35b50346103345760a0366003190112610334576118df612ea0565b6001600160a01b036064358181169392602435929091859003610a5f576084356001600160401b038111610a645761191b903690600401612f95565b949060066000526020966007885261193b60ff6040600020541615614362565b611943613474565b505061194d61423f565b8385169561195d308814156143df565b60048986600a54166040519283809263433e762d60e01b82525afa908115611cfa57836119959261074a928891611ccd575b506147a3565b61199f81876146ec565b600087815260188a52604081206119b7838254613273565b90556119c582601554613273565b6015558560095416600c54813b15610c9957836119fd92849283604051809681958294630208d92960e11b84528c3060048601614890565b03925af18015610a5457611cbe575b508183897f8ad4d3ff00da092c7ad9a573ea4f5f6a3dffc6712dc06d3f78f49b862297c4028480a487815260258a5260408120602754908183528b5260408220548311600014611c98575087815260258a526040812060275482528a5260408120555b600c54600e54604051633d9545e960e11b81526004810192909252602482015260006044820152606481019190915260016084820181905260a48201526101408160c481855afa908115611c8d5784604094939288928291611c5c575b50611af086519b8c968795869463efa84c6d60e01b86526044359060048701614d3f565b03925af1938415611c4f5781958295611c28575b50611b13604435871015614dd1565b81526017865260408120549186611b3184611b2c613ceb565b614e0f565b9160095416916064600e546040519485938492638eb22cdd60e01b845260048401526024830152600160448301525afa918215611c1c5791611be7575b5061131d93610a3793929111611b9457611b89908280614e6d565b505b601154906145b1565b50611b9d613ceb565b80516001600160801b03908116611bc2575050611bbc845b8280614e6d565b50611b8b565b8181611bd9611be2938a611bbc960151168961321c565b91511690613245565b611bb5565b929190508583813d8311611c15575b611c008183613146565b81010312610a5f57915190919061131d611b6e565b503d611bf6565b604051903d90823e3d90fd5b909450611c4591955060403d604011610a9757610a888183613146565b9490949338611b04565b50604051903d90823e3d90fd5b611c8091506101403d61014011611c86575b611c788183613146565b810190614c64565b38611acc565b503d611c6e565b6040513d86823e3d90fd5b9060409189825260258c528282209082528b5220611cb7828254613273565b9055611a6f565b611cc7906130b0565b38611a0c565b611ced91508d803d10611cf3575b611ce58183613146565b810190614c4a565b3861198f565b503d611cdb565b6040513d87823e3d90fd5b50346103345780600319360112610334576020601c54604051908152f35b503461033457806003193601126103345760206001600160401b03602c5460401c16604051908152f35b503461033457806003193601126103345760206001600160401b03602c5416604051908152f35b503461033457806003193601126103345760206001600160401b03602e5416604051908152f35b503461033457806003193601126103345760208054604051908152f35b50346103345780600319360112610334576006546001600160a01b039081811633819003611e2257806005549384167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08680a36001600160a01b0319928316176005551660065580f35b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b50346103345780600319360112610334576020602854604051908152f35b5034610334576020366003190112610334576020906040906001600160a01b03611eac612ea0565b168152601783522054604051908152f35b50346103345780600319360112610334576020601554604051908152f35b50346103345780600319360112610334576020600e54604051908152f35b50346103345780600319360112610334576020601654604051908152f35b503461033457606036600319011261033457602061131d6044356024356004356132a6565b50346103345780600319360112610334576020601154604051908152f35b5034610334578060031936011261033457600d546040516001600160a01b039091168152602090f35b50346103345780600319360112610334576020601254604051908152f35b5034610334578060031936011261033457602061131d6138cb565b50346103345780600319360112610334576020601954604051908152f35b50346103345780600319360112610334576020601354604051908152f35b5034610334578060031936011261033457600d54602090612021906001600160a01b0316614543565b60ff60405191168152f35b5060031961012036820112610a5057612043612ea0565b9061204c612f37565b90606435916001600160401b0390818411611672576060838536030112611672576084359182116116725760e08383360301126116725760803660a3190112611672576006600052602090600782526120ad60ff6040600020541615614362565b6120b5613474565b50506120bf61423f565b6001600160a01b03868116939092906120da308614156143df565b60448101916120e88361442a565b9760a435868116998a8203610a5f576121049161074a916147a3565b856009541697828c6064600c546040519c8d938492638eb22cdd60e01b84526004840152602435602484015260448301525afa9889156123da578b908d9a61240d575b50896121586122129b6040936146ec565b89600052601885528160002061216f828254613273565b905561217d81601554613273565b60155580308b7f8ad4d3ff00da092c7ad9a573ea4f5f6a3dffc6712dc06d3f78f49b862297c402600080a489600052602585528160002060275490816000528652826000205482116000146123e5575089600052602585528160002060275460005285526000828120555b8d896009541690600c54908451809e819582946311a5cc7760e31b84523090309060048601614492565b03925af19889156123da578c996123b8575b50600b54871695156123b15747975b863b156123ad5760405199633cb7ea1d60e11b8b5260048b015260248a01526044890161010090528684600401610104968135888d015261ffff908c8260248a0161227d90613182565b1690610124015261228d90613182565b166101448c0152816122a160648801612ecc565b166101648c01526122b560848701826144c1565b6101848d0160e090526101e48d01906122cd926144f2565b9060a487016122db916144c1565b8c830361010319016101a48e01526122f392916144f2565b9460c40161230090612ecc565b166101c48a015288840301606489015280600401918661231f84612ecc565b168452602482013590840152604401612337916144c1565b60606040840181905261234b9301916144f2565b95608486015260c435838116809103610a5f5760a486015260e435838116809103610a5f5760c486015235918216809203610a5f5783879593818795819560e483015203925af18015610a5457610a3c5750610386610a3783601154906145b1565b8c80fd5b3497612233565b6123d291995060403d604011610a9757610a888183613146565b509738612224565b6040513d8e823e3d90fd5b8a600052602586528260002090600052855281600020612406828254613273565b90556121e8565b809a50848092503d8311612439575b6124268183613146565b81010312610a5f579751978a6040612147565b503d61241c565b50346103345760603660031901126103345761245a612ea0565b90612463612eb6565b60443591826124a1575b506040519182526001600160a01b039081169216906000805160206152f483398151915290602090a3602060405160018152f35b6001600160a01b038481168083526001602090815260408420549286906124ca828610156139f5565b8616938484036124df575b505050505061246d565b8386526002835260408620336000528352604060002054600019810361254d575b509260016020969361252b87946040976112606000805160206152f48339815191529c9a1515613a3a565b9285525283832055815220612541858254613280565b905591388085816124d5565b909181106125a3579260016020969361252b8a6000805160206152f48339815191529a989561257e8260409a613273565b8689526002855289892033600052855289600020559497509497995050939650612500565b60405162461bcd60e51b815260048101849052601860248201527745524332303a20616c6c6f77616e636520746f6f206c6f7760401b6044820152606490fd5b50346103345760c0366003190112610334576125fd612ea0565b60643591906001600160a01b0360843581811692908390036111155760a4356001600160401b038111610a6457612638903690600401612f95565b9093600586526020966007885261265660ff60408920541615614362565b61265e613474565b505061266861423f565b84841691612678308414156143df565b60048987600a54166040519283809263433e762d60e01b82525afa908115612a2057826126af9261074a928c91611ccd57506147a3565b856009541693600e549060405191638eb22cdd60e01b968784528160048501526044356024850152600160448501528c84606481845afa9384156123da578c946129f1575b5083612997575b505061276461270d602435858a6148d3565b905061271f600e5491600c5495613280565b60405180938192633d9545e960e11b83526101409788956004850160a091949360019360c0830196835260208301526000604083015260608201528260808201520152565b0381875afa92831561298c5788936040959387938e938493612967575b50506127a39087519d8e978896879563efa84c6d60e01b875260048701614d3f565b03925af195861561295c578796612933575b506127c290871015614dd1565b6127cc85846146ec565b8491600095156128c3575b5080855260188752604085206127ee838254613280565b90556127fc82601554613280565b601555600c54948460095416803b15610a5f57836000916128369883604051809b81958294630208d92960e11b8452308d60048601614890565b03925af1948515610c5b5761131d96610a37966128a1575b506000805160206152d48339815191529083835260258a526040832060275484528a5260408320612880868254613280565b9055821561289b5780600954165b169180a4601154906145b1565b8561288e565b6128ac9192506130b0565b6000906000805160206152d483398151915261284e565b909150868460095416916064600c54916040519485938492835260048301528960248301528960448301525afa908115611cfa578591612906575b5090386127d7565b90508681813d831161292c575b61291d8183613146565b81010312610a645751386128fe565b503d612913565b6127c2975061295291965060403d604011610a9757610a888183613146565b96909695906127b5565b6040513d89823e3d90fd5b6127a3929350908161298492903d10611c8657611c788183613146565b919038612781565b6040513d8d823e3d90fd5b803b156129ed5783918c9186838c6129c560405197889687958694630208d92960e11b865260048601614890565b03925af1801561298c576129da575b806126fb565b6129e6909a919a6130b0565b98386129d4565b8b80fd5b9093508c81813d8311612a19575b612a098183613146565b810103126129ed575192386126f4565b503d6129ff565b6040513d8b823e3d90fd5b503461033457612a3a36612f46565b9083959495421161060c57612ad1916105b09160018060a01b03948a868b169788825260046020526040822090815491612a7383613c18565b90556040519160208301937f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d6855260408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e081526105748161312a565b16036105c75761038692613c27565b5034610334576020366003190112610334576020906040906001600160a01b03612b08612ea0565b168152601883522054604051908152f35b5034610334578060031936011261033457602060245460801c604051908152f35b5034610334576040366003190112610334576004356009811015610a5057612b60612f28565b6008549091906001600160a01b03163303612c165760ff612b8082612fc2565b54161515911515918214612bdc57808260ff612b9e612bcc94612fc2565b54161515827feeec81de25875ce1725479bb76f720a8defdb43dea041919ae37bb4aae9847c08780a4612fc2565b9060ff8019835416911617905580f35b60405162461bcd60e51b81526020600482015260126024820152714d61726b65743a2073616d6520737461746560701b6044820152606490fd5b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881d5b985d5d1a1bdc9a5e995960621b6044820152606490fd5b503461033457604036600319011261033457611734612c6f612ea0565b6024359033613c75565b503461033457606036600319011261033457612c93612ea0565b612c9b612f28565b612ca3612f37565b9060018060a01b03928391612cbd83600554163314613191565b15612d61571690811590811591612d59575b5015612d1c57806005549283167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08580a36001600160a01b03199182161760055560068054909116905580f35b60405162461bcd60e51b81526020600482015260156024820152744f776e61626c653a207a65726f206164647265737360581b6044820152606490fd5b905038612ccf565b9150501660018060a01b0319600654161760065580f35b5034610334578060031936011261033457808060018060a01b03600b541660405160208101906306fdde0360e01b825260048152612db5816130f4565b51915afa612dc1614513565b915015612e1e57612dd461036991615162565b6113ba6034604051809373546170696f63612053696e67756c61726974792d60601b6020830152612e0e8151809260208686019101612ee0565b8101036014810184520182613146565b50610369612e2a61510b565b612dd4565b50346103345780600319360112610334576040612e4a613474565b825191151582526020820152f35b905034610a50576040366003190112610a50576040602092612e78612ea0565b612e80612eb6565b6001600160a01b0391821683526003865283832091168252845220548152f35b600435906001600160a01b0382168203610a5f57565b602435906001600160a01b0382168203610a5f57565b35906001600160a01b0382168203610a5f57565b60005b838110612ef35750506000910152565b8181015183820152602001612ee3565b90602091612f1c81518092818552858086019101612ee0565b601f01601f1916010190565b602435908115158203610a5f57565b604435908115158203610a5f57565b60e0906003190112610a5f576001600160a01b03906004358281168103610a5f57916024359081168103610a5f5790604435906064359060843560ff81168103610a5f579060a4359060c43590565b9181601f84011215610a5f578235916001600160401b038311610a5f5760208381860195010111610a5f57565b6009811015612fdb576000526007602052604060002090565b634e487b7160e01b600052602160045260246000fd5b90600182811c92168015613021575b602083101461300b57565b634e487b7160e01b600052602260045260246000fd5b91607f1691613000565b6010546000929161303b82612ff1565b908181526001928381169081600014613095575060011461305b57505050565b9092935060106000526020928360002092846000945b8386106130815750505050010190565b805485870183015294019385908201613071565b91935050602093945060ff191683830152151560051b010190565b6001600160401b0381116130c357604052565b634e487b7160e01b600052604160045260246000fd5b606081019081106001600160401b038211176130c357604052565b604081019081106001600160401b038211176130c357604052565b608081019081106001600160401b038211176130c357604052565b61010081019081106001600160401b038211176130c357604052565b90601f801991011681019081106001600160401b038211176130c357604052565b6001600160401b0381116130c357601f01601f191660200190565b359061ffff82168203610a5f57565b1561319857565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b156131e357565b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881b9bdd081d985b1a59607a1b6044820152606490fd5b8181029291811591840414171561322f57565b634e487b7160e01b600052601160045260246000fd5b811561324f570490565b634e487b7160e01b600052601260045260246000fd5b604d811161322f57600a0a90565b9190820391821161322f57565b9190820180921161322f57565b8181039291600013801582851316918412161761322f57565b6014549192916132e9916132e0916132d6916132cc906001600160801b0383169061321c565b9060801c90613245565b93601f549061321c565b6107d483613265565b8083106133ab576132fd6133339184613273565b9161332e6107ce613325601e5461331f61331686613265565b60205490613280565b9061321c565b6107d484613265565b61328d565b6509184e72a0009081810291818305149015171561322f57670de0b6b3a76400009182810292818405149015171561322f57801561324f57600160ff1b9180831460001983141661322f57059060008212156133a457811461322f57600003905b80821161339f575090565b905090565b5090613394565b505050600090565b6001600160a01b03811660008181526017602052604081205491949392909190811561345b579160409161343761344f959483602086516133f3816130f4565b828152015261341186613404613d50565b5050505050939050613628565b815190936001600160801b039160209161342d9184169061321c565b9201511690613245565b81811061345357035b958152601860205220546136ee565b9091565b505080613440565b50509192505080918190565b51908115158203610a5f57565b600f546040805163d6d7d52560e01b8152602060048201529290916001600160a01b03168284806134a76024820161302b565b0381600080955af180156135d05781948291613594575b509284156135375783156134fd57507f9f9192b5edb17356c524e08d9e025c8e2f6307e6ea52fb7968faa3081f51c3c883918260115580a25b42601355565b5162461bcd60e51b81526020600482015260146024820152734d61726b65743a20696e76616c6964207261746560601b6044820152606490fd5b9192505061354a60135460125490613280565b421161355a5750601154906134f7565b5162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881c985d19481d1bdbc81bdb1960621b6044820152606490fd5b809550848092503d83116135c9575b6135ad8183613146565b810103126103345760206135c085613467565b940151386134be565b503d6135a3565b508251903d90823e3d90fd5b156135e357565b60405162461bcd60e51b815260206004820152601e60248201527f4d61726b65743a2065786368616e676552617465206e6f742076616c696400006044820152606490fd5b6136338215156135dc565b60018060a01b036020816009541691600c5490600094168452601882526064604085205491604051948593849263442c159960e01b8452600484015260248301528660448301525afa918215611c1c5780926136b6575b5050906136ae6136a56136b393620186a0602154049061321c565b601e549061321c565b613245565b90565b9091506020823d82116136e6575b816136d160209383613146565b810103126103345750516136ae6136a561368a565b3d91506136c4565b6136f98215156135dc565b602060018060a01b0360095416916064600c54604051948593849263442c159960e01b845260048401526024830152600060448301525afa908115610c5b57600091613766575b50906136ae613752926021549061321c565b620186a0613762601e548361321c565b0491565b906020823d8211613791575b8161377f60209383613146565b810103126103345750516136ae613740565b3d9150613772565b6001600160a01b031660008181526018602052604081205490926137bc916136ee565b9183526017602052604083205480156138c55781156138c5578181106138c557828110156138bb57601454613805918391611260916132cc906001600160801b0383169061321c565b90620186a092838302928084048514901517156138a75761382a92916107d491613273565b91601b5491601c549361383d858561328d565b80820291848212600160ff1b8214166138a7578183051490151715613893570581848201948512911290801582169115161761387f575080821261339f575090565b634e487b7160e01b81526011600452602490fd5b634e487b7160e01b83526011600452602483fd5b634e487b7160e01b85526011600452602485fd5b50505050601b5490565b50505090565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031614806139cc575b15613926577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f000000000000000000000000000000000000000000000000000000000000000082527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a0815260c081018181106001600160401b038211176130c35760405251902090565b507f000000000000000000000000000000000000000000000000000000000000000046146138fd565b156139fc57565b60405162461bcd60e51b815260206004820152601660248201527545524332303a2062616c616e636520746f6f206c6f7760501b6044820152606490fd5b15613a4157565b60405162461bcd60e51b815260206004820152601660248201527545524332303a206e6f207a65726f206164647265737360501b6044820152606490fd5b51906001600160a01b0382168203610a5f57565b519060ff82168203610a5f57565b6005811015612fdb5780613ab25750565b60018103613afa5760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b6044820152606490fd5b60028103613b475760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606490fd5b600314613b5057565b60405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608490fd5b9291906fa2a8918ca85bafe22016d0b997e4df60600160ff1b038311613c0c5791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa15611c4f5781516001600160a01b03811615613c06579190565b50600190565b50505050600090600390565b600019811461322f5760010190565b7fe50de2333c10a9502fcb1d8ae13a51bbf423153dfc63c2b8997665b32154afc360018060a01b038092169160009083825260036020526040822094169384825260205284604082205580a4565b909160207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259160018060a01b03809416938460005260028352604060002095169485600052825280604060002055604051908152a3565b60405190613cd9826130d9565b60006040838281528260208201520152565b60405190613cf8826130f4565b6014546001600160801b038116835260801c6020830152565b60405190613d1e826130f4565b6024546001600160801b038116835260801c6020830152565b6001600160801b03918216908216019190821161322f57565b613d58613ccc565b5060006020604051613d69816130f4565b828152015260006020604051613d7e816130f4565b8281520152604051613d8f816130d9565b6023546001600160401b03811682526001600160401b038160401c16602083015260801c60408201528091613dc2613ceb565b91613dcb613d11565b600954600e54825160405163442c159960e01b8152600481018390526001600160801b03909116602482015260006044820181905293959194919391926001600160a01b031690602081606481855afa8015610c5b576000906141e6575b8851613e3f92506001600160801b031690613280565b806141b1575060005b80613e606001600160401b0360208701511642613273565b948515614187575050426001600160401b031660208a8101919091528801516001600160801b03161561413d57506020670de0b6b3a7640000613ec285613ebd8c6001600160401b038d60018060801b039051169151169061321c565b61321c565b895191900496906001600160801b0390613ee190828a16908316613d37565b168952875160405163442c159960e01b815260048101929092526001600160801b031660248201526000604482015291829060649082905afa8015610c5b57600090614109575b8751613f3e92506001600160801b031690613280565b92613f6c846136ae620186a0613f56601a548a61321c565b60208c01516001600160801b031691900461321c565b6040890180519195916001600160801b038088169291613f8f9084908316613d37565b16905260208801805190916001600160801b0391613faf91908316613d37565b169052806140d4575060005b6029549093848281101561404f57613fd39083613273565b90670de0b6b3a7640000820291808304670de0b6b3a7640000149015171561322f576136ae6140276140216140136001600160401b039661403196613245565b93613ebd602d54958061321c565b83613280565b91848d511661321c565b168089526001600160401b03602c541680911061404b5750565b8852565b909150602a5480821161406157505050565b61406a91613273565b670de0b6b3a7640000810290808204670de0b6b3a7640000149015171561322f576001600160401b03916136ae6140ad6140216140136140b695602b5490613245565b848d511661321c565b81602c5460401c168082116140cc575b50168852565b9050386140c6565b87516001600160801b0316670de0b6b3a764000081810292918084049091149015171561322f5761410491613245565b613fbb565b506020813d602011614135575b8161412360209383613146565b81010312610a5f57613f3e9051613f28565b3d9150614116565b9697939450509350506001600160401b038151166001600160401b03602e541680910361417b575b509392614170613d11565b926000926000929190565b81526001925038614165565b97509850505050509250509161419b613ceb565b916141a4613d11565b9160009160009190600090565b87516001600160801b0316670de0b6b3a764000081810292918084049091149015171561322f576141e191613245565b613e48565b506020813d602011614212575b8161420060209383613146565b81010312610a5f57613e3f9051613e29565b3d91506141f3565b601480546001600160801b031660809290921b6001600160801b031916919091179055565b6143266020806142fc614250613d50565b9396959390929015614328575050506001600160401b03602e54166000807f33af5ce86e8438eff54589f85332916444457dfa8685493fbd579b809097026b88604051838152a45b805185820151604092830151921b67ffffffffffffffff60401b166001600160401b03919091161760809190911b6001600160801b0319908116919091176023558151601480549092166001600160801b039182161790915594859101511661421a565b8051910151821660801b6001600160801b0319166001600160801b03929091169190911617602455565b565b7f33af5ce86e8438eff54589f85332916444457dfa8685493fbd579b809097026b886001600160401b0386511694604051908152a4614298565b1561436957565b60405162461bcd60e51b815260206004820152600e60248201526d13585c9ad95d0e881c185d5cd95960921b6044820152606490fd5b156143a657565b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881a5b9cdbdb1d995b9d607a1b6044820152606490fd5b156143e657565b606460405162461bcd60e51b815260206004820152602060248201527f4d61726b65743a2063616e6e6f742065786563757465206f6e20697473656c666044820152fd5b3561ffff81168103610a5f5790565b1561444057565b60405162461bcd60e51b815260206004820152601460248201527329a3a61d1024b73b30b634b21039bbb0b83832b960611b6044820152606490fd5b9190826040910312610a5f576020825192015190565b9081526001600160a01b0391821660208201529116604082015260006060820152608081019190915260a00190565b9035601e1982360301811215610a5f5701602081359101916001600160401b038211610a5f578136038313610a5f57565b908060209392818452848401376000828201840152601f01601f1916010190565b3d1561453e573d9061452482613167565b916145326040519384613146565b82523d6000602084013e565b606090565b60008091604051602081019063313ce56760e01b825260048152614566816130f4565b51916001600160a01b03165afa61457b614513565b90806145a6575b156145a057602081805181010312610a5f5760206136b39101613a93565b50601290565b506020815114614582565b919060018060a01b0380600094168452602060178152604085205490811561469f57601881526040862054801561469857816145eb613ceb565b9460095416916064600c54604051948593849263442c159960e01b8452600484015260248301528b60448301525afa968715611c1c578097614662575b505061342d6146476136a561465d969798620186a0602154049061321c565b95613ebd60018060801b0394858751169061321c565b111590565b9096508187813d8311614691575b61467a8183613146565b81010312610334575094519461342d614647614628565b503d614670565b5050505050565b5060019450505050565b91821580156146e4575b6133ab576001810180911161322f576146d29261331f6136ae92613265565b6005810180911161322f57600a900490565b5081156146b3565b6001600160a01b0316338103614700575050565b60008181526020906003825260409182822033835281528483832054106147695783825260038152828220338352815282822054600101614742575050505050565b61475d93825260038152828220903383525220918254613273565b90553880808080614698565b60649083519062461bcd60e51b82526004820152601460248201527313585c9ad95d0e881b9bdd08185c1c1c9bdd995960621b6044820152fd5b600a5460405163dbd01de160e01b815260209290916001600160a01b039084908490600490829085165afa8015610c5b578493600091614852575b50918161ffff936044936040519889968795633a304d8b60e21b8752166004860152166024840152165afa908115610c5b5760009161481e575b50905090565b82813d831161484b575b6148328183613146565b81010312610334575061484490613467565b8038614818565b503d614828565b9091929381813d8311614889575b61486a8183613146565b81010312610a50575190828216820361033457508392919060446147de565b503d614860565b6001600160a01b039182168152911660208201526040810191909152606081019190915260800190565b6001600160801b03918216908216039190821161322f57565b92909192620186a06148e7602f548661321c565b046148f0613ceb565b946148fb8282613280565b9460409384519661490b886130f4565b60008089526020988901819052895190956001600160801b039290918316614bea578261493f8c8280855b16915116613d37565b168b526149838a8c018461495881851682845116613d37565b1680915261497e85849e511660018060801b031660018060801b03196014541617601455565b61421a565b6016548015908115614bdb575b5015614b9d57859060018060a01b0380951680895260178c528989206149b7838254613280565b90558951918483528c8301527f3a5151e57d3bc9798e7853034ac52293d1a0e12a2b44725e75b03b21f86477a68a87891693a480614b7c575b50878260095416946064600e5489519788938492638eb22cdd60e01b8452600484015260248301528960448301525afa938415614b72578594614b43575b508397614a39613d11565b818101916103e88484511610614b0f575090614a89839283614a63614ab0968a16828451166148ba565b1690819052602480546001600160801b0319166001600160801b03909216919091179055565b51602480546001600160801b03169290911660801b6001600160801b031916919091179055565b6009541690600e5490823b15610a64579184939184879694614ae8985198899586948593630208d92960e11b85523060048601614890565b03925af1918215614b05575050614afc5750565b614326906130b0565b51903d90823e3d90fd5b60649089519062461bcd60e51b82526004820152600e60248201526d14d1d30e881b5a5b881b1a5b5a5d60921b6044820152fd5b9093508781813d8311614b6b575b614b5b8183613146565b81010312610a6457519238614a2e565b503d614b51565b86513d87823e3d90fd5b82600a5416865260018952614b95878720918254613280565b9055386149f0565b875162461bcd60e51b8152600481018b9052601760248201527614d1d30e88189bdc9c9bddc818d85c081c995858da1959604a1b6044820152606490fd5b90508360145416111538614990565b828b8b81019280614c1d614c0e614c04868851168461321c565b8686511690613245565b9585611bd9818751168961321c565b10614c2f575b90828061493f93614936565b92908280614c3f61493f94613c18565b959293505050614c23565b90816020910312610a5f575161ffff81168103610a5f5790565b809103906101408212610a5f576040805192614c7f846130d9565b60808112610a5f578151614c928161310f565b614c9b84613a7f565b815260208401516020820152614cb2838501613a7f565b838201526060840151606082015284526080607f19820112610a5f5781908151614cdb8161310f565b6080850151815260a0850151602082015260c08501518382015260e08501516060820152602086015260ff190112610a5f57614d34610120825193614d1f856130f4565b614d2c6101008201613467565b855201613467565b602083015282015290565b91926136b3959360206040845194606060018060a01b039687815116895284810151858a0152878482015116848a015201516060880152606083820151805160808a01528481015160a08a01528381015160c08a0152015160e088015201518051151561010087015201511515610120850152610140840152166101608201526101a0908161018082015201916144f2565b15614dd857565b60405162461bcd60e51b815260206004820152600f60248201526e0a68e987440dcdee840cadcdeeaced608b1b6044820152606490fd5b60208101805190939291906001600160801b03908116614e30575090925050565b9081611bd981614e53614e49614e5c968651168861321c565b828a511690613245565b9751168761321c565b10614e6357565b906136b390613c18565b92919060009160018060a01b039485831684526020601781526040852054808411615103575b5082156150c757614ea2613ceb565b968582604051614eb1816130f4565b8281520152614ec08489614e0f565b9560018060801b039384614ed9818a16828d51166148ba565b168a52614f18848b0186614ef2818a16828451166148ba565b1680915261497e878b9d511660018060801b031660018060801b03196014541617601455565b82871682526017845260408220614f30878254613273565b90558260095416600e549560405190638eb22cdd60e01b82528760048301528a6024830152600160448301528682606481865afa918215611cfa578592615098575b5080602454169492803b15610a5f5782600091614fa89a83604051809d81958294630208d92960e11b8452308d60048601614890565b03925af1948515610c5b577fc8e512d8f188ca059984b5853d2bf653da902696b8512785b182b2c813789a6e988796615082575b50614fea9082841690613d37565b1660018060801b031960245416176024558383169081835260258752604083206026549081855288526040842054821160001461505b57505081526025855260408120602654825285528060408120555b1561505557508060095416955b60405195865216941692a4565b95615048565b909183526025875260408320908352865261507b60408320918254613273565b905561503b565b61508d9194506130b0565b600092614fea614fdc565b9091508681813d83116150c0575b6150b08183613146565b81010312610a6457519038614f72565b503d6150a6565b6064906040519062461bcd60e51b82526004820152601560248201527453474c3a206e6f7468696e6720746f20726570617960581b6044820152fd5b925038614e93565b60405190615118826130f4565b60038252623f3f3f60e81b6020830152565b90815181101561513b570160200190565b634e487b7160e01b600052603260045260246000fd5b60ff1660ff811461322f5760010190565b8051604081106151da57508051810190602081818401930312610a5f576020810151906001600160401b038211610a5f570181603f82011215610a5f5760208101516151ad81613167565b926151bb6040519485613146565b81845260408284010111610a5f576136b3916040602085019101612ee0565b6020929083036152c8576000805b60ff811685811090816152a9575b501561520a5761520590615151565b6151e8565b9260ff8094169261521a84613167565b936152286040519586613146565b808552615237601f1991613167565b013687860137825b8581168781108061528c575b156152815761527c91906152766001600160f81b031961526b838861512a565b5116871a918861512a565b53615151565b61523f565b505094505050905090565b506001600160f81b03196152a0828661512a565b5116151561524b565b6001600160f81b031991506152be908661512a565b51161515386151f6565b9150506136b361510b56fe9ed03113de523cebfe5e49d5f8e12894b1c0d42ce805990461726444c90eab87ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa264697066735822122031ecdd56d2974cea8d52e59827623447bd12db91d83dc789de7f160f3febe1e164736f6c63430008120033", + "bytecode": "0x6101408060405234620001e5576200001781620001ea565b601381526001602082017f546170696f63612053696e67756c617269747900000000000000000000000000815260206040516200005481620001ea565b8381520192603160f81b845251902091208160e052610100918183524660a0526040519160208301907f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f92838352604085015260608401524660808401523060a084015260a0835260c083019280841060018060401b03851117620001cf5760408490525190206080523060c052610120908152600580546001600160a01b0319163390811790915560007f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a362013880601b5562015f90601c55612710601d55612ee06020557f0bd4060688a1800ae986e4840aebc924bb40b5bf44de4583df2257220b54b77c6027557f7d1dc38e60930664f8cbf495da6556ca091d2f92d6550877750c049864b182306028556161a86029556032603055615451928362000207843960805183613b60015260a05183613c2b015260c05183613b2a015260e05183613baf01525182613bd501525181613b8c0152f35b634e487b7160e01b600052604160045260246000fd5b600080fd5b604081019081106001600160401b03821117620001cf5760405256fe608080604052600436101561001357600080fd5b600090813560e01c908162a02a20146130b45750806302ce728f1461308b57806306fdde0314612fd4578063078dfbe714612ed5578063095ea7b314612eae5780630c4e84f014612d9657806318160ddd14612d755780631c9e379b14612d3c5780631da8bf1014612c8757806323b872dd14612aea5780632a9399d91461265a578063313ce56714612626578063331960ff1461260857806334d441d0146125ea5780633644e515146125cf57806337b6b7b9146125b157806338d52e0f146125885780633ba0b9a91461256a5780633f741adb1461254557806340626d8b1461252757806344de240a14612509578063473e3ce7146124eb57806348e4163e146124b25780634d7f2a34146124945780634e71e0c8146123e6578063529898f2146123c957806352f353eb146123a2578063551402321461237b57806355c2ab941461235157806357935462146123335780635dfe04e8146122d45780636c3d8b8f146122ab57806370a0823114612272578063727785471461223a57806374645ff31461220f5780637dc0d1d0146121e65780637ecebe00146121ad5780637fa0b84e1461217b578063821226e81461215d5780638285ef401461212b5780638c5d0ed31461210d5780638da5cb5b146120e4578063910dd7c814611e6b578063959916dc14611e4d57806395d89b4114611d9357806399a9702814611d6b5780639c5d719214611d4d5780639e15e89f14611d12578063a9059cbb14611c2f578063b0e21e8a14611c11578063b27c0e7414611bd6578063bb4cfe3b14611bb8578063ce8849ed14611b8f578063d3fb2a3814611717578063d49dffa7146110fb578063d4e4534e14610bc7578063d505accf14610a41578063d8dfeb4514610a18578063da863f0e146109ef578063dd62ed3e146109a0578063de40657714610977578063e0996cb614610959578063e30c397814610930578063e7d6de8014610470578063ea64dd5614610452578063eec0f42e14610434578063ef2b234a146103bd578063f42760b71461039f578063f8ba4cff14610383578063f9557ccb1461034d5763ffe04c661461032d57600080fd5b3461034a578060031936011261034a576020602a54604051908152f35b80fd5b503461034a578060031936011261034a57602554604080516001600160801b038316815260809290921c602083015290f35b0390f35b503461034a578060031936011261034a5761039c614491565b80f35b503461034a578060031936011261034a576020602b54604051908152f35b503461034a57602036600319011261034a576004356001600160a01b0381811691829003610430576103f4816005541633146133ed565b816021549182167ffb4fd7114609dd603b57adbc2082205bfbbcabf9265c4b437b472f5c592b8cd78580a36001600160a01b0319161760215580f35b8280fd5b503461034a578060031936011261034a576020600c54604051908152f35b503461034a578060031936011261034a576020601f54604051908152f35b503461034a57606036600319011261034a5761048a6130fc565b6044356001600160401b038111610430576104a99036906004016133c0565b600660005260076020527f55c5b153ab560fcde54a63b18c7f53d75501706907cef8767fbded79ab9997c7549192916104e59060ff16156145b4565b6104ed6136d0565b50506104f7614491565b61050c6001600160a01b038316301415614631565b602154610523906001600160a01b03161515614e9c565b61052f6024358361493e565b602154604051632b3297f960e01b815290602090829060049082906001600160a01b03165afa9081156109255785916108f6575b506001600160a01b0383166000908152601860205260408120805461058b90602435906134cf565b905561059b6024356015546134cf565b60155560018060a01b0360095416600c54813b15610430576105dc83928392604051948580948193630208d92960e11b8352602435908b3060048601614ae2565b03925af180156108eb5791859391602095936108dc575b5090602435906001600160a01b039081169085167f8ad4d3ff00da092c7ad9a573ea4f5f6a3dffc6712dc06d3f78f49b862297c4028480a46001600160a01b03831681526026845260408082206028548084529086529082205460243511156108a957506001600160a01b0383168152602684526040808220602854835285528120555b60018060a01b03602154169086600e54916106b0600c5491604051998a978896879563927d1df160e01b87526024359160048801614f07565b03925af191821561086a578392610875575b5060018060a01b0360095416600e549360405191638eb22cdd60e01b95868452806004850152856024850152826044850152602084606481855afa93841561086a578394610835575b5060209060018060a01b03861684526017825260646040852054986107378a610732613f47565b614f37565b946040519586948593845260048401526024830152600160448301525afa91821561082957916107eb575b506020946107909361078b9390921161079857610780908280614f95565b505b60115490614803565b6145f1565b604051908152f35b506107a1613f47565b80516001600160801b039081166107c65750506107c0845b8280614f95565b50610782565b81816107dd6107e6938a6107c09601511689613478565b915116906134a1565b6107b9565b919290506020823d602011610821575b8161080860209383613375565b8101031261081c5790519091906020610762565b600080fd5b3d91506107fb565b604051903d90823e3d90fd5b9093506020813d602011610862575b8161085160209383613375565b8101031261081c575192602061070b565b3d9150610844565b6040513d85823e3d90fd5b9091506020813d6020116108a1575b8161089160209383613375565b8101031261081c575190386106c2565b3d9150610884565b6001600160a01b0384168252602685526040808320918352908552902080546108d590602435906134cf565b9055610677565b6108e5906132df565b386105f3565b6040513d84823e3d90fd5b610918915060203d60201161091e575b6109108183613375565b810190614ee8565b38610563565b503d610906565b6040513d87823e3d90fd5b503461034a578060031936011261034a576006546040516001600160a01b039091168152602090f35b503461034a578060031936011261034a576020601d54604051908152f35b503461034a578060031936011261034a576009546040516001600160a01b039091168152602090f35b503461034a57604036600319011261034a576109ba6130fc565b60406109c4613112565b9260018060a01b03809316815260026020522091166000526020526020604060002054604051908152f35b503461034a578060031936011261034a576021546040516001600160a01b039091168152602090f35b503461034a578060031936011261034a57600b546040516001600160a01b039091168152602090f35b503461034a57610a50366131a2565b90839594954211610b8257610b2e91610b269160018060a01b0394858a1696876000526004602052604060002090815491610a8a83613e74565b90556040519060208201927f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e2668452600060408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e08152610aea8161333e565b519020610af5613b27565b9060405190602082019261190160f01b84526022830152604282015260428152610b1e8161335a565b519020613dfc565b919091613cfd565b1603610b3d5761039c92613ed1565b60405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152606490fd5b60405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b503461034a57608036600319011261034a57610be16130fc565b6064356001600160401b03811161043057610c009036906004016133c0565b600560005260076020527fbcdda56b5d08466ec462cbbe0adfa57cb0a15fcc8940ef68f702f21b787bc93554610c399060ff16156145b4565b610c416136d0565b5050610c4b614491565b610c606001600160a01b038416301415614631565b6021546001600160a01b0316610c77811515614e9c565b600954600e54604051638eb22cdd60e01b8152600481018290526044803560248301526001908201529287926001600160a01b031691602085606481865afa9485156110b95784956110c4575b5084611012575b5050602154604051632b3297f960e01b8152925060209150829060049082906001600160a01b03165afa908115611007579186610d1b60209593829795899a91610fea575b506024359089614b25565b9050610d5a60018060a01b036021541694610d3c600e5493600c54966134dc565b966040519a8b9889978896630394b9c560e21b885260048801614f07565b03925af1918215610fdd578192610fa9575b5060018060a01b03600954166020600c54606460405180948193638eb22cdd60e01b835260048301528760248301528660448301525afa9182156108295791610f77575b50610dbb818461493e565b8060009115610ef6575b6001600160a01b03841682526018602052604082208054610de79083906134dc565b9055610df5816015546134dc565b601555600c54600954929490926001600160a01b0316803b1561081c5782600091610e399583604051809881958294630208d92960e11b8452308a60048601614ae2565b03925af1918215610eea576020956107909461078b94610ed8575b506001600160a01b03831681526026875260408082206028548352885281208054610e809084906134dc565b90558015610ed1576009546001600160a01b0316905b6001600160a01b038481169216907f9ed03113de523cebfe5e49d5f8e12894b1c0d42ce805990461726444c90eab879080a460115490614803565b8290610e96565b610ee291506132df565b600038610e54565b6040513d6000823e3d90fd5b5060018060a01b03600954166020600c54606460405180948193638eb22cdd60e01b835260048301528660248301528660448301525afa9081156108eb578291610f41575b50610dc5565b90506020813d602011610f6f575b81610f5c60209383613375565b81010312610f6b575138610f3b565b5080fd5b3d9150610f4f565b90506020813d602011610fa1575b81610f9260209383613375565b8101031261081c575138610db0565b3d9150610f85565b9091506020813d602011610fd5575b81610fc560209383613375565b8101031261081c57519038610d6c565b3d9150610fb8565b50604051903d90823e3d90fd5b6110019150873d891161091e576109108183613375565b38610d10565b6040513d88823e3d90fd5b602060049260405193848092632b3297f960e01b82525afa9182156110b9578492611098575b50823b156110945784928492838a61106660405197889687958694630208d92960e11b865260048601614ae2565b03925af180156108eb5761107c575b8080610ccb565b611085906132df565b611090578438611075565b8480fd5b8380fd5b6110b291925060203d60201161091e576109108183613375565b9038611038565b6040513d86823e3d90fd5b935093506020833d6020116110f3575b816110e160209383613375565b8101031261081c578792519338610cc4565b3d91506110d4565b5061014036600319011261034a576111116130fc565b60643515156064350361081c576001600160401b038060843511610430576060608435360360031901126104305760a43511610f6b5760e060a43536036003190112610f6b5760803660c3190112610f6b57600560005260076020527fbcdda56b5d08466ec462cbbe0adfa57cb0a15fcc8940ef68f702f21b787bc9355461119c9060ff16156145b4565b6111a46136d0565b50506111ae614491565b6111c36001600160a01b038216301415614631565b6111d1604460a4350161467c565b60c4356001600160a01b038116900361081c576111f46111f99160c435906149f5565b61468b565b60243580611575575b5061128461125661127e61127861125c620186a0611224603054604435613478565b04611234601154916044356134dc565b600d5460ff9061124c906001600160a01b0316614795565b1695869289613884565b906148fb565b6001600160a01b03861687526018602052604087205490613478565b916134c1565b906134a1565b336001600160a01b0383160361152b575b61129f908261493e565b6112e060406112b16044358480614b25565b905060018060a01b0360095416600e548684518096819582946311a5cc7760e31b84528a3091600486016146e4565b03925af190811561086a5783916114fb575b50600d546001600160a01b031690606435156114f557475b823b156110905760405191633cb7ea1d60e11b8352600483015260018060a01b0384166024830152610100604483015260a4356004013561010483015261ffff611358602460a435016133b1565b1661012483015261ffff611370604460a435016133b1565b166101448301526001600160a01b0361138d60a435606401613128565b166101648301526114596113eb6113c46113b1608460a4350160a435600401614713565b60e06101848801526101e4870191614744565b6113d760a480350160a435600401614713565b86830361010319016101a488015290614744565b6001600160a01b0361140160a43560c401613128565b166101c485015283810360031901606485015260606114496004608435016001600160a01b0361143082613128565b1684526084356024810135602086015260440190614713565b9190928160408201520191614744565b6001600160a01b0360c4358116608485015290939060e4359081169081900361081c5760a4840152610104356001600160a01b0381169081900361081c5760c4840152610124356001600160a01b038116919082900361081c5783879593818795819560e483015203925af180156108eb576114e1575b5061039c61078b8360115490614803565b6114ea906132df565b610f6b5781386114d0565b3461130a565b61151d915060403d604011611524575b6115158183613375565b8101906146ce565b50386112f2565b503d61150b565b806112955760405162461bcd60e51b815260206004820152601c60248201527f42423a20616c6c6f77616e63655368617265206e6f742076616c6964000000006044820152606490fd5b602060018060a01b0360095416916064600c546040519485938492638eb22cdd60e01b8452600484015260248301528760448301525afa90811561086a5783916116e5575b506115c5818361493e565b8015611665575b60018060a01b038216600052601860205260406000206115ed8282546134dc565b90556115fb816015546134dc565b60155560018060a01b03821660005260266020526040600020602854600052602052604060002061162d8282546134dc565b90556001600160a01b038216807f9ed03113de523cebfe5e49d5f8e12894b1c0d42ce805990461726444c90eab87600080a438611202565b5060018060a01b03600954166020600c54606460405180948193638eb22cdd60e01b8352600483015260006024830152600060448301525afa908115610eea576000916116b3575b506115cc565b906020823d6020116116dd575b816116cd60209383613375565b8101031261034a575051386116ad565b3d91506116c0565b90506020813d60201161170f575b8161170060209383613375565b8101031261081c5751386115ba565b3d91506116f3565b503461034a5761016036600319011261034a576001600160a01b039060043582811690819003610f6b576001600160401b0392602435848111611094576117629036906004016133c0565b90946044359383851680950361081c57611781846005541633146133ed565b80611b51575b50816119d4575b50509080929350611994575b50506064358061197c575b5060843580611964575b5060a4358061194d575b5060c43580611929575b5060e43580611905575b5061010435806118d4575b506101243580611860575b5061014435806117f1575080f35b601e54811061180057601f5580f35b60405162461bcd60e51b815260206004820152603260248201527f4d61726b65743a206c69717569646174696f6e436f6c6c61746572616c697a616044820152711d1a5bdb94985d19481d1bdbc81cdb585b1b60721b6064820152608490fd5b61186f620186a0821115613438565b601f54811161188157601e55386117e3565b60405162461bcd60e51b815260206004820152602560248201527f4d61726b65743a20636f6c6c61746572616c697a6174696f6e5261746520746f6044820152646f2062696760d81b6064820152608490fd5b806016547fae6e0ab3b95f0a53ff9660a390ccedcbbf1f2355dce974a9841af106fddcfaba8480a3601655386117d8565b611913620186a08210613438565b611920601b548211613438565b601c55386117cd565b611937620186a08210613438565b611944601c548210613438565b601b55386117c3565b61195b620186a08210613438565b601d55386117b9565b611973620186a0821115613438565b601a55386117af565b61198b620186a0821115613438565b601955386117a5565b816008549182167f5a62d22209e370e38eea92cfddcd228e656e6ec139243392a760a7769f5877fd8580a36001600160a01b03191617600855388061179a565b8111611b3d576119e5601054613220565b601f8111611adc575b5083601f8211600114611a565784958293949592611a4b575b50508160011b916000199060031b1c1916176010555b7fa6f004921c944d4b8bf6e38462b00f36a58d62495d56b51f571ab78f732c98158380a1908291388061178e565b013590503880611a07565b60108552601f198216957f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae672918660205b898210611ac45750508360019596979810611aaa575b505050811b01601055611a1d565b0135600019600384901b60f8161c19169055388080611a9c565b80600184968294958701358155019501920190611a86565b601085527f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae672601f830160051c810160208410611b36575b601f90920160051c01905b818110611b2b57506119ee565b858155600101611b1e565b5080611b13565b634e487b7160e01b84526041600452602484fd5b600f80546001600160a01b0319169190911790557f0b2d6eb667d0522c3eb86e4288afecae6c11591ffd1345d4d12407e0598bca9b8580a138611787565b503461034a578060031936011261034a576008546040516001600160a01b039091168152602090f35b503461034a578060031936011261034a576020601e54604051908152f35b503461034a578060031936011261034a576060602454604051906001600160401b0380821683528160401c16602083015260801c6040820152f35b503461034a578060031936011261034a576020601a54604051908152f35b503461034a57604036600319011261034a57611c496130fc565b60243580928115801590611d00575b611c90575b50506040519182526001600160a01b03169033906000805160206153fc83398151915290602090a3602060405160018152f35b33815260016020526040812054611ca983821015613c51565b6001600160a01b0384169033829003611cc4575b5050611c5d565b604093611cdb91611cd6841515613c96565b6134cf565b338352600160205283832055815220611cf58382546134dc565b905581388080611cbd565b50336001600160a01b03841614611c58565b503461034a57604036600319011261034a576060611d3a611d316130fc565b6024359061360f565b9060405192835260208301526040820152f35b503461034a578060031936011261034a576020602c54604051908152f35b503461034a57604036600319011261034a576020610790611d8a6130fc565b602435906139f5565b503461034a578060031936011261034a57808060018060a01b03600b541660405160208101906395d89b4160e01b825260048152611dd081613323565b51915afa611ddc614765565b915015611e3c57611def61037f9161528a565b611e286023604051809362746d2d60e81b6020830152611e18815180926020868601910161313c565b8101036003810184520182613375565b60405191829160208352602083019061315f565b5061037f611e48615233565b611def565b503461034a578060031936011261034a576020603054604051908152f35b503461034a57604036600319011261034a576004356001600160401b038111610f6b5736602382011215610f6b57806004013590611ea882613396565b90611eb66040519283613375565b82825283602091828401943660248284010111610430578060248593018737840101526024359061ffff821680920361081c576101009384848051810103126120e057611f02906136c3565b90611f0f60408501613cdb565b611f1b60608601613cdb565b9560808601519560a081015191611f3460c08301613cef565b9060e08301519201519260018060a01b03808096169a169781421161209b5792610b269289888d989794612012978e8d600014612074577f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e266945b8c60005260048552604060002092835493611fa885613e74565b905560405195860196875260408601528c6060860152608085015260a084015260c083015260e082015260e08152611fdf8161333e565b519020611fea613b27565b90604051908a82019261190160f01b84526022830152604282015260428152610b1e8161335a565b16036120305750156120275761039c92613ed1565b61039c92613e83565b6064906040519062461bcd60e51b82526004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152fd5b7f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d694611f8e565b60405162461bcd60e51b815260048101889052601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b8580fd5b503461034a578060031936011261034a576005546040516001600160a01b039091168152602090f35b503461034a578060031936011261034a576020601b54604051908152f35b503461034a578060031936011261034a57601454604080516001600160801b038316815260809290921c602083015290f35b503461034a578060031936011261034a576020602e54604051908152f35b503461034a57604036600319011261034a576121a26121986130fc565b6024359033613e83565b602060405160018152f35b503461034a57602036600319011261034a576020906040906001600160a01b036121d56130fc565b168152600483522054604051908152f35b503461034a578060031936011261034a57600f546040516001600160a01b039091168152602090f35b503461034a578060031936011261034a5761037f604051611e28816122338161325a565b0382613375565b503461034a57602036600319011261034a5760043590600982101561034a57602060ff612266846131f1565b54166040519015158152f35b503461034a57602036600319011261034a576020906040906001600160a01b0361229a6130fc565b168152600183522054604051908152f35b503461034a578060031936011261034a57600a546040516001600160a01b039091168152602090f35b503461034a578060031936011261034a576122ed613f28565b5060806122f8613fac565b509350505050604051916001600160401b0380825116845260208201511660208401526040600180861b039101511660408301526060820152f35b503461034a578060031936011261034a576020601c54604051908152f35b503461034a578060031936011261034a5760206001600160401b03602d5460401c16604051908152f35b503461034a578060031936011261034a5760206001600160401b03602d5416604051908152f35b503461034a578060031936011261034a5760206001600160401b03602f5416604051908152f35b503461034a578060031936011261034a5760208054604051908152f35b503461034a578060031936011261034a576006546001600160a01b03908181163381900361245057806005549384167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08680a36001600160a01b0319928316176005551660065580f35b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b503461034a578060031936011261034a576020602954604051908152f35b503461034a57602036600319011261034a576020906040906001600160a01b036124da6130fc565b168152601783522054604051908152f35b503461034a578060031936011261034a576020601554604051908152f35b503461034a578060031936011261034a576020600e54604051908152f35b503461034a578060031936011261034a576020601654604051908152f35b503461034a57606036600319011261034a576020610790604435602435600435613502565b503461034a578060031936011261034a576020601154604051908152f35b503461034a578060031936011261034a57600d546040516001600160a01b039091168152602090f35b503461034a578060031936011261034a576020601254604051908152f35b503461034a578060031936011261034a576020610790613b27565b503461034a578060031936011261034a576020601954604051908152f35b503461034a578060031936011261034a576020601354604051908152f35b503461034a578060031936011261034a57600d5460209061264f906001600160a01b0316614795565b60ff60405191168152f35b5061012036600319011261034a576126706130fc565b612678613193565b6001600160401b0380606435116110945760606064353603600319011261109457608435116104305760e0608435360360031901126104305760803660a3190112610430576006835260076020526126d760ff604085205416156145b4565b6126df6136d0565b50506126e9614491565b6126fe6001600160a01b038316301415614631565b8261270d60446084350161467c565b60a435906001600160a01b0382168203610430576111f48261272e926149f5565b60018060a01b0360095416926020600c54606460405180978193638eb22cdd60e01b8352600483015260243560248301528760448301525afa93841561086a578394612ab5575b50604084612786612864968861493e565b6001600160a01b0387168552601860205281852080546127a79083906134cf565b90556127b5816015546134cf565b60155580306001600160a01b0389167f8ad4d3ff00da092c7ad9a573ea4f5f6a3dffc6712dc06d3f78f49b862297c4028880a46001600160a01b038716855260266020908152828620602854808852915282862054821115612a8457506001600160a01b038716855260266020908152828620602854875290528185208590555b60018060a01b0360095416600c548684518099819582946311a5cc7760e31b845230903090600486016146e4565b03925af193841561086a578394612a62575b50600b546001600160a01b03169015612a5b5747915b813b156110945760405194633cb7ea1d60e11b8652600486015260018060a01b038616602486015261010060448601526084356004016129c5612968610104928035848a015261ffff806128e46024608435016133b1565b166101248b01526128f96044608435016133b1565b166101448a01526001600160a01b03612916608435606401613128565b166101648a01526129546129478a61018460e0612937608480350187614713565b92909301526101e48d0191614744565b9160a46084350190614713565b8a830361010319016101a48c015290614744565b6001600160a01b0361297e60843560c401613128565b166101c4890152600319888203016064890152606061144960643560040160018060a01b036129ac82613128565b1684526064356024810135602086015260440190614713565b6001600160a01b0392831660848801529160c435908116908190036120e05760a487015260e4356001600160a01b038116908190036120e05760c4870152356001600160a01b03811693908490036110905785809492819360e483015203925af1801561086a57612a42575b5061078b61039c9160115490614803565b61039c9192612a5361078b926132df565b929150612a31565b349161288c565b612a7c91945060403d604011611524576115158183613375565b509238612876565b6001600160a01b038816865260266020908152838720918752528185208054612aae9083906134cf565b9055612836565b93506020843d602011612ae2575b81612ad060209383613375565b81010312610430579251926040612775565b3d9150612ac3565b503461034a57606036600319011261034a57612b046130fc565b90612b0d613112565b6044359182612b4b575b506040519182526001600160a01b039081169216906000805160206153fc83398151915290602090a3602060405160018152f35b6001600160a01b03848116808352600160209081526040842054928690612b7482861015613c51565b861693848403612b89575b5050505050612b17565b838652600283526040808720338852845286205460018101612bf3575b5092600160209693612bd18794604097611cd66000805160206153fc8339815191529c9a1515613c96565b9285525283832055815220612be78582546134dc565b90559138808581612b7f565b90918110612c475792600160209693612bd18a6000805160206153fc8339815191529a9895612c248260409a6134cf565b86895260028552898920338a528552898920559497509497995050939650612ba6565b60405162461bcd60e51b815260048101849052601860248201527745524332303a20616c6c6f77616e636520746f6f206c6f7760401b6044820152606490fd5b503461034a57612c96366131a2565b90839594954211610b8257612d2d91610b269160018060a01b03948a868b169788825260046020526040822090815491612ccf83613e74565b90556040519160208301937f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d6855260408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e08152610aea8161333e565b1603610b3d5761039c92613e83565b503461034a57602036600319011261034a576020906040906001600160a01b03612d646130fc565b168152601883522054604051908152f35b503461034a578060031936011261034a57602060255460801c604051908152f35b503461034a57604036600319011261034a576004356009811015610f6b57612dbc613184565b6008549091906001600160a01b03163303612e725760ff612ddc826131f1565b54161515911515918214612e3857808260ff612dfa612e28946131f1565b54161515827feeec81de25875ce1725479bb76f720a8defdb43dea041919ae37bb4aae9847c08780a46131f1565b9060ff8019835416911617905580f35b60405162461bcd60e51b81526020600482015260126024820152714d61726b65743a2073616d6520737461746560701b6044820152606490fd5b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881d5b985d5d1a1bdc9a5e995960621b6044820152606490fd5b503461034a57604036600319011261034a576121a2612ecb6130fc565b6024359033613ed1565b503461034a57606036600319011261034a57612eef6130fc565b612ef7613184565b612eff613193565b9060018060a01b03928391612f19836005541633146133ed565b15612fbd571690811590811591612fb5575b5015612f7857806005549283167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08580a36001600160a01b03199182161760055560068054909116905580f35b60405162461bcd60e51b81526020600482015260156024820152744f776e61626c653a207a65726f206164647265737360581b6044820152606490fd5b905038612f2b565b9150501660018060a01b0319600654161760065580f35b503461034a578060031936011261034a57808060018060a01b03600b541660405160208101906306fdde0360e01b82526004815261301181613323565b51915afa61301d614765565b91501561307a5761303061037f9161528a565b611e286034604051809373546170696f63612053696e67756c61726974792d60601b602083015261306a815180926020868601910161313c565b8101036014810184520182613375565b5061037f613086615233565b613030565b503461034a578060031936011261034a5760406130a66136d0565b825191151582526020820152f35b905034610f6b576040366003190112610f6b5760406020926130d46130fc565b6130dc613112565b6001600160a01b0391821683526003865283832091168252845220548152f35b600435906001600160a01b038216820361081c57565b602435906001600160a01b038216820361081c57565b35906001600160a01b038216820361081c57565b60005b83811061314f5750506000910152565b818101518382015260200161313f565b906020916131788151809281855285808601910161313c565b601f01601f1916010190565b60243590811515820361081c57565b60443590811515820361081c57565b60e090600319011261081c576001600160a01b0390600435828116810361081c5791602435908116810361081c5790604435906064359060843560ff8116810361081c579060a4359060c43590565b600981101561320a576000526007602052604060002090565b634e487b7160e01b600052602160045260246000fd5b90600182811c92168015613250575b602083101461323a57565b634e487b7160e01b600052602260045260246000fd5b91607f169161322f565b6010546000929161326a82613220565b9081815260019283811690816000146132c4575060011461328a57505050565b9092935060106000526020928360002092846000945b8386106132b05750505050010190565b8054858701830152940193859082016132a0565b91935050602093945060ff191683830152151560051b010190565b6001600160401b0381116132f257604052565b634e487b7160e01b600052604160045260246000fd5b606081019081106001600160401b038211176132f257604052565b604081019081106001600160401b038211176132f257604052565b61010081019081106001600160401b038211176132f257604052565b608081019081106001600160401b038211176132f257604052565b90601f801991011681019081106001600160401b038211176132f257604052565b6001600160401b0381116132f257601f01601f191660200190565b359061ffff8216820361081c57565b9181601f8401121561081c578235916001600160401b03831161081c576020838186019501011161081c57565b156133f457565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b1561343f57565b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881b9bdd081d985b1a59607a1b6044820152606490fd5b8181029291811591840414171561348b57565b634e487b7160e01b600052601160045260246000fd5b81156134ab570490565b634e487b7160e01b600052601260045260246000fd5b604d811161348b57600a0a90565b9190820391821161348b57565b9190820180921161348b57565b8181039291600013801582851316918412161761348b57565b6014549192916135459161353c9161353291613528906001600160801b03831690613478565b9060801c906134a1565b93601f5490613478565b61127e836134c1565b8083106136075761355961358f91846134cf565b9161358a611278613581601e5461357b613572866134c1565b602054906134dc565b90613478565b61127e846134c1565b6134e9565b6509184e72a0009081810291818305149015171561348b57670de0b6b3a76400009182810292818405149015171561348b5780156134ab57600160ff1b9180831460001983141661348b570590600082121561360057811461348b57600003905b8082116135fb575090565b905090565b50906135f0565b505050600090565b6001600160a01b0381166000818152601760205260408120549194939290919081156136b757916040916136936136ab9594836020865161364f81613323565b828152015261366d86613660613fac565b5050505050939050613884565b815190936001600160801b039160209161368991841690613478565b92015116906134a1565b8181106136af57035b9581526018602052205461394a565b9091565b50508061369c565b50509192505080918190565b5190811515820361081c57565b600f546040805163d6d7d52560e01b8152602060048201529290916001600160a01b03168284806137036024820161325a565b0381600080955af1801561382c57819482916137f0575b5092841561379357831561375957507f9f9192b5edb17356c524e08d9e025c8e2f6307e6ea52fb7968faa3081f51c3c883918260115580a25b42601355565b5162461bcd60e51b81526020600482015260146024820152734d61726b65743a20696e76616c6964207261746560601b6044820152606490fd5b919250506137a6601354601254906134dc565b42116137b6575060115490613753565b5162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881c985d19481d1bdbc81bdb1960621b6044820152606490fd5b809550848092503d8311613825575b6138098183613375565b8101031261034a57602061381c856136c3565b9401513861371a565b503d6137ff565b508251903d90823e3d90fd5b1561383f57565b60405162461bcd60e51b815260206004820152601e60248201527f4d61726b65743a2065786368616e676552617465206e6f742076616c696400006044820152606490fd5b61388f821515613838565b60018060a01b036020816009541691600c5490600094168452601882526064604085205491604051948593849263442c159960e01b8452600484015260248301528660448301525afa918215610829578092613912575b50509061390a61390161390f93620186a06022540490613478565b601e5490613478565b6134a1565b90565b9091506020823d8211613942575b8161392d60209383613375565b8101031261034a57505161390a6139016138e6565b3d9150613920565b613955821515613838565b602060018060a01b0360095416916064600c54604051948593849263442c159960e01b845260048401526024830152600060448301525afa908115610eea576000916139c2575b509061390a6139ae9260225490613478565b620186a06139be601e5483613478565b0491565b906020823d82116139ed575b816139db60209383613375565b8101031261034a57505161390a61399c565b3d91506139ce565b6001600160a01b03166000818152601860205260408120549092613a189161394a565b918352601760205260408320548015613b21578115613b2157818110613b215782811015613b1757601454613a61918391611cd691613528906001600160801b03831690613478565b90620186a09283830292808404851490151715613b0357613a86929161127e916134cf565b91601b5491601c5493613a9985856134e9565b80820291848212600160ff1b821416613b03578183051490151715613aef5705818482019485129112908015821691151617613adb57508082126135fb575090565b634e487b7160e01b81526011600452602490fd5b634e487b7160e01b83526011600452602483fd5b634e487b7160e01b85526011600452602485fd5b50505050601b5490565b50505090565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03161480613c28575b15613b82577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f000000000000000000000000000000000000000000000000000000000000000082527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a0815260c081018181106001600160401b038211176132f25760405251902090565b507f00000000000000000000000000000000000000000000000000000000000000004614613b59565b15613c5857565b60405162461bcd60e51b815260206004820152601660248201527545524332303a2062616c616e636520746f6f206c6f7760501b6044820152606490fd5b15613c9d57565b60405162461bcd60e51b815260206004820152601660248201527545524332303a206e6f207a65726f206164647265737360501b6044820152606490fd5b51906001600160a01b038216820361081c57565b519060ff8216820361081c57565b600581101561320a5780613d0e5750565b60018103613d565760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b6044820152606490fd5b60028103613da35760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606490fd5b600314613dac57565b60405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608490fd5b9291906fa2a8918ca85bafe22016d0b997e4df60600160ff1b038311613e685791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa15610fdd5781516001600160a01b03811615613e62579190565b50600190565b50505050600090600390565b600019811461348b5760010190565b7fe50de2333c10a9502fcb1d8ae13a51bbf423153dfc63c2b8997665b32154afc360018060a01b038092169160009083825260036020526040822094169384825260205284604082205580a4565b909160207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259160018060a01b03809416938460005260028352604060002095169485600052825280604060002055604051908152a3565b60405190613f3582613308565b60006040838281528260208201520152565b60405190613f5482613323565b6014546001600160801b038116835260801c6020830152565b60405190613f7a82613323565b6025546001600160801b038116835260801c6020830152565b6001600160801b03918216908216019190821161348b57565b613fb4613f28565b5060006020604051613fc581613323565b828152015260006020604051613fda81613323565b828152015260405190613fec82613308565b602454916001600160401b038316815260208101926001600160401b038160401c16845260801c60408201528092614022613f47565b9261402b613f6d565b92600060018060a01b0360095416600e549460018060801b038751166040519063442c159960e01b8252876004830152602482015260006044820152602081606481865afa8015610eea57600090614438575b895161409492506001600160801b0316906134dc565b80614403575060005b6140b26001600160401b0382935116426134cf565b9485156143d9575050426001600160401b031660208a8101919091528801516001600160801b03161561438f57506020670de0b6b3a76400006141148561410f8c6001600160401b038d60018060801b0390511691511690613478565b613478565b895191900496906001600160801b039061413390828a16908316613f93565b168952875160405163442c159960e01b815260048101929092526001600160801b031660248201526000604482015291829060649082905afa8015610eea5760009061435b575b875161419092506001600160801b0316906134dc565b926141be8461390a620186a06141a8601a548a613478565b60208c01516001600160801b0316919004613478565b6040890180519195916001600160801b0380881692916141e19084908316613f93565b16905260208801805190916001600160801b039161420191908316613f93565b16905280614326575060005b602a54909384828110156142a15761422590836134cf565b90670de0b6b3a7640000820291808304670de0b6b3a7640000149015171561348b5761390a6142796142736142656001600160401b0396614283966134a1565b9361410f602e549580613478565b836134dc565b91848d5116613478565b168089526001600160401b03602d541680911061429d5750565b8852565b909150602b548082116142b357505050565b6142bc916134cf565b670de0b6b3a7640000810290808204670de0b6b3a7640000149015171561348b576001600160401b039161390a6142ff61427361426561430895602c54906134a1565b848d5116613478565b81602d5460401c1680821161431e575b50168852565b905038614318565b87516001600160801b0316670de0b6b3a764000081810292918084049091149015171561348b57614356916134a1565b61420d565b506020813d602011614387575b8161437560209383613375565b8101031261081c57614190905161417a565b3d9150614368565b9697939450509350506001600160401b038151166001600160401b03602f54168091036143cd575b5093926143c2613f6d565b926000926000929190565b815260019250386143b7565b9750985050505050925050916143ed613f47565b916143f6613f6d565b9160009160009190600090565b88516001600160801b0316670de0b6b3a764000081810292918084049091149015171561348b57614433916134a1565b61409d565b506020813d602011614464575b8161445260209383613375565b8101031261081c57614094905161407e565b3d9150614445565b601480546001600160801b031660809290921b6001600160801b031916919091179055565b61457860208061454e6144a2613fac565b939695939092901561457a575050506001600160401b03602f54166000807f33af5ce86e8438eff54589f85332916444457dfa8685493fbd579b809097026b88604051838152a45b805185820151604092830151921b67ffffffffffffffff60401b166001600160401b03919091161760809190911b6001600160801b0319908116919091176024558151601480549092166001600160801b039182161790915594859101511661446c565b8051910151821660801b6001600160801b0319166001600160801b03929091169190911617602555565b565b7f33af5ce86e8438eff54589f85332916444457dfa8685493fbd579b809097026b886001600160401b0386511694604051908152a46144ea565b156145bb57565b60405162461bcd60e51b815260206004820152600e60248201526d13585c9ad95d0e881c185d5cd95960921b6044820152606490fd5b156145f857565b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881a5b9cdbdb1d995b9d607a1b6044820152606490fd5b1561463857565b606460405162461bcd60e51b815260206004820152602060248201527f4d61726b65743a2063616e6e6f742065786563757465206f6e20697473656c666044820152fd5b3561ffff8116810361081c5790565b1561469257565b60405162461bcd60e51b815260206004820152601460248201527329a3a61d1024b73b30b634b21039bbb0b83832b960611b6044820152606490fd5b919082604091031261081c576020825192015190565b9081526001600160a01b0391821660208201529116604082015260006060820152608081019190915260a00190565b9035601e198236030181121561081c5701602081359101916001600160401b03821161081c57813603831361081c57565b908060209392818452848401376000828201840152601f01601f1916010190565b3d15614790573d9061477682613396565b916147846040519384613375565b82523d6000602084013e565b606090565b60008091604051602081019063313ce56760e01b8252600481526147b881613323565b51916001600160a01b03165afa6147cd614765565b90806147f8575b156147f25760208180518101031261081c57602061390f9101613cef565b50601290565b5060208151146147d4565b919060018060a01b038060009416845260206017815260408520549081156148f15760188152604086205480156148ea578161483d613f47565b9460095416916064600c54604051948593849263442c159960e01b8452600484015260248301528b60448301525afa9687156108295780976148b4575b50506136896148996139016148af969798620186a06022540490613478565b9561410f60018060801b03948587511690613478565b111590565b9096508187813d83116148e3575b6148cc8183613375565b8101031261034a575094519461368961489961487a565b503d6148c2565b5050505050565b5060019450505050565b9182158015614936575b613607576001810180911161348b576149249261357b61390a926134c1565b6005810180911161348b57600a900490565b508115614905565b6001600160a01b0316338103614952575050565b60008181526020906003825260409182822033835281528483832054106149bb5783825260038152828220338352815282822054600101614994575050505050565b6149af938252600381528282209033835252209182546134cf565b905538808080806148ea565b60649083519062461bcd60e51b82526004820152601460248201527313585c9ad95d0e881b9bdd08185c1c1c9bdd995960621b6044820152fd5b600a5460405163dbd01de160e01b815260209290916001600160a01b039084908490600490829085165afa8015610eea578493600091614aa4575b50918161ffff936044936040519889968795633a304d8b60e21b8752166004860152166024840152165afa908115610eea57600091614a70575b50905090565b82813d8311614a9d575b614a848183613375565b8101031261034a5750614a96906136c3565b8038614a6a565b503d614a7a565b9091929381813d8311614adb575b614abc8183613375565b81010312610f6b575190828216820361034a5750839291906044614a30565b503d614ab2565b6001600160a01b039182168152911660208201526040810191909152606081019190915260800190565b6001600160801b03918216908216039190821161348b57565b92909192620186a0614b3960305486613478565b04614b42613f47565b94614b4d82826134dc565b94604093845196614b5d88613323565b60008089526020988901819052895190956001600160801b039290918316614e3c5782614b918c8280855b16915116613f93565b168b52614bd58a8c0184614baa81851682845116613f93565b16809152614bd085849e511660018060801b031660018060801b03196014541617601455565b61446c565b6016548015908115614e2d575b5015614def57859060018060a01b0380951680895260178c52898920614c098382546134dc565b90558951918483528c8301527f3a5151e57d3bc9798e7853034ac52293d1a0e12a2b44725e75b03b21f86477a68a87891693a480614dce575b50878260095416946064600e5489519788938492638eb22cdd60e01b8452600484015260248301528960448301525afa938415614dc4578594614d95575b508397614c8b613f6d565b818101916103e88484511610614d61575090614cdb839283614cb5614d02968a1682845116614b0c565b1690819052602580546001600160801b0319166001600160801b03909216919091179055565b51602580546001600160801b03169290911660801b6001600160801b031916919091179055565b6009541690600e5490823b15611090579184939184879694614d3a985198899586948593630208d92960e11b85523060048601614ae2565b03925af1918215614d57575050614d4e5750565b614578906132df565b51903d90823e3d90fd5b60649089519062461bcd60e51b82526004820152600e60248201526d14d1d30e881b5a5b881b1a5b5a5d60921b6044820152fd5b9093508781813d8311614dbd575b614dad8183613375565b8101031261109057519238614c80565b503d614da3565b86513d87823e3d90fd5b82600a5416865260018952614de78787209182546134dc565b905538614c42565b875162461bcd60e51b8152600481018b9052601760248201527614d1d30e88189bdc9c9bddc818d85c081c995858da1959604a1b6044820152606490fd5b90508360145416111538614be2565b828b8b81019280614e6f614e60614e568688511684613478565b86865116906134a1565b95856107dd8187511689613478565b10614e81575b908280614b9193614b88565b92908280614e91614b9194613e74565b959293505050614e75565b15614ea357565b60405162461bcd60e51b815260206004820152601f60248201527f42423a206c65766572616765206578656375746f72206e6f742076616c6964006044820152606490fd5b9081602091031261081c57516001600160a01b038116810361081c5790565b919260a09361390f979592845260208401526040830152600180841b031660608201528160808201520191614744565b60208101805190939291906001600160801b03908116614f58575090925050565b90816107dd81614f7b614f71614f849686511688613478565b828a5116906134a1565b97511687613478565b10614f8b57565b9061390f90613e74565b92919060009160018060a01b03948583168452602060178152604085205480841161522b575b5082156151ef57614fca613f47565b968582604051614fd981613323565b8281520152614fe88489614f37565b9560018060801b039384615001818a16828d5116614b0c565b168a52615040848b018661501a818a1682845116614b0c565b16809152614bd0878b9d511660018060801b031660018060801b03196014541617601455565b828716825260178452604082206150588782546134cf565b90558260095416600e549560405190638eb22cdd60e01b82528760048301528a6024830152600160448301528682606481865afa9182156109255785926151c0575b5080602554169492803b1561081c57826000916150d09a83604051809d81958294630208d92960e11b8452308d60048601614ae2565b03925af1948515610eea577fc8e512d8f188ca059984b5853d2bf653da902696b8512785b182b2c813789a6e9887966151aa575b506151129082841690613f93565b1660018060801b031960255416176025558383169081835260268752604083206027549081855288526040842054821160001461518357505081526026855260408120602754825285528060408120555b1561517d57508060095416955b60405195865216941692a4565b95615170565b90918352602687526040832090835286526151a3604083209182546134cf565b9055615163565b6151b59194506132df565b600092615112615104565b9091508681813d83116151e8575b6151d88183613375565b810103126110905751903861509a565b503d6151ce565b6064906040519062461bcd60e51b82526004820152601560248201527453474c3a206e6f7468696e6720746f20726570617960581b6044820152fd5b925038614fbb565b6040519061524082613323565b60038252623f3f3f60e81b6020830152565b908151811015615263570160200190565b634e487b7160e01b600052603260045260246000fd5b60ff1660ff811461348b5760010190565b8051604081106153025750805181019060208181840193031261081c576020810151906001600160401b03821161081c570181603f8201121561081c5760208101516152d581613396565b926152e36040519485613375565b8184526040828401011161081c5761390f91604060208501910161313c565b6020929083036153f0576000805b60ff811685811090816153d1575b50156153325761532d90615279565b615310565b9260ff8094169261534284613396565b936153506040519586613375565b80855261535f601f1991613396565b013687860137825b858116878110806153b4575b156153a9576153a4919061539e6001600160f81b03196153938388615252565b5116871a9188615252565b53615279565b615367565b505094505050905090565b506001600160f81b03196153c88286615252565b51161515615373565b6001600160f81b031991506153e69086615252565b511615153861531e565b91505061390f61523356feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa26469706673582212204a5215d4d199b5dc237a0bf5a57db68bd2d75f4faa736acaedce42321759e49364736f6c63430008120033", + "deployedBytecode": "0x608080604052600436101561001357600080fd5b600090813560e01c908162a02a20146130b45750806302ce728f1461308b57806306fdde0314612fd4578063078dfbe714612ed5578063095ea7b314612eae5780630c4e84f014612d9657806318160ddd14612d755780631c9e379b14612d3c5780631da8bf1014612c8757806323b872dd14612aea5780632a9399d91461265a578063313ce56714612626578063331960ff1461260857806334d441d0146125ea5780633644e515146125cf57806337b6b7b9146125b157806338d52e0f146125885780633ba0b9a91461256a5780633f741adb1461254557806340626d8b1461252757806344de240a14612509578063473e3ce7146124eb57806348e4163e146124b25780634d7f2a34146124945780634e71e0c8146123e6578063529898f2146123c957806352f353eb146123a2578063551402321461237b57806355c2ab941461235157806357935462146123335780635dfe04e8146122d45780636c3d8b8f146122ab57806370a0823114612272578063727785471461223a57806374645ff31461220f5780637dc0d1d0146121e65780637ecebe00146121ad5780637fa0b84e1461217b578063821226e81461215d5780638285ef401461212b5780638c5d0ed31461210d5780638da5cb5b146120e4578063910dd7c814611e6b578063959916dc14611e4d57806395d89b4114611d9357806399a9702814611d6b5780639c5d719214611d4d5780639e15e89f14611d12578063a9059cbb14611c2f578063b0e21e8a14611c11578063b27c0e7414611bd6578063bb4cfe3b14611bb8578063ce8849ed14611b8f578063d3fb2a3814611717578063d49dffa7146110fb578063d4e4534e14610bc7578063d505accf14610a41578063d8dfeb4514610a18578063da863f0e146109ef578063dd62ed3e146109a0578063de40657714610977578063e0996cb614610959578063e30c397814610930578063e7d6de8014610470578063ea64dd5614610452578063eec0f42e14610434578063ef2b234a146103bd578063f42760b71461039f578063f8ba4cff14610383578063f9557ccb1461034d5763ffe04c661461032d57600080fd5b3461034a578060031936011261034a576020602a54604051908152f35b80fd5b503461034a578060031936011261034a57602554604080516001600160801b038316815260809290921c602083015290f35b0390f35b503461034a578060031936011261034a5761039c614491565b80f35b503461034a578060031936011261034a576020602b54604051908152f35b503461034a57602036600319011261034a576004356001600160a01b0381811691829003610430576103f4816005541633146133ed565b816021549182167ffb4fd7114609dd603b57adbc2082205bfbbcabf9265c4b437b472f5c592b8cd78580a36001600160a01b0319161760215580f35b8280fd5b503461034a578060031936011261034a576020600c54604051908152f35b503461034a578060031936011261034a576020601f54604051908152f35b503461034a57606036600319011261034a5761048a6130fc565b6044356001600160401b038111610430576104a99036906004016133c0565b600660005260076020527f55c5b153ab560fcde54a63b18c7f53d75501706907cef8767fbded79ab9997c7549192916104e59060ff16156145b4565b6104ed6136d0565b50506104f7614491565b61050c6001600160a01b038316301415614631565b602154610523906001600160a01b03161515614e9c565b61052f6024358361493e565b602154604051632b3297f960e01b815290602090829060049082906001600160a01b03165afa9081156109255785916108f6575b506001600160a01b0383166000908152601860205260408120805461058b90602435906134cf565b905561059b6024356015546134cf565b60155560018060a01b0360095416600c54813b15610430576105dc83928392604051948580948193630208d92960e11b8352602435908b3060048601614ae2565b03925af180156108eb5791859391602095936108dc575b5090602435906001600160a01b039081169085167f8ad4d3ff00da092c7ad9a573ea4f5f6a3dffc6712dc06d3f78f49b862297c4028480a46001600160a01b03831681526026845260408082206028548084529086529082205460243511156108a957506001600160a01b0383168152602684526040808220602854835285528120555b60018060a01b03602154169086600e54916106b0600c5491604051998a978896879563927d1df160e01b87526024359160048801614f07565b03925af191821561086a578392610875575b5060018060a01b0360095416600e549360405191638eb22cdd60e01b95868452806004850152856024850152826044850152602084606481855afa93841561086a578394610835575b5060209060018060a01b03861684526017825260646040852054986107378a610732613f47565b614f37565b946040519586948593845260048401526024830152600160448301525afa91821561082957916107eb575b506020946107909361078b9390921161079857610780908280614f95565b505b60115490614803565b6145f1565b604051908152f35b506107a1613f47565b80516001600160801b039081166107c65750506107c0845b8280614f95565b50610782565b81816107dd6107e6938a6107c09601511689613478565b915116906134a1565b6107b9565b919290506020823d602011610821575b8161080860209383613375565b8101031261081c5790519091906020610762565b600080fd5b3d91506107fb565b604051903d90823e3d90fd5b9093506020813d602011610862575b8161085160209383613375565b8101031261081c575192602061070b565b3d9150610844565b6040513d85823e3d90fd5b9091506020813d6020116108a1575b8161089160209383613375565b8101031261081c575190386106c2565b3d9150610884565b6001600160a01b0384168252602685526040808320918352908552902080546108d590602435906134cf565b9055610677565b6108e5906132df565b386105f3565b6040513d84823e3d90fd5b610918915060203d60201161091e575b6109108183613375565b810190614ee8565b38610563565b503d610906565b6040513d87823e3d90fd5b503461034a578060031936011261034a576006546040516001600160a01b039091168152602090f35b503461034a578060031936011261034a576020601d54604051908152f35b503461034a578060031936011261034a576009546040516001600160a01b039091168152602090f35b503461034a57604036600319011261034a576109ba6130fc565b60406109c4613112565b9260018060a01b03809316815260026020522091166000526020526020604060002054604051908152f35b503461034a578060031936011261034a576021546040516001600160a01b039091168152602090f35b503461034a578060031936011261034a57600b546040516001600160a01b039091168152602090f35b503461034a57610a50366131a2565b90839594954211610b8257610b2e91610b269160018060a01b0394858a1696876000526004602052604060002090815491610a8a83613e74565b90556040519060208201927f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e2668452600060408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e08152610aea8161333e565b519020610af5613b27565b9060405190602082019261190160f01b84526022830152604282015260428152610b1e8161335a565b519020613dfc565b919091613cfd565b1603610b3d5761039c92613ed1565b60405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152606490fd5b60405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b503461034a57608036600319011261034a57610be16130fc565b6064356001600160401b03811161043057610c009036906004016133c0565b600560005260076020527fbcdda56b5d08466ec462cbbe0adfa57cb0a15fcc8940ef68f702f21b787bc93554610c399060ff16156145b4565b610c416136d0565b5050610c4b614491565b610c606001600160a01b038416301415614631565b6021546001600160a01b0316610c77811515614e9c565b600954600e54604051638eb22cdd60e01b8152600481018290526044803560248301526001908201529287926001600160a01b031691602085606481865afa9485156110b95784956110c4575b5084611012575b5050602154604051632b3297f960e01b8152925060209150829060049082906001600160a01b03165afa908115611007579186610d1b60209593829795899a91610fea575b506024359089614b25565b9050610d5a60018060a01b036021541694610d3c600e5493600c54966134dc565b966040519a8b9889978896630394b9c560e21b885260048801614f07565b03925af1918215610fdd578192610fa9575b5060018060a01b03600954166020600c54606460405180948193638eb22cdd60e01b835260048301528760248301528660448301525afa9182156108295791610f77575b50610dbb818461493e565b8060009115610ef6575b6001600160a01b03841682526018602052604082208054610de79083906134dc565b9055610df5816015546134dc565b601555600c54600954929490926001600160a01b0316803b1561081c5782600091610e399583604051809881958294630208d92960e11b8452308a60048601614ae2565b03925af1918215610eea576020956107909461078b94610ed8575b506001600160a01b03831681526026875260408082206028548352885281208054610e809084906134dc565b90558015610ed1576009546001600160a01b0316905b6001600160a01b038481169216907f9ed03113de523cebfe5e49d5f8e12894b1c0d42ce805990461726444c90eab879080a460115490614803565b8290610e96565b610ee291506132df565b600038610e54565b6040513d6000823e3d90fd5b5060018060a01b03600954166020600c54606460405180948193638eb22cdd60e01b835260048301528660248301528660448301525afa9081156108eb578291610f41575b50610dc5565b90506020813d602011610f6f575b81610f5c60209383613375565b81010312610f6b575138610f3b565b5080fd5b3d9150610f4f565b90506020813d602011610fa1575b81610f9260209383613375565b8101031261081c575138610db0565b3d9150610f85565b9091506020813d602011610fd5575b81610fc560209383613375565b8101031261081c57519038610d6c565b3d9150610fb8565b50604051903d90823e3d90fd5b6110019150873d891161091e576109108183613375565b38610d10565b6040513d88823e3d90fd5b602060049260405193848092632b3297f960e01b82525afa9182156110b9578492611098575b50823b156110945784928492838a61106660405197889687958694630208d92960e11b865260048601614ae2565b03925af180156108eb5761107c575b8080610ccb565b611085906132df565b611090578438611075565b8480fd5b8380fd5b6110b291925060203d60201161091e576109108183613375565b9038611038565b6040513d86823e3d90fd5b935093506020833d6020116110f3575b816110e160209383613375565b8101031261081c578792519338610cc4565b3d91506110d4565b5061014036600319011261034a576111116130fc565b60643515156064350361081c576001600160401b038060843511610430576060608435360360031901126104305760a43511610f6b5760e060a43536036003190112610f6b5760803660c3190112610f6b57600560005260076020527fbcdda56b5d08466ec462cbbe0adfa57cb0a15fcc8940ef68f702f21b787bc9355461119c9060ff16156145b4565b6111a46136d0565b50506111ae614491565b6111c36001600160a01b038216301415614631565b6111d1604460a4350161467c565b60c4356001600160a01b038116900361081c576111f46111f99160c435906149f5565b61468b565b60243580611575575b5061128461125661127e61127861125c620186a0611224603054604435613478565b04611234601154916044356134dc565b600d5460ff9061124c906001600160a01b0316614795565b1695869289613884565b906148fb565b6001600160a01b03861687526018602052604087205490613478565b916134c1565b906134a1565b336001600160a01b0383160361152b575b61129f908261493e565b6112e060406112b16044358480614b25565b905060018060a01b0360095416600e548684518096819582946311a5cc7760e31b84528a3091600486016146e4565b03925af190811561086a5783916114fb575b50600d546001600160a01b031690606435156114f557475b823b156110905760405191633cb7ea1d60e11b8352600483015260018060a01b0384166024830152610100604483015260a4356004013561010483015261ffff611358602460a435016133b1565b1661012483015261ffff611370604460a435016133b1565b166101448301526001600160a01b0361138d60a435606401613128565b166101648301526114596113eb6113c46113b1608460a4350160a435600401614713565b60e06101848801526101e4870191614744565b6113d760a480350160a435600401614713565b86830361010319016101a488015290614744565b6001600160a01b0361140160a43560c401613128565b166101c485015283810360031901606485015260606114496004608435016001600160a01b0361143082613128565b1684526084356024810135602086015260440190614713565b9190928160408201520191614744565b6001600160a01b0360c4358116608485015290939060e4359081169081900361081c5760a4840152610104356001600160a01b0381169081900361081c5760c4840152610124356001600160a01b038116919082900361081c5783879593818795819560e483015203925af180156108eb576114e1575b5061039c61078b8360115490614803565b6114ea906132df565b610f6b5781386114d0565b3461130a565b61151d915060403d604011611524575b6115158183613375565b8101906146ce565b50386112f2565b503d61150b565b806112955760405162461bcd60e51b815260206004820152601c60248201527f42423a20616c6c6f77616e63655368617265206e6f742076616c6964000000006044820152606490fd5b602060018060a01b0360095416916064600c546040519485938492638eb22cdd60e01b8452600484015260248301528760448301525afa90811561086a5783916116e5575b506115c5818361493e565b8015611665575b60018060a01b038216600052601860205260406000206115ed8282546134dc565b90556115fb816015546134dc565b60155560018060a01b03821660005260266020526040600020602854600052602052604060002061162d8282546134dc565b90556001600160a01b038216807f9ed03113de523cebfe5e49d5f8e12894b1c0d42ce805990461726444c90eab87600080a438611202565b5060018060a01b03600954166020600c54606460405180948193638eb22cdd60e01b8352600483015260006024830152600060448301525afa908115610eea576000916116b3575b506115cc565b906020823d6020116116dd575b816116cd60209383613375565b8101031261034a575051386116ad565b3d91506116c0565b90506020813d60201161170f575b8161170060209383613375565b8101031261081c5751386115ba565b3d91506116f3565b503461034a5761016036600319011261034a576001600160a01b039060043582811690819003610f6b576001600160401b0392602435848111611094576117629036906004016133c0565b90946044359383851680950361081c57611781846005541633146133ed565b80611b51575b50816119d4575b50509080929350611994575b50506064358061197c575b5060843580611964575b5060a4358061194d575b5060c43580611929575b5060e43580611905575b5061010435806118d4575b506101243580611860575b5061014435806117f1575080f35b601e54811061180057601f5580f35b60405162461bcd60e51b815260206004820152603260248201527f4d61726b65743a206c69717569646174696f6e436f6c6c61746572616c697a616044820152711d1a5bdb94985d19481d1bdbc81cdb585b1b60721b6064820152608490fd5b61186f620186a0821115613438565b601f54811161188157601e55386117e3565b60405162461bcd60e51b815260206004820152602560248201527f4d61726b65743a20636f6c6c61746572616c697a6174696f6e5261746520746f6044820152646f2062696760d81b6064820152608490fd5b806016547fae6e0ab3b95f0a53ff9660a390ccedcbbf1f2355dce974a9841af106fddcfaba8480a3601655386117d8565b611913620186a08210613438565b611920601b548211613438565b601c55386117cd565b611937620186a08210613438565b611944601c548210613438565b601b55386117c3565b61195b620186a08210613438565b601d55386117b9565b611973620186a0821115613438565b601a55386117af565b61198b620186a0821115613438565b601955386117a5565b816008549182167f5a62d22209e370e38eea92cfddcd228e656e6ec139243392a760a7769f5877fd8580a36001600160a01b03191617600855388061179a565b8111611b3d576119e5601054613220565b601f8111611adc575b5083601f8211600114611a565784958293949592611a4b575b50508160011b916000199060031b1c1916176010555b7fa6f004921c944d4b8bf6e38462b00f36a58d62495d56b51f571ab78f732c98158380a1908291388061178e565b013590503880611a07565b60108552601f198216957f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae672918660205b898210611ac45750508360019596979810611aaa575b505050811b01601055611a1d565b0135600019600384901b60f8161c19169055388080611a9c565b80600184968294958701358155019501920190611a86565b601085527f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae672601f830160051c810160208410611b36575b601f90920160051c01905b818110611b2b57506119ee565b858155600101611b1e565b5080611b13565b634e487b7160e01b84526041600452602484fd5b600f80546001600160a01b0319169190911790557f0b2d6eb667d0522c3eb86e4288afecae6c11591ffd1345d4d12407e0598bca9b8580a138611787565b503461034a578060031936011261034a576008546040516001600160a01b039091168152602090f35b503461034a578060031936011261034a576020601e54604051908152f35b503461034a578060031936011261034a576060602454604051906001600160401b0380821683528160401c16602083015260801c6040820152f35b503461034a578060031936011261034a576020601a54604051908152f35b503461034a57604036600319011261034a57611c496130fc565b60243580928115801590611d00575b611c90575b50506040519182526001600160a01b03169033906000805160206153fc83398151915290602090a3602060405160018152f35b33815260016020526040812054611ca983821015613c51565b6001600160a01b0384169033829003611cc4575b5050611c5d565b604093611cdb91611cd6841515613c96565b6134cf565b338352600160205283832055815220611cf58382546134dc565b905581388080611cbd565b50336001600160a01b03841614611c58565b503461034a57604036600319011261034a576060611d3a611d316130fc565b6024359061360f565b9060405192835260208301526040820152f35b503461034a578060031936011261034a576020602c54604051908152f35b503461034a57604036600319011261034a576020610790611d8a6130fc565b602435906139f5565b503461034a578060031936011261034a57808060018060a01b03600b541660405160208101906395d89b4160e01b825260048152611dd081613323565b51915afa611ddc614765565b915015611e3c57611def61037f9161528a565b611e286023604051809362746d2d60e81b6020830152611e18815180926020868601910161313c565b8101036003810184520182613375565b60405191829160208352602083019061315f565b5061037f611e48615233565b611def565b503461034a578060031936011261034a576020603054604051908152f35b503461034a57604036600319011261034a576004356001600160401b038111610f6b5736602382011215610f6b57806004013590611ea882613396565b90611eb66040519283613375565b82825283602091828401943660248284010111610430578060248593018737840101526024359061ffff821680920361081c576101009384848051810103126120e057611f02906136c3565b90611f0f60408501613cdb565b611f1b60608601613cdb565b9560808601519560a081015191611f3460c08301613cef565b9060e08301519201519260018060a01b03808096169a169781421161209b5792610b269289888d989794612012978e8d600014612074577f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e266945b8c60005260048552604060002092835493611fa885613e74565b905560405195860196875260408601528c6060860152608085015260a084015260c083015260e082015260e08152611fdf8161333e565b519020611fea613b27565b90604051908a82019261190160f01b84526022830152604282015260428152610b1e8161335a565b16036120305750156120275761039c92613ed1565b61039c92613e83565b6064906040519062461bcd60e51b82526004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152fd5b7f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d694611f8e565b60405162461bcd60e51b815260048101889052601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b8580fd5b503461034a578060031936011261034a576005546040516001600160a01b039091168152602090f35b503461034a578060031936011261034a576020601b54604051908152f35b503461034a578060031936011261034a57601454604080516001600160801b038316815260809290921c602083015290f35b503461034a578060031936011261034a576020602e54604051908152f35b503461034a57604036600319011261034a576121a26121986130fc565b6024359033613e83565b602060405160018152f35b503461034a57602036600319011261034a576020906040906001600160a01b036121d56130fc565b168152600483522054604051908152f35b503461034a578060031936011261034a57600f546040516001600160a01b039091168152602090f35b503461034a578060031936011261034a5761037f604051611e28816122338161325a565b0382613375565b503461034a57602036600319011261034a5760043590600982101561034a57602060ff612266846131f1565b54166040519015158152f35b503461034a57602036600319011261034a576020906040906001600160a01b0361229a6130fc565b168152600183522054604051908152f35b503461034a578060031936011261034a57600a546040516001600160a01b039091168152602090f35b503461034a578060031936011261034a576122ed613f28565b5060806122f8613fac565b509350505050604051916001600160401b0380825116845260208201511660208401526040600180861b039101511660408301526060820152f35b503461034a578060031936011261034a576020601c54604051908152f35b503461034a578060031936011261034a5760206001600160401b03602d5460401c16604051908152f35b503461034a578060031936011261034a5760206001600160401b03602d5416604051908152f35b503461034a578060031936011261034a5760206001600160401b03602f5416604051908152f35b503461034a578060031936011261034a5760208054604051908152f35b503461034a578060031936011261034a576006546001600160a01b03908181163381900361245057806005549384167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08680a36001600160a01b0319928316176005551660065580f35b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b503461034a578060031936011261034a576020602954604051908152f35b503461034a57602036600319011261034a576020906040906001600160a01b036124da6130fc565b168152601783522054604051908152f35b503461034a578060031936011261034a576020601554604051908152f35b503461034a578060031936011261034a576020600e54604051908152f35b503461034a578060031936011261034a576020601654604051908152f35b503461034a57606036600319011261034a576020610790604435602435600435613502565b503461034a578060031936011261034a576020601154604051908152f35b503461034a578060031936011261034a57600d546040516001600160a01b039091168152602090f35b503461034a578060031936011261034a576020601254604051908152f35b503461034a578060031936011261034a576020610790613b27565b503461034a578060031936011261034a576020601954604051908152f35b503461034a578060031936011261034a576020601354604051908152f35b503461034a578060031936011261034a57600d5460209061264f906001600160a01b0316614795565b60ff60405191168152f35b5061012036600319011261034a576126706130fc565b612678613193565b6001600160401b0380606435116110945760606064353603600319011261109457608435116104305760e0608435360360031901126104305760803660a3190112610430576006835260076020526126d760ff604085205416156145b4565b6126df6136d0565b50506126e9614491565b6126fe6001600160a01b038316301415614631565b8261270d60446084350161467c565b60a435906001600160a01b0382168203610430576111f48261272e926149f5565b60018060a01b0360095416926020600c54606460405180978193638eb22cdd60e01b8352600483015260243560248301528760448301525afa93841561086a578394612ab5575b50604084612786612864968861493e565b6001600160a01b0387168552601860205281852080546127a79083906134cf565b90556127b5816015546134cf565b60155580306001600160a01b0389167f8ad4d3ff00da092c7ad9a573ea4f5f6a3dffc6712dc06d3f78f49b862297c4028880a46001600160a01b038716855260266020908152828620602854808852915282862054821115612a8457506001600160a01b038716855260266020908152828620602854875290528185208590555b60018060a01b0360095416600c548684518099819582946311a5cc7760e31b845230903090600486016146e4565b03925af193841561086a578394612a62575b50600b546001600160a01b03169015612a5b5747915b813b156110945760405194633cb7ea1d60e11b8652600486015260018060a01b038616602486015261010060448601526084356004016129c5612968610104928035848a015261ffff806128e46024608435016133b1565b166101248b01526128f96044608435016133b1565b166101448a01526001600160a01b03612916608435606401613128565b166101648a01526129546129478a61018460e0612937608480350187614713565b92909301526101e48d0191614744565b9160a46084350190614713565b8a830361010319016101a48c015290614744565b6001600160a01b0361297e60843560c401613128565b166101c4890152600319888203016064890152606061144960643560040160018060a01b036129ac82613128565b1684526064356024810135602086015260440190614713565b6001600160a01b0392831660848801529160c435908116908190036120e05760a487015260e4356001600160a01b038116908190036120e05760c4870152356001600160a01b03811693908490036110905785809492819360e483015203925af1801561086a57612a42575b5061078b61039c9160115490614803565b61039c9192612a5361078b926132df565b929150612a31565b349161288c565b612a7c91945060403d604011611524576115158183613375565b509238612876565b6001600160a01b038816865260266020908152838720918752528185208054612aae9083906134cf565b9055612836565b93506020843d602011612ae2575b81612ad060209383613375565b81010312610430579251926040612775565b3d9150612ac3565b503461034a57606036600319011261034a57612b046130fc565b90612b0d613112565b6044359182612b4b575b506040519182526001600160a01b039081169216906000805160206153fc83398151915290602090a3602060405160018152f35b6001600160a01b03848116808352600160209081526040842054928690612b7482861015613c51565b861693848403612b89575b5050505050612b17565b838652600283526040808720338852845286205460018101612bf3575b5092600160209693612bd18794604097611cd66000805160206153fc8339815191529c9a1515613c96565b9285525283832055815220612be78582546134dc565b90559138808581612b7f565b90918110612c475792600160209693612bd18a6000805160206153fc8339815191529a9895612c248260409a6134cf565b86895260028552898920338a528552898920559497509497995050939650612ba6565b60405162461bcd60e51b815260048101849052601860248201527745524332303a20616c6c6f77616e636520746f6f206c6f7760401b6044820152606490fd5b503461034a57612c96366131a2565b90839594954211610b8257612d2d91610b269160018060a01b03948a868b169788825260046020526040822090815491612ccf83613e74565b90556040519160208301937f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d6855260408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e08152610aea8161333e565b1603610b3d5761039c92613e83565b503461034a57602036600319011261034a576020906040906001600160a01b03612d646130fc565b168152601883522054604051908152f35b503461034a578060031936011261034a57602060255460801c604051908152f35b503461034a57604036600319011261034a576004356009811015610f6b57612dbc613184565b6008549091906001600160a01b03163303612e725760ff612ddc826131f1565b54161515911515918214612e3857808260ff612dfa612e28946131f1565b54161515827feeec81de25875ce1725479bb76f720a8defdb43dea041919ae37bb4aae9847c08780a46131f1565b9060ff8019835416911617905580f35b60405162461bcd60e51b81526020600482015260126024820152714d61726b65743a2073616d6520737461746560701b6044820152606490fd5b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881d5b985d5d1a1bdc9a5e995960621b6044820152606490fd5b503461034a57604036600319011261034a576121a2612ecb6130fc565b6024359033613ed1565b503461034a57606036600319011261034a57612eef6130fc565b612ef7613184565b612eff613193565b9060018060a01b03928391612f19836005541633146133ed565b15612fbd571690811590811591612fb5575b5015612f7857806005549283167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08580a36001600160a01b03199182161760055560068054909116905580f35b60405162461bcd60e51b81526020600482015260156024820152744f776e61626c653a207a65726f206164647265737360581b6044820152606490fd5b905038612f2b565b9150501660018060a01b0319600654161760065580f35b503461034a578060031936011261034a57808060018060a01b03600b541660405160208101906306fdde0360e01b82526004815261301181613323565b51915afa61301d614765565b91501561307a5761303061037f9161528a565b611e286034604051809373546170696f63612053696e67756c61726974792d60601b602083015261306a815180926020868601910161313c565b8101036014810184520182613375565b5061037f613086615233565b613030565b503461034a578060031936011261034a5760406130a66136d0565b825191151582526020820152f35b905034610f6b576040366003190112610f6b5760406020926130d46130fc565b6130dc613112565b6001600160a01b0391821683526003865283832091168252845220548152f35b600435906001600160a01b038216820361081c57565b602435906001600160a01b038216820361081c57565b35906001600160a01b038216820361081c57565b60005b83811061314f5750506000910152565b818101518382015260200161313f565b906020916131788151809281855285808601910161313c565b601f01601f1916010190565b60243590811515820361081c57565b60443590811515820361081c57565b60e090600319011261081c576001600160a01b0390600435828116810361081c5791602435908116810361081c5790604435906064359060843560ff8116810361081c579060a4359060c43590565b600981101561320a576000526007602052604060002090565b634e487b7160e01b600052602160045260246000fd5b90600182811c92168015613250575b602083101461323a57565b634e487b7160e01b600052602260045260246000fd5b91607f169161322f565b6010546000929161326a82613220565b9081815260019283811690816000146132c4575060011461328a57505050565b9092935060106000526020928360002092846000945b8386106132b05750505050010190565b8054858701830152940193859082016132a0565b91935050602093945060ff191683830152151560051b010190565b6001600160401b0381116132f257604052565b634e487b7160e01b600052604160045260246000fd5b606081019081106001600160401b038211176132f257604052565b604081019081106001600160401b038211176132f257604052565b61010081019081106001600160401b038211176132f257604052565b608081019081106001600160401b038211176132f257604052565b90601f801991011681019081106001600160401b038211176132f257604052565b6001600160401b0381116132f257601f01601f191660200190565b359061ffff8216820361081c57565b9181601f8401121561081c578235916001600160401b03831161081c576020838186019501011161081c57565b156133f457565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b1561343f57565b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881b9bdd081d985b1a59607a1b6044820152606490fd5b8181029291811591840414171561348b57565b634e487b7160e01b600052601160045260246000fd5b81156134ab570490565b634e487b7160e01b600052601260045260246000fd5b604d811161348b57600a0a90565b9190820391821161348b57565b9190820180921161348b57565b8181039291600013801582851316918412161761348b57565b6014549192916135459161353c9161353291613528906001600160801b03831690613478565b9060801c906134a1565b93601f5490613478565b61127e836134c1565b8083106136075761355961358f91846134cf565b9161358a611278613581601e5461357b613572866134c1565b602054906134dc565b90613478565b61127e846134c1565b6134e9565b6509184e72a0009081810291818305149015171561348b57670de0b6b3a76400009182810292818405149015171561348b5780156134ab57600160ff1b9180831460001983141661348b570590600082121561360057811461348b57600003905b8082116135fb575090565b905090565b50906135f0565b505050600090565b6001600160a01b0381166000818152601760205260408120549194939290919081156136b757916040916136936136ab9594836020865161364f81613323565b828152015261366d86613660613fac565b5050505050939050613884565b815190936001600160801b039160209161368991841690613478565b92015116906134a1565b8181106136af57035b9581526018602052205461394a565b9091565b50508061369c565b50509192505080918190565b5190811515820361081c57565b600f546040805163d6d7d52560e01b8152602060048201529290916001600160a01b03168284806137036024820161325a565b0381600080955af1801561382c57819482916137f0575b5092841561379357831561375957507f9f9192b5edb17356c524e08d9e025c8e2f6307e6ea52fb7968faa3081f51c3c883918260115580a25b42601355565b5162461bcd60e51b81526020600482015260146024820152734d61726b65743a20696e76616c6964207261746560601b6044820152606490fd5b919250506137a6601354601254906134dc565b42116137b6575060115490613753565b5162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881c985d19481d1bdbc81bdb1960621b6044820152606490fd5b809550848092503d8311613825575b6138098183613375565b8101031261034a57602061381c856136c3565b9401513861371a565b503d6137ff565b508251903d90823e3d90fd5b1561383f57565b60405162461bcd60e51b815260206004820152601e60248201527f4d61726b65743a2065786368616e676552617465206e6f742076616c696400006044820152606490fd5b61388f821515613838565b60018060a01b036020816009541691600c5490600094168452601882526064604085205491604051948593849263442c159960e01b8452600484015260248301528660448301525afa918215610829578092613912575b50509061390a61390161390f93620186a06022540490613478565b601e5490613478565b6134a1565b90565b9091506020823d8211613942575b8161392d60209383613375565b8101031261034a57505161390a6139016138e6565b3d9150613920565b613955821515613838565b602060018060a01b0360095416916064600c54604051948593849263442c159960e01b845260048401526024830152600060448301525afa908115610eea576000916139c2575b509061390a6139ae9260225490613478565b620186a06139be601e5483613478565b0491565b906020823d82116139ed575b816139db60209383613375565b8101031261034a57505161390a61399c565b3d91506139ce565b6001600160a01b03166000818152601860205260408120549092613a189161394a565b918352601760205260408320548015613b21578115613b2157818110613b215782811015613b1757601454613a61918391611cd691613528906001600160801b03831690613478565b90620186a09283830292808404851490151715613b0357613a86929161127e916134cf565b91601b5491601c5493613a9985856134e9565b80820291848212600160ff1b821416613b03578183051490151715613aef5705818482019485129112908015821691151617613adb57508082126135fb575090565b634e487b7160e01b81526011600452602490fd5b634e487b7160e01b83526011600452602483fd5b634e487b7160e01b85526011600452602485fd5b50505050601b5490565b50505090565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03161480613c28575b15613b82577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f000000000000000000000000000000000000000000000000000000000000000082527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a0815260c081018181106001600160401b038211176132f25760405251902090565b507f00000000000000000000000000000000000000000000000000000000000000004614613b59565b15613c5857565b60405162461bcd60e51b815260206004820152601660248201527545524332303a2062616c616e636520746f6f206c6f7760501b6044820152606490fd5b15613c9d57565b60405162461bcd60e51b815260206004820152601660248201527545524332303a206e6f207a65726f206164647265737360501b6044820152606490fd5b51906001600160a01b038216820361081c57565b519060ff8216820361081c57565b600581101561320a5780613d0e5750565b60018103613d565760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b6044820152606490fd5b60028103613da35760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606490fd5b600314613dac57565b60405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608490fd5b9291906fa2a8918ca85bafe22016d0b997e4df60600160ff1b038311613e685791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa15610fdd5781516001600160a01b03811615613e62579190565b50600190565b50505050600090600390565b600019811461348b5760010190565b7fe50de2333c10a9502fcb1d8ae13a51bbf423153dfc63c2b8997665b32154afc360018060a01b038092169160009083825260036020526040822094169384825260205284604082205580a4565b909160207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259160018060a01b03809416938460005260028352604060002095169485600052825280604060002055604051908152a3565b60405190613f3582613308565b60006040838281528260208201520152565b60405190613f5482613323565b6014546001600160801b038116835260801c6020830152565b60405190613f7a82613323565b6025546001600160801b038116835260801c6020830152565b6001600160801b03918216908216019190821161348b57565b613fb4613f28565b5060006020604051613fc581613323565b828152015260006020604051613fda81613323565b828152015260405190613fec82613308565b602454916001600160401b038316815260208101926001600160401b038160401c16845260801c60408201528092614022613f47565b9261402b613f6d565b92600060018060a01b0360095416600e549460018060801b038751166040519063442c159960e01b8252876004830152602482015260006044820152602081606481865afa8015610eea57600090614438575b895161409492506001600160801b0316906134dc565b80614403575060005b6140b26001600160401b0382935116426134cf565b9485156143d9575050426001600160401b031660208a8101919091528801516001600160801b03161561438f57506020670de0b6b3a76400006141148561410f8c6001600160401b038d60018060801b0390511691511690613478565b613478565b895191900496906001600160801b039061413390828a16908316613f93565b168952875160405163442c159960e01b815260048101929092526001600160801b031660248201526000604482015291829060649082905afa8015610eea5760009061435b575b875161419092506001600160801b0316906134dc565b926141be8461390a620186a06141a8601a548a613478565b60208c01516001600160801b0316919004613478565b6040890180519195916001600160801b0380881692916141e19084908316613f93565b16905260208801805190916001600160801b039161420191908316613f93565b16905280614326575060005b602a54909384828110156142a15761422590836134cf565b90670de0b6b3a7640000820291808304670de0b6b3a7640000149015171561348b5761390a6142796142736142656001600160401b0396614283966134a1565b9361410f602e549580613478565b836134dc565b91848d5116613478565b168089526001600160401b03602d541680911061429d5750565b8852565b909150602b548082116142b357505050565b6142bc916134cf565b670de0b6b3a7640000810290808204670de0b6b3a7640000149015171561348b576001600160401b039161390a6142ff61427361426561430895602c54906134a1565b848d5116613478565b81602d5460401c1680821161431e575b50168852565b905038614318565b87516001600160801b0316670de0b6b3a764000081810292918084049091149015171561348b57614356916134a1565b61420d565b506020813d602011614387575b8161437560209383613375565b8101031261081c57614190905161417a565b3d9150614368565b9697939450509350506001600160401b038151166001600160401b03602f54168091036143cd575b5093926143c2613f6d565b926000926000929190565b815260019250386143b7565b9750985050505050925050916143ed613f47565b916143f6613f6d565b9160009160009190600090565b88516001600160801b0316670de0b6b3a764000081810292918084049091149015171561348b57614433916134a1565b61409d565b506020813d602011614464575b8161445260209383613375565b8101031261081c57614094905161407e565b3d9150614445565b601480546001600160801b031660809290921b6001600160801b031916919091179055565b61457860208061454e6144a2613fac565b939695939092901561457a575050506001600160401b03602f54166000807f33af5ce86e8438eff54589f85332916444457dfa8685493fbd579b809097026b88604051838152a45b805185820151604092830151921b67ffffffffffffffff60401b166001600160401b03919091161760809190911b6001600160801b0319908116919091176024558151601480549092166001600160801b039182161790915594859101511661446c565b8051910151821660801b6001600160801b0319166001600160801b03929091169190911617602555565b565b7f33af5ce86e8438eff54589f85332916444457dfa8685493fbd579b809097026b886001600160401b0386511694604051908152a46144ea565b156145bb57565b60405162461bcd60e51b815260206004820152600e60248201526d13585c9ad95d0e881c185d5cd95960921b6044820152606490fd5b156145f857565b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881a5b9cdbdb1d995b9d607a1b6044820152606490fd5b1561463857565b606460405162461bcd60e51b815260206004820152602060248201527f4d61726b65743a2063616e6e6f742065786563757465206f6e20697473656c666044820152fd5b3561ffff8116810361081c5790565b1561469257565b60405162461bcd60e51b815260206004820152601460248201527329a3a61d1024b73b30b634b21039bbb0b83832b960611b6044820152606490fd5b919082604091031261081c576020825192015190565b9081526001600160a01b0391821660208201529116604082015260006060820152608081019190915260a00190565b9035601e198236030181121561081c5701602081359101916001600160401b03821161081c57813603831361081c57565b908060209392818452848401376000828201840152601f01601f1916010190565b3d15614790573d9061477682613396565b916147846040519384613375565b82523d6000602084013e565b606090565b60008091604051602081019063313ce56760e01b8252600481526147b881613323565b51916001600160a01b03165afa6147cd614765565b90806147f8575b156147f25760208180518101031261081c57602061390f9101613cef565b50601290565b5060208151146147d4565b919060018060a01b038060009416845260206017815260408520549081156148f15760188152604086205480156148ea578161483d613f47565b9460095416916064600c54604051948593849263442c159960e01b8452600484015260248301528b60448301525afa9687156108295780976148b4575b50506136896148996139016148af969798620186a06022540490613478565b9561410f60018060801b03948587511690613478565b111590565b9096508187813d83116148e3575b6148cc8183613375565b8101031261034a575094519461368961489961487a565b503d6148c2565b5050505050565b5060019450505050565b9182158015614936575b613607576001810180911161348b576149249261357b61390a926134c1565b6005810180911161348b57600a900490565b508115614905565b6001600160a01b0316338103614952575050565b60008181526020906003825260409182822033835281528483832054106149bb5783825260038152828220338352815282822054600101614994575050505050565b6149af938252600381528282209033835252209182546134cf565b905538808080806148ea565b60649083519062461bcd60e51b82526004820152601460248201527313585c9ad95d0e881b9bdd08185c1c1c9bdd995960621b6044820152fd5b600a5460405163dbd01de160e01b815260209290916001600160a01b039084908490600490829085165afa8015610eea578493600091614aa4575b50918161ffff936044936040519889968795633a304d8b60e21b8752166004860152166024840152165afa908115610eea57600091614a70575b50905090565b82813d8311614a9d575b614a848183613375565b8101031261034a5750614a96906136c3565b8038614a6a565b503d614a7a565b9091929381813d8311614adb575b614abc8183613375565b81010312610f6b575190828216820361034a5750839291906044614a30565b503d614ab2565b6001600160a01b039182168152911660208201526040810191909152606081019190915260800190565b6001600160801b03918216908216039190821161348b57565b92909192620186a0614b3960305486613478565b04614b42613f47565b94614b4d82826134dc565b94604093845196614b5d88613323565b60008089526020988901819052895190956001600160801b039290918316614e3c5782614b918c8280855b16915116613f93565b168b52614bd58a8c0184614baa81851682845116613f93565b16809152614bd085849e511660018060801b031660018060801b03196014541617601455565b61446c565b6016548015908115614e2d575b5015614def57859060018060a01b0380951680895260178c52898920614c098382546134dc565b90558951918483528c8301527f3a5151e57d3bc9798e7853034ac52293d1a0e12a2b44725e75b03b21f86477a68a87891693a480614dce575b50878260095416946064600e5489519788938492638eb22cdd60e01b8452600484015260248301528960448301525afa938415614dc4578594614d95575b508397614c8b613f6d565b818101916103e88484511610614d61575090614cdb839283614cb5614d02968a1682845116614b0c565b1690819052602580546001600160801b0319166001600160801b03909216919091179055565b51602580546001600160801b03169290911660801b6001600160801b031916919091179055565b6009541690600e5490823b15611090579184939184879694614d3a985198899586948593630208d92960e11b85523060048601614ae2565b03925af1918215614d57575050614d4e5750565b614578906132df565b51903d90823e3d90fd5b60649089519062461bcd60e51b82526004820152600e60248201526d14d1d30e881b5a5b881b1a5b5a5d60921b6044820152fd5b9093508781813d8311614dbd575b614dad8183613375565b8101031261109057519238614c80565b503d614da3565b86513d87823e3d90fd5b82600a5416865260018952614de78787209182546134dc565b905538614c42565b875162461bcd60e51b8152600481018b9052601760248201527614d1d30e88189bdc9c9bddc818d85c081c995858da1959604a1b6044820152606490fd5b90508360145416111538614be2565b828b8b81019280614e6f614e60614e568688511684613478565b86865116906134a1565b95856107dd8187511689613478565b10614e81575b908280614b9193614b88565b92908280614e91614b9194613e74565b959293505050614e75565b15614ea357565b60405162461bcd60e51b815260206004820152601f60248201527f42423a206c65766572616765206578656375746f72206e6f742076616c6964006044820152606490fd5b9081602091031261081c57516001600160a01b038116810361081c5790565b919260a09361390f979592845260208401526040830152600180841b031660608201528160808201520191614744565b60208101805190939291906001600160801b03908116614f58575090925050565b90816107dd81614f7b614f71614f849686511688613478565b828a5116906134a1565b97511687613478565b10614f8b57565b9061390f90613e74565b92919060009160018060a01b03948583168452602060178152604085205480841161522b575b5082156151ef57614fca613f47565b968582604051614fd981613323565b8281520152614fe88489614f37565b9560018060801b039384615001818a16828d5116614b0c565b168a52615040848b018661501a818a1682845116614b0c565b16809152614bd0878b9d511660018060801b031660018060801b03196014541617601455565b828716825260178452604082206150588782546134cf565b90558260095416600e549560405190638eb22cdd60e01b82528760048301528a6024830152600160448301528682606481865afa9182156109255785926151c0575b5080602554169492803b1561081c57826000916150d09a83604051809d81958294630208d92960e11b8452308d60048601614ae2565b03925af1948515610eea577fc8e512d8f188ca059984b5853d2bf653da902696b8512785b182b2c813789a6e9887966151aa575b506151129082841690613f93565b1660018060801b031960255416176025558383169081835260268752604083206027549081855288526040842054821160001461518357505081526026855260408120602754825285528060408120555b1561517d57508060095416955b60405195865216941692a4565b95615170565b90918352602687526040832090835286526151a3604083209182546134cf565b9055615163565b6151b59194506132df565b600092615112615104565b9091508681813d83116151e8575b6151d88183613375565b810103126110905751903861509a565b503d6151ce565b6064906040519062461bcd60e51b82526004820152601560248201527453474c3a206e6f7468696e6720746f20726570617960581b6044820152fd5b925038614fbb565b6040519061524082613323565b60038252623f3f3f60e81b6020830152565b908151811015615263570160200190565b634e487b7160e01b600052603260045260246000fd5b60ff1660ff811461348b5760010190565b8051604081106153025750805181019060208181840193031261081c576020810151906001600160401b03821161081c570181603f8201121561081c5760208101516152d581613396565b926152e36040519485613375565b8184526040828401011161081c5761390f91604060208501910161313c565b6020929083036153f0576000805b60ff811685811090816153d1575b50156153325761532d90615279565b615310565b9260ff8094169261534284613396565b936153506040519586613375565b80855261535f601f1991613396565b013687860137825b858116878110806153b4575b156153a9576153a4919061539e6001600160f81b03196153938388615252565b5116871a9188615252565b53615279565b615367565b505094505050905090565b506001600160f81b03196153c88286615252565b51161515615373565b6001600160f81b031991506153e69086615252565b511615153861531e565b91505061390f61523356feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa26469706673582212204a5215d4d199b5dc237a0bf5a57db68bd2d75f4faa736acaedce42321759e49364736f6c63430008120033", "linkReferences": {}, "deployedLinkReferences": {} } diff --git a/src/artifacts/tapioca-bar/SGLLiquidation.json b/src/artifacts/tapioca-bar/SGLLiquidation.json index d9207994..9978b30c 100644 --- a/src/artifacts/tapioca-bar/SGLLiquidation.json +++ b/src/artifacts/tapioca-bar/SGLLiquidation.json @@ -123,6 +123,25 @@ "name": "InterestElasticityUpdated", "type": "event" }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "oldVal", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newVal", + "type": "address" + } + ], + "name": "LeverageExecutorSet", + "type": "event" + }, { "anonymous": false, "inputs": [ @@ -1136,6 +1155,19 @@ "stateMutability": "view", "type": "function" }, + { + "inputs": [], + "name": "leverageExecutor", + "outputs": [ + { + "internalType": "contract ILeverageExecutor", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, { "inputs": [ { @@ -1581,6 +1613,19 @@ "stateMutability": "view", "type": "function" }, + { + "inputs": [ + { + "internalType": "contract ILeverageExecutor", + "name": "_executor", + "type": "address" + } + ], + "name": "setLeverageExecutor", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, { "inputs": [ { @@ -1909,8 +1954,8 @@ "type": "function" } ], - "bytecode": "0x6101408060405234620001e5576200001781620001ea565b601381526001602082017f546170696f63612053696e67756c617269747900000000000000000000000000815260206040516200005481620001ea565b8381520192603160f81b845251902091208160e052610100918183524660a0526040519160208301907f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f92838352604085015260608401524660808401523060a084015260a0835260c083019280841060018060401b03851117620001cf5760408490525190206080523060c052610120908152600580546001600160a01b0319163390811790915560007f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a362013880601b5562015f90601c55612710601d55612ee06020557f0bd4060688a1800ae986e4840aebc924bb40b5bf44de4583df2257220b54b77c6026557f7d1dc38e60930664f8cbf495da6556ca091d2f92d6550877750c049864b182306027556161a86028556032602f55614bf0928362000207843960805183613a4f015260a05183613b1a015260c05183613a19015260e05183613a9e01525182613ac401525181613a7b0152f35b634e487b7160e01b600052604160045260246000fd5b600080fd5b604081019081106001600160401b03821117620001cf5760405256fe608080604052600436101561001357600080fd5b60e0600035811c918262a02a201461301a5750816302ce728f14612eb757816306fdde0314612e00578163078dfbe714612cfc578163095ea7b314612cd65781630c4e84f014612bbc57816318160ddd14612b9b5781631c9e379b14612b615781631da8bf1014612aaa57816323b872dd14612906578163313ce56714612876578163331960ff1461285857816334d441d01461283a5781633644e5151461281f57816337b6b7b91461280157816338d52e0f146127d85781633ba0b9a9146127ba5781633f741adb1461279657816340626d8b1461277857816344de240a1461275a578163473e3ce71461273c57816348e4163e146127025781634d7f2a34146126e45781634e71e0c814612636578163529898f21461261957816352f353eb146125f257816355140232146125cb57816355c2ab94146125a157816357935462146125835781635dfe04e8146125245781636c3d8b8f146124fb57816370a08231146124c1578163727785471461248b57816374645ff3146124605781637dc0d1d0146124375781637ecebe00146123fd5781637fa0b84e146123cc578163821226e8146123ae5781638285ef401461237c5781638c5d0ed31461235e5781638da5cb5b14612335578163910dd7c8146120eb578163959916dc146120cd57816395d89b411461201357816399a9702814611fe45781639c5d719214611fc65781639e15e89f14611f81578163a28e6b8214611abc578163a9059cbb146119da578163b0e21e8a146119bc578163b27c0e7414611981578163bb4cfe3b14611963578163ce8849ed1461193a578163d3fb2a38146114e1578163d505accf1461135c57508063d8dfeb4514611333578063dd62ed3e146112e2578063de406577146112b9578063e0996cb61461129b578063e30c397814611272578063e5644d8b146103cf578063ea64dd56146103b1578063eec0f42e14610393578063f42760b714610375578063f8ba4cff1461035a578063f9557ccb146103245763ffe04c661461030157600080fd5b3461031f57600036600319011261031f576020602954604051908152f35b600080fd5b3461031f57600036600319011261031f57602454604080516001600160801b038316815260809290921c602083015290f35b0390f35b3461031f57600036600319011261031f57610373614372565b005b3461031f57600036600319011261031f576020602a54604051908152f35b3461031f57600036600319011261031f576020600c54604051908152f35b3461031f57600036600319011261031f576020601f54604051908152f35b3461031f57608036600319011261031f576004356001600160401b03811161031f576103ff903690600401613333565b906024356001600160401b03811161031f5761041f903690600401613333565b6044356001600160401b03811161031f5761043e903690600401613333565b90916064356001600160401b03811161031f5761045f903690600401613333565b9290916004600052600760205260ff6040600020541661123c5787156111fc578088036111c1576104918289146144bf565b61049c8285146144bf565b600f5460405163d6d7d52560e01b8152602060048201526010549097916001600160a01b03169088906000906104d181613167565b9081602485015260018116908160001461119f5750600114611156575b50918160008160409503925af1968715610c1557600090600098611122575b508781611118575b501561110e57866011555b610528614372565b60009860005b818110610578578a1561053d57005b60405162461bcd60e51b815260206004820152601360248201527214d1d30e881b9bc81d5cd95c9cc8199bdd5b99606a1b6044820152606490fd5b61058381838c614879565b356001600160a01b038116810361031f5761059e8a82614889565b156105b3575b506105ae90613d70565b61052e565b9a6105bd90613d70565b9a6105c9828686614879565b35906105d683888c614879565b35906001600160a01b038216820361031f5789841015610bb8578360051b890135601e198a36030181121561031f578901926001600160401b0384351161031f5783353603602085011361031f5761062e8d8361390c565b918d156110c95760018060a01b03600954166020600c5460018060a01b03841660005260188252606460406000205491604051948593849263442c159960e01b845260048401526024830152600060448301525afa908115610c15578f90600092611093575b506106a56106aa92602154906133ee565b613417565b9360018060a01b03821660005260176020526106cb856040600020546134cb565b80601d5480611074575b508085111561106d575b6001600160a01b0384166000908152601760205260409020549081811115611064575080965b111561102f578f938181111561102857505b6001600160a01b038316600090815260176020526040902054908181111561101d57506107448180613445565b6001600160a01b038416600090815260176020526040902055610765613e43565b60208101516001600160801b0316610fe85750602081965b60646107a361079a60018060a01b036009541698600c54946133ee565b60215490613417565b916040519788938492638eb22cdd60e01b845260048401526024830152600060448301525afa938415610c1557600094610fb4575b506001600160a01b0383166000908152601860205260409020548411610f6f5760018060a01b03831660005260186020526040600020610819858254613445565b90558515610f3b57601454906108606001600160801b0361083e8982168286166144a6565b16926001600160801b0319926001600160801b0316908316841760801c6144a6565b60801b161760145560018060a01b0360095416956020600e546064604051809a8193638eb22cdd60e01b835260048301528a6024830152600160448301525afa968715610c1557600097610f03575b508691610991610998926015805488808211600014610ef9576108d191613445565b905b5560018060a01b0386166000526025806020526040600020602790815490816000526020526040600020548a11600014610ec4575060018060a01b0388166000528160205260406000209054600052602052600060408120555b60018060a01b03871660005280602052604060002090602691825490816000526020526040600020548811600014610e90575060018060a01b03881660005260205260406000209054600052602052600060408120555b36906020813591016132cf565b908561451c565b5010610e4b57600954600e54604051627eeac760e11b815230600482015260248101919091526001600160a01b039091169390602081604481885afa8015610c1557600090610e17575b6024546109f992506001600160801b031690613445565b9580871115610e0757610a1b610a13620186a09289613445565b925b836133ee565b0495610a278783613445565b9485610c99575b5086610c21575b610a4f87610a4a8760018060801b0394613445565b613445565b602454916001600160801b0391610a699116828416613e8f565b6001600160801b03199092169116176024908155600d5460095460405163095ea7b360e01b81526001600160a01b039182166004820152600093810184905292602092849260449284929091165af18015610c155787918691610bce575b50610a4a90610ad593613445565b6040516000815230907f30a8c4f9ab5af7e1309ca87c32377d1a83366c5990472dbf9d262450eae14e3860203092a460405190610b1182613241565b6001825260203681840137815115610bb8576001600160a01b03166020820190815260405191518291906000905b808210610b96575050508190039020604080519384526020840194909452928201526105ae9392919033907f85b91d472e69b2cfe848ed50eb5d8582ae96c22057b6e46250255dd6f6c3519290606090a4906105a4565b82516001600160a01b0316845260209384019390920191600190910190610b3f565b634e487b7160e01b600052603260045260246000fd5b9150506020813d602011610c0d575b81610bea60209383613293565b8101031261031f57610a4a85610ad593610c048a946137e8565b50935090610ac7565b3d9150610bdd565b6040513d6000823e3d90fd5b610c5660408860018060a01b0360095416600e5460008451809681958294634d4d7cbd60e11b84523390309060048601614996565b03925af18015610c1557610c6b575b50610a35565b610c8c9060403d604011610c92575b610c848183613293565b810190614506565b50610c65565b503d610c7a565b600d5460405163095ea7b360e01b8152600481019290925260006024830181905260209183916044918391906001600160a01b03165af18015610c1557610dce575b50600d5460095460405163095ea7b360e01b81526001600160a01b03918216600482015260001960248201529160209183916044918391600091165af18015610c1557610d95575b50600954600e54600a5460408051634d4d7cbd60e11b815293909284926001600160a01b039283169284926000928492610d68928f9290911690309060048601614996565b03925af18015610c155715610a2e57610d8f9060403d604011610c9257610c848183613293565b50610a2e565b6020813d602011610dc6575b81610dae60209383613293565b8101031261031f57610dbf906137e8565b5038610d23565b3d9150610da1565b6020813d602011610dff575b81610de760209383613293565b8101031261031f57610df8906137e8565b5038610cdb565b3d9150610dda565b50620186a0610a1b600092610a15565b506020813d602011610e43575b81610e3160209383613293565b8101031261031f576109f990516109e2565b3d9150610e24565b60405162461bcd60e51b815260206004820152601b60248201527f53474c3a20617373657420616d6f756e74206e6f742076616c696400000000006044820152606490fd5b915060018060a01b0388166000526020526040600020906000526020526040600020610ebd868254613445565b9055610984565b905060018060a01b038816600052816020526040600020906000526020526040600020610ef2898254613445565b905561092d565b50506000906108d3565b909196506020813d602011610f33575b81610f2060209383613293565b8101031261031f575195906109986108af565b3d9150610f13565b60405162461bcd60e51b815260206004820152600c60248201526b14d1d30e881cdbdb1d995b9d60a21b6044820152606490fd5b60405162461bcd60e51b815260206004820152601a60248201527f53474c3a206e6f7420656e6f75676820636f6c6c61746572616c0000000000006044820152606490fd5b9093506020813d602011610fe0575b81610fd060209383613293565b8101031261031f575192386107d8565b3d9150610fc3565b805160209161101791611004906001600160801b0316856133ee565b908301516001600160801b031690613417565b9661077d565b610744908092613445565b9050610717565b60405162461bcd60e51b815260206004820152600d60248201526c14d1d30e88189859081919589d609a1b6044820152606490fd5b90508096610705565b50836106df565b90620186a061108661108d93836133ee565b0490613452565b386106d5565b9150506020813d6020116110c1575b816110af60209383613293565b8101031261031f57518e6106a5610694565b3d91506110a2565b60405162461bcd60e51b815260206004820152601b60248201527f53474c3a2065786368616e676552617465206e6f742076616c696400000000006044820152606490fd5b6011549650610520565b905015158a610515565b905061114791975060403d60401161114f575b61113f8183613293565b8101906137f5565b96908a61050d565b503d611135565b601060009081529150600080516020614b9b8339815191525b8183106111835750508101604401816104ee565b8060209294604485600194549201015201910190918a9261116f565b60ff191660448581019190915291151560051b840190910191508290506104ee565b60405162461bcd60e51b8152602060048201526013602482015272084847440d8cadccee8d040dad2e6dac2e8c6d606b1b6044820152606490fd5b60405162461bcd60e51b815260206004820152601860248201527742423a206e6f7468696e6720746f206c697175696461746560401b6044820152606490fd5b60405162461bcd60e51b815260206004820152600e60248201526d13585c9ad95d0e881c185d5cd95960921b6044820152606490fd5b3461031f57600036600319011261031f576006546040516001600160a01b039091168152602090f35b3461031f57600036600319011261031f576020601d54604051908152f35b3461031f57600036600319011261031f576009546040516001600160a01b039091168152602090f35b3461031f57604036600319011261031f576112fb613066565b61130361307c565b9060018060a01b038091166000526002602052604060002091166000526020526020604060002054604051908152f35b3461031f57600036600319011261031f57600b546040516001600160a01b039091168152602090f35b3461031f5761136a366130e9565b8394969793929192421161149c57611448926114409260018060a01b0395868b16978860005260046020526040600020918254926113a784613d70565b90556040519160208301937f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e2668552600060408501528b60608501528a8d1660808501528d60a085015260c08401528183015281526114048161325c565b51902061140f613a16565b9060405190602082019261190160f01b8452602283015260428201526042815261143881613278565b519020613ceb565b919091613bec565b16036114575761037392613dcd565b60405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152606490fd5b60405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b3461031f5761016036600319011261031f576001600160a01b036004358181169081900361031f576001600160401b039160243583811161031f5761152a903690600401613306565b90936044359383851680950361031f5761154984600554163314613363565b806118fb575b508161179a575b505090809250611759575b505060643580611741575b5060843580611729575b5060a43580611712575b5060c435806116ee575b5060e435806116ca575b506101043580611698575b506101243580611624575b5061014435806115b657005b601e5481106115c457601f55005b60405162461bcd60e51b815260206004820152603260248201527f4d61726b65743a206c69717569646174696f6e436f6c6c61746572616c697a616044820152711d1a5bdb94985d19481d1bdbc81cdb585b1b60721b6064820152608490fd5b611633620186a08211156133ae565b601f54811161164557601e55806115aa565b60405162461bcd60e51b815260206004820152602560248201527f4d61726b65743a20636f6c6c61746572616c697a6174696f6e5261746520746f6044820152646f2062696760d81b6064820152608490fd5b806016547fae6e0ab3b95f0a53ff9660a390ccedcbbf1f2355dce974a9841af106fddcfaba600080a36016558061159f565b6116d8620186a082106133ae565b6116e5601b5482116133ae565b601c5580611594565b6116fc620186a082106133ae565b611709601c5482106133ae565b601b558061158a565b611720620186a082106133ae565b601d5580611580565b611738620186a08211156133ae565b601a5580611576565b611750620186a08211156133ae565b6019558061156c565b816008549182167f5a62d22209e370e38eea92cfddcd228e656e6ec139243392a760a7769f5877fd600080a36001600160a01b031916176008558080611561565b81116118e5576117ab601054613167565b601f8111611894575b506000601f821160011461181d5781929394600092611812575b50508160011b916000199060031b1c1916176010555b7fa6f004921c944d4b8bf6e38462b00f36a58d62495d56b51f571ab78f732c9815600080a181908380611556565b0135905084806117ce565b60106000908152601f19831695600080516020614b9b83398151915292909160205b88821061187c57505083600195969710611862575b505050811b016010556117e4565b0135600019600384901b60f8161c19169055848080611854565b8060018496829495870135815501950192019061183f565b6010600052600080516020614b9b833981519152601f830160051c8101602084106118de575b601f90920160051c01905b8181106118d257506117b4565b600081556001016118c5565b50806118ba565b634e487b7160e01b600052604160045260246000fd5b600f80546001600160a01b0319169190911790557f0b2d6eb667d0522c3eb86e4288afecae6c11591ffd1345d4d12407e0598bca9b600080a18561154f565b3461031f57600036600319011261031f576008546040516001600160a01b039091168152602090f35b3461031f57600036600319011261031f576020601e54604051908152f35b3461031f57600036600319011261031f576060602354604051906001600160401b0380821683528160401c16602083015260801c6040820152f35b3461031f57600036600319011261031f576020601a54604051908152f35b3461031f57604036600319011261031f576119f3613066565b602435908115801590611aaa575b611a37575b6040519182526001600160a01b0316903390600080516020614b7b83398151915290602090a3602060405160018152f35b336000526001602052604060002054611a5283821015613b40565b6001600160a01b038216908333839003611a6f575b505050611a06565b611a7e91610a4a841515613b85565b3360005260016020526040600020556000526040600020611aa0838254613452565b9055828083611a67565b50336001600160a01b03821614611a01565b3461031f57608036600319011261031f57611ad5613066565b611add61307c565b60443591906001600160a01b0390818416840361031f57606435936001600160401b03851161031f57611b17611b56953690600401613306565b9190611b2885600554163314613363565b84600f54169560405163d6d7d52560e01b81526040816020998a60048301528160008160249e8f82016131a1565b03925af1908115610c1557600090600092611f5f575b508181611f55575b5015611f4c57806011555b15611efd578590611b8e614372565b16928360005260178752611bb0604060002054620186a06110868a54836133ee565b87896064896009541693611bcd61079a600c5492601154906133ee565b946040519586948593638eb22cdd60e01b85526004850152830152600060448301525afa908115610c1557600091611ed0575b50846000526018885260406000205411611e8e57611dad611d62856000989695611d5c8a999796611d9f9660258e8d9a8b526018815260408b205496611cfb611c47613e43565b828e5260178452611cd6611cad8f604090205492600087604051611c6a81613241565b82815201528681019360018060801b03928382818094868a8381511615600014611e4157505081611ca0915b16828851166144a6565b16855216828751166144a6565b169384905251601480546001600160801b0319166001600160801b039390921692909216179055565b601480546001600160801b031660809290921b6001600160801b031916919091179055565b808c52601782528b604081205582825260408c206026548d5282528b6040812055808c5260188252611d3360408d2054601554613445565b6015558b52601881528a6040812055528d60408a20906027548b525288604081205536916132cf565b9161451c565b600d546040805163a9059cbb60e01b8d82019081526001600160a01b039099168e8201908152602081019490945291909816979094859350910190565b03601f198101835282613293565b51925af1611db9614476565b81611e09575b5015611dc757005b601c6064926040519262461bcd60e51b845260048401528201527f426f72696e6745524332303a205472616e73666572206661696c6564000000006044820152fd5b80915051828115918215611e22575b5050905083611dbf565b838092935001031261031f5781611e3991016137e8565b808285611e18565b611ca092611e7a611e7086611e67611e5d8280985116866133ee565b8287511690613417565b945116846133ee565b848c511690613417565b1015611c9657611e8990613d70565b611c96565b606488886040519162461bcd60e51b83528160048401528201527f42696742616e673a2043616e6e6f7420666f726365206c6971756964617465646044820152fd5b90508781813d8311611ef6575b611ee78183613293565b8101031261031f575189611c00565b503d611edd565b60405162461bcd60e51b8152600481018890526022818a01527f42423a2063757272656e742065786368616e676552617465206e6f742076616c6044820152611a5960f21b6064820152608490fd5b50601154611b7f565b905015158a611b74565b9050611f7a915060403d60401161114f5761113f8183613293565b908a611b6c565b3461031f57604036600319011261031f57610356611fa9611fa0613066565b6024359061368e565b604080519384526020840192909252908201529081906060820190565b3461031f57600036600319011261031f576020602b54604051908152f35b3461031f57604036600319011261031f57602061200b612002613066565b6024359061390c565b604051908152f35b3461031f57600036600319011261031f5760008060018060a01b03600b541660405160208101906395d89b4160e01b82526004815261205181613241565b51915afa61205d614476565b90156120bc5761206f61035691614a06565b6120a86023604051809362746d2d60e81b60208301526120988151809260208686019101613092565b8101036003810184520182613293565b6040519182916020835260208301906130b5565b506103566120c86149c5565b61206f565b3461031f57600036600319011261031f576020602f54604051908152f35b3461031f57604036600319011261031f576004356001600160401b03811161031f573660238201121561031f5761212c9036906024816004013591016132cf565b9060243561ffff811680910361031f5761010091828480518101031261031f5760206121598186016137e8565b9161216660408701613bca565b9061217360608801613bca565b9660808101519660a08201519261218c60c08401613bde565b91818401519301519360018060a01b03808097169b16988142116122f0579289888d9897946122679794611440978f8e6000146122c9577f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e266955b8d6000526004865260406000209283549361220085613d70565b905560405196870197885260408701528d6060870152608086015260a085015260c08401528183015281526122348161325c565b51902061223f613a16565b90604051908a82019261190160f01b8452602283015260428201526042815261143881613278565b160361228557501561227c5761037392613dcd565b61037392613d7f565b6064906040519062461bcd60e51b82526004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152fd5b7f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d6956121e6565b60405162461bcd60e51b815260048101899052601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b3461031f57600036600319011261031f576005546040516001600160a01b039091168152602090f35b3461031f57600036600319011261031f576020601b54604051908152f35b3461031f57600036600319011261031f57601454604080516001600160801b038316815260809290921c602083015290f35b3461031f57600036600319011261031f576020602d54604051908152f35b3461031f57604036600319011261031f576123f26123e8613066565b6024359033613d7f565b602060405160018152f35b3461031f57602036600319011261031f576001600160a01b0361241e613066565b1660005260046020526020604060002054604051908152f35b3461031f57600036600319011261031f57600f546040516001600160a01b039091168152602090f35b3461031f57600036600319011261031f576103566040516120a881612484816131a1565b0382613293565b3461031f57602036600319011261031f57600435600981101561031f5760ff6124b5602092613138565b54166040519015158152f35b3461031f57602036600319011261031f576001600160a01b036124e2613066565b1660005260016020526020604060002054604051908152f35b3461031f57600036600319011261031f57600a546040516001600160a01b039091168152602090f35b3461031f57600036600319011261031f5761253d613e24565b506080612548613ea8565b509350505050604051916001600160401b0380825116845260208201511660208401526040600180861b039101511660408301526060820152f35b3461031f57600036600319011261031f576020601c54604051908152f35b3461031f57600036600319011261031f5760206001600160401b03602c5460401c16604051908152f35b3461031f57600036600319011261031f5760206001600160401b03602c5416604051908152f35b3461031f57600036600319011261031f5760206001600160401b03602e5416604051908152f35b3461031f57600036600319011261031f5760208054604051908152f35b3461031f57600036600319011261031f576006546001600160a01b0390818116338190036126a057806005549384167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a36001600160a01b03199283161760055516600655005b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b3461031f57600036600319011261031f576020602854604051908152f35b3461031f57602036600319011261031f576001600160a01b03612723613066565b1660005260176020526020604060002054604051908152f35b3461031f57600036600319011261031f576020601554604051908152f35b3461031f57600036600319011261031f576020600e54604051908152f35b3461031f57600036600319011261031f576020601654604051908152f35b3461031f57606036600319011261031f57602061200b6044356024356004356135c7565b3461031f57600036600319011261031f576020601154604051908152f35b3461031f57600036600319011261031f57600d546040516001600160a01b039091168152602090f35b3461031f57600036600319011261031f576020601254604051908152f35b3461031f57600036600319011261031f57602061200b613a16565b3461031f57600036600319011261031f576020601954604051908152f35b3461031f57600036600319011261031f576020601354604051908152f35b3461031f57600036600319011261031f5760008060018060a01b03600d5416604051602081019063313ce56760e01b8252600481526128b481613241565b51915afa6128c0614476565b90806128fb575b156128f15760208180518101031261031f576128e66020809201613bde565b60ff60405191168152f35b50602060126128e6565b5060208151146128c7565b3461031f57606036600319011261031f5761291f613066565b61292761307c565b6044359081612964575b6040519182526001600160a01b03908116921690600080516020614b7b83398151915290602090a3602060405160018152f35b60018060a01b0380841680600052602060018152846040600020549361298c82861015613b40565b8516938484036129a1575b5050505050612931565b836000526002835260406000203360005283526040600020546000198103612a15575b5084926129ec600080516020614b7b833981519152979593600193610a4a6020991515613b85565b92600052526040600020556000526040600020612a0a858254613452565b905591858481612997565b90918110612a6a57602094926129ec88600080516020614b7b833981519152989694612a4382600196613445565b866000526002855260406000203360005285526040600020559350939597505092946129c4565b60405162461bcd60e51b815260048101849052601860248201527745524332303a20616c6c6f77616e636520746f6f206c6f7760401b6044820152606490fd5b3461031f57612ab8366130e9565b8394969793929192421161149c57612b52926114409260018060a01b0395868b1697886000526004602052604060002091825492612af584613d70565b90556040519160208301937f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d68552600060408501528b60608501528a8d1660808501528d60a085015260c08401528183015281526114048161325c565b16036114575761037392613d7f565b3461031f57602036600319011261031f576001600160a01b03612b82613066565b1660005260186020526020604060002054604051908152f35b3461031f57600036600319011261031f57602060245460801c604051908152f35b3461031f57604036600319011261031f57600435600981101561031f57612be16130da565b6008549091906001600160a01b03163303612c9a5760ff612c0182613138565b54161515911515918214612c6057808260ff612c1f612c4e94613138565b54161515827feeec81de25875ce1725479bb76f720a8defdb43dea041919ae37bb4aae9847c0600080a4613138565b9060ff80198354169116179055600080f35b60405162461bcd60e51b81526020600482015260126024820152714d61726b65743a2073616d6520737461746560701b6044820152606490fd5b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881d5b985d5d1a1bdc9a5e995960621b6044820152606490fd5b3461031f57604036600319011261031f576123f2612cf2613066565b6024359033613dcd565b3461031f57606036600319011261031f57612d15613066565b612d1d6130da565b60443590811515820361031f5760018060a01b03928391612d4383600554163314613363565b15612de7571690811590811591612ddf575b5015612da257806005549283167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a36001600160a01b031991821617600555600680549091169055005b60405162461bcd60e51b81526020600482015260156024820152744f776e61626c653a207a65726f206164647265737360581b6044820152606490fd5b905083612d55565b9150501660018060a01b03196006541617600655600080f35b3461031f57600036600319011261031f5760008060018060a01b03600b541660405160208101906306fdde0360e01b825260048152612e3e81613241565b51915afa612e4a614476565b9015612ea657612e5c61035691614a06565b6120a86034604051809373546170696f63612053696e67756c61726974792d60601b6020830152612e968151809260208686019101613092565b8101036014810184520182613293565b50610356612eb26149c5565b612e5c565b3461031f57600036600319011261031f57600f546040805163d6d7d52560e01b8152602060048201529182906001600160a01b031681600081612efc602482016131a1565b03925af18015610c1557600091600091612ff9575b50908015612f9b578115612f5f5781604092601155807f9f9192b5edb17356c524e08d9e025c8e2f6307e6ea52fb7968faa3081f51c3c8600080a25b42601355825191151582526020820152f35b60405162461bcd60e51b81526020600482015260146024820152734d61726b65743a20696e76616c6964207261746560601b6044820152606490fd5b9050612fac60135460125490613452565b4211612fbd57604090601154612f4d565b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881c985d19481d1bdbc81bdb1960621b6044820152606490fd5b9050613014915060403d60401161114f5761113f8183613293565b82612f11565b3461031f57604036600319011261031f57602090613036613066565b61303e61307c565b9060018060a01b03809116600052600384526040600020911660005282526040600020548152f35b600435906001600160a01b038216820361031f57565b602435906001600160a01b038216820361031f57565b60005b8381106130a55750506000910152565b8181015183820152602001613095565b906020916130ce81518092818552858086019101613092565b601f01601f1916010190565b60243590811515820361031f57565b60e090600319011261031f576001600160a01b0390600435828116810361031f5791602435908116810361031f5790604435906064359060843560ff8116810361031f579060a4359060c43590565b6009811015613151576000526007602052604060002090565b634e487b7160e01b600052602160045260246000fd5b90600182811c92168015613197575b602083101461318157565b634e487b7160e01b600052602260045260246000fd5b91607f1691613176565b601054600092916131b182613167565b90818152600192838116908160001461320b57506001146131d157505050565b9092935060106000526020928360002092846000945b8386106131f75750505050010190565b8054858701830152940193859082016131e7565b91935050602093945060ff191683830152151560051b010190565b606081019081106001600160401b038211176118e557604052565b604081019081106001600160401b038211176118e557604052565b61010081019081106001600160401b038211176118e557604052565b608081019081106001600160401b038211176118e557604052565b90601f801991011681019081106001600160401b038211176118e557604052565b6001600160401b0381116118e557601f01601f191660200190565b9291926132db826132b4565b916132e96040519384613293565b82948184528183011161031f578281602093846000960137010152565b9181601f8401121561031f578235916001600160401b03831161031f576020838186019501011161031f57565b9181601f8401121561031f578235916001600160401b03831161031f576020808501948460051b01011161031f57565b1561336a57565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b156133b557565b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881b9bdd081d985b1a59607a1b6044820152606490fd5b8181029291811591840414171561340157565b634e487b7160e01b600052601160045260246000fd5b8115613421570490565b634e487b7160e01b600052601260045260246000fd5b604d811161340157600a0a90565b9190820391821161340157565b9190820180921161340157565b8181039291600013801582851316918412161761340157565b906509184e72a0009182810292818405149015171561340157565b90670de0b6b3a76400009182810292818405149015171561340157565b811561342157600160ff1b8114600019831416613401570590565b601454613506916134f591906134eb906001600160801b038316906133ee565b9060801c90613417565b91620186a0918291601f54906133ee565b048083106135bf576135189083613445565b601e54602054830190818411613401578391613533916133ee565b04918281039060008094128183128116918313901516176135ab579061356461355e61356993613478565b91613493565b6134b0565b90808212156135a457600160ff1b82146135905703905b80821161358b575090565b905090565b634e487b7160e01b81526011600452602490fd5b5090613580565b634e487b7160e01b83526011600452602483fd5b505050600090565b601454919291613606916135f7916135ed916134eb906001600160801b038316906133ee565b93601f54906133ee565b61360083613437565b90613417565b908183106135bf5761356461355e6136606136246136659587613445565b9361365b61365561364c601e5461364661363d86613437565b60205490613452565b906133ee565b61360084613437565b91613437565b61345f565b613478565b600081121561368857600160ff1b8114613401576000039080821161358b575090565b90613580565b9160018060a01b0380931691600093838552602060178152604091828720549081156137db57878385516136c181613241565b82815201526136ce613ea8565b50505050509190506136e1861515613812565b6009541683600c54898b52601882526064878c2054918851948593849263442c159960e01b8452600484015260248301528d60448301525afa9081156137d157899161379e575b509161377e6137929798999492613759886106a5613750601898620186a060215404906133ee565b601e54906133ee565b815190936001600160801b03918691613774918416906133ee565b9201511690613417565b81811061379657035b97835252205461385e565b9091565b505082613787565b90508381813d83116137ca575b6137b58183613293565b810103126137c6575161377e613728565b8880fd5b503d6137ab565b85513d8b823e3d90fd5b5086955085949350505050565b5190811515820361031f57565b919082604091031261031f57602061380c836137e8565b92015190565b1561381957565b60405162461bcd60e51b815260206004820152601e60248201527f4d61726b65743a2065786368616e676552617465206e6f742076616c696400006044820152606490fd5b613869821515613812565b602060018060a01b0360095416916064600c54604051948593849263442c159960e01b845260048401526024830152600060448301525afa908115610c15576000916138d6575b50906106a56138c292602154906133ee565b620186a06138d2601e54836133ee565b0491565b906020823d8211613904575b816138ef60209383613293565b810103126139015750516106a56138b0565b80fd5b3d91506138e2565b6001600160a01b0316600081815260186020526040812054909261392f9161385e565b918352601760205260408320548015613a10578115613a1057818110613a105782811015613a0657601454613978918391610a4a916134eb906001600160801b038316906133ee565b90620186a092838302928084048514901517156139f25761399d929161360091613445565b91601b5491601c54936139b0858561345f565b80820291848212600160ff1b8214166139f25781830514901517156135ab5705818482019485129112908015821691151617613590575080821261358b575090565b634e487b7160e01b85526011600452602485fd5b50505050601b5490565b50505090565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03161480613b17575b15613a71577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f000000000000000000000000000000000000000000000000000000000000000082527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a0815260c081018181106001600160401b038211176118e55760405251902090565b507f00000000000000000000000000000000000000000000000000000000000000004614613a48565b15613b4757565b60405162461bcd60e51b815260206004820152601660248201527545524332303a2062616c616e636520746f6f206c6f7760501b6044820152606490fd5b15613b8c57565b60405162461bcd60e51b815260206004820152601660248201527545524332303a206e6f207a65726f206164647265737360501b6044820152606490fd5b51906001600160a01b038216820361031f57565b519060ff8216820361031f57565b60058110156131515780613bfd5750565b60018103613c455760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b6044820152606490fd5b60028103613c925760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606490fd5b600314613c9b57565b60405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608490fd5b9291906fa2a8918ca85bafe22016d0b997e4df60600160ff1b038311613d645791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa15613d575781516001600160a01b03811615613d51579190565b50600190565b50604051903d90823e3d90fd5b50505050600090600390565b60001981146134015760010190565b7fe50de2333c10a9502fcb1d8ae13a51bbf423153dfc63c2b8997665b32154afc360018060a01b038092169160009083825260036020526040822094169384825260205284604082205580a4565b909160207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259160018060a01b03809416938460005260028352604060002095169485600052825280604060002055604051908152a3565b60405190613e3182613226565b60006040838281528260208201520152565b60405190613e5082613241565b6014546001600160801b038116835260801c6020830152565b60405190613e7682613241565b6024546001600160801b038116835260801c6020830152565b6001600160801b03918216908216019190821161340157565b613eb0613e24565b5060006020604051613ec181613241565b828152015260006020604051613ed681613241565b8281520152604051613ee781613226565b6023546001600160401b03811682526001600160401b038160401c16602083015260801c60408201528091613f1a613e43565b91613f23613e69565b600954600e54825160405163442c159960e01b8152600481018390526001600160801b03909116602482015260006044820181905293959194919391926001600160a01b031690602081606481855afa8015610c155760009061433e575b8851613f9792506001600160801b031690613452565b80614309575060005b80613fb86001600160401b0360208701511642613445565b9485156142df575050426001600160401b031660208a8101919091528801516001600160801b03161561429557506020670de0b6b3a764000061401a856140158c6001600160401b038d60018060801b03905116915116906133ee565b6133ee565b895191900496906001600160801b039061403990828a16908316613e8f565b168952875160405163442c159960e01b815260048101929092526001600160801b031660248201526000604482015291829060649082905afa8015610c1557600090614261575b875161409692506001600160801b031690613452565b926140c4846106a5620186a06140ae601a548a6133ee565b60208c01516001600160801b03169190046133ee565b6040890180519195916001600160801b0380881692916140e79084908316613e8f565b16905260208801805190916001600160801b039161410791908316613e8f565b1690528061422c575060005b602954909384828110156141a75761412b9083613445565b90670de0b6b3a7640000820291808304670de0b6b3a76400001490151715613401576106a561417f61417961416b6001600160401b039661418996613417565b93614015602d5495806133ee565b83613452565b91848d51166133ee565b168089526001600160401b03602c54168091106141a35750565b8852565b909150602a548082116141b957505050565b6141c291613445565b670de0b6b3a7640000810290808204670de0b6b3a76400001490151715613401576001600160401b03916106a561420561417961416b61420e95602b5490613417565b848d51166133ee565b81602c5460401c16808211614224575b50168852565b90503861421e565b87516001600160801b0316670de0b6b3a76400008181029291808404909114901517156134015761425c91613417565b614113565b506020813d60201161428d575b8161427b60209383613293565b8101031261031f576140969051614080565b3d915061426e565b9697939450509350506001600160401b038151166001600160401b03602e54168091036142d3575b5093926142c8613e69565b926000926000929190565b815260019250386142bd565b9750985050505050925050916142f3613e43565b916142fc613e69565b9160009160009190600090565b87516001600160801b0316670de0b6b3a76400008181029291808404909114901517156134015761433991613417565b613fa0565b506020813d60201161436a575b8161435860209383613293565b8101031261031f57613f979051613f81565b3d915061434b565b61442d6040602080614382613ea8565b939995939092901561443d575050506001600160401b03602e54166000807f33af5ce86e8438eff54589f85332916444457dfa8685493fbd579b809097026b878a51838152a45b80518482015196909101516001600160801b0319608091821b81166001600160401b0390931667ffffffffffffffff60401b60409990991b9890981697909717919091176023558151919093015190921b84166001600160801b0392831617601455565b83511692015160801b1617602455565b7f33af5ce86e8438eff54589f85332916444457dfa8685493fbd579b809097026b876001600160401b03865116948b51908152a46143c9565b3d156144a1573d90614487826132b4565b916144956040519384613293565b82523d6000602084013e565b606090565b6001600160801b03918216908216039190821161340157565b156144c657565b60405162461bcd60e51b8152602060048201526018602482015277084d2ce84c2dcce7440d8cadccee8d040dad2e6dac2e8c6d60431b6044820152606490fd5b919082604091031261031f576020825192015190565b91909160018060a01b0392836009541690600c5460409485519063442c159960e01b82526004928084840152602496878401526000958660448501526020958685606481855afa94851561486f57918b8b928a948598614831575b509060a4911694835194859384926311a5cc7760e31b84528b8401528d30908401528760448401528960648401528160848401525af180156148275761480b575b5088600d5416908851926370a0823160e01b94858552308786015287858b81875afa9485156148015789888d948f948c97958f95859b6147b9575b50906146349291600b54169751998a9889978896635cd3dc1560e01b885233908801528601526044850152606484015260a0608484015260a48301906130b5565b03925af180156147af57614777575b508388600d54169287895180958193825230888301525afa801561476d578590614738575b6146729250613445565b9586156146f85790606483926009541691600e54928989519889958694638eb22cdd60e01b86528501528301528660448301525afa9384156146ed575081936146bc575b50505091565b9091809350813d83116146e6575b6146d48183613293565b810103126139015750513880806146b6565b503d6146ca565b51913d9150823e3d90fd5b50818460649387519362461bcd60e51b85528401528201527f53474c3a206f6e436f6c6c61746572616c5265636569766572206661696c65646044820152fd5b50908381813d8311614766575b61474f8183613293565b8101031261476257906146729151614668565b8480fd5b503d614745565b87513d87823e3d90fd5b8481813d83116147a8575b61478c8183613293565b810103126147a45761479d906137e8565b5038614643565b8580fd5b503d614782565b88513d88823e3d90fd5b96999a50509550959250505081813d83116147fa575b6147d98183613293565b810103126137c657928989886146348f9897968f968d98519a9091926145f3565b503d6147cf565b8b513d8b823e3d90fd5b61482190893d8b11610c9257610c848183613293565b506145b8565b89513d89823e3d90fd5b935096505091508681813d8311614868575b61484d8183613293565b8101031261486457519387918a918c9060a4614577565b8780fd5b503d614843565b8a513d8a823e3d90fd5b9190811015610bb85760051b0190565b919060018060a01b0380600094168452602060178152604085205490811561498c57601881526040862054801561498557816148c3613e43565b9460095416916064600c54604051948593849263442c159960e01b8452600484015260248301528b60448301525afa968715614979578097614943575b505061377461492861491f61493e969798620186a060215404906133ee565b601f54906133ee565b9561401560018060801b039485875116906133ee565b111590565b9096508187813d8311614972575b61495b8183613293565b810103126139015750945194613774614928614900565b503d614951565b604051903d90823e3d90fd5b5050505050565b5060019450505050565b9081526001600160a01b0391821660208201529116604082015260006060820152608081019190915260a00190565b604051906149d282613241565b60038252623f3f3f60e81b6020830152565b908151811015610bb8570160200190565b60ff1660ff81146134015760010190565b805160408110614a815750805181019060208181840193031261031f576020810151906001600160401b03821161031f570181603f8201121561031f576020810151614a51816132b4565b92614a5f6040519485613293565b8184526040828401011161031f57614a7e916040602085019101613092565b90565b602092908303614b6f576000805b60ff81168581109081614b50575b5015614ab157614aac906149f5565b614a8f565b9260ff80941692614ac1846132b4565b93614acf6040519586613293565b808552614ade601f19916132b4565b013687860137825b85811687811080614b33575b15614b2857614b239190614b1d6001600160f81b0319614b1283886149e4565b5116871a91886149e4565b536149f5565b614ae6565b505094505050905090565b506001600160f81b0319614b4782866149e4565b51161515614af2565b6001600160f81b03199150614b6590866149e4565b5116151538614a9d565b915050614a7e6149c556feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae672a26469706673582212203a7c7c2293b30056fd3f48e72a9dc30e5536afce079e4a540546ebc5e0a4041264736f6c63430008120033", - "deployedBytecode": "0x608080604052600436101561001357600080fd5b60e0600035811c918262a02a201461301a5750816302ce728f14612eb757816306fdde0314612e00578163078dfbe714612cfc578163095ea7b314612cd65781630c4e84f014612bbc57816318160ddd14612b9b5781631c9e379b14612b615781631da8bf1014612aaa57816323b872dd14612906578163313ce56714612876578163331960ff1461285857816334d441d01461283a5781633644e5151461281f57816337b6b7b91461280157816338d52e0f146127d85781633ba0b9a9146127ba5781633f741adb1461279657816340626d8b1461277857816344de240a1461275a578163473e3ce71461273c57816348e4163e146127025781634d7f2a34146126e45781634e71e0c814612636578163529898f21461261957816352f353eb146125f257816355140232146125cb57816355c2ab94146125a157816357935462146125835781635dfe04e8146125245781636c3d8b8f146124fb57816370a08231146124c1578163727785471461248b57816374645ff3146124605781637dc0d1d0146124375781637ecebe00146123fd5781637fa0b84e146123cc578163821226e8146123ae5781638285ef401461237c5781638c5d0ed31461235e5781638da5cb5b14612335578163910dd7c8146120eb578163959916dc146120cd57816395d89b411461201357816399a9702814611fe45781639c5d719214611fc65781639e15e89f14611f81578163a28e6b8214611abc578163a9059cbb146119da578163b0e21e8a146119bc578163b27c0e7414611981578163bb4cfe3b14611963578163ce8849ed1461193a578163d3fb2a38146114e1578163d505accf1461135c57508063d8dfeb4514611333578063dd62ed3e146112e2578063de406577146112b9578063e0996cb61461129b578063e30c397814611272578063e5644d8b146103cf578063ea64dd56146103b1578063eec0f42e14610393578063f42760b714610375578063f8ba4cff1461035a578063f9557ccb146103245763ffe04c661461030157600080fd5b3461031f57600036600319011261031f576020602954604051908152f35b600080fd5b3461031f57600036600319011261031f57602454604080516001600160801b038316815260809290921c602083015290f35b0390f35b3461031f57600036600319011261031f57610373614372565b005b3461031f57600036600319011261031f576020602a54604051908152f35b3461031f57600036600319011261031f576020600c54604051908152f35b3461031f57600036600319011261031f576020601f54604051908152f35b3461031f57608036600319011261031f576004356001600160401b03811161031f576103ff903690600401613333565b906024356001600160401b03811161031f5761041f903690600401613333565b6044356001600160401b03811161031f5761043e903690600401613333565b90916064356001600160401b03811161031f5761045f903690600401613333565b9290916004600052600760205260ff6040600020541661123c5787156111fc578088036111c1576104918289146144bf565b61049c8285146144bf565b600f5460405163d6d7d52560e01b8152602060048201526010549097916001600160a01b03169088906000906104d181613167565b9081602485015260018116908160001461119f5750600114611156575b50918160008160409503925af1968715610c1557600090600098611122575b508781611118575b501561110e57866011555b610528614372565b60009860005b818110610578578a1561053d57005b60405162461bcd60e51b815260206004820152601360248201527214d1d30e881b9bc81d5cd95c9cc8199bdd5b99606a1b6044820152606490fd5b61058381838c614879565b356001600160a01b038116810361031f5761059e8a82614889565b156105b3575b506105ae90613d70565b61052e565b9a6105bd90613d70565b9a6105c9828686614879565b35906105d683888c614879565b35906001600160a01b038216820361031f5789841015610bb8578360051b890135601e198a36030181121561031f578901926001600160401b0384351161031f5783353603602085011361031f5761062e8d8361390c565b918d156110c95760018060a01b03600954166020600c5460018060a01b03841660005260188252606460406000205491604051948593849263442c159960e01b845260048401526024830152600060448301525afa908115610c15578f90600092611093575b506106a56106aa92602154906133ee565b613417565b9360018060a01b03821660005260176020526106cb856040600020546134cb565b80601d5480611074575b508085111561106d575b6001600160a01b0384166000908152601760205260409020549081811115611064575080965b111561102f578f938181111561102857505b6001600160a01b038316600090815260176020526040902054908181111561101d57506107448180613445565b6001600160a01b038416600090815260176020526040902055610765613e43565b60208101516001600160801b0316610fe85750602081965b60646107a361079a60018060a01b036009541698600c54946133ee565b60215490613417565b916040519788938492638eb22cdd60e01b845260048401526024830152600060448301525afa938415610c1557600094610fb4575b506001600160a01b0383166000908152601860205260409020548411610f6f5760018060a01b03831660005260186020526040600020610819858254613445565b90558515610f3b57601454906108606001600160801b0361083e8982168286166144a6565b16926001600160801b0319926001600160801b0316908316841760801c6144a6565b60801b161760145560018060a01b0360095416956020600e546064604051809a8193638eb22cdd60e01b835260048301528a6024830152600160448301525afa968715610c1557600097610f03575b508691610991610998926015805488808211600014610ef9576108d191613445565b905b5560018060a01b0386166000526025806020526040600020602790815490816000526020526040600020548a11600014610ec4575060018060a01b0388166000528160205260406000209054600052602052600060408120555b60018060a01b03871660005280602052604060002090602691825490816000526020526040600020548811600014610e90575060018060a01b03881660005260205260406000209054600052602052600060408120555b36906020813591016132cf565b908561451c565b5010610e4b57600954600e54604051627eeac760e11b815230600482015260248101919091526001600160a01b039091169390602081604481885afa8015610c1557600090610e17575b6024546109f992506001600160801b031690613445565b9580871115610e0757610a1b610a13620186a09289613445565b925b836133ee565b0495610a278783613445565b9485610c99575b5086610c21575b610a4f87610a4a8760018060801b0394613445565b613445565b602454916001600160801b0391610a699116828416613e8f565b6001600160801b03199092169116176024908155600d5460095460405163095ea7b360e01b81526001600160a01b039182166004820152600093810184905292602092849260449284929091165af18015610c155787918691610bce575b50610a4a90610ad593613445565b6040516000815230907f30a8c4f9ab5af7e1309ca87c32377d1a83366c5990472dbf9d262450eae14e3860203092a460405190610b1182613241565b6001825260203681840137815115610bb8576001600160a01b03166020820190815260405191518291906000905b808210610b96575050508190039020604080519384526020840194909452928201526105ae9392919033907f85b91d472e69b2cfe848ed50eb5d8582ae96c22057b6e46250255dd6f6c3519290606090a4906105a4565b82516001600160a01b0316845260209384019390920191600190910190610b3f565b634e487b7160e01b600052603260045260246000fd5b9150506020813d602011610c0d575b81610bea60209383613293565b8101031261031f57610a4a85610ad593610c048a946137e8565b50935090610ac7565b3d9150610bdd565b6040513d6000823e3d90fd5b610c5660408860018060a01b0360095416600e5460008451809681958294634d4d7cbd60e11b84523390309060048601614996565b03925af18015610c1557610c6b575b50610a35565b610c8c9060403d604011610c92575b610c848183613293565b810190614506565b50610c65565b503d610c7a565b600d5460405163095ea7b360e01b8152600481019290925260006024830181905260209183916044918391906001600160a01b03165af18015610c1557610dce575b50600d5460095460405163095ea7b360e01b81526001600160a01b03918216600482015260001960248201529160209183916044918391600091165af18015610c1557610d95575b50600954600e54600a5460408051634d4d7cbd60e11b815293909284926001600160a01b039283169284926000928492610d68928f9290911690309060048601614996565b03925af18015610c155715610a2e57610d8f9060403d604011610c9257610c848183613293565b50610a2e565b6020813d602011610dc6575b81610dae60209383613293565b8101031261031f57610dbf906137e8565b5038610d23565b3d9150610da1565b6020813d602011610dff575b81610de760209383613293565b8101031261031f57610df8906137e8565b5038610cdb565b3d9150610dda565b50620186a0610a1b600092610a15565b506020813d602011610e43575b81610e3160209383613293565b8101031261031f576109f990516109e2565b3d9150610e24565b60405162461bcd60e51b815260206004820152601b60248201527f53474c3a20617373657420616d6f756e74206e6f742076616c696400000000006044820152606490fd5b915060018060a01b0388166000526020526040600020906000526020526040600020610ebd868254613445565b9055610984565b905060018060a01b038816600052816020526040600020906000526020526040600020610ef2898254613445565b905561092d565b50506000906108d3565b909196506020813d602011610f33575b81610f2060209383613293565b8101031261031f575195906109986108af565b3d9150610f13565b60405162461bcd60e51b815260206004820152600c60248201526b14d1d30e881cdbdb1d995b9d60a21b6044820152606490fd5b60405162461bcd60e51b815260206004820152601a60248201527f53474c3a206e6f7420656e6f75676820636f6c6c61746572616c0000000000006044820152606490fd5b9093506020813d602011610fe0575b81610fd060209383613293565b8101031261031f575192386107d8565b3d9150610fc3565b805160209161101791611004906001600160801b0316856133ee565b908301516001600160801b031690613417565b9661077d565b610744908092613445565b9050610717565b60405162461bcd60e51b815260206004820152600d60248201526c14d1d30e88189859081919589d609a1b6044820152606490fd5b90508096610705565b50836106df565b90620186a061108661108d93836133ee565b0490613452565b386106d5565b9150506020813d6020116110c1575b816110af60209383613293565b8101031261031f57518e6106a5610694565b3d91506110a2565b60405162461bcd60e51b815260206004820152601b60248201527f53474c3a2065786368616e676552617465206e6f742076616c696400000000006044820152606490fd5b6011549650610520565b905015158a610515565b905061114791975060403d60401161114f575b61113f8183613293565b8101906137f5565b96908a61050d565b503d611135565b601060009081529150600080516020614b9b8339815191525b8183106111835750508101604401816104ee565b8060209294604485600194549201015201910190918a9261116f565b60ff191660448581019190915291151560051b840190910191508290506104ee565b60405162461bcd60e51b8152602060048201526013602482015272084847440d8cadccee8d040dad2e6dac2e8c6d606b1b6044820152606490fd5b60405162461bcd60e51b815260206004820152601860248201527742423a206e6f7468696e6720746f206c697175696461746560401b6044820152606490fd5b60405162461bcd60e51b815260206004820152600e60248201526d13585c9ad95d0e881c185d5cd95960921b6044820152606490fd5b3461031f57600036600319011261031f576006546040516001600160a01b039091168152602090f35b3461031f57600036600319011261031f576020601d54604051908152f35b3461031f57600036600319011261031f576009546040516001600160a01b039091168152602090f35b3461031f57604036600319011261031f576112fb613066565b61130361307c565b9060018060a01b038091166000526002602052604060002091166000526020526020604060002054604051908152f35b3461031f57600036600319011261031f57600b546040516001600160a01b039091168152602090f35b3461031f5761136a366130e9565b8394969793929192421161149c57611448926114409260018060a01b0395868b16978860005260046020526040600020918254926113a784613d70565b90556040519160208301937f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e2668552600060408501528b60608501528a8d1660808501528d60a085015260c08401528183015281526114048161325c565b51902061140f613a16565b9060405190602082019261190160f01b8452602283015260428201526042815261143881613278565b519020613ceb565b919091613bec565b16036114575761037392613dcd565b60405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152606490fd5b60405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b3461031f5761016036600319011261031f576001600160a01b036004358181169081900361031f576001600160401b039160243583811161031f5761152a903690600401613306565b90936044359383851680950361031f5761154984600554163314613363565b806118fb575b508161179a575b505090809250611759575b505060643580611741575b5060843580611729575b5060a43580611712575b5060c435806116ee575b5060e435806116ca575b506101043580611698575b506101243580611624575b5061014435806115b657005b601e5481106115c457601f55005b60405162461bcd60e51b815260206004820152603260248201527f4d61726b65743a206c69717569646174696f6e436f6c6c61746572616c697a616044820152711d1a5bdb94985d19481d1bdbc81cdb585b1b60721b6064820152608490fd5b611633620186a08211156133ae565b601f54811161164557601e55806115aa565b60405162461bcd60e51b815260206004820152602560248201527f4d61726b65743a20636f6c6c61746572616c697a6174696f6e5261746520746f6044820152646f2062696760d81b6064820152608490fd5b806016547fae6e0ab3b95f0a53ff9660a390ccedcbbf1f2355dce974a9841af106fddcfaba600080a36016558061159f565b6116d8620186a082106133ae565b6116e5601b5482116133ae565b601c5580611594565b6116fc620186a082106133ae565b611709601c5482106133ae565b601b558061158a565b611720620186a082106133ae565b601d5580611580565b611738620186a08211156133ae565b601a5580611576565b611750620186a08211156133ae565b6019558061156c565b816008549182167f5a62d22209e370e38eea92cfddcd228e656e6ec139243392a760a7769f5877fd600080a36001600160a01b031916176008558080611561565b81116118e5576117ab601054613167565b601f8111611894575b506000601f821160011461181d5781929394600092611812575b50508160011b916000199060031b1c1916176010555b7fa6f004921c944d4b8bf6e38462b00f36a58d62495d56b51f571ab78f732c9815600080a181908380611556565b0135905084806117ce565b60106000908152601f19831695600080516020614b9b83398151915292909160205b88821061187c57505083600195969710611862575b505050811b016010556117e4565b0135600019600384901b60f8161c19169055848080611854565b8060018496829495870135815501950192019061183f565b6010600052600080516020614b9b833981519152601f830160051c8101602084106118de575b601f90920160051c01905b8181106118d257506117b4565b600081556001016118c5565b50806118ba565b634e487b7160e01b600052604160045260246000fd5b600f80546001600160a01b0319169190911790557f0b2d6eb667d0522c3eb86e4288afecae6c11591ffd1345d4d12407e0598bca9b600080a18561154f565b3461031f57600036600319011261031f576008546040516001600160a01b039091168152602090f35b3461031f57600036600319011261031f576020601e54604051908152f35b3461031f57600036600319011261031f576060602354604051906001600160401b0380821683528160401c16602083015260801c6040820152f35b3461031f57600036600319011261031f576020601a54604051908152f35b3461031f57604036600319011261031f576119f3613066565b602435908115801590611aaa575b611a37575b6040519182526001600160a01b0316903390600080516020614b7b83398151915290602090a3602060405160018152f35b336000526001602052604060002054611a5283821015613b40565b6001600160a01b038216908333839003611a6f575b505050611a06565b611a7e91610a4a841515613b85565b3360005260016020526040600020556000526040600020611aa0838254613452565b9055828083611a67565b50336001600160a01b03821614611a01565b3461031f57608036600319011261031f57611ad5613066565b611add61307c565b60443591906001600160a01b0390818416840361031f57606435936001600160401b03851161031f57611b17611b56953690600401613306565b9190611b2885600554163314613363565b84600f54169560405163d6d7d52560e01b81526040816020998a60048301528160008160249e8f82016131a1565b03925af1908115610c1557600090600092611f5f575b508181611f55575b5015611f4c57806011555b15611efd578590611b8e614372565b16928360005260178752611bb0604060002054620186a06110868a54836133ee565b87896064896009541693611bcd61079a600c5492601154906133ee565b946040519586948593638eb22cdd60e01b85526004850152830152600060448301525afa908115610c1557600091611ed0575b50846000526018885260406000205411611e8e57611dad611d62856000989695611d5c8a999796611d9f9660258e8d9a8b526018815260408b205496611cfb611c47613e43565b828e5260178452611cd6611cad8f604090205492600087604051611c6a81613241565b82815201528681019360018060801b03928382818094868a8381511615600014611e4157505081611ca0915b16828851166144a6565b16855216828751166144a6565b169384905251601480546001600160801b0319166001600160801b039390921692909216179055565b601480546001600160801b031660809290921b6001600160801b031916919091179055565b808c52601782528b604081205582825260408c206026548d5282528b6040812055808c5260188252611d3360408d2054601554613445565b6015558b52601881528a6040812055528d60408a20906027548b525288604081205536916132cf565b9161451c565b600d546040805163a9059cbb60e01b8d82019081526001600160a01b039099168e8201908152602081019490945291909816979094859350910190565b03601f198101835282613293565b51925af1611db9614476565b81611e09575b5015611dc757005b601c6064926040519262461bcd60e51b845260048401528201527f426f72696e6745524332303a205472616e73666572206661696c6564000000006044820152fd5b80915051828115918215611e22575b5050905083611dbf565b838092935001031261031f5781611e3991016137e8565b808285611e18565b611ca092611e7a611e7086611e67611e5d8280985116866133ee565b8287511690613417565b945116846133ee565b848c511690613417565b1015611c9657611e8990613d70565b611c96565b606488886040519162461bcd60e51b83528160048401528201527f42696742616e673a2043616e6e6f7420666f726365206c6971756964617465646044820152fd5b90508781813d8311611ef6575b611ee78183613293565b8101031261031f575189611c00565b503d611edd565b60405162461bcd60e51b8152600481018890526022818a01527f42423a2063757272656e742065786368616e676552617465206e6f742076616c6044820152611a5960f21b6064820152608490fd5b50601154611b7f565b905015158a611b74565b9050611f7a915060403d60401161114f5761113f8183613293565b908a611b6c565b3461031f57604036600319011261031f57610356611fa9611fa0613066565b6024359061368e565b604080519384526020840192909252908201529081906060820190565b3461031f57600036600319011261031f576020602b54604051908152f35b3461031f57604036600319011261031f57602061200b612002613066565b6024359061390c565b604051908152f35b3461031f57600036600319011261031f5760008060018060a01b03600b541660405160208101906395d89b4160e01b82526004815261205181613241565b51915afa61205d614476565b90156120bc5761206f61035691614a06565b6120a86023604051809362746d2d60e81b60208301526120988151809260208686019101613092565b8101036003810184520182613293565b6040519182916020835260208301906130b5565b506103566120c86149c5565b61206f565b3461031f57600036600319011261031f576020602f54604051908152f35b3461031f57604036600319011261031f576004356001600160401b03811161031f573660238201121561031f5761212c9036906024816004013591016132cf565b9060243561ffff811680910361031f5761010091828480518101031261031f5760206121598186016137e8565b9161216660408701613bca565b9061217360608801613bca565b9660808101519660a08201519261218c60c08401613bde565b91818401519301519360018060a01b03808097169b16988142116122f0579289888d9897946122679794611440978f8e6000146122c9577f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e266955b8d6000526004865260406000209283549361220085613d70565b905560405196870197885260408701528d6060870152608086015260a085015260c08401528183015281526122348161325c565b51902061223f613a16565b90604051908a82019261190160f01b8452602283015260428201526042815261143881613278565b160361228557501561227c5761037392613dcd565b61037392613d7f565b6064906040519062461bcd60e51b82526004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152fd5b7f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d6956121e6565b60405162461bcd60e51b815260048101899052601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b3461031f57600036600319011261031f576005546040516001600160a01b039091168152602090f35b3461031f57600036600319011261031f576020601b54604051908152f35b3461031f57600036600319011261031f57601454604080516001600160801b038316815260809290921c602083015290f35b3461031f57600036600319011261031f576020602d54604051908152f35b3461031f57604036600319011261031f576123f26123e8613066565b6024359033613d7f565b602060405160018152f35b3461031f57602036600319011261031f576001600160a01b0361241e613066565b1660005260046020526020604060002054604051908152f35b3461031f57600036600319011261031f57600f546040516001600160a01b039091168152602090f35b3461031f57600036600319011261031f576103566040516120a881612484816131a1565b0382613293565b3461031f57602036600319011261031f57600435600981101561031f5760ff6124b5602092613138565b54166040519015158152f35b3461031f57602036600319011261031f576001600160a01b036124e2613066565b1660005260016020526020604060002054604051908152f35b3461031f57600036600319011261031f57600a546040516001600160a01b039091168152602090f35b3461031f57600036600319011261031f5761253d613e24565b506080612548613ea8565b509350505050604051916001600160401b0380825116845260208201511660208401526040600180861b039101511660408301526060820152f35b3461031f57600036600319011261031f576020601c54604051908152f35b3461031f57600036600319011261031f5760206001600160401b03602c5460401c16604051908152f35b3461031f57600036600319011261031f5760206001600160401b03602c5416604051908152f35b3461031f57600036600319011261031f5760206001600160401b03602e5416604051908152f35b3461031f57600036600319011261031f5760208054604051908152f35b3461031f57600036600319011261031f576006546001600160a01b0390818116338190036126a057806005549384167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a36001600160a01b03199283161760055516600655005b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b3461031f57600036600319011261031f576020602854604051908152f35b3461031f57602036600319011261031f576001600160a01b03612723613066565b1660005260176020526020604060002054604051908152f35b3461031f57600036600319011261031f576020601554604051908152f35b3461031f57600036600319011261031f576020600e54604051908152f35b3461031f57600036600319011261031f576020601654604051908152f35b3461031f57606036600319011261031f57602061200b6044356024356004356135c7565b3461031f57600036600319011261031f576020601154604051908152f35b3461031f57600036600319011261031f57600d546040516001600160a01b039091168152602090f35b3461031f57600036600319011261031f576020601254604051908152f35b3461031f57600036600319011261031f57602061200b613a16565b3461031f57600036600319011261031f576020601954604051908152f35b3461031f57600036600319011261031f576020601354604051908152f35b3461031f57600036600319011261031f5760008060018060a01b03600d5416604051602081019063313ce56760e01b8252600481526128b481613241565b51915afa6128c0614476565b90806128fb575b156128f15760208180518101031261031f576128e66020809201613bde565b60ff60405191168152f35b50602060126128e6565b5060208151146128c7565b3461031f57606036600319011261031f5761291f613066565b61292761307c565b6044359081612964575b6040519182526001600160a01b03908116921690600080516020614b7b83398151915290602090a3602060405160018152f35b60018060a01b0380841680600052602060018152846040600020549361298c82861015613b40565b8516938484036129a1575b5050505050612931565b836000526002835260406000203360005283526040600020546000198103612a15575b5084926129ec600080516020614b7b833981519152979593600193610a4a6020991515613b85565b92600052526040600020556000526040600020612a0a858254613452565b905591858481612997565b90918110612a6a57602094926129ec88600080516020614b7b833981519152989694612a4382600196613445565b866000526002855260406000203360005285526040600020559350939597505092946129c4565b60405162461bcd60e51b815260048101849052601860248201527745524332303a20616c6c6f77616e636520746f6f206c6f7760401b6044820152606490fd5b3461031f57612ab8366130e9565b8394969793929192421161149c57612b52926114409260018060a01b0395868b1697886000526004602052604060002091825492612af584613d70565b90556040519160208301937f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d68552600060408501528b60608501528a8d1660808501528d60a085015260c08401528183015281526114048161325c565b16036114575761037392613d7f565b3461031f57602036600319011261031f576001600160a01b03612b82613066565b1660005260186020526020604060002054604051908152f35b3461031f57600036600319011261031f57602060245460801c604051908152f35b3461031f57604036600319011261031f57600435600981101561031f57612be16130da565b6008549091906001600160a01b03163303612c9a5760ff612c0182613138565b54161515911515918214612c6057808260ff612c1f612c4e94613138565b54161515827feeec81de25875ce1725479bb76f720a8defdb43dea041919ae37bb4aae9847c0600080a4613138565b9060ff80198354169116179055600080f35b60405162461bcd60e51b81526020600482015260126024820152714d61726b65743a2073616d6520737461746560701b6044820152606490fd5b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881d5b985d5d1a1bdc9a5e995960621b6044820152606490fd5b3461031f57604036600319011261031f576123f2612cf2613066565b6024359033613dcd565b3461031f57606036600319011261031f57612d15613066565b612d1d6130da565b60443590811515820361031f5760018060a01b03928391612d4383600554163314613363565b15612de7571690811590811591612ddf575b5015612da257806005549283167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a36001600160a01b031991821617600555600680549091169055005b60405162461bcd60e51b81526020600482015260156024820152744f776e61626c653a207a65726f206164647265737360581b6044820152606490fd5b905083612d55565b9150501660018060a01b03196006541617600655600080f35b3461031f57600036600319011261031f5760008060018060a01b03600b541660405160208101906306fdde0360e01b825260048152612e3e81613241565b51915afa612e4a614476565b9015612ea657612e5c61035691614a06565b6120a86034604051809373546170696f63612053696e67756c61726974792d60601b6020830152612e968151809260208686019101613092565b8101036014810184520182613293565b50610356612eb26149c5565b612e5c565b3461031f57600036600319011261031f57600f546040805163d6d7d52560e01b8152602060048201529182906001600160a01b031681600081612efc602482016131a1565b03925af18015610c1557600091600091612ff9575b50908015612f9b578115612f5f5781604092601155807f9f9192b5edb17356c524e08d9e025c8e2f6307e6ea52fb7968faa3081f51c3c8600080a25b42601355825191151582526020820152f35b60405162461bcd60e51b81526020600482015260146024820152734d61726b65743a20696e76616c6964207261746560601b6044820152606490fd5b9050612fac60135460125490613452565b4211612fbd57604090601154612f4d565b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881c985d19481d1bdbc81bdb1960621b6044820152606490fd5b9050613014915060403d60401161114f5761113f8183613293565b82612f11565b3461031f57604036600319011261031f57602090613036613066565b61303e61307c565b9060018060a01b03809116600052600384526040600020911660005282526040600020548152f35b600435906001600160a01b038216820361031f57565b602435906001600160a01b038216820361031f57565b60005b8381106130a55750506000910152565b8181015183820152602001613095565b906020916130ce81518092818552858086019101613092565b601f01601f1916010190565b60243590811515820361031f57565b60e090600319011261031f576001600160a01b0390600435828116810361031f5791602435908116810361031f5790604435906064359060843560ff8116810361031f579060a4359060c43590565b6009811015613151576000526007602052604060002090565b634e487b7160e01b600052602160045260246000fd5b90600182811c92168015613197575b602083101461318157565b634e487b7160e01b600052602260045260246000fd5b91607f1691613176565b601054600092916131b182613167565b90818152600192838116908160001461320b57506001146131d157505050565b9092935060106000526020928360002092846000945b8386106131f75750505050010190565b8054858701830152940193859082016131e7565b91935050602093945060ff191683830152151560051b010190565b606081019081106001600160401b038211176118e557604052565b604081019081106001600160401b038211176118e557604052565b61010081019081106001600160401b038211176118e557604052565b608081019081106001600160401b038211176118e557604052565b90601f801991011681019081106001600160401b038211176118e557604052565b6001600160401b0381116118e557601f01601f191660200190565b9291926132db826132b4565b916132e96040519384613293565b82948184528183011161031f578281602093846000960137010152565b9181601f8401121561031f578235916001600160401b03831161031f576020838186019501011161031f57565b9181601f8401121561031f578235916001600160401b03831161031f576020808501948460051b01011161031f57565b1561336a57565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b156133b557565b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881b9bdd081d985b1a59607a1b6044820152606490fd5b8181029291811591840414171561340157565b634e487b7160e01b600052601160045260246000fd5b8115613421570490565b634e487b7160e01b600052601260045260246000fd5b604d811161340157600a0a90565b9190820391821161340157565b9190820180921161340157565b8181039291600013801582851316918412161761340157565b906509184e72a0009182810292818405149015171561340157565b90670de0b6b3a76400009182810292818405149015171561340157565b811561342157600160ff1b8114600019831416613401570590565b601454613506916134f591906134eb906001600160801b038316906133ee565b9060801c90613417565b91620186a0918291601f54906133ee565b048083106135bf576135189083613445565b601e54602054830190818411613401578391613533916133ee565b04918281039060008094128183128116918313901516176135ab579061356461355e61356993613478565b91613493565b6134b0565b90808212156135a457600160ff1b82146135905703905b80821161358b575090565b905090565b634e487b7160e01b81526011600452602490fd5b5090613580565b634e487b7160e01b83526011600452602483fd5b505050600090565b601454919291613606916135f7916135ed916134eb906001600160801b038316906133ee565b93601f54906133ee565b61360083613437565b90613417565b908183106135bf5761356461355e6136606136246136659587613445565b9361365b61365561364c601e5461364661363d86613437565b60205490613452565b906133ee565b61360084613437565b91613437565b61345f565b613478565b600081121561368857600160ff1b8114613401576000039080821161358b575090565b90613580565b9160018060a01b0380931691600093838552602060178152604091828720549081156137db57878385516136c181613241565b82815201526136ce613ea8565b50505050509190506136e1861515613812565b6009541683600c54898b52601882526064878c2054918851948593849263442c159960e01b8452600484015260248301528d60448301525afa9081156137d157899161379e575b509161377e6137929798999492613759886106a5613750601898620186a060215404906133ee565b601e54906133ee565b815190936001600160801b03918691613774918416906133ee565b9201511690613417565b81811061379657035b97835252205461385e565b9091565b505082613787565b90508381813d83116137ca575b6137b58183613293565b810103126137c6575161377e613728565b8880fd5b503d6137ab565b85513d8b823e3d90fd5b5086955085949350505050565b5190811515820361031f57565b919082604091031261031f57602061380c836137e8565b92015190565b1561381957565b60405162461bcd60e51b815260206004820152601e60248201527f4d61726b65743a2065786368616e676552617465206e6f742076616c696400006044820152606490fd5b613869821515613812565b602060018060a01b0360095416916064600c54604051948593849263442c159960e01b845260048401526024830152600060448301525afa908115610c15576000916138d6575b50906106a56138c292602154906133ee565b620186a06138d2601e54836133ee565b0491565b906020823d8211613904575b816138ef60209383613293565b810103126139015750516106a56138b0565b80fd5b3d91506138e2565b6001600160a01b0316600081815260186020526040812054909261392f9161385e565b918352601760205260408320548015613a10578115613a1057818110613a105782811015613a0657601454613978918391610a4a916134eb906001600160801b038316906133ee565b90620186a092838302928084048514901517156139f25761399d929161360091613445565b91601b5491601c54936139b0858561345f565b80820291848212600160ff1b8214166139f25781830514901517156135ab5705818482019485129112908015821691151617613590575080821261358b575090565b634e487b7160e01b85526011600452602485fd5b50505050601b5490565b50505090565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03161480613b17575b15613a71577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f000000000000000000000000000000000000000000000000000000000000000082527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a0815260c081018181106001600160401b038211176118e55760405251902090565b507f00000000000000000000000000000000000000000000000000000000000000004614613a48565b15613b4757565b60405162461bcd60e51b815260206004820152601660248201527545524332303a2062616c616e636520746f6f206c6f7760501b6044820152606490fd5b15613b8c57565b60405162461bcd60e51b815260206004820152601660248201527545524332303a206e6f207a65726f206164647265737360501b6044820152606490fd5b51906001600160a01b038216820361031f57565b519060ff8216820361031f57565b60058110156131515780613bfd5750565b60018103613c455760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b6044820152606490fd5b60028103613c925760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606490fd5b600314613c9b57565b60405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608490fd5b9291906fa2a8918ca85bafe22016d0b997e4df60600160ff1b038311613d645791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa15613d575781516001600160a01b03811615613d51579190565b50600190565b50604051903d90823e3d90fd5b50505050600090600390565b60001981146134015760010190565b7fe50de2333c10a9502fcb1d8ae13a51bbf423153dfc63c2b8997665b32154afc360018060a01b038092169160009083825260036020526040822094169384825260205284604082205580a4565b909160207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259160018060a01b03809416938460005260028352604060002095169485600052825280604060002055604051908152a3565b60405190613e3182613226565b60006040838281528260208201520152565b60405190613e5082613241565b6014546001600160801b038116835260801c6020830152565b60405190613e7682613241565b6024546001600160801b038116835260801c6020830152565b6001600160801b03918216908216019190821161340157565b613eb0613e24565b5060006020604051613ec181613241565b828152015260006020604051613ed681613241565b8281520152604051613ee781613226565b6023546001600160401b03811682526001600160401b038160401c16602083015260801c60408201528091613f1a613e43565b91613f23613e69565b600954600e54825160405163442c159960e01b8152600481018390526001600160801b03909116602482015260006044820181905293959194919391926001600160a01b031690602081606481855afa8015610c155760009061433e575b8851613f9792506001600160801b031690613452565b80614309575060005b80613fb86001600160401b0360208701511642613445565b9485156142df575050426001600160401b031660208a8101919091528801516001600160801b03161561429557506020670de0b6b3a764000061401a856140158c6001600160401b038d60018060801b03905116915116906133ee565b6133ee565b895191900496906001600160801b039061403990828a16908316613e8f565b168952875160405163442c159960e01b815260048101929092526001600160801b031660248201526000604482015291829060649082905afa8015610c1557600090614261575b875161409692506001600160801b031690613452565b926140c4846106a5620186a06140ae601a548a6133ee565b60208c01516001600160801b03169190046133ee565b6040890180519195916001600160801b0380881692916140e79084908316613e8f565b16905260208801805190916001600160801b039161410791908316613e8f565b1690528061422c575060005b602954909384828110156141a75761412b9083613445565b90670de0b6b3a7640000820291808304670de0b6b3a76400001490151715613401576106a561417f61417961416b6001600160401b039661418996613417565b93614015602d5495806133ee565b83613452565b91848d51166133ee565b168089526001600160401b03602c54168091106141a35750565b8852565b909150602a548082116141b957505050565b6141c291613445565b670de0b6b3a7640000810290808204670de0b6b3a76400001490151715613401576001600160401b03916106a561420561417961416b61420e95602b5490613417565b848d51166133ee565b81602c5460401c16808211614224575b50168852565b90503861421e565b87516001600160801b0316670de0b6b3a76400008181029291808404909114901517156134015761425c91613417565b614113565b506020813d60201161428d575b8161427b60209383613293565b8101031261031f576140969051614080565b3d915061426e565b9697939450509350506001600160401b038151166001600160401b03602e54168091036142d3575b5093926142c8613e69565b926000926000929190565b815260019250386142bd565b9750985050505050925050916142f3613e43565b916142fc613e69565b9160009160009190600090565b87516001600160801b0316670de0b6b3a76400008181029291808404909114901517156134015761433991613417565b613fa0565b506020813d60201161436a575b8161435860209383613293565b8101031261031f57613f979051613f81565b3d915061434b565b61442d6040602080614382613ea8565b939995939092901561443d575050506001600160401b03602e54166000807f33af5ce86e8438eff54589f85332916444457dfa8685493fbd579b809097026b878a51838152a45b80518482015196909101516001600160801b0319608091821b81166001600160401b0390931667ffffffffffffffff60401b60409990991b9890981697909717919091176023558151919093015190921b84166001600160801b0392831617601455565b83511692015160801b1617602455565b7f33af5ce86e8438eff54589f85332916444457dfa8685493fbd579b809097026b876001600160401b03865116948b51908152a46143c9565b3d156144a1573d90614487826132b4565b916144956040519384613293565b82523d6000602084013e565b606090565b6001600160801b03918216908216039190821161340157565b156144c657565b60405162461bcd60e51b8152602060048201526018602482015277084d2ce84c2dcce7440d8cadccee8d040dad2e6dac2e8c6d60431b6044820152606490fd5b919082604091031261031f576020825192015190565b91909160018060a01b0392836009541690600c5460409485519063442c159960e01b82526004928084840152602496878401526000958660448501526020958685606481855afa94851561486f57918b8b928a948598614831575b509060a4911694835194859384926311a5cc7760e31b84528b8401528d30908401528760448401528960648401528160848401525af180156148275761480b575b5088600d5416908851926370a0823160e01b94858552308786015287858b81875afa9485156148015789888d948f948c97958f95859b6147b9575b50906146349291600b54169751998a9889978896635cd3dc1560e01b885233908801528601526044850152606484015260a0608484015260a48301906130b5565b03925af180156147af57614777575b508388600d54169287895180958193825230888301525afa801561476d578590614738575b6146729250613445565b9586156146f85790606483926009541691600e54928989519889958694638eb22cdd60e01b86528501528301528660448301525afa9384156146ed575081936146bc575b50505091565b9091809350813d83116146e6575b6146d48183613293565b810103126139015750513880806146b6565b503d6146ca565b51913d9150823e3d90fd5b50818460649387519362461bcd60e51b85528401528201527f53474c3a206f6e436f6c6c61746572616c5265636569766572206661696c65646044820152fd5b50908381813d8311614766575b61474f8183613293565b8101031261476257906146729151614668565b8480fd5b503d614745565b87513d87823e3d90fd5b8481813d83116147a8575b61478c8183613293565b810103126147a45761479d906137e8565b5038614643565b8580fd5b503d614782565b88513d88823e3d90fd5b96999a50509550959250505081813d83116147fa575b6147d98183613293565b810103126137c657928989886146348f9897968f968d98519a9091926145f3565b503d6147cf565b8b513d8b823e3d90fd5b61482190893d8b11610c9257610c848183613293565b506145b8565b89513d89823e3d90fd5b935096505091508681813d8311614868575b61484d8183613293565b8101031261486457519387918a918c9060a4614577565b8780fd5b503d614843565b8a513d8a823e3d90fd5b9190811015610bb85760051b0190565b919060018060a01b0380600094168452602060178152604085205490811561498c57601881526040862054801561498557816148c3613e43565b9460095416916064600c54604051948593849263442c159960e01b8452600484015260248301528b60448301525afa968715614979578097614943575b505061377461492861491f61493e969798620186a060215404906133ee565b601f54906133ee565b9561401560018060801b039485875116906133ee565b111590565b9096508187813d8311614972575b61495b8183613293565b810103126139015750945194613774614928614900565b503d614951565b604051903d90823e3d90fd5b5050505050565b5060019450505050565b9081526001600160a01b0391821660208201529116604082015260006060820152608081019190915260a00190565b604051906149d282613241565b60038252623f3f3f60e81b6020830152565b908151811015610bb8570160200190565b60ff1660ff81146134015760010190565b805160408110614a815750805181019060208181840193031261031f576020810151906001600160401b03821161031f570181603f8201121561031f576020810151614a51816132b4565b92614a5f6040519485613293565b8184526040828401011161031f57614a7e916040602085019101613092565b90565b602092908303614b6f576000805b60ff81168581109081614b50575b5015614ab157614aac906149f5565b614a8f565b9260ff80941692614ac1846132b4565b93614acf6040519586613293565b808552614ade601f19916132b4565b013687860137825b85811687811080614b33575b15614b2857614b239190614b1d6001600160f81b0319614b1283886149e4565b5116871a91886149e4565b536149f5565b614ae6565b505094505050905090565b506001600160f81b0319614b4782866149e4565b51161515614af2565b6001600160f81b03199150614b6590866149e4565b5116151538614a9d565b915050614a7e6149c556feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae672a26469706673582212203a7c7c2293b30056fd3f48e72a9dc30e5536afce079e4a540546ebc5e0a4041264736f6c63430008120033", + "bytecode": "0x6101408060405234620001e5576200001781620001ea565b601381526001602082017f546170696f63612053696e67756c617269747900000000000000000000000000815260206040516200005481620001ea565b8381520192603160f81b845251902091208160e052610100918183524660a0526040519160208301907f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f92838352604085015260608401524660808401523060a084015260a0835260c083019280841060018060401b03851117620001cf5760408490525190206080523060c052610120908152600580546001600160a01b0319163390811790915560007f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a362013880601b5562015f90601c55612710601d55612ee06020557f0bd4060688a1800ae986e4840aebc924bb40b5bf44de4583df2257220b54b77c6027557f7d1dc38e60930664f8cbf495da6556ca091d2f92d6550877750c049864b182306028556161a86029556032603055614bce928362000207843960805183613a5c015260a05183613b27015260c05183613a26015260e05183613aab01525182613ad101525181613a880152f35b634e487b7160e01b600052604160045260246000fd5b600080fd5b604081019081106001600160401b03821117620001cf5760405256fe608080604052600436101561001357600080fd5b60e0600035811c918262a02a20146130275750816302ce728f14612ec457816306fdde0314612e0d578163078dfbe714612d09578163095ea7b314612ce35781630c4e84f014612bc957816318160ddd14612ba85781631c9e379b14612b6e5781631da8bf1014612ab757816323b872dd14612913578163313ce56714612883578163331960ff1461286557816334d441d0146128475781633644e5151461282c57816337b6b7b91461280e57816338d52e0f146127e55781633ba0b9a9146127c75781633f741adb146127a357816340626d8b1461278557816344de240a14612767578163473e3ce71461274957816348e4163e1461270f5781634d7f2a34146126f15781634e71e0c814612643578163529898f21461262657816352f353eb146125ff57816355140232146125d857816355c2ab94146125ae57816357935462146125905781635dfe04e8146125315781636c3d8b8f1461250857816370a08231146124ce578163727785471461249857816374645ff31461246d5781637dc0d1d0146124445781637ecebe001461240a5781637fa0b84e146123d9578163821226e8146123bb5781638285ef40146123895781638c5d0ed31461236b5781638da5cb5b14612342578163910dd7c8146120f8578163959916dc146120da57816395d89b411461202057816399a9702814611ff15781639c5d719214611fd35781639e15e89f14611f8e578163a28e6b8214611ac7578163a9059cbb146119e5578163b0e21e8a146119c7578163b27c0e741461198c578163bb4cfe3b1461196e578163ce8849ed14611945578163d3fb2a38146114c8578163d505accf1461134357508063d8dfeb451461131a578063da863f0e146112f1578063dd62ed3e146112a0578063de40657714611277578063e0996cb614611259578063e30c397814611230578063e5644d8b14610457578063ea64dd5614610439578063eec0f42e1461041b578063ef2b234a146103a9578063f42760b71461038b578063f8ba4cff14610370578063f9557ccb1461033a5763ffe04c661461031757600080fd5b34610335576000366003190112610335576020602a54604051908152f35b600080fd5b3461033557600036600319011261033557602554604080516001600160801b038316815260809290921c602083015290f35b0390f35b3461033557600036600319011261033557610389614375565b005b34610335576000366003190112610335576020602b54604051908152f35b34610335576020366003190112610335576004356001600160a01b0381811691829003610335576103df81600554163314613370565b816021549182167ffb4fd7114609dd603b57adbc2082205bfbbcabf9265c4b437b472f5c592b8cd7600080a36001600160a01b03191617602155005b34610335576000366003190112610335576020600c54604051908152f35b34610335576000366003190112610335576020601f54604051908152f35b34610335576080366003190112610335576004356001600160401b03811161033557610487903690600401613340565b906024356001600160401b038111610335576104a7903690600401613340565b6044356001600160401b038111610335576104c6903690600401613340565b90916064356001600160401b038111610335576104e7903690600401613340565b9290916004600052600760205260ff604060002054166111fa5787156111ba576105128189146144c2565b61051d8289146144c2565b6105288285146144c2565b600f546040805163d6d7d52560e01b815260206004820152979188906001600160a01b03168160008161055d602482016131ae565b03925af1968715610c7957600090600098611186575b50878161117c575b501561117257866011555b61058e614375565b60009860005b8181106105de578a156105a357005b60405162461bcd60e51b815260206004820152601360248201527214d1d30e881b9bc81d5cd95c9cc8199bdd5b99606a1b6044820152606490fd5b6105e981838c614877565b356001600160a01b0381168103610335576106048a82614887565b15610619575b5061061490613d7d565b610594565b9a61062390613d7d565b9a61062f828686614877565b359061063c83888c614877565b35906001600160a01b03821682036103355789841015610c1c578360051b890135601e198a360301811215610335578901926001600160401b0384351161033557833536036020850113610335576106948d83613919565b918d1561112d5760018060a01b03600954166020600c5460018060a01b03841660005260188252606460406000205491604051948593849263442c159960e01b845260048401526024830152600060448301525afa908115610c79578f906000926110f7575b5061070b61071092602254906133fb565b613424565b9360018060a01b0382166000526017602052610731856040600020546134d8565b80601d54806110d8575b50808511156110d1575b6001600160a01b03841660009081526017602052604090205490818111156110c8575080965b1115611093578f938181111561108c57505b6001600160a01b038316600090815260176020526040902054908181111561108157506107aa8180613452565b6001600160a01b0384166000908152601760205260409020556107cb613e50565b60208101516001600160801b031661104c5750602081965b606461080961080060018060a01b036009541698600c54946133fb565b60225490613424565b916040519788938492638eb22cdd60e01b845260048401526024830152600060448301525afa938415610c7957600094611018575b506001600160a01b0383166000908152601860205260409020548411610fd35760018060a01b0383166000526018602052604060002061087f858254613452565b90558515610f9f57601454906108c66001600160801b036108a48982168286166144a9565b16926001600160801b0319926001600160801b0316908316841760801c6144a9565b60801b161760145560018060a01b0360095416956020600e546064604051809a8193638eb22cdd60e01b835260048301528a6024830152600160448301525afa968715610c7957600097610f67575b5086916109f76109fe926015805488808211600014610f5d5761093791613452565b905b5560018060a01b0386166000526026806020526040600020602890815490816000526020526040600020548a11600014610f28575060018060a01b0388166000528160205260406000209054600052602052600060408120555b60018060a01b03871660005280602052604060002090602791825490816000526020526040600020548811600014610ef4575060018060a01b03881660005260205260406000209054600052602052600060408120555b36906020813591016132dc565b908561451a565b5010610eaf57600954600e54604051627eeac760e11b815230600482015260248101919091526001600160a01b039091169390602081604481885afa8015610c7957600090610e7b575b602554610a5f92506001600160801b031690613452565b9580871115610e6b57610a81610a79620186a09289613452565b925b836133fb565b0495610a8d8783613452565b9485610cfd575b5086610c85575b610ab587610ab08760018060801b0394613452565b613452565b602554916001600160801b0391610acf9116828416613e9c565b6001600160801b0319909216911617602555600d5460095460405163095ea7b360e01b81526001600160a01b039182166004820152600060248201819052909260209284926044928492165af18015610c795787918691610c32575b50610ab090610b3993613452565b6040516000815230907f30a8c4f9ab5af7e1309ca87c32377d1a83366c5990472dbf9d262450eae14e3860203092a460405190610b758261324e565b6001825260203681840137815115610c1c576001600160a01b03166020820190815260405191518291906000905b808210610bfa575050508190039020604080519384526020840194909452928201526106149392919033907f85b91d472e69b2cfe848ed50eb5d8582ae96c22057b6e46250255dd6f6c3519290606090a49061060a565b82516001600160a01b0316845260209384019390920191600190910190610ba3565b634e487b7160e01b600052603260045260246000fd5b9150506020813d602011610c71575b81610c4e602093836132a0565b8101031261033557610ab085610b3993610c688a946137f5565b50935090610b2b565b3d9150610c41565b6040513d6000823e3d90fd5b610cba60408860018060a01b0360095416600e5460008451809681958294634d4d7cbd60e11b84523390309060048601614994565b03925af18015610c7957610ccf575b50610a9b565b610cf09060403d604011610cf6575b610ce881836132a0565b810190614504565b50610cc9565b503d610cde565b600d5460405163095ea7b360e01b8152600481019290925260006024830181905260209183916044918391906001600160a01b03165af18015610c7957610e32575b50600d5460095460405163095ea7b360e01b81526001600160a01b03918216600482015260001960248201529160209183916044918391600091165af18015610c7957610df9575b50600954600e54600a5460408051634d4d7cbd60e11b815293909284926001600160a01b039283169284926000928492610dcc928f9290911690309060048601614994565b03925af18015610c795715610a9457610df39060403d604011610cf657610ce881836132a0565b50610a94565b6020813d602011610e2a575b81610e12602093836132a0565b8101031261033557610e23906137f5565b5038610d87565b3d9150610e05565b6020813d602011610e63575b81610e4b602093836132a0565b8101031261033557610e5c906137f5565b5038610d3f565b3d9150610e3e565b50620186a0610a81600092610a7b565b506020813d602011610ea7575b81610e95602093836132a0565b8101031261033557610a5f9051610a48565b3d9150610e88565b60405162461bcd60e51b815260206004820152601b60248201527f53474c3a20617373657420616d6f756e74206e6f742076616c696400000000006044820152606490fd5b915060018060a01b0388166000526020526040600020906000526020526040600020610f21868254613452565b90556109ea565b905060018060a01b038816600052816020526040600020906000526020526040600020610f56898254613452565b9055610993565b5050600090610939565b909196506020813d602011610f97575b81610f84602093836132a0565b81010312610335575195906109fe610915565b3d9150610f77565b60405162461bcd60e51b815260206004820152600c60248201526b14d1d30e881cdbdb1d995b9d60a21b6044820152606490fd5b60405162461bcd60e51b815260206004820152601a60248201527f53474c3a206e6f7420656e6f75676820636f6c6c61746572616c0000000000006044820152606490fd5b9093506020813d602011611044575b81611034602093836132a0565b810103126103355751923861083e565b3d9150611027565b805160209161107b91611068906001600160801b0316856133fb565b908301516001600160801b031690613424565b966107e3565b6107aa908092613452565b905061077d565b60405162461bcd60e51b815260206004820152600d60248201526c14d1d30e88189859081919589d609a1b6044820152606490fd5b9050809661076b565b5083610745565b90620186a06110ea6110f193836133fb565b049061345f565b3861073b565b9150506020813d602011611125575b81611113602093836132a0565b8101031261033557518e61070b6106fa565b3d9150611106565b60405162461bcd60e51b815260206004820152601b60248201527f53474c3a2065786368616e676552617465206e6f742076616c696400000000006044820152606490fd5b6011549650610586565b905015158a61057b565b90506111ab91975060403d6040116111b3575b6111a381836132a0565b810190613802565b96908a610573565b503d611199565b60405162461bcd60e51b815260206004820152601860248201527742423a206e6f7468696e6720746f206c697175696461746560401b6044820152606490fd5b60405162461bcd60e51b815260206004820152600e60248201526d13585c9ad95d0e881c185d5cd95960921b6044820152606490fd5b34610335576000366003190112610335576006546040516001600160a01b039091168152602090f35b34610335576000366003190112610335576020601d54604051908152f35b34610335576000366003190112610335576009546040516001600160a01b039091168152602090f35b34610335576040366003190112610335576112b9613073565b6112c1613089565b9060018060a01b038091166000526002602052604060002091166000526020526020604060002054604051908152f35b34610335576000366003190112610335576021546040516001600160a01b039091168152602090f35b3461033557600036600319011261033557600b546040516001600160a01b039091168152602090f35b3461033557611351366130f6565b839496979392919242116114835761142f926114279260018060a01b0395868b169788600052600460205260406000209182549261138e84613d7d565b90556040519160208301937f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e2668552600060408501528b60608501528a8d1660808501528d60a085015260c08401528183015281526113eb81613269565b5190206113f6613a23565b9060405190602082019261190160f01b8452602283015260428201526042815261141f81613285565b519020613cf8565b919091613bf9565b160361143e5761038992613dda565b60405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152606490fd5b60405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b3461033557610160366003190112610335576001600160a01b0360043581811690819003610335576001600160401b039160243583811161033557611511903690600401613313565b9093604435938385168095036103355761153084600554163314613370565b80611906575b5081611781575b505090809250611740575b505060643580611728575b5060843580611710575b5060a435806116f9575b5060c435806116d5575b5060e435806116b1575b50610104358061167f575b50610124358061160b575b50610144358061159d57005b601e5481106115ab57601f55005b60405162461bcd60e51b815260206004820152603260248201527f4d61726b65743a206c69717569646174696f6e436f6c6c61746572616c697a616044820152711d1a5bdb94985d19481d1bdbc81cdb585b1b60721b6064820152608490fd5b61161a620186a08211156133bb565b601f54811161162c57601e5580611591565b60405162461bcd60e51b815260206004820152602560248201527f4d61726b65743a20636f6c6c61746572616c697a6174696f6e5261746520746f6044820152646f2062696760d81b6064820152608490fd5b806016547fae6e0ab3b95f0a53ff9660a390ccedcbbf1f2355dce974a9841af106fddcfaba600080a360165580611586565b6116bf620186a082106133bb565b6116cc601b5482116133bb565b601c558061157b565b6116e3620186a082106133bb565b6116f0601c5482106133bb565b601b5580611571565b611707620186a082106133bb565b601d5580611567565b61171f620186a08211156133bb565b601a558061155d565b611737620186a08211156133bb565b60195580611553565b816008549182167f5a62d22209e370e38eea92cfddcd228e656e6ec139243392a760a7769f5877fd600080a36001600160a01b031916176008558080611548565b81116118f057611792601054613174565b601f811161188d575b506000601f821160011461180457819293946000926117f9575b50508160011b916000199060031b1c1916176010555b7fa6f004921c944d4b8bf6e38462b00f36a58d62495d56b51f571ab78f732c9815600080a18190838061153d565b0135905084806117b5565b60106000908152601f198316957f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae67292909160205b8882106118755750508360019596971061185b575b505050811b016010556117cb565b0135600019600384901b60f8161c1916905584808061184d565b80600184968294958701358155019501920190611838565b60106000527f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae672601f830160051c8101602084106118e9575b601f90920160051c01905b8181106118dd575061179b565b600081556001016118d0565b50806118c5565b634e487b7160e01b600052604160045260246000fd5b600f80546001600160a01b0319169190911790557f0b2d6eb667d0522c3eb86e4288afecae6c11591ffd1345d4d12407e0598bca9b600080a185611536565b34610335576000366003190112610335576008546040516001600160a01b039091168152602090f35b34610335576000366003190112610335576020601e54604051908152f35b34610335576000366003190112610335576060602454604051906001600160401b0380821683528160401c16602083015260801c6040820152f35b34610335576000366003190112610335576020601a54604051908152f35b34610335576040366003190112610335576119fe613073565b602435908115801590611ab5575b611a42575b6040519182526001600160a01b0316903390600080516020614b7983398151915290602090a3602060405160018152f35b336000526001602052604060002054611a5d83821015613b4d565b6001600160a01b038216908333839003611a7a575b505050611a11565b611a8991610ab0841515613b92565b3360005260016020526040600020556000526040600020611aab83825461345f565b9055828083611a72565b50336001600160a01b03821614611a0c565b3461033557608036600319011261033557611ae0613073565b611ae8613089565b60443591906001600160a01b0390818416840361033557606435936001600160401b03851161033557611b22611b61953690600401613313565b9190611b3385600554163314613370565b84600f54169560405163d6d7d52560e01b81526040816020998a60048301528160008160249e8f82016131ae565b03925af1908115610c7957600090600092611f6c575b508181611f62575b5015611f5957806011555b15611f0a578590611b99614375565b16928360005260178752611bbb604060002054620186a06110ea8a54836133fb565b87896064896009541693611bd8610800600c5492601154906133fb565b946040519586948593638eb22cdd60e01b85526004850152830152600060448301525afa908115610c7957600091611edd575b50846000526018885260406000205411611e9957611db8611d6d856000989695611d678a999796611daa9660268e8d9a8b526018815260408b205496611d06611c52613e50565b828e5260178452611ce1611cb88f604090205492600087604051611c758161324e565b82815201528681019360018060801b03928382818094868a8381511615600014611e4c57505081611cab915b16828851166144a9565b16855216828751166144a9565b169384905251601480546001600160801b0319166001600160801b039390921692909216179055565b601480546001600160801b031660809290921b6001600160801b031916919091179055565b808c52601782528b604081205582825260408c206027548d5282528b6040812055808c5260188252611d3e60408d2054601554613452565b6015558b52601881528a6040812055528d60408a20906028548b525288604081205536916132dc565b9161451a565b600d546040805163a9059cbb60e01b8d82019081526001600160a01b039099168e8201908152602081019490945291909816979094859350910190565b03601f1981018352826132a0565b51925af1611dc4614479565b81611e14575b5015611dd257005b601c6064926040519262461bcd60e51b845260048401528201527f426f72696e6745524332303a205472616e73666572206661696c6564000000006044820152fd5b80915051828115918215611e2d575b5050905083611dca565b83809293500103126103355781611e4491016137f5565b808285611e23565b611cab92611e85611e7b86611e72611e688280985116866133fb565b8287511690613424565b945116846133fb565b848c511690613424565b1015611ca157611e9490613d7d565b611ca1565b60405162461bcd60e51b815260048101889052601b818a01527f42423a2043616e6e6f7420666f726365206c69717569646174656400000000006044820152606490fd5b90508781813d8311611f03575b611ef481836132a0565b81010312610335575189611c0b565b503d611eea565b60405162461bcd60e51b8152600481018890526022818a01527f42423a2063757272656e742065786368616e676552617465206e6f742076616c6044820152611a5960f21b6064820152608490fd5b50601154611b8a565b905015158a611b7f565b9050611f87915060403d6040116111b3576111a381836132a0565b908a611b77565b346103355760403660031901126103355761036c611fb6611fad613073565b6024359061369b565b604080519384526020840192909252908201529081906060820190565b34610335576000366003190112610335576020602c54604051908152f35b3461033557604036600319011261033557602061201861200f613073565b60243590613919565b604051908152f35b346103355760003660031901126103355760008060018060a01b03600b541660405160208101906395d89b4160e01b82526004815261205e8161324e565b51915afa61206a614479565b90156120c95761207c61036c91614a04565b6120b56023604051809362746d2d60e81b60208301526120a5815180926020868601910161309f565b81010360038101845201826132a0565b6040519182916020835260208301906130c2565b5061036c6120d56149c3565b61207c565b34610335576000366003190112610335576020603054604051908152f35b34610335576040366003190112610335576004356001600160401b0381116103355736602382011215610335576121399036906024816004013591016132dc565b9060243561ffff8116809103610335576101009182848051810103126103355760206121668186016137f5565b9161217360408701613bd7565b9061218060608801613bd7565b9660808101519660a08201519261219960c08401613beb565b91818401519301519360018060a01b03808097169b16988142116122fd579289888d9897946122749794611427978f8e6000146122d6577f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e266955b8d6000526004865260406000209283549361220d85613d7d565b905560405196870197885260408701528d6060870152608086015260a085015260c084015281830152815261224181613269565b51902061224c613a23565b90604051908a82019261190160f01b8452602283015260428201526042815261141f81613285565b16036122925750156122895761038992613dda565b61038992613d8c565b6064906040519062461bcd60e51b82526004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152fd5b7f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d6956121f3565b60405162461bcd60e51b815260048101899052601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b34610335576000366003190112610335576005546040516001600160a01b039091168152602090f35b34610335576000366003190112610335576020601b54604051908152f35b3461033557600036600319011261033557601454604080516001600160801b038316815260809290921c602083015290f35b34610335576000366003190112610335576020602e54604051908152f35b34610335576040366003190112610335576123ff6123f5613073565b6024359033613d8c565b602060405160018152f35b34610335576020366003190112610335576001600160a01b0361242b613073565b1660005260046020526020604060002054604051908152f35b3461033557600036600319011261033557600f546040516001600160a01b039091168152602090f35b346103355760003660031901126103355761036c6040516120b581612491816131ae565b03826132a0565b346103355760203660031901126103355760043560098110156103355760ff6124c2602092613145565b54166040519015158152f35b34610335576020366003190112610335576001600160a01b036124ef613073565b1660005260016020526020604060002054604051908152f35b3461033557600036600319011261033557600a546040516001600160a01b039091168152602090f35b346103355760003660031901126103355761254a613e31565b506080612555613eb5565b509350505050604051916001600160401b0380825116845260208201511660208401526040600180861b039101511660408301526060820152f35b34610335576000366003190112610335576020601c54604051908152f35b346103355760003660031901126103355760206001600160401b03602d5460401c16604051908152f35b346103355760003660031901126103355760206001600160401b03602d5416604051908152f35b346103355760003660031901126103355760206001600160401b03602f5416604051908152f35b346103355760003660031901126103355760208054604051908152f35b34610335576000366003190112610335576006546001600160a01b0390818116338190036126ad57806005549384167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a36001600160a01b03199283161760055516600655005b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b34610335576000366003190112610335576020602954604051908152f35b34610335576020366003190112610335576001600160a01b03612730613073565b1660005260176020526020604060002054604051908152f35b34610335576000366003190112610335576020601554604051908152f35b34610335576000366003190112610335576020600e54604051908152f35b34610335576000366003190112610335576020601654604051908152f35b346103355760603660031901126103355760206120186044356024356004356135d4565b34610335576000366003190112610335576020601154604051908152f35b3461033557600036600319011261033557600d546040516001600160a01b039091168152602090f35b34610335576000366003190112610335576020601254604051908152f35b34610335576000366003190112610335576020612018613a23565b34610335576000366003190112610335576020601954604051908152f35b34610335576000366003190112610335576020601354604051908152f35b346103355760003660031901126103355760008060018060a01b03600d5416604051602081019063313ce56760e01b8252600481526128c18161324e565b51915afa6128cd614479565b9080612908575b156128fe57602081805181010312610335576128f36020809201613beb565b60ff60405191168152f35b50602060126128f3565b5060208151146128d4565b346103355760603660031901126103355761292c613073565b612934613089565b6044359081612971575b6040519182526001600160a01b03908116921690600080516020614b7983398151915290602090a3602060405160018152f35b60018060a01b0380841680600052602060018152846040600020549361299982861015613b4d565b8516938484036129ae575b505050505061293e565b836000526002835260406000203360005283526040600020546000198103612a22575b5084926129f9600080516020614b79833981519152979593600193610ab06020991515613b92565b92600052526040600020556000526040600020612a1785825461345f565b9055918584816129a4565b90918110612a7757602094926129f988600080516020614b79833981519152989694612a5082600196613452565b866000526002855260406000203360005285526040600020559350939597505092946129d1565b60405162461bcd60e51b815260048101849052601860248201527745524332303a20616c6c6f77616e636520746f6f206c6f7760401b6044820152606490fd5b3461033557612ac5366130f6565b8394969793929192421161148357612b5f926114279260018060a01b0395868b1697886000526004602052604060002091825492612b0284613d7d565b90556040519160208301937f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d68552600060408501528b60608501528a8d1660808501528d60a085015260c08401528183015281526113eb81613269565b160361143e5761038992613d8c565b34610335576020366003190112610335576001600160a01b03612b8f613073565b1660005260186020526020604060002054604051908152f35b3461033557600036600319011261033557602060255460801c604051908152f35b3461033557604036600319011261033557600435600981101561033557612bee6130e7565b6008549091906001600160a01b03163303612ca75760ff612c0e82613145565b54161515911515918214612c6d57808260ff612c2c612c5b94613145565b54161515827feeec81de25875ce1725479bb76f720a8defdb43dea041919ae37bb4aae9847c0600080a4613145565b9060ff80198354169116179055600080f35b60405162461bcd60e51b81526020600482015260126024820152714d61726b65743a2073616d6520737461746560701b6044820152606490fd5b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881d5b985d5d1a1bdc9a5e995960621b6044820152606490fd5b34610335576040366003190112610335576123ff612cff613073565b6024359033613dda565b3461033557606036600319011261033557612d22613073565b612d2a6130e7565b6044359081151582036103355760018060a01b03928391612d5083600554163314613370565b15612df4571690811590811591612dec575b5015612daf57806005549283167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a36001600160a01b031991821617600555600680549091169055005b60405162461bcd60e51b81526020600482015260156024820152744f776e61626c653a207a65726f206164647265737360581b6044820152606490fd5b905083612d62565b9150501660018060a01b03196006541617600655600080f35b346103355760003660031901126103355760008060018060a01b03600b541660405160208101906306fdde0360e01b825260048152612e4b8161324e565b51915afa612e57614479565b9015612eb357612e6961036c91614a04565b6120b56034604051809373546170696f63612053696e67756c61726974792d60601b6020830152612ea3815180926020868601910161309f565b81010360148101845201826132a0565b5061036c612ebf6149c3565b612e69565b3461033557600036600319011261033557600f546040805163d6d7d52560e01b8152602060048201529182906001600160a01b031681600081612f09602482016131ae565b03925af18015610c7957600091600091613006575b50908015612fa8578115612f6c5781604092601155807f9f9192b5edb17356c524e08d9e025c8e2f6307e6ea52fb7968faa3081f51c3c8600080a25b42601355825191151582526020820152f35b60405162461bcd60e51b81526020600482015260146024820152734d61726b65743a20696e76616c6964207261746560601b6044820152606490fd5b9050612fb96013546012549061345f565b4211612fca57604090601154612f5a565b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881c985d19481d1bdbc81bdb1960621b6044820152606490fd5b9050613021915060403d6040116111b3576111a381836132a0565b82612f1e565b3461033557604036600319011261033557602090613043613073565b61304b613089565b9060018060a01b03809116600052600384526040600020911660005282526040600020548152f35b600435906001600160a01b038216820361033557565b602435906001600160a01b038216820361033557565b60005b8381106130b25750506000910152565b81810151838201526020016130a2565b906020916130db8151809281855285808601910161309f565b601f01601f1916010190565b60243590811515820361033557565b60e0906003190112610335576001600160a01b03906004358281168103610335579160243590811681036103355790604435906064359060843560ff81168103610335579060a4359060c43590565b600981101561315e576000526007602052604060002090565b634e487b7160e01b600052602160045260246000fd5b90600182811c921680156131a4575b602083101461318e57565b634e487b7160e01b600052602260045260246000fd5b91607f1691613183565b601054600092916131be82613174565b90818152600192838116908160001461321857506001146131de57505050565b9092935060106000526020928360002092846000945b8386106132045750505050010190565b8054858701830152940193859082016131f4565b91935050602093945060ff191683830152151560051b010190565b606081019081106001600160401b038211176118f057604052565b604081019081106001600160401b038211176118f057604052565b61010081019081106001600160401b038211176118f057604052565b608081019081106001600160401b038211176118f057604052565b90601f801991011681019081106001600160401b038211176118f057604052565b6001600160401b0381116118f057601f01601f191660200190565b9291926132e8826132c1565b916132f660405193846132a0565b829481845281830111610335578281602093846000960137010152565b9181601f84011215610335578235916001600160401b038311610335576020838186019501011161033557565b9181601f84011215610335578235916001600160401b038311610335576020808501948460051b01011161033557565b1561337757565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b156133c257565b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881b9bdd081d985b1a59607a1b6044820152606490fd5b8181029291811591840414171561340e57565b634e487b7160e01b600052601160045260246000fd5b811561342e570490565b634e487b7160e01b600052601260045260246000fd5b604d811161340e57600a0a90565b9190820391821161340e57565b9190820180921161340e57565b8181039291600013801582851316918412161761340e57565b906509184e72a0009182810292818405149015171561340e57565b90670de0b6b3a76400009182810292818405149015171561340e57565b811561342e57600160ff1b811460001983141661340e570590565b6014546135139161350291906134f8906001600160801b038316906133fb565b9060801c90613424565b91620186a0918291601f54906133fb565b048083106135cc576135259083613452565b601e5460205483019081841161340e578391613540916133fb565b04918281039060008094128183128116918313901516176135b8579061357161356b61357693613485565b916134a0565b6134bd565b90808212156135b157600160ff1b821461359d5703905b808211613598575090565b905090565b634e487b7160e01b81526011600452602490fd5b509061358d565b634e487b7160e01b83526011600452602483fd5b505050600090565b60145491929161361391613604916135fa916134f8906001600160801b038316906133fb565b93601f54906133fb565b61360d83613444565b90613424565b908183106135cc5761357161356b61366d6136316136729587613452565b93613668613662613659601e5461365361364a86613444565b6020549061345f565b906133fb565b61360d84613444565b91613444565b61346c565b613485565b600081121561369557600160ff1b811461340e5760000390808211613598575090565b9061358d565b9160018060a01b0380931691600093838552602060178152604091828720549081156137e857878385516136ce8161324e565b82815201526136db613eb5565b50505050509190506136ee86151561381f565b6009541683600c54898b52601882526064878c2054918851948593849263442c159960e01b8452600484015260248301528d60448301525afa9081156137de5789916137ab575b509161378b61379f97989994926137668861070b61375d601898620186a060225404906133fb565b601e54906133fb565b815190936001600160801b03918691613781918416906133fb565b9201511690613424565b8181106137a357035b97835252205461386b565b9091565b505082613794565b90508381813d83116137d7575b6137c281836132a0565b810103126137d3575161378b613735565b8880fd5b503d6137b8565b85513d8b823e3d90fd5b5086955085949350505050565b5190811515820361033557565b9190826040910312610335576020613819836137f5565b92015190565b1561382657565b60405162461bcd60e51b815260206004820152601e60248201527f4d61726b65743a2065786368616e676552617465206e6f742076616c696400006044820152606490fd5b61387682151561381f565b602060018060a01b0360095416916064600c54604051948593849263442c159960e01b845260048401526024830152600060448301525afa908115610c79576000916138e3575b509061070b6138cf92602254906133fb565b620186a06138df601e54836133fb565b0491565b906020823d8211613911575b816138fc602093836132a0565b8101031261390e57505161070b6138bd565b80fd5b3d91506138ef565b6001600160a01b0316600081815260186020526040812054909261393c9161386b565b918352601760205260408320548015613a1d578115613a1d57818110613a1d5782811015613a1357601454613985918391610ab0916134f8906001600160801b038316906133fb565b90620186a092838302928084048514901517156139ff576139aa929161360d91613452565b91601b5491601c54936139bd858561346c565b80820291848212600160ff1b8214166139ff5781830514901517156135b8570581848201948512911290801582169115161761359d5750808212613598575090565b634e487b7160e01b85526011600452602485fd5b50505050601b5490565b50505090565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03161480613b24575b15613a7e577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f000000000000000000000000000000000000000000000000000000000000000082527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a0815260c081018181106001600160401b038211176118f05760405251902090565b507f00000000000000000000000000000000000000000000000000000000000000004614613a55565b15613b5457565b60405162461bcd60e51b815260206004820152601660248201527545524332303a2062616c616e636520746f6f206c6f7760501b6044820152606490fd5b15613b9957565b60405162461bcd60e51b815260206004820152601660248201527545524332303a206e6f207a65726f206164647265737360501b6044820152606490fd5b51906001600160a01b038216820361033557565b519060ff8216820361033557565b600581101561315e5780613c0a5750565b60018103613c525760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b6044820152606490fd5b60028103613c9f5760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606490fd5b600314613ca857565b60405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608490fd5b9291906fa2a8918ca85bafe22016d0b997e4df60600160ff1b038311613d715791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa15613d645781516001600160a01b03811615613d5e579190565b50600190565b50604051903d90823e3d90fd5b50505050600090600390565b600019811461340e5760010190565b7fe50de2333c10a9502fcb1d8ae13a51bbf423153dfc63c2b8997665b32154afc360018060a01b038092169160009083825260036020526040822094169384825260205284604082205580a4565b909160207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259160018060a01b03809416938460005260028352604060002095169485600052825280604060002055604051908152a3565b60405190613e3e82613233565b60006040838281528260208201520152565b60405190613e5d8261324e565b6014546001600160801b038116835260801c6020830152565b60405190613e838261324e565b6025546001600160801b038116835260801c6020830152565b6001600160801b03918216908216019190821161340e57565b613ebd613e31565b5060006020604051613ece8161324e565b828152015260006020604051613ee38161324e565b828152015260405190613ef582613233565b602454916001600160401b038316815260208101926001600160401b038160401c16845260801c60408201528092613f2b613e50565b92613f34613e76565b92600060018060a01b0360095416600e549460018060801b038751166040519063442c159960e01b8252876004830152602482015260006044820152602081606481865afa8015610c7957600090614341575b8951613f9d92506001600160801b03169061345f565b8061430c575060005b613fbb6001600160401b038293511642613452565b9485156142e2575050426001600160401b031660208a8101919091528801516001600160801b03161561429857506020670de0b6b3a764000061401d856140188c6001600160401b038d60018060801b03905116915116906133fb565b6133fb565b895191900496906001600160801b039061403c90828a16908316613e9c565b168952875160405163442c159960e01b815260048101929092526001600160801b031660248201526000604482015291829060649082905afa8015610c7957600090614264575b875161409992506001600160801b03169061345f565b926140c78461070b620186a06140b1601a548a6133fb565b60208c01516001600160801b03169190046133fb565b6040890180519195916001600160801b0380881692916140ea9084908316613e9c565b16905260208801805190916001600160801b039161410a91908316613e9c565b1690528061422f575060005b602a54909384828110156141aa5761412e9083613452565b90670de0b6b3a7640000820291808304670de0b6b3a7640000149015171561340e5761070b61418261417c61416e6001600160401b039661418c96613424565b93614018602e5495806133fb565b8361345f565b91848d51166133fb565b168089526001600160401b03602d54168091106141a65750565b8852565b909150602b548082116141bc57505050565b6141c591613452565b670de0b6b3a7640000810290808204670de0b6b3a7640000149015171561340e576001600160401b039161070b61420861417c61416e61421195602c5490613424565b848d51166133fb565b81602d5460401c16808211614227575b50168852565b905038614221565b87516001600160801b0316670de0b6b3a764000081810292918084049091149015171561340e5761425f91613424565b614116565b506020813d602011614290575b8161427e602093836132a0565b81010312610335576140999051614083565b3d9150614271565b9697939450509350506001600160401b038151166001600160401b03602f54168091036142d6575b5093926142cb613e76565b926000926000929190565b815260019250386142c0565b9750985050505050925050916142f6613e50565b916142ff613e76565b9160009160009190600090565b88516001600160801b0316670de0b6b3a764000081810292918084049091149015171561340e5761433c91613424565b613fa6565b506020813d60201161436d575b8161435b602093836132a0565b8101031261033557613f9d9051613f87565b3d915061434e565b6144306040602080614385613eb5565b9399959390929015614440575050506001600160401b03602f54166000807f33af5ce86e8438eff54589f85332916444457dfa8685493fbd579b809097026b878a51838152a45b80518482015196909101516001600160801b0319608091821b81166001600160401b0390931667ffffffffffffffff60401b60409990991b9890981697909717919091176024558151919093015190921b84166001600160801b0392831617601455565b83511692015160801b1617602555565b7f33af5ce86e8438eff54589f85332916444457dfa8685493fbd579b809097026b876001600160401b03865116948b51908152a46143cc565b3d156144a4573d9061448a826132c1565b9161449860405193846132a0565b82523d6000602084013e565b606090565b6001600160801b03918216908216039190821161340e57565b156144c957565b60405162461bcd60e51b8152602060048201526013602482015272084847440d8cadccee8d040dad2e6dac2e8c6d606b1b6044820152606490fd5b9190826040910312610335576020825192015190565b91909160018060a01b0392836009541690600c5460409485519063442c159960e01b82526004928084840152602496878401526000958660448501526020958685606481855afa94851561486d57918b8b928a94859861482f575b509060a4911694835194859384926311a5cc7760e31b84528b8401528d30908401528760448401528960648401528160848401525af1801561482557614809575b5088600d5416908851926370a0823160e01b94858552308786015287858b81875afa9485156147ff5789888d948f948c97958f95859b6147b7575b50906146329291600b54169751998a9889978896635cd3dc1560e01b885233908801528601526044850152606484015260a0608484015260a48301906130c2565b03925af180156147ad57614775575b508388600d54169287895180958193825230888301525afa801561476b578590614736575b6146709250613452565b9586156146f65790606483926009541691600e54928989519889958694638eb22cdd60e01b86528501528301528660448301525afa9384156146eb575081936146ba575b50505091565b9091809350813d83116146e4575b6146d281836132a0565b8101031261390e5750513880806146b4565b503d6146c8565b51913d9150823e3d90fd5b50818460649387519362461bcd60e51b85528401528201527f53474c3a206f6e436f6c6c61746572616c5265636569766572206661696c65646044820152fd5b50908381813d8311614764575b61474d81836132a0565b8101031261476057906146709151614666565b8480fd5b503d614743565b87513d87823e3d90fd5b8481813d83116147a6575b61478a81836132a0565b810103126147a25761479b906137f5565b5038614641565b8580fd5b503d614780565b88513d88823e3d90fd5b96999a50509550959250505081813d83116147f8575b6147d781836132a0565b810103126137d357928989886146328f9897968f968d98519a9091926145f1565b503d6147cd565b8b513d8b823e3d90fd5b61481f90893d8b11610cf657610ce881836132a0565b506145b6565b89513d89823e3d90fd5b935096505091508681813d8311614866575b61484b81836132a0565b8101031261486257519387918a918c9060a4614575565b8780fd5b503d614841565b8a513d8a823e3d90fd5b9190811015610c1c5760051b0190565b919060018060a01b0380600094168452602060178152604085205490811561498a57601881526040862054801561498357816148c1613e50565b9460095416916064600c54604051948593849263442c159960e01b8452600484015260248301528b60448301525afa968715614977578097614941575b505061378161492661491d61493c969798620186a060225404906133fb565b601f54906133fb565b9561401860018060801b039485875116906133fb565b111590565b9096508187813d8311614970575b61495981836132a0565b8101031261390e57509451946137816149266148fe565b503d61494f565b604051903d90823e3d90fd5b5050505050565b5060019450505050565b9081526001600160a01b0391821660208201529116604082015260006060820152608081019190915260a00190565b604051906149d08261324e565b60038252623f3f3f60e81b6020830152565b908151811015610c1c570160200190565b60ff1660ff811461340e5760010190565b805160408110614a7f57508051810190602081818401930312610335576020810151906001600160401b038211610335570181603f82011215610335576020810151614a4f816132c1565b92614a5d60405194856132a0565b8184526040828401011161033557614a7c91604060208501910161309f565b90565b602092908303614b6d576000805b60ff81168581109081614b4e575b5015614aaf57614aaa906149f3565b614a8d565b9260ff80941692614abf846132c1565b93614acd60405195866132a0565b808552614adc601f19916132c1565b013687860137825b85811687811080614b31575b15614b2657614b219190614b1b6001600160f81b0319614b1083886149e2565b5116871a91886149e2565b536149f3565b614ae4565b505094505050905090565b506001600160f81b0319614b4582866149e2565b51161515614af0565b6001600160f81b03199150614b6390866149e2565b5116151538614a9b565b915050614a7c6149c356feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220a21d361870eb52e2e0483533f9e7bcc6e6412b1817a6dc2dc34406bcdcbae53464736f6c63430008120033", + "deployedBytecode": "0x608080604052600436101561001357600080fd5b60e0600035811c918262a02a20146130275750816302ce728f14612ec457816306fdde0314612e0d578163078dfbe714612d09578163095ea7b314612ce35781630c4e84f014612bc957816318160ddd14612ba85781631c9e379b14612b6e5781631da8bf1014612ab757816323b872dd14612913578163313ce56714612883578163331960ff1461286557816334d441d0146128475781633644e5151461282c57816337b6b7b91461280e57816338d52e0f146127e55781633ba0b9a9146127c75781633f741adb146127a357816340626d8b1461278557816344de240a14612767578163473e3ce71461274957816348e4163e1461270f5781634d7f2a34146126f15781634e71e0c814612643578163529898f21461262657816352f353eb146125ff57816355140232146125d857816355c2ab94146125ae57816357935462146125905781635dfe04e8146125315781636c3d8b8f1461250857816370a08231146124ce578163727785471461249857816374645ff31461246d5781637dc0d1d0146124445781637ecebe001461240a5781637fa0b84e146123d9578163821226e8146123bb5781638285ef40146123895781638c5d0ed31461236b5781638da5cb5b14612342578163910dd7c8146120f8578163959916dc146120da57816395d89b411461202057816399a9702814611ff15781639c5d719214611fd35781639e15e89f14611f8e578163a28e6b8214611ac7578163a9059cbb146119e5578163b0e21e8a146119c7578163b27c0e741461198c578163bb4cfe3b1461196e578163ce8849ed14611945578163d3fb2a38146114c8578163d505accf1461134357508063d8dfeb451461131a578063da863f0e146112f1578063dd62ed3e146112a0578063de40657714611277578063e0996cb614611259578063e30c397814611230578063e5644d8b14610457578063ea64dd5614610439578063eec0f42e1461041b578063ef2b234a146103a9578063f42760b71461038b578063f8ba4cff14610370578063f9557ccb1461033a5763ffe04c661461031757600080fd5b34610335576000366003190112610335576020602a54604051908152f35b600080fd5b3461033557600036600319011261033557602554604080516001600160801b038316815260809290921c602083015290f35b0390f35b3461033557600036600319011261033557610389614375565b005b34610335576000366003190112610335576020602b54604051908152f35b34610335576020366003190112610335576004356001600160a01b0381811691829003610335576103df81600554163314613370565b816021549182167ffb4fd7114609dd603b57adbc2082205bfbbcabf9265c4b437b472f5c592b8cd7600080a36001600160a01b03191617602155005b34610335576000366003190112610335576020600c54604051908152f35b34610335576000366003190112610335576020601f54604051908152f35b34610335576080366003190112610335576004356001600160401b03811161033557610487903690600401613340565b906024356001600160401b038111610335576104a7903690600401613340565b6044356001600160401b038111610335576104c6903690600401613340565b90916064356001600160401b038111610335576104e7903690600401613340565b9290916004600052600760205260ff604060002054166111fa5787156111ba576105128189146144c2565b61051d8289146144c2565b6105288285146144c2565b600f546040805163d6d7d52560e01b815260206004820152979188906001600160a01b03168160008161055d602482016131ae565b03925af1968715610c7957600090600098611186575b50878161117c575b501561117257866011555b61058e614375565b60009860005b8181106105de578a156105a357005b60405162461bcd60e51b815260206004820152601360248201527214d1d30e881b9bc81d5cd95c9cc8199bdd5b99606a1b6044820152606490fd5b6105e981838c614877565b356001600160a01b0381168103610335576106048a82614887565b15610619575b5061061490613d7d565b610594565b9a61062390613d7d565b9a61062f828686614877565b359061063c83888c614877565b35906001600160a01b03821682036103355789841015610c1c578360051b890135601e198a360301811215610335578901926001600160401b0384351161033557833536036020850113610335576106948d83613919565b918d1561112d5760018060a01b03600954166020600c5460018060a01b03841660005260188252606460406000205491604051948593849263442c159960e01b845260048401526024830152600060448301525afa908115610c79578f906000926110f7575b5061070b61071092602254906133fb565b613424565b9360018060a01b0382166000526017602052610731856040600020546134d8565b80601d54806110d8575b50808511156110d1575b6001600160a01b03841660009081526017602052604090205490818111156110c8575080965b1115611093578f938181111561108c57505b6001600160a01b038316600090815260176020526040902054908181111561108157506107aa8180613452565b6001600160a01b0384166000908152601760205260409020556107cb613e50565b60208101516001600160801b031661104c5750602081965b606461080961080060018060a01b036009541698600c54946133fb565b60225490613424565b916040519788938492638eb22cdd60e01b845260048401526024830152600060448301525afa938415610c7957600094611018575b506001600160a01b0383166000908152601860205260409020548411610fd35760018060a01b0383166000526018602052604060002061087f858254613452565b90558515610f9f57601454906108c66001600160801b036108a48982168286166144a9565b16926001600160801b0319926001600160801b0316908316841760801c6144a9565b60801b161760145560018060a01b0360095416956020600e546064604051809a8193638eb22cdd60e01b835260048301528a6024830152600160448301525afa968715610c7957600097610f67575b5086916109f76109fe926015805488808211600014610f5d5761093791613452565b905b5560018060a01b0386166000526026806020526040600020602890815490816000526020526040600020548a11600014610f28575060018060a01b0388166000528160205260406000209054600052602052600060408120555b60018060a01b03871660005280602052604060002090602791825490816000526020526040600020548811600014610ef4575060018060a01b03881660005260205260406000209054600052602052600060408120555b36906020813591016132dc565b908561451a565b5010610eaf57600954600e54604051627eeac760e11b815230600482015260248101919091526001600160a01b039091169390602081604481885afa8015610c7957600090610e7b575b602554610a5f92506001600160801b031690613452565b9580871115610e6b57610a81610a79620186a09289613452565b925b836133fb565b0495610a8d8783613452565b9485610cfd575b5086610c85575b610ab587610ab08760018060801b0394613452565b613452565b602554916001600160801b0391610acf9116828416613e9c565b6001600160801b0319909216911617602555600d5460095460405163095ea7b360e01b81526001600160a01b039182166004820152600060248201819052909260209284926044928492165af18015610c795787918691610c32575b50610ab090610b3993613452565b6040516000815230907f30a8c4f9ab5af7e1309ca87c32377d1a83366c5990472dbf9d262450eae14e3860203092a460405190610b758261324e565b6001825260203681840137815115610c1c576001600160a01b03166020820190815260405191518291906000905b808210610bfa575050508190039020604080519384526020840194909452928201526106149392919033907f85b91d472e69b2cfe848ed50eb5d8582ae96c22057b6e46250255dd6f6c3519290606090a49061060a565b82516001600160a01b0316845260209384019390920191600190910190610ba3565b634e487b7160e01b600052603260045260246000fd5b9150506020813d602011610c71575b81610c4e602093836132a0565b8101031261033557610ab085610b3993610c688a946137f5565b50935090610b2b565b3d9150610c41565b6040513d6000823e3d90fd5b610cba60408860018060a01b0360095416600e5460008451809681958294634d4d7cbd60e11b84523390309060048601614994565b03925af18015610c7957610ccf575b50610a9b565b610cf09060403d604011610cf6575b610ce881836132a0565b810190614504565b50610cc9565b503d610cde565b600d5460405163095ea7b360e01b8152600481019290925260006024830181905260209183916044918391906001600160a01b03165af18015610c7957610e32575b50600d5460095460405163095ea7b360e01b81526001600160a01b03918216600482015260001960248201529160209183916044918391600091165af18015610c7957610df9575b50600954600e54600a5460408051634d4d7cbd60e11b815293909284926001600160a01b039283169284926000928492610dcc928f9290911690309060048601614994565b03925af18015610c795715610a9457610df39060403d604011610cf657610ce881836132a0565b50610a94565b6020813d602011610e2a575b81610e12602093836132a0565b8101031261033557610e23906137f5565b5038610d87565b3d9150610e05565b6020813d602011610e63575b81610e4b602093836132a0565b8101031261033557610e5c906137f5565b5038610d3f565b3d9150610e3e565b50620186a0610a81600092610a7b565b506020813d602011610ea7575b81610e95602093836132a0565b8101031261033557610a5f9051610a48565b3d9150610e88565b60405162461bcd60e51b815260206004820152601b60248201527f53474c3a20617373657420616d6f756e74206e6f742076616c696400000000006044820152606490fd5b915060018060a01b0388166000526020526040600020906000526020526040600020610f21868254613452565b90556109ea565b905060018060a01b038816600052816020526040600020906000526020526040600020610f56898254613452565b9055610993565b5050600090610939565b909196506020813d602011610f97575b81610f84602093836132a0565b81010312610335575195906109fe610915565b3d9150610f77565b60405162461bcd60e51b815260206004820152600c60248201526b14d1d30e881cdbdb1d995b9d60a21b6044820152606490fd5b60405162461bcd60e51b815260206004820152601a60248201527f53474c3a206e6f7420656e6f75676820636f6c6c61746572616c0000000000006044820152606490fd5b9093506020813d602011611044575b81611034602093836132a0565b810103126103355751923861083e565b3d9150611027565b805160209161107b91611068906001600160801b0316856133fb565b908301516001600160801b031690613424565b966107e3565b6107aa908092613452565b905061077d565b60405162461bcd60e51b815260206004820152600d60248201526c14d1d30e88189859081919589d609a1b6044820152606490fd5b9050809661076b565b5083610745565b90620186a06110ea6110f193836133fb565b049061345f565b3861073b565b9150506020813d602011611125575b81611113602093836132a0565b8101031261033557518e61070b6106fa565b3d9150611106565b60405162461bcd60e51b815260206004820152601b60248201527f53474c3a2065786368616e676552617465206e6f742076616c696400000000006044820152606490fd5b6011549650610586565b905015158a61057b565b90506111ab91975060403d6040116111b3575b6111a381836132a0565b810190613802565b96908a610573565b503d611199565b60405162461bcd60e51b815260206004820152601860248201527742423a206e6f7468696e6720746f206c697175696461746560401b6044820152606490fd5b60405162461bcd60e51b815260206004820152600e60248201526d13585c9ad95d0e881c185d5cd95960921b6044820152606490fd5b34610335576000366003190112610335576006546040516001600160a01b039091168152602090f35b34610335576000366003190112610335576020601d54604051908152f35b34610335576000366003190112610335576009546040516001600160a01b039091168152602090f35b34610335576040366003190112610335576112b9613073565b6112c1613089565b9060018060a01b038091166000526002602052604060002091166000526020526020604060002054604051908152f35b34610335576000366003190112610335576021546040516001600160a01b039091168152602090f35b3461033557600036600319011261033557600b546040516001600160a01b039091168152602090f35b3461033557611351366130f6565b839496979392919242116114835761142f926114279260018060a01b0395868b169788600052600460205260406000209182549261138e84613d7d565b90556040519160208301937f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e2668552600060408501528b60608501528a8d1660808501528d60a085015260c08401528183015281526113eb81613269565b5190206113f6613a23565b9060405190602082019261190160f01b8452602283015260428201526042815261141f81613285565b519020613cf8565b919091613bf9565b160361143e5761038992613dda565b60405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152606490fd5b60405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b3461033557610160366003190112610335576001600160a01b0360043581811690819003610335576001600160401b039160243583811161033557611511903690600401613313565b9093604435938385168095036103355761153084600554163314613370565b80611906575b5081611781575b505090809250611740575b505060643580611728575b5060843580611710575b5060a435806116f9575b5060c435806116d5575b5060e435806116b1575b50610104358061167f575b50610124358061160b575b50610144358061159d57005b601e5481106115ab57601f55005b60405162461bcd60e51b815260206004820152603260248201527f4d61726b65743a206c69717569646174696f6e436f6c6c61746572616c697a616044820152711d1a5bdb94985d19481d1bdbc81cdb585b1b60721b6064820152608490fd5b61161a620186a08211156133bb565b601f54811161162c57601e5580611591565b60405162461bcd60e51b815260206004820152602560248201527f4d61726b65743a20636f6c6c61746572616c697a6174696f6e5261746520746f6044820152646f2062696760d81b6064820152608490fd5b806016547fae6e0ab3b95f0a53ff9660a390ccedcbbf1f2355dce974a9841af106fddcfaba600080a360165580611586565b6116bf620186a082106133bb565b6116cc601b5482116133bb565b601c558061157b565b6116e3620186a082106133bb565b6116f0601c5482106133bb565b601b5580611571565b611707620186a082106133bb565b601d5580611567565b61171f620186a08211156133bb565b601a558061155d565b611737620186a08211156133bb565b60195580611553565b816008549182167f5a62d22209e370e38eea92cfddcd228e656e6ec139243392a760a7769f5877fd600080a36001600160a01b031916176008558080611548565b81116118f057611792601054613174565b601f811161188d575b506000601f821160011461180457819293946000926117f9575b50508160011b916000199060031b1c1916176010555b7fa6f004921c944d4b8bf6e38462b00f36a58d62495d56b51f571ab78f732c9815600080a18190838061153d565b0135905084806117b5565b60106000908152601f198316957f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae67292909160205b8882106118755750508360019596971061185b575b505050811b016010556117cb565b0135600019600384901b60f8161c1916905584808061184d565b80600184968294958701358155019501920190611838565b60106000527f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae672601f830160051c8101602084106118e9575b601f90920160051c01905b8181106118dd575061179b565b600081556001016118d0565b50806118c5565b634e487b7160e01b600052604160045260246000fd5b600f80546001600160a01b0319169190911790557f0b2d6eb667d0522c3eb86e4288afecae6c11591ffd1345d4d12407e0598bca9b600080a185611536565b34610335576000366003190112610335576008546040516001600160a01b039091168152602090f35b34610335576000366003190112610335576020601e54604051908152f35b34610335576000366003190112610335576060602454604051906001600160401b0380821683528160401c16602083015260801c6040820152f35b34610335576000366003190112610335576020601a54604051908152f35b34610335576040366003190112610335576119fe613073565b602435908115801590611ab5575b611a42575b6040519182526001600160a01b0316903390600080516020614b7983398151915290602090a3602060405160018152f35b336000526001602052604060002054611a5d83821015613b4d565b6001600160a01b038216908333839003611a7a575b505050611a11565b611a8991610ab0841515613b92565b3360005260016020526040600020556000526040600020611aab83825461345f565b9055828083611a72565b50336001600160a01b03821614611a0c565b3461033557608036600319011261033557611ae0613073565b611ae8613089565b60443591906001600160a01b0390818416840361033557606435936001600160401b03851161033557611b22611b61953690600401613313565b9190611b3385600554163314613370565b84600f54169560405163d6d7d52560e01b81526040816020998a60048301528160008160249e8f82016131ae565b03925af1908115610c7957600090600092611f6c575b508181611f62575b5015611f5957806011555b15611f0a578590611b99614375565b16928360005260178752611bbb604060002054620186a06110ea8a54836133fb565b87896064896009541693611bd8610800600c5492601154906133fb565b946040519586948593638eb22cdd60e01b85526004850152830152600060448301525afa908115610c7957600091611edd575b50846000526018885260406000205411611e9957611db8611d6d856000989695611d678a999796611daa9660268e8d9a8b526018815260408b205496611d06611c52613e50565b828e5260178452611ce1611cb88f604090205492600087604051611c758161324e565b82815201528681019360018060801b03928382818094868a8381511615600014611e4c57505081611cab915b16828851166144a9565b16855216828751166144a9565b169384905251601480546001600160801b0319166001600160801b039390921692909216179055565b601480546001600160801b031660809290921b6001600160801b031916919091179055565b808c52601782528b604081205582825260408c206027548d5282528b6040812055808c5260188252611d3e60408d2054601554613452565b6015558b52601881528a6040812055528d60408a20906028548b525288604081205536916132dc565b9161451a565b600d546040805163a9059cbb60e01b8d82019081526001600160a01b039099168e8201908152602081019490945291909816979094859350910190565b03601f1981018352826132a0565b51925af1611dc4614479565b81611e14575b5015611dd257005b601c6064926040519262461bcd60e51b845260048401528201527f426f72696e6745524332303a205472616e73666572206661696c6564000000006044820152fd5b80915051828115918215611e2d575b5050905083611dca565b83809293500103126103355781611e4491016137f5565b808285611e23565b611cab92611e85611e7b86611e72611e688280985116866133fb565b8287511690613424565b945116846133fb565b848c511690613424565b1015611ca157611e9490613d7d565b611ca1565b60405162461bcd60e51b815260048101889052601b818a01527f42423a2043616e6e6f7420666f726365206c69717569646174656400000000006044820152606490fd5b90508781813d8311611f03575b611ef481836132a0565b81010312610335575189611c0b565b503d611eea565b60405162461bcd60e51b8152600481018890526022818a01527f42423a2063757272656e742065786368616e676552617465206e6f742076616c6044820152611a5960f21b6064820152608490fd5b50601154611b8a565b905015158a611b7f565b9050611f87915060403d6040116111b3576111a381836132a0565b908a611b77565b346103355760403660031901126103355761036c611fb6611fad613073565b6024359061369b565b604080519384526020840192909252908201529081906060820190565b34610335576000366003190112610335576020602c54604051908152f35b3461033557604036600319011261033557602061201861200f613073565b60243590613919565b604051908152f35b346103355760003660031901126103355760008060018060a01b03600b541660405160208101906395d89b4160e01b82526004815261205e8161324e565b51915afa61206a614479565b90156120c95761207c61036c91614a04565b6120b56023604051809362746d2d60e81b60208301526120a5815180926020868601910161309f565b81010360038101845201826132a0565b6040519182916020835260208301906130c2565b5061036c6120d56149c3565b61207c565b34610335576000366003190112610335576020603054604051908152f35b34610335576040366003190112610335576004356001600160401b0381116103355736602382011215610335576121399036906024816004013591016132dc565b9060243561ffff8116809103610335576101009182848051810103126103355760206121668186016137f5565b9161217360408701613bd7565b9061218060608801613bd7565b9660808101519660a08201519261219960c08401613beb565b91818401519301519360018060a01b03808097169b16988142116122fd579289888d9897946122749794611427978f8e6000146122d6577f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e266955b8d6000526004865260406000209283549361220d85613d7d565b905560405196870197885260408701528d6060870152608086015260a085015260c084015281830152815261224181613269565b51902061224c613a23565b90604051908a82019261190160f01b8452602283015260428201526042815261141f81613285565b16036122925750156122895761038992613dda565b61038992613d8c565b6064906040519062461bcd60e51b82526004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152fd5b7f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d6956121f3565b60405162461bcd60e51b815260048101899052601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b34610335576000366003190112610335576005546040516001600160a01b039091168152602090f35b34610335576000366003190112610335576020601b54604051908152f35b3461033557600036600319011261033557601454604080516001600160801b038316815260809290921c602083015290f35b34610335576000366003190112610335576020602e54604051908152f35b34610335576040366003190112610335576123ff6123f5613073565b6024359033613d8c565b602060405160018152f35b34610335576020366003190112610335576001600160a01b0361242b613073565b1660005260046020526020604060002054604051908152f35b3461033557600036600319011261033557600f546040516001600160a01b039091168152602090f35b346103355760003660031901126103355761036c6040516120b581612491816131ae565b03826132a0565b346103355760203660031901126103355760043560098110156103355760ff6124c2602092613145565b54166040519015158152f35b34610335576020366003190112610335576001600160a01b036124ef613073565b1660005260016020526020604060002054604051908152f35b3461033557600036600319011261033557600a546040516001600160a01b039091168152602090f35b346103355760003660031901126103355761254a613e31565b506080612555613eb5565b509350505050604051916001600160401b0380825116845260208201511660208401526040600180861b039101511660408301526060820152f35b34610335576000366003190112610335576020601c54604051908152f35b346103355760003660031901126103355760206001600160401b03602d5460401c16604051908152f35b346103355760003660031901126103355760206001600160401b03602d5416604051908152f35b346103355760003660031901126103355760206001600160401b03602f5416604051908152f35b346103355760003660031901126103355760208054604051908152f35b34610335576000366003190112610335576006546001600160a01b0390818116338190036126ad57806005549384167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a36001600160a01b03199283161760055516600655005b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b34610335576000366003190112610335576020602954604051908152f35b34610335576020366003190112610335576001600160a01b03612730613073565b1660005260176020526020604060002054604051908152f35b34610335576000366003190112610335576020601554604051908152f35b34610335576000366003190112610335576020600e54604051908152f35b34610335576000366003190112610335576020601654604051908152f35b346103355760603660031901126103355760206120186044356024356004356135d4565b34610335576000366003190112610335576020601154604051908152f35b3461033557600036600319011261033557600d546040516001600160a01b039091168152602090f35b34610335576000366003190112610335576020601254604051908152f35b34610335576000366003190112610335576020612018613a23565b34610335576000366003190112610335576020601954604051908152f35b34610335576000366003190112610335576020601354604051908152f35b346103355760003660031901126103355760008060018060a01b03600d5416604051602081019063313ce56760e01b8252600481526128c18161324e565b51915afa6128cd614479565b9080612908575b156128fe57602081805181010312610335576128f36020809201613beb565b60ff60405191168152f35b50602060126128f3565b5060208151146128d4565b346103355760603660031901126103355761292c613073565b612934613089565b6044359081612971575b6040519182526001600160a01b03908116921690600080516020614b7983398151915290602090a3602060405160018152f35b60018060a01b0380841680600052602060018152846040600020549361299982861015613b4d565b8516938484036129ae575b505050505061293e565b836000526002835260406000203360005283526040600020546000198103612a22575b5084926129f9600080516020614b79833981519152979593600193610ab06020991515613b92565b92600052526040600020556000526040600020612a1785825461345f565b9055918584816129a4565b90918110612a7757602094926129f988600080516020614b79833981519152989694612a5082600196613452565b866000526002855260406000203360005285526040600020559350939597505092946129d1565b60405162461bcd60e51b815260048101849052601860248201527745524332303a20616c6c6f77616e636520746f6f206c6f7760401b6044820152606490fd5b3461033557612ac5366130f6565b8394969793929192421161148357612b5f926114279260018060a01b0395868b1697886000526004602052604060002091825492612b0284613d7d565b90556040519160208301937f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d68552600060408501528b60608501528a8d1660808501528d60a085015260c08401528183015281526113eb81613269565b160361143e5761038992613d8c565b34610335576020366003190112610335576001600160a01b03612b8f613073565b1660005260186020526020604060002054604051908152f35b3461033557600036600319011261033557602060255460801c604051908152f35b3461033557604036600319011261033557600435600981101561033557612bee6130e7565b6008549091906001600160a01b03163303612ca75760ff612c0e82613145565b54161515911515918214612c6d57808260ff612c2c612c5b94613145565b54161515827feeec81de25875ce1725479bb76f720a8defdb43dea041919ae37bb4aae9847c0600080a4613145565b9060ff80198354169116179055600080f35b60405162461bcd60e51b81526020600482015260126024820152714d61726b65743a2073616d6520737461746560701b6044820152606490fd5b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881d5b985d5d1a1bdc9a5e995960621b6044820152606490fd5b34610335576040366003190112610335576123ff612cff613073565b6024359033613dda565b3461033557606036600319011261033557612d22613073565b612d2a6130e7565b6044359081151582036103355760018060a01b03928391612d5083600554163314613370565b15612df4571690811590811591612dec575b5015612daf57806005549283167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a36001600160a01b031991821617600555600680549091169055005b60405162461bcd60e51b81526020600482015260156024820152744f776e61626c653a207a65726f206164647265737360581b6044820152606490fd5b905083612d62565b9150501660018060a01b03196006541617600655600080f35b346103355760003660031901126103355760008060018060a01b03600b541660405160208101906306fdde0360e01b825260048152612e4b8161324e565b51915afa612e57614479565b9015612eb357612e6961036c91614a04565b6120b56034604051809373546170696f63612053696e67756c61726974792d60601b6020830152612ea3815180926020868601910161309f565b81010360148101845201826132a0565b5061036c612ebf6149c3565b612e69565b3461033557600036600319011261033557600f546040805163d6d7d52560e01b8152602060048201529182906001600160a01b031681600081612f09602482016131ae565b03925af18015610c7957600091600091613006575b50908015612fa8578115612f6c5781604092601155807f9f9192b5edb17356c524e08d9e025c8e2f6307e6ea52fb7968faa3081f51c3c8600080a25b42601355825191151582526020820152f35b60405162461bcd60e51b81526020600482015260146024820152734d61726b65743a20696e76616c6964207261746560601b6044820152606490fd5b9050612fb96013546012549061345f565b4211612fca57604090601154612f5a565b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881c985d19481d1bdbc81bdb1960621b6044820152606490fd5b9050613021915060403d6040116111b3576111a381836132a0565b82612f1e565b3461033557604036600319011261033557602090613043613073565b61304b613089565b9060018060a01b03809116600052600384526040600020911660005282526040600020548152f35b600435906001600160a01b038216820361033557565b602435906001600160a01b038216820361033557565b60005b8381106130b25750506000910152565b81810151838201526020016130a2565b906020916130db8151809281855285808601910161309f565b601f01601f1916010190565b60243590811515820361033557565b60e0906003190112610335576001600160a01b03906004358281168103610335579160243590811681036103355790604435906064359060843560ff81168103610335579060a4359060c43590565b600981101561315e576000526007602052604060002090565b634e487b7160e01b600052602160045260246000fd5b90600182811c921680156131a4575b602083101461318e57565b634e487b7160e01b600052602260045260246000fd5b91607f1691613183565b601054600092916131be82613174565b90818152600192838116908160001461321857506001146131de57505050565b9092935060106000526020928360002092846000945b8386106132045750505050010190565b8054858701830152940193859082016131f4565b91935050602093945060ff191683830152151560051b010190565b606081019081106001600160401b038211176118f057604052565b604081019081106001600160401b038211176118f057604052565b61010081019081106001600160401b038211176118f057604052565b608081019081106001600160401b038211176118f057604052565b90601f801991011681019081106001600160401b038211176118f057604052565b6001600160401b0381116118f057601f01601f191660200190565b9291926132e8826132c1565b916132f660405193846132a0565b829481845281830111610335578281602093846000960137010152565b9181601f84011215610335578235916001600160401b038311610335576020838186019501011161033557565b9181601f84011215610335578235916001600160401b038311610335576020808501948460051b01011161033557565b1561337757565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b156133c257565b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881b9bdd081d985b1a59607a1b6044820152606490fd5b8181029291811591840414171561340e57565b634e487b7160e01b600052601160045260246000fd5b811561342e570490565b634e487b7160e01b600052601260045260246000fd5b604d811161340e57600a0a90565b9190820391821161340e57565b9190820180921161340e57565b8181039291600013801582851316918412161761340e57565b906509184e72a0009182810292818405149015171561340e57565b90670de0b6b3a76400009182810292818405149015171561340e57565b811561342e57600160ff1b811460001983141661340e570590565b6014546135139161350291906134f8906001600160801b038316906133fb565b9060801c90613424565b91620186a0918291601f54906133fb565b048083106135cc576135259083613452565b601e5460205483019081841161340e578391613540916133fb565b04918281039060008094128183128116918313901516176135b8579061357161356b61357693613485565b916134a0565b6134bd565b90808212156135b157600160ff1b821461359d5703905b808211613598575090565b905090565b634e487b7160e01b81526011600452602490fd5b509061358d565b634e487b7160e01b83526011600452602483fd5b505050600090565b60145491929161361391613604916135fa916134f8906001600160801b038316906133fb565b93601f54906133fb565b61360d83613444565b90613424565b908183106135cc5761357161356b61366d6136316136729587613452565b93613668613662613659601e5461365361364a86613444565b6020549061345f565b906133fb565b61360d84613444565b91613444565b61346c565b613485565b600081121561369557600160ff1b811461340e5760000390808211613598575090565b9061358d565b9160018060a01b0380931691600093838552602060178152604091828720549081156137e857878385516136ce8161324e565b82815201526136db613eb5565b50505050509190506136ee86151561381f565b6009541683600c54898b52601882526064878c2054918851948593849263442c159960e01b8452600484015260248301528d60448301525afa9081156137de5789916137ab575b509161378b61379f97989994926137668861070b61375d601898620186a060225404906133fb565b601e54906133fb565b815190936001600160801b03918691613781918416906133fb565b9201511690613424565b8181106137a357035b97835252205461386b565b9091565b505082613794565b90508381813d83116137d7575b6137c281836132a0565b810103126137d3575161378b613735565b8880fd5b503d6137b8565b85513d8b823e3d90fd5b5086955085949350505050565b5190811515820361033557565b9190826040910312610335576020613819836137f5565b92015190565b1561382657565b60405162461bcd60e51b815260206004820152601e60248201527f4d61726b65743a2065786368616e676552617465206e6f742076616c696400006044820152606490fd5b61387682151561381f565b602060018060a01b0360095416916064600c54604051948593849263442c159960e01b845260048401526024830152600060448301525afa908115610c79576000916138e3575b509061070b6138cf92602254906133fb565b620186a06138df601e54836133fb565b0491565b906020823d8211613911575b816138fc602093836132a0565b8101031261390e57505161070b6138bd565b80fd5b3d91506138ef565b6001600160a01b0316600081815260186020526040812054909261393c9161386b565b918352601760205260408320548015613a1d578115613a1d57818110613a1d5782811015613a1357601454613985918391610ab0916134f8906001600160801b038316906133fb565b90620186a092838302928084048514901517156139ff576139aa929161360d91613452565b91601b5491601c54936139bd858561346c565b80820291848212600160ff1b8214166139ff5781830514901517156135b8570581848201948512911290801582169115161761359d5750808212613598575090565b634e487b7160e01b85526011600452602485fd5b50505050601b5490565b50505090565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03161480613b24575b15613a7e577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f000000000000000000000000000000000000000000000000000000000000000082527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a0815260c081018181106001600160401b038211176118f05760405251902090565b507f00000000000000000000000000000000000000000000000000000000000000004614613a55565b15613b5457565b60405162461bcd60e51b815260206004820152601660248201527545524332303a2062616c616e636520746f6f206c6f7760501b6044820152606490fd5b15613b9957565b60405162461bcd60e51b815260206004820152601660248201527545524332303a206e6f207a65726f206164647265737360501b6044820152606490fd5b51906001600160a01b038216820361033557565b519060ff8216820361033557565b600581101561315e5780613c0a5750565b60018103613c525760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b6044820152606490fd5b60028103613c9f5760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606490fd5b600314613ca857565b60405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608490fd5b9291906fa2a8918ca85bafe22016d0b997e4df60600160ff1b038311613d715791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa15613d645781516001600160a01b03811615613d5e579190565b50600190565b50604051903d90823e3d90fd5b50505050600090600390565b600019811461340e5760010190565b7fe50de2333c10a9502fcb1d8ae13a51bbf423153dfc63c2b8997665b32154afc360018060a01b038092169160009083825260036020526040822094169384825260205284604082205580a4565b909160207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259160018060a01b03809416938460005260028352604060002095169485600052825280604060002055604051908152a3565b60405190613e3e82613233565b60006040838281528260208201520152565b60405190613e5d8261324e565b6014546001600160801b038116835260801c6020830152565b60405190613e838261324e565b6025546001600160801b038116835260801c6020830152565b6001600160801b03918216908216019190821161340e57565b613ebd613e31565b5060006020604051613ece8161324e565b828152015260006020604051613ee38161324e565b828152015260405190613ef582613233565b602454916001600160401b038316815260208101926001600160401b038160401c16845260801c60408201528092613f2b613e50565b92613f34613e76565b92600060018060a01b0360095416600e549460018060801b038751166040519063442c159960e01b8252876004830152602482015260006044820152602081606481865afa8015610c7957600090614341575b8951613f9d92506001600160801b03169061345f565b8061430c575060005b613fbb6001600160401b038293511642613452565b9485156142e2575050426001600160401b031660208a8101919091528801516001600160801b03161561429857506020670de0b6b3a764000061401d856140188c6001600160401b038d60018060801b03905116915116906133fb565b6133fb565b895191900496906001600160801b039061403c90828a16908316613e9c565b168952875160405163442c159960e01b815260048101929092526001600160801b031660248201526000604482015291829060649082905afa8015610c7957600090614264575b875161409992506001600160801b03169061345f565b926140c78461070b620186a06140b1601a548a6133fb565b60208c01516001600160801b03169190046133fb565b6040890180519195916001600160801b0380881692916140ea9084908316613e9c565b16905260208801805190916001600160801b039161410a91908316613e9c565b1690528061422f575060005b602a54909384828110156141aa5761412e9083613452565b90670de0b6b3a7640000820291808304670de0b6b3a7640000149015171561340e5761070b61418261417c61416e6001600160401b039661418c96613424565b93614018602e5495806133fb565b8361345f565b91848d51166133fb565b168089526001600160401b03602d54168091106141a65750565b8852565b909150602b548082116141bc57505050565b6141c591613452565b670de0b6b3a7640000810290808204670de0b6b3a7640000149015171561340e576001600160401b039161070b61420861417c61416e61421195602c5490613424565b848d51166133fb565b81602d5460401c16808211614227575b50168852565b905038614221565b87516001600160801b0316670de0b6b3a764000081810292918084049091149015171561340e5761425f91613424565b614116565b506020813d602011614290575b8161427e602093836132a0565b81010312610335576140999051614083565b3d9150614271565b9697939450509350506001600160401b038151166001600160401b03602f54168091036142d6575b5093926142cb613e76565b926000926000929190565b815260019250386142c0565b9750985050505050925050916142f6613e50565b916142ff613e76565b9160009160009190600090565b88516001600160801b0316670de0b6b3a764000081810292918084049091149015171561340e5761433c91613424565b613fa6565b506020813d60201161436d575b8161435b602093836132a0565b8101031261033557613f9d9051613f87565b3d915061434e565b6144306040602080614385613eb5565b9399959390929015614440575050506001600160401b03602f54166000807f33af5ce86e8438eff54589f85332916444457dfa8685493fbd579b809097026b878a51838152a45b80518482015196909101516001600160801b0319608091821b81166001600160401b0390931667ffffffffffffffff60401b60409990991b9890981697909717919091176024558151919093015190921b84166001600160801b0392831617601455565b83511692015160801b1617602555565b7f33af5ce86e8438eff54589f85332916444457dfa8685493fbd579b809097026b876001600160401b03865116948b51908152a46143cc565b3d156144a4573d9061448a826132c1565b9161449860405193846132a0565b82523d6000602084013e565b606090565b6001600160801b03918216908216039190821161340e57565b156144c957565b60405162461bcd60e51b8152602060048201526013602482015272084847440d8cadccee8d040dad2e6dac2e8c6d606b1b6044820152606490fd5b9190826040910312610335576020825192015190565b91909160018060a01b0392836009541690600c5460409485519063442c159960e01b82526004928084840152602496878401526000958660448501526020958685606481855afa94851561486d57918b8b928a94859861482f575b509060a4911694835194859384926311a5cc7760e31b84528b8401528d30908401528760448401528960648401528160848401525af1801561482557614809575b5088600d5416908851926370a0823160e01b94858552308786015287858b81875afa9485156147ff5789888d948f948c97958f95859b6147b7575b50906146329291600b54169751998a9889978896635cd3dc1560e01b885233908801528601526044850152606484015260a0608484015260a48301906130c2565b03925af180156147ad57614775575b508388600d54169287895180958193825230888301525afa801561476b578590614736575b6146709250613452565b9586156146f65790606483926009541691600e54928989519889958694638eb22cdd60e01b86528501528301528660448301525afa9384156146eb575081936146ba575b50505091565b9091809350813d83116146e4575b6146d281836132a0565b8101031261390e5750513880806146b4565b503d6146c8565b51913d9150823e3d90fd5b50818460649387519362461bcd60e51b85528401528201527f53474c3a206f6e436f6c6c61746572616c5265636569766572206661696c65646044820152fd5b50908381813d8311614764575b61474d81836132a0565b8101031261476057906146709151614666565b8480fd5b503d614743565b87513d87823e3d90fd5b8481813d83116147a6575b61478a81836132a0565b810103126147a25761479b906137f5565b5038614641565b8580fd5b503d614780565b88513d88823e3d90fd5b96999a50509550959250505081813d83116147f8575b6147d781836132a0565b810103126137d357928989886146328f9897968f968d98519a9091926145f1565b503d6147cd565b8b513d8b823e3d90fd5b61481f90893d8b11610cf657610ce881836132a0565b506145b6565b89513d89823e3d90fd5b935096505091508681813d8311614866575b61484b81836132a0565b8101031261486257519387918a918c9060a4614575565b8780fd5b503d614841565b8a513d8a823e3d90fd5b9190811015610c1c5760051b0190565b919060018060a01b0380600094168452602060178152604085205490811561498a57601881526040862054801561498357816148c1613e50565b9460095416916064600c54604051948593849263442c159960e01b8452600484015260248301528b60448301525afa968715614977578097614941575b505061378161492661491d61493c969798620186a060225404906133fb565b601f54906133fb565b9561401860018060801b039485875116906133fb565b111590565b9096508187813d8311614970575b61495981836132a0565b8101031261390e57509451946137816149266148fe565b503d61494f565b604051903d90823e3d90fd5b5050505050565b5060019450505050565b9081526001600160a01b0391821660208201529116604082015260006060820152608081019190915260a00190565b604051906149d08261324e565b60038252623f3f3f60e81b6020830152565b908151811015610c1c570160200190565b60ff1660ff811461340e5760010190565b805160408110614a7f57508051810190602081818401930312610335576020810151906001600160401b038211610335570181603f82011215610335576020810151614a4f816132c1565b92614a5d60405194856132a0565b8184526040828401011161033557614a7c91604060208501910161309f565b90565b602092908303614b6d576000805b60ff81168581109081614b4e575b5015614aaf57614aaa906149f3565b614a8d565b9260ff80941692614abf846132c1565b93614acd60405195866132a0565b808552614adc601f19916132c1565b013687860137825b85811687811080614b31575b15614b2657614b219190614b1b6001600160f81b0319614b1083886149e2565b5116871a91886149e2565b536149f3565b614ae4565b505094505050905090565b506001600160f81b0319614b4582866149e2565b51161515614af0565b6001600160f81b03199150614b6390866149e2565b5116151538614a9b565b915050614a7c6149c356feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220a21d361870eb52e2e0483533f9e7bcc6e6412b1817a6dc2dc34406bcdcbae53464736f6c63430008120033", "linkReferences": {}, "deployedLinkReferences": {} } diff --git a/src/artifacts/tapioca-bar/SGLStorage.json b/src/artifacts/tapioca-bar/SGLStorage.json index 6836cd4e..b1125f84 100644 --- a/src/artifacts/tapioca-bar/SGLStorage.json +++ b/src/artifacts/tapioca-bar/SGLStorage.json @@ -128,6 +128,25 @@ "name": "InterestElasticityUpdated", "type": "event" }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "oldVal", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newVal", + "type": "address" + } + ], + "name": "LeverageExecutorSet", + "type": "event" + }, { "anonymous": false, "inputs": [ @@ -1099,6 +1118,19 @@ "stateMutability": "view", "type": "function" }, + { + "inputs": [], + "name": "leverageExecutor", + "outputs": [ + { + "internalType": "contract ILeverageExecutor", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, { "inputs": [], "name": "liquidationBonusAmount", @@ -1488,6 +1520,19 @@ "stateMutability": "view", "type": "function" }, + { + "inputs": [ + { + "internalType": "contract ILeverageExecutor", + "name": "_executor", + "type": "address" + } + ], + "name": "setLeverageExecutor", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, { "inputs": [ { @@ -1816,8 +1861,8 @@ "type": "function" } ], - "bytecode": "0x6101408060405234620001e5576200001781620001ea565b601381526001602082017f546170696f63612053696e67756c617269747900000000000000000000000000815260206040516200005481620001ea565b8381520192603160f81b845251902091208160e052610100918183524660a0526040519160208301907f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f92838352604085015260608401524660808401523060a084015260a0835260c083019280841060018060401b03851117620001cf5760408490525190206080523060c052610120908152600580546001600160a01b0319163390811790915560007f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a362013880601b5562015f90601c55612710601d55612ee06020557f0bd4060688a1800ae986e4840aebc924bb40b5bf44de4583df2257220b54b77c6026557f7d1dc38e60930664f8cbf495da6556ca091d2f92d6550877750c049864b182306027556161a86028556032602f55612b3292836200020784396080518361251b015260a051836125e6015260c051836124e5015260e0518361256a01525182612590015251816125470152f35b634e487b7160e01b600052604160045260246000fd5b600080fd5b604081019081106001600160401b03821117620001cf5760405256fe608080604052600436101561001357600080fd5b600090813560e01c908162a02a2014611c505750806302ce728f14611ac857806306fdde0314611a11578063078dfbe71461190e578063095ea7b3146118e75780630c4e84f0146117cf57806318160ddd146117ae5780631c9e379b146117755780631da8bf10146116b557806323b872dd14611518578063313ce56714611486578063331960ff1461146857806334d441d01461144a5780633644e5151461142f57806337b6b7b91461141157806338d52e0f146113e85780633ba0b9a9146113ca5780633f741adb146113a557806340626d8b1461138757806344de240a14611369578063473e3ce71461134b57806348e4163e146113125780634d7f2a34146112f45780634e71e0c814611246578063529898f21461122957806352f353eb1461120257806355140232146111db57806355c2ab94146111b157806357935462146111935780636c3d8b8f1461116a57806370a082311461113157806372778547146110f957806374645ff3146110ce5780637dc0d1d0146110a55780637ecebe001461106c5780637fa0b84e1461103a578063821226e81461101c5780638285ef4014610fea5780638c5d0ed314610fcc5780638da5cb5b14610fa3578063910dd7c814610d8a578063959916dc14610d6c57806395d89b4114610cb257806399a9702814610c825780639c5d719214610c645780639e15e89f14610c29578063a9059cbb14610b46578063b0e21e8a14610b28578063b27c0e7414610aed578063bb4cfe3b14610acf578063ce8849ed14610aa6578063d3fb2a381461060e578063d505accf14610469578063d8dfeb4514610440578063dd62ed3e146103f5578063de406577146103cc578063e0996cb6146103ae578063e30c397814610385578063ea64dd5614610367578063eec0f42e14610349578063f42760b71461032b578063f9557ccb146102f55763ffe04c66146102d557600080fd5b346102f257806003193601126102f2576020602954604051908152f35b80fd5b50346102f257806003193601126102f257602454604080516001600160801b038316815260809290921c602083015290f35b0390f35b50346102f257806003193601126102f2576020602a54604051908152f35b50346102f257806003193601126102f2576020600c54604051908152f35b50346102f257806003193601126102f2576020601f54604051908152f35b50346102f257806003193601126102f2576006546040516001600160a01b039091168152602090f35b50346102f257806003193601126102f2576020601d54604051908152f35b50346102f257806003193601126102f2576009546040516001600160a01b039091168152602090f35b50346102f25760403660031901126102f2576040602091610414611c98565b61041c611cb3565b6001600160a01b039182168352600285528383209116825283522054604051908152f35b50346102f257806003193601126102f257600b546040516001600160a01b039091168152602090f35b50346102f25761047836611d20565b908395949542116105c9576001600160a01b03878116808a52600460205260408a20805491969295929060001983146105b5578261055e9694928d92600161055698960190556040519160208301937f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e266855260408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e0815261051a81611e8e565b5190206105256124e2565b9060405190602082019261190160f01b8452602283015260428201526042815261054e81611eaa565b5190206127b7565b9190916126b8565b16036105705761056d9261288a565b80f35b60405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152606490fd5b634e487b7160e01b8c52601160045260248cfd5b60405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b50346102f2576101603660031901126102f2576001600160a01b0360043581811690819003610aa2576024916001600160401b038335818111610a9e5736602382011215610a9e578060040135918211610a9e5736858383010111610a9e5760443593838516809503610a9a5761068a84600554163314611f01565b80610a5c575b5084826108de575b5050508161089e575b505060643580610886575b506084358061086e575b5060a43580610857575b5060c43580610833575b5060e4358061080f575b5061010435806107de575b50610124358061076b575b506101443590816106f9578280f35b601e54821061070c5750601f5538808280f35b60849060326040519162461bcd60e51b8352602060048401528201527f4d61726b65743a206c69717569646174696f6e436f6c6c61746572616c697a616044820152711d1a5bdb94985d19481d1bdbc81cdb585b1b60721b6064820152fd5b61077a620186a0821115611f4c565b601f54811161078c57601e55386106ea565b60405162461bcd60e51b8152602060048201526025818401527f4d61726b65743a20636f6c6c61746572616c697a6174696f6e5261746520746f6044820152646f2062696760d81b6064820152608490fd5b806016547fae6e0ab3b95f0a53ff9660a390ccedcbbf1f2355dce974a9841af106fddcfaba8580a3601655386106df565b61081d620186a08210611f4c565b61082a601b548211611f4c565b601c55386106d4565b610841620186a08210611f4c565b61084e601c548210611f4c565b601b55386106ca565b610865620186a08210611f4c565b601d55386106c0565b61087d620186a0821115611f4c565b601a55386106b6565b610895620186a0821115611f4c565b601955386106ac565b816008549182167f5a62d22209e370e38eea92cfddcd228e656e6ec139243392a760a7769f5877fd8680a36001600160a01b0319161760085538806106a1565b82916108eb601054611d9e565b601f81116109eb575b508790601f841160011461095957889361094c575b5050508160011b916000199060031b1c1916176010555b7fa6f004921c944d4b8bf6e38462b00f36a58d62495d56b51f571ab78f732c98158480a1388084610698565b0101359050843880610909565b60108952601f19841694507f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae67292509087908960205b8782106109cc57505084600196106109b0575b50505050811b01601055610920565b60001960f88660031b161c1992010135169055388086816109a1565b828501909301358555600194909401938992918201919081019061098e565b6010895290925090507f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae672601f840160051c810160208510610a55575b91849391601f8994920160051c01905b818110610a4457506108f4565b898155859450889350600101610a37565b5080610a27565b600f80546001600160a01b0319169190911790557f0b2d6eb667d0522c3eb86e4288afecae6c11591ffd1345d4d12407e0598bca9b8680a138610690565b8680fd5b8580fd5b8280fd5b50346102f257806003193601126102f2576008546040516001600160a01b039091168152602090f35b50346102f257806003193601126102f2576020601e54604051908152f35b50346102f257806003193601126102f2576060602354604051906001600160401b0380821683528160401c16602083015260801c6040820152f35b50346102f257806003193601126102f2576020601a54604051908152f35b50346102f25760403660031901126102f257610b60611c98565b60243580928115801590610c17575b610ba7575b50506040519182526001600160a01b0316903390600080516020612add83398151915290602090a3602060405160018152f35b33815260016020526040812054610bc08382101561260c565b6001600160a01b0384169033829003610bdb575b5050610b74565b604093610bf291610bed841515612651565b611fe3565b338352600160205283832055815220610c0c838254611ff0565b905581388080610bd4565b50336001600160a01b03841614610b6f565b50346102f25760403660031901126102f2576060610c51610c48611c98565b6024359061212f565b9060405192835260208301526040820152f35b50346102f257806003193601126102f2576020602b54604051908152f35b50346102f25760403660031901126102f2576020610caa610ca1611c98565b602435906123b0565b604051908152f35b50346102f257806003193601126102f257808060018060a01b03600b541660405160208101906395d89b4160e01b825260048152610cef81611e5d565b51915afa610cfb6128e1565b915015610d5b57610d0e61032791612968565b610d476023604051809362746d2d60e81b6020830152610d378151809260208686019101611cc9565b8101036003810184520182611ec5565b604051918291602083526020830190611cec565b50610327610d67612911565b610d0e565b50346102f257806003193601126102f2576020602f54604051908152f35b50346102f25760403660031901126102f2576004356001600160401b038111610f9f5736602382011215610f9f57806004013582610dc782611ee6565b92610dd56040519485611ec5565b82845260208401923660248284010111610aa2578060246020930185378401015260243561ffff81168103610f9b57610100918284805181010312610f9757610e1d906122a0565b610e2960408501612696565b91610e3660608601612696565b9460808101519460a082015192610e4f60c084016126aa565b9160e0840151930151938042116105c9578515610f70577f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e266915b6001600160a01b0388168b52600460205260408b20805491906000198314610f5c579161ffff610f199896949261055698969460018401905560405194602086015216604084015260018060a01b038a16606084015260018060a01b038c1660808401528a60a084015260c083015260e082015260e08152610f0a81611e8e565b602081519101206105256124e2565b6001600160a01b038381169116036105705715610f465761056d926001600160a01b03908116911661288a565b61056d926001600160a01b03908116911661283c565b634e487b7160e01b8d52601160045260248dfd5b7f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d691610e89565b8480fd5b8380fd5b5080fd5b50346102f257806003193601126102f2576005546040516001600160a01b039091168152602090f35b50346102f257806003193601126102f2576020601b54604051908152f35b50346102f257806003193601126102f257601454604080516001600160801b038316815260809290921c602083015290f35b50346102f257806003193601126102f2576020602d54604051908152f35b50346102f25760403660031901126102f257611061611057611c98565b602435903361283c565b602060405160018152f35b50346102f25760203660031901126102f2576020906040906001600160a01b03611094611c98565b168152600483522054604051908152f35b50346102f257806003193601126102f257600f546040516001600160a01b039091168152602090f35b50346102f257806003193601126102f257610327604051610d47816110f281611dd8565b0382611ec5565b50346102f25760203660031901126102f2576004359060098210156102f257602060ff61112584611d6f565b54166040519015158152f35b50346102f25760203660031901126102f2576020906040906001600160a01b03611159611c98565b168152600183522054604051908152f35b50346102f257806003193601126102f257600a546040516001600160a01b039091168152602090f35b50346102f257806003193601126102f2576020601c54604051908152f35b50346102f257806003193601126102f25760206001600160401b03602c5460401c16604051908152f35b50346102f257806003193601126102f25760206001600160401b03602c5416604051908152f35b50346102f257806003193601126102f25760206001600160401b03602e5416604051908152f35b50346102f257806003193601126102f25760208054604051908152f35b50346102f257806003193601126102f2576006546001600160a01b0390818116338190036112b057806005549384167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08680a36001600160a01b0319928316176005551660065580f35b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b50346102f257806003193601126102f2576020602854604051908152f35b50346102f25760203660031901126102f2576020906040906001600160a01b0361133a611c98565b168152601783522054604051908152f35b50346102f257806003193601126102f2576020601554604051908152f35b50346102f257806003193601126102f2576020600e54604051908152f35b50346102f257806003193601126102f2576020601654604051908152f35b50346102f25760603660031901126102f2576020610caa604435602435600435612016565b50346102f257806003193601126102f2576020601154604051908152f35b50346102f257806003193601126102f257600d546040516001600160a01b039091168152602090f35b50346102f257806003193601126102f2576020601254604051908152f35b50346102f257806003193601126102f2576020610caa6124e2565b50346102f257806003193601126102f2576020601954604051908152f35b50346102f257806003193601126102f2576020601354604051908152f35b50346102f257806003193601126102f257808060018060a01b03600d5416604051602081019063313ce56760e01b8252600481526114c381611e5d565b51915afa906114d06128e1565b918061150d575b15611502576020828051810103126102f257506114f760208092016126aa565b60ff60405191168152f35b5050602060126114f7565b5060208251146114d7565b50346102f25760603660031901126102f257611532611c98565b9061153b611cb3565b6044359182611579575b506040519182526001600160a01b03908116921690600080516020612add83398151915290602090a3602060405160018152f35b6001600160a01b038481168083526001602090815260408420549286906115a28286101561260c565b8616938484036115b7575b5050505050611545565b838652600283526040808720338852845286205460018101611621575b50926001602096936115ff8794604097610bed600080516020612add8339815191529c9a1515612651565b9285525283832055815220611615858254611ff0565b905591388085816115ad565b9091811061167557926001602096936115ff8a600080516020612add8339815191529a98956116528260409a611fe3565b86895260028552898920338a5285528989205594975094979950509396506115d4565b60405162461bcd60e51b815260048101849052601860248201527745524332303a20616c6c6f77616e636520746f6f206c6f7760401b6044820152606490fd5b50346102f2576116c436611d20565b908395949542116105c9576001600160a01b03878116808a52600460205260408a20805491969295929060001983146105b557826117669694928d92600161055698960190556040519160208301937f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d6855260408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e0815261051a81611e8e565b16036105705761056d9261283c565b50346102f25760203660031901126102f2576020906040906001600160a01b0361179d611c98565b168152601883522054604051908152f35b50346102f257806003193601126102f257602060245460801c604051908152f35b50346102f25760403660031901126102f2576004356009811015610f9f576117f5611d11565b6008549091906001600160a01b031633036118ab5760ff61181582611d6f565b5416151591151591821461187157808260ff61183361186194611d6f565b54161515827feeec81de25875ce1725479bb76f720a8defdb43dea041919ae37bb4aae9847c08780a4611d6f565b9060ff8019835416911617905580f35b60405162461bcd60e51b81526020600482015260126024820152714d61726b65743a2073616d6520737461746560701b6044820152606490fd5b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881d5b985d5d1a1bdc9a5e995960621b6044820152606490fd5b50346102f25760403660031901126102f257611061611904611c98565b602435903361288a565b50346102f25760603660031901126102f257611928611c98565b611930611d11565b604435908115158203610f9b5760018060a01b0392839161195683600554163314611f01565b156119fa5716908115908115916119f2575b50156119b557806005549283167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08580a36001600160a01b03199182161760055560068054909116905580f35b60405162461bcd60e51b81526020600482015260156024820152744f776e61626c653a207a65726f206164647265737360581b6044820152606490fd5b905038611968565b9150501660018060a01b0319600654161760065580f35b50346102f257806003193601126102f257808060018060a01b03600b541660405160208101906306fdde0360e01b825260048152611a4e81611e5d565b51915afa611a5a6128e1565b915015611ab757611a6d61032791612968565b610d476034604051809373546170696f63612053696e67756c61726974792d60601b6020830152611aa78151809260208686019101611cc9565b8101036014810184520182611ec5565b50610327611ac3612911565b611a6d565b50346102f257806003193601126102f257600f546040805163d6d7d52560e01b8152602060048201529182906001600160a01b0316818581611b0c60248201611dd8565b03925af18015611c455782918391611c05575b508115611ba6578015611b6a57807f9f9192b5edb17356c524e08d9e025c8e2f6307e6ea52fb7968faa3081f51c3c86040948260115580a25b42601355825191151582526020820152f35b60405162461bcd60e51b81526020600482015260146024820152734d61726b65743a20696e76616c6964207261746560601b6044820152606490fd5b509050611bb860135460125490611ff0565b4211611bc957604090601154611b58565b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881c985d19481d1bdbc81bdb1960621b6044820152606490fd5b9150506040813d604011611c3d575b81611c2160409383611ec5565b81010312610f9f576020611c34826122a0565b91015138611b1f565b3d9150611c14565b6040513d84823e3d90fd5b905034610f9f576040366003190112610f9f576040602092611c70611c98565b611c78611cb3565b6001600160a01b0391821683526003865283832091168252845220548152f35b600435906001600160a01b0382168203611cae57565b600080fd5b602435906001600160a01b0382168203611cae57565b60005b838110611cdc5750506000910152565b8181015183820152602001611ccc565b90602091611d0581518092818552858086019101611cc9565b601f01601f1916010190565b602435908115158203611cae57565b60e0906003190112611cae576001600160a01b03906004358281168103611cae57916024359081168103611cae5790604435906064359060843560ff81168103611cae579060a4359060c43590565b6009811015611d88576000526007602052604060002090565b634e487b7160e01b600052602160045260246000fd5b90600182811c92168015611dce575b6020831014611db857565b634e487b7160e01b600052602260045260246000fd5b91607f1691611dad565b60105460009291611de882611d9e565b908181526001928381169081600014611e425750600114611e0857505050565b9092935060106000526020928360002092846000945b838610611e2e5750505050010190565b805485870183015294019385908201611e1e565b91935050602093945060ff191683830152151560051b010190565b604081019081106001600160401b03821117611e7857604052565b634e487b7160e01b600052604160045260246000fd5b61010081019081106001600160401b03821117611e7857604052565b608081019081106001600160401b03821117611e7857604052565b90601f801991011681019081106001600160401b03821117611e7857604052565b6001600160401b038111611e7857601f01601f191660200190565b15611f0857565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b15611f5357565b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881b9bdd081d985b1a59607a1b6044820152606490fd5b81810292918115918404141715611f9f57565b634e487b7160e01b600052601160045260246000fd5b8115611fbf570490565b634e487b7160e01b600052601260045260246000fd5b604d8111611f9f57600a0a90565b91908203918211611f9f57565b91908201809211611f9f57565b81810392916000138015828513169184121617611f9f57565b60145491929161205f91612050916120469161203c906001600160801b03831690611f8c565b9060801c90611fb5565b93601f5490611f8c565b61205983611fd5565b90611fb5565b808310612127576120736120af9184611fe3565b916120aa6120a461209b601e5461209561208c86611fd5565b60205490611ff0565b90611f8c565b61205984611fd5565b91611fd5565b611ffd565b6509184e72a00090818102918183051490151715611f9f57670de0b6b3a764000091828102928184051490151715611f9f578015611fbf57600160ff1b91808314600019831416611f9f5705906000821215612120578114611f9f57600003905b80821161211b575090565b905090565b5090612110565b505050600090565b9160018060a01b0380931691600093838552602060178152604091828720549081156122935783518481018181106001600160401b0382111761227f5785528881528884808301938285526121858915156122ad565b600954166064600c548c85526018845289852054928a51958694859363442c159960e01b85526004850152602484015260448301525afa908115612275578a91612242575b506122369798999492601894926122196122048a6121ff6121f661222297620186a06021540490611f8c565b601e5490611f8c565b611fb5565b915191946001600160801b0392831690611f8c565b91511690611fb5565b81811061223a57035b9783525220546122f9565b9091565b50508261222b565b90508481813d831161226e575b6122598183611ec5565b8101031261226a57516122366121ca565b8980fd5b503d61224f565b86513d8c823e3d90fd5b634e487b7160e01b8a52604160045260248afd5b5086955085949350505050565b51908115158203611cae57565b156122b457565b60405162461bcd60e51b815260206004820152601e60248201527f4d61726b65743a2065786368616e676552617465206e6f742076616c696400006044820152606490fd5b6123048215156122ad565b602060018060a01b0360095416916064600c54604051948593849263442c159960e01b845260048401526024830152600060448301525afa9081156123a457600091612371575b50906121ff61235d9260215490611f8c565b620186a061236d601e5483611f8c565b0491565b906020823d821161239c575b8161238a60209383611ec5565b810103126102f25750516121ff61234b565b3d915061237d565b6040513d6000823e3d90fd5b6001600160a01b031660008181526018602052604081205490926123d3916122f9565b9183526017602052604083205480156124dc5781156124dc578181106124dc57828110156124d25760145461241c918391610bed9161203c906001600160801b03831690611f8c565b90620186a092838302928084048514901517156124be57612441929161205991611fe3565b91601b5491601c54936124548585611ffd565b80820291848212600160ff1b8214166124be5781830514901517156124aa5705818482019485129112908015821691151617612496575080821261211b575090565b634e487b7160e01b81526011600452602490fd5b634e487b7160e01b83526011600452602483fd5b634e487b7160e01b85526011600452602485fd5b50505050601b5490565b50505090565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031614806125e3575b1561253d577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f000000000000000000000000000000000000000000000000000000000000000082527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a0815260c081018181106001600160401b03821117611e785760405251902090565b507f00000000000000000000000000000000000000000000000000000000000000004614612514565b1561261357565b60405162461bcd60e51b815260206004820152601660248201527545524332303a2062616c616e636520746f6f206c6f7760501b6044820152606490fd5b1561265857565b60405162461bcd60e51b815260206004820152601660248201527545524332303a206e6f207a65726f206164647265737360501b6044820152606490fd5b51906001600160a01b0382168203611cae57565b519060ff82168203611cae57565b6005811015611d8857806126c95750565b600181036127115760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b6044820152606490fd5b6002810361275e5760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606490fd5b60031461276757565b60405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608490fd5b9291906fa2a8918ca85bafe22016d0b997e4df60600160ff1b0383116128305791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa156128235781516001600160a01b0381161561281d579190565b50600190565b50604051903d90823e3d90fd5b50505050600090600390565b7fe50de2333c10a9502fcb1d8ae13a51bbf423153dfc63c2b8997665b32154afc360018060a01b038092169160009083825260036020526040822094169384825260205284604082205580a4565b909160207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259160018060a01b03809416938460005260028352604060002095169485600052825280604060002055604051908152a3565b3d1561290c573d906128f282611ee6565b916129006040519384611ec5565b82523d6000602084013e565b606090565b6040519061291e82611e5d565b60038252623f3f3f60e81b6020830152565b908151811015612941570160200190565b634e487b7160e01b600052603260045260246000fd5b60ff1660ff8114611f9f5760010190565b8051604081106129e357508051810190602081818401930312611cae576020810151906001600160401b038211611cae570181603f82011215611cae5760208101516129b381611ee6565b926129c16040519485611ec5565b81845260408284010111611cae576129e0916040602085019101611cc9565b90565b602092908303612ad1576000805b60ff81168581109081612ab2575b5015612a1357612a0e90612957565b6129f1565b9260ff80941692612a2384611ee6565b93612a316040519586611ec5565b808552612a40601f1991611ee6565b013687860137825b85811687811080612a95575b15612a8a57612a859190612a7f6001600160f81b0319612a748388612930565b5116871a9188612930565b53612957565b612a48565b505094505050905090565b506001600160f81b0319612aa98286612930565b51161515612a54565b6001600160f81b03199150612ac79086612930565b51161515386129ff565b9150506129e061291156feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220d56635cc9f65bf4bf9a99354bcd7b53734e93d4577b3eb9463586ee7b624502b64736f6c63430008120033", - "deployedBytecode": "0x608080604052600436101561001357600080fd5b600090813560e01c908162a02a2014611c505750806302ce728f14611ac857806306fdde0314611a11578063078dfbe71461190e578063095ea7b3146118e75780630c4e84f0146117cf57806318160ddd146117ae5780631c9e379b146117755780631da8bf10146116b557806323b872dd14611518578063313ce56714611486578063331960ff1461146857806334d441d01461144a5780633644e5151461142f57806337b6b7b91461141157806338d52e0f146113e85780633ba0b9a9146113ca5780633f741adb146113a557806340626d8b1461138757806344de240a14611369578063473e3ce71461134b57806348e4163e146113125780634d7f2a34146112f45780634e71e0c814611246578063529898f21461122957806352f353eb1461120257806355140232146111db57806355c2ab94146111b157806357935462146111935780636c3d8b8f1461116a57806370a082311461113157806372778547146110f957806374645ff3146110ce5780637dc0d1d0146110a55780637ecebe001461106c5780637fa0b84e1461103a578063821226e81461101c5780638285ef4014610fea5780638c5d0ed314610fcc5780638da5cb5b14610fa3578063910dd7c814610d8a578063959916dc14610d6c57806395d89b4114610cb257806399a9702814610c825780639c5d719214610c645780639e15e89f14610c29578063a9059cbb14610b46578063b0e21e8a14610b28578063b27c0e7414610aed578063bb4cfe3b14610acf578063ce8849ed14610aa6578063d3fb2a381461060e578063d505accf14610469578063d8dfeb4514610440578063dd62ed3e146103f5578063de406577146103cc578063e0996cb6146103ae578063e30c397814610385578063ea64dd5614610367578063eec0f42e14610349578063f42760b71461032b578063f9557ccb146102f55763ffe04c66146102d557600080fd5b346102f257806003193601126102f2576020602954604051908152f35b80fd5b50346102f257806003193601126102f257602454604080516001600160801b038316815260809290921c602083015290f35b0390f35b50346102f257806003193601126102f2576020602a54604051908152f35b50346102f257806003193601126102f2576020600c54604051908152f35b50346102f257806003193601126102f2576020601f54604051908152f35b50346102f257806003193601126102f2576006546040516001600160a01b039091168152602090f35b50346102f257806003193601126102f2576020601d54604051908152f35b50346102f257806003193601126102f2576009546040516001600160a01b039091168152602090f35b50346102f25760403660031901126102f2576040602091610414611c98565b61041c611cb3565b6001600160a01b039182168352600285528383209116825283522054604051908152f35b50346102f257806003193601126102f257600b546040516001600160a01b039091168152602090f35b50346102f25761047836611d20565b908395949542116105c9576001600160a01b03878116808a52600460205260408a20805491969295929060001983146105b5578261055e9694928d92600161055698960190556040519160208301937f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e266855260408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e0815261051a81611e8e565b5190206105256124e2565b9060405190602082019261190160f01b8452602283015260428201526042815261054e81611eaa565b5190206127b7565b9190916126b8565b16036105705761056d9261288a565b80f35b60405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152606490fd5b634e487b7160e01b8c52601160045260248cfd5b60405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b50346102f2576101603660031901126102f2576001600160a01b0360043581811690819003610aa2576024916001600160401b038335818111610a9e5736602382011215610a9e578060040135918211610a9e5736858383010111610a9e5760443593838516809503610a9a5761068a84600554163314611f01565b80610a5c575b5084826108de575b5050508161089e575b505060643580610886575b506084358061086e575b5060a43580610857575b5060c43580610833575b5060e4358061080f575b5061010435806107de575b50610124358061076b575b506101443590816106f9578280f35b601e54821061070c5750601f5538808280f35b60849060326040519162461bcd60e51b8352602060048401528201527f4d61726b65743a206c69717569646174696f6e436f6c6c61746572616c697a616044820152711d1a5bdb94985d19481d1bdbc81cdb585b1b60721b6064820152fd5b61077a620186a0821115611f4c565b601f54811161078c57601e55386106ea565b60405162461bcd60e51b8152602060048201526025818401527f4d61726b65743a20636f6c6c61746572616c697a6174696f6e5261746520746f6044820152646f2062696760d81b6064820152608490fd5b806016547fae6e0ab3b95f0a53ff9660a390ccedcbbf1f2355dce974a9841af106fddcfaba8580a3601655386106df565b61081d620186a08210611f4c565b61082a601b548211611f4c565b601c55386106d4565b610841620186a08210611f4c565b61084e601c548210611f4c565b601b55386106ca565b610865620186a08210611f4c565b601d55386106c0565b61087d620186a0821115611f4c565b601a55386106b6565b610895620186a0821115611f4c565b601955386106ac565b816008549182167f5a62d22209e370e38eea92cfddcd228e656e6ec139243392a760a7769f5877fd8680a36001600160a01b0319161760085538806106a1565b82916108eb601054611d9e565b601f81116109eb575b508790601f841160011461095957889361094c575b5050508160011b916000199060031b1c1916176010555b7fa6f004921c944d4b8bf6e38462b00f36a58d62495d56b51f571ab78f732c98158480a1388084610698565b0101359050843880610909565b60108952601f19841694507f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae67292509087908960205b8782106109cc57505084600196106109b0575b50505050811b01601055610920565b60001960f88660031b161c1992010135169055388086816109a1565b828501909301358555600194909401938992918201919081019061098e565b6010895290925090507f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae672601f840160051c810160208510610a55575b91849391601f8994920160051c01905b818110610a4457506108f4565b898155859450889350600101610a37565b5080610a27565b600f80546001600160a01b0319169190911790557f0b2d6eb667d0522c3eb86e4288afecae6c11591ffd1345d4d12407e0598bca9b8680a138610690565b8680fd5b8580fd5b8280fd5b50346102f257806003193601126102f2576008546040516001600160a01b039091168152602090f35b50346102f257806003193601126102f2576020601e54604051908152f35b50346102f257806003193601126102f2576060602354604051906001600160401b0380821683528160401c16602083015260801c6040820152f35b50346102f257806003193601126102f2576020601a54604051908152f35b50346102f25760403660031901126102f257610b60611c98565b60243580928115801590610c17575b610ba7575b50506040519182526001600160a01b0316903390600080516020612add83398151915290602090a3602060405160018152f35b33815260016020526040812054610bc08382101561260c565b6001600160a01b0384169033829003610bdb575b5050610b74565b604093610bf291610bed841515612651565b611fe3565b338352600160205283832055815220610c0c838254611ff0565b905581388080610bd4565b50336001600160a01b03841614610b6f565b50346102f25760403660031901126102f2576060610c51610c48611c98565b6024359061212f565b9060405192835260208301526040820152f35b50346102f257806003193601126102f2576020602b54604051908152f35b50346102f25760403660031901126102f2576020610caa610ca1611c98565b602435906123b0565b604051908152f35b50346102f257806003193601126102f257808060018060a01b03600b541660405160208101906395d89b4160e01b825260048152610cef81611e5d565b51915afa610cfb6128e1565b915015610d5b57610d0e61032791612968565b610d476023604051809362746d2d60e81b6020830152610d378151809260208686019101611cc9565b8101036003810184520182611ec5565b604051918291602083526020830190611cec565b50610327610d67612911565b610d0e565b50346102f257806003193601126102f2576020602f54604051908152f35b50346102f25760403660031901126102f2576004356001600160401b038111610f9f5736602382011215610f9f57806004013582610dc782611ee6565b92610dd56040519485611ec5565b82845260208401923660248284010111610aa2578060246020930185378401015260243561ffff81168103610f9b57610100918284805181010312610f9757610e1d906122a0565b610e2960408501612696565b91610e3660608601612696565b9460808101519460a082015192610e4f60c084016126aa565b9160e0840151930151938042116105c9578515610f70577f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e266915b6001600160a01b0388168b52600460205260408b20805491906000198314610f5c579161ffff610f199896949261055698969460018401905560405194602086015216604084015260018060a01b038a16606084015260018060a01b038c1660808401528a60a084015260c083015260e082015260e08152610f0a81611e8e565b602081519101206105256124e2565b6001600160a01b038381169116036105705715610f465761056d926001600160a01b03908116911661288a565b61056d926001600160a01b03908116911661283c565b634e487b7160e01b8d52601160045260248dfd5b7f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d691610e89565b8480fd5b8380fd5b5080fd5b50346102f257806003193601126102f2576005546040516001600160a01b039091168152602090f35b50346102f257806003193601126102f2576020601b54604051908152f35b50346102f257806003193601126102f257601454604080516001600160801b038316815260809290921c602083015290f35b50346102f257806003193601126102f2576020602d54604051908152f35b50346102f25760403660031901126102f257611061611057611c98565b602435903361283c565b602060405160018152f35b50346102f25760203660031901126102f2576020906040906001600160a01b03611094611c98565b168152600483522054604051908152f35b50346102f257806003193601126102f257600f546040516001600160a01b039091168152602090f35b50346102f257806003193601126102f257610327604051610d47816110f281611dd8565b0382611ec5565b50346102f25760203660031901126102f2576004359060098210156102f257602060ff61112584611d6f565b54166040519015158152f35b50346102f25760203660031901126102f2576020906040906001600160a01b03611159611c98565b168152600183522054604051908152f35b50346102f257806003193601126102f257600a546040516001600160a01b039091168152602090f35b50346102f257806003193601126102f2576020601c54604051908152f35b50346102f257806003193601126102f25760206001600160401b03602c5460401c16604051908152f35b50346102f257806003193601126102f25760206001600160401b03602c5416604051908152f35b50346102f257806003193601126102f25760206001600160401b03602e5416604051908152f35b50346102f257806003193601126102f25760208054604051908152f35b50346102f257806003193601126102f2576006546001600160a01b0390818116338190036112b057806005549384167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08680a36001600160a01b0319928316176005551660065580f35b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b50346102f257806003193601126102f2576020602854604051908152f35b50346102f25760203660031901126102f2576020906040906001600160a01b0361133a611c98565b168152601783522054604051908152f35b50346102f257806003193601126102f2576020601554604051908152f35b50346102f257806003193601126102f2576020600e54604051908152f35b50346102f257806003193601126102f2576020601654604051908152f35b50346102f25760603660031901126102f2576020610caa604435602435600435612016565b50346102f257806003193601126102f2576020601154604051908152f35b50346102f257806003193601126102f257600d546040516001600160a01b039091168152602090f35b50346102f257806003193601126102f2576020601254604051908152f35b50346102f257806003193601126102f2576020610caa6124e2565b50346102f257806003193601126102f2576020601954604051908152f35b50346102f257806003193601126102f2576020601354604051908152f35b50346102f257806003193601126102f257808060018060a01b03600d5416604051602081019063313ce56760e01b8252600481526114c381611e5d565b51915afa906114d06128e1565b918061150d575b15611502576020828051810103126102f257506114f760208092016126aa565b60ff60405191168152f35b5050602060126114f7565b5060208251146114d7565b50346102f25760603660031901126102f257611532611c98565b9061153b611cb3565b6044359182611579575b506040519182526001600160a01b03908116921690600080516020612add83398151915290602090a3602060405160018152f35b6001600160a01b038481168083526001602090815260408420549286906115a28286101561260c565b8616938484036115b7575b5050505050611545565b838652600283526040808720338852845286205460018101611621575b50926001602096936115ff8794604097610bed600080516020612add8339815191529c9a1515612651565b9285525283832055815220611615858254611ff0565b905591388085816115ad565b9091811061167557926001602096936115ff8a600080516020612add8339815191529a98956116528260409a611fe3565b86895260028552898920338a5285528989205594975094979950509396506115d4565b60405162461bcd60e51b815260048101849052601860248201527745524332303a20616c6c6f77616e636520746f6f206c6f7760401b6044820152606490fd5b50346102f2576116c436611d20565b908395949542116105c9576001600160a01b03878116808a52600460205260408a20805491969295929060001983146105b557826117669694928d92600161055698960190556040519160208301937f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d6855260408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e0815261051a81611e8e565b16036105705761056d9261283c565b50346102f25760203660031901126102f2576020906040906001600160a01b0361179d611c98565b168152601883522054604051908152f35b50346102f257806003193601126102f257602060245460801c604051908152f35b50346102f25760403660031901126102f2576004356009811015610f9f576117f5611d11565b6008549091906001600160a01b031633036118ab5760ff61181582611d6f565b5416151591151591821461187157808260ff61183361186194611d6f565b54161515827feeec81de25875ce1725479bb76f720a8defdb43dea041919ae37bb4aae9847c08780a4611d6f565b9060ff8019835416911617905580f35b60405162461bcd60e51b81526020600482015260126024820152714d61726b65743a2073616d6520737461746560701b6044820152606490fd5b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881d5b985d5d1a1bdc9a5e995960621b6044820152606490fd5b50346102f25760403660031901126102f257611061611904611c98565b602435903361288a565b50346102f25760603660031901126102f257611928611c98565b611930611d11565b604435908115158203610f9b5760018060a01b0392839161195683600554163314611f01565b156119fa5716908115908115916119f2575b50156119b557806005549283167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08580a36001600160a01b03199182161760055560068054909116905580f35b60405162461bcd60e51b81526020600482015260156024820152744f776e61626c653a207a65726f206164647265737360581b6044820152606490fd5b905038611968565b9150501660018060a01b0319600654161760065580f35b50346102f257806003193601126102f257808060018060a01b03600b541660405160208101906306fdde0360e01b825260048152611a4e81611e5d565b51915afa611a5a6128e1565b915015611ab757611a6d61032791612968565b610d476034604051809373546170696f63612053696e67756c61726974792d60601b6020830152611aa78151809260208686019101611cc9565b8101036014810184520182611ec5565b50610327611ac3612911565b611a6d565b50346102f257806003193601126102f257600f546040805163d6d7d52560e01b8152602060048201529182906001600160a01b0316818581611b0c60248201611dd8565b03925af18015611c455782918391611c05575b508115611ba6578015611b6a57807f9f9192b5edb17356c524e08d9e025c8e2f6307e6ea52fb7968faa3081f51c3c86040948260115580a25b42601355825191151582526020820152f35b60405162461bcd60e51b81526020600482015260146024820152734d61726b65743a20696e76616c6964207261746560601b6044820152606490fd5b509050611bb860135460125490611ff0565b4211611bc957604090601154611b58565b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881c985d19481d1bdbc81bdb1960621b6044820152606490fd5b9150506040813d604011611c3d575b81611c2160409383611ec5565b81010312610f9f576020611c34826122a0565b91015138611b1f565b3d9150611c14565b6040513d84823e3d90fd5b905034610f9f576040366003190112610f9f576040602092611c70611c98565b611c78611cb3565b6001600160a01b0391821683526003865283832091168252845220548152f35b600435906001600160a01b0382168203611cae57565b600080fd5b602435906001600160a01b0382168203611cae57565b60005b838110611cdc5750506000910152565b8181015183820152602001611ccc565b90602091611d0581518092818552858086019101611cc9565b601f01601f1916010190565b602435908115158203611cae57565b60e0906003190112611cae576001600160a01b03906004358281168103611cae57916024359081168103611cae5790604435906064359060843560ff81168103611cae579060a4359060c43590565b6009811015611d88576000526007602052604060002090565b634e487b7160e01b600052602160045260246000fd5b90600182811c92168015611dce575b6020831014611db857565b634e487b7160e01b600052602260045260246000fd5b91607f1691611dad565b60105460009291611de882611d9e565b908181526001928381169081600014611e425750600114611e0857505050565b9092935060106000526020928360002092846000945b838610611e2e5750505050010190565b805485870183015294019385908201611e1e565b91935050602093945060ff191683830152151560051b010190565b604081019081106001600160401b03821117611e7857604052565b634e487b7160e01b600052604160045260246000fd5b61010081019081106001600160401b03821117611e7857604052565b608081019081106001600160401b03821117611e7857604052565b90601f801991011681019081106001600160401b03821117611e7857604052565b6001600160401b038111611e7857601f01601f191660200190565b15611f0857565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b15611f5357565b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881b9bdd081d985b1a59607a1b6044820152606490fd5b81810292918115918404141715611f9f57565b634e487b7160e01b600052601160045260246000fd5b8115611fbf570490565b634e487b7160e01b600052601260045260246000fd5b604d8111611f9f57600a0a90565b91908203918211611f9f57565b91908201809211611f9f57565b81810392916000138015828513169184121617611f9f57565b60145491929161205f91612050916120469161203c906001600160801b03831690611f8c565b9060801c90611fb5565b93601f5490611f8c565b61205983611fd5565b90611fb5565b808310612127576120736120af9184611fe3565b916120aa6120a461209b601e5461209561208c86611fd5565b60205490611ff0565b90611f8c565b61205984611fd5565b91611fd5565b611ffd565b6509184e72a00090818102918183051490151715611f9f57670de0b6b3a764000091828102928184051490151715611f9f578015611fbf57600160ff1b91808314600019831416611f9f5705906000821215612120578114611f9f57600003905b80821161211b575090565b905090565b5090612110565b505050600090565b9160018060a01b0380931691600093838552602060178152604091828720549081156122935783518481018181106001600160401b0382111761227f5785528881528884808301938285526121858915156122ad565b600954166064600c548c85526018845289852054928a51958694859363442c159960e01b85526004850152602484015260448301525afa908115612275578a91612242575b506122369798999492601894926122196122048a6121ff6121f661222297620186a06021540490611f8c565b601e5490611f8c565b611fb5565b915191946001600160801b0392831690611f8c565b91511690611fb5565b81811061223a57035b9783525220546122f9565b9091565b50508261222b565b90508481813d831161226e575b6122598183611ec5565b8101031261226a57516122366121ca565b8980fd5b503d61224f565b86513d8c823e3d90fd5b634e487b7160e01b8a52604160045260248afd5b5086955085949350505050565b51908115158203611cae57565b156122b457565b60405162461bcd60e51b815260206004820152601e60248201527f4d61726b65743a2065786368616e676552617465206e6f742076616c696400006044820152606490fd5b6123048215156122ad565b602060018060a01b0360095416916064600c54604051948593849263442c159960e01b845260048401526024830152600060448301525afa9081156123a457600091612371575b50906121ff61235d9260215490611f8c565b620186a061236d601e5483611f8c565b0491565b906020823d821161239c575b8161238a60209383611ec5565b810103126102f25750516121ff61234b565b3d915061237d565b6040513d6000823e3d90fd5b6001600160a01b031660008181526018602052604081205490926123d3916122f9565b9183526017602052604083205480156124dc5781156124dc578181106124dc57828110156124d25760145461241c918391610bed9161203c906001600160801b03831690611f8c565b90620186a092838302928084048514901517156124be57612441929161205991611fe3565b91601b5491601c54936124548585611ffd565b80820291848212600160ff1b8214166124be5781830514901517156124aa5705818482019485129112908015821691151617612496575080821261211b575090565b634e487b7160e01b81526011600452602490fd5b634e487b7160e01b83526011600452602483fd5b634e487b7160e01b85526011600452602485fd5b50505050601b5490565b50505090565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031614806125e3575b1561253d577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f000000000000000000000000000000000000000000000000000000000000000082527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a0815260c081018181106001600160401b03821117611e785760405251902090565b507f00000000000000000000000000000000000000000000000000000000000000004614612514565b1561261357565b60405162461bcd60e51b815260206004820152601660248201527545524332303a2062616c616e636520746f6f206c6f7760501b6044820152606490fd5b1561265857565b60405162461bcd60e51b815260206004820152601660248201527545524332303a206e6f207a65726f206164647265737360501b6044820152606490fd5b51906001600160a01b0382168203611cae57565b519060ff82168203611cae57565b6005811015611d8857806126c95750565b600181036127115760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b6044820152606490fd5b6002810361275e5760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606490fd5b60031461276757565b60405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608490fd5b9291906fa2a8918ca85bafe22016d0b997e4df60600160ff1b0383116128305791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa156128235781516001600160a01b0381161561281d579190565b50600190565b50604051903d90823e3d90fd5b50505050600090600390565b7fe50de2333c10a9502fcb1d8ae13a51bbf423153dfc63c2b8997665b32154afc360018060a01b038092169160009083825260036020526040822094169384825260205284604082205580a4565b909160207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259160018060a01b03809416938460005260028352604060002095169485600052825280604060002055604051908152a3565b3d1561290c573d906128f282611ee6565b916129006040519384611ec5565b82523d6000602084013e565b606090565b6040519061291e82611e5d565b60038252623f3f3f60e81b6020830152565b908151811015612941570160200190565b634e487b7160e01b600052603260045260246000fd5b60ff1660ff8114611f9f5760010190565b8051604081106129e357508051810190602081818401930312611cae576020810151906001600160401b038211611cae570181603f82011215611cae5760208101516129b381611ee6565b926129c16040519485611ec5565b81845260408284010111611cae576129e0916040602085019101611cc9565b90565b602092908303612ad1576000805b60ff81168581109081612ab2575b5015612a1357612a0e90612957565b6129f1565b9260ff80941692612a2384611ee6565b93612a316040519586611ec5565b808552612a40601f1991611ee6565b013687860137825b85811687811080612a95575b15612a8a57612a859190612a7f6001600160f81b0319612a748388612930565b5116871a9188612930565b53612957565b612a48565b505094505050905090565b506001600160f81b0319612aa98286612930565b51161515612a54565b6001600160f81b03199150612ac79086612930565b51161515386129ff565b9150506129e061291156feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220d56635cc9f65bf4bf9a99354bcd7b53734e93d4577b3eb9463586ee7b624502b64736f6c63430008120033", + "bytecode": "0x6101408060405234620001e5576200001781620001ea565b601381526001602082017f546170696f63612053696e67756c617269747900000000000000000000000000815260206040516200005481620001ea565b8381520192603160f81b845251902091208160e052610100918183524660a0526040519160208301907f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f92838352604085015260608401524660808401523060a084015260a0835260c083019280841060018060401b03851117620001cf5760408490525190206080523060c052610120908152600580546001600160a01b0319163390811790915560007f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a362013880601b5562015f90601c55612710601d55612ee06020557f0bd4060688a1800ae986e4840aebc924bb40b5bf44de4583df2257220b54b77c6027557f7d1dc38e60930664f8cbf495da6556ca091d2f92d6550877750c049864b182306028556161a86029556032603055612be49283620002078439608051836125cd015260a05183612698015260c05183612597015260e0518361261c01525182612642015251816125f90152f35b634e487b7160e01b600052604160045260246000fd5b600080fd5b604081019081106001600160401b03821117620001cf5760405256fe608080604052600436101561001357600080fd5b600090813560e01c908162a02a2014611d025750806302ce728f14611b7a57806306fdde0314611ac3578063078dfbe7146119c0578063095ea7b3146119995780630c4e84f01461188157806318160ddd146118605780631c9e379b146118275780631da8bf101461176757806323b872dd146115ca578063313ce56714611538578063331960ff1461151a57806334d441d0146114fc5780633644e515146114e157806337b6b7b9146114c357806338d52e0f1461149a5780633ba0b9a91461147c5780633f741adb1461145757806340626d8b1461143957806344de240a1461141b578063473e3ce7146113fd57806348e4163e146113c45780634d7f2a34146113a65780634e71e0c8146112f8578063529898f2146112db57806352f353eb146112b4578063551402321461128d57806355c2ab941461126357806357935462146112455780636c3d8b8f1461121c57806370a08231146111e357806372778547146111ab57806374645ff3146111805780637dc0d1d0146111575780637ecebe001461111e5780637fa0b84e146110ec578063821226e8146110ce5780638285ef401461109c5780638c5d0ed31461107e5780638da5cb5b14611055578063910dd7c814610e3c578063959916dc14610e1e57806395d89b4114610d6457806399a9702814610d345780639c5d719214610d165780639e15e89f14610cdb578063a9059cbb14610bf8578063b0e21e8a14610bda578063b27c0e7414610b9f578063bb4cfe3b14610b81578063ce8849ed14610b58578063d3fb2a38146106c4578063d505accf1461051f578063d8dfeb45146104f6578063da863f0e146104cd578063dd62ed3e14610482578063de40657714610459578063e0996cb61461043b578063e30c397814610412578063ea64dd56146103f4578063eec0f42e146103d6578063ef2b234a1461035f578063f42760b714610341578063f9557ccb1461030b5763ffe04c66146102eb57600080fd5b346103085780600319360112610308576020602a54604051908152f35b80fd5b5034610308578060031936011261030857602554604080516001600160801b038316815260809290921c602083015290f35b0390f35b50346103085780600319360112610308576020602b54604051908152f35b5034610308576020366003190112610308576004356001600160a01b03818116918290036103d25761039681600554163314611fb3565b816021549182167ffb4fd7114609dd603b57adbc2082205bfbbcabf9265c4b437b472f5c592b8cd78580a36001600160a01b0319161760215580f35b8280fd5b50346103085780600319360112610308576020600c54604051908152f35b50346103085780600319360112610308576020601f54604051908152f35b50346103085780600319360112610308576006546040516001600160a01b039091168152602090f35b50346103085780600319360112610308576020601d54604051908152f35b50346103085780600319360112610308576009546040516001600160a01b039091168152602090f35b50346103085760403660031901126103085760406020916104a1611d4a565b6104a9611d65565b6001600160a01b039182168352600285528383209116825283522054604051908152f35b50346103085780600319360112610308576021546040516001600160a01b039091168152602090f35b5034610308578060031936011261030857600b546040516001600160a01b039091168152602090f35b50346103085761052e36611dd2565b9083959495421161067f576001600160a01b03878116808a52600460205260408a208054919692959290600019831461066b57826106149694928d92600161060c98960190556040519160208301937f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e266855260408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e081526105d081611f40565b5190206105db612594565b9060405190602082019261190160f01b8452602283015260428201526042815261060481611f5c565b519020612869565b91909161276a565b1603610626576106239261293c565b80f35b60405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152606490fd5b634e487b7160e01b8c52601160045260248cfd5b60405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b503461030857610160366003190112610308576001600160a01b03600435818116908190036103d2576024916001600160401b038335818111610b545736602382011215610b54578060040135918211610b545736858383010111610b545760443593838516809503610b505761074084600554163314611fb3565b80610b12575b508482610994575b50505081610954575b50506064358061093c575b5060843580610924575b5060a4358061090d575b5060c435806108e9575b5060e435806108c5575b506101043580610894575b506101243580610821575b506101443590816107af578280f35b601e5482106107c25750601f5538808280f35b60849060326040519162461bcd60e51b8352602060048401528201527f4d61726b65743a206c69717569646174696f6e436f6c6c61746572616c697a616044820152711d1a5bdb94985d19481d1bdbc81cdb585b1b60721b6064820152fd5b610830620186a0821115611ffe565b601f54811161084257601e55386107a0565b60405162461bcd60e51b8152602060048201526025818401527f4d61726b65743a20636f6c6c61746572616c697a6174696f6e5261746520746f6044820152646f2062696760d81b6064820152608490fd5b806016547fae6e0ab3b95f0a53ff9660a390ccedcbbf1f2355dce974a9841af106fddcfaba8580a360165538610795565b6108d3620186a08210611ffe565b6108e0601b548211611ffe565b601c553861078a565b6108f7620186a08210611ffe565b610904601c548210611ffe565b601b5538610780565b61091b620186a08210611ffe565b601d5538610776565b610933620186a0821115611ffe565b601a553861076c565b61094b620186a0821115611ffe565b60195538610762565b816008549182167f5a62d22209e370e38eea92cfddcd228e656e6ec139243392a760a7769f5877fd8680a36001600160a01b031916176008553880610757565b82916109a1601054611e50565b601f8111610aa1575b508790601f8411600114610a0f578893610a02575b5050508160011b916000199060031b1c1916176010555b7fa6f004921c944d4b8bf6e38462b00f36a58d62495d56b51f571ab78f732c98158480a138808461074e565b01013590508438806109bf565b60108952601f19841694507f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae67292509087908960205b878210610a825750508460019610610a66575b50505050811b016010556109d6565b60001960f88660031b161c199201013516905538808681610a57565b8285019093013585556001949094019389929182019190810190610a44565b6010895290925090507f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae672601f840160051c810160208510610b0b575b91849391601f8994920160051c01905b818110610afa57506109aa565b898155859450889350600101610aed565b5080610add565b600f80546001600160a01b0319169190911790557f0b2d6eb667d0522c3eb86e4288afecae6c11591ffd1345d4d12407e0598bca9b8680a138610746565b8680fd5b8580fd5b50346103085780600319360112610308576008546040516001600160a01b039091168152602090f35b50346103085780600319360112610308576020601e54604051908152f35b50346103085780600319360112610308576060602454604051906001600160401b0380821683528160401c16602083015260801c6040820152f35b50346103085780600319360112610308576020601a54604051908152f35b503461030857604036600319011261030857610c12611d4a565b60243580928115801590610cc9575b610c59575b50506040519182526001600160a01b0316903390600080516020612b8f83398151915290602090a3602060405160018152f35b33815260016020526040812054610c72838210156126be565b6001600160a01b0384169033829003610c8d575b5050610c26565b604093610ca491610c9f841515612703565b612095565b338352600160205283832055815220610cbe8382546120a2565b905581388080610c86565b50336001600160a01b03841614610c21565b5034610308576040366003190112610308576060610d03610cfa611d4a565b602435906121e1565b9060405192835260208301526040820152f35b50346103085780600319360112610308576020602c54604051908152f35b5034610308576040366003190112610308576020610d5c610d53611d4a565b60243590612462565b604051908152f35b5034610308578060031936011261030857808060018060a01b03600b541660405160208101906395d89b4160e01b825260048152610da181611f0f565b51915afa610dad612993565b915015610e0d57610dc061033d91612a1a565b610df96023604051809362746d2d60e81b6020830152610de98151809260208686019101611d7b565b8101036003810184520182611f77565b604051918291602083526020830190611d9e565b5061033d610e196129c3565b610dc0565b50346103085780600319360112610308576020603054604051908152f35b5034610308576040366003190112610308576004356001600160401b038111611051573660238201121561105157806004013582610e7982611f98565b92610e876040519485611f77565b828452602084019236602482840101116103d2578060246020930185378401015260243561ffff8116810361104d5761010091828480518101031261104957610ecf90612352565b610edb60408501612748565b91610ee860608601612748565b9460808101519460a082015192610f0160c0840161275c565b9160e08401519301519380421161067f578515611022577f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e266915b6001600160a01b0388168b52600460205260408b2080549190600019831461100e579161ffff610fcb9896949261060c98969460018401905560405194602086015216604084015260018060a01b038a16606084015260018060a01b038c1660808401528a60a084015260c083015260e082015260e08152610fbc81611f40565b602081519101206105db612594565b6001600160a01b038381169116036106265715610ff857610623926001600160a01b03908116911661293c565b610623926001600160a01b0390811691166128ee565b634e487b7160e01b8d52601160045260248dfd5b7f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d691610f3b565b8480fd5b8380fd5b5080fd5b50346103085780600319360112610308576005546040516001600160a01b039091168152602090f35b50346103085780600319360112610308576020601b54604051908152f35b5034610308578060031936011261030857601454604080516001600160801b038316815260809290921c602083015290f35b50346103085780600319360112610308576020602e54604051908152f35b503461030857604036600319011261030857611113611109611d4a565b60243590336128ee565b602060405160018152f35b5034610308576020366003190112610308576020906040906001600160a01b03611146611d4a565b168152600483522054604051908152f35b5034610308578060031936011261030857600f546040516001600160a01b039091168152602090f35b503461030857806003193601126103085761033d604051610df9816111a481611e8a565b0382611f77565b50346103085760203660031901126103085760043590600982101561030857602060ff6111d784611e21565b54166040519015158152f35b5034610308576020366003190112610308576020906040906001600160a01b0361120b611d4a565b168152600183522054604051908152f35b5034610308578060031936011261030857600a546040516001600160a01b039091168152602090f35b50346103085780600319360112610308576020601c54604051908152f35b503461030857806003193601126103085760206001600160401b03602d5460401c16604051908152f35b503461030857806003193601126103085760206001600160401b03602d5416604051908152f35b503461030857806003193601126103085760206001600160401b03602f5416604051908152f35b503461030857806003193601126103085760208054604051908152f35b50346103085780600319360112610308576006546001600160a01b03908181163381900361136257806005549384167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08680a36001600160a01b0319928316176005551660065580f35b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b50346103085780600319360112610308576020602954604051908152f35b5034610308576020366003190112610308576020906040906001600160a01b036113ec611d4a565b168152601783522054604051908152f35b50346103085780600319360112610308576020601554604051908152f35b50346103085780600319360112610308576020600e54604051908152f35b50346103085780600319360112610308576020601654604051908152f35b5034610308576060366003190112610308576020610d5c6044356024356004356120c8565b50346103085780600319360112610308576020601154604051908152f35b5034610308578060031936011261030857600d546040516001600160a01b039091168152602090f35b50346103085780600319360112610308576020601254604051908152f35b50346103085780600319360112610308576020610d5c612594565b50346103085780600319360112610308576020601954604051908152f35b50346103085780600319360112610308576020601354604051908152f35b5034610308578060031936011261030857808060018060a01b03600d5416604051602081019063313ce56760e01b82526004815261157581611f0f565b51915afa90611582612993565b91806115bf575b156115b45760208280518101031261030857506115a9602080920161275c565b60ff60405191168152f35b5050602060126115a9565b506020825114611589565b5034610308576060366003190112610308576115e4611d4a565b906115ed611d65565b604435918261162b575b506040519182526001600160a01b03908116921690600080516020612b8f83398151915290602090a3602060405160018152f35b6001600160a01b03848116808352600160209081526040842054928690611654828610156126be565b861693848403611669575b50505050506115f7565b8386526002835260408087203388528452862054600181016116d3575b50926001602096936116b18794604097610c9f600080516020612b8f8339815191529c9a1515612703565b92855252838320558152206116c78582546120a2565b9055913880858161165f565b9091811061172757926001602096936116b18a600080516020612b8f8339815191529a98956117048260409a612095565b86895260028552898920338a528552898920559497509497995050939650611686565b60405162461bcd60e51b815260048101849052601860248201527745524332303a20616c6c6f77616e636520746f6f206c6f7760401b6044820152606490fd5b50346103085761177636611dd2565b9083959495421161067f576001600160a01b03878116808a52600460205260408a208054919692959290600019831461066b57826118189694928d92600161060c98960190556040519160208301937f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d6855260408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e081526105d081611f40565b160361062657610623926128ee565b5034610308576020366003190112610308576020906040906001600160a01b0361184f611d4a565b168152601883522054604051908152f35b5034610308578060031936011261030857602060255460801c604051908152f35b5034610308576040366003190112610308576004356009811015611051576118a7611dc3565b6008549091906001600160a01b0316330361195d5760ff6118c782611e21565b5416151591151591821461192357808260ff6118e561191394611e21565b54161515827feeec81de25875ce1725479bb76f720a8defdb43dea041919ae37bb4aae9847c08780a4611e21565b9060ff8019835416911617905580f35b60405162461bcd60e51b81526020600482015260126024820152714d61726b65743a2073616d6520737461746560701b6044820152606490fd5b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881d5b985d5d1a1bdc9a5e995960621b6044820152606490fd5b5034610308576040366003190112610308576111136119b6611d4a565b602435903361293c565b5034610308576060366003190112610308576119da611d4a565b6119e2611dc3565b60443590811515820361104d5760018060a01b03928391611a0883600554163314611fb3565b15611aac571690811590811591611aa4575b5015611a6757806005549283167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08580a36001600160a01b03199182161760055560068054909116905580f35b60405162461bcd60e51b81526020600482015260156024820152744f776e61626c653a207a65726f206164647265737360581b6044820152606490fd5b905038611a1a565b9150501660018060a01b0319600654161760065580f35b5034610308578060031936011261030857808060018060a01b03600b541660405160208101906306fdde0360e01b825260048152611b0081611f0f565b51915afa611b0c612993565b915015611b6957611b1f61033d91612a1a565b610df96034604051809373546170696f63612053696e67756c61726974792d60601b6020830152611b598151809260208686019101611d7b565b8101036014810184520182611f77565b5061033d611b756129c3565b611b1f565b5034610308578060031936011261030857600f546040805163d6d7d52560e01b8152602060048201529182906001600160a01b0316818581611bbe60248201611e8a565b03925af18015611cf75782918391611cb7575b508115611c58578015611c1c57807f9f9192b5edb17356c524e08d9e025c8e2f6307e6ea52fb7968faa3081f51c3c86040948260115580a25b42601355825191151582526020820152f35b60405162461bcd60e51b81526020600482015260146024820152734d61726b65743a20696e76616c6964207261746560601b6044820152606490fd5b509050611c6a601354601254906120a2565b4211611c7b57604090601154611c0a565b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881c985d19481d1bdbc81bdb1960621b6044820152606490fd5b9150506040813d604011611cef575b81611cd360409383611f77565b81010312611051576020611ce682612352565b91015138611bd1565b3d9150611cc6565b6040513d84823e3d90fd5b905034611051576040366003190112611051576040602092611d22611d4a565b611d2a611d65565b6001600160a01b0391821683526003865283832091168252845220548152f35b600435906001600160a01b0382168203611d6057565b600080fd5b602435906001600160a01b0382168203611d6057565b60005b838110611d8e5750506000910152565b8181015183820152602001611d7e565b90602091611db781518092818552858086019101611d7b565b601f01601f1916010190565b602435908115158203611d6057565b60e0906003190112611d60576001600160a01b03906004358281168103611d6057916024359081168103611d605790604435906064359060843560ff81168103611d60579060a4359060c43590565b6009811015611e3a576000526007602052604060002090565b634e487b7160e01b600052602160045260246000fd5b90600182811c92168015611e80575b6020831014611e6a57565b634e487b7160e01b600052602260045260246000fd5b91607f1691611e5f565b60105460009291611e9a82611e50565b908181526001928381169081600014611ef45750600114611eba57505050565b9092935060106000526020928360002092846000945b838610611ee05750505050010190565b805485870183015294019385908201611ed0565b91935050602093945060ff191683830152151560051b010190565b604081019081106001600160401b03821117611f2a57604052565b634e487b7160e01b600052604160045260246000fd5b61010081019081106001600160401b03821117611f2a57604052565b608081019081106001600160401b03821117611f2a57604052565b90601f801991011681019081106001600160401b03821117611f2a57604052565b6001600160401b038111611f2a57601f01601f191660200190565b15611fba57565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b1561200557565b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881b9bdd081d985b1a59607a1b6044820152606490fd5b8181029291811591840414171561205157565b634e487b7160e01b600052601160045260246000fd5b8115612071570490565b634e487b7160e01b600052601260045260246000fd5b604d811161205157600a0a90565b9190820391821161205157565b9190820180921161205157565b8181039291600013801582851316918412161761205157565b60145491929161211191612102916120f8916120ee906001600160801b0383169061203e565b9060801c90612067565b93601f549061203e565b61210b83612087565b90612067565b8083106121d9576121256121619184612095565b9161215c61215661214d601e5461214761213e86612087565b602054906120a2565b9061203e565b61210b84612087565b91612087565b6120af565b6509184e72a0009081810291818305149015171561205157670de0b6b3a76400009182810292818405149015171561205157801561207157600160ff1b9180831460001983141661205157059060008212156121d257811461205157600003905b8082116121cd575090565b905090565b50906121c2565b505050600090565b9160018060a01b0380931691600093838552602060178152604091828720549081156123455783518481018181106001600160401b0382111761233157855288815288848083019382855261223789151561235f565b600954166064600c548c85526018845289852054928a51958694859363442c159960e01b85526004850152602484015260448301525afa908115612327578a916122f4575b506122e89798999492601894926122cb6122b68a6122b16122a86122d497620186a0602254049061203e565b601e549061203e565b612067565b915191946001600160801b039283169061203e565b91511690612067565b8181106122ec57035b9783525220546123ab565b9091565b5050826122dd565b90508481813d8311612320575b61230b8183611f77565b8101031261231c57516122e861227c565b8980fd5b503d612301565b86513d8c823e3d90fd5b634e487b7160e01b8a52604160045260248afd5b5086955085949350505050565b51908115158203611d6057565b1561236657565b60405162461bcd60e51b815260206004820152601e60248201527f4d61726b65743a2065786368616e676552617465206e6f742076616c696400006044820152606490fd5b6123b682151561235f565b602060018060a01b0360095416916064600c54604051948593849263442c159960e01b845260048401526024830152600060448301525afa90811561245657600091612423575b50906122b161240f926022549061203e565b620186a061241f601e548361203e565b0491565b906020823d821161244e575b8161243c60209383611f77565b810103126103085750516122b16123fd565b3d915061242f565b6040513d6000823e3d90fd5b6001600160a01b03166000818152601860205260408120549092612485916123ab565b91835260176020526040832054801561258e57811561258e5781811061258e5782811015612584576014546124ce918391610c9f916120ee906001600160801b0383169061203e565b90620186a09283830292808404851490151715612570576124f3929161210b91612095565b91601b5491601c549361250685856120af565b80820291848212600160ff1b82141661257057818305149015171561255c570581848201948512911290801582169115161761254857508082126121cd575090565b634e487b7160e01b81526011600452602490fd5b634e487b7160e01b83526011600452602483fd5b634e487b7160e01b85526011600452602485fd5b50505050601b5490565b50505090565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03161480612695575b156125ef577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f000000000000000000000000000000000000000000000000000000000000000082527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a0815260c081018181106001600160401b03821117611f2a5760405251902090565b507f000000000000000000000000000000000000000000000000000000000000000046146125c6565b156126c557565b60405162461bcd60e51b815260206004820152601660248201527545524332303a2062616c616e636520746f6f206c6f7760501b6044820152606490fd5b1561270a57565b60405162461bcd60e51b815260206004820152601660248201527545524332303a206e6f207a65726f206164647265737360501b6044820152606490fd5b51906001600160a01b0382168203611d6057565b519060ff82168203611d6057565b6005811015611e3a578061277b5750565b600181036127c35760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b6044820152606490fd5b600281036128105760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606490fd5b60031461281957565b60405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608490fd5b9291906fa2a8918ca85bafe22016d0b997e4df60600160ff1b0383116128e25791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa156128d55781516001600160a01b038116156128cf579190565b50600190565b50604051903d90823e3d90fd5b50505050600090600390565b7fe50de2333c10a9502fcb1d8ae13a51bbf423153dfc63c2b8997665b32154afc360018060a01b038092169160009083825260036020526040822094169384825260205284604082205580a4565b909160207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259160018060a01b03809416938460005260028352604060002095169485600052825280604060002055604051908152a3565b3d156129be573d906129a482611f98565b916129b26040519384611f77565b82523d6000602084013e565b606090565b604051906129d082611f0f565b60038252623f3f3f60e81b6020830152565b9081518110156129f3570160200190565b634e487b7160e01b600052603260045260246000fd5b60ff1660ff81146120515760010190565b805160408110612a9557508051810190602081818401930312611d60576020810151906001600160401b038211611d60570181603f82011215611d60576020810151612a6581611f98565b92612a736040519485611f77565b81845260408284010111611d6057612a92916040602085019101611d7b565b90565b602092908303612b83576000805b60ff81168581109081612b64575b5015612ac557612ac090612a09565b612aa3565b9260ff80941692612ad584611f98565b93612ae36040519586611f77565b808552612af2601f1991611f98565b013687860137825b85811687811080612b47575b15612b3c57612b379190612b316001600160f81b0319612b2683886129e2565b5116871a91886129e2565b53612a09565b612afa565b505094505050905090565b506001600160f81b0319612b5b82866129e2565b51161515612b06565b6001600160f81b03199150612b7990866129e2565b5116151538612ab1565b915050612a926129c356feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220f3bb0da6214bb11cc58a28e091816300a55b66a0dfd3db7e2a2574fdc9fe1d7164736f6c63430008120033", + "deployedBytecode": "0x608080604052600436101561001357600080fd5b600090813560e01c908162a02a2014611d025750806302ce728f14611b7a57806306fdde0314611ac3578063078dfbe7146119c0578063095ea7b3146119995780630c4e84f01461188157806318160ddd146118605780631c9e379b146118275780631da8bf101461176757806323b872dd146115ca578063313ce56714611538578063331960ff1461151a57806334d441d0146114fc5780633644e515146114e157806337b6b7b9146114c357806338d52e0f1461149a5780633ba0b9a91461147c5780633f741adb1461145757806340626d8b1461143957806344de240a1461141b578063473e3ce7146113fd57806348e4163e146113c45780634d7f2a34146113a65780634e71e0c8146112f8578063529898f2146112db57806352f353eb146112b4578063551402321461128d57806355c2ab941461126357806357935462146112455780636c3d8b8f1461121c57806370a08231146111e357806372778547146111ab57806374645ff3146111805780637dc0d1d0146111575780637ecebe001461111e5780637fa0b84e146110ec578063821226e8146110ce5780638285ef401461109c5780638c5d0ed31461107e5780638da5cb5b14611055578063910dd7c814610e3c578063959916dc14610e1e57806395d89b4114610d6457806399a9702814610d345780639c5d719214610d165780639e15e89f14610cdb578063a9059cbb14610bf8578063b0e21e8a14610bda578063b27c0e7414610b9f578063bb4cfe3b14610b81578063ce8849ed14610b58578063d3fb2a38146106c4578063d505accf1461051f578063d8dfeb45146104f6578063da863f0e146104cd578063dd62ed3e14610482578063de40657714610459578063e0996cb61461043b578063e30c397814610412578063ea64dd56146103f4578063eec0f42e146103d6578063ef2b234a1461035f578063f42760b714610341578063f9557ccb1461030b5763ffe04c66146102eb57600080fd5b346103085780600319360112610308576020602a54604051908152f35b80fd5b5034610308578060031936011261030857602554604080516001600160801b038316815260809290921c602083015290f35b0390f35b50346103085780600319360112610308576020602b54604051908152f35b5034610308576020366003190112610308576004356001600160a01b03818116918290036103d25761039681600554163314611fb3565b816021549182167ffb4fd7114609dd603b57adbc2082205bfbbcabf9265c4b437b472f5c592b8cd78580a36001600160a01b0319161760215580f35b8280fd5b50346103085780600319360112610308576020600c54604051908152f35b50346103085780600319360112610308576020601f54604051908152f35b50346103085780600319360112610308576006546040516001600160a01b039091168152602090f35b50346103085780600319360112610308576020601d54604051908152f35b50346103085780600319360112610308576009546040516001600160a01b039091168152602090f35b50346103085760403660031901126103085760406020916104a1611d4a565b6104a9611d65565b6001600160a01b039182168352600285528383209116825283522054604051908152f35b50346103085780600319360112610308576021546040516001600160a01b039091168152602090f35b5034610308578060031936011261030857600b546040516001600160a01b039091168152602090f35b50346103085761052e36611dd2565b9083959495421161067f576001600160a01b03878116808a52600460205260408a208054919692959290600019831461066b57826106149694928d92600161060c98960190556040519160208301937f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e266855260408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e081526105d081611f40565b5190206105db612594565b9060405190602082019261190160f01b8452602283015260428201526042815261060481611f5c565b519020612869565b91909161276a565b1603610626576106239261293c565b80f35b60405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152606490fd5b634e487b7160e01b8c52601160045260248cfd5b60405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b503461030857610160366003190112610308576001600160a01b03600435818116908190036103d2576024916001600160401b038335818111610b545736602382011215610b54578060040135918211610b545736858383010111610b545760443593838516809503610b505761074084600554163314611fb3565b80610b12575b508482610994575b50505081610954575b50506064358061093c575b5060843580610924575b5060a4358061090d575b5060c435806108e9575b5060e435806108c5575b506101043580610894575b506101243580610821575b506101443590816107af578280f35b601e5482106107c25750601f5538808280f35b60849060326040519162461bcd60e51b8352602060048401528201527f4d61726b65743a206c69717569646174696f6e436f6c6c61746572616c697a616044820152711d1a5bdb94985d19481d1bdbc81cdb585b1b60721b6064820152fd5b610830620186a0821115611ffe565b601f54811161084257601e55386107a0565b60405162461bcd60e51b8152602060048201526025818401527f4d61726b65743a20636f6c6c61746572616c697a6174696f6e5261746520746f6044820152646f2062696760d81b6064820152608490fd5b806016547fae6e0ab3b95f0a53ff9660a390ccedcbbf1f2355dce974a9841af106fddcfaba8580a360165538610795565b6108d3620186a08210611ffe565b6108e0601b548211611ffe565b601c553861078a565b6108f7620186a08210611ffe565b610904601c548210611ffe565b601b5538610780565b61091b620186a08210611ffe565b601d5538610776565b610933620186a0821115611ffe565b601a553861076c565b61094b620186a0821115611ffe565b60195538610762565b816008549182167f5a62d22209e370e38eea92cfddcd228e656e6ec139243392a760a7769f5877fd8680a36001600160a01b031916176008553880610757565b82916109a1601054611e50565b601f8111610aa1575b508790601f8411600114610a0f578893610a02575b5050508160011b916000199060031b1c1916176010555b7fa6f004921c944d4b8bf6e38462b00f36a58d62495d56b51f571ab78f732c98158480a138808461074e565b01013590508438806109bf565b60108952601f19841694507f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae67292509087908960205b878210610a825750508460019610610a66575b50505050811b016010556109d6565b60001960f88660031b161c199201013516905538808681610a57565b8285019093013585556001949094019389929182019190810190610a44565b6010895290925090507f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae672601f840160051c810160208510610b0b575b91849391601f8994920160051c01905b818110610afa57506109aa565b898155859450889350600101610aed565b5080610add565b600f80546001600160a01b0319169190911790557f0b2d6eb667d0522c3eb86e4288afecae6c11591ffd1345d4d12407e0598bca9b8680a138610746565b8680fd5b8580fd5b50346103085780600319360112610308576008546040516001600160a01b039091168152602090f35b50346103085780600319360112610308576020601e54604051908152f35b50346103085780600319360112610308576060602454604051906001600160401b0380821683528160401c16602083015260801c6040820152f35b50346103085780600319360112610308576020601a54604051908152f35b503461030857604036600319011261030857610c12611d4a565b60243580928115801590610cc9575b610c59575b50506040519182526001600160a01b0316903390600080516020612b8f83398151915290602090a3602060405160018152f35b33815260016020526040812054610c72838210156126be565b6001600160a01b0384169033829003610c8d575b5050610c26565b604093610ca491610c9f841515612703565b612095565b338352600160205283832055815220610cbe8382546120a2565b905581388080610c86565b50336001600160a01b03841614610c21565b5034610308576040366003190112610308576060610d03610cfa611d4a565b602435906121e1565b9060405192835260208301526040820152f35b50346103085780600319360112610308576020602c54604051908152f35b5034610308576040366003190112610308576020610d5c610d53611d4a565b60243590612462565b604051908152f35b5034610308578060031936011261030857808060018060a01b03600b541660405160208101906395d89b4160e01b825260048152610da181611f0f565b51915afa610dad612993565b915015610e0d57610dc061033d91612a1a565b610df96023604051809362746d2d60e81b6020830152610de98151809260208686019101611d7b565b8101036003810184520182611f77565b604051918291602083526020830190611d9e565b5061033d610e196129c3565b610dc0565b50346103085780600319360112610308576020603054604051908152f35b5034610308576040366003190112610308576004356001600160401b038111611051573660238201121561105157806004013582610e7982611f98565b92610e876040519485611f77565b828452602084019236602482840101116103d2578060246020930185378401015260243561ffff8116810361104d5761010091828480518101031261104957610ecf90612352565b610edb60408501612748565b91610ee860608601612748565b9460808101519460a082015192610f0160c0840161275c565b9160e08401519301519380421161067f578515611022577f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e266915b6001600160a01b0388168b52600460205260408b2080549190600019831461100e579161ffff610fcb9896949261060c98969460018401905560405194602086015216604084015260018060a01b038a16606084015260018060a01b038c1660808401528a60a084015260c083015260e082015260e08152610fbc81611f40565b602081519101206105db612594565b6001600160a01b038381169116036106265715610ff857610623926001600160a01b03908116911661293c565b610623926001600160a01b0390811691166128ee565b634e487b7160e01b8d52601160045260248dfd5b7f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d691610f3b565b8480fd5b8380fd5b5080fd5b50346103085780600319360112610308576005546040516001600160a01b039091168152602090f35b50346103085780600319360112610308576020601b54604051908152f35b5034610308578060031936011261030857601454604080516001600160801b038316815260809290921c602083015290f35b50346103085780600319360112610308576020602e54604051908152f35b503461030857604036600319011261030857611113611109611d4a565b60243590336128ee565b602060405160018152f35b5034610308576020366003190112610308576020906040906001600160a01b03611146611d4a565b168152600483522054604051908152f35b5034610308578060031936011261030857600f546040516001600160a01b039091168152602090f35b503461030857806003193601126103085761033d604051610df9816111a481611e8a565b0382611f77565b50346103085760203660031901126103085760043590600982101561030857602060ff6111d784611e21565b54166040519015158152f35b5034610308576020366003190112610308576020906040906001600160a01b0361120b611d4a565b168152600183522054604051908152f35b5034610308578060031936011261030857600a546040516001600160a01b039091168152602090f35b50346103085780600319360112610308576020601c54604051908152f35b503461030857806003193601126103085760206001600160401b03602d5460401c16604051908152f35b503461030857806003193601126103085760206001600160401b03602d5416604051908152f35b503461030857806003193601126103085760206001600160401b03602f5416604051908152f35b503461030857806003193601126103085760208054604051908152f35b50346103085780600319360112610308576006546001600160a01b03908181163381900361136257806005549384167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08680a36001600160a01b0319928316176005551660065580f35b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b50346103085780600319360112610308576020602954604051908152f35b5034610308576020366003190112610308576020906040906001600160a01b036113ec611d4a565b168152601783522054604051908152f35b50346103085780600319360112610308576020601554604051908152f35b50346103085780600319360112610308576020600e54604051908152f35b50346103085780600319360112610308576020601654604051908152f35b5034610308576060366003190112610308576020610d5c6044356024356004356120c8565b50346103085780600319360112610308576020601154604051908152f35b5034610308578060031936011261030857600d546040516001600160a01b039091168152602090f35b50346103085780600319360112610308576020601254604051908152f35b50346103085780600319360112610308576020610d5c612594565b50346103085780600319360112610308576020601954604051908152f35b50346103085780600319360112610308576020601354604051908152f35b5034610308578060031936011261030857808060018060a01b03600d5416604051602081019063313ce56760e01b82526004815261157581611f0f565b51915afa90611582612993565b91806115bf575b156115b45760208280518101031261030857506115a9602080920161275c565b60ff60405191168152f35b5050602060126115a9565b506020825114611589565b5034610308576060366003190112610308576115e4611d4a565b906115ed611d65565b604435918261162b575b506040519182526001600160a01b03908116921690600080516020612b8f83398151915290602090a3602060405160018152f35b6001600160a01b03848116808352600160209081526040842054928690611654828610156126be565b861693848403611669575b50505050506115f7565b8386526002835260408087203388528452862054600181016116d3575b50926001602096936116b18794604097610c9f600080516020612b8f8339815191529c9a1515612703565b92855252838320558152206116c78582546120a2565b9055913880858161165f565b9091811061172757926001602096936116b18a600080516020612b8f8339815191529a98956117048260409a612095565b86895260028552898920338a528552898920559497509497995050939650611686565b60405162461bcd60e51b815260048101849052601860248201527745524332303a20616c6c6f77616e636520746f6f206c6f7760401b6044820152606490fd5b50346103085761177636611dd2565b9083959495421161067f576001600160a01b03878116808a52600460205260408a208054919692959290600019831461066b57826118189694928d92600161060c98960190556040519160208301937f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d6855260408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e081526105d081611f40565b160361062657610623926128ee565b5034610308576020366003190112610308576020906040906001600160a01b0361184f611d4a565b168152601883522054604051908152f35b5034610308578060031936011261030857602060255460801c604051908152f35b5034610308576040366003190112610308576004356009811015611051576118a7611dc3565b6008549091906001600160a01b0316330361195d5760ff6118c782611e21565b5416151591151591821461192357808260ff6118e561191394611e21565b54161515827feeec81de25875ce1725479bb76f720a8defdb43dea041919ae37bb4aae9847c08780a4611e21565b9060ff8019835416911617905580f35b60405162461bcd60e51b81526020600482015260126024820152714d61726b65743a2073616d6520737461746560701b6044820152606490fd5b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881d5b985d5d1a1bdc9a5e995960621b6044820152606490fd5b5034610308576040366003190112610308576111136119b6611d4a565b602435903361293c565b5034610308576060366003190112610308576119da611d4a565b6119e2611dc3565b60443590811515820361104d5760018060a01b03928391611a0883600554163314611fb3565b15611aac571690811590811591611aa4575b5015611a6757806005549283167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08580a36001600160a01b03199182161760055560068054909116905580f35b60405162461bcd60e51b81526020600482015260156024820152744f776e61626c653a207a65726f206164647265737360581b6044820152606490fd5b905038611a1a565b9150501660018060a01b0319600654161760065580f35b5034610308578060031936011261030857808060018060a01b03600b541660405160208101906306fdde0360e01b825260048152611b0081611f0f565b51915afa611b0c612993565b915015611b6957611b1f61033d91612a1a565b610df96034604051809373546170696f63612053696e67756c61726974792d60601b6020830152611b598151809260208686019101611d7b565b8101036014810184520182611f77565b5061033d611b756129c3565b611b1f565b5034610308578060031936011261030857600f546040805163d6d7d52560e01b8152602060048201529182906001600160a01b0316818581611bbe60248201611e8a565b03925af18015611cf75782918391611cb7575b508115611c58578015611c1c57807f9f9192b5edb17356c524e08d9e025c8e2f6307e6ea52fb7968faa3081f51c3c86040948260115580a25b42601355825191151582526020820152f35b60405162461bcd60e51b81526020600482015260146024820152734d61726b65743a20696e76616c6964207261746560601b6044820152606490fd5b509050611c6a601354601254906120a2565b4211611c7b57604090601154611c0a565b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881c985d19481d1bdbc81bdb1960621b6044820152606490fd5b9150506040813d604011611cef575b81611cd360409383611f77565b81010312611051576020611ce682612352565b91015138611bd1565b3d9150611cc6565b6040513d84823e3d90fd5b905034611051576040366003190112611051576040602092611d22611d4a565b611d2a611d65565b6001600160a01b0391821683526003865283832091168252845220548152f35b600435906001600160a01b0382168203611d6057565b600080fd5b602435906001600160a01b0382168203611d6057565b60005b838110611d8e5750506000910152565b8181015183820152602001611d7e565b90602091611db781518092818552858086019101611d7b565b601f01601f1916010190565b602435908115158203611d6057565b60e0906003190112611d60576001600160a01b03906004358281168103611d6057916024359081168103611d605790604435906064359060843560ff81168103611d60579060a4359060c43590565b6009811015611e3a576000526007602052604060002090565b634e487b7160e01b600052602160045260246000fd5b90600182811c92168015611e80575b6020831014611e6a57565b634e487b7160e01b600052602260045260246000fd5b91607f1691611e5f565b60105460009291611e9a82611e50565b908181526001928381169081600014611ef45750600114611eba57505050565b9092935060106000526020928360002092846000945b838610611ee05750505050010190565b805485870183015294019385908201611ed0565b91935050602093945060ff191683830152151560051b010190565b604081019081106001600160401b03821117611f2a57604052565b634e487b7160e01b600052604160045260246000fd5b61010081019081106001600160401b03821117611f2a57604052565b608081019081106001600160401b03821117611f2a57604052565b90601f801991011681019081106001600160401b03821117611f2a57604052565b6001600160401b038111611f2a57601f01601f191660200190565b15611fba57565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b1561200557565b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881b9bdd081d985b1a59607a1b6044820152606490fd5b8181029291811591840414171561205157565b634e487b7160e01b600052601160045260246000fd5b8115612071570490565b634e487b7160e01b600052601260045260246000fd5b604d811161205157600a0a90565b9190820391821161205157565b9190820180921161205157565b8181039291600013801582851316918412161761205157565b60145491929161211191612102916120f8916120ee906001600160801b0383169061203e565b9060801c90612067565b93601f549061203e565b61210b83612087565b90612067565b8083106121d9576121256121619184612095565b9161215c61215661214d601e5461214761213e86612087565b602054906120a2565b9061203e565b61210b84612087565b91612087565b6120af565b6509184e72a0009081810291818305149015171561205157670de0b6b3a76400009182810292818405149015171561205157801561207157600160ff1b9180831460001983141661205157059060008212156121d257811461205157600003905b8082116121cd575090565b905090565b50906121c2565b505050600090565b9160018060a01b0380931691600093838552602060178152604091828720549081156123455783518481018181106001600160401b0382111761233157855288815288848083019382855261223789151561235f565b600954166064600c548c85526018845289852054928a51958694859363442c159960e01b85526004850152602484015260448301525afa908115612327578a916122f4575b506122e89798999492601894926122cb6122b68a6122b16122a86122d497620186a0602254049061203e565b601e549061203e565b612067565b915191946001600160801b039283169061203e565b91511690612067565b8181106122ec57035b9783525220546123ab565b9091565b5050826122dd565b90508481813d8311612320575b61230b8183611f77565b8101031261231c57516122e861227c565b8980fd5b503d612301565b86513d8c823e3d90fd5b634e487b7160e01b8a52604160045260248afd5b5086955085949350505050565b51908115158203611d6057565b1561236657565b60405162461bcd60e51b815260206004820152601e60248201527f4d61726b65743a2065786368616e676552617465206e6f742076616c696400006044820152606490fd5b6123b682151561235f565b602060018060a01b0360095416916064600c54604051948593849263442c159960e01b845260048401526024830152600060448301525afa90811561245657600091612423575b50906122b161240f926022549061203e565b620186a061241f601e548361203e565b0491565b906020823d821161244e575b8161243c60209383611f77565b810103126103085750516122b16123fd565b3d915061242f565b6040513d6000823e3d90fd5b6001600160a01b03166000818152601860205260408120549092612485916123ab565b91835260176020526040832054801561258e57811561258e5781811061258e5782811015612584576014546124ce918391610c9f916120ee906001600160801b0383169061203e565b90620186a09283830292808404851490151715612570576124f3929161210b91612095565b91601b5491601c549361250685856120af565b80820291848212600160ff1b82141661257057818305149015171561255c570581848201948512911290801582169115161761254857508082126121cd575090565b634e487b7160e01b81526011600452602490fd5b634e487b7160e01b83526011600452602483fd5b634e487b7160e01b85526011600452602485fd5b50505050601b5490565b50505090565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03161480612695575b156125ef577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f000000000000000000000000000000000000000000000000000000000000000082527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a0815260c081018181106001600160401b03821117611f2a5760405251902090565b507f000000000000000000000000000000000000000000000000000000000000000046146125c6565b156126c557565b60405162461bcd60e51b815260206004820152601660248201527545524332303a2062616c616e636520746f6f206c6f7760501b6044820152606490fd5b1561270a57565b60405162461bcd60e51b815260206004820152601660248201527545524332303a206e6f207a65726f206164647265737360501b6044820152606490fd5b51906001600160a01b0382168203611d6057565b519060ff82168203611d6057565b6005811015611e3a578061277b5750565b600181036127c35760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b6044820152606490fd5b600281036128105760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606490fd5b60031461281957565b60405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608490fd5b9291906fa2a8918ca85bafe22016d0b997e4df60600160ff1b0383116128e25791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa156128d55781516001600160a01b038116156128cf579190565b50600190565b50604051903d90823e3d90fd5b50505050600090600390565b7fe50de2333c10a9502fcb1d8ae13a51bbf423153dfc63c2b8997665b32154afc360018060a01b038092169160009083825260036020526040822094169384825260205284604082205580a4565b909160207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259160018060a01b03809416938460005260028352604060002095169485600052825280604060002055604051908152a3565b3d156129be573d906129a482611f98565b916129b26040519384611f77565b82523d6000602084013e565b606090565b604051906129d082611f0f565b60038252623f3f3f60e81b6020830152565b9081518110156129f3570160200190565b634e487b7160e01b600052603260045260246000fd5b60ff1660ff81146120515760010190565b805160408110612a9557508051810190602081818401930312611d60576020810151906001600160401b038211611d60570181603f82011215611d60576020810151612a6581611f98565b92612a736040519485611f77565b81845260408284010111611d6057612a92916040602085019101611d7b565b90565b602092908303612b83576000805b60ff81168581109081612b64575b5015612ac557612ac090612a09565b612aa3565b9260ff80941692612ad584611f98565b93612ae36040519586611f77565b808552612af2601f1991611f98565b013687860137825b85811687811080612b47575b15612b3c57612b379190612b316001600160f81b0319612b2683886129e2565b5116871a91886129e2565b53612a09565b612afa565b505094505050905090565b506001600160f81b0319612b5b82866129e2565b51161515612b06565b6001600160f81b03199150612b7990866129e2565b5116151538612ab1565b915050612a926129c356feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220f3bb0da6214bb11cc58a28e091816300a55b66a0dfd3db7e2a2574fdc9fe1d7164736f6c63430008120033", "linkReferences": {}, "deployedLinkReferences": {} } diff --git a/src/artifacts/tapioca-bar/SimpleLeverageExecutor.json b/src/artifacts/tapioca-bar/SimpleLeverageExecutor.json new file mode 100644 index 00000000..176acd63 --- /dev/null +++ b/src/artifacts/tapioca-bar/SimpleLeverageExecutor.json @@ -0,0 +1,250 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "SimpleLeverageExecutor", + "sourceName": "contracts/markets/leverage/SimpleLeverageExecutor.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "contract YieldBox", + "name": "_yb", + "type": "address" + }, + { + "internalType": "contract ISwapper", + "name": "_swapper", + "type": "address" + }, + { + "internalType": "contract ICluster", + "name": "_cluster", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "previousOwner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "OwnershipTransferred", + "type": "event" + }, + { + "inputs": [], + "name": "claimOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "cluster", + "outputs": [ + { + "internalType": "contract ICluster", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "assetId", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "collateralId", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "collateralShareIn", + "type": "uint256" + }, + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "getAsset", + "outputs": [ + { + "internalType": "uint256", + "name": "assetAmountOut", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "assetId", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "collateralId", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "assetShareIn", + "type": "uint256" + }, + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "getCollateral", + "outputs": [ + { + "internalType": "uint256", + "name": "collateralAmountOut", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "owner", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "pendingOwner", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract ICluster", + "name": "_cluster", + "type": "address" + } + ], + "name": "setCluster", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract ISwapper", + "name": "_swapper", + "type": "address" + } + ], + "name": "setSwapper", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "swapper", + "outputs": [ + { + "internalType": "contract ISwapper", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newOwner", + "type": "address" + }, + { + "internalType": "bool", + "name": "direct", + "type": "bool" + }, + { + "internalType": "bool", + "name": "renounce", + "type": "bool" + } + ], + "name": "transferOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "yieldBox", + "outputs": [ + { + "internalType": "contract YieldBox", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "bytecode": "0x60a0346100e157601f610bd238819003918201601f19168301916001600160401b038311848410176100e6578084926060946040528339810103126100e1578051906001600160a01b039081831683036100e1576020810151908282168092036100e157604001519182168092036100e15760008054604051946001600160a01b03199491851693919233907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a3608052836003541617600355826002541617600255339133161717600055610ad590816100fd82396080518160df0152f35b600080fd5b634e487b7160e01b600052604160045260246000fdfe6040608081526004908136101561001557600080fd5b600091823560e01c908163078dfbe714610514578382630e52e714146104da575081632b3297f9146104b1578163437be622146104655781634e71e0c8146103b25781638da5cb5b1461038a57838263927d1df114610186575081639c82f2a41461013657508063dbd01de11461010e578063de406577146100cb5763e30c3978146100a057600080fd5b346100c757816003193601126100c75760015490516001600160a01b039091168152602090f35b5080fd5b50346100c757816003193601126100c757517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b50346100c757816003193601126100c75760025490516001600160a01b039091168152602090f35b8390346100c75760203660031901126100c757356001600160a01b03818116918290036101825761016b908354163314610699565b600380546001600160a01b03191691909117905580f35b8280fd5b92915034610386576101973661062a565b600354929893966001600160a01b03938416969590939092906044906020906101c18a15156106e4565b600254168b5192838092633a304d8b60e21b82528a8a8301528c60248301525afa90811561037c578691610330575b50906102509261020261020a9361079d565b8101906107fa565b929097895180938192633d9545e960e11b8352610140998a9589850160a091949360019360c0830196835260208301526000604083015260608201528260808201520152565b0381895afa94851561032657918795939185938a9896956102f1575b505061028c9087519a8b978896879563efa84c6d60e01b8752860161098a565b03925af19283156102e757602094936102b3575b506102ad90831015610a53565b51908152f35b6102ad9193506102d890833d85116102e0575b6102d0818361076e565b810190610974565b5092906102a0565b503d6102c6565b82513d86823e3d90fd5b61028c929550908161031792903d1061031f575b61030f818361076e565b81019061087f565b93903861026c565b503d610305565b88513d86823e3d90fd5b9190506020823d8211610374575b8161034b6020938361076e565b81010312610370576102509261020261036661020a94610790565b92935050926101f0565b8580fd5b3d915061033e565b8a513d88823e3d90fd5b5050fd5b5050346100c757816003193601126100c757905490516001600160a01b039091168152602090f35b919050346101825782600319360112610182576001546001600160a01b039290918383169190338390036104225750508084549384167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08680a36001600160a01b03199283161783551660015580f35b906020606492519162461bcd60e51b8352820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b8390346100c75760203660031901126100c757356001600160a01b03818116918290036101825761049a908354163314610699565b600280546001600160a01b03191691909117905580f35b5050346100c757816003193601126100c75760035490516001600160a01b039091168152602090f35b92915034610386576104eb3661062a565b600354929893966001600160a01b039384169690939092906044906020906101c18a15156106e4565b905034610182576060366003190112610182576001600160a01b039181358381169291908390036106265760243580151581036103705760443590811515820361062257610566868854163314610699565b15610606578315908115916105fe575b50156105c35750508083549283167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08580a36001600160a01b031991821617825560018054909116905580f35b906020606492519162461bcd60e51b835282015260156024820152744f776e61626c653a207a65726f206164647265737360581b6044820152fd5b905038610576565b5050600180546001600160a01b03191690921790915550819050f35b8680fd5b8480fd5b9060a0600319830112610694576004359160243591604435916064356001600160a01b0381168103610694579160843567ffffffffffffffff9283821161069457806023830112156106945781600401359384116106945760248483010111610694576024019190565b600080fd5b156106a057565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b156106eb57565b60405162461bcd60e51b815260206004820152602360248201527f4c657665726167654578656375746f723a2073776170706572206e6f742076616044820152621b1a5960ea1b6064820152608490fd5b6080810190811067ffffffffffffffff82111761075857604052565b634e487b7160e01b600052604160045260246000fd5b90601f8019910116810190811067ffffffffffffffff82111761075857604052565b5190811515820361069457565b156107a457565b60405162461bcd60e51b815260206004820152602860248201527f4c657665726167654578656375746f723a2073776170706572206e6f742061756044820152671d1a1bdc9a5e995960c21b6064820152608490fd5b91906040838203126106945782359260208082013567ffffffffffffffff9283821161069457019183601f84011215610694578235908111610758576040519361084d601f8301601f191684018661076e565b81855282828501011161069457808260009401838601378301015290565b51906001600160a01b038216820361069457565b809103610140811261069457604080519267ffffffffffffffff9260608501848111868210176107585780845260808212610694576108bd8161073c565b6108c68361086b565b8152602083015160808701526108dd84840161086b565b60a0870152606083015160c087015285526080607f1982011261069457829081516109078161073c565b6080840151815260a0840151602082015260c08401518382015260e08401516060820152602087015260ff190112610694578151928383019081118482101761075857610969916101209184526109616101008201610790565b855201610790565b602083015282015290565b9190826040910312610694576020825192015190565b926060928251604060018060a01b0394858351168852602096838880950151858b0152878482015116848b015201516060890152606083820151805160808b01528481015160a08b01528381015160c08b0152015160e089015201518051151561010088015201511515610120860152610140850152166101608301526101a092836101808401528051809484015260005b848110610a3e575050506101c0916000838284010152601f8019910116010190565b8181018301518482016101c001528201610a1c565b15610a5a57565b60405162461bcd60e51b815260206004820152601c60248201527f4c657665726167654578656375746f723a206e6f7420656e6f756768000000006044820152606490fdfea26469706673582212209546898f07777feecfdd6a94fc2025f1ec3a838e35b31977e511d24b3b2c2b2e64736f6c63430008120033", + "deployedBytecode": "0x6040608081526004908136101561001557600080fd5b600091823560e01c908163078dfbe714610514578382630e52e714146104da575081632b3297f9146104b1578163437be622146104655781634e71e0c8146103b25781638da5cb5b1461038a57838263927d1df114610186575081639c82f2a41461013657508063dbd01de11461010e578063de406577146100cb5763e30c3978146100a057600080fd5b346100c757816003193601126100c75760015490516001600160a01b039091168152602090f35b5080fd5b50346100c757816003193601126100c757517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b50346100c757816003193601126100c75760025490516001600160a01b039091168152602090f35b8390346100c75760203660031901126100c757356001600160a01b03818116918290036101825761016b908354163314610699565b600380546001600160a01b03191691909117905580f35b8280fd5b92915034610386576101973661062a565b600354929893966001600160a01b03938416969590939092906044906020906101c18a15156106e4565b600254168b5192838092633a304d8b60e21b82528a8a8301528c60248301525afa90811561037c578691610330575b50906102509261020261020a9361079d565b8101906107fa565b929097895180938192633d9545e960e11b8352610140998a9589850160a091949360019360c0830196835260208301526000604083015260608201528260808201520152565b0381895afa94851561032657918795939185938a9896956102f1575b505061028c9087519a8b978896879563efa84c6d60e01b8752860161098a565b03925af19283156102e757602094936102b3575b506102ad90831015610a53565b51908152f35b6102ad9193506102d890833d85116102e0575b6102d0818361076e565b810190610974565b5092906102a0565b503d6102c6565b82513d86823e3d90fd5b61028c929550908161031792903d1061031f575b61030f818361076e565b81019061087f565b93903861026c565b503d610305565b88513d86823e3d90fd5b9190506020823d8211610374575b8161034b6020938361076e565b81010312610370576102509261020261036661020a94610790565b92935050926101f0565b8580fd5b3d915061033e565b8a513d88823e3d90fd5b5050fd5b5050346100c757816003193601126100c757905490516001600160a01b039091168152602090f35b919050346101825782600319360112610182576001546001600160a01b039290918383169190338390036104225750508084549384167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08680a36001600160a01b03199283161783551660015580f35b906020606492519162461bcd60e51b8352820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b8390346100c75760203660031901126100c757356001600160a01b03818116918290036101825761049a908354163314610699565b600280546001600160a01b03191691909117905580f35b5050346100c757816003193601126100c75760035490516001600160a01b039091168152602090f35b92915034610386576104eb3661062a565b600354929893966001600160a01b039384169690939092906044906020906101c18a15156106e4565b905034610182576060366003190112610182576001600160a01b039181358381169291908390036106265760243580151581036103705760443590811515820361062257610566868854163314610699565b15610606578315908115916105fe575b50156105c35750508083549283167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08580a36001600160a01b031991821617825560018054909116905580f35b906020606492519162461bcd60e51b835282015260156024820152744f776e61626c653a207a65726f206164647265737360581b6044820152fd5b905038610576565b5050600180546001600160a01b03191690921790915550819050f35b8680fd5b8480fd5b9060a0600319830112610694576004359160243591604435916064356001600160a01b0381168103610694579160843567ffffffffffffffff9283821161069457806023830112156106945781600401359384116106945760248483010111610694576024019190565b600080fd5b156106a057565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b156106eb57565b60405162461bcd60e51b815260206004820152602360248201527f4c657665726167654578656375746f723a2073776170706572206e6f742076616044820152621b1a5960ea1b6064820152608490fd5b6080810190811067ffffffffffffffff82111761075857604052565b634e487b7160e01b600052604160045260246000fd5b90601f8019910116810190811067ffffffffffffffff82111761075857604052565b5190811515820361069457565b156107a457565b60405162461bcd60e51b815260206004820152602860248201527f4c657665726167654578656375746f723a2073776170706572206e6f742061756044820152671d1a1bdc9a5e995960c21b6064820152608490fd5b91906040838203126106945782359260208082013567ffffffffffffffff9283821161069457019183601f84011215610694578235908111610758576040519361084d601f8301601f191684018661076e565b81855282828501011161069457808260009401838601378301015290565b51906001600160a01b038216820361069457565b809103610140811261069457604080519267ffffffffffffffff9260608501848111868210176107585780845260808212610694576108bd8161073c565b6108c68361086b565b8152602083015160808701526108dd84840161086b565b60a0870152606083015160c087015285526080607f1982011261069457829081516109078161073c565b6080840151815260a0840151602082015260c08401518382015260e08401516060820152602087015260ff190112610694578151928383019081118482101761075857610969916101209184526109616101008201610790565b855201610790565b602083015282015290565b9190826040910312610694576020825192015190565b926060928251604060018060a01b0394858351168852602096838880950151858b0152878482015116848b015201516060890152606083820151805160808b01528481015160a08b01528381015160c08b0152015160e089015201518051151561010088015201511515610120860152610140850152166101608301526101a092836101808401528051809484015260005b848110610a3e575050506101c0916000838284010152601f8019910116010190565b8181018301518482016101c001528201610a1c565b15610a5a57565b60405162461bcd60e51b815260206004820152601c60248201527f4c657665726167654578656375746f723a206e6f7420656e6f756768000000006044820152606490fdfea26469706673582212209546898f07777feecfdd6a94fc2025f1ec3a838e35b31977e511d24b3b2c2b2e64736f6c63430008120033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/src/artifacts/tapioca-bar/Singularity.json b/src/artifacts/tapioca-bar/Singularity.json index beb3a306..d11d8207 100644 --- a/src/artifacts/tapioca-bar/Singularity.json +++ b/src/artifacts/tapioca-bar/Singularity.json @@ -123,6 +123,25 @@ "name": "InterestElasticityUpdated", "type": "event" }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "oldVal", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newVal", + "type": "address" + } + ], + "name": "LeverageExecutorSet", + "type": "event" + }, { "anonymous": false, "inputs": [ @@ -1021,19 +1040,9 @@ "name": "supplyAmount", "type": "uint256" }, - { - "internalType": "uint256", - "name": "minAmountOut", - "type": "uint256" - }, - { - "internalType": "contract ISwapper", - "name": "swapper", - "type": "address" - }, { "internalType": "bytes", - "name": "dexData", + "name": "data", "type": "bytes" } ], @@ -1373,6 +1382,19 @@ "stateMutability": "view", "type": "function" }, + { + "inputs": [], + "name": "leverageExecutor", + "outputs": [ + { + "internalType": "contract ILeverageExecutor", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, { "inputs": [], "name": "leverageModule", @@ -2206,19 +2228,9 @@ "name": "share", "type": "uint256" }, - { - "internalType": "uint256", - "name": "minAmountOut", - "type": "uint256" - }, - { - "internalType": "contract ISwapper", - "name": "swapper", - "type": "address" - }, { "internalType": "bytes", - "name": "dexData", + "name": "data", "type": "bytes" } ], @@ -2233,6 +2245,19 @@ "stateMutability": "nonpayable", "type": "function" }, + { + "inputs": [ + { + "internalType": "contract ILeverageExecutor", + "name": "_executor", + "type": "address" + } + ], + "name": "setLeverageExecutor", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, { "inputs": [ { @@ -2637,8 +2662,8 @@ "type": "receive" } ], - "bytecode": "0x6101408060405234620001ea576200001781620001ef565b601381526001602082017f546170696f63612053696e67756c617269747900000000000000000000000000815260206040516200005481620001ef565b8381520192603160f81b845251902091208160e052610100918183524660a0526040519160208301907f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f92838352604085015260608401524660808401523060a084015260a0835260c083019280841060018060401b03851117620001d45760408490525190206080523060c052610120908152600580546001600160a01b0319163390811790915560007f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a362013880601b5562015f90601c55612710601d55612ee06020557f0bd4060688a1800ae986e4840aebc924bb40b5bf44de4583df2257220b54b77c6026557f7d1dc38e60930664f8cbf495da6556ca091d2f92d6550877750c049864b182306027556161a86028556032602f556001603055615e6c92836200020c843960805183613c12015260a05183613ccd015260c05183613bdc015260e05183613c6101525182613c8701525181613c3e0152f35b634e487b7160e01b600052604160045260246000fd5b600080fd5b604081019081106001600160401b03821117620001d45760405256fe6080604052600436101561001b575b361561001957600080fd5b005b60003560e01c8062a02a201461059a57806302ce728f1461059557806306fdde0314610590578063078dfbe71461058b578063095ea7b3146105865780630c4e84f01461058157806318160ddd1461057c5780631c9e379b146105775780631da8bf10146105725780631ee9c8f21461056d57806323b872dd1461056857806325384fd8146105635780632a9399d91461055e578063313ce56714610559578063331960ff1461055457806334d441d01461054f5780633644e5151461054a57806337b6b7b91461054557806338225f111461054057806338d52e0f1461053b5780633ba0b9a9146105365780633f741adb1461053157806340626d8b1461052c57806344de240a14610527578063473e3ce71461052257806348e4163e1461051d5780634d7f2a34146105185780634ddf47d4146105135780634e71e0c81461050e5780635224372c14610509578063529898f21461050457806352f353eb146104ff57806355140232146104fa57806355c2ab94146104f557806357935462146104f057806358db9afe146104eb5780635d5f73ef146104e65780635dfe04e8146104e15780636587adb8146104dc5780636c3d8b8f146104d757806370a08231146104d257806372778547146104cd57806374645ff3146104c85780637dc0d1d0146104c35780637ecebe00146104be5780637fa0b84e146104b9578063821226e8146104b45780638285ef40146104af5780638c5d0ed3146104aa5780638da5cb5b146104a5578063910dd7c8146104a0578063959916dc1461049b57806395d89b411461049657806399a97028146104915780639c5d71921461048c5780639e15e89f14610487578063a28e6b8214610482578063a9059cbb1461047d578063aa7d966514610478578063ae70702e14610473578063af405b4c1461046e578063b0e21e8a14610469578063b25ea8fb14610464578063b27c0e741461045f578063bb4cfe3b1461045a578063bf0b895814610455578063c861a52614610450578063cce19f811461044b578063cd0211eb14610446578063ce8849ed14610441578063d3fb2a381461043c578063d49dffa714610437578063d505accf14610432578063d8dfeb451461042d578063dd62ed3e14610428578063de40657714610423578063e0996cb61461041e578063e30c397814610419578063e5644d8b14610414578063e9a492521461040f578063ea64dd561461040a578063eec0f42e14610405578063f42760b714610400578063f4d93753146103fb578063f5b33dfa146103f6578063f8ba4cff146103f1578063f9557ccb146103ec5763ffe04c660361000e576130fa565b6130c8565b6130af565b613086565b61303c565b61301e565b613000565b612fe2565b612f5e565b612ed5565b612eac565b612e8e565b612e65565b612e29565b612e00565b612d52565b612c6f565b61298a565b612961565b6128fa565b6128a6565b61287d565b6127a6565b612788565b61274d565b6126c0565b6126a2565b61259c565b61248b565b61231a565b612175565b6120cb565b61208d565b61206f565b612044565b611faf565b611f91565b611f16565b611eb2565b611e94565b611e62565b611e44565b611e1a565b611ddd565b611db4565b611cd3565b611b9f565b611b24565b611afb565b611ab2565b611a1a565b6119f1565b61194e565b611930565b611906565b6118df565b6118b8565b61189b565b611822565b611743565b6114ec565b6114ce565b611491565b611473565b611455565b611437565b611413565b6113f5565b6113cc565b6110d7565b61108d565b61106a565b61104c565b61102e565b610f8d565b610eb5565b610e5f565b610d18565b610c1d565b610ad5565b610a48565b610a27565b610930565b6108ec565b6107a9565b6106d6565b610654565b610604565b6001600160a01b038116036105b057565b600080fd5b35906105c08261059f565b565b60409060031901126105b0576004356105da8161059f565b906024356105e78161059f565b90565b6001600160a01b0316600090815260016020526040902090565b346105b0576020610640610617366105c2565b6001600160a01b0391821660009081526003855260408082209290931681526020919091522090565b54604051908152f35b60009103126105b057565b346105b05760003660031901126105b057604061066f6138f1565b825191151582526020820152f35b60005b8381106106905750506000910152565b8181015183820152602001610680565b906020916106b98151809281855285808601910161067d565b601f01601f1916010190565b9060206105e79281815201906106a0565b346105b05760008060031936011261079c57808060018060a01b03600b541660405160208101906306fdde0360e01b82526004815261071481611c4e565b51915afa61072061493d565b9150156107855761076761077561073961078193614a59565b60405173546170696f63612053696e67756c61726974792d60601b6020820152928391603483015b90614926565b03601f198101835282611cb2565b604051918291826106c5565b0390f35b5061078161076761077561079761496d565b610739565b80fd5b801515036105b057565b346105b05760603660031901126105b0576004356107c68161059f565b602435906107d38261079f565b604435916107e08361079f565b6005546001600160a01b0391906107fa9083163314613118565b156108d3578116918215908115916108cb575b501561088e5760055461087c9290610835906001600160a01b03165b6001600160a01b031690565b7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b600680546001600160a01b0319169055005b60405162461bcd60e51b81526020600482015260156024820152744f776e61626c653a207a65726f206164647265737360581b6044820152606490fd5b90503861080d565b60068054919092166001600160a01b0319909116179055005b346105b05760403660031901126105b05761091660043561090c8161059f565b60243590336141e3565b602060405160018152f35b6004359060098210156105b057565b346105b05760403660031901126105b057610949610921565b6024356109558161079f565b6008546001600160a01b031633036109eb576109da8261098961098461097d61001996611b86565b5460ff1690565b151590565b61099884151591821415613395565b6109a461097d83611b86565b6109ad83611b77565b1515827feeec81de25875ce1725479bb76f720a8defdb43dea041919ae37bb4aae9847c0600080a4611b86565b9060ff801983541691151516179055565b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881d5b985d5d1a1bdc9a5e995960621b6044820152606490fd5b346105b05760003660031901126105b057602060245460801c604051908152f35b346105b05760203660031901126105b057600435610a658161059f565b60018060a01b031660005260186020526020604060002054604051908152f35b60ff8116036105b057565b60e09060031901126105b057600435610aa88161059f565b90602435610ab58161059f565b906044359060643590608435610aca81610a85565b9060a4359060c43590565b346105b057610ae336610a90565b9592809594959291924211610bab5761001996610ba693610b9393610b86878a610b7e8b610767610b8b99610b1786614168565b60405195869460208601988991959493909260c09360e08401977f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d685526000602086015260018060a01b038092166040860152166060840152608083015260a08201520152565b519020614112565b61409a565b919091613f7f565b6001600160a01b03838116911614613f1a565b614190565b60405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b9181601f840112156105b0578235916001600160401b0383116105b057602083818601950101116105b057565b346105b05760c03660031901126105b057600435610c3a8161059f565b608435610c468161059f565b60a435906001600160401b0382116105b05761078192610cc8610ccd92610767610c77610cdc963690600401610bf0565b604051958694630f74e47960e11b602087015260018060a01b0380921660248701526024356044870152604435606487015260643560848701521660a485015260c060c485015260e4840191615976565b615cff565b60208082518301019101613a2d565b6040519081529081906020820190565b60609060031901126105b057600435610d048161059f565b90602435610d118161059f565b9060443590565b346105b057610d60600080516020615e17833981519152610d3836610cec565b9291939083610d6f575b6040519384526001600160a01b039081169416929081906020820190565b0390a360405160018152602090f35b610d78856105ea565b54610d8585821015613cf3565b6001600160a01b038281169186918816839003610da5575b505050610d42565b6001600160a01b03881660009081526002602090815260408083203384529091529020610de993610de491548460018201610e11575b50501515613d38565b613482565b610df2866105ea565b55610dfc816105ea565b610e0785825461348f565b9055388481610d9d565b81610de482610e21941015613d7d565b6001600160a01b038b166000908152600260205260409020610e579033905b9060018060a01b0316600052602052604060002090565b553884610ddb565b346105b05760003660031901126105b0576032546040516001600160a01b039091168152602090f35b908160609103126105b05790565b908160e09103126105b05790565b60809060a31901126105b05760a490565b610120806003193601126105b057600435610ecf8161059f565b60443590610edc8261079f565b6001600160401b03906064358281116105b057610efd903690600401610e88565b936084359283116105b057610767610f8261001996610f70610f26610cc8973690600401610e96565b91610f3036610ea4565b95604051998a98632a9399d960e01b60208b015260018060a01b031660248a015260243560448a01521515606489015260848801526101448701906159c8565b8581036023190160a487015290615a0c565b9160c4840190615b01565b346105b05760008060031936011261079c57808060018060a01b03600d5416604051602081019063313ce56760e01b825260048152610fcb81611c4e565b51915afa90610fd861493d565b9180611023575b156110175760208280518101031261079c5750602061078191015161100381610a85565b60405160ff90911681529081906020820190565b50506107816012611003565b506020825114610fdf565b346105b05760003660031901126105b0576020601354604051908152f35b346105b05760003660031901126105b0576020601954604051908152f35b346105b05760003660031901126105b0576020611085613bd9565b604051908152f35b346105b05760003660031901126105b0576020601254604051908152f35b60a435906001600160401b03821682036105b057565b60c435906001600160401b03821682036105b057565b346105b0576101003660031901126105b0576004356064356044356024356084356111006110ab565b6111086110c1565b60e4359261112160018060a01b03600554163314613118565b620186a096611132888a1115613294565b611166602f54998060009b7fc353b09af857951dccce61b43a5854fc45beceed36c50e5d4cc2e71858a8e0df8d80a3602f55565b80611395575b5080611338575b506001600160401b039182811690816112d8575b505081811680611267575b50505080611230575b50806111ed575b50806111ac578280f35b6111ba6111e7928210615cc2565b806020547f1f1d0e9e5e3fd195010504141e7472fc7f53e44d7cd3f236f0892778039c63268580a3602055565b38808280f35b806111fd8461122a931115615cc2565b806028547f1a98b2490874ba87102ae05e5b66fbe02edfcfb7e8b4e2d60f9aef620de5e3378780a3602855565b386111a2565b8061126191602d547f6bdc0e1a8f6a69c7dcb57e254165094714bb2a8730e2fedd8c6e9b71e67478b58880a3602d55565b3861119b565b6112d092602c5461127b8282168411615cc2565b60401c167fb02a4833a4686ad41ec77a1e91a97a505459a34966985bf11c59b1e01852e4a68980a3602c805467ffffffffffffffff60401b191660409290921b67ffffffffffffffff60401b16919091179055565b388080611192565b6113319184602c546112f0828260401c168410615cc2565b167f6d780269adaf7a0d9858a89a8c090b0b3add5f7088ccac6f619ff2b22987e7d58b80a36001600160401b03166001600160401b0319602c541617602c55565b3880611187565b8061134f670de0b6b3a764000061137c9310615cc2565b80602a547f4d5fa9a75b98ca1386ef794acdb2601c953e99a9c7a94ed351a46e06dc1bab288b80a3602a55565b61138f61138a602a5461346c565b602b55565b38611173565b806113c6916029547fa55fca071799e1b20f7cdcdf447fcc08c886bdd0cb741bf8862a311921bbb3888c80a3602955565b3861116c565b346105b05760003660031901126105b057600d546040516001600160a01b039091168152602090f35b346105b05760003660031901126105b0576020601154604051908152f35b346105b05760603660031901126105b057602061108560443560243560043561353c565b346105b05760003660031901126105b0576020601654604051908152f35b346105b05760003660031901126105b0576020600e54604051908152f35b346105b05760003660031901126105b0576020601554604051908152f35b346105b05760203660031901126105b0576004356114ae8161059f565b60018060a01b031660005260176020526020604060002054604051908152f35b346105b05760003660031901126105b0576020602854604051908152f35b346105b05760203660031901126105b0576004356001600160401b0381116105b05761151c903690600401610bf0565b9060ff602254166117085761153391810190614b57565b600a80546001600160a01b0319166001600160a01b038b16179055989b919a989990989296939593926040519263de40657760e01b845260208460048160018060a01b03809e165afa998a1561170357806116a99f81809161161e6116a49f8f90848f6115cc826116679f9481956000916116d5575b5060098054919092166001600160a01b03166001600160a01b0319909116179055565b600a54611607906115e5906001600160a01b0316610829565b600580546001600160a01b0319166001600160a01b0392909216919091179055565b16151591826116c9575b826116bb575b5050614c07565b1695169316911692909160018060a01b03928380928160018060a01b03199716876031541617603155168560335416176033551683603254161760325516906034541617603455565b9391929060018060a01b0380948160018060a01b0319971687600d541617600d551685600b541617600b55600e55600c551690600f541617600f55565b614ca7565b610019600160ff196022541617602255565b9091501615158f8490611617565b8d821615159250611611565b6116f6915060203d81116116fc575b6116ee8183611cb2565b810190614bf2565b386115a9565b503d6116e4565b61385f565b60405162461bcd60e51b815260206004820152601360248201527213585c9ad95d0e881a5b9a5d1a585b1a5e9959606a1b6044820152606490fd5b346105b05760008060031936011261079c576006546001600160a01b0316338190036117de576005546117cb91908190611785906001600160a01b0316610829565b7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08580a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b600680546001600160a01b031916905580f35b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b346105b05761187661076761187161183936610cec565b6040516314890dcb60e21b60208201526001600160a01b03938416602482015292909116604483015260648201529182906084820190565b615d98565b6040818051810103126105b05780604060208193015191015182519182526020820152f35b346105b05760003660031901126105b05760208054604051908152f35b346105b05760003660031901126105b05760206001600160401b03602e5416604051908152f35b346105b05760003660031901126105b05760206001600160401b03602c5416604051908152f35b346105b05760003660031901126105b0576020602c546001600160401b036040519160401c168152f35b346105b05760003660031901126105b0576020601c54604051908152f35b346105b05760a03660031901126105b05760043561196b8161059f565b6064356119778161059f565b608435906001600160401b0382116105b05761078192610cc8610ccd926107676119a8610cdc963690600401610bf0565b604051958694632c6dcd7f60e11b602087015260018060a01b0380921660248701526024356044870152604435606487015216608485015260a060a485015260c4840191615976565b346105b05760003660031901126105b0576031546040516001600160a01b039091168152602090f35b346105b05760003660031901126105b057611a3361423d565b506080611a3e61430b565b509350505050604051916001600160401b0380825116845260208201511660208401526040600180861b039101511660408301526060820152f35b60809060031901126105b057600435611a918161059f565b90602435611a9e8161059f565b90604435611aab8161079f565b9060643590565b346105b0576020611085611ac536611a79565b92600760009392935260078652611ae460ff6040600020541615614fce565b611aee848261500b565b611af66147f3565b6150e1565b346105b05760003660031901126105b057600a546040516001600160a01b039091168152602090f35b346105b05760203660031901126105b057600435611b418161059f565b60018060a01b031660005260016020526020604060002054604051908152f35b634e487b7160e01b600052602160045260246000fd5b60091115611b8157565b611b61565b6009811015611b81576000526007602052604060002090565b346105b05760203660031901126105b057611bb8610921565b6009811015611b81576000526007602052602060ff604060002054166040519015158152f35b90600182811c92168015611c0e575b6020831014611bf857565b634e487b7160e01b600052602260045260246000fd5b91607f1691611bed565b634e487b7160e01b600052604160045260246000fd5b606081019081106001600160401b03821117611c4957604052565b611c18565b604081019081106001600160401b03821117611c4957604052565b6001600160401b038111611c4957604052565b60c081019081106001600160401b03821117611c4957604052565b60e081019081106001600160401b03821117611c4957604052565b90601f801991011681019081106001600160401b03821117611c4957604052565b346105b05760008060031936011261079c5760405181601054611cf581611bde565b80845290600190818116908115611d8c5750600114611d33575b61078184611d1f81880382611cb2565b6040519182916020835260208301906106a0565b60108352602094507f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae6725b828410611d79575050508161078193611d1f9282010193611d0f565b8054858501870152928501928101611d5d565b6107819650611d1f9450602092508593915060ff191682840152151560051b82010193611d0f565b346105b05760003660031901126105b057600f546040516001600160a01b039091168152602090f35b346105b05760203660031901126105b057600435611dfa8161059f565b60018060a01b031660005260046020526020604060002054604051908152f35b346105b05760403660031901126105b057610916600435611e3a8161059f565b6024359033614190565b346105b05760003660031901126105b0576020602d54604051908152f35b346105b05760003660031901126105b057601454604080516001600160801b038316815260809290921c602083015290f35b346105b05760003660031901126105b0576020601b54604051908152f35b346105b05760003660031901126105b0576005546040516001600160a01b039091168152602090f35b6001600160401b038111611c4957601f01601f191660200190565b6024359061ffff821682036105b057565b359061ffff821682036105b057565b346105b05760403660031901126105b0576004356001600160401b0381116105b057366023820112156105b0578060040135611f5181611edb565b90611f5f6040519283611cb2565b80825236602482850101116105b057602081600092602461001996018386013783010152611f8b611ef6565b90613dc4565b346105b05760003660031901126105b0576020602f54604051908152f35b346105b05760008060031936011261079c57808060018060a01b03600b541660405160208101906395d89b4160e01b825260048152611fed81611c4e565b51915afa611ff961493d565b91501561202d5761076761077561201261078193614a59565b60405162746d2d60e81b602082015292839160238301610761565b5061078161076761077561203f61496d565b612012565b346105b05760403660031901126105b05760206110856004356120668161059f565b60243590613b05565b346105b05760003660031901126105b0576020602b54604051908152f35b346105b05760403660031901126105b05760606120b86004356120af8161059f565b60243590613620565b9060405192835260208301526040820152f35b346105b05760803660031901126105b0576004356120e88161059f565b6024356120f48161059f565b604435906121018261059f565b606435926001600160401b0384116105b0576107676121709261212b610019963690600401610bf0565b60405163514735c160e11b60208201526001600160a01b03958616602482015292851660448401529390951660648201526080608482015293849260a4840191615976565b615dc2565b346105b05760403660031901126105b0576004356121928161059f565b602435801580159061223c575b6121d2575b6040519081526001600160a01b03909116903390600080516020615e17833981519152908060208101610d60565b6121db336105ea565b546121e882821015613cf3565b6001600160a01b03831690829033839003612206575b5050506121a4565b610de4612214931515613d38565b61221d336105ea565b55612227826105ea565b61223282825461348f565b90553881816121fe565b50336001600160a01b0383161461219f565b9181601f840112156105b0578235916001600160401b0383116105b0576020808501948460051b0101116105b057565b906040820191604081528151809352606081019260208093019060005b81811061230457505050818184039101528251908183528083019281808460051b8301019501936000915b8483106122d65750505050505090565b90919293949584806122f4600193601f198682030187528a516106a0565b98019301930191949392906122c6565b825115158652948401949184019160010161229b565b346105b0576040806003193601126105b057600480356001600160401b0381116105b05761234b903690830161224e565b92906024356123598161079f565b60026030541461244857600260305561237185614e69565b9361237b86614e91565b95600090815b8181106123a2578888610781896123986001603055565b519283928361227e565b82806123af83858a614edb565b906123be8b5180938193614f1c565b0390305af46123cb61493d565b90801580612441575b61241a5782916123f56123fa926123ee612415968e614f2a565b9015159052565b614f3e565b612404828c614f2a565b5261240f818b614f2a565b50614159565b612381565b888661243d61242885614f3e565b925162461bcd60e51b815292839283016106c5565b0390fd5b50866123d4565b825162461bcd60e51b8152602081860152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606490fd5b346105b05760403660031901126105b0576004356124a88161059f565b61250a60243591600e548314600014612591576020602654935b6009546124d7906001600160a01b0316610829565b604051627eeac760e11b81526001600160a01b038516600482015260248101929092529093849190829081906044820190565b03915afa80156117035761078193610cdc9360009261255b575b50612545612554929360018060a01b03166000526025602052604060002090565b90600052602052604060002090565b549061348f565b61255492506125836125459160203d811161258a575b61257b8183611cb2565b810190613a2d565b9250612524565b503d612571565b6020602754936124c2565b346105b05760008060031936011261079c57610cdc6107819160018060a01b036125cb81600554163314613118565b600a5481166001600160a01b03166023549092906001600160801b039060801c16612605575b50506125fc816105ea565b54903390615522565b61260d6147f3565b7fbe641c3ffc44b2d6c184f023fa4ed7bda4b6ffa71e03b3c98ae0c776da1f17e761264961263d60235460801c90565b6001600160801b031690565b92612653856105ea565b61265e85825461348f565b90558416918281600080516020615e178339815191526040518061268789829190602083019252565b0390a3602380546001600160801b0316905580a338806125f1565b346105b05760003660031901126105b0576020601a54604051908152f35b346105b05760403660031901126105b0576024356126dd8161059f565b6126f260018060a01b03600554163314613118565b60008080808094600435905af161270761493d565b50156127105780f35b60405162461bcd60e51b815260206004820152601560248201527429a3a61d103a3930b739b332b9103330b4b632b21760591b6044820152606490fd5b346105b05760003660031901126105b0576060602354604051906001600160401b0380821683528160401c16602083015260801c6040820152f35b346105b05760003660031901126105b0576020601e54604051908152f35b346105b05760403660031901126105b05760245460095461281c906020906127d6906001600160a01b0316610829565b6014546001600160801b0316906040518080958194638eb22cdd60e01b8352602435600484019081526001600160801b0390911660208201526001604082015260600190565b03915afa9182156117035761285561284d61078194610cdc9460009161285f575b506001600160801b03841661348f565b600435613426565b9060801c9061344f565b612877915060203d811161258a5761257b8183611cb2565b3861283d565b346105b05760003660031901126105b0576033546040516001600160a01b039091168152602090f35b346105b0576100196107676128f56128bd36610cec565b60405163cce19f8160e01b60208201526001600160a01b03938416602482015292909116604483015260648201529182906084820190565b615dec565b346105b057602061108561295361291036611a79565b60405163cd0211eb60e01b888201526001600160a01b03948516602482015293909216604484015215156064830152608480830191909152815261187181611c7c565b828082518301019101613a2d565b346105b05760003660031901126105b0576008546040516001600160a01b039091168152602090f35b346105b0576101603660031901126105b0576004356129a88161059f565b6024356001600160401b0381116105b0576129c7903690600401610bf0565b916044356129d48161059f565b60643560843560a4359060c4359260e4359461010435966101243598610144359a60018060a01b0392612a0c84600554163314613118565b838116612c25575b5080612bf0575b505081169081612b88575b505080612b6a575b5080612b4c575b5080612b2f575b5080612b05575b5080612adb575b5080612aa3575b5080612a77575b5080612a6057005b61001990612a72601e5482101561332e565b601f55565b80612a8a620186a0612a9d931115613294565b612a98601f548211156132d4565b601e55565b38612a58565b80612ad5916016547fae6e0ab3b95f0a53ff9660a390ccedcbbf1f2355dce974a9841af106fddcfaba600080a3601655565b38612a51565b80612aed620186a0612aff9310613294565b612afa601b548211613294565b601c55565b38612a4a565b80612b17620186a0612b299310613294565b612b24601c548210613294565b601b55565b38612a43565b80612b41620186a0612b469310613294565b601d55565b38612a3c565b80612b5f620186a0612b64931115613294565b601a55565b38612a35565b80612b7d620186a0612b82931115613294565b601955565b38612a2e565b600854612be99290612ba2906001600160a01b0316610829565b7f5a62d22209e370e38eea92cfddcd228e656e6ec139243392a760a7769f5877fd600080a3600880546001600160a01b0319166001600160a01b0392909216919091179055565b3880612a26565b612bf9916131b7565b7fa6f004921c944d4b8bf6e38462b00f36a58d62495d56b51f571ab78f732c9815600080a13880612a1b565b600f80546001600160a01b0319166001600160a01b039092169190911790557f0b2d6eb667d0522c3eb86e4288afecae6c11591ffd1345d4d12407e0598bca9b600080a138612a14565b610140806003193601126105b05760043590612c8a8261059f565b60643590612c978261079f565b6001600160401b03926084358481116105b057612cb8903690600401610e88565b9360a4359081116105b057612cd1903690600401610e96565b9360803660c31901126105b05761001994612d34612d4692610cc89560405197889663d49dffa760e01b602089015260018060a01b03166024880152602435604488015260443560648801521515608487015260a48601526101648501906159c8565b8381036023190160c485015290615a0c565b61076760e48301615aac565b346105b057612d6036610a90565b9592809594959291924211610bab5761001996612dfb93610b9393610b86878a610b7e8b610767610b8b99612d9486614168565b60405195869460208601988991959493909260c09360e08401977f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e26685526000602086015260018060a01b038092166040860152166060840152608083015260a08201520152565b6141e3565b346105b05760003660031901126105b057600b546040516001600160a01b039091168152602090f35b346105b0576020610640612e3c366105c2565b6001600160a01b0391821660009081526002855260408082209290931681526020919091522090565b346105b05760003660031901126105b0576009546040516001600160a01b039091168152602090f35b346105b05760003660031901126105b0576020601d54604051908152f35b346105b05760003660031901126105b0576006546040516001600160a01b039091168152602090f35b346105b05760803660031901126105b0576001600160401b036004358181116105b057612f0690369060040161224e565b906024358381116105b057612f1f90369060040161224e565b906044358581116105b057612f3890369060040161224e565b9290916064359687116105b057612f5661001997369060040161224e565b969095615bfe565b346105b05760a03660031901126105b057610019600435612f7e8161059f565b60243590612f8b8261059f565b60443590612f988261079f565b604051926374d2492960e11b602085015260018060a01b03809216602485015216604483015215156064820152606435608482015260843560a482015260a481526128f581611c97565b346105b05760003660031901126105b0576020601f54604051908152f35b346105b05760003660031901126105b0576020600c54604051908152f35b346105b05760003660031901126105b0576020602a54604051908152f35b346105b057602061307f61108561305236610cec565b9060086000959395526007865261307160ff6040600020541615614fce565b6130796147f3565b846156fb565b809261500b565b346105b05760003660031901126105b0576034546040516001600160a01b039091168152602090f35b346105b05760003660031901126105b0576100196147f3565b346105b05760003660031901126105b057602454604080516001600160801b038316815260809290921c602083015290f35b346105b05760003660031901126105b0576020602954604051908152f35b1561311f57565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b601f811161316f575050565b6000906010825260208220906020601f850160051c830194106131ad575b601f0160051c01915b8281106131a257505050565b818155600101613196565b909250829061318d565b91906001600160401b038111611c49576131db816131d6601054611bde565b613163565b6000601f82116001146132155781929360009261320a575b50508160011b916000199060031b1c191617601055565b0135905038806131f3565b6010600052601f198216937f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae67291805b86811061327c5750836001959610613262575b505050811b01601055565b0135600019600384901b60f8161c19169055388080613257565b90926020600181928686013581550194019101613244565b1561329b57565b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881b9bdd081d985b1a59607a1b6044820152606490fd5b156132db57565b60405162461bcd60e51b815260206004820152602560248201527f4d61726b65743a20636f6c6c61746572616c697a6174696f6e5261746520746f6044820152646f2062696760d81b6064820152608490fd5b1561333557565b60405162461bcd60e51b815260206004820152603260248201527f4d61726b65743a206c69717569646174696f6e436f6c6c61746572616c697a616044820152711d1a5bdb94985d19481d1bdbc81cdb585b1b60721b6064820152608490fd5b1561339c57565b60405162461bcd60e51b81526020600482015260126024820152714d61726b65743a2073616d6520737461746560701b6044820152606490fd5b634e487b7160e01b600052601160045260246000fd5b90620186a09182810292818404149015171561340457565b6133d6565b90670de0b6b3a76400009182810292818404149015171561340457565b8181029291811591840414171561340457565b634e487b7160e01b600052601260045260246000fd5b8115613459570490565b613439565b604d811161340457600a0a90565b90670de0b6b3a764000091820391821161340457565b9190820391821161340457565b9190820180921161340457565b8181039291600013801582851316918412161761340457565b906509184e72a0009182810292818405149015171561340457565b90670de0b6b3a76400009182810292818405149015171561340457565b818102929160008212600160ff1b82141661340457818405149015171561340457565b811561345957600160ff1b8114600019831416613404570590565b600160ff1b81146134045760000390565b60145491929190613557906001600160801b03831690613426565b9060801c9081156134595761358491613575910493601f5490613426565b61357e8361345e565b9061344f565b90818310613618576135e96135e36135de6135a26135ee9587613482565b936135d96135d36135ca601e546135c46135bb8661345e565b6020549061348f565b90613426565b61357e8461345e565b9161345e565b61349c565b6134b5565b916134d0565b613510565b6000811215613612576136009061352b565b905b80821161360d575090565b905090565b90613602565b505050600090565b6001600160a01b0381166000908152601760205260408120549193929091801561379a576136ce9061365061425c565b5061365961430b565b505050505094905061366c8415156139e1565b600954602090613684906001600160a01b0316610829565b600c546001600160a01b038a1660009081526018602052604080822054905163442c159960e01b815260048101939093526024830152604482015294859190829081906064820190565b03915afa928315611703576137719561357e61263d602061373561371e8a61371961371061376b9c6137449a8c9161377d575b50602154620186a090046135c4565b601e5490613426565b61344f565b85519098906135c4906001600160801b031661263d565b9301516001600160801b031690565b908282106137755750035b6001600160a01b03909516600090815260186020526040902090565b54613a3c565b9091565b91505061374f565b6137949150873d811161258a5761257b8183611cb2565b38613701565b505080919250918190565b91908260409103126105b057602082516137be8161079f565b92015190565b6020808252600091601054916137d983611bde565b928382840152600190818116908160001461383c57506001146137fe575b5050505090565b929350601060005280600020926000935b85851061382857505050604092500101388080806137f7565b80548585016040015293820193810161380f565b925050506040935060ff929192191683830152151560051b0101388080806137f7565b6040513d6000823e3d90fd5b1561387257565b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881c985d19481d1bdbc81bdb1960621b6044820152606490fd5b156138b557565b60405162461bcd60e51b81526020600482015260146024820152734d61726b65743a20696e76616c6964207261746560601b6044820152606490fd5b600f54613906906001600160a01b0316610829565b6040805163d6d7d52560e01b81529291839081600081613928600482016137c4565b03925af180156117035760009283916139ad575b509082156139885761394f8215156138ae565b61395882601155565b817f9f9192b5edb17356c524e08d9e025c8e2f6307e6ea52fb7968faa3081f51c3c8600080a25b6105c042601355565b90506139a461399c6013546012549061348f565b42111561386b565b6011549061397f565b90506139d191925060403d81116139da575b6139c98183611cb2565b8101906137a5565b9190913861393c565b503d6139bf565b156139e857565b60405162461bcd60e51b815260206004820152601e60248201527f4d61726b65743a2065786368616e676552617465206e6f742076616c696400006044820152606490fd5b908160209103126105b0575190565b613a916020831592613a4e84156139e1565b600954600c5460405163442c159960e01b81526004810191909152602481019290925260006044830152909283916001600160a01b031690829081906064820190565b03915afa801561170357613ab191600091613acb575b5060215490613426565b906134595704620186a0613ac7601e5483613426565b0491565b613ae3915060203d811161258a5761257b8183611cb2565b38613aa7565b9190916000838201938412911290801582169115161761340457565b90613b29613b479161376b8460018060a01b03166000526018602052604060002090565b6001600160a01b039093166000908152601760205260409020909291565b548015613618578215613618578281106136185781811015613bd05782613b90613b8b613b9695610de461357e956128556014549160018060801b03831690613426565b6133ec565b92613482565b613bc4601b5491613bbf613bb6601c5492613bb1848761349c565b6134ed565b620186a0900590565b613ae9565b9080821261360d575090565b505050601b5490565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03161480613cca575b15613c34577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f000000000000000000000000000000000000000000000000000000000000000082527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a08152613cc481611c7c565b51902090565b507f00000000000000000000000000000000000000000000000000000000000000004614613c0b565b15613cfa57565b60405162461bcd60e51b815260206004820152601660248201527545524332303a2062616c616e636520746f6f206c6f7760501b6044820152606490fd5b15613d3f57565b60405162461bcd60e51b815260206004820152601660248201527545524332303a206e6f207a65726f206164647265737360501b6044820152606490fd5b15613d8457565b60405162461bcd60e51b815260206004820152601860248201527745524332303a20616c6c6f77616e636520746f6f206c6f7760401b6044820152606490fd5b6101009081818051810103126105b0576020810151613de28161079f565b604082015192613df18461059f565b606083015194613e008661059f565b60808401519460a085015160c086015193613e1a85610a85565b60e08701519601516001600160a01b0392831698831696428310610bab57613edc95613ed08a8c610b7e8199610767613ed5998f8f600014613ef3577f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e266965b613e8287614168565b60408051602081019a8b5261ffff909716908701526001600160a01b03978816606087015296909116608085015260a084015260c083019490945260e0820193909352918290610100820190565b613f66565b1614613f1a565b15613eea576105c0926141e3565b6105c092614190565b7f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d696613e79565b15613f2157565b60405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152606490fd5b916105e79391610b8b9361409a565b60051115611b8157565b613f8881613f75565b80613f905750565b613f9981613f75565b60018103613fe15760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b6044820152606490fd5b613fea81613f75565b600281036140375760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606490fd5b80614043600392613f75565b1461404a57565b60405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608490fd5b9291906fa2a8918ca85bafe22016d0b997e4df60600160ff1b0383116141065791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa156117035781516001600160a01b03811615614100579190565b50600190565b50505050600090600390565b61411a613bd9565b9060405190602082019261190160f01b84526022830152604282015260428152608081018181106001600160401b03821117611c495760405251902090565b60001981146134045760010190565b6001600160a01b0316600090815260046020526040902080549061418b82614159565b905590565b6001600160a01b03908116600081815260036020908152604080832095909416808352949052918220849055907fe50de2333c10a9502fcb1d8ae13a51bbf423153dfc63c2b8997665b32154afc39080a4565b6001600160a01b0390811660008181526002602090815260408083208686168452825290912091937f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259391928690556040519586521693a3565b6040519061424a82611c2e565b60006040838281528260208201520152565b6040519061426982611c4e565b60006020838281520152565b6040519061428282611c2e565b8160406023546001600160401b03808216845281831c16602084015260801c910152565b604051906142b382611c4e565b6014546001600160801b038116835260801c6020830152565b604051906142d982611c4e565b6024546001600160801b038116835260801c6020830152565b6001600160801b03918216908216019190821161340457565b61431361423d565b5061431c61425c565b5061432561425c565b5061432e614275565b906143376142a6565b906143406142cc565b906143a560008061435b61082960095460018060a01b031690565b600e54865160405163442c159960e01b808252600482018490526001600160801b039092166024820152600060448201529296602096919590939092918790829081906064820190565b03818b5afa8015611703576143d69184916147af575b508a516143d0906001600160801b031661263d565b9061348f565b8061478c575081945b8a61440c6144066143fa8a8a9401516001600160401b031690565b6001600160401b031690565b42613482565b96871561476457506001600160401b03428116898e01528b8901516001600160801b039995919491939192908a161561470657508b518d518692918a91614467916001600160401b03909116906001600160801b0316613426565b9061447191613426565b8d51670de0b6b3a76400009091049b908e90614499908d8f16906001600160801b03166142f2565b6001600160801b039081169091528d5160405193845260048401959095529390931660248201526000604482015291829060649082905afa8015611703578461455161452d8f978f613719908f9261263d6135c4916137356145186145739b6145249d8f916146e9575b5086516143d0906001600160801b031661263d565b9b8c97601a5490613426565b620186a0900490565b9a8b169161455e604089016145518561454c835160018060801b031690565b6142f2565b6001600160801b03169052565b8d0180519092906001600160801b03166142f2565b806146c65750945b602954868181101561461f57936137196145df936145c66143fa6145d16145cb6145b8886137196145b36145ec9d9e6143fa9c613482565b613409565b946145c6602d549680613426565b613426565b8461348f565b94516001600160401b031690565b6001600160401b03168a52565b88516001600160401b0316602c546001600160401b031691808316911610614612575b50565b6001600160401b03168852565b919050602a54808311614634575b5050505050565b6146b4946145c66143fa61467761467161466361465a6145b3613719986146859b613482565b602b549061344f565b966145c6602d549880613426565b8661348f565b92516001600160401b031690565b602c5461469d9060401c6001600160401b03166143fa565b8082116146be575b50166001600160401b03168952565b873880808061462d565b9050386146a5565b8a516146e39250613719906145b3906001600160801b031661263d565b9461457b565b6147009150843d861161258a5761257b8183611cb2565b38614503565b985050509650929798935050945061472582516001600160401b031690565b602e546001600160401b03169180831691160361474f575b5094936147486142cc565b9383929190565b6001600160401b03168152600194503861473d565b9a5050505095509693505050509261477a6142a6565b926147836142cc565b92809281929190565b89516147a99190613719906145b3906001600160801b031661263d565b946143df565b6147c69150883d8a1161258a5761257b8183611cb2565b386143bb565b805160209091015160801b6001600160801b0319166001600160801b039190911617602455565b6105c06148bf6148e661480461430b565b9397949593909290156148eb575050506001600160401b03602e54166000807f33af5ce86e8438eff54589f85332916444457dfa8685493fbd579b809097026b6020604051838152a45b6148786001600160401b038251166001600160401b03166001600160401b03196023541617602355565b6020810151602380546040938401516001600160401b039091169290931b67ffffffffffffffff60401b169190911760809290921b6001600160801b031916919091179055565b805160209091015160801b6001600160801b0319166001600160801b039190911617601455565b6147cc565b7f33af5ce86e8438eff54589f85332916444457dfa8685493fbd579b809097026b60206001600160401b0386511694604051908152a461484e565b906149396020928281519485920161067d565b0190565b3d15614968573d9061494e82611edb565b9161495c6040519384611cb2565b82523d6000602084013e565b606090565b6040519061497a82611c4e565b60038252623f3f3f60e81b6020830152565b634e487b7160e01b600052603260045260246000fd5b9081518110156149b3570160200190565b61498c565b60ff1660ff81146134045760010190565b906149d382611edb565b6149e06040519182611cb2565b82815280926149f1601f1991611edb565b0190602036910137565b6020818303126105b0578051906001600160401b0382116105b0570181601f820112156105b0578051614a2d81611edb565b92614a3b6040519485611cb2565b818452602082840101116105b0576105e7916020808501910161067d565b805160408110614a775750806020806105e7935183010191016149fb565b602092908303614b4c576000805b60ff81168581109081614b2a575b5015614aa757614aa2906149b8565b614a85565b92614ab560ff8095166149c9565b92825b85811687811080614b0b575b15614b00579081614af5614aec614ade614afb95886149a2565b516001600160f81b03191690565b871a91886149a2565b536149b8565b614ab8565b505094505050905090565b506001600160f81b0319614b22614ade83876149a2565b161515614ac4565b6001600160f81b03199150614b4390614ade90876149a2565b16151538614a93565b9150506105e761496d565b90816101a09103126105b0578035614b6e8161059f565b916020820135614b7d8161059f565b916040810135614b8c8161059f565b91614b99606083016105b5565b91614ba6608082016105b5565b91614bb360a083016105b5565b9160c081013591614bc660e083016105b5565b9161010081013591614bdb61012083016105b5565b916101408101359161018061016083013592013590565b908160209103126105b057516105e78161059f565b15614c0e57565b60405162461bcd60e51b815260206004820152600d60248201526c29a3a61d103130b2103830b4b960991b6044820152606490fd5b15614c4a57565b60405162461bcd60e51b815260206004820152602f60248201527f53474c3a206c69717569646174696f6e436f6c6c61746572616c697a6174696f60448201526e1b94985d19481b9bdd081d985b1a59608a1b6064820152608490fd5b614cc263097343e06001600160401b0319602c541617602c55565b602c805467ffffffffffffffff60401b19166324ea412360491b179055614cf97054a2b63d65d79d094abb66880000000000602d55565b614d2a614d0e602c546001600160401b031690565b6001600160401b03166001600160401b0319602e541617602e55565b614d5b614d3f602e546001600160401b031690565b6001600160401b03166001600160401b03196023541617602355565b614d636138f1565b5050614d706103e8601955565b614d7a6000601a55565b614d846032602f55565b614d8f612ee0602055565b8015614e4557601e555b8015614e3857601f555b614db2601f54601e5410614c43565b614dbd6161a8602855565b8015614e26576021555b614dd362013880601b55565b614ddf62015f90601c55565b614dea612710601d55565b614dfb670429d069189e0000602955565b614e0c6706f05b59d3b20000602a55565b614e1a61138a602a5461346c565b6105c062015180601255565b50614dc7670de0b6b3a7640000602155565b50614da362013880612a72565b50614d99620124f8612a98565b6001600160401b038111611c495760051b60200190565b90614e7382614e52565b614e806040519182611cb2565b82815280926149f1601f1991614e52565b90614e9b82614e52565b614ea86040519182611cb2565b8281528092614eb9601f1991614e52565b019060005b828110614eca57505050565b806060602080938501015201614ebe565b91908110156149b35760051b81013590601e19813603018212156105b05701908135916001600160401b0383116105b05760200182360381136105b0579190565b908092918237016000815290565b80518210156149b35760209160051b010190565b6103e8815111614f9a576044815110614f67578060248060046105e794015183010191016149fb565b50604051614f7481611c4e565b60168152754d61726b65743a206e6f2072657475726e206461746160501b602082015290565b50604051614fa781611c4e565b60178152764d61726b65743a20726561736f6e20746f6f206c6f6e6760481b602082015290565b15614fd557565b60405162461bcd60e51b815260206004820152600e60248201526d13585c9ad95d0e881c185d5cd95960921b6044820152606490fd5b6001600160a01b03811633810361502157505050565b60009081526002602090815260408083203384529091529020829054106150a5576001600160a01b038116600090815260026020526040902060001990615069903390610e40565b5403615073575050565b6001600160a01b031660009081526002602052604090206150a190615099903390610e40565b918254613482565b9055565b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881b9bdd08185c1c1c9bdd995960621b6044820152606490fd5b93929190936150ee6142cc565b80516009546001600160801b039791881694929061515a9060209061511b906001600160a01b0316610829565b600e54601454604051638eb22cdd60e01b815260048101929092526001600160801b031660248201526001604482015292839190829081906064820190565b03915afa80156117035761517791600091615304575b508661348f565b806152d557506103e886985b602083015161519e90828c16906001600160801b03166142f2565b16106152c95761523561520e959493926151bf6148e68b8a61524696615322565b6151c8816105ea565b6151d38b825461348f565b90556040518a81526001600160a01b0382811698909761521b9287928b91600091600080516020615e17833981519152919081906020820190565b0390a38a600e54896153c8565b6001600160a01b0316600090815260256020526040902090565b602654600052602052604060002090565b61525186825461348f565b9055156152a157506009547f30a8c4f9ab5af7e1309ca87c32377d1a83366c5990472dbf9d262450eae14e3890615290906001600160a01b0316610829565b915b604051878152921691602090a4565b7f30a8c4f9ab5af7e1309ca87c32377d1a83366c5990472dbf9d262450eae14e389091615292565b50600096505050505050565b60208201516103e8916152fe91613719906152f8906001600160801b031661263d565b8a613426565b98615183565b61531c915060203d811161258a5761257b8183611cb2565b38615170565b91906153469061533061425c565b5060018060801b039182809216828651166142f2565b16835261535c81602085019316828451166142f2565b16905290565b6001600160a01b039182168152911660208201526040810191909152606081019190915260800190565b1561539357565b60405162461bcd60e51b815260206004820152600d60248201526c0a68e987440e8dede40daeac6d609b1b6044820152606490fd5b90919293600014615460575060095461541a916020916153f0906001600160a01b0316610829565b604051627eeac760e11b815230600482015260248101929092529092839190829081906044820190565b03915afa928315611703576105c09361543b92600091615442575b50613482565b101561538c565b61545a915060203d811161258a5761257b8183611cb2565b38615435565b600954919350919061547a906001600160a01b0316610829565b803b156105b0576154a8936000809460405196879586948593630208d92960e11b8552309060048601615362565b03925af18015611703576154b95750565b806154c66105c092611c69565b80610649565b6001600160801b03918216908216039190821161340457565b156154ec57565b60405162461bcd60e51b815260206004820152600e60248201526d14d1d30e881b5a5b881b1a5b5a5d60921b6044820152606490fd5b6024549093926001600160801b039160801c156156f2576155416142cc565b80519095906001600160801b031660095461556b9060209061511b906001600160a01b0316610829565b03915afa9182156117035785916000936156d2575b50169061558c9161348f565b6155969083613426565b6020870180519092916155b2916001600160801b03169061344f565b9687946155be836105ea565b858154906155cb91613482565b90556040518581526001600160a01b0393841694906000908690600080516020615e1783398151915290602090a3825161561190838916906001600160801b03166154cc565b6001600160801b031683528051868316906001600160801b031690615635916154cc565b6001600160801b03168152516001600160801b0316166103e81115615659906154e5565b615662906147cc565b6040519283528416917f6e853a5fd6b51d773691f542ebac8513c9992a51380d4c342031056a6411422890602090a4600954600e546001600160a01b0390911691823b156105b0576154a89260009283879360405196879586948593630208d92960e11b85523060048601615362565b6156eb91935060203d811161258a5761257b8183611cb2565b9138615580565b50600093505050565b6024546001600160801b0394939192919060801c156156f25761571c6142cc565b80519091906001600160801b03166009546157469060209061511b906001600160a01b0316610829565b03915afa918215611703578891600093615956575b5016906157679161348f565b6157719082613426565b602083018051909161578c916001600160801b03169061344f565b968793615798876105ea565b848154906157a591613482565b90556040518481526001600160a01b03888116949093916000908690600080516020615e1783398151915290602090a382516157ed90838916906001600160801b03166154cc565b6001600160801b031683528051868316906001600160801b031690615811916154cc565b6001600160801b03168152516001600160801b0316166103e81115615835906154e5565b61583e906147cc565b6040519283528416917f6e853a5fd6b51d773691f542ebac8513c9992a51380d4c342031056a6411422890602090a4600954600e546001600160a01b0390911691823b156105b0576158ae9260009283889360405196879586948593630208d92960e11b85523060048601615362565b03925af1801561170357615943575b506001600160a01b03811660009081526025602052604090206158ed602654809290600052602052604060002090565b5484111561591957506001600160a01b0316600090815260256020526040812061591690615235565b55565b6125456159389260018060a01b03166000526025602052604060002090565b6150a1838254613482565b806154c661595092611c69565b386158bd565b61596f91935060203d811161258a5761257b8183611cb2565b913861575b565b908060209392818452848401376000828201840152601f01601f1916010190565b9035601e19823603018112156105b05701602081359101916001600160401b0382116105b05781360383136105b057565b9060606159fc6105e79380356159dd8161059f565b6001600160a01b03168452602081810135908501526040810190615997565b9190928160408201520191615976565b908135815261ffff80615a2160208501611f07565b166020830152615a3360408401611f07565b16604082015260c06060830135615a498161059f565b6001600160a01b03908116606084015281615a99615a7e615a6d6080880188615997565b60e0608089015260e0880191615976565b615a8b60a0880188615997565b9087830360a0890152615976565b940135615aa58161059f565b1691015290565b606060c435615aba8161059f565b6001600160a01b0390811683528060e435615ad48161059f565b1660208401528061010435615ae88161059f565b16604084015261012435615afb8161059f565b16910152565b60609081813591615b118361059f565b6001600160a01b039283168552826020820135615b2d8161059f565b166020860152826040820135615b428161059f565b1660408601520135615afb8161059f565b91908082526020809201929160005b828110615b70575050505090565b9091929382806001928735615b848161059f565b848060a01b03168152019501910192919092615b62565b9082818152602080910193818360051b82010194846000925b858410615bc5575050505050505090565b909192939495968580615bed600193601f19868203018852615be78c88615997565b90615976565b990194019401929594939190615bb4565b9295969094969391936040519660209663e5644d8b60e01b888a01528060a48a01608060248c01525260c48901959060005b89828210615c9a575050505087850360231990810160448a0152818652936001600160fb1b0382116105b05761460f99612170988a9861076798615c8b9560051b809284830137018981036003190160648b01520191615b53565b92858403016084860152615b9b565b808499600193949535615cac8161059f565b848060a01b031681520198019101919091615c30565b15615cc957565b60405162461bcd60e51b815260206004820152600e60248201526d14d1d30e881b9bdd081d985b1a5960921b6044820152606490fd5b6034546001600160a01b03168015615d5d57816000929160208493519201905af490615d2961493d565b9115615d3157565b61243d615d3d83614f3e565b60405162461bcd60e51b81526020600482015291829160248301906106a0565b60405162461bcd60e51b815260206004820152601360248201527214d1d30e881b5bd91d5b19481b9bdd081cd95d606a1b6044820152606490fd5b6032546001600160a01b03168015615d5d57816000929160208493519201905af490615d2961493d565b6031546001600160a01b03168015615d5d57816000929160208493519201905af490615d2961493d565b6033546001600160a01b03168015615d5d57816000929160208493519201905af490615d2961493d56feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa264697066735822122077698ebb59f5f6b77a36cbe725e491ec2f146c875c00adc902384190cefc304864736f6c63430008120033", - "deployedBytecode": "0x6080604052600436101561001b575b361561001957600080fd5b005b60003560e01c8062a02a201461059a57806302ce728f1461059557806306fdde0314610590578063078dfbe71461058b578063095ea7b3146105865780630c4e84f01461058157806318160ddd1461057c5780631c9e379b146105775780631da8bf10146105725780631ee9c8f21461056d57806323b872dd1461056857806325384fd8146105635780632a9399d91461055e578063313ce56714610559578063331960ff1461055457806334d441d01461054f5780633644e5151461054a57806337b6b7b91461054557806338225f111461054057806338d52e0f1461053b5780633ba0b9a9146105365780633f741adb1461053157806340626d8b1461052c57806344de240a14610527578063473e3ce71461052257806348e4163e1461051d5780634d7f2a34146105185780634ddf47d4146105135780634e71e0c81461050e5780635224372c14610509578063529898f21461050457806352f353eb146104ff57806355140232146104fa57806355c2ab94146104f557806357935462146104f057806358db9afe146104eb5780635d5f73ef146104e65780635dfe04e8146104e15780636587adb8146104dc5780636c3d8b8f146104d757806370a08231146104d257806372778547146104cd57806374645ff3146104c85780637dc0d1d0146104c35780637ecebe00146104be5780637fa0b84e146104b9578063821226e8146104b45780638285ef40146104af5780638c5d0ed3146104aa5780638da5cb5b146104a5578063910dd7c8146104a0578063959916dc1461049b57806395d89b411461049657806399a97028146104915780639c5d71921461048c5780639e15e89f14610487578063a28e6b8214610482578063a9059cbb1461047d578063aa7d966514610478578063ae70702e14610473578063af405b4c1461046e578063b0e21e8a14610469578063b25ea8fb14610464578063b27c0e741461045f578063bb4cfe3b1461045a578063bf0b895814610455578063c861a52614610450578063cce19f811461044b578063cd0211eb14610446578063ce8849ed14610441578063d3fb2a381461043c578063d49dffa714610437578063d505accf14610432578063d8dfeb451461042d578063dd62ed3e14610428578063de40657714610423578063e0996cb61461041e578063e30c397814610419578063e5644d8b14610414578063e9a492521461040f578063ea64dd561461040a578063eec0f42e14610405578063f42760b714610400578063f4d93753146103fb578063f5b33dfa146103f6578063f8ba4cff146103f1578063f9557ccb146103ec5763ffe04c660361000e576130fa565b6130c8565b6130af565b613086565b61303c565b61301e565b613000565b612fe2565b612f5e565b612ed5565b612eac565b612e8e565b612e65565b612e29565b612e00565b612d52565b612c6f565b61298a565b612961565b6128fa565b6128a6565b61287d565b6127a6565b612788565b61274d565b6126c0565b6126a2565b61259c565b61248b565b61231a565b612175565b6120cb565b61208d565b61206f565b612044565b611faf565b611f91565b611f16565b611eb2565b611e94565b611e62565b611e44565b611e1a565b611ddd565b611db4565b611cd3565b611b9f565b611b24565b611afb565b611ab2565b611a1a565b6119f1565b61194e565b611930565b611906565b6118df565b6118b8565b61189b565b611822565b611743565b6114ec565b6114ce565b611491565b611473565b611455565b611437565b611413565b6113f5565b6113cc565b6110d7565b61108d565b61106a565b61104c565b61102e565b610f8d565b610eb5565b610e5f565b610d18565b610c1d565b610ad5565b610a48565b610a27565b610930565b6108ec565b6107a9565b6106d6565b610654565b610604565b6001600160a01b038116036105b057565b600080fd5b35906105c08261059f565b565b60409060031901126105b0576004356105da8161059f565b906024356105e78161059f565b90565b6001600160a01b0316600090815260016020526040902090565b346105b0576020610640610617366105c2565b6001600160a01b0391821660009081526003855260408082209290931681526020919091522090565b54604051908152f35b60009103126105b057565b346105b05760003660031901126105b057604061066f6138f1565b825191151582526020820152f35b60005b8381106106905750506000910152565b8181015183820152602001610680565b906020916106b98151809281855285808601910161067d565b601f01601f1916010190565b9060206105e79281815201906106a0565b346105b05760008060031936011261079c57808060018060a01b03600b541660405160208101906306fdde0360e01b82526004815261071481611c4e565b51915afa61072061493d565b9150156107855761076761077561073961078193614a59565b60405173546170696f63612053696e67756c61726974792d60601b6020820152928391603483015b90614926565b03601f198101835282611cb2565b604051918291826106c5565b0390f35b5061078161076761077561079761496d565b610739565b80fd5b801515036105b057565b346105b05760603660031901126105b0576004356107c68161059f565b602435906107d38261079f565b604435916107e08361079f565b6005546001600160a01b0391906107fa9083163314613118565b156108d3578116918215908115916108cb575b501561088e5760055461087c9290610835906001600160a01b03165b6001600160a01b031690565b7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b600680546001600160a01b0319169055005b60405162461bcd60e51b81526020600482015260156024820152744f776e61626c653a207a65726f206164647265737360581b6044820152606490fd5b90503861080d565b60068054919092166001600160a01b0319909116179055005b346105b05760403660031901126105b05761091660043561090c8161059f565b60243590336141e3565b602060405160018152f35b6004359060098210156105b057565b346105b05760403660031901126105b057610949610921565b6024356109558161079f565b6008546001600160a01b031633036109eb576109da8261098961098461097d61001996611b86565b5460ff1690565b151590565b61099884151591821415613395565b6109a461097d83611b86565b6109ad83611b77565b1515827feeec81de25875ce1725479bb76f720a8defdb43dea041919ae37bb4aae9847c0600080a4611b86565b9060ff801983541691151516179055565b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881d5b985d5d1a1bdc9a5e995960621b6044820152606490fd5b346105b05760003660031901126105b057602060245460801c604051908152f35b346105b05760203660031901126105b057600435610a658161059f565b60018060a01b031660005260186020526020604060002054604051908152f35b60ff8116036105b057565b60e09060031901126105b057600435610aa88161059f565b90602435610ab58161059f565b906044359060643590608435610aca81610a85565b9060a4359060c43590565b346105b057610ae336610a90565b9592809594959291924211610bab5761001996610ba693610b9393610b86878a610b7e8b610767610b8b99610b1786614168565b60405195869460208601988991959493909260c09360e08401977f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d685526000602086015260018060a01b038092166040860152166060840152608083015260a08201520152565b519020614112565b61409a565b919091613f7f565b6001600160a01b03838116911614613f1a565b614190565b60405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b9181601f840112156105b0578235916001600160401b0383116105b057602083818601950101116105b057565b346105b05760c03660031901126105b057600435610c3a8161059f565b608435610c468161059f565b60a435906001600160401b0382116105b05761078192610cc8610ccd92610767610c77610cdc963690600401610bf0565b604051958694630f74e47960e11b602087015260018060a01b0380921660248701526024356044870152604435606487015260643560848701521660a485015260c060c485015260e4840191615976565b615cff565b60208082518301019101613a2d565b6040519081529081906020820190565b60609060031901126105b057600435610d048161059f565b90602435610d118161059f565b9060443590565b346105b057610d60600080516020615e17833981519152610d3836610cec565b9291939083610d6f575b6040519384526001600160a01b039081169416929081906020820190565b0390a360405160018152602090f35b610d78856105ea565b54610d8585821015613cf3565b6001600160a01b038281169186918816839003610da5575b505050610d42565b6001600160a01b03881660009081526002602090815260408083203384529091529020610de993610de491548460018201610e11575b50501515613d38565b613482565b610df2866105ea565b55610dfc816105ea565b610e0785825461348f565b9055388481610d9d565b81610de482610e21941015613d7d565b6001600160a01b038b166000908152600260205260409020610e579033905b9060018060a01b0316600052602052604060002090565b553884610ddb565b346105b05760003660031901126105b0576032546040516001600160a01b039091168152602090f35b908160609103126105b05790565b908160e09103126105b05790565b60809060a31901126105b05760a490565b610120806003193601126105b057600435610ecf8161059f565b60443590610edc8261079f565b6001600160401b03906064358281116105b057610efd903690600401610e88565b936084359283116105b057610767610f8261001996610f70610f26610cc8973690600401610e96565b91610f3036610ea4565b95604051998a98632a9399d960e01b60208b015260018060a01b031660248a015260243560448a01521515606489015260848801526101448701906159c8565b8581036023190160a487015290615a0c565b9160c4840190615b01565b346105b05760008060031936011261079c57808060018060a01b03600d5416604051602081019063313ce56760e01b825260048152610fcb81611c4e565b51915afa90610fd861493d565b9180611023575b156110175760208280518101031261079c5750602061078191015161100381610a85565b60405160ff90911681529081906020820190565b50506107816012611003565b506020825114610fdf565b346105b05760003660031901126105b0576020601354604051908152f35b346105b05760003660031901126105b0576020601954604051908152f35b346105b05760003660031901126105b0576020611085613bd9565b604051908152f35b346105b05760003660031901126105b0576020601254604051908152f35b60a435906001600160401b03821682036105b057565b60c435906001600160401b03821682036105b057565b346105b0576101003660031901126105b0576004356064356044356024356084356111006110ab565b6111086110c1565b60e4359261112160018060a01b03600554163314613118565b620186a096611132888a1115613294565b611166602f54998060009b7fc353b09af857951dccce61b43a5854fc45beceed36c50e5d4cc2e71858a8e0df8d80a3602f55565b80611395575b5080611338575b506001600160401b039182811690816112d8575b505081811680611267575b50505080611230575b50806111ed575b50806111ac578280f35b6111ba6111e7928210615cc2565b806020547f1f1d0e9e5e3fd195010504141e7472fc7f53e44d7cd3f236f0892778039c63268580a3602055565b38808280f35b806111fd8461122a931115615cc2565b806028547f1a98b2490874ba87102ae05e5b66fbe02edfcfb7e8b4e2d60f9aef620de5e3378780a3602855565b386111a2565b8061126191602d547f6bdc0e1a8f6a69c7dcb57e254165094714bb2a8730e2fedd8c6e9b71e67478b58880a3602d55565b3861119b565b6112d092602c5461127b8282168411615cc2565b60401c167fb02a4833a4686ad41ec77a1e91a97a505459a34966985bf11c59b1e01852e4a68980a3602c805467ffffffffffffffff60401b191660409290921b67ffffffffffffffff60401b16919091179055565b388080611192565b6113319184602c546112f0828260401c168410615cc2565b167f6d780269adaf7a0d9858a89a8c090b0b3add5f7088ccac6f619ff2b22987e7d58b80a36001600160401b03166001600160401b0319602c541617602c55565b3880611187565b8061134f670de0b6b3a764000061137c9310615cc2565b80602a547f4d5fa9a75b98ca1386ef794acdb2601c953e99a9c7a94ed351a46e06dc1bab288b80a3602a55565b61138f61138a602a5461346c565b602b55565b38611173565b806113c6916029547fa55fca071799e1b20f7cdcdf447fcc08c886bdd0cb741bf8862a311921bbb3888c80a3602955565b3861116c565b346105b05760003660031901126105b057600d546040516001600160a01b039091168152602090f35b346105b05760003660031901126105b0576020601154604051908152f35b346105b05760603660031901126105b057602061108560443560243560043561353c565b346105b05760003660031901126105b0576020601654604051908152f35b346105b05760003660031901126105b0576020600e54604051908152f35b346105b05760003660031901126105b0576020601554604051908152f35b346105b05760203660031901126105b0576004356114ae8161059f565b60018060a01b031660005260176020526020604060002054604051908152f35b346105b05760003660031901126105b0576020602854604051908152f35b346105b05760203660031901126105b0576004356001600160401b0381116105b05761151c903690600401610bf0565b9060ff602254166117085761153391810190614b57565b600a80546001600160a01b0319166001600160a01b038b16179055989b919a989990989296939593926040519263de40657760e01b845260208460048160018060a01b03809e165afa998a1561170357806116a99f81809161161e6116a49f8f90848f6115cc826116679f9481956000916116d5575b5060098054919092166001600160a01b03166001600160a01b0319909116179055565b600a54611607906115e5906001600160a01b0316610829565b600580546001600160a01b0319166001600160a01b0392909216919091179055565b16151591826116c9575b826116bb575b5050614c07565b1695169316911692909160018060a01b03928380928160018060a01b03199716876031541617603155168560335416176033551683603254161760325516906034541617603455565b9391929060018060a01b0380948160018060a01b0319971687600d541617600d551685600b541617600b55600e55600c551690600f541617600f55565b614ca7565b610019600160ff196022541617602255565b9091501615158f8490611617565b8d821615159250611611565b6116f6915060203d81116116fc575b6116ee8183611cb2565b810190614bf2565b386115a9565b503d6116e4565b61385f565b60405162461bcd60e51b815260206004820152601360248201527213585c9ad95d0e881a5b9a5d1a585b1a5e9959606a1b6044820152606490fd5b346105b05760008060031936011261079c576006546001600160a01b0316338190036117de576005546117cb91908190611785906001600160a01b0316610829565b7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08580a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b600680546001600160a01b031916905580f35b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b346105b05761187661076761187161183936610cec565b6040516314890dcb60e21b60208201526001600160a01b03938416602482015292909116604483015260648201529182906084820190565b615d98565b6040818051810103126105b05780604060208193015191015182519182526020820152f35b346105b05760003660031901126105b05760208054604051908152f35b346105b05760003660031901126105b05760206001600160401b03602e5416604051908152f35b346105b05760003660031901126105b05760206001600160401b03602c5416604051908152f35b346105b05760003660031901126105b0576020602c546001600160401b036040519160401c168152f35b346105b05760003660031901126105b0576020601c54604051908152f35b346105b05760a03660031901126105b05760043561196b8161059f565b6064356119778161059f565b608435906001600160401b0382116105b05761078192610cc8610ccd926107676119a8610cdc963690600401610bf0565b604051958694632c6dcd7f60e11b602087015260018060a01b0380921660248701526024356044870152604435606487015216608485015260a060a485015260c4840191615976565b346105b05760003660031901126105b0576031546040516001600160a01b039091168152602090f35b346105b05760003660031901126105b057611a3361423d565b506080611a3e61430b565b509350505050604051916001600160401b0380825116845260208201511660208401526040600180861b039101511660408301526060820152f35b60809060031901126105b057600435611a918161059f565b90602435611a9e8161059f565b90604435611aab8161079f565b9060643590565b346105b0576020611085611ac536611a79565b92600760009392935260078652611ae460ff6040600020541615614fce565b611aee848261500b565b611af66147f3565b6150e1565b346105b05760003660031901126105b057600a546040516001600160a01b039091168152602090f35b346105b05760203660031901126105b057600435611b418161059f565b60018060a01b031660005260016020526020604060002054604051908152f35b634e487b7160e01b600052602160045260246000fd5b60091115611b8157565b611b61565b6009811015611b81576000526007602052604060002090565b346105b05760203660031901126105b057611bb8610921565b6009811015611b81576000526007602052602060ff604060002054166040519015158152f35b90600182811c92168015611c0e575b6020831014611bf857565b634e487b7160e01b600052602260045260246000fd5b91607f1691611bed565b634e487b7160e01b600052604160045260246000fd5b606081019081106001600160401b03821117611c4957604052565b611c18565b604081019081106001600160401b03821117611c4957604052565b6001600160401b038111611c4957604052565b60c081019081106001600160401b03821117611c4957604052565b60e081019081106001600160401b03821117611c4957604052565b90601f801991011681019081106001600160401b03821117611c4957604052565b346105b05760008060031936011261079c5760405181601054611cf581611bde565b80845290600190818116908115611d8c5750600114611d33575b61078184611d1f81880382611cb2565b6040519182916020835260208301906106a0565b60108352602094507f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae6725b828410611d79575050508161078193611d1f9282010193611d0f565b8054858501870152928501928101611d5d565b6107819650611d1f9450602092508593915060ff191682840152151560051b82010193611d0f565b346105b05760003660031901126105b057600f546040516001600160a01b039091168152602090f35b346105b05760203660031901126105b057600435611dfa8161059f565b60018060a01b031660005260046020526020604060002054604051908152f35b346105b05760403660031901126105b057610916600435611e3a8161059f565b6024359033614190565b346105b05760003660031901126105b0576020602d54604051908152f35b346105b05760003660031901126105b057601454604080516001600160801b038316815260809290921c602083015290f35b346105b05760003660031901126105b0576020601b54604051908152f35b346105b05760003660031901126105b0576005546040516001600160a01b039091168152602090f35b6001600160401b038111611c4957601f01601f191660200190565b6024359061ffff821682036105b057565b359061ffff821682036105b057565b346105b05760403660031901126105b0576004356001600160401b0381116105b057366023820112156105b0578060040135611f5181611edb565b90611f5f6040519283611cb2565b80825236602482850101116105b057602081600092602461001996018386013783010152611f8b611ef6565b90613dc4565b346105b05760003660031901126105b0576020602f54604051908152f35b346105b05760008060031936011261079c57808060018060a01b03600b541660405160208101906395d89b4160e01b825260048152611fed81611c4e565b51915afa611ff961493d565b91501561202d5761076761077561201261078193614a59565b60405162746d2d60e81b602082015292839160238301610761565b5061078161076761077561203f61496d565b612012565b346105b05760403660031901126105b05760206110856004356120668161059f565b60243590613b05565b346105b05760003660031901126105b0576020602b54604051908152f35b346105b05760403660031901126105b05760606120b86004356120af8161059f565b60243590613620565b9060405192835260208301526040820152f35b346105b05760803660031901126105b0576004356120e88161059f565b6024356120f48161059f565b604435906121018261059f565b606435926001600160401b0384116105b0576107676121709261212b610019963690600401610bf0565b60405163514735c160e11b60208201526001600160a01b03958616602482015292851660448401529390951660648201526080608482015293849260a4840191615976565b615dc2565b346105b05760403660031901126105b0576004356121928161059f565b602435801580159061223c575b6121d2575b6040519081526001600160a01b03909116903390600080516020615e17833981519152908060208101610d60565b6121db336105ea565b546121e882821015613cf3565b6001600160a01b03831690829033839003612206575b5050506121a4565b610de4612214931515613d38565b61221d336105ea565b55612227826105ea565b61223282825461348f565b90553881816121fe565b50336001600160a01b0383161461219f565b9181601f840112156105b0578235916001600160401b0383116105b0576020808501948460051b0101116105b057565b906040820191604081528151809352606081019260208093019060005b81811061230457505050818184039101528251908183528083019281808460051b8301019501936000915b8483106122d65750505050505090565b90919293949584806122f4600193601f198682030187528a516106a0565b98019301930191949392906122c6565b825115158652948401949184019160010161229b565b346105b0576040806003193601126105b057600480356001600160401b0381116105b05761234b903690830161224e565b92906024356123598161079f565b60026030541461244857600260305561237185614e69565b9361237b86614e91565b95600090815b8181106123a2578888610781896123986001603055565b519283928361227e565b82806123af83858a614edb565b906123be8b5180938193614f1c565b0390305af46123cb61493d565b90801580612441575b61241a5782916123f56123fa926123ee612415968e614f2a565b9015159052565b614f3e565b612404828c614f2a565b5261240f818b614f2a565b50614159565b612381565b888661243d61242885614f3e565b925162461bcd60e51b815292839283016106c5565b0390fd5b50866123d4565b825162461bcd60e51b8152602081860152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606490fd5b346105b05760403660031901126105b0576004356124a88161059f565b61250a60243591600e548314600014612591576020602654935b6009546124d7906001600160a01b0316610829565b604051627eeac760e11b81526001600160a01b038516600482015260248101929092529093849190829081906044820190565b03915afa80156117035761078193610cdc9360009261255b575b50612545612554929360018060a01b03166000526025602052604060002090565b90600052602052604060002090565b549061348f565b61255492506125836125459160203d811161258a575b61257b8183611cb2565b810190613a2d565b9250612524565b503d612571565b6020602754936124c2565b346105b05760008060031936011261079c57610cdc6107819160018060a01b036125cb81600554163314613118565b600a5481166001600160a01b03166023549092906001600160801b039060801c16612605575b50506125fc816105ea565b54903390615522565b61260d6147f3565b7fbe641c3ffc44b2d6c184f023fa4ed7bda4b6ffa71e03b3c98ae0c776da1f17e761264961263d60235460801c90565b6001600160801b031690565b92612653856105ea565b61265e85825461348f565b90558416918281600080516020615e178339815191526040518061268789829190602083019252565b0390a3602380546001600160801b0316905580a338806125f1565b346105b05760003660031901126105b0576020601a54604051908152f35b346105b05760403660031901126105b0576024356126dd8161059f565b6126f260018060a01b03600554163314613118565b60008080808094600435905af161270761493d565b50156127105780f35b60405162461bcd60e51b815260206004820152601560248201527429a3a61d103a3930b739b332b9103330b4b632b21760591b6044820152606490fd5b346105b05760003660031901126105b0576060602354604051906001600160401b0380821683528160401c16602083015260801c6040820152f35b346105b05760003660031901126105b0576020601e54604051908152f35b346105b05760403660031901126105b05760245460095461281c906020906127d6906001600160a01b0316610829565b6014546001600160801b0316906040518080958194638eb22cdd60e01b8352602435600484019081526001600160801b0390911660208201526001604082015260600190565b03915afa9182156117035761285561284d61078194610cdc9460009161285f575b506001600160801b03841661348f565b600435613426565b9060801c9061344f565b612877915060203d811161258a5761257b8183611cb2565b3861283d565b346105b05760003660031901126105b0576033546040516001600160a01b039091168152602090f35b346105b0576100196107676128f56128bd36610cec565b60405163cce19f8160e01b60208201526001600160a01b03938416602482015292909116604483015260648201529182906084820190565b615dec565b346105b057602061108561295361291036611a79565b60405163cd0211eb60e01b888201526001600160a01b03948516602482015293909216604484015215156064830152608480830191909152815261187181611c7c565b828082518301019101613a2d565b346105b05760003660031901126105b0576008546040516001600160a01b039091168152602090f35b346105b0576101603660031901126105b0576004356129a88161059f565b6024356001600160401b0381116105b0576129c7903690600401610bf0565b916044356129d48161059f565b60643560843560a4359060c4359260e4359461010435966101243598610144359a60018060a01b0392612a0c84600554163314613118565b838116612c25575b5080612bf0575b505081169081612b88575b505080612b6a575b5080612b4c575b5080612b2f575b5080612b05575b5080612adb575b5080612aa3575b5080612a77575b5080612a6057005b61001990612a72601e5482101561332e565b601f55565b80612a8a620186a0612a9d931115613294565b612a98601f548211156132d4565b601e55565b38612a58565b80612ad5916016547fae6e0ab3b95f0a53ff9660a390ccedcbbf1f2355dce974a9841af106fddcfaba600080a3601655565b38612a51565b80612aed620186a0612aff9310613294565b612afa601b548211613294565b601c55565b38612a4a565b80612b17620186a0612b299310613294565b612b24601c548210613294565b601b55565b38612a43565b80612b41620186a0612b469310613294565b601d55565b38612a3c565b80612b5f620186a0612b64931115613294565b601a55565b38612a35565b80612b7d620186a0612b82931115613294565b601955565b38612a2e565b600854612be99290612ba2906001600160a01b0316610829565b7f5a62d22209e370e38eea92cfddcd228e656e6ec139243392a760a7769f5877fd600080a3600880546001600160a01b0319166001600160a01b0392909216919091179055565b3880612a26565b612bf9916131b7565b7fa6f004921c944d4b8bf6e38462b00f36a58d62495d56b51f571ab78f732c9815600080a13880612a1b565b600f80546001600160a01b0319166001600160a01b039092169190911790557f0b2d6eb667d0522c3eb86e4288afecae6c11591ffd1345d4d12407e0598bca9b600080a138612a14565b610140806003193601126105b05760043590612c8a8261059f565b60643590612c978261079f565b6001600160401b03926084358481116105b057612cb8903690600401610e88565b9360a4359081116105b057612cd1903690600401610e96565b9360803660c31901126105b05761001994612d34612d4692610cc89560405197889663d49dffa760e01b602089015260018060a01b03166024880152602435604488015260443560648801521515608487015260a48601526101648501906159c8565b8381036023190160c485015290615a0c565b61076760e48301615aac565b346105b057612d6036610a90565b9592809594959291924211610bab5761001996612dfb93610b9393610b86878a610b7e8b610767610b8b99612d9486614168565b60405195869460208601988991959493909260c09360e08401977f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e26685526000602086015260018060a01b038092166040860152166060840152608083015260a08201520152565b6141e3565b346105b05760003660031901126105b057600b546040516001600160a01b039091168152602090f35b346105b0576020610640612e3c366105c2565b6001600160a01b0391821660009081526002855260408082209290931681526020919091522090565b346105b05760003660031901126105b0576009546040516001600160a01b039091168152602090f35b346105b05760003660031901126105b0576020601d54604051908152f35b346105b05760003660031901126105b0576006546040516001600160a01b039091168152602090f35b346105b05760803660031901126105b0576001600160401b036004358181116105b057612f0690369060040161224e565b906024358381116105b057612f1f90369060040161224e565b906044358581116105b057612f3890369060040161224e565b9290916064359687116105b057612f5661001997369060040161224e565b969095615bfe565b346105b05760a03660031901126105b057610019600435612f7e8161059f565b60243590612f8b8261059f565b60443590612f988261079f565b604051926374d2492960e11b602085015260018060a01b03809216602485015216604483015215156064820152606435608482015260843560a482015260a481526128f581611c97565b346105b05760003660031901126105b0576020601f54604051908152f35b346105b05760003660031901126105b0576020600c54604051908152f35b346105b05760003660031901126105b0576020602a54604051908152f35b346105b057602061307f61108561305236610cec565b9060086000959395526007865261307160ff6040600020541615614fce565b6130796147f3565b846156fb565b809261500b565b346105b05760003660031901126105b0576034546040516001600160a01b039091168152602090f35b346105b05760003660031901126105b0576100196147f3565b346105b05760003660031901126105b057602454604080516001600160801b038316815260809290921c602083015290f35b346105b05760003660031901126105b0576020602954604051908152f35b1561311f57565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b601f811161316f575050565b6000906010825260208220906020601f850160051c830194106131ad575b601f0160051c01915b8281106131a257505050565b818155600101613196565b909250829061318d565b91906001600160401b038111611c49576131db816131d6601054611bde565b613163565b6000601f82116001146132155781929360009261320a575b50508160011b916000199060031b1c191617601055565b0135905038806131f3565b6010600052601f198216937f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae67291805b86811061327c5750836001959610613262575b505050811b01601055565b0135600019600384901b60f8161c19169055388080613257565b90926020600181928686013581550194019101613244565b1561329b57565b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881b9bdd081d985b1a59607a1b6044820152606490fd5b156132db57565b60405162461bcd60e51b815260206004820152602560248201527f4d61726b65743a20636f6c6c61746572616c697a6174696f6e5261746520746f6044820152646f2062696760d81b6064820152608490fd5b1561333557565b60405162461bcd60e51b815260206004820152603260248201527f4d61726b65743a206c69717569646174696f6e436f6c6c61746572616c697a616044820152711d1a5bdb94985d19481d1bdbc81cdb585b1b60721b6064820152608490fd5b1561339c57565b60405162461bcd60e51b81526020600482015260126024820152714d61726b65743a2073616d6520737461746560701b6044820152606490fd5b634e487b7160e01b600052601160045260246000fd5b90620186a09182810292818404149015171561340457565b6133d6565b90670de0b6b3a76400009182810292818404149015171561340457565b8181029291811591840414171561340457565b634e487b7160e01b600052601260045260246000fd5b8115613459570490565b613439565b604d811161340457600a0a90565b90670de0b6b3a764000091820391821161340457565b9190820391821161340457565b9190820180921161340457565b8181039291600013801582851316918412161761340457565b906509184e72a0009182810292818405149015171561340457565b90670de0b6b3a76400009182810292818405149015171561340457565b818102929160008212600160ff1b82141661340457818405149015171561340457565b811561345957600160ff1b8114600019831416613404570590565b600160ff1b81146134045760000390565b60145491929190613557906001600160801b03831690613426565b9060801c9081156134595761358491613575910493601f5490613426565b61357e8361345e565b9061344f565b90818310613618576135e96135e36135de6135a26135ee9587613482565b936135d96135d36135ca601e546135c46135bb8661345e565b6020549061348f565b90613426565b61357e8461345e565b9161345e565b61349c565b6134b5565b916134d0565b613510565b6000811215613612576136009061352b565b905b80821161360d575090565b905090565b90613602565b505050600090565b6001600160a01b0381166000908152601760205260408120549193929091801561379a576136ce9061365061425c565b5061365961430b565b505050505094905061366c8415156139e1565b600954602090613684906001600160a01b0316610829565b600c546001600160a01b038a1660009081526018602052604080822054905163442c159960e01b815260048101939093526024830152604482015294859190829081906064820190565b03915afa928315611703576137719561357e61263d602061373561371e8a61371961371061376b9c6137449a8c9161377d575b50602154620186a090046135c4565b601e5490613426565b61344f565b85519098906135c4906001600160801b031661263d565b9301516001600160801b031690565b908282106137755750035b6001600160a01b03909516600090815260186020526040902090565b54613a3c565b9091565b91505061374f565b6137949150873d811161258a5761257b8183611cb2565b38613701565b505080919250918190565b91908260409103126105b057602082516137be8161079f565b92015190565b6020808252600091601054916137d983611bde565b928382840152600190818116908160001461383c57506001146137fe575b5050505090565b929350601060005280600020926000935b85851061382857505050604092500101388080806137f7565b80548585016040015293820193810161380f565b925050506040935060ff929192191683830152151560051b0101388080806137f7565b6040513d6000823e3d90fd5b1561387257565b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881c985d19481d1bdbc81bdb1960621b6044820152606490fd5b156138b557565b60405162461bcd60e51b81526020600482015260146024820152734d61726b65743a20696e76616c6964207261746560601b6044820152606490fd5b600f54613906906001600160a01b0316610829565b6040805163d6d7d52560e01b81529291839081600081613928600482016137c4565b03925af180156117035760009283916139ad575b509082156139885761394f8215156138ae565b61395882601155565b817f9f9192b5edb17356c524e08d9e025c8e2f6307e6ea52fb7968faa3081f51c3c8600080a25b6105c042601355565b90506139a461399c6013546012549061348f565b42111561386b565b6011549061397f565b90506139d191925060403d81116139da575b6139c98183611cb2565b8101906137a5565b9190913861393c565b503d6139bf565b156139e857565b60405162461bcd60e51b815260206004820152601e60248201527f4d61726b65743a2065786368616e676552617465206e6f742076616c696400006044820152606490fd5b908160209103126105b0575190565b613a916020831592613a4e84156139e1565b600954600c5460405163442c159960e01b81526004810191909152602481019290925260006044830152909283916001600160a01b031690829081906064820190565b03915afa801561170357613ab191600091613acb575b5060215490613426565b906134595704620186a0613ac7601e5483613426565b0491565b613ae3915060203d811161258a5761257b8183611cb2565b38613aa7565b9190916000838201938412911290801582169115161761340457565b90613b29613b479161376b8460018060a01b03166000526018602052604060002090565b6001600160a01b039093166000908152601760205260409020909291565b548015613618578215613618578281106136185781811015613bd05782613b90613b8b613b9695610de461357e956128556014549160018060801b03831690613426565b6133ec565b92613482565b613bc4601b5491613bbf613bb6601c5492613bb1848761349c565b6134ed565b620186a0900590565b613ae9565b9080821261360d575090565b505050601b5490565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03161480613cca575b15613c34577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f000000000000000000000000000000000000000000000000000000000000000082527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a08152613cc481611c7c565b51902090565b507f00000000000000000000000000000000000000000000000000000000000000004614613c0b565b15613cfa57565b60405162461bcd60e51b815260206004820152601660248201527545524332303a2062616c616e636520746f6f206c6f7760501b6044820152606490fd5b15613d3f57565b60405162461bcd60e51b815260206004820152601660248201527545524332303a206e6f207a65726f206164647265737360501b6044820152606490fd5b15613d8457565b60405162461bcd60e51b815260206004820152601860248201527745524332303a20616c6c6f77616e636520746f6f206c6f7760401b6044820152606490fd5b6101009081818051810103126105b0576020810151613de28161079f565b604082015192613df18461059f565b606083015194613e008661059f565b60808401519460a085015160c086015193613e1a85610a85565b60e08701519601516001600160a01b0392831698831696428310610bab57613edc95613ed08a8c610b7e8199610767613ed5998f8f600014613ef3577f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e266965b613e8287614168565b60408051602081019a8b5261ffff909716908701526001600160a01b03978816606087015296909116608085015260a084015260c083019490945260e0820193909352918290610100820190565b613f66565b1614613f1a565b15613eea576105c0926141e3565b6105c092614190565b7f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d696613e79565b15613f2157565b60405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152606490fd5b916105e79391610b8b9361409a565b60051115611b8157565b613f8881613f75565b80613f905750565b613f9981613f75565b60018103613fe15760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b6044820152606490fd5b613fea81613f75565b600281036140375760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606490fd5b80614043600392613f75565b1461404a57565b60405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608490fd5b9291906fa2a8918ca85bafe22016d0b997e4df60600160ff1b0383116141065791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa156117035781516001600160a01b03811615614100579190565b50600190565b50505050600090600390565b61411a613bd9565b9060405190602082019261190160f01b84526022830152604282015260428152608081018181106001600160401b03821117611c495760405251902090565b60001981146134045760010190565b6001600160a01b0316600090815260046020526040902080549061418b82614159565b905590565b6001600160a01b03908116600081815260036020908152604080832095909416808352949052918220849055907fe50de2333c10a9502fcb1d8ae13a51bbf423153dfc63c2b8997665b32154afc39080a4565b6001600160a01b0390811660008181526002602090815260408083208686168452825290912091937f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259391928690556040519586521693a3565b6040519061424a82611c2e565b60006040838281528260208201520152565b6040519061426982611c4e565b60006020838281520152565b6040519061428282611c2e565b8160406023546001600160401b03808216845281831c16602084015260801c910152565b604051906142b382611c4e565b6014546001600160801b038116835260801c6020830152565b604051906142d982611c4e565b6024546001600160801b038116835260801c6020830152565b6001600160801b03918216908216019190821161340457565b61431361423d565b5061431c61425c565b5061432561425c565b5061432e614275565b906143376142a6565b906143406142cc565b906143a560008061435b61082960095460018060a01b031690565b600e54865160405163442c159960e01b808252600482018490526001600160801b039092166024820152600060448201529296602096919590939092918790829081906064820190565b03818b5afa8015611703576143d69184916147af575b508a516143d0906001600160801b031661263d565b9061348f565b8061478c575081945b8a61440c6144066143fa8a8a9401516001600160401b031690565b6001600160401b031690565b42613482565b96871561476457506001600160401b03428116898e01528b8901516001600160801b039995919491939192908a161561470657508b518d518692918a91614467916001600160401b03909116906001600160801b0316613426565b9061447191613426565b8d51670de0b6b3a76400009091049b908e90614499908d8f16906001600160801b03166142f2565b6001600160801b039081169091528d5160405193845260048401959095529390931660248201526000604482015291829060649082905afa8015611703578461455161452d8f978f613719908f9261263d6135c4916137356145186145739b6145249d8f916146e9575b5086516143d0906001600160801b031661263d565b9b8c97601a5490613426565b620186a0900490565b9a8b169161455e604089016145518561454c835160018060801b031690565b6142f2565b6001600160801b03169052565b8d0180519092906001600160801b03166142f2565b806146c65750945b602954868181101561461f57936137196145df936145c66143fa6145d16145cb6145b8886137196145b36145ec9d9e6143fa9c613482565b613409565b946145c6602d549680613426565b613426565b8461348f565b94516001600160401b031690565b6001600160401b03168a52565b88516001600160401b0316602c546001600160401b031691808316911610614612575b50565b6001600160401b03168852565b919050602a54808311614634575b5050505050565b6146b4946145c66143fa61467761467161466361465a6145b3613719986146859b613482565b602b549061344f565b966145c6602d549880613426565b8661348f565b92516001600160401b031690565b602c5461469d9060401c6001600160401b03166143fa565b8082116146be575b50166001600160401b03168952565b873880808061462d565b9050386146a5565b8a516146e39250613719906145b3906001600160801b031661263d565b9461457b565b6147009150843d861161258a5761257b8183611cb2565b38614503565b985050509650929798935050945061472582516001600160401b031690565b602e546001600160401b03169180831691160361474f575b5094936147486142cc565b9383929190565b6001600160401b03168152600194503861473d565b9a5050505095509693505050509261477a6142a6565b926147836142cc565b92809281929190565b89516147a99190613719906145b3906001600160801b031661263d565b946143df565b6147c69150883d8a1161258a5761257b8183611cb2565b386143bb565b805160209091015160801b6001600160801b0319166001600160801b039190911617602455565b6105c06148bf6148e661480461430b565b9397949593909290156148eb575050506001600160401b03602e54166000807f33af5ce86e8438eff54589f85332916444457dfa8685493fbd579b809097026b6020604051838152a45b6148786001600160401b038251166001600160401b03166001600160401b03196023541617602355565b6020810151602380546040938401516001600160401b039091169290931b67ffffffffffffffff60401b169190911760809290921b6001600160801b031916919091179055565b805160209091015160801b6001600160801b0319166001600160801b039190911617601455565b6147cc565b7f33af5ce86e8438eff54589f85332916444457dfa8685493fbd579b809097026b60206001600160401b0386511694604051908152a461484e565b906149396020928281519485920161067d565b0190565b3d15614968573d9061494e82611edb565b9161495c6040519384611cb2565b82523d6000602084013e565b606090565b6040519061497a82611c4e565b60038252623f3f3f60e81b6020830152565b634e487b7160e01b600052603260045260246000fd5b9081518110156149b3570160200190565b61498c565b60ff1660ff81146134045760010190565b906149d382611edb565b6149e06040519182611cb2565b82815280926149f1601f1991611edb565b0190602036910137565b6020818303126105b0578051906001600160401b0382116105b0570181601f820112156105b0578051614a2d81611edb565b92614a3b6040519485611cb2565b818452602082840101116105b0576105e7916020808501910161067d565b805160408110614a775750806020806105e7935183010191016149fb565b602092908303614b4c576000805b60ff81168581109081614b2a575b5015614aa757614aa2906149b8565b614a85565b92614ab560ff8095166149c9565b92825b85811687811080614b0b575b15614b00579081614af5614aec614ade614afb95886149a2565b516001600160f81b03191690565b871a91886149a2565b536149b8565b614ab8565b505094505050905090565b506001600160f81b0319614b22614ade83876149a2565b161515614ac4565b6001600160f81b03199150614b4390614ade90876149a2565b16151538614a93565b9150506105e761496d565b90816101a09103126105b0578035614b6e8161059f565b916020820135614b7d8161059f565b916040810135614b8c8161059f565b91614b99606083016105b5565b91614ba6608082016105b5565b91614bb360a083016105b5565b9160c081013591614bc660e083016105b5565b9161010081013591614bdb61012083016105b5565b916101408101359161018061016083013592013590565b908160209103126105b057516105e78161059f565b15614c0e57565b60405162461bcd60e51b815260206004820152600d60248201526c29a3a61d103130b2103830b4b960991b6044820152606490fd5b15614c4a57565b60405162461bcd60e51b815260206004820152602f60248201527f53474c3a206c69717569646174696f6e436f6c6c61746572616c697a6174696f60448201526e1b94985d19481b9bdd081d985b1a59608a1b6064820152608490fd5b614cc263097343e06001600160401b0319602c541617602c55565b602c805467ffffffffffffffff60401b19166324ea412360491b179055614cf97054a2b63d65d79d094abb66880000000000602d55565b614d2a614d0e602c546001600160401b031690565b6001600160401b03166001600160401b0319602e541617602e55565b614d5b614d3f602e546001600160401b031690565b6001600160401b03166001600160401b03196023541617602355565b614d636138f1565b5050614d706103e8601955565b614d7a6000601a55565b614d846032602f55565b614d8f612ee0602055565b8015614e4557601e555b8015614e3857601f555b614db2601f54601e5410614c43565b614dbd6161a8602855565b8015614e26576021555b614dd362013880601b55565b614ddf62015f90601c55565b614dea612710601d55565b614dfb670429d069189e0000602955565b614e0c6706f05b59d3b20000602a55565b614e1a61138a602a5461346c565b6105c062015180601255565b50614dc7670de0b6b3a7640000602155565b50614da362013880612a72565b50614d99620124f8612a98565b6001600160401b038111611c495760051b60200190565b90614e7382614e52565b614e806040519182611cb2565b82815280926149f1601f1991614e52565b90614e9b82614e52565b614ea86040519182611cb2565b8281528092614eb9601f1991614e52565b019060005b828110614eca57505050565b806060602080938501015201614ebe565b91908110156149b35760051b81013590601e19813603018212156105b05701908135916001600160401b0383116105b05760200182360381136105b0579190565b908092918237016000815290565b80518210156149b35760209160051b010190565b6103e8815111614f9a576044815110614f67578060248060046105e794015183010191016149fb565b50604051614f7481611c4e565b60168152754d61726b65743a206e6f2072657475726e206461746160501b602082015290565b50604051614fa781611c4e565b60178152764d61726b65743a20726561736f6e20746f6f206c6f6e6760481b602082015290565b15614fd557565b60405162461bcd60e51b815260206004820152600e60248201526d13585c9ad95d0e881c185d5cd95960921b6044820152606490fd5b6001600160a01b03811633810361502157505050565b60009081526002602090815260408083203384529091529020829054106150a5576001600160a01b038116600090815260026020526040902060001990615069903390610e40565b5403615073575050565b6001600160a01b031660009081526002602052604090206150a190615099903390610e40565b918254613482565b9055565b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881b9bdd08185c1c1c9bdd995960621b6044820152606490fd5b93929190936150ee6142cc565b80516009546001600160801b039791881694929061515a9060209061511b906001600160a01b0316610829565b600e54601454604051638eb22cdd60e01b815260048101929092526001600160801b031660248201526001604482015292839190829081906064820190565b03915afa80156117035761517791600091615304575b508661348f565b806152d557506103e886985b602083015161519e90828c16906001600160801b03166142f2565b16106152c95761523561520e959493926151bf6148e68b8a61524696615322565b6151c8816105ea565b6151d38b825461348f565b90556040518a81526001600160a01b0382811698909761521b9287928b91600091600080516020615e17833981519152919081906020820190565b0390a38a600e54896153c8565b6001600160a01b0316600090815260256020526040902090565b602654600052602052604060002090565b61525186825461348f565b9055156152a157506009547f30a8c4f9ab5af7e1309ca87c32377d1a83366c5990472dbf9d262450eae14e3890615290906001600160a01b0316610829565b915b604051878152921691602090a4565b7f30a8c4f9ab5af7e1309ca87c32377d1a83366c5990472dbf9d262450eae14e389091615292565b50600096505050505050565b60208201516103e8916152fe91613719906152f8906001600160801b031661263d565b8a613426565b98615183565b61531c915060203d811161258a5761257b8183611cb2565b38615170565b91906153469061533061425c565b5060018060801b039182809216828651166142f2565b16835261535c81602085019316828451166142f2565b16905290565b6001600160a01b039182168152911660208201526040810191909152606081019190915260800190565b1561539357565b60405162461bcd60e51b815260206004820152600d60248201526c0a68e987440e8dede40daeac6d609b1b6044820152606490fd5b90919293600014615460575060095461541a916020916153f0906001600160a01b0316610829565b604051627eeac760e11b815230600482015260248101929092529092839190829081906044820190565b03915afa928315611703576105c09361543b92600091615442575b50613482565b101561538c565b61545a915060203d811161258a5761257b8183611cb2565b38615435565b600954919350919061547a906001600160a01b0316610829565b803b156105b0576154a8936000809460405196879586948593630208d92960e11b8552309060048601615362565b03925af18015611703576154b95750565b806154c66105c092611c69565b80610649565b6001600160801b03918216908216039190821161340457565b156154ec57565b60405162461bcd60e51b815260206004820152600e60248201526d14d1d30e881b5a5b881b1a5b5a5d60921b6044820152606490fd5b6024549093926001600160801b039160801c156156f2576155416142cc565b80519095906001600160801b031660095461556b9060209061511b906001600160a01b0316610829565b03915afa9182156117035785916000936156d2575b50169061558c9161348f565b6155969083613426565b6020870180519092916155b2916001600160801b03169061344f565b9687946155be836105ea565b858154906155cb91613482565b90556040518581526001600160a01b0393841694906000908690600080516020615e1783398151915290602090a3825161561190838916906001600160801b03166154cc565b6001600160801b031683528051868316906001600160801b031690615635916154cc565b6001600160801b03168152516001600160801b0316166103e81115615659906154e5565b615662906147cc565b6040519283528416917f6e853a5fd6b51d773691f542ebac8513c9992a51380d4c342031056a6411422890602090a4600954600e546001600160a01b0390911691823b156105b0576154a89260009283879360405196879586948593630208d92960e11b85523060048601615362565b6156eb91935060203d811161258a5761257b8183611cb2565b9138615580565b50600093505050565b6024546001600160801b0394939192919060801c156156f25761571c6142cc565b80519091906001600160801b03166009546157469060209061511b906001600160a01b0316610829565b03915afa918215611703578891600093615956575b5016906157679161348f565b6157719082613426565b602083018051909161578c916001600160801b03169061344f565b968793615798876105ea565b848154906157a591613482565b90556040518481526001600160a01b03888116949093916000908690600080516020615e1783398151915290602090a382516157ed90838916906001600160801b03166154cc565b6001600160801b031683528051868316906001600160801b031690615811916154cc565b6001600160801b03168152516001600160801b0316166103e81115615835906154e5565b61583e906147cc565b6040519283528416917f6e853a5fd6b51d773691f542ebac8513c9992a51380d4c342031056a6411422890602090a4600954600e546001600160a01b0390911691823b156105b0576158ae9260009283889360405196879586948593630208d92960e11b85523060048601615362565b03925af1801561170357615943575b506001600160a01b03811660009081526025602052604090206158ed602654809290600052602052604060002090565b5484111561591957506001600160a01b0316600090815260256020526040812061591690615235565b55565b6125456159389260018060a01b03166000526025602052604060002090565b6150a1838254613482565b806154c661595092611c69565b386158bd565b61596f91935060203d811161258a5761257b8183611cb2565b913861575b565b908060209392818452848401376000828201840152601f01601f1916010190565b9035601e19823603018112156105b05701602081359101916001600160401b0382116105b05781360383136105b057565b9060606159fc6105e79380356159dd8161059f565b6001600160a01b03168452602081810135908501526040810190615997565b9190928160408201520191615976565b908135815261ffff80615a2160208501611f07565b166020830152615a3360408401611f07565b16604082015260c06060830135615a498161059f565b6001600160a01b03908116606084015281615a99615a7e615a6d6080880188615997565b60e0608089015260e0880191615976565b615a8b60a0880188615997565b9087830360a0890152615976565b940135615aa58161059f565b1691015290565b606060c435615aba8161059f565b6001600160a01b0390811683528060e435615ad48161059f565b1660208401528061010435615ae88161059f565b16604084015261012435615afb8161059f565b16910152565b60609081813591615b118361059f565b6001600160a01b039283168552826020820135615b2d8161059f565b166020860152826040820135615b428161059f565b1660408601520135615afb8161059f565b91908082526020809201929160005b828110615b70575050505090565b9091929382806001928735615b848161059f565b848060a01b03168152019501910192919092615b62565b9082818152602080910193818360051b82010194846000925b858410615bc5575050505050505090565b909192939495968580615bed600193601f19868203018852615be78c88615997565b90615976565b990194019401929594939190615bb4565b9295969094969391936040519660209663e5644d8b60e01b888a01528060a48a01608060248c01525260c48901959060005b89828210615c9a575050505087850360231990810160448a0152818652936001600160fb1b0382116105b05761460f99612170988a9861076798615c8b9560051b809284830137018981036003190160648b01520191615b53565b92858403016084860152615b9b565b808499600193949535615cac8161059f565b848060a01b031681520198019101919091615c30565b15615cc957565b60405162461bcd60e51b815260206004820152600e60248201526d14d1d30e881b9bdd081d985b1a5960921b6044820152606490fd5b6034546001600160a01b03168015615d5d57816000929160208493519201905af490615d2961493d565b9115615d3157565b61243d615d3d83614f3e565b60405162461bcd60e51b81526020600482015291829160248301906106a0565b60405162461bcd60e51b815260206004820152601360248201527214d1d30e881b5bd91d5b19481b9bdd081cd95d606a1b6044820152606490fd5b6032546001600160a01b03168015615d5d57816000929160208493519201905af490615d2961493d565b6031546001600160a01b03168015615d5d57816000929160208493519201905af490615d2961493d565b6033546001600160a01b03168015615d5d57816000929160208493519201905af490615d2961493d56feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa264697066735822122077698ebb59f5f6b77a36cbe725e491ec2f146c875c00adc902384190cefc304864736f6c63430008120033", + "bytecode": "0x6101408060405234620001ea576200001781620001ef565b601381526001602082017f546170696f63612053696e67756c617269747900000000000000000000000000815260206040516200005481620001ef565b8381520192603160f81b845251902091208160e052610100918183524660a0526040519160208301907f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f92838352604085015260608401524660808401523060a084015260a0835260c083019280841060018060401b03851117620001d45760408490525190206080523060c052610120908152600580546001600160a01b0319163390811790915560007f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a362013880601b5562015f90601c55612710601d55612ee06020557f0bd4060688a1800ae986e4840aebc924bb40b5bf44de4583df2257220b54b77c6027557f7d1dc38e60930664f8cbf495da6556ca091d2f92d6550877750c049864b182306028556161a860295560326030556001603155615f1d92836200020c843960805183613cc3015260a05183613d7e015260c05183613c8d015260e05183613d1201525182613d3801525181613cef0152f35b634e487b7160e01b600052604160045260246000fd5b600080fd5b604081019081106001600160401b03821117620001d45760405256fe6080604052600436101561001b575b361561001957600080fd5b005b60003560e01c8062a02a20146105ba57806302ce728f146105b557806306fdde03146105b0578063078dfbe7146105ab578063095ea7b3146105a65780630c4e84f0146105a157806318160ddd1461059c5780631c9e379b146105975780631da8bf101461059257806323b872dd1461058d57806325384fd8146105885780632a9399d914610583578063313ce5671461057e578063331960ff1461057957806334d441d0146105745780633644e5151461056f57806337b6b7b91461056a57806338225f111461056557806338d52e0f146105605780633ba0b9a91461055b5780633f741adb1461055657806340626d8b1461055157806344de240a1461054c578063473e3ce71461054757806348e4163e146105425780634d7f2a341461053d5780634ddf47d4146105385780634e71e0c8146105335780635224372c1461052e578063529898f21461052957806352f353eb14610524578063551402321461051f57806355c2ab941461051a57806357935462146105155780635d5f73ef146105105780635dfe04e81461050b5780636587adb8146105065780636c3d8b8f1461050157806370a08231146104fc57806372778547146104f757806374645ff3146104f25780637dc0d1d0146104ed5780637ecebe00146104e85780637fa0b84e146104e3578063821226e8146104de5780638285ef40146104d95780638c5d0ed3146104d45780638da5cb5b146104cf578063910dd7c8146104ca578063959916dc146104c557806395d89b41146104c057806399a97028146104bb5780639c5d7192146104b65780639e15e89f146104b1578063a28e6b82146104ac578063a9059cbb146104a7578063aa7d9665146104a2578063ae70702e1461049d578063af405b4c14610498578063b0e21e8a14610493578063b25ea8fb1461048e578063b27c0e7414610489578063bb4cfe3b14610484578063bf0b89581461047f578063c861a5261461047a578063cce19f8114610475578063cd0211eb14610470578063ce8849ed1461046b578063d3fb2a3814610466578063d49dffa714610461578063d4e4534e1461045c578063d505accf14610457578063d8dfeb4514610452578063da863f0e1461044d578063dd62ed3e14610448578063de40657714610443578063e0996cb61461043e578063e30c397814610439578063e5644d8b14610434578063e7d6de801461042f578063e9a492521461042a578063ea64dd5614610425578063eec0f42e14610420578063ef2b234a1461041b578063f42760b714610416578063f4d9375314610411578063f5b33dfa1461040c578063f8ba4cff14610407578063f9557ccb146104025763ffe04c660361000e576131ab565b613179565b613160565b613137565b6130ed565b6130cf565b613059565b61303b565b61301d565b612f99565b612f11565b612e88565b612e5f565b612e41565b612e18565b612ddc565b612db3565b612d8a565b612cdc565b612c3d565b612b5a565b612875565b61284c565b6127e5565b612791565b612768565b612691565b612673565b612638565b6125ab565b61258d565b612487565b612366565b6121f5565b612050565b611fa6565b611f68565b611f4a565b611f1f565b611e8a565b611e6c565b611df1565b611d8d565b611d6f565b611d3d565b611d1f565b611cf5565b611cb8565b611c8f565b611bae565b611a7a565b6119ff565b6119d6565b61198d565b6118f5565b6118cc565b6118ae565b611884565b61185d565b611836565b611819565b6117a0565b6116c1565b611442565b6113f7565b6113ba565b61139c565b61137e565b611360565b61133c565b61131e565b6112f5565b611000565b610fb6565b610f93565b610f75565b610f57565b610eb6565b610dd9565b610d83565b610c3c565b610af5565b610a68565b610a47565b610950565b61090c565b6107c9565b6106f6565b610674565b610624565b6001600160a01b038116036105d057565b600080fd5b35906105e0826105bf565b565b60409060031901126105d0576004356105fa816105bf565b90602435610607816105bf565b90565b6001600160a01b0316600090815260016020526040902090565b346105d0576020610660610637366105e2565b6001600160a01b0391821660009081526003855260408082209290931681526020919091522090565b54604051908152f35b60009103126105d057565b346105d05760003660031901126105d057604061068f6139a2565b825191151582526020820152f35b60005b8381106106b05750506000910152565b81810151838201526020016106a0565b906020916106d98151809281855285808601910161069d565b601f01601f1916010190565b9060206106079281815201906106c0565b346105d0576000806003193601126107bc57808060018060a01b03600b541660405160208101906306fdde0360e01b82526004815261073481611b29565b51915afa6107406149ee565b9150156107a5576107876107956107596107a193614b0a565b60405173546170696f63612053696e67756c61726974792d60601b6020820152928391603483015b906149d7565b03601f198101835282611b8d565b604051918291826106e5565b0390f35b506107a16107876107956107b7614a1e565b610759565b80fd5b801515036105d057565b346105d05760603660031901126105d0576004356107e6816105bf565b602435906107f3826107bf565b60443591610800836107bf565b6005546001600160a01b03919061081a90831633146131c9565b156108f3578116918215908115916108eb575b50156108ae5760055461089c9290610855906001600160a01b03165b6001600160a01b031690565b7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b600680546001600160a01b0319169055005b60405162461bcd60e51b81526020600482015260156024820152744f776e61626c653a207a65726f206164647265737360581b6044820152606490fd5b90503861082d565b60068054919092166001600160a01b0319909116179055005b346105d05760403660031901126105d05761093660043561092c816105bf565b6024359033614294565b602060405160018152f35b6004359060098210156105d057565b346105d05760403660031901126105d057610969610941565b602435610975816107bf565b6008546001600160a01b03163303610a0b576109fa826109a96109a461099d61001996611a61565b5460ff1690565b151590565b6109b884151591821415613446565b6109c461099d83611a61565b6109cd83611a52565b1515827feeec81de25875ce1725479bb76f720a8defdb43dea041919ae37bb4aae9847c0600080a4611a61565b9060ff801983541691151516179055565b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881d5b985d5d1a1bdc9a5e995960621b6044820152606490fd5b346105d05760003660031901126105d057602060255460801c604051908152f35b346105d05760203660031901126105d057600435610a85816105bf565b60018060a01b031660005260186020526020604060002054604051908152f35b60ff8116036105d057565b60e09060031901126105d057600435610ac8816105bf565b90602435610ad5816105bf565b906044359060643590608435610aea81610aa5565b9060a4359060c43590565b346105d057610b0336610ab0565b9592809594959291924211610bcb5761001996610bc693610bb393610ba6878a610b9e8b610787610bab99610b3786614219565b60405195869460208601988991959493909260c09360e08401977f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d685526000602086015260018060a01b038092166040860152166060840152608083015260a08201520152565b5190206141c3565b61414b565b919091614030565b6001600160a01b03838116911614613fcb565b614241565b60405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b60609060031901126105d057600435610c28816105bf565b90602435610c35816105bf565b9060443590565b346105d057610c84600080516020615ec8833981519152610c5c36610c10565b9291939083610c93575b6040519384526001600160a01b039081169416929081906020820190565b0390a360405160018152602090f35b610c9c8561060a565b54610ca985821015613da4565b6001600160a01b038281169186918816839003610cc9575b505050610c66565b6001600160a01b03881660009081526002602090815260408083203384529091529020610d0d93610d0891548460018201610d35575b50501515613de9565b613533565b610d168661060a565b55610d208161060a565b610d2b858254613540565b9055388481610cc1565b81610d0882610d45941015613e2e565b6001600160a01b038b166000908152600260205260409020610d7b9033905b9060018060a01b0316600052602052604060002090565b553884610cff565b346105d05760003660031901126105d0576033546040516001600160a01b039091168152602090f35b908160609103126105d05790565b908160e09103126105d05790565b60809060a31901126105d05760a490565b610120806003193601126105d057600435610df3816105bf565b60443590610e00826107bf565b6001600160401b03906064358281116105d057610e21903690600401610dac565b936084359283116105d057610787610ea661001996610e94610e4a610eb1973690600401610dba565b91610e5436610dc8565b95604051998a98632a9399d960e01b60208b015260018060a01b031660248a015260243560448a0152151560648901526084880152610144870190615a7f565b8581036023190160a487015290615ac3565b9160c4840190615bb8565b615db0565b346105d0576000806003193601126107bc57808060018060a01b03600d5416604051602081019063313ce56760e01b825260048152610ef481611b29565b51915afa90610f016149ee565b9180610f4c575b15610f40576020828051810103126107bc575060206107a1910151610f2c81610aa5565b60405160ff90911681529081906020820190565b50506107a16012610f2c565b506020825114610f08565b346105d05760003660031901126105d0576020601354604051908152f35b346105d05760003660031901126105d0576020601954604051908152f35b346105d05760003660031901126105d0576020610fae613c8a565b604051908152f35b346105d05760003660031901126105d0576020601254604051908152f35b60a435906001600160401b03821682036105d057565b60c435906001600160401b03821682036105d057565b346105d0576101003660031901126105d057600435606435604435602435608435611029610fd4565b611031610fea565b60e4359261104a60018060a01b036005541633146131c9565b620186a09661105b888a1115613345565b61108f603054998060009b7fc353b09af857951dccce61b43a5854fc45beceed36c50e5d4cc2e71858a8e0df8d80a3603055565b806112be575b5080611261575b506001600160401b03918281169081611201575b505081811680611190575b50505080611159575b5080611116575b50806110d5578280f35b6110e3611110928210615d73565b806020547f1f1d0e9e5e3fd195010504141e7472fc7f53e44d7cd3f236f0892778039c63268580a3602055565b38808280f35b8061112684611153931115615d73565b806029547f1a98b2490874ba87102ae05e5b66fbe02edfcfb7e8b4e2d60f9aef620de5e3378780a3602955565b386110cb565b8061118a91602e547f6bdc0e1a8f6a69c7dcb57e254165094714bb2a8730e2fedd8c6e9b71e67478b58880a3602e55565b386110c4565b6111f992602d546111a48282168411615d73565b60401c167fb02a4833a4686ad41ec77a1e91a97a505459a34966985bf11c59b1e01852e4a68980a3602d805467ffffffffffffffff60401b191660409290921b67ffffffffffffffff60401b16919091179055565b3880806110bb565b61125a9184602d54611219828260401c168410615d73565b167f6d780269adaf7a0d9858a89a8c090b0b3add5f7088ccac6f619ff2b22987e7d58b80a36001600160401b03166001600160401b0319602d541617602d55565b38806110b0565b80611278670de0b6b3a76400006112a59310615d73565b80602b547f4d5fa9a75b98ca1386ef794acdb2601c953e99a9c7a94ed351a46e06dc1bab288b80a3602b55565b6112b86112b3602b5461351d565b602c55565b3861109c565b806112ef91602a547fa55fca071799e1b20f7cdcdf447fcc08c886bdd0cb741bf8862a311921bbb3888c80a3602a55565b38611095565b346105d05760003660031901126105d057600d546040516001600160a01b039091168152602090f35b346105d05760003660031901126105d0576020601154604051908152f35b346105d05760603660031901126105d0576020610fae6044356024356004356135ed565b346105d05760003660031901126105d0576020601654604051908152f35b346105d05760003660031901126105d0576020600e54604051908152f35b346105d05760003660031901126105d0576020601554604051908152f35b346105d05760203660031901126105d0576004356113d7816105bf565b60018060a01b031660005260176020526020604060002054604051908152f35b346105d05760003660031901126105d0576020602954604051908152f35b9181601f840112156105d0578235916001600160401b0383116105d057602083818601950101116105d057565b346105d05760203660031901126105d0576004356001600160401b0381116105d057611472903690600401611415565b60ff60235416611686578161148b916020930190614c08565b600a80546001600160a01b0319166001600160a01b038c16179055929c909b919a929993989497959695946040519e8f63de40657760e01b815260048160018060a01b038095165afa9e8f15611681576116279f826115e59761159c6116229f8f90848f61158582999361152884809b8197600091611653575b5060098054919092166001600160a01b03166001600160a01b0319909116179055565b600a5461156390611541906001600160a01b0316610849565b600580546001600160a01b0319166001600160a01b0392909216919091179055565b602180546001600160a01b0319166001600160a01b0392909216919091179055565b1615159182611647575b82611639575b5050614cbe565b1695169316911692909160018060a01b03928380928160018060a01b03199716876032541617603255168560345416176034551683603354161760335516906035541617603555565b9391929060018060a01b0380948160018060a01b0319971687600d541617600d551685600b541617600b55600e55600c551690600f541617600f55565b614d5e565b610019600160ff196023541617602355565b9091501615158f8490611595565b8d82161515925061158f565b611674915060203d811161167a575b61166c8183611b8d565b810190614ca9565b38611505565b503d611662565b613910565b60405162461bcd60e51b815260206004820152601360248201527213585c9ad95d0e881a5b9a5d1a585b1a5e9959606a1b6044820152606490fd5b346105d0576000806003193601126107bc576006546001600160a01b03163381900361175c5760055461174991908190611703906001600160a01b0316610849565b7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08580a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b600680546001600160a01b031916905580f35b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b346105d0576117f46107876117ef6117b736610c10565b6040516314890dcb60e21b60208201526001600160a01b03938416602482015292909116604483015260648201529182906084820190565b615e49565b6040818051810103126105d05780604060208193015191015182519182526020820152f35b346105d05760003660031901126105d05760208054604051908152f35b346105d05760003660031901126105d05760206001600160401b03602f5416604051908152f35b346105d05760003660031901126105d05760206001600160401b03602d5416604051908152f35b346105d05760003660031901126105d0576020602d546001600160401b036040519160401c168152f35b346105d05760003660031901126105d0576020601c54604051908152f35b346105d05760003660031901126105d0576032546040516001600160a01b039091168152602090f35b346105d05760003660031901126105d05761190e6142ee565b5060806119196143bc565b509350505050604051916001600160401b0380825116845260208201511660208401526040600180861b039101511660408301526060820152f35b60809060031901126105d05760043561196c816105bf565b90602435611979816105bf565b90604435611986816107bf565b9060643590565b346105d0576020610fae6119a036611954565b926007600093929352600786526119bf60ff6040600020541615615085565b6119c984826150c2565b6119d16148a4565b615198565b346105d05760003660031901126105d057600a546040516001600160a01b039091168152602090f35b346105d05760203660031901126105d057600435611a1c816105bf565b60018060a01b031660005260016020526020604060002054604051908152f35b634e487b7160e01b600052602160045260246000fd5b60091115611a5c57565b611a3c565b6009811015611a5c576000526007602052604060002090565b346105d05760203660031901126105d057611a93610941565b6009811015611a5c576000526007602052602060ff604060002054166040519015158152f35b90600182811c92168015611ae9575b6020831014611ad357565b634e487b7160e01b600052602260045260246000fd5b91607f1691611ac8565b634e487b7160e01b600052604160045260246000fd5b606081019081106001600160401b03821117611b2457604052565b611af3565b604081019081106001600160401b03821117611b2457604052565b6001600160401b038111611b2457604052565b60c081019081106001600160401b03821117611b2457604052565b60e081019081106001600160401b03821117611b2457604052565b90601f801991011681019081106001600160401b03821117611b2457604052565b346105d0576000806003193601126107bc5760405181601054611bd081611ab9565b80845290600190818116908115611c675750600114611c0e575b6107a184611bfa81880382611b8d565b6040519182916020835260208301906106c0565b60108352602094507f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae6725b828410611c5457505050816107a193611bfa9282010193611bea565b8054858501870152928501928101611c38565b6107a19650611bfa9450602092508593915060ff191682840152151560051b82010193611bea565b346105d05760003660031901126105d057600f546040516001600160a01b039091168152602090f35b346105d05760203660031901126105d057600435611cd5816105bf565b60018060a01b031660005260046020526020604060002054604051908152f35b346105d05760403660031901126105d057610936600435611d15816105bf565b6024359033614241565b346105d05760003660031901126105d0576020602e54604051908152f35b346105d05760003660031901126105d057601454604080516001600160801b038316815260809290921c602083015290f35b346105d05760003660031901126105d0576020601b54604051908152f35b346105d05760003660031901126105d0576005546040516001600160a01b039091168152602090f35b6001600160401b038111611b2457601f01601f191660200190565b6024359061ffff821682036105d057565b359061ffff821682036105d057565b346105d05760403660031901126105d0576004356001600160401b0381116105d057366023820112156105d0578060040135611e2c81611db6565b90611e3a6040519283611b8d565b80825236602482850101116105d057602081600092602461001996018386013783010152611e66611dd1565b90613e75565b346105d05760003660031901126105d0576020603054604051908152f35b346105d0576000806003193601126107bc57808060018060a01b03600b541660405160208101906395d89b4160e01b825260048152611ec881611b29565b51915afa611ed46149ee565b915015611f0857610787610795611eed6107a193614b0a565b60405162746d2d60e81b602082015292839160238301610781565b506107a1610787610795611f1a614a1e565b611eed565b346105d05760403660031901126105d0576020610fae600435611f41816105bf565b60243590613bb6565b346105d05760003660031901126105d0576020602c54604051908152f35b346105d05760403660031901126105d0576060611f93600435611f8a816105bf565b602435906136d1565b9060405192835260208301526040820152f35b346105d05760803660031901126105d057600435611fc3816105bf565b602435611fcf816105bf565b60443590611fdc826105bf565b606435926001600160401b0384116105d05761078761204b92612006610019963690600401611415565b60405163514735c160e11b60208201526001600160a01b03958616602482015292851660448401529390951660648201526080608482015293849260a4840191615a2d565b615e73565b346105d05760403660031901126105d05760043561206d816105bf565b6024358015801590612117575b6120ad575b6040519081526001600160a01b03909116903390600080516020615ec8833981519152908060208101610c84565b6120b63361060a565b546120c382821015613da4565b6001600160a01b038316908290338390036120e1575b50505061207f565b610d086120ef931515613de9565b6120f83361060a565b556121028261060a565b61210d828254613540565b90553881816120d9565b50336001600160a01b0383161461207a565b9181601f840112156105d0578235916001600160401b0383116105d0576020808501948460051b0101116105d057565b906040820191604081528151809352606081019260208093019060005b8181106121df57505050818184039101528251908183528083019281808460051b8301019501936000915b8483106121b15750505050505090565b90919293949584806121cf600193601f198682030187528a516106c0565b98019301930191949392906121a1565b8251151586529484019491840191600101612176565b346105d0576040806003193601126105d057600480356001600160401b0381116105d0576122269036908301612129565b9290602435612234816107bf565b60026031541461232357600260315561224c85614f20565b9361225686614f48565b95600090815b81811061227d5788886107a1896122736001603155565b5192839283612159565b828061228a83858a614f92565b906122998b5180938193614fd3565b0390305af46122a66149ee565b9080158061231c575b6122f55782916122d06122d5926122c96122f0968e614fe1565b9015159052565b614ff5565b6122df828c614fe1565b526122ea818b614fe1565b5061420a565b61225c565b888661231861230385614ff5565b925162461bcd60e51b815292839283016106e5565b0390fd5b50866122af565b825162461bcd60e51b8152602081860152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606490fd5b346105d05760403660031901126105d057600435612383816105bf565b6123e560243591600e54831460001461247c576020602754935b6009546123b2906001600160a01b0316610849565b604051627eeac760e11b81526001600160a01b038516600482015260248101929092529093849190829081906044820190565b03915afa8015611681576107a19361243693600092612446575b5061242061242f929360018060a01b03166000526026602052604060002090565b90600052602052604060002090565b5490613540565b6040519081529081906020820190565b61242f925061246e6124209160203d8111612475575b6124668183611b8d565b810190613ade565b92506123ff565b503d61245c565b60206028549361239d565b346105d0576000806003193601126107bc576124366107a19160018060a01b036124b6816005541633146131c9565b600a5481166001600160a01b03166024549092906001600160801b039060801c166124f0575b50506124e78161060a565b549033906155d9565b6124f86148a4565b7fbe641c3ffc44b2d6c184f023fa4ed7bda4b6ffa71e03b3c98ae0c776da1f17e761253461252860245460801c90565b6001600160801b031690565b9261253e8561060a565b612549858254613540565b90558416918281600080516020615ec88339815191526040518061257289829190602083019252565b0390a3602480546001600160801b0316905580a338806124dc565b346105d05760003660031901126105d0576020601a54604051908152f35b346105d05760403660031901126105d0576024356125c8816105bf565b6125dd60018060a01b036005541633146131c9565b60008080808094600435905af16125f26149ee565b50156125fb5780f35b60405162461bcd60e51b815260206004820152601560248201527429a3a61d103a3930b739b332b9103330b4b632b21760591b6044820152606490fd5b346105d05760003660031901126105d0576060602454604051906001600160401b0380821683528160401c16602083015260801c6040820152f35b346105d05760003660031901126105d0576020601e54604051908152f35b346105d05760403660031901126105d057602554600954612707906020906126c1906001600160a01b0316610849565b6014546001600160801b0316906040518080958194638eb22cdd60e01b8352602435600484019081526001600160801b0390911660208201526001604082015260600190565b03915afa918215611681576127406127386107a1946124369460009161274a575b506001600160801b038416613540565b6004356134d7565b9060801c90613500565b612762915060203d8111612475576124668183611b8d565b38612728565b346105d05760003660031901126105d0576034546040516001600160a01b039091168152602090f35b346105d0576100196107876127e06127a836610c10565b60405163cce19f8160e01b60208201526001600160a01b03938416602482015292909116604483015260648201529182906084820190565b615e9d565b346105d0576020610fae61283e6127fb36611954565b60405163cd0211eb60e01b888201526001600160a01b0394851660248201529390921660448401521515606483015260848083019190915281526117ef81611b57565b828082518301019101613ade565b346105d05760003660031901126105d0576008546040516001600160a01b039091168152602090f35b346105d0576101603660031901126105d057600435612893816105bf565b6024356001600160401b0381116105d0576128b2903690600401611415565b916044356128bf816105bf565b60643560843560a4359060c4359260e4359461010435966101243598610144359a60018060a01b03926128f7846005541633146131c9565b838116612b10575b5080612adb575b505081169081612a73575b505080612a55575b5080612a37575b5080612a1a575b50806129f0575b50806129c6575b508061298e575b5080612962575b508061294b57005b6100199061295d601e548210156133df565b601f55565b80612975620186a0612988931115613345565b612983601f54821115613385565b601e55565b38612943565b806129c0916016547fae6e0ab3b95f0a53ff9660a390ccedcbbf1f2355dce974a9841af106fddcfaba600080a3601655565b3861293c565b806129d8620186a06129ea9310613345565b6129e5601b548211613345565b601c55565b38612935565b80612a02620186a0612a149310613345565b612a0f601c548210613345565b601b55565b3861292e565b80612a2c620186a0612a319310613345565b601d55565b38612927565b80612a4a620186a0612a4f931115613345565b601a55565b38612920565b80612a68620186a0612a6d931115613345565b601955565b38612919565b600854612ad49290612a8d906001600160a01b0316610849565b7f5a62d22209e370e38eea92cfddcd228e656e6ec139243392a760a7769f5877fd600080a3600880546001600160a01b0319166001600160a01b0392909216919091179055565b3880612911565b612ae491613268565b7fa6f004921c944d4b8bf6e38462b00f36a58d62495d56b51f571ab78f732c9815600080a13880612906565b600f80546001600160a01b0319166001600160a01b039092169190911790557f0b2d6eb667d0522c3eb86e4288afecae6c11591ffd1345d4d12407e0598bca9b600080a1386128ff565b610140806003193601126105d05760043590612b75826105bf565b60643590612b82826107bf565b6001600160401b03926084358481116105d057612ba3903690600401610dac565b9360a4359081116105d057612bbc903690600401610dba565b9360803660c31901126105d05761001994612c1f612c3192610eb19560405197889663d49dffa760e01b602089015260018060a01b03166024880152602435604488015260443560648801521515608487015260a4860152610164850190615a7f565b8381036023190160c485015290615ac3565b61078760e48301615b63565b346105d05760803660031901126105d057600435612c5a816105bf565b606435906001600160401b0382116105d057612ccd610787610eb161243693612c8a6107a1963690600401611415565b9390604051948593636a7229a760e11b602086015260018060a01b03166024850152602435604485015260443560648501526080608485015260a4840191615a2d565b60208082518301019101613ade565b346105d057612cea36610ab0565b9592809594959291924211610bcb5761001996612d8593610bb393610ba6878a610b9e8b610787610bab99612d1e86614219565b60405195869460208601988991959493909260c09360e08401977f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e26685526000602086015260018060a01b038092166040860152166060840152608083015260a08201520152565b614294565b346105d05760003660031901126105d057600b546040516001600160a01b039091168152602090f35b346105d05760003660031901126105d0576021546040516001600160a01b039091168152602090f35b346105d0576020610660612def366105e2565b6001600160a01b0391821660009081526002855260408082209290931681526020919091522090565b346105d05760003660031901126105d0576009546040516001600160a01b039091168152602090f35b346105d05760003660031901126105d0576020601d54604051908152f35b346105d05760003660031901126105d0576006546040516001600160a01b039091168152602090f35b346105d05760803660031901126105d0576001600160401b036004358181116105d057612eb9903690600401612129565b906024358381116105d057612ed2903690600401612129565b906044358581116105d057612eeb903690600401612129565b9290916064359687116105d057612f09610019973690600401612129565b969095615caf565b346105d05760603660031901126105d057600435612f2e816105bf565b604435906001600160401b0382116105d057612ccd610787610eb161243693612f5e6107a1963690600401611415565b93906040519485936301cfadbd60e71b602086015260018060a01b031660248501526024356044850152606060648501526084840191615a2d565b346105d05760a03660031901126105d057610019600435612fb9816105bf565b60243590612fc6826105bf565b60443590612fd3826107bf565b604051926374d2492960e11b602085015260018060a01b03809216602485015216604483015215156064820152606435608482015260843560a482015260a481526127e081611b72565b346105d05760003660031901126105d0576020601f54604051908152f35b346105d05760003660031901126105d0576020600c54604051908152f35b346105d05760203660031901126105d057600435613076816105bf565b6005546001600160a01b03919061309090831633146131c9565b816021549116809282167ffb4fd7114609dd603b57adbc2082205bfbbcabf9265c4b437b472f5c592b8cd7600080a36001600160a01b03191617602155005b346105d05760003660031901126105d0576020602b54604051908152f35b346105d0576020613130610fae61310336610c10565b9060086000959395526007865261312260ff6040600020541615615085565b61312a6148a4565b846157b2565b80926150c2565b346105d05760003660031901126105d0576035546040516001600160a01b039091168152602090f35b346105d05760003660031901126105d0576100196148a4565b346105d05760003660031901126105d057602554604080516001600160801b038316815260809290921c602083015290f35b346105d05760003660031901126105d0576020602a54604051908152f35b156131d057565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b601f8111613220575050565b6000906010825260208220906020601f850160051c8301941061325e575b601f0160051c01915b82811061325357505050565b818155600101613247565b909250829061323e565b91906001600160401b038111611b245761328c81613287601054611ab9565b613214565b6000601f82116001146132c6578192936000926132bb575b50508160011b916000199060031b1c191617601055565b0135905038806132a4565b6010600052601f198216937f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae67291805b86811061332d5750836001959610613313575b505050811b01601055565b0135600019600384901b60f8161c19169055388080613308565b909260206001819286860135815501940191016132f5565b1561334c57565b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881b9bdd081d985b1a59607a1b6044820152606490fd5b1561338c57565b60405162461bcd60e51b815260206004820152602560248201527f4d61726b65743a20636f6c6c61746572616c697a6174696f6e5261746520746f6044820152646f2062696760d81b6064820152608490fd5b156133e657565b60405162461bcd60e51b815260206004820152603260248201527f4d61726b65743a206c69717569646174696f6e436f6c6c61746572616c697a616044820152711d1a5bdb94985d19481d1bdbc81cdb585b1b60721b6064820152608490fd5b1561344d57565b60405162461bcd60e51b81526020600482015260126024820152714d61726b65743a2073616d6520737461746560701b6044820152606490fd5b634e487b7160e01b600052601160045260246000fd5b90620186a0918281029281840414901517156134b557565b613487565b90670de0b6b3a7640000918281029281840414901517156134b557565b818102929181159184041417156134b557565b634e487b7160e01b600052601260045260246000fd5b811561350a570490565b6134ea565b604d81116134b557600a0a90565b90670de0b6b3a76400009182039182116134b557565b919082039182116134b557565b919082018092116134b557565b818103929160001380158285131691841216176134b557565b906509184e72a000918281029281840514901517156134b557565b90670de0b6b3a7640000918281029281840514901517156134b557565b818102929160008212600160ff1b8214166134b55781840514901517156134b557565b811561350a57600160ff1b81146000198314166134b5570590565b600160ff1b81146134b55760000390565b60145491929190613608906001600160801b038316906134d7565b9060801c90811561350a5761363591613626910493601f54906134d7565b61362f8361350f565b90613500565b908183106136c95761369a61369461368f61365361369f9587613533565b9361368a61368461367b601e5461367561366c8661350f565b60205490613540565b906134d7565b61362f8461350f565b9161350f565b61354d565b613566565b91613581565b6135c1565b60008112156136c3576136b1906135dc565b905b8082116136be575090565b905090565b906136b3565b505050600090565b6001600160a01b0381166000908152601760205260408120549193929091801561384b5761377f9061370161430d565b5061370a6143bc565b505050505094905061371d841515613a92565b600954602090613735906001600160a01b0316610849565b600c546001600160a01b038a1660009081526018602052604080822054905163442c159960e01b815260048101939093526024830152604482015294859190829081906064820190565b03915afa928315611681576138229561362f61252860206137e66137cf8a6137ca6137c161381c9c6137f59a8c9161382e575b50602254620186a09004613675565b601e54906134d7565b613500565b8551909890613675906001600160801b0316612528565b9301516001600160801b031690565b908282106138265750035b6001600160a01b03909516600090815260186020526040902090565b54613aed565b9091565b915050613800565b6138459150873d8111612475576124668183611b8d565b386137b2565b505080919250918190565b91908260409103126105d0576020825161386f816107bf565b92015190565b60208082526000916010549161388a83611ab9565b92838284015260019081811690816000146138ed57506001146138af575b5050505090565b929350601060005280600020926000935b8585106138d957505050604092500101388080806138a8565b8054858501604001529382019381016138c0565b925050506040935060ff929192191683830152151560051b0101388080806138a8565b6040513d6000823e3d90fd5b1561392357565b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881c985d19481d1bdbc81bdb1960621b6044820152606490fd5b1561396657565b60405162461bcd60e51b81526020600482015260146024820152734d61726b65743a20696e76616c6964207261746560601b6044820152606490fd5b600f546139b7906001600160a01b0316610849565b6040805163d6d7d52560e01b815292918390816000816139d960048201613875565b03925af18015611681576000928391613a5e575b50908215613a3957613a0082151561395f565b613a0982601155565b817f9f9192b5edb17356c524e08d9e025c8e2f6307e6ea52fb7968faa3081f51c3c8600080a25b6105e042601355565b9050613a55613a4d60135460125490613540565b42111561391c565b60115490613a30565b9050613a8291925060403d8111613a8b575b613a7a8183611b8d565b810190613856565b919091386139ed565b503d613a70565b15613a9957565b60405162461bcd60e51b815260206004820152601e60248201527f4d61726b65743a2065786368616e676552617465206e6f742076616c696400006044820152606490fd5b908160209103126105d0575190565b613b426020831592613aff8415613a92565b600954600c5460405163442c159960e01b81526004810191909152602481019290925260006044830152909283916001600160a01b031690829081906064820190565b03915afa801561168157613b6291600091613b7c575b50602254906134d7565b9061350a5704620186a0613b78601e54836134d7565b0491565b613b94915060203d8111612475576124668183611b8d565b38613b58565b919091600083820193841291129080158216911516176134b557565b90613bda613bf89161381c8460018060a01b03166000526018602052604060002090565b6001600160a01b039093166000908152601760205260409020909291565b5480156136c95782156136c9578281106136c95781811015613c815782613c41613c3c613c4795610d0861362f956127406014549160018060801b038316906134d7565b61349d565b92613533565b613c75601b5491613c70613c67601c5492613c62848761354d565b61359e565b620186a0900590565b613b9a565b908082126136be575090565b505050601b5490565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03161480613d7b575b15613ce5577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f000000000000000000000000000000000000000000000000000000000000000082527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a08152613d7581611b57565b51902090565b507f00000000000000000000000000000000000000000000000000000000000000004614613cbc565b15613dab57565b60405162461bcd60e51b815260206004820152601660248201527545524332303a2062616c616e636520746f6f206c6f7760501b6044820152606490fd5b15613df057565b60405162461bcd60e51b815260206004820152601660248201527545524332303a206e6f207a65726f206164647265737360501b6044820152606490fd5b15613e3557565b60405162461bcd60e51b815260206004820152601860248201527745524332303a20616c6c6f77616e636520746f6f206c6f7760401b6044820152606490fd5b6101009081818051810103126105d0576020810151613e93816107bf565b604082015192613ea2846105bf565b606083015194613eb1866105bf565b60808401519460a085015160c086015193613ecb85610aa5565b60e08701519601516001600160a01b0392831698831696428310610bcb57613f8d95613f818a8c610b9e8199610787613f86998f8f600014613fa4577f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e266965b613f3387614219565b60408051602081019a8b5261ffff909716908701526001600160a01b03978816606087015296909116608085015260a084015260c083019490945260e0820193909352918290610100820190565b614017565b1614613fcb565b15613f9b576105e092614294565b6105e092614241565b7f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d696613f2a565b15613fd257565b60405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152606490fd5b916106079391610bab9361414b565b60051115611a5c57565b61403981614026565b806140415750565b61404a81614026565b600181036140925760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b6044820152606490fd5b61409b81614026565b600281036140e85760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606490fd5b806140f4600392614026565b146140fb57565b60405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608490fd5b9291906fa2a8918ca85bafe22016d0b997e4df60600160ff1b0383116141b75791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa156116815781516001600160a01b038116156141b1579190565b50600190565b50505050600090600390565b6141cb613c8a565b9060405190602082019261190160f01b84526022830152604282015260428152608081018181106001600160401b03821117611b245760405251902090565b60001981146134b55760010190565b6001600160a01b0316600090815260046020526040902080549061423c8261420a565b905590565b6001600160a01b03908116600081815260036020908152604080832095909416808352949052918220849055907fe50de2333c10a9502fcb1d8ae13a51bbf423153dfc63c2b8997665b32154afc39080a4565b6001600160a01b0390811660008181526002602090815260408083208686168452825290912091937f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259391928690556040519586521693a3565b604051906142fb82611b09565b60006040838281528260208201520152565b6040519061431a82611b29565b60006020838281520152565b6040519061433382611b09565b8160406024546001600160401b03808216845281831c16602084015260801c910152565b6040519061436482611b29565b6014546001600160801b038116835260801c6020830152565b6040519061438a82611b29565b6025546001600160801b038116835260801c6020830152565b6001600160801b0391821690821601919082116134b557565b6143c46142ee565b506143cd61430d565b506143d661430d565b506143df614326565b906143e8614357565b906143f161437d565b9061445660008061440c61084960095460018060a01b031690565b600e54865160405163442c159960e01b808252600482018490526001600160801b039092166024820152600060448201529296602096919590939092918790829081906064820190565b03818b5afa801561168157614487918491614860575b508a51614481906001600160801b0316612528565b90613540565b8061483d575081945b8a6144bd6144b76144ab8a8a9401516001600160401b031690565b6001600160401b031690565b42613533565b96871561481557506001600160401b03428116898e01528b8901516001600160801b039995919491939192908a16156147b757508b518d518692918a91614518916001600160401b03909116906001600160801b03166134d7565b90614522916134d7565b8d51670de0b6b3a76400009091049b908e9061454a908d8f16906001600160801b03166143a3565b6001600160801b039081169091528d5160405193845260048401959095529390931660248201526000604482015291829060649082905afa801561168157846146026145de8f978f6137ca908f92612528613675916137e66145c96146249b6145d59d8f9161479a575b508651614481906001600160801b0316612528565b9b8c97601a54906134d7565b620186a0900490565b9a8b169161460f60408901614602856145fd835160018060801b031690565b6143a3565b6001600160801b03169052565b8d0180519092906001600160801b03166143a3565b806147775750945b602a5486818110156146d057936137ca614690936146776144ab61468261467c614669886137ca61466461469d9d9e6144ab9c613533565b6134ba565b94614677602e5496806134d7565b6134d7565b84613540565b94516001600160401b031690565b6001600160401b03168a52565b88516001600160401b0316602d546001600160401b0316918083169116106146c3575b50565b6001600160401b03168852565b919050602b548083116146e5575b5050505050565b614765946146776144ab61472861472261471461470b6146646137ca986147369b613533565b602c5490613500565b96614677602e5498806134d7565b86613540565b92516001600160401b031690565b602d5461474e9060401c6001600160401b03166144ab565b80821161476f575b50166001600160401b03168952565b87388080806146de565b905038614756565b8a5161479492506137ca90614664906001600160801b0316612528565b9461462c565b6147b19150843d8611612475576124668183611b8d565b386145b4565b98505050965092979893505094506147d682516001600160401b031690565b602f546001600160401b031691808316911603614800575b5094936147f961437d565b9383929190565b6001600160401b0316815260019450386147ee565b9a5050505095509693505050509261482b614357565b9261483461437d565b92809281929190565b895161485a91906137ca90614664906001600160801b0316612528565b94614490565b6148779150883d8a11612475576124668183611b8d565b3861446c565b805160209091015160801b6001600160801b0319166001600160801b039190911617602555565b6105e06149706149976148b56143bc565b93979495939092901561499c575050506001600160401b03602f54166000807f33af5ce86e8438eff54589f85332916444457dfa8685493fbd579b809097026b6020604051838152a45b6149296001600160401b038251166001600160401b03166001600160401b03196024541617602455565b6020810151602480546040938401516001600160401b039091169290931b67ffffffffffffffff60401b169190911760809290921b6001600160801b031916919091179055565b805160209091015160801b6001600160801b0319166001600160801b039190911617601455565b61487d565b7f33af5ce86e8438eff54589f85332916444457dfa8685493fbd579b809097026b60206001600160401b0386511694604051908152a46148ff565b906149ea6020928281519485920161069d565b0190565b3d15614a19573d906149ff82611db6565b91614a0d6040519384611b8d565b82523d6000602084013e565b606090565b60405190614a2b82611b29565b60038252623f3f3f60e81b6020830152565b634e487b7160e01b600052603260045260246000fd5b908151811015614a64570160200190565b614a3d565b60ff1660ff81146134b55760010190565b90614a8482611db6565b614a916040519182611b8d565b8281528092614aa2601f1991611db6565b0190602036910137565b6020818303126105d0578051906001600160401b0382116105d0570181601f820112156105d0578051614ade81611db6565b92614aec6040519485611b8d565b818452602082840101116105d057610607916020808501910161069d565b805160408110614b2857508060208061060793518301019101614aac565b602092908303614bfd576000805b60ff81168581109081614bdb575b5015614b5857614b5390614a69565b614b36565b92614b6660ff809516614a7a565b92825b85811687811080614bbc575b15614bb1579081614ba6614b9d614b8f614bac9588614a53565b516001600160f81b03191690565b871a9188614a53565b53614a69565b614b69565b505094505050905090565b506001600160f81b0319614bd3614b8f8387614a53565b161515614b75565b6001600160f81b03199150614bf490614b8f9087614a53565b16151538614b44565b915050610607614a1e565b9190826101c09103126105d057614c1e826105d5565b91614c2b602082016105d5565b91614c38604083016105d5565b91614c45606082016105d5565b91614c52608083016105d5565b91614c5f60a082016105d5565b9160c082013591614c7260e082016105d5565b9161010082013591614c8761012082016105d5565b9161014082013591610160810135916106076101a061018084013593016105d5565b908160209103126105d05751610607816105bf565b15614cc557565b60405162461bcd60e51b815260206004820152600d60248201526c29a3a61d103130b2103830b4b960991b6044820152606490fd5b15614d0157565b60405162461bcd60e51b815260206004820152602f60248201527f53474c3a206c69717569646174696f6e436f6c6c61746572616c697a6174696f60448201526e1b94985d19481b9bdd081d985b1a59608a1b6064820152608490fd5b614d7963097343e06001600160401b0319602d541617602d55565b602d805467ffffffffffffffff60401b19166324ea412360491b179055614db07054a2b63d65d79d094abb66880000000000602e55565b614de1614dc5602d546001600160401b031690565b6001600160401b03166001600160401b0319602f541617602f55565b614e12614df6602f546001600160401b031690565b6001600160401b03166001600160401b03196024541617602455565b614e1a6139a2565b5050614e276103e8601955565b614e316000601a55565b614e3b6032603055565b614e46612ee0602055565b8015614efc57601e555b8015614eef57601f555b614e69601f54601e5410614cfa565b614e746161a8602955565b8015614edd576022555b614e8a62013880601b55565b614e9662015f90601c55565b614ea1612710601d55565b614eb2670429d069189e0000602a55565b614ec36706f05b59d3b20000602b55565b614ed16112b3602b5461351d565b6105e062015180601255565b50614e7e670de0b6b3a7640000602255565b50614e5a6201388061295d565b50614e50620124f8612983565b6001600160401b038111611b245760051b60200190565b90614f2a82614f09565b614f376040519182611b8d565b8281528092614aa2601f1991614f09565b90614f5282614f09565b614f5f6040519182611b8d565b8281528092614f70601f1991614f09565b019060005b828110614f8157505050565b806060602080938501015201614f75565b9190811015614a645760051b81013590601e19813603018212156105d05701908135916001600160401b0383116105d05760200182360381136105d0579190565b908092918237016000815290565b8051821015614a645760209160051b010190565b6103e881511161505157604481511061501e578060248060046106079401518301019101614aac565b5060405161502b81611b29565b60168152754d61726b65743a206e6f2072657475726e206461746160501b602082015290565b5060405161505e81611b29565b60178152764d61726b65743a20726561736f6e20746f6f206c6f6e6760481b602082015290565b1561508c57565b60405162461bcd60e51b815260206004820152600e60248201526d13585c9ad95d0e881c185d5cd95960921b6044820152606490fd5b6001600160a01b0381163381036150d857505050565b600090815260026020908152604080832033845290915290208290541061515c576001600160a01b038116600090815260026020526040902060001990615120903390610d64565b540361512a575050565b6001600160a01b0316600090815260026020526040902061515890615150903390610d64565b918254613533565b9055565b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881b9bdd08185c1c1c9bdd995960621b6044820152606490fd5b93929190936151a561437d565b80516009546001600160801b0397918816949290615211906020906151d2906001600160a01b0316610849565b600e54601454604051638eb22cdd60e01b815260048101929092526001600160801b031660248201526001604482015292839190829081906064820190565b03915afa80156116815761522e916000916153bb575b5086613540565b8061538c57506103e886985b602083015161525590828c16906001600160801b03166143a3565b1610615380576152ec6152c5959493926152766149978b8a6152fd966153d9565b61527f8161060a565b61528a8b8254613540565b90556040518a81526001600160a01b038281169890976152d29287928b91600091600080516020615ec8833981519152919081906020820190565b0390a38a600e548961547f565b6001600160a01b0316600090815260266020526040902090565b602754600052602052604060002090565b615308868254613540565b90551561535857506009547f30a8c4f9ab5af7e1309ca87c32377d1a83366c5990472dbf9d262450eae14e3890615347906001600160a01b0316610849565b915b604051878152921691602090a4565b7f30a8c4f9ab5af7e1309ca87c32377d1a83366c5990472dbf9d262450eae14e389091615349565b50600096505050505050565b60208201516103e8916153b5916137ca906153af906001600160801b0316612528565b8a6134d7565b9861523a565b6153d3915060203d8111612475576124668183611b8d565b38615227565b91906153fd906153e761430d565b5060018060801b039182809216828651166143a3565b16835261541381602085019316828451166143a3565b16905290565b6001600160a01b039182168152911660208201526040810191909152606081019190915260800190565b1561544a57565b60405162461bcd60e51b815260206004820152600d60248201526c0a68e987440e8dede40daeac6d609b1b6044820152606490fd5b9091929360001461551757506009546154d1916020916154a7906001600160a01b0316610849565b604051627eeac760e11b815230600482015260248101929092529092839190829081906044820190565b03915afa928315611681576105e0936154f2926000916154f9575b50613533565b1015615443565b615511915060203d8111612475576124668183611b8d565b386154ec565b6009549193509190615531906001600160a01b0316610849565b803b156105d05761555f936000809460405196879586948593630208d92960e11b8552309060048601615419565b03925af18015611681576155705750565b8061557d6105e092611b44565b80610669565b6001600160801b0391821690821603919082116134b557565b156155a357565b60405162461bcd60e51b815260206004820152600e60248201526d14d1d30e881b5a5b881b1a5b5a5d60921b6044820152606490fd5b6025549093926001600160801b039160801c156157a9576155f861437d565b80519095906001600160801b0316600954615622906020906151d2906001600160a01b0316610849565b03915afa918215611681578591600093615789575b50169061564391613540565b61564d90836134d7565b602087018051909291615669916001600160801b031690613500565b9687946156758361060a565b8581549061568291613533565b90556040518581526001600160a01b0393841694906000908690600080516020615ec883398151915290602090a382516156c890838916906001600160801b0316615583565b6001600160801b031683528051868316906001600160801b0316906156ec91615583565b6001600160801b03168152516001600160801b0316166103e811156157109061559c565b6157199061487d565b6040519283528416917f6e853a5fd6b51d773691f542ebac8513c9992a51380d4c342031056a6411422890602090a4600954600e546001600160a01b0390911691823b156105d05761555f9260009283879360405196879586948593630208d92960e11b85523060048601615419565b6157a291935060203d8111612475576124668183611b8d565b9138615637565b50600093505050565b6025546001600160801b0394939192919060801c156157a9576157d361437d565b80519091906001600160801b03166009546157fd906020906151d2906001600160a01b0316610849565b03915afa918215611681578891600093615a0d575b50169061581e91613540565b61582890826134d7565b6020830180519091615843916001600160801b031690613500565b96879361584f8761060a565b8481549061585c91613533565b90556040518481526001600160a01b03888116949093916000908690600080516020615ec883398151915290602090a382516158a490838916906001600160801b0316615583565b6001600160801b031683528051868316906001600160801b0316906158c891615583565b6001600160801b03168152516001600160801b0316166103e811156158ec9061559c565b6158f59061487d565b6040519283528416917f6e853a5fd6b51d773691f542ebac8513c9992a51380d4c342031056a6411422890602090a4600954600e546001600160a01b0390911691823b156105d0576159659260009283889360405196879586948593630208d92960e11b85523060048601615419565b03925af18015611681576159fa575b506001600160a01b03811660009081526026602052604090206159a4602754809290600052602052604060002090565b548411156159d057506001600160a01b031660009081526026602052604081206159cd906152ec565b55565b6124206159ef9260018060a01b03166000526026602052604060002090565b615158838254613533565b8061557d615a0792611b44565b38615974565b615a2691935060203d8111612475576124668183611b8d565b9138615812565b908060209392818452848401376000828201840152601f01601f1916010190565b9035601e19823603018112156105d05701602081359101916001600160401b0382116105d05781360383136105d057565b906060615ab3610607938035615a94816105bf565b6001600160a01b03168452602081810135908501526040810190615a4e565b9190928160408201520191615a2d565b908135815261ffff80615ad860208501611de2565b166020830152615aea60408401611de2565b16604082015260c06060830135615b00816105bf565b6001600160a01b03908116606084015281615b50615b35615b246080880188615a4e565b60e0608089015260e0880191615a2d565b615b4260a0880188615a4e565b9087830360a0890152615a2d565b940135615b5c816105bf565b1691015290565b606060c435615b71816105bf565b6001600160a01b0390811683528060e435615b8b816105bf565b1660208401528061010435615b9f816105bf565b16604084015261012435615bb2816105bf565b16910152565b60609081813591615bc8836105bf565b6001600160a01b039283168552826020820135615be4816105bf565b166020860152826040820135615bf9816105bf565b1660408601520135615bb2816105bf565b91908082526020809201929160005b828110615c27575050505090565b9091929382806001928735615c3b816105bf565b848060a01b03168152019501910192919092615c19565b90808352602080930192838260051b850194846000925b858410615c7a575050505050505090565b909192939495968580615c9e8385600195038852615c988c88615a4e565b90615a2d565b990194019401929594939190615c69565b9295969094969391936040519660209663e5644d8b60e01b888a01528060a48a01608060248c01525260c48901959060005b89828210615d4b575050505087850360231990810160448a0152818652936001600160fb1b0382116105d0576146c09961204b988a9861078798615d3c9560051b809284830137018981036003190160648b01520191615c0a565b92858403016084860152615c52565b808499600193949535615d5d816105bf565b848060a01b031681520198019101919091615ce1565b15615d7a57565b60405162461bcd60e51b815260206004820152600e60248201526d14d1d30e881b9bdd081d985b1a5960921b6044820152606490fd5b6035546001600160a01b03168015615e0e57816000929160208493519201905af490615dda6149ee565b9115615de257565b612318615dee83614ff5565b60405162461bcd60e51b81526020600482015291829160248301906106c0565b60405162461bcd60e51b815260206004820152601360248201527214d1d30e881b5bd91d5b19481b9bdd081cd95d606a1b6044820152606490fd5b6033546001600160a01b03168015615e0e57816000929160208493519201905af490615dda6149ee565b6032546001600160a01b03168015615e0e57816000929160208493519201905af490615dda6149ee565b6034546001600160a01b03168015615e0e57816000929160208493519201905af490615dda6149ee56feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220711e6854b8d35017bb015c10f8effb509f0d0a51a9bee975eb9ba5eaffad3db464736f6c63430008120033", + "deployedBytecode": "0x6080604052600436101561001b575b361561001957600080fd5b005b60003560e01c8062a02a20146105ba57806302ce728f146105b557806306fdde03146105b0578063078dfbe7146105ab578063095ea7b3146105a65780630c4e84f0146105a157806318160ddd1461059c5780631c9e379b146105975780631da8bf101461059257806323b872dd1461058d57806325384fd8146105885780632a9399d914610583578063313ce5671461057e578063331960ff1461057957806334d441d0146105745780633644e5151461056f57806337b6b7b91461056a57806338225f111461056557806338d52e0f146105605780633ba0b9a91461055b5780633f741adb1461055657806340626d8b1461055157806344de240a1461054c578063473e3ce71461054757806348e4163e146105425780634d7f2a341461053d5780634ddf47d4146105385780634e71e0c8146105335780635224372c1461052e578063529898f21461052957806352f353eb14610524578063551402321461051f57806355c2ab941461051a57806357935462146105155780635d5f73ef146105105780635dfe04e81461050b5780636587adb8146105065780636c3d8b8f1461050157806370a08231146104fc57806372778547146104f757806374645ff3146104f25780637dc0d1d0146104ed5780637ecebe00146104e85780637fa0b84e146104e3578063821226e8146104de5780638285ef40146104d95780638c5d0ed3146104d45780638da5cb5b146104cf578063910dd7c8146104ca578063959916dc146104c557806395d89b41146104c057806399a97028146104bb5780639c5d7192146104b65780639e15e89f146104b1578063a28e6b82146104ac578063a9059cbb146104a7578063aa7d9665146104a2578063ae70702e1461049d578063af405b4c14610498578063b0e21e8a14610493578063b25ea8fb1461048e578063b27c0e7414610489578063bb4cfe3b14610484578063bf0b89581461047f578063c861a5261461047a578063cce19f8114610475578063cd0211eb14610470578063ce8849ed1461046b578063d3fb2a3814610466578063d49dffa714610461578063d4e4534e1461045c578063d505accf14610457578063d8dfeb4514610452578063da863f0e1461044d578063dd62ed3e14610448578063de40657714610443578063e0996cb61461043e578063e30c397814610439578063e5644d8b14610434578063e7d6de801461042f578063e9a492521461042a578063ea64dd5614610425578063eec0f42e14610420578063ef2b234a1461041b578063f42760b714610416578063f4d9375314610411578063f5b33dfa1461040c578063f8ba4cff14610407578063f9557ccb146104025763ffe04c660361000e576131ab565b613179565b613160565b613137565b6130ed565b6130cf565b613059565b61303b565b61301d565b612f99565b612f11565b612e88565b612e5f565b612e41565b612e18565b612ddc565b612db3565b612d8a565b612cdc565b612c3d565b612b5a565b612875565b61284c565b6127e5565b612791565b612768565b612691565b612673565b612638565b6125ab565b61258d565b612487565b612366565b6121f5565b612050565b611fa6565b611f68565b611f4a565b611f1f565b611e8a565b611e6c565b611df1565b611d8d565b611d6f565b611d3d565b611d1f565b611cf5565b611cb8565b611c8f565b611bae565b611a7a565b6119ff565b6119d6565b61198d565b6118f5565b6118cc565b6118ae565b611884565b61185d565b611836565b611819565b6117a0565b6116c1565b611442565b6113f7565b6113ba565b61139c565b61137e565b611360565b61133c565b61131e565b6112f5565b611000565b610fb6565b610f93565b610f75565b610f57565b610eb6565b610dd9565b610d83565b610c3c565b610af5565b610a68565b610a47565b610950565b61090c565b6107c9565b6106f6565b610674565b610624565b6001600160a01b038116036105d057565b600080fd5b35906105e0826105bf565b565b60409060031901126105d0576004356105fa816105bf565b90602435610607816105bf565b90565b6001600160a01b0316600090815260016020526040902090565b346105d0576020610660610637366105e2565b6001600160a01b0391821660009081526003855260408082209290931681526020919091522090565b54604051908152f35b60009103126105d057565b346105d05760003660031901126105d057604061068f6139a2565b825191151582526020820152f35b60005b8381106106b05750506000910152565b81810151838201526020016106a0565b906020916106d98151809281855285808601910161069d565b601f01601f1916010190565b9060206106079281815201906106c0565b346105d0576000806003193601126107bc57808060018060a01b03600b541660405160208101906306fdde0360e01b82526004815261073481611b29565b51915afa6107406149ee565b9150156107a5576107876107956107596107a193614b0a565b60405173546170696f63612053696e67756c61726974792d60601b6020820152928391603483015b906149d7565b03601f198101835282611b8d565b604051918291826106e5565b0390f35b506107a16107876107956107b7614a1e565b610759565b80fd5b801515036105d057565b346105d05760603660031901126105d0576004356107e6816105bf565b602435906107f3826107bf565b60443591610800836107bf565b6005546001600160a01b03919061081a90831633146131c9565b156108f3578116918215908115916108eb575b50156108ae5760055461089c9290610855906001600160a01b03165b6001600160a01b031690565b7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b600680546001600160a01b0319169055005b60405162461bcd60e51b81526020600482015260156024820152744f776e61626c653a207a65726f206164647265737360581b6044820152606490fd5b90503861082d565b60068054919092166001600160a01b0319909116179055005b346105d05760403660031901126105d05761093660043561092c816105bf565b6024359033614294565b602060405160018152f35b6004359060098210156105d057565b346105d05760403660031901126105d057610969610941565b602435610975816107bf565b6008546001600160a01b03163303610a0b576109fa826109a96109a461099d61001996611a61565b5460ff1690565b151590565b6109b884151591821415613446565b6109c461099d83611a61565b6109cd83611a52565b1515827feeec81de25875ce1725479bb76f720a8defdb43dea041919ae37bb4aae9847c0600080a4611a61565b9060ff801983541691151516179055565b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881d5b985d5d1a1bdc9a5e995960621b6044820152606490fd5b346105d05760003660031901126105d057602060255460801c604051908152f35b346105d05760203660031901126105d057600435610a85816105bf565b60018060a01b031660005260186020526020604060002054604051908152f35b60ff8116036105d057565b60e09060031901126105d057600435610ac8816105bf565b90602435610ad5816105bf565b906044359060643590608435610aea81610aa5565b9060a4359060c43590565b346105d057610b0336610ab0565b9592809594959291924211610bcb5761001996610bc693610bb393610ba6878a610b9e8b610787610bab99610b3786614219565b60405195869460208601988991959493909260c09360e08401977f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d685526000602086015260018060a01b038092166040860152166060840152608083015260a08201520152565b5190206141c3565b61414b565b919091614030565b6001600160a01b03838116911614613fcb565b614241565b60405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b60609060031901126105d057600435610c28816105bf565b90602435610c35816105bf565b9060443590565b346105d057610c84600080516020615ec8833981519152610c5c36610c10565b9291939083610c93575b6040519384526001600160a01b039081169416929081906020820190565b0390a360405160018152602090f35b610c9c8561060a565b54610ca985821015613da4565b6001600160a01b038281169186918816839003610cc9575b505050610c66565b6001600160a01b03881660009081526002602090815260408083203384529091529020610d0d93610d0891548460018201610d35575b50501515613de9565b613533565b610d168661060a565b55610d208161060a565b610d2b858254613540565b9055388481610cc1565b81610d0882610d45941015613e2e565b6001600160a01b038b166000908152600260205260409020610d7b9033905b9060018060a01b0316600052602052604060002090565b553884610cff565b346105d05760003660031901126105d0576033546040516001600160a01b039091168152602090f35b908160609103126105d05790565b908160e09103126105d05790565b60809060a31901126105d05760a490565b610120806003193601126105d057600435610df3816105bf565b60443590610e00826107bf565b6001600160401b03906064358281116105d057610e21903690600401610dac565b936084359283116105d057610787610ea661001996610e94610e4a610eb1973690600401610dba565b91610e5436610dc8565b95604051998a98632a9399d960e01b60208b015260018060a01b031660248a015260243560448a0152151560648901526084880152610144870190615a7f565b8581036023190160a487015290615ac3565b9160c4840190615bb8565b615db0565b346105d0576000806003193601126107bc57808060018060a01b03600d5416604051602081019063313ce56760e01b825260048152610ef481611b29565b51915afa90610f016149ee565b9180610f4c575b15610f40576020828051810103126107bc575060206107a1910151610f2c81610aa5565b60405160ff90911681529081906020820190565b50506107a16012610f2c565b506020825114610f08565b346105d05760003660031901126105d0576020601354604051908152f35b346105d05760003660031901126105d0576020601954604051908152f35b346105d05760003660031901126105d0576020610fae613c8a565b604051908152f35b346105d05760003660031901126105d0576020601254604051908152f35b60a435906001600160401b03821682036105d057565b60c435906001600160401b03821682036105d057565b346105d0576101003660031901126105d057600435606435604435602435608435611029610fd4565b611031610fea565b60e4359261104a60018060a01b036005541633146131c9565b620186a09661105b888a1115613345565b61108f603054998060009b7fc353b09af857951dccce61b43a5854fc45beceed36c50e5d4cc2e71858a8e0df8d80a3603055565b806112be575b5080611261575b506001600160401b03918281169081611201575b505081811680611190575b50505080611159575b5080611116575b50806110d5578280f35b6110e3611110928210615d73565b806020547f1f1d0e9e5e3fd195010504141e7472fc7f53e44d7cd3f236f0892778039c63268580a3602055565b38808280f35b8061112684611153931115615d73565b806029547f1a98b2490874ba87102ae05e5b66fbe02edfcfb7e8b4e2d60f9aef620de5e3378780a3602955565b386110cb565b8061118a91602e547f6bdc0e1a8f6a69c7dcb57e254165094714bb2a8730e2fedd8c6e9b71e67478b58880a3602e55565b386110c4565b6111f992602d546111a48282168411615d73565b60401c167fb02a4833a4686ad41ec77a1e91a97a505459a34966985bf11c59b1e01852e4a68980a3602d805467ffffffffffffffff60401b191660409290921b67ffffffffffffffff60401b16919091179055565b3880806110bb565b61125a9184602d54611219828260401c168410615d73565b167f6d780269adaf7a0d9858a89a8c090b0b3add5f7088ccac6f619ff2b22987e7d58b80a36001600160401b03166001600160401b0319602d541617602d55565b38806110b0565b80611278670de0b6b3a76400006112a59310615d73565b80602b547f4d5fa9a75b98ca1386ef794acdb2601c953e99a9c7a94ed351a46e06dc1bab288b80a3602b55565b6112b86112b3602b5461351d565b602c55565b3861109c565b806112ef91602a547fa55fca071799e1b20f7cdcdf447fcc08c886bdd0cb741bf8862a311921bbb3888c80a3602a55565b38611095565b346105d05760003660031901126105d057600d546040516001600160a01b039091168152602090f35b346105d05760003660031901126105d0576020601154604051908152f35b346105d05760603660031901126105d0576020610fae6044356024356004356135ed565b346105d05760003660031901126105d0576020601654604051908152f35b346105d05760003660031901126105d0576020600e54604051908152f35b346105d05760003660031901126105d0576020601554604051908152f35b346105d05760203660031901126105d0576004356113d7816105bf565b60018060a01b031660005260176020526020604060002054604051908152f35b346105d05760003660031901126105d0576020602954604051908152f35b9181601f840112156105d0578235916001600160401b0383116105d057602083818601950101116105d057565b346105d05760203660031901126105d0576004356001600160401b0381116105d057611472903690600401611415565b60ff60235416611686578161148b916020930190614c08565b600a80546001600160a01b0319166001600160a01b038c16179055929c909b919a929993989497959695946040519e8f63de40657760e01b815260048160018060a01b038095165afa9e8f15611681576116279f826115e59761159c6116229f8f90848f61158582999361152884809b8197600091611653575b5060098054919092166001600160a01b03166001600160a01b0319909116179055565b600a5461156390611541906001600160a01b0316610849565b600580546001600160a01b0319166001600160a01b0392909216919091179055565b602180546001600160a01b0319166001600160a01b0392909216919091179055565b1615159182611647575b82611639575b5050614cbe565b1695169316911692909160018060a01b03928380928160018060a01b03199716876032541617603255168560345416176034551683603354161760335516906035541617603555565b9391929060018060a01b0380948160018060a01b0319971687600d541617600d551685600b541617600b55600e55600c551690600f541617600f55565b614d5e565b610019600160ff196023541617602355565b9091501615158f8490611595565b8d82161515925061158f565b611674915060203d811161167a575b61166c8183611b8d565b810190614ca9565b38611505565b503d611662565b613910565b60405162461bcd60e51b815260206004820152601360248201527213585c9ad95d0e881a5b9a5d1a585b1a5e9959606a1b6044820152606490fd5b346105d0576000806003193601126107bc576006546001600160a01b03163381900361175c5760055461174991908190611703906001600160a01b0316610849565b7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08580a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b600680546001600160a01b031916905580f35b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b346105d0576117f46107876117ef6117b736610c10565b6040516314890dcb60e21b60208201526001600160a01b03938416602482015292909116604483015260648201529182906084820190565b615e49565b6040818051810103126105d05780604060208193015191015182519182526020820152f35b346105d05760003660031901126105d05760208054604051908152f35b346105d05760003660031901126105d05760206001600160401b03602f5416604051908152f35b346105d05760003660031901126105d05760206001600160401b03602d5416604051908152f35b346105d05760003660031901126105d0576020602d546001600160401b036040519160401c168152f35b346105d05760003660031901126105d0576020601c54604051908152f35b346105d05760003660031901126105d0576032546040516001600160a01b039091168152602090f35b346105d05760003660031901126105d05761190e6142ee565b5060806119196143bc565b509350505050604051916001600160401b0380825116845260208201511660208401526040600180861b039101511660408301526060820152f35b60809060031901126105d05760043561196c816105bf565b90602435611979816105bf565b90604435611986816107bf565b9060643590565b346105d0576020610fae6119a036611954565b926007600093929352600786526119bf60ff6040600020541615615085565b6119c984826150c2565b6119d16148a4565b615198565b346105d05760003660031901126105d057600a546040516001600160a01b039091168152602090f35b346105d05760203660031901126105d057600435611a1c816105bf565b60018060a01b031660005260016020526020604060002054604051908152f35b634e487b7160e01b600052602160045260246000fd5b60091115611a5c57565b611a3c565b6009811015611a5c576000526007602052604060002090565b346105d05760203660031901126105d057611a93610941565b6009811015611a5c576000526007602052602060ff604060002054166040519015158152f35b90600182811c92168015611ae9575b6020831014611ad357565b634e487b7160e01b600052602260045260246000fd5b91607f1691611ac8565b634e487b7160e01b600052604160045260246000fd5b606081019081106001600160401b03821117611b2457604052565b611af3565b604081019081106001600160401b03821117611b2457604052565b6001600160401b038111611b2457604052565b60c081019081106001600160401b03821117611b2457604052565b60e081019081106001600160401b03821117611b2457604052565b90601f801991011681019081106001600160401b03821117611b2457604052565b346105d0576000806003193601126107bc5760405181601054611bd081611ab9565b80845290600190818116908115611c675750600114611c0e575b6107a184611bfa81880382611b8d565b6040519182916020835260208301906106c0565b60108352602094507f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae6725b828410611c5457505050816107a193611bfa9282010193611bea565b8054858501870152928501928101611c38565b6107a19650611bfa9450602092508593915060ff191682840152151560051b82010193611bea565b346105d05760003660031901126105d057600f546040516001600160a01b039091168152602090f35b346105d05760203660031901126105d057600435611cd5816105bf565b60018060a01b031660005260046020526020604060002054604051908152f35b346105d05760403660031901126105d057610936600435611d15816105bf565b6024359033614241565b346105d05760003660031901126105d0576020602e54604051908152f35b346105d05760003660031901126105d057601454604080516001600160801b038316815260809290921c602083015290f35b346105d05760003660031901126105d0576020601b54604051908152f35b346105d05760003660031901126105d0576005546040516001600160a01b039091168152602090f35b6001600160401b038111611b2457601f01601f191660200190565b6024359061ffff821682036105d057565b359061ffff821682036105d057565b346105d05760403660031901126105d0576004356001600160401b0381116105d057366023820112156105d0578060040135611e2c81611db6565b90611e3a6040519283611b8d565b80825236602482850101116105d057602081600092602461001996018386013783010152611e66611dd1565b90613e75565b346105d05760003660031901126105d0576020603054604051908152f35b346105d0576000806003193601126107bc57808060018060a01b03600b541660405160208101906395d89b4160e01b825260048152611ec881611b29565b51915afa611ed46149ee565b915015611f0857610787610795611eed6107a193614b0a565b60405162746d2d60e81b602082015292839160238301610781565b506107a1610787610795611f1a614a1e565b611eed565b346105d05760403660031901126105d0576020610fae600435611f41816105bf565b60243590613bb6565b346105d05760003660031901126105d0576020602c54604051908152f35b346105d05760403660031901126105d0576060611f93600435611f8a816105bf565b602435906136d1565b9060405192835260208301526040820152f35b346105d05760803660031901126105d057600435611fc3816105bf565b602435611fcf816105bf565b60443590611fdc826105bf565b606435926001600160401b0384116105d05761078761204b92612006610019963690600401611415565b60405163514735c160e11b60208201526001600160a01b03958616602482015292851660448401529390951660648201526080608482015293849260a4840191615a2d565b615e73565b346105d05760403660031901126105d05760043561206d816105bf565b6024358015801590612117575b6120ad575b6040519081526001600160a01b03909116903390600080516020615ec8833981519152908060208101610c84565b6120b63361060a565b546120c382821015613da4565b6001600160a01b038316908290338390036120e1575b50505061207f565b610d086120ef931515613de9565b6120f83361060a565b556121028261060a565b61210d828254613540565b90553881816120d9565b50336001600160a01b0383161461207a565b9181601f840112156105d0578235916001600160401b0383116105d0576020808501948460051b0101116105d057565b906040820191604081528151809352606081019260208093019060005b8181106121df57505050818184039101528251908183528083019281808460051b8301019501936000915b8483106121b15750505050505090565b90919293949584806121cf600193601f198682030187528a516106c0565b98019301930191949392906121a1565b8251151586529484019491840191600101612176565b346105d0576040806003193601126105d057600480356001600160401b0381116105d0576122269036908301612129565b9290602435612234816107bf565b60026031541461232357600260315561224c85614f20565b9361225686614f48565b95600090815b81811061227d5788886107a1896122736001603155565b5192839283612159565b828061228a83858a614f92565b906122998b5180938193614fd3565b0390305af46122a66149ee565b9080158061231c575b6122f55782916122d06122d5926122c96122f0968e614fe1565b9015159052565b614ff5565b6122df828c614fe1565b526122ea818b614fe1565b5061420a565b61225c565b888661231861230385614ff5565b925162461bcd60e51b815292839283016106e5565b0390fd5b50866122af565b825162461bcd60e51b8152602081860152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606490fd5b346105d05760403660031901126105d057600435612383816105bf565b6123e560243591600e54831460001461247c576020602754935b6009546123b2906001600160a01b0316610849565b604051627eeac760e11b81526001600160a01b038516600482015260248101929092529093849190829081906044820190565b03915afa8015611681576107a19361243693600092612446575b5061242061242f929360018060a01b03166000526026602052604060002090565b90600052602052604060002090565b5490613540565b6040519081529081906020820190565b61242f925061246e6124209160203d8111612475575b6124668183611b8d565b810190613ade565b92506123ff565b503d61245c565b60206028549361239d565b346105d0576000806003193601126107bc576124366107a19160018060a01b036124b6816005541633146131c9565b600a5481166001600160a01b03166024549092906001600160801b039060801c166124f0575b50506124e78161060a565b549033906155d9565b6124f86148a4565b7fbe641c3ffc44b2d6c184f023fa4ed7bda4b6ffa71e03b3c98ae0c776da1f17e761253461252860245460801c90565b6001600160801b031690565b9261253e8561060a565b612549858254613540565b90558416918281600080516020615ec88339815191526040518061257289829190602083019252565b0390a3602480546001600160801b0316905580a338806124dc565b346105d05760003660031901126105d0576020601a54604051908152f35b346105d05760403660031901126105d0576024356125c8816105bf565b6125dd60018060a01b036005541633146131c9565b60008080808094600435905af16125f26149ee565b50156125fb5780f35b60405162461bcd60e51b815260206004820152601560248201527429a3a61d103a3930b739b332b9103330b4b632b21760591b6044820152606490fd5b346105d05760003660031901126105d0576060602454604051906001600160401b0380821683528160401c16602083015260801c6040820152f35b346105d05760003660031901126105d0576020601e54604051908152f35b346105d05760403660031901126105d057602554600954612707906020906126c1906001600160a01b0316610849565b6014546001600160801b0316906040518080958194638eb22cdd60e01b8352602435600484019081526001600160801b0390911660208201526001604082015260600190565b03915afa918215611681576127406127386107a1946124369460009161274a575b506001600160801b038416613540565b6004356134d7565b9060801c90613500565b612762915060203d8111612475576124668183611b8d565b38612728565b346105d05760003660031901126105d0576034546040516001600160a01b039091168152602090f35b346105d0576100196107876127e06127a836610c10565b60405163cce19f8160e01b60208201526001600160a01b03938416602482015292909116604483015260648201529182906084820190565b615e9d565b346105d0576020610fae61283e6127fb36611954565b60405163cd0211eb60e01b888201526001600160a01b0394851660248201529390921660448401521515606483015260848083019190915281526117ef81611b57565b828082518301019101613ade565b346105d05760003660031901126105d0576008546040516001600160a01b039091168152602090f35b346105d0576101603660031901126105d057600435612893816105bf565b6024356001600160401b0381116105d0576128b2903690600401611415565b916044356128bf816105bf565b60643560843560a4359060c4359260e4359461010435966101243598610144359a60018060a01b03926128f7846005541633146131c9565b838116612b10575b5080612adb575b505081169081612a73575b505080612a55575b5080612a37575b5080612a1a575b50806129f0575b50806129c6575b508061298e575b5080612962575b508061294b57005b6100199061295d601e548210156133df565b601f55565b80612975620186a0612988931115613345565b612983601f54821115613385565b601e55565b38612943565b806129c0916016547fae6e0ab3b95f0a53ff9660a390ccedcbbf1f2355dce974a9841af106fddcfaba600080a3601655565b3861293c565b806129d8620186a06129ea9310613345565b6129e5601b548211613345565b601c55565b38612935565b80612a02620186a0612a149310613345565b612a0f601c548210613345565b601b55565b3861292e565b80612a2c620186a0612a319310613345565b601d55565b38612927565b80612a4a620186a0612a4f931115613345565b601a55565b38612920565b80612a68620186a0612a6d931115613345565b601955565b38612919565b600854612ad49290612a8d906001600160a01b0316610849565b7f5a62d22209e370e38eea92cfddcd228e656e6ec139243392a760a7769f5877fd600080a3600880546001600160a01b0319166001600160a01b0392909216919091179055565b3880612911565b612ae491613268565b7fa6f004921c944d4b8bf6e38462b00f36a58d62495d56b51f571ab78f732c9815600080a13880612906565b600f80546001600160a01b0319166001600160a01b039092169190911790557f0b2d6eb667d0522c3eb86e4288afecae6c11591ffd1345d4d12407e0598bca9b600080a1386128ff565b610140806003193601126105d05760043590612b75826105bf565b60643590612b82826107bf565b6001600160401b03926084358481116105d057612ba3903690600401610dac565b9360a4359081116105d057612bbc903690600401610dba565b9360803660c31901126105d05761001994612c1f612c3192610eb19560405197889663d49dffa760e01b602089015260018060a01b03166024880152602435604488015260443560648801521515608487015260a4860152610164850190615a7f565b8381036023190160c485015290615ac3565b61078760e48301615b63565b346105d05760803660031901126105d057600435612c5a816105bf565b606435906001600160401b0382116105d057612ccd610787610eb161243693612c8a6107a1963690600401611415565b9390604051948593636a7229a760e11b602086015260018060a01b03166024850152602435604485015260443560648501526080608485015260a4840191615a2d565b60208082518301019101613ade565b346105d057612cea36610ab0565b9592809594959291924211610bcb5761001996612d8593610bb393610ba6878a610b9e8b610787610bab99612d1e86614219565b60405195869460208601988991959493909260c09360e08401977f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e26685526000602086015260018060a01b038092166040860152166060840152608083015260a08201520152565b614294565b346105d05760003660031901126105d057600b546040516001600160a01b039091168152602090f35b346105d05760003660031901126105d0576021546040516001600160a01b039091168152602090f35b346105d0576020610660612def366105e2565b6001600160a01b0391821660009081526002855260408082209290931681526020919091522090565b346105d05760003660031901126105d0576009546040516001600160a01b039091168152602090f35b346105d05760003660031901126105d0576020601d54604051908152f35b346105d05760003660031901126105d0576006546040516001600160a01b039091168152602090f35b346105d05760803660031901126105d0576001600160401b036004358181116105d057612eb9903690600401612129565b906024358381116105d057612ed2903690600401612129565b906044358581116105d057612eeb903690600401612129565b9290916064359687116105d057612f09610019973690600401612129565b969095615caf565b346105d05760603660031901126105d057600435612f2e816105bf565b604435906001600160401b0382116105d057612ccd610787610eb161243693612f5e6107a1963690600401611415565b93906040519485936301cfadbd60e71b602086015260018060a01b031660248501526024356044850152606060648501526084840191615a2d565b346105d05760a03660031901126105d057610019600435612fb9816105bf565b60243590612fc6826105bf565b60443590612fd3826107bf565b604051926374d2492960e11b602085015260018060a01b03809216602485015216604483015215156064820152606435608482015260843560a482015260a481526127e081611b72565b346105d05760003660031901126105d0576020601f54604051908152f35b346105d05760003660031901126105d0576020600c54604051908152f35b346105d05760203660031901126105d057600435613076816105bf565b6005546001600160a01b03919061309090831633146131c9565b816021549116809282167ffb4fd7114609dd603b57adbc2082205bfbbcabf9265c4b437b472f5c592b8cd7600080a36001600160a01b03191617602155005b346105d05760003660031901126105d0576020602b54604051908152f35b346105d0576020613130610fae61310336610c10565b9060086000959395526007865261312260ff6040600020541615615085565b61312a6148a4565b846157b2565b80926150c2565b346105d05760003660031901126105d0576035546040516001600160a01b039091168152602090f35b346105d05760003660031901126105d0576100196148a4565b346105d05760003660031901126105d057602554604080516001600160801b038316815260809290921c602083015290f35b346105d05760003660031901126105d0576020602a54604051908152f35b156131d057565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b601f8111613220575050565b6000906010825260208220906020601f850160051c8301941061325e575b601f0160051c01915b82811061325357505050565b818155600101613247565b909250829061323e565b91906001600160401b038111611b245761328c81613287601054611ab9565b613214565b6000601f82116001146132c6578192936000926132bb575b50508160011b916000199060031b1c191617601055565b0135905038806132a4565b6010600052601f198216937f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae67291805b86811061332d5750836001959610613313575b505050811b01601055565b0135600019600384901b60f8161c19169055388080613308565b909260206001819286860135815501940191016132f5565b1561334c57565b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881b9bdd081d985b1a59607a1b6044820152606490fd5b1561338c57565b60405162461bcd60e51b815260206004820152602560248201527f4d61726b65743a20636f6c6c61746572616c697a6174696f6e5261746520746f6044820152646f2062696760d81b6064820152608490fd5b156133e657565b60405162461bcd60e51b815260206004820152603260248201527f4d61726b65743a206c69717569646174696f6e436f6c6c61746572616c697a616044820152711d1a5bdb94985d19481d1bdbc81cdb585b1b60721b6064820152608490fd5b1561344d57565b60405162461bcd60e51b81526020600482015260126024820152714d61726b65743a2073616d6520737461746560701b6044820152606490fd5b634e487b7160e01b600052601160045260246000fd5b90620186a0918281029281840414901517156134b557565b613487565b90670de0b6b3a7640000918281029281840414901517156134b557565b818102929181159184041417156134b557565b634e487b7160e01b600052601260045260246000fd5b811561350a570490565b6134ea565b604d81116134b557600a0a90565b90670de0b6b3a76400009182039182116134b557565b919082039182116134b557565b919082018092116134b557565b818103929160001380158285131691841216176134b557565b906509184e72a000918281029281840514901517156134b557565b90670de0b6b3a7640000918281029281840514901517156134b557565b818102929160008212600160ff1b8214166134b55781840514901517156134b557565b811561350a57600160ff1b81146000198314166134b5570590565b600160ff1b81146134b55760000390565b60145491929190613608906001600160801b038316906134d7565b9060801c90811561350a5761363591613626910493601f54906134d7565b61362f8361350f565b90613500565b908183106136c95761369a61369461368f61365361369f9587613533565b9361368a61368461367b601e5461367561366c8661350f565b60205490613540565b906134d7565b61362f8461350f565b9161350f565b61354d565b613566565b91613581565b6135c1565b60008112156136c3576136b1906135dc565b905b8082116136be575090565b905090565b906136b3565b505050600090565b6001600160a01b0381166000908152601760205260408120549193929091801561384b5761377f9061370161430d565b5061370a6143bc565b505050505094905061371d841515613a92565b600954602090613735906001600160a01b0316610849565b600c546001600160a01b038a1660009081526018602052604080822054905163442c159960e01b815260048101939093526024830152604482015294859190829081906064820190565b03915afa928315611681576138229561362f61252860206137e66137cf8a6137ca6137c161381c9c6137f59a8c9161382e575b50602254620186a09004613675565b601e54906134d7565b613500565b8551909890613675906001600160801b0316612528565b9301516001600160801b031690565b908282106138265750035b6001600160a01b03909516600090815260186020526040902090565b54613aed565b9091565b915050613800565b6138459150873d8111612475576124668183611b8d565b386137b2565b505080919250918190565b91908260409103126105d0576020825161386f816107bf565b92015190565b60208082526000916010549161388a83611ab9565b92838284015260019081811690816000146138ed57506001146138af575b5050505090565b929350601060005280600020926000935b8585106138d957505050604092500101388080806138a8565b8054858501604001529382019381016138c0565b925050506040935060ff929192191683830152151560051b0101388080806138a8565b6040513d6000823e3d90fd5b1561392357565b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881c985d19481d1bdbc81bdb1960621b6044820152606490fd5b1561396657565b60405162461bcd60e51b81526020600482015260146024820152734d61726b65743a20696e76616c6964207261746560601b6044820152606490fd5b600f546139b7906001600160a01b0316610849565b6040805163d6d7d52560e01b815292918390816000816139d960048201613875565b03925af18015611681576000928391613a5e575b50908215613a3957613a0082151561395f565b613a0982601155565b817f9f9192b5edb17356c524e08d9e025c8e2f6307e6ea52fb7968faa3081f51c3c8600080a25b6105e042601355565b9050613a55613a4d60135460125490613540565b42111561391c565b60115490613a30565b9050613a8291925060403d8111613a8b575b613a7a8183611b8d565b810190613856565b919091386139ed565b503d613a70565b15613a9957565b60405162461bcd60e51b815260206004820152601e60248201527f4d61726b65743a2065786368616e676552617465206e6f742076616c696400006044820152606490fd5b908160209103126105d0575190565b613b426020831592613aff8415613a92565b600954600c5460405163442c159960e01b81526004810191909152602481019290925260006044830152909283916001600160a01b031690829081906064820190565b03915afa801561168157613b6291600091613b7c575b50602254906134d7565b9061350a5704620186a0613b78601e54836134d7565b0491565b613b94915060203d8111612475576124668183611b8d565b38613b58565b919091600083820193841291129080158216911516176134b557565b90613bda613bf89161381c8460018060a01b03166000526018602052604060002090565b6001600160a01b039093166000908152601760205260409020909291565b5480156136c95782156136c9578281106136c95781811015613c815782613c41613c3c613c4795610d0861362f956127406014549160018060801b038316906134d7565b61349d565b92613533565b613c75601b5491613c70613c67601c5492613c62848761354d565b61359e565b620186a0900590565b613b9a565b908082126136be575090565b505050601b5490565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03161480613d7b575b15613ce5577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f000000000000000000000000000000000000000000000000000000000000000082527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a08152613d7581611b57565b51902090565b507f00000000000000000000000000000000000000000000000000000000000000004614613cbc565b15613dab57565b60405162461bcd60e51b815260206004820152601660248201527545524332303a2062616c616e636520746f6f206c6f7760501b6044820152606490fd5b15613df057565b60405162461bcd60e51b815260206004820152601660248201527545524332303a206e6f207a65726f206164647265737360501b6044820152606490fd5b15613e3557565b60405162461bcd60e51b815260206004820152601860248201527745524332303a20616c6c6f77616e636520746f6f206c6f7760401b6044820152606490fd5b6101009081818051810103126105d0576020810151613e93816107bf565b604082015192613ea2846105bf565b606083015194613eb1866105bf565b60808401519460a085015160c086015193613ecb85610aa5565b60e08701519601516001600160a01b0392831698831696428310610bcb57613f8d95613f818a8c610b9e8199610787613f86998f8f600014613fa4577f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e266965b613f3387614219565b60408051602081019a8b5261ffff909716908701526001600160a01b03978816606087015296909116608085015260a084015260c083019490945260e0820193909352918290610100820190565b614017565b1614613fcb565b15613f9b576105e092614294565b6105e092614241565b7f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d696613f2a565b15613fd257565b60405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152606490fd5b916106079391610bab9361414b565b60051115611a5c57565b61403981614026565b806140415750565b61404a81614026565b600181036140925760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b6044820152606490fd5b61409b81614026565b600281036140e85760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606490fd5b806140f4600392614026565b146140fb57565b60405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608490fd5b9291906fa2a8918ca85bafe22016d0b997e4df60600160ff1b0383116141b75791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa156116815781516001600160a01b038116156141b1579190565b50600190565b50505050600090600390565b6141cb613c8a565b9060405190602082019261190160f01b84526022830152604282015260428152608081018181106001600160401b03821117611b245760405251902090565b60001981146134b55760010190565b6001600160a01b0316600090815260046020526040902080549061423c8261420a565b905590565b6001600160a01b03908116600081815260036020908152604080832095909416808352949052918220849055907fe50de2333c10a9502fcb1d8ae13a51bbf423153dfc63c2b8997665b32154afc39080a4565b6001600160a01b0390811660008181526002602090815260408083208686168452825290912091937f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259391928690556040519586521693a3565b604051906142fb82611b09565b60006040838281528260208201520152565b6040519061431a82611b29565b60006020838281520152565b6040519061433382611b09565b8160406024546001600160401b03808216845281831c16602084015260801c910152565b6040519061436482611b29565b6014546001600160801b038116835260801c6020830152565b6040519061438a82611b29565b6025546001600160801b038116835260801c6020830152565b6001600160801b0391821690821601919082116134b557565b6143c46142ee565b506143cd61430d565b506143d661430d565b506143df614326565b906143e8614357565b906143f161437d565b9061445660008061440c61084960095460018060a01b031690565b600e54865160405163442c159960e01b808252600482018490526001600160801b039092166024820152600060448201529296602096919590939092918790829081906064820190565b03818b5afa801561168157614487918491614860575b508a51614481906001600160801b0316612528565b90613540565b8061483d575081945b8a6144bd6144b76144ab8a8a9401516001600160401b031690565b6001600160401b031690565b42613533565b96871561481557506001600160401b03428116898e01528b8901516001600160801b039995919491939192908a16156147b757508b518d518692918a91614518916001600160401b03909116906001600160801b03166134d7565b90614522916134d7565b8d51670de0b6b3a76400009091049b908e9061454a908d8f16906001600160801b03166143a3565b6001600160801b039081169091528d5160405193845260048401959095529390931660248201526000604482015291829060649082905afa801561168157846146026145de8f978f6137ca908f92612528613675916137e66145c96146249b6145d59d8f9161479a575b508651614481906001600160801b0316612528565b9b8c97601a54906134d7565b620186a0900490565b9a8b169161460f60408901614602856145fd835160018060801b031690565b6143a3565b6001600160801b03169052565b8d0180519092906001600160801b03166143a3565b806147775750945b602a5486818110156146d057936137ca614690936146776144ab61468261467c614669886137ca61466461469d9d9e6144ab9c613533565b6134ba565b94614677602e5496806134d7565b6134d7565b84613540565b94516001600160401b031690565b6001600160401b03168a52565b88516001600160401b0316602d546001600160401b0316918083169116106146c3575b50565b6001600160401b03168852565b919050602b548083116146e5575b5050505050565b614765946146776144ab61472861472261471461470b6146646137ca986147369b613533565b602c5490613500565b96614677602e5498806134d7565b86613540565b92516001600160401b031690565b602d5461474e9060401c6001600160401b03166144ab565b80821161476f575b50166001600160401b03168952565b87388080806146de565b905038614756565b8a5161479492506137ca90614664906001600160801b0316612528565b9461462c565b6147b19150843d8611612475576124668183611b8d565b386145b4565b98505050965092979893505094506147d682516001600160401b031690565b602f546001600160401b031691808316911603614800575b5094936147f961437d565b9383929190565b6001600160401b0316815260019450386147ee565b9a5050505095509693505050509261482b614357565b9261483461437d565b92809281929190565b895161485a91906137ca90614664906001600160801b0316612528565b94614490565b6148779150883d8a11612475576124668183611b8d565b3861446c565b805160209091015160801b6001600160801b0319166001600160801b039190911617602555565b6105e06149706149976148b56143bc565b93979495939092901561499c575050506001600160401b03602f54166000807f33af5ce86e8438eff54589f85332916444457dfa8685493fbd579b809097026b6020604051838152a45b6149296001600160401b038251166001600160401b03166001600160401b03196024541617602455565b6020810151602480546040938401516001600160401b039091169290931b67ffffffffffffffff60401b169190911760809290921b6001600160801b031916919091179055565b805160209091015160801b6001600160801b0319166001600160801b039190911617601455565b61487d565b7f33af5ce86e8438eff54589f85332916444457dfa8685493fbd579b809097026b60206001600160401b0386511694604051908152a46148ff565b906149ea6020928281519485920161069d565b0190565b3d15614a19573d906149ff82611db6565b91614a0d6040519384611b8d565b82523d6000602084013e565b606090565b60405190614a2b82611b29565b60038252623f3f3f60e81b6020830152565b634e487b7160e01b600052603260045260246000fd5b908151811015614a64570160200190565b614a3d565b60ff1660ff81146134b55760010190565b90614a8482611db6565b614a916040519182611b8d565b8281528092614aa2601f1991611db6565b0190602036910137565b6020818303126105d0578051906001600160401b0382116105d0570181601f820112156105d0578051614ade81611db6565b92614aec6040519485611b8d565b818452602082840101116105d057610607916020808501910161069d565b805160408110614b2857508060208061060793518301019101614aac565b602092908303614bfd576000805b60ff81168581109081614bdb575b5015614b5857614b5390614a69565b614b36565b92614b6660ff809516614a7a565b92825b85811687811080614bbc575b15614bb1579081614ba6614b9d614b8f614bac9588614a53565b516001600160f81b03191690565b871a9188614a53565b53614a69565b614b69565b505094505050905090565b506001600160f81b0319614bd3614b8f8387614a53565b161515614b75565b6001600160f81b03199150614bf490614b8f9087614a53565b16151538614b44565b915050610607614a1e565b9190826101c09103126105d057614c1e826105d5565b91614c2b602082016105d5565b91614c38604083016105d5565b91614c45606082016105d5565b91614c52608083016105d5565b91614c5f60a082016105d5565b9160c082013591614c7260e082016105d5565b9161010082013591614c8761012082016105d5565b9161014082013591610160810135916106076101a061018084013593016105d5565b908160209103126105d05751610607816105bf565b15614cc557565b60405162461bcd60e51b815260206004820152600d60248201526c29a3a61d103130b2103830b4b960991b6044820152606490fd5b15614d0157565b60405162461bcd60e51b815260206004820152602f60248201527f53474c3a206c69717569646174696f6e436f6c6c61746572616c697a6174696f60448201526e1b94985d19481b9bdd081d985b1a59608a1b6064820152608490fd5b614d7963097343e06001600160401b0319602d541617602d55565b602d805467ffffffffffffffff60401b19166324ea412360491b179055614db07054a2b63d65d79d094abb66880000000000602e55565b614de1614dc5602d546001600160401b031690565b6001600160401b03166001600160401b0319602f541617602f55565b614e12614df6602f546001600160401b031690565b6001600160401b03166001600160401b03196024541617602455565b614e1a6139a2565b5050614e276103e8601955565b614e316000601a55565b614e3b6032603055565b614e46612ee0602055565b8015614efc57601e555b8015614eef57601f555b614e69601f54601e5410614cfa565b614e746161a8602955565b8015614edd576022555b614e8a62013880601b55565b614e9662015f90601c55565b614ea1612710601d55565b614eb2670429d069189e0000602a55565b614ec36706f05b59d3b20000602b55565b614ed16112b3602b5461351d565b6105e062015180601255565b50614e7e670de0b6b3a7640000602255565b50614e5a6201388061295d565b50614e50620124f8612983565b6001600160401b038111611b245760051b60200190565b90614f2a82614f09565b614f376040519182611b8d565b8281528092614aa2601f1991614f09565b90614f5282614f09565b614f5f6040519182611b8d565b8281528092614f70601f1991614f09565b019060005b828110614f8157505050565b806060602080938501015201614f75565b9190811015614a645760051b81013590601e19813603018212156105d05701908135916001600160401b0383116105d05760200182360381136105d0579190565b908092918237016000815290565b8051821015614a645760209160051b010190565b6103e881511161505157604481511061501e578060248060046106079401518301019101614aac565b5060405161502b81611b29565b60168152754d61726b65743a206e6f2072657475726e206461746160501b602082015290565b5060405161505e81611b29565b60178152764d61726b65743a20726561736f6e20746f6f206c6f6e6760481b602082015290565b1561508c57565b60405162461bcd60e51b815260206004820152600e60248201526d13585c9ad95d0e881c185d5cd95960921b6044820152606490fd5b6001600160a01b0381163381036150d857505050565b600090815260026020908152604080832033845290915290208290541061515c576001600160a01b038116600090815260026020526040902060001990615120903390610d64565b540361512a575050565b6001600160a01b0316600090815260026020526040902061515890615150903390610d64565b918254613533565b9055565b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881b9bdd08185c1c1c9bdd995960621b6044820152606490fd5b93929190936151a561437d565b80516009546001600160801b0397918816949290615211906020906151d2906001600160a01b0316610849565b600e54601454604051638eb22cdd60e01b815260048101929092526001600160801b031660248201526001604482015292839190829081906064820190565b03915afa80156116815761522e916000916153bb575b5086613540565b8061538c57506103e886985b602083015161525590828c16906001600160801b03166143a3565b1610615380576152ec6152c5959493926152766149978b8a6152fd966153d9565b61527f8161060a565b61528a8b8254613540565b90556040518a81526001600160a01b038281169890976152d29287928b91600091600080516020615ec8833981519152919081906020820190565b0390a38a600e548961547f565b6001600160a01b0316600090815260266020526040902090565b602754600052602052604060002090565b615308868254613540565b90551561535857506009547f30a8c4f9ab5af7e1309ca87c32377d1a83366c5990472dbf9d262450eae14e3890615347906001600160a01b0316610849565b915b604051878152921691602090a4565b7f30a8c4f9ab5af7e1309ca87c32377d1a83366c5990472dbf9d262450eae14e389091615349565b50600096505050505050565b60208201516103e8916153b5916137ca906153af906001600160801b0316612528565b8a6134d7565b9861523a565b6153d3915060203d8111612475576124668183611b8d565b38615227565b91906153fd906153e761430d565b5060018060801b039182809216828651166143a3565b16835261541381602085019316828451166143a3565b16905290565b6001600160a01b039182168152911660208201526040810191909152606081019190915260800190565b1561544a57565b60405162461bcd60e51b815260206004820152600d60248201526c0a68e987440e8dede40daeac6d609b1b6044820152606490fd5b9091929360001461551757506009546154d1916020916154a7906001600160a01b0316610849565b604051627eeac760e11b815230600482015260248101929092529092839190829081906044820190565b03915afa928315611681576105e0936154f2926000916154f9575b50613533565b1015615443565b615511915060203d8111612475576124668183611b8d565b386154ec565b6009549193509190615531906001600160a01b0316610849565b803b156105d05761555f936000809460405196879586948593630208d92960e11b8552309060048601615419565b03925af18015611681576155705750565b8061557d6105e092611b44565b80610669565b6001600160801b0391821690821603919082116134b557565b156155a357565b60405162461bcd60e51b815260206004820152600e60248201526d14d1d30e881b5a5b881b1a5b5a5d60921b6044820152606490fd5b6025549093926001600160801b039160801c156157a9576155f861437d565b80519095906001600160801b0316600954615622906020906151d2906001600160a01b0316610849565b03915afa918215611681578591600093615789575b50169061564391613540565b61564d90836134d7565b602087018051909291615669916001600160801b031690613500565b9687946156758361060a565b8581549061568291613533565b90556040518581526001600160a01b0393841694906000908690600080516020615ec883398151915290602090a382516156c890838916906001600160801b0316615583565b6001600160801b031683528051868316906001600160801b0316906156ec91615583565b6001600160801b03168152516001600160801b0316166103e811156157109061559c565b6157199061487d565b6040519283528416917f6e853a5fd6b51d773691f542ebac8513c9992a51380d4c342031056a6411422890602090a4600954600e546001600160a01b0390911691823b156105d05761555f9260009283879360405196879586948593630208d92960e11b85523060048601615419565b6157a291935060203d8111612475576124668183611b8d565b9138615637565b50600093505050565b6025546001600160801b0394939192919060801c156157a9576157d361437d565b80519091906001600160801b03166009546157fd906020906151d2906001600160a01b0316610849565b03915afa918215611681578891600093615a0d575b50169061581e91613540565b61582890826134d7565b6020830180519091615843916001600160801b031690613500565b96879361584f8761060a565b8481549061585c91613533565b90556040518481526001600160a01b03888116949093916000908690600080516020615ec883398151915290602090a382516158a490838916906001600160801b0316615583565b6001600160801b031683528051868316906001600160801b0316906158c891615583565b6001600160801b03168152516001600160801b0316166103e811156158ec9061559c565b6158f59061487d565b6040519283528416917f6e853a5fd6b51d773691f542ebac8513c9992a51380d4c342031056a6411422890602090a4600954600e546001600160a01b0390911691823b156105d0576159659260009283889360405196879586948593630208d92960e11b85523060048601615419565b03925af18015611681576159fa575b506001600160a01b03811660009081526026602052604090206159a4602754809290600052602052604060002090565b548411156159d057506001600160a01b031660009081526026602052604081206159cd906152ec565b55565b6124206159ef9260018060a01b03166000526026602052604060002090565b615158838254613533565b8061557d615a0792611b44565b38615974565b615a2691935060203d8111612475576124668183611b8d565b9138615812565b908060209392818452848401376000828201840152601f01601f1916010190565b9035601e19823603018112156105d05701602081359101916001600160401b0382116105d05781360383136105d057565b906060615ab3610607938035615a94816105bf565b6001600160a01b03168452602081810135908501526040810190615a4e565b9190928160408201520191615a2d565b908135815261ffff80615ad860208501611de2565b166020830152615aea60408401611de2565b16604082015260c06060830135615b00816105bf565b6001600160a01b03908116606084015281615b50615b35615b246080880188615a4e565b60e0608089015260e0880191615a2d565b615b4260a0880188615a4e565b9087830360a0890152615a2d565b940135615b5c816105bf565b1691015290565b606060c435615b71816105bf565b6001600160a01b0390811683528060e435615b8b816105bf565b1660208401528061010435615b9f816105bf565b16604084015261012435615bb2816105bf565b16910152565b60609081813591615bc8836105bf565b6001600160a01b039283168552826020820135615be4816105bf565b166020860152826040820135615bf9816105bf565b1660408601520135615bb2816105bf565b91908082526020809201929160005b828110615c27575050505090565b9091929382806001928735615c3b816105bf565b848060a01b03168152019501910192919092615c19565b90808352602080930192838260051b850194846000925b858410615c7a575050505050505090565b909192939495968580615c9e8385600195038852615c988c88615a4e565b90615a2d565b990194019401929594939190615c69565b9295969094969391936040519660209663e5644d8b60e01b888a01528060a48a01608060248c01525260c48901959060005b89828210615d4b575050505087850360231990810160448a0152818652936001600160fb1b0382116105d0576146c09961204b988a9861078798615d3c9560051b809284830137018981036003190160648b01520191615c0a565b92858403016084860152615c52565b808499600193949535615d5d816105bf565b848060a01b031681520198019101919091615ce1565b15615d7a57565b60405162461bcd60e51b815260206004820152600e60248201526d14d1d30e881b9bdd081d985b1a5960921b6044820152606490fd5b6035546001600160a01b03168015615e0e57816000929160208493519201905af490615dda6149ee565b9115615de257565b612318615dee83614ff5565b60405162461bcd60e51b81526020600482015291829160248301906106c0565b60405162461bcd60e51b815260206004820152601360248201527214d1d30e881b5bd91d5b19481b9bdd081cd95d606a1b6044820152606490fd5b6033546001600160a01b03168015615e0e57816000929160208493519201905af490615dda6149ee565b6032546001600160a01b03168015615e0e57816000929160208493519201905af490615dda6149ee565b6034546001600160a01b03168015615e0e57816000929160208493519201905af490615dda6149ee56feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220711e6854b8d35017bb015c10f8effb509f0d0a51a9bee975eb9ba5eaffad3db464736f6c63430008120033", "linkReferences": {}, "deployedLinkReferences": {} } diff --git a/src/typechain/tapioca-bar/factories/markets/Market__factory.ts b/src/typechain/tapioca-bar/factories/markets/Market__factory.ts index 55d88a19..66d7fdbe 100644 --- a/src/typechain/tapioca-bar/factories/markets/Market__factory.ts +++ b/src/typechain/tapioca-bar/factories/markets/Market__factory.ts @@ -95,6 +95,25 @@ const _abi = [ name: "ExchangeRateDurationUpdated", type: "event", }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "address", + name: "oldVal", + type: "address", + }, + { + indexed: true, + internalType: "address", + name: "newVal", + type: "address", + }, + ], + name: "LeverageExecutorSet", + type: "event", + }, { anonymous: false, inputs: [ @@ -596,6 +615,19 @@ const _abi = [ stateMutability: "view", type: "function", }, + { + inputs: [], + name: "leverageExecutor", + outputs: [ + { + internalType: "contract ILeverageExecutor", + name: "", + type: "address", + }, + ], + stateMutability: "view", + type: "function", + }, { inputs: [], name: "liquidationBonusAmount", @@ -907,6 +939,19 @@ const _abi = [ stateMutability: "view", type: "function", }, + { + inputs: [ + { + internalType: "contract ILeverageExecutor", + name: "_executor", + type: "address", + }, + ], + name: "setLeverageExecutor", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, { inputs: [ { diff --git a/src/typechain/tapioca-bar/factories/markets/bigBang/BBBorrow__factory.ts b/src/typechain/tapioca-bar/factories/markets/bigBang/BBBorrow__factory.ts index 63f8c07d..42086172 100644 --- a/src/typechain/tapioca-bar/factories/markets/bigBang/BBBorrow__factory.ts +++ b/src/typechain/tapioca-bar/factories/markets/bigBang/BBBorrow__factory.ts @@ -72,13 +72,13 @@ const _abi = [ { indexed: true, internalType: "address", - name: "_oldVal", + name: "oldVal", type: "address", }, { indexed: true, internalType: "address", - name: "_newVal", + name: "newVal", type: "address", }, ], @@ -142,6 +142,25 @@ const _abi = [ name: "ExchangeRateDurationUpdated", type: "event", }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "address", + name: "oldVal", + type: "address", + }, + { + indexed: true, + internalType: "address", + name: "newVal", + type: "address", + }, + ], + name: "LeverageExecutorSet", + type: "event", + }, { anonymous: false, inputs: [ @@ -523,6 +542,37 @@ const _abi = [ name: "UpdateMinMaxMintFee", type: "event", }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "uint256", + name: "oldMin", + type: "uint256", + }, + { + indexed: true, + internalType: "uint256", + name: "newMin", + type: "uint256", + }, + { + indexed: true, + internalType: "uint256", + name: "oldMax", + type: "uint256", + }, + { + indexed: false, + internalType: "uint256", + name: "newMax", + type: "uint256", + }, + ], + name: "UpdateMinMaxMintRange", + type: "event", + }, { inputs: [], name: "DOMAIN_SEPARATOR", @@ -999,6 +1049,19 @@ const _abi = [ stateMutability: "view", type: "function", }, + { + inputs: [], + name: "leverageExecutor", + outputs: [ + { + internalType: "contract ILeverageExecutor", + name: "", + type: "address", + }, + ], + stateMutability: "view", + type: "function", + }, { inputs: [], name: "liquidationBonusAmount", @@ -1077,6 +1140,19 @@ const _abi = [ stateMutability: "view", type: "function", }, + { + inputs: [], + name: "maxMintFeeStart", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, { inputs: [], name: "minDebtRate", @@ -1116,6 +1192,19 @@ const _abi = [ stateMutability: "view", type: "function", }, + { + inputs: [], + name: "minMintFeeStart", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, { inputs: [ { @@ -1415,6 +1504,19 @@ const _abi = [ stateMutability: "nonpayable", type: "function", }, + { + inputs: [ + { + internalType: "contract ILeverageExecutor", + name: "_executor", + type: "address", + }, + ], + name: "setLeverageExecutor", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, { inputs: [ { @@ -1701,7 +1803,7 @@ const _abi = [ ] as const; const _bytecode = - "0x61014080604052346200018a5762000017816200018f565b600f81526001602082016e546170696f63612042696742616e6760881b8152602060405162000046816200018f565b8381520192603160f81b845251902091208160e052610100918183524660a0526040519160208301907f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f92838352604085015260608401524660808401523060a084015260a0835260c083019280841060018060401b03851117620001745760408490525190206080523060c052610120908152600580546001600160a01b0319163390811790915560007f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a362013880601b5562015f90601c55612710601d55612ee06020556103e8602d55613cf69283620001ac843960805183612999015260a05183612a64015260c05183612963015260e051836129e801525182612a0e015251816129c50152f35b634e487b7160e01b600052604160045260246000fd5b600080fd5b604081019081106001600160401b03821117620001745760405256fe60806040908082526004918236101561001757600080fd5b60009260e08435811c938462a02a2014611ef65750836302ce728f14611ecd578363078dfbe714611dc8578363095ea7b314611d9e5783630c4e84f014611c8757836318160ddd14611c6c5783631c9e379b14611c345783631d4d3a5d14611c0b5783631da8bf1014611b515783631fb8f81a14611b3257836323b872dd146119aa578363331960ff1461198b57836334ce998a1461196257836334d441d0146119435783633644e5151461192657836337b6b7b91461190757836338d52e0f146118de5783633ba0b9a9146118bf5783633f741adb1461189657836340626d8b1461187757836344de240a14611858578363473e3ce71461183957836348e4163e146118015783634e71e0c81461174c5783635224372c14611695578363529898f214611677578363542afda31461165857836357935462146116395783636b19ad161461161a5783636c3d8b8f146115f157836370a08231146115b9578363727785471461158157836374645ff3146114ed57836374c9e481146114ce5783637dc0d1d0146114a55783637ecebe001461146e5783637fa0b84e1461143d5783638285ef401461140c57836387b27937146113d45783638c5d0ed3146113b55783638da5cb5b1461138c578363910dd7c814611113578363932bc4f81461103657836399a970281461100d5783639e15e89f14610fd2578363a9059cbb14610ef7578363b0e21e8a14610ed8578363b27c0e7414610ea7578363b7113f1914610e83578363bb4cfe3b14610e64578363bde39c5d14610e45578363c1ad5c8d14610e21578363cd0211eb14610a7f578363ce8849ed14610a56578363d3fb2a38146105e1578363d505accf1461045a5750508163d8dfeb4514610431578163dd62ed3e146103e3578163de406577146103ba578163e0996cb61461039b578163e30c397814610372578163ea64dd5614610353578163eec0f42e14610334578163f791395d14610311575063f8ba4cff146102f357600080fd5b3461030e578060031936011261030e5761030b61393b565b80f35b80fd5b9050346103305781600319360112610330576020906027549051908152f35b5080fd5b905034610330578160031936011261033057602090600c549051908152f35b905034610330578160031936011261033057602090601f549051908152f35b90503461033057816003193601126103305760065490516001600160a01b039091168152602090f35b905034610330578160031936011261033057602090601d549051908152f35b90503461033057816003193601126103305760095490516001600160a01b039091168152602090f35b905034610330578060031936011261033057602091610400611f3d565b82610409611f53565b6001600160a01b03928316845260028652922091166000908152908352819020549051908152f35b905034610330578160031936011261033057600b5490516001600160a01b039091168152602090f35b908491346105dd5761046b36611f87565b91839498959793421161059a579161053d91610545938c8b8b60018060a01b0398898d169a8b93846000528d60205285600020908154916104ab83612cba565b90558c87519560208701977f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e266895260008a890152606088015216608086015260a085015260c0840152818301528152610503816120b8565b51902061050e612960565b915190602082019261190160f01b84526022830152604282015260428152610535816120d4565b519020612c35565b919091612b36565b1603610557575061030b939450612d17565b606490602087519162461bcd60e51b8352820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152fd5b8a5162461bcd60e51b8152602081880152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b8280fd5b848383346105dd576101603660031901126105dd576001600160a01b03813581811690819003610a52576024916001600160401b038335818111610a4e5736602382011215610a4e5780860135918211610a4e5736858383010111610a4e5760443593838516809503610a495761065d84600554163314612174565b80610a0b575b5084826108b1575b50505081610871575b505060643580610859575b5060843580610841575b5060a4358061082a575b5060c43580610806575b5060e435806107e2575b5061010435806107b1575b506101243580610740575b506101443592836106cc578480f35b601e5484106106e357505050601f55818080808480f35b608492916020603292519362461bcd60e51b85528401528201527f4d61726b65743a206c69717569646174696f6e436f6c6c61746572616c697a616044820152711d1a5bdb94985d19481d1bdbc81cdb585b1b60721b6064820152fd5b61074f620186a08211156121bf565b601f54811161076157601e55846106bd565b506025906020608494519362461bcd60e51b85528401528201527f4d61726b65743a20636f6c6c61746572616c697a6174696f6e5261746520746f6044820152646f2062696760d81b6064820152fd5b806016547fae6e0ab3b95f0a53ff9660a390ccedcbbf1f2355dce974a9841af106fddcfaba8780a3601655846106b2565b6107f0620186a082106121bf565b6107fd601b5482116121bf565b601c55846106a7565b610814620186a082106121bf565b610821601c5482106121bf565b601b558461069d565b610838620186a082106121bf565b601d5584610693565b610850620186a08211156121bf565b601a5584610689565b610868620186a08211156121bf565b6019558461067f565b816008549182167f5a62d22209e370e38eea92cfddcd228e656e6ec139243392a760a7769f5877fd8880a36001600160a01b031916176008558480610674565b82916108be60105461203a565b601f81116109ac575b508990601f841160011461092c578a9361091f575b5050508160011b916000199060031b1c1916176010555b7fa6f004921c944d4b8bf6e38462b00f36a58d62495d56b51f571ab78f732c98158680a186808461066b565b01013590508489806108dc565b60108b52601f1984169450600080516020613ca183398151915292509087908b60205b87821061098d5750508460019610610971575b50505050811b016010556108f3565b60001960f88660031b161c199201013516905588808681610962565b828501909301358555600194909401938992918201919081019061094f565b60108b529092509050600080516020613ca1833981519152601f840160051c810160208510610a04575b91849391601f8994920160051c01905b8181106109f357506108c7565b8b81558594508893506001016109e6565b50806109d6565b600f80546001600160a01b0319169190911790557f0b2d6eb667d0522c3eb86e4288afecae6c11591ffd1345d4d12407e0598bca9b8880a188610663565b600080fd5b8780fd5b8480fd5b84833461033057816003193601126103305760085490516001600160a01b039091168152602090f35b5083823461033057608036600319011261033057610a9b611f3d565b91610aa4611f53565b93610aad611f78565b506064356001835260209560078752610acc60ff868620541615612d6e565b6001600160a01b039181831691610ae530841415612dab565b610aed612501565b5050610af761393b565b610b3c610b2b610b0e84610b09613390565b613606565b90506011549060ff610b2389600d54166132f3565b1691856134b3565b610b36811515612df6565b89613536565b8286526017895286862054808311610e19575b508115610dde5781610b6091613bec565b9681881015610da35782865260238952868620610b7e898254612256565b9055610b8c82610b09613390565b9890899060018060801b03815116908c60018060801b031991015160801b161760145584885260178b52888820610bc4858254612256565b90558989888860095416868c600e54610bf28651978896879586946311a5cc7760e31b865230928601613a4a565b03925af18015610d99578c9388938c8e99989794610c2794610d6b575b5050610c1b878a612256565b80610d48575b50612256565b80610cad575b50895193845216917fc8e512d8f188ca059984b5853d2bf653da902696b8512785b182b2c813789a6e9190a4600a541690813b156105dd578351632ebe913360e21b81529183918391829084905af18015610ca357610c8f575b505051908152f35b610c998291612074565b61030e5780610c87565b83513d84823e3d90fd5b925092939450600d541690813b15610a4e578851632770a7eb60e21b815230888201908152602081019290925291889183919082908490829060400103925af18015610d3e57918a918a959493610d07575b908691610c2d565b7fc8e512d8f188ca059984b5853d2bf653da902696b8512785b182b2c813789a6e929198610d358892612074565b98919250610cff565b88513d89823e3d90fd5b610d659150610d5e620186a091601a54906121ff565b0489612256565b8f610c21565b81610d8a92903d10610d92575b610d8281836120ef565b810190613a34565b8e9150610c0f565b503d610d78565b8a513d8b823e3d90fd5b865162461bcd60e51b81528086018a9052601560248201527442423a2072657061796d656e7420746f6f206c6f7760581b6044820152606490fd5b865162461bcd60e51b81528086018a9052601560248201527453474c3a206e6f7468696e6720746f20726570617960581b6044820152606490fd5b915089610b4f565b848334610330578160031936011261033057602090610e3e6136ba565b9051908152f35b8483346103305781600319360112610330576020906028549051908152f35b848334610330578160031936011261033057602090601e549051908152f35b84833461033057816003193601126103305760209060ff6025541690519015158152f35b82853461030e578060031936011261030e57506024548151906001600160401b03908181168352831c166020820152f35b848334610330578160031936011261033057602090601a549051908152f35b848334610330578060031936011261033057602091610f14611f3d565b82602435928315801590610fc0575b610f53575b50519182526001600160a01b0316903390600080516020613c81833981519152908590a35160018152f35b3381526001865281812054610f6a85821015612a8a565b6001600160a01b038416908533839003610f87575b505050610f28565b610f9b91610f96841515612acf565b612256565b3383526001885283832055815220610fb4838254612263565b90558285808085610f7f565b50336001600160a01b03841614610f23565b848334610330578060031936011261033057606090610ffb610ff2611f3d565b602435906123a2565b91929081519384526020840152820152f35b848334610330578060031936011261033057602090610e3e61102d611f3d565b6024359061282e565b84833461033057816003193601126103305780519082602b546110588161203a565b808552906001908181169081156110eb5750600114611092575b5050506110848261108e9403836120ef565b5191829182612110565b0390f35b602b8352602095507f11c44e4875b74d31ff9fd779bf2566af7bd15b87fc985d01f5094b89e3669e4f5b8284106110d8575050508261108e946110849282010194611072565b80548685018801529286019281016110bc565b61108e97506110849450602092508693915060ff191682840152151560051b82010194611072565b925090346113885780600319360112611388578135926001600160401b038411610a525736602385011215610a5257838301359261115084612159565b9461115d845196876120ef565b848652866020918288019636602482840101116105dd578060248593018937880101526024359361ffff8516809503610a4e57610100958688805181010312611384576111a99061243c565b936111b5828901612b14565b906111c260608a01612b14565b9860808101519860a0820151926111db60c08401612b28565b91818401519301519360018060a01b03808097169d169a81421161134157928d8f819897948f948f8f968f918f959a8f8c81956112b79f9c61053d9f5060001461131a577f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e2669a5b82528952209384549461125486612cba565b905580519788019889528701528d6060870152608086015260a085015260c0840152818301528152611285816120b8565b519020611290612960565b908951908b82019261190160f01b84526022830152604282015260428152610535816120d4565b16036112d9575050506000146112d05761030b92612d17565b61030b92612cc9565b5162461bcd60e51b815291820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e61747572650000604482015260649150fd5b7f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d69a611242565b875162461bcd60e51b8152808b018a9052601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b8880fd5b8380fd5b84833461033057816003193601126103305760055490516001600160a01b039091168152602090f35b848334610330578160031936011261033057602090601b549051908152f35b8483346103305760203660031901126103305760209181906001600160a01b036113fc611f3d565b1681526023845220549051908152f35b82853461030e578060031936011261030e575060145481516001600160801b038216815260809190911c6020820152f35b84833461033057806003193601126103305760209061146761145d611f3d565b6024359033612cc9565b5160018152f35b848383346105dd5760203660031901126105dd5760209282916001600160a01b03611497611f3d565b168252845220549051908152f35b848334610330578160031936011261033057600f5490516001600160a01b039091168152602090f35b848334610330578160031936011261033057602090602d549051908152f35b8483346103305781600319360112610330578051908260105461150f8161203a565b808552906001908181169081156110eb575060011461153a575050506110848261108e9403836120ef565b6010835260209550600080516020613ca18339815191525b82841061156e575050508261108e946110849282010194611072565b8054868501880152928601928101611552565b848383346105dd5760203660031901126105dd573591600983101561030e575060ff6115ae60209361200b565b541690519015158152f35b8483346103305760203660031901126103305760209181906001600160a01b036115e1611f3d565b1681526001845220549051908152f35b848334610330578160031936011261033057600a5490516001600160a01b039091168152602090f35b8483346103305781600319360112610330576020906026549051908152f35b848334610330578160031936011261033057602090601c549051908152f35b848334610330578160031936011261033057602090602c549051908152f35b84833461033057816003193601126103305760209081549051908152f35b848383346105dd57611703906116f760ff84956116ca6116b436611fd6565b9491989093808052600760205220541615612d6e565b6116df6001600160a01b038216301415612dab565b6116e7612501565b50506116f161393b565b85612e4c565b929093601154906133b6565b15611715575082519182526020820152f35b606490602085519162461bcd60e51b8352820152601160248201527013585c9ad95d0e881a5b9cdbdb1d995b9d607a1b6044820152fd5b509150346105dd57826003193601126105dd576006546001600160a01b039290918383169190338390036117be575050806005549384167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08680a36001600160a01b0319928316176005551660065580f35b906020606492519162461bcd60e51b8352820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b8483346103305760203660031901126103305760209181906001600160a01b03611829611f3d565b1681526017845220549051908152f35b8483346103305781600319360112610330576020906015549051908152f35b848334610330578160031936011261033057602090600e549051908152f35b8483346103305781600319360112610330576020906016549051908152f35b5090833461030e57606036600319011261030e5750610e3e602092604435906024359035612289565b8483346103305781600319360112610330576020906011549051908152f35b848334610330578160031936011261033057600d5490516001600160a01b039091168152602090f35b8483346103305781600319360112610330576020906012549051908152f35b848334610330578160031936011261033057602090610e3e612960565b8483346103305781600319360112610330576020906019549051908152f35b84833461033057816003193601126103305760145490516001600160801b039091168152602090f35b8483346103305781600319360112610330576020906013549051908152f35b5090833461030e576119bb36611fd6565b9192826119f5575b508351918252602094506001600160a01b03908116921690600080516020613c81833981519152908590a35160018152f35b6001600160a01b038481168083526001602090815287842054919892909190611a2087831015612a8a565b851692838a03611a34575b505050506119c3565b898552600283528885203386528352888520549060018201611a9e575b5050928260209960018a94611a7d8a8e99610f96600080516020613c818339815191529c9a1515612acf565b9285525283832055815220611a93858254612263565b905591878080611a2b565b878210611af457509260209960018a94611a7d8a8e9996611acf82600080516020613c818339815191529d9b612256565b86895260028552898920338a5285528989205596995050509450509981949650611a51565b895162461bcd60e51b8152908101849052601860248201527745524332303a20616c6c6f77616e636520746f6f206c6f7760401b6044820152606490fd5b8483346103305781600319360112610330576020906029549051908152f35b908491346105dd57611b6236611f87565b93979496909280421161059a57938693611bf9938c8c8961053d968e9a8e60018060a01b03809c169c8d948587526020528c87872092835493611ba485612cba565b905588519660208801987f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d68a528a890152606088015216608086015260a085015260c0840152818301528152610503816120b8565b1603610557575061030b939450612cc9565b848334610330578160031936011261033057602a5490516001600160a01b039091168152602090f35b8483346103305760203660031901126103305760209181906001600160a01b03611c5c611f3d565b1681526018845220549051908152f35b84833461033057816003193601126103305751908152602090f35b848383346105dd57816003193601126105dd57803590600982101561138857611cae611f69565b6008549093906001600160a01b03163303611d645760ff611cce8461200b565b54161515931515938414611d2c575050808260ff611cee611d1c9461200b565b54161515827feeec81de25875ce1725479bb76f720a8defdb43dea041919ae37bb4aae9847c08780a461200b565b9060ff8019835416911617905580f35b906020606492519162461bcd60e51b835282015260126024820152714d61726b65743a2073616d6520737461746560701b6044820152fd5b906020606492519162461bcd60e51b8352820152601460248201527313585c9ad95d0e881d5b985d5d1a1bdc9a5e995960621b6044820152fd5b848334610330578060031936011261033057602090611467611dbe611f3d565b6024359033612d17565b509150346105dd5760603660031901126105dd57611de4611f3d565b91611ded611f69565b91611df6611f78565b9260018060a01b03948591611e1083600554163314612174565b15611eb4571692831590811591611eac575b5015611e71575050806005549283167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08580a36001600160a01b03199182161760055560068054909116905580f35b906020606492519162461bcd60e51b835282015260156024820152744f776e61626c653a207a65726f206164647265737360581b6044820152fd5b905038611e22565b93505050501660018060a01b0319600654161760065580f35b82853461030e578060031936011261030e5750611ee8612501565b825191151582526020820152f35b93505050346105dd57806003193601126105dd57602092611f15611f3d565b611f1d611f53565b6001600160a01b0391821683526003865283832091168252845220548152f35b600435906001600160a01b0382168203610a4957565b602435906001600160a01b0382168203610a4957565b602435908115158203610a4957565b604435908115158203610a4957565b60e0906003190112610a49576001600160a01b03906004358281168103610a4957916024359081168103610a495790604435906064359060843560ff81168103610a49579060a4359060c43590565b6060906003190112610a49576001600160a01b03906004358281168103610a4957916024359081168103610a49579060443590565b6009811015612024576000526007602052604060002090565b634e487b7160e01b600052602160045260246000fd5b90600182811c9216801561206a575b602083101461205457565b634e487b7160e01b600052602260045260246000fd5b91607f1691612049565b6001600160401b03811161208757604052565b634e487b7160e01b600052604160045260246000fd5b604081019081106001600160401b0382111761208757604052565b61010081019081106001600160401b0382111761208757604052565b608081019081106001600160401b0382111761208757604052565b90601f801991011681019081106001600160401b0382111761208757604052565b6020808252825181830181905290939260005b82811061214557505060409293506000838284010152601f8019910116010190565b818101860151848201604001528501612123565b6001600160401b03811161208757601f01601f191660200190565b1561217b57565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b156121c657565b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881b9bdd081d985b1a59607a1b6044820152606490fd5b8181029291811591840414171561221257565b634e487b7160e01b600052601160045260246000fd5b8115612232570490565b634e487b7160e01b600052601260045260246000fd5b604d811161221257600a0a90565b9190820391821161221257565b9190820180921161221257565b8181039291600013801582851316918412161761221257565b6014549192916122d2916122c3916122b9916122af906001600160801b038316906121ff565b9060801c90612228565b93601f54906121ff565b6122cc83612248565b90612228565b80831061239a576122e66123229184612256565b9161231d61231761230e601e546123086122ff86612248565b60205490612263565b906121ff565b6122cc84612248565b91612248565b612270565b6509184e72a0009081810291818305149015171561221257670de0b6b3a76400009182810292818405149015171561221257801561223257600160ff1b91808314600019831416612212570590600082121561239357811461221257600003905b80821161238e575090565b905090565b5090612383565b505050600090565b6001600160a01b038116600081815260176020526040812054919493929091908115612430579160409161240c85946123e6612424976123e06138aa565b926126a5565b815190936001600160801b0391602091612402918416906121ff565b9201511690612228565b81811061242857035b95815260186020522054612777565b9091565b505080612415565b50509192505080918190565b51908115158203610a4957565b9190826040910312610a495760206124608361243c565b92015190565b60208082526000916010549161247b8361203a565b92838284015260019081811690816000146124de57506001146124a0575b5050505090565b929350601060005280600020926000935b8585106124ca5750505060409250010138808080612499565b8054858501604001529382019381016124b1565b925050506040935060ff929192191683830152151560051b010138808080612499565b600f546040805163d6d7d52560e01b81529290916001600160a01b031682848061252d60048201612466565b0381600080955af1801561264d578194829161261a575b509284156125bd57831561258357507f9f9192b5edb17356c524e08d9e025c8e2f6307e6ea52fb7968faa3081f51c3c883918260115580a25b42601355565b5162461bcd60e51b81526020600482015260146024820152734d61726b65743a20696e76616c6964207261746560601b6044820152606490fd5b919250506125d060135460125490612263565b42116125e057506011549061257d565b5162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881c985d19481d1bdbc81bdb1960621b6044820152606490fd5b905061263d919450833d8511612646575b61263581836120ef565b810190612449565b93909338612544565b503d61262b565b508251903d90823e3d90fd5b1561266057565b60405162461bcd60e51b815260206004820152601e60248201527f4d61726b65743a2065786368616e676552617465206e6f742076616c696400006044820152606490fd5b6126b0821515612659565b60018060a01b036020816009541691600c5490600094168452601882526064604085205491604051948593849263442c159960e01b8452600484015260248301528660448301525afa91821561276b578092612733575b50509061272b61272261273093620186a060215404906121ff565b601e54906121ff565b612228565b90565b9091506020823d8211612763575b8161274e602093836120ef565b8101031261030e57505161272b612722612707565b3d9150612741565b604051903d90823e3d90fd5b612782821515612659565b602060018060a01b0360095416916064600c54604051948593849263442c159960e01b845260048401526024830152600060448301525afa908115612822576000916127ef575b509061272b6127db92602154906121ff565b620186a06127eb601e54836121ff565b0491565b906020823d821161281a575b81612808602093836120ef565b8101031261030e57505161272b6127c9565b3d91506127fb565b6040513d6000823e3d90fd5b6001600160a01b0316600081815260186020526040812054909261285191612777565b91835260176020526040832054801561295a57811561295a5781811061295a57828110156129505760145461289a918391610f96916122af906001600160801b038316906121ff565b90620186a0928383029280840485149015171561293c576128bf92916122cc91612256565b91601b5491601c54936128d28585612270565b80820291848212600160ff1b82141661293c5781830514901517156129285705818482019485129112908015821691151617612914575080821261238e575090565b634e487b7160e01b81526011600452602490fd5b634e487b7160e01b83526011600452602483fd5b634e487b7160e01b85526011600452602485fd5b50505050601b5490565b50505090565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03161480612a61575b156129bb577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f000000000000000000000000000000000000000000000000000000000000000082527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a0815260c081018181106001600160401b038211176120875760405251902090565b507f00000000000000000000000000000000000000000000000000000000000000004614612992565b15612a9157565b60405162461bcd60e51b815260206004820152601660248201527545524332303a2062616c616e636520746f6f206c6f7760501b6044820152606490fd5b15612ad657565b60405162461bcd60e51b815260206004820152601660248201527545524332303a206e6f207a65726f206164647265737360501b6044820152606490fd5b51906001600160a01b0382168203610a4957565b519060ff82168203610a4957565b60058110156120245780612b475750565b60018103612b8f5760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b6044820152606490fd5b60028103612bdc5760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606490fd5b600314612be557565b60405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608490fd5b9291906fa2a8918ca85bafe22016d0b997e4df60600160ff1b038311612cae5791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa15612ca15781516001600160a01b03811615612c9b579190565b50600190565b50604051903d90823e3d90fd5b50505050600090600390565b60001981146122125760010190565b7fe50de2333c10a9502fcb1d8ae13a51bbf423153dfc63c2b8997665b32154afc360018060a01b038092169160009083825260036020526040822094169384825260205284604082205580a4565b909160207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259160018060a01b03809416938460005260028352604060002095169485600052825280604060002055604051908152a3565b15612d7557565b60405162461bcd60e51b815260206004820152600e60248201526d13585c9ad95d0e881c185d5cd95960921b6044820152606490fd5b15612db257565b606460405162461bcd60e51b815260206004820152602060248201527f4d61726b65743a2063616e6e6f742065786563757465206f6e20697473656c666044820152fd5b15612dfd57565b60405162461bcd60e51b815260206004820152602160248201527f42696742616e673a20616c6c6f77616e63655368617265206e6f742076616c696044820152601960fa1b6064820152608490fd5b91929060009060295485106132af5784156132a757612e6a85613a79565b9060115495612eb4612ea3612e7f8584612263565b600d546001600160a01b039a919060ff90612e9b908d166132f3565b16918a6134b3565b612eae811515612df6565b87613536565b8682169182855260209260238452604094858720612ed3828254612263565b9055612edd613390565b98612ee88286612263565b88878951612ef58161209d565b82815201528a516001600160801b039b8c91821661323b5781612f20849e8f955b1682845116613891565b168152612f35828a8301941683855116613891565b8281169093525160809290921b6001600160801b03191691169081176014556016548015918215613230575b5050156131ec57907f3a5151e57d3bc9798e7853034ac52293d1a0e12a2b44725e75b03b21f86477a6878c8795941692838b52601789528c612fa7838d20918254612263565b905581519081528c89820152a487600d5416803b1561316d5784516340c10f1960e01b8152306004820152602481018490529086908290604490829084905af180156131e2576131cf575b5087600d541690600e54918960095416865163095ea7b360e01b91828252600482015288602482015286816044818c875af180156131c5579287928a88938f96613182575b506009548b51928352959095166001600160a01b0316600482015260248101929092529092839190829081604481015b03925af1801561317857908694939291613134575b506130a79450868a6009541692855196879586948593634d4d7cbd60e11b8552309060048601613a4a565b03925af1908115613128578391613109575b509394600a5416803b156105dd57908280926004835180958193632ebe913360e21b83525af190811561310057506130ef575050565b6130f98291612074565b61030e5750565b513d84823e3d90fd5b6131209150823d8411610d9257610d8281836120ef565b9050386130b9565b505051903d90823e3d90fd5b80929450859193953d8311613171575b61314e81836120ef565b8101031261316d57916130a79391613166869461243c565b503861307c565b8580fd5b503d613144565b86513d89823e3d90fd5b9350509290935081813d83116131be575b61319d81836120ef565b81010312611384576130679287928a8e6131b78a9561243c565b5095613037565b503d613193565b88513d8b823e3d90fd5b6131db90959195612074565b9338612ff2565b85513d88823e3d90fd5b865162461bcd60e51b815260048101879052601b60248201527f42696742616e673a20626f72726f7720636170207265616368656400000000006044820152606490fd5b111590503880612f61565b9091808983018481511661324f90836121ff565b8585511661325c91612228565b9e8f8186511661326b916121ff565b91511661327791612228565b1061328b575b9082612f20818f9594612f16565b919b908c612f2061329c8294612cba565b9e505050909161327d565b509250829150565b606460405162461bcd60e51b815260206004820152602060248201527f42696742616e673a20626f72726f7720616d6f756e7420746f6f20736d616c6c6044820152fd5b60405163313ce56760e01b6020820190815260048252906133138161209d565b5160009283928392916001600160a01b03165afa903d15613388573d9161333983612159565b9261334760405194856120ef565b83523d82602085013e5b8061337d575b156133765760208280518101031261030e575060206127309101612b28565b5050601290565b506020825114613357565b606091613351565b6040519061339d8261209d565b6014546001600160801b038116835260801c6020830152565b919060018060a01b038060009416845260206017815260408520549081156134a95760188152604086205480156134a257816133f0613390565b9460095416916064600c54604051948593849263442c159960e01b8452600484015260248301528b60448301525afa96871561276b57809761346c575b505061240261344c612722613467969798620186a060215404906121ff565b9561346260018060801b039485875116906121ff565b6121ff565b111590565b9096508187813d831161349b575b61348481836120ef565b8101031261030e575094519461240261344c61342d565b503d61347a565b5050505050565b5060019450505050565b612317906134d38561273096956134cd6122cc96856126a5565b906134f3565b6001600160a01b03909116600090815260186020526040902054906121ff565b918215801561352e575b61239a57600181018091116122125761351c9261230861272b92612248565b6005810180911161221257600a900490565b5081156134fd565b6001600160a01b031633810361354a575050565b60008181526020906003825260409182822033835281528483832054106135b3578382526003815282822033835281528282205460010161358c575050505050565b6135a793825260038152828220903383525220918254612256565b905538808080806134a2565b60649083519062461bcd60e51b82526004820152601460248201527313585c9ad95d0e881b9bdd08185c1c1c9bdd995960621b6044820152fd5b6001600160801b03918216908216039190821161221257565b919091600060206040516136198161209d565b82815201526020810180516001600160801b0390811661365d5761365681865b81613649818a16828951166135ed565b16865216828451166135ed565b1690529190565b61367761366d82855116876121ff565b8284511690612228565b948061369361368984865116896121ff565b8487511690612228565b106136a3575b8161365691613639565b94816136b161365692612cba565b96915050613699565b60ff6025541661382b576014546001600160801b031690811561382457600a54604051631848f2bf60e31b8152602093916001600160a01b03919085908290600490829086165afa80156128225785916000916137eb575b50600460405180948193631a674cc560e11b8352165afa938415612822576000946137bc575b50506137549192670de0b6b3a7640000928391602854906121ff565b0490818110156137b35761376b6029548092612256565b83810290808204851490151715612212576122cc61378c926137a794612256565b602654926137a1602754926134628487612256565b04612263565b9080821161238e575090565b50505060265490565b81813d83116137e4575b6137d081836120ef565b810103126113885751925061375438613738565b503d6137c6565b909181813d831161381d575b61380181836120ef565b81010312610330575190828216820361030e5750849038613712565b503d6137f7565b6027549150565b600a5460405163e6abad4960e01b815290602090829060049082906001600160a01b03165afa90811561282257600091613863575090565b906020823d8211613889575b8161387c602093836120ef565b8101031261030e57505190565b3d915061386f565b6001600160801b03918216908216019190821161221257565b600060206040516138ba8161209d565b82815201526001600160401b03906138d98260245460401c1642612256565b9182156139305761392b61346291670de0b6b3a76400006139206138fb613390565b9660018060801b03958694858a5116906301e133806139186136ba565b0416906121ff565b041682855116613891565b168252565b509050612730613390565b6040516139478161209d565b6024546001600160401b03908181168352818160401c1661396f602085019180835242612256565b9283156134a257602094816301e133806139876136ba565b041681528142168352613998613390565b670de0b6b3a76400006139bd60018060801b03976134628985511687875116906121ff565b04956139ce81881682845116613891565b1680825296015160801b6001600160801b031990811690961760145551915192909416931692831760409190911b67ffffffffffffffff60401b16176024557f7484db546dcd57af0104c73c8a6968dfbaf5767f047cee0dadd0499ad7df81a0600080a3565b9190826040910312610a49576020825192015190565b9081526001600160a01b0391821660208201529116604082015260608101919091526000608082015260a00190565b8015613be657602a546040805163d6d7d52560e01b81526001600160a01b03909216929190808280613aad60048201612466565b0381600080985af1918215613bdc5784908593613bba575b5015613b6b5750670e27c49886e60000811015613b6257670d99a8cec7e20000811115613b5957602d5490670d99a8cec7e1ffff198101908111613b455790668e1bc9bf040000613b1f613b2693612308602c5485612256565b0490612256565b9081613b3157505090565b620186a0925090613b41916121ff565b0490565b634e487b7160e01b84526011600452602484fd5b505050602d5490565b505050602c5490565b5162461bcd60e51b8152602060048201526024808201527f42696742616e673a202061737365742773206f7261636c652063616c6c2066616044820152631a5b195960e21b6064820152608490fd5b905081613bd49293503d84116126465761263581836120ef565b919038613ac5565b81513d86823e3d90fd5b50600090565b6001600160a01b0390811660008181526017602052604081205491939092828214613c6f579060ff613c24613c2d93600d54166132f3565b169283916134f3565b8015613c685782916122cc612317613c53938760409752602360205286862054906121ff565b9281526023602052205480821161238e575090565b5050905090565b50505060409150602360205220549056feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae672a26469706673582212208082314b105886dbefd0bc64b2f053ab5ae9e4c72ac80611d7162104e8ae4d2064736f6c63430008120033"; + "0x61014080604052346200018a5762000017816200018f565b600f81526001602082016e546170696f63612042696742616e6760881b8152602060405162000046816200018f565b8381520192603160f81b845251902091208160e052610100918183524660a0526040519160208301907f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f92838352604085015260608401524660808401523060a084015260a0835260c083019280841060018060401b03851117620001745760408490525190206080523060c052610120908152600580546001600160a01b0319163390811790915560007f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a362013880601b5562015f90601c55612710601d55612ee06020556103e8602e55613dbb9283620001ac843960805183612a9e015260a05183612b69015260c05183612a68015260e05183612aed01525182612b1301525181612aca0152f35b634e487b7160e01b600052604160045260246000fd5b600080fd5b604081019081106001600160401b03821117620001745760405256fe60806040908082526004918236101561001757600080fd5b60009260e08435811c938462a02a2014611ffb5750836302ce728f14611fd2578363078dfbe714611ecd578363095ea7b314611ea35783630c4e84f014611d8c5783630f8b29ea14611d6d57836318160ddd14611d525783631c9e379b14611d1a5783631d4d3a5d14611cf15783631da8bf1014611c375783631fb8f81a14611c1857836323b872dd14611a90578363331960ff14611a7157836334ce998a14611a4857836334d441d014611a295783633644e51514611a0c57836337b6b7b9146119ed57836338d52e0f146119c45783633ba0b9a9146119a55783633f741adb1461197c57836340626d8b1461195d57836344de240a1461193e578363473e3ce71461191f57836348e4163e146118e75783634e71e0c8146118325783635224372c1461177b578363529898f21461175d578363542afda31461173e578363579354621461171f5783636b19ad16146117005783636c3d8b8f146116d757836370a082311461169f578363727785471461166757836374645ff3146115d357836374c9e481146115b4578363790c8467146115955783637dc0d1d01461156c5783637ecebe00146115355783637fa0b84e146115045783638285ef40146114d357836387b279371461149b5783638c5d0ed31461147c5783638da5cb5b14611453578363910dd7c8146111da578363932bc4f8146110fd57836399a97028146110d45783639e15e89f14611099578363a9059cbb14610fbe578363b0e21e8a14610f9f578363b27c0e7414610f6e578363b7113f1914610f4a578363bb4cfe3b14610f2b578363bde39c5d14610f0c578363c1ad5c8d14610ee8578363cd0211eb14610b46578363ce8849ed14610b1d578363d3fb2a38146106a8578363d505accf1461052557508263d8dfeb45146104fc578263da863f0e146104d3578263dd62ed3e14610485578263de4065771461045c578263e0996cb61461043d578263e30c397814610414578263ea64dd56146103f5578263eec0f42e146103d6578263ef2b234a1461036057508163f791395d1461033d575063f8ba4cff1461031f57600080fd5b3461033a578060031936011261033a57610337613a30565b80f35b80fd5b90503461035c578160031936011261035c576020906028549051908152f35b5080fd5b83903461035c57602036600319011261035c57356001600160a01b03818116918290036103d25761039681600554163314612279565b816021549182167ffb4fd7114609dd603b57adbc2082205bfbbcabf9265c4b437b472f5c592b8cd78580a36001600160a01b0319161760215580f35b8280fd5b83823461035c578160031936011261035c57602090600c549051908152f35b83823461035c578160031936011261035c57602090601f549051908152f35b83823461035c578160031936011261035c5760065490516001600160a01b039091168152602090f35b83823461035c578160031936011261035c57602090601d549051908152f35b83823461035c578160031936011261035c5760095490516001600160a01b039091168152602090f35b83823461035c578060031936011261035c576020916104a2612042565b826104ab612058565b6001600160a01b03928316845260028652922091166000908152908352819020549051908152f35b83823461035c578160031936011261035c5760215490516001600160a01b039091168152602090f35b83823461035c578160031936011261035c57600b5490516001600160a01b039091168152602090f35b908491346103d2576105363661208c565b918394989597934211610665579161060891610610938c8b8b60018060a01b0398898d169a8b93846000528d602052856000209081549161057683612dbf565b90558c87519560208701977f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e266895260008a890152606088015216608086015260a085015260c08401528183015281526105ce816121bd565b5190206105d9612a65565b915190602082019261190160f01b84526022830152604282015260428152610600816121d9565b519020612d3a565b919091612c3b565b16036106225750610337939450612e1c565b606490602087519162461bcd60e51b8352820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152fd5b8a5162461bcd60e51b8152602081880152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b848383346103d2576101603660031901126103d2576001600160a01b03813581811690819003610b19576024916001600160401b038335818111610b155736602382011215610b155780860135918211610b155736858383010111610b155760443593838516809503610b105761072484600554163314612279565b80610ad2575b508482610978575b50505081610938575b505060643580610920575b5060843580610908575b5060a435806108f1575b5060c435806108cd575b5060e435806108a9575b506101043580610878575b506101243580610807575b50610144359283610793578480f35b601e5484106107aa57505050601f55818080808480f35b608492916020603292519362461bcd60e51b85528401528201527f4d61726b65743a206c69717569646174696f6e436f6c6c61746572616c697a616044820152711d1a5bdb94985d19481d1bdbc81cdb585b1b60721b6064820152fd5b610816620186a08211156122c4565b601f54811161082857601e5584610784565b506025906020608494519362461bcd60e51b85528401528201527f4d61726b65743a20636f6c6c61746572616c697a6174696f6e5261746520746f6044820152646f2062696760d81b6064820152fd5b806016547fae6e0ab3b95f0a53ff9660a390ccedcbbf1f2355dce974a9841af106fddcfaba8780a360165584610779565b6108b7620186a082106122c4565b6108c4601b5482116122c4565b601c558461076e565b6108db620186a082106122c4565b6108e8601c5482106122c4565b601b5584610764565b6108ff620186a082106122c4565b601d558461075a565b610917620186a08211156122c4565b601a5584610750565b61092f620186a08211156122c4565b60195584610746565b816008549182167f5a62d22209e370e38eea92cfddcd228e656e6ec139243392a760a7769f5877fd8880a36001600160a01b03191617600855848061073b565b829161098560105461213f565b601f8111610a73575b508990601f84116001146109f3578a936109e6575b5050508160011b916000199060031b1c1916176010555b7fa6f004921c944d4b8bf6e38462b00f36a58d62495d56b51f571ab78f732c98158680a1868084610732565b01013590508489806109a3565b60108b52601f1984169450600080516020613d6683398151915292509087908b60205b878210610a545750508460019610610a38575b50505050811b016010556109ba565b60001960f88660031b161c199201013516905588808681610a29565b8285019093013585556001949094019389929182019190810190610a16565b60108b529092509050600080516020613d66833981519152601f840160051c810160208510610acb575b91849391601f8994920160051c01905b818110610aba575061098e565b8b8155859450889350600101610aad565b5080610a9d565b600f80546001600160a01b0319169190911790557f0b2d6eb667d0522c3eb86e4288afecae6c11591ffd1345d4d12407e0598bca9b8880a18861072a565b600080fd5b8780fd5b8480fd5b84833461035c578160031936011261035c5760085490516001600160a01b039091168152602090f35b5083823461035c57608036600319011261035c57610b62612042565b91610b6b612058565b93610b7461207d565b506064356001835260209560078752610b9360ff868620541615612e73565b6001600160a01b039181831691610bac30841415612eb0565b610bb4612606565b5050610bbe613a30565b610c03610bf2610bd584610bd0613485565b6136fb565b90506011549060ff610bea89600d54166133e8565b1691856135a8565b610bfd811515612efb565b8961362b565b8286526017895286862054808311610ee0575b508115610ea55781610c2791613cb1565b9681881015610e6a5782865260248952868620610c4589825461235b565b9055610c5382610bd0613485565b9890899060018060801b03815116908c60018060801b031991015160801b161760145584885260178b52888820610c8b85825461235b565b90558989888860095416868c600e54610cb98651978896879586946311a5cc7760e31b865230928601613b3f565b03925af18015610e60578c9388938c8e99989794610cee94610e32575b5050610ce2878a61235b565b80610e0f575b5061235b565b80610d74575b50895193845216917fc8e512d8f188ca059984b5853d2bf653da902696b8512785b182b2c813789a6e9190a4600a541690813b156103d2578351632ebe913360e21b81529183918391829084905af18015610d6a57610d56575b505051908152f35b610d608291612179565b61033a5780610d4e565b83513d84823e3d90fd5b925092939450600d541690813b15610b15578851632770a7eb60e21b815230888201908152602081019290925291889183919082908490829060400103925af18015610e0557918a918a959493610dce575b908691610cf4565b7fc8e512d8f188ca059984b5853d2bf653da902696b8512785b182b2c813789a6e929198610dfc8892612179565b98919250610dc6565b88513d89823e3d90fd5b610e2c9150610e25620186a091601a5490612304565b048961235b565b8f610ce8565b81610e5192903d10610e59575b610e4981836121f4565b810190613b29565b8e9150610cd6565b503d610e3f565b8a513d8b823e3d90fd5b865162461bcd60e51b81528086018a9052601560248201527442423a2072657061796d656e7420746f6f206c6f7760581b6044820152606490fd5b865162461bcd60e51b81528086018a9052601560248201527453474c3a206e6f7468696e6720746f20726570617960581b6044820152606490fd5b915089610c16565b84833461035c578160031936011261035c57602090610f056137af565b9051908152f35b84833461035c578160031936011261035c576020906029549051908152f35b84833461035c578160031936011261035c57602090601e549051908152f35b84833461035c578160031936011261035c5760209060ff6026541690519015158152f35b82853461033a578060031936011261033a57506025548151906001600160401b03908181168352831c166020820152f35b84833461035c578160031936011261035c57602090601a549051908152f35b84833461035c578060031936011261035c57602091610fdb612042565b82602435928315801590611087575b61101a575b50519182526001600160a01b0316903390600080516020613d46833981519152908590a35160018152f35b338152600186528181205461103185821015612b8f565b6001600160a01b03841690853383900361104e575b505050610fef565b6110629161105d841515612bd4565b61235b565b338352600188528383205581522061107b838254612368565b90558285808085611046565b50336001600160a01b03841614610fea565b84833461035c578060031936011261035c576060906110c26110b9612042565b602435906124a7565b91929081519384526020840152820152f35b84833461035c578060031936011261035c57602090610f056110f4612042565b60243590612933565b84833461035c578160031936011261035c5780519082602c5461111f8161213f565b808552906001908181169081156111b25750600114611159575b50505061114b826111559403836121f4565b5191829182612215565b0390f35b602c8352602095507f7416c943b4a09859521022fd2e90eac0dd9026dad28fa317782a135f28a860915b82841061119f57505050826111559461114b9282010194611139565b8054868501880152928601928101611183565b611155975061114b9450602092508693915060ff191682840152151560051b82010194611139565b9250903461144f578060031936011261144f578135926001600160401b038411610b195736602385011215610b195783830135926112178461225e565b94611224845196876121f4565b848652866020918288019636602482840101116103d2578060248593018937880101526024359361ffff8516809503610b155761010095868880518101031261144b5761127090612541565b9361127c828901612c19565b9061128960608a01612c19565b9860808101519860a0820151926112a260c08401612c2d565b91818401519301519360018060a01b03808097169d169a81421161140857928d8f819897948f948f8f968f918f959a8f8c819561137e9f9c6106089f506000146113e1577f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e2669a5b82528952209384549461131b86612dbf565b905580519788019889528701528d6060870152608086015260a085015260c084015281830152815261134c816121bd565b519020611357612a65565b908951908b82019261190160f01b84526022830152604282015260428152610600816121d9565b16036113a0575050506000146113975761033792612e1c565b61033792612dce565b5162461bcd60e51b815291820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e61747572650000604482015260649150fd5b7f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d69a611309565b875162461bcd60e51b8152808b018a9052601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b8880fd5b8380fd5b84833461035c578160031936011261035c5760055490516001600160a01b039091168152602090f35b84833461035c578160031936011261035c57602090601b549051908152f35b84833461035c57602036600319011261035c5760209181906001600160a01b036114c3612042565b1681526024845220549051908152f35b82853461033a578060031936011261033a575060145481516001600160801b038216815260809190911c6020820152f35b84833461035c578060031936011261035c5760209061152e611524612042565b6024359033612dce565b5160018152f35b848383346103d25760203660031901126103d25760209282916001600160a01b0361155e612042565b168252845220549051908152f35b84833461035c578160031936011261035c57600f5490516001600160a01b039091168152602090f35b84833461035c578160031936011261035c576020906030549051908152f35b84833461035c578160031936011261035c57602090602e549051908152f35b84833461035c578160031936011261035c57805190826010546115f58161213f565b808552906001908181169081156111b257506001146116205750505061114b826111559403836121f4565b6010835260209550600080516020613d668339815191525b82841061165457505050826111559461114b9282010194611139565b8054868501880152928601928101611638565b848383346103d25760203660031901126103d2573591600983101561033a575060ff611694602093612110565b541690519015158152f35b84833461035c57602036600319011261035c5760209181906001600160a01b036116c7612042565b1681526001845220549051908152f35b84833461035c578160031936011261035c57600a5490516001600160a01b039091168152602090f35b84833461035c578160031936011261035c576020906027549051908152f35b84833461035c578160031936011261035c57602090601c549051908152f35b84833461035c578160031936011261035c57602090602d549051908152f35b84833461035c578160031936011261035c5760209081549051908152f35b848383346103d2576117e9906117dd60ff84956117b061179a366120db565b9491989093808052600760205220541615612e73565b6117c56001600160a01b038216301415612eb0565b6117cd612606565b50506117d7613a30565b85612f47565b929093601154906134ab565b156117fb575082519182526020820152f35b606490602085519162461bcd60e51b8352820152601160248201527013585c9ad95d0e881a5b9cdbdb1d995b9d607a1b6044820152fd5b509150346103d257826003193601126103d2576006546001600160a01b039290918383169190338390036118a4575050806005549384167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08680a36001600160a01b0319928316176005551660065580f35b906020606492519162461bcd60e51b8352820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b84833461035c57602036600319011261035c5760209181906001600160a01b0361190f612042565b1681526017845220549051908152f35b84833461035c578160031936011261035c576020906015549051908152f35b84833461035c578160031936011261035c57602090600e549051908152f35b84833461035c578160031936011261035c576020906016549051908152f35b5090833461033a57606036600319011261033a5750610f0560209260443590602435903561238e565b84833461035c578160031936011261035c576020906011549051908152f35b84833461035c578160031936011261035c57600d5490516001600160a01b039091168152602090f35b84833461035c578160031936011261035c576020906012549051908152f35b84833461035c578160031936011261035c57602090610f05612a65565b84833461035c578160031936011261035c576020906019549051908152f35b84833461035c578160031936011261035c5760145490516001600160801b039091168152602090f35b84833461035c578160031936011261035c576020906013549051908152f35b5090833461033a57611aa1366120db565b919282611adb575b508351918252602094506001600160a01b03908116921690600080516020613d46833981519152908590a35160018152f35b6001600160a01b038481168083526001602090815287842054919892909190611b0687831015612b8f565b851692838a03611b1a575b50505050611aa9565b898552600283528885203386528352888520549060018201611b84575b5050928260209960018a94611b638a8e9961105d600080516020613d468339815191529c9a1515612bd4565b9285525283832055815220611b79858254612368565b905591878080611b11565b878210611bda57509260209960018a94611b638a8e9996611bb582600080516020613d468339815191529d9b61235b565b86895260028552898920338a5285528989205596995050509450509981949650611b37565b895162461bcd60e51b8152908101849052601860248201527745524332303a20616c6c6f77616e636520746f6f206c6f7760401b6044820152606490fd5b84833461035c578160031936011261035c57602090602a549051908152f35b908491346103d257611c483661208c565b93979496909280421161066557938693611cdf938c8c89610608968e9a8e60018060a01b03809c169c8d948587526020528c87872092835493611c8a85612dbf565b905588519660208801987f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d68a528a890152606088015216608086015260a085015260c08401528183015281526105ce816121bd565b16036106225750610337939450612dce565b84833461035c578160031936011261035c57602b5490516001600160a01b039091168152602090f35b84833461035c57602036600319011261035c5760209181906001600160a01b03611d42612042565b1681526018845220549051908152f35b84833461035c578160031936011261035c5751908152602090f35b84833461035c578160031936011261035c57602090602f549051908152f35b848383346103d257816003193601126103d257803590600982101561144f57611db361206e565b6008549093906001600160a01b03163303611e695760ff611dd384612110565b54161515931515938414611e31575050808260ff611df3611e2194612110565b54161515827feeec81de25875ce1725479bb76f720a8defdb43dea041919ae37bb4aae9847c08780a4612110565b9060ff8019835416911617905580f35b906020606492519162461bcd60e51b835282015260126024820152714d61726b65743a2073616d6520737461746560701b6044820152fd5b906020606492519162461bcd60e51b8352820152601460248201527313585c9ad95d0e881d5b985d5d1a1bdc9a5e995960621b6044820152fd5b84833461035c578060031936011261035c5760209061152e611ec3612042565b6024359033612e1c565b509150346103d25760603660031901126103d257611ee9612042565b91611ef261206e565b91611efb61207d565b9260018060a01b03948591611f1583600554163314612279565b15611fb9571692831590811591611fb1575b5015611f76575050806005549283167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08580a36001600160a01b03199182161760055560068054909116905580f35b906020606492519162461bcd60e51b835282015260156024820152744f776e61626c653a207a65726f206164647265737360581b6044820152fd5b905038611f27565b93505050501660018060a01b0319600654161760065580f35b82853461033a578060031936011261033a5750611fed612606565b825191151582526020820152f35b93505050346103d257806003193601126103d25760209261201a612042565b612022612058565b6001600160a01b0391821683526003865283832091168252845220548152f35b600435906001600160a01b0382168203610b1057565b602435906001600160a01b0382168203610b1057565b602435908115158203610b1057565b604435908115158203610b1057565b60e0906003190112610b10576001600160a01b03906004358281168103610b1057916024359081168103610b105790604435906064359060843560ff81168103610b10579060a4359060c43590565b6060906003190112610b10576001600160a01b03906004358281168103610b1057916024359081168103610b10579060443590565b6009811015612129576000526007602052604060002090565b634e487b7160e01b600052602160045260246000fd5b90600182811c9216801561216f575b602083101461215957565b634e487b7160e01b600052602260045260246000fd5b91607f169161214e565b6001600160401b03811161218c57604052565b634e487b7160e01b600052604160045260246000fd5b604081019081106001600160401b0382111761218c57604052565b61010081019081106001600160401b0382111761218c57604052565b608081019081106001600160401b0382111761218c57604052565b90601f801991011681019081106001600160401b0382111761218c57604052565b6020808252825181830181905290939260005b82811061224a57505060409293506000838284010152601f8019910116010190565b818101860151848201604001528501612228565b6001600160401b03811161218c57601f01601f191660200190565b1561228057565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b156122cb57565b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881b9bdd081d985b1a59607a1b6044820152606490fd5b8181029291811591840414171561231757565b634e487b7160e01b600052601160045260246000fd5b8115612337570490565b634e487b7160e01b600052601260045260246000fd5b604d811161231757600a0a90565b9190820391821161231757565b9190820180921161231757565b8181039291600013801582851316918412161761231757565b6014549192916123d7916123c8916123be916123b4906001600160801b03831690612304565b9060801c9061232d565b93601f5490612304565b6123d18361234d565b9061232d565b80831061249f576123eb612427918461235b565b9161242261241c612413601e5461240d6124048661234d565b60205490612368565b90612304565b6123d18461234d565b9161234d565b612375565b6509184e72a0009081810291818305149015171561231757670de0b6b3a76400009182810292818405149015171561231757801561233757600160ff1b91808314600019831416612317570590600082121561249857811461231757600003905b808211612493575090565b905090565b5090612488565b505050600090565b6001600160a01b038116600081815260176020526040812054919493929091908115612535579160409161251185946124eb612529976124e561399f565b926127aa565b815190936001600160801b039160209161250791841690612304565b920151169061232d565b81811061252d57035b9581526018602052205461287c565b9091565b50508061251a565b50509192505080918190565b51908115158203610b1057565b9190826040910312610b1057602061256583612541565b92015190565b6020808252600091601054916125808361213f565b92838284015260019081811690816000146125e357506001146125a5575b5050505090565b929350601060005280600020926000935b8585106125cf575050506040925001013880808061259e565b8054858501604001529382019381016125b6565b925050506040935060ff929192191683830152151560051b01013880808061259e565b600f546040805163d6d7d52560e01b81529290916001600160a01b03168284806126326004820161256b565b0381600080955af18015612752578194829161271f575b509284156126c257831561268857507f9f9192b5edb17356c524e08d9e025c8e2f6307e6ea52fb7968faa3081f51c3c883918260115580a25b42601355565b5162461bcd60e51b81526020600482015260146024820152734d61726b65743a20696e76616c6964207261746560601b6044820152606490fd5b919250506126d560135460125490612368565b42116126e5575060115490612682565b5162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881c985d19481d1bdbc81bdb1960621b6044820152606490fd5b9050612742919450833d851161274b575b61273a81836121f4565b81019061254e565b93909338612649565b503d612730565b508251903d90823e3d90fd5b1561276557565b60405162461bcd60e51b815260206004820152601e60248201527f4d61726b65743a2065786368616e676552617465206e6f742076616c696400006044820152606490fd5b6127b582151561275e565b60018060a01b036020816009541691600c5490600094168452601882526064604085205491604051948593849263442c159960e01b8452600484015260248301528660448301525afa918215612870578092612838575b50509061283061282761283593620186a06022540490612304565b601e5490612304565b61232d565b90565b9091506020823d8211612868575b81612853602093836121f4565b8101031261033a57505161283061282761280c565b3d9150612846565b604051903d90823e3d90fd5b61288782151561275e565b602060018060a01b0360095416916064600c54604051948593849263442c159960e01b845260048401526024830152600060448301525afa908115612927576000916128f4575b50906128306128e09260225490612304565b620186a06128f0601e5483612304565b0491565b906020823d821161291f575b8161290d602093836121f4565b8101031261033a5750516128306128ce565b3d9150612900565b6040513d6000823e3d90fd5b6001600160a01b031660008181526018602052604081205490926129569161287c565b918352601760205260408320548015612a5f578115612a5f57818110612a5f5782811015612a555760145461299f91839161105d916123b4906001600160801b03831690612304565b90620186a09283830292808404851490151715612a41576129c492916123d19161235b565b91601b5491601c54936129d78585612375565b80820291848212600160ff1b821416612a41578183051490151715612a2d5705818482019485129112908015821691151617612a195750808212612493575090565b634e487b7160e01b81526011600452602490fd5b634e487b7160e01b83526011600452602483fd5b634e487b7160e01b85526011600452602485fd5b50505050601b5490565b50505090565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03161480612b66575b15612ac0577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f000000000000000000000000000000000000000000000000000000000000000082527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a0815260c081018181106001600160401b0382111761218c5760405251902090565b507f00000000000000000000000000000000000000000000000000000000000000004614612a97565b15612b9657565b60405162461bcd60e51b815260206004820152601660248201527545524332303a2062616c616e636520746f6f206c6f7760501b6044820152606490fd5b15612bdb57565b60405162461bcd60e51b815260206004820152601660248201527545524332303a206e6f207a65726f206164647265737360501b6044820152606490fd5b51906001600160a01b0382168203610b1057565b519060ff82168203610b1057565b60058110156121295780612c4c5750565b60018103612c945760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b6044820152606490fd5b60028103612ce15760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606490fd5b600314612cea57565b60405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608490fd5b9291906fa2a8918ca85bafe22016d0b997e4df60600160ff1b038311612db35791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa15612da65781516001600160a01b03811615612da0579190565b50600190565b50604051903d90823e3d90fd5b50505050600090600390565b60001981146123175760010190565b7fe50de2333c10a9502fcb1d8ae13a51bbf423153dfc63c2b8997665b32154afc360018060a01b038092169160009083825260036020526040822094169384825260205284604082205580a4565b909160207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259160018060a01b03809416938460005260028352604060002095169485600052825280604060002055604051908152a3565b15612e7a57565b60405162461bcd60e51b815260206004820152600e60248201526d13585c9ad95d0e881c185d5cd95960921b6044820152606490fd5b15612eb757565b606460405162461bcd60e51b815260206004820152602060248201527f4d61726b65743a2063616e6e6f742065786563757465206f6e20697473656c666044820152fd5b15612f0257565b60405162461bcd60e51b815260206004820152601c60248201527f42423a20616c6c6f77616e63655368617265206e6f742076616c6964000000006044820152606490fd5b919290600090602a5485106133a357841561339b57612f6585613b6e565b9060115495612faf612f9e612f7a8584612368565b600d546001600160a01b039a919060ff90612f96908d166133e8565b16918a6135a8565b612fa9811515612efb565b8761362b565b8682169182855260209260248452604094858720612fce828254612368565b9055612fd8613485565b98612fe38286612368565b88878951612ff0816121a2565b82815201528a516001600160801b039b8c91821661332f578161301b849e8f955b1682845116613986565b168152613030828a8301941683855116613986565b8281169093525160809290921b6001600160801b03191691169081176014556016548015918215613324575b5050156132e757907f3a5151e57d3bc9798e7853034ac52293d1a0e12a2b44725e75b03b21f86477a6878c8795941692838b52601789528c6130a2838d20918254612368565b905581519081528c89820152a487600d5416803b156132685784516340c10f1960e01b8152306004820152602481018490529086908290604490829084905af180156132dd576132ca575b5087600d541690600e54918960095416865163095ea7b360e01b91828252600482015288602482015286816044818c875af180156132c0579287928a88938f9661327d575b506009548b51928352959095166001600160a01b0316600482015260248101929092529092839190829081604481015b03925af180156132735790869493929161322f575b506131a29450868a6009541692855196879586948593634d4d7cbd60e11b8552309060048601613b3f565b03925af1908115613223578391613204575b509394600a5416803b156103d257908280926004835180958193632ebe913360e21b83525af19081156131fb57506131ea575050565b6131f48291612179565b61033a5750565b513d84823e3d90fd5b61321b9150823d8411610e5957610e4981836121f4565b9050386131b4565b505051903d90823e3d90fd5b80929450859193953d831161326c575b61324981836121f4565b8101031261326857916131a293916132618694612541565b5038613177565b8580fd5b503d61323f565b86513d89823e3d90fd5b9350509290935081813d83116132b9575b61329881836121f4565b8101031261144b576131629287928a8e6132b28a95612541565b5095613132565b503d61328e565b88513d8b823e3d90fd5b6132d690959195612179565b93386130ed565b85513d88823e3d90fd5b865162461bcd60e51b815260048101879052601660248201527510908e88189bdc9c9bddc818d85c081c995858da195960521b6044820152606490fd5b11159050388061305c565b909180898301848151166133439083612304565b858551166133509161232d565b9e8f8186511661335f91612304565b91511661336b9161232d565b1061337f575b908261301b818f9594613011565b919b908c61301b6133908294612dbf565b9e5050509091613371565b509250829150565b60405162461bcd60e51b815260206004820152601b60248201527f42423a20626f72726f7720616d6f756e7420746f6f20736d616c6c00000000006044820152606490fd5b60405163313ce56760e01b602082019081526004825290613408816121a2565b5160009283928392916001600160a01b03165afa903d1561347d573d9161342e8361225e565b9261343c60405194856121f4565b83523d82602085013e5b80613472575b1561346b5760208280518101031261033a575060206128359101612c2d565b5050601290565b50602082511461344c565b606091613446565b60405190613492826121a2565b6014546001600160801b038116835260801c6020830152565b919060018060a01b0380600094168452602060178152604085205490811561359e57601881526040862054801561359757816134e5613485565b9460095416916064600c54604051948593849263442c159960e01b8452600484015260248301528b60448301525afa968715612870578097613561575b505061250761354161282761355c969798620186a06022540490612304565b9561355760018060801b03948587511690612304565b612304565b111590565b9096508187813d8311613590575b61357981836121f4565b8101031261033a5750945194612507613541613522565b503d61356f565b5050505050565b5060019450505050565b61241c906135c88561283596956135c26123d196856127aa565b906135e8565b6001600160a01b0390911660009081526018602052604090205490612304565b9182158015613623575b61249f5760018101809111612317576136119261240d6128309261234d565b6005810180911161231757600a900490565b5081156135f2565b6001600160a01b031633810361363f575050565b60008181526020906003825260409182822033835281528483832054106136a85783825260038152828220338352815282822054600101613681575050505050565b61369c9382526003815282822090338352522091825461235b565b90553880808080613597565b60649083519062461bcd60e51b82526004820152601460248201527313585c9ad95d0e881b9bdd08185c1c1c9bdd995960621b6044820152fd5b6001600160801b03918216908216039190821161231757565b9190916000602060405161370e816121a2565b82815201526020810180516001600160801b039081166137525761374b81865b8161373e818a16828951166136e2565b16865216828451166136e2565b1690529190565b61376c6137628285511687612304565b828451169061232d565b948061378861377e8486511689612304565b848751169061232d565b10613798575b8161374b9161372e565b94816137a661374b92612dbf565b9691505061378e565b60ff60265416613920576014546001600160801b031690811561391957600a54604051631848f2bf60e31b8152602093916001600160a01b03919085908290600490829086165afa80156129275785916000916138e0575b50600460405180948193631a674cc560e11b8352165afa938415612927576000946138b1575b50506138499192670de0b6b3a764000092839160295490612304565b0490818110156138a857613860602a54809261235b565b83810290808204851490151715612317576123d16138819261389c9461235b565b6027549261389660285492613557848761235b565b04612368565b90808211612493575090565b50505060275490565b81813d83116138d9575b6138c581836121f4565b8101031261144f575192506138493861382d565b503d6138bb565b909181813d8311613912575b6138f681836121f4565b8101031261035c575190828216820361033a5750849038613807565b503d6138ec565b6028549150565b600a5460405163e6abad4960e01b815290602090829060049082906001600160a01b03165afa90811561292757600091613958575090565b906020823d821161397e575b81613971602093836121f4565b8101031261033a57505190565b3d9150613964565b6001600160801b03918216908216019190821161231757565b600060206040516139af816121a2565b82815201526001600160401b03906139ce8260255460401c164261235b565b918215613a2557613a2061355791670de0b6b3a7640000613a156139f0613485565b9660018060801b03958694858a5116906301e13380613a0d6137af565b041690612304565b041682855116613986565b168252565b509050612835613485565b604051613a3c816121a2565b6025546001600160401b03908181168352818160401c16613a6460208501918083524261235b565b92831561359757602094816301e13380613a7c6137af565b041681528142168352613a8d613485565b670de0b6b3a7640000613ab260018060801b0397613557898551168787511690612304565b0495613ac381881682845116613986565b1680825296015160801b6001600160801b031990811690961760145551915192909416931692831760409190911b67ffffffffffffffff60401b16176025557f7484db546dcd57af0104c73c8a6968dfbaf5767f047cee0dadd0499ad7df81a0600080a3565b9190826040910312610b10576020825192015190565b9081526001600160a01b0391821660208201529116604082015260608101919091526000608082015260a00190565b8015613cab57602b546040805163d6d7d52560e01b815291819083906001600160a01b031681600081613ba36004820161256b565b03925af1918215613ca0576000908193613c7e575b5015613c3b57506030549081811015613c3257602f5480821115613c2857613c09926123d182613bfd613bf1613c0395602e549761235b565b61240d602d548861235b565b9261235b565b9061235b565b9081613c16575050600090565b620186a091613c2491612304565b0490565b50505050602e5490565b505050602d5490565b5162461bcd60e51b815260206004820152601f60248201527f42423a202061737365742773206f7261636c652063616c6c206661696c6564006044820152606490fd5b905081613c989293503d841161274b5761273a81836121f4565b919038613bb8565b50513d6000823e3d90fd5b50600090565b6001600160a01b0390811660008181526017602052604081205491939092828214613d34579060ff613ce9613cf293600d54166133e8565b169283916135e8565b8015613d2d5782916123d161241c613d1893876040975260246020528686205490612304565b92815260246020522054808211612493575090565b5050905090565b50505060409150602460205220549056feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae672a26469706673582212202f0236d01d67334b20bf7b7ff153b636773bb8df63027bc52fc351b6b9d39d0264736f6c63430008120033"; type BBBorrowConstructorParams = | [signer?: Signer] diff --git a/src/typechain/tapioca-bar/factories/markets/bigBang/BBCollateral__factory.ts b/src/typechain/tapioca-bar/factories/markets/bigBang/BBCollateral__factory.ts index c1a6bc5b..20f960af 100644 --- a/src/typechain/tapioca-bar/factories/markets/bigBang/BBCollateral__factory.ts +++ b/src/typechain/tapioca-bar/factories/markets/bigBang/BBCollateral__factory.ts @@ -72,13 +72,13 @@ const _abi = [ { indexed: true, internalType: "address", - name: "_oldVal", + name: "oldVal", type: "address", }, { indexed: true, internalType: "address", - name: "_newVal", + name: "newVal", type: "address", }, ], @@ -142,6 +142,25 @@ const _abi = [ name: "ExchangeRateDurationUpdated", type: "event", }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "address", + name: "oldVal", + type: "address", + }, + { + indexed: true, + internalType: "address", + name: "newVal", + type: "address", + }, + ], + name: "LeverageExecutorSet", + type: "event", + }, { anonymous: false, inputs: [ @@ -523,6 +542,37 @@ const _abi = [ name: "UpdateMinMaxMintFee", type: "event", }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "uint256", + name: "oldMin", + type: "uint256", + }, + { + indexed: true, + internalType: "uint256", + name: "newMin", + type: "uint256", + }, + { + indexed: true, + internalType: "uint256", + name: "oldMax", + type: "uint256", + }, + { + indexed: false, + internalType: "uint256", + name: "newMax", + type: "uint256", + }, + ], + name: "UpdateMinMaxMintRange", + type: "event", + }, { inputs: [], name: "DOMAIN_SEPARATOR", @@ -998,6 +1048,19 @@ const _abi = [ stateMutability: "view", type: "function", }, + { + inputs: [], + name: "leverageExecutor", + outputs: [ + { + internalType: "contract ILeverageExecutor", + name: "", + type: "address", + }, + ], + stateMutability: "view", + type: "function", + }, { inputs: [], name: "liquidationBonusAmount", @@ -1076,6 +1139,19 @@ const _abi = [ stateMutability: "view", type: "function", }, + { + inputs: [], + name: "maxMintFeeStart", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, { inputs: [], name: "minDebtRate", @@ -1115,6 +1191,19 @@ const _abi = [ stateMutability: "view", type: "function", }, + { + inputs: [], + name: "minMintFeeStart", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, { inputs: [ { @@ -1403,6 +1492,19 @@ const _abi = [ stateMutability: "nonpayable", type: "function", }, + { + inputs: [ + { + internalType: "contract ILeverageExecutor", + name: "_executor", + type: "address", + }, + ], + name: "setLeverageExecutor", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, { inputs: [ { @@ -1689,7 +1791,7 @@ const _abi = [ ] as const; const _bytecode = - "0x61014080604052346200018a5762000017816200018f565b600f81526001602082016e546170696f63612042696742616e6760881b8152602060405162000046816200018f565b8381520192603160f81b845251902091208160e052610100918183524660a0526040519160208301907f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f92838352604085015260608401524660808401523060a084015260a0835260c083019280841060018060401b03851117620001745760408490525190206080523060c052610120908152600580546001600160a01b0319163390811790915560007f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a362013880601b5562015f90601c55612710601d55612ee06020556103e8602d556133559283620001ac843960805183612942015260a05183612a0d015260c0518361290c015260e05183612991015251826129b70152518161296e0152f35b634e487b7160e01b600052604160045260246000fd5b600080fd5b604081019081106001600160401b03821117620001745760405256fe608080604052600436101561001357600080fd5b600090813560e01c908162a02a2014611f095750806302ce728f14611ee0578063078dfbe714611de1578063095ea7b314611dba5780630c4e84f014611c9e57806318160ddd14611c825780631c9e379b14611c495780631d4d3a5d14611c205780631da8bf1014611b4c5780631fb8f81a14611b2e57806323b872dd146119a7578063331960ff1461198957806334ce998a1461196057806334d441d0146119425780633644e5151461192757806337b6b7b91461190957806338d52e0f146118e05780633ba0b9a9146118c25780633f741adb1461189d57806340626d8b1461187f57806344de240a14611861578063473e3ce71461184357806348e4163e1461180a5780634e71e0c81461175c578063529898f21461173f578063542afda31461172157806357935462146117035780636b19ad16146116e55780636c3d8b8f146116bc57806370a0823114611683578063727785471461164b57806374645ff3146115ba57806374c9e4811461159c5780637dc0d1d0146115735780637ecebe001461153a5780637fa0b84e146115085780638285ef40146114d657806387b279371461149d5780638c5d0ed31461147f5780638da5cb5b14611456578063910dd7c814611221578063932bc4f81461114557806399a970281461111d5780639e15e89f146110e2578063a9059cbb14610fff578063b0e21e8a14610fe1578063b27c0e7414610fb0578063b7113f1914610f8d578063bb4cfe3b14610f6f578063bde39c5d14610f51578063c1ad5c8d14610f2e578063cce19f8114610dae578063ce8849ed14610d85578063d3fb2a381461091d578063d505accf1461077c578063d8dfeb4514610753578063dd62ed3e14610704578063de406577146106db578063e0996cb6146106bd578063e30c397814610694578063e9a4925214610363578063ea64dd5614610345578063eec0f42e14610327578063f791395d146103095763f8ba4cff146102eb57600080fd5b346103065780600319360112610306576103036131e6565b80f35b80fd5b50346103065780600319360112610306576020602754604051908152f35b50346103065780600319360112610306576020600c54604051908152f35b50346103065780600319360112610306576020601f54604051908152f35b50346103065760a03660031901126103065761037d611f51565b610385611f67565b9061038e611f8c565b608435926001600160a01b039081169290916064356103af30861415612cfa565b6002600052602090600782526103cd60ff6040600020541615612d45565b8615610616575b6103de8785612d82565b8615610595575b5084875260188152604087206103fc878254612246565b905560155461040b8782612246565b601555600c549088841561050f575082866009541692604460405180958193627eeac760e11b835230600484015260248301525afa80156105045789906104d0575b6104579250612239565b861161049857505b15610493575080600954165b167f9ed03113de523cebfe5e49d5f8e12894b1c0d42ce805990461726444c90eab878480a480f35b61046b565b6064906040519062461bcd60e51b825260048201526011602482015270084d2ce84c2dcce7440e8dede40daeac6d607b1b6044820152fd5b508282813d83116104fd575b6104e68183612103565b810103126104f857610457915161044d565b600080fd5b503d6104dc565b6040513d8b823e3d90fd5b9250508460095416803b1561059157604051630208d92960e11b81526001600160a01b038616600482015230602482015260448101929092526064820188905282908290608490829084905af180156105865761056e575b505061045f565b61057790612088565b610582578538610567565b8580fd5b6040513d84823e3d90fd5b8280fd5b908096508460095416916064600c546040519485938492638eb22cdd60e01b8452600484015260248301528b60448301525afa90811561060b5787916105de575b5094386103e5565b90508581813d8311610604575b6105f58183612103565b810103126104f85751386105d6565b503d6105eb565b6040513d89823e3d90fd5b9550836009541681600c54606460405180948193638eb22cdd60e01b835260048301528b60248301528c60448301525afa90811561068957889161065c575b50956103d4565b90508181813d8311610682575b6106738183612103565b810103126104f8575138610655565b503d610669565b6040513d8a823e3d90fd5b50346103065780600319360112610306576006546040516001600160a01b039091168152602090f35b50346103065780600319360112610306576020601d54604051908152f35b50346103065780600319360112610306576009546040516001600160a01b039091168152602090f35b50346103065760403660031901126103065761071e611f51565b6040610728611f67565b9260018060a01b03809316815260026020522091166000526020526020604060002054604051908152f35b5034610306578060031936011261030657600b546040516001600160a01b039091168152602090f35b50346103065761078b36611f9b565b9183919395949542116108d85760018060a01b039283881694856000526004602052604060002092835460001981146108c25761086e95610866956001830190556040519060208201927f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e2668452600060408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e0815261082a816120cc565b519020610835612909565b9060405190602082019261190160f01b8452602283015260428201526042815261085e816120e8565b519020612bd0565b919091612ad1565b160361087d5761030392612ca3565b60405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152606490fd5b634e487b7160e01b600052601160045260246000fd5b60405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b503461030657610160366003190112610306576001600160a01b0360043581811690819003610591576024916001600160401b0383358181116105825736602382011215610582578060040135918211610582573685838301011161058257604435938385168095036104f8576109998460055416331461216d565b80610d47575b508482610bed575b50505081610bad575b505060643580610b95575b5060843580610b7d575b5060a43580610b66575b5060c43580610b42575b5060e43580610b1e575b506101043580610aed575b506101243580610a7a575b50610144359081610a08578280f35b601e548210610a1b5750601f5538808280f35b60849060326040519162461bcd60e51b8352602060048401528201527f4d61726b65743a206c69717569646174696f6e436f6c6c61746572616c697a616044820152711d1a5bdb94985d19481d1bdbc81cdb585b1b60721b6064820152fd5b610a89620186a08211156121b8565b601f548111610a9b57601e55386109f9565b60405162461bcd60e51b8152602060048201526025818401527f4d61726b65743a20636f6c6c61746572616c697a6174696f6e5261746520746f6044820152646f2062696760d81b6064820152608490fd5b806016547fae6e0ab3b95f0a53ff9660a390ccedcbbf1f2355dce974a9841af106fddcfaba8580a3601655386109ee565b610b2c620186a082106121b8565b610b39601b5482116121b8565b601c55386109e3565b610b50620186a082106121b8565b610b5d601c5482106121b8565b601b55386109d9565b610b74620186a082106121b8565b601d55386109cf565b610b8c620186a08211156121b8565b601a55386109c5565b610ba4620186a08211156121b8565b601955386109bb565b816008549182167f5a62d22209e370e38eea92cfddcd228e656e6ec139243392a760a7769f5877fd8680a36001600160a01b0319161760085538806109b0565b8291610bfa60105461204e565b601f8111610ce8575b508790601f8411600114610c68578893610c5b575b5050508160011b916000199060031b1c1916176010555b7fa6f004921c944d4b8bf6e38462b00f36a58d62495d56b51f571ab78f732c98158480a13880846109a7565b0101359050843880610c18565b60108952601f198416945060008051602061330083398151915292509087908960205b878210610cc95750508460019610610cad575b50505050811b01601055610c2f565b60001960f88660031b161c199201013516905538808681610c9e565b8285019093013585556001949094019389929182019190810190610c8b565b601089529092509050600080516020613300833981519152601f840160051c810160208510610d40575b91849391601f8994920160051c01905b818110610d2f5750610c03565b898155859450889350600101610d22565b5080610d12565b600f80546001600160a01b0319169190911790557f0b2d6eb667d0522c3eb86e4288afecae6c11591ffd1345d4d12407e0598bca9b8680a13861099f565b50346103065780600319360112610306576008546040516001600160a01b039091168152602090f35b50346103065780610dbe36611fea565b600384929394526007602052610ddb60ff60408420541615612d45565b610de36124dc565b5050610ded6131e6565b6001600160a01b038381169390610e0630861415612cfa565b610e108387612d82565b8281871695868652601860205260408620610e2c838254612239565b9055610e3a82601554612239565b601555604051967f8ad4d3ff00da092c7ad9a573ea4f5f6a3dffc6712dc06d3f78f49b862297c4028780a46009541690600c5492823b15610f2a57630208d92960e11b86523060048701526001600160a01b03919091166024860152604485019290925260648401919091528290608490829084905af18015610f1f57610f0a575b50601154610ec991612e60565b15610ed15780f35b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881a5b9cdbdb1d995b9d607a1b6044820152606490fd5b91610f18610ec99293612088565b9190610ebc565b6040513d85823e3d90fd5b8480fd5b50346103065780600319360112610306576020610f49612f62565b604051908152f35b50346103065780600319360112610306576020602854604051908152f35b50346103065780600319360112610306576020601e54604051908152f35b5034610306578060031936011261030657602060ff602554166040519015158152f35b503461030657806003193601126103065760406024548151906001600160401b03908181168352831c166020820152f35b50346103065780600319360112610306576020601a54604051908152f35b503461030657604036600319011261030657611019611f51565b602435809281158015906110d0575b611060575b50506040519182526001600160a01b03169033906000805160206132e083398151915290602090a3602060405160018152f35b3381526001602052604081205461107983821015612a33565b6001600160a01b0384169033829003611094575b505061102d565b6040936110ab916110a6841515612a78565b612239565b3383526001602052838320558152206110c5838254612246565b90558138808061108d565b50336001600160a01b03841614611028565b503461030657604036600319011261030657606061110a611101611f51565b60243590612385565b9060405192835260208301526040820152f35b5034610306576040366003190112610306576020610f4961113c611f51565b602435906127d7565b503461030657806003193601126103065760405181602b546111668161204e565b808452906001908181169081156111f957506001146111a0575b61119c8461119081880382612103565b60405191829182612124565b0390f35b602b8352602094507f11c44e4875b74d31ff9fd779bf2566af7bd15b87fc985d01f5094b89e3669e4f5b8284106111e6575050508161119c936111909282010193611180565b80548585018701529285019281016111ca565b61119c96506111909450602092508593915060ff191682840152151560051b82010193611180565b5034610306576040366003190112610306576004356001600160401b0380821161059157366023830112156105915781600401359081116114425782604051926112756020601f19601f8601160185612103565b82845260208401923660248284010111610591578060246020930185378401015260243561ffff8116810361143e57610100918284805181010312610f2a576112bd906124cf565b6112c960408501612abd565b916112d660608601612abd565b9460808101519460a08201519260c08301519160ff8316830361143a5760e0840151930151938042116108d8578515611413577f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e266915b6001600160a01b0388168b52600460205260408b208054919060001983146113ff579161ffff6113bc9896949261086698969460018401905560405194602086015216604084015260018060a01b038a16606084015260018060a01b038c1660808401528a60a084015260c083015260e082015260e081526113ad816120cc565b60208151910120610835612909565b6001600160a01b0383811691160361087d57156113e957610303926001600160a01b039081169116612ca3565b610303926001600160a01b039081169116612c55565b634e487b7160e01b8d52601160045260248dfd5b7f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d69161132c565b8980fd5b8380fd5b634e487b7160e01b83526041600452602483fd5b50346103065780600319360112610306576005546040516001600160a01b039091168152602090f35b50346103065780600319360112610306576020601b54604051908152f35b5034610306576020366003190112610306576020906040906001600160a01b036114c5611f51565b168152602383522054604051908152f35b5034610306578060031936011261030657601454604080516001600160801b038316815260809290921c602083015290f35b50346103065760403660031901126103065761152f611525611f51565b6024359033612c55565b602060405160018152f35b5034610306576020366003190112610306576020906040906001600160a01b03611562611f51565b168152600483522054604051908152f35b5034610306578060031936011261030657600f546040516001600160a01b039091168152602090f35b50346103065780600319360112610306576020602d54604051908152f35b5034610306578060031936011261030657604051816010546115db8161204e565b808452906001908181169081156111f957506001146116045761119c8461119081880382612103565b60108352602094506000805160206133008339815191525b828410611638575050508161119c936111909282010193611180565b805485850187015292850192810161161c565b50346103065760203660031901126103065760043590600982101561030657602060ff6116778461201f565b54166040519015158152f35b5034610306576020366003190112610306576020906040906001600160a01b036116ab611f51565b168152600183522054604051908152f35b5034610306578060031936011261030657600a546040516001600160a01b039091168152602090f35b50346103065780600319360112610306576020602654604051908152f35b50346103065780600319360112610306576020601c54604051908152f35b50346103065780600319360112610306576020602c54604051908152f35b503461030657806003193601126103065760208054604051908152f35b50346103065780600319360112610306576006546001600160a01b0390818116338190036117c657806005549384167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08680a36001600160a01b0319928316176005551660065580f35b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b5034610306576020366003190112610306576020906040906001600160a01b03611832611f51565b168152601783522054604051908152f35b50346103065780600319360112610306576020601554604051908152f35b50346103065780600319360112610306576020600e54604051908152f35b50346103065780600319360112610306576020601654604051908152f35b5034610306576060366003190112610306576020610f4960443560243560043561226c565b50346103065780600319360112610306576020601154604051908152f35b5034610306578060031936011261030657600d546040516001600160a01b039091168152602090f35b50346103065780600319360112610306576020601254604051908152f35b50346103065780600319360112610306576020610f49612909565b50346103065780600319360112610306576020601954604051908152f35b50346103065780600319360112610306576014546040516001600160801b039091168152602090f35b50346103065780600319360112610306576020601354604051908152f35b5034610306576119b636611fea565b9192826119f2575b506040519182526001600160a01b039081169216906000805160206132e083398151915290602090a3602060405160018152f35b6001600160a01b03848116808352600160209081526040842054928690611a1b82861015612a33565b861693848403611a30575b50505050506119be565b838652600283526040808720338852845286205460018101611a9a575b5092600160209693611a7887946040976110a66000805160206132e08339815191529c9a1515612a78565b9285525283832055815220611a8e858254612246565b90559138808581611a26565b90918110611aee5792600160209693611a788a6000805160206132e08339815191529a9895611acb8260409a612239565b86895260028552898920338a528552898920559497509497995050939650611a4d565b60405162461bcd60e51b815260048101849052601860248201527745524332303a20616c6c6f77616e636520746f6f206c6f7760401b6044820152606490fd5b50346103065780600319360112610306576020602954604051908152f35b503461030657611b5b36611f9b565b908395949542116108d8576001600160a01b03878116808a52600460205260408a2080549196929592906000198314611c0c5782611bfd9694928d92600161086698960190556040519160208301937f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d6855260408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e0815261082a816120cc565b160361087d5761030392612c55565b634e487b7160e01b8c52601160045260248cfd5b5034610306578060031936011261030657602a546040516001600160a01b039091168152602090f35b5034610306576020366003190112610306576020906040906001600160a01b03611c71611f51565b168152601883522054604051908152f35b5034610306578060031936011261030657602090604051908152f35b5034610306576040366003190112610306576004356009811015611db657611cc4611f7d565b6008549091906001600160a01b03163303611d7a5760ff611ce48261201f565b54161515911515918214611d4057808260ff611d02611d309461201f565b54161515827feeec81de25875ce1725479bb76f720a8defdb43dea041919ae37bb4aae9847c08780a461201f565b9060ff8019835416911617905580f35b60405162461bcd60e51b81526020600482015260126024820152714d61726b65743a2073616d6520737461746560701b6044820152606490fd5b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881d5b985d5d1a1bdc9a5e995960621b6044820152606490fd5b5080fd5b50346103065760403660031901126103065761152f611dd7611f51565b6024359033612ca3565b503461030657606036600319011261030657611dfb611f51565b611e03611f7d565b611e0b611f8c565b9060018060a01b03928391611e258360055416331461216d565b15611ec9571690811590811591611ec1575b5015611e8457806005549283167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08580a36001600160a01b03199182161760055560068054909116905580f35b60405162461bcd60e51b81526020600482015260156024820152744f776e61626c653a207a65726f206164647265737360581b6044820152606490fd5b905038611e37565b9150501660018060a01b0319600654161760065580f35b50346103065780600319360112610306576040611efb6124dc565b825191151582526020820152f35b905034611db6576040366003190112611db6576040602092611f29611f51565b611f31611f67565b6001600160a01b0391821683526003865283832091168252845220548152f35b600435906001600160a01b03821682036104f857565b602435906001600160a01b03821682036104f857565b6024359081151582036104f857565b6044359081151582036104f857565b60e09060031901126104f8576001600160a01b039060043582811681036104f8579160243590811681036104f85790604435906064359060843560ff811681036104f8579060a4359060c43590565b60609060031901126104f8576001600160a01b039060043582811681036104f8579160243590811681036104f8579060443590565b6009811015612038576000526007602052604060002090565b634e487b7160e01b600052602160045260246000fd5b90600182811c9216801561207e575b602083101461206857565b634e487b7160e01b600052602260045260246000fd5b91607f169161205d565b6001600160401b03811161209b57604052565b634e487b7160e01b600052604160045260246000fd5b604081019081106001600160401b0382111761209b57604052565b61010081019081106001600160401b0382111761209b57604052565b608081019081106001600160401b0382111761209b57604052565b90601f801991011681019081106001600160401b0382111761209b57604052565b6020808252825181830181905290939260005b82811061215957505060409293506000838284010152601f8019910116010190565b818101860151848201604001528501612137565b1561217457565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b156121bf57565b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881b9bdd081d985b1a59607a1b6044820152606490fd5b818102929181159184041417156108c257565b8115612215570490565b634e487b7160e01b600052601260045260246000fd5b604d81116108c257600a0a90565b919082039182116108c257565b919082018092116108c257565b818103929160001380158285131691841216176108c257565b6014549192916122b5916122a69161229c91612292906001600160801b038316906121f8565b9060801c9061220b565b93601f54906121f8565b6122af8361222b565b9061220b565b80831061237d576122c96123059184612239565b916123006122fa6122f1601e546122eb6122e28661222b565b60205490612246565b906121f8565b6122af8461222b565b9161222b565b612253565b6509184e72a000908181029181830514901517156108c257670de0b6b3a7640000918281029281840514901517156108c257801561221557600160ff1b918083146000198314166108c257059060008212156123765781146108c257600003905b808211612371575090565b905090565b5090612366565b505050600090565b6001600160a01b039081166000818152601760209081526040822054929594939192909181156124c2576123b7613152565b906123c38615156126d4565b6009541683600c54898752601882526064604088205491604051948593849263442c159960e01b8452600484015260248301528960448301525afa9081156124b7578591612488575b509285949261246860189361244361247c9961243e61243560409a620186a060215404906121f8565b601e54906121f8565b61220b565b815190936001600160801b0391869161245e918416906121f8565b920151169061220b565b81811061248057035b978352522054612720565b9091565b505082612471565b90508381813d83116124b0575b61249f8183612103565b81010312610f2a575161247c61240c565b503d612495565b6040513d87823e3d90fd5b5050509192505080918190565b519081151582036104f857565b60018060a01b03600f54169060409081519263d6d7d52560e01b8452828460209283600483015260006010546125118161204e565b908160248601526001908582821691826000146126b057505060011461266c575b5050600083809203925af18015612661576000948591612626575b509284156125c857831561258e57505081601155817f9f9192b5edb17356c524e08d9e025c8e2f6307e6ea52fb7968faa3081f51c3c8600080a25b42601355565b60649250519062461bcd60e51b8252600482015260146024820152734d61726b65743a20696e76616c6964207261746560601b6044820152fd5b909192506125db60135460125490612246565b42116125ec57505060115490612588565b60649250519062461bcd60e51b82526004820152601460248201527313585c9ad95d0e881c985d19481d1bdbc81bdb1960621b6044820152fd5b9490508385813d831161265a575b61263e8183612103565b81010312610306575080612651856124cf565b9401513861254d565b503d612634565b83513d6000823e3d90fd5b915060106000528560002091866000935b83851061269557505050508201604401600083612532565b80548c8601604401528a97508b96509301928790820161267d565b8195506000949193506044925060ff191682840152151560051b8201019250612532565b156126db57565b60405162461bcd60e51b815260206004820152601e60248201527f4d61726b65743a2065786368616e676552617465206e6f742076616c696400006044820152606490fd5b61272b8215156126d4565b602060018060a01b0360095416916064600c54604051948593849263442c159960e01b845260048401526024830152600060448301525afa9081156127cb57600091612798575b509061243e61278492602154906121f8565b620186a0612794601e54836121f8565b0491565b906020823d82116127c3575b816127b160209383612103565b8101031261030657505161243e612772565b3d91506127a4565b6040513d6000823e3d90fd5b6001600160a01b031660008181526018602052604081205490926127fa91612720565b9183526017602052604083205480156129035781156129035781811061290357828110156128f9576014546128439183916110a691612292906001600160801b038316906121f8565b90620186a092838302928084048514901517156128e55761286892916122af91612239565b91601b5491601c549361287b8585612253565b80820291848212600160ff1b8214166128e55781830514901517156128d157058184820194851291129080158216911516176128bd5750808212612371575090565b634e487b7160e01b81526011600452602490fd5b634e487b7160e01b83526011600452602483fd5b634e487b7160e01b85526011600452602485fd5b50505050601b5490565b50505090565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03161480612a0a575b15612964577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f000000000000000000000000000000000000000000000000000000000000000082527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a0815260c081018181106001600160401b0382111761209b5760405251902090565b507f0000000000000000000000000000000000000000000000000000000000000000461461293b565b15612a3a57565b60405162461bcd60e51b815260206004820152601660248201527545524332303a2062616c616e636520746f6f206c6f7760501b6044820152606490fd5b15612a7f57565b60405162461bcd60e51b815260206004820152601660248201527545524332303a206e6f207a65726f206164647265737360501b6044820152606490fd5b51906001600160a01b03821682036104f857565b60058110156120385780612ae25750565b60018103612b2a5760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b6044820152606490fd5b60028103612b775760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606490fd5b600314612b8057565b60405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608490fd5b9291906fa2a8918ca85bafe22016d0b997e4df60600160ff1b038311612c495791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa15612c3c5781516001600160a01b03811615612c36579190565b50600190565b50604051903d90823e3d90fd5b50505050600090600390565b7fe50de2333c10a9502fcb1d8ae13a51bbf423153dfc63c2b8997665b32154afc360018060a01b038092169160009083825260036020526040822094169384825260205284604082205580a4565b909160207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259160018060a01b03809416938460005260028352604060002095169485600052825280604060002055604051908152a3565b15612d0157565b606460405162461bcd60e51b815260206004820152602060248201527f4d61726b65743a2063616e6e6f742065786563757465206f6e20697473656c666044820152fd5b15612d4c57565b60405162461bcd60e51b815260206004820152600e60248201526d13585c9ad95d0e881c185d5cd95960921b6044820152606490fd5b6001600160a01b0316338103612d96575050565b6000818152602090600382526040918282203383528152848383205410612e005783825260038152828220338352815282822054600101612dd9575b5050505050565b612df493825260038152828220903383525220918254612239565b90553880808080612dd2565b60649083519062461bcd60e51b82526004820152601460248201527313585c9ad95d0e881b9bdd08185c1c1c9bdd995960621b6044820152fd5b60405190612e47826120b1565b6014546001600160801b038116835260801c6020830152565b919060018060a01b03806000941684526020601781526040852054908115612f58576018815260408620548015612dd25781612e9a612e3a565b9460095416916064600c54604051948593849263442c159960e01b8452600484015260248301528b60448301525afa968715612f4c578097612f16575b505061245e612ef6612435612f11969798620186a060215404906121f8565b95612f0c60018060801b039485875116906121f8565b6121f8565b111590565b9096508187813d8311612f45575b612f2e8183612103565b81010312610306575094519461245e612ef6612ed7565b503d612f24565b604051903d90823e3d90fd5b5060019450505050565b60ff602554166130d3576014546001600160801b03169081156130cc57600a54604051631848f2bf60e31b8152602093916001600160a01b03919085908290600490829086165afa80156127cb578591600091613093575b50600460405180948193631a674cc560e11b8352165afa9384156127cb57600094613064575b5050612ffc9192670de0b6b3a7640000928391602854906121f8565b04908181101561305b576130136029548092612239565b838102908082048514901517156108c2576122af6130349261304f94612239565b6026549261304960275492612f0c8487612239565b04612246565b90808211612371575090565b50505060265490565b81813d831161308c575b6130788183612103565b8101031261143e57519250612ffc38612fe0565b503d61306e565b909181813d83116130c5575b6130a98183612103565b81010312611db657519082821682036103065750849038612fba565b503d61309f565b6027549150565b600a5460405163e6abad4960e01b815290602090829060049082906001600160a01b03165afa9081156127cb5760009161310b575090565b906020823d8211613131575b8161312460209383612103565b8101031261030657505190565b3d9150613117565b6001600160801b0391821690821601919082116108c257565b60006020604051613162816120b1565b82815201526001600160401b03906131818260245460401c1642612239565b9182156131d8576131d3612f0c91670de0b6b3a76400006131c86131a3612e3a565b9660018060801b03958694858a5116906301e133806131c0612f62565b0416906121f8565b041682855116613139565b168252565b5090506131e3612e3a565b90565b6040516131f2816120b1565b6024546001600160401b03908181168352818160401c1661321a602085019180835242612239565b928315612dd257602094816301e13380613232612f62565b041681528142168352613243612e3a565b670de0b6b3a764000061326860018060801b0397612f0c8985511687875116906121f8565b049561327981881682845116613139565b1680825296015160801b6001600160801b031990811690961760145551915192909416931692831760409190911b67ffffffffffffffff60401b16176024557f7484db546dcd57af0104c73c8a6968dfbaf5767f047cee0dadd0499ad7df81a0600080a356feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae672a2646970667358221220bef39f6b490096eaa1e8d926eac411159da5d2d4f5f5ff5f896ffa34eabf6b2b64736f6c63430008120033"; + "0x61014080604052346200018a5762000017816200018f565b600f81526001602082016e546170696f63612042696742616e6760881b8152602060405162000046816200018f565b8381520192603160f81b845251902091208160e052610100918183524660a0526040519160208301907f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f92838352604085015260608401524660808401523060a084015260a0835260c083019280841060018060401b03851117620001745760408490525190206080523060c052610120908152600580546001600160a01b0319163390811790915560007f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a362013880601b5562015f90601c55612710601d55612ee06020556103e8602e556134549283620001ac843960805183612a41015260a05183612b0c015260c05183612a0b015260e05183612a9001525182612ab601525181612a6d0152f35b634e487b7160e01b600052604160045260246000fd5b600080fd5b604081019081106001600160401b03821117620001745760405256fe608080604052600436101561001357600080fd5b600090813560e01c908162a02a20146120085750806302ce728f14611fdf578063078dfbe714611ee0578063095ea7b314611eb95780630c4e84f014611d9d5780630f8b29ea14611d7f57806318160ddd14611d635780631c9e379b14611d2a5780631d4d3a5d14611d015780631da8bf1014611c2d5780631fb8f81a14611c0f57806323b872dd14611a88578063331960ff14611a6a57806334ce998a14611a4157806334d441d014611a235780633644e51514611a0857806337b6b7b9146119ea57806338d52e0f146119c15780633ba0b9a9146119a35780633f741adb1461197e57806340626d8b1461196057806344de240a14611942578063473e3ce71461192457806348e4163e146118eb5780634e71e0c81461183d578063529898f214611820578063542afda31461180257806357935462146117e45780636b19ad16146117c65780636c3d8b8f1461179d57806370a0823114611764578063727785471461172c57806374645ff31461169b57806374c9e4811461167d578063790c84671461165f5780637dc0d1d0146116365780637ecebe00146115fd5780637fa0b84e146115cb5780638285ef401461159957806387b27937146115605780638c5d0ed3146115425780638da5cb5b14611519578063910dd7c8146112e4578063932bc4f81461120857806399a97028146111e05780639e15e89f146111a5578063a9059cbb146110c2578063b0e21e8a146110a4578063b27c0e7414611073578063b7113f1914611050578063bb4cfe3b14611032578063bde39c5d14611014578063c1ad5c8d14610ff1578063cce19f8114610e71578063ce8849ed14610e48578063d3fb2a38146109e0578063d505accf1461083f578063d8dfeb4514610816578063da863f0e146107ed578063dd62ed3e1461079e578063de40657714610775578063e0996cb614610757578063e30c39781461072e578063e9a4925214610406578063ea64dd56146103e8578063eec0f42e146103ca578063ef2b234a14610353578063f791395d146103355763f8ba4cff1461031757600080fd5b3461033257806003193601126103325761032f6132e5565b80f35b80fd5b50346103325780600319360112610332576020602854604051908152f35b5034610332576020366003190112610332576004356001600160a01b03818116918290036103c65761038a8160055416331461226c565b816021549182167ffb4fd7114609dd603b57adbc2082205bfbbcabf9265c4b437b472f5c592b8cd78580a36001600160a01b0319161760215580f35b8280fd5b50346103325780600319360112610332576020600c54604051908152f35b50346103325780600319360112610332576020601f54604051908152f35b50346103325760a036600319011261033257610420612050565b610428612066565b9061043161208b565b608435926001600160a01b0390811692909160643561045230861415612df9565b60026000526020906007825261047060ff6040600020541615612e44565b86156106b0575b6104818785612e81565b861561062f575b50848752601881526040872061049f878254612345565b90556015546104ae8782612345565b601555600c54908884156105ad575082866009541692604460405180958193627eeac760e11b835230600484015260248301525afa80156105a257899061056e575b6104fa9250612338565b861161053b57505b15610536575080600954165b167f9ed03113de523cebfe5e49d5f8e12894b1c0d42ce805990461726444c90eab878480a480f35b61050e565b6064906040519062461bcd60e51b82526004820152600c60248201526b084847440e8dede40daeac6d60a31b6044820152fd5b508282813d831161059b575b6105848183612202565b81010312610596576104fa91516104f0565b600080fd5b503d61057a565b6040513d8b823e3d90fd5b9250508460095416803b156103c657604051630208d92960e11b81526001600160a01b038616600482015230602482015260448101929092526064820188905282908290608490829084905af180156106245761060c575b5050610502565b61061590612187565b610620578538610605565b8580fd5b6040513d84823e3d90fd5b908096508460095416916064600c546040519485938492638eb22cdd60e01b8452600484015260248301528b60448301525afa9081156106a5578791610678575b509438610488565b90508581813d831161069e575b61068f8183612202565b81010312610596575138610670565b503d610685565b6040513d89823e3d90fd5b9550836009541681600c54606460405180948193638eb22cdd60e01b835260048301528b60248301528c60448301525afa9081156107235788916106f6575b5095610477565b90508181813d831161071c575b61070d8183612202565b810103126105965751386106ef565b503d610703565b6040513d8a823e3d90fd5b50346103325780600319360112610332576006546040516001600160a01b039091168152602090f35b50346103325780600319360112610332576020601d54604051908152f35b50346103325780600319360112610332576009546040516001600160a01b039091168152602090f35b5034610332576040366003190112610332576107b8612050565b60406107c2612066565b9260018060a01b03809316815260026020522091166000526020526020604060002054604051908152f35b50346103325780600319360112610332576021546040516001600160a01b039091168152602090f35b5034610332578060031936011261033257600b546040516001600160a01b039091168152602090f35b50346103325761084e3661209a565b91839193959495421161099b5760018060a01b039283881694856000526004602052604060002092835460001981146109855761093195610929956001830190556040519060208201927f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e2668452600060408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e081526108ed816121cb565b5190206108f8612a08565b9060405190602082019261190160f01b84526022830152604282015260428152610921816121e7565b519020612ccf565b919091612bd0565b16036109405761032f92612da2565b60405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152606490fd5b634e487b7160e01b600052601160045260246000fd5b60405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b503461033257610160366003190112610332576001600160a01b03600435818116908190036103c6576024916001600160401b03833581811161062057366023820112156106205780600401359182116106205736858383010111610620576044359383851680950361059657610a5c8460055416331461226c565b80610e0a575b508482610cb0575b50505081610c70575b505060643580610c58575b5060843580610c40575b5060a43580610c29575b5060c43580610c05575b5060e43580610be1575b506101043580610bb0575b506101243580610b3d575b50610144359081610acb578280f35b601e548210610ade5750601f5538808280f35b60849060326040519162461bcd60e51b8352602060048401528201527f4d61726b65743a206c69717569646174696f6e436f6c6c61746572616c697a616044820152711d1a5bdb94985d19481d1bdbc81cdb585b1b60721b6064820152fd5b610b4c620186a08211156122b7565b601f548111610b5e57601e5538610abc565b60405162461bcd60e51b8152602060048201526025818401527f4d61726b65743a20636f6c6c61746572616c697a6174696f6e5261746520746f6044820152646f2062696760d81b6064820152608490fd5b806016547fae6e0ab3b95f0a53ff9660a390ccedcbbf1f2355dce974a9841af106fddcfaba8580a360165538610ab1565b610bef620186a082106122b7565b610bfc601b5482116122b7565b601c5538610aa6565b610c13620186a082106122b7565b610c20601c5482106122b7565b601b5538610a9c565b610c37620186a082106122b7565b601d5538610a92565b610c4f620186a08211156122b7565b601a5538610a88565b610c67620186a08211156122b7565b60195538610a7e565b816008549182167f5a62d22209e370e38eea92cfddcd228e656e6ec139243392a760a7769f5877fd8680a36001600160a01b031916176008553880610a73565b8291610cbd60105461214d565b601f8111610dab575b508790601f8411600114610d2b578893610d1e575b5050508160011b916000199060031b1c1916176010555b7fa6f004921c944d4b8bf6e38462b00f36a58d62495d56b51f571ab78f732c98158480a1388084610a6a565b0101359050843880610cdb565b60108952601f19841694506000805160206133ff83398151915292509087908960205b878210610d8c5750508460019610610d70575b50505050811b01601055610cf2565b60001960f88660031b161c199201013516905538808681610d61565b8285019093013585556001949094019389929182019190810190610d4e565b6010895290925090506000805160206133ff833981519152601f840160051c810160208510610e03575b91849391601f8994920160051c01905b818110610df25750610cc6565b898155859450889350600101610de5565b5080610dd5565b600f80546001600160a01b0319169190911790557f0b2d6eb667d0522c3eb86e4288afecae6c11591ffd1345d4d12407e0598bca9b8680a138610a62565b50346103325780600319360112610332576008546040516001600160a01b039091168152602090f35b50346103325780610e81366120e9565b600384929394526007602052610e9e60ff60408420541615612e44565b610ea66125db565b5050610eb06132e5565b6001600160a01b038381169390610ec930861415612df9565b610ed38387612e81565b8281871695868652601860205260408620610eef838254612338565b9055610efd82601554612338565b601555604051967f8ad4d3ff00da092c7ad9a573ea4f5f6a3dffc6712dc06d3f78f49b862297c4028780a46009541690600c5492823b15610fed57630208d92960e11b86523060048701526001600160a01b03919091166024860152604485019290925260648401919091528290608490829084905af18015610fe257610fcd575b50601154610f8c91612f5f565b15610f945780f35b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881a5b9cdbdb1d995b9d607a1b6044820152606490fd5b91610fdb610f8c9293612187565b9190610f7f565b6040513d85823e3d90fd5b8480fd5b5034610332578060031936011261033257602061100c613061565b604051908152f35b50346103325780600319360112610332576020602954604051908152f35b50346103325780600319360112610332576020601e54604051908152f35b5034610332578060031936011261033257602060ff602654166040519015158152f35b503461033257806003193601126103325760406025548151906001600160401b03908181168352831c166020820152f35b50346103325780600319360112610332576020601a54604051908152f35b5034610332576040366003190112610332576110dc612050565b60243580928115801590611193575b611123575b50506040519182526001600160a01b03169033906000805160206133df83398151915290602090a3602060405160018152f35b3381526001602052604081205461113c83821015612b32565b6001600160a01b0384169033829003611157575b50506110f0565b60409361116e91611169841515612b77565b612338565b338352600160205283832055815220611188838254612345565b905581388080611150565b50336001600160a01b038416146110eb565b50346103325760403660031901126103325760606111cd6111c4612050565b60243590612484565b9060405192835260208301526040820152f35b503461033257604036600319011261033257602061100c6111ff612050565b602435906128d6565b503461033257806003193601126103325760405181602c546112298161214d565b808452906001908181169081156112bc5750600114611263575b61125f8461125381880382612202565b60405191829182612223565b0390f35b602c8352602094507f7416c943b4a09859521022fd2e90eac0dd9026dad28fa317782a135f28a860915b8284106112a9575050508161125f936112539282010193611243565b805485850187015292850192810161128d565b61125f96506112539450602092508593915060ff191682840152151560051b82010193611243565b5034610332576040366003190112610332576004356001600160401b038082116103c657366023830112156103c65781600401359081116115055782604051926113386020601f19601f8601160185612202565b828452602084019236602482840101116103c6578060246020930185378401015260243561ffff8116810361150157610100918284805181010312610fed57611380906125ce565b61138c60408501612bbc565b9161139960608601612bbc565b9460808101519460a08201519260c08301519160ff831683036114fd5760e08401519301519380421161099b5785156114d6577f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e266915b6001600160a01b0388168b52600460205260408b208054919060001983146114c2579161ffff61147f9896949261092998969460018401905560405194602086015216604084015260018060a01b038a16606084015260018060a01b038c1660808401528a60a084015260c083015260e082015260e08152611470816121cb565b602081519101206108f8612a08565b6001600160a01b0383811691160361094057156114ac5761032f926001600160a01b039081169116612da2565b61032f926001600160a01b039081169116612d54565b634e487b7160e01b8d52601160045260248dfd5b7f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d6916113ef565b8980fd5b8380fd5b634e487b7160e01b83526041600452602483fd5b50346103325780600319360112610332576005546040516001600160a01b039091168152602090f35b50346103325780600319360112610332576020601b54604051908152f35b5034610332576020366003190112610332576020906040906001600160a01b03611588612050565b168152602483522054604051908152f35b5034610332578060031936011261033257601454604080516001600160801b038316815260809290921c602083015290f35b5034610332576040366003190112610332576115f26115e8612050565b6024359033612d54565b602060405160018152f35b5034610332576020366003190112610332576020906040906001600160a01b03611625612050565b168152600483522054604051908152f35b5034610332578060031936011261033257600f546040516001600160a01b039091168152602090f35b50346103325780600319360112610332576020603054604051908152f35b50346103325780600319360112610332576020602e54604051908152f35b5034610332578060031936011261033257604051816010546116bc8161214d565b808452906001908181169081156112bc57506001146116e55761125f8461125381880382612202565b60108352602094506000805160206133ff8339815191525b828410611719575050508161125f936112539282010193611243565b80548585018701529285019281016116fd565b50346103325760203660031901126103325760043590600982101561033257602060ff6117588461211e565b54166040519015158152f35b5034610332576020366003190112610332576020906040906001600160a01b0361178c612050565b168152600183522054604051908152f35b5034610332578060031936011261033257600a546040516001600160a01b039091168152602090f35b50346103325780600319360112610332576020602754604051908152f35b50346103325780600319360112610332576020601c54604051908152f35b50346103325780600319360112610332576020602d54604051908152f35b503461033257806003193601126103325760208054604051908152f35b50346103325780600319360112610332576006546001600160a01b0390818116338190036118a757806005549384167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08680a36001600160a01b0319928316176005551660065580f35b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b5034610332576020366003190112610332576020906040906001600160a01b03611913612050565b168152601783522054604051908152f35b50346103325780600319360112610332576020601554604051908152f35b50346103325780600319360112610332576020600e54604051908152f35b50346103325780600319360112610332576020601654604051908152f35b503461033257606036600319011261033257602061100c60443560243560043561236b565b50346103325780600319360112610332576020601154604051908152f35b5034610332578060031936011261033257600d546040516001600160a01b039091168152602090f35b50346103325780600319360112610332576020601254604051908152f35b5034610332578060031936011261033257602061100c612a08565b50346103325780600319360112610332576020601954604051908152f35b50346103325780600319360112610332576014546040516001600160801b039091168152602090f35b50346103325780600319360112610332576020601354604051908152f35b503461033257611a97366120e9565b919282611ad3575b506040519182526001600160a01b039081169216906000805160206133df83398151915290602090a3602060405160018152f35b6001600160a01b03848116808352600160209081526040842054928690611afc82861015612b32565b861693848403611b11575b5050505050611a9f565b838652600283526040808720338852845286205460018101611b7b575b5092600160209693611b5987946040976111696000805160206133df8339815191529c9a1515612b77565b9285525283832055815220611b6f858254612345565b90559138808581611b07565b90918110611bcf5792600160209693611b598a6000805160206133df8339815191529a9895611bac8260409a612338565b86895260028552898920338a528552898920559497509497995050939650611b2e565b60405162461bcd60e51b815260048101849052601860248201527745524332303a20616c6c6f77616e636520746f6f206c6f7760401b6044820152606490fd5b50346103325780600319360112610332576020602a54604051908152f35b503461033257611c3c3661209a565b9083959495421161099b576001600160a01b03878116808a52600460205260408a2080549196929592906000198314611ced5782611cde9694928d92600161092998960190556040519160208301937f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d6855260408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e081526108ed816121cb565b16036109405761032f92612d54565b634e487b7160e01b8c52601160045260248cfd5b5034610332578060031936011261033257602b546040516001600160a01b039091168152602090f35b5034610332576020366003190112610332576020906040906001600160a01b03611d52612050565b168152601883522054604051908152f35b5034610332578060031936011261033257602090604051908152f35b50346103325780600319360112610332576020602f54604051908152f35b5034610332576040366003190112610332576004356009811015611eb557611dc361207c565b6008549091906001600160a01b03163303611e795760ff611de38261211e565b54161515911515918214611e3f57808260ff611e01611e2f9461211e565b54161515827feeec81de25875ce1725479bb76f720a8defdb43dea041919ae37bb4aae9847c08780a461211e565b9060ff8019835416911617905580f35b60405162461bcd60e51b81526020600482015260126024820152714d61726b65743a2073616d6520737461746560701b6044820152606490fd5b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881d5b985d5d1a1bdc9a5e995960621b6044820152606490fd5b5080fd5b5034610332576040366003190112610332576115f2611ed6612050565b6024359033612da2565b503461033257606036600319011261033257611efa612050565b611f0261207c565b611f0a61208b565b9060018060a01b03928391611f248360055416331461226c565b15611fc8571690811590811591611fc0575b5015611f8357806005549283167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08580a36001600160a01b03199182161760055560068054909116905580f35b60405162461bcd60e51b81526020600482015260156024820152744f776e61626c653a207a65726f206164647265737360581b6044820152606490fd5b905038611f36565b9150501660018060a01b0319600654161760065580f35b50346103325780600319360112610332576040611ffa6125db565b825191151582526020820152f35b905034611eb5576040366003190112611eb5576040602092612028612050565b612030612066565b6001600160a01b0391821683526003865283832091168252845220548152f35b600435906001600160a01b038216820361059657565b602435906001600160a01b038216820361059657565b60243590811515820361059657565b60443590811515820361059657565b60e0906003190112610596576001600160a01b03906004358281168103610596579160243590811681036105965790604435906064359060843560ff81168103610596579060a4359060c43590565b6060906003190112610596576001600160a01b0390600435828116810361059657916024359081168103610596579060443590565b6009811015612137576000526007602052604060002090565b634e487b7160e01b600052602160045260246000fd5b90600182811c9216801561217d575b602083101461216757565b634e487b7160e01b600052602260045260246000fd5b91607f169161215c565b6001600160401b03811161219a57604052565b634e487b7160e01b600052604160045260246000fd5b604081019081106001600160401b0382111761219a57604052565b61010081019081106001600160401b0382111761219a57604052565b608081019081106001600160401b0382111761219a57604052565b90601f801991011681019081106001600160401b0382111761219a57604052565b6020808252825181830181905290939260005b82811061225857505060409293506000838284010152601f8019910116010190565b818101860151848201604001528501612236565b1561227357565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b156122be57565b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881b9bdd081d985b1a59607a1b6044820152606490fd5b8181029291811591840414171561098557565b8115612314570490565b634e487b7160e01b600052601260045260246000fd5b604d811161098557600a0a90565b9190820391821161098557565b9190820180921161098557565b8181039291600013801582851316918412161761098557565b6014549192916123b4916123a59161239b91612391906001600160801b038316906122f7565b9060801c9061230a565b93601f54906122f7565b6123ae8361232a565b9061230a565b80831061247c576123c86124049184612338565b916123ff6123f96123f0601e546123ea6123e18661232a565b60205490612345565b906122f7565b6123ae8461232a565b9161232a565b612352565b6509184e72a0009081810291818305149015171561098557670de0b6b3a76400009182810292818405149015171561098557801561231457600160ff1b91808314600019831416610985570590600082121561247557811461098557600003905b808211612470575090565b905090565b5090612465565b505050600090565b6001600160a01b039081166000818152601760209081526040822054929594939192909181156125c1576124b6613251565b906124c28615156127d3565b6009541683600c54898752601882526064604088205491604051948593849263442c159960e01b8452600484015260248301528960448301525afa9081156125b6578591612587575b509285949261256760189361254261257b9961253d61253460409a620186a060225404906122f7565b601e54906122f7565b61230a565b815190936001600160801b0391869161255d918416906122f7565b920151169061230a565b81811061257f57035b97835252205461281f565b9091565b505082612570565b90508381813d83116125af575b61259e8183612202565b81010312610fed575161257b61250b565b503d612594565b6040513d87823e3d90fd5b5050509192505080918190565b5190811515820361059657565b60018060a01b03600f54169060409081519263d6d7d52560e01b8452828460209283600483015260006010546126108161214d565b908160248601526001908582821691826000146127af57505060011461276b575b5050600083809203925af18015612760576000948591612725575b509284156126c757831561268d57505081601155817f9f9192b5edb17356c524e08d9e025c8e2f6307e6ea52fb7968faa3081f51c3c8600080a25b42601355565b60649250519062461bcd60e51b8252600482015260146024820152734d61726b65743a20696e76616c6964207261746560601b6044820152fd5b909192506126da60135460125490612345565b42116126eb57505060115490612687565b60649250519062461bcd60e51b82526004820152601460248201527313585c9ad95d0e881c985d19481d1bdbc81bdb1960621b6044820152fd5b9490508385813d8311612759575b61273d8183612202565b81010312610332575080612750856125ce565b9401513861264c565b503d612733565b83513d6000823e3d90fd5b915060106000528560002091866000935b83851061279457505050508201604401600083612631565b80548c8601604401528a97508b96509301928790820161277c565b8195506000949193506044925060ff191682840152151560051b8201019250612631565b156127da57565b60405162461bcd60e51b815260206004820152601e60248201527f4d61726b65743a2065786368616e676552617465206e6f742076616c696400006044820152606490fd5b61282a8215156127d3565b602060018060a01b0360095416916064600c54604051948593849263442c159960e01b845260048401526024830152600060448301525afa9081156128ca57600091612897575b509061253d61288392602254906122f7565b620186a0612893601e54836122f7565b0491565b906020823d82116128c2575b816128b060209383612202565b8101031261033257505161253d612871565b3d91506128a3565b6040513d6000823e3d90fd5b6001600160a01b031660008181526018602052604081205490926128f99161281f565b918352601760205260408320548015612a02578115612a0257818110612a0257828110156129f85760145461294291839161116991612391906001600160801b038316906122f7565b90620186a092838302928084048514901517156129e45761296792916123ae91612338565b91601b5491601c549361297a8585612352565b80820291848212600160ff1b8214166129e45781830514901517156129d057058184820194851291129080158216911516176129bc5750808212612470575090565b634e487b7160e01b81526011600452602490fd5b634e487b7160e01b83526011600452602483fd5b634e487b7160e01b85526011600452602485fd5b50505050601b5490565b50505090565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03161480612b09575b15612a63577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f000000000000000000000000000000000000000000000000000000000000000082527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a0815260c081018181106001600160401b0382111761219a5760405251902090565b507f00000000000000000000000000000000000000000000000000000000000000004614612a3a565b15612b3957565b60405162461bcd60e51b815260206004820152601660248201527545524332303a2062616c616e636520746f6f206c6f7760501b6044820152606490fd5b15612b7e57565b60405162461bcd60e51b815260206004820152601660248201527545524332303a206e6f207a65726f206164647265737360501b6044820152606490fd5b51906001600160a01b038216820361059657565b60058110156121375780612be15750565b60018103612c295760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b6044820152606490fd5b60028103612c765760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606490fd5b600314612c7f57565b60405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608490fd5b9291906fa2a8918ca85bafe22016d0b997e4df60600160ff1b038311612d485791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa15612d3b5781516001600160a01b03811615612d35579190565b50600190565b50604051903d90823e3d90fd5b50505050600090600390565b7fe50de2333c10a9502fcb1d8ae13a51bbf423153dfc63c2b8997665b32154afc360018060a01b038092169160009083825260036020526040822094169384825260205284604082205580a4565b909160207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259160018060a01b03809416938460005260028352604060002095169485600052825280604060002055604051908152a3565b15612e0057565b606460405162461bcd60e51b815260206004820152602060248201527f4d61726b65743a2063616e6e6f742065786563757465206f6e20697473656c666044820152fd5b15612e4b57565b60405162461bcd60e51b815260206004820152600e60248201526d13585c9ad95d0e881c185d5cd95960921b6044820152606490fd5b6001600160a01b0316338103612e95575050565b6000818152602090600382526040918282203383528152848383205410612eff5783825260038152828220338352815282822054600101612ed8575b5050505050565b612ef393825260038152828220903383525220918254612338565b90553880808080612ed1565b60649083519062461bcd60e51b82526004820152601460248201527313585c9ad95d0e881b9bdd08185c1c1c9bdd995960621b6044820152fd5b60405190612f46826121b0565b6014546001600160801b038116835260801c6020830152565b919060018060a01b03806000941684526020601781526040852054908115613057576018815260408620548015612ed15781612f99612f39565b9460095416916064600c54604051948593849263442c159960e01b8452600484015260248301528b60448301525afa96871561304b578097613015575b505061255d612ff5612534613010969798620186a060225404906122f7565b9561300b60018060801b039485875116906122f7565b6122f7565b111590565b9096508187813d8311613044575b61302d8183612202565b81010312610332575094519461255d612ff5612fd6565b503d613023565b604051903d90823e3d90fd5b5060019450505050565b60ff602654166131d2576014546001600160801b03169081156131cb57600a54604051631848f2bf60e31b8152602093916001600160a01b03919085908290600490829086165afa80156128ca578591600091613192575b50600460405180948193631a674cc560e11b8352165afa9384156128ca57600094613163575b50506130fb9192670de0b6b3a7640000928391602954906122f7565b04908181101561315a57613112602a548092612338565b83810290808204851490151715610985576123ae6131339261314e94612338565b602754926131486028549261300b8487612338565b04612345565b90808211612470575090565b50505060275490565b81813d831161318b575b6131778183612202565b81010312611501575192506130fb386130df565b503d61316d565b909181813d83116131c4575b6131a88183612202565b81010312611eb5575190828216820361033257508490386130b9565b503d61319e565b6028549150565b600a5460405163e6abad4960e01b815290602090829060049082906001600160a01b03165afa9081156128ca5760009161320a575090565b906020823d8211613230575b8161322360209383612202565b8101031261033257505190565b3d9150613216565b6001600160801b03918216908216019190821161098557565b60006020604051613261816121b0565b82815201526001600160401b03906132808260255460401c1642612338565b9182156132d7576132d261300b91670de0b6b3a76400006132c76132a2612f39565b9660018060801b03958694858a5116906301e133806132bf613061565b0416906122f7565b041682855116613238565b168252565b5090506132e2612f39565b90565b6040516132f1816121b0565b6025546001600160401b03908181168352818160401c16613319602085019180835242612338565b928315612ed157602094816301e13380613331613061565b041681528142168352613342612f39565b670de0b6b3a764000061336760018060801b039761300b8985511687875116906122f7565b049561337881881682845116613238565b1680825296015160801b6001600160801b031990811690961760145551915192909416931692831760409190911b67ffffffffffffffff60401b16176025557f7484db546dcd57af0104c73c8a6968dfbaf5767f047cee0dadd0499ad7df81a0600080a356feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae672a2646970667358221220de0671eaac8fb5ef4b9604acb9ea063778c9ec56a150a45aaf583e9220ecf2f264736f6c63430008120033"; type BBCollateralConstructorParams = | [signer?: Signer] diff --git a/src/typechain/tapioca-bar/factories/markets/bigBang/BBCommon__factory.ts b/src/typechain/tapioca-bar/factories/markets/bigBang/BBCommon__factory.ts index fd845a03..7df67c37 100644 --- a/src/typechain/tapioca-bar/factories/markets/bigBang/BBCommon__factory.ts +++ b/src/typechain/tapioca-bar/factories/markets/bigBang/BBCommon__factory.ts @@ -72,13 +72,13 @@ const _abi = [ { indexed: true, internalType: "address", - name: "_oldVal", + name: "oldVal", type: "address", }, { indexed: true, internalType: "address", - name: "_newVal", + name: "newVal", type: "address", }, ], @@ -142,6 +142,25 @@ const _abi = [ name: "ExchangeRateDurationUpdated", type: "event", }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "address", + name: "oldVal", + type: "address", + }, + { + indexed: true, + internalType: "address", + name: "newVal", + type: "address", + }, + ], + name: "LeverageExecutorSet", + type: "event", + }, { anonymous: false, inputs: [ @@ -523,6 +542,37 @@ const _abi = [ name: "UpdateMinMaxMintFee", type: "event", }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "uint256", + name: "oldMin", + type: "uint256", + }, + { + indexed: true, + internalType: "uint256", + name: "newMin", + type: "uint256", + }, + { + indexed: true, + internalType: "uint256", + name: "oldMax", + type: "uint256", + }, + { + indexed: false, + internalType: "uint256", + name: "newMax", + type: "uint256", + }, + ], + name: "UpdateMinMaxMintRange", + type: "event", + }, { inputs: [], name: "DOMAIN_SEPARATOR", @@ -965,6 +1015,19 @@ const _abi = [ stateMutability: "view", type: "function", }, + { + inputs: [], + name: "leverageExecutor", + outputs: [ + { + internalType: "contract ILeverageExecutor", + name: "", + type: "address", + }, + ], + stateMutability: "view", + type: "function", + }, { inputs: [], name: "liquidationBonusAmount", @@ -1043,6 +1106,19 @@ const _abi = [ stateMutability: "view", type: "function", }, + { + inputs: [], + name: "maxMintFeeStart", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, { inputs: [], name: "minDebtRate", @@ -1082,6 +1158,19 @@ const _abi = [ stateMutability: "view", type: "function", }, + { + inputs: [], + name: "minMintFeeStart", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, { inputs: [ { @@ -1347,6 +1436,19 @@ const _abi = [ stateMutability: "view", type: "function", }, + { + inputs: [ + { + internalType: "contract ILeverageExecutor", + name: "_executor", + type: "address", + }, + ], + name: "setLeverageExecutor", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, { inputs: [ { @@ -1633,7 +1735,7 @@ const _abi = [ ] as const; const _bytecode = - "0x61014080604052346200018a5762000017816200018f565b600f81526001602082016e546170696f63612042696742616e6760881b8152602060405162000046816200018f565b8381520192603160f81b845251902091208160e052610100918183524660a0526040519160208301907f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f92838352604085015260608401524660808401523060a084015260a0835260c083019280841060018060401b03851117620001745760408490525190206080523060c052610120908152600580546001600160a01b0319163390811790915560007f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a362013880601b5562015f90601c55612710601d55612ee06020556103e8602d55612bdf9283620001ac8439608051836123fa015260a051836124c5015260c051836123c4015260e051836124490152518261246f015251816124260152f35b634e487b7160e01b600052604160045260246000fd5b600080fd5b604081019081106001600160401b03821117620001745760405256fe608080604052600436101561001357600080fd5b60003560e01c908162a02a2014611c275750806302ce728f14611a10578063078dfbe71461190c578063095ea7b3146118e65780630c4e84f0146117cc57806318160ddd146117b05780631c9e379b146117765780631d4d3a5d1461174d5780631da8bf10146116915780631fb8f81a1461167357806323b872dd146114cf578063331960ff146114b157806334ce998a1461148857806334d441d01461146a5780633644e5151461144f57806337b6b7b91461143157806338d52e0f146114085780633ba0b9a9146113ea5780633f741adb146113c657806340626d8b146113a857806344de240a1461138a578063473e3ce71461136c57806348e4163e146113325780634e71e0c814611284578063529898f214611267578063542afda314611249578063579354621461122b5780636b19ad161461120d5780636c3d8b8f146111e457806370a08231146111aa578063727785471461117457806374645ff3146110e157806374c9e481146110c35780637dc0d1d01461109a5780637ecebe00146110605780637fa0b84e1461102f5780638285ef4014610ffd57806387b2793714610fc35780638c5d0ed314610fa55780638da5cb5b14610f7c578063910dd7c814610d63578063932bc4f814610c8557806399a9702814610c5e5780639e15e89f14610c24578063a9059cbb14610b3d578063b0e21e8a14610b1f578063b27c0e7414610aee578063b7113f1914610acb578063bb4cfe3b14610aad578063bde39c5d14610a8f578063c1ad5c8d14610a6c578063ce8849ed14610a43578063d3fb2a38146105d7578063d505accf14610437578063d8dfeb451461040e578063dd62ed3e146103bd578063de40657714610394578063e0996cb614610376578063e30c39781461034d578063ea64dd561461032f578063eec0f42e14610311578063f791395d146102f35763f8ba4cff146102d357600080fd5b346102ee5760003660031901126102ee576102ec612a69565b005b600080fd5b346102ee5760003660031901126102ee576020602754604051908152f35b346102ee5760003660031901126102ee576020600c54604051908152f35b346102ee5760003660031901126102ee576020601f54604051908152f35b346102ee5760003660031901126102ee576006546040516001600160a01b039091168152602090f35b346102ee5760003660031901126102ee576020601d54604051908152f35b346102ee5760003660031901126102ee576009546040516001600160a01b039091168152602090f35b346102ee5760403660031901126102ee576103d6611c73565b6103de611c89565b9060018060a01b038091166000526002602052604060002091166000526020526020604060002054604051908152f35b346102ee5760003660031901126102ee57600b546040516001600160a01b039091168152602090f35b346102ee5761044536611cae565b9183919395949542116105925760018060a01b0392838816948560005260046020526040600020928354600019811461057c5761052895610520956001830190556040519060208201927f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e2668452600060408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e081526104e481611d81565b5190206104ef6123c1565b9060405190602082019261190160f01b8452602283015260428201526042815261051881611d9d565b519020612688565b919091612589565b1603610537576102ec9261275b565b60405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152606490fd5b634e487b7160e01b600052601160045260246000fd5b60405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b346102ee576101603660031901126102ee576001600160a01b03600435818116908190036102ee576024916001600160401b0383358181116102ee57366023820112156102ee5780600401359182116102ee57368583830101116102ee57604435938385168095036102ee5761065284600554163314611e22565b80610a04575b5084826108a2575b50505081610861575b505060643580610849575b5060843580610831575b5060a4358061081a575b5060c435806107f6575b5060e435806107d2575b5061010435806107a0575b50610124358061072d575b506101443590816106bf57005b601e5482106106ce5750601f55005b60849060326040519162461bcd60e51b8352602060048401528201527f4d61726b65743a206c69717569646174696f6e436f6c6c61746572616c697a616044820152711d1a5bdb94985d19481d1bdbc81cdb585b1b60721b6064820152fd5b61073c620186a0821115611e6d565b601f54811161074e57601e55816106b2565b60405162461bcd60e51b8152602060048201526025818401527f4d61726b65743a20636f6c6c61746572616c697a6174696f6e5261746520746f6044820152646f2062696760d81b6064820152608490fd5b806016547fae6e0ab3b95f0a53ff9660a390ccedcbbf1f2355dce974a9841af106fddcfaba600080a3601655816106a7565b6107e0620186a08210611e6d565b6107ed601b548211611e6d565b601c558161069c565b610804620186a08210611e6d565b610811601c548210611e6d565b601b5581610692565b610828620186a08210611e6d565b601d5581610688565b610840620186a0821115611e6d565b601a558161067e565b610858620186a0821115611e6d565b60195581610674565b816008549182167f5a62d22209e370e38eea92cfddcd228e656e6ec139243392a760a7769f5877fd600080a36001600160a01b031916176008558180610669565b82916108af601054611d2c565b601f81116109a3575b50600090601f841160011461092057600093610913575b5050508160011b916000199060031b1c1916176010555b7fa6f004921c944d4b8bf6e38462b00f36a58d62495d56b51f571ab78f732c9815600080a1838084610660565b01013590508486806108cf565b60106000908152601f1985169550600080516020612b8a83398151915293509091889160205b8782106109845750508460019610610968575b50505050811b016010556108e6565b60001960f88660031b161c199201013516905585808681610959565b8285019093013585556001949094019389929182019190810190610946565b60106000529092509050600080516020612b8a833981519152601f840160051c8101602085106109fd575b91849391601f8994920160051c01905b8181106109eb57506108b8565b600081558594508893506001016109de565b50806109ce565b600f80546001600160a01b0319169190911790557f0b2d6eb667d0522c3eb86e4288afecae6c11591ffd1345d4d12407e0598bca9b600080a185610658565b346102ee5760003660031901126102ee576008546040516001600160a01b039091168152602090f35b346102ee5760003660031901126102ee576020610a876127b2565b604051908152f35b346102ee5760003660031901126102ee576020602854604051908152f35b346102ee5760003660031901126102ee576020601e54604051908152f35b346102ee5760003660031901126102ee57602060ff602554166040519015158152f35b346102ee5760003660031901126102ee5760406024548151906001600160401b03908181168352831c166020820152f35b346102ee5760003660031901126102ee576020601a54604051908152f35b346102ee5760403660031901126102ee57610b56611c73565b602435908115801590610c12575b610b9a575b6040519182526001600160a01b0316903390600080516020612b6a83398151915290602090a3602060405160018152f35b336000526001602052604060002054610bb5838210156124eb565b6001600160a01b038216908333839003610bd2575b505050610b69565b610be691610be1841515612530565b611eee565b3360005260016020526040600020556000526040600020610c08838254611efb565b9055828083610bca565b50336001600160a01b03821614610b64565b346102ee5760403660031901126102ee576060610c4b610c42611c73565b6024359061203a565b9060405192835260208301526040820152f35b346102ee5760403660031901126102ee576020610a87610c7c611c73565b6024359061228f565b346102ee5760003660031901126102ee57604051600090602b54610ca881611d2c565b808352600191808316908115610d3b5750600114610ce1575b610cdd83610cd181870382611db8565b60405191829182611dd9565b0390f35b602b600090815260209450917f11c44e4875b74d31ff9fd779bf2566af7bd15b87fc985d01f5094b89e3669e4f5b828410610d2857505050810190910190610cd181610cc1565b8054858501870152928501928101610d0f565b610cdd9550610cd193506020915091849260ff191682840152151560051b8201019350610cc1565b346102ee5760403660031901126102ee576001600160401b036004358181116102ee57366023820112156102ee578060040135918211610f665760405191610db5601f8201601f191660200184611db8565b808352602083019136602483830101116102ee57816000926024602093018537840101526024359161ffff831683036102ee576101009182828051810103126102ee57610e0190612188565b610e0d60408301612575565b91610e1a60608201612575565b9460808201519460a08301519260c08101519160ff831683036102ee5760e082015191015191844211610592578515610f40577f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e2665b6001600160a01b03881660009081526004602052604090208054909690600019811461057c5761ffff61052097610efd9960018401905560405194602086015216604084015260018060a01b038a16606084015260018060a01b038c1660808401528a60a084015260c083015260e082015260e08152610eee81611d81565b602081519101206104ef6123c1565b6001600160a01b038381169116036105375715610f2a576102ec926001600160a01b03908116911661275b565b6102ec926001600160a01b03908116911661270d565b7f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d6610e6f565b634e487b7160e01b600052604160045260246000fd5b346102ee5760003660031901126102ee576005546040516001600160a01b039091168152602090f35b346102ee5760003660031901126102ee576020601b54604051908152f35b346102ee5760203660031901126102ee576001600160a01b03610fe4611c73565b1660005260236020526020604060002054604051908152f35b346102ee5760003660031901126102ee57601454604080516001600160801b038316815260809290921c602083015290f35b346102ee5760403660031901126102ee5761105561104b611c73565b602435903361270d565b602060405160018152f35b346102ee5760203660031901126102ee576001600160a01b03611081611c73565b1660005260046020526020604060002054604051908152f35b346102ee5760003660031901126102ee57600f546040516001600160a01b039091168152602090f35b346102ee5760003660031901126102ee576020602d54604051908152f35b346102ee5760003660031901126102ee5760405160009060105461110481611d2c565b808352600191808316908115610d3b575060011461112c57610cdd83610cd181870382611db8565b601060009081526020945091600080516020612b8a8339815191525b82841061116157505050810190910190610cd181610cc1565b8054858501870152928501928101611148565b346102ee5760203660031901126102ee5760043560098110156102ee5760ff61119e602092611cfd565b54166040519015158152f35b346102ee5760203660031901126102ee576001600160a01b036111cb611c73565b1660005260016020526020604060002054604051908152f35b346102ee5760003660031901126102ee57600a546040516001600160a01b039091168152602090f35b346102ee5760003660031901126102ee576020602654604051908152f35b346102ee5760003660031901126102ee576020601c54604051908152f35b346102ee5760003660031901126102ee576020602c54604051908152f35b346102ee5760003660031901126102ee5760208054604051908152f35b346102ee5760003660031901126102ee576006546001600160a01b0390818116338190036112ee57806005549384167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a36001600160a01b03199283161760055516600655005b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b346102ee5760203660031901126102ee576001600160a01b03611353611c73565b1660005260176020526020604060002054604051908152f35b346102ee5760003660031901126102ee576020601554604051908152f35b346102ee5760003660031901126102ee576020600e54604051908152f35b346102ee5760003660031901126102ee576020601654604051908152f35b346102ee5760603660031901126102ee576020610a87604435602435600435611f21565b346102ee5760003660031901126102ee576020601154604051908152f35b346102ee5760003660031901126102ee57600d546040516001600160a01b039091168152602090f35b346102ee5760003660031901126102ee576020601254604051908152f35b346102ee5760003660031901126102ee576020610a876123c1565b346102ee5760003660031901126102ee576020601954604051908152f35b346102ee5760003660031901126102ee576014546040516001600160801b039091168152602090f35b346102ee5760003660031901126102ee576020601354604051908152f35b346102ee5760603660031901126102ee576114e8611c73565b6114f0611c89565b604435908161152d575b6040519182526001600160a01b03908116921690600080516020612b6a83398151915290602090a3602060405160018152f35b60018060a01b03808416806000526020600181528460406000205493611555828610156124eb565b85169384840361156a575b50505050506114fa565b8360005260028352604060002033600052835260406000205460001981036115de575b5084926115b5600080516020612b6a833981519152979593600193610be16020991515612530565b926000525260406000205560005260406000206115d3858254611efb565b905591858481611560565b9091811061163357602094926115b588600080516020612b6a83398151915298969461160c82600196611eee565b8660005260028552604060002033600052855260406000205593509395975050929461158d565b60405162461bcd60e51b815260048101849052601860248201527745524332303a20616c6c6f77616e636520746f6f206c6f7760401b6044820152606490fd5b346102ee5760003660031901126102ee576020602954604051908152f35b346102ee5761169f36611cae565b9183919395949542116105925760018060a01b0392838816948560005260046020526040600020928354600019811461057c5761173e95610520956001830190556040519060208201927f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d68452600060408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e081526104e481611d81565b1603610537576102ec9261270d565b346102ee5760003660031901126102ee57602a546040516001600160a01b039091168152602090f35b346102ee5760203660031901126102ee576001600160a01b03611797611c73565b1660005260186020526020604060002054604051908152f35b346102ee5760003660031901126102ee57602060405160008152f35b346102ee5760403660031901126102ee5760043560098110156102ee576117f1611c9f565b6008549091906001600160a01b031633036118aa5760ff61181182611cfd565b5416151591151591821461187057808260ff61182f61185e94611cfd565b54161515827feeec81de25875ce1725479bb76f720a8defdb43dea041919ae37bb4aae9847c0600080a4611cfd565b9060ff80198354169116179055600080f35b60405162461bcd60e51b81526020600482015260126024820152714d61726b65743a2073616d6520737461746560701b6044820152606490fd5b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881d5b985d5d1a1bdc9a5e995960621b6044820152606490fd5b346102ee5760403660031901126102ee57611055611902611c73565b602435903361275b565b346102ee5760603660031901126102ee57611925611c73565b61192d611c9f565b6044359081151582036102ee5760018060a01b0392839161195383600554163314611e22565b156119f75716908115908115916119ef575b50156119b257806005549283167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a36001600160a01b031991821617600555600680549091169055005b60405162461bcd60e51b81526020600482015260156024820152744f776e61626c653a207a65726f206164647265737360581b6044820152606490fd5b905083611965565b9150501660018060a01b03196006541617600655600080f35b346102ee5760003660031901126102ee5760018060a01b03600f54166040519063d6d7d52560e01b8252602091826004820152600091601054611a5281611d2c565b908160248501526001908181169081600014611c015750600114611bc1575b50509060409181600081809603925af18015611bb557600091600091611b76575b508115611b19578015611add5760409281601155817f9f9192b5edb17356c524e08d9e025c8e2f6307e6ea52fb7968faa3081f51c3c8600080a25b4260135583519215158352820152f35b60405162461bcd60e51b81526004810184905260146024820152734d61726b65743a20696e76616c6964207261746560601b6044820152606490fd5b50611b2960135460125490611efb565b4211611b3a57601154604092611acd565b60405162461bcd60e51b815260048101839052601460248201527313585c9ad95d0e881c985d19481d1bdbc81bdb1960621b6044820152606490fd5b9150506040813d604011611bad575b81611b9260409383611db8565b810103126102ee5781611ba482612188565b91015183611a92565b3d9150611b85565b6040513d6000823e3d90fd5b935060106000528460002093856000955b838710611bec575050505091810160440191806040611a71565b80548688016044015295019486908201611bd2565b60ff191660448087019190915292151560051b8501909201945082915060409050611a71565b346102ee5760403660031901126102ee57602090611c43611c73565b611c4b611c89565b9060018060a01b03809116600052600384526040600020911660005282526040600020548152f35b600435906001600160a01b03821682036102ee57565b602435906001600160a01b03821682036102ee57565b6024359081151582036102ee57565b60e09060031901126102ee576001600160a01b039060043582811681036102ee579160243590811681036102ee5790604435906064359060843560ff811681036102ee579060a4359060c43590565b6009811015611d16576000526007602052604060002090565b634e487b7160e01b600052602160045260246000fd5b90600182811c92168015611d5c575b6020831014611d4657565b634e487b7160e01b600052602260045260246000fd5b91607f1691611d3b565b604081019081106001600160401b03821117610f6657604052565b61010081019081106001600160401b03821117610f6657604052565b608081019081106001600160401b03821117610f6657604052565b90601f801991011681019081106001600160401b03821117610f6657604052565b6020808252825181830181905290939260005b828110611e0e57505060409293506000838284010152601f8019910116010190565b818101860151848201604001528501611dec565b15611e2957565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b15611e7457565b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881b9bdd081d985b1a59607a1b6044820152606490fd5b8181029291811591840414171561057c57565b8115611eca570490565b634e487b7160e01b600052601260045260246000fd5b604d811161057c57600a0a90565b9190820391821161057c57565b9190820180921161057c57565b8181039291600013801582851316918412161761057c57565b601454919291611f6a91611f5b91611f5191611f47906001600160801b03831690611ead565b9060801c90611ec0565b93601f5490611ead565b611f6483611ee0565b90611ec0565b80831061203257611f7e611fba9184611eee565b91611fb5611faf611fa6601e54611fa0611f9786611ee0565b60205490611efb565b90611ead565b611f6484611ee0565b91611ee0565b611f08565b6509184e72a0009081810291818305149015171561057c57670de0b6b3a76400009182810292818405149015171561057c578015611eca57600160ff1b9180831460001983141661057c570590600082121561202b57811461057c57600003905b808211612026575090565b905090565b509061201b565b505050600090565b6001600160a01b0390811660008181526017602090815260408220549295949391929091811561217b5761206c6129d5565b90612078861515612195565b6009541683600c54898752601882526064604088205491604051948593849263442c159960e01b8452600484015260248301528960448301525afa90811561217057859161213d575b509285949261211d6018936120f8612131996120f36120ea60409a620186a06021540490611ead565b601e5490611ead565b611ec0565b815190936001600160801b0391869161211391841690611ead565b9201511690611ec0565b81811061213557035b9783525220546121e1565b9091565b505082612126565b90508381813d8311612169575b6121548183611db8565b8101031261216557516121316120c1565b8480fd5b503d61214a565b6040513d87823e3d90fd5b5050509192505080918190565b519081151582036102ee57565b1561219c57565b60405162461bcd60e51b815260206004820152601e60248201527f4d61726b65743a2065786368616e676552617465206e6f742076616c696400006044820152606490fd5b6121ec821515612195565b602060018060a01b0360095416916064600c54604051948593849263442c159960e01b845260048401526024830152600060448301525afa908115611bb557600091612259575b50906120f36122459260215490611ead565b620186a0612255601e5483611ead565b0491565b906020823d8211612287575b8161227260209383611db8565b810103126122845750516120f3612233565b80fd5b3d9150612265565b6001600160a01b031660008181526018602052604081205490926122b2916121e1565b9183526017602052604083205480156123bb5781156123bb578181106123bb57828110156123b1576014546122fb918391610be191611f47906001600160801b03831690611ead565b90620186a0928383029280840485149015171561239d576123209291611f6491611eee565b91601b5491601c54936123338585611f08565b80820291848212600160ff1b82141661239d57818305149015171561238957058184820194851291129080158216911516176123755750808212612026575090565b634e487b7160e01b81526011600452602490fd5b634e487b7160e01b83526011600452602483fd5b634e487b7160e01b85526011600452602485fd5b50505050601b5490565b50505090565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031614806124c2575b1561241c577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f000000000000000000000000000000000000000000000000000000000000000082527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a0815260c081018181106001600160401b03821117610f665760405251902090565b507f000000000000000000000000000000000000000000000000000000000000000046146123f3565b156124f257565b60405162461bcd60e51b815260206004820152601660248201527545524332303a2062616c616e636520746f6f206c6f7760501b6044820152606490fd5b1561253757565b60405162461bcd60e51b815260206004820152601660248201527545524332303a206e6f207a65726f206164647265737360501b6044820152606490fd5b51906001600160a01b03821682036102ee57565b6005811015611d16578061259a5750565b600181036125e25760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b6044820152606490fd5b6002810361262f5760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606490fd5b60031461263857565b60405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608490fd5b9291906fa2a8918ca85bafe22016d0b997e4df60600160ff1b0383116127015791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa156126f45781516001600160a01b038116156126ee579190565b50600190565b50604051903d90823e3d90fd5b50505050600090600390565b7fe50de2333c10a9502fcb1d8ae13a51bbf423153dfc63c2b8997665b32154afc360018060a01b038092169160009083825260036020526040822094169384825260205284604082205580a4565b909160207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259160018060a01b03809416938460005260028352604060002095169485600052825280604060002055604051908152a3565b60ff60255416612930576014546001600160801b031690811561292957600a54604051631848f2bf60e31b8152602093916001600160a01b03919085908290600490829086165afa8015611bb55785916000916128ec575b50600460405180948193631a674cc560e11b8352165afa938415611bb5576000946128b9575b505061284c9192670de0b6b3a764000092839160285490611ead565b0490818110156128b0576128636029548092611eee565b8381029080820485149015171561057c57611f64612884926128a494611eee565b6026549261289e602754926128998487611eee565b611ead565b04611efb565b90808211612026575090565b50505060265490565b81813d83116128e5575b6128cd8183611db8565b810103126128e15751925061284c38612830565b8380fd5b503d6128c3565b909181813d8311612922575b6129028183611db8565b8101031261291e5751908282168203612284575084903861280a565b5080fd5b503d6128f8565b6027549150565b600a5460405163e6abad4960e01b815290602090829060049082906001600160a01b03165afa908115611bb557600091612968575090565b906020823d821161298e575b8161298160209383611db8565b8101031261228457505190565b3d9150612974565b604051906129a382611d66565b6014546001600160801b038116835260801c6020830152565b6001600160801b03918216908216019190821161057c57565b600060206040516129e581611d66565b82815201526001600160401b0390612a048260245460401c1642611eee565b918215612a5b57612a5661289991670de0b6b3a7640000612a4b612a26612996565b9660018060801b03958694858a5116906301e13380612a436127b2565b041690611ead565b0416828551166129bc565b168252565b509050612a66612996565b90565b604051612a7581611d66565b6024546001600160401b03908181168352818160401c16612a9d602085019180835242611eee565b928315612b6257602094816301e13380612ab56127b2565b041681528142168352612ac6612996565b670de0b6b3a7640000612aeb60018060801b0397612899898551168787511690611ead565b0495612afc818816828451166129bc565b1680825296015160801b6001600160801b031990811690961760145551915192909416931692831760409190911b67ffffffffffffffff60401b16176024557f7484db546dcd57af0104c73c8a6968dfbaf5767f047cee0dadd0499ad7df81a0600080a3565b505050505056feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae672a2646970667358221220a0cbe3086b31edd259f56d95eb68ed1e6d574fa7458606dfdfe4d71e2381e24764736f6c63430008120033"; + "0x61014080604052346200018a5762000017816200018f565b600f81526001602082016e546170696f63612042696742616e6760881b8152602060405162000046816200018f565b8381520192603160f81b845251902091208160e052610100918183524660a0526040519160208301907f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f92838352604085015260608401524660808401523060a084015260a0835260c083019280841060018060401b03851117620001745760408490525190206080523060c052610120908152600580546001600160a01b0319163390811790915560007f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a362013880601b5562015f90601c55612710601d55612ee06020556103e8602e55612ce29283620001ac8439608051836124fd015260a051836125c8015260c051836124c7015260e0518361254c01525182612572015251816125290152f35b634e487b7160e01b600052604160045260246000fd5b600080fd5b604081019081106001600160401b03821117620001745760405256fe608080604052600436101561001357600080fd5b60003560e01c908162a02a2014611d2a5750806302ce728f14611b13578063078dfbe714611a0f578063095ea7b3146119e95780630c4e84f0146118cf5780630f8b29ea146118b157806318160ddd146118955780631c9e379b1461185b5780631d4d3a5d146118325780631da8bf10146117765780631fb8f81a1461175857806323b872dd146115b4578063331960ff1461159657806334ce998a1461156d57806334d441d01461154f5780633644e5151461153457806337b6b7b91461151657806338d52e0f146114ed5780633ba0b9a9146114cf5780633f741adb146114ab57806340626d8b1461148d57806344de240a1461146f578063473e3ce71461145157806348e4163e146114175780634e71e0c814611369578063529898f21461134c578063542afda31461132e57806357935462146113105780636b19ad16146112f25780636c3d8b8f146112c957806370a082311461128f578063727785471461125957806374645ff3146111c657806374c9e481146111a8578063790c84671461118a5780637dc0d1d0146111615780637ecebe00146111275780637fa0b84e146110f65780638285ef40146110c457806387b279371461108a5780638c5d0ed31461106c5780638da5cb5b14611043578063910dd7c814610e2a578063932bc4f814610d4c57806399a9702814610d255780639e15e89f14610ceb578063a9059cbb14610c04578063b0e21e8a14610be6578063b27c0e7414610bb5578063b7113f1914610b92578063bb4cfe3b14610b74578063bde39c5d14610b56578063c1ad5c8d14610b33578063ce8849ed14610b0a578063d3fb2a381461069e578063d505accf146104fe578063d8dfeb45146104d5578063da863f0e146104ac578063dd62ed3e1461045b578063de40657714610432578063e0996cb614610414578063e30c3978146103eb578063ea64dd56146103cd578063eec0f42e146103af578063ef2b234a1461033d578063f791395d1461031f5763f8ba4cff146102ff57600080fd5b3461031a57600036600319011261031a57610318612b6c565b005b600080fd5b3461031a57600036600319011261031a576020602854604051908152f35b3461031a57602036600319011261031a576004356001600160a01b038181169182900361031a5761037381600554163314611f25565b816021549182167ffb4fd7114609dd603b57adbc2082205bfbbcabf9265c4b437b472f5c592b8cd7600080a36001600160a01b03191617602155005b3461031a57600036600319011261031a576020600c54604051908152f35b3461031a57600036600319011261031a576020601f54604051908152f35b3461031a57600036600319011261031a576006546040516001600160a01b039091168152602090f35b3461031a57600036600319011261031a576020601d54604051908152f35b3461031a57600036600319011261031a576009546040516001600160a01b039091168152602090f35b3461031a57604036600319011261031a57610474611d76565b61047c611d8c565b9060018060a01b038091166000526002602052604060002091166000526020526020604060002054604051908152f35b3461031a57600036600319011261031a576021546040516001600160a01b039091168152602090f35b3461031a57600036600319011261031a57600b546040516001600160a01b039091168152602090f35b3461031a5761050c36611db1565b9183919395949542116106595760018060a01b03928388169485600052600460205260406000209283546000198114610643576105ef956105e7956001830190556040519060208201927f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e2668452600060408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e081526105ab81611e84565b5190206105b66124c4565b9060405190602082019261190160f01b845260228301526042820152604281526105df81611ea0565b51902061278b565b91909161268c565b16036105fe576103189261285e565b60405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152606490fd5b634e487b7160e01b600052601160045260246000fd5b60405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b3461031a5761016036600319011261031a576001600160a01b036004358181169081900361031a576024916001600160401b03833581811161031a573660238201121561031a57806004013591821161031a573685838301011161031a576044359383851680950361031a5761071984600554163314611f25565b80610acb575b508482610969575b50505081610928575b505060643580610910575b50608435806108f8575b5060a435806108e1575b5060c435806108bd575b5060e43580610899575b506101043580610867575b5061012435806107f4575b5061014435908161078657005b601e5482106107955750601f55005b60849060326040519162461bcd60e51b8352602060048401528201527f4d61726b65743a206c69717569646174696f6e436f6c6c61746572616c697a616044820152711d1a5bdb94985d19481d1bdbc81cdb585b1b60721b6064820152fd5b610803620186a0821115611f70565b601f54811161081557601e5581610779565b60405162461bcd60e51b8152602060048201526025818401527f4d61726b65743a20636f6c6c61746572616c697a6174696f6e5261746520746f6044820152646f2062696760d81b6064820152608490fd5b806016547fae6e0ab3b95f0a53ff9660a390ccedcbbf1f2355dce974a9841af106fddcfaba600080a36016558161076e565b6108a7620186a08210611f70565b6108b4601b548211611f70565b601c5581610763565b6108cb620186a08210611f70565b6108d8601c548210611f70565b601b5581610759565b6108ef620186a08210611f70565b601d558161074f565b610907620186a0821115611f70565b601a5581610745565b61091f620186a0821115611f70565b6019558161073b565b816008549182167f5a62d22209e370e38eea92cfddcd228e656e6ec139243392a760a7769f5877fd600080a36001600160a01b031916176008558180610730565b8291610976601054611e2f565b601f8111610a6a575b50600090601f84116001146109e7576000936109da575b5050508160011b916000199060031b1c1916176010555b7fa6f004921c944d4b8bf6e38462b00f36a58d62495d56b51f571ab78f732c9815600080a1838084610727565b0101359050848680610996565b60106000908152601f1985169550600080516020612c8d83398151915293509091889160205b878210610a4b5750508460019610610a2f575b50505050811b016010556109ad565b60001960f88660031b161c199201013516905585808681610a20565b8285019093013585556001949094019389929182019190810190610a0d565b60106000529092509050600080516020612c8d833981519152601f840160051c810160208510610ac4575b91849391601f8994920160051c01905b818110610ab2575061097f565b60008155859450889350600101610aa5565b5080610a95565b600f80546001600160a01b0319169190911790557f0b2d6eb667d0522c3eb86e4288afecae6c11591ffd1345d4d12407e0598bca9b600080a18561071f565b3461031a57600036600319011261031a576008546040516001600160a01b039091168152602090f35b3461031a57600036600319011261031a576020610b4e6128b5565b604051908152f35b3461031a57600036600319011261031a576020602954604051908152f35b3461031a57600036600319011261031a576020601e54604051908152f35b3461031a57600036600319011261031a57602060ff602654166040519015158152f35b3461031a57600036600319011261031a5760406025548151906001600160401b03908181168352831c166020820152f35b3461031a57600036600319011261031a576020601a54604051908152f35b3461031a57604036600319011261031a57610c1d611d76565b602435908115801590610cd9575b610c61575b6040519182526001600160a01b0316903390600080516020612c6d83398151915290602090a3602060405160018152f35b336000526001602052604060002054610c7c838210156125ee565b6001600160a01b038216908333839003610c99575b505050610c30565b610cad91610ca8841515612633565b611ff1565b3360005260016020526040600020556000526040600020610ccf838254611ffe565b9055828083610c91565b50336001600160a01b03821614610c2b565b3461031a57604036600319011261031a576060610d12610d09611d76565b6024359061213d565b9060405192835260208301526040820152f35b3461031a57604036600319011261031a576020610b4e610d43611d76565b60243590612392565b3461031a57600036600319011261031a57604051600090602c54610d6f81611e2f565b808352600191808316908115610e025750600114610da8575b610da483610d9881870382611ebb565b60405191829182611edc565b0390f35b602c600090815260209450917f7416c943b4a09859521022fd2e90eac0dd9026dad28fa317782a135f28a860915b828410610def57505050810190910190610d9881610d88565b8054858501870152928501928101610dd6565b610da49550610d9893506020915091849260ff191682840152151560051b8201019350610d88565b3461031a57604036600319011261031a576001600160401b0360043581811161031a573660238201121561031a57806004013591821161102d5760405191610e7c601f8201601f191660200184611ebb565b8083526020830191366024838301011161031a57816000926024602093018537840101526024359161ffff8316830361031a5761010091828280518101031261031a57610ec89061228b565b610ed460408301612678565b91610ee160608201612678565b9460808201519460a08301519260c08101519160ff8316830361031a5760e082015191015191844211610659578515611007577f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e2665b6001600160a01b0388166000908152600460205260409020805490969060001981146106435761ffff6105e797610fc49960018401905560405194602086015216604084015260018060a01b038a16606084015260018060a01b038c1660808401528a60a084015260c083015260e082015260e08152610fb581611e84565b602081519101206105b66124c4565b6001600160a01b038381169116036105fe5715610ff157610318926001600160a01b03908116911661285e565b610318926001600160a01b039081169116612810565b7f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d6610f36565b634e487b7160e01b600052604160045260246000fd5b3461031a57600036600319011261031a576005546040516001600160a01b039091168152602090f35b3461031a57600036600319011261031a576020601b54604051908152f35b3461031a57602036600319011261031a576001600160a01b036110ab611d76565b1660005260246020526020604060002054604051908152f35b3461031a57600036600319011261031a57601454604080516001600160801b038316815260809290921c602083015290f35b3461031a57604036600319011261031a5761111c611112611d76565b6024359033612810565b602060405160018152f35b3461031a57602036600319011261031a576001600160a01b03611148611d76565b1660005260046020526020604060002054604051908152f35b3461031a57600036600319011261031a57600f546040516001600160a01b039091168152602090f35b3461031a57600036600319011261031a576020603054604051908152f35b3461031a57600036600319011261031a576020602e54604051908152f35b3461031a57600036600319011261031a576040516000906010546111e981611e2f565b808352600191808316908115610e02575060011461121157610da483610d9881870382611ebb565b601060009081526020945091600080516020612c8d8339815191525b82841061124657505050810190910190610d9881610d88565b805485850187015292850192810161122d565b3461031a57602036600319011261031a57600435600981101561031a5760ff611283602092611e00565b54166040519015158152f35b3461031a57602036600319011261031a576001600160a01b036112b0611d76565b1660005260016020526020604060002054604051908152f35b3461031a57600036600319011261031a57600a546040516001600160a01b039091168152602090f35b3461031a57600036600319011261031a576020602754604051908152f35b3461031a57600036600319011261031a576020601c54604051908152f35b3461031a57600036600319011261031a576020602d54604051908152f35b3461031a57600036600319011261031a5760208054604051908152f35b3461031a57600036600319011261031a576006546001600160a01b0390818116338190036113d357806005549384167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a36001600160a01b03199283161760055516600655005b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b3461031a57602036600319011261031a576001600160a01b03611438611d76565b1660005260176020526020604060002054604051908152f35b3461031a57600036600319011261031a576020601554604051908152f35b3461031a57600036600319011261031a576020600e54604051908152f35b3461031a57600036600319011261031a576020601654604051908152f35b3461031a57606036600319011261031a576020610b4e604435602435600435612024565b3461031a57600036600319011261031a576020601154604051908152f35b3461031a57600036600319011261031a57600d546040516001600160a01b039091168152602090f35b3461031a57600036600319011261031a576020601254604051908152f35b3461031a57600036600319011261031a576020610b4e6124c4565b3461031a57600036600319011261031a576020601954604051908152f35b3461031a57600036600319011261031a576014546040516001600160801b039091168152602090f35b3461031a57600036600319011261031a576020601354604051908152f35b3461031a57606036600319011261031a576115cd611d76565b6115d5611d8c565b6044359081611612575b6040519182526001600160a01b03908116921690600080516020612c6d83398151915290602090a3602060405160018152f35b60018060a01b0380841680600052602060018152846040600020549361163a828610156125ee565b85169384840361164f575b50505050506115df565b8360005260028352604060002033600052835260406000205460001981036116c3575b50849261169a600080516020612c6d833981519152979593600193610ca86020991515612633565b926000525260406000205560005260406000206116b8858254611ffe565b905591858481611645565b90918110611718576020949261169a88600080516020612c6d8339815191529896946116f182600196611ff1565b86600052600285526040600020336000528552604060002055935093959750509294611672565b60405162461bcd60e51b815260048101849052601860248201527745524332303a20616c6c6f77616e636520746f6f206c6f7760401b6044820152606490fd5b3461031a57600036600319011261031a576020602a54604051908152f35b3461031a5761178436611db1565b9183919395949542116106595760018060a01b0392838816948560005260046020526040600020928354600019811461064357611823956105e7956001830190556040519060208201927f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d68452600060408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e081526105ab81611e84565b16036105fe5761031892612810565b3461031a57600036600319011261031a57602b546040516001600160a01b039091168152602090f35b3461031a57602036600319011261031a576001600160a01b0361187c611d76565b1660005260186020526020604060002054604051908152f35b3461031a57600036600319011261031a57602060405160008152f35b3461031a57600036600319011261031a576020602f54604051908152f35b3461031a57604036600319011261031a57600435600981101561031a576118f4611da2565b6008549091906001600160a01b031633036119ad5760ff61191482611e00565b5416151591151591821461197357808260ff61193261196194611e00565b54161515827feeec81de25875ce1725479bb76f720a8defdb43dea041919ae37bb4aae9847c0600080a4611e00565b9060ff80198354169116179055600080f35b60405162461bcd60e51b81526020600482015260126024820152714d61726b65743a2073616d6520737461746560701b6044820152606490fd5b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881d5b985d5d1a1bdc9a5e995960621b6044820152606490fd5b3461031a57604036600319011261031a5761111c611a05611d76565b602435903361285e565b3461031a57606036600319011261031a57611a28611d76565b611a30611da2565b60443590811515820361031a5760018060a01b03928391611a5683600554163314611f25565b15611afa571690811590811591611af2575b5015611ab557806005549283167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a36001600160a01b031991821617600555600680549091169055005b60405162461bcd60e51b81526020600482015260156024820152744f776e61626c653a207a65726f206164647265737360581b6044820152606490fd5b905083611a68565b9150501660018060a01b03196006541617600655600080f35b3461031a57600036600319011261031a5760018060a01b03600f54166040519063d6d7d52560e01b8252602091826004820152600091601054611b5581611e2f565b908160248501526001908181169081600014611d045750600114611cc4575b50509060409181600081809603925af18015611cb857600091600091611c79575b508115611c1c578015611be05760409281601155817f9f9192b5edb17356c524e08d9e025c8e2f6307e6ea52fb7968faa3081f51c3c8600080a25b4260135583519215158352820152f35b60405162461bcd60e51b81526004810184905260146024820152734d61726b65743a20696e76616c6964207261746560601b6044820152606490fd5b50611c2c60135460125490611ffe565b4211611c3d57601154604092611bd0565b60405162461bcd60e51b815260048101839052601460248201527313585c9ad95d0e881c985d19481d1bdbc81bdb1960621b6044820152606490fd5b9150506040813d604011611cb0575b81611c9560409383611ebb565b8101031261031a5781611ca78261228b565b91015183611b95565b3d9150611c88565b6040513d6000823e3d90fd5b935060106000528460002093856000955b838710611cef575050505091810160440191806040611b74565b80548688016044015295019486908201611cd5565b60ff191660448087019190915292151560051b8501909201945082915060409050611b74565b3461031a57604036600319011261031a57602090611d46611d76565b611d4e611d8c565b9060018060a01b03809116600052600384526040600020911660005282526040600020548152f35b600435906001600160a01b038216820361031a57565b602435906001600160a01b038216820361031a57565b60243590811515820361031a57565b60e090600319011261031a576001600160a01b0390600435828116810361031a5791602435908116810361031a5790604435906064359060843560ff8116810361031a579060a4359060c43590565b6009811015611e19576000526007602052604060002090565b634e487b7160e01b600052602160045260246000fd5b90600182811c92168015611e5f575b6020831014611e4957565b634e487b7160e01b600052602260045260246000fd5b91607f1691611e3e565b604081019081106001600160401b0382111761102d57604052565b61010081019081106001600160401b0382111761102d57604052565b608081019081106001600160401b0382111761102d57604052565b90601f801991011681019081106001600160401b0382111761102d57604052565b6020808252825181830181905290939260005b828110611f1157505060409293506000838284010152601f8019910116010190565b818101860151848201604001528501611eef565b15611f2c57565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b15611f7757565b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881b9bdd081d985b1a59607a1b6044820152606490fd5b8181029291811591840414171561064357565b8115611fcd570490565b634e487b7160e01b600052601260045260246000fd5b604d811161064357600a0a90565b9190820391821161064357565b9190820180921161064357565b8181039291600013801582851316918412161761064357565b60145491929161206d9161205e916120549161204a906001600160801b03831690611fb0565b9060801c90611fc3565b93601f5490611fb0565b61206783611fe3565b90611fc3565b808310612135576120816120bd9184611ff1565b916120b86120b26120a9601e546120a361209a86611fe3565b60205490611ffe565b90611fb0565b61206784611fe3565b91611fe3565b61200b565b6509184e72a0009081810291818305149015171561064357670de0b6b3a764000091828102928184051490151715610643578015611fcd57600160ff1b91808314600019831416610643570590600082121561212e57811461064357600003905b808211612129575090565b905090565b509061211e565b505050600090565b6001600160a01b0390811660008181526017602090815260408220549295949391929091811561227e5761216f612ad8565b9061217b861515612298565b6009541683600c54898752601882526064604088205491604051948593849263442c159960e01b8452600484015260248301528960448301525afa908115612273578591612240575b50928594926122206018936121fb612234996121f66121ed60409a620186a06022540490611fb0565b601e5490611fb0565b611fc3565b815190936001600160801b0391869161221691841690611fb0565b9201511690611fc3565b81811061223857035b9783525220546122e4565b9091565b505082612229565b90508381813d831161226c575b6122578183611ebb565b8101031261226857516122346121c4565b8480fd5b503d61224d565b6040513d87823e3d90fd5b5050509192505080918190565b5190811515820361031a57565b1561229f57565b60405162461bcd60e51b815260206004820152601e60248201527f4d61726b65743a2065786368616e676552617465206e6f742076616c696400006044820152606490fd5b6122ef821515612298565b602060018060a01b0360095416916064600c54604051948593849263442c159960e01b845260048401526024830152600060448301525afa908115611cb85760009161235c575b50906121f66123489260225490611fb0565b620186a0612358601e5483611fb0565b0491565b906020823d821161238a575b8161237560209383611ebb565b810103126123875750516121f6612336565b80fd5b3d9150612368565b6001600160a01b031660008181526018602052604081205490926123b5916122e4565b9183526017602052604083205480156124be5781156124be578181106124be57828110156124b4576014546123fe918391610ca89161204a906001600160801b03831690611fb0565b90620186a092838302928084048514901517156124a057612423929161206791611ff1565b91601b5491601c5493612436858561200b565b80820291848212600160ff1b8214166124a057818305149015171561248c57058184820194851291129080158216911516176124785750808212612129575090565b634e487b7160e01b81526011600452602490fd5b634e487b7160e01b83526011600452602483fd5b634e487b7160e01b85526011600452602485fd5b50505050601b5490565b50505090565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031614806125c5575b1561251f577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f000000000000000000000000000000000000000000000000000000000000000082527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a0815260c081018181106001600160401b0382111761102d5760405251902090565b507f000000000000000000000000000000000000000000000000000000000000000046146124f6565b156125f557565b60405162461bcd60e51b815260206004820152601660248201527545524332303a2062616c616e636520746f6f206c6f7760501b6044820152606490fd5b1561263a57565b60405162461bcd60e51b815260206004820152601660248201527545524332303a206e6f207a65726f206164647265737360501b6044820152606490fd5b51906001600160a01b038216820361031a57565b6005811015611e19578061269d5750565b600181036126e55760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b6044820152606490fd5b600281036127325760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606490fd5b60031461273b57565b60405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608490fd5b9291906fa2a8918ca85bafe22016d0b997e4df60600160ff1b0383116128045791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa156127f75781516001600160a01b038116156127f1579190565b50600190565b50604051903d90823e3d90fd5b50505050600090600390565b7fe50de2333c10a9502fcb1d8ae13a51bbf423153dfc63c2b8997665b32154afc360018060a01b038092169160009083825260036020526040822094169384825260205284604082205580a4565b909160207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259160018060a01b03809416938460005260028352604060002095169485600052825280604060002055604051908152a3565b60ff60265416612a33576014546001600160801b0316908115612a2c57600a54604051631848f2bf60e31b8152602093916001600160a01b03919085908290600490829086165afa8015611cb85785916000916129ef575b50600460405180948193631a674cc560e11b8352165afa938415611cb8576000946129bc575b505061294f9192670de0b6b3a764000092839160295490611fb0565b0490818110156129b357612966602a548092611ff1565b8381029080820485149015171561064357612067612987926129a794611ff1565b602754926129a16028549261299c8487611ff1565b611fb0565b04611ffe565b90808211612129575090565b50505060275490565b81813d83116129e8575b6129d08183611ebb565b810103126129e45751925061294f38612933565b8380fd5b503d6129c6565b909181813d8311612a25575b612a058183611ebb565b81010312612a215751908282168203612387575084903861290d565b5080fd5b503d6129fb565b6028549150565b600a5460405163e6abad4960e01b815290602090829060049082906001600160a01b03165afa908115611cb857600091612a6b575090565b906020823d8211612a91575b81612a8460209383611ebb565b8101031261238757505190565b3d9150612a77565b60405190612aa682611e69565b6014546001600160801b038116835260801c6020830152565b6001600160801b03918216908216019190821161064357565b60006020604051612ae881611e69565b82815201526001600160401b0390612b078260255460401c1642611ff1565b918215612b5e57612b5961299c91670de0b6b3a7640000612b4e612b29612a99565b9660018060801b03958694858a5116906301e13380612b466128b5565b041690611fb0565b041682855116612abf565b168252565b509050612b69612a99565b90565b604051612b7881611e69565b6025546001600160401b03908181168352818160401c16612ba0602085019180835242611ff1565b928315612c6557602094816301e13380612bb86128b5565b041681528142168352612bc9612a99565b670de0b6b3a7640000612bee60018060801b039761299c898551168787511690611fb0565b0495612bff81881682845116612abf565b1680825296015160801b6001600160801b031990811690961760145551915192909416931692831760409190911b67ffffffffffffffff60401b16176025557f7484db546dcd57af0104c73c8a6968dfbaf5767f047cee0dadd0499ad7df81a0600080a3565b505050505056feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae672a2646970667358221220f1406785f25656ff9105122c994a488fdfde1771f78a5e73a630e4773713bbcf64736f6c63430008120033"; type BBCommonConstructorParams = | [signer?: Signer] diff --git a/src/typechain/tapioca-bar/factories/markets/bigBang/BBLendingCommon__factory.ts b/src/typechain/tapioca-bar/factories/markets/bigBang/BBLendingCommon__factory.ts index 742d7a3e..2eda7566 100644 --- a/src/typechain/tapioca-bar/factories/markets/bigBang/BBLendingCommon__factory.ts +++ b/src/typechain/tapioca-bar/factories/markets/bigBang/BBLendingCommon__factory.ts @@ -72,13 +72,13 @@ const _abi = [ { indexed: true, internalType: "address", - name: "_oldVal", + name: "oldVal", type: "address", }, { indexed: true, internalType: "address", - name: "_newVal", + name: "newVal", type: "address", }, ], @@ -142,6 +142,25 @@ const _abi = [ name: "ExchangeRateDurationUpdated", type: "event", }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "address", + name: "oldVal", + type: "address", + }, + { + indexed: true, + internalType: "address", + name: "newVal", + type: "address", + }, + ], + name: "LeverageExecutorSet", + type: "event", + }, { anonymous: false, inputs: [ @@ -523,6 +542,37 @@ const _abi = [ name: "UpdateMinMaxMintFee", type: "event", }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "uint256", + name: "oldMin", + type: "uint256", + }, + { + indexed: true, + internalType: "uint256", + name: "newMin", + type: "uint256", + }, + { + indexed: true, + internalType: "uint256", + name: "oldMax", + type: "uint256", + }, + { + indexed: false, + internalType: "uint256", + name: "newMax", + type: "uint256", + }, + ], + name: "UpdateMinMaxMintRange", + type: "event", + }, { inputs: [], name: "DOMAIN_SEPARATOR", @@ -965,6 +1015,19 @@ const _abi = [ stateMutability: "view", type: "function", }, + { + inputs: [], + name: "leverageExecutor", + outputs: [ + { + internalType: "contract ILeverageExecutor", + name: "", + type: "address", + }, + ], + stateMutability: "view", + type: "function", + }, { inputs: [], name: "liquidationBonusAmount", @@ -1043,6 +1106,19 @@ const _abi = [ stateMutability: "view", type: "function", }, + { + inputs: [], + name: "maxMintFeeStart", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, { inputs: [], name: "minDebtRate", @@ -1082,6 +1158,19 @@ const _abi = [ stateMutability: "view", type: "function", }, + { + inputs: [], + name: "minMintFeeStart", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, { inputs: [ { @@ -1347,6 +1436,19 @@ const _abi = [ stateMutability: "view", type: "function", }, + { + inputs: [ + { + internalType: "contract ILeverageExecutor", + name: "_executor", + type: "address", + }, + ], + name: "setLeverageExecutor", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, { inputs: [ { @@ -1633,7 +1735,7 @@ const _abi = [ ] as const; const _bytecode = - "0x61014080604052346200018a5762000017816200018f565b600f81526001602082016e546170696f63612042696742616e6760881b8152602060405162000046816200018f565b8381520192603160f81b845251902091208160e052610100918183524660a0526040519160208301907f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f92838352604085015260608401524660808401523060a084015260a0835260c083019280841060018060401b03851117620001745760408490525190206080523060c052610120908152600580546001600160a01b0319163390811790915560007f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a362013880601b5562015f90601c55612710601d55612ee06020556103e8602d55612bdf9283620001ac8439608051836123fa015260a051836124c5015260c051836123c4015260e051836124490152518261246f015251816124260152f35b634e487b7160e01b600052604160045260246000fd5b600080fd5b604081019081106001600160401b03821117620001745760405256fe608080604052600436101561001357600080fd5b60003560e01c908162a02a2014611c275750806302ce728f14611a10578063078dfbe71461190c578063095ea7b3146118e65780630c4e84f0146117cc57806318160ddd146117b05780631c9e379b146117765780631d4d3a5d1461174d5780631da8bf10146116915780631fb8f81a1461167357806323b872dd146114cf578063331960ff146114b157806334ce998a1461148857806334d441d01461146a5780633644e5151461144f57806337b6b7b91461143157806338d52e0f146114085780633ba0b9a9146113ea5780633f741adb146113c657806340626d8b146113a857806344de240a1461138a578063473e3ce71461136c57806348e4163e146113325780634e71e0c814611284578063529898f214611267578063542afda314611249578063579354621461122b5780636b19ad161461120d5780636c3d8b8f146111e457806370a08231146111aa578063727785471461117457806374645ff3146110e157806374c9e481146110c35780637dc0d1d01461109a5780637ecebe00146110605780637fa0b84e1461102f5780638285ef4014610ffd57806387b2793714610fc35780638c5d0ed314610fa55780638da5cb5b14610f7c578063910dd7c814610d63578063932bc4f814610c8557806399a9702814610c5e5780639e15e89f14610c24578063a9059cbb14610b3d578063b0e21e8a14610b1f578063b27c0e7414610aee578063b7113f1914610acb578063bb4cfe3b14610aad578063bde39c5d14610a8f578063c1ad5c8d14610a6c578063ce8849ed14610a43578063d3fb2a38146105d7578063d505accf14610437578063d8dfeb451461040e578063dd62ed3e146103bd578063de40657714610394578063e0996cb614610376578063e30c39781461034d578063ea64dd561461032f578063eec0f42e14610311578063f791395d146102f35763f8ba4cff146102d357600080fd5b346102ee5760003660031901126102ee576102ec612a69565b005b600080fd5b346102ee5760003660031901126102ee576020602754604051908152f35b346102ee5760003660031901126102ee576020600c54604051908152f35b346102ee5760003660031901126102ee576020601f54604051908152f35b346102ee5760003660031901126102ee576006546040516001600160a01b039091168152602090f35b346102ee5760003660031901126102ee576020601d54604051908152f35b346102ee5760003660031901126102ee576009546040516001600160a01b039091168152602090f35b346102ee5760403660031901126102ee576103d6611c73565b6103de611c89565b9060018060a01b038091166000526002602052604060002091166000526020526020604060002054604051908152f35b346102ee5760003660031901126102ee57600b546040516001600160a01b039091168152602090f35b346102ee5761044536611cae565b9183919395949542116105925760018060a01b0392838816948560005260046020526040600020928354600019811461057c5761052895610520956001830190556040519060208201927f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e2668452600060408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e081526104e481611d81565b5190206104ef6123c1565b9060405190602082019261190160f01b8452602283015260428201526042815261051881611d9d565b519020612688565b919091612589565b1603610537576102ec9261275b565b60405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152606490fd5b634e487b7160e01b600052601160045260246000fd5b60405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b346102ee576101603660031901126102ee576001600160a01b03600435818116908190036102ee576024916001600160401b0383358181116102ee57366023820112156102ee5780600401359182116102ee57368583830101116102ee57604435938385168095036102ee5761065284600554163314611e22565b80610a04575b5084826108a2575b50505081610861575b505060643580610849575b5060843580610831575b5060a4358061081a575b5060c435806107f6575b5060e435806107d2575b5061010435806107a0575b50610124358061072d575b506101443590816106bf57005b601e5482106106ce5750601f55005b60849060326040519162461bcd60e51b8352602060048401528201527f4d61726b65743a206c69717569646174696f6e436f6c6c61746572616c697a616044820152711d1a5bdb94985d19481d1bdbc81cdb585b1b60721b6064820152fd5b61073c620186a0821115611e6d565b601f54811161074e57601e55816106b2565b60405162461bcd60e51b8152602060048201526025818401527f4d61726b65743a20636f6c6c61746572616c697a6174696f6e5261746520746f6044820152646f2062696760d81b6064820152608490fd5b806016547fae6e0ab3b95f0a53ff9660a390ccedcbbf1f2355dce974a9841af106fddcfaba600080a3601655816106a7565b6107e0620186a08210611e6d565b6107ed601b548211611e6d565b601c558161069c565b610804620186a08210611e6d565b610811601c548210611e6d565b601b5581610692565b610828620186a08210611e6d565b601d5581610688565b610840620186a0821115611e6d565b601a558161067e565b610858620186a0821115611e6d565b60195581610674565b816008549182167f5a62d22209e370e38eea92cfddcd228e656e6ec139243392a760a7769f5877fd600080a36001600160a01b031916176008558180610669565b82916108af601054611d2c565b601f81116109a3575b50600090601f841160011461092057600093610913575b5050508160011b916000199060031b1c1916176010555b7fa6f004921c944d4b8bf6e38462b00f36a58d62495d56b51f571ab78f732c9815600080a1838084610660565b01013590508486806108cf565b60106000908152601f1985169550600080516020612b8a83398151915293509091889160205b8782106109845750508460019610610968575b50505050811b016010556108e6565b60001960f88660031b161c199201013516905585808681610959565b8285019093013585556001949094019389929182019190810190610946565b60106000529092509050600080516020612b8a833981519152601f840160051c8101602085106109fd575b91849391601f8994920160051c01905b8181106109eb57506108b8565b600081558594508893506001016109de565b50806109ce565b600f80546001600160a01b0319169190911790557f0b2d6eb667d0522c3eb86e4288afecae6c11591ffd1345d4d12407e0598bca9b600080a185610658565b346102ee5760003660031901126102ee576008546040516001600160a01b039091168152602090f35b346102ee5760003660031901126102ee576020610a876127b2565b604051908152f35b346102ee5760003660031901126102ee576020602854604051908152f35b346102ee5760003660031901126102ee576020601e54604051908152f35b346102ee5760003660031901126102ee57602060ff602554166040519015158152f35b346102ee5760003660031901126102ee5760406024548151906001600160401b03908181168352831c166020820152f35b346102ee5760003660031901126102ee576020601a54604051908152f35b346102ee5760403660031901126102ee57610b56611c73565b602435908115801590610c12575b610b9a575b6040519182526001600160a01b0316903390600080516020612b6a83398151915290602090a3602060405160018152f35b336000526001602052604060002054610bb5838210156124eb565b6001600160a01b038216908333839003610bd2575b505050610b69565b610be691610be1841515612530565b611eee565b3360005260016020526040600020556000526040600020610c08838254611efb565b9055828083610bca565b50336001600160a01b03821614610b64565b346102ee5760403660031901126102ee576060610c4b610c42611c73565b6024359061203a565b9060405192835260208301526040820152f35b346102ee5760403660031901126102ee576020610a87610c7c611c73565b6024359061228f565b346102ee5760003660031901126102ee57604051600090602b54610ca881611d2c565b808352600191808316908115610d3b5750600114610ce1575b610cdd83610cd181870382611db8565b60405191829182611dd9565b0390f35b602b600090815260209450917f11c44e4875b74d31ff9fd779bf2566af7bd15b87fc985d01f5094b89e3669e4f5b828410610d2857505050810190910190610cd181610cc1565b8054858501870152928501928101610d0f565b610cdd9550610cd193506020915091849260ff191682840152151560051b8201019350610cc1565b346102ee5760403660031901126102ee576001600160401b036004358181116102ee57366023820112156102ee578060040135918211610f665760405191610db5601f8201601f191660200184611db8565b808352602083019136602483830101116102ee57816000926024602093018537840101526024359161ffff831683036102ee576101009182828051810103126102ee57610e0190612188565b610e0d60408301612575565b91610e1a60608201612575565b9460808201519460a08301519260c08101519160ff831683036102ee5760e082015191015191844211610592578515610f40577f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e2665b6001600160a01b03881660009081526004602052604090208054909690600019811461057c5761ffff61052097610efd9960018401905560405194602086015216604084015260018060a01b038a16606084015260018060a01b038c1660808401528a60a084015260c083015260e082015260e08152610eee81611d81565b602081519101206104ef6123c1565b6001600160a01b038381169116036105375715610f2a576102ec926001600160a01b03908116911661275b565b6102ec926001600160a01b03908116911661270d565b7f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d6610e6f565b634e487b7160e01b600052604160045260246000fd5b346102ee5760003660031901126102ee576005546040516001600160a01b039091168152602090f35b346102ee5760003660031901126102ee576020601b54604051908152f35b346102ee5760203660031901126102ee576001600160a01b03610fe4611c73565b1660005260236020526020604060002054604051908152f35b346102ee5760003660031901126102ee57601454604080516001600160801b038316815260809290921c602083015290f35b346102ee5760403660031901126102ee5761105561104b611c73565b602435903361270d565b602060405160018152f35b346102ee5760203660031901126102ee576001600160a01b03611081611c73565b1660005260046020526020604060002054604051908152f35b346102ee5760003660031901126102ee57600f546040516001600160a01b039091168152602090f35b346102ee5760003660031901126102ee576020602d54604051908152f35b346102ee5760003660031901126102ee5760405160009060105461110481611d2c565b808352600191808316908115610d3b575060011461112c57610cdd83610cd181870382611db8565b601060009081526020945091600080516020612b8a8339815191525b82841061116157505050810190910190610cd181610cc1565b8054858501870152928501928101611148565b346102ee5760203660031901126102ee5760043560098110156102ee5760ff61119e602092611cfd565b54166040519015158152f35b346102ee5760203660031901126102ee576001600160a01b036111cb611c73565b1660005260016020526020604060002054604051908152f35b346102ee5760003660031901126102ee57600a546040516001600160a01b039091168152602090f35b346102ee5760003660031901126102ee576020602654604051908152f35b346102ee5760003660031901126102ee576020601c54604051908152f35b346102ee5760003660031901126102ee576020602c54604051908152f35b346102ee5760003660031901126102ee5760208054604051908152f35b346102ee5760003660031901126102ee576006546001600160a01b0390818116338190036112ee57806005549384167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a36001600160a01b03199283161760055516600655005b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b346102ee5760203660031901126102ee576001600160a01b03611353611c73565b1660005260176020526020604060002054604051908152f35b346102ee5760003660031901126102ee576020601554604051908152f35b346102ee5760003660031901126102ee576020600e54604051908152f35b346102ee5760003660031901126102ee576020601654604051908152f35b346102ee5760603660031901126102ee576020610a87604435602435600435611f21565b346102ee5760003660031901126102ee576020601154604051908152f35b346102ee5760003660031901126102ee57600d546040516001600160a01b039091168152602090f35b346102ee5760003660031901126102ee576020601254604051908152f35b346102ee5760003660031901126102ee576020610a876123c1565b346102ee5760003660031901126102ee576020601954604051908152f35b346102ee5760003660031901126102ee576014546040516001600160801b039091168152602090f35b346102ee5760003660031901126102ee576020601354604051908152f35b346102ee5760603660031901126102ee576114e8611c73565b6114f0611c89565b604435908161152d575b6040519182526001600160a01b03908116921690600080516020612b6a83398151915290602090a3602060405160018152f35b60018060a01b03808416806000526020600181528460406000205493611555828610156124eb565b85169384840361156a575b50505050506114fa565b8360005260028352604060002033600052835260406000205460001981036115de575b5084926115b5600080516020612b6a833981519152979593600193610be16020991515612530565b926000525260406000205560005260406000206115d3858254611efb565b905591858481611560565b9091811061163357602094926115b588600080516020612b6a83398151915298969461160c82600196611eee565b8660005260028552604060002033600052855260406000205593509395975050929461158d565b60405162461bcd60e51b815260048101849052601860248201527745524332303a20616c6c6f77616e636520746f6f206c6f7760401b6044820152606490fd5b346102ee5760003660031901126102ee576020602954604051908152f35b346102ee5761169f36611cae565b9183919395949542116105925760018060a01b0392838816948560005260046020526040600020928354600019811461057c5761173e95610520956001830190556040519060208201927f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d68452600060408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e081526104e481611d81565b1603610537576102ec9261270d565b346102ee5760003660031901126102ee57602a546040516001600160a01b039091168152602090f35b346102ee5760203660031901126102ee576001600160a01b03611797611c73565b1660005260186020526020604060002054604051908152f35b346102ee5760003660031901126102ee57602060405160008152f35b346102ee5760403660031901126102ee5760043560098110156102ee576117f1611c9f565b6008549091906001600160a01b031633036118aa5760ff61181182611cfd565b5416151591151591821461187057808260ff61182f61185e94611cfd565b54161515827feeec81de25875ce1725479bb76f720a8defdb43dea041919ae37bb4aae9847c0600080a4611cfd565b9060ff80198354169116179055600080f35b60405162461bcd60e51b81526020600482015260126024820152714d61726b65743a2073616d6520737461746560701b6044820152606490fd5b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881d5b985d5d1a1bdc9a5e995960621b6044820152606490fd5b346102ee5760403660031901126102ee57611055611902611c73565b602435903361275b565b346102ee5760603660031901126102ee57611925611c73565b61192d611c9f565b6044359081151582036102ee5760018060a01b0392839161195383600554163314611e22565b156119f75716908115908115916119ef575b50156119b257806005549283167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a36001600160a01b031991821617600555600680549091169055005b60405162461bcd60e51b81526020600482015260156024820152744f776e61626c653a207a65726f206164647265737360581b6044820152606490fd5b905083611965565b9150501660018060a01b03196006541617600655600080f35b346102ee5760003660031901126102ee5760018060a01b03600f54166040519063d6d7d52560e01b8252602091826004820152600091601054611a5281611d2c565b908160248501526001908181169081600014611c015750600114611bc1575b50509060409181600081809603925af18015611bb557600091600091611b76575b508115611b19578015611add5760409281601155817f9f9192b5edb17356c524e08d9e025c8e2f6307e6ea52fb7968faa3081f51c3c8600080a25b4260135583519215158352820152f35b60405162461bcd60e51b81526004810184905260146024820152734d61726b65743a20696e76616c6964207261746560601b6044820152606490fd5b50611b2960135460125490611efb565b4211611b3a57601154604092611acd565b60405162461bcd60e51b815260048101839052601460248201527313585c9ad95d0e881c985d19481d1bdbc81bdb1960621b6044820152606490fd5b9150506040813d604011611bad575b81611b9260409383611db8565b810103126102ee5781611ba482612188565b91015183611a92565b3d9150611b85565b6040513d6000823e3d90fd5b935060106000528460002093856000955b838710611bec575050505091810160440191806040611a71565b80548688016044015295019486908201611bd2565b60ff191660448087019190915292151560051b8501909201945082915060409050611a71565b346102ee5760403660031901126102ee57602090611c43611c73565b611c4b611c89565b9060018060a01b03809116600052600384526040600020911660005282526040600020548152f35b600435906001600160a01b03821682036102ee57565b602435906001600160a01b03821682036102ee57565b6024359081151582036102ee57565b60e09060031901126102ee576001600160a01b039060043582811681036102ee579160243590811681036102ee5790604435906064359060843560ff811681036102ee579060a4359060c43590565b6009811015611d16576000526007602052604060002090565b634e487b7160e01b600052602160045260246000fd5b90600182811c92168015611d5c575b6020831014611d4657565b634e487b7160e01b600052602260045260246000fd5b91607f1691611d3b565b604081019081106001600160401b03821117610f6657604052565b61010081019081106001600160401b03821117610f6657604052565b608081019081106001600160401b03821117610f6657604052565b90601f801991011681019081106001600160401b03821117610f6657604052565b6020808252825181830181905290939260005b828110611e0e57505060409293506000838284010152601f8019910116010190565b818101860151848201604001528501611dec565b15611e2957565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b15611e7457565b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881b9bdd081d985b1a59607a1b6044820152606490fd5b8181029291811591840414171561057c57565b8115611eca570490565b634e487b7160e01b600052601260045260246000fd5b604d811161057c57600a0a90565b9190820391821161057c57565b9190820180921161057c57565b8181039291600013801582851316918412161761057c57565b601454919291611f6a91611f5b91611f5191611f47906001600160801b03831690611ead565b9060801c90611ec0565b93601f5490611ead565b611f6483611ee0565b90611ec0565b80831061203257611f7e611fba9184611eee565b91611fb5611faf611fa6601e54611fa0611f9786611ee0565b60205490611efb565b90611ead565b611f6484611ee0565b91611ee0565b611f08565b6509184e72a0009081810291818305149015171561057c57670de0b6b3a76400009182810292818405149015171561057c578015611eca57600160ff1b9180831460001983141661057c570590600082121561202b57811461057c57600003905b808211612026575090565b905090565b509061201b565b505050600090565b6001600160a01b0390811660008181526017602090815260408220549295949391929091811561217b5761206c6129d5565b90612078861515612195565b6009541683600c54898752601882526064604088205491604051948593849263442c159960e01b8452600484015260248301528960448301525afa90811561217057859161213d575b509285949261211d6018936120f8612131996120f36120ea60409a620186a06021540490611ead565b601e5490611ead565b611ec0565b815190936001600160801b0391869161211391841690611ead565b9201511690611ec0565b81811061213557035b9783525220546121e1565b9091565b505082612126565b90508381813d8311612169575b6121548183611db8565b8101031261216557516121316120c1565b8480fd5b503d61214a565b6040513d87823e3d90fd5b5050509192505080918190565b519081151582036102ee57565b1561219c57565b60405162461bcd60e51b815260206004820152601e60248201527f4d61726b65743a2065786368616e676552617465206e6f742076616c696400006044820152606490fd5b6121ec821515612195565b602060018060a01b0360095416916064600c54604051948593849263442c159960e01b845260048401526024830152600060448301525afa908115611bb557600091612259575b50906120f36122459260215490611ead565b620186a0612255601e5483611ead565b0491565b906020823d8211612287575b8161227260209383611db8565b810103126122845750516120f3612233565b80fd5b3d9150612265565b6001600160a01b031660008181526018602052604081205490926122b2916121e1565b9183526017602052604083205480156123bb5781156123bb578181106123bb57828110156123b1576014546122fb918391610be191611f47906001600160801b03831690611ead565b90620186a0928383029280840485149015171561239d576123209291611f6491611eee565b91601b5491601c54936123338585611f08565b80820291848212600160ff1b82141661239d57818305149015171561238957058184820194851291129080158216911516176123755750808212612026575090565b634e487b7160e01b81526011600452602490fd5b634e487b7160e01b83526011600452602483fd5b634e487b7160e01b85526011600452602485fd5b50505050601b5490565b50505090565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031614806124c2575b1561241c577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f000000000000000000000000000000000000000000000000000000000000000082527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a0815260c081018181106001600160401b03821117610f665760405251902090565b507f000000000000000000000000000000000000000000000000000000000000000046146123f3565b156124f257565b60405162461bcd60e51b815260206004820152601660248201527545524332303a2062616c616e636520746f6f206c6f7760501b6044820152606490fd5b1561253757565b60405162461bcd60e51b815260206004820152601660248201527545524332303a206e6f207a65726f206164647265737360501b6044820152606490fd5b51906001600160a01b03821682036102ee57565b6005811015611d16578061259a5750565b600181036125e25760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b6044820152606490fd5b6002810361262f5760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606490fd5b60031461263857565b60405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608490fd5b9291906fa2a8918ca85bafe22016d0b997e4df60600160ff1b0383116127015791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa156126f45781516001600160a01b038116156126ee579190565b50600190565b50604051903d90823e3d90fd5b50505050600090600390565b7fe50de2333c10a9502fcb1d8ae13a51bbf423153dfc63c2b8997665b32154afc360018060a01b038092169160009083825260036020526040822094169384825260205284604082205580a4565b909160207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259160018060a01b03809416938460005260028352604060002095169485600052825280604060002055604051908152a3565b60ff60255416612930576014546001600160801b031690811561292957600a54604051631848f2bf60e31b8152602093916001600160a01b03919085908290600490829086165afa8015611bb55785916000916128ec575b50600460405180948193631a674cc560e11b8352165afa938415611bb5576000946128b9575b505061284c9192670de0b6b3a764000092839160285490611ead565b0490818110156128b0576128636029548092611eee565b8381029080820485149015171561057c57611f64612884926128a494611eee565b6026549261289e602754926128998487611eee565b611ead565b04611efb565b90808211612026575090565b50505060265490565b81813d83116128e5575b6128cd8183611db8565b810103126128e15751925061284c38612830565b8380fd5b503d6128c3565b909181813d8311612922575b6129028183611db8565b8101031261291e5751908282168203612284575084903861280a565b5080fd5b503d6128f8565b6027549150565b600a5460405163e6abad4960e01b815290602090829060049082906001600160a01b03165afa908115611bb557600091612968575090565b906020823d821161298e575b8161298160209383611db8565b8101031261228457505190565b3d9150612974565b604051906129a382611d66565b6014546001600160801b038116835260801c6020830152565b6001600160801b03918216908216019190821161057c57565b600060206040516129e581611d66565b82815201526001600160401b0390612a048260245460401c1642611eee565b918215612a5b57612a5661289991670de0b6b3a7640000612a4b612a26612996565b9660018060801b03958694858a5116906301e13380612a436127b2565b041690611ead565b0416828551166129bc565b168252565b509050612a66612996565b90565b604051612a7581611d66565b6024546001600160401b03908181168352818160401c16612a9d602085019180835242611eee565b928315612b6257602094816301e13380612ab56127b2565b041681528142168352612ac6612996565b670de0b6b3a7640000612aeb60018060801b0397612899898551168787511690611ead565b0495612afc818816828451166129bc565b1680825296015160801b6001600160801b031990811690961760145551915192909416931692831760409190911b67ffffffffffffffff60401b16176024557f7484db546dcd57af0104c73c8a6968dfbaf5767f047cee0dadd0499ad7df81a0600080a3565b505050505056feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae672a2646970667358221220421a530c998631c56a8d4e60d98acc9217a38659635c3f947a0ebf1b3b58a90464736f6c63430008120033"; + "0x61014080604052346200018a5762000017816200018f565b600f81526001602082016e546170696f63612042696742616e6760881b8152602060405162000046816200018f565b8381520192603160f81b845251902091208160e052610100918183524660a0526040519160208301907f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f92838352604085015260608401524660808401523060a084015260a0835260c083019280841060018060401b03851117620001745760408490525190206080523060c052610120908152600580546001600160a01b0319163390811790915560007f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a362013880601b5562015f90601c55612710601d55612ee06020556103e8602e55612ce29283620001ac8439608051836124fd015260a051836125c8015260c051836124c7015260e0518361254c01525182612572015251816125290152f35b634e487b7160e01b600052604160045260246000fd5b600080fd5b604081019081106001600160401b03821117620001745760405256fe608080604052600436101561001357600080fd5b60003560e01c908162a02a2014611d2a5750806302ce728f14611b13578063078dfbe714611a0f578063095ea7b3146119e95780630c4e84f0146118cf5780630f8b29ea146118b157806318160ddd146118955780631c9e379b1461185b5780631d4d3a5d146118325780631da8bf10146117765780631fb8f81a1461175857806323b872dd146115b4578063331960ff1461159657806334ce998a1461156d57806334d441d01461154f5780633644e5151461153457806337b6b7b91461151657806338d52e0f146114ed5780633ba0b9a9146114cf5780633f741adb146114ab57806340626d8b1461148d57806344de240a1461146f578063473e3ce71461145157806348e4163e146114175780634e71e0c814611369578063529898f21461134c578063542afda31461132e57806357935462146113105780636b19ad16146112f25780636c3d8b8f146112c957806370a082311461128f578063727785471461125957806374645ff3146111c657806374c9e481146111a8578063790c84671461118a5780637dc0d1d0146111615780637ecebe00146111275780637fa0b84e146110f65780638285ef40146110c457806387b279371461108a5780638c5d0ed31461106c5780638da5cb5b14611043578063910dd7c814610e2a578063932bc4f814610d4c57806399a9702814610d255780639e15e89f14610ceb578063a9059cbb14610c04578063b0e21e8a14610be6578063b27c0e7414610bb5578063b7113f1914610b92578063bb4cfe3b14610b74578063bde39c5d14610b56578063c1ad5c8d14610b33578063ce8849ed14610b0a578063d3fb2a381461069e578063d505accf146104fe578063d8dfeb45146104d5578063da863f0e146104ac578063dd62ed3e1461045b578063de40657714610432578063e0996cb614610414578063e30c3978146103eb578063ea64dd56146103cd578063eec0f42e146103af578063ef2b234a1461033d578063f791395d1461031f5763f8ba4cff146102ff57600080fd5b3461031a57600036600319011261031a57610318612b6c565b005b600080fd5b3461031a57600036600319011261031a576020602854604051908152f35b3461031a57602036600319011261031a576004356001600160a01b038181169182900361031a5761037381600554163314611f25565b816021549182167ffb4fd7114609dd603b57adbc2082205bfbbcabf9265c4b437b472f5c592b8cd7600080a36001600160a01b03191617602155005b3461031a57600036600319011261031a576020600c54604051908152f35b3461031a57600036600319011261031a576020601f54604051908152f35b3461031a57600036600319011261031a576006546040516001600160a01b039091168152602090f35b3461031a57600036600319011261031a576020601d54604051908152f35b3461031a57600036600319011261031a576009546040516001600160a01b039091168152602090f35b3461031a57604036600319011261031a57610474611d76565b61047c611d8c565b9060018060a01b038091166000526002602052604060002091166000526020526020604060002054604051908152f35b3461031a57600036600319011261031a576021546040516001600160a01b039091168152602090f35b3461031a57600036600319011261031a57600b546040516001600160a01b039091168152602090f35b3461031a5761050c36611db1565b9183919395949542116106595760018060a01b03928388169485600052600460205260406000209283546000198114610643576105ef956105e7956001830190556040519060208201927f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e2668452600060408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e081526105ab81611e84565b5190206105b66124c4565b9060405190602082019261190160f01b845260228301526042820152604281526105df81611ea0565b51902061278b565b91909161268c565b16036105fe576103189261285e565b60405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152606490fd5b634e487b7160e01b600052601160045260246000fd5b60405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b3461031a5761016036600319011261031a576001600160a01b036004358181169081900361031a576024916001600160401b03833581811161031a573660238201121561031a57806004013591821161031a573685838301011161031a576044359383851680950361031a5761071984600554163314611f25565b80610acb575b508482610969575b50505081610928575b505060643580610910575b50608435806108f8575b5060a435806108e1575b5060c435806108bd575b5060e43580610899575b506101043580610867575b5061012435806107f4575b5061014435908161078657005b601e5482106107955750601f55005b60849060326040519162461bcd60e51b8352602060048401528201527f4d61726b65743a206c69717569646174696f6e436f6c6c61746572616c697a616044820152711d1a5bdb94985d19481d1bdbc81cdb585b1b60721b6064820152fd5b610803620186a0821115611f70565b601f54811161081557601e5581610779565b60405162461bcd60e51b8152602060048201526025818401527f4d61726b65743a20636f6c6c61746572616c697a6174696f6e5261746520746f6044820152646f2062696760d81b6064820152608490fd5b806016547fae6e0ab3b95f0a53ff9660a390ccedcbbf1f2355dce974a9841af106fddcfaba600080a36016558161076e565b6108a7620186a08210611f70565b6108b4601b548211611f70565b601c5581610763565b6108cb620186a08210611f70565b6108d8601c548210611f70565b601b5581610759565b6108ef620186a08210611f70565b601d558161074f565b610907620186a0821115611f70565b601a5581610745565b61091f620186a0821115611f70565b6019558161073b565b816008549182167f5a62d22209e370e38eea92cfddcd228e656e6ec139243392a760a7769f5877fd600080a36001600160a01b031916176008558180610730565b8291610976601054611e2f565b601f8111610a6a575b50600090601f84116001146109e7576000936109da575b5050508160011b916000199060031b1c1916176010555b7fa6f004921c944d4b8bf6e38462b00f36a58d62495d56b51f571ab78f732c9815600080a1838084610727565b0101359050848680610996565b60106000908152601f1985169550600080516020612c8d83398151915293509091889160205b878210610a4b5750508460019610610a2f575b50505050811b016010556109ad565b60001960f88660031b161c199201013516905585808681610a20565b8285019093013585556001949094019389929182019190810190610a0d565b60106000529092509050600080516020612c8d833981519152601f840160051c810160208510610ac4575b91849391601f8994920160051c01905b818110610ab2575061097f565b60008155859450889350600101610aa5565b5080610a95565b600f80546001600160a01b0319169190911790557f0b2d6eb667d0522c3eb86e4288afecae6c11591ffd1345d4d12407e0598bca9b600080a18561071f565b3461031a57600036600319011261031a576008546040516001600160a01b039091168152602090f35b3461031a57600036600319011261031a576020610b4e6128b5565b604051908152f35b3461031a57600036600319011261031a576020602954604051908152f35b3461031a57600036600319011261031a576020601e54604051908152f35b3461031a57600036600319011261031a57602060ff602654166040519015158152f35b3461031a57600036600319011261031a5760406025548151906001600160401b03908181168352831c166020820152f35b3461031a57600036600319011261031a576020601a54604051908152f35b3461031a57604036600319011261031a57610c1d611d76565b602435908115801590610cd9575b610c61575b6040519182526001600160a01b0316903390600080516020612c6d83398151915290602090a3602060405160018152f35b336000526001602052604060002054610c7c838210156125ee565b6001600160a01b038216908333839003610c99575b505050610c30565b610cad91610ca8841515612633565b611ff1565b3360005260016020526040600020556000526040600020610ccf838254611ffe565b9055828083610c91565b50336001600160a01b03821614610c2b565b3461031a57604036600319011261031a576060610d12610d09611d76565b6024359061213d565b9060405192835260208301526040820152f35b3461031a57604036600319011261031a576020610b4e610d43611d76565b60243590612392565b3461031a57600036600319011261031a57604051600090602c54610d6f81611e2f565b808352600191808316908115610e025750600114610da8575b610da483610d9881870382611ebb565b60405191829182611edc565b0390f35b602c600090815260209450917f7416c943b4a09859521022fd2e90eac0dd9026dad28fa317782a135f28a860915b828410610def57505050810190910190610d9881610d88565b8054858501870152928501928101610dd6565b610da49550610d9893506020915091849260ff191682840152151560051b8201019350610d88565b3461031a57604036600319011261031a576001600160401b0360043581811161031a573660238201121561031a57806004013591821161102d5760405191610e7c601f8201601f191660200184611ebb565b8083526020830191366024838301011161031a57816000926024602093018537840101526024359161ffff8316830361031a5761010091828280518101031261031a57610ec89061228b565b610ed460408301612678565b91610ee160608201612678565b9460808201519460a08301519260c08101519160ff8316830361031a5760e082015191015191844211610659578515611007577f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e2665b6001600160a01b0388166000908152600460205260409020805490969060001981146106435761ffff6105e797610fc49960018401905560405194602086015216604084015260018060a01b038a16606084015260018060a01b038c1660808401528a60a084015260c083015260e082015260e08152610fb581611e84565b602081519101206105b66124c4565b6001600160a01b038381169116036105fe5715610ff157610318926001600160a01b03908116911661285e565b610318926001600160a01b039081169116612810565b7f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d6610f36565b634e487b7160e01b600052604160045260246000fd5b3461031a57600036600319011261031a576005546040516001600160a01b039091168152602090f35b3461031a57600036600319011261031a576020601b54604051908152f35b3461031a57602036600319011261031a576001600160a01b036110ab611d76565b1660005260246020526020604060002054604051908152f35b3461031a57600036600319011261031a57601454604080516001600160801b038316815260809290921c602083015290f35b3461031a57604036600319011261031a5761111c611112611d76565b6024359033612810565b602060405160018152f35b3461031a57602036600319011261031a576001600160a01b03611148611d76565b1660005260046020526020604060002054604051908152f35b3461031a57600036600319011261031a57600f546040516001600160a01b039091168152602090f35b3461031a57600036600319011261031a576020603054604051908152f35b3461031a57600036600319011261031a576020602e54604051908152f35b3461031a57600036600319011261031a576040516000906010546111e981611e2f565b808352600191808316908115610e02575060011461121157610da483610d9881870382611ebb565b601060009081526020945091600080516020612c8d8339815191525b82841061124657505050810190910190610d9881610d88565b805485850187015292850192810161122d565b3461031a57602036600319011261031a57600435600981101561031a5760ff611283602092611e00565b54166040519015158152f35b3461031a57602036600319011261031a576001600160a01b036112b0611d76565b1660005260016020526020604060002054604051908152f35b3461031a57600036600319011261031a57600a546040516001600160a01b039091168152602090f35b3461031a57600036600319011261031a576020602754604051908152f35b3461031a57600036600319011261031a576020601c54604051908152f35b3461031a57600036600319011261031a576020602d54604051908152f35b3461031a57600036600319011261031a5760208054604051908152f35b3461031a57600036600319011261031a576006546001600160a01b0390818116338190036113d357806005549384167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a36001600160a01b03199283161760055516600655005b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b3461031a57602036600319011261031a576001600160a01b03611438611d76565b1660005260176020526020604060002054604051908152f35b3461031a57600036600319011261031a576020601554604051908152f35b3461031a57600036600319011261031a576020600e54604051908152f35b3461031a57600036600319011261031a576020601654604051908152f35b3461031a57606036600319011261031a576020610b4e604435602435600435612024565b3461031a57600036600319011261031a576020601154604051908152f35b3461031a57600036600319011261031a57600d546040516001600160a01b039091168152602090f35b3461031a57600036600319011261031a576020601254604051908152f35b3461031a57600036600319011261031a576020610b4e6124c4565b3461031a57600036600319011261031a576020601954604051908152f35b3461031a57600036600319011261031a576014546040516001600160801b039091168152602090f35b3461031a57600036600319011261031a576020601354604051908152f35b3461031a57606036600319011261031a576115cd611d76565b6115d5611d8c565b6044359081611612575b6040519182526001600160a01b03908116921690600080516020612c6d83398151915290602090a3602060405160018152f35b60018060a01b0380841680600052602060018152846040600020549361163a828610156125ee565b85169384840361164f575b50505050506115df565b8360005260028352604060002033600052835260406000205460001981036116c3575b50849261169a600080516020612c6d833981519152979593600193610ca86020991515612633565b926000525260406000205560005260406000206116b8858254611ffe565b905591858481611645565b90918110611718576020949261169a88600080516020612c6d8339815191529896946116f182600196611ff1565b86600052600285526040600020336000528552604060002055935093959750509294611672565b60405162461bcd60e51b815260048101849052601860248201527745524332303a20616c6c6f77616e636520746f6f206c6f7760401b6044820152606490fd5b3461031a57600036600319011261031a576020602a54604051908152f35b3461031a5761178436611db1565b9183919395949542116106595760018060a01b0392838816948560005260046020526040600020928354600019811461064357611823956105e7956001830190556040519060208201927f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d68452600060408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e081526105ab81611e84565b16036105fe5761031892612810565b3461031a57600036600319011261031a57602b546040516001600160a01b039091168152602090f35b3461031a57602036600319011261031a576001600160a01b0361187c611d76565b1660005260186020526020604060002054604051908152f35b3461031a57600036600319011261031a57602060405160008152f35b3461031a57600036600319011261031a576020602f54604051908152f35b3461031a57604036600319011261031a57600435600981101561031a576118f4611da2565b6008549091906001600160a01b031633036119ad5760ff61191482611e00565b5416151591151591821461197357808260ff61193261196194611e00565b54161515827feeec81de25875ce1725479bb76f720a8defdb43dea041919ae37bb4aae9847c0600080a4611e00565b9060ff80198354169116179055600080f35b60405162461bcd60e51b81526020600482015260126024820152714d61726b65743a2073616d6520737461746560701b6044820152606490fd5b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881d5b985d5d1a1bdc9a5e995960621b6044820152606490fd5b3461031a57604036600319011261031a5761111c611a05611d76565b602435903361285e565b3461031a57606036600319011261031a57611a28611d76565b611a30611da2565b60443590811515820361031a5760018060a01b03928391611a5683600554163314611f25565b15611afa571690811590811591611af2575b5015611ab557806005549283167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a36001600160a01b031991821617600555600680549091169055005b60405162461bcd60e51b81526020600482015260156024820152744f776e61626c653a207a65726f206164647265737360581b6044820152606490fd5b905083611a68565b9150501660018060a01b03196006541617600655600080f35b3461031a57600036600319011261031a5760018060a01b03600f54166040519063d6d7d52560e01b8252602091826004820152600091601054611b5581611e2f565b908160248501526001908181169081600014611d045750600114611cc4575b50509060409181600081809603925af18015611cb857600091600091611c79575b508115611c1c578015611be05760409281601155817f9f9192b5edb17356c524e08d9e025c8e2f6307e6ea52fb7968faa3081f51c3c8600080a25b4260135583519215158352820152f35b60405162461bcd60e51b81526004810184905260146024820152734d61726b65743a20696e76616c6964207261746560601b6044820152606490fd5b50611c2c60135460125490611ffe565b4211611c3d57601154604092611bd0565b60405162461bcd60e51b815260048101839052601460248201527313585c9ad95d0e881c985d19481d1bdbc81bdb1960621b6044820152606490fd5b9150506040813d604011611cb0575b81611c9560409383611ebb565b8101031261031a5781611ca78261228b565b91015183611b95565b3d9150611c88565b6040513d6000823e3d90fd5b935060106000528460002093856000955b838710611cef575050505091810160440191806040611b74565b80548688016044015295019486908201611cd5565b60ff191660448087019190915292151560051b8501909201945082915060409050611b74565b3461031a57604036600319011261031a57602090611d46611d76565b611d4e611d8c565b9060018060a01b03809116600052600384526040600020911660005282526040600020548152f35b600435906001600160a01b038216820361031a57565b602435906001600160a01b038216820361031a57565b60243590811515820361031a57565b60e090600319011261031a576001600160a01b0390600435828116810361031a5791602435908116810361031a5790604435906064359060843560ff8116810361031a579060a4359060c43590565b6009811015611e19576000526007602052604060002090565b634e487b7160e01b600052602160045260246000fd5b90600182811c92168015611e5f575b6020831014611e4957565b634e487b7160e01b600052602260045260246000fd5b91607f1691611e3e565b604081019081106001600160401b0382111761102d57604052565b61010081019081106001600160401b0382111761102d57604052565b608081019081106001600160401b0382111761102d57604052565b90601f801991011681019081106001600160401b0382111761102d57604052565b6020808252825181830181905290939260005b828110611f1157505060409293506000838284010152601f8019910116010190565b818101860151848201604001528501611eef565b15611f2c57565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b15611f7757565b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881b9bdd081d985b1a59607a1b6044820152606490fd5b8181029291811591840414171561064357565b8115611fcd570490565b634e487b7160e01b600052601260045260246000fd5b604d811161064357600a0a90565b9190820391821161064357565b9190820180921161064357565b8181039291600013801582851316918412161761064357565b60145491929161206d9161205e916120549161204a906001600160801b03831690611fb0565b9060801c90611fc3565b93601f5490611fb0565b61206783611fe3565b90611fc3565b808310612135576120816120bd9184611ff1565b916120b86120b26120a9601e546120a361209a86611fe3565b60205490611ffe565b90611fb0565b61206784611fe3565b91611fe3565b61200b565b6509184e72a0009081810291818305149015171561064357670de0b6b3a764000091828102928184051490151715610643578015611fcd57600160ff1b91808314600019831416610643570590600082121561212e57811461064357600003905b808211612129575090565b905090565b509061211e565b505050600090565b6001600160a01b0390811660008181526017602090815260408220549295949391929091811561227e5761216f612ad8565b9061217b861515612298565b6009541683600c54898752601882526064604088205491604051948593849263442c159960e01b8452600484015260248301528960448301525afa908115612273578591612240575b50928594926122206018936121fb612234996121f66121ed60409a620186a06022540490611fb0565b601e5490611fb0565b611fc3565b815190936001600160801b0391869161221691841690611fb0565b9201511690611fc3565b81811061223857035b9783525220546122e4565b9091565b505082612229565b90508381813d831161226c575b6122578183611ebb565b8101031261226857516122346121c4565b8480fd5b503d61224d565b6040513d87823e3d90fd5b5050509192505080918190565b5190811515820361031a57565b1561229f57565b60405162461bcd60e51b815260206004820152601e60248201527f4d61726b65743a2065786368616e676552617465206e6f742076616c696400006044820152606490fd5b6122ef821515612298565b602060018060a01b0360095416916064600c54604051948593849263442c159960e01b845260048401526024830152600060448301525afa908115611cb85760009161235c575b50906121f66123489260225490611fb0565b620186a0612358601e5483611fb0565b0491565b906020823d821161238a575b8161237560209383611ebb565b810103126123875750516121f6612336565b80fd5b3d9150612368565b6001600160a01b031660008181526018602052604081205490926123b5916122e4565b9183526017602052604083205480156124be5781156124be578181106124be57828110156124b4576014546123fe918391610ca89161204a906001600160801b03831690611fb0565b90620186a092838302928084048514901517156124a057612423929161206791611ff1565b91601b5491601c5493612436858561200b565b80820291848212600160ff1b8214166124a057818305149015171561248c57058184820194851291129080158216911516176124785750808212612129575090565b634e487b7160e01b81526011600452602490fd5b634e487b7160e01b83526011600452602483fd5b634e487b7160e01b85526011600452602485fd5b50505050601b5490565b50505090565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031614806125c5575b1561251f577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f000000000000000000000000000000000000000000000000000000000000000082527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a0815260c081018181106001600160401b0382111761102d5760405251902090565b507f000000000000000000000000000000000000000000000000000000000000000046146124f6565b156125f557565b60405162461bcd60e51b815260206004820152601660248201527545524332303a2062616c616e636520746f6f206c6f7760501b6044820152606490fd5b1561263a57565b60405162461bcd60e51b815260206004820152601660248201527545524332303a206e6f207a65726f206164647265737360501b6044820152606490fd5b51906001600160a01b038216820361031a57565b6005811015611e19578061269d5750565b600181036126e55760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b6044820152606490fd5b600281036127325760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606490fd5b60031461273b57565b60405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608490fd5b9291906fa2a8918ca85bafe22016d0b997e4df60600160ff1b0383116128045791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa156127f75781516001600160a01b038116156127f1579190565b50600190565b50604051903d90823e3d90fd5b50505050600090600390565b7fe50de2333c10a9502fcb1d8ae13a51bbf423153dfc63c2b8997665b32154afc360018060a01b038092169160009083825260036020526040822094169384825260205284604082205580a4565b909160207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259160018060a01b03809416938460005260028352604060002095169485600052825280604060002055604051908152a3565b60ff60265416612a33576014546001600160801b0316908115612a2c57600a54604051631848f2bf60e31b8152602093916001600160a01b03919085908290600490829086165afa8015611cb85785916000916129ef575b50600460405180948193631a674cc560e11b8352165afa938415611cb8576000946129bc575b505061294f9192670de0b6b3a764000092839160295490611fb0565b0490818110156129b357612966602a548092611ff1565b8381029080820485149015171561064357612067612987926129a794611ff1565b602754926129a16028549261299c8487611ff1565b611fb0565b04611ffe565b90808211612129575090565b50505060275490565b81813d83116129e8575b6129d08183611ebb565b810103126129e45751925061294f38612933565b8380fd5b503d6129c6565b909181813d8311612a25575b612a058183611ebb565b81010312612a215751908282168203612387575084903861290d565b5080fd5b503d6129fb565b6028549150565b600a5460405163e6abad4960e01b815290602090829060049082906001600160a01b03165afa908115611cb857600091612a6b575090565b906020823d8211612a91575b81612a8460209383611ebb565b8101031261238757505190565b3d9150612a77565b60405190612aa682611e69565b6014546001600160801b038116835260801c6020830152565b6001600160801b03918216908216019190821161064357565b60006020604051612ae881611e69565b82815201526001600160401b0390612b078260255460401c1642611ff1565b918215612b5e57612b5961299c91670de0b6b3a7640000612b4e612b29612a99565b9660018060801b03958694858a5116906301e13380612b466128b5565b041690611fb0565b041682855116612abf565b168252565b509050612b69612a99565b90565b604051612b7881611e69565b6025546001600160401b03908181168352818160401c16612ba0602085019180835242611ff1565b928315612c6557602094816301e13380612bb86128b5565b041681528142168352612bc9612a99565b670de0b6b3a7640000612bee60018060801b039761299c898551168787511690611fb0565b0495612bff81881682845116612abf565b1680825296015160801b6001600160801b031990811690961760145551915192909416931692831760409190911b67ffffffffffffffff60401b16176025557f7484db546dcd57af0104c73c8a6968dfbaf5767f047cee0dadd0499ad7df81a0600080a3565b505050505056feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae672a2646970667358221220feeb266066a1958799d1bb77fe20bcef60656c5564a85c34be2da035377678ae64736f6c63430008120033"; type BBLendingCommonConstructorParams = | [signer?: Signer] diff --git a/src/typechain/tapioca-bar/factories/markets/bigBang/BBLeverage__factory.ts b/src/typechain/tapioca-bar/factories/markets/bigBang/BBLeverage__factory.ts index 906304fc..3c73f247 100644 --- a/src/typechain/tapioca-bar/factories/markets/bigBang/BBLeverage__factory.ts +++ b/src/typechain/tapioca-bar/factories/markets/bigBang/BBLeverage__factory.ts @@ -72,13 +72,13 @@ const _abi = [ { indexed: true, internalType: "address", - name: "_oldVal", + name: "oldVal", type: "address", }, { indexed: true, internalType: "address", - name: "_newVal", + name: "newVal", type: "address", }, ], @@ -142,6 +142,25 @@ const _abi = [ name: "ExchangeRateDurationUpdated", type: "event", }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "address", + name: "oldVal", + type: "address", + }, + { + indexed: true, + internalType: "address", + name: "newVal", + type: "address", + }, + ], + name: "LeverageExecutorSet", + type: "event", + }, { anonymous: false, inputs: [ @@ -523,6 +542,37 @@ const _abi = [ name: "UpdateMinMaxMintFee", type: "event", }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "uint256", + name: "oldMin", + type: "uint256", + }, + { + indexed: true, + internalType: "uint256", + name: "newMin", + type: "uint256", + }, + { + indexed: true, + internalType: "uint256", + name: "oldMax", + type: "uint256", + }, + { + indexed: false, + internalType: "uint256", + name: "newMax", + type: "uint256", + }, + ], + name: "UpdateMinMaxMintRange", + type: "event", + }, { inputs: [], name: "DOMAIN_SEPARATOR", @@ -745,19 +795,9 @@ const _abi = [ name: "supplyAmount", type: "uint256", }, - { - internalType: "uint256", - name: "minAmountOut", - type: "uint256", - }, - { - internalType: "contract ISwapper", - name: "swapper", - type: "address", - }, { internalType: "bytes", - name: "dexData", + name: "data", type: "bytes", }, ], @@ -1009,6 +1049,19 @@ const _abi = [ stateMutability: "view", type: "function", }, + { + inputs: [], + name: "leverageExecutor", + outputs: [ + { + internalType: "contract ILeverageExecutor", + name: "", + type: "address", + }, + ], + stateMutability: "view", + type: "function", + }, { inputs: [], name: "liquidationBonusAmount", @@ -1087,6 +1140,19 @@ const _abi = [ stateMutability: "view", type: "function", }, + { + inputs: [], + name: "maxMintFeeStart", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, { inputs: [], name: "minDebtRate", @@ -1126,6 +1192,19 @@ const _abi = [ stateMutability: "view", type: "function", }, + { + inputs: [], + name: "minMintFeeStart", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, { inputs: [ { @@ -1403,19 +1482,9 @@ const _abi = [ name: "share", type: "uint256", }, - { - internalType: "uint256", - name: "minAmountOut", - type: "uint256", - }, - { - internalType: "contract ISwapper", - name: "swapper", - type: "address", - }, { internalType: "bytes", - name: "dexData", + name: "data", type: "bytes", }, ], @@ -1430,6 +1499,19 @@ const _abi = [ stateMutability: "nonpayable", type: "function", }, + { + inputs: [ + { + internalType: "contract ILeverageExecutor", + name: "_executor", + type: "address", + }, + ], + name: "setLeverageExecutor", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, { inputs: [ { @@ -1716,7 +1798,7 @@ const _abi = [ ] as const; const _bytecode = - "0x61014080604052346200018a5762000017816200018f565b600f81526001602082016e546170696f63612042696742616e6760881b8152602060405162000046816200018f565b8381520192603160f81b845251902091208160e052610100918183524660a0526040519160208301907f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f92838352604085015260608401524660808401523060a084015260a0835260c083019280841060018060401b03851117620001745760408490525190206080523060c052610120908152600580546001600160a01b0319163390811790915560007f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a362013880601b5562015f90601c55612710601d55612ee06020556103e8602d556145bd9283620001ac8439608051836131bd015260a05183613288015260c05183613187015260e0518361320c01525182613232015251816131e90152f35b634e487b7160e01b600052604160045260246000fd5b600080fd5b604081019081106001600160401b03821117620001745760405256fe608080604052600436101561001357600080fd5b60009060e08235811c918262a02a201461275d5750816302ce728f14612734578163078dfbe714612631578163095ea7b31461260a5781630c4e84f0146124f257816318160ddd146124d65781631c9e379b1461249d5781631d4d3a5d146124745781631da8bf10146123be5781631ee9c8f214611b355781631fb8f81a14611b1757816323b872dd14611974578163331960ff1461195657816334ce998a1461192d57816334d441d01461190f5781633644e515146118f457816337b6b7b9146118d657816338d52e0f146118ad5781633ba0b9a91461188f5781633f741adb1461186a57816340626d8b1461184c57816344de240a1461182e578163473e3ce71461181057816348e4163e146117d75781634e71e0c814611729578163529898f21461170c578163542afda3146116ee57816357935462146116d057816358db9afe146112825781636b19ad16146112645781636c3d8b8f1461123b57816370a082311461120257816372778547146111ca57816374645ff31461113757816374c9e481146111195781637dc0d1d0146110f05781637ecebe00146110b75781637fa0b84e146110855781638285ef401461105357816387b279371461101a5781638c5d0ed314610ffc5781638da5cb5b14610fd3578163910dd7c814610d53578163932bc4f814610c7557816399a9702814610c4d5781639e15e89f14610c12578163a9059cbb14610b2f578163b0e21e8a14610b11578163b27c0e7414610ae0578163b7113f1914610abd578163bb4cfe3b14610a9f578163bde39c5d14610a81578163c1ad5c8d14610a5e578163ce8849ed14610a35578163d3fb2a38146105d8578163d505accf1461044d57508063d8dfeb4514610424578063dd62ed3e146103d5578063de406577146103ac578063e0996cb61461038e578063e30c397814610365578063ea64dd5614610347578063eec0f42e14610329578063f791395d1461030b5763f8ba4cff146102ed57600080fd5b34610308578060031936011261030857610305613830565b80f35b80fd5b50346103085780600319360112610308576020602754604051908152f35b50346103085780600319360112610308576020600c54604051908152f35b50346103085780600319360112610308576020601f54604051908152f35b50346103085780600319360112610308576006546040516001600160a01b039091168152602090f35b50346103085780600319360112610308576020601d54604051908152f35b50346103085780600319360112610308576009546040516001600160a01b039091168152602090f35b5034610308576040366003190112610308576103ef6127a5565b60406103f96127bb565b9260018060a01b03809316815260026020522091166000526020526020604060002054604051908152f35b5034610308578060031936011261030857600b546040516001600160a01b039091168152602090f35b9050346105d45761045d366127e0565b8394969793929192421161058f5761053b926105339260018060a01b0395868b169788600052600460205260406000209182549261049a846134d1565b90556040519160208301937f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e2668552600060408501528b60608501528a8d1660808501528d60a085015260c08401528183015281526104f781612924565b519020610502613184565b9060405190602082019261190160f01b8452602283015260428201526042815261052b81612909565b519020613459565b91909161335a565b160361054a576103059261352e565b60405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152606490fd5b60405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b5080fd5b823461030857610160366003190112610308576001600160a01b0390600435828116908190036105d4576001600160401b0392602435848111610a315761062390369060040161282f565b909460443593838516809503610a2c57610642846005541633146129c5565b806109ee575b5081610895575b50509080929350610855575b50506064358061083d575b5060843580610825575b5060a4358061080e575b5060c435806107ea575b5060e435806107c6575b506101043580610795575b506101243580610721575b5061014435806106b2575080f35b601e5481106106c157601f5580f35b60405162461bcd60e51b815260206004820152603260248201527f4d61726b65743a206c69717569646174696f6e436f6c6c61746572616c697a616044820152711d1a5bdb94985d19481d1bdbc81cdb585b1b60721b6064820152608490fd5b610730620186a0821115612a10565b601f54811161074257601e55816106a4565b60405162461bcd60e51b815260206004820152602560248201527f4d61726b65743a20636f6c6c61746572616c697a6174696f6e5261746520746f6044820152646f2062696760d81b6064820152608490fd5b806016547fae6e0ab3b95f0a53ff9660a390ccedcbbf1f2355dce974a9841af106fddcfaba8480a360165581610699565b6107d4620186a08210612a10565b6107e1601b548211612a10565b601c558161068e565b6107f8620186a08210612a10565b610805601c548210612a10565b601b5581610684565b61081c620186a08210612a10565b601d558161067a565b610834620186a0821115612a10565b601a5581610670565b61084c620186a0821115612a10565b60195581610666565b816008549182167f5a62d22209e370e38eea92cfddcd228e656e6ec139243392a760a7769f5877fd8580a36001600160a01b03191617600855818061065b565b81116109da576108a660105461288b565b601f811161098b575b5083601f8211600114610917578495829394959261090c575b50508160011b916000199060031b1c1916176010555b7fa6f004921c944d4b8bf6e38462b00f36a58d62495d56b51f571ab78f732c98158380a1908291848061064f565b0135905085806108c8565b60108552601f19821695600080516020614568833981519152918660205b8982106109735750508360019596979810610959575b505050811b016010556108de565b0135600019600384901b60f8161c1916905585808061094b565b80600184968294958701358155019501920190610935565b60108552600080516020614568833981519152601f830160051c8101602084106109d3575b601f90920160051c01905b8181106109c857506108af565b8581556001016109bb565b50806109b0565b634e487b7160e01b84526041600452602484fd5b600f80546001600160a01b0319169190911790557f0b2d6eb667d0522c3eb86e4288afecae6c11591ffd1345d4d12407e0598bca9b8580a186610648565b600080fd5b8380fd5b82346103085780600319360112610308576008546040516001600160a01b039091168152602090f35b82346103085780600319360112610308576020610a79613585565b604051908152f35b82346103085780600319360112610308576020602854604051908152f35b82346103085780600319360112610308576020601e54604051908152f35b8234610308578060031936011261030857602060ff602554166040519015158152f35b823461030857806003193601126103085760406024548151906001600160401b03908181168352831c166020820152f35b82346103085780600319360112610308576020601a54604051908152f35b823461030857604036600319011261030857610b496127a5565b60243580928115801590610c00575b610b90575b50506040519182526001600160a01b031690339060008051602061454883398151915290602090a3602060405160018152f35b33815260016020526040812054610ba9838210156132ae565b6001600160a01b0384169033829003610bc4575b5050610b5d565b604093610bdb91610bd68415156132f3565b612aa7565b338352600160205283832055815220610bf5838254612ab4565b905581838080610bbd565b50336001600160a01b03841614610b58565b8234610308576040366003190112610308576060610c3a610c316127a5565b60243590612bf3565b9060405192835260208301526040820152f35b8234610308576040366003190112610308576020610a79610c6c6127a5565b60243590613052565b8234610308578060031936011261030857604051600090602b54610c988161288b565b808352600191808316908115610d2b5750600114610cd1575b610ccd83610cc181870382612940565b60405191829182612961565b0390f35b602b600090815260209450917f11c44e4875b74d31ff9fd779bf2566af7bd15b87fc985d01f5094b89e3669e4f5b828410610d1857505050810190910190610cc181610cb1565b8054858501870152928501928101610cff565b610ccd9550610cc193506020915091849260ff191682840152151560051b8201019350610cb1565b9050346105d45760403660031901126105d4576004356001600160401b038111610fcf5736602382011215610fcf57806004013590610d91826129aa565b92610d9f6040519485612940565b82845284602092838601943660248284010111610fcf578060248693018737860101526024359161ffff8316809303610fcb57610100938486805181010312610fc757610deb90612d32565b91610df860408701613338565b90610e0560608801613338565b9660808101519660a082015192610e1e60c0840161334c565b91818401519301519360018060a01b03808097169b1698814211610f82579289888d989794610ef99794610533978f8e600014610f5b577f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e266955b8d60005260048652604060002092835493610e92856134d1565b905560405196870197885260408701528d6060870152608086015260a085015260c0840152818301528152610ec681612924565b519020610ed1613184565b90604051908a82019261190160f01b8452602283015260428201526042815261052b81612909565b1603610f17575015610f0e576103059261352e565b610305926134e0565b6064906040519062461bcd60e51b82526004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152fd5b7f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d695610e78565b60405162461bcd60e51b815260048101899052601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b8680fd5b8580fd5b8280fd5b82346103085780600319360112610308576005546040516001600160a01b039091168152602090f35b82346103085780600319360112610308576020601b54604051908152f35b8234610308576020366003190112610308576020906040906001600160a01b036110426127a5565b168152602383522054604051908152f35b8234610308578060031936011261030857601454604080516001600160801b038316815260809290921c602083015290f35b8234610308576040366003190112610308576110ac6110a26127a5565b60243590336134e0565b602060405160018152f35b8234610308576020366003190112610308576020906040906001600160a01b036110df6127a5565b168152600483522054604051908152f35b8234610308578060031936011261030857600f546040516001600160a01b039091168152602090f35b82346103085780600319360112610308576020602d54604051908152f35b823461030857806003193601126103085760405160009060105461115a8161288b565b808352600191808316908115610d2b575060011461118257610ccd83610cc181870382612940565b6010600090815260209450916000805160206145688339815191525b8284106111b757505050810190910190610cc181610cb1565b805485850187015292850192810161119e565b82346103085760203660031901126103085760043590600982101561030857602060ff6111f68461285c565b54166040519015158152f35b8234610308576020366003190112610308576020906040906001600160a01b0361122a6127a5565b168152600183522054604051908152f35b8234610308578060031936011261030857600a546040516001600160a01b039091168152602090f35b82346103085780600319360112610308576020602654604051908152f35b82346103085760a03660031901126103085761129c6127a5565b606435916001600160a01b0383168303610a2c576084356001600160401b0381116105d4576112cf90369060040161282f565b92906006600052602094600786526112ef60ff6040600020541615613930565b6112f7612df7565b5050611301613830565b6113166001600160a01b0384163014156139ad565b600a5460405163433e762d60e01b8152908790829060049082906001600160a01b03165afa90811561168457611367916113629187916116a3575b506001600160a01b03841690613b74565b613a12565b61137360243584613e4c565b6001600160a01b0383168452601886526040842080546113969060243590612aa7565b90556113a6602435601554612aa7565b6015556040516024356001600160a01b038381169086167f8ad4d3ff00da092c7ad9a573ea4f5f6a3dffc6712dc06d3f78f49b862297c4028880a460018060a01b0360095416600c54813b15610fc757630208d92960e11b83528691839182908490829061142690602435906001600160a01b038b163060048601613a59565b03925af180156116845790859161168f575b5050600c54600e54604051633d9545e960e11b815260048101929092526024808301919091526000604483015235606482015260016084820181905260a48201526101408160c4816001600160a01b0386165afa9081156116845785604094939286928291611653575b506114c68651998a968795869463efa84c6d60e01b86526044359060048701613d61565b03926001600160a01b03165af1918215611610578093819361161c575b506114f2604435851015613e0a565b6001600160a01b0382168152601785526040812054906115198261151461375d565b6140a5565b8660018060a01b0360095416916064600e546040519485938492638eb22cdd60e01b845260048401526024830152600160448301525afa91821561161057916115db575b50610a79936115839392911161158857611578908280614103565b505b60115490613a83565b61396d565b5061159161375d565b80516001600160801b039081166115b65750506115b0845b8280614103565b5061157a565b81816115cd6115d6938a6115b09601511689612a50565b91511690612a79565b6115a9565b929190508583813d8311611609575b6115f48183612940565b81010312610a2c579151909190610a7961155d565b503d6115ea565b604051903d90823e3d90fd5b90925061164291935060403d60401161164c575b61163a8183612940565b810190613d4b565b92909291856114e3565b503d611630565b61167791506101403d6101401161167d575b61166f8183612940565b810190613c61565b8a6114a2565b503d611665565b6040513d87823e3d90fd5b611698906128c5565b610a31578387611438565b6116c39150893d8b116116c9575b6116bb8183612940565b8101906139f8565b89611351565b503d6116b1565b82346103085780600319360112610308576020601c54604051908152f35b82346103085780600319360112610308576020602c54604051908152f35b823461030857806003193601126103085760208054604051908152f35b82346103085780600319360112610308576006546001600160a01b03908181163381900361179357806005549384167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08680a36001600160a01b0319928316176005551660065580f35b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b8234610308576020366003190112610308576020906040906001600160a01b036117ff6127a5565b168152601783522054604051908152f35b82346103085780600319360112610308576020601554604051908152f35b82346103085780600319360112610308576020600e54604051908152f35b82346103085780600319360112610308576020601654604051908152f35b8234610308576060366003190112610308576020610a79604435602435600435612ada565b82346103085780600319360112610308576020601154604051908152f35b8234610308578060031936011261030857600d546040516001600160a01b039091168152602090f35b82346103085780600319360112610308576020601254604051908152f35b82346103085780600319360112610308576020610a79613184565b82346103085780600319360112610308576020601954604051908152f35b82346103085780600319360112610308576014546040516001600160801b039091168152602090f35b82346103085780600319360112610308576020601354604051908152f35b82346103085760603660031901126103085761198e6127a5565b906119976127bb565b60443591826119d5575b506040519182526001600160a01b0390811692169060008051602061454883398151915290602090a3602060405160018152f35b6001600160a01b038481168083526001602090815260408420549286906119fe828610156132ae565b861693848403611a13575b50505050506119a1565b83865260028352604086203360005283526040600020546000198103611a81575b5092600160209693611a5f8794604097610bd66000805160206145488339815191529c9a15156132f3565b9285525283832055815220611a75858254612ab4565b90559185808581611a09565b90918110611ad75792600160209693611a5f8a6000805160206145488339815191529a9895611ab28260409a612aa7565b8689526002855289892033600052855289600020559497509497995050939650611a34565b60405162461bcd60e51b815260048101849052601860248201527745524332303a20616c6c6f77616e636520746f6f206c6f7760401b6044820152606490fd5b82346103085780600319360112610308576020602954604051908152f35b82346103085760c036600319011261030857611b4f6127a5565b608435906001600160a01b0382168203610fcf5760a4356001600160401b038111610a3157611b8290369060040161282f565b9290600585526007602052611b9e60ff60408720541615613930565b611ba6612df7565b5050611bb0613830565b611bc56001600160a01b0384163014156139ad565b600a5460405163433e762d60e01b815290602090829060049082906001600160a01b03165afa9081156121ca57611c129161136291889161239f575b506001600160a01b03851690613b74565b600954600e54604051638eb22cdd60e01b81526004810182905260448035602483015260019082015293916001600160a01b0316908790602086606481865afa958615612394578296612360575b50856122f5575b505050611c75602435613f32565b9260018060a01b0382168752602360205260408720611c95858254612ab4565b9055611c9f61375d565b93611cac81602435612ab4565b9460006020604051611cbd816128ee565b828152015280516001600160801b039081166122995780611ce481895b1682855116613783565b168252806020830192611cfc828a1683865116613783565b9382851690525116918a6014549160801b9116928b60018060801b03199182841681871717601455601654948515968715612283575b505050505050501561223e57879460018060a01b0387168652601760205260408620611d5f828254612ab4565b9055604080519283526020830191909152602435916001600160a01b0385811692908916917f3a5151e57d3bc9798e7853034ac52293d1a0e12a2b44725e75b03b21f86477a69190a4600d546001600160a01b0316803b1561223a576040516340c10f1960e01b815230600482015260248035908201529085908290604490829084905af1908115611684578591612226575b5050600d54600e5460095460405163095ea7b360e01b8082526001600160a01b0392831660048301526024820189905291909316926020816044818b885af1801561221b576121d5575b506009546040519182526001600160a01b031660048201526024803590820152916020908390818981604481015b03925af19182156121ca578692612187575b5060095460408051634d4d7cbd60e11b815297909288926001600160a01b0390811692849290918391611ebc9160243591908c1690309060048601613f03565b03925af1801561215957611f27958291612166575b50611ee2600e5491600c5494612ab4565b60405180978192633d9545e960e11b83526101409687956004850160a091949360019360c0830196835260208301526000604083015260608201528260808201520152565b03816001600160a01b0387165afa8015612159576040958793839261213c575b5050611f6c86519889968795869463efa84c6d60e01b86526064359060048701613d61565b03926001600160a01b03165af18015612131578392849161210c575b50611f97606435841015613e0a565b611fa18183613e4c565b8015612084575b6001600160a01b03821684526018602052604084208054611fca908390612ab4565b9055611fd881601554612ab4565b601555600c546009546001600160a01b0316908590823b156105d45761201992849183604051809681958294630208d92960e11b8452308c60048601613a59565b03925af1801561168457612070575b50602093610a79926115839290916001600160a01b0383169081907f9ed03113de523cebfe5e49d5f8e12894b1c0d42ce805990461726444c90eab879080a460115490613a83565b61207a85916128c5565b610a315784612028565b5060018060a01b03600954166020600c54606460405180948193638eb22cdd60e01b835260048301528860248301528860448301525afa9081156121015784916120cf575b50611fa8565b90506020813d6020116120f9575b816120ea60209383612940565b81010312610a2c5751846120c9565b3d91506120dd565b6040513d86823e3d90fd5b905061212891925060403d60401161164c5761163a8183612940565b91909184611f88565b6040513d85823e3d90fd5b6121529250803d1061167d5761166f8183612940565b8980611f47565b50604051903d90823e3d90fd5b61217f915060403d60401161164c5761163a8183612940565b905089611ed1565b91506020823d6020116121c2575b816121a260209383612940565b81010312610fcb57611ebc6040916121ba8894612d32565b509150611e7c565b3d9150612195565b6040513d88823e3d90fd5b906020823d602011612213575b816121ef60209383612940565b8101031261220f57611e6a93612206602093612d32565b50935090611e3c565b8780fd5b3d91506121e2565b6040513d8a823e3d90fd5b61222f906128c5565b610a31578388611df2565b8480fd5b60405162461bcd60e51b815260206004820152601b60248201527f42696742616e673a20626f72726f7720636170207265616368656400000000006044820152606490fd5b161792161617111590508980808b818080611d32565b6020820196806122cb6122bc6122b2858c511684612a50565b8587511690612a79565b99846115cd818851168d612a50565b106122dc575b611ce4828092611cda565b96611ce4826122eb81936134d1565b99925050506122d1565b823b156105d457604051630208d92960e11b815292839182908490829061232c908b906001600160a01b038b168e60048601613a59565b03925af1801561235557612342575b8681611c67565b61234e909691966128c5565b948661233b565b6040513d89823e3d90fd5b9095506020813d60201161238c575b8161237c60209383612940565b810103126105d457519489611c60565b3d915061236f565b6040513d84823e3d90fd5b6123b8915060203d6020116116c9576116bb8183612940565b88611c01565b9050346105d4576123ce366127e0565b8397949697929192421161058f5761246592610533928a60018060a01b0396878c16988983526004602052604083209182549261240a846134d1565b90556040519260208401947f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d6865260408501528b60608501528a8d1660808501528d60a085015260c08401528183015281526104f781612924565b160361054a57610305926134e0565b8234610308578060031936011261030857602a546040516001600160a01b039091168152602090f35b8234610308576020366003190112610308576020906040906001600160a01b036124c56127a5565b168152601883522054604051908152f35b8234610308578060031936011261030857602090604051908152f35b82346103085760403660031901126103085760043560098110156105d4576125186127d1565b6008549091906001600160a01b031633036125ce5760ff6125388261285c565b5416151591151591821461259457808260ff6125566125849461285c565b54161515827feeec81de25875ce1725479bb76f720a8defdb43dea041919ae37bb4aae9847c08780a461285c565b9060ff8019835416911617905580f35b60405162461bcd60e51b81526020600482015260126024820152714d61726b65743a2073616d6520737461746560701b6044820152606490fd5b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881d5b985d5d1a1bdc9a5e995960621b6044820152606490fd5b8234610308576040366003190112610308576110ac6126276127a5565b602435903361352e565b82346103085760603660031901126103085761264b6127a5565b6126536127d1565b604435908115158203610a315760018060a01b03928391612679836005541633146129c5565b1561271d571690811590811591612715575b50156126d857806005549283167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08580a36001600160a01b03199182161760055560068054909116905580f35b60405162461bcd60e51b81526020600482015260156024820152744f776e61626c653a207a65726f206164647265737360581b6044820152606490fd5b90508461268b565b9150501660018060a01b0319600654161760065580f35b8234610308578060031936011261030857604061274f612df7565b825191151582526020820152f35b8390346105d45760403660031901126105d457604060209261277d6127a5565b6127856127bb565b6001600160a01b0391821683526003865283832091168252845220548152f35b600435906001600160a01b0382168203610a2c57565b602435906001600160a01b0382168203610a2c57565b602435908115158203610a2c57565b60e0906003190112610a2c576001600160a01b03906004358281168103610a2c57916024359081168103610a2c5790604435906064359060843560ff81168103610a2c579060a4359060c43590565b9181601f84011215610a2c578235916001600160401b038311610a2c5760208381860195010111610a2c57565b6009811015612875576000526007602052604060002090565b634e487b7160e01b600052602160045260246000fd5b90600182811c921680156128bb575b60208310146128a557565b634e487b7160e01b600052602260045260246000fd5b91607f169161289a565b6001600160401b0381116128d857604052565b634e487b7160e01b600052604160045260246000fd5b604081019081106001600160401b038211176128d857604052565b608081019081106001600160401b038211176128d857604052565b61010081019081106001600160401b038211176128d857604052565b90601f801991011681019081106001600160401b038211176128d857604052565b6020808252825181830181905290939260005b82811061299657505060409293506000838284010152601f8019910116010190565b818101860151848201604001528501612974565b6001600160401b0381116128d857601f01601f191660200190565b156129cc57565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b15612a1757565b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881b9bdd081d985b1a59607a1b6044820152606490fd5b81810292918115918404141715612a6357565b634e487b7160e01b600052601160045260246000fd5b8115612a83570490565b634e487b7160e01b600052601260045260246000fd5b604d8111612a6357600a0a90565b91908203918211612a6357565b91908201809211612a6357565b81810392916000138015828513169184121617612a6357565b601454919291612b2391612b1491612b0a91612b00906001600160801b03831690612a50565b9060801c90612a79565b93601f5490612a50565b612b1d83612a99565b90612a79565b808310612beb57612b37612b739184612aa7565b91612b6e612b68612b5f601e54612b59612b5086612a99565b60205490612ab4565b90612a50565b612b1d84612a99565b91612a99565b612ac1565b6509184e72a00090818102918183051490151715612a6357670de0b6b3a764000091828102928184051490151715612a63578015612a8357600160ff1b91808314600019831416612a635705906000821215612be4578114612a6357600003905b808211612bdf575090565b905090565b5090612bd4565b505050600090565b6001600160a01b03908116600081815260176020908152604082205492959493919290918115612d2557612c2561379c565b90612c31861515612f4f565b6009541683600c54898752601882526064604088205491604051948593849263442c159960e01b8452600484015260248301528960448301525afa908115611684578591612cf6575b5092859492612cd6601893612cb1612cea99612cac612ca360409a620186a06021540490612a50565b601e5490612a50565b612a79565b815190936001600160801b03918691612ccc91841690612a50565b9201511690612a79565b818110612cee57035b978352522054612f9b565b9091565b505082612cdf565b90508381813d8311612d1e575b612d0d8183612940565b8101031261223a5751612cea612c7a565b503d612d03565b5050509192505080918190565b51908115158203610a2c57565b9190826040910312610a2c576020612d5683612d32565b92015190565b602080825260009160105491612d718361288b565b9283828401526001908181169081600014612dd45750600114612d96575b5050505090565b929350601060005280600020926000935b858510612dc05750505060409250010138808080612d8f565b805485850160400152938201938101612da7565b925050506040935060ff929192191683830152151560051b010138808080612d8f565b600f546040805163d6d7d52560e01b81529290916001600160a01b0316828480612e2360048201612d5c565b0381600080955af18015612f435781948291612f10575b50928415612eb3578315612e7957507f9f9192b5edb17356c524e08d9e025c8e2f6307e6ea52fb7968faa3081f51c3c883918260115580a25b42601355565b5162461bcd60e51b81526020600482015260146024820152734d61726b65743a20696e76616c6964207261746560601b6044820152606490fd5b91925050612ec660135460125490612ab4565b4211612ed6575060115490612e73565b5162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881c985d19481d1bdbc81bdb1960621b6044820152606490fd5b9050612f33919450833d8511612f3c575b612f2b8183612940565b810190612d3f565b93909338612e3a565b503d612f21565b508251903d90823e3d90fd5b15612f5657565b60405162461bcd60e51b815260206004820152601e60248201527f4d61726b65743a2065786368616e676552617465206e6f742076616c696400006044820152606490fd5b612fa6821515612f4f565b602060018060a01b0360095416916064600c54604051948593849263442c159960e01b845260048401526024830152600060448301525afa90811561304657600091613013575b5090612cac612fff9260215490612a50565b620186a061300f601e5483612a50565b0491565b906020823d821161303e575b8161302c60209383612940565b81010312610308575051612cac612fed565b3d915061301f565b6040513d6000823e3d90fd5b6001600160a01b0316600081815260186020526040812054909261307591612f9b565b91835260176020526040832054801561317e57811561317e5781811061317e5782811015613174576014546130be918391610bd691612b00906001600160801b03831690612a50565b90620186a09283830292808404851490151715613160576130e39291612b1d91612aa7565b91601b5491601c54936130f68585612ac1565b80820291848212600160ff1b82141661316057818305149015171561314c57058184820194851291129080158216911516176131385750808212612bdf575090565b634e487b7160e01b81526011600452602490fd5b634e487b7160e01b83526011600452602483fd5b634e487b7160e01b85526011600452602485fd5b50505050601b5490565b50505090565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03161480613285575b156131df577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f000000000000000000000000000000000000000000000000000000000000000082527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a0815260c081018181106001600160401b038211176128d85760405251902090565b507f000000000000000000000000000000000000000000000000000000000000000046146131b6565b156132b557565b60405162461bcd60e51b815260206004820152601660248201527545524332303a2062616c616e636520746f6f206c6f7760501b6044820152606490fd5b156132fa57565b60405162461bcd60e51b815260206004820152601660248201527545524332303a206e6f207a65726f206164647265737360501b6044820152606490fd5b51906001600160a01b0382168203610a2c57565b519060ff82168203610a2c57565b6005811015612875578061336b5750565b600181036133b35760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b6044820152606490fd5b600281036134005760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606490fd5b60031461340957565b60405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608490fd5b9291906fa2a8918ca85bafe22016d0b997e4df60600160ff1b0383116134c55791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa156121595781516001600160a01b038116156134bf579190565b50600190565b50505050600090600390565b6000198114612a635760010190565b7fe50de2333c10a9502fcb1d8ae13a51bbf423153dfc63c2b8997665b32154afc360018060a01b038092169160009083825260036020526040822094169384825260205284604082205580a4565b909160207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259160018060a01b03809416938460005260028352604060002095169485600052825280604060002055604051908152a3565b60ff602554166136f7576014546001600160801b03169081156136f057600a54604051631848f2bf60e31b8152602093916001600160a01b03919085908290600490829086165afa80156130465785916000916136bb575b50600460405180948193631a674cc560e11b8352165afa9384156130465760009461368c575b505061361f9192670de0b6b3a764000092839160285490612a50565b049081811015613683576136366029548092612aa7565b83810290808204851490151715612a6357612b1d6136579261367794612aa7565b602654926136716027549261366c8487612aa7565b612a50565b04612ab4565b90808211612bdf575090565b50505060265490565b81813d83116136b4575b6136a08183612940565b81010312610a315751925061361f38613603565b503d613696565b9182813d83116136e9575b6136d08183612940565b8101031261030857506136e38591613338565b386135dd565b503d6136c6565b6027549150565b600a5460405163e6abad4960e01b815290602090829060049082906001600160a01b03165afa9081156130465760009161372f575090565b906020823d8211613755575b8161374860209383612940565b8101031261030857505190565b3d915061373b565b6040519061376a826128ee565b6014546001600160801b038116835260801c6020830152565b6001600160801b039182169082160191908211612a6357565b600060206040516137ac816128ee565b82815201526001600160401b03906137cb8260245460401c1642612aa7565b9182156138225761381d61366c91670de0b6b3a76400006138126137ed61375d565b9660018060801b03958694858a5116906301e1338061380a613585565b041690612a50565b041682855116613783565b168252565b50905061382d61375d565b90565b60405161383c816128ee565b6024546001600160401b03908181168352818160401c16613864602085019180835242612aa7565b92831561392957602094816301e1338061387c613585565b04168152814216835261388d61375d565b670de0b6b3a76400006138b260018060801b039761366c898551168787511690612a50565b04956138c381881682845116613783565b1680825296015160801b6001600160801b031990811690961760145551915192909416931692831760409190911b67ffffffffffffffff60401b16176024557f7484db546dcd57af0104c73c8a6968dfbaf5767f047cee0dadd0499ad7df81a0600080a3565b5050505050565b1561393757565b60405162461bcd60e51b815260206004820152600e60248201526d13585c9ad95d0e881c185d5cd95960921b6044820152606490fd5b1561397457565b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881a5b9cdbdb1d995b9d607a1b6044820152606490fd5b156139b457565b606460405162461bcd60e51b815260206004820152602060248201527f4d61726b65743a2063616e6e6f742065786563757465206f6e20697473656c666044820152fd5b90816020910312610a2c575161ffff81168103610a2c5790565b15613a1957565b60405162461bcd60e51b81526020600482015260186024820152772134b3a130b7339d1024b73b30b634b21039bbb0b83832b960411b6044820152606490fd5b6001600160a01b039182168152911660208201526040810191909152606081019190915260800190565b919060018060a01b03806000941684526020601781526040852054908115613b6a5760188152604086205480156139295781613abd61375d565b9460095416916064600c54604051948593849263442c159960e01b8452600484015260248301528b60448301525afa968715611610578097613b34575b5050612ccc613b19612ca3613b2f969798620186a06021540490612a50565b9561366c60018060801b03948587511690612a50565b111590565b9096508187813d8311613b63575b613b4c8183612940565b810103126103085750945194612ccc613b19613afa565b503d613b42565b5060019450505050565b600a5460405163dbd01de160e01b815260209290916001600160a01b039084908490600490829085165afa8015613046578493600091613c23575b50918161ffff936044936040519889968795633a304d8b60e21b8752166004860152166024840152165afa90811561304657600091613bef575b50905090565b82813d8311613c1c575b613c038183612940565b810103126103085750613c1590612d32565b8038613be9565b503d613bf9565b9091929381813d8311613c5a575b613c3b8183612940565b810103126105d457519082821682036103085750839291906044613baf565b503d613c31565b809103906101408212610a2c576040805192606084018481106001600160401b038211176128d85780835260808212610a2c57613c9d81612909565b613ca684613338565b815260208401516080860152613cbd838501613338565b60a0860152606084015160c086015284526080607f19820112610a2c5781908151613ce781612909565b6080850151815260a0850151602082015260c08501518382015260e08501516060820152602086015260ff190112610a2c57613d40610120825193613d2b856128ee565b613d386101008201612d32565b855201612d32565b602083015282015290565b9190826040910312610a2c576020825192015190565b939492909160206040845194606060018060a01b0396878151168a5284810151858b0152878482015116848b015201516060890152606083820151805160808b01528481015160a08b01528381015160c08b0152015160e08901520151805115156101008801520151151561012086015261014085015216610160830152806101a080610180850152830152806101c093848401376000828201840152601f01601f1916010190565b15613e1157565b60405162461bcd60e51b8152602060048201526013602482015272084d2ce84c2dcce7440dcdee840cadcdeeaced606b1b6044820152606490fd5b6001600160a01b0316338103613e60575050565b6000818152602090600382526040918282203383528152848383205410613ec95783825260038152828220338352815282822054600101613ea2575050505050565b613ebd93825260038152828220903383525220918254612aa7565b90553880808080613929565b60649083519062461bcd60e51b82526004820152601460248201527313585c9ad95d0e881b9bdd08185c1c1c9bdd995960621b6044820152fd5b9081526001600160a01b0391821660208201529116604082015260608101919091526000608082015260a00190565b801561409f57602a546040805163d6d7d52560e01b81526001600160a01b03909216929190808280613f6660048201612d5c565b0381600080985af19182156140955784908593614073575b50156140245750670e27c49886e6000081101561401b57670d99a8cec7e2000081111561401257602d5490670d99a8cec7e1ffff198101908111613ffe5790668e1bc9bf040000613fd8613fdf93612b59602c5485612aa7565b0490612aa7565b9081613fea57505090565b620186a0925090613ffa91612a50565b0490565b634e487b7160e01b84526011600452602484fd5b505050602d5490565b505050602c5490565b5162461bcd60e51b8152602060048201526024808201527f42696742616e673a202061737365742773206f7261636c652063616c6c2066616044820152631a5b195960e21b6064820152608490fd5b90508161408d9293503d8411612f3c57612f2b8183612940565b919038613f7e565b81513d86823e3d90fd5b50600090565b60208101805190939291906001600160801b039081166140c6575090925050565b90816115cd816140e96140df6140f29686511688612a50565b828a511690612a79565b97511687612a50565b106140f957565b9061382d906134d1565b92909260018060a01b03928385169060009482865260209060178252604097888820548085116143ca575b50831561438e578361413f916143eb565b94838610156143525787988589526023845280892061415f888254612aa7565b905561416961375d565b9689858351614177816128ee565b828152015261418686896140a5565b9760018060801b038061419e818c16828551166143d2565b168252868201906141b4818a16828451166143d2565b9181831690528a9251169060018060801b03199060801b1617601455878b5260178652828b206141e5888254612aa7565b9055614216838a809d886009541690600e549084518096819582946311a5cc7760e31b84528d309160048601613f03565b03925af18015614348579061424393929161432c575b50614237888b612aa7565b80614309575b50612aa7565b8061427b575b507fc8e512d8f188ca059984b5853d2bf653da902696b8512785b182b2c813789a6e94959697989950519485521692a4565b8a9084600d541690813b15610fcf578351632770a7eb60e21b8152306004820152602481019190915291908290604490829084905af180156142ff577fc8e512d8f188ca059984b5853d2bf653da902696b8512785b182b2c813789a6e969798999a9b506142f0575b8a999897969550614249565b6142f9906128c5565b386142e4565b82513d8d823e3d90fd5b614326915061431f620186a091601a5490612a50565b048a612aa7565b3861423d565b61434290853d871161164c5761163a8183612940565b5061422c565b84513d8f823e3d90fd5b885162461bcd60e51b815260048101849052601560248201527442423a2072657061796d656e7420746f6f206c6f7760581b6044820152606490fd5b885162461bcd60e51b815260048101849052601560248201527453474c3a206e6f7468696e6720746f20726570617960581b6044820152606490fd5b93503861412e565b6001600160801b039182169082160391908211612a6357565b6001600160a01b0390811660008181526017602090815260408083205493959094929391928282146144f557848091600d541687518681019063313ce56760e01b82526004815261443b816128ee565b51915afa3d156144ed573d90614450826129aa565b9161445d88519384612940565b82523d868684013e5b806144e3575b156144d557838180518101031261223a579060ff61448e85614497940161334c565b16928391614504565b80156144cc5760239291612b1d612b686144bb938988528686528888205490612a50565b948352522054808211612bdf575090565b50505091505090565b506144979060ff601261448e565b508381511461446c565b606090614466565b50505060239192935052205490565b918215801561453f575b612beb5760018101809111612a635761452d92612b59612cac92612a99565b60058101809111612a6357600a900490565b50811561450e56feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae672a2646970667358221220c7deb7235e9f54a8e6e04aa952925a28656e8f828ba8927ff1e71014692abd0e64736f6c63430008120033"; + "0x61014080604052346200018a5762000017816200018f565b600f81526001602082016e546170696f63612042696742616e6760881b8152602060405162000046816200018f565b8381520192603160f81b845251902091208160e052610100918183524660a0526040519160208301907f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f92838352604085015260608401524660808401523060a084015260a0835260c083019280841060018060401b03851117620001745760408490525190206080523060c052610120908152600580546001600160a01b0319163390811790915560007f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a362013880601b5562015f90601c55612710601d55612ee06020556103e8602e556143d89283620001ac8439608051836132db015260a051836133a6015260c051836132a5015260e0518361332a01525182613350015251816133070152f35b634e487b7160e01b600052604160045260246000fd5b600080fd5b604081019081106001600160401b03821117620001745760405256fe608080604052600436101561001357600080fd5b60009060e08235811c918262a02a20146128775750816302ce728f1461284e578163078dfbe71461274b578163095ea7b3146127245781630c4e84f01461260c5781630f8b29ea146125ee57816318160ddd146125d25781631c9e379b146125995781631d4d3a5d146125705781631da8bf10146124ba5781631fb8f81a1461249c57816323b872dd146122ff578163331960ff146122e157816334ce998a146122b857816334d441d01461229a5781633644e5151461227f57816337b6b7b91461226157816338d52e0f146122385781633ba0b9a91461221a5781633f741adb146121f557816340626d8b146121d757816344de240a146121b9578163473e3ce71461219b57816348e4163e146121625781634e71e0c8146120b4578163529898f214612097578163542afda314612079578163579354621461205b5781636b19ad161461203d5781636c3d8b8f1461201457816370a0823114611fdb5781637277854714611fa357816374645ff314611f1257816374c9e48114611ef4578163790c846714611ed65781637dc0d1d014611ead5781637ecebe0014611e745781637fa0b84e14611e425781638285ef4014611e1057816387b2793714611dd75781638c5d0ed314611db95781638da5cb5b14611d90578163910dd7c814611b16578163932bc4f814611a3a57816399a9702814611a125781639e15e89f146119d7578163a9059cbb146118f4578163b0e21e8a146118d6578163b27c0e74146118a5578163b7113f1914611882578163bb4cfe3b14611864578163bde39c5d14611846578163c1ad5c8d1461182b578163ce8849ed14611802578163d3fb2a38146113ae578163d4e4534e14610ad7578163d505accf1461094c57508063d8dfeb4514610923578063da863f0e146108fa578063dd62ed3e146108ab578063de40657714610882578063e0996cb614610864578063e30c39781461083b578063e7d6de8014610408578063ea64dd56146103ea578063eec0f42e146103cc578063ef2b234a14610355578063f791395d146103375763f8ba4cff1461031957600080fd5b34610334578060031936011261033457610331613955565b80f35b80fd5b50346103345780600319360112610334576020602854604051908152f35b5034610334576020366003190112610334576004356001600160a01b03818116918290036103c85761038c81600554163314612adf565b816021549182167ffb4fd7114609dd603b57adbc2082205bfbbcabf9265c4b437b472f5c592b8cd78580a36001600160a01b0319161760215580f35b8280fd5b50346103345780600319360112610334576020600c54604051908152f35b50346103345780600319360112610334576020601f54604051908152f35b5034610334576060366003190112610334576104226128bf565b6044356001600160401b0381116103c857610441903690600401612ab2565b600660005260076020527f55c5b153ab560fcde54a63b18c7f53d75501706907cef8767fbded79ab9997c75491929161047d9060ff1615613a55565b610485612f15565b505061048f613955565b6104a46001600160a01b038316301415613ad2565b6104b060243583613c81565b602154604051632b3297f960e01b815290602090829060049082906001600160a01b03165afa908115610830578591610801575b506001600160a01b038316855260186020526040852080546105099060243590612bc1565b9055610519602435601554612bc1565b6015556040519085906024356001600160a01b038083169087167f8ad4d3ff00da092c7ad9a573ea4f5f6a3dffc6712dc06d3f78f49b862297c4028580a4600954600c54906001600160a01b0316803b156107f05784848161059082968296630208d92960e11b8452602435913060048601613b1d565b03925af19182156107f45784926107d9575b505060209160018060a01b03602154169086600e54916105e0600c5491604051998a978896879563927d1df160e01b87526024359160048801613b47565b03925af191821561079a5783926107a5575b5060018060a01b0360095416600e549360405191638eb22cdd60e01b95868452806004850152856024850152826044850152602084606481855afa93841561079a578394610765575b5060209060018060a01b03861684526017825260646040852054986106678a610662613882565b613ec0565b946040519586948593845260048401526024830152600160448301525afa918215610759579161071b575b506020946106c0936106bb939092116106c8576106b0908280613f1e565b505b60115490613b90565b613a92565b604051908152f35b506106d1613882565b80516001600160801b039081166106f65750506106f0845b8280613f1e565b506106b2565b818161070d610716938a6106f09601511689612b6a565b91511690612b93565b6106e9565b919290506020823d602011610751575b8161073860209383612a2d565b8101031261074c5790519091906020610692565b600080fd5b3d915061072b565b604051903d90823e3d90fd5b9093506020813d602011610792575b8161078160209383612a2d565b8101031261074c575192602061063b565b3d9150610774565b6040513d85823e3d90fd5b9091506020813d6020116107d1575b816107c160209383612a2d565b8101031261074c575190386105f2565b3d91506107b4565b6107e49192506129b2565b6107f0578184386105a2565b8380fd5b50604051903d90823e3d90fd5b610823915060203d602011610829575b61081b8183612a2d565b8101906136a3565b386104e4565b503d610811565b6040513d87823e3d90fd5b50346103345780600319360112610334576006546040516001600160a01b039091168152602090f35b50346103345780600319360112610334576020601d54604051908152f35b50346103345780600319360112610334576009546040516001600160a01b039091168152602090f35b5034610334576040366003190112610334576108c56128bf565b60406108cf6128d5565b9260018060a01b03809316815260026020522091166000526020526020604060002054604051908152f35b50346103345780600319360112610334576021546040516001600160a01b039091168152602090f35b5034610334578060031936011261033457600b546040516001600160a01b039091168152602090f35b905034610ad35761095c366128fa565b83949697939291924211610a8e57610a3a92610a329260018060a01b0395868b1697886000526004602052604060002091825492610999846135ef565b90556040519160208301937f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e2668552600060408501528b60608501528a8d1660808501528d60a085015260c08401528183015281526109f6816129f6565b519020610a016132a2565b9060405190602082019261190160f01b84526022830152604282015260428152610a2a81612a12565b519020613577565b919091613478565b1603610a49576103319261364c565b60405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152606490fd5b60405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b5080fd5b823461033457608036600319011261033457610af16128bf565b6064356001600160401b0381116103c857610b10903690600401612ab2565b90600584526007602052610b2b60ff60408620541615613a55565b610b33612f15565b5050610b3d613955565b610b526001600160a01b038416301415613ad2565b6021546001600160a01b031690811561136957600954600e54604051638eb22cdd60e01b81526004810182905260448035602483015260019082015294918791906001600160a01b0316602087606481845afa96871561079a578397611335575b5086611291575b5050602154604051632b3297f960e01b8152945060209150849060049082906001600160a01b03165afa928315611286578693611265575b50610bfe602435613d7d565b6001600160a01b03841687526024602052604087208054610c20908390612bce565b9055610c2a613882565b610c3682602435612bce565b9060006020604051610c47816129db565b828152015280516001600160801b039081166112095780610c6e81855b16828551166138a8565b168252806020830192610c86828616838651166138a8565b9382851690525116918a6014549160801b9116928b60018060801b031991828416818717176014556016549485159687156111f3575b50505050505050156111b5576001600160a01b03871688526017602052604088208054610cea908390612bce565b9055604080519283526020830191909152602435916001600160a01b0386811692908916917f3a5151e57d3bc9798e7853034ac52293d1a0e12a2b44725e75b03b21f86477a69190a4600d5486906001600160a01b0316803b15610ad3576040516340c10f1960e01b815230600482015260248035908201529082908290604490829084905af180156111aa57611192575b5050600d54600e5460095460405163095ea7b360e01b81526001600160a01b039182166004820152602481018a90529192899291169060208160448186865af1801561079a57611152575b5060095460405163095ea7b360e01b81526001600160a01b0390911660048201526024803590820152916020918391829081604481015b03925af1801561114757611101575b5060095460408051634d4d7cbd60e11b815295909286926001600160a01b03169183918b918391610e479160243591309060048601613d4e565b03925af19386851561075957869560209582916110d0575b50610e9d60018060a01b036021541694610e7f600e5493600c5496612bce565b966040519a8b9889978896630394b9c560e21b885260048801613b47565b03925af191821561079a57839261109c575b5060018060a01b03600954166020600c54606460405180948193638eb22cdd60e01b835260048301528760248301528860448301525afa90811561105f57849161106a575b50610eff8183613c81565b8015610fe2575b6001600160a01b03821684526018602052604084208054610f28908390612bce565b9055610f3681601554612bce565b601555600c546009546001600160a01b0316908590823b15610ad357610f7792849183604051809681958294630208d92960e11b8452308c60048601613b1d565b03925af1801561083057610fce575b506020936106c0926106bb9290916001600160a01b0383169081907f9ed03113de523cebfe5e49d5f8e12894b1c0d42ce805990461726444c90eab879080a460115490613b90565b610fd885916129b2565b6107f05784610f86565b5060018060a01b03600954166020600c54606460405180948193638eb22cdd60e01b835260048301528860248301528860448301525afa90811561105f57849161102d575b50610f06565b90506020813d602011611057575b8161104860209383612a2d565b8101031261074c575184611027565b3d915061103b565b6040513d86823e3d90fd5b90506020813d602011611094575b8161108560209383612a2d565b8101031261074c575184610ef4565b3d9150611078565b9091506020813d6020116110c8575b816110b860209383612a2d565b8101031261074c57519083610eaf565b3d91506110ab565b6110f2915060403d6040116110fa575b6110ea8183612a2d565b810190613d38565b905089610e5f565b503d6110e0565b906020823d60201161113f575b8161111b60209383612a2d565b8101031261113b57610e4794611132604093612e50565b50945090610e0d565b8780fd5b3d915061110e565b6040513d8a823e3d90fd5b6020813d60201161118a575b8161116b60209383612a2d565b810103126103c857602091611182610dfe92612e50565b509150610dc7565b3d915061115e565b61119b906129b2565b6111a6578587610d7c565b8580fd5b6040513d84823e3d90fd5b60405162461bcd60e51b815260206004820152601660248201527510908e88189bdc9c9bddc818d85c081c995858da195960521b6044820152606490fd5b161792161617111590508980808b818080610cbc565b60208201928061123b61122c6112228588511684612b6a565b8587511690612b93565b958461070d8188511689612b6a565b1061124c575b610c6e828092610c64565b92610c6e8261125b81936135ef565b9592505050611241565b61127f91935060203d6020116108295761081b8183612a2d565b9186610bf2565b6040513d88823e3d90fd5b6020600494959660405195868092632b3297f960e01b82525afa93841561079a578394611314575b50803b156103c857869383896112e560405197889687958694630208d92960e11b865260048601613b1d565b03925af18015611286576112fe575b9085828493610bba565b9461130c60049392966129b2565b9490916112f4565b61132e91945060203d6020116108295761081b8183612a2d565b92896112b9565b9096506020813d602011611361575b8161135160209383612a2d565b810103126103c857519589610bb3565b3d9150611344565b60405162461bcd60e51b815260206004820152601f60248201527f42423a206c65766572616765206578656375746f72206e6f742076616c6964006044820152606490fd5b823461033457610160366003190112610334576001600160a01b039060043582811690819003610ad3576001600160401b03926024358481116107f0576113f9903690600401612ab2565b9094604435938385168095036111a65761141884600554163314612adf565b806117c4575b508161166b575b5050908092935061162b575b505060643580611613575b50608435806115fb575b5060a435806115e4575b5060c435806115c0575b5060e4358061159c575b50610104358061156b575b5061012435806114f7575b506101443580611488575080f35b601e54811061149757601f5580f35b60405162461bcd60e51b815260206004820152603260248201527f4d61726b65743a206c69717569646174696f6e436f6c6c61746572616c697a616044820152711d1a5bdb94985d19481d1bdbc81cdb585b1b60721b6064820152608490fd5b611506620186a0821115612b2a565b601f54811161151857601e558161147a565b60405162461bcd60e51b815260206004820152602560248201527f4d61726b65743a20636f6c6c61746572616c697a6174696f6e5261746520746f6044820152646f2062696760d81b6064820152608490fd5b806016547fae6e0ab3b95f0a53ff9660a390ccedcbbf1f2355dce974a9841af106fddcfaba8480a36016558161146f565b6115aa620186a08210612b2a565b6115b7601b548211612b2a565b601c5581611464565b6115ce620186a08210612b2a565b6115db601c548210612b2a565b601b558161145a565b6115f2620186a08210612b2a565b601d5581611450565b61160a620186a0821115612b2a565b601a5581611446565b611622620186a0821115612b2a565b6019558161143c565b816008549182167f5a62d22209e370e38eea92cfddcd228e656e6ec139243392a760a7769f5877fd8580a36001600160a01b031916176008558180611431565b81116117b05761167c601054612978565b601f8111611761575b5083601f82116001146116ed57849582939495926116e2575b50508160011b916000199060031b1c1916176010555b7fa6f004921c944d4b8bf6e38462b00f36a58d62495d56b51f571ab78f732c98158380a19082918480611425565b01359050858061169e565b60108552601f19821695600080516020614383833981519152918660205b898210611749575050836001959697981061172f575b505050811b016010556116b4565b0135600019600384901b60f8161c19169055858080611721565b8060018496829495870135815501950192019061170b565b60108552600080516020614383833981519152601f830160051c8101602084106117a9575b601f90920160051c01905b81811061179e5750611685565b858155600101611791565b5080611786565b634e487b7160e01b84526041600452602484fd5b600f80546001600160a01b0319169190911790557f0b2d6eb667d0522c3eb86e4288afecae6c11591ffd1345d4d12407e0598bca9b8580a18661141e565b82346103345780600319360112610334576008546040516001600160a01b039091168152602090f35b823461033457806003193601126103345760206106c06136c2565b82346103345780600319360112610334576020602954604051908152f35b82346103345780600319360112610334576020601e54604051908152f35b8234610334578060031936011261033457602060ff602654166040519015158152f35b823461033457806003193601126103345760406025548151906001600160401b03908181168352831c166020820152f35b82346103345780600319360112610334576020601a54604051908152f35b82346103345760403660031901126103345761190e6128bf565b602435809281158015906119c5575b611955575b50506040519182526001600160a01b031690339060008051602061436383398151915290602090a3602060405160018152f35b3381526001602052604081205461196e838210156133cc565b6001600160a01b0384169033829003611989575b5050611922565b6040936119a09161199b841515613411565b612bc1565b3383526001602052838320558152206119ba838254612bce565b905581838080611982565b50336001600160a01b0384161461191d565b82346103345760403660031901126103345760606119ff6119f66128bf565b60243590612d0d565b9060405192835260208301526040820152f35b82346103345760403660031901126103345760206106c0611a316128bf565b60243590613170565b823461033457806003193601126103345760405181602c54611a5b81612978565b80845290600190818116908115611aee5750600114611a95575b611a9184611a8581880382612a2d565b60405191829182612a4e565b0390f35b602c8352602094507f7416c943b4a09859521022fd2e90eac0dd9026dad28fa317782a135f28a860915b828410611adb5750505081611a9193611a859282010193611a75565b8054858501870152928501928101611abf565b611a919650611a859450602092508593915060ff191682840152151560051b82010193611a75565b905034610ad3576040366003190112610ad3576004356001600160401b0381116103c857366023820112156103c857806004013590611b5482612a97565b92611b626040519485612a2d565b828452846020928386019436602482840101116103c8578060248693018737860101526024359161ffff83168093036111a657610100938486805181010312611d8c57611bae90612e50565b91611bbb60408701613456565b90611bc860608801613456565b9660808101519660a082015192611be160c0840161346a565b91818401519301519360018060a01b03808097169b1698814211611d4757928b88819897948f94610a32978f8f8f89604091611cbe9e9b50600014611d20577f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e266985b8152600488522092835493611c57856135ef565b905560405196870197885260408701528d6060870152608086015260a085015260c0840152818301528152611c8b816129f6565b519020611c966132a2565b90604051908a82019261190160f01b84526022830152604282015260428152610a2a81612a12565b1603611cdc575015611cd3576103319261364c565b610331926135fe565b6064906040519062461bcd60e51b82526004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152fd5b7f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d698611c43565b60405162461bcd60e51b815260048101899052601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b8680fd5b82346103345780600319360112610334576005546040516001600160a01b039091168152602090f35b82346103345780600319360112610334576020601b54604051908152f35b8234610334576020366003190112610334576020906040906001600160a01b03611dff6128bf565b168152602483522054604051908152f35b8234610334578060031936011261033457601454604080516001600160801b038316815260809290921c602083015290f35b823461033457604036600319011261033457611e69611e5f6128bf565b60243590336135fe565b602060405160018152f35b8234610334576020366003190112610334576020906040906001600160a01b03611e9c6128bf565b168152600483522054604051908152f35b8234610334578060031936011261033457600f546040516001600160a01b039091168152602090f35b82346103345780600319360112610334576020603054604051908152f35b82346103345780600319360112610334576020602e54604051908152f35b823461033457806003193601126103345760405181601054611f3381612978565b80845290600190818116908115611aee5750600114611f5c57611a9184611a8581880382612a2d565b60108352602094506000805160206143838339815191525b828410611f905750505081611a9193611a859282010193611a75565b8054858501870152928501928101611f74565b82346103345760203660031901126103345760043590600982101561033457602060ff611fcf84612949565b54166040519015158152f35b8234610334576020366003190112610334576020906040906001600160a01b036120036128bf565b168152600183522054604051908152f35b8234610334578060031936011261033457600a546040516001600160a01b039091168152602090f35b82346103345780600319360112610334576020602754604051908152f35b82346103345780600319360112610334576020601c54604051908152f35b82346103345780600319360112610334576020602d54604051908152f35b823461033457806003193601126103345760208054604051908152f35b82346103345780600319360112610334576006546001600160a01b03908181163381900361211e57806005549384167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08680a36001600160a01b0319928316176005551660065580f35b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b8234610334576020366003190112610334576020906040906001600160a01b0361218a6128bf565b168152601783522054604051908152f35b82346103345780600319360112610334576020601554604051908152f35b82346103345780600319360112610334576020600e54604051908152f35b82346103345780600319360112610334576020601654604051908152f35b82346103345760603660031901126103345760206106c0604435602435600435612bf4565b82346103345780600319360112610334576020601154604051908152f35b8234610334578060031936011261033457600d546040516001600160a01b039091168152602090f35b82346103345780600319360112610334576020601254604051908152f35b823461033457806003193601126103345760206106c06132a2565b82346103345780600319360112610334576020601954604051908152f35b82346103345780600319360112610334576014546040516001600160801b039091168152602090f35b82346103345780600319360112610334576020601354604051908152f35b8234610334576060366003190112610334576123196128bf565b906123226128d5565b6044359182612360575b506040519182526001600160a01b0390811692169060008051602061436383398151915290602090a3602060405160018152f35b6001600160a01b03848116808352600160209081526040842054928690612389828610156133cc565b86169384840361239e575b505050505061232c565b838652600283526040808720338852845286205460018101612408575b50926001602096936123e6879460409761199b6000805160206143638339815191529c9a1515613411565b92855252838320558152206123fc858254612bce565b90559185808581612394565b9091811061245c57926001602096936123e68a6000805160206143638339815191529a98956124398260409a612bc1565b86895260028552898920338a5285528989205594975094979950509396506123bb565b60405162461bcd60e51b815260048101849052601860248201527745524332303a20616c6c6f77616e636520746f6f206c6f7760401b6044820152606490fd5b82346103345780600319360112610334576020602a54604051908152f35b905034610ad3576124ca366128fa565b83979496979291924211610a8e5761256192610a32928a60018060a01b0396878c169889835260046020526040832091825492612506846135ef565b90556040519260208401947f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d6865260408501528b60608501528a8d1660808501528d60a085015260c08401528183015281526109f6816129f6565b1603610a4957610331926135fe565b8234610334578060031936011261033457602b546040516001600160a01b039091168152602090f35b8234610334576020366003190112610334576020906040906001600160a01b036125c16128bf565b168152601883522054604051908152f35b8234610334578060031936011261033457602090604051908152f35b82346103345780600319360112610334576020602f54604051908152f35b8234610334576040366003190112610334576004356009811015610ad3576126326128eb565b6008549091906001600160a01b031633036126e85760ff61265282612949565b541615159115159182146126ae57808260ff61267061269e94612949565b54161515827feeec81de25875ce1725479bb76f720a8defdb43dea041919ae37bb4aae9847c08780a4612949565b9060ff8019835416911617905580f35b60405162461bcd60e51b81526020600482015260126024820152714d61726b65743a2073616d6520737461746560701b6044820152606490fd5b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881d5b985d5d1a1bdc9a5e995960621b6044820152606490fd5b823461033457604036600319011261033457611e696127416128bf565b602435903361364c565b8234610334576060366003190112610334576127656128bf565b61276d6128eb565b6044359081151582036107f05760018060a01b0392839161279383600554163314612adf565b1561283757169081159081159161282f575b50156127f257806005549283167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08580a36001600160a01b03199182161760055560068054909116905580f35b60405162461bcd60e51b81526020600482015260156024820152744f776e61626c653a207a65726f206164647265737360581b6044820152606490fd5b9050846127a5565b9150501660018060a01b0319600654161760065580f35b82346103345780600319360112610334576040612869612f15565b825191151582526020820152f35b839034610ad3576040366003190112610ad35760406020926128976128bf565b61289f6128d5565b6001600160a01b0391821683526003865283832091168252845220548152f35b600435906001600160a01b038216820361074c57565b602435906001600160a01b038216820361074c57565b60243590811515820361074c57565b60e090600319011261074c576001600160a01b0390600435828116810361074c5791602435908116810361074c5790604435906064359060843560ff8116810361074c579060a4359060c43590565b6009811015612962576000526007602052604060002090565b634e487b7160e01b600052602160045260246000fd5b90600182811c921680156129a8575b602083101461299257565b634e487b7160e01b600052602260045260246000fd5b91607f1691612987565b6001600160401b0381116129c557604052565b634e487b7160e01b600052604160045260246000fd5b604081019081106001600160401b038211176129c557604052565b61010081019081106001600160401b038211176129c557604052565b608081019081106001600160401b038211176129c557604052565b90601f801991011681019081106001600160401b038211176129c557604052565b6020808252825181830181905290939260005b828110612a8357505060409293506000838284010152601f8019910116010190565b818101860151848201604001528501612a61565b6001600160401b0381116129c557601f01601f191660200190565b9181601f8401121561074c578235916001600160401b03831161074c576020838186019501011161074c57565b15612ae657565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b15612b3157565b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881b9bdd081d985b1a59607a1b6044820152606490fd5b81810292918115918404141715612b7d57565b634e487b7160e01b600052601160045260246000fd5b8115612b9d570490565b634e487b7160e01b600052601260045260246000fd5b604d8111612b7d57600a0a90565b91908203918211612b7d57565b91908201809211612b7d57565b81810392916000138015828513169184121617612b7d57565b601454919291612c3d91612c2e91612c2491612c1a906001600160801b03831690612b6a565b9060801c90612b93565b93601f5490612b6a565b612c3783612bb3565b90612b93565b808310612d0557612c51612c8d9184612bc1565b91612c88612c82612c79601e54612c73612c6a86612bb3565b60205490612bce565b90612b6a565b612c3784612bb3565b91612bb3565b612bdb565b6509184e72a00090818102918183051490151715612b7d57670de0b6b3a764000091828102928184051490151715612b7d578015612b9d57600160ff1b91808314600019831416612b7d5705906000821215612cfe578114612b7d57600003905b808211612cf9575090565b905090565b5090612cee565b505050600090565b6001600160a01b03908116600081815260176020908152604082205492959493919290918115612e4357612d3f6138c1565b90612d4b86151561306d565b6009541683600c54898752601882526064604088205491604051948593849263442c159960e01b8452600484015260248301528960448301525afa908115610830578591612e10575b5092859492612df0601893612dcb612e0499612dc6612dbd60409a620186a06022540490612b6a565b601e5490612b6a565b612b93565b815190936001600160801b03918691612de691841690612b6a565b9201511690612b93565b818110612e0857035b9783525220546130b9565b9091565b505082612df9565b90508381813d8311612e3c575b612e278183612a2d565b81010312612e385751612e04612d94565b8480fd5b503d612e1d565b5050509192505080918190565b5190811515820361074c57565b919082604091031261074c576020612e7483612e50565b92015190565b602080825260009160105491612e8f83612978565b9283828401526001908181169081600014612ef25750600114612eb4575b5050505090565b929350601060005280600020926000935b858510612ede5750505060409250010138808080612ead565b805485850160400152938201938101612ec5565b925050506040935060ff929192191683830152151560051b010138808080612ead565b600f546040805163d6d7d52560e01b81529290916001600160a01b0316828480612f4160048201612e7a565b0381600080955af18015613061578194829161302e575b50928415612fd1578315612f9757507f9f9192b5edb17356c524e08d9e025c8e2f6307e6ea52fb7968faa3081f51c3c883918260115580a25b42601355565b5162461bcd60e51b81526020600482015260146024820152734d61726b65743a20696e76616c6964207261746560601b6044820152606490fd5b91925050612fe460135460125490612bce565b4211612ff4575060115490612f91565b5162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881c985d19481d1bdbc81bdb1960621b6044820152606490fd5b9050613051919450833d851161305a575b6130498183612a2d565b810190612e5d565b93909338612f58565b503d61303f565b508251903d90823e3d90fd5b1561307457565b60405162461bcd60e51b815260206004820152601e60248201527f4d61726b65743a2065786368616e676552617465206e6f742076616c696400006044820152606490fd5b6130c482151561306d565b602060018060a01b0360095416916064600c54604051948593849263442c159960e01b845260048401526024830152600060448301525afa90811561316457600091613131575b5090612dc661311d9260225490612b6a565b620186a061312d601e5483612b6a565b0491565b906020823d821161315c575b8161314a60209383612a2d565b81010312610334575051612dc661310b565b3d915061313d565b6040513d6000823e3d90fd5b6001600160a01b03166000818152601860205260408120549092613193916130b9565b91835260176020526040832054801561329c57811561329c5781811061329c5782811015613292576014546131dc91839161199b91612c1a906001600160801b03831690612b6a565b90620186a0928383029280840485149015171561327e576132019291612c3791612bc1565b91601b5491601c54936132148585612bdb565b80820291848212600160ff1b82141661327e57818305149015171561326a57058184820194851291129080158216911516176132565750808212612cf9575090565b634e487b7160e01b81526011600452602490fd5b634e487b7160e01b83526011600452602483fd5b634e487b7160e01b85526011600452602485fd5b50505050601b5490565b50505090565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031614806133a3575b156132fd577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f000000000000000000000000000000000000000000000000000000000000000082527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a0815260c081018181106001600160401b038211176129c55760405251902090565b507f000000000000000000000000000000000000000000000000000000000000000046146132d4565b156133d357565b60405162461bcd60e51b815260206004820152601660248201527545524332303a2062616c616e636520746f6f206c6f7760501b6044820152606490fd5b1561341857565b60405162461bcd60e51b815260206004820152601660248201527545524332303a206e6f207a65726f206164647265737360501b6044820152606490fd5b51906001600160a01b038216820361074c57565b519060ff8216820361074c57565b600581101561296257806134895750565b600181036134d15760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b6044820152606490fd5b6002810361351e5760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606490fd5b60031461352757565b60405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608490fd5b9291906fa2a8918ca85bafe22016d0b997e4df60600160ff1b0383116135e35791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa156107f45781516001600160a01b038116156135dd579190565b50600190565b50505050600090600390565b6000198114612b7d5760010190565b7fe50de2333c10a9502fcb1d8ae13a51bbf423153dfc63c2b8997665b32154afc360018060a01b038092169160009083825260036020526040822094169384825260205284604082205580a4565b909160207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259160018060a01b03809416938460005260028352604060002095169485600052825280604060002055604051908152a3565b9081602091031261074c57516001600160a01b038116810361074c5790565b60ff6026541661381c576014546001600160801b031690811561381557600a54604051631848f2bf60e31b8152602093916001600160a01b03919085908290600490829086165afa80156131645785916000916137f8575b50600460405180948193631a674cc560e11b8352165afa938415613164576000946137c9575b505061375c9192670de0b6b3a764000092839160295490612b6a565b0490818110156137c057613773602a548092612bc1565b83810290808204851490151715612b7d57612c37613794926137b494612bc1565b602754926137ae602854926137a98487612bc1565b612b6a565b04612bce565b90808211612cf9575090565b50505060275490565b81813d83116137f1575b6137dd8183612a2d565b810103126107f05751925061375c38613740565b503d6137d3565b61380f9150823d84116108295761081b8183612a2d565b3861371a565b6028549150565b600a5460405163e6abad4960e01b815290602090829060049082906001600160a01b03165afa90811561316457600091613854575090565b906020823d821161387a575b8161386d60209383612a2d565b8101031261033457505190565b3d9150613860565b6040519061388f826129db565b6014546001600160801b038116835260801c6020830152565b6001600160801b039182169082160191908211612b7d57565b600060206040516138d1816129db565b82815201526001600160401b03906138f08260255460401c1642612bc1565b918215613947576139426137a991670de0b6b3a7640000613937613912613882565b9660018060801b03958694858a5116906301e1338061392f6136c2565b041690612b6a565b0416828551166138a8565b168252565b509050613952613882565b90565b604051613961816129db565b6025546001600160401b03908181168352818160401c16613989602085019180835242612bc1565b928315613a4e57602094816301e133806139a16136c2565b0416815281421683526139b2613882565b670de0b6b3a76400006139d760018060801b03976137a9898551168787511690612b6a565b04956139e8818816828451166138a8565b1680825296015160801b6001600160801b031990811690961760145551915192909416931692831760409190911b67ffffffffffffffff60401b16176025557f7484db546dcd57af0104c73c8a6968dfbaf5767f047cee0dadd0499ad7df81a0600080a3565b5050505050565b15613a5c57565b60405162461bcd60e51b815260206004820152600e60248201526d13585c9ad95d0e881c185d5cd95960921b6044820152606490fd5b15613a9957565b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881a5b9cdbdb1d995b9d607a1b6044820152606490fd5b15613ad957565b606460405162461bcd60e51b815260206004820152602060248201527f4d61726b65743a2063616e6e6f742065786563757465206f6e20697473656c666044820152fd5b6001600160a01b039182168152911660208201526040810191909152606081019190915260800190565b9491928694919360c0979487526020870152604086015260018060a01b0316606085015260a060808501528160a0850152848401376000828201840152601f01601f1916010190565b919060018060a01b03806000941684526020601781526040852054908115613c77576018815260408620548015613a4e5781613bca613882565b9460095416916064600c54604051948593849263442c159960e01b8452600484015260248301528b60448301525afa968715610759578097613c41575b5050612de6613c26612dbd613c3c969798620186a06022540490612b6a565b956137a960018060801b03948587511690612b6a565b111590565b9096508187813d8311613c70575b613c598183612a2d565b810103126103345750945194612de6613c26613c07565b503d613c4f565b5060019450505050565b6001600160a01b0316338103613c95575050565b6000818152602090600382526040918282203383528152848383205410613cfe5783825260038152828220338352815282822054600101613cd7575050505050565b613cf293825260038152828220903383525220918254612bc1565b90553880808080613a4e565b60649083519062461bcd60e51b82526004820152601460248201527313585c9ad95d0e881b9bdd08185c1c1c9bdd995960621b6044820152fd5b919082604091031261074c576020825192015190565b9081526001600160a01b0391821660208201529116604082015260608101919091526000608082015260a00190565b8015613eba57602b546040805163d6d7d52560e01b815291819083906001600160a01b031681600081613db260048201612e7a565b03925af1918215613eaf576000908193613e8d575b5015613e4a57506030549081811015613e4157602f5480821115613e3757613e1892612c3782613e0c613e00613e1295602e5497612bc1565b612c73602d5488612bc1565b92612bc1565b90612bc1565b9081613e25575050600090565b620186a091613e3391612b6a565b0490565b50505050602e5490565b505050602d5490565b5162461bcd60e51b815260206004820152601f60248201527f42423a202061737365742773206f7261636c652063616c6c206661696c6564006044820152606490fd5b905081613ea79293503d841161305a576130498183612a2d565b919038613dc7565b50513d6000823e3d90fd5b50600090565b60208101805190939291906001600160801b03908116613ee1575090925050565b908161070d81613f04613efa613f0d9686511688612b6a565b828a511690612b93565b97511687612b6a565b10613f1457565b90613952906135ef565b92909260018060a01b03928385169060009482865260209060178252604097888820548085116141e5575b5083156141a95783613f5a91614206565b948386101561416d57879885895260248452808920613f7a888254612bc1565b9055613f84613882565b9689858351613f92816129db565b8281520152613fa18689613ec0565b9760018060801b0380613fb9818c16828551166141ed565b16825286820190613fcf818a16828451166141ed565b9181831690528a9251169060018060801b03199060801b1617601455878b5260178652828b20614000888254612bc1565b9055614031838a809d886009541690600e549084518096819582946311a5cc7760e31b84528d309160048601613d4e565b03925af18015614163579061405e939291614147575b50614052888b612bc1565b80614124575b50612bc1565b80614096575b507fc8e512d8f188ca059984b5853d2bf653da902696b8512785b182b2c813789a6e94959697989950519485521692a4565b8a9084600d541690813b156103c8578351632770a7eb60e21b8152306004820152602481019190915291908290604490829084905af1801561411a577fc8e512d8f188ca059984b5853d2bf653da902696b8512785b182b2c813789a6e969798999a9b5061410b575b8a999897969550614064565b614114906129b2565b386140ff565b82513d8d823e3d90fd5b614141915061413a620186a091601a5490612b6a565b048a612bc1565b38614058565b61415d90853d87116110fa576110ea8183612a2d565b50614047565b84513d8f823e3d90fd5b885162461bcd60e51b815260048101849052601560248201527442423a2072657061796d656e7420746f6f206c6f7760581b6044820152606490fd5b885162461bcd60e51b815260048101849052601560248201527453474c3a206e6f7468696e6720746f20726570617960581b6044820152606490fd5b935038613f49565b6001600160801b039182169082160391908211612b7d57565b6001600160a01b03908116600081815260176020908152604080832054939590949293919282821461431057848091600d541687518681019063313ce56760e01b825260048152614256816129db565b51915afa3d15614308573d9061426b82612a97565b9161427888519384612a2d565b82523d868684013e5b806142fe575b156142f0578381805181010312612e38579060ff6142a9856142b2940161346a565b1692839161431f565b80156142e75760249291612c37612c826142d6938988528686528888205490612b6a565b948352522054808211612cf9575090565b50505091505090565b506142b29060ff60126142a9565b5083815114614287565b606090614281565b50505060249192935052205490565b918215801561435a575b612d055760018101809111612b7d5761434892612c73612dc692612bb3565b60058101809111612b7d57600a900490565b50811561432956feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae672a2646970667358221220a1197db6a98872461397e061d3ea7e2d9eaefdf63644f086a26f1977e9d4205c64736f6c63430008120033"; type BBLeverageConstructorParams = | [signer?: Signer] diff --git a/src/typechain/tapioca-bar/factories/markets/bigBang/BBLiquidation__factory.ts b/src/typechain/tapioca-bar/factories/markets/bigBang/BBLiquidation__factory.ts index 50448fd7..e28ed4cb 100644 --- a/src/typechain/tapioca-bar/factories/markets/bigBang/BBLiquidation__factory.ts +++ b/src/typechain/tapioca-bar/factories/markets/bigBang/BBLiquidation__factory.ts @@ -72,13 +72,13 @@ const _abi = [ { indexed: true, internalType: "address", - name: "_oldVal", + name: "oldVal", type: "address", }, { indexed: true, internalType: "address", - name: "_newVal", + name: "newVal", type: "address", }, ], @@ -142,6 +142,25 @@ const _abi = [ name: "ExchangeRateDurationUpdated", type: "event", }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "address", + name: "oldVal", + type: "address", + }, + { + indexed: true, + internalType: "address", + name: "newVal", + type: "address", + }, + ], + name: "LeverageExecutorSet", + type: "event", + }, { anonymous: false, inputs: [ @@ -523,6 +542,37 @@ const _abi = [ name: "UpdateMinMaxMintFee", type: "event", }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "uint256", + name: "oldMin", + type: "uint256", + }, + { + indexed: true, + internalType: "uint256", + name: "newMin", + type: "uint256", + }, + { + indexed: true, + internalType: "uint256", + name: "oldMax", + type: "uint256", + }, + { + indexed: false, + internalType: "uint256", + name: "newMax", + type: "uint256", + }, + ], + name: "UpdateMinMaxMintRange", + type: "event", + }, { inputs: [], name: "DOMAIN_SEPARATOR", @@ -965,6 +1015,19 @@ const _abi = [ stateMutability: "view", type: "function", }, + { + inputs: [], + name: "leverageExecutor", + outputs: [ + { + internalType: "contract ILeverageExecutor", + name: "", + type: "address", + }, + ], + stateMutability: "view", + type: "function", + }, { inputs: [ { @@ -1099,6 +1162,19 @@ const _abi = [ stateMutability: "view", type: "function", }, + { + inputs: [], + name: "maxMintFeeStart", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, { inputs: [], name: "minDebtRate", @@ -1138,6 +1214,19 @@ const _abi = [ stateMutability: "view", type: "function", }, + { + inputs: [], + name: "minMintFeeStart", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, { inputs: [ { @@ -1403,6 +1492,19 @@ const _abi = [ stateMutability: "view", type: "function", }, + { + inputs: [ + { + internalType: "contract ILeverageExecutor", + name: "_executor", + type: "address", + }, + ], + name: "setLeverageExecutor", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, { inputs: [ { @@ -1689,7 +1791,7 @@ const _abi = [ ] as const; const _bytecode = - "0x61014080604052346200018a5762000017816200018f565b600f81526001602082016e546170696f63612042696742616e6760881b8152602060405162000046816200018f565b8381520192603160f81b845251902091208160e052610100918183524660a0526040519160208301907f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f92838352604085015260608401524660808401523060a084015260a0835260c083019280841060018060401b03851117620001745760408490525190206080523060c052610120908152600580546001600160a01b0319163390811790915560007f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a362013880601b5562015f90601c55612710601d55612ee06020556103e8602d556143b69283620001ac843960805183613688015260a05183613753015260c05183613652015260e051836136d7015251826136fd015251816136b40152f35b634e487b7160e01b600052604160045260246000fd5b600080fd5b604081019081106001600160401b03821117620001745760405256fe608080604052600436101561001357600080fd5b60e0600035811c918262a02a2014612c715750816302ce728f14612b15578163078dfbe714612a11578163095ea7b3146129eb5781630c4e84f0146128d157816318160ddd146128b55781631c9e379b1461287b5781631d4d3a5d146128525781631da8bf101461279b5781631fb8f81a1461277d57816323b872dd146125d9578163331960ff146125bb57816334ce998a1461259257816334d441d0146125745781633644e5151461255957816337b6b7b91461253b57816338d52e0f146125125781633ba0b9a9146124f45781633f741adb146124d057816340626d8b146124b257816344de240a14612494578163473e3ce71461247657816348e4163e1461243c5781634e71e0c81461238e578163529898f214612371578163542afda31461235357816357935462146123355781636b19ad16146123175781636c3d8b8f146122ee57816370a08231146122b4578163727785471461227e57816374645ff3146121eb57816374c9e481146121cd5781637dc0d1d0146121a45781637ecebe001461216a5781637fa0b84e146121395781638285ef401461210757816387b27937146120cd5781638c5d0ed3146120af5781638da5cb5b14612086578163910dd7c814611e36578163932bc4f814611d5457816399a9702814611d2d5781639e15e89f14611ce4578163a28e6b8214611828578163a9059cbb14611741578163b0e21e8a14611723578163b27c0e74146116f2578163b7113f19146116cf578163bb4cfe3b146116b1578163bde39c5d14611693578163c1ad5c8d14611670578163ce8849ed14611647578163d3fb2a3814611204578163d505accf1461107f57508063d8dfeb4514611056578063dd62ed3e14611005578063de40657714610fdc578063e0996cb614610fbe578063e30c397814610f95578063e5644d8b14610365578063ea64dd5614610347578063eec0f42e14610329578063f791395d1461030b5763f8ba4cff146102eb57600080fd5b3461030657600036600319011261030657610304613d06565b005b600080fd5b34610306576000366003190112610306576020602754604051908152f35b34610306576000366003190112610306576020600c54604051908152f35b34610306576000366003190112610306576020601f54604051908152f35b34610306576080366003190112610306576004356001600160401b03811161030657610395903690600401612ee2565b906024356001600160401b038111610306576103b5903690600401612ee2565b6044356001600160401b038111610306576103d4903690600401612ee2565b9290916064356001600160401b038111610306576103f6903690600401612ee2565b9490916004600052600760205260ff60406000205416610f5f578715610f1f57808803610ee457610428828914613e5c565b610433828714613e5c565b600f546040805163d6d7d52560e01b8152959186906001600160a01b031681600081610461600482016133b0565b03925af1948515610a1b57600090600096610eb0575b508581610ea6575b5015610e9c57846011555b8415610e4c57610498613d06565b60009860005b8181106104e7578a156104ad57005b60405162461bcd60e51b815260206004820152601260248201527110908e881b9bc81d5cd95c9cc8199bdd5b9960721b6044820152606490fd5b6104f281838c614223565b356001600160a01b03811681036103065761050d8882614233565b15610522575b5061051d9061399b565b61049e565b9a61052c9061399b565b9a610538828686614223565b359061054583888c614223565b35906001600160a01b0382168203610306578b8410156109d8578360051b890135601e198a360301811215610306578901926001600160401b03843511610306578335360360208501136103065761059d8b83613545565b938b15610e075760018060a01b03600954166020600c5460018060a01b03861660005260188252606460406000205491604051948593849263442c159960e01b845260048401526024830152600060448301525afa908115610a1b578d90600092610dd1575b506106146106199260215490612f9d565b612fc6565b9360018060a01b038416600052601760205261063a8560406000205461307a565b80601d5480610db2575b5080851115610dab575b6001600160a01b0386166000908152601760205260409020549081811115610da2575080965b1115610d69578d9381811115610d6257505b6001600160a01b0385166000908152601760205260409020549081811115610d5757506106b38180612ff4565b6001600160a01b0386166000908152601760205260409020556106d4613c33565b6020810180519091906001600160801b0316610d25575050602081965b606461071761070e60018060a01b036009541698600c5494612f9d565b60215490612fc6565b916040519788938492638eb22cdd60e01b845260048401526024830152600060448301525afa938415610a1b57600094610cf1575b506001600160a01b0385166000908152601860205260409020548411610cb05760018060a01b0385166000526018602052604060002061078d858254612ff4565b90558515610c7d576014805490916107d66001600160801b036107b48a8216828616613e43565b16926001600160801b0319926001600160801b0316908316841760801c613e43565b60801b16179055601580548480821115610c73576107f391612ff4565b905b5560018060a01b0360095416906020600e54606460405180958193638eb22cdd60e01b835260048301528a6024830152600160448301525afa918215610a1b57600092610c3d575b5061085361085a92933690602081359101612e7e565b9084613eb9565b50818110610bf85781811115610be45761088661087e61088e93620186a093612ff4565b965b87612f9d565b048095612ff4565b9184610a60575b600d5460095460405163095ea7b360e01b81526001600160a01b039182166004820152600060248201819052909260209284926044928492165af18015610a1b57610a27575b50600d546001600160a01b0316803b1561030657604051632770a7eb60e21b815230600482015260248101869052906000908290604490829084905af18015610a1b576109ee575b506040519061093182612db0565b60018252602036818401378151156109d8576001600160a01b03166020820190815260405191518291906000905b8082106109b65750505081900390206040805193845260208401949094529282015261051d9392919033907f85b91d472e69b2cfe848ed50eb5d8582ae96c22057b6e46250255dd6f6c3519290606090a490610513565b82516001600160a01b031684526020938401939092019160019091019061095f565b634e487b7160e01b600052603260045260246000fd5b6001600160401b038111610a055760405238610923565b634e487b7160e01b600052604160045260246000fd5b6040513d6000823e3d90fd5b6020813d602011610a58575b81610a4060209383612e02565b8101031261030657610a5190613386565b50386108db565b3d9150610a33565b600d5460095460405163095ea7b360e01b81526001600160a01b039182166004820152600060248201819052909260209284926044928492165af18015610a1b57610bab575b50600d5460095460405163095ea7b360e01b81526001600160a01b03918216600482015260001960248201529160209183916044918391600091165af18015610a1b57610b72575b506000604060018060a01b036009541660a4600e5483519485938492634d4d7cbd60e11b845260048401523060248401523360448401528160648401528b60848401525af18015610a1b57610b44575b50610895565b610b659060403d604011610b6b575b610b5d8183612e02565b810190613ea3565b50610b3e565b503d610b53565b6020813d602011610ba3575b81610b8b60209383612e02565b8101031261030657610b9c90613386565b5038610aee565b3d9150610b7e565b6020813d602011610bdc575b81610bc460209383612e02565b8101031261030657610bd590613386565b5038610aa6565b3d9150610bb7565b505061088e620186a0610886600096610880565b60405162461bcd60e51b815260206004820152601f60248201527f42696742616e673a20617373657420616d6f756e74206e6f742076616c6964006044820152606490fd5b91506020823d602011610c6b575b81610c5860209383612e02565b810103126103065790519061085361083d565b3d9150610c4b565b50506000906107f5565b60405162461bcd60e51b815260206004820152600b60248201526a10908e881cdbdb1d995b9d60aa1b6044820152606490fd5b60405162461bcd60e51b815260206004820152601960248201527810908e881b9bdd08195b9bdd59da0818dbdb1b185d195c985b603a1b6044820152606490fd5b9093506020813d602011610d1d575b81610d0d60209383612e02565b810103126103065751923861074c565b3d9150610d00565b51602091610d5191610d40906001600160801b031685612f9d565b90516001600160801b031690612fc6565b966106f1565b6106b3908092612ff4565b9050610686565b60405162461bcd60e51b8152602060048201526011602482015270109a59d0985b99ce88189859081919589d607a1b6044820152606490fd5b90508096610674565b508361064e565b90620186a0610dc4610dcb9383612f9d565b0490613001565b38610644565b9150506020813d602011610dff575b81610ded60209383612e02565b8101031261030657518c610614610603565b3d9150610de0565b60405162461bcd60e51b815260206004820152601f60248201527f42696742616e673a2065786368616e676552617465206e6f742076616c6964006044820152606490fd5b60405162461bcd60e51b815260206004820152602260248201527f42423a2063757272656e742065786368616e676552617465206e6f742076616c6044820152611a5960f21b6064820152608490fd5b601154945061048a565b905015158a61047f565b9050610ed591955060403d604011610edd575b610ecd8183612e02565b810190613393565b94908a610477565b503d610ec3565b60405162461bcd60e51b8152602060048201526013602482015272084847440d8cadccee8d040dad2e6dac2e8c6d606b1b6044820152606490fd5b60405162461bcd60e51b815260206004820152601860248201527742423a206e6f7468696e6720746f206c697175696461746560401b6044820152606490fd5b60405162461bcd60e51b815260206004820152600e60248201526d13585c9ad95d0e881c185d5cd95960921b6044820152606490fd5b34610306576000366003190112610306576006546040516001600160a01b039091168152602090f35b34610306576000366003190112610306576020601d54604051908152f35b34610306576000366003190112610306576009546040516001600160a01b039091168152602090f35b346103065760403660031901126103065761101e612cbd565b611026612cd3565b9060018060a01b038091166000526002602052604060002091166000526020526020604060002054604051908152f35b3461030657600036600319011261030657600b546040516001600160a01b039091168152602090f35b346103065761108d36612cf8565b839496979392919242116111bf5761116b926111639260018060a01b0395868b16978860005260046020526040600020918254926110ca8461399b565b90556040519160208301937f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e2668552600060408501528b60608501528a8d1660808501528d60a085015260c084015281830152815261112781612dcb565b51902061113261364f565b9060405190602082019261190160f01b8452602283015260428201526042815261115b81612de7565b519020613916565b919091613817565b160361117a57610304926139f8565b60405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152606490fd5b60405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b3461030657610160366003190112610306576001600160a01b0360043581811690819003610306576001600160401b03916024358381116103065761124d903690600401612eb5565b9093604435938385168095036103065761126c84600554163314612f12565b80611608575b50816114bd575b50509080925061147c575b505060643580611464575b506084358061144c575b5060a43580611435575b5060c43580611411575b5060e435806113ed575b5061010435806113bb575b506101243580611347575b5061014435806112d957005b601e5481106112e757601f55005b60405162461bcd60e51b815260206004820152603260248201527f4d61726b65743a206c69717569646174696f6e436f6c6c61746572616c697a616044820152711d1a5bdb94985d19481d1bdbc81cdb585b1b60721b6064820152608490fd5b611356620186a0821115612f5d565b601f54811161136857601e55806112cd565b60405162461bcd60e51b815260206004820152602560248201527f4d61726b65743a20636f6c6c61746572616c697a6174696f6e5261746520746f6044820152646f2062696760d81b6064820152608490fd5b806016547fae6e0ab3b95f0a53ff9660a390ccedcbbf1f2355dce974a9841af106fddcfaba600080a3601655806112c2565b6113fb620186a08210612f5d565b611408601b548211612f5d565b601c55806112b7565b61141f620186a08210612f5d565b61142c601c548210612f5d565b601b55806112ad565b611443620186a08210612f5d565b601d55806112a3565b61145b620186a0821115612f5d565b601a5580611299565b611473620186a0821115612f5d565b6019558061128f565b816008549182167f5a62d22209e370e38eea92cfddcd228e656e6ec139243392a760a7769f5877fd600080a36001600160a01b031916176008558080611284565b8111610a05576114ce601054612d76565b601f81116115b7575b506000601f82116001146115405781929394600092611535575b50508160011b916000199060031b1c1916176010555b7fa6f004921c944d4b8bf6e38462b00f36a58d62495d56b51f571ab78f732c9815600080a181908380611279565b0135905084806114f1565b60106000908152601f1983169560008051602061436183398151915292909160205b88821061159f57505083600195969710611585575b505050811b01601055611507565b0135600019600384901b60f8161c19169055848080611577565b80600184968294958701358155019501920190611562565b6010600052600080516020614361833981519152601f830160051c810160208410611601575b601f90920160051c01905b8181106115f557506114d7565b600081556001016115e8565b50806115dd565b600f80546001600160a01b0319169190911790557f0b2d6eb667d0522c3eb86e4288afecae6c11591ffd1345d4d12407e0598bca9b600080a185611272565b34610306576000366003190112610306576008546040516001600160a01b039091168152602090f35b3461030657600036600319011261030657602061168b613a4f565b604051908152f35b34610306576000366003190112610306576020602854604051908152f35b34610306576000366003190112610306576020601e54604051908152f35b3461030657600036600319011261030657602060ff602554166040519015158152f35b346103065760003660031901126103065760406024548151906001600160401b03908181168352831c166020820152f35b34610306576000366003190112610306576020601a54604051908152f35b346103065760403660031901126103065761175a612cbd565b602435908115801590611816575b61179e575b6040519182526001600160a01b031690339060008051602061434183398151915290602090a3602060405160018152f35b3360005260016020526040600020546117b983821015613779565b6001600160a01b0382169083338390036117d6575b50505061176d565b6117ea916117e58415156137be565b612ff4565b336000526001602052604060002055600052604060002061180c838254613001565b90558280836117ce565b50336001600160a01b03821614611768565b3461030657608036600319011261030657611841612cbd565b611849612cd3565b604435916001600160a01b0391908284168403610306576064356001600160401b0381116103065761187f903690600401612eb5565b94909161189185600554163314612f12565b600f546040805163d6d7d52560e01b81529182908816816000816118b7600482016133b0565b03925af1908115610a1b57600090600092611cc2575b508181611cb8575b5015611caf57806011555b15611c5a5784906118ef613d06565b16918260005260209560178752611914604060002054620186a0610dc48a5483612f9d565b87876009541691606461193061070e600c549360115490612f9d565b916040519485938492638eb22cdd60e01b845260048401526024830152600060448301525afa908115610a1b57600091611c2d575b50846000526018885260406000205411611bea5785856000611ad2611ae0611a97898d99611a91869a879a60188e868b5281815260408b205496611a5e6119aa613c33565b828e5260178452611a39611a108f6040902054926000876040516119cd81612db0565b82815201528681019360018060801b03928382818094868a8381511615600014611b9d57505081611a03915b1682885116613e43565b1685521682875116613e43565b169384905251601480546001600160801b0319166001600160801b039390921692909216179055565b601480546001600160801b031660809290921b6001600160801b031916919091179055565b808c52601782528b6040812055828252611a7e60408d2054601554612ff4565b6015558b52528860408120553691612e7e565b91613eb9565b600d5460405163a9059cbb60e01b8c82019081526001600160a01b039098166024820152604481019290925290961695928391506064820190565b03601f198101835282612e02565b51925af13d15611b96573d611af481612e63565b90611b026040519283612e02565b81523d60008483013e5b81611b5e575b5015611b1a57005b6064906040519062461bcd60e51b82526004820152601c60248201527f426f72696e6745524332303a205472616e73666572206661696c6564000000006044820152fd5b80915051828115918215611b77575b5050905082611b12565b83809293500103126103065781611b8e9101613386565b808284611b6d565b6060611b0c565b611a0392611bd6611bcc86611bc3611bb9828098511686612f9d565b8287511690612fc6565b94511684612f9d565b848c511690612fc6565b10156119f957611be59061399b565b6119f9565b6064876040519062461bcd60e51b825280600483015260248201527f42696742616e673a2043616e6e6f7420666f726365206c6971756964617465646044820152fd5b90508781813d8311611c53575b611c448183612e02565b81010312610306575188611965565b503d611c3a565b60405162461bcd60e51b815260206004820152602760248201527f42696742616e673a2063757272656e742065786368616e676552617465206e6f6044820152661d081d985b1a5960ca1b6064820152608490fd5b506011546118e0565b90501515886118d5565b9050611cdd915060403d604011610edd57610ecd8183612e02565b90886118cd565b3461030657604036600319011261030657611d29611d0c611d03612cbd565b6024359061323d565b604080519384526020840192909252908201529081906060820190565b0390f35b3461030657604036600319011261030657602061168b611d4b612cbd565b60243590613545565b3461030657600036600319011261030657604051600090602b54611d7781612d76565b808352600191808316908115611e0e5750600114611db4575b611d2983611da081870382612e02565b604051918291602083526020830190612e23565b602b600090815260209450917f11c44e4875b74d31ff9fd779bf2566af7bd15b87fc985d01f5094b89e3669e4f5b828410611dfb57505050810190910190611da081611d90565b8054858501870152928501928101611de2565b611d299550611da093506020915091849260ff191682840152151560051b8201019350611d90565b34610306576040366003190112610306576004356001600160401b038111610306573660238201121561030657611e77903690602481600401359101612e7e565b9060243561ffff811680910361030657610100918284805181010312610306576020611ea4818601613386565b91611eb160408701613803565b90611ebe60608801613803565b9660808101519660a08201519260c08301519160ff8316830361030657838201519301516001600160a01b039586169a861698909490428210612041579289888d989794611fb89794611163978f8e60001461201a577f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e266955b8d60005260048652604060002092835493611f518561399b565b905560405196870197885260408701528d6060870152608086015260a085015260c0840152818301528152611f8581612dcb565b519020611f9061364f565b90604051908a82019261190160f01b8452602283015260428201526042815261115b81612de7565b1603611fd6575015611fcd57610304926139f8565b610304926139aa565b6064906040519062461bcd60e51b82526004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152fd5b7f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d695611f37565b60405162461bcd60e51b815260048101899052601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b34610306576000366003190112610306576005546040516001600160a01b039091168152602090f35b34610306576000366003190112610306576020601b54604051908152f35b34610306576020366003190112610306576001600160a01b036120ee612cbd565b1660005260236020526020604060002054604051908152f35b3461030657600036600319011261030657601454604080516001600160801b038316815260809290921c602083015290f35b346103065760403660031901126103065761215f612155612cbd565b60243590336139aa565b602060405160018152f35b34610306576020366003190112610306576001600160a01b0361218b612cbd565b1660005260046020526020604060002054604051908152f35b3461030657600036600319011261030657600f546040516001600160a01b039091168152602090f35b34610306576000366003190112610306576020602d54604051908152f35b346103065760003660031901126103065760405160009060105461220e81612d76565b808352600191808316908115611e0e575060011461223657611d2983611da081870382612e02565b6010600090815260209450916000805160206143618339815191525b82841061226b57505050810190910190611da081611d90565b8054858501870152928501928101612252565b346103065760203660031901126103065760043560098110156103065760ff6122a8602092612d47565b54166040519015158152f35b34610306576020366003190112610306576001600160a01b036122d5612cbd565b1660005260016020526020604060002054604051908152f35b3461030657600036600319011261030657600a546040516001600160a01b039091168152602090f35b34610306576000366003190112610306576020602654604051908152f35b34610306576000366003190112610306576020601c54604051908152f35b34610306576000366003190112610306576020602c54604051908152f35b346103065760003660031901126103065760208054604051908152f35b34610306576000366003190112610306576006546001600160a01b0390818116338190036123f857806005549384167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a36001600160a01b03199283161760055516600655005b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b34610306576020366003190112610306576001600160a01b0361245d612cbd565b1660005260176020526020604060002054604051908152f35b34610306576000366003190112610306576020601554604051908152f35b34610306576000366003190112610306576020600e54604051908152f35b34610306576000366003190112610306576020601654604051908152f35b3461030657606036600319011261030657602061168b604435602435600435613176565b34610306576000366003190112610306576020601154604051908152f35b3461030657600036600319011261030657600d546040516001600160a01b039091168152602090f35b34610306576000366003190112610306576020601254604051908152f35b3461030657600036600319011261030657602061168b61364f565b34610306576000366003190112610306576020601954604051908152f35b34610306576000366003190112610306576014546040516001600160801b039091168152602090f35b34610306576000366003190112610306576020601354604051908152f35b34610306576060366003190112610306576125f2612cbd565b6125fa612cd3565b6044359081612637575b6040519182526001600160a01b0390811692169060008051602061434183398151915290602090a3602060405160018152f35b60018060a01b0380841680600052602060018152846040600020549361265f82861015613779565b851693848403612674575b5050505050612604565b8360005260028352604060002033600052835260406000205460001981036126e8575b5084926126bf6000805160206143418339815191529795936001936117e560209915156137be565b926000525260406000205560005260406000206126dd858254613001565b90559185848161266a565b9091811061273d57602094926126bf8860008051602061434183398151915298969461271682600196612ff4565b86600052600285526040600020336000528552604060002055935093959750509294612697565b60405162461bcd60e51b815260048101849052601860248201527745524332303a20616c6c6f77616e636520746f6f206c6f7760401b6044820152606490fd5b34610306576000366003190112610306576020602954604051908152f35b34610306576127a936612cf8565b839496979392919242116111bf57612843926111639260018060a01b0395868b16978860005260046020526040600020918254926127e68461399b565b90556040519160208301937f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d68552600060408501528b60608501528a8d1660808501528d60a085015260c084015281830152815261112781612dcb565b160361117a57610304926139aa565b3461030657600036600319011261030657602a546040516001600160a01b039091168152602090f35b34610306576020366003190112610306576001600160a01b0361289c612cbd565b1660005260186020526020604060002054604051908152f35b3461030657600036600319011261030657602060405160008152f35b34610306576040366003190112610306576004356009811015610306576128f6612ce9565b6008549091906001600160a01b031633036129af5760ff61291682612d47565b5416151591151591821461297557808260ff61293461296394612d47565b54161515827feeec81de25875ce1725479bb76f720a8defdb43dea041919ae37bb4aae9847c0600080a4612d47565b9060ff80198354169116179055600080f35b60405162461bcd60e51b81526020600482015260126024820152714d61726b65743a2073616d6520737461746560701b6044820152606490fd5b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881d5b985d5d1a1bdc9a5e995960621b6044820152606490fd5b346103065760403660031901126103065761215f612a07612cbd565b60243590336139f8565b3461030657606036600319011261030657612a2a612cbd565b612a32612ce9565b6044359081151582036103065760018060a01b03928391612a5883600554163314612f12565b15612afc571690811590811591612af4575b5015612ab757806005549283167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a36001600160a01b031991821617600555600680549091169055005b60405162461bcd60e51b81526020600482015260156024820152744f776e61626c653a207a65726f206164647265737360581b6044820152606490fd5b905083612a6a565b9150501660018060a01b03196006541617600655600080f35b3461030657600036600319011261030657600f546040805163d6d7d52560e01b81529182906001600160a01b031681600081612b53600482016133b0565b03925af18015610a1b57600091600091612c50575b50908015612bf2578115612bb65781604092601155807f9f9192b5edb17356c524e08d9e025c8e2f6307e6ea52fb7968faa3081f51c3c8600080a25b42601355825191151582526020820152f35b60405162461bcd60e51b81526020600482015260146024820152734d61726b65743a20696e76616c6964207261746560601b6044820152606490fd5b9050612c0360135460125490613001565b4211612c1457604090601154612ba4565b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881c985d19481d1bdbc81bdb1960621b6044820152606490fd5b9050612c6b915060403d604011610edd57610ecd8183612e02565b82612b68565b3461030657604036600319011261030657602090612c8d612cbd565b612c95612cd3565b9060018060a01b03809116600052600384526040600020911660005282526040600020548152f35b600435906001600160a01b038216820361030657565b602435906001600160a01b038216820361030657565b60243590811515820361030657565b60e0906003190112610306576001600160a01b03906004358281168103610306579160243590811681036103065790604435906064359060843560ff81168103610306579060a4359060c43590565b6009811015612d60576000526007602052604060002090565b634e487b7160e01b600052602160045260246000fd5b90600182811c92168015612da6575b6020831014612d9057565b634e487b7160e01b600052602260045260246000fd5b91607f1691612d85565b604081019081106001600160401b03821117610a0557604052565b61010081019081106001600160401b03821117610a0557604052565b608081019081106001600160401b03821117610a0557604052565b90601f801991011681019081106001600160401b03821117610a0557604052565b919082519283825260005b848110612e4f575050826000602080949584010152601f8019910116010190565b602081830181015184830182015201612e2e565b6001600160401b038111610a0557601f01601f191660200190565b929192612e8a82612e63565b91612e986040519384612e02565b829481845281830111610306578281602093846000960137010152565b9181601f84011215610306578235916001600160401b038311610306576020838186019501011161030657565b9181601f84011215610306578235916001600160401b038311610306576020808501948460051b01011161030657565b15612f1957565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b15612f6457565b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881b9bdd081d985b1a59607a1b6044820152606490fd5b81810292918115918404141715612fb057565b634e487b7160e01b600052601160045260246000fd5b8115612fd0570490565b634e487b7160e01b600052601260045260246000fd5b604d8111612fb057600a0a90565b91908203918211612fb057565b91908201809211612fb057565b81810392916000138015828513169184121617612fb057565b906509184e72a00091828102928184051490151715612fb057565b90670de0b6b3a764000091828102928184051490151715612fb057565b8115612fd057600160ff1b8114600019831416612fb0570590565b6014546130b5916130a4919061309a906001600160801b03831690612f9d565b9060801c90612fc6565b91620186a0918291601f5490612f9d565b0480831061316e576130c79083612ff4565b601e54602054830190818411612fb05783916130e291612f9d565b049182810390600080941281831281169183139015161761315a579061311361310d61311893613027565b91613042565b61305f565b908082121561315357600160ff1b821461313f5703905b80821161313a575090565b905090565b634e487b7160e01b81526011600452602490fd5b509061312f565b634e487b7160e01b83526011600452602483fd5b505050600090565b6014549192916131b5916131a69161319c9161309a906001600160801b03831690612f9d565b93601f5490612f9d565b6131af83612fe6565b90612fc6565b9081831061316e5761311361310d61320f6131d36132149587612ff4565b9361320a6132046131fb601e546131f56131ec86612fe6565b60205490613001565b90612f9d565b6131af84612fe6565b91612fe6565b61300e565b613027565b600081121561323757600160ff1b8114612fb0576000039080821161313a575090565b9061312f565b6001600160a01b039081166000818152601760209081526040822054929594939192909181156133795761326f613c72565b9061327b86151561344b565b6009541683600c54898752601882526064604088205491604051948593849263442c159960e01b8452600484015260248301528960448301525afa90811561336e57859161333b575b509285949261331b6018936132f661332f996106146132ed60409a620186a06021540490612f9d565b601e5490612f9d565b815190936001600160801b0391869161331191841690612f9d565b9201511690612fc6565b81811061333357035b978352522054613497565b9091565b505082613324565b90508381813d8311613367575b6133528183612e02565b81010312613363575161332f6132c4565b8480fd5b503d613348565b6040513d87823e3d90fd5b5050509192505080918190565b5190811515820361030657565b91908260409103126103065760206133aa83613386565b92015190565b6020808252600091601054916133c583612d76565b928382840152600190818116908160001461342857506001146133ea575b5050505090565b929350601060005280600020926000935b85851061341457505050604092500101388080806133e3565b8054858501604001529382019381016133fb565b925050506040935060ff929192191683830152151560051b0101388080806133e3565b1561345257565b60405162461bcd60e51b815260206004820152601e60248201527f4d61726b65743a2065786368616e676552617465206e6f742076616c696400006044820152606490fd5b6134a282151561344b565b602060018060a01b0360095416916064600c54604051948593849263442c159960e01b845260048401526024830152600060448301525afa908115610a1b5760009161350f575b50906106146134fb9260215490612f9d565b620186a061350b601e5483612f9d565b0491565b906020823d821161353d575b8161352860209383612e02565b8101031261353a5750516106146134e9565b80fd5b3d915061351b565b6001600160a01b0316600081815260186020526040812054909261356891613497565b91835260176020526040832054801561364957811561364957818110613649578281101561363f576014546135b19183916117e59161309a906001600160801b03831690612f9d565b90620186a0928383029280840485149015171561362b576135d692916131af91612ff4565b91601b5491601c54936135e9858561300e565b80820291848212600160ff1b82141661362b57818305149015171561315a570581848201948512911290801582169115161761313f575080821261313a575090565b634e487b7160e01b85526011600452602485fd5b50505050601b5490565b50505090565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03161480613750575b156136aa577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f000000000000000000000000000000000000000000000000000000000000000082527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a0815260c081018181106001600160401b03821117610a055760405251902090565b507f00000000000000000000000000000000000000000000000000000000000000004614613681565b1561378057565b60405162461bcd60e51b815260206004820152601660248201527545524332303a2062616c616e636520746f6f206c6f7760501b6044820152606490fd5b156137c557565b60405162461bcd60e51b815260206004820152601660248201527545524332303a206e6f207a65726f206164647265737360501b6044820152606490fd5b51906001600160a01b038216820361030657565b6005811015612d6057806138285750565b600181036138705760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b6044820152606490fd5b600281036138bd5760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606490fd5b6003146138c657565b60405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608490fd5b9291906fa2a8918ca85bafe22016d0b997e4df60600160ff1b03831161398f5791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa156139825781516001600160a01b0381161561397c579190565b50600190565b50604051903d90823e3d90fd5b50505050600090600390565b6000198114612fb05760010190565b7fe50de2333c10a9502fcb1d8ae13a51bbf423153dfc63c2b8997665b32154afc360018060a01b038092169160009083825260036020526040822094169384825260205284604082205580a4565b909160207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259160018060a01b03809416938460005260028352604060002095169485600052825280604060002055604051908152a3565b60ff60255416613bcd576014546001600160801b0316908115613bc657600a54604051631848f2bf60e31b8152602093916001600160a01b03919085908290600490829086165afa8015610a1b578591600091613b89575b50600460405180948193631a674cc560e11b8352165afa938415610a1b57600094613b56575b5050613ae99192670de0b6b3a764000092839160285490612f9d565b049081811015613b4d57613b006029548092612ff4565b83810290808204851490151715612fb0576131af613b2192613b4194612ff4565b60265492613b3b60275492613b368487612ff4565b612f9d565b04613001565b9080821161313a575090565b50505060265490565b81813d8311613b82575b613b6a8183612e02565b81010312613b7e57519250613ae938613acd565b8380fd5b503d613b60565b909181813d8311613bbf575b613b9f8183612e02565b81010312613bbb575190828216820361353a5750849038613aa7565b5080fd5b503d613b95565b6027549150565b600a5460405163e6abad4960e01b815290602090829060049082906001600160a01b03165afa908115610a1b57600091613c05575090565b906020823d8211613c2b575b81613c1e60209383612e02565b8101031261353a57505190565b3d9150613c11565b60405190613c4082612db0565b6014546001600160801b038116835260801c6020830152565b6001600160801b039182169082160191908211612fb057565b60006020604051613c8281612db0565b82815201526001600160401b0390613ca18260245460401c1642612ff4565b918215613cf857613cf3613b3691670de0b6b3a7640000613ce8613cc3613c33565b9660018060801b03958694858a5116906301e13380613ce0613a4f565b041690612f9d565b041682855116613c59565b168252565b509050613d03613c33565b90565b604051613d1281612db0565b602454906001600160401b038281809416835260401c1691613d3b602083019380855242612ff4565b918215613e3d57816301e13380613d50613a4f565b041681528142168452613dee613d64613c33565b936020670de0b6b3a7640000613d8c60018060801b0393613b36858a51168989511690612f9d565b0495613dc683613da1818a1682855116613c59565b16808352601480546001600160801b0319166001600160801b03909216919091179055565b0151601480546001600160801b03169290911660801b6001600160801b031916919091179055565b51169182602454916001600160401b0360401b905160401b169160018060801b03191617176024557f7484db546dcd57af0104c73c8a6968dfbaf5767f047cee0dadd0499ad7df81a0600080a3565b50505050565b6001600160801b039182169082160391908211612fb057565b15613e6357565b60405162461bcd60e51b8152602060048201526018602482015277084d2ce84c2dcce7440d8cadccee8d040dad2e6dac2e8c6d60431b6044820152606490fd5b9190826040910312610306576020825192015190565b91909160018060a01b0392836009541690600c5460409485519063442c159960e01b82526004928084840152602496878401526000958660448501526020958685606481855afa94851561421957918b8b928a9485986141db575b509060a4911694835194859384926311a5cc7760e31b84528b8401528d30908401528760448401528960648401528160848401525af180156141d1576141b5575b5088600d5416908851926370a0823160e01b94858552308786015287858b81875afa9485156141ab5789888d948f948c97958f95859b61415f575b5090613fd19291600b54169751998a9889978896635cd3dc1560e01b885233908801528601526044850152606484015260a0608484015260a4830190612e23565b03925af180156141555761411d575b508388600d54169287895180958193825230888301525afa80156141135785906140e2575b61400f9250612ff4565b9586156140955790606483926009541691600e54928989519889958694638eb22cdd60e01b86528501528301528660448301525afa93841561408a57508193614059575b50505091565b9091809350813d8311614083575b6140718183612e02565b8101031261353a575051388080614053565b503d614067565b51913d9150823e3d90fd5b508360849286519262461bcd60e51b8452830152808201527f42696742616e673a206f6e436f6c6c61746572616c52656365697665722066616044820152631a5b195960e21b6064820152fd5b50908381813d831161410c575b6140f98183612e02565b81010312613363579061400f9151614005565b503d6140ef565b87513d87823e3d90fd5b8481813d831161414e575b6141328183612e02565b8101031261414a5761414390613386565b5038613fe0565b8580fd5b503d614128565b88513d88823e3d90fd5b96999a50509550959250505081813d83116141a4575b61417f8183612e02565b810103126141a05792898988613fd18f9897968f968d98519a909192613f90565b8880fd5b503d614175565b8b513d8b823e3d90fd5b6141cb90893d8b11610b6b57610b5d8183612e02565b50613f55565b89513d89823e3d90fd5b935096505091508681813d8311614212575b6141f78183612e02565b8101031261420e57519387918a918c9060a4613f14565b8780fd5b503d6141ed565b8a513d8a823e3d90fd5b91908110156109d85760051b0190565b919060018060a01b0380600094168452602060178152604085205490811561433657601881526040862054801561432f578161426d613c33565b9460095416916064600c54604051948593849263442c159960e01b8452600484015260248301528b60448301525afa9687156143235780976142ed575b50506133116142d26142c96142e8969798620186a06021540490612f9d565b601f5490612f9d565b95613b3660018060801b03948587511690612f9d565b111590565b9096508187813d831161431c575b6143058183612e02565b8101031261353a57509451946133116142d26142aa565b503d6142fb565b604051903d90823e3d90fd5b5050505050565b506001945050505056feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae672a264697066735822122026d7281b9d5c6add42eb74ad5c11d713ae9c41a17f450c2287e4258e6fd718c364736f6c63430008120033"; + "0x61014080604052346200018a5762000017816200018f565b600f81526001602082016e546170696f63612042696742616e6760881b8152602060405162000046816200018f565b8381520192603160f81b845251902091208160e052610100918183524660a0526040519160208301907f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f92838352604085015260608401524660808401523060a084015260a0835260c083019280841060018060401b03851117620001745760408490525190206080523060c052610120908152600580546001600160a01b0319163390811790915560007f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a362013880601b5562015f90601c55612710601d55612ee06020556103e8602e5561443a9283620001ac8439608051836136c6015260a05183613791015260c05183613690015260e051836137150152518261373b015251816136f20152f35b634e487b7160e01b600052604160045260246000fd5b600080fd5b604081019081106001600160401b03821117620001745760405256fe608080604052600436101561001357600080fd5b60e0600035811c918262a02a2014612caf5750816302ce728f14612b53578163078dfbe714612a4f578163095ea7b314612a295781630c4e84f01461290f5781630f8b29ea146128f157816318160ddd146128d55781631c9e379b1461289b5781631d4d3a5d146128725781631da8bf10146127bb5781631fb8f81a1461279d57816323b872dd146125f9578163331960ff146125db57816334ce998a146125b257816334d441d0146125945781633644e5151461257957816337b6b7b91461255b57816338d52e0f146125325781633ba0b9a9146125145781633f741adb146124f057816340626d8b146124d257816344de240a146124b4578163473e3ce71461249657816348e4163e1461245c5781634e71e0c8146123ae578163529898f214612391578163542afda31461237357816357935462146123555781636b19ad16146123375781636c3d8b8f1461230e57816370a08231146122d4578163727785471461229e57816374645ff31461220b57816374c9e481146121ed578163790c8467146121cf5781637dc0d1d0146121a65781637ecebe001461216c5781637fa0b84e1461213b5781638285ef401461210957816387b27937146120cf5781638c5d0ed3146120b15781638da5cb5b14612088578163910dd7c814611e38578163932bc4f814611d5657816399a9702814611d2f5781639e15e89f14611ce6578163a28e6b8214611874578163a9059cbb1461178d578163b0e21e8a1461176f578163b27c0e741461173e578163b7113f191461171b578163bb4cfe3b146116fd578163bde39c5d146116df578163c1ad5c8d146116bc578163ce8849ed14611693578163d3fb2a3814611250578163d505accf146110cb57508063d8dfeb45146110a2578063da863f0e14611079578063dd62ed3e14611028578063de40657714610fff578063e0996cb614610fe1578063e30c397814610fb8578063e5644d8b14610403578063ea64dd56146103e5578063eec0f42e146103c7578063ef2b234a14610355578063f791395d146103375763f8ba4cff1461031757600080fd5b3461033257600036600319011261033257610330613d44565b005b600080fd5b34610332576000366003190112610332576020602854604051908152f35b34610332576020366003190112610332576004356001600160a01b03818116918290036103325761038b81600554163314612f50565b816021549182167ffb4fd7114609dd603b57adbc2082205bfbbcabf9265c4b437b472f5c592b8cd7600080a36001600160a01b03191617602155005b34610332576000366003190112610332576020600c54604051908152f35b34610332576000366003190112610332576020601f54604051908152f35b34610332576080366003190112610332576004356001600160401b03811161033257610433903690600401612f20565b906024356001600160401b03811161033257610453903690600401612f20565b6044356001600160401b03811161033257610472903690600401612f20565b9290916064356001600160401b03811161033257610494903690600401612f20565b9490916004600052600760205260ff60406000205416610f82578715610f42576104bf818914613ef1565b6104ca828914613ef1565b6104d5828714613ef1565b600f546040805163d6d7d52560e01b8152959186906001600160a01b031681600081610503600482016133ee565b03925af1948515610aca57600090600096610f0e575b508581610f04575b5015610efa57846011555b610537851515613e81565b61053f613d44565b60009860005b81811061058e578a1561055457005b60405162461bcd60e51b815260206004820152601260248201527110908e881b9bc81d5cd95c9cc8199bdd5b9960721b6044820152606490fd5b61059981838c6142a7565b356001600160a01b0381168103610332576105b488826142b7565b156105c9575b506105c4906139d9565b610545565b9a6105d3906139d9565b9a6105df8286866142a7565b35906105ec83888c6142a7565b35906001600160a01b0382168203610332578b841015610a87578360051b89013592601e198a360301841215610332576001600160401b03848b01351161033257838a013536036020858c010113610332576106488b83613583565b938b15610eb55760018060a01b03600954166020600c5460018060a01b03861660005260188252606460406000205491604051948593849263442c159960e01b845260048401526024830152600060448301525afa908115610aca578d90600092610e7f575b506106bf6106c49260225490612fdb565b613004565b9360018060a01b03841660005260176020526106e5856040600020546130b8565b80601d5480610e60575b5080851115610e59575b6001600160a01b0386166000908152601760205260409020549081811115610e50575080965b1115610e1c578d9381811115610e1557505b6001600160a01b0385166000908152601760205260409020549081811115610e0a575061075e8180613032565b6001600160a01b03861660009081526017602052604090205561077f613c71565b6020810180519091906001600160801b0316610dd8575050602081965b60646107c26107b960018060a01b036009541698600c5494612fdb565b60225490613004565b916040519788938492638eb22cdd60e01b845260048401526024830152600060448301525afa938415610aca57600094610da4575b506001600160a01b0385166000908152601860205260409020548411610d635760018060a01b03851660005260186020526040600020610838858254613032565b90558515610d30576014805490916108816001600160801b0361085f8a8216828616613ed8565b16926001600160801b0319926001600160801b0316908316841760801c613ed8565b60801b16179055601580548480821115610d265761089e91613032565b905b5560018060a01b0360095416916020600e54606460405180968193638eb22cdd60e01b835260048301528a6024830152600160448301525afa928315610aca578d90600094610cec575b50610909929161090291369101803590602001612ebc565b9084613f49565b50818110610ca75781811115610c935761093561092d61093d93620186a093613032565b965b87612fdb565b048095613032565b9184610b0f575b600d5460095460405163095ea7b360e01b81526001600160a01b039182166004820152600060248201819052909260209284926044928492165af18015610aca57610ad6575b50600d546001600160a01b0316803b1561033257604051632770a7eb60e21b815230600482015260248101869052906000908290604490829084905af18015610aca57610a9d575b50604051906109e082612dee565b6001825260203681840137815115610a87576001600160a01b03166020820190815260405191518291906000905b808210610a65575050508190039020604080519384526020840194909452928201526105c49392919033907f85b91d472e69b2cfe848ed50eb5d8582ae96c22057b6e46250255dd6f6c3519290606090a4906105ba565b82516001600160a01b0316845260209384019390920191600190910190610a0e565b634e487b7160e01b600052603260045260246000fd5b6001600160401b038111610ab457604052386109d2565b634e487b7160e01b600052604160045260246000fd5b6040513d6000823e3d90fd5b6020813d602011610b07575b81610aef60209383612e40565b8101031261033257610b00906133c4565b503861098a565b3d9150610ae2565b600d5460095460405163095ea7b360e01b81526001600160a01b039182166004820152600060248201819052909260209284926044928492165af18015610aca57610c5a575b50600d5460095460405163095ea7b360e01b81526001600160a01b03918216600482015260001960248201529160209183916044918391600091165af18015610aca57610c21575b506000604060018060a01b036009541660a4600e5483519485938492634d4d7cbd60e11b845260048401523060248401523360448401528160648401528b60848401525af18015610aca57610bf3575b50610944565b610c149060403d604011610c1a575b610c0c8183612e40565b810190613f33565b50610bed565b503d610c02565b6020813d602011610c52575b81610c3a60209383612e40565b8101031261033257610c4b906133c4565b5038610b9d565b3d9150610c2d565b6020813d602011610c8b575b81610c7360209383612e40565b8101031261033257610c84906133c4565b5038610b55565b3d9150610c66565b505061093d620186a061093560009661092f565b60405162461bcd60e51b815260206004820152601a60248201527f42423a20617373657420616d6f756e74206e6f742076616c69640000000000006044820152606490fd5b935050906020833d602011610d1e575b81610d0960209383612e40565b8101031261033257915191908c6109096108ea565b3d9150610cfc565b50506000906108a0565b60405162461bcd60e51b815260206004820152600b60248201526a10908e881cdbdb1d995b9d60aa1b6044820152606490fd5b60405162461bcd60e51b815260206004820152601960248201527810908e881b9bdd08195b9bdd59da0818dbdb1b185d195c985b603a1b6044820152606490fd5b9093506020813d602011610dd0575b81610dc060209383612e40565b81010312610332575192386107f7565b3d9150610db3565b51602091610e0491610df3906001600160801b031685612fdb565b90516001600160801b031690613004565b9661079c565b61075e908092613032565b9050610731565b60405162461bcd60e51b815260206004820152600c60248201526b10908e88189859081919589d60a21b6044820152606490fd5b9050809661071f565b50836106f9565b90620186a0610e72610e799383612fdb565b049061303f565b386106ef565b9150506020813d602011610ead575b81610e9b60209383612e40565b8101031261033257518c6106bf6106ae565b3d9150610e8e565b60405162461bcd60e51b815260206004820152601a60248201527f42423a2065786368616e676552617465206e6f742076616c69640000000000006044820152606490fd5b601154945061052c565b905015158a610521565b9050610f3391955060403d604011610f3b575b610f2b8183612e40565b8101906133d1565b94908a610519565b503d610f21565b60405162461bcd60e51b815260206004820152601860248201527742423a206e6f7468696e6720746f206c697175696461746560401b6044820152606490fd5b60405162461bcd60e51b815260206004820152600e60248201526d13585c9ad95d0e881c185d5cd95960921b6044820152606490fd5b34610332576000366003190112610332576006546040516001600160a01b039091168152602090f35b34610332576000366003190112610332576020601d54604051908152f35b34610332576000366003190112610332576009546040516001600160a01b039091168152602090f35b3461033257604036600319011261033257611041612cfb565b611049612d11565b9060018060a01b038091166000526002602052604060002091166000526020526020604060002054604051908152f35b34610332576000366003190112610332576021546040516001600160a01b039091168152602090f35b3461033257600036600319011261033257600b546040516001600160a01b039091168152602090f35b34610332576110d936612d36565b8394969793929192421161120b576111b7926111af9260018060a01b0395868b1697886000526004602052604060002091825492611116846139d9565b90556040519160208301937f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e2668552600060408501528b60608501528a8d1660808501528d60a085015260c084015281830152815261117381612e09565b51902061117e61368d565b9060405190602082019261190160f01b845260228301526042820152604281526111a781612e25565b519020613954565b919091613855565b16036111c65761033092613a36565b60405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152606490fd5b60405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b3461033257610160366003190112610332576001600160a01b0360043581811690819003610332576001600160401b039160243583811161033257611299903690600401612ef3565b909360443593838516809503610332576112b884600554163314612f50565b80611654575b5081611509575b5050908092506114c8575b5050606435806114b0575b5060843580611498575b5060a43580611481575b5060c4358061145d575b5060e43580611439575b506101043580611407575b506101243580611393575b50610144358061132557005b601e54811061133357601f55005b60405162461bcd60e51b815260206004820152603260248201527f4d61726b65743a206c69717569646174696f6e436f6c6c61746572616c697a616044820152711d1a5bdb94985d19481d1bdbc81cdb585b1b60721b6064820152608490fd5b6113a2620186a0821115612f9b565b601f5481116113b457601e5580611319565b60405162461bcd60e51b815260206004820152602560248201527f4d61726b65743a20636f6c6c61746572616c697a6174696f6e5261746520746f6044820152646f2062696760d81b6064820152608490fd5b806016547fae6e0ab3b95f0a53ff9660a390ccedcbbf1f2355dce974a9841af106fddcfaba600080a36016558061130e565b611447620186a08210612f9b565b611454601b548211612f9b565b601c5580611303565b61146b620186a08210612f9b565b611478601c548210612f9b565b601b55806112f9565b61148f620186a08210612f9b565b601d55806112ef565b6114a7620186a0821115612f9b565b601a55806112e5565b6114bf620186a0821115612f9b565b601955806112db565b816008549182167f5a62d22209e370e38eea92cfddcd228e656e6ec139243392a760a7769f5877fd600080a36001600160a01b0319161760085580806112d0565b8111610ab45761151a601054612db4565b601f8111611603575b506000601f821160011461158c5781929394600092611581575b50508160011b916000199060031b1c1916176010555b7fa6f004921c944d4b8bf6e38462b00f36a58d62495d56b51f571ab78f732c9815600080a1819083806112c5565b01359050848061153d565b60106000908152601f198316956000805160206143e583398151915292909160205b8882106115eb575050836001959697106115d1575b505050811b01601055611553565b0135600019600384901b60f8161c191690558480806115c3565b806001849682949587013581550195019201906115ae565b60106000526000805160206143e5833981519152601f830160051c81016020841061164d575b601f90920160051c01905b8181106116415750611523565b60008155600101611634565b5080611629565b600f80546001600160a01b0319169190911790557f0b2d6eb667d0522c3eb86e4288afecae6c11591ffd1345d4d12407e0598bca9b600080a1856112be565b34610332576000366003190112610332576008546040516001600160a01b039091168152602090f35b346103325760003660031901126103325760206116d7613a8d565b604051908152f35b34610332576000366003190112610332576020602954604051908152f35b34610332576000366003190112610332576020601e54604051908152f35b3461033257600036600319011261033257602060ff602654166040519015158152f35b346103325760003660031901126103325760406025548151906001600160401b03908181168352831c166020820152f35b34610332576000366003190112610332576020601a54604051908152f35b34610332576040366003190112610332576117a6612cfb565b602435908115801590611862575b6117ea575b6040519182526001600160a01b03169033906000805160206143c583398151915290602090a3602060405160018152f35b336000526001602052604060002054611805838210156137b7565b6001600160a01b038216908333839003611822575b5050506117b9565b611836916118318415156137fc565b613032565b336000526001602052604060002055600052604060002061185883825461303f565b905582808361181a565b50336001600160a01b038216146117b4565b346103325760803660031901126103325761188d612cfb565b611895612d11565b604435916001600160a01b0391908284168403610332576064356001600160401b038111610332576118cb903690600401612ef3565b9490916118dd85600554163314612f50565b600f546040805163d6d7d52560e01b815292918390881681600081611904600482016133ee565b03925af18015610aca578692600090600092611cc4575b508181611cba575b5015611cae5780611939916011555b1515613e81565b611941613d44565b16918260005260209560178752611966604060002054620186a0610e728a5483612fdb565b8787600954169160646119826107b9600c549360115490612fdb565b916040519485938492638eb22cdd60e01b845260048401526024830152600060448301525afa908115610aca57600091611c81575b50846000526018885260406000205411611c3c5785856000611b24611b32611ae9898d99611ae3869a879a60188e868b5281815260408b205496611ab06119fc613c71565b828e5260178452611a8b611a628f604090205492600087604051611a1f81612dee565b82815201528681019360018060801b03928382818094868a8381511615600014611bef57505081611a55915b1682885116613ed8565b1685521682875116613ed8565b169384905251601480546001600160801b0319166001600160801b039390921692909216179055565b601480546001600160801b031660809290921b6001600160801b031916919091179055565b808c52601782528b6040812055828252611ad060408d2054601554613032565b6015558b52528860408120553691612ebc565b91613f49565b600d5460405163a9059cbb60e01b8c82019081526001600160a01b039098166024820152604481019290925290961695928391506064820190565b03601f198101835282612e40565b51925af13d15611be8573d611b4681612ea1565b90611b546040519283612e40565b81523d60008483013e5b81611bb0575b5015611b6c57005b6064906040519062461bcd60e51b82526004820152601c60248201527f426f72696e6745524332303a205472616e73666572206661696c6564000000006044820152fd5b80915051828115918215611bc9575b5050905082611b64565b83809293500103126103325781611be091016133c4565b808284611bbf565b6060611b5e565b611a5592611c28611c1e86611c15611c0b828098511686612fdb565b8287511690613004565b94511684612fdb565b848c511690613004565b1015611a4b57611c37906139d9565b611a4b565b60405162461bcd60e51b815260048101889052601b60248201527f42423a2043616e6e6f7420666f726365206c69717569646174656400000000006044820152606490fd5b90508781813d8311611ca7575b611c988183612e40565b810103126103325751886119b7565b503d611c8e565b50611939601154611932565b9050151589611923565b9050611cdf915060403d604011610f3b57610f2b8183612e40565b908961191b565b3461033257604036600319011261033257611d2b611d0e611d05612cfb565b6024359061327b565b604080519384526020840192909252908201529081906060820190565b0390f35b346103325760403660031901126103325760206116d7611d4d612cfb565b60243590613583565b3461033257600036600319011261033257604051600090602c54611d7981612db4565b808352600191808316908115611e105750600114611db6575b611d2b83611da281870382612e40565b604051918291602083526020830190612e61565b602c600090815260209450917f7416c943b4a09859521022fd2e90eac0dd9026dad28fa317782a135f28a860915b828410611dfd57505050810190910190611da281611d92565b8054858501870152928501928101611de4565b611d2b9550611da293506020915091849260ff191682840152151560051b8201019350611d92565b34610332576040366003190112610332576004356001600160401b038111610332573660238201121561033257611e79903690602481600401359101612ebc565b9060243561ffff811680910361033257610100918284805181010312610332576020611ea68186016133c4565b91611eb360408701613841565b90611ec060608801613841565b9660808101519660a08201519260c08301519160ff8316830361033257838201519301516001600160a01b039586169a861698909490428210612043579289888d989794611fba97946111af978f8e60001461201c577f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e266955b8d60005260048652604060002092835493611f53856139d9565b905560405196870197885260408701528d6060870152608086015260a085015260c0840152818301528152611f8781612e09565b519020611f9261368d565b90604051908a82019261190160f01b845260228301526042820152604281526111a781612e25565b1603611fd8575015611fcf5761033092613a36565b610330926139e8565b6064906040519062461bcd60e51b82526004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152fd5b7f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d695611f39565b60405162461bcd60e51b815260048101899052601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b34610332576000366003190112610332576005546040516001600160a01b039091168152602090f35b34610332576000366003190112610332576020601b54604051908152f35b34610332576020366003190112610332576001600160a01b036120f0612cfb565b1660005260246020526020604060002054604051908152f35b3461033257600036600319011261033257601454604080516001600160801b038316815260809290921c602083015290f35b3461033257604036600319011261033257612161612157612cfb565b60243590336139e8565b602060405160018152f35b34610332576020366003190112610332576001600160a01b0361218d612cfb565b1660005260046020526020604060002054604051908152f35b3461033257600036600319011261033257600f546040516001600160a01b039091168152602090f35b34610332576000366003190112610332576020603054604051908152f35b34610332576000366003190112610332576020602e54604051908152f35b346103325760003660031901126103325760405160009060105461222e81612db4565b808352600191808316908115611e10575060011461225657611d2b83611da281870382612e40565b6010600090815260209450916000805160206143e58339815191525b82841061228b57505050810190910190611da281611d92565b8054858501870152928501928101612272565b346103325760203660031901126103325760043560098110156103325760ff6122c8602092612d85565b54166040519015158152f35b34610332576020366003190112610332576001600160a01b036122f5612cfb565b1660005260016020526020604060002054604051908152f35b3461033257600036600319011261033257600a546040516001600160a01b039091168152602090f35b34610332576000366003190112610332576020602754604051908152f35b34610332576000366003190112610332576020601c54604051908152f35b34610332576000366003190112610332576020602d54604051908152f35b346103325760003660031901126103325760208054604051908152f35b34610332576000366003190112610332576006546001600160a01b03908181163381900361241857806005549384167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a36001600160a01b03199283161760055516600655005b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b34610332576020366003190112610332576001600160a01b0361247d612cfb565b1660005260176020526020604060002054604051908152f35b34610332576000366003190112610332576020601554604051908152f35b34610332576000366003190112610332576020600e54604051908152f35b34610332576000366003190112610332576020601654604051908152f35b346103325760603660031901126103325760206116d76044356024356004356131b4565b34610332576000366003190112610332576020601154604051908152f35b3461033257600036600319011261033257600d546040516001600160a01b039091168152602090f35b34610332576000366003190112610332576020601254604051908152f35b346103325760003660031901126103325760206116d761368d565b34610332576000366003190112610332576020601954604051908152f35b34610332576000366003190112610332576014546040516001600160801b039091168152602090f35b34610332576000366003190112610332576020601354604051908152f35b3461033257606036600319011261033257612612612cfb565b61261a612d11565b6044359081612657575b6040519182526001600160a01b039081169216906000805160206143c583398151915290602090a3602060405160018152f35b60018060a01b0380841680600052602060018152846040600020549361267f828610156137b7565b851693848403612694575b5050505050612624565b836000526002835260406000203360005283526040600020546000198103612708575b5084926126df6000805160206143c583398151915297959360019361183160209915156137fc565b926000525260406000205560005260406000206126fd85825461303f565b90559185848161268a565b9091811061275d57602094926126df886000805160206143c583398151915298969461273682600196613032565b866000526002855260406000203360005285526040600020559350939597505092946126b7565b60405162461bcd60e51b815260048101849052601860248201527745524332303a20616c6c6f77616e636520746f6f206c6f7760401b6044820152606490fd5b34610332576000366003190112610332576020602a54604051908152f35b34610332576127c936612d36565b8394969793929192421161120b57612863926111af9260018060a01b0395868b1697886000526004602052604060002091825492612806846139d9565b90556040519160208301937f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d68552600060408501528b60608501528a8d1660808501528d60a085015260c084015281830152815261117381612e09565b16036111c657610330926139e8565b3461033257600036600319011261033257602b546040516001600160a01b039091168152602090f35b34610332576020366003190112610332576001600160a01b036128bc612cfb565b1660005260186020526020604060002054604051908152f35b3461033257600036600319011261033257602060405160008152f35b34610332576000366003190112610332576020602f54604051908152f35b3461033257604036600319011261033257600435600981101561033257612934612d27565b6008549091906001600160a01b031633036129ed5760ff61295482612d85565b541615159115159182146129b357808260ff6129726129a194612d85565b54161515827feeec81de25875ce1725479bb76f720a8defdb43dea041919ae37bb4aae9847c0600080a4612d85565b9060ff80198354169116179055600080f35b60405162461bcd60e51b81526020600482015260126024820152714d61726b65743a2073616d6520737461746560701b6044820152606490fd5b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881d5b985d5d1a1bdc9a5e995960621b6044820152606490fd5b3461033257604036600319011261033257612161612a45612cfb565b6024359033613a36565b3461033257606036600319011261033257612a68612cfb565b612a70612d27565b6044359081151582036103325760018060a01b03928391612a9683600554163314612f50565b15612b3a571690811590811591612b32575b5015612af557806005549283167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a36001600160a01b031991821617600555600680549091169055005b60405162461bcd60e51b81526020600482015260156024820152744f776e61626c653a207a65726f206164647265737360581b6044820152606490fd5b905083612aa8565b9150501660018060a01b03196006541617600655600080f35b3461033257600036600319011261033257600f546040805163d6d7d52560e01b81529182906001600160a01b031681600081612b91600482016133ee565b03925af18015610aca57600091600091612c8e575b50908015612c30578115612bf45781604092601155807f9f9192b5edb17356c524e08d9e025c8e2f6307e6ea52fb7968faa3081f51c3c8600080a25b42601355825191151582526020820152f35b60405162461bcd60e51b81526020600482015260146024820152734d61726b65743a20696e76616c6964207261746560601b6044820152606490fd5b9050612c416013546012549061303f565b4211612c5257604090601154612be2565b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881c985d19481d1bdbc81bdb1960621b6044820152606490fd5b9050612ca9915060403d604011610f3b57610f2b8183612e40565b82612ba6565b3461033257604036600319011261033257602090612ccb612cfb565b612cd3612d11565b9060018060a01b03809116600052600384526040600020911660005282526040600020548152f35b600435906001600160a01b038216820361033257565b602435906001600160a01b038216820361033257565b60243590811515820361033257565b60e0906003190112610332576001600160a01b03906004358281168103610332579160243590811681036103325790604435906064359060843560ff81168103610332579060a4359060c43590565b6009811015612d9e576000526007602052604060002090565b634e487b7160e01b600052602160045260246000fd5b90600182811c92168015612de4575b6020831014612dce57565b634e487b7160e01b600052602260045260246000fd5b91607f1691612dc3565b604081019081106001600160401b03821117610ab457604052565b61010081019081106001600160401b03821117610ab457604052565b608081019081106001600160401b03821117610ab457604052565b90601f801991011681019081106001600160401b03821117610ab457604052565b919082519283825260005b848110612e8d575050826000602080949584010152601f8019910116010190565b602081830181015184830182015201612e6c565b6001600160401b038111610ab457601f01601f191660200190565b929192612ec882612ea1565b91612ed66040519384612e40565b829481845281830111610332578281602093846000960137010152565b9181601f84011215610332578235916001600160401b038311610332576020838186019501011161033257565b9181601f84011215610332578235916001600160401b038311610332576020808501948460051b01011161033257565b15612f5757565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b15612fa257565b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881b9bdd081d985b1a59607a1b6044820152606490fd5b81810292918115918404141715612fee57565b634e487b7160e01b600052601160045260246000fd5b811561300e570490565b634e487b7160e01b600052601260045260246000fd5b604d8111612fee57600a0a90565b91908203918211612fee57565b91908201809211612fee57565b81810392916000138015828513169184121617612fee57565b906509184e72a00091828102928184051490151715612fee57565b90670de0b6b3a764000091828102928184051490151715612fee57565b811561300e57600160ff1b8114600019831416612fee570590565b6014546130f3916130e291906130d8906001600160801b03831690612fdb565b9060801c90613004565b91620186a0918291601f5490612fdb565b048083106131ac576131059083613032565b601e54602054830190818411612fee57839161312091612fdb565b0491828103906000809412818312811691831390151617613198579061315161314b61315693613065565b91613080565b61309d565b908082121561319157600160ff1b821461317d5703905b808211613178575090565b905090565b634e487b7160e01b81526011600452602490fd5b509061316d565b634e487b7160e01b83526011600452602483fd5b505050600090565b6014549192916131f3916131e4916131da916130d8906001600160801b03831690612fdb565b93601f5490612fdb565b6131ed83613024565b90613004565b908183106131ac5761315161314b61324d6132116132529587613032565b93613248613242613239601e5461323361322a86613024565b6020549061303f565b90612fdb565b6131ed84613024565b91613024565b61304c565b613065565b600081121561327557600160ff1b8114612fee5760000390808211613178575090565b9061316d565b6001600160a01b039081166000818152601760209081526040822054929594939192909181156133b7576132ad613cb0565b906132b9861515613489565b6009541683600c54898752601882526064604088205491604051948593849263442c159960e01b8452600484015260248301528960448301525afa9081156133ac578591613379575b509285949261335960189361333461336d996106bf61332b60409a620186a06022540490612fdb565b601e5490612fdb565b815190936001600160801b0391869161334f91841690612fdb565b9201511690613004565b81811061337157035b9783525220546134d5565b9091565b505082613362565b90508381813d83116133a5575b6133908183612e40565b810103126133a1575161336d613302565b8480fd5b503d613386565b6040513d87823e3d90fd5b5050509192505080918190565b5190811515820361033257565b91908260409103126103325760206133e8836133c4565b92015190565b60208082526000916010549161340383612db4565b92838284015260019081811690816000146134665750600114613428575b5050505090565b929350601060005280600020926000935b8585106134525750505060409250010138808080613421565b805485850160400152938201938101613439565b925050506040935060ff929192191683830152151560051b010138808080613421565b1561349057565b60405162461bcd60e51b815260206004820152601e60248201527f4d61726b65743a2065786368616e676552617465206e6f742076616c696400006044820152606490fd5b6134e0821515613489565b602060018060a01b0360095416916064600c54604051948593849263442c159960e01b845260048401526024830152600060448301525afa908115610aca5760009161354d575b50906106bf6135399260225490612fdb565b620186a0613549601e5483612fdb565b0491565b906020823d821161357b575b8161356660209383612e40565b810103126135785750516106bf613527565b80fd5b3d9150613559565b6001600160a01b031660008181526018602052604081205490926135a6916134d5565b91835260176020526040832054801561368757811561368757818110613687578281101561367d576014546135ef918391611831916130d8906001600160801b03831690612fdb565b90620186a092838302928084048514901517156136695761361492916131ed91613032565b91601b5491601c5493613627858561304c565b80820291848212600160ff1b821416613669578183051490151715613198570581848201948512911290801582169115161761317d5750808212613178575090565b634e487b7160e01b85526011600452602485fd5b50505050601b5490565b50505090565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316148061378e575b156136e8577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f000000000000000000000000000000000000000000000000000000000000000082527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a0815260c081018181106001600160401b03821117610ab45760405251902090565b507f000000000000000000000000000000000000000000000000000000000000000046146136bf565b156137be57565b60405162461bcd60e51b815260206004820152601660248201527545524332303a2062616c616e636520746f6f206c6f7760501b6044820152606490fd5b1561380357565b60405162461bcd60e51b815260206004820152601660248201527545524332303a206e6f207a65726f206164647265737360501b6044820152606490fd5b51906001600160a01b038216820361033257565b6005811015612d9e57806138665750565b600181036138ae5760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b6044820152606490fd5b600281036138fb5760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606490fd5b60031461390457565b60405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608490fd5b9291906fa2a8918ca85bafe22016d0b997e4df60600160ff1b0383116139cd5791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa156139c05781516001600160a01b038116156139ba579190565b50600190565b50604051903d90823e3d90fd5b50505050600090600390565b6000198114612fee5760010190565b7fe50de2333c10a9502fcb1d8ae13a51bbf423153dfc63c2b8997665b32154afc360018060a01b038092169160009083825260036020526040822094169384825260205284604082205580a4565b909160207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259160018060a01b03809416938460005260028352604060002095169485600052825280604060002055604051908152a3565b60ff60265416613c0b576014546001600160801b0316908115613c0457600a54604051631848f2bf60e31b8152602093916001600160a01b03919085908290600490829086165afa8015610aca578591600091613bc7575b50600460405180948193631a674cc560e11b8352165afa938415610aca57600094613b94575b5050613b279192670de0b6b3a764000092839160295490612fdb565b049081811015613b8b57613b3e602a548092613032565b83810290808204851490151715612fee576131ed613b5f92613b7f94613032565b60275492613b7960285492613b748487613032565b612fdb565b0461303f565b90808211613178575090565b50505060275490565b81813d8311613bc0575b613ba88183612e40565b81010312613bbc57519250613b2738613b0b565b8380fd5b503d613b9e565b909181813d8311613bfd575b613bdd8183612e40565b81010312613bf957519082821682036135785750849038613ae5565b5080fd5b503d613bd3565b6028549150565b600a5460405163e6abad4960e01b815290602090829060049082906001600160a01b03165afa908115610aca57600091613c43575090565b906020823d8211613c69575b81613c5c60209383612e40565b8101031261357857505190565b3d9150613c4f565b60405190613c7e82612dee565b6014546001600160801b038116835260801c6020830152565b6001600160801b039182169082160191908211612fee57565b60006020604051613cc081612dee565b82815201526001600160401b0390613cdf8260255460401c1642613032565b918215613d3657613d31613b7491670de0b6b3a7640000613d26613d01613c71565b9660018060801b03958694858a5116906301e13380613d1e613a8d565b041690612fdb565b041682855116613c97565b168252565b509050613d41613c71565b90565b604051613d5081612dee565b602554906001600160401b038281809416835260401c1691613d79602083019380855242613032565b918215613e7b57816301e13380613d8e613a8d565b041681528142168452613e2c613da2613c71565b936020670de0b6b3a7640000613dca60018060801b0393613b74858a51168989511690612fdb565b0495613e0483613ddf818a1682855116613c97565b16808352601480546001600160801b0319166001600160801b03909216919091179055565b0151601480546001600160801b03169290911660801b6001600160801b031916919091179055565b51169182602554916001600160401b0360401b905160401b169160018060801b03191617176025557f7484db546dcd57af0104c73c8a6968dfbaf5767f047cee0dadd0499ad7df81a0600080a3565b50505050565b15613e8857565b60405162461bcd60e51b815260206004820152602260248201527f42423a2063757272656e742065786368616e676552617465206e6f742076616c6044820152611a5960f21b6064820152608490fd5b6001600160801b039182169082160391908211612fee57565b15613ef857565b60405162461bcd60e51b8152602060048201526013602482015272084847440d8cadccee8d040dad2e6dac2e8c6d606b1b6044820152606490fd5b9190826040910312610332576020825192015190565b91909160018060a01b0392836009541690600c5460409485519063442c159960e01b82526004928084840152602496878401526000958660448501526020958685606481855afa94851561429d57918b8b928a94859861425f575b509060a4911694835194859384926311a5cc7760e31b84528b8401528d30908401528760448401528960648401528160848401525af1801561425557614239575b5088600d5416908851926370a0823160e01b94858552308786015287858b81875afa94851561422f5789888d948f948c97958f95859b6141e3575b50906140619291600b54169751998a9889978896635cd3dc1560e01b885233908801528601526044850152606484015260a0608484015260a4830190612e61565b03925af180156141d9576141a1575b508388600d54169287895180958193825230888301525afa8015614197578590614166575b61409f9250613032565b9586156141255790606483926009541691600e54928989519889958694638eb22cdd60e01b86528501528301528660448301525afa93841561411a575081936140e9575b50505091565b9091809350813d8311614113575b6141018183612e40565b810103126135785750513880806140e3565b503d6140f7565b51913d9150823e3d90fd5b50601f8460649387519362461bcd60e51b85528401528201527f42423a206f6e436f6c6c61746572616c5265636569766572206661696c6564006044820152fd5b50908381813d8311614190575b61417d8183612e40565b810103126133a1579061409f9151614095565b503d614173565b87513d87823e3d90fd5b8481813d83116141d2575b6141b68183612e40565b810103126141ce576141c7906133c4565b5038614070565b8580fd5b503d6141ac565b88513d88823e3d90fd5b96999a50509550959250505081813d8311614228575b6142038183612e40565b8101031261422457928989886140618f9897968f968d98519a909192614020565b8880fd5b503d6141f9565b8b513d8b823e3d90fd5b61424f90893d8b11610c1a57610c0c8183612e40565b50613fe5565b89513d89823e3d90fd5b935096505091508681813d8311614296575b61427b8183612e40565b8101031261429257519387918a918c9060a4613fa4565b8780fd5b503d614271565b8a513d8a823e3d90fd5b9190811015610a875760051b0190565b919060018060a01b038060009416845260206017815260408520549081156143ba5760188152604086205480156143b357816142f1613c71565b9460095416916064600c54604051948593849263442c159960e01b8452600484015260248301528b60448301525afa9687156143a7578097614371575b505061334f61435661434d61436c969798620186a06022540490612fdb565b601f5490612fdb565b95613b7460018060801b03948587511690612fdb565b111590565b9096508187813d83116143a0575b6143898183612e40565b81010312613578575094519461334f61435661432e565b503d61437f565b604051903d90823e3d90fd5b5050505050565b506001945050505056feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae672a2646970667358221220a5a38f91c781126cc768c4994e7d36d938f79cdf08aa791d78e2ea1bfd335ea864736f6c63430008120033"; type BBLiquidationConstructorParams = | [signer?: Signer] diff --git a/src/typechain/tapioca-bar/factories/markets/bigBang/BBStorage__factory.ts b/src/typechain/tapioca-bar/factories/markets/bigBang/BBStorage__factory.ts index f838f746..101b4f31 100644 --- a/src/typechain/tapioca-bar/factories/markets/bigBang/BBStorage__factory.ts +++ b/src/typechain/tapioca-bar/factories/markets/bigBang/BBStorage__factory.ts @@ -77,13 +77,13 @@ const _abi = [ { indexed: true, internalType: "address", - name: "_oldVal", + name: "oldVal", type: "address", }, { indexed: true, internalType: "address", - name: "_newVal", + name: "newVal", type: "address", }, ], @@ -147,6 +147,25 @@ const _abi = [ name: "ExchangeRateDurationUpdated", type: "event", }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "address", + name: "oldVal", + type: "address", + }, + { + indexed: true, + internalType: "address", + name: "newVal", + type: "address", + }, + ], + name: "LeverageExecutorSet", + type: "event", + }, { anonymous: false, inputs: [ @@ -528,6 +547,37 @@ const _abi = [ name: "UpdateMinMaxMintFee", type: "event", }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "uint256", + name: "oldMin", + type: "uint256", + }, + { + indexed: true, + internalType: "uint256", + name: "newMin", + type: "uint256", + }, + { + indexed: true, + internalType: "uint256", + name: "oldMax", + type: "uint256", + }, + { + indexed: false, + internalType: "uint256", + name: "newMax", + type: "uint256", + }, + ], + name: "UpdateMinMaxMintRange", + type: "event", + }, { inputs: [], name: "DOMAIN_SEPARATOR", @@ -937,6 +987,19 @@ const _abi = [ stateMutability: "view", type: "function", }, + { + inputs: [], + name: "leverageExecutor", + outputs: [ + { + internalType: "contract ILeverageExecutor", + name: "", + type: "address", + }, + ], + stateMutability: "view", + type: "function", + }, { inputs: [], name: "liquidationBonusAmount", @@ -1015,6 +1078,19 @@ const _abi = [ stateMutability: "view", type: "function", }, + { + inputs: [], + name: "maxMintFeeStart", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, { inputs: [], name: "minDebtRate", @@ -1054,6 +1130,19 @@ const _abi = [ stateMutability: "view", type: "function", }, + { + inputs: [], + name: "minMintFeeStart", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, { inputs: [ { @@ -1319,6 +1408,19 @@ const _abi = [ stateMutability: "view", type: "function", }, + { + inputs: [ + { + internalType: "contract ILeverageExecutor", + name: "_executor", + type: "address", + }, + ], + name: "setLeverageExecutor", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, { inputs: [ { @@ -1605,7 +1707,7 @@ const _abi = [ ] as const; const _bytecode = - "0x61014080604052346200018a5762000017816200018f565b600f81526001602082016e546170696f63612042696742616e6760881b8152602060405162000046816200018f565b8381520192603160f81b845251902091208160e052610100918183524660a0526040519160208301907f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f92838352604085015260608401524660808401523060a084015260a0835260c083019280841060018060401b03851117620001745760408490525190206080523060c052610120908152600580546001600160a01b0319163390811790915560007f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a362013880601b5562015f90601c55612710601d55612ee06020556103e8602d556127b29283620001ac843960805183612384015260a0518361244f015260c0518361234e015260e051836123d3015251826123f9015251816123b00152f35b634e487b7160e01b600052604160045260246000fd5b600080fd5b604081019081106001600160401b03821117620001745760405256fe608080604052600436101561001357600080fd5b60003560e01c908162a02a2014611ba95750806302ce728f14611992578063078dfbe71461188e578063095ea7b3146118685780630c4e84f01461174e57806318160ddd146117325780631c9e379b146116f85780631d4d3a5d146116cf5780631da8bf10146116135780631fb8f81a146115f557806323b872dd14611451578063331960ff1461143357806334d441d0146114155780633644e515146113fa57806337b6b7b9146113dc57806338d52e0f146113b35780633ba0b9a9146113955780633f741adb1461137157806340626d8b1461135357806344de240a14611335578063473e3ce71461131757806348e4163e146112dd5780634e71e0c81461122f578063529898f214611212578063542afda3146111f457806357935462146111d65780636b19ad16146111b85780636c3d8b8f1461118f57806370a0823114611155578063727785471461111f57806374645ff31461108c57806374c9e4811461106e5780637dc0d1d0146110455780637ecebe001461100b5780637fa0b84e14610fda5780638285ef4014610fa857806387b2793714610f6e5780638c5d0ed314610f505780638da5cb5b14610f27578063910dd7c814610d0e578063932bc4f814610c3057806399a9702814610c015780639e15e89f14610bc7578063a9059cbb14610ae0578063b0e21e8a14610ac2578063b27c0e7414610a91578063b7113f1914610a6e578063bb4cfe3b14610a50578063bde39c5d14610a32578063ce8849ed14610a09578063d3fb2a381461059d578063d505accf146103fb578063d8dfeb45146103d2578063dd62ed3e14610381578063de40657714610358578063e0996cb61461033a578063e30c397814610311578063ea64dd56146102f3578063eec0f42e146102d55763f791395d146102b257600080fd5b346102d05760003660031901126102d0576020602754604051908152f35b600080fd5b346102d05760003660031901126102d0576020600c54604051908152f35b346102d05760003660031901126102d0576020601f54604051908152f35b346102d05760003660031901126102d0576006546040516001600160a01b039091168152602090f35b346102d05760003660031901126102d0576020601d54604051908152f35b346102d05760003660031901126102d0576009546040516001600160a01b039091168152602090f35b346102d05760403660031901126102d05761039a611bf5565b6103a2611c0b565b9060018060a01b038091166000526002602052604060002091166000526020526020604060002054604051908152f35b346102d05760003660031901126102d057600b546040516001600160a01b039091168152602090f35b346102d05761040936611c30565b9183919395949542116105585760018060a01b03928388169485600052600460205260406000209283546000198114610542576104ec956104e4956001830190556040519060208201927f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e2668452600060408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e081526104a881611ce8565b5190206104b361234b565b9060405190602082019261190160f01b845260228301526042820152604281526104dc81611d04565b519020612612565b919091612513565b16036104fd576104fb926126e5565b005b60405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152606490fd5b634e487b7160e01b600052601160045260246000fd5b60405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b346102d0576101603660031901126102d0576001600160a01b03600435818116908190036102d0576024916001600160401b0383358181116102d057366023820112156102d05780600401359182116102d057368583830101116102d057604435938385168095036102d05761061884600554163314611d89565b806109ca575b508482610868575b50505081610827575b50506064358061080f575b50608435806107f7575b5060a435806107e0575b5060c435806107bc575b5060e43580610798575b506101043580610766575b5061012435806106f3575b5061014435908161068557005b601e5482106106945750601f55005b60849060326040519162461bcd60e51b8352602060048401528201527f4d61726b65743a206c69717569646174696f6e436f6c6c61746572616c697a616044820152711d1a5bdb94985d19481d1bdbc81cdb585b1b60721b6064820152fd5b610702620186a0821115611dd4565b601f54811161071457601e5581610678565b60405162461bcd60e51b8152602060048201526025818401527f4d61726b65743a20636f6c6c61746572616c697a6174696f6e5261746520746f6044820152646f2062696760d81b6064820152608490fd5b806016547fae6e0ab3b95f0a53ff9660a390ccedcbbf1f2355dce974a9841af106fddcfaba600080a36016558161066d565b6107a6620186a08210611dd4565b6107b3601b548211611dd4565b601c5581610662565b6107ca620186a08210611dd4565b6107d7601c548210611dd4565b601b5581610658565b6107ee620186a08210611dd4565b601d558161064e565b610806620186a0821115611dd4565b601a5581610644565b61081e620186a0821115611dd4565b6019558161063a565b816008549182167f5a62d22209e370e38eea92cfddcd228e656e6ec139243392a760a7769f5877fd600080a36001600160a01b03191617600855818061062f565b8291610875601054611cae565b601f8111610969575b50600090601f84116001146108e6576000936108d9575b5050508160011b916000199060031b1c1916176010555b7fa6f004921c944d4b8bf6e38462b00f36a58d62495d56b51f571ab78f732c9815600080a1838084610626565b0101359050848680610895565b60106000908152601f198516955060008051602061275d83398151915293509091889160205b87821061094a575050846001961061092e575b50505050811b016010556108ac565b60001960f88660031b161c19920101351690558580868161091f565b828501909301358555600194909401938992918201919081019061090c565b6010600052909250905060008051602061275d833981519152601f840160051c8101602085106109c3575b91849391601f8994920160051c01905b8181106109b1575061087e565b600081558594508893506001016109a4565b5080610994565b600f80546001600160a01b0319169190911790557f0b2d6eb667d0522c3eb86e4288afecae6c11591ffd1345d4d12407e0598bca9b600080a18561061e565b346102d05760003660031901126102d0576008546040516001600160a01b039091168152602090f35b346102d05760003660031901126102d0576020602854604051908152f35b346102d05760003660031901126102d0576020601e54604051908152f35b346102d05760003660031901126102d057602060ff602554166040519015158152f35b346102d05760003660031901126102d05760406024548151906001600160401b03908181168352831c166020820152f35b346102d05760003660031901126102d0576020601a54604051908152f35b346102d05760403660031901126102d057610af9611bf5565b602435908115801590610bb5575b610b3d575b6040519182526001600160a01b031690339060008051602061273d83398151915290602090a3602060405160018152f35b336000526001602052604060002054610b5883821015612475565b6001600160a01b038216908333839003610b75575b505050610b0c565b610b8991610b848415156124ba565b611e55565b3360005260016020526040600020556000526040600020610bab838254611e62565b9055828083610b6d565b50336001600160a01b03821614610b07565b346102d05760403660031901126102d0576060610bee610be5611bf5565b60243590611fa1565b9060405192835260208301526040820152f35b346102d05760403660031901126102d0576020610c28610c1f611bf5565b60243590612219565b604051908152f35b346102d05760003660031901126102d057604051600090602b54610c5381611cae565b808352600191808316908115610ce65750600114610c8c575b610c8883610c7c81870382611d1f565b60405191829182611d40565b0390f35b602b600090815260209450917f11c44e4875b74d31ff9fd779bf2566af7bd15b87fc985d01f5094b89e3669e4f5b828410610cd357505050810190910190610c7c81610c6c565b8054858501870152928501928101610cba565b610c889550610c7c93506020915091849260ff191682840152151560051b8201019350610c6c565b346102d05760403660031901126102d0576001600160401b036004358181116102d057366023820112156102d0578060040135918211610f115760405191610d60601f8201601f191660200184611d1f565b808352602083019136602483830101116102d057816000926024602093018537840101526024359161ffff831683036102d0576101009182828051810103126102d057610dac90612112565b610db8604083016124ff565b91610dc5606082016124ff565b9460808201519460a08301519260c08101519160ff831683036102d05760e082015191015191844211610558578515610eeb577f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e2665b6001600160a01b0388166000908152600460205260409020805490969060001981146105425761ffff6104e497610ea89960018401905560405194602086015216604084015260018060a01b038a16606084015260018060a01b038c1660808401528a60a084015260c083015260e082015260e08152610e9981611ce8565b602081519101206104b361234b565b6001600160a01b038381169116036104fd5715610ed5576104fb926001600160a01b0390811691166126e5565b6104fb926001600160a01b039081169116612697565b7f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d6610e1a565b634e487b7160e01b600052604160045260246000fd5b346102d05760003660031901126102d0576005546040516001600160a01b039091168152602090f35b346102d05760003660031901126102d0576020601b54604051908152f35b346102d05760203660031901126102d0576001600160a01b03610f8f611bf5565b1660005260236020526020604060002054604051908152f35b346102d05760003660031901126102d057601454604080516001600160801b038316815260809290921c602083015290f35b346102d05760403660031901126102d057611000610ff6611bf5565b6024359033612697565b602060405160018152f35b346102d05760203660031901126102d0576001600160a01b0361102c611bf5565b1660005260046020526020604060002054604051908152f35b346102d05760003660031901126102d057600f546040516001600160a01b039091168152602090f35b346102d05760003660031901126102d0576020602d54604051908152f35b346102d05760003660031901126102d0576040516000906010546110af81611cae565b808352600191808316908115610ce657506001146110d757610c8883610c7c81870382611d1f565b60106000908152602094509160008051602061275d8339815191525b82841061110c57505050810190910190610c7c81610c6c565b80548585018701529285019281016110f3565b346102d05760203660031901126102d05760043560098110156102d05760ff611149602092611c7f565b54166040519015158152f35b346102d05760203660031901126102d0576001600160a01b03611176611bf5565b1660005260016020526020604060002054604051908152f35b346102d05760003660031901126102d057600a546040516001600160a01b039091168152602090f35b346102d05760003660031901126102d0576020602654604051908152f35b346102d05760003660031901126102d0576020601c54604051908152f35b346102d05760003660031901126102d0576020602c54604051908152f35b346102d05760003660031901126102d05760208054604051908152f35b346102d05760003660031901126102d0576006546001600160a01b03908181163381900361129957806005549384167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a36001600160a01b03199283161760055516600655005b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b346102d05760203660031901126102d0576001600160a01b036112fe611bf5565b1660005260176020526020604060002054604051908152f35b346102d05760003660031901126102d0576020601554604051908152f35b346102d05760003660031901126102d0576020600e54604051908152f35b346102d05760003660031901126102d0576020601654604051908152f35b346102d05760603660031901126102d0576020610c28604435602435600435611e88565b346102d05760003660031901126102d0576020601154604051908152f35b346102d05760003660031901126102d057600d546040516001600160a01b039091168152602090f35b346102d05760003660031901126102d0576020601254604051908152f35b346102d05760003660031901126102d0576020610c2861234b565b346102d05760003660031901126102d0576020601954604051908152f35b346102d05760003660031901126102d0576020601354604051908152f35b346102d05760603660031901126102d05761146a611bf5565b611472611c0b565b60443590816114af575b6040519182526001600160a01b0390811692169060008051602061273d83398151915290602090a3602060405160018152f35b60018060a01b038084168060005260206001815284604060002054936114d782861015612475565b8516938484036114ec575b505050505061147c565b836000526002835260406000203360005283526040600020546000198103611560575b50849261153760008051602061273d833981519152979593600193610b8460209915156124ba565b92600052526040600020556000526040600020611555858254611e62565b9055918584816114e2565b909181106115b557602094926115378860008051602061273d83398151915298969461158e82600196611e55565b8660005260028552604060002033600052855260406000205593509395975050929461150f565b60405162461bcd60e51b815260048101849052601860248201527745524332303a20616c6c6f77616e636520746f6f206c6f7760401b6044820152606490fd5b346102d05760003660031901126102d0576020602954604051908152f35b346102d05761162136611c30565b9183919395949542116105585760018060a01b03928388169485600052600460205260406000209283546000198114610542576116c0956104e4956001830190556040519060208201927f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d68452600060408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e081526104a881611ce8565b16036104fd576104fb92612697565b346102d05760003660031901126102d057602a546040516001600160a01b039091168152602090f35b346102d05760203660031901126102d0576001600160a01b03611719611bf5565b1660005260186020526020604060002054604051908152f35b346102d05760003660031901126102d057602060405160008152f35b346102d05760403660031901126102d05760043560098110156102d057611773611c21565b6008549091906001600160a01b0316330361182c5760ff61179382611c7f565b541615159115159182146117f257808260ff6117b16117e094611c7f565b54161515827feeec81de25875ce1725479bb76f720a8defdb43dea041919ae37bb4aae9847c0600080a4611c7f565b9060ff80198354169116179055600080f35b60405162461bcd60e51b81526020600482015260126024820152714d61726b65743a2073616d6520737461746560701b6044820152606490fd5b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881d5b985d5d1a1bdc9a5e995960621b6044820152606490fd5b346102d05760403660031901126102d057611000611884611bf5565b60243590336126e5565b346102d05760603660031901126102d0576118a7611bf5565b6118af611c21565b6044359081151582036102d05760018060a01b039283916118d583600554163314611d89565b15611979571690811590811591611971575b501561193457806005549283167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a36001600160a01b031991821617600555600680549091169055005b60405162461bcd60e51b81526020600482015260156024820152744f776e61626c653a207a65726f206164647265737360581b6044820152606490fd5b9050836118e7565b9150501660018060a01b03196006541617600655600080f35b346102d05760003660031901126102d05760018060a01b03600f54166040519063d6d7d52560e01b82526020918260048201526000916010546119d481611cae565b908160248501526001908181169081600014611b835750600114611b43575b50509060409181600081809603925af18015611b3757600091600091611af8575b508115611a9b578015611a5f5760409281601155817f9f9192b5edb17356c524e08d9e025c8e2f6307e6ea52fb7968faa3081f51c3c8600080a25b4260135583519215158352820152f35b60405162461bcd60e51b81526004810184905260146024820152734d61726b65743a20696e76616c6964207261746560601b6044820152606490fd5b50611aab60135460125490611e62565b4211611abc57601154604092611a4f565b60405162461bcd60e51b815260048101839052601460248201527313585c9ad95d0e881c985d19481d1bdbc81bdb1960621b6044820152606490fd5b9150506040813d604011611b2f575b81611b1460409383611d1f565b810103126102d05781611b2682612112565b91015183611a14565b3d9150611b07565b6040513d6000823e3d90fd5b935060106000528460002093856000955b838710611b6e5750505050918101604401918060406119f3565b80548688016044015295019486908201611b54565b60ff191660448087019190915292151560051b85019092019450829150604090506119f3565b346102d05760403660031901126102d057602090611bc5611bf5565b611bcd611c0b565b9060018060a01b03809116600052600384526040600020911660005282526040600020548152f35b600435906001600160a01b03821682036102d057565b602435906001600160a01b03821682036102d057565b6024359081151582036102d057565b60e09060031901126102d0576001600160a01b039060043582811681036102d0579160243590811681036102d05790604435906064359060843560ff811681036102d0579060a4359060c43590565b6009811015611c98576000526007602052604060002090565b634e487b7160e01b600052602160045260246000fd5b90600182811c92168015611cde575b6020831014611cc857565b634e487b7160e01b600052602260045260246000fd5b91607f1691611cbd565b61010081019081106001600160401b03821117610f1157604052565b608081019081106001600160401b03821117610f1157604052565b90601f801991011681019081106001600160401b03821117610f1157604052565b6020808252825181830181905290939260005b828110611d7557505060409293506000838284010152601f8019910116010190565b818101860151848201604001528501611d53565b15611d9057565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b15611ddb57565b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881b9bdd081d985b1a59607a1b6044820152606490fd5b8181029291811591840414171561054257565b8115611e31570490565b634e487b7160e01b600052601260045260246000fd5b604d811161054257600a0a90565b9190820391821161054257565b9190820180921161054257565b8181039291600013801582851316918412161761054257565b601454919291611ed191611ec291611eb891611eae906001600160801b03831690611e14565b9060801c90611e27565b93601f5490611e14565b611ecb83611e47565b90611e27565b808310611f9957611ee5611f219184611e55565b91611f1c611f16611f0d601e54611f07611efe86611e47565b60205490611e62565b90611e14565b611ecb84611e47565b91611e47565b611e6f565b6509184e72a0009081810291818305149015171561054257670de0b6b3a764000091828102928184051490151715610542578015611e3157600160ff1b918083146000198314166105425705906000821215611f9257811461054257600003905b808211611f8d575090565b905090565b5090611f82565b505050600090565b9160018060a01b0380931691600093838552602060178152604091828720549081156121055783518481018181106001600160401b038211176120f1578552888152888480830193828552611ff789151561211f565b600954166064600c548c85526018845289852054928a51958694859363442c159960e01b85526004850152602484015260448301525afa9081156120e7578a916120b4575b506120a897989994926018949261208b6120768a61207161206861209497620186a06021540490611e14565b601e5490611e14565b611e27565b915191946001600160801b0392831690611e14565b91511690611e27565b8181106120ac57035b97835252205461216b565b9091565b50508261209d565b90508481813d83116120e0575b6120cb8183611d1f565b810103126120dc57516120a861203c565b8980fd5b503d6120c1565b86513d8c823e3d90fd5b634e487b7160e01b8a52604160045260248afd5b5086955085949350505050565b519081151582036102d057565b1561212657565b60405162461bcd60e51b815260206004820152601e60248201527f4d61726b65743a2065786368616e676552617465206e6f742076616c696400006044820152606490fd5b61217682151561211f565b602060018060a01b0360095416916064600c54604051948593849263442c159960e01b845260048401526024830152600060448301525afa908115611b37576000916121e3575b50906120716121cf9260215490611e14565b620186a06121df601e5483611e14565b0491565b906020823d8211612211575b816121fc60209383611d1f565b8101031261220e5750516120716121bd565b80fd5b3d91506121ef565b6001600160a01b0316600081815260186020526040812054909261223c9161216b565b91835260176020526040832054801561234557811561234557818110612345578281101561233b57601454612285918391610b8491611eae906001600160801b03831690611e14565b90620186a09283830292808404851490151715612327576122aa9291611ecb91611e55565b91601b5491601c54936122bd8585611e6f565b80820291848212600160ff1b82141661232757818305149015171561231357058184820194851291129080158216911516176122ff5750808212611f8d575090565b634e487b7160e01b81526011600452602490fd5b634e487b7160e01b83526011600452602483fd5b634e487b7160e01b85526011600452602485fd5b50505050601b5490565b50505090565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316148061244c575b156123a6577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f000000000000000000000000000000000000000000000000000000000000000082527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a0815260c081018181106001600160401b03821117610f115760405251902090565b507f0000000000000000000000000000000000000000000000000000000000000000461461237d565b1561247c57565b60405162461bcd60e51b815260206004820152601660248201527545524332303a2062616c616e636520746f6f206c6f7760501b6044820152606490fd5b156124c157565b60405162461bcd60e51b815260206004820152601660248201527545524332303a206e6f207a65726f206164647265737360501b6044820152606490fd5b51906001600160a01b03821682036102d057565b6005811015611c9857806125245750565b6001810361256c5760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b6044820152606490fd5b600281036125b95760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606490fd5b6003146125c257565b60405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608490fd5b9291906fa2a8918ca85bafe22016d0b997e4df60600160ff1b03831161268b5791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa1561267e5781516001600160a01b03811615612678579190565b50600190565b50604051903d90823e3d90fd5b50505050600090600390565b7fe50de2333c10a9502fcb1d8ae13a51bbf423153dfc63c2b8997665b32154afc360018060a01b038092169160009083825260036020526040822094169384825260205284604082205580a4565b909160207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259160018060a01b03809416938460005260028352604060002095169485600052825280604060002055604051908152a356feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae672a2646970667358221220a1f57aa74ba0e0d61c5f384052bbd0214403e2555455c840b50acfdc9c6ed70b64736f6c63430008120033"; + "0x61014080604052346200018a5762000017816200018f565b600f81526001602082016e546170696f63612042696742616e6760881b8152602060405162000046816200018f565b8381520192603160f81b845251902091208160e052610100918183524660a0526040519160208301907f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f92838352604085015260608401524660808401523060a084015260a0835260c083019280841060018060401b03851117620001745760408490525190206080523060c052610120908152600580546001600160a01b0319163390811790915560007f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a362013880601b5562015f90601c55612710601d55612ee06020556103e8602e556128b59283620001ac843960805183612487015260a05183612552015260c05183612451015260e051836124d6015251826124fc015251816124b30152f35b634e487b7160e01b600052604160045260246000fd5b600080fd5b604081019081106001600160401b03821117620001745760405256fe608080604052600436101561001357600080fd5b60003560e01c908162a02a2014611cac5750806302ce728f14611a95578063078dfbe714611991578063095ea7b31461196b5780630c4e84f0146118515780630f8b29ea1461183357806318160ddd146118175780631c9e379b146117dd5780631d4d3a5d146117b45780631da8bf10146116f85780631fb8f81a146116da57806323b872dd14611536578063331960ff1461151857806334d441d0146114fa5780633644e515146114df57806337b6b7b9146114c157806338d52e0f146114985780633ba0b9a91461147a5780633f741adb1461145657806340626d8b1461143857806344de240a1461141a578063473e3ce7146113fc57806348e4163e146113c25780634e71e0c814611314578063529898f2146112f7578063542afda3146112d957806357935462146112bb5780636b19ad161461129d5780636c3d8b8f1461127457806370a082311461123a578063727785471461120457806374645ff31461117157806374c9e48114611153578063790c8467146111355780637dc0d1d01461110c5780637ecebe00146110d25780637fa0b84e146110a15780638285ef401461106f57806387b27937146110355780638c5d0ed3146110175780638da5cb5b14610fee578063910dd7c814610dd5578063932bc4f814610cf757806399a9702814610cc85780639e15e89f14610c8e578063a9059cbb14610ba7578063b0e21e8a14610b89578063b27c0e7414610b58578063b7113f1914610b35578063bb4cfe3b14610b17578063bde39c5d14610af9578063ce8849ed14610ad0578063d3fb2a3814610664578063d505accf146104c2578063d8dfeb4514610499578063da863f0e14610470578063dd62ed3e1461041f578063de406577146103f6578063e0996cb6146103d8578063e30c3978146103af578063ea64dd5614610391578063eec0f42e14610373578063ef2b234a146103015763f791395d146102de57600080fd5b346102fc5760003660031901126102fc576020602854604051908152f35b600080fd5b346102fc5760203660031901126102fc576004356001600160a01b03818116918290036102fc5761033781600554163314611e8c565b816021549182167ffb4fd7114609dd603b57adbc2082205bfbbcabf9265c4b437b472f5c592b8cd7600080a36001600160a01b03191617602155005b346102fc5760003660031901126102fc576020600c54604051908152f35b346102fc5760003660031901126102fc576020601f54604051908152f35b346102fc5760003660031901126102fc576006546040516001600160a01b039091168152602090f35b346102fc5760003660031901126102fc576020601d54604051908152f35b346102fc5760003660031901126102fc576009546040516001600160a01b039091168152602090f35b346102fc5760403660031901126102fc57610438611cf8565b610440611d0e565b9060018060a01b038091166000526002602052604060002091166000526020526020604060002054604051908152f35b346102fc5760003660031901126102fc576021546040516001600160a01b039091168152602090f35b346102fc5760003660031901126102fc57600b546040516001600160a01b039091168152602090f35b346102fc576104d036611d33565b91839193959495421161061f5760018060a01b03928388169485600052600460205260406000209283546000198114610609576105b3956105ab956001830190556040519060208201927f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e2668452600060408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e0815261056f81611deb565b51902061057a61244e565b9060405190602082019261190160f01b845260228301526042820152604281526105a381611e07565b519020612715565b919091612616565b16036105c4576105c2926127e8565b005b60405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152606490fd5b634e487b7160e01b600052601160045260246000fd5b60405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b346102fc576101603660031901126102fc576001600160a01b03600435818116908190036102fc576024916001600160401b0383358181116102fc57366023820112156102fc5780600401359182116102fc57368583830101116102fc57604435938385168095036102fc576106df84600554163314611e8c565b80610a91575b50848261092f575b505050816108ee575b5050606435806108d6575b50608435806108be575b5060a435806108a7575b5060c43580610883575b5060e4358061085f575b50610104358061082d575b5061012435806107ba575b5061014435908161074c57005b601e54821061075b5750601f55005b60849060326040519162461bcd60e51b8352602060048401528201527f4d61726b65743a206c69717569646174696f6e436f6c6c61746572616c697a616044820152711d1a5bdb94985d19481d1bdbc81cdb585b1b60721b6064820152fd5b6107c9620186a0821115611ed7565b601f5481116107db57601e558161073f565b60405162461bcd60e51b8152602060048201526025818401527f4d61726b65743a20636f6c6c61746572616c697a6174696f6e5261746520746f6044820152646f2062696760d81b6064820152608490fd5b806016547fae6e0ab3b95f0a53ff9660a390ccedcbbf1f2355dce974a9841af106fddcfaba600080a360165581610734565b61086d620186a08210611ed7565b61087a601b548211611ed7565b601c5581610729565b610891620186a08210611ed7565b61089e601c548210611ed7565b601b558161071f565b6108b5620186a08210611ed7565b601d5581610715565b6108cd620186a0821115611ed7565b601a558161070b565b6108e5620186a0821115611ed7565b60195581610701565b816008549182167f5a62d22209e370e38eea92cfddcd228e656e6ec139243392a760a7769f5877fd600080a36001600160a01b0319161760085581806106f6565b829161093c601054611db1565b601f8111610a30575b50600090601f84116001146109ad576000936109a0575b5050508160011b916000199060031b1c1916176010555b7fa6f004921c944d4b8bf6e38462b00f36a58d62495d56b51f571ab78f732c9815600080a18380846106ed565b010135905084868061095c565b60106000908152601f198516955060008051602061286083398151915293509091889160205b878210610a1157505084600196106109f5575b50505050811b01601055610973565b60001960f88660031b161c1992010135169055858086816109e6565b82850190930135855560019490940193899291820191908101906109d3565b60106000529092509050600080516020612860833981519152601f840160051c810160208510610a8a575b91849391601f8994920160051c01905b818110610a785750610945565b60008155859450889350600101610a6b565b5080610a5b565b600f80546001600160a01b0319169190911790557f0b2d6eb667d0522c3eb86e4288afecae6c11591ffd1345d4d12407e0598bca9b600080a1856106e5565b346102fc5760003660031901126102fc576008546040516001600160a01b039091168152602090f35b346102fc5760003660031901126102fc576020602954604051908152f35b346102fc5760003660031901126102fc576020601e54604051908152f35b346102fc5760003660031901126102fc57602060ff602654166040519015158152f35b346102fc5760003660031901126102fc5760406025548151906001600160401b03908181168352831c166020820152f35b346102fc5760003660031901126102fc576020601a54604051908152f35b346102fc5760403660031901126102fc57610bc0611cf8565b602435908115801590610c7c575b610c04575b6040519182526001600160a01b031690339060008051602061284083398151915290602090a3602060405160018152f35b336000526001602052604060002054610c1f83821015612578565b6001600160a01b038216908333839003610c3c575b505050610bd3565b610c5091610c4b8415156125bd565b611f58565b3360005260016020526040600020556000526040600020610c72838254611f65565b9055828083610c34565b50336001600160a01b03821614610bce565b346102fc5760403660031901126102fc576060610cb5610cac611cf8565b602435906120a4565b9060405192835260208301526040820152f35b346102fc5760403660031901126102fc576020610cef610ce6611cf8565b6024359061231c565b604051908152f35b346102fc5760003660031901126102fc57604051600090602c54610d1a81611db1565b808352600191808316908115610dad5750600114610d53575b610d4f83610d4381870382611e22565b60405191829182611e43565b0390f35b602c600090815260209450917f7416c943b4a09859521022fd2e90eac0dd9026dad28fa317782a135f28a860915b828410610d9a57505050810190910190610d4381610d33565b8054858501870152928501928101610d81565b610d4f9550610d4393506020915091849260ff191682840152151560051b8201019350610d33565b346102fc5760403660031901126102fc576001600160401b036004358181116102fc57366023820112156102fc578060040135918211610fd85760405191610e27601f8201601f191660200184611e22565b808352602083019136602483830101116102fc57816000926024602093018537840101526024359161ffff831683036102fc576101009182828051810103126102fc57610e7390612215565b610e7f60408301612602565b91610e8c60608201612602565b9460808201519460a08301519260c08101519160ff831683036102fc5760e08201519101519184421161061f578515610fb2577f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e2665b6001600160a01b0388166000908152600460205260409020805490969060001981146106095761ffff6105ab97610f6f9960018401905560405194602086015216604084015260018060a01b038a16606084015260018060a01b038c1660808401528a60a084015260c083015260e082015260e08152610f6081611deb565b6020815191012061057a61244e565b6001600160a01b038381169116036105c45715610f9c576105c2926001600160a01b0390811691166127e8565b6105c2926001600160a01b03908116911661279a565b7f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d6610ee1565b634e487b7160e01b600052604160045260246000fd5b346102fc5760003660031901126102fc576005546040516001600160a01b039091168152602090f35b346102fc5760003660031901126102fc576020601b54604051908152f35b346102fc5760203660031901126102fc576001600160a01b03611056611cf8565b1660005260246020526020604060002054604051908152f35b346102fc5760003660031901126102fc57601454604080516001600160801b038316815260809290921c602083015290f35b346102fc5760403660031901126102fc576110c76110bd611cf8565b602435903361279a565b602060405160018152f35b346102fc5760203660031901126102fc576001600160a01b036110f3611cf8565b1660005260046020526020604060002054604051908152f35b346102fc5760003660031901126102fc57600f546040516001600160a01b039091168152602090f35b346102fc5760003660031901126102fc576020603054604051908152f35b346102fc5760003660031901126102fc576020602e54604051908152f35b346102fc5760003660031901126102fc5760405160009060105461119481611db1565b808352600191808316908115610dad57506001146111bc57610d4f83610d4381870382611e22565b6010600090815260209450916000805160206128608339815191525b8284106111f157505050810190910190610d4381610d33565b80548585018701529285019281016111d8565b346102fc5760203660031901126102fc5760043560098110156102fc5760ff61122e602092611d82565b54166040519015158152f35b346102fc5760203660031901126102fc576001600160a01b0361125b611cf8565b1660005260016020526020604060002054604051908152f35b346102fc5760003660031901126102fc57600a546040516001600160a01b039091168152602090f35b346102fc5760003660031901126102fc576020602754604051908152f35b346102fc5760003660031901126102fc576020601c54604051908152f35b346102fc5760003660031901126102fc576020602d54604051908152f35b346102fc5760003660031901126102fc5760208054604051908152f35b346102fc5760003660031901126102fc576006546001600160a01b03908181163381900361137e57806005549384167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a36001600160a01b03199283161760055516600655005b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b346102fc5760203660031901126102fc576001600160a01b036113e3611cf8565b1660005260176020526020604060002054604051908152f35b346102fc5760003660031901126102fc576020601554604051908152f35b346102fc5760003660031901126102fc576020600e54604051908152f35b346102fc5760003660031901126102fc576020601654604051908152f35b346102fc5760603660031901126102fc576020610cef604435602435600435611f8b565b346102fc5760003660031901126102fc576020601154604051908152f35b346102fc5760003660031901126102fc57600d546040516001600160a01b039091168152602090f35b346102fc5760003660031901126102fc576020601254604051908152f35b346102fc5760003660031901126102fc576020610cef61244e565b346102fc5760003660031901126102fc576020601954604051908152f35b346102fc5760003660031901126102fc576020601354604051908152f35b346102fc5760603660031901126102fc5761154f611cf8565b611557611d0e565b6044359081611594575b6040519182526001600160a01b0390811692169060008051602061284083398151915290602090a3602060405160018152f35b60018060a01b038084168060005260206001815284604060002054936115bc82861015612578565b8516938484036115d1575b5050505050611561565b836000526002835260406000203360005283526040600020546000198103611645575b50849261161c600080516020612840833981519152979593600193610c4b60209915156125bd565b9260005252604060002055600052604060002061163a858254611f65565b9055918584816115c7565b9091811061169a576020949261161c8860008051602061284083398151915298969461167382600196611f58565b866000526002855260406000203360005285526040600020559350939597505092946115f4565b60405162461bcd60e51b815260048101849052601860248201527745524332303a20616c6c6f77616e636520746f6f206c6f7760401b6044820152606490fd5b346102fc5760003660031901126102fc576020602a54604051908152f35b346102fc5761170636611d33565b91839193959495421161061f5760018060a01b03928388169485600052600460205260406000209283546000198114610609576117a5956105ab956001830190556040519060208201927f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d68452600060408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e0815261056f81611deb565b16036105c4576105c29261279a565b346102fc5760003660031901126102fc57602b546040516001600160a01b039091168152602090f35b346102fc5760203660031901126102fc576001600160a01b036117fe611cf8565b1660005260186020526020604060002054604051908152f35b346102fc5760003660031901126102fc57602060405160008152f35b346102fc5760003660031901126102fc576020602f54604051908152f35b346102fc5760403660031901126102fc5760043560098110156102fc57611876611d24565b6008549091906001600160a01b0316330361192f5760ff61189682611d82565b541615159115159182146118f557808260ff6118b46118e394611d82565b54161515827feeec81de25875ce1725479bb76f720a8defdb43dea041919ae37bb4aae9847c0600080a4611d82565b9060ff80198354169116179055600080f35b60405162461bcd60e51b81526020600482015260126024820152714d61726b65743a2073616d6520737461746560701b6044820152606490fd5b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881d5b985d5d1a1bdc9a5e995960621b6044820152606490fd5b346102fc5760403660031901126102fc576110c7611987611cf8565b60243590336127e8565b346102fc5760603660031901126102fc576119aa611cf8565b6119b2611d24565b6044359081151582036102fc5760018060a01b039283916119d883600554163314611e8c565b15611a7c571690811590811591611a74575b5015611a3757806005549283167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a36001600160a01b031991821617600555600680549091169055005b60405162461bcd60e51b81526020600482015260156024820152744f776e61626c653a207a65726f206164647265737360581b6044820152606490fd5b9050836119ea565b9150501660018060a01b03196006541617600655600080f35b346102fc5760003660031901126102fc5760018060a01b03600f54166040519063d6d7d52560e01b8252602091826004820152600091601054611ad781611db1565b908160248501526001908181169081600014611c865750600114611c46575b50509060409181600081809603925af18015611c3a57600091600091611bfb575b508115611b9e578015611b625760409281601155817f9f9192b5edb17356c524e08d9e025c8e2f6307e6ea52fb7968faa3081f51c3c8600080a25b4260135583519215158352820152f35b60405162461bcd60e51b81526004810184905260146024820152734d61726b65743a20696e76616c6964207261746560601b6044820152606490fd5b50611bae60135460125490611f65565b4211611bbf57601154604092611b52565b60405162461bcd60e51b815260048101839052601460248201527313585c9ad95d0e881c985d19481d1bdbc81bdb1960621b6044820152606490fd5b9150506040813d604011611c32575b81611c1760409383611e22565b810103126102fc5781611c2982612215565b91015183611b17565b3d9150611c0a565b6040513d6000823e3d90fd5b935060106000528460002093856000955b838710611c71575050505091810160440191806040611af6565b80548688016044015295019486908201611c57565b60ff191660448087019190915292151560051b8501909201945082915060409050611af6565b346102fc5760403660031901126102fc57602090611cc8611cf8565b611cd0611d0e565b9060018060a01b03809116600052600384526040600020911660005282526040600020548152f35b600435906001600160a01b03821682036102fc57565b602435906001600160a01b03821682036102fc57565b6024359081151582036102fc57565b60e09060031901126102fc576001600160a01b039060043582811681036102fc579160243590811681036102fc5790604435906064359060843560ff811681036102fc579060a4359060c43590565b6009811015611d9b576000526007602052604060002090565b634e487b7160e01b600052602160045260246000fd5b90600182811c92168015611de1575b6020831014611dcb57565b634e487b7160e01b600052602260045260246000fd5b91607f1691611dc0565b61010081019081106001600160401b03821117610fd857604052565b608081019081106001600160401b03821117610fd857604052565b90601f801991011681019081106001600160401b03821117610fd857604052565b6020808252825181830181905290939260005b828110611e7857505060409293506000838284010152601f8019910116010190565b818101860151848201604001528501611e56565b15611e9357565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b15611ede57565b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881b9bdd081d985b1a59607a1b6044820152606490fd5b8181029291811591840414171561060957565b8115611f34570490565b634e487b7160e01b600052601260045260246000fd5b604d811161060957600a0a90565b9190820391821161060957565b9190820180921161060957565b8181039291600013801582851316918412161761060957565b601454919291611fd491611fc591611fbb91611fb1906001600160801b03831690611f17565b9060801c90611f2a565b93601f5490611f17565b611fce83611f4a565b90611f2a565b80831061209c57611fe86120249184611f58565b9161201f612019612010601e5461200a61200186611f4a565b60205490611f65565b90611f17565b611fce84611f4a565b91611f4a565b611f72565b6509184e72a0009081810291818305149015171561060957670de0b6b3a764000091828102928184051490151715610609578015611f3457600160ff1b91808314600019831416610609570590600082121561209557811461060957600003905b808211612090575090565b905090565b5090612085565b505050600090565b9160018060a01b0380931691600093838552602060178152604091828720549081156122085783518481018181106001600160401b038211176121f45785528881528884808301938285526120fa891515612222565b600954166064600c548c85526018845289852054928a51958694859363442c159960e01b85526004850152602484015260448301525afa9081156121ea578a916121b7575b506121ab97989994926018949261218e6121798a61217461216b61219797620186a06022540490611f17565b601e5490611f17565b611f2a565b915191946001600160801b0392831690611f17565b91511690611f2a565b8181106121af57035b97835252205461226e565b9091565b5050826121a0565b90508481813d83116121e3575b6121ce8183611e22565b810103126121df57516121ab61213f565b8980fd5b503d6121c4565b86513d8c823e3d90fd5b634e487b7160e01b8a52604160045260248afd5b5086955085949350505050565b519081151582036102fc57565b1561222957565b60405162461bcd60e51b815260206004820152601e60248201527f4d61726b65743a2065786368616e676552617465206e6f742076616c696400006044820152606490fd5b612279821515612222565b602060018060a01b0360095416916064600c54604051948593849263442c159960e01b845260048401526024830152600060448301525afa908115611c3a576000916122e6575b50906121746122d29260225490611f17565b620186a06122e2601e5483611f17565b0491565b906020823d8211612314575b816122ff60209383611e22565b810103126123115750516121746122c0565b80fd5b3d91506122f2565b6001600160a01b0316600081815260186020526040812054909261233f9161226e565b91835260176020526040832054801561244857811561244857818110612448578281101561243e57601454612388918391610c4b91611fb1906001600160801b03831690611f17565b90620186a0928383029280840485149015171561242a576123ad9291611fce91611f58565b91601b5491601c54936123c08585611f72565b80820291848212600160ff1b82141661242a57818305149015171561241657058184820194851291129080158216911516176124025750808212612090575090565b634e487b7160e01b81526011600452602490fd5b634e487b7160e01b83526011600452602483fd5b634e487b7160e01b85526011600452602485fd5b50505050601b5490565b50505090565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316148061254f575b156124a9577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f000000000000000000000000000000000000000000000000000000000000000082527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a0815260c081018181106001600160401b03821117610fd85760405251902090565b507f00000000000000000000000000000000000000000000000000000000000000004614612480565b1561257f57565b60405162461bcd60e51b815260206004820152601660248201527545524332303a2062616c616e636520746f6f206c6f7760501b6044820152606490fd5b156125c457565b60405162461bcd60e51b815260206004820152601660248201527545524332303a206e6f207a65726f206164647265737360501b6044820152606490fd5b51906001600160a01b03821682036102fc57565b6005811015611d9b57806126275750565b6001810361266f5760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b6044820152606490fd5b600281036126bc5760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606490fd5b6003146126c557565b60405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608490fd5b9291906fa2a8918ca85bafe22016d0b997e4df60600160ff1b03831161278e5791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa156127815781516001600160a01b0381161561277b579190565b50600190565b50604051903d90823e3d90fd5b50505050600090600390565b7fe50de2333c10a9502fcb1d8ae13a51bbf423153dfc63c2b8997665b32154afc360018060a01b038092169160009083825260036020526040822094169384825260205284604082205580a4565b909160207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259160018060a01b03809416938460005260028352604060002095169485600052825280604060002055604051908152a356feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae672a2646970667358221220175361522ccf85d353159ae4a6ad7644d6e7f5abbe3cc2d23707a8dc0fc4a8bd64736f6c63430008120033"; type BBStorageConstructorParams = | [signer?: Signer] diff --git a/src/typechain/tapioca-bar/factories/markets/bigBang/BigBang__factory.ts b/src/typechain/tapioca-bar/factories/markets/bigBang/BigBang__factory.ts index a8978b8b..569d97dc 100644 --- a/src/typechain/tapioca-bar/factories/markets/bigBang/BigBang__factory.ts +++ b/src/typechain/tapioca-bar/factories/markets/bigBang/BigBang__factory.ts @@ -72,13 +72,13 @@ const _abi = [ { indexed: true, internalType: "address", - name: "_oldVal", + name: "oldVal", type: "address", }, { indexed: true, internalType: "address", - name: "_newVal", + name: "newVal", type: "address", }, ], @@ -142,6 +142,25 @@ const _abi = [ name: "ExchangeRateDurationUpdated", type: "event", }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "address", + name: "oldVal", + type: "address", + }, + { + indexed: true, + internalType: "address", + name: "newVal", + type: "address", + }, + ], + name: "LeverageExecutorSet", + type: "event", + }, { anonymous: false, inputs: [ @@ -523,6 +542,37 @@ const _abi = [ name: "UpdateMinMaxMintFee", type: "event", }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "uint256", + name: "oldMin", + type: "uint256", + }, + { + indexed: true, + internalType: "uint256", + name: "newMin", + type: "uint256", + }, + { + indexed: true, + internalType: "uint256", + name: "oldMax", + type: "uint256", + }, + { + indexed: false, + internalType: "uint256", + name: "newMax", + type: "uint256", + }, + ], + name: "UpdateMinMaxMintRange", + type: "event", + }, { inputs: [], name: "DOMAIN_SEPARATOR", @@ -825,19 +875,9 @@ const _abi = [ name: "supplyAmount", type: "uint256", }, - { - internalType: "uint256", - name: "minAmountOut", - type: "uint256", - }, - { - internalType: "contract ISwapper", - name: "swapper", - type: "address", - }, { internalType: "bytes", - name: "dexData", + name: "data", type: "bytes", }, ], @@ -1144,6 +1184,19 @@ const _abi = [ stateMutability: "view", type: "function", }, + { + inputs: [], + name: "leverageExecutor", + outputs: [ + { + internalType: "contract ILeverageExecutor", + name: "", + type: "address", + }, + ], + stateMutability: "view", + type: "function", + }, { inputs: [], name: "leverageModule", @@ -1304,6 +1357,19 @@ const _abi = [ stateMutability: "view", type: "function", }, + { + inputs: [], + name: "maxMintFeeStart", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, { inputs: [], name: "minDebtRate", @@ -1343,6 +1409,19 @@ const _abi = [ stateMutability: "view", type: "function", }, + { + inputs: [], + name: "minMintFeeStart", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, { inputs: [ { @@ -1708,19 +1787,9 @@ const _abi = [ name: "share", type: "uint256", }, - { - internalType: "uint256", - name: "minAmountOut", - type: "uint256", - }, - { - internalType: "contract ISwapper", - name: "swapper", - type: "address", - }, { internalType: "bytes", - name: "dexData", + name: "data", type: "bytes", }, ], @@ -1781,6 +1850,19 @@ const _abi = [ stateMutability: "nonpayable", type: "function", }, + { + inputs: [ + { + internalType: "contract ILeverageExecutor", + name: "_executor", + type: "address", + }, + ], + name: "setLeverageExecutor", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, { inputs: [ { @@ -1862,6 +1944,24 @@ const _abi = [ stateMutability: "nonpayable", type: "function", }, + { + inputs: [ + { + internalType: "uint256", + name: "_min", + type: "uint256", + }, + { + internalType: "uint256", + name: "_max", + type: "uint256", + }, + ], + name: "setMinAndMaxMintRange", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, { inputs: [], name: "totalBorrow", @@ -2089,7 +2189,7 @@ const _abi = [ ] as const; const _bytecode = - "0x61014080604052346200018a5762000017816200018f565b600f81526001602082016e546170696f63612042696742616e6760881b8152602060405162000046816200018f565b8381520192603160f81b845251902091208160e052610100918183524660a0526040519160208301907f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f92838352604085015260608401524660808401523060a084015260a0835260c083019280841060018060401b03851117620001745760408490525190206080523060c052610120908152600580546001600160a01b0319163390811790915560007f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a362013880601b5562015f90601c55612710601d55612ee06020556103e8602d556148c59283620001ac843960805183613497015260a05183613552015260c05183613461015260e051836134e60152518261350c015251816134c30152f35b634e487b7160e01b600052604160045260246000fd5b600080fd5b604081019081106001600160401b03821117620001745760405256fe6080604052600436101561001b575b361561001957600080fd5b005b60003560e01c8062a02a201461053a57806302ce728f14610535578063078dfbe714610530578063095ea7b31461052b5780630c4e84f01461052657806318160ddd146105215780631c9e379b1461051c5780631d4d3a5d146105175780631da8bf10146105125780631ee9c8f21461050d5780631fb8f81a1461050857806323b872dd1461050357806325384fd8146104fe57806327c811a8146104f9578063331960ff146104f457806334ce998a146104ef57806334d441d0146104ea5780633644e515146104e557806337b6b7b9146104e057806338d52e0f146104db5780633ba0b9a9146104d65780633f741adb146104d157806340626d8b146104cc57806344de240a146104c7578063473e3ce7146104c257806348e4163e146104bd5780634ddf47d4146104b85780634e71e0c8146104b35780635224372c146104ae578063529898f2146104a9578063542afda3146104a4578063579354621461049f57806358db9afe1461049a5780635d5f73ef146104955780636b19ad16146104905780636c3d8b8f1461048b57806370a0823114610486578063727785471461048157806374645ff31461047c57806374c9e481146104775780637dc0d1d0146104725780637ecebe001461046d5780637fa0b84e146104685780638285ef401461046357806387b279371461045e5780638c5d0ed3146104595780638da5cb5b14610454578063910dd7c81461044f578063932bc4f81461044a57806399a97028146104455780639e15e89f14610440578063a28e6b821461043b578063a9059cbb14610436578063aa7d966514610431578063af405b4c1461042c578063b0e21e8a14610427578063b25ea8fb14610422578063b27c0e741461041d578063b7113f1914610418578063bb4cfe3b14610413578063bde39c5d1461040e578063c1ad5c8d14610409578063c861a52614610404578063c9c7d837146103ff578063cce19f81146103fa578063cd0211eb146103f5578063ce8849ed146103f0578063d3fb2a38146103eb578063d505accf146103e6578063d8dfeb45146103e1578063dd62ed3e146103dc578063de406577146103d7578063e0996cb6146103d2578063e30c3978146103cd578063e5644d8b146103c8578063e9a49252146103c3578063ea64dd56146103be578063eec0f42e146103b9578063f5b33dfa146103b4578063f791395d146103af578063f88188cb146103aa5763f8ba4cff0361000e57612862565b6127fb565b6127dd565b6127b4565b612796565b612778565b6126f4565b61266b565b612642565b612624565b6125fb565b6125bf565b612596565b6124e8565b612203565b6121cd565b61214b565b6120f7565b61201f565b611ff6565b611fdb565b611fbd565b611f9f565b611f7c565b611f4b565b611ebf565b611ea1565b611c6f565b611b5c565b611a6f565b6119c5565b611987565b61195c565b6118b8565b611837565b6117f3565b6117d5565b611798565b611766565b61173c565b6116ff565b6116d6565b6116b8565b6115df565b611480565b611405565b6113dc565b6113be565b611395565b6112f2565b6112d4565b6112b6565b611299565b611226565b611144565b610fa1565b610f64565b610f46565b610f28565b610f0a565b610ee6565b610ec8565b610e9f565b610e81565b610e5e565b610e40565b610e17565b610df9565b610bf7565b610bce565b610bb8565b610b6e565b610a9b565b610945565b6108cc565b61088f565b610873565b61077c565b610738565b6105f5565b6105c2565b61057d565b6001600160a01b0381160361055057565b600080fd5b60409060031901126105505760043561056d8161053f565b9060243561057a8161053f565b90565b346105505760206105b961059036610555565b6001600160a01b0391821660009081526003855260408082209290931681526020919091522090565b54604051908152f35b346105505760003660031901126105505760406105dd613167565b825191151582526020820152f35b8015150361055057565b34610550576060366003190112610550576004356106128161053f565b6024359061061f826105eb565b6044359161062c836105eb565b6005546001600160a01b039190610646908316331461287b565b1561071f57811691821590811591610717575b50156106da576005546106c89290610681906001600160a01b03165b6001600160a01b031690565b7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b600680546001600160a01b0319169055005b60405162461bcd60e51b81526020600482015260156024820152744f776e61626c653a207a65726f206164647265737360581b6044820152606490fd5b905038610659565b60068054919092166001600160a01b0319909116179055005b34610550576040366003190112610550576107626004356107588161053f565b6024359033613997565b602060405160018152f35b60043590600982101561055057565b346105505760403660031901126105505761079561076d565b6024356107a1816105eb565b6008546001600160a01b0316330361083757610826826107d56107d06107c961001996611467565b5460ff1690565b151590565b6107e484151591821415612c29565b6107f06107c983611467565b6107f983611458565b1515827feeec81de25875ce1725479bb76f720a8defdb43dea041919ae37bb4aae9847c0600080a4611467565b9060ff801983541691151516179055565b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881d5b985d5d1a1bdc9a5e995960621b6044820152606490fd5b3461055057600036600319011261055057602060405160008152f35b34610550576020366003190112610550576004356108ac8161053f565b60018060a01b031660005260186020526020604060002054604051908152f35b3461055057600036600319011261055057602a546040516001600160a01b039091168152602090f35b60ff81160361055057565b60e0906003190112610550576004356109188161053f565b906024356109258161053f565b90604435906064359060843561093a816108f5565b9060a4359060c43590565b346105505761095336610900565b9592809594959291924211610a295761001996610a2493610a1193610a04878a6109fc8b6109ee610a09996109878661391c565b60405195869460208601988991959493909260c09360e08401977f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d685526000602086015260018060a01b038092166040860152166060840152608083015260a08201520152565b03601f198101835282611565565b5190206138c6565b61384e565b919091613733565b6001600160a01b038381169116146136ce565b613944565b60405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b9181601f84011215610550578235916001600160401b038311610550576020838186019501011161055057565b346105505760c036600319011261055057600435610ab88161053f565b608435610ac48161053f565b60a435906001600160401b03821161055057610b6a92610b46610b4b926109ee610af5610b5a963690600401610a6e565b604051958694630f74e47960e11b602087015260018060a01b0380921660248701526024356044870152604435606487015260643560848701521660a485015260c060c485015260e484019161453e565b614779565b602080825183010191016132a3565b6040519081529081906020820190565b0390f35b34610550576000366003190112610550576020602954604051908152f35b606090600319011261055057600435610ba48161053f565b90602435610bb18161053f565b9060443590565b3461055057610bc636610b8c565b5050506146f1565b3461055057600036600319011261055057602f546040516001600160a01b039091168152602090f35b34610550576080366003190112610550576004356024356044359060643592610c2b60018060a01b0360055416331461287b565b600c54600a5460049190602090610c4a906001600160a01b0316610675565b6040516364cfdbb760e11b815293849182905afa908115610df457610c8592600092610dc4575b501460ff8019602554169115151617602555565b610c98610c9460255460ff1690565b1590565b610c9e57005b610ca6613c7e565b80610d7f575b5080610d3a575b5080610d02575b5080610cc257005b80610cd4620186a0610019931061473d565b806020547f1f1d0e9e5e3fd195010504141e7472fc7f53e44d7cd3f236f0892778039c6326600080a3602055565b80610d34916028547fd00c912c9d1f75ac893827b7bb73eb82874daea46c2eaa6d2bd89f0c8ee57366600080a3602855565b38610cba565b610d7990610d4b602754821161473d565b806026547f5391ae26cacff12a54d10d45f0f04678de8bb9c9b2f784eb7074dac7cc0f8fd9600080a3602655565b38610cb3565b610dbe90610d90602654821061473d565b806027547fa54af2279046b0207f426565497319c4e274479ce71cb53598ec2391459be3f3600080a3602755565b38610cac565b610de691925060203d8111610ded575b610dde8183611565565b8101906132a3565b9038610c71565b503d610dd4565b6130d5565b34610550576000366003190112610550576020601354604051908152f35b34610550576000366003190112610550576014546040516001600160801b039091168152602090f35b34610550576000366003190112610550576020601954604051908152f35b34610550576000366003190112610550576020610e7961345e565b604051908152f35b34610550576000366003190112610550576020601254604051908152f35b3461055057600036600319011261055057600d546040516001600160a01b039091168152602090f35b34610550576000366003190112610550576020601154604051908152f35b34610550576060366003190112610550576020610e79604435602435600435612dba565b34610550576000366003190112610550576020601654604051908152f35b34610550576000366003190112610550576020600e54604051908152f35b34610550576000366003190112610550576020601554604051908152f35b3461055057602036600319011261055057600435610f818161053f565b60018060a01b031660005260176020526020604060002054604051908152f35b34610550576020366003190112610550576004356001600160401b03811161055057610fd1903690600401610a6e565b60ff6022541661110957816101e0918101031261055057806110b7610ff86110d6936121f6565b611004602084016121f6565b611010604085016121f6565b91611097611020606087016121f6565b9361102d608088016121f6565b9361103a60a089016121f6565b9361104760e08a016121f6565b602e80546001600160a01b03199081166001600160a01b039485161790915560308054821695841695909517909455602f8054851693831693909317909255603180549093169616959095179055565b6101c0850135926101a0860135926101008701359260c088013591614017565b6101808101359061016081013590610120610140820135910135613e9d565b6110e262015180601255565b6110ec6000602c55565b6110f76103e8602d55565b610019600160ff196022541617602255565b60405162461bcd60e51b815260206004820152601360248201527213585c9ad95d0e881a5b9a5d1a585b1a5e9959606a1b6044820152606490fd5b3461055057600080600319360112611223576006546001600160a01b0316338190036111df576005546111cc91908190611186906001600160a01b0316610675565b7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08580a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b600680546001600160a01b031916905580f35b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b80fd5b3461055057604061128d61127e6109ee61127961124236610b8c565b87516314890dcb60e21b60208201526001600160a01b03938416602482015292909116604483015260648201529182906084820190565b614811565b60208082518301019101614528565b82519182526020820152f35b346105505760003660031901126105505760208054604051908152f35b34610550576000366003190112610550576020602c54604051908152f35b34610550576000366003190112610550576020601c54604051908152f35b346105505760a03660031901126105505760043561130f8161053f565b60643561131b8161053f565b608435906001600160401b03821161055057610b6a92610b46610b4b926109ee61134c610b5a963690600401610a6e565b604051958694632c6dcd7f60e11b602087015260018060a01b0380921660248701526024356044870152604435606487015216608485015260a060a485015260c484019161453e565b3461055057600036600319011261055057602e546040516001600160a01b039091168152602090f35b34610550576000366003190112610550576020602654604051908152f35b3461055057600036600319011261055057600a546040516001600160a01b039091168152602090f35b34610550576020366003190112610550576004356114228161053f565b60018060a01b031660005260016020526020604060002054604051908152f35b634e487b7160e01b600052602160045260246000fd5b6009111561146257565b611442565b6009811015611462576000526007602052604060002090565b346105505760203660031901126105505761149961076d565b6009811015611462576000526007602052602060ff604060002054166040519015158152f35b90600182811c921680156114ef575b60208310146114d957565b634e487b7160e01b600052602260045260246000fd5b91607f16916114ce565b634e487b7160e01b600052604160045260246000fd5b604081019081106001600160401b0382111761152a57604052565b6114f9565b60c081019081106001600160401b0382111761152a57604052565b60e081019081106001600160401b0382111761152a57604052565b90601f801991011681019081106001600160401b0382111761152a57604052565b60005b8381106115995750506000910152565b8181015183820152602001611589565b906020916115c281518092818552858086019101611586565b601f01601f1916010190565b90602061057a9281815201906115a9565b34610550576000806003193601126112235760405181601054611601816114bf565b808452906001908181169081156116905750600114611637575b610b6a8461162b81880382611565565b604051918291826115ce565b60108352602094507f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae6725b82841061167d5750505081610b6a9361162b928201019361161b565b8054858501870152928501928101611661565b610b6a965061162b9450602092508593915060ff191682840152151560051b8201019361161b565b34610550576000366003190112610550576020602d54604051908152f35b3461055057600036600319011261055057600f546040516001600160a01b039091168152602090f35b346105505760203660031901126105505760043561171c8161053f565b60018060a01b031660005260046020526020604060002054604051908152f35b346105505760403660031901126105505761076260043561175c8161053f565b6024359033613944565b3461055057600036600319011261055057601454604080516001600160801b038316815260809290921c602083015290f35b34610550576020366003190112610550576004356117b58161053f565b60018060a01b031660005260236020526020604060002054604051908152f35b34610550576000366003190112610550576020601b54604051908152f35b34610550576000366003190112610550576005546040516001600160a01b039091168152602090f35b6001600160401b03811161152a57601f01601f191660200190565b34610550576040366003190112610550576004356001600160401b03811161055057366023820112156105505780600401356118728161181c565b916118806040519384611565565b81835236602483830101116105505781600092602460209301838601378301015260243561ffff811681036105505761001991613578565b34610550576000806003193601126112235760405181602b546118da816114bf565b80845290600190818116908115611690575060011461190357610b6a8461162b81880382611565565b602b8352602094507f11c44e4875b74d31ff9fd779bf2566af7bd15b87fc985d01f5094b89e3669e4f5b8284106119495750505081610b6a9361162b928201019361161b565b805485850187015292850192810161192d565b34610550576040366003190112610550576020610e7960043561197e8161053f565b6024359061337b565b346105505760403660031901126105505760606119b26004356119a98161053f565b60243590612e9e565b9060405192835260208301526040820152f35b34610550576080366003190112610550576004356119e28161053f565b6024356119ee8161053f565b604435906119fb8261053f565b606435926001600160401b038411610550576109ee611a6a92611a25610019963690600401610a6e565b60405163514735c160e11b60208201526001600160a01b03958616602482015292851660448401529390951660648201526080608482015293849260a484019161453e565b61483b565b3461055057604036600319011261055057611a8b60043561053f565b6146f1565b9181601f84011215610550578235916001600160401b038311610550576020808501948460051b01011161055057565b906040820191604081528151809352606081019260208093019060005b818110611b4657505050818184039101528251908183528083019281808460051b8301019501936000915b848310611b185750505050505090565b9091929394958480611b36600193601f198682030187528a516115a9565b9801930193019194939290611b08565b8251151586529484019491840191600101611add565b346105505760408060031936011261055057600480356001600160401b03811161055057611b8d9036908301611a90565b9290602435611b9b816105eb565b611ba485614313565b93611bae86614345565b95600090815b818110611bc957865180610b6a8b8b83611ac0565b8280611bd683858a6143a5565b90611be58b51809381936143eb565b0390305af4611bf26143f9565b90801580611c68575b611c41578291611c1c611c2192611c15611c3c968e614429565b9015159052565b61443d565b611c2b828c614429565b52611c36818b614429565b5061390d565b611bb4565b8886611c64611c4f8561443d565b925162461bcd60e51b815292839283016115ce565b0390fd5b5086611bfb565b346105505760008060031936011261122357611c9660018060a01b0360055416331461287b565b600d54611cab906001600160a01b0316610675565b604080516370a0823160e01b815230600482015260209390928484602481845afa908115610df457611d27948392611e82575b50600954611cf4906001600160a01b0316610675565b600e548551638eb22cdd60e01b815260048101919091526024810184905260006044820152958790879081906064820190565b0381845afa958615610df4578496611e63575b5085611d4b575b8451868152602090f35b845163095ea7b360e01b81526001600160a01b03919091166004820152602481019290925290919085908390604490829085905af1908115610df457611ded9584938693611e35575b5050600954611dab906001600160a01b0316610675565b600e548451634d4d7cbd60e11b8152600481019190915230602482015233604482015260006064820152608481019390935291958692918391829060a4820190565b03925af1928315610df457610b6a93611e09575b808080611d41565b611e2890823d8411611e2e575b611e208183611565565b810190614528565b50611e01565b503d611e16565b81611e5492903d10611e5c575b611e4c8183611565565b810190614728565b503880611d94565b503d611e42565b611e7b919650873d8911610ded57610dde8183611565565b9438611d3a565b611e9a919250863d8811610ded57610dde8183611565565b9038611cde565b34610550576000366003190112610550576020601a54604051908152f35b3461055057604036600319011261055057602435611edc8161053f565b611ef160018060a01b0360055416331461287b565b60008080808094600435905af1611f066143f9565b5015611f0f5780f35b60405162461bcd60e51b815260206004820152601460248201527321211d103a3930b739b332b9103330b4b632b21760611b6044820152606490fd5b346105505760003660031901126105505760406024548151906001600160401b03908181168352831c166020820152f35b3461055057600036600319011261055057602060ff602554166040519015158152f35b34610550576000366003190112610550576020601e54604051908152f35b34610550576000366003190112610550576020602854604051908152f35b34610550576000366003190112610550576020610e79613a06565b34610550576000366003190112610550576030546040516001600160a01b039091168152602090f35b346105505760403660031901126105505760043561203c8161053f565b6024356001600160401b0381116105505761205b903690600401610a6e565b909160018060a01b0380916120758260055416331461287b565b1690816120b6575b50508061208657005b61208f9161296e565b7f01ac0e23e087c4b2e9f1a163db44f946de9dd51461fe7a401c523fc8d5db1c29600080a1005b81602a549182167f126a75207b8b11156ec1f4a0ad246f458582451fc5bee4b8a729a1a68886e132600080a36001600160a01b03191617602a55388061207d565b34610550576100196109ee61214661210e36610b8c565b60405163cce19f8160e01b60208201526001600160a01b03938416602482015292909116604483015260648201529182906084820190565b614865565b3461055057608036600319011261055057610b6a610b5a610b4b6004356121718161053f565b6024359061217e8261053f565b6044359061218b826105eb565b6040519263cd0211eb60e01b602085015260018060a01b038092166024850152166044830152151560648201526064356084820152608481526112798161152f565b34610550576000366003190112610550576008546040516001600160a01b039091168152602090f35b35906122018261053f565b565b3461055057610160366003190112610550576004356122218161053f565b6024356001600160401b03811161055057612240903690600401610a6e565b9160443561224d8161053f565b60643560843560a4359060c4359260e4359461010435966101243598610144359a60018060a01b03926122858460055416331461287b565b83811661249e575b5080612469575b505081169081612401575b5050806123e3575b50806123c5575b50806123a8575b508061237e575b5080612354575b508061231c575b50806122f0575b50806122d957005b610019906122eb601e54821015612bc2565b601f55565b80612303620186a0612316931115612b28565b612311601f54821115612b68565b601e55565b386122d1565b8061234e916016547fae6e0ab3b95f0a53ff9660a390ccedcbbf1f2355dce974a9841af106fddcfaba600080a3601655565b386122ca565b80612366620186a06123789310612b28565b612373601b548211612b28565b601c55565b386122c3565b80612390620186a06123a29310612b28565b61239d601c548210612b28565b601b55565b386122bc565b806123ba620186a06123bf9310612b28565b601d55565b386122b5565b806123d8620186a06123dd931115612b28565b601a55565b386122ae565b806123f6620186a06123fb931115612b28565b601955565b386122a7565b600854612462929061241b906001600160a01b0316610675565b7f5a62d22209e370e38eea92cfddcd228e656e6ec139243392a760a7769f5877fd600080a3600880546001600160a01b0319166001600160a01b0392909216919091179055565b388061229f565b61247291612a4b565b7fa6f004921c944d4b8bf6e38462b00f36a58d62495d56b51f571ab78f732c9815600080a13880612294565b600f80546001600160a01b0319166001600160a01b039092169190911790557f0b2d6eb667d0522c3eb86e4288afecae6c11591ffd1345d4d12407e0598bca9b600080a13861228d565b34610550576124f636610900565b9592809594959291924211610a29576100199661259193610a1193610a04878a6109fc8b6109ee610a099961252a8661391c565b60405195869460208601988991959493909260c09360e08401977f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e26685526000602086015260018060a01b038092166040860152166060840152608083015260a08201520152565b613997565b3461055057600036600319011261055057600b546040516001600160a01b039091168152602090f35b346105505760206105b96125d236610555565b6001600160a01b0391821660009081526002855260408082209290931681526020919091522090565b34610550576000366003190112610550576009546040516001600160a01b039091168152602090f35b34610550576000366003190112610550576020601d54604051908152f35b34610550576000366003190112610550576006546040516001600160a01b039091168152602090f35b34610550576080366003190112610550576001600160401b036004358181116105505761269c903690600401611a90565b90602435838111610550576126b5903690600401611a90565b90604435858111610550576126ce903690600401611a90565b929091606435968711610550576126ec610019973690600401611a90565b96909561462a565b346105505760a0366003190112610550576100196004356127148161053f565b602435906127218261053f565b6044359061272e826105eb565b604051926374d2492960e11b602085015260018060a01b03809216602485015216604483015215156064820152606435608482015260843560a482015260a481526121468161154a565b34610550576000366003190112610550576020601f54604051908152f35b34610550576000366003190112610550576020600c54604051908152f35b34610550576000366003190112610550576031546040516001600160a01b039091168152602090f35b34610550576000366003190112610550576020602754604051908152f35b34610550576040366003190112610550576004356024359061282860018060a01b0360055416331461287b565b602c5481602d54917f1eafaac7ca8c5e231c2378dbf01de74321ec7c0c9b113ecc54b2cbd513ec6b5e6020604051878152a4602c55602d55005b3461055057600036600319011261055057610019613c7e565b1561288257565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b601f81116128d2575050565b600090602b825260208220906020601f850160051c83019410612910575b601f0160051c01915b82811061290557505050565b8181556001016128f9565b90925082906128f0565b601f8111612926575050565b6000906010825260208220906020601f850160051c83019410612964575b601f0160051c01915b82811061295957505050565b81815560010161294d565b9092508290612944565b91906001600160401b03811161152a576129928161298d602b546114bf565b6128c6565b6000601f82116001146129cc578192936000926129c1575b50508160011b916000199060031b1c191617602b55565b0135905038806129aa565b602b600052601f198216937f11c44e4875b74d31ff9fd779bf2566af7bd15b87fc985d01f5094b89e3669e4f91805b868110612a335750836001959610612a19575b505050811b01602b55565b0135600019600384901b60f8161c19169055388080612a0e565b909260206001819286860135815501940191016129fb565b91906001600160401b03811161152a57612a6f81612a6a6010546114bf565b61291a565b6000601f8211600114612aa957819293600092612a9e575b50508160011b916000199060031b1c191617601055565b013590503880612a87565b6010600052601f198216937f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae67291805b868110612b105750836001959610612af6575b505050811b01601055565b0135600019600384901b60f8161c19169055388080612aeb565b90926020600181928686013581550194019101612ad8565b15612b2f57565b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881b9bdd081d985b1a59607a1b6044820152606490fd5b15612b6f57565b60405162461bcd60e51b815260206004820152602560248201527f4d61726b65743a20636f6c6c61746572616c697a6174696f6e5261746520746f6044820152646f2062696760d81b6064820152608490fd5b15612bc957565b60405162461bcd60e51b815260206004820152603260248201527f4d61726b65743a206c69717569646174696f6e436f6c6c61746572616c697a616044820152711d1a5bdb94985d19481d1bdbc81cdb585b1b60721b6064820152608490fd5b15612c3057565b60405162461bcd60e51b81526020600482015260126024820152714d61726b65743a2073616d6520737461746560701b6044820152606490fd5b634e487b7160e01b600052601160045260246000fd5b90620186a091828102928184041490151715612c9857565b612c6a565b90670de0b6b3a764000091828102928184041490151715612c9857565b81810292918115918404141715612c9857565b634e487b7160e01b600052601260045260246000fd5b8115612ced570490565b612ccd565b604d8111612c9857600a0a90565b91908203918211612c9857565b91908201809211612c9857565b81810392916000138015828513169184121617612c9857565b906509184e72a00091828102928184051490151715612c9857565b90670de0b6b3a764000091828102928184051490151715612c9857565b818102929160008212600160ff1b821416612c98578184051490151715612c9857565b8115612ced57600160ff1b8114600019831416612c98570590565b600160ff1b8114612c985760000390565b60145491929190612dd5906001600160801b03831690612cba565b9060801c908115612ced57612e0291612df3910493601f5490612cba565b612dfc83612cf2565b90612ce3565b90818310612e9657612e67612e61612e5c612e20612e6c9587612d00565b93612e57612e51612e48601e54612e42612e3986612cf2565b60205490612d0d565b90612cba565b612dfc84612cf2565b91612cf2565b612d1a565b612d33565b91612d4e565b612d8e565b6000811215612e9057612e7e90612da9565b905b808211612e8b575090565b905090565b90612e80565b505050600090565b6001600160a01b0381166000908152601760205260408120549193929091801561301057612f3c90612ece613beb565b93612eda841515613257565b600954602090612ef2906001600160a01b0316610675565b600c546001600160a01b038a1660009081526018602052604080822054905163442c159960e01b815260048101939093526024830152604482015294859190829081906064820190565b03915afa928315610df457612fe795612dfc612f9f6020612fab612f8c8a612f87612f7e612fe19c612fba9a8c91612ff3575b50602154620186a09004612e42565b601e5490612cba565b612ce3565b8551909890612e42906001600160801b03165b6001600160801b031690565b9301516001600160801b031690565b90828210612feb5750035b6001600160a01b03909516600090815260186020526040902090565b546132b2565b9091565b915050612fc5565b61300a9150873d8111610ded57610dde8183611565565b38612f6f565b505080919250918190565b91908260409103126105505760208251613034816105eb565b92015190565b60208082526000916010549161304f836114bf565b92838284015260019081811690816000146130b25750600114613074575b5050505090565b929350601060005280600020926000935b85851061309e575050506040925001013880808061306d565b805485850160400152938201938101613085565b925050506040935060ff929192191683830152151560051b01013880808061306d565b6040513d6000823e3d90fd5b156130e857565b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881c985d19481d1bdbc81bdb1960621b6044820152606490fd5b1561312b57565b60405162461bcd60e51b81526020600482015260146024820152734d61726b65743a20696e76616c6964207261746560601b6044820152606490fd5b600f5461317c906001600160a01b0316610675565b6040805163d6d7d52560e01b8152929183908160008161319e6004820161303a565b03925af18015610df4576000928391613223575b509082156131fe576131c5821515613124565b6131ce82601155565b817f9f9192b5edb17356c524e08d9e025c8e2f6307e6ea52fb7968faa3081f51c3c8600080a25b61220142601355565b905061321a61321260135460125490612d0d565b4211156130e1565b601154906131f5565b905061324791925060403d8111613250575b61323f8183611565565b81019061301b565b919091386131b2565b503d613235565b1561325e57565b60405162461bcd60e51b815260206004820152601e60248201527f4d61726b65743a2065786368616e676552617465206e6f742076616c696400006044820152606490fd5b90816020910312610550575190565b61330760208315926132c48415613257565b600954600c5460405163442c159960e01b81526004810191909152602481019290925260006044830152909283916001600160a01b031690829081906064820190565b03915afa8015610df45761332791600091613341575b5060215490612cba565b90612ced5704620186a061333d601e5483612cba565b0491565b613359915060203d8111610ded57610dde8183611565565b3861331d565b91909160008382019384129112908015821691151617612c9857565b9061339f6133bd91612fe18460018060a01b03166000526018602052604060002090565b6001600160a01b039093166000908152601760205260409020909291565b548015612e96578215612e9657828110612e965781811015613455578261341561341061341b9561340b612dfc956134016014549160018060801b03831690612cba565b9060801c90612ce3565b612d00565b612c80565b92612d00565b613449601b549161344461343b601c54926134368487612d1a565b612d6b565b620186a0900590565b61335f565b90808212612e8b575090565b505050601b5490565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316148061354f575b156134b9577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f000000000000000000000000000000000000000000000000000000000000000082527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a081526135498161152f565b51902090565b507f00000000000000000000000000000000000000000000000000000000000000004614613490565b610100908181805181010312610550576020810151613596816105eb565b6040820151926135a58461053f565b6060830151946135b48661053f565b60808401519460a085015160c0860151936135ce856108f5565b60e08701519601516001600160a01b0392831698831696428310610a2957613690956136848a8c6109fc81996109ee613689998f8f6000146136a7577f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e266965b6136368761391c565b60408051602081019a8b5261ffff909716908701526001600160a01b03978816606087015296909116608085015260a084015260c083019490945260e0820193909352918290610100820190565b61371a565b16146136ce565b1561369e5761220192613997565b61220192613944565b7f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d69661362d565b156136d557565b60405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152606490fd5b9161057a9391610a099361384e565b6005111561146257565b61373c81613729565b806137445750565b61374d81613729565b600181036137955760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b6044820152606490fd5b61379e81613729565b600281036137eb5760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606490fd5b806137f7600392613729565b146137fe57565b60405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608490fd5b9291906fa2a8918ca85bafe22016d0b997e4df60600160ff1b0383116138ba5791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa15610df45781516001600160a01b038116156138b4579190565b50600190565b50505050600090600390565b6138ce61345e565b9060405190602082019261190160f01b84526022830152604282015260428152608081018181106001600160401b0382111761152a5760405251902090565b6000198114612c985760010190565b6001600160a01b0316600090815260046020526040902080549061393f8261390d565b905590565b6001600160a01b03908116600081815260036020908152604080832095909416808352949052918220849055907fe50de2333c10a9502fcb1d8ae13a51bbf423153dfc63c2b8997665b32154afc39080a4565b6001600160a01b0390811660008181526002602090815260408083208686168452825290912091937f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259391928690556040519586521693a3565b90816020910312610550575161057a8161053f565b60255460ff16613b53576014546001600160801b03168015613b4c57600a54613a37906001600160a01b0316610675565b6040518091631848f2bf60e31b825281600460209384935afa918215610df4576004928291600091613b1f575b50604051631a674cc560e11b815293849182906001600160a01b03165afa8015610df457613ab192613aa392600092613b02575b505060285490612cba565b670de0b6b3a7640000900490565b80821015613afa57612dfc613ad592613415613ad06029548093612d00565b612c9d565b612e7e60265491613af5613aa360275492613af08487612d00565b612cba565b612d0d565b505060265490565b613b189250803d10610ded57610dde8183611565565b3880613a98565b613b3f9150823d8411613b45575b613b378183611565565b8101906139f1565b38613a64565b503d613b2d565b5060275490565b600a54600490602090613b6e906001600160a01b0316610675565b60405163e6abad4960e01b815292839182905afa908115610df457600091613b94575090565b61057a915060203d8111610ded57610dde8183611565565b60405190613bb98261150f565b6014546001600160801b038116835260801c6020830152565b6001600160801b039182169082160191908211612c9857565b60006020604051613bfb8161150f565b82815201526001600160401b03908160245460401c169182420392428411612c98574214613c7357613c6e613af091670de0b6b3a7640000613c63613c3e613bac565b9660018060801b03958694858a5116906301e13380613c5b613a06565b041690612cba565b041682855116613bd2565b168252565b50905061057a613bac565b604051613c8a8161150f565b6024546001600160401b038181809316845260401c16613cb1602084019180835242612d00565b928315613e0457613d03613ddb92613cf3613ce6613cda613cd0613a06565b6301e13380900490565b6001600160401b031690565b6001600160401b03168452565b8442166001600160401b03169052565b613d96613d43613aa3613d14613bac565b8051909790613af090613d2f906001600160801b0316612f9f565b612e42613cda88516001600160401b031690565b8551909590613d6f90613d62906001600160801b03808a169116613bd2565b6001600160801b03168252565b805160209091015160801b6001600160801b0319166001600160801b039190911617601455565b613dce816001600160401b038151166024549160206001600160401b0360401b91015160401b169160018060801b0319161717602455565b516001600160401b031690565b16907f7484db546dcd57af0104c73c8a6968dfbaf5767f047cee0dadd0499ad7df81a0600080a3565b50505050565b15613e1157565b60405162461bcd60e51b815260206004820152601860248201527710908e881919589d081c985d195cc81b9bdd081d985b1a5960421b6044820152606490fd5b15613e5857565b60405162461bcd60e51b815260206004820152601b60248201527f42423a206d617820646562742072617465206e6f742076616c696400000000006044820152606490fd5b9291906004600c546020613ebb610675600a5460018060a01b031690565b6040516364cfdbb760e11b815293849182905afa908115610df457613ef592600092610dc457501460ff8019602554169115151617602555565b613f04610c9460255460ff1690565b613f0e5750505050565b613f35613f3a92613f30613f3f96602754151580613f6c575b613f4857602855565b602655565b602755565b602955565b38808080613e04565b613f53838610613e0a565b613f67670de0b6b3a7640000841115613e51565b602855565b506026541515613f27565b15613f7e57565b60405162461bcd60e51b815260206004820152600c60248201526b21211d103130b2103830b4b960a11b6044820152606490fd5b15613fb957565b60405162461bcd60e51b815260206004820152603060248201527f42423a206c69717569646174696f6e20636f6c6c61746572616c697a6174696f60448201526f1b881c985d19481b9bdd081d985b1a5960821b6064820152608490fd5b600a80546001600160a01b0319166001600160a01b03831617905593959493929160405163de40657760e01b81526020946001600160a01b039086908390600490829085165afa8015610df45781614097916004946000916142df575b5060098054919092166001600160a01b03166001600160a01b0319909116179055565b600a546140d2906140b0906001600160a01b0316610675565b600580546001600160a01b0319166001600160a01b0392909216919091179055565b600a5486906140e9906001600160a01b0316610675565b604051631192124760e11b815293849182905afa8015610df45761414c926000916142c2575b508185161515806142b7575b806142ac575b61412a90613f77565b600d8054919092166001600160a01b03166001600160a01b0319909116179055565b600a546004908590614166906001600160a01b0316610675565b6040516386c8e21d60e01b815292839182905afa928315610df45761419f6141c6946141c1936141e89860009261428f575b5050600e55565b600b80546001600160a01b0319166001600160a01b0392909216919091179055565b600c55565b600f80546001600160a01b0319166001600160a01b0392909216919091179055565b6141f0613167565b50506141fe62015f90601955565b6142086000601a55565b801561428257601e555b801561427557601f555b61422b601f54601e5410613fb2565b8015614263576021555b61424162013880601b55565b61424d62015f90601c55565b614258612710601d55565b612201612ee0602055565b50614235670de0b6b3a7640000602155565b5061421c620138806122eb565b50614212620124f8612311565b6142a59250803d10610ded57610dde8183611565565b3880614198565b508582161515614121565b50818116151561411b565b6142d99150873d8911613b4557613b378183611565565b3861410f565b6142f69150893d8b11613b4557613b378183611565565b38614074565b6001600160401b03811161152a5760051b60200190565b9061431d826142fc565b61432a6040519182611565565b828152809261433b601f19916142fc565b0190602036910137565b9061434f826142fc565b61435c6040519182611565565b828152809261436d601f19916142fc565b019060005b82811061437e57505050565b806060602080938501015201614372565b634e487b7160e01b600052603260045260246000fd5b91908110156143e65760051b81013590601e19813603018212156105505701908135916001600160401b038311610550576020018236038113610550579190565b61438f565b908092918237016000815290565b3d15614424573d9061440a8261181c565b916144186040519384611565565b82523d6000602084013e565b606090565b80518210156143e65760209160051b010190565b6103e88151116144f45760448151106144c157600481015181019060208160248401930312610550576024810151906001600160401b0382116105505701816043820112156105505760248101516144948161181c565b926144a26040519485611565565b818452604482840101116105505761057a916044602085019101611586565b506040516144ce8161150f565b60168152754d61726b65743a206e6f2072657475726e206461746160501b602082015290565b506040516145018161150f565b60178152764d61726b65743a20726561736f6e20746f6f206c6f6e6760481b602082015290565b9190826040910312610550576020825192015190565b908060209392818452848401376000828201840152601f01601f1916010190565b91908082526020809201929160005b82811061457c575050505090565b90919293828060019287356145908161053f565b848060a01b0316815201950191019291909261456e565b90808352602080930192838260051b850194846000925b8584106145cf575050505050505090565b9091929394959681810384528735601e19843603018112156105505783018681019190356001600160401b038111610550578036038313610550576146198892839260019561453e565b9901940194019295949391906145be565b9295969094969391936040519660209663e5644d8b60e01b888a01528060a48a01608060248c01525260c48901959060005b898282106146c9575050505087850360231990810160448a0152818652936001600160fb1b038211610550576146c699611a6a988a986109ee986146b79560051b809284830137018981036003190160648b0152019161455f565b928584030160848601526145a7565b50565b8084996001939495356146db8161053f565b848060a01b03168152019801910191909161465c565b60405162461bcd60e51b815260206004820152600f60248201526e10908e881b9bdd08185b1b1bddd959608a1b6044820152606490fd5b90816020910312610550575161057a816105eb565b1561474457565b60405162461bcd60e51b815260206004820152600d60248201526c10908e881b9bdd081d985b1a59609a1b6044820152606490fd5b6031546001600160a01b031680156147d757816000929160208493519201905af4906147a36143f9565b91156147ab57565b611c646147b78361443d565b60405162461bcd60e51b81526020600482015291829160248301906115a9565b60405162461bcd60e51b815260206004820152601260248201527110908e881b5bd91d5b19481b9bdd081cd95d60721b6044820152606490fd5b602f546001600160a01b031680156147d757816000929160208493519201905af4906147a36143f9565b602e546001600160a01b031680156147d757816000929160208493519201905af4906147a36143f9565b6030546001600160a01b031680156147d757816000929160208493519201905af4906147a36143f956fea26469706673582212207be7e320bb2984fbf65472f8cfd2c46711293c44db184c62ca0c381f1e9bef8f64736f6c63430008120033"; + "0x61014080604052346200018a5762000017816200018f565b600f81526001602082016e546170696f63612042696742616e6760881b8152602060405162000046816200018f565b8381520192603160f81b845251902091208160e052610100918183524660a0526040519160208301907f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f92838352604085015260608401524660808401523060a084015260a0835260c083019280841060018060401b03851117620001745760408490525190206080523060c052610120908152600580546001600160a01b0319163390811790915560007f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a362013880601b5562015f90601c55612710601d55612ee06020556103e8602e55614a779283620001ac8439608051836135e0015260a0518361369b015260c051836135aa015260e0518361362f015251826136550152518161360c0152f35b634e487b7160e01b600052604160045260246000fd5b600080fd5b604081019081106001600160401b03821117620001745760405256fe6080604052600436101561001b575b361561001957600080fd5b005b60003560e01c8062a02a201461058a57806302ce728f14610585578063078dfbe714610580578063095ea7b31461057b5780630c4e84f0146105765780630f8b29ea1461057157806318160ddd1461056c5780631c9e379b146105675780631d4d3a5d146105625780631da8bf101461055d5780631fb8f81a1461055857806323b872dd1461055357806325384fd81461054e57806327c811a814610549578063331960ff1461054457806334ce998a1461053f57806334d441d01461053a5780633644e5151461053557806337b6b7b91461053057806338d52e0f1461052b5780633ba0b9a9146105265780633f741adb1461052157806340626d8b1461051c57806344de240a14610517578063473e3ce71461051257806348e4163e1461050d5780634ddf47d4146105085780634e71e0c8146105035780635224372c146104fe578063529898f2146104f9578063542afda3146104f457806357935462146104ef5780635d5f73ef146104ea5780636b19ad16146104e55780636c3d8b8f146104e057806370a08231146104db57806372778547146104d657806374645ff3146104d157806374c9e481146104cc578063790c8467146104c75780637dc0d1d0146104c25780637ecebe00146104bd5780637fa0b84e146104b85780638285ef40146104b357806387b27937146104ae5780638c5d0ed3146104a95780638da5cb5b146104a4578063910dd7c81461049f578063932bc4f81461049a57806399a97028146104955780639e15e89f14610490578063a28e6b821461048b578063a9059cbb14610486578063aa7d966514610481578063af1827c41461047c578063af405b4c14610477578063b0e21e8a14610472578063b25ea8fb1461046d578063b27c0e7414610468578063b7113f1914610463578063bb4cfe3b1461045e578063bde39c5d14610459578063c1ad5c8d14610454578063c861a5261461044f578063c9c7d8371461044a578063cce19f8114610445578063cd0211eb14610440578063ce8849ed1461043b578063d3fb2a3814610436578063d4e4534e14610431578063d505accf1461042c578063d8dfeb4514610427578063da863f0e14610422578063dd62ed3e1461041d578063de40657714610418578063e0996cb614610413578063e30c39781461040e578063e5644d8b14610409578063e7d6de8014610404578063e9a49252146103ff578063ea64dd56146103fa578063eec0f42e146103f5578063ef2b234a146103f0578063f5b33dfa146103eb578063f791395d146103e6578063f88188cb146103e15763f8ba4cff0361000e576129ab565b612944565b612926565b6128fd565b612887565b612869565b61284b565b6127c7565b61273f565b6126b6565b61268d565b61266f565b612646565b61260a565b6125e1565b6125b8565b61250a565b612475565b612190565b61215a565b6120b9565b612065565b611f8d565b611f64565b611f49565b611f2b565b611f0d565b611eea565b611eb9565b611e2d565b611e0f565b611bdd565b611b76565b611a63565b611976565b6118cc565b61188e565b611863565b6117bf565b61173e565b6116fa565b6116dc565b61169f565b61166d565b611643565b611606565b6115dd565b6115bf565b6115a1565b6114c4565b611365565b6112ea565b6112c1565b6112a3565b61127a565b61125c565b61123e565b611221565b6111ae565b6110cc565b610f3c565b610ed2565b610eb4565b610e96565b610e78565b610e54565b610e36565b610e0d565b610def565b610dcc565b610dae565b610d85565b610d67565b610b65565b610b3c565b610b26565b610adc565b6109b3565b61093a565b6108fd565b6108e1565b6108c3565b6107cc565b610788565b610645565b610612565b6105cd565b6001600160a01b038116036105a057565b600080fd5b60409060031901126105a0576004356105bd8161058f565b906024356105ca8161058f565b90565b346105a05760206106096105e0366105a5565b6001600160a01b0391821660009081526003855260408082209290931681526020919091522090565b54604051908152f35b346105a05760003660031901126105a057604061062d6132b0565b825191151582526020820152f35b801515036105a057565b346105a05760603660031901126105a0576004356106628161058f565b6024359061066f8261063b565b6044359161067c8361063b565b6005546001600160a01b03919061069690831633146129c4565b1561076f57811691821590811591610767575b501561072a5760055461071892906106d1906001600160a01b03165b6001600160a01b031690565b7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b600680546001600160a01b0319169055005b60405162461bcd60e51b81526020600482015260156024820152744f776e61626c653a207a65726f206164647265737360581b6044820152606490fd5b9050386106a9565b60068054919092166001600160a01b0319909116179055005b346105a05760403660031901126105a0576107b26004356107a88161058f565b6024359033613ae0565b602060405160018152f35b6004359060098210156105a057565b346105a05760403660031901126105a0576107e56107bd565b6024356107f18161063b565b6008546001600160a01b0316330361088757610876826108256108206108196100199661134c565b5460ff1690565b151590565b61083484151591821415612d72565b6108406108198361134c565b6108498361133d565b1515827feeec81de25875ce1725479bb76f720a8defdb43dea041919ae37bb4aae9847c0600080a461134c565b9060ff801983541691151516179055565b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881d5b985d5d1a1bdc9a5e995960621b6044820152606490fd5b346105a05760003660031901126105a0576020602f54604051908152f35b346105a05760003660031901126105a057602060405160008152f35b346105a05760203660031901126105a05760043561091a8161058f565b60018060a01b031660005260186020526020604060002054604051908152f35b346105a05760003660031901126105a057602b546040516001600160a01b039091168152602090f35b60ff8116036105a057565b60e09060031901126105a0576004356109868161058f565b906024356109938161058f565b9060443590606435906084356109a881610963565b9060a4359060c43590565b346105a0576109c13661096e565b9592809594959291924211610a975761001996610a9293610a7f93610a72878a610a6a8b610a5c610a77996109f586613a65565b60405195869460208601988991959493909260c09360e08401977f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d685526000602086015260018060a01b038092166040860152166060840152608083015260a08201520152565b03601f19810183528261144a565b519020613a0f565b613997565b91909161387c565b6001600160a01b03838116911614613817565b613a8d565b60405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b346105a05760003660031901126105a0576020602a54604051908152f35b60609060031901126105a057600435610b128161058f565b90602435610b1f8161058f565b9060443590565b346105a057610b3436610afa565b5050506148a3565b346105a05760003660031901126105a0576032546040516001600160a01b039091168152602090f35b346105a05760803660031901126105a0576004356024356044359060643592610b9960018060a01b036005541633146129c4565b600c54600a5460049190602090610bb8906001600160a01b03166106c5565b6040516364cfdbb760e11b815293849182905afa908115610d6257610bf392600092610d32575b501460ff8019602654169115151617602655565b610c06610c0260265460ff1690565b1590565b610c0c57005b610c14613dc7565b80610ced575b5080610ca8575b5080610c70575b5080610c3057005b80610c42620186a061001993106148ef565b806020547f1f1d0e9e5e3fd195010504141e7472fc7f53e44d7cd3f236f0892778039c6326600080a3602055565b80610ca2916029547fd00c912c9d1f75ac893827b7bb73eb82874daea46c2eaa6d2bd89f0c8ee57366600080a3602955565b38610c28565b610ce790610cb960285482116148ef565b806027547f5391ae26cacff12a54d10d45f0f04678de8bb9c9b2f784eb7074dac7cc0f8fd9600080a3602755565b38610c21565b610d2c90610cfe60275482106148ef565b806028547fa54af2279046b0207f426565497319c4e274479ce71cb53598ec2391459be3f3600080a3602855565b38610c1a565b610d5491925060203d8111610d5b575b610d4c818361144a565b8101906133ec565b9038610bdf565b503d610d42565b61321e565b346105a05760003660031901126105a0576020601354604051908152f35b346105a05760003660031901126105a0576014546040516001600160801b039091168152602090f35b346105a05760003660031901126105a0576020601954604051908152f35b346105a05760003660031901126105a0576020610de76135a7565b604051908152f35b346105a05760003660031901126105a0576020601254604051908152f35b346105a05760003660031901126105a057600d546040516001600160a01b039091168152602090f35b346105a05760003660031901126105a0576020601154604051908152f35b346105a05760603660031901126105a0576020610de7604435602435600435612f03565b346105a05760003660031901126105a0576020601654604051908152f35b346105a05760003660031901126105a0576020600e54604051908152f35b346105a05760003660031901126105a0576020601554604051908152f35b346105a05760203660031901126105a057600435610eef8161058f565b60018060a01b031660005260176020526020604060002054604051908152f35b9181601f840112156105a0578235916001600160401b0383116105a057602083818601950101116105a057565b346105a05760203660031901126105a0576004356001600160401b0381116105a057610f6c903690600401610f0f565b60ff60235416611091578161020091810103126105a05780611060610f9361107f93612183565b610f9f60208401612183565b90610fac60408501612183565b610fb860608601612183565b92611040610fc860808801612183565b92610fd560a08901612183565b92610fe260e08a01612183565b95610ff06101e08b01612183565b603180546001600160a01b03199081166001600160a01b03948516179091556033805482169584169590951790945560328054851693831693909317909255603480549093169716969096179055565b6101c0860135926101a0870135926101008801359260c089013591614160565b6101808101359061016081013590610120610140820135910135613fe6565b610019600160ff196023541617602355565b60405162461bcd60e51b815260206004820152601360248201527213585c9ad95d0e881a5b9a5d1a585b1a5e9959606a1b6044820152606490fd5b346105a0576000806003193601126111ab576006546001600160a01b031633819003611167576005546111549190819061110e906001600160a01b03166106c5565b7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08580a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b600680546001600160a01b031916905580f35b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b80fd5b346105a0576040611215611206610a5c6112016111ca36610afa565b87516314890dcb60e21b60208201526001600160a01b03938416602482015292909116604483015260648201529182906084820190565b61492b565b602080825183010191016146da565b82519182526020820152f35b346105a05760003660031901126105a05760208054604051908152f35b346105a05760003660031901126105a0576020602d54604051908152f35b346105a05760003660031901126105a0576020601c54604051908152f35b346105a05760003660031901126105a0576031546040516001600160a01b039091168152602090f35b346105a05760003660031901126105a0576020602754604051908152f35b346105a05760003660031901126105a057600a546040516001600160a01b039091168152602090f35b346105a05760203660031901126105a0576004356113078161058f565b60018060a01b031660005260016020526020604060002054604051908152f35b634e487b7160e01b600052602160045260246000fd5b6009111561134757565b611327565b6009811015611347576000526007602052604060002090565b346105a05760203660031901126105a05761137e6107bd565b6009811015611347576000526007602052602060ff604060002054166040519015158152f35b90600182811c921680156113d4575b60208310146113be57565b634e487b7160e01b600052602260045260246000fd5b91607f16916113b3565b634e487b7160e01b600052604160045260246000fd5b604081019081106001600160401b0382111761140f57604052565b6113de565b60c081019081106001600160401b0382111761140f57604052565b60e081019081106001600160401b0382111761140f57604052565b90601f801991011681019081106001600160401b0382111761140f57604052565b60005b83811061147e5750506000910152565b818101518382015260200161146e565b906020916114a78151809281855285808601910161146b565b601f01601f1916010190565b9060206105ca92818152019061148e565b346105a0576000806003193601126111ab57604051816010546114e6816113a4565b808452906001908181169081156115795750600114611520575b61151c846115108188038261144a565b604051918291826114b3565b0390f35b60108352602094507f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae6725b828410611566575050508161151c936115109282010193611500565b805485850187015292850192810161154a565b61151c96506115109450602092508593915060ff191682840152151560051b82010193611500565b346105a05760003660031901126105a0576020602e54604051908152f35b346105a05760003660031901126105a0576020603054604051908152f35b346105a05760003660031901126105a057600f546040516001600160a01b039091168152602090f35b346105a05760203660031901126105a0576004356116238161058f565b60018060a01b031660005260046020526020604060002054604051908152f35b346105a05760403660031901126105a0576107b26004356116638161058f565b6024359033613a8d565b346105a05760003660031901126105a057601454604080516001600160801b038316815260809290921c602083015290f35b346105a05760203660031901126105a0576004356116bc8161058f565b60018060a01b031660005260246020526020604060002054604051908152f35b346105a05760003660031901126105a0576020601b54604051908152f35b346105a05760003660031901126105a0576005546040516001600160a01b039091168152602090f35b6001600160401b03811161140f57601f01601f191660200190565b346105a05760403660031901126105a0576004356001600160401b0381116105a057366023820112156105a057806004013561177981611723565b91611787604051938461144a565b81835236602483830101116105a05781600092602460209301838601378301015260243561ffff811681036105a057610019916136c1565b346105a0576000806003193601126111ab5760405181602c546117e1816113a4565b80845290600190818116908115611579575060011461180a5761151c846115108188038261144a565b602c8352602094507f7416c943b4a09859521022fd2e90eac0dd9026dad28fa317782a135f28a860915b828410611850575050508161151c936115109282010193611500565b8054858501870152928501928101611834565b346105a05760403660031901126105a0576020610de76004356118858161058f565b602435906134c4565b346105a05760403660031901126105a05760606118b96004356118b08161058f565b60243590612fe7565b9060405192835260208301526040820152f35b346105a05760803660031901126105a0576004356118e98161058f565b6024356118f58161058f565b604435906119028261058f565b606435926001600160401b0384116105a057610a5c6119719261192c610019963690600401610f0f565b60405163514735c160e11b60208201526001600160a01b03958616602482015292851660448401529390951660648201526080608482015293849260a48401916146f0565b6149c3565b346105a05760403660031901126105a05761199260043561058f565b6148a3565b9181601f840112156105a0578235916001600160401b0383116105a0576020808501948460051b0101116105a057565b906040820191604081528151809352606081019260208093019060005b818110611a4d57505050818184039101528251908183528083019281808460051b8301019501936000915b848310611a1f5750505050505090565b9091929394958480611a3d600193601f198682030187528a5161148e565b9801930193019194939290611a0f565b82511515865294840194918401916001016119e4565b346105a0576040806003193601126105a057600480356001600160401b0381116105a057611a949036908301611997565b9290602435611aa28161063b565b611aab856144c5565b93611ab5866144f7565b95600090815b818110611ad05786518061151c8b8b836119c7565b8280611add83858a614557565b90611aec8b518093819361459d565b0390305af4611af96145ab565b90801580611b6f575b611b48578291611b23611b2892611b1c611b43968e6145db565b9015159052565b6145ef565b611b32828c6145db565b52611b3d818b6145db565b50613a56565b611abb565b8886611b6b611b56856145ef565b925162461bcd60e51b815292839283016114b3565b0390fd5b5086611b02565b346105a05760403660031901126105a05760043560243590611ba360018060a01b036005541633146129c4565b60305481602f54917f9ba515d5ad02a934b077fb0eba07a4ec79463a8dc735c8b4ad44a434abc8607a6020604051878152a4603055602f55005b346105a0576000806003193601126111ab57611c0460018060a01b036005541633146129c4565b600d54611c19906001600160a01b03166106c5565b604080516370a0823160e01b815230600482015260209390928484602481845afa908115610d6257611c95948392611df0575b50600954611c62906001600160a01b03166106c5565b600e548551638eb22cdd60e01b815260048101919091526024810184905260006044820152958790879081906064820190565b0381845afa958615610d62578496611dd1575b5085611cb9575b8451868152602090f35b845163095ea7b360e01b81526001600160a01b03919091166004820152602481019290925290919085908390604490829085905af1908115610d6257611d5b9584938693611da3575b5050600954611d19906001600160a01b03166106c5565b600e548451634d4d7cbd60e11b8152600481019190915230602482015233604482015260006064820152608481019390935291958692918391829060a4820190565b03925af1928315610d625761151c93611d77575b808080611caf565b611d9690823d8411611d9c575b611d8e818361144a565b8101906146da565b50611d6f565b503d611d84565b81611dc292903d10611dca575b611dba818361144a565b8101906148da565b503880611d02565b503d611db0565b611de9919650873d8911610d5b57610d4c818361144a565b9438611ca8565b611e08919250863d8811610d5b57610d4c818361144a565b9038611c4c565b346105a05760003660031901126105a0576020601a54604051908152f35b346105a05760403660031901126105a057602435611e4a8161058f565b611e5f60018060a01b036005541633146129c4565b60008080808094600435905af1611e746145ab565b5015611e7d5780f35b60405162461bcd60e51b815260206004820152601460248201527321211d103a3930b739b332b9103330b4b632b21760611b6044820152606490fd5b346105a05760003660031901126105a05760406025548151906001600160401b03908181168352831c166020820152f35b346105a05760003660031901126105a057602060ff602654166040519015158152f35b346105a05760003660031901126105a0576020601e54604051908152f35b346105a05760003660031901126105a0576020602954604051908152f35b346105a05760003660031901126105a0576020610de7613b4f565b346105a05760003660031901126105a0576033546040516001600160a01b039091168152602090f35b346105a05760403660031901126105a057600435611faa8161058f565b6024356001600160401b0381116105a057611fc9903690600401610f0f565b909160018060a01b038091611fe3826005541633146129c4565b169081612024575b505080611ff457005b611ffd91612ab7565b7f01ac0e23e087c4b2e9f1a163db44f946de9dd51461fe7a401c523fc8d5db1c29600080a1005b81602b549182167f126a75207b8b11156ec1f4a0ad246f458582451fc5bee4b8a729a1a68886e132600080a36001600160a01b03191617602b553880611feb565b346105a057610019610a5c6120b461207c36610afa565b60405163cce19f8160e01b60208201526001600160a01b03938416602482015292909116604483015260648201529182906084820190565b6149ed565b346105a05760803660031901126105a05761151c61214a61213b6004356120df8161058f565b602435906120ec8261058f565b604435906120f98261063b565b6040519263cd0211eb60e01b602085015260018060a01b0380921660248501521660448301521515606482015260643560848201526084815261120181611414565b602080825183010191016133ec565b6040519081529081906020820190565b346105a05760003660031901126105a0576008546040516001600160a01b039091168152602090f35b359061218e8261058f565b565b346105a0576101603660031901126105a0576004356121ae8161058f565b6024356001600160401b0381116105a0576121cd903690600401610f0f565b916044356121da8161058f565b60643560843560a4359060c4359260e4359461010435966101243598610144359a60018060a01b0392612212846005541633146129c4565b83811661242b575b50806123f6575b50508116908161238e575b505080612370575b5080612352575b5080612335575b508061230b575b50806122e1575b50806122a9575b508061227d575b508061226657005b61001990612278601e54821015612d0b565b601f55565b80612290620186a06122a3931115612c71565b61229e601f54821115612cb1565b601e55565b3861225e565b806122db916016547fae6e0ab3b95f0a53ff9660a390ccedcbbf1f2355dce974a9841af106fddcfaba600080a3601655565b38612257565b806122f3620186a06123059310612c71565b612300601b548211612c71565b601c55565b38612250565b8061231d620186a061232f9310612c71565b61232a601c548210612c71565b601b55565b38612249565b80612347620186a061234c9310612c71565b601d55565b38612242565b80612365620186a061236a931115612c71565b601a55565b3861223b565b80612383620186a0612388931115612c71565b601955565b38612234565b6008546123ef92906123a8906001600160a01b03166106c5565b7f5a62d22209e370e38eea92cfddcd228e656e6ec139243392a760a7769f5877fd600080a3600880546001600160a01b0319166001600160a01b0392909216919091179055565b388061222c565b6123ff91612b94565b7fa6f004921c944d4b8bf6e38462b00f36a58d62495d56b51f571ab78f732c9815600080a13880612221565b600f80546001600160a01b0319166001600160a01b039092169190911790557f0b2d6eb667d0522c3eb86e4288afecae6c11591ffd1345d4d12407e0598bca9b600080a13861221a565b346105a05760803660031901126105a0576004356124928161058f565b606435906001600160401b0382116105a05761213b610a5c61250561214a936124c261151c963690600401610f0f565b9390604051948593636a7229a760e11b602086015260018060a01b03166024850152602435604485015260443560648501526080608485015260a48401916146f0565b614a17565b346105a0576125183661096e565b9592809594959291924211610a9757610019966125b393610a7f93610a72878a610a6a8b610a5c610a779961254c86613a65565b60405195869460208601988991959493909260c09360e08401977f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e26685526000602086015260018060a01b038092166040860152166060840152608083015260a08201520152565b613ae0565b346105a05760003660031901126105a057600b546040516001600160a01b039091168152602090f35b346105a05760003660031901126105a0576021546040516001600160a01b039091168152602090f35b346105a057602061060961261d366105a5565b6001600160a01b0391821660009081526002855260408082209290931681526020919091522090565b346105a05760003660031901126105a0576009546040516001600160a01b039091168152602090f35b346105a05760003660031901126105a0576020601d54604051908152f35b346105a05760003660031901126105a0576006546040516001600160a01b039091168152602090f35b346105a05760803660031901126105a0576001600160401b036004358181116105a0576126e7903690600401611997565b906024358381116105a057612700903690600401611997565b906044358581116105a057612719903690600401611997565b9290916064359687116105a057612737610019973690600401611997565b9690956147dc565b346105a05760603660031901126105a05760043561275c8161058f565b604435906001600160401b0382116105a05761213b610a5c61250561214a9361278c61151c963690600401610f0f565b93906040519485936301cfadbd60e71b602086015260018060a01b0316602485015260243560448501526060606485015260848401916146f0565b346105a05760a03660031901126105a0576100196004356127e78161058f565b602435906127f48261058f565b604435906128018261063b565b604051926374d2492960e11b602085015260018060a01b03809216602485015216604483015215156064820152606435608482015260843560a482015260a481526120b48161142f565b346105a05760003660031901126105a0576020601f54604051908152f35b346105a05760003660031901126105a0576020600c54604051908152f35b346105a05760203660031901126105a0576004356128a48161058f565b6005546001600160a01b0391906128be90831633146129c4565b816021549116809282167ffb4fd7114609dd603b57adbc2082205bfbbcabf9265c4b437b472f5c592b8cd7600080a36001600160a01b03191617602155005b346105a05760003660031901126105a0576034546040516001600160a01b039091168152602090f35b346105a05760003660031901126105a0576020602854604051908152f35b346105a05760403660031901126105a0576004356024359061297160018060a01b036005541633146129c4565b602d5481602e54917f1eafaac7ca8c5e231c2378dbf01de74321ec7c0c9b113ecc54b2cbd513ec6b5e6020604051878152a4602d55602e55005b346105a05760003660031901126105a057610019613dc7565b156129cb57565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b601f8111612a1b575050565b600090602c825260208220906020601f850160051c83019410612a59575b601f0160051c01915b828110612a4e57505050565b818155600101612a42565b9092508290612a39565b601f8111612a6f575050565b6000906010825260208220906020601f850160051c83019410612aad575b601f0160051c01915b828110612aa257505050565b818155600101612a96565b9092508290612a8d565b91906001600160401b03811161140f57612adb81612ad6602c546113a4565b612a0f565b6000601f8211600114612b1557819293600092612b0a575b50508160011b916000199060031b1c191617602c55565b013590503880612af3565b602c600052601f198216937f7416c943b4a09859521022fd2e90eac0dd9026dad28fa317782a135f28a8609191805b868110612b7c5750836001959610612b62575b505050811b01602c55565b0135600019600384901b60f8161c19169055388080612b57565b90926020600181928686013581550194019101612b44565b91906001600160401b03811161140f57612bb881612bb36010546113a4565b612a63565b6000601f8211600114612bf257819293600092612be7575b50508160011b916000199060031b1c191617601055565b013590503880612bd0565b6010600052601f198216937f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae67291805b868110612c595750836001959610612c3f575b505050811b01601055565b0135600019600384901b60f8161c19169055388080612c34565b90926020600181928686013581550194019101612c21565b15612c7857565b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881b9bdd081d985b1a59607a1b6044820152606490fd5b15612cb857565b60405162461bcd60e51b815260206004820152602560248201527f4d61726b65743a20636f6c6c61746572616c697a6174696f6e5261746520746f6044820152646f2062696760d81b6064820152608490fd5b15612d1257565b60405162461bcd60e51b815260206004820152603260248201527f4d61726b65743a206c69717569646174696f6e436f6c6c61746572616c697a616044820152711d1a5bdb94985d19481d1bdbc81cdb585b1b60721b6064820152608490fd5b15612d7957565b60405162461bcd60e51b81526020600482015260126024820152714d61726b65743a2073616d6520737461746560701b6044820152606490fd5b634e487b7160e01b600052601160045260246000fd5b90620186a091828102928184041490151715612de157565b612db3565b90670de0b6b3a764000091828102928184041490151715612de157565b81810292918115918404141715612de157565b634e487b7160e01b600052601260045260246000fd5b8115612e36570490565b612e16565b604d8111612de157600a0a90565b91908203918211612de157565b91908201809211612de157565b81810392916000138015828513169184121617612de157565b906509184e72a00091828102928184051490151715612de157565b90670de0b6b3a764000091828102928184051490151715612de157565b818102929160008212600160ff1b821416612de1578184051490151715612de157565b8115612e3657600160ff1b8114600019831416612de1570590565b600160ff1b8114612de15760000390565b60145491929190612f1e906001600160801b03831690612e03565b9060801c908115612e3657612f4b91612f3c910493601f5490612e03565b612f4583612e3b565b90612e2c565b90818310612fdf57612fb0612faa612fa5612f69612fb59587612e49565b93612fa0612f9a612f91601e54612f8b612f8286612e3b565b60205490612e56565b90612e03565b612f4584612e3b565b91612e3b565b612e63565b612e7c565b91612e97565b612ed7565b6000811215612fd957612fc790612ef2565b905b808211612fd4575090565b905090565b90612fc9565b505050600090565b6001600160a01b038116600090815260176020526040812054919392909180156131595761308590613017613d34565b936130238415156133a0565b60095460209061303b906001600160a01b03166106c5565b600c546001600160a01b038a1660009081526018602052604080822054905163442c159960e01b815260048101939093526024830152604482015294859190829081906064820190565b03915afa928315610d625761313095612f456130e860206130f46130d58a6130d06130c761312a9c6131039a8c9161313c575b50602254620186a09004612f8b565b601e5490612e03565b612e2c565b8551909890612f8b906001600160801b03165b6001600160801b031690565b9301516001600160801b031690565b908282106131345750035b6001600160a01b03909516600090815260186020526040902090565b546133fb565b9091565b91505061310e565b6131539150873d8111610d5b57610d4c818361144a565b386130b8565b505080919250918190565b91908260409103126105a0576020825161317d8161063b565b92015190565b602080825260009160105491613198836113a4565b92838284015260019081811690816000146131fb57506001146131bd575b5050505090565b929350601060005280600020926000935b8585106131e757505050604092500101388080806131b6565b8054858501604001529382019381016131ce565b925050506040935060ff929192191683830152151560051b0101388080806131b6565b6040513d6000823e3d90fd5b1561323157565b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881c985d19481d1bdbc81bdb1960621b6044820152606490fd5b1561327457565b60405162461bcd60e51b81526020600482015260146024820152734d61726b65743a20696e76616c6964207261746560601b6044820152606490fd5b600f546132c5906001600160a01b03166106c5565b6040805163d6d7d52560e01b815292918390816000816132e760048201613183565b03925af18015610d6257600092839161336c575b509082156133475761330e82151561326d565b61331782601155565b817f9f9192b5edb17356c524e08d9e025c8e2f6307e6ea52fb7968faa3081f51c3c8600080a25b61218e42601355565b905061336361335b60135460125490612e56565b42111561322a565b6011549061333e565b905061339091925060403d8111613399575b613388818361144a565b810190613164565b919091386132fb565b503d61337e565b156133a757565b60405162461bcd60e51b815260206004820152601e60248201527f4d61726b65743a2065786368616e676552617465206e6f742076616c696400006044820152606490fd5b908160209103126105a0575190565b613450602083159261340d84156133a0565b600954600c5460405163442c159960e01b81526004810191909152602481019290925260006044830152909283916001600160a01b031690829081906064820190565b03915afa8015610d62576134709160009161348a575b5060225490612e03565b90612e365704620186a0613486601e5483612e03565b0491565b6134a2915060203d8111610d5b57610d4c818361144a565b38613466565b91909160008382019384129112908015821691151617612de157565b906134e86135069161312a8460018060a01b03166000526018602052604060002090565b6001600160a01b039093166000908152601760205260409020909291565b548015612fdf578215612fdf57828110612fdf578181101561359e578261355e61355961356495613554612f459561354a6014549160018060801b03831690612e03565b9060801c90612e2c565b612e49565b612dc9565b92612e49565b613592601b549161358d613584601c549261357f8487612e63565b612eb4565b620186a0900590565b6134a8565b90808212612fd4575090565b505050601b5490565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03161480613698575b15613602577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f000000000000000000000000000000000000000000000000000000000000000082527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a0815261369281611414565b51902090565b507f000000000000000000000000000000000000000000000000000000000000000046146135d9565b6101009081818051810103126105a05760208101516136df8161063b565b6040820151926136ee8461058f565b6060830151946136fd8661058f565b60808401519460a085015160c08601519361371785610963565b60e08701519601516001600160a01b0392831698831696428310610a97576137d9956137cd8a8c610a6a8199610a5c6137d2998f8f6000146137f0577f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e266965b61377f87613a65565b60408051602081019a8b5261ffff909716908701526001600160a01b03978816606087015296909116608085015260a084015260c083019490945260e0820193909352918290610100820190565b613863565b1614613817565b156137e75761218e92613ae0565b61218e92613a8d565b7f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d696613776565b1561381e57565b60405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152606490fd5b916105ca9391610a7793613997565b6005111561134757565b61388581613872565b8061388d5750565b61389681613872565b600181036138de5760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b6044820152606490fd5b6138e781613872565b600281036139345760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606490fd5b80613940600392613872565b1461394757565b60405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608490fd5b9291906fa2a8918ca85bafe22016d0b997e4df60600160ff1b038311613a035791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa15610d625781516001600160a01b038116156139fd579190565b50600190565b50505050600090600390565b613a176135a7565b9060405190602082019261190160f01b84526022830152604282015260428152608081018181106001600160401b0382111761140f5760405251902090565b6000198114612de15760010190565b6001600160a01b03166000908152600460205260409020805490613a8882613a56565b905590565b6001600160a01b03908116600081815260036020908152604080832095909416808352949052918220849055907fe50de2333c10a9502fcb1d8ae13a51bbf423153dfc63c2b8997665b32154afc39080a4565b6001600160a01b0390811660008181526002602090815260408083208686168452825290912091937f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259391928690556040519586521693a3565b908160209103126105a057516105ca8161058f565b60265460ff16613c9c576014546001600160801b03168015613c9557600a54613b80906001600160a01b03166106c5565b6040518091631848f2bf60e31b825281600460209384935afa918215610d62576004928291600091613c68575b50604051631a674cc560e11b815293849182906001600160a01b03165afa8015610d6257613bfa92613bec92600092613c4b575b505060295490612e03565b670de0b6b3a7640000900490565b80821015613c4357612f45613c1e9261355e613c19602a548093612e49565b612de6565b612fc760275491613c3e613bec60285492613c398487612e49565b612e03565b612e56565b505060275490565b613c619250803d10610d5b57610d4c818361144a565b3880613be1565b613c889150823d8411613c8e575b613c80818361144a565b810190613b3a565b38613bad565b503d613c76565b5060285490565b600a54600490602090613cb7906001600160a01b03166106c5565b60405163e6abad4960e01b815292839182905afa908115610d6257600091613cdd575090565b6105ca915060203d8111610d5b57610d4c818361144a565b60405190613d02826113f4565b6014546001600160801b038116835260801c6020830152565b6001600160801b039182169082160191908211612de157565b60006020604051613d44816113f4565b82815201526001600160401b03908160255460401c169182420392428411612de1574214613dbc57613db7613c3991670de0b6b3a7640000613dac613d87613cf5565b9660018060801b03958694858a5116906301e13380613da4613b4f565b041690612e03565b041682855116613d1b565b168252565b5090506105ca613cf5565b604051613dd3816113f4565b6025546001600160401b038181809316845260401c16613dfa602084019180835242612e49565b928315613f4d57613e4c613f2492613e3c613e2f613e23613e19613b4f565b6301e13380900490565b6001600160401b031690565b6001600160401b03168452565b8442166001600160401b03169052565b613edf613e8c613bec613e5d613cf5565b8051909790613c3990613e78906001600160801b03166130e8565b612f8b613e2388516001600160401b031690565b8551909590613eb890613eab906001600160801b03808a169116613d1b565b6001600160801b03168252565b805160209091015160801b6001600160801b0319166001600160801b039190911617601455565b613f17816001600160401b038151166025549160206001600160401b0360401b91015160401b169160018060801b0319161717602555565b516001600160401b031690565b16907f7484db546dcd57af0104c73c8a6968dfbaf5767f047cee0dadd0499ad7df81a0600080a3565b50505050565b15613f5a57565b60405162461bcd60e51b815260206004820152601860248201527710908e881919589d081c985d195cc81b9bdd081d985b1a5960421b6044820152606490fd5b15613fa157565b60405162461bcd60e51b815260206004820152601b60248201527f42423a206d617820646562742072617465206e6f742076616c696400000000006044820152606490fd5b9291906004600c5460206140046106c5600a5460018060a01b031690565b6040516364cfdbb760e11b815293849182905afa908115610d625761403e92600092610d3257501460ff8019602654169115151617602655565b61404d610c0260265460ff1690565b6140575750505050565b61407e61408392614079614088966028541515806140b5575b61409157602955565b602755565b602855565b602a55565b38808080613f4d565b61409c838610613f53565b6140b0670de0b6b3a7640000841115613f9a565b602955565b506027541515614070565b156140c757565b60405162461bcd60e51b815260206004820152600c60248201526b21211d103130b2103830b4b960a11b6044820152606490fd5b1561410257565b60405162461bcd60e51b815260206004820152603060248201527f42423a206c69717569646174696f6e20636f6c6c61746572616c697a6174696f60448201526f1b881c985d19481b9bdd081d985b1a5960821b6064820152608490fd5b600a80546001600160a01b0319166001600160a01b038316179055909695939492906040519263de40657760e01b8452602093848160048160018060a01b038097165afa908115610d62576141dc918491600091614491575b5060098054919092166001600160a01b03166001600160a01b0319909116179055565b600a54614217906141f5906001600160a01b03166106c5565b600580546001600160a01b0319166001600160a01b0392909216919091179055565b600a546004908590614231906001600160a01b03166106c5565b604051631192124760e11b815292839182905afa928315610d625760049361429892600091614474575b50818c16151580614469575b8061445e575b614276906140c0565b600d8054919092166001600160a01b03166001600160a01b0319909116179055565b600a5484906142af906001600160a01b03166106c5565b6040516386c8e21d60e01b815293849182905afa918215610d625761218e996142ec6143139461430e9361433598600092614441575b5050600e55565b600b80546001600160a01b0319166001600160a01b0392909216919091179055565b600c55565b600f80546001600160a01b0319166001600160a01b0392909216919091179055565b61433d6132b0565b505061434b62015f90601955565b6143556000601a55565b801561443457601e555b801561442757601f555b614378601f54601e54106140fb565b8015614415576022555b61438e62013880601b55565b61439a62015f90601c55565b6143a5612710601d55565b6143b0612ee0602055565b6143bc62015180601255565b6143c66000602d55565b6143d16103e8602e55565b6143e2670d99a8cec7e20000602f55565b6143f3670e27c49886e60000603055565b602180546001600160a01b0319166001600160a01b0392909216919091179055565b50614382670de0b6b3a7640000602255565b5061436962013880612278565b5061435f620124f861229e565b6144579250803d10610d5b57610d4c818361144a565b38806142e5565b50858216151561426d565b508181161515614267565b61448b9150873d8911613c8e57613c80818361144a565b3861425b565b6144a89150873d8911613c8e57613c80818361144a565b386141b9565b6001600160401b03811161140f5760051b60200190565b906144cf826144ae565b6144dc604051918261144a565b82815280926144ed601f19916144ae565b0190602036910137565b90614501826144ae565b61450e604051918261144a565b828152809261451f601f19916144ae565b019060005b82811061453057505050565b806060602080938501015201614524565b634e487b7160e01b600052603260045260246000fd5b91908110156145985760051b81013590601e19813603018212156105a05701908135916001600160401b0383116105a05760200182360381136105a0579190565b614541565b908092918237016000815290565b3d156145d6573d906145bc82611723565b916145ca604051938461144a565b82523d6000602084013e565b606090565b80518210156145985760209160051b010190565b6103e88151116146a6576044815110614673576004810151810190602081602484019303126105a0576024810151906001600160401b0382116105a05701816043820112156105a057602481015161464681611723565b92614654604051948561144a565b818452604482840101116105a0576105ca91604460208501910161146b565b50604051614680816113f4565b60168152754d61726b65743a206e6f2072657475726e206461746160501b602082015290565b506040516146b3816113f4565b60178152764d61726b65743a20726561736f6e20746f6f206c6f6e6760481b602082015290565b91908260409103126105a0576020825192015190565b908060209392818452848401376000828201840152601f01601f1916010190565b91908082526020809201929160005b82811061472e575050505090565b90919293828060019287356147428161058f565b848060a01b03168152019501910192919092614720565b90808352602080930192838260051b850194846000925b858410614781575050505050505090565b9091929394959681810384528735601e19843603018112156105a05783018681019190356001600160401b0381116105a05780360383136105a0576147cb889283926001956146f0565b990194019401929594939190614770565b9295969094969391936040519660209663e5644d8b60e01b888a01528060a48a01608060248c01525260c48901959060005b8982821061487b575050505087850360231990810160448a0152818652936001600160fb1b0382116105a05761487899611971988a98610a5c986148699560051b809284830137018981036003190160648b01520191614711565b92858403016084860152614759565b50565b80849960019394953561488d8161058f565b848060a01b03168152019801910191909161480e565b60405162461bcd60e51b815260206004820152600f60248201526e10908e881b9bdd08185b1b1bddd959608a1b6044820152606490fd5b908160209103126105a057516105ca8161063b565b156148f657565b60405162461bcd60e51b815260206004820152600d60248201526c10908e881b9bdd081d985b1a59609a1b6044820152606490fd5b6032546001600160a01b0316801561498957816000929160208493519201905af4906149556145ab565b911561495d57565b611b6b614969836145ef565b60405162461bcd60e51b815260206004820152918291602483019061148e565b60405162461bcd60e51b815260206004820152601260248201527110908e881b5bd91d5b19481b9bdd081cd95d60721b6044820152606490fd5b6031546001600160a01b0316801561498957816000929160208493519201905af4906149556145ab565b6033546001600160a01b0316801561498957816000929160208493519201905af4906149556145ab565b6034546001600160a01b0316801561498957816000929160208493519201905af4906149556145ab56fea2646970667358221220c1f761866ef15f296d21eb463dccd8cfcee28cb5d98c5d2c1c762ffce1a176a564736f6c63430008120033"; type BigBangConstructorParams = | [signer?: Signer] diff --git a/src/typechain/tapioca-bar/factories/markets/index.ts b/src/typechain/tapioca-bar/factories/markets/index.ts index 15e2c7c8..c144792a 100644 --- a/src/typechain/tapioca-bar/factories/markets/index.ts +++ b/src/typechain/tapioca-bar/factories/markets/index.ts @@ -2,6 +2,7 @@ /* tslint:disable */ /* eslint-disable */ export * as bigBang from "./bigBang"; +export * as leverage from "./leverage"; export * as singularity from "./singularity"; export { Market__factory } from "./Market__factory"; export { MarketERC20__factory } from "./MarketERC20__factory"; diff --git a/src/typechain/tapioca-bar/factories/markets/leverage/SimpleLeverageExecutor__factory.ts b/src/typechain/tapioca-bar/factories/markets/leverage/SimpleLeverageExecutor__factory.ts new file mode 100644 index 00000000..6cbb2c74 --- /dev/null +++ b/src/typechain/tapioca-bar/factories/markets/leverage/SimpleLeverageExecutor__factory.ts @@ -0,0 +1,321 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import { Signer, utils, Contract, ContractFactory, Overrides } from "ethers"; +import type { Provider, TransactionRequest } from "@ethersproject/providers"; +import type { PromiseOrValue } from "../../../common"; +import type { + SimpleLeverageExecutor, + SimpleLeverageExecutorInterface, +} from "../../../markets/leverage/SimpleLeverageExecutor"; + +const _abi = [ + { + inputs: [ + { + internalType: "contract YieldBox", + name: "_yb", + type: "address", + }, + { + internalType: "contract ISwapper", + name: "_swapper", + type: "address", + }, + { + internalType: "contract ICluster", + name: "_cluster", + type: "address", + }, + ], + stateMutability: "nonpayable", + type: "constructor", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "address", + name: "previousOwner", + type: "address", + }, + { + indexed: true, + internalType: "address", + name: "newOwner", + type: "address", + }, + ], + name: "OwnershipTransferred", + type: "event", + }, + { + inputs: [], + name: "claimOwnership", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [], + name: "cluster", + outputs: [ + { + internalType: "contract ICluster", + name: "", + type: "address", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "assetId", + type: "uint256", + }, + { + internalType: "uint256", + name: "collateralId", + type: "uint256", + }, + { + internalType: "uint256", + name: "collateralShareIn", + type: "uint256", + }, + { + internalType: "address", + name: "from", + type: "address", + }, + { + internalType: "bytes", + name: "data", + type: "bytes", + }, + ], + name: "getAsset", + outputs: [ + { + internalType: "uint256", + name: "assetAmountOut", + type: "uint256", + }, + ], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "assetId", + type: "uint256", + }, + { + internalType: "uint256", + name: "collateralId", + type: "uint256", + }, + { + internalType: "uint256", + name: "assetShareIn", + type: "uint256", + }, + { + internalType: "address", + name: "from", + type: "address", + }, + { + internalType: "bytes", + name: "data", + type: "bytes", + }, + ], + name: "getCollateral", + outputs: [ + { + internalType: "uint256", + name: "collateralAmountOut", + type: "uint256", + }, + ], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [], + name: "owner", + outputs: [ + { + internalType: "address", + name: "", + type: "address", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "pendingOwner", + outputs: [ + { + internalType: "address", + name: "", + type: "address", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "contract ICluster", + name: "_cluster", + type: "address", + }, + ], + name: "setCluster", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "contract ISwapper", + name: "_swapper", + type: "address", + }, + ], + name: "setSwapper", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [], + name: "swapper", + outputs: [ + { + internalType: "contract ISwapper", + name: "", + type: "address", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "newOwner", + type: "address", + }, + { + internalType: "bool", + name: "direct", + type: "bool", + }, + { + internalType: "bool", + name: "renounce", + type: "bool", + }, + ], + name: "transferOwnership", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [], + name: "yieldBox", + outputs: [ + { + internalType: "contract YieldBox", + name: "", + type: "address", + }, + ], + stateMutability: "view", + type: "function", + }, +] as const; + +const _bytecode = + "0x60a0346100e157601f610bd238819003918201601f19168301916001600160401b038311848410176100e6578084926060946040528339810103126100e1578051906001600160a01b039081831683036100e1576020810151908282168092036100e157604001519182168092036100e15760008054604051946001600160a01b03199491851693919233907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a3608052836003541617600355826002541617600255339133161717600055610ad590816100fd82396080518160df0152f35b600080fd5b634e487b7160e01b600052604160045260246000fdfe6040608081526004908136101561001557600080fd5b600091823560e01c908163078dfbe714610514578382630e52e714146104da575081632b3297f9146104b1578163437be622146104655781634e71e0c8146103b25781638da5cb5b1461038a57838263927d1df114610186575081639c82f2a41461013657508063dbd01de11461010e578063de406577146100cb5763e30c3978146100a057600080fd5b346100c757816003193601126100c75760015490516001600160a01b039091168152602090f35b5080fd5b50346100c757816003193601126100c757517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b50346100c757816003193601126100c75760025490516001600160a01b039091168152602090f35b8390346100c75760203660031901126100c757356001600160a01b03818116918290036101825761016b908354163314610699565b600380546001600160a01b03191691909117905580f35b8280fd5b92915034610386576101973661062a565b600354929893966001600160a01b03938416969590939092906044906020906101c18a15156106e4565b600254168b5192838092633a304d8b60e21b82528a8a8301528c60248301525afa90811561037c578691610330575b50906102509261020261020a9361079d565b8101906107fa565b929097895180938192633d9545e960e11b8352610140998a9589850160a091949360019360c0830196835260208301526000604083015260608201528260808201520152565b0381895afa94851561032657918795939185938a9896956102f1575b505061028c9087519a8b978896879563efa84c6d60e01b8752860161098a565b03925af19283156102e757602094936102b3575b506102ad90831015610a53565b51908152f35b6102ad9193506102d890833d85116102e0575b6102d0818361076e565b810190610974565b5092906102a0565b503d6102c6565b82513d86823e3d90fd5b61028c929550908161031792903d1061031f575b61030f818361076e565b81019061087f565b93903861026c565b503d610305565b88513d86823e3d90fd5b9190506020823d8211610374575b8161034b6020938361076e565b81010312610370576102509261020261036661020a94610790565b92935050926101f0565b8580fd5b3d915061033e565b8a513d88823e3d90fd5b5050fd5b5050346100c757816003193601126100c757905490516001600160a01b039091168152602090f35b919050346101825782600319360112610182576001546001600160a01b039290918383169190338390036104225750508084549384167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08680a36001600160a01b03199283161783551660015580f35b906020606492519162461bcd60e51b8352820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b8390346100c75760203660031901126100c757356001600160a01b03818116918290036101825761049a908354163314610699565b600280546001600160a01b03191691909117905580f35b5050346100c757816003193601126100c75760035490516001600160a01b039091168152602090f35b92915034610386576104eb3661062a565b600354929893966001600160a01b039384169690939092906044906020906101c18a15156106e4565b905034610182576060366003190112610182576001600160a01b039181358381169291908390036106265760243580151581036103705760443590811515820361062257610566868854163314610699565b15610606578315908115916105fe575b50156105c35750508083549283167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08580a36001600160a01b031991821617825560018054909116905580f35b906020606492519162461bcd60e51b835282015260156024820152744f776e61626c653a207a65726f206164647265737360581b6044820152fd5b905038610576565b5050600180546001600160a01b03191690921790915550819050f35b8680fd5b8480fd5b9060a0600319830112610694576004359160243591604435916064356001600160a01b0381168103610694579160843567ffffffffffffffff9283821161069457806023830112156106945781600401359384116106945760248483010111610694576024019190565b600080fd5b156106a057565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b156106eb57565b60405162461bcd60e51b815260206004820152602360248201527f4c657665726167654578656375746f723a2073776170706572206e6f742076616044820152621b1a5960ea1b6064820152608490fd5b6080810190811067ffffffffffffffff82111761075857604052565b634e487b7160e01b600052604160045260246000fd5b90601f8019910116810190811067ffffffffffffffff82111761075857604052565b5190811515820361069457565b156107a457565b60405162461bcd60e51b815260206004820152602860248201527f4c657665726167654578656375746f723a2073776170706572206e6f742061756044820152671d1a1bdc9a5e995960c21b6064820152608490fd5b91906040838203126106945782359260208082013567ffffffffffffffff9283821161069457019183601f84011215610694578235908111610758576040519361084d601f8301601f191684018661076e565b81855282828501011161069457808260009401838601378301015290565b51906001600160a01b038216820361069457565b809103610140811261069457604080519267ffffffffffffffff9260608501848111868210176107585780845260808212610694576108bd8161073c565b6108c68361086b565b8152602083015160808701526108dd84840161086b565b60a0870152606083015160c087015285526080607f1982011261069457829081516109078161073c565b6080840151815260a0840151602082015260c08401518382015260e08401516060820152602087015260ff190112610694578151928383019081118482101761075857610969916101209184526109616101008201610790565b855201610790565b602083015282015290565b9190826040910312610694576020825192015190565b926060928251604060018060a01b0394858351168852602096838880950151858b0152878482015116848b015201516060890152606083820151805160808b01528481015160a08b01528381015160c08b0152015160e089015201518051151561010088015201511515610120860152610140850152166101608301526101a092836101808401528051809484015260005b848110610a3e575050506101c0916000838284010152601f8019910116010190565b8181018301518482016101c001528201610a1c565b15610a5a57565b60405162461bcd60e51b815260206004820152601c60248201527f4c657665726167654578656375746f723a206e6f7420656e6f756768000000006044820152606490fdfea26469706673582212209546898f07777feecfdd6a94fc2025f1ec3a838e35b31977e511d24b3b2c2b2e64736f6c63430008120033"; + +type SimpleLeverageExecutorConstructorParams = + | [signer?: Signer] + | ConstructorParameters; + +const isSuperArgs = ( + xs: SimpleLeverageExecutorConstructorParams +): xs is ConstructorParameters => xs.length > 1; + +export class SimpleLeverageExecutor__factory extends ContractFactory { + constructor(...args: SimpleLeverageExecutorConstructorParams) { + if (isSuperArgs(args)) { + super(...args); + } else { + super(_abi, _bytecode, args[0]); + } + this.contractName = "SimpleLeverageExecutor"; + } + + override deploy( + _yb: PromiseOrValue, + _swapper: PromiseOrValue, + _cluster: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise { + return super.deploy( + _yb, + _swapper, + _cluster, + overrides || {} + ) as Promise; + } + override getDeployTransaction( + _yb: PromiseOrValue, + _swapper: PromiseOrValue, + _cluster: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): TransactionRequest { + return super.getDeployTransaction(_yb, _swapper, _cluster, overrides || {}); + } + override attach(address: string): SimpleLeverageExecutor { + return super.attach(address) as SimpleLeverageExecutor; + } + override connect(signer: Signer): SimpleLeverageExecutor__factory { + return super.connect(signer) as SimpleLeverageExecutor__factory; + } + static readonly contractName: "SimpleLeverageExecutor"; + + public readonly contractName: "SimpleLeverageExecutor"; + + static readonly bytecode = _bytecode; + static readonly abi = _abi; + static createInterface(): SimpleLeverageExecutorInterface { + return new utils.Interface(_abi) as SimpleLeverageExecutorInterface; + } + static connect( + address: string, + signerOrProvider: Signer | Provider + ): SimpleLeverageExecutor { + return new Contract( + address, + _abi, + signerOrProvider + ) as SimpleLeverageExecutor; + } +} diff --git a/src/typechain/tapioca-bar/factories/markets/leverage/index.ts b/src/typechain/tapioca-bar/factories/markets/leverage/index.ts new file mode 100644 index 00000000..813f924c --- /dev/null +++ b/src/typechain/tapioca-bar/factories/markets/leverage/index.ts @@ -0,0 +1,4 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +export { SimpleLeverageExecutor__factory } from "./SimpleLeverageExecutor__factory"; diff --git a/src/typechain/tapioca-bar/factories/markets/singularity/SGLBorrow__factory.ts b/src/typechain/tapioca-bar/factories/markets/singularity/SGLBorrow__factory.ts index 26a2cac0..775c8de7 100644 --- a/src/typechain/tapioca-bar/factories/markets/singularity/SGLBorrow__factory.ts +++ b/src/typechain/tapioca-bar/factories/markets/singularity/SGLBorrow__factory.ts @@ -130,6 +130,25 @@ const _abi = [ name: "InterestElasticityUpdated", type: "event", }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "address", + name: "oldVal", + type: "address", + }, + { + indexed: true, + internalType: "address", + name: "newVal", + type: "address", + }, + ], + name: "LeverageExecutorSet", + type: "event", + }, { anonymous: false, inputs: [ @@ -1177,6 +1196,19 @@ const _abi = [ stateMutability: "view", type: "function", }, + { + inputs: [], + name: "leverageExecutor", + outputs: [ + { + internalType: "contract ILeverageExecutor", + name: "", + type: "address", + }, + ], + stateMutability: "view", + type: "function", + }, { inputs: [], name: "liquidationBonusAmount", @@ -1600,6 +1632,19 @@ const _abi = [ stateMutability: "nonpayable", type: "function", }, + { + inputs: [ + { + internalType: "contract ILeverageExecutor", + name: "_executor", + type: "address", + }, + ], + name: "setLeverageExecutor", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, { inputs: [ { @@ -1930,7 +1975,7 @@ const _abi = [ ] as const; const _bytecode = - "0x6101408060405234620001e5576200001781620001ea565b601381526001602082017f546170696f63612053696e67756c617269747900000000000000000000000000815260206040516200005481620001ea565b8381520192603160f81b845251902091208160e052610100918183524660a0526040519160208301907f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f92838352604085015260608401524660808401523060a084015260a0835260c083019280841060018060401b03851117620001cf5760408490525190206080523060c052610120908152600580546001600160a01b0319163390811790915560007f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a362013880601b5562015f90601c55612710601d55612ee06020557f0bd4060688a1800ae986e4840aebc924bb40b5bf44de4583df2257220b54b77c6026557f7d1dc38e60930664f8cbf495da6556ca091d2f92d6550877750c049864b182306027556161a86028556032602f5561407c928362000207843960805183612b7e015260a05183612c49015260c05183612b48015260e05183612bcd01525182612bf301525181612baa0152f35b634e487b7160e01b600052604160045260246000fd5b600080fd5b604081019081106001600160401b03821117620001cf5760405256fe608060408181526004918236101561001657600080fd5b60009260e08435811c928362a02a20146120cb5750826302ce728f146120a257826306fdde0314611fea578263078dfbe714611ee5578263095ea7b314611eba5782630c4e84f014611da357826318160ddd14611d805782631c9e379b14611d475782631da8bf1014611c8d57826323b872dd14611b05578263313ce56714611ace578263331960ff14611aae57826334d441d014611a8e5782633644e51514611a7057826337b6b7b914611a5057826338d52e0f14611a265782633ba0b9a914611a065782633f741adb146119dd57826340626d8b146119bd57826344de240a1461199d578263473e3ce71461197d57826348e4163e146119445782634d7f2a34146119245782634e71e0c81461186f5782635224372c146117b8578263529898f21461179957826352f353eb14611770578263551402321461174757826355c2ab941461171d57826357935462146116fd5782635dfe04e81461169c5782636c3d8b8f1461167257826370a0823114611639578263727785471461160157826374645ff3146115d45782637dc0d1d0146115aa5782637ecebe00146115735782637fa0b84e14611541578263821226e8146115215782638285ef40146114ed5782638c5d0ed3146114cd5782638da5cb5b146114a3578263910dd7c81461122a578263959916dc1461120a57826395d89b411461115157826399a97028146111205782639c5d7192146111005782639e15e89f146110c4578263a9059cbb14610fe8578263b0e21e8a14610fc8578263b27c0e7414610f8c578263bb4cfe3b14610f6c578263cd0211eb14610b04578263ce8849ed14610ada578263d3fb2a3814610641578263d505accf146104ba5750508063d8dfeb4514610492578063dd62ed3e14610445578063de4065771461041d578063e0996cb6146103ff578063e30c3978146103d7578063ea64dd56146103b9578063eec0f42e1461039b578063f42760b71461037d578063f8ba4cff1461035e578063f9557ccb146103285763ffe04c661461030757600080fd5b346103245781600319360112610324576020906029549051908152f35b5080fd5b503461032457816003193601126103245760245490516001600160801b038216815260809190911c6020820152604090f35b0390f35b823461037a578060031936011261037a57610377613d3e565b80f35b80fd5b5034610324578160031936011261032457602090602a549051908152f35b5034610324578160031936011261032457602090600c549051908152f35b5034610324578160031936011261032457602090601f549051908152f35b503461032457816003193601126103245760065490516001600160a01b039091168152602090f35b5034610324578160031936011261032457602090601d549051908152f35b503461032457816003193601126103245760095490516001600160a01b039091168152602090f35b5034610324578060031936011261032457602091610461612111565b8261046a612127565b6001600160a01b03928316845260028652922091166000908152908352819020549051908152f35b5034610324578160031936011261032457600b5490516001600160a01b039091168152602090f35b8492503461063d576104cb366121a3565b9183949895979342116105fa579161059d916105a5938c8b8b60018060a01b0398898d169a8b93846000528d602052856000209081549161050b83612e9f565b90558c87519560208701977f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e266895260008a890152606088015216608086015260a085015260c084015281830152815261056381612374565b51902061056e612b45565b915190602082019261190160f01b8452602283015260428201526042815261059581612390565b519020612e1a565b919091612d1b565b16036105b75750610377939450612efc565b606490602087519162461bcd60e51b8352820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152fd5b8a5162461bcd60e51b8152602081880152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b8280fd5b5090503461063d5761016036600319011261063d576001600160a01b03813581811690819003610ad6576024916001600160401b038335818111610ad25736602382011215610ad25780860135918211610ad25736858383010111610ad25760443593838516809503610acd576106bd846005541633146123e7565b80610a8f575b508482610911575b505050816108d1575b5050606435806108b9575b50608435806108a1575b5060a4358061088a575b5060c43580610866575b5060e43580610842575b506101043580610811575b5061012435806107a0575b5061014435928361072c578480f35b601e54841061074357505050601f55388080808480f35b608492916020603292519362461bcd60e51b85528401528201527f4d61726b65743a206c69717569646174696f6e436f6c6c61746572616c697a616044820152711d1a5bdb94985d19481d1bdbc81cdb585b1b60721b6064820152fd5b6107af620186a0821115612432565b601f5481116107c157601e553861071d565b506025906020608494519362461bcd60e51b85528401528201527f4d61726b65743a20636f6c6c61746572616c697a6174696f6e5261746520746f6044820152646f2062696760d81b6064820152fd5b806016547fae6e0ab3b95f0a53ff9660a390ccedcbbf1f2355dce974a9841af106fddcfaba8780a360165538610712565b610850620186a08210612432565b61085d601b548211612432565b601c5538610707565b610874620186a08210612432565b610881601c548210612432565b601b55386106fd565b610898620186a08210612432565b601d55386106f3565b6108b0620186a0821115612432565b601a55386106e9565b6108c8620186a0821115612432565b601955386106df565b816008549182167f5a62d22209e370e38eea92cfddcd228e656e6ec139243392a760a7769f5877fd8880a36001600160a01b0319161760085538806106d4565b829161091e601054612256565b601f8111610a1e575b508990601f841160011461098c578a9361097f575b5050508160011b916000199060031b1c1916176010555b7fa6f004921c944d4b8bf6e38462b00f36a58d62495d56b51f571ab78f732c98158680a13880846106cb565b010135905084388061093c565b60108b52601f19841694507f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae67292509087908b60205b8782106109ff57505084600196106109e3575b50505050811b01601055610953565b60001960f88660031b161c1992010135169055388086816109d4565b82850190930135855560019490940193899291820191908101906109c1565b60108b5290925090507f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae672601f840160051c810160208510610a88575b91849391601f8994920160051c01905b818110610a775750610927565b8b8155859450889350600101610a6a565b5080610a5a565b600f80546001600160a01b0319169190911790557f0b2d6eb667d0522c3eb86e4288afecae6c11591ffd1345d4d12407e0598bca9b8880a1386106c3565b600080fd5b8780fd5b8480fd5b5050503461032457816003193601126103245760085490516001600160a01b039091168152602090f35b5083833461032457608036600319011261032457610b20612111565b610b28612127565b90610b31612194565b93606435916001825260209560078752610b5160ff878520541615612f53565b6001600160a01b0385811695909390610bae90610b7030891415612f90565b610b786126d6565b5050610b82613d3e565b610b9387610b8e6134cc565b613768565b905060115460ff610ba789600d541661345e565b1692613615565b8015610f2957610bbe9084613698565b8581526017885286812054808611610f21575b508415610ee6578798610c1a98610bea87610b8e6134cc565b8151601480546001600160801b0319166001600160801b03928316179055909b909290918391905b015116613d19565b87835260178b52888320610c2f8882546124c9565b90558560095416600e54928a5193638eb22cdd60e01b855280828601528c6024860152600160448601528d85606481865afa948515610df2578c918f918897610eb0575b506024548616948915610dfc575060448b60095416935180948193627eeac760e11b8352308884015260248301525afa8015610df25783908790610dc1575b610cbc92506124c9565b8411610d8e5750927fc8e512d8f188ca059984b5853d2bf653da902696b8512785b182b2c813789a6e95928c9592610cfc8d9b9a99965b8284169061383b565b1660018060801b0319602454161760245584841690818352602587528b83206026549081855288528c8420548211600014610d6957505081526025855289812060265482528552808a8120555b5015610d64575080600954165b87519485521692a451908152f35b610d56565b90918352602587528b83209083528652610d878b83209182546124c9565b9055610d49565b8a5162461bcd60e51b81529081018d9052600d60248201526c0a68e987440e8dede40daeac6d609b1b6044820152606490fd5b50508d81813d8311610deb575b610dd881836123ab565b81010312610acd5782610cbc9151610cb2565b503d610dce565b8c513d88823e3d90fd5b9250929050813b15610eac578c51630208d92960e11b81526001600160a01b038a169181019182523060208301526040820193909352606081018690528691839182908490829060800103925af18015610ea257928c9a999895927fc8e512d8f188ca059984b5853d2bf653da902696b8512785b182b2c813789a6e9895928f9895610e8d575b50610cfc90610cf3565b93610e9b610cfc9295612315565b9390610e83565b8b513d87823e3d90fd5b8680fd5b9250955081813d8311610edf575b610ec881836123ab565b81010312610edb578d8c91519538610c73565b8580fd5b503d610ebe565b865162461bcd60e51b8152808a01899052601560248201527453474c3a206e6f7468696e6720746f20726570617960581b6044820152606490fd5b945089610bd1565b875162461bcd60e51b8152808b018a9052601d60248201527f53474c3a20616c6c6f77616e63655368617265206e6f742076616c69640000006044820152606490fd5b50505034610324578160031936011261032457602090601e549051908152f35b50505034610324578160031936011261032457606090602354908051916001600160401b03808216845281831c16602084015260801c90820152f35b50505034610324578160031936011261032457602090601a549051908152f35b50505034610324578060031936011261032457602091611006612111565b826024359283158015906110b2575b611045575b50519182526001600160a01b0316903390600080516020614027833981519152908590a35160018152f35b338152600186528181205461105c85821015612c6f565b6001600160a01b038416908533839003611079575b50505061101a565b61108d91611088841515612cb4565b6124c9565b33835260018852838320558152206110a68382546124d6565b90558238808085611071565b50336001600160a01b03841614611015565b505050346103245780600319360112610324576060906110ee6110e5612111565b60243590612615565b91929081519384526020840152820152f35b50505034610324578160031936011261032457602090602b549051908152f35b5050503461032457806003193601126103245760209061114a611141612111565b60243590612a13565b9051908152f35b5090503461063d578260031936011261063d5791808061035a9460018060a01b03600b541690855160208101916395d89b4160e01b835281526111938161233e565b51915afa61119f61342e565b9150156111fb576111af90613eb5565b905b6111e960238251809462746d2d60e81b60208301526111d9815180926020868601910161213d565b81010360038101855201836123ab565b51918291602083526020830190612160565b50611204613e5e565b906111b1565b50505034610324578160031936011261032457602090602f549051908152f35b8491843461149f578060031936011261149f578135926001600160401b038411610ad65736602385011215610ad6578383013592611267846123cc565b94611274845196876123ab565b8486528660209182880196366024828401011161063d578060248593018937880101526024359361ffff8516809503610ad25761010095868880518101031261149b576112c0906126c9565b936112cc828901612cf9565b906112d960608a01612cf9565b9860808101519860a0820151926112f260c08401612d0d565b91818401519301519360018060a01b03808097169d169a81421161145857928d8f819897948f948f8f968f918f959a8f8c81956113ce9f9c61059d9f50600014611431577f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e2669a5b82528952209384549461136b86612e9f565b905580519788019889528701528d6060870152608086015260a085015260c084015281830152815261139c81612374565b5190206113a7612b45565b908951908b82019261190160f01b8452602283015260428201526042815261059581612390565b16036113f0575050506000146113e75761037792612efc565b61037792612eae565b5162461bcd60e51b815291820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e61747572650000604482015260649150fd5b7f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d69a611359565b875162461bcd60e51b8152808b018a9052601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b8880fd5b8380fd5b5050503461032457816003193601126103245760055490516001600160a01b039091168152602090f35b50505034610324578160031936011261032457602090601b549051908152f35b5050503461032457816003193601126103245760145490516001600160801b038216815260809190911c6020820152604090f35b50505034610324578160031936011261032457602090602d549051908152f35b5050503461032457806003193601126103245760209061156c611562612111565b6024359033612eae565b5160018152f35b5090503461063d57602036600319011261063d5760209282916001600160a01b0361159c612111565b168252845220549051908152f35b50505034610324578160031936011261032457600f5490516001600160a01b039091168152602090f35b50505034610324578160031936011261032457805161035a916111e9826115fa81612290565b03836123ab565b5090503461063d57602036600319011261063d573591600983101561037a575060ff61162e602093612227565b541690519015158152f35b505050346103245760203660031901126103245760209181906001600160a01b03611662612111565b1681526001845220549051908152f35b50505034610324578160031936011261032457600a5490516001600160a01b039091168152602090f35b505050346103245781600319360112610324576080906116ba61381c565b506116c3613854565b50949593505050508051926001600160401b03808251168552602082015116602085015281600180871b0391015116908301526060820152f35b50505034610324578160031936011261032457602090601c549051908152f35b50505034610324578160031936011261032457602c548151911c6001600160401b03168152602090f35b505050346103245781600319360112610324576020906001600160401b03602c54169051908152f35b505050346103245781600319360112610324576020906001600160401b03602e54169051908152f35b5050503461032457816003193601126103245760209081549051908152f35b5090503461063d576118269061181a60ff84956117ed6117d7366121f2565b9491989093808052600760205220541615612f53565b6117f56126d6565b50506117ff613d3e565b6118146001600160a01b038216301415612f90565b85612fdb565b92909360115490613518565b15611838575082519182526020820152f35b606490602085519162461bcd60e51b8352820152601160248201527013585c9ad95d0e881a5b9cdbdb1d995b9d607a1b6044820152fd5b8482853461063d578260031936011261063d576006546001600160a01b039290918383169190338390036118e1575050806005549384167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08680a36001600160a01b0319928316176005551660065580f35b906020606492519162461bcd60e51b8352820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b505050346103245781600319360112610324576020906028549051908152f35b505050346103245760203660031901126103245760209181906001600160a01b0361196d612111565b1681526017845220549051908152f35b505050346103245781600319360112610324576020906015549051908152f35b50505034610324578160031936011261032457602090600e549051908152f35b505050346103245781600319360112610324576020906016549051908152f35b5082843461037a57606036600319011261037a575061114a6020926044359060243590356124fc565b505050346103245781600319360112610324576020906011549051908152f35b50505034610324578160031936011261032457600d5490516001600160a01b039091168152602090f35b505050346103245781600319360112610324576020906012549051908152f35b5050503461032457816003193601126103245760209061114a612b45565b505050346103245781600319360112610324576020906019549051908152f35b505050346103245781600319360112610324576020906013549051908152f35b50505034610324578160031936011261032457600d546020919060ff90611afd906001600160a01b031661345e565b915191168152f35b5082843461037a57611b16366121f2565b919282611b50575b508351918252602094506001600160a01b03908116921690600080516020614027833981519152908590a35160018152f35b6001600160a01b038481168083526001602090815287842054919892909190611b7b87831015612c6f565b851692838a03611b8f575b50505050611b1e565b898552600283528885203386528352888520549060018201611bf9575b5050928260209960018a94611bd88a8e996110886000805160206140278339815191529c9a1515612cb4565b9285525283832055815220611bee8582546124d6565b905591878080611b86565b878210611c4f57509260209960018a94611bd88a8e9996611c2a826000805160206140278339815191529d9b6124c9565b86895260028552898920338a5285528989205596995050509450509981949650611bac565b895162461bcd60e51b8152908101849052601860248201527745524332303a20616c6c6f77616e636520746f6f206c6f7760401b6044820152606490fd5b8492503461063d57611c9e366121a3565b9397949690928042116105fa57938693611d35938c8c8961059d968e9a8e60018060a01b03809c169c8d948587526020528c87872092835493611ce085612e9f565b905588519660208801987f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d68a528a890152606088015216608086015260a085015260c084015281830152815261056381612374565b16036105b75750610377939450612eae565b505050346103245760203660031901126103245760209181906001600160a01b03611d70612111565b1681526018845220549051908152f35b5050503461032457816003193601126103245760209060245460801c9051908152f35b5090503461063d578160031936011261063d57803590600982101561149f57611dca612185565b6008549093906001600160a01b03163303611e805760ff611dea84612227565b54161515931515938414611e48575050808260ff611e0a611e3894612227565b54161515827feeec81de25875ce1725479bb76f720a8defdb43dea041919ae37bb4aae9847c08780a4612227565b9060ff8019835416911617905580f35b906020606492519162461bcd60e51b835282015260126024820152714d61726b65743a2073616d6520737461746560701b6044820152fd5b906020606492519162461bcd60e51b8352820152601460248201527313585c9ad95d0e881d5b985d5d1a1bdc9a5e995960621b6044820152fd5b5050503461032457806003193601126103245760209061156c611edb612111565b6024359033612efc565b8482853461063d57606036600319011261063d57611f01612111565b91611f0a612185565b91611f13612194565b9260018060a01b03948591611f2d836005541633146123e7565b15611fd1571692831590811591611fc9575b5015611f8e575050806005549283167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08580a36001600160a01b03199182161760055560068054909116905580f35b906020606492519162461bcd60e51b835282015260156024820152744f776e61626c653a207a65726f206164647265737360581b6044820152fd5b905086611f3f565b93505050501660018060a01b0319600654161760065580f35b5090503461063d578260031936011261063d5791808061035a9460018060a01b03600b541690855160208101916306fdde0360e01b8352815261202c8161233e565b51915afa61203861342e565b9150156120935761204890613eb5565b905b6111e960348251809473546170696f63612053696e67756c61726974792d60601b6020830152612083815180926020868601910161213d565b81010360148101855201836123ab565b5061209c613e5e565b9061204a565b83853461037a578060031936011261037a57506120bd6126d6565b825191151582526020820152f35b8590853461063d578060031936011261063d576020926120e9612111565b6120f1612127565b6001600160a01b0391821683526003865283832091168252845220548152f35b600435906001600160a01b0382168203610acd57565b602435906001600160a01b0382168203610acd57565b60005b8381106121505750506000910152565b8181015183820152602001612140565b906020916121798151809281855285808601910161213d565b601f01601f1916010190565b602435908115158203610acd57565b604435908115158203610acd57565b60e0906003190112610acd576001600160a01b03906004358281168103610acd57916024359081168103610acd5790604435906064359060843560ff81168103610acd579060a4359060c43590565b6060906003190112610acd576001600160a01b03906004358281168103610acd57916024359081168103610acd579060443590565b6009811015612240576000526007602052604060002090565b634e487b7160e01b600052602160045260246000fd5b90600182811c92168015612286575b602083101461227057565b634e487b7160e01b600052602260045260246000fd5b91607f1691612265565b601054600092916122a082612256565b9081815260019283811690816000146122fa57506001146122c057505050565b9092935060106000526020928360002092846000945b8386106122e65750505050010190565b8054858701830152940193859082016122d6565b91935050602093945060ff191683830152151560051b010190565b6001600160401b03811161232857604052565b634e487b7160e01b600052604160045260246000fd5b604081019081106001600160401b0382111761232857604052565b606081019081106001600160401b0382111761232857604052565b61010081019081106001600160401b0382111761232857604052565b608081019081106001600160401b0382111761232857604052565b90601f801991011681019081106001600160401b0382111761232857604052565b6001600160401b03811161232857601f01601f191660200190565b156123ee57565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b1561243957565b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881b9bdd081d985b1a59607a1b6044820152606490fd5b8181029291811591840414171561248557565b634e487b7160e01b600052601160045260246000fd5b81156124a5570490565b634e487b7160e01b600052601260045260246000fd5b604d811161248557600a0a90565b9190820391821161248557565b9190820180921161248557565b8181039291600013801582851316918412161761248557565b601454919291612545916125369161252c91612522906001600160801b03831690612472565b9060801c9061249b565b93601f5490612472565b61253f836124bb565b9061249b565b80831061260d5761255961259591846124c9565b9161259061258a612581601e5461257b612572866124bb565b602054906124d6565b90612472565b61253f846124bb565b916124bb565b6124e3565b6509184e72a0009081810291818305149015171561248557670de0b6b3a7640000918281029281840514901517156124855780156124a557600160ff1b91808314600019831416612485570590600082121561260657811461248557600003905b808211612601575090565b905090565b50906125f6565b505050600090565b6001600160a01b0381166000818152601760205260408120549194939290919081156126bd57916040916126996126b1959483602086516126558161233e565b828152015261267386612666613854565b505050505093905061288a565b815190936001600160801b039160209161268f91841690612472565b920151169061249b565b8181106126b557035b9581526018602052205461295c565b9091565b5050806126a2565b50509192505080918190565b51908115158203610acd57565b600f546040805163d6d7d52560e01b8152602060048201529290916001600160a01b031682848061270960248201612290565b0381600080955af1801561283257819482916127f6575b5092841561279957831561275f57507f9f9192b5edb17356c524e08d9e025c8e2f6307e6ea52fb7968faa3081f51c3c883918260115580a25b42601355565b5162461bcd60e51b81526020600482015260146024820152734d61726b65743a20696e76616c6964207261746560601b6044820152606490fd5b919250506127ac601354601254906124d6565b42116127bc575060115490612759565b5162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881c985d19481d1bdbc81bdb1960621b6044820152606490fd5b809550848092503d831161282b575b61280f81836123ab565b8101031261037a576020612822856126c9565b94015138612720565b503d612805565b508251903d90823e3d90fd5b1561284557565b60405162461bcd60e51b815260206004820152601e60248201527f4d61726b65743a2065786368616e676552617465206e6f742076616c696400006044820152606490fd5b61289582151561283e565b60018060a01b036020816009541691600c5490600094168452601882526064604085205491604051948593849263442c159960e01b8452600484015260248301528660448301525afa918215612950578092612918575b50509061291061290761291593620186a06021540490612472565b601e5490612472565b61249b565b90565b9091506020823d8211612948575b81612933602093836123ab565b8101031261037a5750516129106129076128ec565b3d9150612926565b604051903d90823e3d90fd5b61296782151561283e565b602060018060a01b0360095416916064600c54604051948593849263442c159960e01b845260048401526024830152600060448301525afa908115612a07576000916129d4575b50906129106129c09260215490612472565b620186a06129d0601e5483612472565b0491565b906020823d82116129ff575b816129ed602093836123ab565b8101031261037a5750516129106129ae565b3d91506129e0565b6040513d6000823e3d90fd5b6001600160a01b03166000818152601860205260408120549092612a369161295c565b918352601760205260408320548015612b3f578115612b3f57818110612b3f5782811015612b3557601454612a7f91839161108891612522906001600160801b03831690612472565b90620186a09283830292808404851490151715612b2157612aa4929161253f916124c9565b91601b5491601c5493612ab785856124e3565b80820291848212600160ff1b821416612b21578183051490151715612b0d5705818482019485129112908015821691151617612af95750808212612601575090565b634e487b7160e01b81526011600452602490fd5b634e487b7160e01b83526011600452602483fd5b634e487b7160e01b85526011600452602485fd5b50505050601b5490565b50505090565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03161480612c46575b15612ba0577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f000000000000000000000000000000000000000000000000000000000000000082527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a0815260c081018181106001600160401b038211176123285760405251902090565b507f00000000000000000000000000000000000000000000000000000000000000004614612b77565b15612c7657565b60405162461bcd60e51b815260206004820152601660248201527545524332303a2062616c616e636520746f6f206c6f7760501b6044820152606490fd5b15612cbb57565b60405162461bcd60e51b815260206004820152601660248201527545524332303a206e6f207a65726f206164647265737360501b6044820152606490fd5b51906001600160a01b0382168203610acd57565b519060ff82168203610acd57565b60058110156122405780612d2c5750565b60018103612d745760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b6044820152606490fd5b60028103612dc15760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606490fd5b600314612dca57565b60405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608490fd5b9291906fa2a8918ca85bafe22016d0b997e4df60600160ff1b038311612e935791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa15612e865781516001600160a01b03811615612e80579190565b50600190565b50604051903d90823e3d90fd5b50505050600090600390565b60001981146124855760010190565b7fe50de2333c10a9502fcb1d8ae13a51bbf423153dfc63c2b8997665b32154afc360018060a01b038092169160009083825260036020526040822094169384825260205284604082205580a4565b909160207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259160018060a01b03809416938460005260028352604060002095169485600052825280604060002055604051908152a3565b15612f5a57565b60405162461bcd60e51b815260206004820152600e60248201526d13585c9ad95d0e881c185d5cd95960921b6044820152606490fd5b15612f9757565b606460405162461bcd60e51b815260206004820152602060248201527f4d61726b65743a2063616e6e6f742065786563757465206f6e20697473656c666044820152fd5b9190811561342357620186a09283612ff5602f5485612472565b049361302b61300760115496866124d6565b600d546001600160a01b0397919060ff90613023908a1661345e565b169185613615565b80156133d45761303b9083613698565b613047602f5485612472565b04916130516134cc565b9461305c84866124d6565b60409485519061306b8261233e565b60008083526020928301819052895190966001600160801b03949091851661336557996130ef908b906130ea908790816130ab81865b168284511661383b565b168152816130c1818a840196168287511661383b565b169384905251601480546001600160801b0319166001600160801b039390921692909216179055565b613d19565b6016548015908115613356575b501561331857848991168088526017845288882061311b8c82546124d6565b90558851908382528b858301527f3a5151e57d3bc9798e7853034ac52293d1a0e12a2b44725e75b03b21f86477a68a888a1693a4806132f7575b50808360095416976064600e5489519a8b938492638eb22cdd60e01b8452600484015260248301528960448301525afa9687156132ed5785976132be575b5061319c6134f2565b818101916103e8848451161061328a5750906131ec8392836131c6613213968c168284511661374f565b1690819052602480546001600160801b0319166001600160801b03909216919091179055565b51602480546001600160801b03169290911660801b6001600160801b031916919091179055565b6009541690600e5490823b1561149f578451630208d92960e11b81523060048201526001600160a01b0391909116602482015260448101919091526064810185905292919081908490608490829084905af191821561328057505061327757509091565b6126b190612315565b51903d90823e3d90fd5b60649088519062461bcd60e51b82526004820152600e60248201526d14d1d30e881b5a5b881b1a5b5a5d60921b6044820152fd5b9080975081813d83116132e6575b6132d681836123ab565b81010312610ad657519538613193565b503d6132cc565b86513d87823e3d90fd5b83600a54168652600182526133108787209182546124d6565b905538613155565b875162461bcd60e51b815260048101849052601760248201527614d1d30e88189bdc9c9bddc818d85c081c995858da1959604a1b6044820152606490fd5b905084601454161115386130fc565b998a859b8583018781511661337a9083612472565b888551166133879161249b565b9d8e8186511661339691612472565b9151166133a29161249b565b106133bd575b6130ea866130ef93818f94816130ab916130a1565b85806133ca81949e612e9f565b9d935050506133a8565b60405162461bcd60e51b815260206004820152602160248201527f42696742616e673a20616c6c6f77616e63655368617265206e6f742076616c696044820152601960fa1b6064820152608490fd5b505050600090600090565b3d15613459573d9061343f826123cc565b9161344d60405193846123ab565b82523d6000602084013e565b606090565b60008091604051602081019063313ce56760e01b8252600481526134818161233e565b51916001600160a01b03165afa61349661342e565b90806134c1575b156134bb57602081805181010312610acd5760206129159101612d0d565b50601290565b50602081511461349d565b604051906134d98261233e565b6014546001600160801b038116835260801c6020830152565b604051906134ff8261233e565b6024546001600160801b038116835260801c6020830152565b919060018060a01b0380600094168452602060178152604085205490811561360b57601881526040862054801561360457816135526134cc565b9460095416916064600c54604051948593849263442c159960e01b8452600484015260248301528b60448301525afa9687156129505780976135ce575b505061268f6135ae6129076135c9969798620186a06021540490612472565b956135c460018060801b03948587511690612472565b612472565b111590565b9096508187813d83116135fd575b6135e681836123ab565b8101031261037a575094519461268f6135ae61358f565b503d6135dc565b5050505050565b5060019450505050565b61258a9061363585612915969561362f61253f968561288a565b90613655565b6001600160a01b0390911660009081526018602052604090205490612472565b9182158015613690575b61260d57600181018091116124855761367e9261257b612910926124bb565b6005810180911161248557600a900490565b50811561365f565b6001600160a01b03163381036136ac575050565b600081815260209060038252604091828220338352815284838320541061371557838252600381528282203383528152828220546001016136ee575050505050565b613709938252600381528282209033835252209182546124c9565b90553880808080613604565b60649083519062461bcd60e51b82526004820152601460248201527313585c9ad95d0e881b9bdd08185c1c1c9bdd995960621b6044820152fd5b6001600160801b03918216908216039190821161248557565b9190916000602060405161377b8161233e565b82815201526020810180516001600160801b039081166137bf576137b881865b816137ab818a168289511661374f565b168652168284511661374f565b1690529190565b6137d96137cf8285511687612472565b828451169061249b565b94806137f56137eb8486511689612472565b848751169061249b565b10613805575b816137b89161379b565b94816138136137b892612e9f565b969150506137fb565b6040519061382982612359565b60006040838281528260208201520152565b6001600160801b03918216908216019190821161248557565b61385c61381c565b506000602060405161386d8161233e565b8281520152600060206040516138828161233e565b828152015260405161389381612359565b6023546001600160401b03811682526001600160401b038160401c16602083015260801c604082015280916138c66134cc565b916138cf6134f2565b600954600e54825160405163442c159960e01b8152600481018390526001600160801b03909116602482015260006044820181905293959194919391926001600160a01b031690602081606481855afa8015612a0757600090613ce5575b885161394392506001600160801b0316906124d6565b80613cb0575060005b806139646001600160401b03602087015116426124c9565b948515613c86575050426001600160401b031660208a8101919091528801516001600160801b031615613c3c57506020670de0b6b3a76400006139c1856135c48c6001600160401b038d60018060801b0390511691511690612472565b895191900496906001600160801b03906139e090828a1690831661383b565b168952875160405163442c159960e01b815260048101929092526001600160801b031660248201526000604482015291829060649082905afa8015612a0757600090613c08575b8751613a3d92506001600160801b0316906124d6565b92613a6b84612910620186a0613a55601a548a612472565b60208c01516001600160801b0316919004612472565b6040890180519195916001600160801b038088169291613a8e908490831661383b565b16905260208801805190916001600160801b0391613aae9190831661383b565b16905280613bd3575060005b60295490938482811015613b4e57613ad290836124c9565b90670de0b6b3a7640000820291808304670de0b6b3a7640000149015171561248557612910613b26613b20613b126001600160401b0396613b309661249b565b936135c4602d549580612472565b836124d6565b91848d5116612472565b168089526001600160401b03602c5416809110613b4a5750565b8852565b909150602a54808211613b6057505050565b613b69916124c9565b670de0b6b3a7640000810290808204670de0b6b3a76400001490151715612485576001600160401b0391612910613bac613b20613b12613bb595602b549061249b565b848d5116612472565b81602c5460401c16808211613bcb575b50168852565b905038613bc5565b87516001600160801b0316670de0b6b3a764000081810292918084049091149015171561248557613c039161249b565b613aba565b506020813d602011613c34575b81613c22602093836123ab565b81010312610acd57613a3d9051613a27565b3d9150613c15565b9697939450509350506001600160401b038151166001600160401b03602e5416809103613c7a575b509392613c6f6134f2565b926000926000929190565b81526001925038613c64565b975098505050505092505091613c9a6134cc565b91613ca36134f2565b9160009160009190600090565b87516001600160801b0316670de0b6b3a764000081810292918084049091149015171561248557613ce09161249b565b61394c565b506020813d602011613d11575b81613cff602093836123ab565b81010312610acd57613943905161392d565b3d9150613cf2565b601480546001600160801b031660809290921b6001600160801b031916919091179055565b613e22602080613df8613d4f613854565b9396959390929015613e24575050506001600160401b03602e54166000807f33af5ce86e8438eff54589f85332916444457dfa8685493fbd579b809097026b88604051838152a45b805185820151604092830151921b67ffffffffffffffff60401b166001600160401b03919091161760809190911b6001600160801b0319908116919091176023558151601480549092166001600160801b0391821617909155948591610c12565b8051910151821660801b6001600160801b0319166001600160801b03929091169190911617602455565b565b7f33af5ce86e8438eff54589f85332916444457dfa8685493fbd579b809097026b886001600160401b0386511694604051908152a4613d97565b60405190613e6b8261233e565b60038252623f3f3f60e81b6020830152565b908151811015613e8e570160200190565b634e487b7160e01b600052603260045260246000fd5b60ff1660ff81146124855760010190565b805160408110613f2d57508051810190602081818401930312610acd576020810151906001600160401b038211610acd570181603f82011215610acd576020810151613f00816123cc565b92613f0e60405194856123ab565b81845260408284010111610acd5761291591604060208501910161213d565b60209290830361401b576000805b60ff81168581109081613ffc575b5015613f5d57613f5890613ea4565b613f3b565b9260ff80941692613f6d846123cc565b93613f7b60405195866123ab565b808552613f8a601f19916123cc565b013687860137825b85811687811080613fdf575b15613fd457613fcf9190613fc96001600160f81b0319613fbe8388613e7d565b5116871a9188613e7d565b53613ea4565b613f92565b505094505050905090565b506001600160f81b0319613ff38286613e7d565b51161515613f9e565b6001600160f81b031991506140119086613e7d565b5116151538613f49565b915050612915613e5e56feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220457eee7610cc68599fce8b1a9000e3d857d63e416048e92b9d7bd9f8cb2a6a0d64736f6c63430008120033"; + "0x6101408060405234620001e5576200001781620001ea565b601381526001602082017f546170696f63612053696e67756c617269747900000000000000000000000000815260206040516200005481620001ea565b8381520192603160f81b845251902091208160e052610100918183524660a0526040519160208301907f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f92838352604085015260608401524660808401523060a084015260a0835260c083019280841060018060401b03851117620001cf5760408490525190206080523060c052610120908152600580546001600160a01b0319163390811790915560007f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a362013880601b5562015f90601c55612710601d55612ee06020557f0bd4060688a1800ae986e4840aebc924bb40b5bf44de4583df2257220b54b77c6027557f7d1dc38e60930664f8cbf495da6556ca091d2f92d6550877750c049864b182306028556161a86029556032603055614120928362000207843960805183612c36015260a05183612d01015260c05183612c00015260e05183612c8501525182612cab01525181612c620152f35b634e487b7160e01b600052604160045260246000fd5b600080fd5b604081019081106001600160401b03821117620001cf5760405256fe608060408181526004918236101561001657600080fd5b60009260e08435811c928362a02a20146121835750826302ce728f1461215a57826306fdde03146120a2578263078dfbe714611f9d578263095ea7b314611f725782630c4e84f014611e5b57826318160ddd14611e385782631c9e379b14611dff5782631da8bf1014611d4557826323b872dd14611bbd578263313ce56714611b86578263331960ff14611b6657826334d441d014611b465782633644e51514611b2857826337b6b7b914611b0857826338d52e0f14611ade5782633ba0b9a914611abe5782633f741adb14611a9557826340626d8b14611a7557826344de240a14611a55578263473e3ce714611a3557826348e4163e146119fc5782634d7f2a34146119dc5782634e71e0c8146119275782635224372c14611870578263529898f21461185157826352f353eb1461182857826355140232146117ff57826355c2ab94146117d557826357935462146117b55782635dfe04e8146117545782636c3d8b8f1461172a57826370a08231146116f157826372778547146116b957826374645ff31461168c5782637dc0d1d0146116625782637ecebe001461162b5782637fa0b84e146115f9578263821226e8146115d95782638285ef40146115a55782638c5d0ed3146115855782638da5cb5b1461155b578263910dd7c8146112e2578263959916dc146112c257826395d89b411461120957826399a97028146111d85782639c5d7192146111b85782639e15e89f1461117c578263a9059cbb146110a0578263b0e21e8a14611080578263b27c0e7414611044578263bb4cfe3b14611024578263cd0211eb14610bbc578263ce8849ed14610b92578263d3fb2a38146106f9578263d505accf1461057657508163d8dfeb451461054d578163da863f0e14610524578163dd62ed3e146104d6578163de406577146104ad578163e0996cb61461048e578163e30c397814610465578163ea64dd5614610446578163eec0f42e14610427578163ef2b234a146103b157508063f42760b714610393578063f8ba4cff14610374578063f9557ccb1461033e5763ffe04c661461031d57600080fd5b3461033a578160031936011261033a57602090602a549051908152f35b5080fd5b503461033a578160031936011261033a5760255490516001600160801b038216815260809190911c6020820152604090f35b0390f35b823461039057806003193601126103905761038d613de2565b80f35b80fd5b503461033a578160031936011261033a57602090602b549051908152f35b83903461033a57602036600319011261033a57356001600160a01b0381811691829003610423576103e78160055416331461249f565b816021549182167ffb4fd7114609dd603b57adbc2082205bfbbcabf9265c4b437b472f5c592b8cd78580a36001600160a01b0319161760215580f35b8280fd5b50503461033a578160031936011261033a57602090600c549051908152f35b50503461033a578160031936011261033a57602090601f549051908152f35b50503461033a578160031936011261033a5760065490516001600160a01b039091168152602090f35b50503461033a578160031936011261033a57602090601d549051908152f35b50503461033a578160031936011261033a5760095490516001600160a01b039091168152602090f35b50503461033a578060031936011261033a576020916104f36121c9565b826104fc6121df565b6001600160a01b03928316845260028652922091166000908152908352819020549051908152f35b50503461033a578160031936011261033a5760215490516001600160a01b039091168152602090f35b50503461033a578160031936011261033a57600b5490516001600160a01b039091168152602090f35b84925034610423576105873661225b565b9183949895979342116106b6579161065991610661938c8b8b60018060a01b0398898d169a8b93846000528d60205285600020908154916105c783612f57565b90558c87519560208701977f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e266895260008a890152606088015216608086015260a085015260c084015281830152815261061f8161242c565b51902061062a612bfd565b915190602082019261190160f01b8452602283015260428201526042815261065181612448565b519020612ed2565b919091612dd3565b1603610673575061038d939450612fb4565b606490602087519162461bcd60e51b8352820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152fd5b8a5162461bcd60e51b8152602081880152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b5090503461042357610160366003190112610423576001600160a01b03813581811690819003610b8e576024916001600160401b038335818111610b8a5736602382011215610b8a5780860135918211610b8a5736858383010111610b8a5760443593838516809503610b85576107758460055416331461249f565b80610b47575b5084826109c9575b50505081610989575b505060643580610971575b5060843580610959575b5060a43580610942575b5060c4358061091e575b5060e435806108fa575b5061010435806108c9575b506101243580610858575b506101443592836107e4578480f35b601e5484106107fb57505050601f55388080808480f35b608492916020603292519362461bcd60e51b85528401528201527f4d61726b65743a206c69717569646174696f6e436f6c6c61746572616c697a616044820152711d1a5bdb94985d19481d1bdbc81cdb585b1b60721b6064820152fd5b610867620186a08211156124ea565b601f54811161087957601e55386107d5565b506025906020608494519362461bcd60e51b85528401528201527f4d61726b65743a20636f6c6c61746572616c697a6174696f6e5261746520746f6044820152646f2062696760d81b6064820152fd5b806016547fae6e0ab3b95f0a53ff9660a390ccedcbbf1f2355dce974a9841af106fddcfaba8780a3601655386107ca565b610908620186a082106124ea565b610915601b5482116124ea565b601c55386107bf565b61092c620186a082106124ea565b610939601c5482106124ea565b601b55386107b5565b610950620186a082106124ea565b601d55386107ab565b610968620186a08211156124ea565b601a55386107a1565b610980620186a08211156124ea565b60195538610797565b816008549182167f5a62d22209e370e38eea92cfddcd228e656e6ec139243392a760a7769f5877fd8880a36001600160a01b03191617600855388061078c565b82916109d660105461230e565b601f8111610ad6575b508990601f8411600114610a44578a93610a37575b5050508160011b916000199060031b1c1916176010555b7fa6f004921c944d4b8bf6e38462b00f36a58d62495d56b51f571ab78f732c98158680a1388084610783565b01013590508438806109f4565b60108b52601f19841694507f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae67292509087908b60205b878210610ab75750508460019610610a9b575b50505050811b01601055610a0b565b60001960f88660031b161c199201013516905538808681610a8c565b8285019093013585556001949094019389929182019190810190610a79565b60108b5290925090507f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae672601f840160051c810160208510610b40575b91849391601f8994920160051c01905b818110610b2f57506109df565b8b8155859450889350600101610b22565b5080610b12565b600f80546001600160a01b0319169190911790557f0b2d6eb667d0522c3eb86e4288afecae6c11591ffd1345d4d12407e0598bca9b8880a13861077b565b600080fd5b8780fd5b8480fd5b5050503461033a578160031936011261033a5760085490516001600160a01b039091168152602090f35b5083833461033a57608036600319011261033a57610bd86121c9565b610be06121df565b90610be961224c565b93606435916001825260209560078752610c0960ff87852054161561300b565b6001600160a01b0385811695909390610c6690610c2830891415613048565b610c3061278e565b5050610c3a613de2565b610c4b87610c4661357a565b613816565b905060115460ff610c5f89600d541661350c565b16926136c3565b8015610fe157610c769084613746565b8581526017885286812054808611610fd9575b508415610f9e578798610cd298610ca287610c4661357a565b8151601480546001600160801b0319166001600160801b03928316179055909b909290918391905b015116613dbd565b87835260178b52888320610ce7888254612581565b90558560095416600e54928a5193638eb22cdd60e01b855280828601528c6024860152600160448601528d85606481865afa948515610eaa578c918f918897610f68575b506025548616948915610eb4575060448b60095416935180948193627eeac760e11b8352308884015260248301525afa8015610eaa5783908790610e79575b610d749250612581565b8411610e465750927fc8e512d8f188ca059984b5853d2bf653da902696b8512785b182b2c813789a6e95928c9592610db48d9b9a99965b828416906138e9565b1660018060801b0319602554161760255584841690818352602687528b83206027549081855288528c8420548211600014610e2157505081526026855289812060275482528552808a8120555b5015610e1c575080600954165b87519485521692a451908152f35b610e0e565b90918352602687528b83209083528652610e3f8b8320918254612581565b9055610e01565b8a5162461bcd60e51b81529081018d9052600d60248201526c0a68e987440e8dede40daeac6d609b1b6044820152606490fd5b50508d81813d8311610ea3575b610e908183612463565b81010312610b855782610d749151610d6a565b503d610e86565b8c513d88823e3d90fd5b9250929050813b15610f64578c51630208d92960e11b81526001600160a01b038a169181019182523060208301526040820193909352606081018690528691839182908490829060800103925af18015610f5a57928c9a999895927fc8e512d8f188ca059984b5853d2bf653da902696b8512785b182b2c813789a6e9895928f9895610f45575b50610db490610dab565b93610f53610db492956123cd565b9390610f3b565b8b513d87823e3d90fd5b8680fd5b9250955081813d8311610f97575b610f808183612463565b81010312610f93578d8c91519538610d2b565b8580fd5b503d610f76565b865162461bcd60e51b8152808a01899052601560248201527453474c3a206e6f7468696e6720746f20726570617960581b6044820152606490fd5b945089610c89565b875162461bcd60e51b8152808b018a9052601d60248201527f53474c3a20616c6c6f77616e63655368617265206e6f742076616c69640000006044820152606490fd5b5050503461033a578160031936011261033a57602090601e549051908152f35b5050503461033a578160031936011261033a57606090602454908051916001600160401b03808216845281831c16602084015260801c90820152f35b5050503461033a578160031936011261033a57602090601a549051908152f35b5050503461033a578060031936011261033a576020916110be6121c9565b8260243592831580159061116a575b6110fd575b50519182526001600160a01b03169033906000805160206140cb833981519152908590a35160018152f35b338152600186528181205461111485821015612d27565b6001600160a01b038416908533839003611131575b5050506110d2565b61114591611140841515612d6c565b612581565b338352600188528383205581522061115e83825461258e565b90558238808085611129565b50336001600160a01b038416146110cd565b5050503461033a578060031936011261033a576060906111a661119d6121c9565b602435906126cd565b91929081519384526020840152820152f35b5050503461033a578160031936011261033a57602090602c549051908152f35b5050503461033a578060031936011261033a576020906112026111f96121c9565b60243590612acb565b9051908152f35b509050346104235782600319360112610423579180806103709460018060a01b03600b541690855160208101916395d89b4160e01b8352815261124b816123f6565b51915afa6112576134dc565b9150156112b35761126790613f59565b905b6112a160238251809462746d2d60e81b602083015261129181518092602086860191016121f5565b8101036003810185520183612463565b51918291602083526020830190612218565b506112bc613f02565b90611269565b5050503461033a578160031936011261033a576020906030549051908152f35b849184346115575780600319360112611557578135926001600160401b038411610b8e5736602385011215610b8e57838301359261131f84612484565b9461132c84519687612463565b84865286602091828801963660248284010111610423578060248593018937880101526024359361ffff8516809503610b8a576101009586888051810103126115535761137890612781565b93611384828901612db1565b9061139160608a01612db1565b9860808101519860a0820151926113aa60c08401612dc5565b91818401519301519360018060a01b03808097169d169a81421161151057928d8f819897948f948f8f968f918f959a8f8c81956114869f9c6106599f506000146114e9577f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e2669a5b82528952209384549461142386612f57565b905580519788019889528701528d6060870152608086015260a085015260c08401528183015281526114548161242c565b51902061145f612bfd565b908951908b82019261190160f01b8452602283015260428201526042815261065181612448565b16036114a85750505060001461149f5761038d92612fb4565b61038d92612f66565b5162461bcd60e51b815291820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e61747572650000604482015260649150fd5b7f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d69a611411565b875162461bcd60e51b8152808b018a9052601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b8880fd5b8380fd5b5050503461033a578160031936011261033a5760055490516001600160a01b039091168152602090f35b5050503461033a578160031936011261033a57602090601b549051908152f35b5050503461033a578160031936011261033a5760145490516001600160801b038216815260809190911c6020820152604090f35b5050503461033a578160031936011261033a57602090602e549051908152f35b5050503461033a578060031936011261033a5760209061162461161a6121c9565b6024359033612f66565b5160018152f35b509050346104235760203660031901126104235760209282916001600160a01b036116546121c9565b168252845220549051908152f35b5050503461033a578160031936011261033a57600f5490516001600160a01b039091168152602090f35b5050503461033a578160031936011261033a578051610370916112a1826116b281612348565b0383612463565b509050346104235760203660031901126104235735916009831015610390575060ff6116e66020936122df565b541690519015158152f35b5050503461033a57602036600319011261033a5760209181906001600160a01b0361171a6121c9565b1681526001845220549051908152f35b5050503461033a578160031936011261033a57600a5490516001600160a01b039091168152602090f35b5050503461033a578160031936011261033a576080906117726138ca565b5061177b613902565b50949593505050508051926001600160401b03808251168552602082015116602085015281600180871b0391015116908301526060820152f35b5050503461033a578160031936011261033a57602090601c549051908152f35b5050503461033a578160031936011261033a57602d548151911c6001600160401b03168152602090f35b5050503461033a578160031936011261033a576020906001600160401b03602d54169051908152f35b5050503461033a578160031936011261033a576020906001600160401b03602f54169051908152f35b5050503461033a578160031936011261033a5760209081549051908152f35b50905034610423576118de906118d260ff84956118a561188f366122aa565b949198909380805260076020522054161561300b565b6118ad61278e565b50506118b7613de2565b6118cc6001600160a01b038216301415613048565b85613093565b929093601154906135c6565b156118f0575082519182526020820152f35b606490602085519162461bcd60e51b8352820152601160248201527013585c9ad95d0e881a5b9cdbdb1d995b9d607a1b6044820152fd5b848285346104235782600319360112610423576006546001600160a01b03929091838316919033839003611999575050806005549384167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08680a36001600160a01b0319928316176005551660065580f35b906020606492519162461bcd60e51b8352820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b5050503461033a578160031936011261033a576020906029549051908152f35b5050503461033a57602036600319011261033a5760209181906001600160a01b03611a256121c9565b1681526017845220549051908152f35b5050503461033a578160031936011261033a576020906015549051908152f35b5050503461033a578160031936011261033a57602090600e549051908152f35b5050503461033a578160031936011261033a576020906016549051908152f35b5082843461039057606036600319011261039057506112026020926044359060243590356125b4565b5050503461033a578160031936011261033a576020906011549051908152f35b5050503461033a578160031936011261033a57600d5490516001600160a01b039091168152602090f35b5050503461033a578160031936011261033a576020906012549051908152f35b5050503461033a578160031936011261033a57602090611202612bfd565b5050503461033a578160031936011261033a576020906019549051908152f35b5050503461033a578160031936011261033a576020906013549051908152f35b5050503461033a578160031936011261033a57600d546020919060ff90611bb5906001600160a01b031661350c565b915191168152f35b5082843461039057611bce366122aa565b919282611c08575b508351918252602094506001600160a01b039081169216906000805160206140cb833981519152908590a35160018152f35b6001600160a01b038481168083526001602090815287842054919892909190611c3387831015612d27565b851692838a03611c47575b50505050611bd6565b898552600283528885203386528352888520549060018201611cb1575b5050928260209960018a94611c908a8e996111406000805160206140cb8339815191529c9a1515612d6c565b9285525283832055815220611ca685825461258e565b905591878080611c3e565b878210611d0757509260209960018a94611c908a8e9996611ce2826000805160206140cb8339815191529d9b612581565b86895260028552898920338a5285528989205596995050509450509981949650611c64565b895162461bcd60e51b8152908101849052601860248201527745524332303a20616c6c6f77616e636520746f6f206c6f7760401b6044820152606490fd5b8492503461042357611d563661225b565b9397949690928042116106b657938693611ded938c8c89610659968e9a8e60018060a01b03809c169c8d948587526020528c87872092835493611d9885612f57565b905588519660208801987f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d68a528a890152606088015216608086015260a085015260c084015281830152815261061f8161242c565b1603610673575061038d939450612f66565b5050503461033a57602036600319011261033a5760209181906001600160a01b03611e286121c9565b1681526018845220549051908152f35b5050503461033a578160031936011261033a5760209060255460801c9051908152f35b50905034610423578160031936011261042357803590600982101561155757611e8261223d565b6008549093906001600160a01b03163303611f385760ff611ea2846122df565b54161515931515938414611f00575050808260ff611ec2611ef0946122df565b54161515827feeec81de25875ce1725479bb76f720a8defdb43dea041919ae37bb4aae9847c08780a46122df565b9060ff8019835416911617905580f35b906020606492519162461bcd60e51b835282015260126024820152714d61726b65743a2073616d6520737461746560701b6044820152fd5b906020606492519162461bcd60e51b8352820152601460248201527313585c9ad95d0e881d5b985d5d1a1bdc9a5e995960621b6044820152fd5b5050503461033a578060031936011261033a57602090611624611f936121c9565b6024359033612fb4565b8482853461042357606036600319011261042357611fb96121c9565b91611fc261223d565b91611fcb61224c565b9260018060a01b03948591611fe58360055416331461249f565b15612089571692831590811591612081575b5015612046575050806005549283167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08580a36001600160a01b03199182161760055560068054909116905580f35b906020606492519162461bcd60e51b835282015260156024820152744f776e61626c653a207a65726f206164647265737360581b6044820152fd5b905086611ff7565b93505050501660018060a01b0319600654161760065580f35b509050346104235782600319360112610423579180806103709460018060a01b03600b541690855160208101916306fdde0360e01b835281526120e4816123f6565b51915afa6120f06134dc565b91501561214b5761210090613f59565b905b6112a160348251809473546170696f63612053696e67756c61726974792d60601b602083015261213b81518092602086860191016121f5565b8101036014810185520183612463565b50612154613f02565b90612102565b8385346103905780600319360112610390575061217561278e565b825191151582526020820152f35b859085346104235780600319360112610423576020926121a16121c9565b6121a96121df565b6001600160a01b0391821683526003865283832091168252845220548152f35b600435906001600160a01b0382168203610b8557565b602435906001600160a01b0382168203610b8557565b60005b8381106122085750506000910152565b81810151838201526020016121f8565b90602091612231815180928185528580860191016121f5565b601f01601f1916010190565b602435908115158203610b8557565b604435908115158203610b8557565b60e0906003190112610b85576001600160a01b03906004358281168103610b8557916024359081168103610b855790604435906064359060843560ff81168103610b85579060a4359060c43590565b6060906003190112610b85576001600160a01b03906004358281168103610b8557916024359081168103610b85579060443590565b60098110156122f8576000526007602052604060002090565b634e487b7160e01b600052602160045260246000fd5b90600182811c9216801561233e575b602083101461232857565b634e487b7160e01b600052602260045260246000fd5b91607f169161231d565b601054600092916123588261230e565b9081815260019283811690816000146123b2575060011461237857505050565b9092935060106000526020928360002092846000945b83861061239e5750505050010190565b80548587018301529401938590820161238e565b91935050602093945060ff191683830152151560051b010190565b6001600160401b0381116123e057604052565b634e487b7160e01b600052604160045260246000fd5b604081019081106001600160401b038211176123e057604052565b606081019081106001600160401b038211176123e057604052565b61010081019081106001600160401b038211176123e057604052565b608081019081106001600160401b038211176123e057604052565b90601f801991011681019081106001600160401b038211176123e057604052565b6001600160401b0381116123e057601f01601f191660200190565b156124a657565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b156124f157565b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881b9bdd081d985b1a59607a1b6044820152606490fd5b8181029291811591840414171561253d57565b634e487b7160e01b600052601160045260246000fd5b811561255d570490565b634e487b7160e01b600052601260045260246000fd5b604d811161253d57600a0a90565b9190820391821161253d57565b9190820180921161253d57565b8181039291600013801582851316918412161761253d57565b6014549192916125fd916125ee916125e4916125da906001600160801b0383169061252a565b9060801c90612553565b93601f549061252a565b6125f783612573565b90612553565b8083106126c55761261161264d9184612581565b91612648612642612639601e5461263361262a86612573565b6020549061258e565b9061252a565b6125f784612573565b91612573565b61259b565b6509184e72a0009081810291818305149015171561253d57670de0b6b3a76400009182810292818405149015171561253d57801561255d57600160ff1b9180831460001983141661253d57059060008212156126be57811461253d57600003905b8082116126b9575090565b905090565b50906126ae565b505050600090565b6001600160a01b03811660008181526017602052604081205491949392909190811561277557916040916127516127699594836020865161270d816123f6565b828152015261272b8661271e613902565b5050505050939050612942565b815190936001600160801b03916020916127479184169061252a565b9201511690612553565b81811061276d57035b95815260186020522054612a14565b9091565b50508061275a565b50509192505080918190565b51908115158203610b8557565b600f546040805163d6d7d52560e01b8152602060048201529290916001600160a01b03168284806127c160248201612348565b0381600080955af180156128ea57819482916128ae575b5092841561285157831561281757507f9f9192b5edb17356c524e08d9e025c8e2f6307e6ea52fb7968faa3081f51c3c883918260115580a25b42601355565b5162461bcd60e51b81526020600482015260146024820152734d61726b65743a20696e76616c6964207261746560601b6044820152606490fd5b919250506128646013546012549061258e565b4211612874575060115490612811565b5162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881c985d19481d1bdbc81bdb1960621b6044820152606490fd5b809550848092503d83116128e3575b6128c78183612463565b810103126103905760206128da85612781565b940151386127d8565b503d6128bd565b508251903d90823e3d90fd5b156128fd57565b60405162461bcd60e51b815260206004820152601e60248201527f4d61726b65743a2065786368616e676552617465206e6f742076616c696400006044820152606490fd5b61294d8215156128f6565b60018060a01b036020816009541691600c5490600094168452601882526064604085205491604051948593849263442c159960e01b8452600484015260248301528660448301525afa918215612a085780926129d0575b5050906129c86129bf6129cd93620186a0602254049061252a565b601e549061252a565b612553565b90565b9091506020823d8211612a00575b816129eb60209383612463565b810103126103905750516129c86129bf6129a4565b3d91506129de565b604051903d90823e3d90fd5b612a1f8215156128f6565b602060018060a01b0360095416916064600c54604051948593849263442c159960e01b845260048401526024830152600060448301525afa908115612abf57600091612a8c575b50906129c8612a78926022549061252a565b620186a0612a88601e548361252a565b0491565b906020823d8211612ab7575b81612aa560209383612463565b810103126103905750516129c8612a66565b3d9150612a98565b6040513d6000823e3d90fd5b6001600160a01b03166000818152601860205260408120549092612aee91612a14565b918352601760205260408320548015612bf7578115612bf757818110612bf75782811015612bed57601454612b37918391611140916125da906001600160801b0383169061252a565b90620186a09283830292808404851490151715612bd957612b5c92916125f791612581565b91601b5491601c5493612b6f858561259b565b80820291848212600160ff1b821416612bd9578183051490151715612bc55705818482019485129112908015821691151617612bb157508082126126b9575090565b634e487b7160e01b81526011600452602490fd5b634e487b7160e01b83526011600452602483fd5b634e487b7160e01b85526011600452602485fd5b50505050601b5490565b50505090565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03161480612cfe575b15612c58577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f000000000000000000000000000000000000000000000000000000000000000082527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a0815260c081018181106001600160401b038211176123e05760405251902090565b507f00000000000000000000000000000000000000000000000000000000000000004614612c2f565b15612d2e57565b60405162461bcd60e51b815260206004820152601660248201527545524332303a2062616c616e636520746f6f206c6f7760501b6044820152606490fd5b15612d7357565b60405162461bcd60e51b815260206004820152601660248201527545524332303a206e6f207a65726f206164647265737360501b6044820152606490fd5b51906001600160a01b0382168203610b8557565b519060ff82168203610b8557565b60058110156122f85780612de45750565b60018103612e2c5760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b6044820152606490fd5b60028103612e795760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606490fd5b600314612e8257565b60405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608490fd5b9291906fa2a8918ca85bafe22016d0b997e4df60600160ff1b038311612f4b5791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa15612f3e5781516001600160a01b03811615612f38579190565b50600190565b50604051903d90823e3d90fd5b50505050600090600390565b600019811461253d5760010190565b7fe50de2333c10a9502fcb1d8ae13a51bbf423153dfc63c2b8997665b32154afc360018060a01b038092169160009083825260036020526040822094169384825260205284604082205580a4565b909160207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259160018060a01b03809416938460005260028352604060002095169485600052825280604060002055604051908152a3565b1561301257565b60405162461bcd60e51b815260206004820152600e60248201526d13585c9ad95d0e881c185d5cd95960921b6044820152606490fd5b1561304f57565b606460405162461bcd60e51b815260206004820152602060248201527f4d61726b65743a2063616e6e6f742065786563757465206f6e20697473656c666044820152fd5b919081156134d157620186a092836130ad6030548561252a565b04936130e36130bf601154968661258e565b600d546001600160a01b0397919060ff906130db908a1661350c565b1691856136c3565b801561348c576130f39083613746565b6130ff6030548561252a565b049161310961357a565b94613114848661258e565b604094855190613123826123f6565b60008083526020928301819052895190966001600160801b03949091851661341d57996131a7908b906131a29087908161316381865b16828451166138e9565b16815281613179818a84019616828751166138e9565b169384905251601480546001600160801b0319166001600160801b039390921692909216179055565b613dbd565b601654801590811561340e575b50156133d05784899116808852601784528888206131d38c825461258e565b90558851908382528b858301527f3a5151e57d3bc9798e7853034ac52293d1a0e12a2b44725e75b03b21f86477a68a888a1693a4806133af575b50808360095416976064600e5489519a8b938492638eb22cdd60e01b8452600484015260248301528960448301525afa9687156133a5578597613376575b506132546135a0565b818101916103e884845116106133425750906132a483928361327e6132cb968c16828451166137fd565b1690819052602580546001600160801b0319166001600160801b03909216919091179055565b51602580546001600160801b03169290911660801b6001600160801b031916919091179055565b6009541690600e5490823b15611557578451630208d92960e11b81523060048201526001600160a01b0391909116602482015260448101919091526064810185905292919081908490608490829084905af191821561333857505061332f57509091565b612769906123cd565b51903d90823e3d90fd5b60649088519062461bcd60e51b82526004820152600e60248201526d14d1d30e881b5a5b881b1a5b5a5d60921b6044820152fd5b9080975081813d831161339e575b61338e8183612463565b81010312610b8e5751953861324b565b503d613384565b86513d87823e3d90fd5b83600a54168652600182526133c887872091825461258e565b90553861320d565b875162461bcd60e51b815260048101849052601760248201527614d1d30e88189bdc9c9bddc818d85c081c995858da1959604a1b6044820152606490fd5b905084601454161115386131b4565b998a859b85830187815116613432908361252a565b8885511661343f91612553565b9d8e8186511661344e9161252a565b91511661345a91612553565b10613475575b6131a2866131a793818f948161316391613159565b858061348281949e612f57565b9d93505050613460565b60405162461bcd60e51b815260206004820152601c60248201527f42423a20616c6c6f77616e63655368617265206e6f742076616c6964000000006044820152606490fd5b505050600090600090565b3d15613507573d906134ed82612484565b916134fb6040519384612463565b82523d6000602084013e565b606090565b60008091604051602081019063313ce56760e01b82526004815261352f816123f6565b51916001600160a01b03165afa6135446134dc565b908061356f575b1561356957602081805181010312610b855760206129cd9101612dc5565b50601290565b50602081511461354b565b60405190613587826123f6565b6014546001600160801b038116835260801c6020830152565b604051906135ad826123f6565b6025546001600160801b038116835260801c6020830152565b919060018060a01b038060009416845260206017815260408520549081156136b95760188152604086205480156136b2578161360061357a565b9460095416916064600c54604051948593849263442c159960e01b8452600484015260248301528b60448301525afa968715612a0857809761367c575b505061274761365c6129bf613677969798620186a0602254049061252a565b9561367260018060801b0394858751169061252a565b61252a565b111590565b9096508187813d83116136ab575b6136948183612463565b81010312610390575094519461274761365c61363d565b503d61368a565b5050505050565b5060019450505050565b612642906136e3856129cd96956136dd6125f79685612942565b90613703565b6001600160a01b039091166000908152601860205260409020549061252a565b918215801561373e575b6126c5576001810180911161253d5761372c926126336129c892612573565b6005810180911161253d57600a900490565b50811561370d565b6001600160a01b031633810361375a575050565b60008181526020906003825260409182822033835281528483832054106137c3578382526003815282822033835281528282205460010161379c575050505050565b6137b793825260038152828220903383525220918254612581565b905538808080806136b2565b60649083519062461bcd60e51b82526004820152601460248201527313585c9ad95d0e881b9bdd08185c1c1c9bdd995960621b6044820152fd5b6001600160801b03918216908216039190821161253d57565b91909160006020604051613829816123f6565b82815201526020810180516001600160801b0390811661386d5761386681865b81613859818a16828951166137fd565b16865216828451166137fd565b1690529190565b61388761387d828551168761252a565b8284511690612553565b94806138a3613899848651168961252a565b8487511690612553565b106138b3575b8161386691613849565b94816138c161386692612f57565b969150506138a9565b604051906138d782612411565b60006040838281528260208201520152565b6001600160801b03918216908216019190821161253d57565b61390a6138ca565b506000602060405161391b816123f6565b828152015260006020604051613930816123f6565b82815201526040519061394282612411565b602454916001600160401b038316815260208101926001600160401b038160401c16845260801c6040820152809261397861357a565b926139816135a0565b92600060018060a01b0360095416600e549460018060801b038751166040519063442c159960e01b8252876004830152602482015260006044820152602081606481865afa8015612abf57600090613d89575b89516139ea92506001600160801b03169061258e565b80613d54575060005b613a086001600160401b038293511642612581565b948515613d2a575050426001600160401b031660208a8101919091528801516001600160801b031615613ce057506020670de0b6b3a7640000613a65856136728c6001600160401b038d60018060801b039051169151169061252a565b895191900496906001600160801b0390613a8490828a169083166138e9565b168952875160405163442c159960e01b815260048101929092526001600160801b031660248201526000604482015291829060649082905afa8015612abf57600090613cac575b8751613ae192506001600160801b03169061258e565b92613b0f846129c8620186a0613af9601a548a61252a565b60208c01516001600160801b031691900461252a565b6040890180519195916001600160801b038088169291613b3290849083166138e9565b16905260208801805190916001600160801b0391613b52919083166138e9565b16905280613c77575060005b602a5490938482811015613bf257613b769083612581565b90670de0b6b3a7640000820291808304670de0b6b3a7640000149015171561253d576129c8613bca613bc4613bb66001600160401b0396613bd496612553565b93613672602e54958061252a565b8361258e565b91848d511661252a565b168089526001600160401b03602d5416809110613bee5750565b8852565b909150602b54808211613c0457505050565b613c0d91612581565b670de0b6b3a7640000810290808204670de0b6b3a7640000149015171561253d576001600160401b03916129c8613c50613bc4613bb6613c5995602c5490612553565b848d511661252a565b81602d5460401c16808211613c6f575b50168852565b905038613c69565b87516001600160801b0316670de0b6b3a764000081810292918084049091149015171561253d57613ca791612553565b613b5e565b506020813d602011613cd8575b81613cc660209383612463565b81010312610b8557613ae19051613acb565b3d9150613cb9565b9697939450509350506001600160401b038151166001600160401b03602f5416809103613d1e575b509392613d136135a0565b926000926000929190565b81526001925038613d08565b975098505050505092505091613d3e61357a565b91613d476135a0565b9160009160009190600090565b88516001600160801b0316670de0b6b3a764000081810292918084049091149015171561253d57613d8491612553565b6139f3565b506020813d602011613db5575b81613da360209383612463565b81010312610b85576139ea90516139d4565b3d9150613d96565b601480546001600160801b031660809290921b6001600160801b031916919091179055565b613ec6602080613e9c613df3613902565b9396959390929015613ec8575050506001600160401b03602f54166000807f33af5ce86e8438eff54589f85332916444457dfa8685493fbd579b809097026b88604051838152a45b805185820151604092830151921b67ffffffffffffffff60401b166001600160401b03919091161760809190911b6001600160801b0319908116919091176024558151601480549092166001600160801b0391821617909155948591610cca565b8051910151821660801b6001600160801b0319166001600160801b03929091169190911617602555565b565b7f33af5ce86e8438eff54589f85332916444457dfa8685493fbd579b809097026b886001600160401b0386511694604051908152a4613e3b565b60405190613f0f826123f6565b60038252623f3f3f60e81b6020830152565b908151811015613f32570160200190565b634e487b7160e01b600052603260045260246000fd5b60ff1660ff811461253d5760010190565b805160408110613fd157508051810190602081818401930312610b85576020810151906001600160401b038211610b85570181603f82011215610b85576020810151613fa481612484565b92613fb26040519485612463565b81845260408284010111610b85576129cd9160406020850191016121f5565b6020929083036140bf576000805b60ff811685811090816140a0575b501561400157613ffc90613f48565b613fdf565b9260ff8094169261401184612484565b9361401f6040519586612463565b80855261402e601f1991612484565b013687860137825b85811687811080614083575b1561407857614073919061406d6001600160f81b03196140628388613f21565b5116871a9188613f21565b53613f48565b614036565b505094505050905090565b506001600160f81b03196140978286613f21565b51161515614042565b6001600160f81b031991506140b59086613f21565b5116151538613fed565b9150506129cd613f0256feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220c633020dadd6beb370b79705991da174e51cf984afd892dc9ee50ab89d89323364736f6c63430008120033"; type SGLBorrowConstructorParams = | [signer?: Signer] diff --git a/src/typechain/tapioca-bar/factories/markets/singularity/SGLCollateral__factory.ts b/src/typechain/tapioca-bar/factories/markets/singularity/SGLCollateral__factory.ts index 8ebc1c2a..54aa5ec0 100644 --- a/src/typechain/tapioca-bar/factories/markets/singularity/SGLCollateral__factory.ts +++ b/src/typechain/tapioca-bar/factories/markets/singularity/SGLCollateral__factory.ts @@ -130,6 +130,25 @@ const _abi = [ name: "InterestElasticityUpdated", type: "event", }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "address", + name: "oldVal", + type: "address", + }, + { + indexed: true, + internalType: "address", + name: "newVal", + type: "address", + }, + ], + name: "LeverageExecutorSet", + type: "event", + }, { anonymous: false, inputs: [ @@ -1176,6 +1195,19 @@ const _abi = [ stateMutability: "view", type: "function", }, + { + inputs: [], + name: "leverageExecutor", + outputs: [ + { + internalType: "contract ILeverageExecutor", + name: "", + type: "address", + }, + ], + stateMutability: "view", + type: "function", + }, { inputs: [], name: "liquidationBonusAmount", @@ -1588,6 +1620,19 @@ const _abi = [ stateMutability: "nonpayable", type: "function", }, + { + inputs: [ + { + internalType: "contract ILeverageExecutor", + name: "_executor", + type: "address", + }, + ], + name: "setLeverageExecutor", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, { inputs: [ { @@ -1918,7 +1963,7 @@ const _abi = [ ] as const; const _bytecode = - "0x6101408060405234620001e5576200001781620001ea565b601381526001602082017f546170696f63612053696e67756c617269747900000000000000000000000000815260206040516200005481620001ea565b8381520192603160f81b845251902091208160e052610100918183524660a0526040519160208301907f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f92838352604085015260608401524660808401523060a084015260a0835260c083019280841060018060401b03851117620001cf5760408490525190206080523060c052610120908152600580546001600160a01b0319163390811790915560007f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a362013880601b5562015f90601c55612710601d55612ee06020557f0bd4060688a1800ae986e4840aebc924bb40b5bf44de4583df2257220b54b77c6026557f7d1dc38e60930664f8cbf495da6556ca091d2f92d6550877750c049864b182306027556161a86028556032602f556139ca928362000207843960805183612b3c015260a05183612c07015260c05183612b06015260e05183612b8b01525182612bb101525181612b680152f35b634e487b7160e01b600052604160045260246000fd5b600080fd5b604081019081106001600160401b03821117620001cf5760405256fe608080604052600436101561001357600080fd5b600090813560e01c908162a02a20146120c45750806302ce728f1461209b57806306fdde0314611fe4578063078dfbe714611ee5578063095ea7b314611ebe5780630c4e84f014611da657806318160ddd14611d855780631c9e379b14611d4c5780631da8bf1014611c7857806323b872dd14611af1578063313ce56714611a5f578063331960ff14611a4157806334d441d014611a235780633644e51514611a0857806337b6b7b9146119ea57806338d52e0f146119c15780633ba0b9a9146119a35780633f741adb1461197e57806340626d8b1461196057806344de240a14611942578063473e3ce71461192457806348e4163e146118eb5780634d7f2a34146118cd5780634e71e0c81461181f578063529898f21461180257806352f353eb146117db57806355140232146117b457806355c2ab941461178a578063579354621461176c5780635dfe04e81461170d5780636c3d8b8f146116e457806370a08231146116ab578063727785471461167357806374645ff3146116485780637dc0d1d01461161f5780637ecebe00146115e65780637fa0b84e146115b4578063821226e8146115965780638285ef40146115645780638c5d0ed3146115465780638da5cb5b1461151d578063910dd7c814611304578063959916dc146112e657806395d89b411461122c57806399a97028146111fc5780639c5d7192146111de5780639e15e89f146111a3578063a9059cbb146110c0578063b0e21e8a146110a2578063b27c0e7414611067578063bb4cfe3b14611049578063cce19f8114610e5d578063ce8849ed14610e34578063d3fb2a38146109a4578063d505accf14610803578063d8dfeb45146107da578063dd62ed3e1461078b578063de40657714610762578063e0996cb614610744578063e30c39781461071b578063e9a49252146103cd578063ea64dd56146103af578063eec0f42e14610391578063f42760b714610373578063f8ba4cff14610357578063f9557ccb146103215763ffe04c661461030157600080fd5b3461031e578060031936011261031e576020602954604051908152f35b80fd5b503461031e578060031936011261031e57602454604080516001600160801b038316815260809290921c602083015290f35b0390f35b503461031e578060031936011261031e5761037061368d565b80f35b503461031e578060031936011261031e576020602a54604051908152f35b503461031e578060031936011261031e576020600c54604051908152f35b503461031e578060031936011261031e576020601f54604051908152f35b503461031e5760a036600319011261031e576103e761210c565b6103ef612122565b906103f861218f565b916064359160843593600260005260206007815261041e60ff6040600020541615612f02565b6001600160a01b039384169461043630871415612f3f565b861561069d575b6104478785612f8a565b861561061c575b5084875260188152604087206104658782546124bb565b905560155461047487826124bb565b601555600c5490888415610596575082866009541692604460405180958193627eeac760e11b835230600484015260248301525afa801561058b578990610557575b6104c092506124ae565b8611610523575b848752602581526040872090602754885252604086206104e88682546124bb565b90551561051e575080600954165b167f9ed03113de523cebfe5e49d5f8e12894b1c0d42ce805990461726444c90eab878480a480f35b6104f6565b6064906040519062461bcd60e51b82526004820152600d60248201526c0a68e987440e8dede40daeac6d609b1b6044820152fd5b508282813d8311610584575b61056d81836123a6565b8101031261057f576104c091516104b6565b600080fd5b503d610563565b6040513d8b823e3d90fd5b9190508560095416803b1561061857604051630208d92960e11b81526001600160a01b038716600482015230602482015260448101929092526064820189905282908290608490829084905af1801561060d576105f5575b50506104c7565b6105fe90612310565b6106095786386105ee565b8680fd5b6040513d84823e3d90fd5b8280fd5b908096508460095416916064600c546040519485938492638eb22cdd60e01b8452600484015260248301528b60448301525afa908115610692578791610665575b50943861044e565b90508581813d831161068b575b61067c81836123a6565b8101031261057f57513861065d565b503d610672565b6040513d89823e3d90fd5b9550836009541681600c54606460405180948193638eb22cdd60e01b835260048301528b60248301528c60448301525afa9081156107105788916106e3575b509561043d565b90508181813d8311610709575b6106fa81836123a6565b8101031261057f5751386106dc565b503d6106f0565b6040513d8a823e3d90fd5b503461031e578060031936011261031e576006546040516001600160a01b039091168152602090f35b503461031e578060031936011261031e576020601d54604051908152f35b503461031e578060031936011261031e576009546040516001600160a01b039091168152602090f35b503461031e57604036600319011261031e576107a561210c565b60406107af612122565b9260018060a01b03809316815260026020522091166000526020526020604060002054604051908152f35b503461031e578060031936011261031e57600b546040516001600160a01b039091168152602090f35b503461031e576108123661219e565b91839193959495421161095f5760018060a01b03928388169485600052600460205260406000209283546000198114610949576108f5956108ed956001830190556040519060208201927f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e2668452600060408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e081526108b18161236f565b5190206108bc612b03565b9060405190602082019261190160f01b845260228301526042820152604281526108e58161238b565b519020612dd8565b919091612cd9565b16036109045761037092612eab565b60405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152606490fd5b634e487b7160e01b600052601160045260246000fd5b60405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b503461031e5761016036600319011261031e576001600160a01b0360043581811690819003610618576024916001600160401b038335818111610e305736602382011215610e30578060040135918211610e305736858383010111610e30576044359383851680950361057f57610a20846005541633146123e2565b80610df2575b508482610c74575b50505081610c34575b505060643580610c1c575b5060843580610c04575b5060a43580610bed575b5060c43580610bc9575b5060e43580610ba5575b506101043580610b74575b506101243580610b01575b50610144359081610a8f578280f35b601e548210610aa25750601f5538808280f35b60849060326040519162461bcd60e51b8352602060048401528201527f4d61726b65743a206c69717569646174696f6e436f6c6c61746572616c697a616044820152711d1a5bdb94985d19481d1bdbc81cdb585b1b60721b6064820152fd5b610b10620186a082111561242d565b601f548111610b2257601e5538610a80565b60405162461bcd60e51b8152602060048201526025818401527f4d61726b65743a20636f6c6c61746572616c697a6174696f6e5261746520746f6044820152646f2062696760d81b6064820152608490fd5b806016547fae6e0ab3b95f0a53ff9660a390ccedcbbf1f2355dce974a9841af106fddcfaba8580a360165538610a75565b610bb3620186a0821061242d565b610bc0601b54821161242d565b601c5538610a6a565b610bd7620186a0821061242d565b610be4601c54821061242d565b601b5538610a60565b610bfb620186a0821061242d565b601d5538610a56565b610c13620186a082111561242d565b601a5538610a4c565b610c2b620186a082111561242d565b60195538610a42565b816008549182167f5a62d22209e370e38eea92cfddcd228e656e6ec139243392a760a7769f5877fd8680a36001600160a01b031916176008553880610a37565b8291610c81601054612251565b601f8111610d81575b508790601f8411600114610cef578893610ce2575b5050508160011b916000199060031b1c1916176010555b7fa6f004921c944d4b8bf6e38462b00f36a58d62495d56b51f571ab78f732c98158480a1388084610a2e565b0101359050843880610c9f565b60108952601f19841694507f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae67292509087908960205b878210610d625750508460019610610d46575b50505050811b01601055610cb6565b60001960f88660031b161c199201013516905538808681610d37565b8285019093013585556001949094019389929182019190810190610d24565b6010895290925090507f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae672601f840160051c810160208510610deb575b91849391601f8994920160051c01905b818110610dda5750610c8a565b898155859450889350600101610dcd565b5080610dbd565b600f80546001600160a01b0319169190911790557f0b2d6eb667d0522c3eb86e4288afecae6c11591ffd1345d4d12407e0598bca9b8680a138610a26565b8580fd5b503461031e578060031936011261031e576008546040516001600160a01b039091168152602090f35b503461031e57610e6c366121ed565b9092916003835260209160078352610e8b60ff60408620541615612f02565b610e93612766565b5050610e9d61368d565b610ea78183612f8a565b6001600160a01b0385811695909190610ec230881415612f3f565b828416928387526018865260408720610edc8482546124ae565b9055610eea836015546124ae565b6015556009541690600c5490823b1561104557604051630208d92960e11b81523060048201526001600160a01b039190911660248201526044810191909152606481018390529086908290608490829084905af1801561103a57611023575b50808596837f8ad4d3ff00da092c7ad9a573ea4f5f6a3dffc6712dc06d3f78f49b862297c40288610fbb9899a4818652602585526040862060275490818852865260408720548211600014610ffc57505084526025835260408420602754855283528360408120555b6011549061308e565b15610fc4575080f35b6064906040519062461bcd60e51b82526004820152601160248201527013585c9ad95d0e881a5b9cdbdb1d995b9d607a1b6044820152fd5b909186526025855260408620908652845261101c604086209182546124ae565b9055610fb2565b610fbb94956110328392612310565b959450610f49565b6040513d88823e3d90fd5b8780fd5b503461031e578060031936011261031e576020601e54604051908152f35b503461031e578060031936011261031e576060602354604051906001600160401b0380821683528160401c16602083015260801c6040820152f35b503461031e578060031936011261031e576020601a54604051908152f35b503461031e57604036600319011261031e576110da61210c565b60243580928115801590611191575b611121575b50506040519182526001600160a01b031690339060008051602061397583398151915290602090a3602060405160018152f35b3381526001602052604081205461113a83821015612c2d565b6001600160a01b0384169033829003611155575b50506110ee565b60409361116c91611167841515612c72565b6124ae565b3383526001602052838320558152206111868382546124bb565b90558138808061114e565b50336001600160a01b038416146110e9565b503461031e57604036600319011261031e5760606111cb6111c261210c565b602435906125fa565b9060405192835260208301526040820152f35b503461031e578060031936011261031e576020602b54604051908152f35b503461031e57604036600319011261031e57602061122461121b61210c565b602435906129d1565b604051908152f35b503461031e578060031936011261031e57808060018060a01b03600b541660405160208101906395d89b4160e01b82526004815261126981612339565b51915afa611275613779565b9150156112d55761128861035391613800565b6112c16023604051809362746d2d60e81b60208301526112b18151809260208686019101612138565b81010360038101845201826123a6565b60405191829160208352602083019061215b565b506103536112e16137a9565b611288565b503461031e578060031936011261031e576020602f54604051908152f35b503461031e57604036600319011261031e576004356001600160401b038111611519573660238201121561151957806004013582611341826123c7565b9261134f60405194856123a6565b82845260208401923660248284010111610618578060246020930185378401015260243561ffff81168103611515576101009182848051810103126115115761139790612759565b6113a360408501612cb7565b916113b060608601612cb7565b9460808101519460a0820151926113c960c08401612ccb565b9160e08401519301519380421161095f5785156114ea577f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e266915b6001600160a01b0388168b52600460205260408b208054919060001983146114d6579161ffff611493989694926108ed98969460018401905560405194602086015216604084015260018060a01b038a16606084015260018060a01b038c1660808401528a60a084015260c083015260e082015260e081526114848161236f565b602081519101206108bc612b03565b6001600160a01b0383811691160361090457156114c057610370926001600160a01b039081169116612eab565b610370926001600160a01b039081169116612e5d565b634e487b7160e01b8d52601160045260248dfd5b7f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d691611403565b8480fd5b8380fd5b5080fd5b503461031e578060031936011261031e576005546040516001600160a01b039091168152602090f35b503461031e578060031936011261031e576020601b54604051908152f35b503461031e578060031936011261031e57601454604080516001600160801b038316815260809290921c602083015290f35b503461031e578060031936011261031e576020602d54604051908152f35b503461031e57604036600319011261031e576115db6115d161210c565b6024359033612e5d565b602060405160018152f35b503461031e57602036600319011261031e576020906040906001600160a01b0361160e61210c565b168152600483522054604051908152f35b503461031e578060031936011261031e57600f546040516001600160a01b039091168152602090f35b503461031e578060031936011261031e576103536040516112c18161166c8161228b565b03826123a6565b503461031e57602036600319011261031e5760043590600982101561031e57602060ff61169f84612222565b54166040519015158152f35b503461031e57602036600319011261031e576020906040906001600160a01b036116d361210c565b168152600183522054604051908152f35b503461031e578060031936011261031e57600a546040516001600160a01b039091168152602090f35b503461031e578060031936011261031e57611726613190565b5060806117316131c8565b509350505050604051916001600160401b0380825116845260208201511660208401526040600180861b039101511660408301526060820152f35b503461031e578060031936011261031e576020601c54604051908152f35b503461031e578060031936011261031e5760206001600160401b03602c5460401c16604051908152f35b503461031e578060031936011261031e5760206001600160401b03602c5416604051908152f35b503461031e578060031936011261031e5760206001600160401b03602e5416604051908152f35b503461031e578060031936011261031e5760208054604051908152f35b503461031e578060031936011261031e576006546001600160a01b03908181163381900361188957806005549384167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08680a36001600160a01b0319928316176005551660065580f35b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b503461031e578060031936011261031e576020602854604051908152f35b503461031e57602036600319011261031e576020906040906001600160a01b0361191361210c565b168152601783522054604051908152f35b503461031e578060031936011261031e576020601554604051908152f35b503461031e578060031936011261031e576020600e54604051908152f35b503461031e578060031936011261031e576020601654604051908152f35b503461031e57606036600319011261031e5760206112246044356024356004356124e1565b503461031e578060031936011261031e576020601154604051908152f35b503461031e578060031936011261031e57600d546040516001600160a01b039091168152602090f35b503461031e578060031936011261031e576020601254604051908152f35b503461031e578060031936011261031e576020611224612b03565b503461031e578060031936011261031e576020601954604051908152f35b503461031e578060031936011261031e576020601354604051908152f35b503461031e578060031936011261031e57808060018060a01b03600d5416604051602081019063313ce56760e01b825260048152611a9c81612339565b51915afa90611aa9613779565b9180611ae6575b15611adb5760208280518101031261031e5750611ad06020809201612ccb565b60ff60405191168152f35b505060206012611ad0565b506020825114611ab0565b503461031e57611b00366121ed565b919282611b3c575b506040519182526001600160a01b0390811692169060008051602061397583398151915290602090a3602060405160018152f35b6001600160a01b03848116808352600160209081526040842054928690611b6582861015612c2d565b861693848403611b7a575b5050505050611b08565b838652600283526040808720338852845286205460018101611be4575b5092600160209693611bc287946040976111676000805160206139758339815191529c9a1515612c72565b9285525283832055815220611bd88582546124bb565b90559138808581611b70565b90918110611c385792600160209693611bc28a6000805160206139758339815191529a9895611c158260409a6124ae565b86895260028552898920338a528552898920559497509497995050939650611b97565b60405162461bcd60e51b815260048101849052601860248201527745524332303a20616c6c6f77616e636520746f6f206c6f7760401b6044820152606490fd5b503461031e57611c873661219e565b9083959495421161095f576001600160a01b03878116808a52600460205260408a2080549196929592906000198314611d385782611d299694928d9260016108ed98960190556040519160208301937f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d6855260408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e081526108b18161236f565b16036109045761037092612e5d565b634e487b7160e01b8c52601160045260248cfd5b503461031e57602036600319011261031e576020906040906001600160a01b03611d7461210c565b168152601883522054604051908152f35b503461031e578060031936011261031e57602060245460801c604051908152f35b503461031e57604036600319011261031e57600435600981101561151957611dcc612180565b6008549091906001600160a01b03163303611e825760ff611dec82612222565b54161515911515918214611e4857808260ff611e0a611e3894612222565b54161515827feeec81de25875ce1725479bb76f720a8defdb43dea041919ae37bb4aae9847c08780a4612222565b9060ff8019835416911617905580f35b60405162461bcd60e51b81526020600482015260126024820152714d61726b65743a2073616d6520737461746560701b6044820152606490fd5b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881d5b985d5d1a1bdc9a5e995960621b6044820152606490fd5b503461031e57604036600319011261031e576115db611edb61210c565b6024359033612eab565b503461031e57606036600319011261031e57611eff61210c565b611f07612180565b611f0f61218f565b9060018060a01b03928391611f29836005541633146123e2565b15611fcd571690811590811591611fc5575b5015611f8857806005549283167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08580a36001600160a01b03199182161760055560068054909116905580f35b60405162461bcd60e51b81526020600482015260156024820152744f776e61626c653a207a65726f206164647265737360581b6044820152606490fd5b905038611f3b565b9150501660018060a01b0319600654161760065580f35b503461031e578060031936011261031e57808060018060a01b03600b541660405160208101906306fdde0360e01b82526004815261202181612339565b51915afa61202d613779565b91501561208a5761204061035391613800565b6112c16034604051809373546170696f63612053696e67756c61726974792d60601b602083015261207a8151809260208686019101612138565b81010360148101845201826123a6565b506103536120966137a9565b612040565b503461031e578060031936011261031e5760406120b6612766565b825191151582526020820152f35b9050346115195760403660031901126115195760406020926120e461210c565b6120ec612122565b6001600160a01b0391821683526003865283832091168252845220548152f35b600435906001600160a01b038216820361057f57565b602435906001600160a01b038216820361057f57565b60005b83811061214b5750506000910152565b818101518382015260200161213b565b9060209161217481518092818552858086019101612138565b601f01601f1916010190565b60243590811515820361057f57565b60443590811515820361057f57565b60e090600319011261057f576001600160a01b0390600435828116810361057f5791602435908116810361057f5790604435906064359060843560ff8116810361057f579060a4359060c43590565b606090600319011261057f576001600160a01b0390600435828116810361057f5791602435908116810361057f579060443590565b600981101561223b576000526007602052604060002090565b634e487b7160e01b600052602160045260246000fd5b90600182811c92168015612281575b602083101461226b57565b634e487b7160e01b600052602260045260246000fd5b91607f1691612260565b6010546000929161229b82612251565b9081815260019283811690816000146122f557506001146122bb57505050565b9092935060106000526020928360002092846000945b8386106122e15750505050010190565b8054858701830152940193859082016122d1565b91935050602093945060ff191683830152151560051b010190565b6001600160401b03811161232357604052565b634e487b7160e01b600052604160045260246000fd5b604081019081106001600160401b0382111761232357604052565b606081019081106001600160401b0382111761232357604052565b61010081019081106001600160401b0382111761232357604052565b608081019081106001600160401b0382111761232357604052565b90601f801991011681019081106001600160401b0382111761232357604052565b6001600160401b03811161232357601f01601f191660200190565b156123e957565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b1561243457565b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881b9bdd081d985b1a59607a1b6044820152606490fd5b8181029291811591840414171561094957565b811561248a570490565b634e487b7160e01b600052601260045260246000fd5b604d811161094957600a0a90565b9190820391821161094957565b9190820180921161094957565b8181039291600013801582851316918412161761094957565b60145491929161252a9161251b9161251191612507906001600160801b0383169061246d565b9060801c90612480565b93601f549061246d565b612524836124a0565b90612480565b8083106125f25761253e61257a91846124ae565b9161257561256f612566601e54612560612557866124a0565b602054906124bb565b9061246d565b612524846124a0565b916124a0565b6124c8565b6509184e72a0009081810291818305149015171561094957670de0b6b3a76400009182810292818405149015171561094957801561248a57600160ff1b9180831460001983141661094957059060008212156125eb57811461094957600003905b8082116125e6575090565b905090565b50906125db565b505050600090565b9160018060a01b03809316916000938385526020601781526040918287205490811561274c578783855161262d81612339565b828152015261263a6131c8565b505050505091905061264d8615156128ce565b6009541683600c54898b52601882526064878c2054918851948593849263442c159960e01b8452600484015260248301528d60448301525afa90811561274257899161270f575b50916126ef61270397989994926126ca886126c56126bc601898620186a0602154049061246d565b601e549061246d565b612480565b815190936001600160801b039186916126e59184169061246d565b9201511690612480565b81811061270757035b97835252205461291a565b9091565b5050826126f8565b90508381813d831161273b575b61272681836123a6565b8101031261273757516126ef612694565b8880fd5b503d61271c565b85513d8b823e3d90fd5b5086955085949350505050565b5190811515820361057f57565b600f546040805163d6d7d52560e01b8152602060048201529290916001600160a01b03168284806127996024820161228b565b0381600080955af180156128c25781948291612886575b509284156128295783156127ef57507f9f9192b5edb17356c524e08d9e025c8e2f6307e6ea52fb7968faa3081f51c3c883918260115580a25b42601355565b5162461bcd60e51b81526020600482015260146024820152734d61726b65743a20696e76616c6964207261746560601b6044820152606490fd5b9192505061283c601354601254906124bb565b421161284c5750601154906127e9565b5162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881c985d19481d1bdbc81bdb1960621b6044820152606490fd5b809550848092503d83116128bb575b61289f81836123a6565b8101031261031e5760206128b285612759565b940151386127b0565b503d612895565b508251903d90823e3d90fd5b156128d557565b60405162461bcd60e51b815260206004820152601e60248201527f4d61726b65743a2065786368616e676552617465206e6f742076616c696400006044820152606490fd5b6129258215156128ce565b602060018060a01b0360095416916064600c54604051948593849263442c159960e01b845260048401526024830152600060448301525afa9081156129c557600091612992575b50906126c561297e926021549061246d565b620186a061298e601e548361246d565b0491565b906020823d82116129bd575b816129ab602093836123a6565b8101031261031e5750516126c561296c565b3d915061299e565b6040513d6000823e3d90fd5b6001600160a01b031660008181526018602052604081205490926129f49161291a565b918352601760205260408320548015612afd578115612afd57818110612afd5782811015612af357601454612a3d91839161116791612507906001600160801b0383169061246d565b90620186a09283830292808404851490151715612adf57612a629291612524916124ae565b91601b5491601c5493612a7585856124c8565b80820291848212600160ff1b821416612adf578183051490151715612acb5705818482019485129112908015821691151617612ab757508082126125e6575090565b634e487b7160e01b81526011600452602490fd5b634e487b7160e01b83526011600452602483fd5b634e487b7160e01b85526011600452602485fd5b50505050601b5490565b50505090565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03161480612c04575b15612b5e577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f000000000000000000000000000000000000000000000000000000000000000082527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a0815260c081018181106001600160401b038211176123235760405251902090565b507f00000000000000000000000000000000000000000000000000000000000000004614612b35565b15612c3457565b60405162461bcd60e51b815260206004820152601660248201527545524332303a2062616c616e636520746f6f206c6f7760501b6044820152606490fd5b15612c7957565b60405162461bcd60e51b815260206004820152601660248201527545524332303a206e6f207a65726f206164647265737360501b6044820152606490fd5b51906001600160a01b038216820361057f57565b519060ff8216820361057f57565b600581101561223b5780612cea5750565b60018103612d325760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b6044820152606490fd5b60028103612d7f5760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606490fd5b600314612d8857565b60405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608490fd5b9291906fa2a8918ca85bafe22016d0b997e4df60600160ff1b038311612e515791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa15612e445781516001600160a01b03811615612e3e579190565b50600190565b50604051903d90823e3d90fd5b50505050600090600390565b7fe50de2333c10a9502fcb1d8ae13a51bbf423153dfc63c2b8997665b32154afc360018060a01b038092169160009083825260036020526040822094169384825260205284604082205580a4565b909160207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259160018060a01b03809416938460005260028352604060002095169485600052825280604060002055604051908152a3565b15612f0957565b60405162461bcd60e51b815260206004820152600e60248201526d13585c9ad95d0e881c185d5cd95960921b6044820152606490fd5b15612f4657565b606460405162461bcd60e51b815260206004820152602060248201527f4d61726b65743a2063616e6e6f742065786563757465206f6e20697473656c666044820152fd5b6001600160a01b0316338103612f9e575050565b60008181526020906003825260409182822033835281528483832054106130085783825260038152828220338352815282822054600101612fe1575b5050505050565b612ffc938252600381528282209033835252209182546124ae565b90553880808080612fda565b60649083519062461bcd60e51b82526004820152601460248201527313585c9ad95d0e881b9bdd08185c1c1c9bdd995960621b6044820152fd5b6040519061304f82612339565b6014546001600160801b038116835260801c6020830152565b6040519061307582612339565b6024546001600160801b038116835260801c6020830152565b919060018060a01b03806000941684526020601781526040852054908115613186576018815260408620548015612fda57816130c8613042565b9460095416916064600c54604051948593849263442c159960e01b8452600484015260248301528b60448301525afa96871561317a578097613144575b50506126e56131246126bc61313f969798620186a0602154049061246d565b9561313a60018060801b0394858751169061246d565b61246d565b111590565b9096508187813d8311613173575b61315c81836123a6565b8101031261031e57509451946126e5613124613105565b503d613152565b604051903d90823e3d90fd5b5060019450505050565b6040519061319d82612354565b60006040838281528260208201520152565b6001600160801b03918216908216019190821161094957565b6131d0613190565b50600060206040516131e181612339565b8281520152600060206040516131f681612339565b828152015260405161320781612354565b6023546001600160401b03811682526001600160401b038160401c16602083015260801c6040820152809161323a613042565b91613243613068565b600954600e54825160405163442c159960e01b8152600481018390526001600160801b03909116602482015260006044820181905293959194919391926001600160a01b031690602081606481855afa80156129c557600090613659575b88516132b792506001600160801b0316906124bb565b80613624575060005b806132d86001600160401b03602087015116426124ae565b9485156135fa575050426001600160401b031660208a8101919091528801516001600160801b0316156135b057506020670de0b6b3a76400006133358561313a8c6001600160401b038d60018060801b039051169151169061246d565b895191900496906001600160801b039061335490828a169083166131af565b168952875160405163442c159960e01b815260048101929092526001600160801b031660248201526000604482015291829060649082905afa80156129c55760009061357c575b87516133b192506001600160801b0316906124bb565b926133df846126c5620186a06133c9601a548a61246d565b60208c01516001600160801b031691900461246d565b6040890180519195916001600160801b03808816929161340290849083166131af565b16905260208801805190916001600160801b0391613422919083166131af565b16905280613547575060005b602954909384828110156134c25761344690836124ae565b90670de0b6b3a7640000820291808304670de0b6b3a76400001490151715610949576126c561349a6134946134866001600160401b03966134a496612480565b9361313a602d54958061246d565b836124bb565b91848d511661246d565b168089526001600160401b03602c54168091106134be5750565b8852565b909150602a548082116134d457505050565b6134dd916124ae565b670de0b6b3a7640000810290808204670de0b6b3a76400001490151715610949576001600160401b03916126c561352061349461348661352995602b5490612480565b848d511661246d565b81602c5460401c1680821161353f575b50168852565b905038613539565b87516001600160801b0316670de0b6b3a76400008181029291808404909114901517156109495761357791612480565b61342e565b506020813d6020116135a8575b81613596602093836123a6565b8101031261057f576133b1905161339b565b3d9150613589565b9697939450509350506001600160401b038151166001600160401b03602e54168091036135ee575b5093926135e3613068565b926000926000929190565b815260019250386135d8565b97509850505050509250509161360e613042565b91613617613068565b9160009160009190600090565b87516001600160801b0316670de0b6b3a76400008181029291808404909114901517156109495761365491612480565b6132c0565b506020813d602011613685575b81613673602093836123a6565b8101031261057f576132b790516132a1565b3d9150613666565b602060406136996131c8565b9397959390929015613740575050506001600160401b03602e54166000807f33af5ce86e8438eff54589f85332916444457dfa8685493fbd579b809097026b868851838152a45b6001600160401b03815116838201519160018060801b0319958691015160801b16916001600160401b0360401b9060401b16171760235560018060801b039083838383511692015160801b161760145583511692015160801b1617602455565b7f33af5ce86e8438eff54589f85332916444457dfa8685493fbd579b809097026b866001600160401b03865116948951908152a46136e0565b3d156137a4573d9061378a826123c7565b9161379860405193846123a6565b82523d6000602084013e565b606090565b604051906137b682612339565b60038252623f3f3f60e81b6020830152565b9081518110156137d9570160200190565b634e487b7160e01b600052603260045260246000fd5b60ff1660ff81146109495760010190565b80516040811061387b5750805181019060208181840193031261057f576020810151906001600160401b03821161057f570181603f8201121561057f57602081015161384b816123c7565b9261385960405194856123a6565b8184526040828401011161057f57613878916040602085019101612138565b90565b602092908303613969576000805b60ff8116858110908161394a575b50156138ab576138a6906137ef565b613889565b9260ff809416926138bb846123c7565b936138c960405195866123a6565b8085526138d8601f19916123c7565b013687860137825b8581168781108061392d575b156139225761391d91906139176001600160f81b031961390c83886137c8565b5116871a91886137c8565b536137ef565b6138e0565b505094505050905090565b506001600160f81b031961394182866137c8565b511615156138ec565b6001600160f81b0319915061395f90866137c8565b5116151538613897565b9150506138786137a956feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220b1bf97fefb2a28e789adf6d8f76790365fe56f5052cdc53826c08fce9eb6784664736f6c63430008120033"; + "0x6101408060405234620001e5576200001781620001ea565b601381526001602082017f546170696f63612053696e67756c617269747900000000000000000000000000815260206040516200005481620001ea565b8381520192603160f81b845251902091208160e052610100918183524660a0526040519160208301907f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f92838352604085015260608401524660808401523060a084015260a0835260c083019280841060018060401b03851117620001cf5760408490525190206080523060c052610120908152600580546001600160a01b0319163390811790915560007f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a362013880601b5562015f90601c55612710601d55612ee06020557f0bd4060688a1800ae986e4840aebc924bb40b5bf44de4583df2257220b54b77c6027557f7d1dc38e60930664f8cbf495da6556ca091d2f92d6550877750c049864b182306028556161a86029556032603055613a72928362000207843960805183612bee015260a05183612cb9015260c05183612bb8015260e05183612c3d01525182612c6301525181612c1a0152f35b634e487b7160e01b600052604160045260246000fd5b600080fd5b604081019081106001600160401b03821117620001cf5760405256fe608080604052600436101561001357600080fd5b600090813560e01c908162a02a20146121765750806302ce728f1461214d57806306fdde0314612096578063078dfbe714611f97578063095ea7b314611f705780630c4e84f014611e5857806318160ddd14611e375780631c9e379b14611dfe5780631da8bf1014611d2a57806323b872dd14611ba3578063313ce56714611b11578063331960ff14611af357806334d441d014611ad55780633644e51514611aba57806337b6b7b914611a9c57806338d52e0f14611a735780633ba0b9a914611a555780633f741adb14611a3057806340626d8b14611a1257806344de240a146119f4578063473e3ce7146119d657806348e4163e1461199d5780634d7f2a341461197f5780634e71e0c8146118d1578063529898f2146118b457806352f353eb1461188d578063551402321461186657806355c2ab941461183c578063579354621461181e5780635dfe04e8146117bf5780636c3d8b8f1461179657806370a082311461175d578063727785471461172557806374645ff3146116fa5780637dc0d1d0146116d15780637ecebe00146116985780637fa0b84e14611666578063821226e8146116485780638285ef40146116165780638c5d0ed3146115f85780638da5cb5b146115cf578063910dd7c8146113b6578063959916dc1461139857806395d89b41146112de57806399a97028146112ae5780639c5d7192146112905780639e15e89f14611255578063a9059cbb14611172578063b0e21e8a14611154578063b27c0e7414611119578063bb4cfe3b146110fb578063cce19f8114610f0f578063ce8849ed14610ee6578063d3fb2a3814610a56578063d505accf146108b5578063d8dfeb451461088c578063da863f0e14610863578063dd62ed3e14610814578063de406577146107eb578063e0996cb6146107cd578063e30c3978146107a4578063e9a492521461045a578063ea64dd561461043c578063eec0f42e1461041e578063ef2b234a146103a7578063f42760b714610389578063f8ba4cff1461036d578063f9557ccb146103375763ffe04c661461031757600080fd5b346103345780600319360112610334576020602a54604051908152f35b80fd5b5034610334578060031936011261033457602554604080516001600160801b038316815260809290921c602083015290f35b0390f35b5034610334578060031936011261033457610386613735565b80f35b50346103345780600319360112610334576020602b54604051908152f35b5034610334576020366003190112610334576004356001600160a01b038181169182900361041a576103de81600554163314612494565b816021549182167ffb4fd7114609dd603b57adbc2082205bfbbcabf9265c4b437b472f5c592b8cd78580a36001600160a01b0319161760215580f35b8280fd5b50346103345780600319360112610334576020600c54604051908152f35b50346103345780600319360112610334576020601f54604051908152f35b50346103345760a0366003190112610334576104746121be565b61047c6121d4565b90610485612241565b91606435916084359360026000526020600781526104ab60ff6040600020541615612fb4565b6001600160a01b03938416946104c330871415612ff1565b8615610726575b6104d4878561303c565b86156106a5575b5084875260188152604087206104f287825461256d565b9055601554610501878261256d565b601555600c5490888415610623575082866009541692604460405180958193627eeac760e11b835230600484015260248301525afa80156106185789906105e4575b61054d9250612560565b86116105b0575b8487526026815260408720906028548852526040862061057586825461256d565b9055156105ab575080600954165b167f9ed03113de523cebfe5e49d5f8e12894b1c0d42ce805990461726444c90eab878480a480f35b610583565b6064906040519062461bcd60e51b82526004820152600d60248201526c0a68e987440e8dede40daeac6d609b1b6044820152fd5b508282813d8311610611575b6105fa8183612458565b8101031261060c5761054d9151610543565b600080fd5b503d6105f0565b6040513d8b823e3d90fd5b9190508560095416803b1561041a57604051630208d92960e11b81526001600160a01b038716600482015230602482015260448101929092526064820189905282908290608490829084905af1801561069a57610682575b5050610554565b61068b906123c2565b61069657863861067b565b8680fd5b6040513d84823e3d90fd5b908096508460095416916064600c546040519485938492638eb22cdd60e01b8452600484015260248301528b60448301525afa90811561071b5787916106ee575b5094386104db565b90508581813d8311610714575b6107058183612458565b8101031261060c5751386106e6565b503d6106fb565b6040513d89823e3d90fd5b9550836009541681600c54606460405180948193638eb22cdd60e01b835260048301528b60248301528c60448301525afa90811561079957889161076c575b50956104ca565b90508181813d8311610792575b6107838183612458565b8101031261060c575138610765565b503d610779565b6040513d8a823e3d90fd5b50346103345780600319360112610334576006546040516001600160a01b039091168152602090f35b50346103345780600319360112610334576020601d54604051908152f35b50346103345780600319360112610334576009546040516001600160a01b039091168152602090f35b50346103345760403660031901126103345761082e6121be565b60406108386121d4565b9260018060a01b03809316815260026020522091166000526020526020604060002054604051908152f35b50346103345780600319360112610334576021546040516001600160a01b039091168152602090f35b5034610334578060031936011261033457600b546040516001600160a01b039091168152602090f35b5034610334576108c436612250565b918391939594954211610a115760018060a01b039283881694856000526004602052604060002092835460001981146109fb576109a79561099f956001830190556040519060208201927f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e2668452600060408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e0815261096381612421565b51902061096e612bb5565b9060405190602082019261190160f01b845260228301526042820152604281526109978161243d565b519020612e8a565b919091612d8b565b16036109b65761038692612f5d565b60405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152606490fd5b634e487b7160e01b600052601160045260246000fd5b60405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b503461033457610160366003190112610334576001600160a01b036004358181169081900361041a576024916001600160401b038335818111610ee25736602382011215610ee2578060040135918211610ee25736858383010111610ee2576044359383851680950361060c57610ad284600554163314612494565b80610ea4575b508482610d26575b50505081610ce6575b505060643580610cce575b5060843580610cb6575b5060a43580610c9f575b5060c43580610c7b575b5060e43580610c57575b506101043580610c26575b506101243580610bb3575b50610144359081610b41578280f35b601e548210610b545750601f5538808280f35b60849060326040519162461bcd60e51b8352602060048401528201527f4d61726b65743a206c69717569646174696f6e436f6c6c61746572616c697a616044820152711d1a5bdb94985d19481d1bdbc81cdb585b1b60721b6064820152fd5b610bc2620186a08211156124df565b601f548111610bd457601e5538610b32565b60405162461bcd60e51b8152602060048201526025818401527f4d61726b65743a20636f6c6c61746572616c697a6174696f6e5261746520746f6044820152646f2062696760d81b6064820152608490fd5b806016547fae6e0ab3b95f0a53ff9660a390ccedcbbf1f2355dce974a9841af106fddcfaba8580a360165538610b27565b610c65620186a082106124df565b610c72601b5482116124df565b601c5538610b1c565b610c89620186a082106124df565b610c96601c5482106124df565b601b5538610b12565b610cad620186a082106124df565b601d5538610b08565b610cc5620186a08211156124df565b601a5538610afe565b610cdd620186a08211156124df565b60195538610af4565b816008549182167f5a62d22209e370e38eea92cfddcd228e656e6ec139243392a760a7769f5877fd8680a36001600160a01b031916176008553880610ae9565b8291610d33601054612303565b601f8111610e33575b508790601f8411600114610da1578893610d94575b5050508160011b916000199060031b1c1916176010555b7fa6f004921c944d4b8bf6e38462b00f36a58d62495d56b51f571ab78f732c98158480a1388084610ae0565b0101359050843880610d51565b60108952601f19841694507f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae67292509087908960205b878210610e145750508460019610610df8575b50505050811b01601055610d68565b60001960f88660031b161c199201013516905538808681610de9565b8285019093013585556001949094019389929182019190810190610dd6565b6010895290925090507f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae672601f840160051c810160208510610e9d575b91849391601f8994920160051c01905b818110610e8c5750610d3c565b898155859450889350600101610e7f565b5080610e6f565b600f80546001600160a01b0319169190911790557f0b2d6eb667d0522c3eb86e4288afecae6c11591ffd1345d4d12407e0598bca9b8680a138610ad8565b8580fd5b50346103345780600319360112610334576008546040516001600160a01b039091168152602090f35b503461033457610f1e3661229f565b9092916003835260209160078352610f3d60ff60408620541615612fb4565b610f45612818565b5050610f4f613735565b610f59818361303c565b6001600160a01b0385811695909190610f7430881415612ff1565b828416928387526018865260408720610f8e848254612560565b9055610f9c83601554612560565b6015556009541690600c5490823b156110f757604051630208d92960e11b81523060048201526001600160a01b039190911660248201526044810191909152606481018390529086908290608490829084905af180156110ec576110d5575b50808596837f8ad4d3ff00da092c7ad9a573ea4f5f6a3dffc6712dc06d3f78f49b862297c4028861106d9899a48186526026855260408620602854908188528652604087205482116000146110ae57505084526026835260408420602854855283528360408120555b60115490613140565b15611076575080f35b6064906040519062461bcd60e51b82526004820152601160248201527013585c9ad95d0e881a5b9cdbdb1d995b9d607a1b6044820152fd5b90918652602685526040862090865284526110ce60408620918254612560565b9055611064565b61106d94956110e483926123c2565b959450610ffb565b6040513d88823e3d90fd5b8780fd5b50346103345780600319360112610334576020601e54604051908152f35b50346103345780600319360112610334576060602454604051906001600160401b0380821683528160401c16602083015260801c6040820152f35b50346103345780600319360112610334576020601a54604051908152f35b50346103345760403660031901126103345761118c6121be565b60243580928115801590611243575b6111d3575b50506040519182526001600160a01b0316903390600080516020613a1d83398151915290602090a3602060405160018152f35b338152600160205260408120546111ec83821015612cdf565b6001600160a01b0384169033829003611207575b50506111a0565b60409361121e91611219841515612d24565b612560565b33835260016020528383205581522061123883825461256d565b905581388080611200565b50336001600160a01b0384161461119b565b503461033457604036600319011261033457606061127d6112746121be565b602435906126ac565b9060405192835260208301526040820152f35b50346103345780600319360112610334576020602c54604051908152f35b50346103345760403660031901126103345760206112d66112cd6121be565b60243590612a83565b604051908152f35b5034610334578060031936011261033457808060018060a01b03600b541660405160208101906395d89b4160e01b82526004815261131b816123eb565b51915afa611327613821565b9150156113875761133a610369916138a8565b6113736023604051809362746d2d60e81b602083015261136381518092602086860191016121ea565b8101036003810184520182612458565b60405191829160208352602083019061220d565b50610369611393613851565b61133a565b50346103345780600319360112610334576020603054604051908152f35b5034610334576040366003190112610334576004356001600160401b0381116115cb57366023820112156115cb578060040135826113f382612479565b926114016040519485612458565b8284526020840192366024828401011161041a578060246020930185378401015260243561ffff811681036115c7576101009182848051810103126115c3576114499061280b565b61145560408501612d69565b9161146260608601612d69565b9460808101519460a08201519261147b60c08401612d7d565b9160e084015193015193804211610a1157851561159c577f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e266915b6001600160a01b0388168b52600460205260408b20805491906000198314611588579161ffff6115459896949261099f98969460018401905560405194602086015216604084015260018060a01b038a16606084015260018060a01b038c1660808401528a60a084015260c083015260e082015260e0815261153681612421565b6020815191012061096e612bb5565b6001600160a01b038381169116036109b6571561157257610386926001600160a01b039081169116612f5d565b610386926001600160a01b039081169116612f0f565b634e487b7160e01b8d52601160045260248dfd5b7f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d6916114b5565b8480fd5b8380fd5b5080fd5b50346103345780600319360112610334576005546040516001600160a01b039091168152602090f35b50346103345780600319360112610334576020601b54604051908152f35b5034610334578060031936011261033457601454604080516001600160801b038316815260809290921c602083015290f35b50346103345780600319360112610334576020602e54604051908152f35b50346103345760403660031901126103345761168d6116836121be565b6024359033612f0f565b602060405160018152f35b5034610334576020366003190112610334576020906040906001600160a01b036116c06121be565b168152600483522054604051908152f35b5034610334578060031936011261033457600f546040516001600160a01b039091168152602090f35b50346103345780600319360112610334576103696040516113738161171e8161233d565b0382612458565b50346103345760203660031901126103345760043590600982101561033457602060ff611751846122d4565b54166040519015158152f35b5034610334576020366003190112610334576020906040906001600160a01b036117856121be565b168152600183522054604051908152f35b5034610334578060031936011261033457600a546040516001600160a01b039091168152602090f35b50346103345780600319360112610334576117d8613242565b5060806117e361327a565b509350505050604051916001600160401b0380825116845260208201511660208401526040600180861b039101511660408301526060820152f35b50346103345780600319360112610334576020601c54604051908152f35b503461033457806003193601126103345760206001600160401b03602d5460401c16604051908152f35b503461033457806003193601126103345760206001600160401b03602d5416604051908152f35b503461033457806003193601126103345760206001600160401b03602f5416604051908152f35b503461033457806003193601126103345760208054604051908152f35b50346103345780600319360112610334576006546001600160a01b03908181163381900361193b57806005549384167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08680a36001600160a01b0319928316176005551660065580f35b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b50346103345780600319360112610334576020602954604051908152f35b5034610334576020366003190112610334576020906040906001600160a01b036119c56121be565b168152601783522054604051908152f35b50346103345780600319360112610334576020601554604051908152f35b50346103345780600319360112610334576020600e54604051908152f35b50346103345780600319360112610334576020601654604051908152f35b50346103345760603660031901126103345760206112d6604435602435600435612593565b50346103345780600319360112610334576020601154604051908152f35b5034610334578060031936011261033457600d546040516001600160a01b039091168152602090f35b50346103345780600319360112610334576020601254604051908152f35b503461033457806003193601126103345760206112d6612bb5565b50346103345780600319360112610334576020601954604051908152f35b50346103345780600319360112610334576020601354604051908152f35b5034610334578060031936011261033457808060018060a01b03600d5416604051602081019063313ce56760e01b825260048152611b4e816123eb565b51915afa90611b5b613821565b9180611b98575b15611b8d576020828051810103126103345750611b826020809201612d7d565b60ff60405191168152f35b505060206012611b82565b506020825114611b62565b503461033457611bb23661229f565b919282611bee575b506040519182526001600160a01b03908116921690600080516020613a1d83398151915290602090a3602060405160018152f35b6001600160a01b03848116808352600160209081526040842054928690611c1782861015612cdf565b861693848403611c2c575b5050505050611bba565b838652600283526040808720338852845286205460018101611c96575b5092600160209693611c748794604097611219600080516020613a1d8339815191529c9a1515612d24565b9285525283832055815220611c8a85825461256d565b90559138808581611c22565b90918110611cea5792600160209693611c748a600080516020613a1d8339815191529a9895611cc78260409a612560565b86895260028552898920338a528552898920559497509497995050939650611c49565b60405162461bcd60e51b815260048101849052601860248201527745524332303a20616c6c6f77616e636520746f6f206c6f7760401b6044820152606490fd5b503461033457611d3936612250565b90839594954211610a11576001600160a01b03878116808a52600460205260408a2080549196929592906000198314611dea5782611ddb9694928d92600161099f98960190556040519160208301937f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d6855260408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e0815261096381612421565b16036109b65761038692612f0f565b634e487b7160e01b8c52601160045260248cfd5b5034610334576020366003190112610334576020906040906001600160a01b03611e266121be565b168152601883522054604051908152f35b5034610334578060031936011261033457602060255460801c604051908152f35b50346103345760403660031901126103345760043560098110156115cb57611e7e612232565b6008549091906001600160a01b03163303611f345760ff611e9e826122d4565b54161515911515918214611efa57808260ff611ebc611eea946122d4565b54161515827feeec81de25875ce1725479bb76f720a8defdb43dea041919ae37bb4aae9847c08780a46122d4565b9060ff8019835416911617905580f35b60405162461bcd60e51b81526020600482015260126024820152714d61726b65743a2073616d6520737461746560701b6044820152606490fd5b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881d5b985d5d1a1bdc9a5e995960621b6044820152606490fd5b50346103345760403660031901126103345761168d611f8d6121be565b6024359033612f5d565b503461033457606036600319011261033457611fb16121be565b611fb9612232565b611fc1612241565b9060018060a01b03928391611fdb83600554163314612494565b1561207f571690811590811591612077575b501561203a57806005549283167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08580a36001600160a01b03199182161760055560068054909116905580f35b60405162461bcd60e51b81526020600482015260156024820152744f776e61626c653a207a65726f206164647265737360581b6044820152606490fd5b905038611fed565b9150501660018060a01b0319600654161760065580f35b5034610334578060031936011261033457808060018060a01b03600b541660405160208101906306fdde0360e01b8252600481526120d3816123eb565b51915afa6120df613821565b91501561213c576120f2610369916138a8565b6113736034604051809373546170696f63612053696e67756c61726974792d60601b602083015261212c81518092602086860191016121ea565b8101036014810184520182612458565b50610369612148613851565b6120f2565b50346103345780600319360112610334576040612168612818565b825191151582526020820152f35b9050346115cb5760403660031901126115cb5760406020926121966121be565b61219e6121d4565b6001600160a01b0391821683526003865283832091168252845220548152f35b600435906001600160a01b038216820361060c57565b602435906001600160a01b038216820361060c57565b60005b8381106121fd5750506000910152565b81810151838201526020016121ed565b90602091612226815180928185528580860191016121ea565b601f01601f1916010190565b60243590811515820361060c57565b60443590811515820361060c57565b60e090600319011261060c576001600160a01b0390600435828116810361060c5791602435908116810361060c5790604435906064359060843560ff8116810361060c579060a4359060c43590565b606090600319011261060c576001600160a01b0390600435828116810361060c5791602435908116810361060c579060443590565b60098110156122ed576000526007602052604060002090565b634e487b7160e01b600052602160045260246000fd5b90600182811c92168015612333575b602083101461231d57565b634e487b7160e01b600052602260045260246000fd5b91607f1691612312565b6010546000929161234d82612303565b9081815260019283811690816000146123a7575060011461236d57505050565b9092935060106000526020928360002092846000945b8386106123935750505050010190565b805485870183015294019385908201612383565b91935050602093945060ff191683830152151560051b010190565b6001600160401b0381116123d557604052565b634e487b7160e01b600052604160045260246000fd5b604081019081106001600160401b038211176123d557604052565b606081019081106001600160401b038211176123d557604052565b61010081019081106001600160401b038211176123d557604052565b608081019081106001600160401b038211176123d557604052565b90601f801991011681019081106001600160401b038211176123d557604052565b6001600160401b0381116123d557601f01601f191660200190565b1561249b57565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b156124e657565b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881b9bdd081d985b1a59607a1b6044820152606490fd5b818102929181159184041417156109fb57565b811561253c570490565b634e487b7160e01b600052601260045260246000fd5b604d81116109fb57600a0a90565b919082039182116109fb57565b919082018092116109fb57565b818103929160001380158285131691841216176109fb57565b6014549192916125dc916125cd916125c3916125b9906001600160801b0383169061251f565b9060801c90612532565b93601f549061251f565b6125d683612552565b90612532565b8083106126a4576125f061262c9184612560565b91612627612621612618601e5461261261260986612552565b6020549061256d565b9061251f565b6125d684612552565b91612552565b61257a565b6509184e72a000908181029181830514901517156109fb57670de0b6b3a7640000918281029281840514901517156109fb57801561253c57600160ff1b918083146000198314166109fb570590600082121561269d5781146109fb57600003905b808211612698575090565b905090565b509061268d565b505050600090565b9160018060a01b0380931691600093838552602060178152604091828720549081156127fe57878385516126df816123eb565b82815201526126ec61327a565b50505050509190506126ff861515612980565b6009541683600c54898b52601882526064878c2054918851948593849263442c159960e01b8452600484015260248301528d60448301525afa9081156127f45789916127c1575b50916127a16127b5979899949261277c8861277761276e601898620186a0602254049061251f565b601e549061251f565b612532565b815190936001600160801b039186916127979184169061251f565b9201511690612532565b8181106127b957035b9783525220546129cc565b9091565b5050826127aa565b90508381813d83116127ed575b6127d88183612458565b810103126127e957516127a1612746565b8880fd5b503d6127ce565b85513d8b823e3d90fd5b5086955085949350505050565b5190811515820361060c57565b600f546040805163d6d7d52560e01b8152602060048201529290916001600160a01b031682848061284b6024820161233d565b0381600080955af180156129745781948291612938575b509284156128db5783156128a157507f9f9192b5edb17356c524e08d9e025c8e2f6307e6ea52fb7968faa3081f51c3c883918260115580a25b42601355565b5162461bcd60e51b81526020600482015260146024820152734d61726b65743a20696e76616c6964207261746560601b6044820152606490fd5b919250506128ee6013546012549061256d565b42116128fe57506011549061289b565b5162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881c985d19481d1bdbc81bdb1960621b6044820152606490fd5b809550848092503d831161296d575b6129518183612458565b810103126103345760206129648561280b565b94015138612862565b503d612947565b508251903d90823e3d90fd5b1561298757565b60405162461bcd60e51b815260206004820152601e60248201527f4d61726b65743a2065786368616e676552617465206e6f742076616c696400006044820152606490fd5b6129d7821515612980565b602060018060a01b0360095416916064600c54604051948593849263442c159960e01b845260048401526024830152600060448301525afa908115612a7757600091612a44575b5090612777612a30926022549061251f565b620186a0612a40601e548361251f565b0491565b906020823d8211612a6f575b81612a5d60209383612458565b81010312610334575051612777612a1e565b3d9150612a50565b6040513d6000823e3d90fd5b6001600160a01b03166000818152601860205260408120549092612aa6916129cc565b918352601760205260408320548015612baf578115612baf57818110612baf5782811015612ba557601454612aef918391611219916125b9906001600160801b0383169061251f565b90620186a09283830292808404851490151715612b9157612b1492916125d691612560565b91601b5491601c5493612b27858561257a565b80820291848212600160ff1b821416612b91578183051490151715612b7d5705818482019485129112908015821691151617612b695750808212612698575090565b634e487b7160e01b81526011600452602490fd5b634e487b7160e01b83526011600452602483fd5b634e487b7160e01b85526011600452602485fd5b50505050601b5490565b50505090565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03161480612cb6575b15612c10577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f000000000000000000000000000000000000000000000000000000000000000082527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a0815260c081018181106001600160401b038211176123d55760405251902090565b507f00000000000000000000000000000000000000000000000000000000000000004614612be7565b15612ce657565b60405162461bcd60e51b815260206004820152601660248201527545524332303a2062616c616e636520746f6f206c6f7760501b6044820152606490fd5b15612d2b57565b60405162461bcd60e51b815260206004820152601660248201527545524332303a206e6f207a65726f206164647265737360501b6044820152606490fd5b51906001600160a01b038216820361060c57565b519060ff8216820361060c57565b60058110156122ed5780612d9c5750565b60018103612de45760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b6044820152606490fd5b60028103612e315760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606490fd5b600314612e3a57565b60405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608490fd5b9291906fa2a8918ca85bafe22016d0b997e4df60600160ff1b038311612f035791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa15612ef65781516001600160a01b03811615612ef0579190565b50600190565b50604051903d90823e3d90fd5b50505050600090600390565b7fe50de2333c10a9502fcb1d8ae13a51bbf423153dfc63c2b8997665b32154afc360018060a01b038092169160009083825260036020526040822094169384825260205284604082205580a4565b909160207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259160018060a01b03809416938460005260028352604060002095169485600052825280604060002055604051908152a3565b15612fbb57565b60405162461bcd60e51b815260206004820152600e60248201526d13585c9ad95d0e881c185d5cd95960921b6044820152606490fd5b15612ff857565b606460405162461bcd60e51b815260206004820152602060248201527f4d61726b65743a2063616e6e6f742065786563757465206f6e20697473656c666044820152fd5b6001600160a01b0316338103613050575050565b60008181526020906003825260409182822033835281528483832054106130ba5783825260038152828220338352815282822054600101613093575b5050505050565b6130ae93825260038152828220903383525220918254612560565b9055388080808061308c565b60649083519062461bcd60e51b82526004820152601460248201527313585c9ad95d0e881b9bdd08185c1c1c9bdd995960621b6044820152fd5b60405190613101826123eb565b6014546001600160801b038116835260801c6020830152565b60405190613127826123eb565b6025546001600160801b038116835260801c6020830152565b919060018060a01b0380600094168452602060178152604085205490811561323857601881526040862054801561308c578161317a6130f4565b9460095416916064600c54604051948593849263442c159960e01b8452600484015260248301528b60448301525afa96871561322c5780976131f6575b50506127976131d661276e6131f1969798620186a0602254049061251f565b956131ec60018060801b0394858751169061251f565b61251f565b111590565b9096508187813d8311613225575b61320e8183612458565b8101031261033457509451946127976131d66131b7565b503d613204565b604051903d90823e3d90fd5b5060019450505050565b6040519061324f82612406565b60006040838281528260208201520152565b6001600160801b0391821690821601919082116109fb57565b613282613242565b5060006020604051613293816123eb565b8281520152600060206040516132a8816123eb565b8281520152604051906132ba82612406565b602454916001600160401b038316815260208101926001600160401b038160401c16845260801c604082015280926132f06130f4565b926132f961311a565b92600060018060a01b0360095416600e549460018060801b038751166040519063442c159960e01b8252876004830152602482015260006044820152602081606481865afa8015612a7757600090613701575b895161336292506001600160801b03169061256d565b806136cc575060005b6133806001600160401b038293511642612560565b9485156136a2575050426001600160401b031660208a8101919091528801516001600160801b03161561365857506020670de0b6b3a76400006133dd856131ec8c6001600160401b038d60018060801b039051169151169061251f565b895191900496906001600160801b03906133fc90828a16908316613261565b168952875160405163442c159960e01b815260048101929092526001600160801b031660248201526000604482015291829060649082905afa8015612a7757600090613624575b875161345992506001600160801b03169061256d565b9261348784612777620186a0613471601a548a61251f565b60208c01516001600160801b031691900461251f565b6040890180519195916001600160801b0380881692916134aa9084908316613261565b16905260208801805190916001600160801b03916134ca91908316613261565b169052806135ef575060005b602a549093848281101561356a576134ee9083612560565b90670de0b6b3a7640000820291808304670de0b6b3a764000014901517156109fb5761277761354261353c61352e6001600160401b039661354c96612532565b936131ec602e54958061251f565b8361256d565b91848d511661251f565b168089526001600160401b03602d54168091106135665750565b8852565b909150602b5480821161357c57505050565b61358591612560565b670de0b6b3a7640000810290808204670de0b6b3a764000014901517156109fb576001600160401b03916127776135c861353c61352e6135d195602c5490612532565b848d511661251f565b81602d5460401c168082116135e7575b50168852565b9050386135e1565b87516001600160801b0316670de0b6b3a76400008181029291808404909114901517156109fb5761361f91612532565b6134d6565b506020813d602011613650575b8161363e60209383612458565b8101031261060c576134599051613443565b3d9150613631565b9697939450509350506001600160401b038151166001600160401b03602f5416809103613696575b50939261368b61311a565b926000926000929190565b81526001925038613680565b9750985050505050925050916136b66130f4565b916136bf61311a565b9160009160009190600090565b88516001600160801b0316670de0b6b3a76400008181029291808404909114901517156109fb576136fc91612532565b61336b565b506020813d60201161372d575b8161371b60209383612458565b8101031261060c57613362905161334c565b3d915061370e565b6020604061374161327a565b93979593909290156137e8575050506001600160401b03602f54166000807f33af5ce86e8438eff54589f85332916444457dfa8685493fbd579b809097026b868851838152a45b6001600160401b03815116838201519160018060801b0319958691015160801b16916001600160401b0360401b9060401b16171760245560018060801b039083838383511692015160801b161760145583511692015160801b1617602555565b7f33af5ce86e8438eff54589f85332916444457dfa8685493fbd579b809097026b866001600160401b03865116948951908152a4613788565b3d1561384c573d9061383282612479565b916138406040519384612458565b82523d6000602084013e565b606090565b6040519061385e826123eb565b60038252623f3f3f60e81b6020830152565b908151811015613881570160200190565b634e487b7160e01b600052603260045260246000fd5b60ff1660ff81146109fb5760010190565b8051604081106139235750805181019060208181840193031261060c576020810151906001600160401b03821161060c570181603f8201121561060c5760208101516138f381612479565b926139016040519485612458565b8184526040828401011161060c576139209160406020850191016121ea565b90565b602092908303613a11576000805b60ff811685811090816139f2575b50156139535761394e90613897565b613931565b9260ff8094169261396384612479565b936139716040519586612458565b808552613980601f1991612479565b013687860137825b858116878110806139d5575b156139ca576139c591906139bf6001600160f81b03196139b48388613870565b5116871a9188613870565b53613897565b613988565b505094505050905090565b506001600160f81b03196139e98286613870565b51161515613994565b6001600160f81b03199150613a079086613870565b511615153861393f565b91505061392061385156feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa264697066735822122010b138ea759083f9d693a64a028add5ca8d16178ec6a44e920bda62dd541befb64736f6c63430008120033"; type SGLCollateralConstructorParams = | [signer?: Signer] diff --git a/src/typechain/tapioca-bar/factories/markets/singularity/SGLCommon__factory.ts b/src/typechain/tapioca-bar/factories/markets/singularity/SGLCommon__factory.ts index 8eea1702..5fac84fe 100644 --- a/src/typechain/tapioca-bar/factories/markets/singularity/SGLCommon__factory.ts +++ b/src/typechain/tapioca-bar/factories/markets/singularity/SGLCommon__factory.ts @@ -130,6 +130,25 @@ const _abi = [ name: "InterestElasticityUpdated", type: "event", }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "address", + name: "oldVal", + type: "address", + }, + { + indexed: true, + internalType: "address", + name: "newVal", + type: "address", + }, + ], + name: "LeverageExecutorSet", + type: "event", + }, { anonymous: false, inputs: [ @@ -1143,6 +1162,19 @@ const _abi = [ stateMutability: "view", type: "function", }, + { + inputs: [], + name: "leverageExecutor", + outputs: [ + { + internalType: "contract ILeverageExecutor", + name: "", + type: "address", + }, + ], + stateMutability: "view", + type: "function", + }, { inputs: [], name: "liquidationBonusAmount", @@ -1532,6 +1564,19 @@ const _abi = [ stateMutability: "view", type: "function", }, + { + inputs: [ + { + internalType: "contract ILeverageExecutor", + name: "_executor", + type: "address", + }, + ], + name: "setLeverageExecutor", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, { inputs: [ { @@ -1862,7 +1907,7 @@ const _abi = [ ] as const; const _bytecode = - "0x6101408060405234620001e5576200001781620001ea565b601381526001602082017f546170696f63612053696e67756c617269747900000000000000000000000000815260206040516200005481620001ea565b8381520192603160f81b845251902091208160e052610100918183524660a0526040519160208301907f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f92838352604085015260608401524660808401523060a084015260a0835260c083019280841060018060401b03851117620001cf5760408490525190206080523060c052610120908152600580546001600160a01b0319163390811790915560007f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a362013880601b5562015f90601c55612710601d55612ee06020557f0bd4060688a1800ae986e4840aebc924bb40b5bf44de4583df2257220b54b77c6026557f7d1dc38e60930664f8cbf495da6556ca091d2f92d6550877750c049864b182306027556161a86028556032602f556131f8928362000207843960805183612693015260a0518361275e015260c0518361265d015260e051836126e201525182612708015251816126bf0152f35b634e487b7160e01b600052604160045260246000fd5b600080fd5b604081019081106001600160401b03821117620001cf5760405256fe608080604052600436101561001357600080fd5b600090813560e01c908162a02a2014611dbf5750806302ce728f14611c3757806306fdde0314611b80578063078dfbe714611a7d578063095ea7b314611a565780630c4e84f01461193e57806318160ddd1461191d5780631c9e379b146118e45780631da8bf101461182457806323b872dd14611687578063313ce567146115f5578063331960ff146115d757806334d441d0146115b95780633644e5151461159e57806337b6b7b91461158057806338d52e0f146115575780633ba0b9a9146115395780633f741adb1461151457806340626d8b146114f657806344de240a146114d8578063473e3ce7146114ba57806348e4163e146114815780634d7f2a34146114635780634e71e0c8146113b5578063529898f21461139857806352f353eb14611371578063551402321461134a57806355c2ab941461132057806357935462146113025780635dfe04e8146112a35780636c3d8b8f1461127a57806370a0823114611241578063727785471461120957806374645ff3146111de5780637dc0d1d0146111b55780637ecebe001461117c5780637fa0b84e1461114a578063821226e81461112c5780638285ef40146110fa5780638c5d0ed3146110dc5780638da5cb5b146110b3578063910dd7c814610e9a578063959916dc14610e7c57806395d89b4114610dc257806399a9702814610d925780639c5d719214610d745780639e15e89f14610d39578063a9059cbb14610c56578063b0e21e8a14610c38578063b27c0e7414610bfd578063bb4cfe3b14610bdf578063ce8849ed14610bb6578063d3fb2a381461071e578063d505accf14610579578063d8dfeb4514610550578063dd62ed3e14610505578063de406577146104dc578063e0996cb6146104be578063e30c397814610495578063ea64dd5614610477578063eec0f42e14610459578063f42760b71461043b578063f8ba4cff14610341578063f9557ccb1461030b5763ffe04c66146102eb57600080fd5b346103085780600319360112610308576020602954604051908152f35b80fd5b5034610308578060031936011261030857602454604080516001600160801b038316815260809290921c602083015290f35b0390f35b50346103085780600319360112610308576020604061035e612add565b9397959390929015610402575050506001600160401b03602e541686807f33af5ce86e8438eff54589f85332916444457dfa8685493fbd579b809097026b868851838152a45b6001600160401b038151166001600160401b03851b84830151861b169160018060801b0319958691015160801b1691171760235560018060801b039083838383511692015160801b161760145583511692015160801b161760245580f35b7f33af5ce86e8438eff54589f85332916444457dfa8685493fbd579b809097026b866001600160401b03865116948951908152a46103a4565b50346103085780600319360112610308576020602a54604051908152f35b50346103085780600319360112610308576020600c54604051908152f35b50346103085780600319360112610308576020601f54604051908152f35b50346103085780600319360112610308576006546040516001600160a01b039091168152602090f35b50346103085780600319360112610308576020601d54604051908152f35b50346103085780600319360112610308576009546040516001600160a01b039091168152602090f35b5034610308576040366003190112610308576040602091610524611e07565b61052c611e22565b6001600160a01b039182168352600285528383209116825283522054604051908152f35b5034610308578060031936011261030857600b546040516001600160a01b039091168152602090f35b50346103085761058836611e8f565b908395949542116106d9576001600160a01b03878116808a52600460205260408a20805491969295929060001983146106c5578261066e9694928d92600161066698960190556040519160208301937f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e266855260408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e0815261062a81612018565b51902061063561265a565b9060405190602082019261190160f01b8452602283015260428201526042815261065e81612034565b51902061292f565b919091612830565b16036106805761067d92612a02565b80f35b60405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152606490fd5b634e487b7160e01b8c52601160045260248cfd5b60405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b503461030857610160366003190112610308576001600160a01b0360043581811690819003610bb2576024916001600160401b038335818111610bae5736602382011215610bae578060040135918211610bae5736858383010111610bae5760443593838516809503610baa5761079a8460055416331461208b565b80610b6c575b5084826109ee575b505050816109ae575b505060643580610996575b506084358061097e575b5060a43580610967575b5060c43580610943575b5060e4358061091f575b5061010435806108ee575b50610124358061087b575b50610144359081610809578280f35b601e54821061081c5750601f5538808280f35b60849060326040519162461bcd60e51b8352602060048401528201527f4d61726b65743a206c69717569646174696f6e436f6c6c61746572616c697a616044820152711d1a5bdb94985d19481d1bdbc81cdb585b1b60721b6064820152fd5b61088a620186a08211156120d6565b601f54811161089c57601e55386107fa565b60405162461bcd60e51b8152602060048201526025818401527f4d61726b65743a20636f6c6c61746572616c697a6174696f6e5261746520746f6044820152646f2062696760d81b6064820152608490fd5b806016547fae6e0ab3b95f0a53ff9660a390ccedcbbf1f2355dce974a9841af106fddcfaba8580a3601655386107ef565b61092d620186a082106120d6565b61093a601b5482116120d6565b601c55386107e4565b610951620186a082106120d6565b61095e601c5482106120d6565b601b55386107da565b610975620186a082106120d6565b601d55386107d0565b61098d620186a08211156120d6565b601a55386107c6565b6109a5620186a08211156120d6565b601955386107bc565b816008549182167f5a62d22209e370e38eea92cfddcd228e656e6ec139243392a760a7769f5877fd8680a36001600160a01b0319161760085538806107b1565b82916109fb601054611f0d565b601f8111610afb575b508790601f8411600114610a69578893610a5c575b5050508160011b916000199060031b1c1916176010555b7fa6f004921c944d4b8bf6e38462b00f36a58d62495d56b51f571ab78f732c98158480a13880846107a8565b0101359050843880610a19565b60108952601f19841694507f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae67292509087908960205b878210610adc5750508460019610610ac0575b50505050811b01601055610a30565b60001960f88660031b161c199201013516905538808681610ab1565b8285019093013585556001949094019389929182019190810190610a9e565b6010895290925090507f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae672601f840160051c810160208510610b65575b91849391601f8994920160051c01905b818110610b545750610a04565b898155859450889350600101610b47565b5080610b37565b600f80546001600160a01b0319169190911790557f0b2d6eb667d0522c3eb86e4288afecae6c11591ffd1345d4d12407e0598bca9b8680a1386107a0565b8680fd5b8580fd5b8280fd5b50346103085780600319360112610308576008546040516001600160a01b039091168152602090f35b50346103085780600319360112610308576020601e54604051908152f35b50346103085780600319360112610308576060602354604051906001600160401b0380821683528160401c16602083015260801c6040820152f35b50346103085780600319360112610308576020601a54604051908152f35b503461030857604036600319011261030857610c70611e07565b60243580928115801590610d27575b610cb7575b50506040519182526001600160a01b03169033906000805160206131a383398151915290602090a3602060405160018152f35b33815260016020526040812054610cd083821015612784565b6001600160a01b0384169033829003610ceb575b5050610c84565b604093610d0291610cfd8415156127c9565b61216d565b338352600160205283832055815220610d1c83825461217a565b905581388080610ce4565b50336001600160a01b03841614610c7f565b5034610308576040366003190112610308576060610d61610d58611e07565b602435906122b9565b9060405192835260208301526040820152f35b50346103085780600319360112610308576020602b54604051908152f35b5034610308576040366003190112610308576020610dba610db1611e07565b60243590612528565b604051908152f35b5034610308578060031936011261030857808060018060a01b03600b541660405160208101906395d89b4160e01b825260048152610dff81611ffd565b51915afa610e0b612fa7565b915015610e6b57610e1e61033d9161302e565b610e576023604051809362746d2d60e81b6020830152610e478151809260208686019101611e38565b810103600381018452018261204f565b604051918291602083526020830190611e5b565b5061033d610e77612fd7565b610e1e565b50346103085780600319360112610308576020602f54604051908152f35b5034610308576040366003190112610308576004356001600160401b0381116110af57366023820112156110af57806004013582610ed782612070565b92610ee5604051948561204f565b82845260208401923660248284010111610bb2578060246020930185378401015260243561ffff811681036110ab576101009182848051810103126110a757610f2d90612418565b610f396040850161280e565b91610f466060860161280e565b9460808101519460a082015192610f5f60c08401612822565b9160e0840151930151938042116106d9578515611080577f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e266915b6001600160a01b0388168b52600460205260408b2080549190600019831461106c579161ffff6110299896949261066698969460018401905560405194602086015216604084015260018060a01b038a16606084015260018060a01b038c1660808401528a60a084015260c083015260e082015260e0815261101a81612018565b6020815191012061063561265a565b6001600160a01b0383811691160361068057156110565761067d926001600160a01b039081169116612a02565b61067d926001600160a01b0390811691166129b4565b634e487b7160e01b8d52601160045260248dfd5b7f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d691610f99565b8480fd5b8380fd5b5080fd5b50346103085780600319360112610308576005546040516001600160a01b039091168152602090f35b50346103085780600319360112610308576020601b54604051908152f35b5034610308578060031936011261030857601454604080516001600160801b038316815260809290921c602083015290f35b50346103085780600319360112610308576020602d54604051908152f35b503461030857604036600319011261030857611171611167611e07565b60243590336129b4565b602060405160018152f35b5034610308576020366003190112610308576020906040906001600160a01b036111a4611e07565b168152600483522054604051908152f35b5034610308578060031936011261030857600f546040516001600160a01b039091168152602090f35b503461030857806003193601126103085761033d604051610e578161120281611f47565b038261204f565b50346103085760203660031901126103085760043590600982101561030857602060ff61123584611ede565b54166040519015158152f35b5034610308576020366003190112610308576020906040906001600160a01b03611269611e07565b168152600183522054604051908152f35b5034610308578060031936011261030857600a546040516001600160a01b039091168152602090f35b50346103085780600319360112610308576112bc612a59565b5060806112c7612add565b509350505050604051916001600160401b0380825116845260208201511660208401526040600180861b039101511660408301526060820152f35b50346103085780600319360112610308576020601c54604051908152f35b503461030857806003193601126103085760206001600160401b03602c5460401c16604051908152f35b503461030857806003193601126103085760206001600160401b03602c5416604051908152f35b503461030857806003193601126103085760206001600160401b03602e5416604051908152f35b503461030857806003193601126103085760208054604051908152f35b50346103085780600319360112610308576006546001600160a01b03908181163381900361141f57806005549384167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08680a36001600160a01b0319928316176005551660065580f35b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b50346103085780600319360112610308576020602854604051908152f35b5034610308576020366003190112610308576020906040906001600160a01b036114a9611e07565b168152601783522054604051908152f35b50346103085780600319360112610308576020601554604051908152f35b50346103085780600319360112610308576020600e54604051908152f35b50346103085780600319360112610308576020601654604051908152f35b5034610308576060366003190112610308576020610dba6044356024356004356121a0565b50346103085780600319360112610308576020601154604051908152f35b5034610308578060031936011261030857600d546040516001600160a01b039091168152602090f35b50346103085780600319360112610308576020601254604051908152f35b50346103085780600319360112610308576020610dba61265a565b50346103085780600319360112610308576020601954604051908152f35b50346103085780600319360112610308576020601354604051908152f35b5034610308578060031936011261030857808060018060a01b03600d5416604051602081019063313ce56760e01b82526004815261163281611ffd565b51915afa9061163f612fa7565b918061167c575b156116715760208280518101031261030857506116666020809201612822565b60ff60405191168152f35b505060206012611666565b506020825114611646565b5034610308576060366003190112610308576116a1611e07565b906116aa611e22565b60443591826116e8575b506040519182526001600160a01b039081169216906000805160206131a383398151915290602090a3602060405160018152f35b6001600160a01b0384811680835260016020908152604084205492869061171182861015612784565b861693848403611726575b50505050506116b4565b838652600283526040808720338852845286205460018101611790575b509260016020969361176e8794604097610cfd6000805160206131a38339815191529c9a15156127c9565b928552528383205581522061178485825461217a565b9055913880858161171c565b909181106117e4579260016020969361176e8a6000805160206131a38339815191529a98956117c18260409a61216d565b86895260028552898920338a528552898920559497509497995050939650611743565b60405162461bcd60e51b815260048101849052601860248201527745524332303a20616c6c6f77616e636520746f6f206c6f7760401b6044820152606490fd5b50346103085761183336611e8f565b908395949542116106d9576001600160a01b03878116808a52600460205260408a20805491969295929060001983146106c557826118d59694928d92600161066698960190556040519160208301937f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d6855260408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e0815261062a81612018565b16036106805761067d926129b4565b5034610308576020366003190112610308576020906040906001600160a01b0361190c611e07565b168152601883522054604051908152f35b5034610308578060031936011261030857602060245460801c604051908152f35b50346103085760403660031901126103085760043560098110156110af57611964611e80565b6008549091906001600160a01b03163303611a1a5760ff61198482611ede565b541615159115159182146119e057808260ff6119a26119d094611ede565b54161515827feeec81de25875ce1725479bb76f720a8defdb43dea041919ae37bb4aae9847c08780a4611ede565b9060ff8019835416911617905580f35b60405162461bcd60e51b81526020600482015260126024820152714d61726b65743a2073616d6520737461746560701b6044820152606490fd5b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881d5b985d5d1a1bdc9a5e995960621b6044820152606490fd5b503461030857604036600319011261030857611171611a73611e07565b6024359033612a02565b503461030857606036600319011261030857611a97611e07565b611a9f611e80565b6044359081151582036110ab5760018060a01b03928391611ac58360055416331461208b565b15611b69571690811590811591611b61575b5015611b2457806005549283167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08580a36001600160a01b03199182161760055560068054909116905580f35b60405162461bcd60e51b81526020600482015260156024820152744f776e61626c653a207a65726f206164647265737360581b6044820152606490fd5b905038611ad7565b9150501660018060a01b0319600654161760065580f35b5034610308578060031936011261030857808060018060a01b03600b541660405160208101906306fdde0360e01b825260048152611bbd81611ffd565b51915afa611bc9612fa7565b915015611c2657611bdc61033d9161302e565b610e576034604051809373546170696f63612053696e67756c61726974792d60601b6020830152611c168151809260208686019101611e38565b810103601481018452018261204f565b5061033d611c32612fd7565b611bdc565b5034610308578060031936011261030857600f546040805163d6d7d52560e01b8152602060048201529182906001600160a01b0316818581611c7b60248201611f47565b03925af18015611db45782918391611d74575b508115611d15578015611cd957807f9f9192b5edb17356c524e08d9e025c8e2f6307e6ea52fb7968faa3081f51c3c86040948260115580a25b42601355825191151582526020820152f35b60405162461bcd60e51b81526020600482015260146024820152734d61726b65743a20696e76616c6964207261746560601b6044820152606490fd5b509050611d276013546012549061217a565b4211611d3857604090601154611cc7565b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881c985d19481d1bdbc81bdb1960621b6044820152606490fd5b9150506040813d604011611dac575b81611d906040938361204f565b810103126110af576020611da382612418565b91015138611c8e565b3d9150611d83565b6040513d84823e3d90fd5b9050346110af5760403660031901126110af576040602092611ddf611e07565b611de7611e22565b6001600160a01b0391821683526003865283832091168252845220548152f35b600435906001600160a01b0382168203611e1d57565b600080fd5b602435906001600160a01b0382168203611e1d57565b60005b838110611e4b5750506000910152565b8181015183820152602001611e3b565b90602091611e7481518092818552858086019101611e38565b601f01601f1916010190565b602435908115158203611e1d57565b60e0906003190112611e1d576001600160a01b03906004358281168103611e1d57916024359081168103611e1d5790604435906064359060843560ff81168103611e1d579060a4359060c43590565b6009811015611ef7576000526007602052604060002090565b634e487b7160e01b600052602160045260246000fd5b90600182811c92168015611f3d575b6020831014611f2757565b634e487b7160e01b600052602260045260246000fd5b91607f1691611f1c565b60105460009291611f5782611f0d565b908181526001928381169081600014611fb15750600114611f7757505050565b9092935060106000526020928360002092846000945b838610611f9d5750505050010190565b805485870183015294019385908201611f8d565b91935050602093945060ff191683830152151560051b010190565b606081019081106001600160401b03821117611fe757604052565b634e487b7160e01b600052604160045260246000fd5b604081019081106001600160401b03821117611fe757604052565b61010081019081106001600160401b03821117611fe757604052565b608081019081106001600160401b03821117611fe757604052565b90601f801991011681019081106001600160401b03821117611fe757604052565b6001600160401b038111611fe757601f01601f191660200190565b1561209257565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b156120dd57565b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881b9bdd081d985b1a59607a1b6044820152606490fd5b8181029291811591840414171561212957565b634e487b7160e01b600052601160045260246000fd5b8115612149570490565b634e487b7160e01b600052601260045260246000fd5b604d811161212957600a0a90565b9190820391821161212957565b9190820180921161212957565b8181039291600013801582851316918412161761212957565b6014549192916121e9916121da916121d0916121c6906001600160801b03831690612116565b9060801c9061213f565b93601f5490612116565b6121e38361215f565b9061213f565b8083106122b1576121fd612239918461216d565b9161223461222e612225601e5461221f6122168661215f565b6020549061217a565b90612116565b6121e38461215f565b9161215f565b612187565b6509184e72a0009081810291818305149015171561212957670de0b6b3a76400009182810292818405149015171561212957801561214957600160ff1b9180831460001983141661212957059060008212156122aa57811461212957600003905b8082116122a5575090565b905090565b509061229a565b505050600090565b9160018060a01b03809316916000938385526020601781526040918287205490811561240b57878385516122ec81611ffd565b82815201526122f9612add565b505050505091905061230c861515612425565b6009541683600c54898b52601882526064878c2054918851948593849263442c159960e01b8452600484015260248301528d60448301525afa9081156124015789916123ce575b50916123ae6123c297989994926123898861238461237b601898620186a06021540490612116565b601e5490612116565b61213f565b815190936001600160801b039186916123a491841690612116565b920151169061213f565b8181106123c657035b978352522054612471565b9091565b5050826123b7565b90508381813d83116123fa575b6123e5818361204f565b810103126123f657516123ae612353565b8880fd5b503d6123db565b85513d8b823e3d90fd5b5086955085949350505050565b51908115158203611e1d57565b1561242c57565b60405162461bcd60e51b815260206004820152601e60248201527f4d61726b65743a2065786368616e676552617465206e6f742076616c696400006044820152606490fd5b61247c821515612425565b602060018060a01b0360095416916064600c54604051948593849263442c159960e01b845260048401526024830152600060448301525afa90811561251c576000916124e9575b50906123846124d59260215490612116565b620186a06124e5601e5483612116565b0491565b906020823d8211612514575b816125026020938361204f565b810103126103085750516123846124c3565b3d91506124f5565b6040513d6000823e3d90fd5b6001600160a01b0316600081815260186020526040812054909261254b91612471565b91835260176020526040832054801561265457811561265457818110612654578281101561264a57601454612594918391610cfd916121c6906001600160801b03831690612116565b90620186a09283830292808404851490151715612636576125b992916121e39161216d565b91601b5491601c54936125cc8585612187565b80820291848212600160ff1b821416612636578183051490151715612622570581848201948512911290801582169115161761260e57508082126122a5575090565b634e487b7160e01b81526011600452602490fd5b634e487b7160e01b83526011600452602483fd5b634e487b7160e01b85526011600452602485fd5b50505050601b5490565b50505090565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316148061275b575b156126b5577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f000000000000000000000000000000000000000000000000000000000000000082527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a0815260c081018181106001600160401b03821117611fe75760405251902090565b507f0000000000000000000000000000000000000000000000000000000000000000461461268c565b1561278b57565b60405162461bcd60e51b815260206004820152601660248201527545524332303a2062616c616e636520746f6f206c6f7760501b6044820152606490fd5b156127d057565b60405162461bcd60e51b815260206004820152601660248201527545524332303a206e6f207a65726f206164647265737360501b6044820152606490fd5b51906001600160a01b0382168203611e1d57565b519060ff82168203611e1d57565b6005811015611ef757806128415750565b600181036128895760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b6044820152606490fd5b600281036128d65760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606490fd5b6003146128df57565b60405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608490fd5b9291906fa2a8918ca85bafe22016d0b997e4df60600160ff1b0383116129a85791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa1561299b5781516001600160a01b03811615612995579190565b50600190565b50604051903d90823e3d90fd5b50505050600090600390565b7fe50de2333c10a9502fcb1d8ae13a51bbf423153dfc63c2b8997665b32154afc360018060a01b038092169160009083825260036020526040822094169384825260205284604082205580a4565b909160207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259160018060a01b03809416938460005260028352604060002095169485600052825280604060002055604051908152a3565b60405190612a6682611fcc565b60006040838281528260208201520152565b60405190612a8582611ffd565b6014546001600160801b038116835260801c6020830152565b60405190612aab82611ffd565b6024546001600160801b038116835260801c6020830152565b6001600160801b03918216908216019190821161212957565b612ae5612a59565b5060006020604051612af681611ffd565b828152015260006020604051612b0b81611ffd565b8281520152604051612b1c81611fcc565b6023546001600160401b03811682526001600160401b038160401c16602083015260801c60408201528091612b4f612a78565b91612b58612a9e565b600954600e54825160405163442c159960e01b8152600481018390526001600160801b03909116602482015260006044820181905293959194919391926001600160a01b031690602081606481855afa801561251c57600090612f73575b8851612bcc92506001600160801b03169061217a565b80612f3e575060005b80612bed6001600160401b036020870151164261216d565b948515612f14575050426001600160401b031660208a8101919091528801516001600160801b031615612eca57506020670de0b6b3a7640000612c4f85612c4a8c6001600160401b038d60018060801b0390511691511690612116565b612116565b895191900496906001600160801b0390612c6e90828a16908316612ac4565b168952875160405163442c159960e01b815260048101929092526001600160801b031660248201526000604482015291829060649082905afa801561251c57600090612e96575b8751612ccb92506001600160801b03169061217a565b92612cf984612384620186a0612ce3601a548a612116565b60208c01516001600160801b0316919004612116565b6040890180519195916001600160801b038088169291612d1c9084908316612ac4565b16905260208801805190916001600160801b0391612d3c91908316612ac4565b16905280612e61575060005b60295490938482811015612ddc57612d60908361216d565b90670de0b6b3a7640000820291808304670de0b6b3a7640000149015171561212957612384612db4612dae612da06001600160401b0396612dbe9661213f565b93612c4a602d549580612116565b8361217a565b91848d5116612116565b168089526001600160401b03602c5416809110612dd85750565b8852565b909150602a54808211612dee57505050565b612df79161216d565b670de0b6b3a7640000810290808204670de0b6b3a76400001490151715612129576001600160401b0391612384612e3a612dae612da0612e4395602b549061213f565b848d5116612116565b81602c5460401c16808211612e59575b50168852565b905038612e53565b87516001600160801b0316670de0b6b3a764000081810292918084049091149015171561212957612e919161213f565b612d48565b506020813d602011612ec2575b81612eb06020938361204f565b81010312611e1d57612ccb9051612cb5565b3d9150612ea3565b9697939450509350506001600160401b038151166001600160401b03602e5416809103612f08575b509392612efd612a9e565b926000926000929190565b81526001925038612ef2565b975098505050505092505091612f28612a78565b91612f31612a9e565b9160009160009190600090565b87516001600160801b0316670de0b6b3a764000081810292918084049091149015171561212957612f6e9161213f565b612bd5565b506020813d602011612f9f575b81612f8d6020938361204f565b81010312611e1d57612bcc9051612bb6565b3d9150612f80565b3d15612fd2573d90612fb882612070565b91612fc6604051938461204f565b82523d6000602084013e565b606090565b60405190612fe482611ffd565b60038252623f3f3f60e81b6020830152565b908151811015613007570160200190565b634e487b7160e01b600052603260045260246000fd5b60ff1660ff81146121295760010190565b8051604081106130a957508051810190602081818401930312611e1d576020810151906001600160401b038211611e1d570181603f82011215611e1d57602081015161307981612070565b92613087604051948561204f565b81845260408284010111611e1d576130a6916040602085019101611e38565b90565b602092908303613197576000805b60ff81168581109081613178575b50156130d9576130d49061301d565b6130b7565b9260ff809416926130e984612070565b936130f7604051958661204f565b808552613106601f1991612070565b013687860137825b8581168781108061315b575b156131505761314b91906131456001600160f81b031961313a8388612ff6565b5116871a9188612ff6565b5361301d565b61310e565b505094505050905090565b506001600160f81b031961316f8286612ff6565b5116151561311a565b6001600160f81b0319915061318d9086612ff6565b51161515386130c5565b9150506130a6612fd756feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa264697066735822122013f4fadcc6d8a5582ff6b55236431f484dc8018dcb0d56a344cccb04b2758aa264736f6c63430008120033"; + "0x6101408060405234620001e5576200001781620001ea565b601381526001602082017f546170696f63612053696e67756c617269747900000000000000000000000000815260206040516200005481620001ea565b8381520192603160f81b845251902091208160e052610100918183524660a0526040519160208301907f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f92838352604085015260608401524660808401523060a084015260a0835260c083019280841060018060401b03851117620001cf5760408490525190206080523060c052610120908152600580546001600160a01b0319163390811790915560007f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a362013880601b5562015f90601c55612710601d55612ee06020557f0bd4060688a1800ae986e4840aebc924bb40b5bf44de4583df2257220b54b77c6027557f7d1dc38e60930664f8cbf495da6556ca091d2f92d6550877750c049864b182306028556161a860295560326030556132a0928362000207843960805183612745015260a05183612810015260c0518361270f015260e05183612794015251826127ba015251816127710152f35b634e487b7160e01b600052604160045260246000fd5b600080fd5b604081019081106001600160401b03821117620001cf5760405256fe608080604052600436101561001357600080fd5b600090813560e01c908162a02a2014611e715750806302ce728f14611ce957806306fdde0314611c32578063078dfbe714611b2f578063095ea7b314611b085780630c4e84f0146119f057806318160ddd146119cf5780631c9e379b146119965780631da8bf10146118d657806323b872dd14611739578063313ce567146116a7578063331960ff1461168957806334d441d01461166b5780633644e5151461165057806337b6b7b91461163257806338d52e0f146116095780633ba0b9a9146115eb5780633f741adb146115c657806340626d8b146115a857806344de240a1461158a578063473e3ce71461156c57806348e4163e146115335780634d7f2a34146115155780634e71e0c814611467578063529898f21461144a57806352f353eb1461142357806355140232146113fc57806355c2ab94146113d257806357935462146113b45780635dfe04e8146113555780636c3d8b8f1461132c57806370a08231146112f357806372778547146112bb57806374645ff3146112905780637dc0d1d0146112675780637ecebe001461122e5780637fa0b84e146111fc578063821226e8146111de5780638285ef40146111ac5780638c5d0ed31461118e5780638da5cb5b14611165578063910dd7c814610f4c578063959916dc14610f2e57806395d89b4114610e7457806399a9702814610e445780639c5d719214610e265780639e15e89f14610deb578063a9059cbb14610d08578063b0e21e8a14610cea578063b27c0e7414610caf578063bb4cfe3b14610c91578063ce8849ed14610c68578063d3fb2a38146107d4578063d505accf1461062f578063d8dfeb4514610606578063da863f0e146105dd578063dd62ed3e14610592578063de40657714610569578063e0996cb61461054b578063e30c397814610522578063ea64dd5614610504578063eec0f42e146104e6578063ef2b234a1461046f578063f42760b714610451578063f8ba4cff14610357578063f9557ccb146103215763ffe04c661461030157600080fd5b3461031e578060031936011261031e576020602a54604051908152f35b80fd5b503461031e578060031936011261031e57602554604080516001600160801b038316815260809290921c602083015290f35b0390f35b503461031e578060031936011261031e5760206040610374612b8f565b9397959390929015610418575050506001600160401b03602f541686807f33af5ce86e8438eff54589f85332916444457dfa8685493fbd579b809097026b868851838152a45b6001600160401b038151166001600160401b03851b84830151861b169160018060801b0319958691015160801b1691171760245560018060801b039083838383511692015160801b161760145583511692015160801b161760255580f35b7f33af5ce86e8438eff54589f85332916444457dfa8685493fbd579b809097026b866001600160401b03865116948951908152a46103ba565b503461031e578060031936011261031e576020602b54604051908152f35b503461031e57602036600319011261031e576004356001600160a01b03818116918290036104e2576104a68160055416331461213d565b816021549182167ffb4fd7114609dd603b57adbc2082205bfbbcabf9265c4b437b472f5c592b8cd78580a36001600160a01b0319161760215580f35b8280fd5b503461031e578060031936011261031e576020600c54604051908152f35b503461031e578060031936011261031e576020601f54604051908152f35b503461031e578060031936011261031e576006546040516001600160a01b039091168152602090f35b503461031e578060031936011261031e576020601d54604051908152f35b503461031e578060031936011261031e576009546040516001600160a01b039091168152602090f35b503461031e57604036600319011261031e5760406020916105b1611eb9565b6105b9611ed4565b6001600160a01b039182168352600285528383209116825283522054604051908152f35b503461031e578060031936011261031e576021546040516001600160a01b039091168152602090f35b503461031e578060031936011261031e57600b546040516001600160a01b039091168152602090f35b503461031e5761063e36611f41565b9083959495421161078f576001600160a01b03878116808a52600460205260408a208054919692959290600019831461077b57826107249694928d92600161071c98960190556040519160208301937f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e266855260408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e081526106e0816120ca565b5190206106eb61270c565b9060405190602082019261190160f01b84526022830152604282015260428152610714816120e6565b5190206129e1565b9190916128e2565b16036107365761073392612ab4565b80f35b60405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152606490fd5b634e487b7160e01b8c52601160045260248cfd5b60405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b503461031e5761016036600319011261031e576001600160a01b03600435818116908190036104e2576024916001600160401b038335818111610c645736602382011215610c64578060040135918211610c645736858383010111610c645760443593838516809503610c60576108508460055416331461213d565b80610c22575b508482610aa4575b50505081610a64575b505060643580610a4c575b5060843580610a34575b5060a43580610a1d575b5060c435806109f9575b5060e435806109d5575b5061010435806109a4575b506101243580610931575b506101443590816108bf578280f35b601e5482106108d25750601f5538808280f35b60849060326040519162461bcd60e51b8352602060048401528201527f4d61726b65743a206c69717569646174696f6e436f6c6c61746572616c697a616044820152711d1a5bdb94985d19481d1bdbc81cdb585b1b60721b6064820152fd5b610940620186a0821115612188565b601f54811161095257601e55386108b0565b60405162461bcd60e51b8152602060048201526025818401527f4d61726b65743a20636f6c6c61746572616c697a6174696f6e5261746520746f6044820152646f2062696760d81b6064820152608490fd5b806016547fae6e0ab3b95f0a53ff9660a390ccedcbbf1f2355dce974a9841af106fddcfaba8580a3601655386108a5565b6109e3620186a08210612188565b6109f0601b548211612188565b601c553861089a565b610a07620186a08210612188565b610a14601c548210612188565b601b5538610890565b610a2b620186a08210612188565b601d5538610886565b610a43620186a0821115612188565b601a553861087c565b610a5b620186a0821115612188565b60195538610872565b816008549182167f5a62d22209e370e38eea92cfddcd228e656e6ec139243392a760a7769f5877fd8680a36001600160a01b031916176008553880610867565b8291610ab1601054611fbf565b601f8111610bb1575b508790601f8411600114610b1f578893610b12575b5050508160011b916000199060031b1c1916176010555b7fa6f004921c944d4b8bf6e38462b00f36a58d62495d56b51f571ab78f732c98158480a138808461085e565b0101359050843880610acf565b60108952601f19841694507f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae67292509087908960205b878210610b925750508460019610610b76575b50505050811b01601055610ae6565b60001960f88660031b161c199201013516905538808681610b67565b8285019093013585556001949094019389929182019190810190610b54565b6010895290925090507f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae672601f840160051c810160208510610c1b575b91849391601f8994920160051c01905b818110610c0a5750610aba565b898155859450889350600101610bfd565b5080610bed565b600f80546001600160a01b0319169190911790557f0b2d6eb667d0522c3eb86e4288afecae6c11591ffd1345d4d12407e0598bca9b8680a138610856565b8680fd5b8580fd5b503461031e578060031936011261031e576008546040516001600160a01b039091168152602090f35b503461031e578060031936011261031e576020601e54604051908152f35b503461031e578060031936011261031e576060602454604051906001600160401b0380821683528160401c16602083015260801c6040820152f35b503461031e578060031936011261031e576020601a54604051908152f35b503461031e57604036600319011261031e57610d22611eb9565b60243580928115801590610dd9575b610d69575b50506040519182526001600160a01b031690339060008051602061324b83398151915290602090a3602060405160018152f35b33815260016020526040812054610d8283821015612836565b6001600160a01b0384169033829003610d9d575b5050610d36565b604093610db491610daf84151561287b565b61221f565b338352600160205283832055815220610dce83825461222c565b905581388080610d96565b50336001600160a01b03841614610d31565b503461031e57604036600319011261031e576060610e13610e0a611eb9565b6024359061236b565b9060405192835260208301526040820152f35b503461031e578060031936011261031e576020602c54604051908152f35b503461031e57604036600319011261031e576020610e6c610e63611eb9565b602435906125da565b604051908152f35b503461031e578060031936011261031e57808060018060a01b03600b541660405160208101906395d89b4160e01b825260048152610eb1816120af565b51915afa610ebd61304f565b915015610f1d57610ed0610353916130d6565b610f096023604051809362746d2d60e81b6020830152610ef98151809260208686019101611eea565b8101036003810184520182612101565b604051918291602083526020830190611f0d565b50610353610f2961307f565b610ed0565b503461031e578060031936011261031e576020603054604051908152f35b503461031e57604036600319011261031e576004356001600160401b038111611161573660238201121561116157806004013582610f8982612122565b92610f976040519485612101565b828452602084019236602482840101116104e2578060246020930185378401015260243561ffff8116810361115d5761010091828480518101031261115957610fdf906124ca565b610feb604085016128c0565b91610ff8606086016128c0565b9460808101519460a08201519261101160c084016128d4565b9160e08401519301519380421161078f578515611132577f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e266915b6001600160a01b0388168b52600460205260408b2080549190600019831461111e579161ffff6110db9896949261071c98969460018401905560405194602086015216604084015260018060a01b038a16606084015260018060a01b038c1660808401528a60a084015260c083015260e082015260e081526110cc816120ca565b602081519101206106eb61270c565b6001600160a01b03838116911603610736571561110857610733926001600160a01b039081169116612ab4565b610733926001600160a01b039081169116612a66565b634e487b7160e01b8d52601160045260248dfd5b7f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d69161104b565b8480fd5b8380fd5b5080fd5b503461031e578060031936011261031e576005546040516001600160a01b039091168152602090f35b503461031e578060031936011261031e576020601b54604051908152f35b503461031e578060031936011261031e57601454604080516001600160801b038316815260809290921c602083015290f35b503461031e578060031936011261031e576020602e54604051908152f35b503461031e57604036600319011261031e57611223611219611eb9565b6024359033612a66565b602060405160018152f35b503461031e57602036600319011261031e576020906040906001600160a01b03611256611eb9565b168152600483522054604051908152f35b503461031e578060031936011261031e57600f546040516001600160a01b039091168152602090f35b503461031e578060031936011261031e57610353604051610f09816112b481611ff9565b0382612101565b503461031e57602036600319011261031e5760043590600982101561031e57602060ff6112e784611f90565b54166040519015158152f35b503461031e57602036600319011261031e576020906040906001600160a01b0361131b611eb9565b168152600183522054604051908152f35b503461031e578060031936011261031e57600a546040516001600160a01b039091168152602090f35b503461031e578060031936011261031e5761136e612b0b565b506080611379612b8f565b509350505050604051916001600160401b0380825116845260208201511660208401526040600180861b039101511660408301526060820152f35b503461031e578060031936011261031e576020601c54604051908152f35b503461031e578060031936011261031e5760206001600160401b03602d5460401c16604051908152f35b503461031e578060031936011261031e5760206001600160401b03602d5416604051908152f35b503461031e578060031936011261031e5760206001600160401b03602f5416604051908152f35b503461031e578060031936011261031e5760208054604051908152f35b503461031e578060031936011261031e576006546001600160a01b0390818116338190036114d157806005549384167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08680a36001600160a01b0319928316176005551660065580f35b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b503461031e578060031936011261031e576020602954604051908152f35b503461031e57602036600319011261031e576020906040906001600160a01b0361155b611eb9565b168152601783522054604051908152f35b503461031e578060031936011261031e576020601554604051908152f35b503461031e578060031936011261031e576020600e54604051908152f35b503461031e578060031936011261031e576020601654604051908152f35b503461031e57606036600319011261031e576020610e6c604435602435600435612252565b503461031e578060031936011261031e576020601154604051908152f35b503461031e578060031936011261031e57600d546040516001600160a01b039091168152602090f35b503461031e578060031936011261031e576020601254604051908152f35b503461031e578060031936011261031e576020610e6c61270c565b503461031e578060031936011261031e576020601954604051908152f35b503461031e578060031936011261031e576020601354604051908152f35b503461031e578060031936011261031e57808060018060a01b03600d5416604051602081019063313ce56760e01b8252600481526116e4816120af565b51915afa906116f161304f565b918061172e575b156117235760208280518101031261031e575061171860208092016128d4565b60ff60405191168152f35b505060206012611718565b5060208251146116f8565b503461031e57606036600319011261031e57611753611eb9565b9061175c611ed4565b604435918261179a575b506040519182526001600160a01b0390811692169060008051602061324b83398151915290602090a3602060405160018152f35b6001600160a01b038481168083526001602090815260408420549286906117c382861015612836565b8616938484036117d8575b5050505050611766565b838652600283526040808720338852845286205460018101611842575b50926001602096936118208794604097610daf60008051602061324b8339815191529c9a151561287b565b928552528383205581522061183685825461222c565b905591388085816117ce565b9091811061189657926001602096936118208a60008051602061324b8339815191529a98956118738260409a61221f565b86895260028552898920338a5285528989205594975094979950509396506117f5565b60405162461bcd60e51b815260048101849052601860248201527745524332303a20616c6c6f77616e636520746f6f206c6f7760401b6044820152606490fd5b503461031e576118e536611f41565b9083959495421161078f576001600160a01b03878116808a52600460205260408a208054919692959290600019831461077b57826119879694928d92600161071c98960190556040519160208301937f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d6855260408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e081526106e0816120ca565b16036107365761073392612a66565b503461031e57602036600319011261031e576020906040906001600160a01b036119be611eb9565b168152601883522054604051908152f35b503461031e578060031936011261031e57602060255460801c604051908152f35b503461031e57604036600319011261031e57600435600981101561116157611a16611f32565b6008549091906001600160a01b03163303611acc5760ff611a3682611f90565b54161515911515918214611a9257808260ff611a54611a8294611f90565b54161515827feeec81de25875ce1725479bb76f720a8defdb43dea041919ae37bb4aae9847c08780a4611f90565b9060ff8019835416911617905580f35b60405162461bcd60e51b81526020600482015260126024820152714d61726b65743a2073616d6520737461746560701b6044820152606490fd5b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881d5b985d5d1a1bdc9a5e995960621b6044820152606490fd5b503461031e57604036600319011261031e57611223611b25611eb9565b6024359033612ab4565b503461031e57606036600319011261031e57611b49611eb9565b611b51611f32565b60443590811515820361115d5760018060a01b03928391611b778360055416331461213d565b15611c1b571690811590811591611c13575b5015611bd657806005549283167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08580a36001600160a01b03199182161760055560068054909116905580f35b60405162461bcd60e51b81526020600482015260156024820152744f776e61626c653a207a65726f206164647265737360581b6044820152606490fd5b905038611b89565b9150501660018060a01b0319600654161760065580f35b503461031e578060031936011261031e57808060018060a01b03600b541660405160208101906306fdde0360e01b825260048152611c6f816120af565b51915afa611c7b61304f565b915015611cd857611c8e610353916130d6565b610f096034604051809373546170696f63612053696e67756c61726974792d60601b6020830152611cc88151809260208686019101611eea565b8101036014810184520182612101565b50610353611ce461307f565b611c8e565b503461031e578060031936011261031e57600f546040805163d6d7d52560e01b8152602060048201529182906001600160a01b0316818581611d2d60248201611ff9565b03925af18015611e665782918391611e26575b508115611dc7578015611d8b57807f9f9192b5edb17356c524e08d9e025c8e2f6307e6ea52fb7968faa3081f51c3c86040948260115580a25b42601355825191151582526020820152f35b60405162461bcd60e51b81526020600482015260146024820152734d61726b65743a20696e76616c6964207261746560601b6044820152606490fd5b509050611dd96013546012549061222c565b4211611dea57604090601154611d79565b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881c985d19481d1bdbc81bdb1960621b6044820152606490fd5b9150506040813d604011611e5e575b81611e4260409383612101565b81010312611161576020611e55826124ca565b91015138611d40565b3d9150611e35565b6040513d84823e3d90fd5b905034611161576040366003190112611161576040602092611e91611eb9565b611e99611ed4565b6001600160a01b0391821683526003865283832091168252845220548152f35b600435906001600160a01b0382168203611ecf57565b600080fd5b602435906001600160a01b0382168203611ecf57565b60005b838110611efd5750506000910152565b8181015183820152602001611eed565b90602091611f2681518092818552858086019101611eea565b601f01601f1916010190565b602435908115158203611ecf57565b60e0906003190112611ecf576001600160a01b03906004358281168103611ecf57916024359081168103611ecf5790604435906064359060843560ff81168103611ecf579060a4359060c43590565b6009811015611fa9576000526007602052604060002090565b634e487b7160e01b600052602160045260246000fd5b90600182811c92168015611fef575b6020831014611fd957565b634e487b7160e01b600052602260045260246000fd5b91607f1691611fce565b6010546000929161200982611fbf565b908181526001928381169081600014612063575060011461202957505050565b9092935060106000526020928360002092846000945b83861061204f5750505050010190565b80548587018301529401938590820161203f565b91935050602093945060ff191683830152151560051b010190565b606081019081106001600160401b0382111761209957604052565b634e487b7160e01b600052604160045260246000fd5b604081019081106001600160401b0382111761209957604052565b61010081019081106001600160401b0382111761209957604052565b608081019081106001600160401b0382111761209957604052565b90601f801991011681019081106001600160401b0382111761209957604052565b6001600160401b03811161209957601f01601f191660200190565b1561214457565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b1561218f57565b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881b9bdd081d985b1a59607a1b6044820152606490fd5b818102929181159184041417156121db57565b634e487b7160e01b600052601160045260246000fd5b81156121fb570490565b634e487b7160e01b600052601260045260246000fd5b604d81116121db57600a0a90565b919082039182116121db57565b919082018092116121db57565b818103929160001380158285131691841216176121db57565b60145491929161229b9161228c9161228291612278906001600160801b038316906121c8565b9060801c906121f1565b93601f54906121c8565b61229583612211565b906121f1565b808310612363576122af6122eb918461221f565b916122e66122e06122d7601e546122d16122c886612211565b6020549061222c565b906121c8565b61229584612211565b91612211565b612239565b6509184e72a000908181029181830514901517156121db57670de0b6b3a7640000918281029281840514901517156121db5780156121fb57600160ff1b918083146000198314166121db570590600082121561235c5781146121db57600003905b808211612357575090565b905090565b509061234c565b505050600090565b9160018060a01b0380931691600093838552602060178152604091828720549081156124bd578783855161239e816120af565b82815201526123ab612b8f565b50505050509190506123be8615156124d7565b6009541683600c54898b52601882526064878c2054918851948593849263442c159960e01b8452600484015260248301528d60448301525afa9081156124b3578991612480575b5091612460612474979899949261243b8861243661242d601898620186a060225404906121c8565b601e54906121c8565b6121f1565b815190936001600160801b03918691612456918416906121c8565b92015116906121f1565b81811061247857035b978352522054612523565b9091565b505082612469565b90508381813d83116124ac575b6124978183612101565b810103126124a85751612460612405565b8880fd5b503d61248d565b85513d8b823e3d90fd5b5086955085949350505050565b51908115158203611ecf57565b156124de57565b60405162461bcd60e51b815260206004820152601e60248201527f4d61726b65743a2065786368616e676552617465206e6f742076616c696400006044820152606490fd5b61252e8215156124d7565b602060018060a01b0360095416916064600c54604051948593849263442c159960e01b845260048401526024830152600060448301525afa9081156125ce5760009161259b575b509061243661258792602254906121c8565b620186a0612597601e54836121c8565b0491565b906020823d82116125c6575b816125b460209383612101565b8101031261031e575051612436612575565b3d91506125a7565b6040513d6000823e3d90fd5b6001600160a01b031660008181526018602052604081205490926125fd91612523565b9183526017602052604083205480156127065781156127065781811061270657828110156126fc57601454612646918391610daf91612278906001600160801b038316906121c8565b90620186a092838302928084048514901517156126e85761266b92916122959161221f565b91601b5491601c549361267e8585612239565b80820291848212600160ff1b8214166126e85781830514901517156126d457058184820194851291129080158216911516176126c05750808212612357575090565b634e487b7160e01b81526011600452602490fd5b634e487b7160e01b83526011600452602483fd5b634e487b7160e01b85526011600452602485fd5b50505050601b5490565b50505090565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316148061280d575b15612767577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f000000000000000000000000000000000000000000000000000000000000000082527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a0815260c081018181106001600160401b038211176120995760405251902090565b507f0000000000000000000000000000000000000000000000000000000000000000461461273e565b1561283d57565b60405162461bcd60e51b815260206004820152601660248201527545524332303a2062616c616e636520746f6f206c6f7760501b6044820152606490fd5b1561288257565b60405162461bcd60e51b815260206004820152601660248201527545524332303a206e6f207a65726f206164647265737360501b6044820152606490fd5b51906001600160a01b0382168203611ecf57565b519060ff82168203611ecf57565b6005811015611fa957806128f35750565b6001810361293b5760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b6044820152606490fd5b600281036129885760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606490fd5b60031461299157565b60405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608490fd5b9291906fa2a8918ca85bafe22016d0b997e4df60600160ff1b038311612a5a5791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa15612a4d5781516001600160a01b03811615612a47579190565b50600190565b50604051903d90823e3d90fd5b50505050600090600390565b7fe50de2333c10a9502fcb1d8ae13a51bbf423153dfc63c2b8997665b32154afc360018060a01b038092169160009083825260036020526040822094169384825260205284604082205580a4565b909160207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259160018060a01b03809416938460005260028352604060002095169485600052825280604060002055604051908152a3565b60405190612b188261207e565b60006040838281528260208201520152565b60405190612b37826120af565b6014546001600160801b038116835260801c6020830152565b60405190612b5d826120af565b6025546001600160801b038116835260801c6020830152565b6001600160801b0391821690821601919082116121db57565b612b97612b0b565b5060006020604051612ba8816120af565b828152015260006020604051612bbd816120af565b828152015260405190612bcf8261207e565b602454916001600160401b038316815260208101926001600160401b038160401c16845260801c60408201528092612c05612b2a565b92612c0e612b50565b92600060018060a01b0360095416600e549460018060801b038751166040519063442c159960e01b8252876004830152602482015260006044820152602081606481865afa80156125ce5760009061301b575b8951612c7792506001600160801b03169061222c565b80612fe6575060005b612c956001600160401b03829351164261221f565b948515612fbc575050426001600160401b031660208a8101919091528801516001600160801b031615612f7257506020670de0b6b3a7640000612cf785612cf28c6001600160401b038d60018060801b03905116915116906121c8565b6121c8565b895191900496906001600160801b0390612d1690828a16908316612b76565b168952875160405163442c159960e01b815260048101929092526001600160801b031660248201526000604482015291829060649082905afa80156125ce57600090612f3e575b8751612d7392506001600160801b03169061222c565b92612da184612436620186a0612d8b601a548a6121c8565b60208c01516001600160801b03169190046121c8565b6040890180519195916001600160801b038088169291612dc49084908316612b76565b16905260208801805190916001600160801b0391612de491908316612b76565b16905280612f09575060005b602a5490938482811015612e8457612e08908361221f565b90670de0b6b3a7640000820291808304670de0b6b3a764000014901517156121db57612436612e5c612e56612e486001600160401b0396612e66966121f1565b93612cf2602e5495806121c8565b8361222c565b91848d51166121c8565b168089526001600160401b03602d5416809110612e805750565b8852565b909150602b54808211612e9657505050565b612e9f9161221f565b670de0b6b3a7640000810290808204670de0b6b3a764000014901517156121db576001600160401b0391612436612ee2612e56612e48612eeb95602c54906121f1565b848d51166121c8565b81602d5460401c16808211612f01575b50168852565b905038612efb565b87516001600160801b0316670de0b6b3a76400008181029291808404909114901517156121db57612f39916121f1565b612df0565b506020813d602011612f6a575b81612f5860209383612101565b81010312611ecf57612d739051612d5d565b3d9150612f4b565b9697939450509350506001600160401b038151166001600160401b03602f5416809103612fb0575b509392612fa5612b50565b926000926000929190565b81526001925038612f9a565b975098505050505092505091612fd0612b2a565b91612fd9612b50565b9160009160009190600090565b88516001600160801b0316670de0b6b3a76400008181029291808404909114901517156121db57613016916121f1565b612c80565b506020813d602011613047575b8161303560209383612101565b81010312611ecf57612c779051612c61565b3d9150613028565b3d1561307a573d9061306082612122565b9161306e6040519384612101565b82523d6000602084013e565b606090565b6040519061308c826120af565b60038252623f3f3f60e81b6020830152565b9081518110156130af570160200190565b634e487b7160e01b600052603260045260246000fd5b60ff1660ff81146121db5760010190565b80516040811061315157508051810190602081818401930312611ecf576020810151906001600160401b038211611ecf570181603f82011215611ecf57602081015161312181612122565b9261312f6040519485612101565b81845260408284010111611ecf5761314e916040602085019101611eea565b90565b60209290830361323f576000805b60ff81168581109081613220575b50156131815761317c906130c5565b61315f565b9260ff8094169261319184612122565b9361319f6040519586612101565b8085526131ae601f1991612122565b013687860137825b85811687811080613203575b156131f8576131f391906131ed6001600160f81b03196131e2838861309e565b5116871a918861309e565b536130c5565b6131b6565b505094505050905090565b506001600160f81b0319613217828661309e565b511615156131c2565b6001600160f81b03199150613235908661309e565b511615153861316d565b91505061314e61307f56feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa26469706673582212201324e883d95715784f23ebd80e84ebeb52319d56457d4edeffc98d6773d4245264736f6c63430008120033"; type SGLCommonConstructorParams = | [signer?: Signer] diff --git a/src/typechain/tapioca-bar/factories/markets/singularity/SGLLendingCommon__factory.ts b/src/typechain/tapioca-bar/factories/markets/singularity/SGLLendingCommon__factory.ts index d9011a98..43de8008 100644 --- a/src/typechain/tapioca-bar/factories/markets/singularity/SGLLendingCommon__factory.ts +++ b/src/typechain/tapioca-bar/factories/markets/singularity/SGLLendingCommon__factory.ts @@ -130,6 +130,25 @@ const _abi = [ name: "InterestElasticityUpdated", type: "event", }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "address", + name: "oldVal", + type: "address", + }, + { + indexed: true, + internalType: "address", + name: "newVal", + type: "address", + }, + ], + name: "LeverageExecutorSet", + type: "event", + }, { anonymous: false, inputs: [ @@ -1143,6 +1162,19 @@ const _abi = [ stateMutability: "view", type: "function", }, + { + inputs: [], + name: "leverageExecutor", + outputs: [ + { + internalType: "contract ILeverageExecutor", + name: "", + type: "address", + }, + ], + stateMutability: "view", + type: "function", + }, { inputs: [], name: "liquidationBonusAmount", @@ -1532,6 +1564,19 @@ const _abi = [ stateMutability: "view", type: "function", }, + { + inputs: [ + { + internalType: "contract ILeverageExecutor", + name: "_executor", + type: "address", + }, + ], + name: "setLeverageExecutor", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, { inputs: [ { @@ -1862,7 +1907,7 @@ const _abi = [ ] as const; const _bytecode = - "0x6101408060405234620001e5576200001781620001ea565b601381526001602082017f546170696f63612053696e67756c617269747900000000000000000000000000815260206040516200005481620001ea565b8381520192603160f81b845251902091208160e052610100918183524660a0526040519160208301907f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f92838352604085015260608401524660808401523060a084015260a0835260c083019280841060018060401b03851117620001cf5760408490525190206080523060c052610120908152600580546001600160a01b0319163390811790915560007f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a362013880601b5562015f90601c55612710601d55612ee06020557f0bd4060688a1800ae986e4840aebc924bb40b5bf44de4583df2257220b54b77c6026557f7d1dc38e60930664f8cbf495da6556ca091d2f92d6550877750c049864b182306027556161a86028556032602f556131f8928362000207843960805183612693015260a0518361275e015260c0518361265d015260e051836126e201525182612708015251816126bf0152f35b634e487b7160e01b600052604160045260246000fd5b600080fd5b604081019081106001600160401b03821117620001cf5760405256fe608080604052600436101561001357600080fd5b600090813560e01c908162a02a2014611dbf5750806302ce728f14611c3757806306fdde0314611b80578063078dfbe714611a7d578063095ea7b314611a565780630c4e84f01461193e57806318160ddd1461191d5780631c9e379b146118e45780631da8bf101461182457806323b872dd14611687578063313ce567146115f5578063331960ff146115d757806334d441d0146115b95780633644e5151461159e57806337b6b7b91461158057806338d52e0f146115575780633ba0b9a9146115395780633f741adb1461151457806340626d8b146114f657806344de240a146114d8578063473e3ce7146114ba57806348e4163e146114815780634d7f2a34146114635780634e71e0c8146113b5578063529898f21461139857806352f353eb14611371578063551402321461134a57806355c2ab941461132057806357935462146113025780635dfe04e8146112a35780636c3d8b8f1461127a57806370a0823114611241578063727785471461120957806374645ff3146111de5780637dc0d1d0146111b55780637ecebe001461117c5780637fa0b84e1461114a578063821226e81461112c5780638285ef40146110fa5780638c5d0ed3146110dc5780638da5cb5b146110b3578063910dd7c814610e9a578063959916dc14610e7c57806395d89b4114610dc257806399a9702814610d925780639c5d719214610d745780639e15e89f14610d39578063a9059cbb14610c56578063b0e21e8a14610c38578063b27c0e7414610bfd578063bb4cfe3b14610bdf578063ce8849ed14610bb6578063d3fb2a381461071e578063d505accf14610579578063d8dfeb4514610550578063dd62ed3e14610505578063de406577146104dc578063e0996cb6146104be578063e30c397814610495578063ea64dd5614610477578063eec0f42e14610459578063f42760b71461043b578063f8ba4cff14610341578063f9557ccb1461030b5763ffe04c66146102eb57600080fd5b346103085780600319360112610308576020602954604051908152f35b80fd5b5034610308578060031936011261030857602454604080516001600160801b038316815260809290921c602083015290f35b0390f35b50346103085780600319360112610308576020604061035e612add565b9397959390929015610402575050506001600160401b03602e541686807f33af5ce86e8438eff54589f85332916444457dfa8685493fbd579b809097026b868851838152a45b6001600160401b038151166001600160401b03851b84830151861b169160018060801b0319958691015160801b1691171760235560018060801b039083838383511692015160801b161760145583511692015160801b161760245580f35b7f33af5ce86e8438eff54589f85332916444457dfa8685493fbd579b809097026b866001600160401b03865116948951908152a46103a4565b50346103085780600319360112610308576020602a54604051908152f35b50346103085780600319360112610308576020600c54604051908152f35b50346103085780600319360112610308576020601f54604051908152f35b50346103085780600319360112610308576006546040516001600160a01b039091168152602090f35b50346103085780600319360112610308576020601d54604051908152f35b50346103085780600319360112610308576009546040516001600160a01b039091168152602090f35b5034610308576040366003190112610308576040602091610524611e07565b61052c611e22565b6001600160a01b039182168352600285528383209116825283522054604051908152f35b5034610308578060031936011261030857600b546040516001600160a01b039091168152602090f35b50346103085761058836611e8f565b908395949542116106d9576001600160a01b03878116808a52600460205260408a20805491969295929060001983146106c5578261066e9694928d92600161066698960190556040519160208301937f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e266855260408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e0815261062a81612018565b51902061063561265a565b9060405190602082019261190160f01b8452602283015260428201526042815261065e81612034565b51902061292f565b919091612830565b16036106805761067d92612a02565b80f35b60405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152606490fd5b634e487b7160e01b8c52601160045260248cfd5b60405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b503461030857610160366003190112610308576001600160a01b0360043581811690819003610bb2576024916001600160401b038335818111610bae5736602382011215610bae578060040135918211610bae5736858383010111610bae5760443593838516809503610baa5761079a8460055416331461208b565b80610b6c575b5084826109ee575b505050816109ae575b505060643580610996575b506084358061097e575b5060a43580610967575b5060c43580610943575b5060e4358061091f575b5061010435806108ee575b50610124358061087b575b50610144359081610809578280f35b601e54821061081c5750601f5538808280f35b60849060326040519162461bcd60e51b8352602060048401528201527f4d61726b65743a206c69717569646174696f6e436f6c6c61746572616c697a616044820152711d1a5bdb94985d19481d1bdbc81cdb585b1b60721b6064820152fd5b61088a620186a08211156120d6565b601f54811161089c57601e55386107fa565b60405162461bcd60e51b8152602060048201526025818401527f4d61726b65743a20636f6c6c61746572616c697a6174696f6e5261746520746f6044820152646f2062696760d81b6064820152608490fd5b806016547fae6e0ab3b95f0a53ff9660a390ccedcbbf1f2355dce974a9841af106fddcfaba8580a3601655386107ef565b61092d620186a082106120d6565b61093a601b5482116120d6565b601c55386107e4565b610951620186a082106120d6565b61095e601c5482106120d6565b601b55386107da565b610975620186a082106120d6565b601d55386107d0565b61098d620186a08211156120d6565b601a55386107c6565b6109a5620186a08211156120d6565b601955386107bc565b816008549182167f5a62d22209e370e38eea92cfddcd228e656e6ec139243392a760a7769f5877fd8680a36001600160a01b0319161760085538806107b1565b82916109fb601054611f0d565b601f8111610afb575b508790601f8411600114610a69578893610a5c575b5050508160011b916000199060031b1c1916176010555b7fa6f004921c944d4b8bf6e38462b00f36a58d62495d56b51f571ab78f732c98158480a13880846107a8565b0101359050843880610a19565b60108952601f19841694507f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae67292509087908960205b878210610adc5750508460019610610ac0575b50505050811b01601055610a30565b60001960f88660031b161c199201013516905538808681610ab1565b8285019093013585556001949094019389929182019190810190610a9e565b6010895290925090507f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae672601f840160051c810160208510610b65575b91849391601f8994920160051c01905b818110610b545750610a04565b898155859450889350600101610b47565b5080610b37565b600f80546001600160a01b0319169190911790557f0b2d6eb667d0522c3eb86e4288afecae6c11591ffd1345d4d12407e0598bca9b8680a1386107a0565b8680fd5b8580fd5b8280fd5b50346103085780600319360112610308576008546040516001600160a01b039091168152602090f35b50346103085780600319360112610308576020601e54604051908152f35b50346103085780600319360112610308576060602354604051906001600160401b0380821683528160401c16602083015260801c6040820152f35b50346103085780600319360112610308576020601a54604051908152f35b503461030857604036600319011261030857610c70611e07565b60243580928115801590610d27575b610cb7575b50506040519182526001600160a01b03169033906000805160206131a383398151915290602090a3602060405160018152f35b33815260016020526040812054610cd083821015612784565b6001600160a01b0384169033829003610ceb575b5050610c84565b604093610d0291610cfd8415156127c9565b61216d565b338352600160205283832055815220610d1c83825461217a565b905581388080610ce4565b50336001600160a01b03841614610c7f565b5034610308576040366003190112610308576060610d61610d58611e07565b602435906122b9565b9060405192835260208301526040820152f35b50346103085780600319360112610308576020602b54604051908152f35b5034610308576040366003190112610308576020610dba610db1611e07565b60243590612528565b604051908152f35b5034610308578060031936011261030857808060018060a01b03600b541660405160208101906395d89b4160e01b825260048152610dff81611ffd565b51915afa610e0b612fa7565b915015610e6b57610e1e61033d9161302e565b610e576023604051809362746d2d60e81b6020830152610e478151809260208686019101611e38565b810103600381018452018261204f565b604051918291602083526020830190611e5b565b5061033d610e77612fd7565b610e1e565b50346103085780600319360112610308576020602f54604051908152f35b5034610308576040366003190112610308576004356001600160401b0381116110af57366023820112156110af57806004013582610ed782612070565b92610ee5604051948561204f565b82845260208401923660248284010111610bb2578060246020930185378401015260243561ffff811681036110ab576101009182848051810103126110a757610f2d90612418565b610f396040850161280e565b91610f466060860161280e565b9460808101519460a082015192610f5f60c08401612822565b9160e0840151930151938042116106d9578515611080577f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e266915b6001600160a01b0388168b52600460205260408b2080549190600019831461106c579161ffff6110299896949261066698969460018401905560405194602086015216604084015260018060a01b038a16606084015260018060a01b038c1660808401528a60a084015260c083015260e082015260e0815261101a81612018565b6020815191012061063561265a565b6001600160a01b0383811691160361068057156110565761067d926001600160a01b039081169116612a02565b61067d926001600160a01b0390811691166129b4565b634e487b7160e01b8d52601160045260248dfd5b7f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d691610f99565b8480fd5b8380fd5b5080fd5b50346103085780600319360112610308576005546040516001600160a01b039091168152602090f35b50346103085780600319360112610308576020601b54604051908152f35b5034610308578060031936011261030857601454604080516001600160801b038316815260809290921c602083015290f35b50346103085780600319360112610308576020602d54604051908152f35b503461030857604036600319011261030857611171611167611e07565b60243590336129b4565b602060405160018152f35b5034610308576020366003190112610308576020906040906001600160a01b036111a4611e07565b168152600483522054604051908152f35b5034610308578060031936011261030857600f546040516001600160a01b039091168152602090f35b503461030857806003193601126103085761033d604051610e578161120281611f47565b038261204f565b50346103085760203660031901126103085760043590600982101561030857602060ff61123584611ede565b54166040519015158152f35b5034610308576020366003190112610308576020906040906001600160a01b03611269611e07565b168152600183522054604051908152f35b5034610308578060031936011261030857600a546040516001600160a01b039091168152602090f35b50346103085780600319360112610308576112bc612a59565b5060806112c7612add565b509350505050604051916001600160401b0380825116845260208201511660208401526040600180861b039101511660408301526060820152f35b50346103085780600319360112610308576020601c54604051908152f35b503461030857806003193601126103085760206001600160401b03602c5460401c16604051908152f35b503461030857806003193601126103085760206001600160401b03602c5416604051908152f35b503461030857806003193601126103085760206001600160401b03602e5416604051908152f35b503461030857806003193601126103085760208054604051908152f35b50346103085780600319360112610308576006546001600160a01b03908181163381900361141f57806005549384167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08680a36001600160a01b0319928316176005551660065580f35b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b50346103085780600319360112610308576020602854604051908152f35b5034610308576020366003190112610308576020906040906001600160a01b036114a9611e07565b168152601783522054604051908152f35b50346103085780600319360112610308576020601554604051908152f35b50346103085780600319360112610308576020600e54604051908152f35b50346103085780600319360112610308576020601654604051908152f35b5034610308576060366003190112610308576020610dba6044356024356004356121a0565b50346103085780600319360112610308576020601154604051908152f35b5034610308578060031936011261030857600d546040516001600160a01b039091168152602090f35b50346103085780600319360112610308576020601254604051908152f35b50346103085780600319360112610308576020610dba61265a565b50346103085780600319360112610308576020601954604051908152f35b50346103085780600319360112610308576020601354604051908152f35b5034610308578060031936011261030857808060018060a01b03600d5416604051602081019063313ce56760e01b82526004815261163281611ffd565b51915afa9061163f612fa7565b918061167c575b156116715760208280518101031261030857506116666020809201612822565b60ff60405191168152f35b505060206012611666565b506020825114611646565b5034610308576060366003190112610308576116a1611e07565b906116aa611e22565b60443591826116e8575b506040519182526001600160a01b039081169216906000805160206131a383398151915290602090a3602060405160018152f35b6001600160a01b0384811680835260016020908152604084205492869061171182861015612784565b861693848403611726575b50505050506116b4565b838652600283526040808720338852845286205460018101611790575b509260016020969361176e8794604097610cfd6000805160206131a38339815191529c9a15156127c9565b928552528383205581522061178485825461217a565b9055913880858161171c565b909181106117e4579260016020969361176e8a6000805160206131a38339815191529a98956117c18260409a61216d565b86895260028552898920338a528552898920559497509497995050939650611743565b60405162461bcd60e51b815260048101849052601860248201527745524332303a20616c6c6f77616e636520746f6f206c6f7760401b6044820152606490fd5b50346103085761183336611e8f565b908395949542116106d9576001600160a01b03878116808a52600460205260408a20805491969295929060001983146106c557826118d59694928d92600161066698960190556040519160208301937f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d6855260408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e0815261062a81612018565b16036106805761067d926129b4565b5034610308576020366003190112610308576020906040906001600160a01b0361190c611e07565b168152601883522054604051908152f35b5034610308578060031936011261030857602060245460801c604051908152f35b50346103085760403660031901126103085760043560098110156110af57611964611e80565b6008549091906001600160a01b03163303611a1a5760ff61198482611ede565b541615159115159182146119e057808260ff6119a26119d094611ede565b54161515827feeec81de25875ce1725479bb76f720a8defdb43dea041919ae37bb4aae9847c08780a4611ede565b9060ff8019835416911617905580f35b60405162461bcd60e51b81526020600482015260126024820152714d61726b65743a2073616d6520737461746560701b6044820152606490fd5b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881d5b985d5d1a1bdc9a5e995960621b6044820152606490fd5b503461030857604036600319011261030857611171611a73611e07565b6024359033612a02565b503461030857606036600319011261030857611a97611e07565b611a9f611e80565b6044359081151582036110ab5760018060a01b03928391611ac58360055416331461208b565b15611b69571690811590811591611b61575b5015611b2457806005549283167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08580a36001600160a01b03199182161760055560068054909116905580f35b60405162461bcd60e51b81526020600482015260156024820152744f776e61626c653a207a65726f206164647265737360581b6044820152606490fd5b905038611ad7565b9150501660018060a01b0319600654161760065580f35b5034610308578060031936011261030857808060018060a01b03600b541660405160208101906306fdde0360e01b825260048152611bbd81611ffd565b51915afa611bc9612fa7565b915015611c2657611bdc61033d9161302e565b610e576034604051809373546170696f63612053696e67756c61726974792d60601b6020830152611c168151809260208686019101611e38565b810103601481018452018261204f565b5061033d611c32612fd7565b611bdc565b5034610308578060031936011261030857600f546040805163d6d7d52560e01b8152602060048201529182906001600160a01b0316818581611c7b60248201611f47565b03925af18015611db45782918391611d74575b508115611d15578015611cd957807f9f9192b5edb17356c524e08d9e025c8e2f6307e6ea52fb7968faa3081f51c3c86040948260115580a25b42601355825191151582526020820152f35b60405162461bcd60e51b81526020600482015260146024820152734d61726b65743a20696e76616c6964207261746560601b6044820152606490fd5b509050611d276013546012549061217a565b4211611d3857604090601154611cc7565b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881c985d19481d1bdbc81bdb1960621b6044820152606490fd5b9150506040813d604011611dac575b81611d906040938361204f565b810103126110af576020611da382612418565b91015138611c8e565b3d9150611d83565b6040513d84823e3d90fd5b9050346110af5760403660031901126110af576040602092611ddf611e07565b611de7611e22565b6001600160a01b0391821683526003865283832091168252845220548152f35b600435906001600160a01b0382168203611e1d57565b600080fd5b602435906001600160a01b0382168203611e1d57565b60005b838110611e4b5750506000910152565b8181015183820152602001611e3b565b90602091611e7481518092818552858086019101611e38565b601f01601f1916010190565b602435908115158203611e1d57565b60e0906003190112611e1d576001600160a01b03906004358281168103611e1d57916024359081168103611e1d5790604435906064359060843560ff81168103611e1d579060a4359060c43590565b6009811015611ef7576000526007602052604060002090565b634e487b7160e01b600052602160045260246000fd5b90600182811c92168015611f3d575b6020831014611f2757565b634e487b7160e01b600052602260045260246000fd5b91607f1691611f1c565b60105460009291611f5782611f0d565b908181526001928381169081600014611fb15750600114611f7757505050565b9092935060106000526020928360002092846000945b838610611f9d5750505050010190565b805485870183015294019385908201611f8d565b91935050602093945060ff191683830152151560051b010190565b606081019081106001600160401b03821117611fe757604052565b634e487b7160e01b600052604160045260246000fd5b604081019081106001600160401b03821117611fe757604052565b61010081019081106001600160401b03821117611fe757604052565b608081019081106001600160401b03821117611fe757604052565b90601f801991011681019081106001600160401b03821117611fe757604052565b6001600160401b038111611fe757601f01601f191660200190565b1561209257565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b156120dd57565b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881b9bdd081d985b1a59607a1b6044820152606490fd5b8181029291811591840414171561212957565b634e487b7160e01b600052601160045260246000fd5b8115612149570490565b634e487b7160e01b600052601260045260246000fd5b604d811161212957600a0a90565b9190820391821161212957565b9190820180921161212957565b8181039291600013801582851316918412161761212957565b6014549192916121e9916121da916121d0916121c6906001600160801b03831690612116565b9060801c9061213f565b93601f5490612116565b6121e38361215f565b9061213f565b8083106122b1576121fd612239918461216d565b9161223461222e612225601e5461221f6122168661215f565b6020549061217a565b90612116565b6121e38461215f565b9161215f565b612187565b6509184e72a0009081810291818305149015171561212957670de0b6b3a76400009182810292818405149015171561212957801561214957600160ff1b9180831460001983141661212957059060008212156122aa57811461212957600003905b8082116122a5575090565b905090565b509061229a565b505050600090565b9160018060a01b03809316916000938385526020601781526040918287205490811561240b57878385516122ec81611ffd565b82815201526122f9612add565b505050505091905061230c861515612425565b6009541683600c54898b52601882526064878c2054918851948593849263442c159960e01b8452600484015260248301528d60448301525afa9081156124015789916123ce575b50916123ae6123c297989994926123898861238461237b601898620186a06021540490612116565b601e5490612116565b61213f565b815190936001600160801b039186916123a491841690612116565b920151169061213f565b8181106123c657035b978352522054612471565b9091565b5050826123b7565b90508381813d83116123fa575b6123e5818361204f565b810103126123f657516123ae612353565b8880fd5b503d6123db565b85513d8b823e3d90fd5b5086955085949350505050565b51908115158203611e1d57565b1561242c57565b60405162461bcd60e51b815260206004820152601e60248201527f4d61726b65743a2065786368616e676552617465206e6f742076616c696400006044820152606490fd5b61247c821515612425565b602060018060a01b0360095416916064600c54604051948593849263442c159960e01b845260048401526024830152600060448301525afa90811561251c576000916124e9575b50906123846124d59260215490612116565b620186a06124e5601e5483612116565b0491565b906020823d8211612514575b816125026020938361204f565b810103126103085750516123846124c3565b3d91506124f5565b6040513d6000823e3d90fd5b6001600160a01b0316600081815260186020526040812054909261254b91612471565b91835260176020526040832054801561265457811561265457818110612654578281101561264a57601454612594918391610cfd916121c6906001600160801b03831690612116565b90620186a09283830292808404851490151715612636576125b992916121e39161216d565b91601b5491601c54936125cc8585612187565b80820291848212600160ff1b821416612636578183051490151715612622570581848201948512911290801582169115161761260e57508082126122a5575090565b634e487b7160e01b81526011600452602490fd5b634e487b7160e01b83526011600452602483fd5b634e487b7160e01b85526011600452602485fd5b50505050601b5490565b50505090565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316148061275b575b156126b5577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f000000000000000000000000000000000000000000000000000000000000000082527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a0815260c081018181106001600160401b03821117611fe75760405251902090565b507f0000000000000000000000000000000000000000000000000000000000000000461461268c565b1561278b57565b60405162461bcd60e51b815260206004820152601660248201527545524332303a2062616c616e636520746f6f206c6f7760501b6044820152606490fd5b156127d057565b60405162461bcd60e51b815260206004820152601660248201527545524332303a206e6f207a65726f206164647265737360501b6044820152606490fd5b51906001600160a01b0382168203611e1d57565b519060ff82168203611e1d57565b6005811015611ef757806128415750565b600181036128895760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b6044820152606490fd5b600281036128d65760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606490fd5b6003146128df57565b60405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608490fd5b9291906fa2a8918ca85bafe22016d0b997e4df60600160ff1b0383116129a85791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa1561299b5781516001600160a01b03811615612995579190565b50600190565b50604051903d90823e3d90fd5b50505050600090600390565b7fe50de2333c10a9502fcb1d8ae13a51bbf423153dfc63c2b8997665b32154afc360018060a01b038092169160009083825260036020526040822094169384825260205284604082205580a4565b909160207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259160018060a01b03809416938460005260028352604060002095169485600052825280604060002055604051908152a3565b60405190612a6682611fcc565b60006040838281528260208201520152565b60405190612a8582611ffd565b6014546001600160801b038116835260801c6020830152565b60405190612aab82611ffd565b6024546001600160801b038116835260801c6020830152565b6001600160801b03918216908216019190821161212957565b612ae5612a59565b5060006020604051612af681611ffd565b828152015260006020604051612b0b81611ffd565b8281520152604051612b1c81611fcc565b6023546001600160401b03811682526001600160401b038160401c16602083015260801c60408201528091612b4f612a78565b91612b58612a9e565b600954600e54825160405163442c159960e01b8152600481018390526001600160801b03909116602482015260006044820181905293959194919391926001600160a01b031690602081606481855afa801561251c57600090612f73575b8851612bcc92506001600160801b03169061217a565b80612f3e575060005b80612bed6001600160401b036020870151164261216d565b948515612f14575050426001600160401b031660208a8101919091528801516001600160801b031615612eca57506020670de0b6b3a7640000612c4f85612c4a8c6001600160401b038d60018060801b0390511691511690612116565b612116565b895191900496906001600160801b0390612c6e90828a16908316612ac4565b168952875160405163442c159960e01b815260048101929092526001600160801b031660248201526000604482015291829060649082905afa801561251c57600090612e96575b8751612ccb92506001600160801b03169061217a565b92612cf984612384620186a0612ce3601a548a612116565b60208c01516001600160801b0316919004612116565b6040890180519195916001600160801b038088169291612d1c9084908316612ac4565b16905260208801805190916001600160801b0391612d3c91908316612ac4565b16905280612e61575060005b60295490938482811015612ddc57612d60908361216d565b90670de0b6b3a7640000820291808304670de0b6b3a7640000149015171561212957612384612db4612dae612da06001600160401b0396612dbe9661213f565b93612c4a602d549580612116565b8361217a565b91848d5116612116565b168089526001600160401b03602c5416809110612dd85750565b8852565b909150602a54808211612dee57505050565b612df79161216d565b670de0b6b3a7640000810290808204670de0b6b3a76400001490151715612129576001600160401b0391612384612e3a612dae612da0612e4395602b549061213f565b848d5116612116565b81602c5460401c16808211612e59575b50168852565b905038612e53565b87516001600160801b0316670de0b6b3a764000081810292918084049091149015171561212957612e919161213f565b612d48565b506020813d602011612ec2575b81612eb06020938361204f565b81010312611e1d57612ccb9051612cb5565b3d9150612ea3565b9697939450509350506001600160401b038151166001600160401b03602e5416809103612f08575b509392612efd612a9e565b926000926000929190565b81526001925038612ef2565b975098505050505092505091612f28612a78565b91612f31612a9e565b9160009160009190600090565b87516001600160801b0316670de0b6b3a764000081810292918084049091149015171561212957612f6e9161213f565b612bd5565b506020813d602011612f9f575b81612f8d6020938361204f565b81010312611e1d57612bcc9051612bb6565b3d9150612f80565b3d15612fd2573d90612fb882612070565b91612fc6604051938461204f565b82523d6000602084013e565b606090565b60405190612fe482611ffd565b60038252623f3f3f60e81b6020830152565b908151811015613007570160200190565b634e487b7160e01b600052603260045260246000fd5b60ff1660ff81146121295760010190565b8051604081106130a957508051810190602081818401930312611e1d576020810151906001600160401b038211611e1d570181603f82011215611e1d57602081015161307981612070565b92613087604051948561204f565b81845260408284010111611e1d576130a6916040602085019101611e38565b90565b602092908303613197576000805b60ff81168581109081613178575b50156130d9576130d49061301d565b6130b7565b9260ff809416926130e984612070565b936130f7604051958661204f565b808552613106601f1991612070565b013687860137825b8581168781108061315b575b156131505761314b91906131456001600160f81b031961313a8388612ff6565b5116871a9188612ff6565b5361301d565b61310e565b505094505050905090565b506001600160f81b031961316f8286612ff6565b5116151561311a565b6001600160f81b0319915061318d9086612ff6565b51161515386130c5565b9150506130a6612fd756feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa26469706673582212209cb35f7a6fa2711bdb911fbb1801dbf316a9429fa6646759b4239276fd4f8da564736f6c63430008120033"; + "0x6101408060405234620001e5576200001781620001ea565b601381526001602082017f546170696f63612053696e67756c617269747900000000000000000000000000815260206040516200005481620001ea565b8381520192603160f81b845251902091208160e052610100918183524660a0526040519160208301907f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f92838352604085015260608401524660808401523060a084015260a0835260c083019280841060018060401b03851117620001cf5760408490525190206080523060c052610120908152600580546001600160a01b0319163390811790915560007f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a362013880601b5562015f90601c55612710601d55612ee06020557f0bd4060688a1800ae986e4840aebc924bb40b5bf44de4583df2257220b54b77c6027557f7d1dc38e60930664f8cbf495da6556ca091d2f92d6550877750c049864b182306028556161a860295560326030556132a0928362000207843960805183612745015260a05183612810015260c0518361270f015260e05183612794015251826127ba015251816127710152f35b634e487b7160e01b600052604160045260246000fd5b600080fd5b604081019081106001600160401b03821117620001cf5760405256fe608080604052600436101561001357600080fd5b600090813560e01c908162a02a2014611e715750806302ce728f14611ce957806306fdde0314611c32578063078dfbe714611b2f578063095ea7b314611b085780630c4e84f0146119f057806318160ddd146119cf5780631c9e379b146119965780631da8bf10146118d657806323b872dd14611739578063313ce567146116a7578063331960ff1461168957806334d441d01461166b5780633644e5151461165057806337b6b7b91461163257806338d52e0f146116095780633ba0b9a9146115eb5780633f741adb146115c657806340626d8b146115a857806344de240a1461158a578063473e3ce71461156c57806348e4163e146115335780634d7f2a34146115155780634e71e0c814611467578063529898f21461144a57806352f353eb1461142357806355140232146113fc57806355c2ab94146113d257806357935462146113b45780635dfe04e8146113555780636c3d8b8f1461132c57806370a08231146112f357806372778547146112bb57806374645ff3146112905780637dc0d1d0146112675780637ecebe001461122e5780637fa0b84e146111fc578063821226e8146111de5780638285ef40146111ac5780638c5d0ed31461118e5780638da5cb5b14611165578063910dd7c814610f4c578063959916dc14610f2e57806395d89b4114610e7457806399a9702814610e445780639c5d719214610e265780639e15e89f14610deb578063a9059cbb14610d08578063b0e21e8a14610cea578063b27c0e7414610caf578063bb4cfe3b14610c91578063ce8849ed14610c68578063d3fb2a38146107d4578063d505accf1461062f578063d8dfeb4514610606578063da863f0e146105dd578063dd62ed3e14610592578063de40657714610569578063e0996cb61461054b578063e30c397814610522578063ea64dd5614610504578063eec0f42e146104e6578063ef2b234a1461046f578063f42760b714610451578063f8ba4cff14610357578063f9557ccb146103215763ffe04c661461030157600080fd5b3461031e578060031936011261031e576020602a54604051908152f35b80fd5b503461031e578060031936011261031e57602554604080516001600160801b038316815260809290921c602083015290f35b0390f35b503461031e578060031936011261031e5760206040610374612b8f565b9397959390929015610418575050506001600160401b03602f541686807f33af5ce86e8438eff54589f85332916444457dfa8685493fbd579b809097026b868851838152a45b6001600160401b038151166001600160401b03851b84830151861b169160018060801b0319958691015160801b1691171760245560018060801b039083838383511692015160801b161760145583511692015160801b161760255580f35b7f33af5ce86e8438eff54589f85332916444457dfa8685493fbd579b809097026b866001600160401b03865116948951908152a46103ba565b503461031e578060031936011261031e576020602b54604051908152f35b503461031e57602036600319011261031e576004356001600160a01b03818116918290036104e2576104a68160055416331461213d565b816021549182167ffb4fd7114609dd603b57adbc2082205bfbbcabf9265c4b437b472f5c592b8cd78580a36001600160a01b0319161760215580f35b8280fd5b503461031e578060031936011261031e576020600c54604051908152f35b503461031e578060031936011261031e576020601f54604051908152f35b503461031e578060031936011261031e576006546040516001600160a01b039091168152602090f35b503461031e578060031936011261031e576020601d54604051908152f35b503461031e578060031936011261031e576009546040516001600160a01b039091168152602090f35b503461031e57604036600319011261031e5760406020916105b1611eb9565b6105b9611ed4565b6001600160a01b039182168352600285528383209116825283522054604051908152f35b503461031e578060031936011261031e576021546040516001600160a01b039091168152602090f35b503461031e578060031936011261031e57600b546040516001600160a01b039091168152602090f35b503461031e5761063e36611f41565b9083959495421161078f576001600160a01b03878116808a52600460205260408a208054919692959290600019831461077b57826107249694928d92600161071c98960190556040519160208301937f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e266855260408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e081526106e0816120ca565b5190206106eb61270c565b9060405190602082019261190160f01b84526022830152604282015260428152610714816120e6565b5190206129e1565b9190916128e2565b16036107365761073392612ab4565b80f35b60405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152606490fd5b634e487b7160e01b8c52601160045260248cfd5b60405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b503461031e5761016036600319011261031e576001600160a01b03600435818116908190036104e2576024916001600160401b038335818111610c645736602382011215610c64578060040135918211610c645736858383010111610c645760443593838516809503610c60576108508460055416331461213d565b80610c22575b508482610aa4575b50505081610a64575b505060643580610a4c575b5060843580610a34575b5060a43580610a1d575b5060c435806109f9575b5060e435806109d5575b5061010435806109a4575b506101243580610931575b506101443590816108bf578280f35b601e5482106108d25750601f5538808280f35b60849060326040519162461bcd60e51b8352602060048401528201527f4d61726b65743a206c69717569646174696f6e436f6c6c61746572616c697a616044820152711d1a5bdb94985d19481d1bdbc81cdb585b1b60721b6064820152fd5b610940620186a0821115612188565b601f54811161095257601e55386108b0565b60405162461bcd60e51b8152602060048201526025818401527f4d61726b65743a20636f6c6c61746572616c697a6174696f6e5261746520746f6044820152646f2062696760d81b6064820152608490fd5b806016547fae6e0ab3b95f0a53ff9660a390ccedcbbf1f2355dce974a9841af106fddcfaba8580a3601655386108a5565b6109e3620186a08210612188565b6109f0601b548211612188565b601c553861089a565b610a07620186a08210612188565b610a14601c548210612188565b601b5538610890565b610a2b620186a08210612188565b601d5538610886565b610a43620186a0821115612188565b601a553861087c565b610a5b620186a0821115612188565b60195538610872565b816008549182167f5a62d22209e370e38eea92cfddcd228e656e6ec139243392a760a7769f5877fd8680a36001600160a01b031916176008553880610867565b8291610ab1601054611fbf565b601f8111610bb1575b508790601f8411600114610b1f578893610b12575b5050508160011b916000199060031b1c1916176010555b7fa6f004921c944d4b8bf6e38462b00f36a58d62495d56b51f571ab78f732c98158480a138808461085e565b0101359050843880610acf565b60108952601f19841694507f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae67292509087908960205b878210610b925750508460019610610b76575b50505050811b01601055610ae6565b60001960f88660031b161c199201013516905538808681610b67565b8285019093013585556001949094019389929182019190810190610b54565b6010895290925090507f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae672601f840160051c810160208510610c1b575b91849391601f8994920160051c01905b818110610c0a5750610aba565b898155859450889350600101610bfd565b5080610bed565b600f80546001600160a01b0319169190911790557f0b2d6eb667d0522c3eb86e4288afecae6c11591ffd1345d4d12407e0598bca9b8680a138610856565b8680fd5b8580fd5b503461031e578060031936011261031e576008546040516001600160a01b039091168152602090f35b503461031e578060031936011261031e576020601e54604051908152f35b503461031e578060031936011261031e576060602454604051906001600160401b0380821683528160401c16602083015260801c6040820152f35b503461031e578060031936011261031e576020601a54604051908152f35b503461031e57604036600319011261031e57610d22611eb9565b60243580928115801590610dd9575b610d69575b50506040519182526001600160a01b031690339060008051602061324b83398151915290602090a3602060405160018152f35b33815260016020526040812054610d8283821015612836565b6001600160a01b0384169033829003610d9d575b5050610d36565b604093610db491610daf84151561287b565b61221f565b338352600160205283832055815220610dce83825461222c565b905581388080610d96565b50336001600160a01b03841614610d31565b503461031e57604036600319011261031e576060610e13610e0a611eb9565b6024359061236b565b9060405192835260208301526040820152f35b503461031e578060031936011261031e576020602c54604051908152f35b503461031e57604036600319011261031e576020610e6c610e63611eb9565b602435906125da565b604051908152f35b503461031e578060031936011261031e57808060018060a01b03600b541660405160208101906395d89b4160e01b825260048152610eb1816120af565b51915afa610ebd61304f565b915015610f1d57610ed0610353916130d6565b610f096023604051809362746d2d60e81b6020830152610ef98151809260208686019101611eea565b8101036003810184520182612101565b604051918291602083526020830190611f0d565b50610353610f2961307f565b610ed0565b503461031e578060031936011261031e576020603054604051908152f35b503461031e57604036600319011261031e576004356001600160401b038111611161573660238201121561116157806004013582610f8982612122565b92610f976040519485612101565b828452602084019236602482840101116104e2578060246020930185378401015260243561ffff8116810361115d5761010091828480518101031261115957610fdf906124ca565b610feb604085016128c0565b91610ff8606086016128c0565b9460808101519460a08201519261101160c084016128d4565b9160e08401519301519380421161078f578515611132577f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e266915b6001600160a01b0388168b52600460205260408b2080549190600019831461111e579161ffff6110db9896949261071c98969460018401905560405194602086015216604084015260018060a01b038a16606084015260018060a01b038c1660808401528a60a084015260c083015260e082015260e081526110cc816120ca565b602081519101206106eb61270c565b6001600160a01b03838116911603610736571561110857610733926001600160a01b039081169116612ab4565b610733926001600160a01b039081169116612a66565b634e487b7160e01b8d52601160045260248dfd5b7f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d69161104b565b8480fd5b8380fd5b5080fd5b503461031e578060031936011261031e576005546040516001600160a01b039091168152602090f35b503461031e578060031936011261031e576020601b54604051908152f35b503461031e578060031936011261031e57601454604080516001600160801b038316815260809290921c602083015290f35b503461031e578060031936011261031e576020602e54604051908152f35b503461031e57604036600319011261031e57611223611219611eb9565b6024359033612a66565b602060405160018152f35b503461031e57602036600319011261031e576020906040906001600160a01b03611256611eb9565b168152600483522054604051908152f35b503461031e578060031936011261031e57600f546040516001600160a01b039091168152602090f35b503461031e578060031936011261031e57610353604051610f09816112b481611ff9565b0382612101565b503461031e57602036600319011261031e5760043590600982101561031e57602060ff6112e784611f90565b54166040519015158152f35b503461031e57602036600319011261031e576020906040906001600160a01b0361131b611eb9565b168152600183522054604051908152f35b503461031e578060031936011261031e57600a546040516001600160a01b039091168152602090f35b503461031e578060031936011261031e5761136e612b0b565b506080611379612b8f565b509350505050604051916001600160401b0380825116845260208201511660208401526040600180861b039101511660408301526060820152f35b503461031e578060031936011261031e576020601c54604051908152f35b503461031e578060031936011261031e5760206001600160401b03602d5460401c16604051908152f35b503461031e578060031936011261031e5760206001600160401b03602d5416604051908152f35b503461031e578060031936011261031e5760206001600160401b03602f5416604051908152f35b503461031e578060031936011261031e5760208054604051908152f35b503461031e578060031936011261031e576006546001600160a01b0390818116338190036114d157806005549384167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08680a36001600160a01b0319928316176005551660065580f35b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b503461031e578060031936011261031e576020602954604051908152f35b503461031e57602036600319011261031e576020906040906001600160a01b0361155b611eb9565b168152601783522054604051908152f35b503461031e578060031936011261031e576020601554604051908152f35b503461031e578060031936011261031e576020600e54604051908152f35b503461031e578060031936011261031e576020601654604051908152f35b503461031e57606036600319011261031e576020610e6c604435602435600435612252565b503461031e578060031936011261031e576020601154604051908152f35b503461031e578060031936011261031e57600d546040516001600160a01b039091168152602090f35b503461031e578060031936011261031e576020601254604051908152f35b503461031e578060031936011261031e576020610e6c61270c565b503461031e578060031936011261031e576020601954604051908152f35b503461031e578060031936011261031e576020601354604051908152f35b503461031e578060031936011261031e57808060018060a01b03600d5416604051602081019063313ce56760e01b8252600481526116e4816120af565b51915afa906116f161304f565b918061172e575b156117235760208280518101031261031e575061171860208092016128d4565b60ff60405191168152f35b505060206012611718565b5060208251146116f8565b503461031e57606036600319011261031e57611753611eb9565b9061175c611ed4565b604435918261179a575b506040519182526001600160a01b0390811692169060008051602061324b83398151915290602090a3602060405160018152f35b6001600160a01b038481168083526001602090815260408420549286906117c382861015612836565b8616938484036117d8575b5050505050611766565b838652600283526040808720338852845286205460018101611842575b50926001602096936118208794604097610daf60008051602061324b8339815191529c9a151561287b565b928552528383205581522061183685825461222c565b905591388085816117ce565b9091811061189657926001602096936118208a60008051602061324b8339815191529a98956118738260409a61221f565b86895260028552898920338a5285528989205594975094979950509396506117f5565b60405162461bcd60e51b815260048101849052601860248201527745524332303a20616c6c6f77616e636520746f6f206c6f7760401b6044820152606490fd5b503461031e576118e536611f41565b9083959495421161078f576001600160a01b03878116808a52600460205260408a208054919692959290600019831461077b57826119879694928d92600161071c98960190556040519160208301937f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d6855260408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e081526106e0816120ca565b16036107365761073392612a66565b503461031e57602036600319011261031e576020906040906001600160a01b036119be611eb9565b168152601883522054604051908152f35b503461031e578060031936011261031e57602060255460801c604051908152f35b503461031e57604036600319011261031e57600435600981101561116157611a16611f32565b6008549091906001600160a01b03163303611acc5760ff611a3682611f90565b54161515911515918214611a9257808260ff611a54611a8294611f90565b54161515827feeec81de25875ce1725479bb76f720a8defdb43dea041919ae37bb4aae9847c08780a4611f90565b9060ff8019835416911617905580f35b60405162461bcd60e51b81526020600482015260126024820152714d61726b65743a2073616d6520737461746560701b6044820152606490fd5b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881d5b985d5d1a1bdc9a5e995960621b6044820152606490fd5b503461031e57604036600319011261031e57611223611b25611eb9565b6024359033612ab4565b503461031e57606036600319011261031e57611b49611eb9565b611b51611f32565b60443590811515820361115d5760018060a01b03928391611b778360055416331461213d565b15611c1b571690811590811591611c13575b5015611bd657806005549283167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08580a36001600160a01b03199182161760055560068054909116905580f35b60405162461bcd60e51b81526020600482015260156024820152744f776e61626c653a207a65726f206164647265737360581b6044820152606490fd5b905038611b89565b9150501660018060a01b0319600654161760065580f35b503461031e578060031936011261031e57808060018060a01b03600b541660405160208101906306fdde0360e01b825260048152611c6f816120af565b51915afa611c7b61304f565b915015611cd857611c8e610353916130d6565b610f096034604051809373546170696f63612053696e67756c61726974792d60601b6020830152611cc88151809260208686019101611eea565b8101036014810184520182612101565b50610353611ce461307f565b611c8e565b503461031e578060031936011261031e57600f546040805163d6d7d52560e01b8152602060048201529182906001600160a01b0316818581611d2d60248201611ff9565b03925af18015611e665782918391611e26575b508115611dc7578015611d8b57807f9f9192b5edb17356c524e08d9e025c8e2f6307e6ea52fb7968faa3081f51c3c86040948260115580a25b42601355825191151582526020820152f35b60405162461bcd60e51b81526020600482015260146024820152734d61726b65743a20696e76616c6964207261746560601b6044820152606490fd5b509050611dd96013546012549061222c565b4211611dea57604090601154611d79565b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881c985d19481d1bdbc81bdb1960621b6044820152606490fd5b9150506040813d604011611e5e575b81611e4260409383612101565b81010312611161576020611e55826124ca565b91015138611d40565b3d9150611e35565b6040513d84823e3d90fd5b905034611161576040366003190112611161576040602092611e91611eb9565b611e99611ed4565b6001600160a01b0391821683526003865283832091168252845220548152f35b600435906001600160a01b0382168203611ecf57565b600080fd5b602435906001600160a01b0382168203611ecf57565b60005b838110611efd5750506000910152565b8181015183820152602001611eed565b90602091611f2681518092818552858086019101611eea565b601f01601f1916010190565b602435908115158203611ecf57565b60e0906003190112611ecf576001600160a01b03906004358281168103611ecf57916024359081168103611ecf5790604435906064359060843560ff81168103611ecf579060a4359060c43590565b6009811015611fa9576000526007602052604060002090565b634e487b7160e01b600052602160045260246000fd5b90600182811c92168015611fef575b6020831014611fd957565b634e487b7160e01b600052602260045260246000fd5b91607f1691611fce565b6010546000929161200982611fbf565b908181526001928381169081600014612063575060011461202957505050565b9092935060106000526020928360002092846000945b83861061204f5750505050010190565b80548587018301529401938590820161203f565b91935050602093945060ff191683830152151560051b010190565b606081019081106001600160401b0382111761209957604052565b634e487b7160e01b600052604160045260246000fd5b604081019081106001600160401b0382111761209957604052565b61010081019081106001600160401b0382111761209957604052565b608081019081106001600160401b0382111761209957604052565b90601f801991011681019081106001600160401b0382111761209957604052565b6001600160401b03811161209957601f01601f191660200190565b1561214457565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b1561218f57565b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881b9bdd081d985b1a59607a1b6044820152606490fd5b818102929181159184041417156121db57565b634e487b7160e01b600052601160045260246000fd5b81156121fb570490565b634e487b7160e01b600052601260045260246000fd5b604d81116121db57600a0a90565b919082039182116121db57565b919082018092116121db57565b818103929160001380158285131691841216176121db57565b60145491929161229b9161228c9161228291612278906001600160801b038316906121c8565b9060801c906121f1565b93601f54906121c8565b61229583612211565b906121f1565b808310612363576122af6122eb918461221f565b916122e66122e06122d7601e546122d16122c886612211565b6020549061222c565b906121c8565b61229584612211565b91612211565b612239565b6509184e72a000908181029181830514901517156121db57670de0b6b3a7640000918281029281840514901517156121db5780156121fb57600160ff1b918083146000198314166121db570590600082121561235c5781146121db57600003905b808211612357575090565b905090565b509061234c565b505050600090565b9160018060a01b0380931691600093838552602060178152604091828720549081156124bd578783855161239e816120af565b82815201526123ab612b8f565b50505050509190506123be8615156124d7565b6009541683600c54898b52601882526064878c2054918851948593849263442c159960e01b8452600484015260248301528d60448301525afa9081156124b3578991612480575b5091612460612474979899949261243b8861243661242d601898620186a060225404906121c8565b601e54906121c8565b6121f1565b815190936001600160801b03918691612456918416906121c8565b92015116906121f1565b81811061247857035b978352522054612523565b9091565b505082612469565b90508381813d83116124ac575b6124978183612101565b810103126124a85751612460612405565b8880fd5b503d61248d565b85513d8b823e3d90fd5b5086955085949350505050565b51908115158203611ecf57565b156124de57565b60405162461bcd60e51b815260206004820152601e60248201527f4d61726b65743a2065786368616e676552617465206e6f742076616c696400006044820152606490fd5b61252e8215156124d7565b602060018060a01b0360095416916064600c54604051948593849263442c159960e01b845260048401526024830152600060448301525afa9081156125ce5760009161259b575b509061243661258792602254906121c8565b620186a0612597601e54836121c8565b0491565b906020823d82116125c6575b816125b460209383612101565b8101031261031e575051612436612575565b3d91506125a7565b6040513d6000823e3d90fd5b6001600160a01b031660008181526018602052604081205490926125fd91612523565b9183526017602052604083205480156127065781156127065781811061270657828110156126fc57601454612646918391610daf91612278906001600160801b038316906121c8565b90620186a092838302928084048514901517156126e85761266b92916122959161221f565b91601b5491601c549361267e8585612239565b80820291848212600160ff1b8214166126e85781830514901517156126d457058184820194851291129080158216911516176126c05750808212612357575090565b634e487b7160e01b81526011600452602490fd5b634e487b7160e01b83526011600452602483fd5b634e487b7160e01b85526011600452602485fd5b50505050601b5490565b50505090565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316148061280d575b15612767577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f000000000000000000000000000000000000000000000000000000000000000082527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a0815260c081018181106001600160401b038211176120995760405251902090565b507f0000000000000000000000000000000000000000000000000000000000000000461461273e565b1561283d57565b60405162461bcd60e51b815260206004820152601660248201527545524332303a2062616c616e636520746f6f206c6f7760501b6044820152606490fd5b1561288257565b60405162461bcd60e51b815260206004820152601660248201527545524332303a206e6f207a65726f206164647265737360501b6044820152606490fd5b51906001600160a01b0382168203611ecf57565b519060ff82168203611ecf57565b6005811015611fa957806128f35750565b6001810361293b5760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b6044820152606490fd5b600281036129885760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606490fd5b60031461299157565b60405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608490fd5b9291906fa2a8918ca85bafe22016d0b997e4df60600160ff1b038311612a5a5791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa15612a4d5781516001600160a01b03811615612a47579190565b50600190565b50604051903d90823e3d90fd5b50505050600090600390565b7fe50de2333c10a9502fcb1d8ae13a51bbf423153dfc63c2b8997665b32154afc360018060a01b038092169160009083825260036020526040822094169384825260205284604082205580a4565b909160207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259160018060a01b03809416938460005260028352604060002095169485600052825280604060002055604051908152a3565b60405190612b188261207e565b60006040838281528260208201520152565b60405190612b37826120af565b6014546001600160801b038116835260801c6020830152565b60405190612b5d826120af565b6025546001600160801b038116835260801c6020830152565b6001600160801b0391821690821601919082116121db57565b612b97612b0b565b5060006020604051612ba8816120af565b828152015260006020604051612bbd816120af565b828152015260405190612bcf8261207e565b602454916001600160401b038316815260208101926001600160401b038160401c16845260801c60408201528092612c05612b2a565b92612c0e612b50565b92600060018060a01b0360095416600e549460018060801b038751166040519063442c159960e01b8252876004830152602482015260006044820152602081606481865afa80156125ce5760009061301b575b8951612c7792506001600160801b03169061222c565b80612fe6575060005b612c956001600160401b03829351164261221f565b948515612fbc575050426001600160401b031660208a8101919091528801516001600160801b031615612f7257506020670de0b6b3a7640000612cf785612cf28c6001600160401b038d60018060801b03905116915116906121c8565b6121c8565b895191900496906001600160801b0390612d1690828a16908316612b76565b168952875160405163442c159960e01b815260048101929092526001600160801b031660248201526000604482015291829060649082905afa80156125ce57600090612f3e575b8751612d7392506001600160801b03169061222c565b92612da184612436620186a0612d8b601a548a6121c8565b60208c01516001600160801b03169190046121c8565b6040890180519195916001600160801b038088169291612dc49084908316612b76565b16905260208801805190916001600160801b0391612de491908316612b76565b16905280612f09575060005b602a5490938482811015612e8457612e08908361221f565b90670de0b6b3a7640000820291808304670de0b6b3a764000014901517156121db57612436612e5c612e56612e486001600160401b0396612e66966121f1565b93612cf2602e5495806121c8565b8361222c565b91848d51166121c8565b168089526001600160401b03602d5416809110612e805750565b8852565b909150602b54808211612e9657505050565b612e9f9161221f565b670de0b6b3a7640000810290808204670de0b6b3a764000014901517156121db576001600160401b0391612436612ee2612e56612e48612eeb95602c54906121f1565b848d51166121c8565b81602d5460401c16808211612f01575b50168852565b905038612efb565b87516001600160801b0316670de0b6b3a76400008181029291808404909114901517156121db57612f39916121f1565b612df0565b506020813d602011612f6a575b81612f5860209383612101565b81010312611ecf57612d739051612d5d565b3d9150612f4b565b9697939450509350506001600160401b038151166001600160401b03602f5416809103612fb0575b509392612fa5612b50565b926000926000929190565b81526001925038612f9a565b975098505050505092505091612fd0612b2a565b91612fd9612b50565b9160009160009190600090565b88516001600160801b0316670de0b6b3a76400008181029291808404909114901517156121db57613016916121f1565b612c80565b506020813d602011613047575b8161303560209383612101565b81010312611ecf57612c779051612c61565b3d9150613028565b3d1561307a573d9061306082612122565b9161306e6040519384612101565b82523d6000602084013e565b606090565b6040519061308c826120af565b60038252623f3f3f60e81b6020830152565b9081518110156130af570160200190565b634e487b7160e01b600052603260045260246000fd5b60ff1660ff81146121db5760010190565b80516040811061315157508051810190602081818401930312611ecf576020810151906001600160401b038211611ecf570181603f82011215611ecf57602081015161312181612122565b9261312f6040519485612101565b81845260408284010111611ecf5761314e916040602085019101611eea565b90565b60209290830361323f576000805b60ff81168581109081613220575b50156131815761317c906130c5565b61315f565b9260ff8094169261319184612122565b9361319f6040519586612101565b8085526131ae601f1991612122565b013687860137825b85811687811080613203575b156131f8576131f391906131ed6001600160f81b03196131e2838861309e565b5116871a918861309e565b536130c5565b6131b6565b505094505050905090565b506001600160f81b0319613217828661309e565b511615156131c2565b6001600160f81b03199150613235908661309e565b511615153861316d565b91505061314e61307f56feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220b5c103173ba002e8213331772550d18239789a543d3041edd70a608b0c43c56b64736f6c63430008120033"; type SGLLendingCommonConstructorParams = | [signer?: Signer] diff --git a/src/typechain/tapioca-bar/factories/markets/singularity/SGLLeverage__factory.ts b/src/typechain/tapioca-bar/factories/markets/singularity/SGLLeverage__factory.ts index c688396d..faa92915 100644 --- a/src/typechain/tapioca-bar/factories/markets/singularity/SGLLeverage__factory.ts +++ b/src/typechain/tapioca-bar/factories/markets/singularity/SGLLeverage__factory.ts @@ -130,6 +130,25 @@ const _abi = [ name: "InterestElasticityUpdated", type: "event", }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "address", + name: "oldVal", + type: "address", + }, + { + indexed: true, + internalType: "address", + name: "newVal", + type: "address", + }, + ], + name: "LeverageExecutorSet", + type: "event", + }, { anonymous: false, inputs: [ @@ -914,19 +933,9 @@ const _abi = [ name: "supplyAmount", type: "uint256", }, - { - internalType: "uint256", - name: "minAmountOut", - type: "uint256", - }, - { - internalType: "contract ISwapper", - name: "swapper", - type: "address", - }, { internalType: "bytes", - name: "dexData", + name: "data", type: "bytes", }, ], @@ -1187,6 +1196,19 @@ const _abi = [ stateMutability: "view", type: "function", }, + { + inputs: [], + name: "leverageExecutor", + outputs: [ + { + internalType: "contract ILeverageExecutor", + name: "", + type: "address", + }, + ], + stateMutability: "view", + type: "function", + }, { inputs: [], name: "liquidationBonusAmount", @@ -1821,19 +1843,9 @@ const _abi = [ name: "share", type: "uint256", }, - { - internalType: "uint256", - name: "minAmountOut", - type: "uint256", - }, - { - internalType: "contract ISwapper", - name: "swapper", - type: "address", - }, { internalType: "bytes", - name: "dexData", + name: "data", type: "bytes", }, ], @@ -1848,6 +1860,19 @@ const _abi = [ stateMutability: "nonpayable", type: "function", }, + { + inputs: [ + { + internalType: "contract ILeverageExecutor", + name: "_executor", + type: "address", + }, + ], + name: "setLeverageExecutor", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, { inputs: [ { @@ -2178,7 +2203,7 @@ const _abi = [ ] as const; const _bytecode = - "0x6101408060405234620001e5576200001781620001ea565b601381526001602082017f546170696f63612053696e67756c617269747900000000000000000000000000815260206040516200005481620001ea565b8381520192603160f81b845251902091208160e052610100918183524660a0526040519160208301907f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f92838352604085015260608401524660808401523060a084015260a0835260c083019280841060018060401b03851117620001cf5760408490525190206080523060c052610120908152600580546001600160a01b0319163390811790915560007f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a362013880601b5562015f90601c55612710601d55612ee06020557f0bd4060688a1800ae986e4840aebc924bb40b5bf44de4583df2257220b54b77c6026557f7d1dc38e60930664f8cbf495da6556ca091d2f92d6550877750c049864b182306027556161a86028556032602f55615349928362000207843960805183613904015260a051836139cf015260c051836138ce015260e0518361395301525182613979015251816139300152f35b634e487b7160e01b600052604160045260246000fd5b600080fd5b604081019081106001600160401b03821117620001cf5760405256fe608080604052600436101561001357600080fd5b600090813560e01c908162a02a2014612e585750806302ce728f14612e2f57806306fdde0314612d78578063078dfbe714612c79578063095ea7b314612c525780630c4e84f014612b3a57806318160ddd14612b195780631c9e379b14612ae05780631da8bf1014612a2b5780631ee9c8f2146125e357806323b872dd146124405780632a9399d91461202c578063313ce56714611ff8578063331960ff14611fda57806334d441d014611fbc5780633644e51514611fa157806337b6b7b914611f8357806338d52e0f14611f5a5780633ba0b9a914611f3c5780633f741adb14611f1757806340626d8b14611ef957806344de240a14611edb578063473e3ce714611ebd57806348e4163e14611e845780634d7f2a3414611e665780634e71e0c814611db8578063529898f214611d9b57806352f353eb14611d745780635514023214611d4d57806355c2ab9414611d235780635793546214611d0557806358db9afe146118c55780635dfe04e8146118665780636c3d8b8f1461183d57806370a082311461180457806372778547146117cc57806374645ff3146117a15780637dc0d1d0146117785780637ecebe001461173f5780637fa0b84e1461170d578063821226e8146116ef5780638285ef40146116bd5780638c5d0ed31461169f5780638da5cb5b14611676578063910dd7c8146113fd578063959916dc146113df57806395d89b411461132557806399a97028146112f55780639c5d7192146112d75780639e15e89f1461129c578063a9059cbb146111b9578063b0e21e8a1461119b578063b27c0e7414611160578063bb4cfe3b14611142578063ce8849ed14611119578063d3fb2a3814610c9d578063d49dffa714610651578063d505accf146104cb578063d8dfeb45146104a2578063dd62ed3e14610453578063de4065771461042a578063e0996cb61461040c578063e30c3978146103e3578063ea64dd56146103c5578063eec0f42e146103a7578063f42760b714610389578063f8ba4cff1461036d578063f9557ccb146103375763ffe04c661461031757600080fd5b346103345780600319360112610334576020602954604051908152f35b80fd5b5034610334578060031936011261033457602454604080516001600160801b038316815260809290921c602083015290f35b0390f35b503461033457806003193601126103345761038661423f565b80f35b50346103345780600319360112610334576020602a54604051908152f35b50346103345780600319360112610334576020600c54604051908152f35b50346103345780600319360112610334576020601f54604051908152f35b50346103345780600319360112610334576006546040516001600160a01b039091168152602090f35b50346103345780600319360112610334576020601d54604051908152f35b50346103345780600319360112610334576009546040516001600160a01b039091168152602090f35b50346103345760403660031901126103345761046d612ea0565b6040610477612eb6565b9260018060a01b03809316815260026020522091166000526020526020604060002054604051908152f35b5034610334578060031936011261033457600b546040516001600160a01b039091168152602090f35b5034610334576104da36612f46565b9083959495421161060c576105b8916105b09160018060a01b0394858a169687600052600460205260406000209081549161051483613c18565b90556040519060208201927f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e2668452600060408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e081526105748161312a565b51902061057f6138cb565b9060405190602082019261190160f01b845260228301526042820152604281526105a88161310f565b519020613ba0565b919091613aa1565b16036105c75761038692613c75565b60405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152606490fd5b60405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b5061014036600319011261033457610667612ea0565b606435151560643503610a5f576001600160401b038060843511610c9957606060843536036003190112610c995760a43511610a505760e060a43536036003190112610a505760803660c3190112610a5057600560005260076020527fbcdda56b5d08466ec462cbbe0adfa57cb0a15fcc8940ef68f702f21b787bc935546106f29060ff1615614362565b6106fa613474565b505061070461423f565b6107196001600160a01b0382163014156143df565b610727604460a4350161442a565b60c4356001600160a01b0381169003610a5f5761074a61074f9160c435906147a3565b614439565b60243580610afd575b506107da6107ac6107d46107ce6107b2620186a061077a602f5460443561321c565b0461078a60115491604435613280565b600d5460ff906107a2906001600160a01b0316614543565b1695869289613628565b906146a9565b6001600160a01b0386168752601860205260408720549061321c565b91613265565b90613245565b336001600160a01b03831603610aa9575b6107f590826146ec565b610836604061080760443584806148d3565b905060018060a01b0360095416600e548684518096819582946311a5cc7760e31b84528a309160048601614492565b03925af1908115610a9e578391610a6e575b50600d546001600160a01b03169060643515610a6857475b823b15610a645760405191633cb7ea1d60e11b8352600483015260018060a01b0384166024830152610100604483015260a4356004013561010483015261ffff6108ae602460a43501613182565b1661012483015261ffff6108c6604460a43501613182565b166101448301526001600160a01b036108e360a435606401612ecc565b166101648301526109af61094161091a610907608460a4350160a4356004016144c1565b60e06101848801526101e48701916144f2565b61092d60a480350160a4356004016144c1565b86830361010319016101a4880152906144f2565b6001600160a01b0361095760a43560c401612ecc565b166101c4850152838103600319016064850152606061099f6004608435016001600160a01b0361098682612ecc565b16845260843560248101356020860152604401906144c1565b91909281604082015201916144f2565b6001600160a01b0360c4358116608485015290939060e43590811690819003610a5f5760a4840152610104356001600160a01b03811690819003610a5f5760c4840152610124356001600160a01b0381169190829003610a5f5783879593818795819560e483015203925af18015610a5457610a3c575b50610386610a3783601154906145b1565b61439f565b610a45906130b0565b610a50578138610a26565b5080fd5b6040513d84823e3d90fd5b600080fd5b8480fd5b34610860565b610a90915060403d604011610a97575b610a888183613146565b81019061447c565b5038610848565b503d610a7e565b6040513d85823e3d90fd5b806107eb5760405162461bcd60e51b815260206004820152602160248201527f42696742616e673a20616c6c6f77616e63655368617265206e6f742076616c696044820152601960fa1b6064820152608490fd5b602060018060a01b0360095416916064600c546040519485938492638eb22cdd60e01b8452600484015260248301528760448301525afa908115610a9e578391610c67575b50610b4d81836146ec565b8015610bdb575b60018060a01b03821660005260186020526040600020610b75828254613280565b9055610b8381601554613280565b60155560018060a01b038216600052602560205260406000206027546000526020526040600020610bb5828254613280565b90556001600160a01b038216806000805160206152d4833981519152600080a438610758565b5060018060a01b03600954166020600c54606460405180948193638eb22cdd60e01b8352600483015260006024830152600060448301525afa908115610c5b57600091610c29575b50610b54565b906020823d602011610c53575b81610c4360209383613146565b8101031261033457505138610c23565b3d9150610c36565b6040513d6000823e3d90fd5b90506020813d602011610c91575b81610c8260209383613146565b81010312610a5f575138610b42565b3d9150610c75565b8280fd5b503461033457610160366003190112610334576001600160a01b039060043582811690819003610a50576001600160401b039260243584811161111557610ce8903690600401612f95565b909460443593838516809503610a5f57610d0784600554163314613191565b806110d7575b5081610f5a575b50509080929350610f1a575b505060643580610f02575b5060843580610eea575b5060a43580610ed3575b5060c43580610eaf575b5060e43580610e8b575b506101043580610e5a575b506101243580610de6575b506101443580610d77575080f35b601e548110610d8657601f5580f35b60405162461bcd60e51b815260206004820152603260248201527f4d61726b65743a206c69717569646174696f6e436f6c6c61746572616c697a616044820152711d1a5bdb94985d19481d1bdbc81cdb585b1b60721b6064820152608490fd5b610df5620186a08211156131dc565b601f548111610e0757601e5538610d69565b60405162461bcd60e51b815260206004820152602560248201527f4d61726b65743a20636f6c6c61746572616c697a6174696f6e5261746520746f6044820152646f2062696760d81b6064820152608490fd5b806016547fae6e0ab3b95f0a53ff9660a390ccedcbbf1f2355dce974a9841af106fddcfaba8480a360165538610d5e565b610e99620186a082106131dc565b610ea6601b5482116131dc565b601c5538610d53565b610ebd620186a082106131dc565b610eca601c5482106131dc565b601b5538610d49565b610ee1620186a082106131dc565b601d5538610d3f565b610ef9620186a08211156131dc565b601a5538610d35565b610f11620186a08211156131dc565b60195538610d2b565b816008549182167f5a62d22209e370e38eea92cfddcd228e656e6ec139243392a760a7769f5877fd8580a36001600160a01b031916176008553880610d20565b81116110c357610f6b601054612ff1565b601f8111611062575b5083601f8211600114610fdc5784958293949592610fd1575b50508160011b916000199060031b1c1916176010555b7fa6f004921c944d4b8bf6e38462b00f36a58d62495d56b51f571ab78f732c98158380a19082913880610d14565b013590503880610f8d565b60108552601f198216957f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae672918660205b89821061104a5750508360019596979810611030575b505050811b01601055610fa3565b0135600019600384901b60f8161c19169055388080611022565b8060018496829495870135815501950192019061100c565b601085527f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae672601f830160051c8101602084106110bc575b601f90920160051c01905b8181106110b15750610f74565b8581556001016110a4565b5080611099565b634e487b7160e01b84526041600452602484fd5b600f80546001600160a01b0319169190911790557f0b2d6eb667d0522c3eb86e4288afecae6c11591ffd1345d4d12407e0598bca9b8580a138610d0d565b8380fd5b50346103345780600319360112610334576008546040516001600160a01b039091168152602090f35b50346103345780600319360112610334576020601e54604051908152f35b50346103345780600319360112610334576060602354604051906001600160401b0380821683528160401c16602083015260801c6040820152f35b50346103345780600319360112610334576020601a54604051908152f35b5034610334576040366003190112610334576111d3612ea0565b6024358092811580159061128a575b61121a575b50506040519182526001600160a01b03169033906000805160206152f483398151915290602090a3602060405160018152f35b33815260016020526040812054611233838210156139f5565b6001600160a01b038416903382900361124e575b50506111e7565b60409361126591611260841515613a3a565b613273565b33835260016020528383205581522061127f838254613280565b905581388080611247565b50336001600160a01b038416146111e2565b50346103345760403660031901126103345760606112c46112bb612ea0565b602435906133b3565b9060405192835260208301526040820152f35b50346103345780600319360112610334576020602b54604051908152f35b503461033457604036600319011261033457602061131d611314612ea0565b60243590613799565b604051908152f35b5034610334578060031936011261033457808060018060a01b03600b541660405160208101906395d89b4160e01b825260048152611362816130f4565b51915afa61136e614513565b9150156113ce5761138161036991615162565b6113ba6023604051809362746d2d60e81b60208301526113aa8151809260208686019101612ee0565b8101036003810184520182613146565b604051918291602083526020830190612f03565b506103696113da61510b565b611381565b50346103345780600319360112610334576020602f54604051908152f35b5034610334576040366003190112610334576004356001600160401b038111610a505736602382011215610a505780600401359061143a82613167565b906114486040519283613146565b82825283602091828401943660248284010111610c99578060248593018737840101526024359061ffff8216809203610a5f576101009384848051810103126116725761149490613467565b906114a160408501613a7f565b6114ad60608601613a7f565b9560808601519560a0810151916114c660c08301613a93565b9060e08301519201519260018060a01b03808096169a169781421161162d57926105b09289888d9897946115a4978e8d600014611606577f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e266945b8c6000526004855260406000209283549361153a85613c18565b905560405195860196875260408601528c6060860152608085015260a084015260c083015260e082015260e081526115718161312a565b51902061157c6138cb565b90604051908a82019261190160f01b845260228301526042820152604281526105a88161310f565b16036115c25750156115b95761038692613c75565b61038692613c27565b6064906040519062461bcd60e51b82526004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152fd5b7f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d694611520565b60405162461bcd60e51b815260048101889052601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b8580fd5b50346103345780600319360112610334576005546040516001600160a01b039091168152602090f35b50346103345780600319360112610334576020601b54604051908152f35b5034610334578060031936011261033457601454604080516001600160801b038316815260809290921c602083015290f35b50346103345780600319360112610334576020602d54604051908152f35b50346103345760403660031901126103345761173461172a612ea0565b6024359033613c27565b602060405160018152f35b5034610334576020366003190112610334576020906040906001600160a01b03611767612ea0565b168152600483522054604051908152f35b5034610334578060031936011261033457600f546040516001600160a01b039091168152602090f35b50346103345780600319360112610334576103696040516113ba816117c58161302b565b0382613146565b50346103345760203660031901126103345760043590600982101561033457602060ff6117f884612fc2565b54166040519015158152f35b5034610334576020366003190112610334576020906040906001600160a01b0361182c612ea0565b168152600183522054604051908152f35b5034610334578060031936011261033457600a546040516001600160a01b039091168152602090f35b503461033457806003193601126103345761187f613ccc565b50608061188a613d50565b509350505050604051916001600160401b0380825116845260208201511660208401526040600180861b039101511660408301526060820152f35b50346103345760a0366003190112610334576118df612ea0565b6001600160a01b036064358181169392602435929091859003610a5f576084356001600160401b038111610a645761191b903690600401612f95565b949060066000526020966007885261193b60ff6040600020541615614362565b611943613474565b505061194d61423f565b8385169561195d308814156143df565b60048986600a54166040519283809263433e762d60e01b82525afa908115611cfa57836119959261074a928891611ccd575b506147a3565b61199f81876146ec565b600087815260188a52604081206119b7838254613273565b90556119c582601554613273565b6015558560095416600c54813b15610c9957836119fd92849283604051809681958294630208d92960e11b84528c3060048601614890565b03925af18015610a5457611cbe575b508183897f8ad4d3ff00da092c7ad9a573ea4f5f6a3dffc6712dc06d3f78f49b862297c4028480a487815260258a5260408120602754908183528b5260408220548311600014611c98575087815260258a526040812060275482528a5260408120555b600c54600e54604051633d9545e960e11b81526004810192909252602482015260006044820152606481019190915260016084820181905260a48201526101408160c481855afa908115611c8d5784604094939288928291611c5c575b50611af086519b8c968795869463efa84c6d60e01b86526044359060048701614d3f565b03925af1938415611c4f5781958295611c28575b50611b13604435871015614dd1565b81526017865260408120549186611b3184611b2c613ceb565b614e0f565b9160095416916064600e546040519485938492638eb22cdd60e01b845260048401526024830152600160448301525afa918215611c1c5791611be7575b5061131d93610a3793929111611b9457611b89908280614e6d565b505b601154906145b1565b50611b9d613ceb565b80516001600160801b03908116611bc2575050611bbc845b8280614e6d565b50611b8b565b8181611bd9611be2938a611bbc960151168961321c565b91511690613245565b611bb5565b929190508583813d8311611c15575b611c008183613146565b81010312610a5f57915190919061131d611b6e565b503d611bf6565b604051903d90823e3d90fd5b909450611c4591955060403d604011610a9757610a888183613146565b9490949338611b04565b50604051903d90823e3d90fd5b611c8091506101403d61014011611c86575b611c788183613146565b810190614c64565b38611acc565b503d611c6e565b6040513d86823e3d90fd5b9060409189825260258c528282209082528b5220611cb7828254613273565b9055611a6f565b611cc7906130b0565b38611a0c565b611ced91508d803d10611cf3575b611ce58183613146565b810190614c4a565b3861198f565b503d611cdb565b6040513d87823e3d90fd5b50346103345780600319360112610334576020601c54604051908152f35b503461033457806003193601126103345760206001600160401b03602c5460401c16604051908152f35b503461033457806003193601126103345760206001600160401b03602c5416604051908152f35b503461033457806003193601126103345760206001600160401b03602e5416604051908152f35b503461033457806003193601126103345760208054604051908152f35b50346103345780600319360112610334576006546001600160a01b039081811633819003611e2257806005549384167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08680a36001600160a01b0319928316176005551660065580f35b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b50346103345780600319360112610334576020602854604051908152f35b5034610334576020366003190112610334576020906040906001600160a01b03611eac612ea0565b168152601783522054604051908152f35b50346103345780600319360112610334576020601554604051908152f35b50346103345780600319360112610334576020600e54604051908152f35b50346103345780600319360112610334576020601654604051908152f35b503461033457606036600319011261033457602061131d6044356024356004356132a6565b50346103345780600319360112610334576020601154604051908152f35b5034610334578060031936011261033457600d546040516001600160a01b039091168152602090f35b50346103345780600319360112610334576020601254604051908152f35b5034610334578060031936011261033457602061131d6138cb565b50346103345780600319360112610334576020601954604051908152f35b50346103345780600319360112610334576020601354604051908152f35b5034610334578060031936011261033457600d54602090612021906001600160a01b0316614543565b60ff60405191168152f35b5060031961012036820112610a5057612043612ea0565b9061204c612f37565b90606435916001600160401b0390818411611672576060838536030112611672576084359182116116725760e08383360301126116725760803660a3190112611672576006600052602090600782526120ad60ff6040600020541615614362565b6120b5613474565b50506120bf61423f565b6001600160a01b03868116939092906120da308614156143df565b60448101916120e88361442a565b9760a435868116998a8203610a5f576121049161074a916147a3565b856009541697828c6064600c546040519c8d938492638eb22cdd60e01b84526004840152602435602484015260448301525afa9889156123da578b908d9a61240d575b50896121586122129b6040936146ec565b89600052601885528160002061216f828254613273565b905561217d81601554613273565b60155580308b7f8ad4d3ff00da092c7ad9a573ea4f5f6a3dffc6712dc06d3f78f49b862297c402600080a489600052602585528160002060275490816000528652826000205482116000146123e5575089600052602585528160002060275460005285526000828120555b8d896009541690600c54908451809e819582946311a5cc7760e31b84523090309060048601614492565b03925af19889156123da578c996123b8575b50600b54871695156123b15747975b863b156123ad5760405199633cb7ea1d60e11b8b5260048b015260248a01526044890161010090528684600401610104968135888d015261ffff908c8260248a0161227d90613182565b1690610124015261228d90613182565b166101448c0152816122a160648801612ecc565b166101648c01526122b560848701826144c1565b6101848d0160e090526101e48d01906122cd926144f2565b9060a487016122db916144c1565b8c830361010319016101a48e01526122f392916144f2565b9460c40161230090612ecc565b166101c48a015288840301606489015280600401918661231f84612ecc565b168452602482013590840152604401612337916144c1565b60606040840181905261234b9301916144f2565b95608486015260c435838116809103610a5f5760a486015260e435838116809103610a5f5760c486015235918216809203610a5f5783879593818795819560e483015203925af18015610a5457610a3c5750610386610a3783601154906145b1565b8c80fd5b3497612233565b6123d291995060403d604011610a9757610a888183613146565b509738612224565b6040513d8e823e3d90fd5b8a600052602586528260002090600052855281600020612406828254613273565b90556121e8565b809a50848092503d8311612439575b6124268183613146565b81010312610a5f579751978a6040612147565b503d61241c565b50346103345760603660031901126103345761245a612ea0565b90612463612eb6565b60443591826124a1575b506040519182526001600160a01b039081169216906000805160206152f483398151915290602090a3602060405160018152f35b6001600160a01b038481168083526001602090815260408420549286906124ca828610156139f5565b8616938484036124df575b505050505061246d565b8386526002835260408620336000528352604060002054600019810361254d575b509260016020969361252b87946040976112606000805160206152f48339815191529c9a1515613a3a565b9285525283832055815220612541858254613280565b905591388085816124d5565b909181106125a3579260016020969361252b8a6000805160206152f48339815191529a989561257e8260409a613273565b8689526002855289892033600052855289600020559497509497995050939650612500565b60405162461bcd60e51b815260048101849052601860248201527745524332303a20616c6c6f77616e636520746f6f206c6f7760401b6044820152606490fd5b50346103345760c0366003190112610334576125fd612ea0565b60643591906001600160a01b0360843581811692908390036111155760a4356001600160401b038111610a6457612638903690600401612f95565b9093600586526020966007885261265660ff60408920541615614362565b61265e613474565b505061266861423f565b84841691612678308414156143df565b60048987600a54166040519283809263433e762d60e01b82525afa908115612a2057826126af9261074a928c91611ccd57506147a3565b856009541693600e549060405191638eb22cdd60e01b968784528160048501526044356024850152600160448501528c84606481845afa9384156123da578c946129f1575b5083612997575b505061276461270d602435858a6148d3565b905061271f600e5491600c5495613280565b60405180938192633d9545e960e11b83526101409788956004850160a091949360019360c0830196835260208301526000604083015260608201528260808201520152565b0381875afa92831561298c5788936040959387938e938493612967575b50506127a39087519d8e978896879563efa84c6d60e01b875260048701614d3f565b03925af195861561295c578796612933575b506127c290871015614dd1565b6127cc85846146ec565b8491600095156128c3575b5080855260188752604085206127ee838254613280565b90556127fc82601554613280565b601555600c54948460095416803b15610a5f57836000916128369883604051809b81958294630208d92960e11b8452308d60048601614890565b03925af1948515610c5b5761131d96610a37966128a1575b506000805160206152d48339815191529083835260258a526040832060275484528a5260408320612880868254613280565b9055821561289b5780600954165b169180a4601154906145b1565b8561288e565b6128ac9192506130b0565b6000906000805160206152d483398151915261284e565b909150868460095416916064600c54916040519485938492835260048301528960248301528960448301525afa908115611cfa578591612906575b5090386127d7565b90508681813d831161292c575b61291d8183613146565b81010312610a645751386128fe565b503d612913565b6127c2975061295291965060403d604011610a9757610a888183613146565b96909695906127b5565b6040513d89823e3d90fd5b6127a3929350908161298492903d10611c8657611c788183613146565b919038612781565b6040513d8d823e3d90fd5b803b156129ed5783918c9186838c6129c560405197889687958694630208d92960e11b865260048601614890565b03925af1801561298c576129da575b806126fb565b6129e6909a919a6130b0565b98386129d4565b8b80fd5b9093508c81813d8311612a19575b612a098183613146565b810103126129ed575192386126f4565b503d6129ff565b6040513d8b823e3d90fd5b503461033457612a3a36612f46565b9083959495421161060c57612ad1916105b09160018060a01b03948a868b169788825260046020526040822090815491612a7383613c18565b90556040519160208301937f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d6855260408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e081526105748161312a565b16036105c75761038692613c27565b5034610334576020366003190112610334576020906040906001600160a01b03612b08612ea0565b168152601883522054604051908152f35b5034610334578060031936011261033457602060245460801c604051908152f35b5034610334576040366003190112610334576004356009811015610a5057612b60612f28565b6008549091906001600160a01b03163303612c165760ff612b8082612fc2565b54161515911515918214612bdc57808260ff612b9e612bcc94612fc2565b54161515827feeec81de25875ce1725479bb76f720a8defdb43dea041919ae37bb4aae9847c08780a4612fc2565b9060ff8019835416911617905580f35b60405162461bcd60e51b81526020600482015260126024820152714d61726b65743a2073616d6520737461746560701b6044820152606490fd5b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881d5b985d5d1a1bdc9a5e995960621b6044820152606490fd5b503461033457604036600319011261033457611734612c6f612ea0565b6024359033613c75565b503461033457606036600319011261033457612c93612ea0565b612c9b612f28565b612ca3612f37565b9060018060a01b03928391612cbd83600554163314613191565b15612d61571690811590811591612d59575b5015612d1c57806005549283167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08580a36001600160a01b03199182161760055560068054909116905580f35b60405162461bcd60e51b81526020600482015260156024820152744f776e61626c653a207a65726f206164647265737360581b6044820152606490fd5b905038612ccf565b9150501660018060a01b0319600654161760065580f35b5034610334578060031936011261033457808060018060a01b03600b541660405160208101906306fdde0360e01b825260048152612db5816130f4565b51915afa612dc1614513565b915015612e1e57612dd461036991615162565b6113ba6034604051809373546170696f63612053696e67756c61726974792d60601b6020830152612e0e8151809260208686019101612ee0565b8101036014810184520182613146565b50610369612e2a61510b565b612dd4565b50346103345780600319360112610334576040612e4a613474565b825191151582526020820152f35b905034610a50576040366003190112610a50576040602092612e78612ea0565b612e80612eb6565b6001600160a01b0391821683526003865283832091168252845220548152f35b600435906001600160a01b0382168203610a5f57565b602435906001600160a01b0382168203610a5f57565b35906001600160a01b0382168203610a5f57565b60005b838110612ef35750506000910152565b8181015183820152602001612ee3565b90602091612f1c81518092818552858086019101612ee0565b601f01601f1916010190565b602435908115158203610a5f57565b604435908115158203610a5f57565b60e0906003190112610a5f576001600160a01b03906004358281168103610a5f57916024359081168103610a5f5790604435906064359060843560ff81168103610a5f579060a4359060c43590565b9181601f84011215610a5f578235916001600160401b038311610a5f5760208381860195010111610a5f57565b6009811015612fdb576000526007602052604060002090565b634e487b7160e01b600052602160045260246000fd5b90600182811c92168015613021575b602083101461300b57565b634e487b7160e01b600052602260045260246000fd5b91607f1691613000565b6010546000929161303b82612ff1565b908181526001928381169081600014613095575060011461305b57505050565b9092935060106000526020928360002092846000945b8386106130815750505050010190565b805485870183015294019385908201613071565b91935050602093945060ff191683830152151560051b010190565b6001600160401b0381116130c357604052565b634e487b7160e01b600052604160045260246000fd5b606081019081106001600160401b038211176130c357604052565b604081019081106001600160401b038211176130c357604052565b608081019081106001600160401b038211176130c357604052565b61010081019081106001600160401b038211176130c357604052565b90601f801991011681019081106001600160401b038211176130c357604052565b6001600160401b0381116130c357601f01601f191660200190565b359061ffff82168203610a5f57565b1561319857565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b156131e357565b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881b9bdd081d985b1a59607a1b6044820152606490fd5b8181029291811591840414171561322f57565b634e487b7160e01b600052601160045260246000fd5b811561324f570490565b634e487b7160e01b600052601260045260246000fd5b604d811161322f57600a0a90565b9190820391821161322f57565b9190820180921161322f57565b8181039291600013801582851316918412161761322f57565b6014549192916132e9916132e0916132d6916132cc906001600160801b0383169061321c565b9060801c90613245565b93601f549061321c565b6107d483613265565b8083106133ab576132fd6133339184613273565b9161332e6107ce613325601e5461331f61331686613265565b60205490613280565b9061321c565b6107d484613265565b61328d565b6509184e72a0009081810291818305149015171561322f57670de0b6b3a76400009182810292818405149015171561322f57801561324f57600160ff1b9180831460001983141661322f57059060008212156133a457811461322f57600003905b80821161339f575090565b905090565b5090613394565b505050600090565b6001600160a01b03811660008181526017602052604081205491949392909190811561345b579160409161343761344f959483602086516133f3816130f4565b828152015261341186613404613d50565b5050505050939050613628565b815190936001600160801b039160209161342d9184169061321c565b9201511690613245565b81811061345357035b958152601860205220546136ee565b9091565b505080613440565b50509192505080918190565b51908115158203610a5f57565b600f546040805163d6d7d52560e01b8152602060048201529290916001600160a01b03168284806134a76024820161302b565b0381600080955af180156135d05781948291613594575b509284156135375783156134fd57507f9f9192b5edb17356c524e08d9e025c8e2f6307e6ea52fb7968faa3081f51c3c883918260115580a25b42601355565b5162461bcd60e51b81526020600482015260146024820152734d61726b65743a20696e76616c6964207261746560601b6044820152606490fd5b9192505061354a60135460125490613280565b421161355a5750601154906134f7565b5162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881c985d19481d1bdbc81bdb1960621b6044820152606490fd5b809550848092503d83116135c9575b6135ad8183613146565b810103126103345760206135c085613467565b940151386134be565b503d6135a3565b508251903d90823e3d90fd5b156135e357565b60405162461bcd60e51b815260206004820152601e60248201527f4d61726b65743a2065786368616e676552617465206e6f742076616c696400006044820152606490fd5b6136338215156135dc565b60018060a01b036020816009541691600c5490600094168452601882526064604085205491604051948593849263442c159960e01b8452600484015260248301528660448301525afa918215611c1c5780926136b6575b5050906136ae6136a56136b393620186a0602154049061321c565b601e549061321c565b613245565b90565b9091506020823d82116136e6575b816136d160209383613146565b810103126103345750516136ae6136a561368a565b3d91506136c4565b6136f98215156135dc565b602060018060a01b0360095416916064600c54604051948593849263442c159960e01b845260048401526024830152600060448301525afa908115610c5b57600091613766575b50906136ae613752926021549061321c565b620186a0613762601e548361321c565b0491565b906020823d8211613791575b8161377f60209383613146565b810103126103345750516136ae613740565b3d9150613772565b6001600160a01b031660008181526018602052604081205490926137bc916136ee565b9183526017602052604083205480156138c55781156138c5578181106138c557828110156138bb57601454613805918391611260916132cc906001600160801b0383169061321c565b90620186a092838302928084048514901517156138a75761382a92916107d491613273565b91601b5491601c549361383d858561328d565b80820291848212600160ff1b8214166138a7578183051490151715613893570581848201948512911290801582169115161761387f575080821261339f575090565b634e487b7160e01b81526011600452602490fd5b634e487b7160e01b83526011600452602483fd5b634e487b7160e01b85526011600452602485fd5b50505050601b5490565b50505090565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031614806139cc575b15613926577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f000000000000000000000000000000000000000000000000000000000000000082527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a0815260c081018181106001600160401b038211176130c35760405251902090565b507f000000000000000000000000000000000000000000000000000000000000000046146138fd565b156139fc57565b60405162461bcd60e51b815260206004820152601660248201527545524332303a2062616c616e636520746f6f206c6f7760501b6044820152606490fd5b15613a4157565b60405162461bcd60e51b815260206004820152601660248201527545524332303a206e6f207a65726f206164647265737360501b6044820152606490fd5b51906001600160a01b0382168203610a5f57565b519060ff82168203610a5f57565b6005811015612fdb5780613ab25750565b60018103613afa5760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b6044820152606490fd5b60028103613b475760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606490fd5b600314613b5057565b60405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608490fd5b9291906fa2a8918ca85bafe22016d0b997e4df60600160ff1b038311613c0c5791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa15611c4f5781516001600160a01b03811615613c06579190565b50600190565b50505050600090600390565b600019811461322f5760010190565b7fe50de2333c10a9502fcb1d8ae13a51bbf423153dfc63c2b8997665b32154afc360018060a01b038092169160009083825260036020526040822094169384825260205284604082205580a4565b909160207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259160018060a01b03809416938460005260028352604060002095169485600052825280604060002055604051908152a3565b60405190613cd9826130d9565b60006040838281528260208201520152565b60405190613cf8826130f4565b6014546001600160801b038116835260801c6020830152565b60405190613d1e826130f4565b6024546001600160801b038116835260801c6020830152565b6001600160801b03918216908216019190821161322f57565b613d58613ccc565b5060006020604051613d69816130f4565b828152015260006020604051613d7e816130f4565b8281520152604051613d8f816130d9565b6023546001600160401b03811682526001600160401b038160401c16602083015260801c60408201528091613dc2613ceb565b91613dcb613d11565b600954600e54825160405163442c159960e01b8152600481018390526001600160801b03909116602482015260006044820181905293959194919391926001600160a01b031690602081606481855afa8015610c5b576000906141e6575b8851613e3f92506001600160801b031690613280565b806141b1575060005b80613e606001600160401b0360208701511642613273565b948515614187575050426001600160401b031660208a8101919091528801516001600160801b03161561413d57506020670de0b6b3a7640000613ec285613ebd8c6001600160401b038d60018060801b039051169151169061321c565b61321c565b895191900496906001600160801b0390613ee190828a16908316613d37565b168952875160405163442c159960e01b815260048101929092526001600160801b031660248201526000604482015291829060649082905afa8015610c5b57600090614109575b8751613f3e92506001600160801b031690613280565b92613f6c846136ae620186a0613f56601a548a61321c565b60208c01516001600160801b031691900461321c565b6040890180519195916001600160801b038088169291613f8f9084908316613d37565b16905260208801805190916001600160801b0391613faf91908316613d37565b169052806140d4575060005b6029549093848281101561404f57613fd39083613273565b90670de0b6b3a7640000820291808304670de0b6b3a7640000149015171561322f576136ae6140276140216140136001600160401b039661403196613245565b93613ebd602d54958061321c565b83613280565b91848d511661321c565b168089526001600160401b03602c541680911061404b5750565b8852565b909150602a5480821161406157505050565b61406a91613273565b670de0b6b3a7640000810290808204670de0b6b3a7640000149015171561322f576001600160401b03916136ae6140ad6140216140136140b695602b5490613245565b848d511661321c565b81602c5460401c168082116140cc575b50168852565b9050386140c6565b87516001600160801b0316670de0b6b3a764000081810292918084049091149015171561322f5761410491613245565b613fbb565b506020813d602011614135575b8161412360209383613146565b81010312610a5f57613f3e9051613f28565b3d9150614116565b9697939450509350506001600160401b038151166001600160401b03602e541680910361417b575b509392614170613d11565b926000926000929190565b81526001925038614165565b97509850505050509250509161419b613ceb565b916141a4613d11565b9160009160009190600090565b87516001600160801b0316670de0b6b3a764000081810292918084049091149015171561322f576141e191613245565b613e48565b506020813d602011614212575b8161420060209383613146565b81010312610a5f57613e3f9051613e29565b3d91506141f3565b601480546001600160801b031660809290921b6001600160801b031916919091179055565b6143266020806142fc614250613d50565b9396959390929015614328575050506001600160401b03602e54166000807f33af5ce86e8438eff54589f85332916444457dfa8685493fbd579b809097026b88604051838152a45b805185820151604092830151921b67ffffffffffffffff60401b166001600160401b03919091161760809190911b6001600160801b0319908116919091176023558151601480549092166001600160801b039182161790915594859101511661421a565b8051910151821660801b6001600160801b0319166001600160801b03929091169190911617602455565b565b7f33af5ce86e8438eff54589f85332916444457dfa8685493fbd579b809097026b886001600160401b0386511694604051908152a4614298565b1561436957565b60405162461bcd60e51b815260206004820152600e60248201526d13585c9ad95d0e881c185d5cd95960921b6044820152606490fd5b156143a657565b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881a5b9cdbdb1d995b9d607a1b6044820152606490fd5b156143e657565b606460405162461bcd60e51b815260206004820152602060248201527f4d61726b65743a2063616e6e6f742065786563757465206f6e20697473656c666044820152fd5b3561ffff81168103610a5f5790565b1561444057565b60405162461bcd60e51b815260206004820152601460248201527329a3a61d1024b73b30b634b21039bbb0b83832b960611b6044820152606490fd5b9190826040910312610a5f576020825192015190565b9081526001600160a01b0391821660208201529116604082015260006060820152608081019190915260a00190565b9035601e1982360301811215610a5f5701602081359101916001600160401b038211610a5f578136038313610a5f57565b908060209392818452848401376000828201840152601f01601f1916010190565b3d1561453e573d9061452482613167565b916145326040519384613146565b82523d6000602084013e565b606090565b60008091604051602081019063313ce56760e01b825260048152614566816130f4565b51916001600160a01b03165afa61457b614513565b90806145a6575b156145a057602081805181010312610a5f5760206136b39101613a93565b50601290565b506020815114614582565b919060018060a01b0380600094168452602060178152604085205490811561469f57601881526040862054801561469857816145eb613ceb565b9460095416916064600c54604051948593849263442c159960e01b8452600484015260248301528b60448301525afa968715611c1c578097614662575b505061342d6146476136a561465d969798620186a0602154049061321c565b95613ebd60018060801b0394858751169061321c565b111590565b9096508187813d8311614691575b61467a8183613146565b81010312610334575094519461342d614647614628565b503d614670565b5050505050565b5060019450505050565b91821580156146e4575b6133ab576001810180911161322f576146d29261331f6136ae92613265565b6005810180911161322f57600a900490565b5081156146b3565b6001600160a01b0316338103614700575050565b60008181526020906003825260409182822033835281528483832054106147695783825260038152828220338352815282822054600101614742575050505050565b61475d93825260038152828220903383525220918254613273565b90553880808080614698565b60649083519062461bcd60e51b82526004820152601460248201527313585c9ad95d0e881b9bdd08185c1c1c9bdd995960621b6044820152fd5b600a5460405163dbd01de160e01b815260209290916001600160a01b039084908490600490829085165afa8015610c5b578493600091614852575b50918161ffff936044936040519889968795633a304d8b60e21b8752166004860152166024840152165afa908115610c5b5760009161481e575b50905090565b82813d831161484b575b6148328183613146565b81010312610334575061484490613467565b8038614818565b503d614828565b9091929381813d8311614889575b61486a8183613146565b81010312610a50575190828216820361033457508392919060446147de565b503d614860565b6001600160a01b039182168152911660208201526040810191909152606081019190915260800190565b6001600160801b03918216908216039190821161322f57565b92909192620186a06148e7602f548661321c565b046148f0613ceb565b946148fb8282613280565b9460409384519661490b886130f4565b60008089526020988901819052895190956001600160801b039290918316614bea578261493f8c8280855b16915116613d37565b168b526149838a8c018461495881851682845116613d37565b1680915261497e85849e511660018060801b031660018060801b03196014541617601455565b61421a565b6016548015908115614bdb575b5015614b9d57859060018060a01b0380951680895260178c528989206149b7838254613280565b90558951918483528c8301527f3a5151e57d3bc9798e7853034ac52293d1a0e12a2b44725e75b03b21f86477a68a87891693a480614b7c575b50878260095416946064600e5489519788938492638eb22cdd60e01b8452600484015260248301528960448301525afa938415614b72578594614b43575b508397614a39613d11565b818101916103e88484511610614b0f575090614a89839283614a63614ab0968a16828451166148ba565b1690819052602480546001600160801b0319166001600160801b03909216919091179055565b51602480546001600160801b03169290911660801b6001600160801b031916919091179055565b6009541690600e5490823b15610a64579184939184879694614ae8985198899586948593630208d92960e11b85523060048601614890565b03925af1918215614b05575050614afc5750565b614326906130b0565b51903d90823e3d90fd5b60649089519062461bcd60e51b82526004820152600e60248201526d14d1d30e881b5a5b881b1a5b5a5d60921b6044820152fd5b9093508781813d8311614b6b575b614b5b8183613146565b81010312610a6457519238614a2e565b503d614b51565b86513d87823e3d90fd5b82600a5416865260018952614b95878720918254613280565b9055386149f0565b875162461bcd60e51b8152600481018b9052601760248201527614d1d30e88189bdc9c9bddc818d85c081c995858da1959604a1b6044820152606490fd5b90508360145416111538614990565b828b8b81019280614c1d614c0e614c04868851168461321c565b8686511690613245565b9585611bd9818751168961321c565b10614c2f575b90828061493f93614936565b92908280614c3f61493f94613c18565b959293505050614c23565b90816020910312610a5f575161ffff81168103610a5f5790565b809103906101408212610a5f576040805192614c7f846130d9565b60808112610a5f578151614c928161310f565b614c9b84613a7f565b815260208401516020820152614cb2838501613a7f565b838201526060840151606082015284526080607f19820112610a5f5781908151614cdb8161310f565b6080850151815260a0850151602082015260c08501518382015260e08501516060820152602086015260ff190112610a5f57614d34610120825193614d1f856130f4565b614d2c6101008201613467565b855201613467565b602083015282015290565b91926136b3959360206040845194606060018060a01b039687815116895284810151858a0152878482015116848a015201516060880152606083820151805160808a01528481015160a08a01528381015160c08a0152015160e088015201518051151561010087015201511515610120850152610140840152166101608201526101a0908161018082015201916144f2565b15614dd857565b60405162461bcd60e51b815260206004820152600f60248201526e0a68e987440dcdee840cadcdeeaced608b1b6044820152606490fd5b60208101805190939291906001600160801b03908116614e30575090925050565b9081611bd981614e53614e49614e5c968651168861321c565b828a511690613245565b9751168761321c565b10614e6357565b906136b390613c18565b92919060009160018060a01b039485831684526020601781526040852054808411615103575b5082156150c757614ea2613ceb565b968582604051614eb1816130f4565b8281520152614ec08489614e0f565b9560018060801b039384614ed9818a16828d51166148ba565b168a52614f18848b0186614ef2818a16828451166148ba565b1680915261497e878b9d511660018060801b031660018060801b03196014541617601455565b82871682526017845260408220614f30878254613273565b90558260095416600e549560405190638eb22cdd60e01b82528760048301528a6024830152600160448301528682606481865afa918215611cfa578592615098575b5080602454169492803b15610a5f5782600091614fa89a83604051809d81958294630208d92960e11b8452308d60048601614890565b03925af1948515610c5b577fc8e512d8f188ca059984b5853d2bf653da902696b8512785b182b2c813789a6e988796615082575b50614fea9082841690613d37565b1660018060801b031960245416176024558383169081835260258752604083206026549081855288526040842054821160001461505b57505081526025855260408120602654825285528060408120555b1561505557508060095416955b60405195865216941692a4565b95615048565b909183526025875260408320908352865261507b60408320918254613273565b905561503b565b61508d9194506130b0565b600092614fea614fdc565b9091508681813d83116150c0575b6150b08183613146565b81010312610a6457519038614f72565b503d6150a6565b6064906040519062461bcd60e51b82526004820152601560248201527453474c3a206e6f7468696e6720746f20726570617960581b6044820152fd5b925038614e93565b60405190615118826130f4565b60038252623f3f3f60e81b6020830152565b90815181101561513b570160200190565b634e487b7160e01b600052603260045260246000fd5b60ff1660ff811461322f5760010190565b8051604081106151da57508051810190602081818401930312610a5f576020810151906001600160401b038211610a5f570181603f82011215610a5f5760208101516151ad81613167565b926151bb6040519485613146565b81845260408284010111610a5f576136b3916040602085019101612ee0565b6020929083036152c8576000805b60ff811685811090816152a9575b501561520a5761520590615151565b6151e8565b9260ff8094169261521a84613167565b936152286040519586613146565b808552615237601f1991613167565b013687860137825b8581168781108061528c575b156152815761527c91906152766001600160f81b031961526b838861512a565b5116871a918861512a565b53615151565b61523f565b505094505050905090565b506001600160f81b03196152a0828661512a565b5116151561524b565b6001600160f81b031991506152be908661512a565b51161515386151f6565b9150506136b361510b56fe9ed03113de523cebfe5e49d5f8e12894b1c0d42ce805990461726444c90eab87ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa264697066735822122031ecdd56d2974cea8d52e59827623447bd12db91d83dc789de7f160f3febe1e164736f6c63430008120033"; + "0x6101408060405234620001e5576200001781620001ea565b601381526001602082017f546170696f63612053696e67756c617269747900000000000000000000000000815260206040516200005481620001ea565b8381520192603160f81b845251902091208160e052610100918183524660a0526040519160208301907f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f92838352604085015260608401524660808401523060a084015260a0835260c083019280841060018060401b03851117620001cf5760408490525190206080523060c052610120908152600580546001600160a01b0319163390811790915560007f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a362013880601b5562015f90601c55612710601d55612ee06020557f0bd4060688a1800ae986e4840aebc924bb40b5bf44de4583df2257220b54b77c6027557f7d1dc38e60930664f8cbf495da6556ca091d2f92d6550877750c049864b182306028556161a86029556032603055615451928362000207843960805183613b60015260a05183613c2b015260c05183613b2a015260e05183613baf01525182613bd501525181613b8c0152f35b634e487b7160e01b600052604160045260246000fd5b600080fd5b604081019081106001600160401b03821117620001cf5760405256fe608080604052600436101561001357600080fd5b600090813560e01c908162a02a20146130b45750806302ce728f1461308b57806306fdde0314612fd4578063078dfbe714612ed5578063095ea7b314612eae5780630c4e84f014612d9657806318160ddd14612d755780631c9e379b14612d3c5780631da8bf1014612c8757806323b872dd14612aea5780632a9399d91461265a578063313ce56714612626578063331960ff1461260857806334d441d0146125ea5780633644e515146125cf57806337b6b7b9146125b157806338d52e0f146125885780633ba0b9a91461256a5780633f741adb1461254557806340626d8b1461252757806344de240a14612509578063473e3ce7146124eb57806348e4163e146124b25780634d7f2a34146124945780634e71e0c8146123e6578063529898f2146123c957806352f353eb146123a2578063551402321461237b57806355c2ab941461235157806357935462146123335780635dfe04e8146122d45780636c3d8b8f146122ab57806370a0823114612272578063727785471461223a57806374645ff31461220f5780637dc0d1d0146121e65780637ecebe00146121ad5780637fa0b84e1461217b578063821226e81461215d5780638285ef401461212b5780638c5d0ed31461210d5780638da5cb5b146120e4578063910dd7c814611e6b578063959916dc14611e4d57806395d89b4114611d9357806399a9702814611d6b5780639c5d719214611d4d5780639e15e89f14611d12578063a9059cbb14611c2f578063b0e21e8a14611c11578063b27c0e7414611bd6578063bb4cfe3b14611bb8578063ce8849ed14611b8f578063d3fb2a3814611717578063d49dffa7146110fb578063d4e4534e14610bc7578063d505accf14610a41578063d8dfeb4514610a18578063da863f0e146109ef578063dd62ed3e146109a0578063de40657714610977578063e0996cb614610959578063e30c397814610930578063e7d6de8014610470578063ea64dd5614610452578063eec0f42e14610434578063ef2b234a146103bd578063f42760b71461039f578063f8ba4cff14610383578063f9557ccb1461034d5763ffe04c661461032d57600080fd5b3461034a578060031936011261034a576020602a54604051908152f35b80fd5b503461034a578060031936011261034a57602554604080516001600160801b038316815260809290921c602083015290f35b0390f35b503461034a578060031936011261034a5761039c614491565b80f35b503461034a578060031936011261034a576020602b54604051908152f35b503461034a57602036600319011261034a576004356001600160a01b0381811691829003610430576103f4816005541633146133ed565b816021549182167ffb4fd7114609dd603b57adbc2082205bfbbcabf9265c4b437b472f5c592b8cd78580a36001600160a01b0319161760215580f35b8280fd5b503461034a578060031936011261034a576020600c54604051908152f35b503461034a578060031936011261034a576020601f54604051908152f35b503461034a57606036600319011261034a5761048a6130fc565b6044356001600160401b038111610430576104a99036906004016133c0565b600660005260076020527f55c5b153ab560fcde54a63b18c7f53d75501706907cef8767fbded79ab9997c7549192916104e59060ff16156145b4565b6104ed6136d0565b50506104f7614491565b61050c6001600160a01b038316301415614631565b602154610523906001600160a01b03161515614e9c565b61052f6024358361493e565b602154604051632b3297f960e01b815290602090829060049082906001600160a01b03165afa9081156109255785916108f6575b506001600160a01b0383166000908152601860205260408120805461058b90602435906134cf565b905561059b6024356015546134cf565b60155560018060a01b0360095416600c54813b15610430576105dc83928392604051948580948193630208d92960e11b8352602435908b3060048601614ae2565b03925af180156108eb5791859391602095936108dc575b5090602435906001600160a01b039081169085167f8ad4d3ff00da092c7ad9a573ea4f5f6a3dffc6712dc06d3f78f49b862297c4028480a46001600160a01b03831681526026845260408082206028548084529086529082205460243511156108a957506001600160a01b0383168152602684526040808220602854835285528120555b60018060a01b03602154169086600e54916106b0600c5491604051998a978896879563927d1df160e01b87526024359160048801614f07565b03925af191821561086a578392610875575b5060018060a01b0360095416600e549360405191638eb22cdd60e01b95868452806004850152856024850152826044850152602084606481855afa93841561086a578394610835575b5060209060018060a01b03861684526017825260646040852054986107378a610732613f47565b614f37565b946040519586948593845260048401526024830152600160448301525afa91821561082957916107eb575b506020946107909361078b9390921161079857610780908280614f95565b505b60115490614803565b6145f1565b604051908152f35b506107a1613f47565b80516001600160801b039081166107c65750506107c0845b8280614f95565b50610782565b81816107dd6107e6938a6107c09601511689613478565b915116906134a1565b6107b9565b919290506020823d602011610821575b8161080860209383613375565b8101031261081c5790519091906020610762565b600080fd5b3d91506107fb565b604051903d90823e3d90fd5b9093506020813d602011610862575b8161085160209383613375565b8101031261081c575192602061070b565b3d9150610844565b6040513d85823e3d90fd5b9091506020813d6020116108a1575b8161089160209383613375565b8101031261081c575190386106c2565b3d9150610884565b6001600160a01b0384168252602685526040808320918352908552902080546108d590602435906134cf565b9055610677565b6108e5906132df565b386105f3565b6040513d84823e3d90fd5b610918915060203d60201161091e575b6109108183613375565b810190614ee8565b38610563565b503d610906565b6040513d87823e3d90fd5b503461034a578060031936011261034a576006546040516001600160a01b039091168152602090f35b503461034a578060031936011261034a576020601d54604051908152f35b503461034a578060031936011261034a576009546040516001600160a01b039091168152602090f35b503461034a57604036600319011261034a576109ba6130fc565b60406109c4613112565b9260018060a01b03809316815260026020522091166000526020526020604060002054604051908152f35b503461034a578060031936011261034a576021546040516001600160a01b039091168152602090f35b503461034a578060031936011261034a57600b546040516001600160a01b039091168152602090f35b503461034a57610a50366131a2565b90839594954211610b8257610b2e91610b269160018060a01b0394858a1696876000526004602052604060002090815491610a8a83613e74565b90556040519060208201927f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e2668452600060408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e08152610aea8161333e565b519020610af5613b27565b9060405190602082019261190160f01b84526022830152604282015260428152610b1e8161335a565b519020613dfc565b919091613cfd565b1603610b3d5761039c92613ed1565b60405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152606490fd5b60405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b503461034a57608036600319011261034a57610be16130fc565b6064356001600160401b03811161043057610c009036906004016133c0565b600560005260076020527fbcdda56b5d08466ec462cbbe0adfa57cb0a15fcc8940ef68f702f21b787bc93554610c399060ff16156145b4565b610c416136d0565b5050610c4b614491565b610c606001600160a01b038416301415614631565b6021546001600160a01b0316610c77811515614e9c565b600954600e54604051638eb22cdd60e01b8152600481018290526044803560248301526001908201529287926001600160a01b031691602085606481865afa9485156110b95784956110c4575b5084611012575b5050602154604051632b3297f960e01b8152925060209150829060049082906001600160a01b03165afa908115611007579186610d1b60209593829795899a91610fea575b506024359089614b25565b9050610d5a60018060a01b036021541694610d3c600e5493600c54966134dc565b966040519a8b9889978896630394b9c560e21b885260048801614f07565b03925af1918215610fdd578192610fa9575b5060018060a01b03600954166020600c54606460405180948193638eb22cdd60e01b835260048301528760248301528660448301525afa9182156108295791610f77575b50610dbb818461493e565b8060009115610ef6575b6001600160a01b03841682526018602052604082208054610de79083906134dc565b9055610df5816015546134dc565b601555600c54600954929490926001600160a01b0316803b1561081c5782600091610e399583604051809881958294630208d92960e11b8452308a60048601614ae2565b03925af1918215610eea576020956107909461078b94610ed8575b506001600160a01b03831681526026875260408082206028548352885281208054610e809084906134dc565b90558015610ed1576009546001600160a01b0316905b6001600160a01b038481169216907f9ed03113de523cebfe5e49d5f8e12894b1c0d42ce805990461726444c90eab879080a460115490614803565b8290610e96565b610ee291506132df565b600038610e54565b6040513d6000823e3d90fd5b5060018060a01b03600954166020600c54606460405180948193638eb22cdd60e01b835260048301528660248301528660448301525afa9081156108eb578291610f41575b50610dc5565b90506020813d602011610f6f575b81610f5c60209383613375565b81010312610f6b575138610f3b565b5080fd5b3d9150610f4f565b90506020813d602011610fa1575b81610f9260209383613375565b8101031261081c575138610db0565b3d9150610f85565b9091506020813d602011610fd5575b81610fc560209383613375565b8101031261081c57519038610d6c565b3d9150610fb8565b50604051903d90823e3d90fd5b6110019150873d891161091e576109108183613375565b38610d10565b6040513d88823e3d90fd5b602060049260405193848092632b3297f960e01b82525afa9182156110b9578492611098575b50823b156110945784928492838a61106660405197889687958694630208d92960e11b865260048601614ae2565b03925af180156108eb5761107c575b8080610ccb565b611085906132df565b611090578438611075565b8480fd5b8380fd5b6110b291925060203d60201161091e576109108183613375565b9038611038565b6040513d86823e3d90fd5b935093506020833d6020116110f3575b816110e160209383613375565b8101031261081c578792519338610cc4565b3d91506110d4565b5061014036600319011261034a576111116130fc565b60643515156064350361081c576001600160401b038060843511610430576060608435360360031901126104305760a43511610f6b5760e060a43536036003190112610f6b5760803660c3190112610f6b57600560005260076020527fbcdda56b5d08466ec462cbbe0adfa57cb0a15fcc8940ef68f702f21b787bc9355461119c9060ff16156145b4565b6111a46136d0565b50506111ae614491565b6111c36001600160a01b038216301415614631565b6111d1604460a4350161467c565b60c4356001600160a01b038116900361081c576111f46111f99160c435906149f5565b61468b565b60243580611575575b5061128461125661127e61127861125c620186a0611224603054604435613478565b04611234601154916044356134dc565b600d5460ff9061124c906001600160a01b0316614795565b1695869289613884565b906148fb565b6001600160a01b03861687526018602052604087205490613478565b916134c1565b906134a1565b336001600160a01b0383160361152b575b61129f908261493e565b6112e060406112b16044358480614b25565b905060018060a01b0360095416600e548684518096819582946311a5cc7760e31b84528a3091600486016146e4565b03925af190811561086a5783916114fb575b50600d546001600160a01b031690606435156114f557475b823b156110905760405191633cb7ea1d60e11b8352600483015260018060a01b0384166024830152610100604483015260a4356004013561010483015261ffff611358602460a435016133b1565b1661012483015261ffff611370604460a435016133b1565b166101448301526001600160a01b0361138d60a435606401613128565b166101648301526114596113eb6113c46113b1608460a4350160a435600401614713565b60e06101848801526101e4870191614744565b6113d760a480350160a435600401614713565b86830361010319016101a488015290614744565b6001600160a01b0361140160a43560c401613128565b166101c485015283810360031901606485015260606114496004608435016001600160a01b0361143082613128565b1684526084356024810135602086015260440190614713565b9190928160408201520191614744565b6001600160a01b0360c4358116608485015290939060e4359081169081900361081c5760a4840152610104356001600160a01b0381169081900361081c5760c4840152610124356001600160a01b038116919082900361081c5783879593818795819560e483015203925af180156108eb576114e1575b5061039c61078b8360115490614803565b6114ea906132df565b610f6b5781386114d0565b3461130a565b61151d915060403d604011611524575b6115158183613375565b8101906146ce565b50386112f2565b503d61150b565b806112955760405162461bcd60e51b815260206004820152601c60248201527f42423a20616c6c6f77616e63655368617265206e6f742076616c6964000000006044820152606490fd5b602060018060a01b0360095416916064600c546040519485938492638eb22cdd60e01b8452600484015260248301528760448301525afa90811561086a5783916116e5575b506115c5818361493e565b8015611665575b60018060a01b038216600052601860205260406000206115ed8282546134dc565b90556115fb816015546134dc565b60155560018060a01b03821660005260266020526040600020602854600052602052604060002061162d8282546134dc565b90556001600160a01b038216807f9ed03113de523cebfe5e49d5f8e12894b1c0d42ce805990461726444c90eab87600080a438611202565b5060018060a01b03600954166020600c54606460405180948193638eb22cdd60e01b8352600483015260006024830152600060448301525afa908115610eea576000916116b3575b506115cc565b906020823d6020116116dd575b816116cd60209383613375565b8101031261034a575051386116ad565b3d91506116c0565b90506020813d60201161170f575b8161170060209383613375565b8101031261081c5751386115ba565b3d91506116f3565b503461034a5761016036600319011261034a576001600160a01b039060043582811690819003610f6b576001600160401b0392602435848111611094576117629036906004016133c0565b90946044359383851680950361081c57611781846005541633146133ed565b80611b51575b50816119d4575b50509080929350611994575b50506064358061197c575b5060843580611964575b5060a4358061194d575b5060c43580611929575b5060e43580611905575b5061010435806118d4575b506101243580611860575b5061014435806117f1575080f35b601e54811061180057601f5580f35b60405162461bcd60e51b815260206004820152603260248201527f4d61726b65743a206c69717569646174696f6e436f6c6c61746572616c697a616044820152711d1a5bdb94985d19481d1bdbc81cdb585b1b60721b6064820152608490fd5b61186f620186a0821115613438565b601f54811161188157601e55386117e3565b60405162461bcd60e51b815260206004820152602560248201527f4d61726b65743a20636f6c6c61746572616c697a6174696f6e5261746520746f6044820152646f2062696760d81b6064820152608490fd5b806016547fae6e0ab3b95f0a53ff9660a390ccedcbbf1f2355dce974a9841af106fddcfaba8480a3601655386117d8565b611913620186a08210613438565b611920601b548211613438565b601c55386117cd565b611937620186a08210613438565b611944601c548210613438565b601b55386117c3565b61195b620186a08210613438565b601d55386117b9565b611973620186a0821115613438565b601a55386117af565b61198b620186a0821115613438565b601955386117a5565b816008549182167f5a62d22209e370e38eea92cfddcd228e656e6ec139243392a760a7769f5877fd8580a36001600160a01b03191617600855388061179a565b8111611b3d576119e5601054613220565b601f8111611adc575b5083601f8211600114611a565784958293949592611a4b575b50508160011b916000199060031b1c1916176010555b7fa6f004921c944d4b8bf6e38462b00f36a58d62495d56b51f571ab78f732c98158380a1908291388061178e565b013590503880611a07565b60108552601f198216957f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae672918660205b898210611ac45750508360019596979810611aaa575b505050811b01601055611a1d565b0135600019600384901b60f8161c19169055388080611a9c565b80600184968294958701358155019501920190611a86565b601085527f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae672601f830160051c810160208410611b36575b601f90920160051c01905b818110611b2b57506119ee565b858155600101611b1e565b5080611b13565b634e487b7160e01b84526041600452602484fd5b600f80546001600160a01b0319169190911790557f0b2d6eb667d0522c3eb86e4288afecae6c11591ffd1345d4d12407e0598bca9b8580a138611787565b503461034a578060031936011261034a576008546040516001600160a01b039091168152602090f35b503461034a578060031936011261034a576020601e54604051908152f35b503461034a578060031936011261034a576060602454604051906001600160401b0380821683528160401c16602083015260801c6040820152f35b503461034a578060031936011261034a576020601a54604051908152f35b503461034a57604036600319011261034a57611c496130fc565b60243580928115801590611d00575b611c90575b50506040519182526001600160a01b03169033906000805160206153fc83398151915290602090a3602060405160018152f35b33815260016020526040812054611ca983821015613c51565b6001600160a01b0384169033829003611cc4575b5050611c5d565b604093611cdb91611cd6841515613c96565b6134cf565b338352600160205283832055815220611cf58382546134dc565b905581388080611cbd565b50336001600160a01b03841614611c58565b503461034a57604036600319011261034a576060611d3a611d316130fc565b6024359061360f565b9060405192835260208301526040820152f35b503461034a578060031936011261034a576020602c54604051908152f35b503461034a57604036600319011261034a576020610790611d8a6130fc565b602435906139f5565b503461034a578060031936011261034a57808060018060a01b03600b541660405160208101906395d89b4160e01b825260048152611dd081613323565b51915afa611ddc614765565b915015611e3c57611def61037f9161528a565b611e286023604051809362746d2d60e81b6020830152611e18815180926020868601910161313c565b8101036003810184520182613375565b60405191829160208352602083019061315f565b5061037f611e48615233565b611def565b503461034a578060031936011261034a576020603054604051908152f35b503461034a57604036600319011261034a576004356001600160401b038111610f6b5736602382011215610f6b57806004013590611ea882613396565b90611eb66040519283613375565b82825283602091828401943660248284010111610430578060248593018737840101526024359061ffff821680920361081c576101009384848051810103126120e057611f02906136c3565b90611f0f60408501613cdb565b611f1b60608601613cdb565b9560808601519560a081015191611f3460c08301613cef565b9060e08301519201519260018060a01b03808096169a169781421161209b5792610b269289888d989794612012978e8d600014612074577f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e266945b8c60005260048552604060002092835493611fa885613e74565b905560405195860196875260408601528c6060860152608085015260a084015260c083015260e082015260e08152611fdf8161333e565b519020611fea613b27565b90604051908a82019261190160f01b84526022830152604282015260428152610b1e8161335a565b16036120305750156120275761039c92613ed1565b61039c92613e83565b6064906040519062461bcd60e51b82526004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152fd5b7f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d694611f8e565b60405162461bcd60e51b815260048101889052601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b8580fd5b503461034a578060031936011261034a576005546040516001600160a01b039091168152602090f35b503461034a578060031936011261034a576020601b54604051908152f35b503461034a578060031936011261034a57601454604080516001600160801b038316815260809290921c602083015290f35b503461034a578060031936011261034a576020602e54604051908152f35b503461034a57604036600319011261034a576121a26121986130fc565b6024359033613e83565b602060405160018152f35b503461034a57602036600319011261034a576020906040906001600160a01b036121d56130fc565b168152600483522054604051908152f35b503461034a578060031936011261034a57600f546040516001600160a01b039091168152602090f35b503461034a578060031936011261034a5761037f604051611e28816122338161325a565b0382613375565b503461034a57602036600319011261034a5760043590600982101561034a57602060ff612266846131f1565b54166040519015158152f35b503461034a57602036600319011261034a576020906040906001600160a01b0361229a6130fc565b168152600183522054604051908152f35b503461034a578060031936011261034a57600a546040516001600160a01b039091168152602090f35b503461034a578060031936011261034a576122ed613f28565b5060806122f8613fac565b509350505050604051916001600160401b0380825116845260208201511660208401526040600180861b039101511660408301526060820152f35b503461034a578060031936011261034a576020601c54604051908152f35b503461034a578060031936011261034a5760206001600160401b03602d5460401c16604051908152f35b503461034a578060031936011261034a5760206001600160401b03602d5416604051908152f35b503461034a578060031936011261034a5760206001600160401b03602f5416604051908152f35b503461034a578060031936011261034a5760208054604051908152f35b503461034a578060031936011261034a576006546001600160a01b03908181163381900361245057806005549384167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08680a36001600160a01b0319928316176005551660065580f35b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b503461034a578060031936011261034a576020602954604051908152f35b503461034a57602036600319011261034a576020906040906001600160a01b036124da6130fc565b168152601783522054604051908152f35b503461034a578060031936011261034a576020601554604051908152f35b503461034a578060031936011261034a576020600e54604051908152f35b503461034a578060031936011261034a576020601654604051908152f35b503461034a57606036600319011261034a576020610790604435602435600435613502565b503461034a578060031936011261034a576020601154604051908152f35b503461034a578060031936011261034a57600d546040516001600160a01b039091168152602090f35b503461034a578060031936011261034a576020601254604051908152f35b503461034a578060031936011261034a576020610790613b27565b503461034a578060031936011261034a576020601954604051908152f35b503461034a578060031936011261034a576020601354604051908152f35b503461034a578060031936011261034a57600d5460209061264f906001600160a01b0316614795565b60ff60405191168152f35b5061012036600319011261034a576126706130fc565b612678613193565b6001600160401b0380606435116110945760606064353603600319011261109457608435116104305760e0608435360360031901126104305760803660a3190112610430576006835260076020526126d760ff604085205416156145b4565b6126df6136d0565b50506126e9614491565b6126fe6001600160a01b038316301415614631565b8261270d60446084350161467c565b60a435906001600160a01b0382168203610430576111f48261272e926149f5565b60018060a01b0360095416926020600c54606460405180978193638eb22cdd60e01b8352600483015260243560248301528760448301525afa93841561086a578394612ab5575b50604084612786612864968861493e565b6001600160a01b0387168552601860205281852080546127a79083906134cf565b90556127b5816015546134cf565b60155580306001600160a01b0389167f8ad4d3ff00da092c7ad9a573ea4f5f6a3dffc6712dc06d3f78f49b862297c4028880a46001600160a01b038716855260266020908152828620602854808852915282862054821115612a8457506001600160a01b038716855260266020908152828620602854875290528185208590555b60018060a01b0360095416600c548684518099819582946311a5cc7760e31b845230903090600486016146e4565b03925af193841561086a578394612a62575b50600b546001600160a01b03169015612a5b5747915b813b156110945760405194633cb7ea1d60e11b8652600486015260018060a01b038616602486015261010060448601526084356004016129c5612968610104928035848a015261ffff806128e46024608435016133b1565b166101248b01526128f96044608435016133b1565b166101448a01526001600160a01b03612916608435606401613128565b166101648a01526129546129478a61018460e0612937608480350187614713565b92909301526101e48d0191614744565b9160a46084350190614713565b8a830361010319016101a48c015290614744565b6001600160a01b0361297e60843560c401613128565b166101c4890152600319888203016064890152606061144960643560040160018060a01b036129ac82613128565b1684526064356024810135602086015260440190614713565b6001600160a01b0392831660848801529160c435908116908190036120e05760a487015260e4356001600160a01b038116908190036120e05760c4870152356001600160a01b03811693908490036110905785809492819360e483015203925af1801561086a57612a42575b5061078b61039c9160115490614803565b61039c9192612a5361078b926132df565b929150612a31565b349161288c565b612a7c91945060403d604011611524576115158183613375565b509238612876565b6001600160a01b038816865260266020908152838720918752528185208054612aae9083906134cf565b9055612836565b93506020843d602011612ae2575b81612ad060209383613375565b81010312610430579251926040612775565b3d9150612ac3565b503461034a57606036600319011261034a57612b046130fc565b90612b0d613112565b6044359182612b4b575b506040519182526001600160a01b039081169216906000805160206153fc83398151915290602090a3602060405160018152f35b6001600160a01b03848116808352600160209081526040842054928690612b7482861015613c51565b861693848403612b89575b5050505050612b17565b838652600283526040808720338852845286205460018101612bf3575b5092600160209693612bd18794604097611cd66000805160206153fc8339815191529c9a1515613c96565b9285525283832055815220612be78582546134dc565b90559138808581612b7f565b90918110612c475792600160209693612bd18a6000805160206153fc8339815191529a9895612c248260409a6134cf565b86895260028552898920338a528552898920559497509497995050939650612ba6565b60405162461bcd60e51b815260048101849052601860248201527745524332303a20616c6c6f77616e636520746f6f206c6f7760401b6044820152606490fd5b503461034a57612c96366131a2565b90839594954211610b8257612d2d91610b269160018060a01b03948a868b169788825260046020526040822090815491612ccf83613e74565b90556040519160208301937f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d6855260408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e08152610aea8161333e565b1603610b3d5761039c92613e83565b503461034a57602036600319011261034a576020906040906001600160a01b03612d646130fc565b168152601883522054604051908152f35b503461034a578060031936011261034a57602060255460801c604051908152f35b503461034a57604036600319011261034a576004356009811015610f6b57612dbc613184565b6008549091906001600160a01b03163303612e725760ff612ddc826131f1565b54161515911515918214612e3857808260ff612dfa612e28946131f1565b54161515827feeec81de25875ce1725479bb76f720a8defdb43dea041919ae37bb4aae9847c08780a46131f1565b9060ff8019835416911617905580f35b60405162461bcd60e51b81526020600482015260126024820152714d61726b65743a2073616d6520737461746560701b6044820152606490fd5b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881d5b985d5d1a1bdc9a5e995960621b6044820152606490fd5b503461034a57604036600319011261034a576121a2612ecb6130fc565b6024359033613ed1565b503461034a57606036600319011261034a57612eef6130fc565b612ef7613184565b612eff613193565b9060018060a01b03928391612f19836005541633146133ed565b15612fbd571690811590811591612fb5575b5015612f7857806005549283167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08580a36001600160a01b03199182161760055560068054909116905580f35b60405162461bcd60e51b81526020600482015260156024820152744f776e61626c653a207a65726f206164647265737360581b6044820152606490fd5b905038612f2b565b9150501660018060a01b0319600654161760065580f35b503461034a578060031936011261034a57808060018060a01b03600b541660405160208101906306fdde0360e01b82526004815261301181613323565b51915afa61301d614765565b91501561307a5761303061037f9161528a565b611e286034604051809373546170696f63612053696e67756c61726974792d60601b602083015261306a815180926020868601910161313c565b8101036014810184520182613375565b5061037f613086615233565b613030565b503461034a578060031936011261034a5760406130a66136d0565b825191151582526020820152f35b905034610f6b576040366003190112610f6b5760406020926130d46130fc565b6130dc613112565b6001600160a01b0391821683526003865283832091168252845220548152f35b600435906001600160a01b038216820361081c57565b602435906001600160a01b038216820361081c57565b35906001600160a01b038216820361081c57565b60005b83811061314f5750506000910152565b818101518382015260200161313f565b906020916131788151809281855285808601910161313c565b601f01601f1916010190565b60243590811515820361081c57565b60443590811515820361081c57565b60e090600319011261081c576001600160a01b0390600435828116810361081c5791602435908116810361081c5790604435906064359060843560ff8116810361081c579060a4359060c43590565b600981101561320a576000526007602052604060002090565b634e487b7160e01b600052602160045260246000fd5b90600182811c92168015613250575b602083101461323a57565b634e487b7160e01b600052602260045260246000fd5b91607f169161322f565b6010546000929161326a82613220565b9081815260019283811690816000146132c4575060011461328a57505050565b9092935060106000526020928360002092846000945b8386106132b05750505050010190565b8054858701830152940193859082016132a0565b91935050602093945060ff191683830152151560051b010190565b6001600160401b0381116132f257604052565b634e487b7160e01b600052604160045260246000fd5b606081019081106001600160401b038211176132f257604052565b604081019081106001600160401b038211176132f257604052565b61010081019081106001600160401b038211176132f257604052565b608081019081106001600160401b038211176132f257604052565b90601f801991011681019081106001600160401b038211176132f257604052565b6001600160401b0381116132f257601f01601f191660200190565b359061ffff8216820361081c57565b9181601f8401121561081c578235916001600160401b03831161081c576020838186019501011161081c57565b156133f457565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b1561343f57565b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881b9bdd081d985b1a59607a1b6044820152606490fd5b8181029291811591840414171561348b57565b634e487b7160e01b600052601160045260246000fd5b81156134ab570490565b634e487b7160e01b600052601260045260246000fd5b604d811161348b57600a0a90565b9190820391821161348b57565b9190820180921161348b57565b8181039291600013801582851316918412161761348b57565b6014549192916135459161353c9161353291613528906001600160801b03831690613478565b9060801c906134a1565b93601f5490613478565b61127e836134c1565b8083106136075761355961358f91846134cf565b9161358a611278613581601e5461357b613572866134c1565b602054906134dc565b90613478565b61127e846134c1565b6134e9565b6509184e72a0009081810291818305149015171561348b57670de0b6b3a76400009182810292818405149015171561348b5780156134ab57600160ff1b9180831460001983141661348b570590600082121561360057811461348b57600003905b8082116135fb575090565b905090565b50906135f0565b505050600090565b6001600160a01b0381166000818152601760205260408120549194939290919081156136b757916040916136936136ab9594836020865161364f81613323565b828152015261366d86613660613fac565b5050505050939050613884565b815190936001600160801b039160209161368991841690613478565b92015116906134a1565b8181106136af57035b9581526018602052205461394a565b9091565b50508061369c565b50509192505080918190565b5190811515820361081c57565b600f546040805163d6d7d52560e01b8152602060048201529290916001600160a01b03168284806137036024820161325a565b0381600080955af1801561382c57819482916137f0575b5092841561379357831561375957507f9f9192b5edb17356c524e08d9e025c8e2f6307e6ea52fb7968faa3081f51c3c883918260115580a25b42601355565b5162461bcd60e51b81526020600482015260146024820152734d61726b65743a20696e76616c6964207261746560601b6044820152606490fd5b919250506137a6601354601254906134dc565b42116137b6575060115490613753565b5162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881c985d19481d1bdbc81bdb1960621b6044820152606490fd5b809550848092503d8311613825575b6138098183613375565b8101031261034a57602061381c856136c3565b9401513861371a565b503d6137ff565b508251903d90823e3d90fd5b1561383f57565b60405162461bcd60e51b815260206004820152601e60248201527f4d61726b65743a2065786368616e676552617465206e6f742076616c696400006044820152606490fd5b61388f821515613838565b60018060a01b036020816009541691600c5490600094168452601882526064604085205491604051948593849263442c159960e01b8452600484015260248301528660448301525afa918215610829578092613912575b50509061390a61390161390f93620186a06022540490613478565b601e5490613478565b6134a1565b90565b9091506020823d8211613942575b8161392d60209383613375565b8101031261034a57505161390a6139016138e6565b3d9150613920565b613955821515613838565b602060018060a01b0360095416916064600c54604051948593849263442c159960e01b845260048401526024830152600060448301525afa908115610eea576000916139c2575b509061390a6139ae9260225490613478565b620186a06139be601e5483613478565b0491565b906020823d82116139ed575b816139db60209383613375565b8101031261034a57505161390a61399c565b3d91506139ce565b6001600160a01b03166000818152601860205260408120549092613a189161394a565b918352601760205260408320548015613b21578115613b2157818110613b215782811015613b1757601454613a61918391611cd691613528906001600160801b03831690613478565b90620186a09283830292808404851490151715613b0357613a86929161127e916134cf565b91601b5491601c5493613a9985856134e9565b80820291848212600160ff1b821416613b03578183051490151715613aef5705818482019485129112908015821691151617613adb57508082126135fb575090565b634e487b7160e01b81526011600452602490fd5b634e487b7160e01b83526011600452602483fd5b634e487b7160e01b85526011600452602485fd5b50505050601b5490565b50505090565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03161480613c28575b15613b82577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f000000000000000000000000000000000000000000000000000000000000000082527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a0815260c081018181106001600160401b038211176132f25760405251902090565b507f00000000000000000000000000000000000000000000000000000000000000004614613b59565b15613c5857565b60405162461bcd60e51b815260206004820152601660248201527545524332303a2062616c616e636520746f6f206c6f7760501b6044820152606490fd5b15613c9d57565b60405162461bcd60e51b815260206004820152601660248201527545524332303a206e6f207a65726f206164647265737360501b6044820152606490fd5b51906001600160a01b038216820361081c57565b519060ff8216820361081c57565b600581101561320a5780613d0e5750565b60018103613d565760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b6044820152606490fd5b60028103613da35760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606490fd5b600314613dac57565b60405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608490fd5b9291906fa2a8918ca85bafe22016d0b997e4df60600160ff1b038311613e685791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa15610fdd5781516001600160a01b03811615613e62579190565b50600190565b50505050600090600390565b600019811461348b5760010190565b7fe50de2333c10a9502fcb1d8ae13a51bbf423153dfc63c2b8997665b32154afc360018060a01b038092169160009083825260036020526040822094169384825260205284604082205580a4565b909160207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259160018060a01b03809416938460005260028352604060002095169485600052825280604060002055604051908152a3565b60405190613f3582613308565b60006040838281528260208201520152565b60405190613f5482613323565b6014546001600160801b038116835260801c6020830152565b60405190613f7a82613323565b6025546001600160801b038116835260801c6020830152565b6001600160801b03918216908216019190821161348b57565b613fb4613f28565b5060006020604051613fc581613323565b828152015260006020604051613fda81613323565b828152015260405190613fec82613308565b602454916001600160401b038316815260208101926001600160401b038160401c16845260801c60408201528092614022613f47565b9261402b613f6d565b92600060018060a01b0360095416600e549460018060801b038751166040519063442c159960e01b8252876004830152602482015260006044820152602081606481865afa8015610eea57600090614438575b895161409492506001600160801b0316906134dc565b80614403575060005b6140b26001600160401b0382935116426134cf565b9485156143d9575050426001600160401b031660208a8101919091528801516001600160801b03161561438f57506020670de0b6b3a76400006141148561410f8c6001600160401b038d60018060801b0390511691511690613478565b613478565b895191900496906001600160801b039061413390828a16908316613f93565b168952875160405163442c159960e01b815260048101929092526001600160801b031660248201526000604482015291829060649082905afa8015610eea5760009061435b575b875161419092506001600160801b0316906134dc565b926141be8461390a620186a06141a8601a548a613478565b60208c01516001600160801b0316919004613478565b6040890180519195916001600160801b0380881692916141e19084908316613f93565b16905260208801805190916001600160801b039161420191908316613f93565b16905280614326575060005b602a54909384828110156142a15761422590836134cf565b90670de0b6b3a7640000820291808304670de0b6b3a7640000149015171561348b5761390a6142796142736142656001600160401b0396614283966134a1565b9361410f602e549580613478565b836134dc565b91848d5116613478565b168089526001600160401b03602d541680911061429d5750565b8852565b909150602b548082116142b357505050565b6142bc916134cf565b670de0b6b3a7640000810290808204670de0b6b3a7640000149015171561348b576001600160401b039161390a6142ff61427361426561430895602c54906134a1565b848d5116613478565b81602d5460401c1680821161431e575b50168852565b905038614318565b87516001600160801b0316670de0b6b3a764000081810292918084049091149015171561348b57614356916134a1565b61420d565b506020813d602011614387575b8161437560209383613375565b8101031261081c57614190905161417a565b3d9150614368565b9697939450509350506001600160401b038151166001600160401b03602f54168091036143cd575b5093926143c2613f6d565b926000926000929190565b815260019250386143b7565b9750985050505050925050916143ed613f47565b916143f6613f6d565b9160009160009190600090565b88516001600160801b0316670de0b6b3a764000081810292918084049091149015171561348b57614433916134a1565b61409d565b506020813d602011614464575b8161445260209383613375565b8101031261081c57614094905161407e565b3d9150614445565b601480546001600160801b031660809290921b6001600160801b031916919091179055565b61457860208061454e6144a2613fac565b939695939092901561457a575050506001600160401b03602f54166000807f33af5ce86e8438eff54589f85332916444457dfa8685493fbd579b809097026b88604051838152a45b805185820151604092830151921b67ffffffffffffffff60401b166001600160401b03919091161760809190911b6001600160801b0319908116919091176024558151601480549092166001600160801b039182161790915594859101511661446c565b8051910151821660801b6001600160801b0319166001600160801b03929091169190911617602555565b565b7f33af5ce86e8438eff54589f85332916444457dfa8685493fbd579b809097026b886001600160401b0386511694604051908152a46144ea565b156145bb57565b60405162461bcd60e51b815260206004820152600e60248201526d13585c9ad95d0e881c185d5cd95960921b6044820152606490fd5b156145f857565b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881a5b9cdbdb1d995b9d607a1b6044820152606490fd5b1561463857565b606460405162461bcd60e51b815260206004820152602060248201527f4d61726b65743a2063616e6e6f742065786563757465206f6e20697473656c666044820152fd5b3561ffff8116810361081c5790565b1561469257565b60405162461bcd60e51b815260206004820152601460248201527329a3a61d1024b73b30b634b21039bbb0b83832b960611b6044820152606490fd5b919082604091031261081c576020825192015190565b9081526001600160a01b0391821660208201529116604082015260006060820152608081019190915260a00190565b9035601e198236030181121561081c5701602081359101916001600160401b03821161081c57813603831361081c57565b908060209392818452848401376000828201840152601f01601f1916010190565b3d15614790573d9061477682613396565b916147846040519384613375565b82523d6000602084013e565b606090565b60008091604051602081019063313ce56760e01b8252600481526147b881613323565b51916001600160a01b03165afa6147cd614765565b90806147f8575b156147f25760208180518101031261081c57602061390f9101613cef565b50601290565b5060208151146147d4565b919060018060a01b038060009416845260206017815260408520549081156148f15760188152604086205480156148ea578161483d613f47565b9460095416916064600c54604051948593849263442c159960e01b8452600484015260248301528b60448301525afa9687156108295780976148b4575b50506136896148996139016148af969798620186a06022540490613478565b9561410f60018060801b03948587511690613478565b111590565b9096508187813d83116148e3575b6148cc8183613375565b8101031261034a575094519461368961489961487a565b503d6148c2565b5050505050565b5060019450505050565b9182158015614936575b613607576001810180911161348b576149249261357b61390a926134c1565b6005810180911161348b57600a900490565b508115614905565b6001600160a01b0316338103614952575050565b60008181526020906003825260409182822033835281528483832054106149bb5783825260038152828220338352815282822054600101614994575050505050565b6149af938252600381528282209033835252209182546134cf565b905538808080806148ea565b60649083519062461bcd60e51b82526004820152601460248201527313585c9ad95d0e881b9bdd08185c1c1c9bdd995960621b6044820152fd5b600a5460405163dbd01de160e01b815260209290916001600160a01b039084908490600490829085165afa8015610eea578493600091614aa4575b50918161ffff936044936040519889968795633a304d8b60e21b8752166004860152166024840152165afa908115610eea57600091614a70575b50905090565b82813d8311614a9d575b614a848183613375565b8101031261034a5750614a96906136c3565b8038614a6a565b503d614a7a565b9091929381813d8311614adb575b614abc8183613375565b81010312610f6b575190828216820361034a5750839291906044614a30565b503d614ab2565b6001600160a01b039182168152911660208201526040810191909152606081019190915260800190565b6001600160801b03918216908216039190821161348b57565b92909192620186a0614b3960305486613478565b04614b42613f47565b94614b4d82826134dc565b94604093845196614b5d88613323565b60008089526020988901819052895190956001600160801b039290918316614e3c5782614b918c8280855b16915116613f93565b168b52614bd58a8c0184614baa81851682845116613f93565b16809152614bd085849e511660018060801b031660018060801b03196014541617601455565b61446c565b6016548015908115614e2d575b5015614def57859060018060a01b0380951680895260178c52898920614c098382546134dc565b90558951918483528c8301527f3a5151e57d3bc9798e7853034ac52293d1a0e12a2b44725e75b03b21f86477a68a87891693a480614dce575b50878260095416946064600e5489519788938492638eb22cdd60e01b8452600484015260248301528960448301525afa938415614dc4578594614d95575b508397614c8b613f6d565b818101916103e88484511610614d61575090614cdb839283614cb5614d02968a1682845116614b0c565b1690819052602580546001600160801b0319166001600160801b03909216919091179055565b51602580546001600160801b03169290911660801b6001600160801b031916919091179055565b6009541690600e5490823b15611090579184939184879694614d3a985198899586948593630208d92960e11b85523060048601614ae2565b03925af1918215614d57575050614d4e5750565b614578906132df565b51903d90823e3d90fd5b60649089519062461bcd60e51b82526004820152600e60248201526d14d1d30e881b5a5b881b1a5b5a5d60921b6044820152fd5b9093508781813d8311614dbd575b614dad8183613375565b8101031261109057519238614c80565b503d614da3565b86513d87823e3d90fd5b82600a5416865260018952614de78787209182546134dc565b905538614c42565b875162461bcd60e51b8152600481018b9052601760248201527614d1d30e88189bdc9c9bddc818d85c081c995858da1959604a1b6044820152606490fd5b90508360145416111538614be2565b828b8b81019280614e6f614e60614e568688511684613478565b86865116906134a1565b95856107dd8187511689613478565b10614e81575b908280614b9193614b88565b92908280614e91614b9194613e74565b959293505050614e75565b15614ea357565b60405162461bcd60e51b815260206004820152601f60248201527f42423a206c65766572616765206578656375746f72206e6f742076616c6964006044820152606490fd5b9081602091031261081c57516001600160a01b038116810361081c5790565b919260a09361390f979592845260208401526040830152600180841b031660608201528160808201520191614744565b60208101805190939291906001600160801b03908116614f58575090925050565b90816107dd81614f7b614f71614f849686511688613478565b828a5116906134a1565b97511687613478565b10614f8b57565b9061390f90613e74565b92919060009160018060a01b03948583168452602060178152604085205480841161522b575b5082156151ef57614fca613f47565b968582604051614fd981613323565b8281520152614fe88489614f37565b9560018060801b039384615001818a16828d5116614b0c565b168a52615040848b018661501a818a1682845116614b0c565b16809152614bd0878b9d511660018060801b031660018060801b03196014541617601455565b828716825260178452604082206150588782546134cf565b90558260095416600e549560405190638eb22cdd60e01b82528760048301528a6024830152600160448301528682606481865afa9182156109255785926151c0575b5080602554169492803b1561081c57826000916150d09a83604051809d81958294630208d92960e11b8452308d60048601614ae2565b03925af1948515610eea577fc8e512d8f188ca059984b5853d2bf653da902696b8512785b182b2c813789a6e9887966151aa575b506151129082841690613f93565b1660018060801b031960255416176025558383169081835260268752604083206027549081855288526040842054821160001461518357505081526026855260408120602754825285528060408120555b1561517d57508060095416955b60405195865216941692a4565b95615170565b90918352602687526040832090835286526151a3604083209182546134cf565b9055615163565b6151b59194506132df565b600092615112615104565b9091508681813d83116151e8575b6151d88183613375565b810103126110905751903861509a565b503d6151ce565b6064906040519062461bcd60e51b82526004820152601560248201527453474c3a206e6f7468696e6720746f20726570617960581b6044820152fd5b925038614fbb565b6040519061524082613323565b60038252623f3f3f60e81b6020830152565b908151811015615263570160200190565b634e487b7160e01b600052603260045260246000fd5b60ff1660ff811461348b5760010190565b8051604081106153025750805181019060208181840193031261081c576020810151906001600160401b03821161081c570181603f8201121561081c5760208101516152d581613396565b926152e36040519485613375565b8184526040828401011161081c5761390f91604060208501910161313c565b6020929083036153f0576000805b60ff811685811090816153d1575b50156153325761532d90615279565b615310565b9260ff8094169261534284613396565b936153506040519586613375565b80855261535f601f1991613396565b013687860137825b858116878110806153b4575b156153a9576153a4919061539e6001600160f81b03196153938388615252565b5116871a9188615252565b53615279565b615367565b505094505050905090565b506001600160f81b03196153c88286615252565b51161515615373565b6001600160f81b031991506153e69086615252565b511615153861531e565b91505061390f61523356feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa26469706673582212204a5215d4d199b5dc237a0bf5a57db68bd2d75f4faa736acaedce42321759e49364736f6c63430008120033"; type SGLLeverageConstructorParams = | [signer?: Signer] diff --git a/src/typechain/tapioca-bar/factories/markets/singularity/SGLLiquidation__factory.ts b/src/typechain/tapioca-bar/factories/markets/singularity/SGLLiquidation__factory.ts index 8ee0104e..35bbaf19 100644 --- a/src/typechain/tapioca-bar/factories/markets/singularity/SGLLiquidation__factory.ts +++ b/src/typechain/tapioca-bar/factories/markets/singularity/SGLLiquidation__factory.ts @@ -130,6 +130,25 @@ const _abi = [ name: "InterestElasticityUpdated", type: "event", }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "address", + name: "oldVal", + type: "address", + }, + { + indexed: true, + internalType: "address", + name: "newVal", + type: "address", + }, + ], + name: "LeverageExecutorSet", + type: "event", + }, { anonymous: false, inputs: [ @@ -1143,6 +1162,19 @@ const _abi = [ stateMutability: "view", type: "function", }, + { + inputs: [], + name: "leverageExecutor", + outputs: [ + { + internalType: "contract ILeverageExecutor", + name: "", + type: "address", + }, + ], + stateMutability: "view", + type: "function", + }, { inputs: [ { @@ -1588,6 +1620,19 @@ const _abi = [ stateMutability: "view", type: "function", }, + { + inputs: [ + { + internalType: "contract ILeverageExecutor", + name: "_executor", + type: "address", + }, + ], + name: "setLeverageExecutor", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, { inputs: [ { @@ -1918,7 +1963,7 @@ const _abi = [ ] as const; const _bytecode = - "0x6101408060405234620001e5576200001781620001ea565b601381526001602082017f546170696f63612053696e67756c617269747900000000000000000000000000815260206040516200005481620001ea565b8381520192603160f81b845251902091208160e052610100918183524660a0526040519160208301907f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f92838352604085015260608401524660808401523060a084015260a0835260c083019280841060018060401b03851117620001cf5760408490525190206080523060c052610120908152600580546001600160a01b0319163390811790915560007f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a362013880601b5562015f90601c55612710601d55612ee06020557f0bd4060688a1800ae986e4840aebc924bb40b5bf44de4583df2257220b54b77c6026557f7d1dc38e60930664f8cbf495da6556ca091d2f92d6550877750c049864b182306027556161a86028556032602f55614bf0928362000207843960805183613a4f015260a05183613b1a015260c05183613a19015260e05183613a9e01525182613ac401525181613a7b0152f35b634e487b7160e01b600052604160045260246000fd5b600080fd5b604081019081106001600160401b03821117620001cf5760405256fe608080604052600436101561001357600080fd5b60e0600035811c918262a02a201461301a5750816302ce728f14612eb757816306fdde0314612e00578163078dfbe714612cfc578163095ea7b314612cd65781630c4e84f014612bbc57816318160ddd14612b9b5781631c9e379b14612b615781631da8bf1014612aaa57816323b872dd14612906578163313ce56714612876578163331960ff1461285857816334d441d01461283a5781633644e5151461281f57816337b6b7b91461280157816338d52e0f146127d85781633ba0b9a9146127ba5781633f741adb1461279657816340626d8b1461277857816344de240a1461275a578163473e3ce71461273c57816348e4163e146127025781634d7f2a34146126e45781634e71e0c814612636578163529898f21461261957816352f353eb146125f257816355140232146125cb57816355c2ab94146125a157816357935462146125835781635dfe04e8146125245781636c3d8b8f146124fb57816370a08231146124c1578163727785471461248b57816374645ff3146124605781637dc0d1d0146124375781637ecebe00146123fd5781637fa0b84e146123cc578163821226e8146123ae5781638285ef401461237c5781638c5d0ed31461235e5781638da5cb5b14612335578163910dd7c8146120eb578163959916dc146120cd57816395d89b411461201357816399a9702814611fe45781639c5d719214611fc65781639e15e89f14611f81578163a28e6b8214611abc578163a9059cbb146119da578163b0e21e8a146119bc578163b27c0e7414611981578163bb4cfe3b14611963578163ce8849ed1461193a578163d3fb2a38146114e1578163d505accf1461135c57508063d8dfeb4514611333578063dd62ed3e146112e2578063de406577146112b9578063e0996cb61461129b578063e30c397814611272578063e5644d8b146103cf578063ea64dd56146103b1578063eec0f42e14610393578063f42760b714610375578063f8ba4cff1461035a578063f9557ccb146103245763ffe04c661461030157600080fd5b3461031f57600036600319011261031f576020602954604051908152f35b600080fd5b3461031f57600036600319011261031f57602454604080516001600160801b038316815260809290921c602083015290f35b0390f35b3461031f57600036600319011261031f57610373614372565b005b3461031f57600036600319011261031f576020602a54604051908152f35b3461031f57600036600319011261031f576020600c54604051908152f35b3461031f57600036600319011261031f576020601f54604051908152f35b3461031f57608036600319011261031f576004356001600160401b03811161031f576103ff903690600401613333565b906024356001600160401b03811161031f5761041f903690600401613333565b6044356001600160401b03811161031f5761043e903690600401613333565b90916064356001600160401b03811161031f5761045f903690600401613333565b9290916004600052600760205260ff6040600020541661123c5787156111fc578088036111c1576104918289146144bf565b61049c8285146144bf565b600f5460405163d6d7d52560e01b8152602060048201526010549097916001600160a01b03169088906000906104d181613167565b9081602485015260018116908160001461119f5750600114611156575b50918160008160409503925af1968715610c1557600090600098611122575b508781611118575b501561110e57866011555b610528614372565b60009860005b818110610578578a1561053d57005b60405162461bcd60e51b815260206004820152601360248201527214d1d30e881b9bc81d5cd95c9cc8199bdd5b99606a1b6044820152606490fd5b61058381838c614879565b356001600160a01b038116810361031f5761059e8a82614889565b156105b3575b506105ae90613d70565b61052e565b9a6105bd90613d70565b9a6105c9828686614879565b35906105d683888c614879565b35906001600160a01b038216820361031f5789841015610bb8578360051b890135601e198a36030181121561031f578901926001600160401b0384351161031f5783353603602085011361031f5761062e8d8361390c565b918d156110c95760018060a01b03600954166020600c5460018060a01b03841660005260188252606460406000205491604051948593849263442c159960e01b845260048401526024830152600060448301525afa908115610c15578f90600092611093575b506106a56106aa92602154906133ee565b613417565b9360018060a01b03821660005260176020526106cb856040600020546134cb565b80601d5480611074575b508085111561106d575b6001600160a01b0384166000908152601760205260409020549081811115611064575080965b111561102f578f938181111561102857505b6001600160a01b038316600090815260176020526040902054908181111561101d57506107448180613445565b6001600160a01b038416600090815260176020526040902055610765613e43565b60208101516001600160801b0316610fe85750602081965b60646107a361079a60018060a01b036009541698600c54946133ee565b60215490613417565b916040519788938492638eb22cdd60e01b845260048401526024830152600060448301525afa938415610c1557600094610fb4575b506001600160a01b0383166000908152601860205260409020548411610f6f5760018060a01b03831660005260186020526040600020610819858254613445565b90558515610f3b57601454906108606001600160801b0361083e8982168286166144a6565b16926001600160801b0319926001600160801b0316908316841760801c6144a6565b60801b161760145560018060a01b0360095416956020600e546064604051809a8193638eb22cdd60e01b835260048301528a6024830152600160448301525afa968715610c1557600097610f03575b508691610991610998926015805488808211600014610ef9576108d191613445565b905b5560018060a01b0386166000526025806020526040600020602790815490816000526020526040600020548a11600014610ec4575060018060a01b0388166000528160205260406000209054600052602052600060408120555b60018060a01b03871660005280602052604060002090602691825490816000526020526040600020548811600014610e90575060018060a01b03881660005260205260406000209054600052602052600060408120555b36906020813591016132cf565b908561451c565b5010610e4b57600954600e54604051627eeac760e11b815230600482015260248101919091526001600160a01b039091169390602081604481885afa8015610c1557600090610e17575b6024546109f992506001600160801b031690613445565b9580871115610e0757610a1b610a13620186a09289613445565b925b836133ee565b0495610a278783613445565b9485610c99575b5086610c21575b610a4f87610a4a8760018060801b0394613445565b613445565b602454916001600160801b0391610a699116828416613e8f565b6001600160801b03199092169116176024908155600d5460095460405163095ea7b360e01b81526001600160a01b039182166004820152600093810184905292602092849260449284929091165af18015610c155787918691610bce575b50610a4a90610ad593613445565b6040516000815230907f30a8c4f9ab5af7e1309ca87c32377d1a83366c5990472dbf9d262450eae14e3860203092a460405190610b1182613241565b6001825260203681840137815115610bb8576001600160a01b03166020820190815260405191518291906000905b808210610b96575050508190039020604080519384526020840194909452928201526105ae9392919033907f85b91d472e69b2cfe848ed50eb5d8582ae96c22057b6e46250255dd6f6c3519290606090a4906105a4565b82516001600160a01b0316845260209384019390920191600190910190610b3f565b634e487b7160e01b600052603260045260246000fd5b9150506020813d602011610c0d575b81610bea60209383613293565b8101031261031f57610a4a85610ad593610c048a946137e8565b50935090610ac7565b3d9150610bdd565b6040513d6000823e3d90fd5b610c5660408860018060a01b0360095416600e5460008451809681958294634d4d7cbd60e11b84523390309060048601614996565b03925af18015610c1557610c6b575b50610a35565b610c8c9060403d604011610c92575b610c848183613293565b810190614506565b50610c65565b503d610c7a565b600d5460405163095ea7b360e01b8152600481019290925260006024830181905260209183916044918391906001600160a01b03165af18015610c1557610dce575b50600d5460095460405163095ea7b360e01b81526001600160a01b03918216600482015260001960248201529160209183916044918391600091165af18015610c1557610d95575b50600954600e54600a5460408051634d4d7cbd60e11b815293909284926001600160a01b039283169284926000928492610d68928f9290911690309060048601614996565b03925af18015610c155715610a2e57610d8f9060403d604011610c9257610c848183613293565b50610a2e565b6020813d602011610dc6575b81610dae60209383613293565b8101031261031f57610dbf906137e8565b5038610d23565b3d9150610da1565b6020813d602011610dff575b81610de760209383613293565b8101031261031f57610df8906137e8565b5038610cdb565b3d9150610dda565b50620186a0610a1b600092610a15565b506020813d602011610e43575b81610e3160209383613293565b8101031261031f576109f990516109e2565b3d9150610e24565b60405162461bcd60e51b815260206004820152601b60248201527f53474c3a20617373657420616d6f756e74206e6f742076616c696400000000006044820152606490fd5b915060018060a01b0388166000526020526040600020906000526020526040600020610ebd868254613445565b9055610984565b905060018060a01b038816600052816020526040600020906000526020526040600020610ef2898254613445565b905561092d565b50506000906108d3565b909196506020813d602011610f33575b81610f2060209383613293565b8101031261031f575195906109986108af565b3d9150610f13565b60405162461bcd60e51b815260206004820152600c60248201526b14d1d30e881cdbdb1d995b9d60a21b6044820152606490fd5b60405162461bcd60e51b815260206004820152601a60248201527f53474c3a206e6f7420656e6f75676820636f6c6c61746572616c0000000000006044820152606490fd5b9093506020813d602011610fe0575b81610fd060209383613293565b8101031261031f575192386107d8565b3d9150610fc3565b805160209161101791611004906001600160801b0316856133ee565b908301516001600160801b031690613417565b9661077d565b610744908092613445565b9050610717565b60405162461bcd60e51b815260206004820152600d60248201526c14d1d30e88189859081919589d609a1b6044820152606490fd5b90508096610705565b50836106df565b90620186a061108661108d93836133ee565b0490613452565b386106d5565b9150506020813d6020116110c1575b816110af60209383613293565b8101031261031f57518e6106a5610694565b3d91506110a2565b60405162461bcd60e51b815260206004820152601b60248201527f53474c3a2065786368616e676552617465206e6f742076616c696400000000006044820152606490fd5b6011549650610520565b905015158a610515565b905061114791975060403d60401161114f575b61113f8183613293565b8101906137f5565b96908a61050d565b503d611135565b601060009081529150600080516020614b9b8339815191525b8183106111835750508101604401816104ee565b8060209294604485600194549201015201910190918a9261116f565b60ff191660448581019190915291151560051b840190910191508290506104ee565b60405162461bcd60e51b8152602060048201526013602482015272084847440d8cadccee8d040dad2e6dac2e8c6d606b1b6044820152606490fd5b60405162461bcd60e51b815260206004820152601860248201527742423a206e6f7468696e6720746f206c697175696461746560401b6044820152606490fd5b60405162461bcd60e51b815260206004820152600e60248201526d13585c9ad95d0e881c185d5cd95960921b6044820152606490fd5b3461031f57600036600319011261031f576006546040516001600160a01b039091168152602090f35b3461031f57600036600319011261031f576020601d54604051908152f35b3461031f57600036600319011261031f576009546040516001600160a01b039091168152602090f35b3461031f57604036600319011261031f576112fb613066565b61130361307c565b9060018060a01b038091166000526002602052604060002091166000526020526020604060002054604051908152f35b3461031f57600036600319011261031f57600b546040516001600160a01b039091168152602090f35b3461031f5761136a366130e9565b8394969793929192421161149c57611448926114409260018060a01b0395868b16978860005260046020526040600020918254926113a784613d70565b90556040519160208301937f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e2668552600060408501528b60608501528a8d1660808501528d60a085015260c08401528183015281526114048161325c565b51902061140f613a16565b9060405190602082019261190160f01b8452602283015260428201526042815261143881613278565b519020613ceb565b919091613bec565b16036114575761037392613dcd565b60405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152606490fd5b60405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b3461031f5761016036600319011261031f576001600160a01b036004358181169081900361031f576001600160401b039160243583811161031f5761152a903690600401613306565b90936044359383851680950361031f5761154984600554163314613363565b806118fb575b508161179a575b505090809250611759575b505060643580611741575b5060843580611729575b5060a43580611712575b5060c435806116ee575b5060e435806116ca575b506101043580611698575b506101243580611624575b5061014435806115b657005b601e5481106115c457601f55005b60405162461bcd60e51b815260206004820152603260248201527f4d61726b65743a206c69717569646174696f6e436f6c6c61746572616c697a616044820152711d1a5bdb94985d19481d1bdbc81cdb585b1b60721b6064820152608490fd5b611633620186a08211156133ae565b601f54811161164557601e55806115aa565b60405162461bcd60e51b815260206004820152602560248201527f4d61726b65743a20636f6c6c61746572616c697a6174696f6e5261746520746f6044820152646f2062696760d81b6064820152608490fd5b806016547fae6e0ab3b95f0a53ff9660a390ccedcbbf1f2355dce974a9841af106fddcfaba600080a36016558061159f565b6116d8620186a082106133ae565b6116e5601b5482116133ae565b601c5580611594565b6116fc620186a082106133ae565b611709601c5482106133ae565b601b558061158a565b611720620186a082106133ae565b601d5580611580565b611738620186a08211156133ae565b601a5580611576565b611750620186a08211156133ae565b6019558061156c565b816008549182167f5a62d22209e370e38eea92cfddcd228e656e6ec139243392a760a7769f5877fd600080a36001600160a01b031916176008558080611561565b81116118e5576117ab601054613167565b601f8111611894575b506000601f821160011461181d5781929394600092611812575b50508160011b916000199060031b1c1916176010555b7fa6f004921c944d4b8bf6e38462b00f36a58d62495d56b51f571ab78f732c9815600080a181908380611556565b0135905084806117ce565b60106000908152601f19831695600080516020614b9b83398151915292909160205b88821061187c57505083600195969710611862575b505050811b016010556117e4565b0135600019600384901b60f8161c19169055848080611854565b8060018496829495870135815501950192019061183f565b6010600052600080516020614b9b833981519152601f830160051c8101602084106118de575b601f90920160051c01905b8181106118d257506117b4565b600081556001016118c5565b50806118ba565b634e487b7160e01b600052604160045260246000fd5b600f80546001600160a01b0319169190911790557f0b2d6eb667d0522c3eb86e4288afecae6c11591ffd1345d4d12407e0598bca9b600080a18561154f565b3461031f57600036600319011261031f576008546040516001600160a01b039091168152602090f35b3461031f57600036600319011261031f576020601e54604051908152f35b3461031f57600036600319011261031f576060602354604051906001600160401b0380821683528160401c16602083015260801c6040820152f35b3461031f57600036600319011261031f576020601a54604051908152f35b3461031f57604036600319011261031f576119f3613066565b602435908115801590611aaa575b611a37575b6040519182526001600160a01b0316903390600080516020614b7b83398151915290602090a3602060405160018152f35b336000526001602052604060002054611a5283821015613b40565b6001600160a01b038216908333839003611a6f575b505050611a06565b611a7e91610a4a841515613b85565b3360005260016020526040600020556000526040600020611aa0838254613452565b9055828083611a67565b50336001600160a01b03821614611a01565b3461031f57608036600319011261031f57611ad5613066565b611add61307c565b60443591906001600160a01b0390818416840361031f57606435936001600160401b03851161031f57611b17611b56953690600401613306565b9190611b2885600554163314613363565b84600f54169560405163d6d7d52560e01b81526040816020998a60048301528160008160249e8f82016131a1565b03925af1908115610c1557600090600092611f5f575b508181611f55575b5015611f4c57806011555b15611efd578590611b8e614372565b16928360005260178752611bb0604060002054620186a06110868a54836133ee565b87896064896009541693611bcd61079a600c5492601154906133ee565b946040519586948593638eb22cdd60e01b85526004850152830152600060448301525afa908115610c1557600091611ed0575b50846000526018885260406000205411611e8e57611dad611d62856000989695611d5c8a999796611d9f9660258e8d9a8b526018815260408b205496611cfb611c47613e43565b828e5260178452611cd6611cad8f604090205492600087604051611c6a81613241565b82815201528681019360018060801b03928382818094868a8381511615600014611e4157505081611ca0915b16828851166144a6565b16855216828751166144a6565b169384905251601480546001600160801b0319166001600160801b039390921692909216179055565b601480546001600160801b031660809290921b6001600160801b031916919091179055565b808c52601782528b604081205582825260408c206026548d5282528b6040812055808c5260188252611d3360408d2054601554613445565b6015558b52601881528a6040812055528d60408a20906027548b525288604081205536916132cf565b9161451c565b600d546040805163a9059cbb60e01b8d82019081526001600160a01b039099168e8201908152602081019490945291909816979094859350910190565b03601f198101835282613293565b51925af1611db9614476565b81611e09575b5015611dc757005b601c6064926040519262461bcd60e51b845260048401528201527f426f72696e6745524332303a205472616e73666572206661696c6564000000006044820152fd5b80915051828115918215611e22575b5050905083611dbf565b838092935001031261031f5781611e3991016137e8565b808285611e18565b611ca092611e7a611e7086611e67611e5d8280985116866133ee565b8287511690613417565b945116846133ee565b848c511690613417565b1015611c9657611e8990613d70565b611c96565b606488886040519162461bcd60e51b83528160048401528201527f42696742616e673a2043616e6e6f7420666f726365206c6971756964617465646044820152fd5b90508781813d8311611ef6575b611ee78183613293565b8101031261031f575189611c00565b503d611edd565b60405162461bcd60e51b8152600481018890526022818a01527f42423a2063757272656e742065786368616e676552617465206e6f742076616c6044820152611a5960f21b6064820152608490fd5b50601154611b7f565b905015158a611b74565b9050611f7a915060403d60401161114f5761113f8183613293565b908a611b6c565b3461031f57604036600319011261031f57610356611fa9611fa0613066565b6024359061368e565b604080519384526020840192909252908201529081906060820190565b3461031f57600036600319011261031f576020602b54604051908152f35b3461031f57604036600319011261031f57602061200b612002613066565b6024359061390c565b604051908152f35b3461031f57600036600319011261031f5760008060018060a01b03600b541660405160208101906395d89b4160e01b82526004815261205181613241565b51915afa61205d614476565b90156120bc5761206f61035691614a06565b6120a86023604051809362746d2d60e81b60208301526120988151809260208686019101613092565b8101036003810184520182613293565b6040519182916020835260208301906130b5565b506103566120c86149c5565b61206f565b3461031f57600036600319011261031f576020602f54604051908152f35b3461031f57604036600319011261031f576004356001600160401b03811161031f573660238201121561031f5761212c9036906024816004013591016132cf565b9060243561ffff811680910361031f5761010091828480518101031261031f5760206121598186016137e8565b9161216660408701613bca565b9061217360608801613bca565b9660808101519660a08201519261218c60c08401613bde565b91818401519301519360018060a01b03808097169b16988142116122f0579289888d9897946122679794611440978f8e6000146122c9577f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e266955b8d6000526004865260406000209283549361220085613d70565b905560405196870197885260408701528d6060870152608086015260a085015260c08401528183015281526122348161325c565b51902061223f613a16565b90604051908a82019261190160f01b8452602283015260428201526042815261143881613278565b160361228557501561227c5761037392613dcd565b61037392613d7f565b6064906040519062461bcd60e51b82526004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152fd5b7f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d6956121e6565b60405162461bcd60e51b815260048101899052601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b3461031f57600036600319011261031f576005546040516001600160a01b039091168152602090f35b3461031f57600036600319011261031f576020601b54604051908152f35b3461031f57600036600319011261031f57601454604080516001600160801b038316815260809290921c602083015290f35b3461031f57600036600319011261031f576020602d54604051908152f35b3461031f57604036600319011261031f576123f26123e8613066565b6024359033613d7f565b602060405160018152f35b3461031f57602036600319011261031f576001600160a01b0361241e613066565b1660005260046020526020604060002054604051908152f35b3461031f57600036600319011261031f57600f546040516001600160a01b039091168152602090f35b3461031f57600036600319011261031f576103566040516120a881612484816131a1565b0382613293565b3461031f57602036600319011261031f57600435600981101561031f5760ff6124b5602092613138565b54166040519015158152f35b3461031f57602036600319011261031f576001600160a01b036124e2613066565b1660005260016020526020604060002054604051908152f35b3461031f57600036600319011261031f57600a546040516001600160a01b039091168152602090f35b3461031f57600036600319011261031f5761253d613e24565b506080612548613ea8565b509350505050604051916001600160401b0380825116845260208201511660208401526040600180861b039101511660408301526060820152f35b3461031f57600036600319011261031f576020601c54604051908152f35b3461031f57600036600319011261031f5760206001600160401b03602c5460401c16604051908152f35b3461031f57600036600319011261031f5760206001600160401b03602c5416604051908152f35b3461031f57600036600319011261031f5760206001600160401b03602e5416604051908152f35b3461031f57600036600319011261031f5760208054604051908152f35b3461031f57600036600319011261031f576006546001600160a01b0390818116338190036126a057806005549384167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a36001600160a01b03199283161760055516600655005b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b3461031f57600036600319011261031f576020602854604051908152f35b3461031f57602036600319011261031f576001600160a01b03612723613066565b1660005260176020526020604060002054604051908152f35b3461031f57600036600319011261031f576020601554604051908152f35b3461031f57600036600319011261031f576020600e54604051908152f35b3461031f57600036600319011261031f576020601654604051908152f35b3461031f57606036600319011261031f57602061200b6044356024356004356135c7565b3461031f57600036600319011261031f576020601154604051908152f35b3461031f57600036600319011261031f57600d546040516001600160a01b039091168152602090f35b3461031f57600036600319011261031f576020601254604051908152f35b3461031f57600036600319011261031f57602061200b613a16565b3461031f57600036600319011261031f576020601954604051908152f35b3461031f57600036600319011261031f576020601354604051908152f35b3461031f57600036600319011261031f5760008060018060a01b03600d5416604051602081019063313ce56760e01b8252600481526128b481613241565b51915afa6128c0614476565b90806128fb575b156128f15760208180518101031261031f576128e66020809201613bde565b60ff60405191168152f35b50602060126128e6565b5060208151146128c7565b3461031f57606036600319011261031f5761291f613066565b61292761307c565b6044359081612964575b6040519182526001600160a01b03908116921690600080516020614b7b83398151915290602090a3602060405160018152f35b60018060a01b0380841680600052602060018152846040600020549361298c82861015613b40565b8516938484036129a1575b5050505050612931565b836000526002835260406000203360005283526040600020546000198103612a15575b5084926129ec600080516020614b7b833981519152979593600193610a4a6020991515613b85565b92600052526040600020556000526040600020612a0a858254613452565b905591858481612997565b90918110612a6a57602094926129ec88600080516020614b7b833981519152989694612a4382600196613445565b866000526002855260406000203360005285526040600020559350939597505092946129c4565b60405162461bcd60e51b815260048101849052601860248201527745524332303a20616c6c6f77616e636520746f6f206c6f7760401b6044820152606490fd5b3461031f57612ab8366130e9565b8394969793929192421161149c57612b52926114409260018060a01b0395868b1697886000526004602052604060002091825492612af584613d70565b90556040519160208301937f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d68552600060408501528b60608501528a8d1660808501528d60a085015260c08401528183015281526114048161325c565b16036114575761037392613d7f565b3461031f57602036600319011261031f576001600160a01b03612b82613066565b1660005260186020526020604060002054604051908152f35b3461031f57600036600319011261031f57602060245460801c604051908152f35b3461031f57604036600319011261031f57600435600981101561031f57612be16130da565b6008549091906001600160a01b03163303612c9a5760ff612c0182613138565b54161515911515918214612c6057808260ff612c1f612c4e94613138565b54161515827feeec81de25875ce1725479bb76f720a8defdb43dea041919ae37bb4aae9847c0600080a4613138565b9060ff80198354169116179055600080f35b60405162461bcd60e51b81526020600482015260126024820152714d61726b65743a2073616d6520737461746560701b6044820152606490fd5b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881d5b985d5d1a1bdc9a5e995960621b6044820152606490fd5b3461031f57604036600319011261031f576123f2612cf2613066565b6024359033613dcd565b3461031f57606036600319011261031f57612d15613066565b612d1d6130da565b60443590811515820361031f5760018060a01b03928391612d4383600554163314613363565b15612de7571690811590811591612ddf575b5015612da257806005549283167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a36001600160a01b031991821617600555600680549091169055005b60405162461bcd60e51b81526020600482015260156024820152744f776e61626c653a207a65726f206164647265737360581b6044820152606490fd5b905083612d55565b9150501660018060a01b03196006541617600655600080f35b3461031f57600036600319011261031f5760008060018060a01b03600b541660405160208101906306fdde0360e01b825260048152612e3e81613241565b51915afa612e4a614476565b9015612ea657612e5c61035691614a06565b6120a86034604051809373546170696f63612053696e67756c61726974792d60601b6020830152612e968151809260208686019101613092565b8101036014810184520182613293565b50610356612eb26149c5565b612e5c565b3461031f57600036600319011261031f57600f546040805163d6d7d52560e01b8152602060048201529182906001600160a01b031681600081612efc602482016131a1565b03925af18015610c1557600091600091612ff9575b50908015612f9b578115612f5f5781604092601155807f9f9192b5edb17356c524e08d9e025c8e2f6307e6ea52fb7968faa3081f51c3c8600080a25b42601355825191151582526020820152f35b60405162461bcd60e51b81526020600482015260146024820152734d61726b65743a20696e76616c6964207261746560601b6044820152606490fd5b9050612fac60135460125490613452565b4211612fbd57604090601154612f4d565b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881c985d19481d1bdbc81bdb1960621b6044820152606490fd5b9050613014915060403d60401161114f5761113f8183613293565b82612f11565b3461031f57604036600319011261031f57602090613036613066565b61303e61307c565b9060018060a01b03809116600052600384526040600020911660005282526040600020548152f35b600435906001600160a01b038216820361031f57565b602435906001600160a01b038216820361031f57565b60005b8381106130a55750506000910152565b8181015183820152602001613095565b906020916130ce81518092818552858086019101613092565b601f01601f1916010190565b60243590811515820361031f57565b60e090600319011261031f576001600160a01b0390600435828116810361031f5791602435908116810361031f5790604435906064359060843560ff8116810361031f579060a4359060c43590565b6009811015613151576000526007602052604060002090565b634e487b7160e01b600052602160045260246000fd5b90600182811c92168015613197575b602083101461318157565b634e487b7160e01b600052602260045260246000fd5b91607f1691613176565b601054600092916131b182613167565b90818152600192838116908160001461320b57506001146131d157505050565b9092935060106000526020928360002092846000945b8386106131f75750505050010190565b8054858701830152940193859082016131e7565b91935050602093945060ff191683830152151560051b010190565b606081019081106001600160401b038211176118e557604052565b604081019081106001600160401b038211176118e557604052565b61010081019081106001600160401b038211176118e557604052565b608081019081106001600160401b038211176118e557604052565b90601f801991011681019081106001600160401b038211176118e557604052565b6001600160401b0381116118e557601f01601f191660200190565b9291926132db826132b4565b916132e96040519384613293565b82948184528183011161031f578281602093846000960137010152565b9181601f8401121561031f578235916001600160401b03831161031f576020838186019501011161031f57565b9181601f8401121561031f578235916001600160401b03831161031f576020808501948460051b01011161031f57565b1561336a57565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b156133b557565b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881b9bdd081d985b1a59607a1b6044820152606490fd5b8181029291811591840414171561340157565b634e487b7160e01b600052601160045260246000fd5b8115613421570490565b634e487b7160e01b600052601260045260246000fd5b604d811161340157600a0a90565b9190820391821161340157565b9190820180921161340157565b8181039291600013801582851316918412161761340157565b906509184e72a0009182810292818405149015171561340157565b90670de0b6b3a76400009182810292818405149015171561340157565b811561342157600160ff1b8114600019831416613401570590565b601454613506916134f591906134eb906001600160801b038316906133ee565b9060801c90613417565b91620186a0918291601f54906133ee565b048083106135bf576135189083613445565b601e54602054830190818411613401578391613533916133ee565b04918281039060008094128183128116918313901516176135ab579061356461355e61356993613478565b91613493565b6134b0565b90808212156135a457600160ff1b82146135905703905b80821161358b575090565b905090565b634e487b7160e01b81526011600452602490fd5b5090613580565b634e487b7160e01b83526011600452602483fd5b505050600090565b601454919291613606916135f7916135ed916134eb906001600160801b038316906133ee565b93601f54906133ee565b61360083613437565b90613417565b908183106135bf5761356461355e6136606136246136659587613445565b9361365b61365561364c601e5461364661363d86613437565b60205490613452565b906133ee565b61360084613437565b91613437565b61345f565b613478565b600081121561368857600160ff1b8114613401576000039080821161358b575090565b90613580565b9160018060a01b0380931691600093838552602060178152604091828720549081156137db57878385516136c181613241565b82815201526136ce613ea8565b50505050509190506136e1861515613812565b6009541683600c54898b52601882526064878c2054918851948593849263442c159960e01b8452600484015260248301528d60448301525afa9081156137d157899161379e575b509161377e6137929798999492613759886106a5613750601898620186a060215404906133ee565b601e54906133ee565b815190936001600160801b03918691613774918416906133ee565b9201511690613417565b81811061379657035b97835252205461385e565b9091565b505082613787565b90508381813d83116137ca575b6137b58183613293565b810103126137c6575161377e613728565b8880fd5b503d6137ab565b85513d8b823e3d90fd5b5086955085949350505050565b5190811515820361031f57565b919082604091031261031f57602061380c836137e8565b92015190565b1561381957565b60405162461bcd60e51b815260206004820152601e60248201527f4d61726b65743a2065786368616e676552617465206e6f742076616c696400006044820152606490fd5b613869821515613812565b602060018060a01b0360095416916064600c54604051948593849263442c159960e01b845260048401526024830152600060448301525afa908115610c15576000916138d6575b50906106a56138c292602154906133ee565b620186a06138d2601e54836133ee565b0491565b906020823d8211613904575b816138ef60209383613293565b810103126139015750516106a56138b0565b80fd5b3d91506138e2565b6001600160a01b0316600081815260186020526040812054909261392f9161385e565b918352601760205260408320548015613a10578115613a1057818110613a105782811015613a0657601454613978918391610a4a916134eb906001600160801b038316906133ee565b90620186a092838302928084048514901517156139f25761399d929161360091613445565b91601b5491601c54936139b0858561345f565b80820291848212600160ff1b8214166139f25781830514901517156135ab5705818482019485129112908015821691151617613590575080821261358b575090565b634e487b7160e01b85526011600452602485fd5b50505050601b5490565b50505090565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03161480613b17575b15613a71577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f000000000000000000000000000000000000000000000000000000000000000082527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a0815260c081018181106001600160401b038211176118e55760405251902090565b507f00000000000000000000000000000000000000000000000000000000000000004614613a48565b15613b4757565b60405162461bcd60e51b815260206004820152601660248201527545524332303a2062616c616e636520746f6f206c6f7760501b6044820152606490fd5b15613b8c57565b60405162461bcd60e51b815260206004820152601660248201527545524332303a206e6f207a65726f206164647265737360501b6044820152606490fd5b51906001600160a01b038216820361031f57565b519060ff8216820361031f57565b60058110156131515780613bfd5750565b60018103613c455760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b6044820152606490fd5b60028103613c925760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606490fd5b600314613c9b57565b60405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608490fd5b9291906fa2a8918ca85bafe22016d0b997e4df60600160ff1b038311613d645791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa15613d575781516001600160a01b03811615613d51579190565b50600190565b50604051903d90823e3d90fd5b50505050600090600390565b60001981146134015760010190565b7fe50de2333c10a9502fcb1d8ae13a51bbf423153dfc63c2b8997665b32154afc360018060a01b038092169160009083825260036020526040822094169384825260205284604082205580a4565b909160207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259160018060a01b03809416938460005260028352604060002095169485600052825280604060002055604051908152a3565b60405190613e3182613226565b60006040838281528260208201520152565b60405190613e5082613241565b6014546001600160801b038116835260801c6020830152565b60405190613e7682613241565b6024546001600160801b038116835260801c6020830152565b6001600160801b03918216908216019190821161340157565b613eb0613e24565b5060006020604051613ec181613241565b828152015260006020604051613ed681613241565b8281520152604051613ee781613226565b6023546001600160401b03811682526001600160401b038160401c16602083015260801c60408201528091613f1a613e43565b91613f23613e69565b600954600e54825160405163442c159960e01b8152600481018390526001600160801b03909116602482015260006044820181905293959194919391926001600160a01b031690602081606481855afa8015610c155760009061433e575b8851613f9792506001600160801b031690613452565b80614309575060005b80613fb86001600160401b0360208701511642613445565b9485156142df575050426001600160401b031660208a8101919091528801516001600160801b03161561429557506020670de0b6b3a764000061401a856140158c6001600160401b038d60018060801b03905116915116906133ee565b6133ee565b895191900496906001600160801b039061403990828a16908316613e8f565b168952875160405163442c159960e01b815260048101929092526001600160801b031660248201526000604482015291829060649082905afa8015610c1557600090614261575b875161409692506001600160801b031690613452565b926140c4846106a5620186a06140ae601a548a6133ee565b60208c01516001600160801b03169190046133ee565b6040890180519195916001600160801b0380881692916140e79084908316613e8f565b16905260208801805190916001600160801b039161410791908316613e8f565b1690528061422c575060005b602954909384828110156141a75761412b9083613445565b90670de0b6b3a7640000820291808304670de0b6b3a76400001490151715613401576106a561417f61417961416b6001600160401b039661418996613417565b93614015602d5495806133ee565b83613452565b91848d51166133ee565b168089526001600160401b03602c54168091106141a35750565b8852565b909150602a548082116141b957505050565b6141c291613445565b670de0b6b3a7640000810290808204670de0b6b3a76400001490151715613401576001600160401b03916106a561420561417961416b61420e95602b5490613417565b848d51166133ee565b81602c5460401c16808211614224575b50168852565b90503861421e565b87516001600160801b0316670de0b6b3a76400008181029291808404909114901517156134015761425c91613417565b614113565b506020813d60201161428d575b8161427b60209383613293565b8101031261031f576140969051614080565b3d915061426e565b9697939450509350506001600160401b038151166001600160401b03602e54168091036142d3575b5093926142c8613e69565b926000926000929190565b815260019250386142bd565b9750985050505050925050916142f3613e43565b916142fc613e69565b9160009160009190600090565b87516001600160801b0316670de0b6b3a76400008181029291808404909114901517156134015761433991613417565b613fa0565b506020813d60201161436a575b8161435860209383613293565b8101031261031f57613f979051613f81565b3d915061434b565b61442d6040602080614382613ea8565b939995939092901561443d575050506001600160401b03602e54166000807f33af5ce86e8438eff54589f85332916444457dfa8685493fbd579b809097026b878a51838152a45b80518482015196909101516001600160801b0319608091821b81166001600160401b0390931667ffffffffffffffff60401b60409990991b9890981697909717919091176023558151919093015190921b84166001600160801b0392831617601455565b83511692015160801b1617602455565b7f33af5ce86e8438eff54589f85332916444457dfa8685493fbd579b809097026b876001600160401b03865116948b51908152a46143c9565b3d156144a1573d90614487826132b4565b916144956040519384613293565b82523d6000602084013e565b606090565b6001600160801b03918216908216039190821161340157565b156144c657565b60405162461bcd60e51b8152602060048201526018602482015277084d2ce84c2dcce7440d8cadccee8d040dad2e6dac2e8c6d60431b6044820152606490fd5b919082604091031261031f576020825192015190565b91909160018060a01b0392836009541690600c5460409485519063442c159960e01b82526004928084840152602496878401526000958660448501526020958685606481855afa94851561486f57918b8b928a948598614831575b509060a4911694835194859384926311a5cc7760e31b84528b8401528d30908401528760448401528960648401528160848401525af180156148275761480b575b5088600d5416908851926370a0823160e01b94858552308786015287858b81875afa9485156148015789888d948f948c97958f95859b6147b9575b50906146349291600b54169751998a9889978896635cd3dc1560e01b885233908801528601526044850152606484015260a0608484015260a48301906130b5565b03925af180156147af57614777575b508388600d54169287895180958193825230888301525afa801561476d578590614738575b6146729250613445565b9586156146f85790606483926009541691600e54928989519889958694638eb22cdd60e01b86528501528301528660448301525afa9384156146ed575081936146bc575b50505091565b9091809350813d83116146e6575b6146d48183613293565b810103126139015750513880806146b6565b503d6146ca565b51913d9150823e3d90fd5b50818460649387519362461bcd60e51b85528401528201527f53474c3a206f6e436f6c6c61746572616c5265636569766572206661696c65646044820152fd5b50908381813d8311614766575b61474f8183613293565b8101031261476257906146729151614668565b8480fd5b503d614745565b87513d87823e3d90fd5b8481813d83116147a8575b61478c8183613293565b810103126147a45761479d906137e8565b5038614643565b8580fd5b503d614782565b88513d88823e3d90fd5b96999a50509550959250505081813d83116147fa575b6147d98183613293565b810103126137c657928989886146348f9897968f968d98519a9091926145f3565b503d6147cf565b8b513d8b823e3d90fd5b61482190893d8b11610c9257610c848183613293565b506145b8565b89513d89823e3d90fd5b935096505091508681813d8311614868575b61484d8183613293565b8101031261486457519387918a918c9060a4614577565b8780fd5b503d614843565b8a513d8a823e3d90fd5b9190811015610bb85760051b0190565b919060018060a01b0380600094168452602060178152604085205490811561498c57601881526040862054801561498557816148c3613e43565b9460095416916064600c54604051948593849263442c159960e01b8452600484015260248301528b60448301525afa968715614979578097614943575b505061377461492861491f61493e969798620186a060215404906133ee565b601f54906133ee565b9561401560018060801b039485875116906133ee565b111590565b9096508187813d8311614972575b61495b8183613293565b810103126139015750945194613774614928614900565b503d614951565b604051903d90823e3d90fd5b5050505050565b5060019450505050565b9081526001600160a01b0391821660208201529116604082015260006060820152608081019190915260a00190565b604051906149d282613241565b60038252623f3f3f60e81b6020830152565b908151811015610bb8570160200190565b60ff1660ff81146134015760010190565b805160408110614a815750805181019060208181840193031261031f576020810151906001600160401b03821161031f570181603f8201121561031f576020810151614a51816132b4565b92614a5f6040519485613293565b8184526040828401011161031f57614a7e916040602085019101613092565b90565b602092908303614b6f576000805b60ff81168581109081614b50575b5015614ab157614aac906149f5565b614a8f565b9260ff80941692614ac1846132b4565b93614acf6040519586613293565b808552614ade601f19916132b4565b013687860137825b85811687811080614b33575b15614b2857614b239190614b1d6001600160f81b0319614b1283886149e4565b5116871a91886149e4565b536149f5565b614ae6565b505094505050905090565b506001600160f81b0319614b4782866149e4565b51161515614af2565b6001600160f81b03199150614b6590866149e4565b5116151538614a9d565b915050614a7e6149c556feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae672a26469706673582212203a7c7c2293b30056fd3f48e72a9dc30e5536afce079e4a540546ebc5e0a4041264736f6c63430008120033"; + "0x6101408060405234620001e5576200001781620001ea565b601381526001602082017f546170696f63612053696e67756c617269747900000000000000000000000000815260206040516200005481620001ea565b8381520192603160f81b845251902091208160e052610100918183524660a0526040519160208301907f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f92838352604085015260608401524660808401523060a084015260a0835260c083019280841060018060401b03851117620001cf5760408490525190206080523060c052610120908152600580546001600160a01b0319163390811790915560007f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a362013880601b5562015f90601c55612710601d55612ee06020557f0bd4060688a1800ae986e4840aebc924bb40b5bf44de4583df2257220b54b77c6027557f7d1dc38e60930664f8cbf495da6556ca091d2f92d6550877750c049864b182306028556161a86029556032603055614bce928362000207843960805183613a5c015260a05183613b27015260c05183613a26015260e05183613aab01525182613ad101525181613a880152f35b634e487b7160e01b600052604160045260246000fd5b600080fd5b604081019081106001600160401b03821117620001cf5760405256fe608080604052600436101561001357600080fd5b60e0600035811c918262a02a20146130275750816302ce728f14612ec457816306fdde0314612e0d578163078dfbe714612d09578163095ea7b314612ce35781630c4e84f014612bc957816318160ddd14612ba85781631c9e379b14612b6e5781631da8bf1014612ab757816323b872dd14612913578163313ce56714612883578163331960ff1461286557816334d441d0146128475781633644e5151461282c57816337b6b7b91461280e57816338d52e0f146127e55781633ba0b9a9146127c75781633f741adb146127a357816340626d8b1461278557816344de240a14612767578163473e3ce71461274957816348e4163e1461270f5781634d7f2a34146126f15781634e71e0c814612643578163529898f21461262657816352f353eb146125ff57816355140232146125d857816355c2ab94146125ae57816357935462146125905781635dfe04e8146125315781636c3d8b8f1461250857816370a08231146124ce578163727785471461249857816374645ff31461246d5781637dc0d1d0146124445781637ecebe001461240a5781637fa0b84e146123d9578163821226e8146123bb5781638285ef40146123895781638c5d0ed31461236b5781638da5cb5b14612342578163910dd7c8146120f8578163959916dc146120da57816395d89b411461202057816399a9702814611ff15781639c5d719214611fd35781639e15e89f14611f8e578163a28e6b8214611ac7578163a9059cbb146119e5578163b0e21e8a146119c7578163b27c0e741461198c578163bb4cfe3b1461196e578163ce8849ed14611945578163d3fb2a38146114c8578163d505accf1461134357508063d8dfeb451461131a578063da863f0e146112f1578063dd62ed3e146112a0578063de40657714611277578063e0996cb614611259578063e30c397814611230578063e5644d8b14610457578063ea64dd5614610439578063eec0f42e1461041b578063ef2b234a146103a9578063f42760b71461038b578063f8ba4cff14610370578063f9557ccb1461033a5763ffe04c661461031757600080fd5b34610335576000366003190112610335576020602a54604051908152f35b600080fd5b3461033557600036600319011261033557602554604080516001600160801b038316815260809290921c602083015290f35b0390f35b3461033557600036600319011261033557610389614375565b005b34610335576000366003190112610335576020602b54604051908152f35b34610335576020366003190112610335576004356001600160a01b0381811691829003610335576103df81600554163314613370565b816021549182167ffb4fd7114609dd603b57adbc2082205bfbbcabf9265c4b437b472f5c592b8cd7600080a36001600160a01b03191617602155005b34610335576000366003190112610335576020600c54604051908152f35b34610335576000366003190112610335576020601f54604051908152f35b34610335576080366003190112610335576004356001600160401b03811161033557610487903690600401613340565b906024356001600160401b038111610335576104a7903690600401613340565b6044356001600160401b038111610335576104c6903690600401613340565b90916064356001600160401b038111610335576104e7903690600401613340565b9290916004600052600760205260ff604060002054166111fa5787156111ba576105128189146144c2565b61051d8289146144c2565b6105288285146144c2565b600f546040805163d6d7d52560e01b815260206004820152979188906001600160a01b03168160008161055d602482016131ae565b03925af1968715610c7957600090600098611186575b50878161117c575b501561117257866011555b61058e614375565b60009860005b8181106105de578a156105a357005b60405162461bcd60e51b815260206004820152601360248201527214d1d30e881b9bc81d5cd95c9cc8199bdd5b99606a1b6044820152606490fd5b6105e981838c614877565b356001600160a01b0381168103610335576106048a82614887565b15610619575b5061061490613d7d565b610594565b9a61062390613d7d565b9a61062f828686614877565b359061063c83888c614877565b35906001600160a01b03821682036103355789841015610c1c578360051b890135601e198a360301811215610335578901926001600160401b0384351161033557833536036020850113610335576106948d83613919565b918d1561112d5760018060a01b03600954166020600c5460018060a01b03841660005260188252606460406000205491604051948593849263442c159960e01b845260048401526024830152600060448301525afa908115610c79578f906000926110f7575b5061070b61071092602254906133fb565b613424565b9360018060a01b0382166000526017602052610731856040600020546134d8565b80601d54806110d8575b50808511156110d1575b6001600160a01b03841660009081526017602052604090205490818111156110c8575080965b1115611093578f938181111561108c57505b6001600160a01b038316600090815260176020526040902054908181111561108157506107aa8180613452565b6001600160a01b0384166000908152601760205260409020556107cb613e50565b60208101516001600160801b031661104c5750602081965b606461080961080060018060a01b036009541698600c54946133fb565b60225490613424565b916040519788938492638eb22cdd60e01b845260048401526024830152600060448301525afa938415610c7957600094611018575b506001600160a01b0383166000908152601860205260409020548411610fd35760018060a01b0383166000526018602052604060002061087f858254613452565b90558515610f9f57601454906108c66001600160801b036108a48982168286166144a9565b16926001600160801b0319926001600160801b0316908316841760801c6144a9565b60801b161760145560018060a01b0360095416956020600e546064604051809a8193638eb22cdd60e01b835260048301528a6024830152600160448301525afa968715610c7957600097610f67575b5086916109f76109fe926015805488808211600014610f5d5761093791613452565b905b5560018060a01b0386166000526026806020526040600020602890815490816000526020526040600020548a11600014610f28575060018060a01b0388166000528160205260406000209054600052602052600060408120555b60018060a01b03871660005280602052604060002090602791825490816000526020526040600020548811600014610ef4575060018060a01b03881660005260205260406000209054600052602052600060408120555b36906020813591016132dc565b908561451a565b5010610eaf57600954600e54604051627eeac760e11b815230600482015260248101919091526001600160a01b039091169390602081604481885afa8015610c7957600090610e7b575b602554610a5f92506001600160801b031690613452565b9580871115610e6b57610a81610a79620186a09289613452565b925b836133fb565b0495610a8d8783613452565b9485610cfd575b5086610c85575b610ab587610ab08760018060801b0394613452565b613452565b602554916001600160801b0391610acf9116828416613e9c565b6001600160801b0319909216911617602555600d5460095460405163095ea7b360e01b81526001600160a01b039182166004820152600060248201819052909260209284926044928492165af18015610c795787918691610c32575b50610ab090610b3993613452565b6040516000815230907f30a8c4f9ab5af7e1309ca87c32377d1a83366c5990472dbf9d262450eae14e3860203092a460405190610b758261324e565b6001825260203681840137815115610c1c576001600160a01b03166020820190815260405191518291906000905b808210610bfa575050508190039020604080519384526020840194909452928201526106149392919033907f85b91d472e69b2cfe848ed50eb5d8582ae96c22057b6e46250255dd6f6c3519290606090a49061060a565b82516001600160a01b0316845260209384019390920191600190910190610ba3565b634e487b7160e01b600052603260045260246000fd5b9150506020813d602011610c71575b81610c4e602093836132a0565b8101031261033557610ab085610b3993610c688a946137f5565b50935090610b2b565b3d9150610c41565b6040513d6000823e3d90fd5b610cba60408860018060a01b0360095416600e5460008451809681958294634d4d7cbd60e11b84523390309060048601614994565b03925af18015610c7957610ccf575b50610a9b565b610cf09060403d604011610cf6575b610ce881836132a0565b810190614504565b50610cc9565b503d610cde565b600d5460405163095ea7b360e01b8152600481019290925260006024830181905260209183916044918391906001600160a01b03165af18015610c7957610e32575b50600d5460095460405163095ea7b360e01b81526001600160a01b03918216600482015260001960248201529160209183916044918391600091165af18015610c7957610df9575b50600954600e54600a5460408051634d4d7cbd60e11b815293909284926001600160a01b039283169284926000928492610dcc928f9290911690309060048601614994565b03925af18015610c795715610a9457610df39060403d604011610cf657610ce881836132a0565b50610a94565b6020813d602011610e2a575b81610e12602093836132a0565b8101031261033557610e23906137f5565b5038610d87565b3d9150610e05565b6020813d602011610e63575b81610e4b602093836132a0565b8101031261033557610e5c906137f5565b5038610d3f565b3d9150610e3e565b50620186a0610a81600092610a7b565b506020813d602011610ea7575b81610e95602093836132a0565b8101031261033557610a5f9051610a48565b3d9150610e88565b60405162461bcd60e51b815260206004820152601b60248201527f53474c3a20617373657420616d6f756e74206e6f742076616c696400000000006044820152606490fd5b915060018060a01b0388166000526020526040600020906000526020526040600020610f21868254613452565b90556109ea565b905060018060a01b038816600052816020526040600020906000526020526040600020610f56898254613452565b9055610993565b5050600090610939565b909196506020813d602011610f97575b81610f84602093836132a0565b81010312610335575195906109fe610915565b3d9150610f77565b60405162461bcd60e51b815260206004820152600c60248201526b14d1d30e881cdbdb1d995b9d60a21b6044820152606490fd5b60405162461bcd60e51b815260206004820152601a60248201527f53474c3a206e6f7420656e6f75676820636f6c6c61746572616c0000000000006044820152606490fd5b9093506020813d602011611044575b81611034602093836132a0565b810103126103355751923861083e565b3d9150611027565b805160209161107b91611068906001600160801b0316856133fb565b908301516001600160801b031690613424565b966107e3565b6107aa908092613452565b905061077d565b60405162461bcd60e51b815260206004820152600d60248201526c14d1d30e88189859081919589d609a1b6044820152606490fd5b9050809661076b565b5083610745565b90620186a06110ea6110f193836133fb565b049061345f565b3861073b565b9150506020813d602011611125575b81611113602093836132a0565b8101031261033557518e61070b6106fa565b3d9150611106565b60405162461bcd60e51b815260206004820152601b60248201527f53474c3a2065786368616e676552617465206e6f742076616c696400000000006044820152606490fd5b6011549650610586565b905015158a61057b565b90506111ab91975060403d6040116111b3575b6111a381836132a0565b810190613802565b96908a610573565b503d611199565b60405162461bcd60e51b815260206004820152601860248201527742423a206e6f7468696e6720746f206c697175696461746560401b6044820152606490fd5b60405162461bcd60e51b815260206004820152600e60248201526d13585c9ad95d0e881c185d5cd95960921b6044820152606490fd5b34610335576000366003190112610335576006546040516001600160a01b039091168152602090f35b34610335576000366003190112610335576020601d54604051908152f35b34610335576000366003190112610335576009546040516001600160a01b039091168152602090f35b34610335576040366003190112610335576112b9613073565b6112c1613089565b9060018060a01b038091166000526002602052604060002091166000526020526020604060002054604051908152f35b34610335576000366003190112610335576021546040516001600160a01b039091168152602090f35b3461033557600036600319011261033557600b546040516001600160a01b039091168152602090f35b3461033557611351366130f6565b839496979392919242116114835761142f926114279260018060a01b0395868b169788600052600460205260406000209182549261138e84613d7d565b90556040519160208301937f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e2668552600060408501528b60608501528a8d1660808501528d60a085015260c08401528183015281526113eb81613269565b5190206113f6613a23565b9060405190602082019261190160f01b8452602283015260428201526042815261141f81613285565b519020613cf8565b919091613bf9565b160361143e5761038992613dda565b60405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152606490fd5b60405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b3461033557610160366003190112610335576001600160a01b0360043581811690819003610335576001600160401b039160243583811161033557611511903690600401613313565b9093604435938385168095036103355761153084600554163314613370565b80611906575b5081611781575b505090809250611740575b505060643580611728575b5060843580611710575b5060a435806116f9575b5060c435806116d5575b5060e435806116b1575b50610104358061167f575b50610124358061160b575b50610144358061159d57005b601e5481106115ab57601f55005b60405162461bcd60e51b815260206004820152603260248201527f4d61726b65743a206c69717569646174696f6e436f6c6c61746572616c697a616044820152711d1a5bdb94985d19481d1bdbc81cdb585b1b60721b6064820152608490fd5b61161a620186a08211156133bb565b601f54811161162c57601e5580611591565b60405162461bcd60e51b815260206004820152602560248201527f4d61726b65743a20636f6c6c61746572616c697a6174696f6e5261746520746f6044820152646f2062696760d81b6064820152608490fd5b806016547fae6e0ab3b95f0a53ff9660a390ccedcbbf1f2355dce974a9841af106fddcfaba600080a360165580611586565b6116bf620186a082106133bb565b6116cc601b5482116133bb565b601c558061157b565b6116e3620186a082106133bb565b6116f0601c5482106133bb565b601b5580611571565b611707620186a082106133bb565b601d5580611567565b61171f620186a08211156133bb565b601a558061155d565b611737620186a08211156133bb565b60195580611553565b816008549182167f5a62d22209e370e38eea92cfddcd228e656e6ec139243392a760a7769f5877fd600080a36001600160a01b031916176008558080611548565b81116118f057611792601054613174565b601f811161188d575b506000601f821160011461180457819293946000926117f9575b50508160011b916000199060031b1c1916176010555b7fa6f004921c944d4b8bf6e38462b00f36a58d62495d56b51f571ab78f732c9815600080a18190838061153d565b0135905084806117b5565b60106000908152601f198316957f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae67292909160205b8882106118755750508360019596971061185b575b505050811b016010556117cb565b0135600019600384901b60f8161c1916905584808061184d565b80600184968294958701358155019501920190611838565b60106000527f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae672601f830160051c8101602084106118e9575b601f90920160051c01905b8181106118dd575061179b565b600081556001016118d0565b50806118c5565b634e487b7160e01b600052604160045260246000fd5b600f80546001600160a01b0319169190911790557f0b2d6eb667d0522c3eb86e4288afecae6c11591ffd1345d4d12407e0598bca9b600080a185611536565b34610335576000366003190112610335576008546040516001600160a01b039091168152602090f35b34610335576000366003190112610335576020601e54604051908152f35b34610335576000366003190112610335576060602454604051906001600160401b0380821683528160401c16602083015260801c6040820152f35b34610335576000366003190112610335576020601a54604051908152f35b34610335576040366003190112610335576119fe613073565b602435908115801590611ab5575b611a42575b6040519182526001600160a01b0316903390600080516020614b7983398151915290602090a3602060405160018152f35b336000526001602052604060002054611a5d83821015613b4d565b6001600160a01b038216908333839003611a7a575b505050611a11565b611a8991610ab0841515613b92565b3360005260016020526040600020556000526040600020611aab83825461345f565b9055828083611a72565b50336001600160a01b03821614611a0c565b3461033557608036600319011261033557611ae0613073565b611ae8613089565b60443591906001600160a01b0390818416840361033557606435936001600160401b03851161033557611b22611b61953690600401613313565b9190611b3385600554163314613370565b84600f54169560405163d6d7d52560e01b81526040816020998a60048301528160008160249e8f82016131ae565b03925af1908115610c7957600090600092611f6c575b508181611f62575b5015611f5957806011555b15611f0a578590611b99614375565b16928360005260178752611bbb604060002054620186a06110ea8a54836133fb565b87896064896009541693611bd8610800600c5492601154906133fb565b946040519586948593638eb22cdd60e01b85526004850152830152600060448301525afa908115610c7957600091611edd575b50846000526018885260406000205411611e9957611db8611d6d856000989695611d678a999796611daa9660268e8d9a8b526018815260408b205496611d06611c52613e50565b828e5260178452611ce1611cb88f604090205492600087604051611c758161324e565b82815201528681019360018060801b03928382818094868a8381511615600014611e4c57505081611cab915b16828851166144a9565b16855216828751166144a9565b169384905251601480546001600160801b0319166001600160801b039390921692909216179055565b601480546001600160801b031660809290921b6001600160801b031916919091179055565b808c52601782528b604081205582825260408c206027548d5282528b6040812055808c5260188252611d3e60408d2054601554613452565b6015558b52601881528a6040812055528d60408a20906028548b525288604081205536916132dc565b9161451a565b600d546040805163a9059cbb60e01b8d82019081526001600160a01b039099168e8201908152602081019490945291909816979094859350910190565b03601f1981018352826132a0565b51925af1611dc4614479565b81611e14575b5015611dd257005b601c6064926040519262461bcd60e51b845260048401528201527f426f72696e6745524332303a205472616e73666572206661696c6564000000006044820152fd5b80915051828115918215611e2d575b5050905083611dca565b83809293500103126103355781611e4491016137f5565b808285611e23565b611cab92611e85611e7b86611e72611e688280985116866133fb565b8287511690613424565b945116846133fb565b848c511690613424565b1015611ca157611e9490613d7d565b611ca1565b60405162461bcd60e51b815260048101889052601b818a01527f42423a2043616e6e6f7420666f726365206c69717569646174656400000000006044820152606490fd5b90508781813d8311611f03575b611ef481836132a0565b81010312610335575189611c0b565b503d611eea565b60405162461bcd60e51b8152600481018890526022818a01527f42423a2063757272656e742065786368616e676552617465206e6f742076616c6044820152611a5960f21b6064820152608490fd5b50601154611b8a565b905015158a611b7f565b9050611f87915060403d6040116111b3576111a381836132a0565b908a611b77565b346103355760403660031901126103355761036c611fb6611fad613073565b6024359061369b565b604080519384526020840192909252908201529081906060820190565b34610335576000366003190112610335576020602c54604051908152f35b3461033557604036600319011261033557602061201861200f613073565b60243590613919565b604051908152f35b346103355760003660031901126103355760008060018060a01b03600b541660405160208101906395d89b4160e01b82526004815261205e8161324e565b51915afa61206a614479565b90156120c95761207c61036c91614a04565b6120b56023604051809362746d2d60e81b60208301526120a5815180926020868601910161309f565b81010360038101845201826132a0565b6040519182916020835260208301906130c2565b5061036c6120d56149c3565b61207c565b34610335576000366003190112610335576020603054604051908152f35b34610335576040366003190112610335576004356001600160401b0381116103355736602382011215610335576121399036906024816004013591016132dc565b9060243561ffff8116809103610335576101009182848051810103126103355760206121668186016137f5565b9161217360408701613bd7565b9061218060608801613bd7565b9660808101519660a08201519261219960c08401613beb565b91818401519301519360018060a01b03808097169b16988142116122fd579289888d9897946122749794611427978f8e6000146122d6577f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e266955b8d6000526004865260406000209283549361220d85613d7d565b905560405196870197885260408701528d6060870152608086015260a085015260c084015281830152815261224181613269565b51902061224c613a23565b90604051908a82019261190160f01b8452602283015260428201526042815261141f81613285565b16036122925750156122895761038992613dda565b61038992613d8c565b6064906040519062461bcd60e51b82526004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152fd5b7f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d6956121f3565b60405162461bcd60e51b815260048101899052601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b34610335576000366003190112610335576005546040516001600160a01b039091168152602090f35b34610335576000366003190112610335576020601b54604051908152f35b3461033557600036600319011261033557601454604080516001600160801b038316815260809290921c602083015290f35b34610335576000366003190112610335576020602e54604051908152f35b34610335576040366003190112610335576123ff6123f5613073565b6024359033613d8c565b602060405160018152f35b34610335576020366003190112610335576001600160a01b0361242b613073565b1660005260046020526020604060002054604051908152f35b3461033557600036600319011261033557600f546040516001600160a01b039091168152602090f35b346103355760003660031901126103355761036c6040516120b581612491816131ae565b03826132a0565b346103355760203660031901126103355760043560098110156103355760ff6124c2602092613145565b54166040519015158152f35b34610335576020366003190112610335576001600160a01b036124ef613073565b1660005260016020526020604060002054604051908152f35b3461033557600036600319011261033557600a546040516001600160a01b039091168152602090f35b346103355760003660031901126103355761254a613e31565b506080612555613eb5565b509350505050604051916001600160401b0380825116845260208201511660208401526040600180861b039101511660408301526060820152f35b34610335576000366003190112610335576020601c54604051908152f35b346103355760003660031901126103355760206001600160401b03602d5460401c16604051908152f35b346103355760003660031901126103355760206001600160401b03602d5416604051908152f35b346103355760003660031901126103355760206001600160401b03602f5416604051908152f35b346103355760003660031901126103355760208054604051908152f35b34610335576000366003190112610335576006546001600160a01b0390818116338190036126ad57806005549384167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a36001600160a01b03199283161760055516600655005b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b34610335576000366003190112610335576020602954604051908152f35b34610335576020366003190112610335576001600160a01b03612730613073565b1660005260176020526020604060002054604051908152f35b34610335576000366003190112610335576020601554604051908152f35b34610335576000366003190112610335576020600e54604051908152f35b34610335576000366003190112610335576020601654604051908152f35b346103355760603660031901126103355760206120186044356024356004356135d4565b34610335576000366003190112610335576020601154604051908152f35b3461033557600036600319011261033557600d546040516001600160a01b039091168152602090f35b34610335576000366003190112610335576020601254604051908152f35b34610335576000366003190112610335576020612018613a23565b34610335576000366003190112610335576020601954604051908152f35b34610335576000366003190112610335576020601354604051908152f35b346103355760003660031901126103355760008060018060a01b03600d5416604051602081019063313ce56760e01b8252600481526128c18161324e565b51915afa6128cd614479565b9080612908575b156128fe57602081805181010312610335576128f36020809201613beb565b60ff60405191168152f35b50602060126128f3565b5060208151146128d4565b346103355760603660031901126103355761292c613073565b612934613089565b6044359081612971575b6040519182526001600160a01b03908116921690600080516020614b7983398151915290602090a3602060405160018152f35b60018060a01b0380841680600052602060018152846040600020549361299982861015613b4d565b8516938484036129ae575b505050505061293e565b836000526002835260406000203360005283526040600020546000198103612a22575b5084926129f9600080516020614b79833981519152979593600193610ab06020991515613b92565b92600052526040600020556000526040600020612a1785825461345f565b9055918584816129a4565b90918110612a7757602094926129f988600080516020614b79833981519152989694612a5082600196613452565b866000526002855260406000203360005285526040600020559350939597505092946129d1565b60405162461bcd60e51b815260048101849052601860248201527745524332303a20616c6c6f77616e636520746f6f206c6f7760401b6044820152606490fd5b3461033557612ac5366130f6565b8394969793929192421161148357612b5f926114279260018060a01b0395868b1697886000526004602052604060002091825492612b0284613d7d565b90556040519160208301937f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d68552600060408501528b60608501528a8d1660808501528d60a085015260c08401528183015281526113eb81613269565b160361143e5761038992613d8c565b34610335576020366003190112610335576001600160a01b03612b8f613073565b1660005260186020526020604060002054604051908152f35b3461033557600036600319011261033557602060255460801c604051908152f35b3461033557604036600319011261033557600435600981101561033557612bee6130e7565b6008549091906001600160a01b03163303612ca75760ff612c0e82613145565b54161515911515918214612c6d57808260ff612c2c612c5b94613145565b54161515827feeec81de25875ce1725479bb76f720a8defdb43dea041919ae37bb4aae9847c0600080a4613145565b9060ff80198354169116179055600080f35b60405162461bcd60e51b81526020600482015260126024820152714d61726b65743a2073616d6520737461746560701b6044820152606490fd5b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881d5b985d5d1a1bdc9a5e995960621b6044820152606490fd5b34610335576040366003190112610335576123ff612cff613073565b6024359033613dda565b3461033557606036600319011261033557612d22613073565b612d2a6130e7565b6044359081151582036103355760018060a01b03928391612d5083600554163314613370565b15612df4571690811590811591612dec575b5015612daf57806005549283167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a36001600160a01b031991821617600555600680549091169055005b60405162461bcd60e51b81526020600482015260156024820152744f776e61626c653a207a65726f206164647265737360581b6044820152606490fd5b905083612d62565b9150501660018060a01b03196006541617600655600080f35b346103355760003660031901126103355760008060018060a01b03600b541660405160208101906306fdde0360e01b825260048152612e4b8161324e565b51915afa612e57614479565b9015612eb357612e6961036c91614a04565b6120b56034604051809373546170696f63612053696e67756c61726974792d60601b6020830152612ea3815180926020868601910161309f565b81010360148101845201826132a0565b5061036c612ebf6149c3565b612e69565b3461033557600036600319011261033557600f546040805163d6d7d52560e01b8152602060048201529182906001600160a01b031681600081612f09602482016131ae565b03925af18015610c7957600091600091613006575b50908015612fa8578115612f6c5781604092601155807f9f9192b5edb17356c524e08d9e025c8e2f6307e6ea52fb7968faa3081f51c3c8600080a25b42601355825191151582526020820152f35b60405162461bcd60e51b81526020600482015260146024820152734d61726b65743a20696e76616c6964207261746560601b6044820152606490fd5b9050612fb96013546012549061345f565b4211612fca57604090601154612f5a565b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881c985d19481d1bdbc81bdb1960621b6044820152606490fd5b9050613021915060403d6040116111b3576111a381836132a0565b82612f1e565b3461033557604036600319011261033557602090613043613073565b61304b613089565b9060018060a01b03809116600052600384526040600020911660005282526040600020548152f35b600435906001600160a01b038216820361033557565b602435906001600160a01b038216820361033557565b60005b8381106130b25750506000910152565b81810151838201526020016130a2565b906020916130db8151809281855285808601910161309f565b601f01601f1916010190565b60243590811515820361033557565b60e0906003190112610335576001600160a01b03906004358281168103610335579160243590811681036103355790604435906064359060843560ff81168103610335579060a4359060c43590565b600981101561315e576000526007602052604060002090565b634e487b7160e01b600052602160045260246000fd5b90600182811c921680156131a4575b602083101461318e57565b634e487b7160e01b600052602260045260246000fd5b91607f1691613183565b601054600092916131be82613174565b90818152600192838116908160001461321857506001146131de57505050565b9092935060106000526020928360002092846000945b8386106132045750505050010190565b8054858701830152940193859082016131f4565b91935050602093945060ff191683830152151560051b010190565b606081019081106001600160401b038211176118f057604052565b604081019081106001600160401b038211176118f057604052565b61010081019081106001600160401b038211176118f057604052565b608081019081106001600160401b038211176118f057604052565b90601f801991011681019081106001600160401b038211176118f057604052565b6001600160401b0381116118f057601f01601f191660200190565b9291926132e8826132c1565b916132f660405193846132a0565b829481845281830111610335578281602093846000960137010152565b9181601f84011215610335578235916001600160401b038311610335576020838186019501011161033557565b9181601f84011215610335578235916001600160401b038311610335576020808501948460051b01011161033557565b1561337757565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b156133c257565b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881b9bdd081d985b1a59607a1b6044820152606490fd5b8181029291811591840414171561340e57565b634e487b7160e01b600052601160045260246000fd5b811561342e570490565b634e487b7160e01b600052601260045260246000fd5b604d811161340e57600a0a90565b9190820391821161340e57565b9190820180921161340e57565b8181039291600013801582851316918412161761340e57565b906509184e72a0009182810292818405149015171561340e57565b90670de0b6b3a76400009182810292818405149015171561340e57565b811561342e57600160ff1b811460001983141661340e570590565b6014546135139161350291906134f8906001600160801b038316906133fb565b9060801c90613424565b91620186a0918291601f54906133fb565b048083106135cc576135259083613452565b601e5460205483019081841161340e578391613540916133fb565b04918281039060008094128183128116918313901516176135b8579061357161356b61357693613485565b916134a0565b6134bd565b90808212156135b157600160ff1b821461359d5703905b808211613598575090565b905090565b634e487b7160e01b81526011600452602490fd5b509061358d565b634e487b7160e01b83526011600452602483fd5b505050600090565b60145491929161361391613604916135fa916134f8906001600160801b038316906133fb565b93601f54906133fb565b61360d83613444565b90613424565b908183106135cc5761357161356b61366d6136316136729587613452565b93613668613662613659601e5461365361364a86613444565b6020549061345f565b906133fb565b61360d84613444565b91613444565b61346c565b613485565b600081121561369557600160ff1b811461340e5760000390808211613598575090565b9061358d565b9160018060a01b0380931691600093838552602060178152604091828720549081156137e857878385516136ce8161324e565b82815201526136db613eb5565b50505050509190506136ee86151561381f565b6009541683600c54898b52601882526064878c2054918851948593849263442c159960e01b8452600484015260248301528d60448301525afa9081156137de5789916137ab575b509161378b61379f97989994926137668861070b61375d601898620186a060225404906133fb565b601e54906133fb565b815190936001600160801b03918691613781918416906133fb565b9201511690613424565b8181106137a357035b97835252205461386b565b9091565b505082613794565b90508381813d83116137d7575b6137c281836132a0565b810103126137d3575161378b613735565b8880fd5b503d6137b8565b85513d8b823e3d90fd5b5086955085949350505050565b5190811515820361033557565b9190826040910312610335576020613819836137f5565b92015190565b1561382657565b60405162461bcd60e51b815260206004820152601e60248201527f4d61726b65743a2065786368616e676552617465206e6f742076616c696400006044820152606490fd5b61387682151561381f565b602060018060a01b0360095416916064600c54604051948593849263442c159960e01b845260048401526024830152600060448301525afa908115610c79576000916138e3575b509061070b6138cf92602254906133fb565b620186a06138df601e54836133fb565b0491565b906020823d8211613911575b816138fc602093836132a0565b8101031261390e57505161070b6138bd565b80fd5b3d91506138ef565b6001600160a01b0316600081815260186020526040812054909261393c9161386b565b918352601760205260408320548015613a1d578115613a1d57818110613a1d5782811015613a1357601454613985918391610ab0916134f8906001600160801b038316906133fb565b90620186a092838302928084048514901517156139ff576139aa929161360d91613452565b91601b5491601c54936139bd858561346c565b80820291848212600160ff1b8214166139ff5781830514901517156135b8570581848201948512911290801582169115161761359d5750808212613598575090565b634e487b7160e01b85526011600452602485fd5b50505050601b5490565b50505090565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03161480613b24575b15613a7e577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f000000000000000000000000000000000000000000000000000000000000000082527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a0815260c081018181106001600160401b038211176118f05760405251902090565b507f00000000000000000000000000000000000000000000000000000000000000004614613a55565b15613b5457565b60405162461bcd60e51b815260206004820152601660248201527545524332303a2062616c616e636520746f6f206c6f7760501b6044820152606490fd5b15613b9957565b60405162461bcd60e51b815260206004820152601660248201527545524332303a206e6f207a65726f206164647265737360501b6044820152606490fd5b51906001600160a01b038216820361033557565b519060ff8216820361033557565b600581101561315e5780613c0a5750565b60018103613c525760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b6044820152606490fd5b60028103613c9f5760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606490fd5b600314613ca857565b60405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608490fd5b9291906fa2a8918ca85bafe22016d0b997e4df60600160ff1b038311613d715791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa15613d645781516001600160a01b03811615613d5e579190565b50600190565b50604051903d90823e3d90fd5b50505050600090600390565b600019811461340e5760010190565b7fe50de2333c10a9502fcb1d8ae13a51bbf423153dfc63c2b8997665b32154afc360018060a01b038092169160009083825260036020526040822094169384825260205284604082205580a4565b909160207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259160018060a01b03809416938460005260028352604060002095169485600052825280604060002055604051908152a3565b60405190613e3e82613233565b60006040838281528260208201520152565b60405190613e5d8261324e565b6014546001600160801b038116835260801c6020830152565b60405190613e838261324e565b6025546001600160801b038116835260801c6020830152565b6001600160801b03918216908216019190821161340e57565b613ebd613e31565b5060006020604051613ece8161324e565b828152015260006020604051613ee38161324e565b828152015260405190613ef582613233565b602454916001600160401b038316815260208101926001600160401b038160401c16845260801c60408201528092613f2b613e50565b92613f34613e76565b92600060018060a01b0360095416600e549460018060801b038751166040519063442c159960e01b8252876004830152602482015260006044820152602081606481865afa8015610c7957600090614341575b8951613f9d92506001600160801b03169061345f565b8061430c575060005b613fbb6001600160401b038293511642613452565b9485156142e2575050426001600160401b031660208a8101919091528801516001600160801b03161561429857506020670de0b6b3a764000061401d856140188c6001600160401b038d60018060801b03905116915116906133fb565b6133fb565b895191900496906001600160801b039061403c90828a16908316613e9c565b168952875160405163442c159960e01b815260048101929092526001600160801b031660248201526000604482015291829060649082905afa8015610c7957600090614264575b875161409992506001600160801b03169061345f565b926140c78461070b620186a06140b1601a548a6133fb565b60208c01516001600160801b03169190046133fb565b6040890180519195916001600160801b0380881692916140ea9084908316613e9c565b16905260208801805190916001600160801b039161410a91908316613e9c565b1690528061422f575060005b602a54909384828110156141aa5761412e9083613452565b90670de0b6b3a7640000820291808304670de0b6b3a7640000149015171561340e5761070b61418261417c61416e6001600160401b039661418c96613424565b93614018602e5495806133fb565b8361345f565b91848d51166133fb565b168089526001600160401b03602d54168091106141a65750565b8852565b909150602b548082116141bc57505050565b6141c591613452565b670de0b6b3a7640000810290808204670de0b6b3a7640000149015171561340e576001600160401b039161070b61420861417c61416e61421195602c5490613424565b848d51166133fb565b81602d5460401c16808211614227575b50168852565b905038614221565b87516001600160801b0316670de0b6b3a764000081810292918084049091149015171561340e5761425f91613424565b614116565b506020813d602011614290575b8161427e602093836132a0565b81010312610335576140999051614083565b3d9150614271565b9697939450509350506001600160401b038151166001600160401b03602f54168091036142d6575b5093926142cb613e76565b926000926000929190565b815260019250386142c0565b9750985050505050925050916142f6613e50565b916142ff613e76565b9160009160009190600090565b88516001600160801b0316670de0b6b3a764000081810292918084049091149015171561340e5761433c91613424565b613fa6565b506020813d60201161436d575b8161435b602093836132a0565b8101031261033557613f9d9051613f87565b3d915061434e565b6144306040602080614385613eb5565b9399959390929015614440575050506001600160401b03602f54166000807f33af5ce86e8438eff54589f85332916444457dfa8685493fbd579b809097026b878a51838152a45b80518482015196909101516001600160801b0319608091821b81166001600160401b0390931667ffffffffffffffff60401b60409990991b9890981697909717919091176024558151919093015190921b84166001600160801b0392831617601455565b83511692015160801b1617602555565b7f33af5ce86e8438eff54589f85332916444457dfa8685493fbd579b809097026b876001600160401b03865116948b51908152a46143cc565b3d156144a4573d9061448a826132c1565b9161449860405193846132a0565b82523d6000602084013e565b606090565b6001600160801b03918216908216039190821161340e57565b156144c957565b60405162461bcd60e51b8152602060048201526013602482015272084847440d8cadccee8d040dad2e6dac2e8c6d606b1b6044820152606490fd5b9190826040910312610335576020825192015190565b91909160018060a01b0392836009541690600c5460409485519063442c159960e01b82526004928084840152602496878401526000958660448501526020958685606481855afa94851561486d57918b8b928a94859861482f575b509060a4911694835194859384926311a5cc7760e31b84528b8401528d30908401528760448401528960648401528160848401525af1801561482557614809575b5088600d5416908851926370a0823160e01b94858552308786015287858b81875afa9485156147ff5789888d948f948c97958f95859b6147b7575b50906146329291600b54169751998a9889978896635cd3dc1560e01b885233908801528601526044850152606484015260a0608484015260a48301906130c2565b03925af180156147ad57614775575b508388600d54169287895180958193825230888301525afa801561476b578590614736575b6146709250613452565b9586156146f65790606483926009541691600e54928989519889958694638eb22cdd60e01b86528501528301528660448301525afa9384156146eb575081936146ba575b50505091565b9091809350813d83116146e4575b6146d281836132a0565b8101031261390e5750513880806146b4565b503d6146c8565b51913d9150823e3d90fd5b50818460649387519362461bcd60e51b85528401528201527f53474c3a206f6e436f6c6c61746572616c5265636569766572206661696c65646044820152fd5b50908381813d8311614764575b61474d81836132a0565b8101031261476057906146709151614666565b8480fd5b503d614743565b87513d87823e3d90fd5b8481813d83116147a6575b61478a81836132a0565b810103126147a25761479b906137f5565b5038614641565b8580fd5b503d614780565b88513d88823e3d90fd5b96999a50509550959250505081813d83116147f8575b6147d781836132a0565b810103126137d357928989886146328f9897968f968d98519a9091926145f1565b503d6147cd565b8b513d8b823e3d90fd5b61481f90893d8b11610cf657610ce881836132a0565b506145b6565b89513d89823e3d90fd5b935096505091508681813d8311614866575b61484b81836132a0565b8101031261486257519387918a918c9060a4614575565b8780fd5b503d614841565b8a513d8a823e3d90fd5b9190811015610c1c5760051b0190565b919060018060a01b0380600094168452602060178152604085205490811561498a57601881526040862054801561498357816148c1613e50565b9460095416916064600c54604051948593849263442c159960e01b8452600484015260248301528b60448301525afa968715614977578097614941575b505061378161492661491d61493c969798620186a060225404906133fb565b601f54906133fb565b9561401860018060801b039485875116906133fb565b111590565b9096508187813d8311614970575b61495981836132a0565b8101031261390e57509451946137816149266148fe565b503d61494f565b604051903d90823e3d90fd5b5050505050565b5060019450505050565b9081526001600160a01b0391821660208201529116604082015260006060820152608081019190915260a00190565b604051906149d08261324e565b60038252623f3f3f60e81b6020830152565b908151811015610c1c570160200190565b60ff1660ff811461340e5760010190565b805160408110614a7f57508051810190602081818401930312610335576020810151906001600160401b038211610335570181603f82011215610335576020810151614a4f816132c1565b92614a5d60405194856132a0565b8184526040828401011161033557614a7c91604060208501910161309f565b90565b602092908303614b6d576000805b60ff81168581109081614b4e575b5015614aaf57614aaa906149f3565b614a8d565b9260ff80941692614abf846132c1565b93614acd60405195866132a0565b808552614adc601f19916132c1565b013687860137825b85811687811080614b31575b15614b2657614b219190614b1b6001600160f81b0319614b1083886149e2565b5116871a91886149e2565b536149f3565b614ae4565b505094505050905090565b506001600160f81b0319614b4582866149e2565b51161515614af0565b6001600160f81b03199150614b6390866149e2565b5116151538614a9b565b915050614a7c6149c356feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220a21d361870eb52e2e0483533f9e7bcc6e6412b1817a6dc2dc34406bcdcbae53464736f6c63430008120033"; type SGLLiquidationConstructorParams = | [signer?: Signer] diff --git a/src/typechain/tapioca-bar/factories/markets/singularity/SGLStorage__factory.ts b/src/typechain/tapioca-bar/factories/markets/singularity/SGLStorage__factory.ts index 11195a1e..24054b0b 100644 --- a/src/typechain/tapioca-bar/factories/markets/singularity/SGLStorage__factory.ts +++ b/src/typechain/tapioca-bar/factories/markets/singularity/SGLStorage__factory.ts @@ -135,6 +135,25 @@ const _abi = [ name: "InterestElasticityUpdated", type: "event", }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "address", + name: "oldVal", + type: "address", + }, + { + indexed: true, + internalType: "address", + name: "newVal", + type: "address", + }, + ], + name: "LeverageExecutorSet", + type: "event", + }, { anonymous: false, inputs: [ @@ -1106,6 +1125,19 @@ const _abi = [ stateMutability: "view", type: "function", }, + { + inputs: [], + name: "leverageExecutor", + outputs: [ + { + internalType: "contract ILeverageExecutor", + name: "", + type: "address", + }, + ], + stateMutability: "view", + type: "function", + }, { inputs: [], name: "liquidationBonusAmount", @@ -1495,6 +1527,19 @@ const _abi = [ stateMutability: "view", type: "function", }, + { + inputs: [ + { + internalType: "contract ILeverageExecutor", + name: "_executor", + type: "address", + }, + ], + name: "setLeverageExecutor", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, { inputs: [ { @@ -1825,7 +1870,7 @@ const _abi = [ ] as const; const _bytecode = - "0x6101408060405234620001e5576200001781620001ea565b601381526001602082017f546170696f63612053696e67756c617269747900000000000000000000000000815260206040516200005481620001ea565b8381520192603160f81b845251902091208160e052610100918183524660a0526040519160208301907f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f92838352604085015260608401524660808401523060a084015260a0835260c083019280841060018060401b03851117620001cf5760408490525190206080523060c052610120908152600580546001600160a01b0319163390811790915560007f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a362013880601b5562015f90601c55612710601d55612ee06020557f0bd4060688a1800ae986e4840aebc924bb40b5bf44de4583df2257220b54b77c6026557f7d1dc38e60930664f8cbf495da6556ca091d2f92d6550877750c049864b182306027556161a86028556032602f55612b3292836200020784396080518361251b015260a051836125e6015260c051836124e5015260e0518361256a01525182612590015251816125470152f35b634e487b7160e01b600052604160045260246000fd5b600080fd5b604081019081106001600160401b03821117620001cf5760405256fe608080604052600436101561001357600080fd5b600090813560e01c908162a02a2014611c505750806302ce728f14611ac857806306fdde0314611a11578063078dfbe71461190e578063095ea7b3146118e75780630c4e84f0146117cf57806318160ddd146117ae5780631c9e379b146117755780631da8bf10146116b557806323b872dd14611518578063313ce56714611486578063331960ff1461146857806334d441d01461144a5780633644e5151461142f57806337b6b7b91461141157806338d52e0f146113e85780633ba0b9a9146113ca5780633f741adb146113a557806340626d8b1461138757806344de240a14611369578063473e3ce71461134b57806348e4163e146113125780634d7f2a34146112f45780634e71e0c814611246578063529898f21461122957806352f353eb1461120257806355140232146111db57806355c2ab94146111b157806357935462146111935780636c3d8b8f1461116a57806370a082311461113157806372778547146110f957806374645ff3146110ce5780637dc0d1d0146110a55780637ecebe001461106c5780637fa0b84e1461103a578063821226e81461101c5780638285ef4014610fea5780638c5d0ed314610fcc5780638da5cb5b14610fa3578063910dd7c814610d8a578063959916dc14610d6c57806395d89b4114610cb257806399a9702814610c825780639c5d719214610c645780639e15e89f14610c29578063a9059cbb14610b46578063b0e21e8a14610b28578063b27c0e7414610aed578063bb4cfe3b14610acf578063ce8849ed14610aa6578063d3fb2a381461060e578063d505accf14610469578063d8dfeb4514610440578063dd62ed3e146103f5578063de406577146103cc578063e0996cb6146103ae578063e30c397814610385578063ea64dd5614610367578063eec0f42e14610349578063f42760b71461032b578063f9557ccb146102f55763ffe04c66146102d557600080fd5b346102f257806003193601126102f2576020602954604051908152f35b80fd5b50346102f257806003193601126102f257602454604080516001600160801b038316815260809290921c602083015290f35b0390f35b50346102f257806003193601126102f2576020602a54604051908152f35b50346102f257806003193601126102f2576020600c54604051908152f35b50346102f257806003193601126102f2576020601f54604051908152f35b50346102f257806003193601126102f2576006546040516001600160a01b039091168152602090f35b50346102f257806003193601126102f2576020601d54604051908152f35b50346102f257806003193601126102f2576009546040516001600160a01b039091168152602090f35b50346102f25760403660031901126102f2576040602091610414611c98565b61041c611cb3565b6001600160a01b039182168352600285528383209116825283522054604051908152f35b50346102f257806003193601126102f257600b546040516001600160a01b039091168152602090f35b50346102f25761047836611d20565b908395949542116105c9576001600160a01b03878116808a52600460205260408a20805491969295929060001983146105b5578261055e9694928d92600161055698960190556040519160208301937f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e266855260408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e0815261051a81611e8e565b5190206105256124e2565b9060405190602082019261190160f01b8452602283015260428201526042815261054e81611eaa565b5190206127b7565b9190916126b8565b16036105705761056d9261288a565b80f35b60405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152606490fd5b634e487b7160e01b8c52601160045260248cfd5b60405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b50346102f2576101603660031901126102f2576001600160a01b0360043581811690819003610aa2576024916001600160401b038335818111610a9e5736602382011215610a9e578060040135918211610a9e5736858383010111610a9e5760443593838516809503610a9a5761068a84600554163314611f01565b80610a5c575b5084826108de575b5050508161089e575b505060643580610886575b506084358061086e575b5060a43580610857575b5060c43580610833575b5060e4358061080f575b5061010435806107de575b50610124358061076b575b506101443590816106f9578280f35b601e54821061070c5750601f5538808280f35b60849060326040519162461bcd60e51b8352602060048401528201527f4d61726b65743a206c69717569646174696f6e436f6c6c61746572616c697a616044820152711d1a5bdb94985d19481d1bdbc81cdb585b1b60721b6064820152fd5b61077a620186a0821115611f4c565b601f54811161078c57601e55386106ea565b60405162461bcd60e51b8152602060048201526025818401527f4d61726b65743a20636f6c6c61746572616c697a6174696f6e5261746520746f6044820152646f2062696760d81b6064820152608490fd5b806016547fae6e0ab3b95f0a53ff9660a390ccedcbbf1f2355dce974a9841af106fddcfaba8580a3601655386106df565b61081d620186a08210611f4c565b61082a601b548211611f4c565b601c55386106d4565b610841620186a08210611f4c565b61084e601c548210611f4c565b601b55386106ca565b610865620186a08210611f4c565b601d55386106c0565b61087d620186a0821115611f4c565b601a55386106b6565b610895620186a0821115611f4c565b601955386106ac565b816008549182167f5a62d22209e370e38eea92cfddcd228e656e6ec139243392a760a7769f5877fd8680a36001600160a01b0319161760085538806106a1565b82916108eb601054611d9e565b601f81116109eb575b508790601f841160011461095957889361094c575b5050508160011b916000199060031b1c1916176010555b7fa6f004921c944d4b8bf6e38462b00f36a58d62495d56b51f571ab78f732c98158480a1388084610698565b0101359050843880610909565b60108952601f19841694507f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae67292509087908960205b8782106109cc57505084600196106109b0575b50505050811b01601055610920565b60001960f88660031b161c1992010135169055388086816109a1565b828501909301358555600194909401938992918201919081019061098e565b6010895290925090507f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae672601f840160051c810160208510610a55575b91849391601f8994920160051c01905b818110610a4457506108f4565b898155859450889350600101610a37565b5080610a27565b600f80546001600160a01b0319169190911790557f0b2d6eb667d0522c3eb86e4288afecae6c11591ffd1345d4d12407e0598bca9b8680a138610690565b8680fd5b8580fd5b8280fd5b50346102f257806003193601126102f2576008546040516001600160a01b039091168152602090f35b50346102f257806003193601126102f2576020601e54604051908152f35b50346102f257806003193601126102f2576060602354604051906001600160401b0380821683528160401c16602083015260801c6040820152f35b50346102f257806003193601126102f2576020601a54604051908152f35b50346102f25760403660031901126102f257610b60611c98565b60243580928115801590610c17575b610ba7575b50506040519182526001600160a01b0316903390600080516020612add83398151915290602090a3602060405160018152f35b33815260016020526040812054610bc08382101561260c565b6001600160a01b0384169033829003610bdb575b5050610b74565b604093610bf291610bed841515612651565b611fe3565b338352600160205283832055815220610c0c838254611ff0565b905581388080610bd4565b50336001600160a01b03841614610b6f565b50346102f25760403660031901126102f2576060610c51610c48611c98565b6024359061212f565b9060405192835260208301526040820152f35b50346102f257806003193601126102f2576020602b54604051908152f35b50346102f25760403660031901126102f2576020610caa610ca1611c98565b602435906123b0565b604051908152f35b50346102f257806003193601126102f257808060018060a01b03600b541660405160208101906395d89b4160e01b825260048152610cef81611e5d565b51915afa610cfb6128e1565b915015610d5b57610d0e61032791612968565b610d476023604051809362746d2d60e81b6020830152610d378151809260208686019101611cc9565b8101036003810184520182611ec5565b604051918291602083526020830190611cec565b50610327610d67612911565b610d0e565b50346102f257806003193601126102f2576020602f54604051908152f35b50346102f25760403660031901126102f2576004356001600160401b038111610f9f5736602382011215610f9f57806004013582610dc782611ee6565b92610dd56040519485611ec5565b82845260208401923660248284010111610aa2578060246020930185378401015260243561ffff81168103610f9b57610100918284805181010312610f9757610e1d906122a0565b610e2960408501612696565b91610e3660608601612696565b9460808101519460a082015192610e4f60c084016126aa565b9160e0840151930151938042116105c9578515610f70577f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e266915b6001600160a01b0388168b52600460205260408b20805491906000198314610f5c579161ffff610f199896949261055698969460018401905560405194602086015216604084015260018060a01b038a16606084015260018060a01b038c1660808401528a60a084015260c083015260e082015260e08152610f0a81611e8e565b602081519101206105256124e2565b6001600160a01b038381169116036105705715610f465761056d926001600160a01b03908116911661288a565b61056d926001600160a01b03908116911661283c565b634e487b7160e01b8d52601160045260248dfd5b7f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d691610e89565b8480fd5b8380fd5b5080fd5b50346102f257806003193601126102f2576005546040516001600160a01b039091168152602090f35b50346102f257806003193601126102f2576020601b54604051908152f35b50346102f257806003193601126102f257601454604080516001600160801b038316815260809290921c602083015290f35b50346102f257806003193601126102f2576020602d54604051908152f35b50346102f25760403660031901126102f257611061611057611c98565b602435903361283c565b602060405160018152f35b50346102f25760203660031901126102f2576020906040906001600160a01b03611094611c98565b168152600483522054604051908152f35b50346102f257806003193601126102f257600f546040516001600160a01b039091168152602090f35b50346102f257806003193601126102f257610327604051610d47816110f281611dd8565b0382611ec5565b50346102f25760203660031901126102f2576004359060098210156102f257602060ff61112584611d6f565b54166040519015158152f35b50346102f25760203660031901126102f2576020906040906001600160a01b03611159611c98565b168152600183522054604051908152f35b50346102f257806003193601126102f257600a546040516001600160a01b039091168152602090f35b50346102f257806003193601126102f2576020601c54604051908152f35b50346102f257806003193601126102f25760206001600160401b03602c5460401c16604051908152f35b50346102f257806003193601126102f25760206001600160401b03602c5416604051908152f35b50346102f257806003193601126102f25760206001600160401b03602e5416604051908152f35b50346102f257806003193601126102f25760208054604051908152f35b50346102f257806003193601126102f2576006546001600160a01b0390818116338190036112b057806005549384167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08680a36001600160a01b0319928316176005551660065580f35b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b50346102f257806003193601126102f2576020602854604051908152f35b50346102f25760203660031901126102f2576020906040906001600160a01b0361133a611c98565b168152601783522054604051908152f35b50346102f257806003193601126102f2576020601554604051908152f35b50346102f257806003193601126102f2576020600e54604051908152f35b50346102f257806003193601126102f2576020601654604051908152f35b50346102f25760603660031901126102f2576020610caa604435602435600435612016565b50346102f257806003193601126102f2576020601154604051908152f35b50346102f257806003193601126102f257600d546040516001600160a01b039091168152602090f35b50346102f257806003193601126102f2576020601254604051908152f35b50346102f257806003193601126102f2576020610caa6124e2565b50346102f257806003193601126102f2576020601954604051908152f35b50346102f257806003193601126102f2576020601354604051908152f35b50346102f257806003193601126102f257808060018060a01b03600d5416604051602081019063313ce56760e01b8252600481526114c381611e5d565b51915afa906114d06128e1565b918061150d575b15611502576020828051810103126102f257506114f760208092016126aa565b60ff60405191168152f35b5050602060126114f7565b5060208251146114d7565b50346102f25760603660031901126102f257611532611c98565b9061153b611cb3565b6044359182611579575b506040519182526001600160a01b03908116921690600080516020612add83398151915290602090a3602060405160018152f35b6001600160a01b038481168083526001602090815260408420549286906115a28286101561260c565b8616938484036115b7575b5050505050611545565b838652600283526040808720338852845286205460018101611621575b50926001602096936115ff8794604097610bed600080516020612add8339815191529c9a1515612651565b9285525283832055815220611615858254611ff0565b905591388085816115ad565b9091811061167557926001602096936115ff8a600080516020612add8339815191529a98956116528260409a611fe3565b86895260028552898920338a5285528989205594975094979950509396506115d4565b60405162461bcd60e51b815260048101849052601860248201527745524332303a20616c6c6f77616e636520746f6f206c6f7760401b6044820152606490fd5b50346102f2576116c436611d20565b908395949542116105c9576001600160a01b03878116808a52600460205260408a20805491969295929060001983146105b557826117669694928d92600161055698960190556040519160208301937f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d6855260408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e0815261051a81611e8e565b16036105705761056d9261283c565b50346102f25760203660031901126102f2576020906040906001600160a01b0361179d611c98565b168152601883522054604051908152f35b50346102f257806003193601126102f257602060245460801c604051908152f35b50346102f25760403660031901126102f2576004356009811015610f9f576117f5611d11565b6008549091906001600160a01b031633036118ab5760ff61181582611d6f565b5416151591151591821461187157808260ff61183361186194611d6f565b54161515827feeec81de25875ce1725479bb76f720a8defdb43dea041919ae37bb4aae9847c08780a4611d6f565b9060ff8019835416911617905580f35b60405162461bcd60e51b81526020600482015260126024820152714d61726b65743a2073616d6520737461746560701b6044820152606490fd5b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881d5b985d5d1a1bdc9a5e995960621b6044820152606490fd5b50346102f25760403660031901126102f257611061611904611c98565b602435903361288a565b50346102f25760603660031901126102f257611928611c98565b611930611d11565b604435908115158203610f9b5760018060a01b0392839161195683600554163314611f01565b156119fa5716908115908115916119f2575b50156119b557806005549283167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08580a36001600160a01b03199182161760055560068054909116905580f35b60405162461bcd60e51b81526020600482015260156024820152744f776e61626c653a207a65726f206164647265737360581b6044820152606490fd5b905038611968565b9150501660018060a01b0319600654161760065580f35b50346102f257806003193601126102f257808060018060a01b03600b541660405160208101906306fdde0360e01b825260048152611a4e81611e5d565b51915afa611a5a6128e1565b915015611ab757611a6d61032791612968565b610d476034604051809373546170696f63612053696e67756c61726974792d60601b6020830152611aa78151809260208686019101611cc9565b8101036014810184520182611ec5565b50610327611ac3612911565b611a6d565b50346102f257806003193601126102f257600f546040805163d6d7d52560e01b8152602060048201529182906001600160a01b0316818581611b0c60248201611dd8565b03925af18015611c455782918391611c05575b508115611ba6578015611b6a57807f9f9192b5edb17356c524e08d9e025c8e2f6307e6ea52fb7968faa3081f51c3c86040948260115580a25b42601355825191151582526020820152f35b60405162461bcd60e51b81526020600482015260146024820152734d61726b65743a20696e76616c6964207261746560601b6044820152606490fd5b509050611bb860135460125490611ff0565b4211611bc957604090601154611b58565b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881c985d19481d1bdbc81bdb1960621b6044820152606490fd5b9150506040813d604011611c3d575b81611c2160409383611ec5565b81010312610f9f576020611c34826122a0565b91015138611b1f565b3d9150611c14565b6040513d84823e3d90fd5b905034610f9f576040366003190112610f9f576040602092611c70611c98565b611c78611cb3565b6001600160a01b0391821683526003865283832091168252845220548152f35b600435906001600160a01b0382168203611cae57565b600080fd5b602435906001600160a01b0382168203611cae57565b60005b838110611cdc5750506000910152565b8181015183820152602001611ccc565b90602091611d0581518092818552858086019101611cc9565b601f01601f1916010190565b602435908115158203611cae57565b60e0906003190112611cae576001600160a01b03906004358281168103611cae57916024359081168103611cae5790604435906064359060843560ff81168103611cae579060a4359060c43590565b6009811015611d88576000526007602052604060002090565b634e487b7160e01b600052602160045260246000fd5b90600182811c92168015611dce575b6020831014611db857565b634e487b7160e01b600052602260045260246000fd5b91607f1691611dad565b60105460009291611de882611d9e565b908181526001928381169081600014611e425750600114611e0857505050565b9092935060106000526020928360002092846000945b838610611e2e5750505050010190565b805485870183015294019385908201611e1e565b91935050602093945060ff191683830152151560051b010190565b604081019081106001600160401b03821117611e7857604052565b634e487b7160e01b600052604160045260246000fd5b61010081019081106001600160401b03821117611e7857604052565b608081019081106001600160401b03821117611e7857604052565b90601f801991011681019081106001600160401b03821117611e7857604052565b6001600160401b038111611e7857601f01601f191660200190565b15611f0857565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b15611f5357565b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881b9bdd081d985b1a59607a1b6044820152606490fd5b81810292918115918404141715611f9f57565b634e487b7160e01b600052601160045260246000fd5b8115611fbf570490565b634e487b7160e01b600052601260045260246000fd5b604d8111611f9f57600a0a90565b91908203918211611f9f57565b91908201809211611f9f57565b81810392916000138015828513169184121617611f9f57565b60145491929161205f91612050916120469161203c906001600160801b03831690611f8c565b9060801c90611fb5565b93601f5490611f8c565b61205983611fd5565b90611fb5565b808310612127576120736120af9184611fe3565b916120aa6120a461209b601e5461209561208c86611fd5565b60205490611ff0565b90611f8c565b61205984611fd5565b91611fd5565b611ffd565b6509184e72a00090818102918183051490151715611f9f57670de0b6b3a764000091828102928184051490151715611f9f578015611fbf57600160ff1b91808314600019831416611f9f5705906000821215612120578114611f9f57600003905b80821161211b575090565b905090565b5090612110565b505050600090565b9160018060a01b0380931691600093838552602060178152604091828720549081156122935783518481018181106001600160401b0382111761227f5785528881528884808301938285526121858915156122ad565b600954166064600c548c85526018845289852054928a51958694859363442c159960e01b85526004850152602484015260448301525afa908115612275578a91612242575b506122369798999492601894926122196122048a6121ff6121f661222297620186a06021540490611f8c565b601e5490611f8c565b611fb5565b915191946001600160801b0392831690611f8c565b91511690611fb5565b81811061223a57035b9783525220546122f9565b9091565b50508261222b565b90508481813d831161226e575b6122598183611ec5565b8101031261226a57516122366121ca565b8980fd5b503d61224f565b86513d8c823e3d90fd5b634e487b7160e01b8a52604160045260248afd5b5086955085949350505050565b51908115158203611cae57565b156122b457565b60405162461bcd60e51b815260206004820152601e60248201527f4d61726b65743a2065786368616e676552617465206e6f742076616c696400006044820152606490fd5b6123048215156122ad565b602060018060a01b0360095416916064600c54604051948593849263442c159960e01b845260048401526024830152600060448301525afa9081156123a457600091612371575b50906121ff61235d9260215490611f8c565b620186a061236d601e5483611f8c565b0491565b906020823d821161239c575b8161238a60209383611ec5565b810103126102f25750516121ff61234b565b3d915061237d565b6040513d6000823e3d90fd5b6001600160a01b031660008181526018602052604081205490926123d3916122f9565b9183526017602052604083205480156124dc5781156124dc578181106124dc57828110156124d25760145461241c918391610bed9161203c906001600160801b03831690611f8c565b90620186a092838302928084048514901517156124be57612441929161205991611fe3565b91601b5491601c54936124548585611ffd565b80820291848212600160ff1b8214166124be5781830514901517156124aa5705818482019485129112908015821691151617612496575080821261211b575090565b634e487b7160e01b81526011600452602490fd5b634e487b7160e01b83526011600452602483fd5b634e487b7160e01b85526011600452602485fd5b50505050601b5490565b50505090565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031614806125e3575b1561253d577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f000000000000000000000000000000000000000000000000000000000000000082527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a0815260c081018181106001600160401b03821117611e785760405251902090565b507f00000000000000000000000000000000000000000000000000000000000000004614612514565b1561261357565b60405162461bcd60e51b815260206004820152601660248201527545524332303a2062616c616e636520746f6f206c6f7760501b6044820152606490fd5b1561265857565b60405162461bcd60e51b815260206004820152601660248201527545524332303a206e6f207a65726f206164647265737360501b6044820152606490fd5b51906001600160a01b0382168203611cae57565b519060ff82168203611cae57565b6005811015611d8857806126c95750565b600181036127115760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b6044820152606490fd5b6002810361275e5760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606490fd5b60031461276757565b60405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608490fd5b9291906fa2a8918ca85bafe22016d0b997e4df60600160ff1b0383116128305791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa156128235781516001600160a01b0381161561281d579190565b50600190565b50604051903d90823e3d90fd5b50505050600090600390565b7fe50de2333c10a9502fcb1d8ae13a51bbf423153dfc63c2b8997665b32154afc360018060a01b038092169160009083825260036020526040822094169384825260205284604082205580a4565b909160207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259160018060a01b03809416938460005260028352604060002095169485600052825280604060002055604051908152a3565b3d1561290c573d906128f282611ee6565b916129006040519384611ec5565b82523d6000602084013e565b606090565b6040519061291e82611e5d565b60038252623f3f3f60e81b6020830152565b908151811015612941570160200190565b634e487b7160e01b600052603260045260246000fd5b60ff1660ff8114611f9f5760010190565b8051604081106129e357508051810190602081818401930312611cae576020810151906001600160401b038211611cae570181603f82011215611cae5760208101516129b381611ee6565b926129c16040519485611ec5565b81845260408284010111611cae576129e0916040602085019101611cc9565b90565b602092908303612ad1576000805b60ff81168581109081612ab2575b5015612a1357612a0e90612957565b6129f1565b9260ff80941692612a2384611ee6565b93612a316040519586611ec5565b808552612a40601f1991611ee6565b013687860137825b85811687811080612a95575b15612a8a57612a859190612a7f6001600160f81b0319612a748388612930565b5116871a9188612930565b53612957565b612a48565b505094505050905090565b506001600160f81b0319612aa98286612930565b51161515612a54565b6001600160f81b03199150612ac79086612930565b51161515386129ff565b9150506129e061291156feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220d56635cc9f65bf4bf9a99354bcd7b53734e93d4577b3eb9463586ee7b624502b64736f6c63430008120033"; + "0x6101408060405234620001e5576200001781620001ea565b601381526001602082017f546170696f63612053696e67756c617269747900000000000000000000000000815260206040516200005481620001ea565b8381520192603160f81b845251902091208160e052610100918183524660a0526040519160208301907f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f92838352604085015260608401524660808401523060a084015260a0835260c083019280841060018060401b03851117620001cf5760408490525190206080523060c052610120908152600580546001600160a01b0319163390811790915560007f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a362013880601b5562015f90601c55612710601d55612ee06020557f0bd4060688a1800ae986e4840aebc924bb40b5bf44de4583df2257220b54b77c6027557f7d1dc38e60930664f8cbf495da6556ca091d2f92d6550877750c049864b182306028556161a86029556032603055612be49283620002078439608051836125cd015260a05183612698015260c05183612597015260e0518361261c01525182612642015251816125f90152f35b634e487b7160e01b600052604160045260246000fd5b600080fd5b604081019081106001600160401b03821117620001cf5760405256fe608080604052600436101561001357600080fd5b600090813560e01c908162a02a2014611d025750806302ce728f14611b7a57806306fdde0314611ac3578063078dfbe7146119c0578063095ea7b3146119995780630c4e84f01461188157806318160ddd146118605780631c9e379b146118275780631da8bf101461176757806323b872dd146115ca578063313ce56714611538578063331960ff1461151a57806334d441d0146114fc5780633644e515146114e157806337b6b7b9146114c357806338d52e0f1461149a5780633ba0b9a91461147c5780633f741adb1461145757806340626d8b1461143957806344de240a1461141b578063473e3ce7146113fd57806348e4163e146113c45780634d7f2a34146113a65780634e71e0c8146112f8578063529898f2146112db57806352f353eb146112b4578063551402321461128d57806355c2ab941461126357806357935462146112455780636c3d8b8f1461121c57806370a08231146111e357806372778547146111ab57806374645ff3146111805780637dc0d1d0146111575780637ecebe001461111e5780637fa0b84e146110ec578063821226e8146110ce5780638285ef401461109c5780638c5d0ed31461107e5780638da5cb5b14611055578063910dd7c814610e3c578063959916dc14610e1e57806395d89b4114610d6457806399a9702814610d345780639c5d719214610d165780639e15e89f14610cdb578063a9059cbb14610bf8578063b0e21e8a14610bda578063b27c0e7414610b9f578063bb4cfe3b14610b81578063ce8849ed14610b58578063d3fb2a38146106c4578063d505accf1461051f578063d8dfeb45146104f6578063da863f0e146104cd578063dd62ed3e14610482578063de40657714610459578063e0996cb61461043b578063e30c397814610412578063ea64dd56146103f4578063eec0f42e146103d6578063ef2b234a1461035f578063f42760b714610341578063f9557ccb1461030b5763ffe04c66146102eb57600080fd5b346103085780600319360112610308576020602a54604051908152f35b80fd5b5034610308578060031936011261030857602554604080516001600160801b038316815260809290921c602083015290f35b0390f35b50346103085780600319360112610308576020602b54604051908152f35b5034610308576020366003190112610308576004356001600160a01b03818116918290036103d25761039681600554163314611fb3565b816021549182167ffb4fd7114609dd603b57adbc2082205bfbbcabf9265c4b437b472f5c592b8cd78580a36001600160a01b0319161760215580f35b8280fd5b50346103085780600319360112610308576020600c54604051908152f35b50346103085780600319360112610308576020601f54604051908152f35b50346103085780600319360112610308576006546040516001600160a01b039091168152602090f35b50346103085780600319360112610308576020601d54604051908152f35b50346103085780600319360112610308576009546040516001600160a01b039091168152602090f35b50346103085760403660031901126103085760406020916104a1611d4a565b6104a9611d65565b6001600160a01b039182168352600285528383209116825283522054604051908152f35b50346103085780600319360112610308576021546040516001600160a01b039091168152602090f35b5034610308578060031936011261030857600b546040516001600160a01b039091168152602090f35b50346103085761052e36611dd2565b9083959495421161067f576001600160a01b03878116808a52600460205260408a208054919692959290600019831461066b57826106149694928d92600161060c98960190556040519160208301937f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e266855260408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e081526105d081611f40565b5190206105db612594565b9060405190602082019261190160f01b8452602283015260428201526042815261060481611f5c565b519020612869565b91909161276a565b1603610626576106239261293c565b80f35b60405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152606490fd5b634e487b7160e01b8c52601160045260248cfd5b60405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b503461030857610160366003190112610308576001600160a01b03600435818116908190036103d2576024916001600160401b038335818111610b545736602382011215610b54578060040135918211610b545736858383010111610b545760443593838516809503610b505761074084600554163314611fb3565b80610b12575b508482610994575b50505081610954575b50506064358061093c575b5060843580610924575b5060a4358061090d575b5060c435806108e9575b5060e435806108c5575b506101043580610894575b506101243580610821575b506101443590816107af578280f35b601e5482106107c25750601f5538808280f35b60849060326040519162461bcd60e51b8352602060048401528201527f4d61726b65743a206c69717569646174696f6e436f6c6c61746572616c697a616044820152711d1a5bdb94985d19481d1bdbc81cdb585b1b60721b6064820152fd5b610830620186a0821115611ffe565b601f54811161084257601e55386107a0565b60405162461bcd60e51b8152602060048201526025818401527f4d61726b65743a20636f6c6c61746572616c697a6174696f6e5261746520746f6044820152646f2062696760d81b6064820152608490fd5b806016547fae6e0ab3b95f0a53ff9660a390ccedcbbf1f2355dce974a9841af106fddcfaba8580a360165538610795565b6108d3620186a08210611ffe565b6108e0601b548211611ffe565b601c553861078a565b6108f7620186a08210611ffe565b610904601c548210611ffe565b601b5538610780565b61091b620186a08210611ffe565b601d5538610776565b610933620186a0821115611ffe565b601a553861076c565b61094b620186a0821115611ffe565b60195538610762565b816008549182167f5a62d22209e370e38eea92cfddcd228e656e6ec139243392a760a7769f5877fd8680a36001600160a01b031916176008553880610757565b82916109a1601054611e50565b601f8111610aa1575b508790601f8411600114610a0f578893610a02575b5050508160011b916000199060031b1c1916176010555b7fa6f004921c944d4b8bf6e38462b00f36a58d62495d56b51f571ab78f732c98158480a138808461074e565b01013590508438806109bf565b60108952601f19841694507f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae67292509087908960205b878210610a825750508460019610610a66575b50505050811b016010556109d6565b60001960f88660031b161c199201013516905538808681610a57565b8285019093013585556001949094019389929182019190810190610a44565b6010895290925090507f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae672601f840160051c810160208510610b0b575b91849391601f8994920160051c01905b818110610afa57506109aa565b898155859450889350600101610aed565b5080610add565b600f80546001600160a01b0319169190911790557f0b2d6eb667d0522c3eb86e4288afecae6c11591ffd1345d4d12407e0598bca9b8680a138610746565b8680fd5b8580fd5b50346103085780600319360112610308576008546040516001600160a01b039091168152602090f35b50346103085780600319360112610308576020601e54604051908152f35b50346103085780600319360112610308576060602454604051906001600160401b0380821683528160401c16602083015260801c6040820152f35b50346103085780600319360112610308576020601a54604051908152f35b503461030857604036600319011261030857610c12611d4a565b60243580928115801590610cc9575b610c59575b50506040519182526001600160a01b0316903390600080516020612b8f83398151915290602090a3602060405160018152f35b33815260016020526040812054610c72838210156126be565b6001600160a01b0384169033829003610c8d575b5050610c26565b604093610ca491610c9f841515612703565b612095565b338352600160205283832055815220610cbe8382546120a2565b905581388080610c86565b50336001600160a01b03841614610c21565b5034610308576040366003190112610308576060610d03610cfa611d4a565b602435906121e1565b9060405192835260208301526040820152f35b50346103085780600319360112610308576020602c54604051908152f35b5034610308576040366003190112610308576020610d5c610d53611d4a565b60243590612462565b604051908152f35b5034610308578060031936011261030857808060018060a01b03600b541660405160208101906395d89b4160e01b825260048152610da181611f0f565b51915afa610dad612993565b915015610e0d57610dc061033d91612a1a565b610df96023604051809362746d2d60e81b6020830152610de98151809260208686019101611d7b565b8101036003810184520182611f77565b604051918291602083526020830190611d9e565b5061033d610e196129c3565b610dc0565b50346103085780600319360112610308576020603054604051908152f35b5034610308576040366003190112610308576004356001600160401b038111611051573660238201121561105157806004013582610e7982611f98565b92610e876040519485611f77565b828452602084019236602482840101116103d2578060246020930185378401015260243561ffff8116810361104d5761010091828480518101031261104957610ecf90612352565b610edb60408501612748565b91610ee860608601612748565b9460808101519460a082015192610f0160c0840161275c565b9160e08401519301519380421161067f578515611022577f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e266915b6001600160a01b0388168b52600460205260408b2080549190600019831461100e579161ffff610fcb9896949261060c98969460018401905560405194602086015216604084015260018060a01b038a16606084015260018060a01b038c1660808401528a60a084015260c083015260e082015260e08152610fbc81611f40565b602081519101206105db612594565b6001600160a01b038381169116036106265715610ff857610623926001600160a01b03908116911661293c565b610623926001600160a01b0390811691166128ee565b634e487b7160e01b8d52601160045260248dfd5b7f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d691610f3b565b8480fd5b8380fd5b5080fd5b50346103085780600319360112610308576005546040516001600160a01b039091168152602090f35b50346103085780600319360112610308576020601b54604051908152f35b5034610308578060031936011261030857601454604080516001600160801b038316815260809290921c602083015290f35b50346103085780600319360112610308576020602e54604051908152f35b503461030857604036600319011261030857611113611109611d4a565b60243590336128ee565b602060405160018152f35b5034610308576020366003190112610308576020906040906001600160a01b03611146611d4a565b168152600483522054604051908152f35b5034610308578060031936011261030857600f546040516001600160a01b039091168152602090f35b503461030857806003193601126103085761033d604051610df9816111a481611e8a565b0382611f77565b50346103085760203660031901126103085760043590600982101561030857602060ff6111d784611e21565b54166040519015158152f35b5034610308576020366003190112610308576020906040906001600160a01b0361120b611d4a565b168152600183522054604051908152f35b5034610308578060031936011261030857600a546040516001600160a01b039091168152602090f35b50346103085780600319360112610308576020601c54604051908152f35b503461030857806003193601126103085760206001600160401b03602d5460401c16604051908152f35b503461030857806003193601126103085760206001600160401b03602d5416604051908152f35b503461030857806003193601126103085760206001600160401b03602f5416604051908152f35b503461030857806003193601126103085760208054604051908152f35b50346103085780600319360112610308576006546001600160a01b03908181163381900361136257806005549384167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08680a36001600160a01b0319928316176005551660065580f35b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b50346103085780600319360112610308576020602954604051908152f35b5034610308576020366003190112610308576020906040906001600160a01b036113ec611d4a565b168152601783522054604051908152f35b50346103085780600319360112610308576020601554604051908152f35b50346103085780600319360112610308576020600e54604051908152f35b50346103085780600319360112610308576020601654604051908152f35b5034610308576060366003190112610308576020610d5c6044356024356004356120c8565b50346103085780600319360112610308576020601154604051908152f35b5034610308578060031936011261030857600d546040516001600160a01b039091168152602090f35b50346103085780600319360112610308576020601254604051908152f35b50346103085780600319360112610308576020610d5c612594565b50346103085780600319360112610308576020601954604051908152f35b50346103085780600319360112610308576020601354604051908152f35b5034610308578060031936011261030857808060018060a01b03600d5416604051602081019063313ce56760e01b82526004815261157581611f0f565b51915afa90611582612993565b91806115bf575b156115b45760208280518101031261030857506115a9602080920161275c565b60ff60405191168152f35b5050602060126115a9565b506020825114611589565b5034610308576060366003190112610308576115e4611d4a565b906115ed611d65565b604435918261162b575b506040519182526001600160a01b03908116921690600080516020612b8f83398151915290602090a3602060405160018152f35b6001600160a01b03848116808352600160209081526040842054928690611654828610156126be565b861693848403611669575b50505050506115f7565b8386526002835260408087203388528452862054600181016116d3575b50926001602096936116b18794604097610c9f600080516020612b8f8339815191529c9a1515612703565b92855252838320558152206116c78582546120a2565b9055913880858161165f565b9091811061172757926001602096936116b18a600080516020612b8f8339815191529a98956117048260409a612095565b86895260028552898920338a528552898920559497509497995050939650611686565b60405162461bcd60e51b815260048101849052601860248201527745524332303a20616c6c6f77616e636520746f6f206c6f7760401b6044820152606490fd5b50346103085761177636611dd2565b9083959495421161067f576001600160a01b03878116808a52600460205260408a208054919692959290600019831461066b57826118189694928d92600161060c98960190556040519160208301937f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d6855260408401528a6060840152898c1660808401528c60a084015260c083015260e082015260e081526105d081611f40565b160361062657610623926128ee565b5034610308576020366003190112610308576020906040906001600160a01b0361184f611d4a565b168152601883522054604051908152f35b5034610308578060031936011261030857602060255460801c604051908152f35b5034610308576040366003190112610308576004356009811015611051576118a7611dc3565b6008549091906001600160a01b0316330361195d5760ff6118c782611e21565b5416151591151591821461192357808260ff6118e561191394611e21565b54161515827feeec81de25875ce1725479bb76f720a8defdb43dea041919ae37bb4aae9847c08780a4611e21565b9060ff8019835416911617905580f35b60405162461bcd60e51b81526020600482015260126024820152714d61726b65743a2073616d6520737461746560701b6044820152606490fd5b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881d5b985d5d1a1bdc9a5e995960621b6044820152606490fd5b5034610308576040366003190112610308576111136119b6611d4a565b602435903361293c565b5034610308576060366003190112610308576119da611d4a565b6119e2611dc3565b60443590811515820361104d5760018060a01b03928391611a0883600554163314611fb3565b15611aac571690811590811591611aa4575b5015611a6757806005549283167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08580a36001600160a01b03199182161760055560068054909116905580f35b60405162461bcd60e51b81526020600482015260156024820152744f776e61626c653a207a65726f206164647265737360581b6044820152606490fd5b905038611a1a565b9150501660018060a01b0319600654161760065580f35b5034610308578060031936011261030857808060018060a01b03600b541660405160208101906306fdde0360e01b825260048152611b0081611f0f565b51915afa611b0c612993565b915015611b6957611b1f61033d91612a1a565b610df96034604051809373546170696f63612053696e67756c61726974792d60601b6020830152611b598151809260208686019101611d7b565b8101036014810184520182611f77565b5061033d611b756129c3565b611b1f565b5034610308578060031936011261030857600f546040805163d6d7d52560e01b8152602060048201529182906001600160a01b0316818581611bbe60248201611e8a565b03925af18015611cf75782918391611cb7575b508115611c58578015611c1c57807f9f9192b5edb17356c524e08d9e025c8e2f6307e6ea52fb7968faa3081f51c3c86040948260115580a25b42601355825191151582526020820152f35b60405162461bcd60e51b81526020600482015260146024820152734d61726b65743a20696e76616c6964207261746560601b6044820152606490fd5b509050611c6a601354601254906120a2565b4211611c7b57604090601154611c0a565b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881c985d19481d1bdbc81bdb1960621b6044820152606490fd5b9150506040813d604011611cef575b81611cd360409383611f77565b81010312611051576020611ce682612352565b91015138611bd1565b3d9150611cc6565b6040513d84823e3d90fd5b905034611051576040366003190112611051576040602092611d22611d4a565b611d2a611d65565b6001600160a01b0391821683526003865283832091168252845220548152f35b600435906001600160a01b0382168203611d6057565b600080fd5b602435906001600160a01b0382168203611d6057565b60005b838110611d8e5750506000910152565b8181015183820152602001611d7e565b90602091611db781518092818552858086019101611d7b565b601f01601f1916010190565b602435908115158203611d6057565b60e0906003190112611d60576001600160a01b03906004358281168103611d6057916024359081168103611d605790604435906064359060843560ff81168103611d60579060a4359060c43590565b6009811015611e3a576000526007602052604060002090565b634e487b7160e01b600052602160045260246000fd5b90600182811c92168015611e80575b6020831014611e6a57565b634e487b7160e01b600052602260045260246000fd5b91607f1691611e5f565b60105460009291611e9a82611e50565b908181526001928381169081600014611ef45750600114611eba57505050565b9092935060106000526020928360002092846000945b838610611ee05750505050010190565b805485870183015294019385908201611ed0565b91935050602093945060ff191683830152151560051b010190565b604081019081106001600160401b03821117611f2a57604052565b634e487b7160e01b600052604160045260246000fd5b61010081019081106001600160401b03821117611f2a57604052565b608081019081106001600160401b03821117611f2a57604052565b90601f801991011681019081106001600160401b03821117611f2a57604052565b6001600160401b038111611f2a57601f01601f191660200190565b15611fba57565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b1561200557565b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881b9bdd081d985b1a59607a1b6044820152606490fd5b8181029291811591840414171561205157565b634e487b7160e01b600052601160045260246000fd5b8115612071570490565b634e487b7160e01b600052601260045260246000fd5b604d811161205157600a0a90565b9190820391821161205157565b9190820180921161205157565b8181039291600013801582851316918412161761205157565b60145491929161211191612102916120f8916120ee906001600160801b0383169061203e565b9060801c90612067565b93601f549061203e565b61210b83612087565b90612067565b8083106121d9576121256121619184612095565b9161215c61215661214d601e5461214761213e86612087565b602054906120a2565b9061203e565b61210b84612087565b91612087565b6120af565b6509184e72a0009081810291818305149015171561205157670de0b6b3a76400009182810292818405149015171561205157801561207157600160ff1b9180831460001983141661205157059060008212156121d257811461205157600003905b8082116121cd575090565b905090565b50906121c2565b505050600090565b9160018060a01b0380931691600093838552602060178152604091828720549081156123455783518481018181106001600160401b0382111761233157855288815288848083019382855261223789151561235f565b600954166064600c548c85526018845289852054928a51958694859363442c159960e01b85526004850152602484015260448301525afa908115612327578a916122f4575b506122e89798999492601894926122cb6122b68a6122b16122a86122d497620186a0602254049061203e565b601e549061203e565b612067565b915191946001600160801b039283169061203e565b91511690612067565b8181106122ec57035b9783525220546123ab565b9091565b5050826122dd565b90508481813d8311612320575b61230b8183611f77565b8101031261231c57516122e861227c565b8980fd5b503d612301565b86513d8c823e3d90fd5b634e487b7160e01b8a52604160045260248afd5b5086955085949350505050565b51908115158203611d6057565b1561236657565b60405162461bcd60e51b815260206004820152601e60248201527f4d61726b65743a2065786368616e676552617465206e6f742076616c696400006044820152606490fd5b6123b682151561235f565b602060018060a01b0360095416916064600c54604051948593849263442c159960e01b845260048401526024830152600060448301525afa90811561245657600091612423575b50906122b161240f926022549061203e565b620186a061241f601e548361203e565b0491565b906020823d821161244e575b8161243c60209383611f77565b810103126103085750516122b16123fd565b3d915061242f565b6040513d6000823e3d90fd5b6001600160a01b03166000818152601860205260408120549092612485916123ab565b91835260176020526040832054801561258e57811561258e5781811061258e5782811015612584576014546124ce918391610c9f916120ee906001600160801b0383169061203e565b90620186a09283830292808404851490151715612570576124f3929161210b91612095565b91601b5491601c549361250685856120af565b80820291848212600160ff1b82141661257057818305149015171561255c570581848201948512911290801582169115161761254857508082126121cd575090565b634e487b7160e01b81526011600452602490fd5b634e487b7160e01b83526011600452602483fd5b634e487b7160e01b85526011600452602485fd5b50505050601b5490565b50505090565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03161480612695575b156125ef577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f000000000000000000000000000000000000000000000000000000000000000082527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a0815260c081018181106001600160401b03821117611f2a5760405251902090565b507f000000000000000000000000000000000000000000000000000000000000000046146125c6565b156126c557565b60405162461bcd60e51b815260206004820152601660248201527545524332303a2062616c616e636520746f6f206c6f7760501b6044820152606490fd5b1561270a57565b60405162461bcd60e51b815260206004820152601660248201527545524332303a206e6f207a65726f206164647265737360501b6044820152606490fd5b51906001600160a01b0382168203611d6057565b519060ff82168203611d6057565b6005811015611e3a578061277b5750565b600181036127c35760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b6044820152606490fd5b600281036128105760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606490fd5b60031461281957565b60405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608490fd5b9291906fa2a8918ca85bafe22016d0b997e4df60600160ff1b0383116128e25791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa156128d55781516001600160a01b038116156128cf579190565b50600190565b50604051903d90823e3d90fd5b50505050600090600390565b7fe50de2333c10a9502fcb1d8ae13a51bbf423153dfc63c2b8997665b32154afc360018060a01b038092169160009083825260036020526040822094169384825260205284604082205580a4565b909160207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259160018060a01b03809416938460005260028352604060002095169485600052825280604060002055604051908152a3565b3d156129be573d906129a482611f98565b916129b26040519384611f77565b82523d6000602084013e565b606090565b604051906129d082611f0f565b60038252623f3f3f60e81b6020830152565b9081518110156129f3570160200190565b634e487b7160e01b600052603260045260246000fd5b60ff1660ff81146120515760010190565b805160408110612a9557508051810190602081818401930312611d60576020810151906001600160401b038211611d60570181603f82011215611d60576020810151612a6581611f98565b92612a736040519485611f77565b81845260408284010111611d6057612a92916040602085019101611d7b565b90565b602092908303612b83576000805b60ff81168581109081612b64575b5015612ac557612ac090612a09565b612aa3565b9260ff80941692612ad584611f98565b93612ae36040519586611f77565b808552612af2601f1991611f98565b013687860137825b85811687811080612b47575b15612b3c57612b379190612b316001600160f81b0319612b2683886129e2565b5116871a91886129e2565b53612a09565b612afa565b505094505050905090565b506001600160f81b0319612b5b82866129e2565b51161515612b06565b6001600160f81b03199150612b7990866129e2565b5116151538612ab1565b915050612a926129c356feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220f3bb0da6214bb11cc58a28e091816300a55b66a0dfd3db7e2a2574fdc9fe1d7164736f6c63430008120033"; type SGLStorageConstructorParams = | [signer?: Signer] diff --git a/src/typechain/tapioca-bar/factories/markets/singularity/Singularity__factory.ts b/src/typechain/tapioca-bar/factories/markets/singularity/Singularity__factory.ts index 7ad71616..939bd0a6 100644 --- a/src/typechain/tapioca-bar/factories/markets/singularity/Singularity__factory.ts +++ b/src/typechain/tapioca-bar/factories/markets/singularity/Singularity__factory.ts @@ -130,6 +130,25 @@ const _abi = [ name: "InterestElasticityUpdated", type: "event", }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "address", + name: "oldVal", + type: "address", + }, + { + indexed: true, + internalType: "address", + name: "newVal", + type: "address", + }, + ], + name: "LeverageExecutorSet", + type: "event", + }, { anonymous: false, inputs: [ @@ -1028,19 +1047,9 @@ const _abi = [ name: "supplyAmount", type: "uint256", }, - { - internalType: "uint256", - name: "minAmountOut", - type: "uint256", - }, - { - internalType: "contract ISwapper", - name: "swapper", - type: "address", - }, { internalType: "bytes", - name: "dexData", + name: "data", type: "bytes", }, ], @@ -1380,6 +1389,19 @@ const _abi = [ stateMutability: "view", type: "function", }, + { + inputs: [], + name: "leverageExecutor", + outputs: [ + { + internalType: "contract ILeverageExecutor", + name: "", + type: "address", + }, + ], + stateMutability: "view", + type: "function", + }, { inputs: [], name: "leverageModule", @@ -2213,19 +2235,9 @@ const _abi = [ name: "share", type: "uint256", }, - { - internalType: "uint256", - name: "minAmountOut", - type: "uint256", - }, - { - internalType: "contract ISwapper", - name: "swapper", - type: "address", - }, { internalType: "bytes", - name: "dexData", + name: "data", type: "bytes", }, ], @@ -2240,6 +2252,19 @@ const _abi = [ stateMutability: "nonpayable", type: "function", }, + { + inputs: [ + { + internalType: "contract ILeverageExecutor", + name: "_executor", + type: "address", + }, + ], + name: "setLeverageExecutor", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, { inputs: [ { @@ -2646,7 +2671,7 @@ const _abi = [ ] as const; const _bytecode = - "0x6101408060405234620001ea576200001781620001ef565b601381526001602082017f546170696f63612053696e67756c617269747900000000000000000000000000815260206040516200005481620001ef565b8381520192603160f81b845251902091208160e052610100918183524660a0526040519160208301907f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f92838352604085015260608401524660808401523060a084015260a0835260c083019280841060018060401b03851117620001d45760408490525190206080523060c052610120908152600580546001600160a01b0319163390811790915560007f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a362013880601b5562015f90601c55612710601d55612ee06020557f0bd4060688a1800ae986e4840aebc924bb40b5bf44de4583df2257220b54b77c6026557f7d1dc38e60930664f8cbf495da6556ca091d2f92d6550877750c049864b182306027556161a86028556032602f556001603055615e6c92836200020c843960805183613c12015260a05183613ccd015260c05183613bdc015260e05183613c6101525182613c8701525181613c3e0152f35b634e487b7160e01b600052604160045260246000fd5b600080fd5b604081019081106001600160401b03821117620001d45760405256fe6080604052600436101561001b575b361561001957600080fd5b005b60003560e01c8062a02a201461059a57806302ce728f1461059557806306fdde0314610590578063078dfbe71461058b578063095ea7b3146105865780630c4e84f01461058157806318160ddd1461057c5780631c9e379b146105775780631da8bf10146105725780631ee9c8f21461056d57806323b872dd1461056857806325384fd8146105635780632a9399d91461055e578063313ce56714610559578063331960ff1461055457806334d441d01461054f5780633644e5151461054a57806337b6b7b91461054557806338225f111461054057806338d52e0f1461053b5780633ba0b9a9146105365780633f741adb1461053157806340626d8b1461052c57806344de240a14610527578063473e3ce71461052257806348e4163e1461051d5780634d7f2a34146105185780634ddf47d4146105135780634e71e0c81461050e5780635224372c14610509578063529898f21461050457806352f353eb146104ff57806355140232146104fa57806355c2ab94146104f557806357935462146104f057806358db9afe146104eb5780635d5f73ef146104e65780635dfe04e8146104e15780636587adb8146104dc5780636c3d8b8f146104d757806370a08231146104d257806372778547146104cd57806374645ff3146104c85780637dc0d1d0146104c35780637ecebe00146104be5780637fa0b84e146104b9578063821226e8146104b45780638285ef40146104af5780638c5d0ed3146104aa5780638da5cb5b146104a5578063910dd7c8146104a0578063959916dc1461049b57806395d89b411461049657806399a97028146104915780639c5d71921461048c5780639e15e89f14610487578063a28e6b8214610482578063a9059cbb1461047d578063aa7d966514610478578063ae70702e14610473578063af405b4c1461046e578063b0e21e8a14610469578063b25ea8fb14610464578063b27c0e741461045f578063bb4cfe3b1461045a578063bf0b895814610455578063c861a52614610450578063cce19f811461044b578063cd0211eb14610446578063ce8849ed14610441578063d3fb2a381461043c578063d49dffa714610437578063d505accf14610432578063d8dfeb451461042d578063dd62ed3e14610428578063de40657714610423578063e0996cb61461041e578063e30c397814610419578063e5644d8b14610414578063e9a492521461040f578063ea64dd561461040a578063eec0f42e14610405578063f42760b714610400578063f4d93753146103fb578063f5b33dfa146103f6578063f8ba4cff146103f1578063f9557ccb146103ec5763ffe04c660361000e576130fa565b6130c8565b6130af565b613086565b61303c565b61301e565b613000565b612fe2565b612f5e565b612ed5565b612eac565b612e8e565b612e65565b612e29565b612e00565b612d52565b612c6f565b61298a565b612961565b6128fa565b6128a6565b61287d565b6127a6565b612788565b61274d565b6126c0565b6126a2565b61259c565b61248b565b61231a565b612175565b6120cb565b61208d565b61206f565b612044565b611faf565b611f91565b611f16565b611eb2565b611e94565b611e62565b611e44565b611e1a565b611ddd565b611db4565b611cd3565b611b9f565b611b24565b611afb565b611ab2565b611a1a565b6119f1565b61194e565b611930565b611906565b6118df565b6118b8565b61189b565b611822565b611743565b6114ec565b6114ce565b611491565b611473565b611455565b611437565b611413565b6113f5565b6113cc565b6110d7565b61108d565b61106a565b61104c565b61102e565b610f8d565b610eb5565b610e5f565b610d18565b610c1d565b610ad5565b610a48565b610a27565b610930565b6108ec565b6107a9565b6106d6565b610654565b610604565b6001600160a01b038116036105b057565b600080fd5b35906105c08261059f565b565b60409060031901126105b0576004356105da8161059f565b906024356105e78161059f565b90565b6001600160a01b0316600090815260016020526040902090565b346105b0576020610640610617366105c2565b6001600160a01b0391821660009081526003855260408082209290931681526020919091522090565b54604051908152f35b60009103126105b057565b346105b05760003660031901126105b057604061066f6138f1565b825191151582526020820152f35b60005b8381106106905750506000910152565b8181015183820152602001610680565b906020916106b98151809281855285808601910161067d565b601f01601f1916010190565b9060206105e79281815201906106a0565b346105b05760008060031936011261079c57808060018060a01b03600b541660405160208101906306fdde0360e01b82526004815261071481611c4e565b51915afa61072061493d565b9150156107855761076761077561073961078193614a59565b60405173546170696f63612053696e67756c61726974792d60601b6020820152928391603483015b90614926565b03601f198101835282611cb2565b604051918291826106c5565b0390f35b5061078161076761077561079761496d565b610739565b80fd5b801515036105b057565b346105b05760603660031901126105b0576004356107c68161059f565b602435906107d38261079f565b604435916107e08361079f565b6005546001600160a01b0391906107fa9083163314613118565b156108d3578116918215908115916108cb575b501561088e5760055461087c9290610835906001600160a01b03165b6001600160a01b031690565b7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b600680546001600160a01b0319169055005b60405162461bcd60e51b81526020600482015260156024820152744f776e61626c653a207a65726f206164647265737360581b6044820152606490fd5b90503861080d565b60068054919092166001600160a01b0319909116179055005b346105b05760403660031901126105b05761091660043561090c8161059f565b60243590336141e3565b602060405160018152f35b6004359060098210156105b057565b346105b05760403660031901126105b057610949610921565b6024356109558161079f565b6008546001600160a01b031633036109eb576109da8261098961098461097d61001996611b86565b5460ff1690565b151590565b61099884151591821415613395565b6109a461097d83611b86565b6109ad83611b77565b1515827feeec81de25875ce1725479bb76f720a8defdb43dea041919ae37bb4aae9847c0600080a4611b86565b9060ff801983541691151516179055565b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881d5b985d5d1a1bdc9a5e995960621b6044820152606490fd5b346105b05760003660031901126105b057602060245460801c604051908152f35b346105b05760203660031901126105b057600435610a658161059f565b60018060a01b031660005260186020526020604060002054604051908152f35b60ff8116036105b057565b60e09060031901126105b057600435610aa88161059f565b90602435610ab58161059f565b906044359060643590608435610aca81610a85565b9060a4359060c43590565b346105b057610ae336610a90565b9592809594959291924211610bab5761001996610ba693610b9393610b86878a610b7e8b610767610b8b99610b1786614168565b60405195869460208601988991959493909260c09360e08401977f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d685526000602086015260018060a01b038092166040860152166060840152608083015260a08201520152565b519020614112565b61409a565b919091613f7f565b6001600160a01b03838116911614613f1a565b614190565b60405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b9181601f840112156105b0578235916001600160401b0383116105b057602083818601950101116105b057565b346105b05760c03660031901126105b057600435610c3a8161059f565b608435610c468161059f565b60a435906001600160401b0382116105b05761078192610cc8610ccd92610767610c77610cdc963690600401610bf0565b604051958694630f74e47960e11b602087015260018060a01b0380921660248701526024356044870152604435606487015260643560848701521660a485015260c060c485015260e4840191615976565b615cff565b60208082518301019101613a2d565b6040519081529081906020820190565b60609060031901126105b057600435610d048161059f565b90602435610d118161059f565b9060443590565b346105b057610d60600080516020615e17833981519152610d3836610cec565b9291939083610d6f575b6040519384526001600160a01b039081169416929081906020820190565b0390a360405160018152602090f35b610d78856105ea565b54610d8585821015613cf3565b6001600160a01b038281169186918816839003610da5575b505050610d42565b6001600160a01b03881660009081526002602090815260408083203384529091529020610de993610de491548460018201610e11575b50501515613d38565b613482565b610df2866105ea565b55610dfc816105ea565b610e0785825461348f565b9055388481610d9d565b81610de482610e21941015613d7d565b6001600160a01b038b166000908152600260205260409020610e579033905b9060018060a01b0316600052602052604060002090565b553884610ddb565b346105b05760003660031901126105b0576032546040516001600160a01b039091168152602090f35b908160609103126105b05790565b908160e09103126105b05790565b60809060a31901126105b05760a490565b610120806003193601126105b057600435610ecf8161059f565b60443590610edc8261079f565b6001600160401b03906064358281116105b057610efd903690600401610e88565b936084359283116105b057610767610f8261001996610f70610f26610cc8973690600401610e96565b91610f3036610ea4565b95604051998a98632a9399d960e01b60208b015260018060a01b031660248a015260243560448a01521515606489015260848801526101448701906159c8565b8581036023190160a487015290615a0c565b9160c4840190615b01565b346105b05760008060031936011261079c57808060018060a01b03600d5416604051602081019063313ce56760e01b825260048152610fcb81611c4e565b51915afa90610fd861493d565b9180611023575b156110175760208280518101031261079c5750602061078191015161100381610a85565b60405160ff90911681529081906020820190565b50506107816012611003565b506020825114610fdf565b346105b05760003660031901126105b0576020601354604051908152f35b346105b05760003660031901126105b0576020601954604051908152f35b346105b05760003660031901126105b0576020611085613bd9565b604051908152f35b346105b05760003660031901126105b0576020601254604051908152f35b60a435906001600160401b03821682036105b057565b60c435906001600160401b03821682036105b057565b346105b0576101003660031901126105b0576004356064356044356024356084356111006110ab565b6111086110c1565b60e4359261112160018060a01b03600554163314613118565b620186a096611132888a1115613294565b611166602f54998060009b7fc353b09af857951dccce61b43a5854fc45beceed36c50e5d4cc2e71858a8e0df8d80a3602f55565b80611395575b5080611338575b506001600160401b039182811690816112d8575b505081811680611267575b50505080611230575b50806111ed575b50806111ac578280f35b6111ba6111e7928210615cc2565b806020547f1f1d0e9e5e3fd195010504141e7472fc7f53e44d7cd3f236f0892778039c63268580a3602055565b38808280f35b806111fd8461122a931115615cc2565b806028547f1a98b2490874ba87102ae05e5b66fbe02edfcfb7e8b4e2d60f9aef620de5e3378780a3602855565b386111a2565b8061126191602d547f6bdc0e1a8f6a69c7dcb57e254165094714bb2a8730e2fedd8c6e9b71e67478b58880a3602d55565b3861119b565b6112d092602c5461127b8282168411615cc2565b60401c167fb02a4833a4686ad41ec77a1e91a97a505459a34966985bf11c59b1e01852e4a68980a3602c805467ffffffffffffffff60401b191660409290921b67ffffffffffffffff60401b16919091179055565b388080611192565b6113319184602c546112f0828260401c168410615cc2565b167f6d780269adaf7a0d9858a89a8c090b0b3add5f7088ccac6f619ff2b22987e7d58b80a36001600160401b03166001600160401b0319602c541617602c55565b3880611187565b8061134f670de0b6b3a764000061137c9310615cc2565b80602a547f4d5fa9a75b98ca1386ef794acdb2601c953e99a9c7a94ed351a46e06dc1bab288b80a3602a55565b61138f61138a602a5461346c565b602b55565b38611173565b806113c6916029547fa55fca071799e1b20f7cdcdf447fcc08c886bdd0cb741bf8862a311921bbb3888c80a3602955565b3861116c565b346105b05760003660031901126105b057600d546040516001600160a01b039091168152602090f35b346105b05760003660031901126105b0576020601154604051908152f35b346105b05760603660031901126105b057602061108560443560243560043561353c565b346105b05760003660031901126105b0576020601654604051908152f35b346105b05760003660031901126105b0576020600e54604051908152f35b346105b05760003660031901126105b0576020601554604051908152f35b346105b05760203660031901126105b0576004356114ae8161059f565b60018060a01b031660005260176020526020604060002054604051908152f35b346105b05760003660031901126105b0576020602854604051908152f35b346105b05760203660031901126105b0576004356001600160401b0381116105b05761151c903690600401610bf0565b9060ff602254166117085761153391810190614b57565b600a80546001600160a01b0319166001600160a01b038b16179055989b919a989990989296939593926040519263de40657760e01b845260208460048160018060a01b03809e165afa998a1561170357806116a99f81809161161e6116a49f8f90848f6115cc826116679f9481956000916116d5575b5060098054919092166001600160a01b03166001600160a01b0319909116179055565b600a54611607906115e5906001600160a01b0316610829565b600580546001600160a01b0319166001600160a01b0392909216919091179055565b16151591826116c9575b826116bb575b5050614c07565b1695169316911692909160018060a01b03928380928160018060a01b03199716876031541617603155168560335416176033551683603254161760325516906034541617603455565b9391929060018060a01b0380948160018060a01b0319971687600d541617600d551685600b541617600b55600e55600c551690600f541617600f55565b614ca7565b610019600160ff196022541617602255565b9091501615158f8490611617565b8d821615159250611611565b6116f6915060203d81116116fc575b6116ee8183611cb2565b810190614bf2565b386115a9565b503d6116e4565b61385f565b60405162461bcd60e51b815260206004820152601360248201527213585c9ad95d0e881a5b9a5d1a585b1a5e9959606a1b6044820152606490fd5b346105b05760008060031936011261079c576006546001600160a01b0316338190036117de576005546117cb91908190611785906001600160a01b0316610829565b7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08580a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b600680546001600160a01b031916905580f35b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b346105b05761187661076761187161183936610cec565b6040516314890dcb60e21b60208201526001600160a01b03938416602482015292909116604483015260648201529182906084820190565b615d98565b6040818051810103126105b05780604060208193015191015182519182526020820152f35b346105b05760003660031901126105b05760208054604051908152f35b346105b05760003660031901126105b05760206001600160401b03602e5416604051908152f35b346105b05760003660031901126105b05760206001600160401b03602c5416604051908152f35b346105b05760003660031901126105b0576020602c546001600160401b036040519160401c168152f35b346105b05760003660031901126105b0576020601c54604051908152f35b346105b05760a03660031901126105b05760043561196b8161059f565b6064356119778161059f565b608435906001600160401b0382116105b05761078192610cc8610ccd926107676119a8610cdc963690600401610bf0565b604051958694632c6dcd7f60e11b602087015260018060a01b0380921660248701526024356044870152604435606487015216608485015260a060a485015260c4840191615976565b346105b05760003660031901126105b0576031546040516001600160a01b039091168152602090f35b346105b05760003660031901126105b057611a3361423d565b506080611a3e61430b565b509350505050604051916001600160401b0380825116845260208201511660208401526040600180861b039101511660408301526060820152f35b60809060031901126105b057600435611a918161059f565b90602435611a9e8161059f565b90604435611aab8161079f565b9060643590565b346105b0576020611085611ac536611a79565b92600760009392935260078652611ae460ff6040600020541615614fce565b611aee848261500b565b611af66147f3565b6150e1565b346105b05760003660031901126105b057600a546040516001600160a01b039091168152602090f35b346105b05760203660031901126105b057600435611b418161059f565b60018060a01b031660005260016020526020604060002054604051908152f35b634e487b7160e01b600052602160045260246000fd5b60091115611b8157565b611b61565b6009811015611b81576000526007602052604060002090565b346105b05760203660031901126105b057611bb8610921565b6009811015611b81576000526007602052602060ff604060002054166040519015158152f35b90600182811c92168015611c0e575b6020831014611bf857565b634e487b7160e01b600052602260045260246000fd5b91607f1691611bed565b634e487b7160e01b600052604160045260246000fd5b606081019081106001600160401b03821117611c4957604052565b611c18565b604081019081106001600160401b03821117611c4957604052565b6001600160401b038111611c4957604052565b60c081019081106001600160401b03821117611c4957604052565b60e081019081106001600160401b03821117611c4957604052565b90601f801991011681019081106001600160401b03821117611c4957604052565b346105b05760008060031936011261079c5760405181601054611cf581611bde565b80845290600190818116908115611d8c5750600114611d33575b61078184611d1f81880382611cb2565b6040519182916020835260208301906106a0565b60108352602094507f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae6725b828410611d79575050508161078193611d1f9282010193611d0f565b8054858501870152928501928101611d5d565b6107819650611d1f9450602092508593915060ff191682840152151560051b82010193611d0f565b346105b05760003660031901126105b057600f546040516001600160a01b039091168152602090f35b346105b05760203660031901126105b057600435611dfa8161059f565b60018060a01b031660005260046020526020604060002054604051908152f35b346105b05760403660031901126105b057610916600435611e3a8161059f565b6024359033614190565b346105b05760003660031901126105b0576020602d54604051908152f35b346105b05760003660031901126105b057601454604080516001600160801b038316815260809290921c602083015290f35b346105b05760003660031901126105b0576020601b54604051908152f35b346105b05760003660031901126105b0576005546040516001600160a01b039091168152602090f35b6001600160401b038111611c4957601f01601f191660200190565b6024359061ffff821682036105b057565b359061ffff821682036105b057565b346105b05760403660031901126105b0576004356001600160401b0381116105b057366023820112156105b0578060040135611f5181611edb565b90611f5f6040519283611cb2565b80825236602482850101116105b057602081600092602461001996018386013783010152611f8b611ef6565b90613dc4565b346105b05760003660031901126105b0576020602f54604051908152f35b346105b05760008060031936011261079c57808060018060a01b03600b541660405160208101906395d89b4160e01b825260048152611fed81611c4e565b51915afa611ff961493d565b91501561202d5761076761077561201261078193614a59565b60405162746d2d60e81b602082015292839160238301610761565b5061078161076761077561203f61496d565b612012565b346105b05760403660031901126105b05760206110856004356120668161059f565b60243590613b05565b346105b05760003660031901126105b0576020602b54604051908152f35b346105b05760403660031901126105b05760606120b86004356120af8161059f565b60243590613620565b9060405192835260208301526040820152f35b346105b05760803660031901126105b0576004356120e88161059f565b6024356120f48161059f565b604435906121018261059f565b606435926001600160401b0384116105b0576107676121709261212b610019963690600401610bf0565b60405163514735c160e11b60208201526001600160a01b03958616602482015292851660448401529390951660648201526080608482015293849260a4840191615976565b615dc2565b346105b05760403660031901126105b0576004356121928161059f565b602435801580159061223c575b6121d2575b6040519081526001600160a01b03909116903390600080516020615e17833981519152908060208101610d60565b6121db336105ea565b546121e882821015613cf3565b6001600160a01b03831690829033839003612206575b5050506121a4565b610de4612214931515613d38565b61221d336105ea565b55612227826105ea565b61223282825461348f565b90553881816121fe565b50336001600160a01b0383161461219f565b9181601f840112156105b0578235916001600160401b0383116105b0576020808501948460051b0101116105b057565b906040820191604081528151809352606081019260208093019060005b81811061230457505050818184039101528251908183528083019281808460051b8301019501936000915b8483106122d65750505050505090565b90919293949584806122f4600193601f198682030187528a516106a0565b98019301930191949392906122c6565b825115158652948401949184019160010161229b565b346105b0576040806003193601126105b057600480356001600160401b0381116105b05761234b903690830161224e565b92906024356123598161079f565b60026030541461244857600260305561237185614e69565b9361237b86614e91565b95600090815b8181106123a2578888610781896123986001603055565b519283928361227e565b82806123af83858a614edb565b906123be8b5180938193614f1c565b0390305af46123cb61493d565b90801580612441575b61241a5782916123f56123fa926123ee612415968e614f2a565b9015159052565b614f3e565b612404828c614f2a565b5261240f818b614f2a565b50614159565b612381565b888661243d61242885614f3e565b925162461bcd60e51b815292839283016106c5565b0390fd5b50866123d4565b825162461bcd60e51b8152602081860152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606490fd5b346105b05760403660031901126105b0576004356124a88161059f565b61250a60243591600e548314600014612591576020602654935b6009546124d7906001600160a01b0316610829565b604051627eeac760e11b81526001600160a01b038516600482015260248101929092529093849190829081906044820190565b03915afa80156117035761078193610cdc9360009261255b575b50612545612554929360018060a01b03166000526025602052604060002090565b90600052602052604060002090565b549061348f565b61255492506125836125459160203d811161258a575b61257b8183611cb2565b810190613a2d565b9250612524565b503d612571565b6020602754936124c2565b346105b05760008060031936011261079c57610cdc6107819160018060a01b036125cb81600554163314613118565b600a5481166001600160a01b03166023549092906001600160801b039060801c16612605575b50506125fc816105ea565b54903390615522565b61260d6147f3565b7fbe641c3ffc44b2d6c184f023fa4ed7bda4b6ffa71e03b3c98ae0c776da1f17e761264961263d60235460801c90565b6001600160801b031690565b92612653856105ea565b61265e85825461348f565b90558416918281600080516020615e178339815191526040518061268789829190602083019252565b0390a3602380546001600160801b0316905580a338806125f1565b346105b05760003660031901126105b0576020601a54604051908152f35b346105b05760403660031901126105b0576024356126dd8161059f565b6126f260018060a01b03600554163314613118565b60008080808094600435905af161270761493d565b50156127105780f35b60405162461bcd60e51b815260206004820152601560248201527429a3a61d103a3930b739b332b9103330b4b632b21760591b6044820152606490fd5b346105b05760003660031901126105b0576060602354604051906001600160401b0380821683528160401c16602083015260801c6040820152f35b346105b05760003660031901126105b0576020601e54604051908152f35b346105b05760403660031901126105b05760245460095461281c906020906127d6906001600160a01b0316610829565b6014546001600160801b0316906040518080958194638eb22cdd60e01b8352602435600484019081526001600160801b0390911660208201526001604082015260600190565b03915afa9182156117035761285561284d61078194610cdc9460009161285f575b506001600160801b03841661348f565b600435613426565b9060801c9061344f565b612877915060203d811161258a5761257b8183611cb2565b3861283d565b346105b05760003660031901126105b0576033546040516001600160a01b039091168152602090f35b346105b0576100196107676128f56128bd36610cec565b60405163cce19f8160e01b60208201526001600160a01b03938416602482015292909116604483015260648201529182906084820190565b615dec565b346105b057602061108561295361291036611a79565b60405163cd0211eb60e01b888201526001600160a01b03948516602482015293909216604484015215156064830152608480830191909152815261187181611c7c565b828082518301019101613a2d565b346105b05760003660031901126105b0576008546040516001600160a01b039091168152602090f35b346105b0576101603660031901126105b0576004356129a88161059f565b6024356001600160401b0381116105b0576129c7903690600401610bf0565b916044356129d48161059f565b60643560843560a4359060c4359260e4359461010435966101243598610144359a60018060a01b0392612a0c84600554163314613118565b838116612c25575b5080612bf0575b505081169081612b88575b505080612b6a575b5080612b4c575b5080612b2f575b5080612b05575b5080612adb575b5080612aa3575b5080612a77575b5080612a6057005b61001990612a72601e5482101561332e565b601f55565b80612a8a620186a0612a9d931115613294565b612a98601f548211156132d4565b601e55565b38612a58565b80612ad5916016547fae6e0ab3b95f0a53ff9660a390ccedcbbf1f2355dce974a9841af106fddcfaba600080a3601655565b38612a51565b80612aed620186a0612aff9310613294565b612afa601b548211613294565b601c55565b38612a4a565b80612b17620186a0612b299310613294565b612b24601c548210613294565b601b55565b38612a43565b80612b41620186a0612b469310613294565b601d55565b38612a3c565b80612b5f620186a0612b64931115613294565b601a55565b38612a35565b80612b7d620186a0612b82931115613294565b601955565b38612a2e565b600854612be99290612ba2906001600160a01b0316610829565b7f5a62d22209e370e38eea92cfddcd228e656e6ec139243392a760a7769f5877fd600080a3600880546001600160a01b0319166001600160a01b0392909216919091179055565b3880612a26565b612bf9916131b7565b7fa6f004921c944d4b8bf6e38462b00f36a58d62495d56b51f571ab78f732c9815600080a13880612a1b565b600f80546001600160a01b0319166001600160a01b039092169190911790557f0b2d6eb667d0522c3eb86e4288afecae6c11591ffd1345d4d12407e0598bca9b600080a138612a14565b610140806003193601126105b05760043590612c8a8261059f565b60643590612c978261079f565b6001600160401b03926084358481116105b057612cb8903690600401610e88565b9360a4359081116105b057612cd1903690600401610e96565b9360803660c31901126105b05761001994612d34612d4692610cc89560405197889663d49dffa760e01b602089015260018060a01b03166024880152602435604488015260443560648801521515608487015260a48601526101648501906159c8565b8381036023190160c485015290615a0c565b61076760e48301615aac565b346105b057612d6036610a90565b9592809594959291924211610bab5761001996612dfb93610b9393610b86878a610b7e8b610767610b8b99612d9486614168565b60405195869460208601988991959493909260c09360e08401977f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e26685526000602086015260018060a01b038092166040860152166060840152608083015260a08201520152565b6141e3565b346105b05760003660031901126105b057600b546040516001600160a01b039091168152602090f35b346105b0576020610640612e3c366105c2565b6001600160a01b0391821660009081526002855260408082209290931681526020919091522090565b346105b05760003660031901126105b0576009546040516001600160a01b039091168152602090f35b346105b05760003660031901126105b0576020601d54604051908152f35b346105b05760003660031901126105b0576006546040516001600160a01b039091168152602090f35b346105b05760803660031901126105b0576001600160401b036004358181116105b057612f0690369060040161224e565b906024358381116105b057612f1f90369060040161224e565b906044358581116105b057612f3890369060040161224e565b9290916064359687116105b057612f5661001997369060040161224e565b969095615bfe565b346105b05760a03660031901126105b057610019600435612f7e8161059f565b60243590612f8b8261059f565b60443590612f988261079f565b604051926374d2492960e11b602085015260018060a01b03809216602485015216604483015215156064820152606435608482015260843560a482015260a481526128f581611c97565b346105b05760003660031901126105b0576020601f54604051908152f35b346105b05760003660031901126105b0576020600c54604051908152f35b346105b05760003660031901126105b0576020602a54604051908152f35b346105b057602061307f61108561305236610cec565b9060086000959395526007865261307160ff6040600020541615614fce565b6130796147f3565b846156fb565b809261500b565b346105b05760003660031901126105b0576034546040516001600160a01b039091168152602090f35b346105b05760003660031901126105b0576100196147f3565b346105b05760003660031901126105b057602454604080516001600160801b038316815260809290921c602083015290f35b346105b05760003660031901126105b0576020602954604051908152f35b1561311f57565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b601f811161316f575050565b6000906010825260208220906020601f850160051c830194106131ad575b601f0160051c01915b8281106131a257505050565b818155600101613196565b909250829061318d565b91906001600160401b038111611c49576131db816131d6601054611bde565b613163565b6000601f82116001146132155781929360009261320a575b50508160011b916000199060031b1c191617601055565b0135905038806131f3565b6010600052601f198216937f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae67291805b86811061327c5750836001959610613262575b505050811b01601055565b0135600019600384901b60f8161c19169055388080613257565b90926020600181928686013581550194019101613244565b1561329b57565b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881b9bdd081d985b1a59607a1b6044820152606490fd5b156132db57565b60405162461bcd60e51b815260206004820152602560248201527f4d61726b65743a20636f6c6c61746572616c697a6174696f6e5261746520746f6044820152646f2062696760d81b6064820152608490fd5b1561333557565b60405162461bcd60e51b815260206004820152603260248201527f4d61726b65743a206c69717569646174696f6e436f6c6c61746572616c697a616044820152711d1a5bdb94985d19481d1bdbc81cdb585b1b60721b6064820152608490fd5b1561339c57565b60405162461bcd60e51b81526020600482015260126024820152714d61726b65743a2073616d6520737461746560701b6044820152606490fd5b634e487b7160e01b600052601160045260246000fd5b90620186a09182810292818404149015171561340457565b6133d6565b90670de0b6b3a76400009182810292818404149015171561340457565b8181029291811591840414171561340457565b634e487b7160e01b600052601260045260246000fd5b8115613459570490565b613439565b604d811161340457600a0a90565b90670de0b6b3a764000091820391821161340457565b9190820391821161340457565b9190820180921161340457565b8181039291600013801582851316918412161761340457565b906509184e72a0009182810292818405149015171561340457565b90670de0b6b3a76400009182810292818405149015171561340457565b818102929160008212600160ff1b82141661340457818405149015171561340457565b811561345957600160ff1b8114600019831416613404570590565b600160ff1b81146134045760000390565b60145491929190613557906001600160801b03831690613426565b9060801c9081156134595761358491613575910493601f5490613426565b61357e8361345e565b9061344f565b90818310613618576135e96135e36135de6135a26135ee9587613482565b936135d96135d36135ca601e546135c46135bb8661345e565b6020549061348f565b90613426565b61357e8461345e565b9161345e565b61349c565b6134b5565b916134d0565b613510565b6000811215613612576136009061352b565b905b80821161360d575090565b905090565b90613602565b505050600090565b6001600160a01b0381166000908152601760205260408120549193929091801561379a576136ce9061365061425c565b5061365961430b565b505050505094905061366c8415156139e1565b600954602090613684906001600160a01b0316610829565b600c546001600160a01b038a1660009081526018602052604080822054905163442c159960e01b815260048101939093526024830152604482015294859190829081906064820190565b03915afa928315611703576137719561357e61263d602061373561371e8a61371961371061376b9c6137449a8c9161377d575b50602154620186a090046135c4565b601e5490613426565b61344f565b85519098906135c4906001600160801b031661263d565b9301516001600160801b031690565b908282106137755750035b6001600160a01b03909516600090815260186020526040902090565b54613a3c565b9091565b91505061374f565b6137949150873d811161258a5761257b8183611cb2565b38613701565b505080919250918190565b91908260409103126105b057602082516137be8161079f565b92015190565b6020808252600091601054916137d983611bde565b928382840152600190818116908160001461383c57506001146137fe575b5050505090565b929350601060005280600020926000935b85851061382857505050604092500101388080806137f7565b80548585016040015293820193810161380f565b925050506040935060ff929192191683830152151560051b0101388080806137f7565b6040513d6000823e3d90fd5b1561387257565b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881c985d19481d1bdbc81bdb1960621b6044820152606490fd5b156138b557565b60405162461bcd60e51b81526020600482015260146024820152734d61726b65743a20696e76616c6964207261746560601b6044820152606490fd5b600f54613906906001600160a01b0316610829565b6040805163d6d7d52560e01b81529291839081600081613928600482016137c4565b03925af180156117035760009283916139ad575b509082156139885761394f8215156138ae565b61395882601155565b817f9f9192b5edb17356c524e08d9e025c8e2f6307e6ea52fb7968faa3081f51c3c8600080a25b6105c042601355565b90506139a461399c6013546012549061348f565b42111561386b565b6011549061397f565b90506139d191925060403d81116139da575b6139c98183611cb2565b8101906137a5565b9190913861393c565b503d6139bf565b156139e857565b60405162461bcd60e51b815260206004820152601e60248201527f4d61726b65743a2065786368616e676552617465206e6f742076616c696400006044820152606490fd5b908160209103126105b0575190565b613a916020831592613a4e84156139e1565b600954600c5460405163442c159960e01b81526004810191909152602481019290925260006044830152909283916001600160a01b031690829081906064820190565b03915afa801561170357613ab191600091613acb575b5060215490613426565b906134595704620186a0613ac7601e5483613426565b0491565b613ae3915060203d811161258a5761257b8183611cb2565b38613aa7565b9190916000838201938412911290801582169115161761340457565b90613b29613b479161376b8460018060a01b03166000526018602052604060002090565b6001600160a01b039093166000908152601760205260409020909291565b548015613618578215613618578281106136185781811015613bd05782613b90613b8b613b9695610de461357e956128556014549160018060801b03831690613426565b6133ec565b92613482565b613bc4601b5491613bbf613bb6601c5492613bb1848761349c565b6134ed565b620186a0900590565b613ae9565b9080821261360d575090565b505050601b5490565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03161480613cca575b15613c34577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f000000000000000000000000000000000000000000000000000000000000000082527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a08152613cc481611c7c565b51902090565b507f00000000000000000000000000000000000000000000000000000000000000004614613c0b565b15613cfa57565b60405162461bcd60e51b815260206004820152601660248201527545524332303a2062616c616e636520746f6f206c6f7760501b6044820152606490fd5b15613d3f57565b60405162461bcd60e51b815260206004820152601660248201527545524332303a206e6f207a65726f206164647265737360501b6044820152606490fd5b15613d8457565b60405162461bcd60e51b815260206004820152601860248201527745524332303a20616c6c6f77616e636520746f6f206c6f7760401b6044820152606490fd5b6101009081818051810103126105b0576020810151613de28161079f565b604082015192613df18461059f565b606083015194613e008661059f565b60808401519460a085015160c086015193613e1a85610a85565b60e08701519601516001600160a01b0392831698831696428310610bab57613edc95613ed08a8c610b7e8199610767613ed5998f8f600014613ef3577f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e266965b613e8287614168565b60408051602081019a8b5261ffff909716908701526001600160a01b03978816606087015296909116608085015260a084015260c083019490945260e0820193909352918290610100820190565b613f66565b1614613f1a565b15613eea576105c0926141e3565b6105c092614190565b7f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d696613e79565b15613f2157565b60405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152606490fd5b916105e79391610b8b9361409a565b60051115611b8157565b613f8881613f75565b80613f905750565b613f9981613f75565b60018103613fe15760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b6044820152606490fd5b613fea81613f75565b600281036140375760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606490fd5b80614043600392613f75565b1461404a57565b60405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608490fd5b9291906fa2a8918ca85bafe22016d0b997e4df60600160ff1b0383116141065791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa156117035781516001600160a01b03811615614100579190565b50600190565b50505050600090600390565b61411a613bd9565b9060405190602082019261190160f01b84526022830152604282015260428152608081018181106001600160401b03821117611c495760405251902090565b60001981146134045760010190565b6001600160a01b0316600090815260046020526040902080549061418b82614159565b905590565b6001600160a01b03908116600081815260036020908152604080832095909416808352949052918220849055907fe50de2333c10a9502fcb1d8ae13a51bbf423153dfc63c2b8997665b32154afc39080a4565b6001600160a01b0390811660008181526002602090815260408083208686168452825290912091937f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259391928690556040519586521693a3565b6040519061424a82611c2e565b60006040838281528260208201520152565b6040519061426982611c4e565b60006020838281520152565b6040519061428282611c2e565b8160406023546001600160401b03808216845281831c16602084015260801c910152565b604051906142b382611c4e565b6014546001600160801b038116835260801c6020830152565b604051906142d982611c4e565b6024546001600160801b038116835260801c6020830152565b6001600160801b03918216908216019190821161340457565b61431361423d565b5061431c61425c565b5061432561425c565b5061432e614275565b906143376142a6565b906143406142cc565b906143a560008061435b61082960095460018060a01b031690565b600e54865160405163442c159960e01b808252600482018490526001600160801b039092166024820152600060448201529296602096919590939092918790829081906064820190565b03818b5afa8015611703576143d69184916147af575b508a516143d0906001600160801b031661263d565b9061348f565b8061478c575081945b8a61440c6144066143fa8a8a9401516001600160401b031690565b6001600160401b031690565b42613482565b96871561476457506001600160401b03428116898e01528b8901516001600160801b039995919491939192908a161561470657508b518d518692918a91614467916001600160401b03909116906001600160801b0316613426565b9061447191613426565b8d51670de0b6b3a76400009091049b908e90614499908d8f16906001600160801b03166142f2565b6001600160801b039081169091528d5160405193845260048401959095529390931660248201526000604482015291829060649082905afa8015611703578461455161452d8f978f613719908f9261263d6135c4916137356145186145739b6145249d8f916146e9575b5086516143d0906001600160801b031661263d565b9b8c97601a5490613426565b620186a0900490565b9a8b169161455e604089016145518561454c835160018060801b031690565b6142f2565b6001600160801b03169052565b8d0180519092906001600160801b03166142f2565b806146c65750945b602954868181101561461f57936137196145df936145c66143fa6145d16145cb6145b8886137196145b36145ec9d9e6143fa9c613482565b613409565b946145c6602d549680613426565b613426565b8461348f565b94516001600160401b031690565b6001600160401b03168a52565b88516001600160401b0316602c546001600160401b031691808316911610614612575b50565b6001600160401b03168852565b919050602a54808311614634575b5050505050565b6146b4946145c66143fa61467761467161466361465a6145b3613719986146859b613482565b602b549061344f565b966145c6602d549880613426565b8661348f565b92516001600160401b031690565b602c5461469d9060401c6001600160401b03166143fa565b8082116146be575b50166001600160401b03168952565b873880808061462d565b9050386146a5565b8a516146e39250613719906145b3906001600160801b031661263d565b9461457b565b6147009150843d861161258a5761257b8183611cb2565b38614503565b985050509650929798935050945061472582516001600160401b031690565b602e546001600160401b03169180831691160361474f575b5094936147486142cc565b9383929190565b6001600160401b03168152600194503861473d565b9a5050505095509693505050509261477a6142a6565b926147836142cc565b92809281929190565b89516147a99190613719906145b3906001600160801b031661263d565b946143df565b6147c69150883d8a1161258a5761257b8183611cb2565b386143bb565b805160209091015160801b6001600160801b0319166001600160801b039190911617602455565b6105c06148bf6148e661480461430b565b9397949593909290156148eb575050506001600160401b03602e54166000807f33af5ce86e8438eff54589f85332916444457dfa8685493fbd579b809097026b6020604051838152a45b6148786001600160401b038251166001600160401b03166001600160401b03196023541617602355565b6020810151602380546040938401516001600160401b039091169290931b67ffffffffffffffff60401b169190911760809290921b6001600160801b031916919091179055565b805160209091015160801b6001600160801b0319166001600160801b039190911617601455565b6147cc565b7f33af5ce86e8438eff54589f85332916444457dfa8685493fbd579b809097026b60206001600160401b0386511694604051908152a461484e565b906149396020928281519485920161067d565b0190565b3d15614968573d9061494e82611edb565b9161495c6040519384611cb2565b82523d6000602084013e565b606090565b6040519061497a82611c4e565b60038252623f3f3f60e81b6020830152565b634e487b7160e01b600052603260045260246000fd5b9081518110156149b3570160200190565b61498c565b60ff1660ff81146134045760010190565b906149d382611edb565b6149e06040519182611cb2565b82815280926149f1601f1991611edb565b0190602036910137565b6020818303126105b0578051906001600160401b0382116105b0570181601f820112156105b0578051614a2d81611edb565b92614a3b6040519485611cb2565b818452602082840101116105b0576105e7916020808501910161067d565b805160408110614a775750806020806105e7935183010191016149fb565b602092908303614b4c576000805b60ff81168581109081614b2a575b5015614aa757614aa2906149b8565b614a85565b92614ab560ff8095166149c9565b92825b85811687811080614b0b575b15614b00579081614af5614aec614ade614afb95886149a2565b516001600160f81b03191690565b871a91886149a2565b536149b8565b614ab8565b505094505050905090565b506001600160f81b0319614b22614ade83876149a2565b161515614ac4565b6001600160f81b03199150614b4390614ade90876149a2565b16151538614a93565b9150506105e761496d565b90816101a09103126105b0578035614b6e8161059f565b916020820135614b7d8161059f565b916040810135614b8c8161059f565b91614b99606083016105b5565b91614ba6608082016105b5565b91614bb360a083016105b5565b9160c081013591614bc660e083016105b5565b9161010081013591614bdb61012083016105b5565b916101408101359161018061016083013592013590565b908160209103126105b057516105e78161059f565b15614c0e57565b60405162461bcd60e51b815260206004820152600d60248201526c29a3a61d103130b2103830b4b960991b6044820152606490fd5b15614c4a57565b60405162461bcd60e51b815260206004820152602f60248201527f53474c3a206c69717569646174696f6e436f6c6c61746572616c697a6174696f60448201526e1b94985d19481b9bdd081d985b1a59608a1b6064820152608490fd5b614cc263097343e06001600160401b0319602c541617602c55565b602c805467ffffffffffffffff60401b19166324ea412360491b179055614cf97054a2b63d65d79d094abb66880000000000602d55565b614d2a614d0e602c546001600160401b031690565b6001600160401b03166001600160401b0319602e541617602e55565b614d5b614d3f602e546001600160401b031690565b6001600160401b03166001600160401b03196023541617602355565b614d636138f1565b5050614d706103e8601955565b614d7a6000601a55565b614d846032602f55565b614d8f612ee0602055565b8015614e4557601e555b8015614e3857601f555b614db2601f54601e5410614c43565b614dbd6161a8602855565b8015614e26576021555b614dd362013880601b55565b614ddf62015f90601c55565b614dea612710601d55565b614dfb670429d069189e0000602955565b614e0c6706f05b59d3b20000602a55565b614e1a61138a602a5461346c565b6105c062015180601255565b50614dc7670de0b6b3a7640000602155565b50614da362013880612a72565b50614d99620124f8612a98565b6001600160401b038111611c495760051b60200190565b90614e7382614e52565b614e806040519182611cb2565b82815280926149f1601f1991614e52565b90614e9b82614e52565b614ea86040519182611cb2565b8281528092614eb9601f1991614e52565b019060005b828110614eca57505050565b806060602080938501015201614ebe565b91908110156149b35760051b81013590601e19813603018212156105b05701908135916001600160401b0383116105b05760200182360381136105b0579190565b908092918237016000815290565b80518210156149b35760209160051b010190565b6103e8815111614f9a576044815110614f67578060248060046105e794015183010191016149fb565b50604051614f7481611c4e565b60168152754d61726b65743a206e6f2072657475726e206461746160501b602082015290565b50604051614fa781611c4e565b60178152764d61726b65743a20726561736f6e20746f6f206c6f6e6760481b602082015290565b15614fd557565b60405162461bcd60e51b815260206004820152600e60248201526d13585c9ad95d0e881c185d5cd95960921b6044820152606490fd5b6001600160a01b03811633810361502157505050565b60009081526002602090815260408083203384529091529020829054106150a5576001600160a01b038116600090815260026020526040902060001990615069903390610e40565b5403615073575050565b6001600160a01b031660009081526002602052604090206150a190615099903390610e40565b918254613482565b9055565b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881b9bdd08185c1c1c9bdd995960621b6044820152606490fd5b93929190936150ee6142cc565b80516009546001600160801b039791881694929061515a9060209061511b906001600160a01b0316610829565b600e54601454604051638eb22cdd60e01b815260048101929092526001600160801b031660248201526001604482015292839190829081906064820190565b03915afa80156117035761517791600091615304575b508661348f565b806152d557506103e886985b602083015161519e90828c16906001600160801b03166142f2565b16106152c95761523561520e959493926151bf6148e68b8a61524696615322565b6151c8816105ea565b6151d38b825461348f565b90556040518a81526001600160a01b0382811698909761521b9287928b91600091600080516020615e17833981519152919081906020820190565b0390a38a600e54896153c8565b6001600160a01b0316600090815260256020526040902090565b602654600052602052604060002090565b61525186825461348f565b9055156152a157506009547f30a8c4f9ab5af7e1309ca87c32377d1a83366c5990472dbf9d262450eae14e3890615290906001600160a01b0316610829565b915b604051878152921691602090a4565b7f30a8c4f9ab5af7e1309ca87c32377d1a83366c5990472dbf9d262450eae14e389091615292565b50600096505050505050565b60208201516103e8916152fe91613719906152f8906001600160801b031661263d565b8a613426565b98615183565b61531c915060203d811161258a5761257b8183611cb2565b38615170565b91906153469061533061425c565b5060018060801b039182809216828651166142f2565b16835261535c81602085019316828451166142f2565b16905290565b6001600160a01b039182168152911660208201526040810191909152606081019190915260800190565b1561539357565b60405162461bcd60e51b815260206004820152600d60248201526c0a68e987440e8dede40daeac6d609b1b6044820152606490fd5b90919293600014615460575060095461541a916020916153f0906001600160a01b0316610829565b604051627eeac760e11b815230600482015260248101929092529092839190829081906044820190565b03915afa928315611703576105c09361543b92600091615442575b50613482565b101561538c565b61545a915060203d811161258a5761257b8183611cb2565b38615435565b600954919350919061547a906001600160a01b0316610829565b803b156105b0576154a8936000809460405196879586948593630208d92960e11b8552309060048601615362565b03925af18015611703576154b95750565b806154c66105c092611c69565b80610649565b6001600160801b03918216908216039190821161340457565b156154ec57565b60405162461bcd60e51b815260206004820152600e60248201526d14d1d30e881b5a5b881b1a5b5a5d60921b6044820152606490fd5b6024549093926001600160801b039160801c156156f2576155416142cc565b80519095906001600160801b031660095461556b9060209061511b906001600160a01b0316610829565b03915afa9182156117035785916000936156d2575b50169061558c9161348f565b6155969083613426565b6020870180519092916155b2916001600160801b03169061344f565b9687946155be836105ea565b858154906155cb91613482565b90556040518581526001600160a01b0393841694906000908690600080516020615e1783398151915290602090a3825161561190838916906001600160801b03166154cc565b6001600160801b031683528051868316906001600160801b031690615635916154cc565b6001600160801b03168152516001600160801b0316166103e81115615659906154e5565b615662906147cc565b6040519283528416917f6e853a5fd6b51d773691f542ebac8513c9992a51380d4c342031056a6411422890602090a4600954600e546001600160a01b0390911691823b156105b0576154a89260009283879360405196879586948593630208d92960e11b85523060048601615362565b6156eb91935060203d811161258a5761257b8183611cb2565b9138615580565b50600093505050565b6024546001600160801b0394939192919060801c156156f25761571c6142cc565b80519091906001600160801b03166009546157469060209061511b906001600160a01b0316610829565b03915afa918215611703578891600093615956575b5016906157679161348f565b6157719082613426565b602083018051909161578c916001600160801b03169061344f565b968793615798876105ea565b848154906157a591613482565b90556040518481526001600160a01b03888116949093916000908690600080516020615e1783398151915290602090a382516157ed90838916906001600160801b03166154cc565b6001600160801b031683528051868316906001600160801b031690615811916154cc565b6001600160801b03168152516001600160801b0316166103e81115615835906154e5565b61583e906147cc565b6040519283528416917f6e853a5fd6b51d773691f542ebac8513c9992a51380d4c342031056a6411422890602090a4600954600e546001600160a01b0390911691823b156105b0576158ae9260009283889360405196879586948593630208d92960e11b85523060048601615362565b03925af1801561170357615943575b506001600160a01b03811660009081526025602052604090206158ed602654809290600052602052604060002090565b5484111561591957506001600160a01b0316600090815260256020526040812061591690615235565b55565b6125456159389260018060a01b03166000526025602052604060002090565b6150a1838254613482565b806154c661595092611c69565b386158bd565b61596f91935060203d811161258a5761257b8183611cb2565b913861575b565b908060209392818452848401376000828201840152601f01601f1916010190565b9035601e19823603018112156105b05701602081359101916001600160401b0382116105b05781360383136105b057565b9060606159fc6105e79380356159dd8161059f565b6001600160a01b03168452602081810135908501526040810190615997565b9190928160408201520191615976565b908135815261ffff80615a2160208501611f07565b166020830152615a3360408401611f07565b16604082015260c06060830135615a498161059f565b6001600160a01b03908116606084015281615a99615a7e615a6d6080880188615997565b60e0608089015260e0880191615976565b615a8b60a0880188615997565b9087830360a0890152615976565b940135615aa58161059f565b1691015290565b606060c435615aba8161059f565b6001600160a01b0390811683528060e435615ad48161059f565b1660208401528061010435615ae88161059f565b16604084015261012435615afb8161059f565b16910152565b60609081813591615b118361059f565b6001600160a01b039283168552826020820135615b2d8161059f565b166020860152826040820135615b428161059f565b1660408601520135615afb8161059f565b91908082526020809201929160005b828110615b70575050505090565b9091929382806001928735615b848161059f565b848060a01b03168152019501910192919092615b62565b9082818152602080910193818360051b82010194846000925b858410615bc5575050505050505090565b909192939495968580615bed600193601f19868203018852615be78c88615997565b90615976565b990194019401929594939190615bb4565b9295969094969391936040519660209663e5644d8b60e01b888a01528060a48a01608060248c01525260c48901959060005b89828210615c9a575050505087850360231990810160448a0152818652936001600160fb1b0382116105b05761460f99612170988a9861076798615c8b9560051b809284830137018981036003190160648b01520191615b53565b92858403016084860152615b9b565b808499600193949535615cac8161059f565b848060a01b031681520198019101919091615c30565b15615cc957565b60405162461bcd60e51b815260206004820152600e60248201526d14d1d30e881b9bdd081d985b1a5960921b6044820152606490fd5b6034546001600160a01b03168015615d5d57816000929160208493519201905af490615d2961493d565b9115615d3157565b61243d615d3d83614f3e565b60405162461bcd60e51b81526020600482015291829160248301906106a0565b60405162461bcd60e51b815260206004820152601360248201527214d1d30e881b5bd91d5b19481b9bdd081cd95d606a1b6044820152606490fd5b6032546001600160a01b03168015615d5d57816000929160208493519201905af490615d2961493d565b6031546001600160a01b03168015615d5d57816000929160208493519201905af490615d2961493d565b6033546001600160a01b03168015615d5d57816000929160208493519201905af490615d2961493d56feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa264697066735822122077698ebb59f5f6b77a36cbe725e491ec2f146c875c00adc902384190cefc304864736f6c63430008120033"; + "0x6101408060405234620001ea576200001781620001ef565b601381526001602082017f546170696f63612053696e67756c617269747900000000000000000000000000815260206040516200005481620001ef565b8381520192603160f81b845251902091208160e052610100918183524660a0526040519160208301907f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f92838352604085015260608401524660808401523060a084015260a0835260c083019280841060018060401b03851117620001d45760408490525190206080523060c052610120908152600580546001600160a01b0319163390811790915560007f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a362013880601b5562015f90601c55612710601d55612ee06020557f0bd4060688a1800ae986e4840aebc924bb40b5bf44de4583df2257220b54b77c6027557f7d1dc38e60930664f8cbf495da6556ca091d2f92d6550877750c049864b182306028556161a860295560326030556001603155615f1d92836200020c843960805183613cc3015260a05183613d7e015260c05183613c8d015260e05183613d1201525182613d3801525181613cef0152f35b634e487b7160e01b600052604160045260246000fd5b600080fd5b604081019081106001600160401b03821117620001d45760405256fe6080604052600436101561001b575b361561001957600080fd5b005b60003560e01c8062a02a20146105ba57806302ce728f146105b557806306fdde03146105b0578063078dfbe7146105ab578063095ea7b3146105a65780630c4e84f0146105a157806318160ddd1461059c5780631c9e379b146105975780631da8bf101461059257806323b872dd1461058d57806325384fd8146105885780632a9399d914610583578063313ce5671461057e578063331960ff1461057957806334d441d0146105745780633644e5151461056f57806337b6b7b91461056a57806338225f111461056557806338d52e0f146105605780633ba0b9a91461055b5780633f741adb1461055657806340626d8b1461055157806344de240a1461054c578063473e3ce71461054757806348e4163e146105425780634d7f2a341461053d5780634ddf47d4146105385780634e71e0c8146105335780635224372c1461052e578063529898f21461052957806352f353eb14610524578063551402321461051f57806355c2ab941461051a57806357935462146105155780635d5f73ef146105105780635dfe04e81461050b5780636587adb8146105065780636c3d8b8f1461050157806370a08231146104fc57806372778547146104f757806374645ff3146104f25780637dc0d1d0146104ed5780637ecebe00146104e85780637fa0b84e146104e3578063821226e8146104de5780638285ef40146104d95780638c5d0ed3146104d45780638da5cb5b146104cf578063910dd7c8146104ca578063959916dc146104c557806395d89b41146104c057806399a97028146104bb5780639c5d7192146104b65780639e15e89f146104b1578063a28e6b82146104ac578063a9059cbb146104a7578063aa7d9665146104a2578063ae70702e1461049d578063af405b4c14610498578063b0e21e8a14610493578063b25ea8fb1461048e578063b27c0e7414610489578063bb4cfe3b14610484578063bf0b89581461047f578063c861a5261461047a578063cce19f8114610475578063cd0211eb14610470578063ce8849ed1461046b578063d3fb2a3814610466578063d49dffa714610461578063d4e4534e1461045c578063d505accf14610457578063d8dfeb4514610452578063da863f0e1461044d578063dd62ed3e14610448578063de40657714610443578063e0996cb61461043e578063e30c397814610439578063e5644d8b14610434578063e7d6de801461042f578063e9a492521461042a578063ea64dd5614610425578063eec0f42e14610420578063ef2b234a1461041b578063f42760b714610416578063f4d9375314610411578063f5b33dfa1461040c578063f8ba4cff14610407578063f9557ccb146104025763ffe04c660361000e576131ab565b613179565b613160565b613137565b6130ed565b6130cf565b613059565b61303b565b61301d565b612f99565b612f11565b612e88565b612e5f565b612e41565b612e18565b612ddc565b612db3565b612d8a565b612cdc565b612c3d565b612b5a565b612875565b61284c565b6127e5565b612791565b612768565b612691565b612673565b612638565b6125ab565b61258d565b612487565b612366565b6121f5565b612050565b611fa6565b611f68565b611f4a565b611f1f565b611e8a565b611e6c565b611df1565b611d8d565b611d6f565b611d3d565b611d1f565b611cf5565b611cb8565b611c8f565b611bae565b611a7a565b6119ff565b6119d6565b61198d565b6118f5565b6118cc565b6118ae565b611884565b61185d565b611836565b611819565b6117a0565b6116c1565b611442565b6113f7565b6113ba565b61139c565b61137e565b611360565b61133c565b61131e565b6112f5565b611000565b610fb6565b610f93565b610f75565b610f57565b610eb6565b610dd9565b610d83565b610c3c565b610af5565b610a68565b610a47565b610950565b61090c565b6107c9565b6106f6565b610674565b610624565b6001600160a01b038116036105d057565b600080fd5b35906105e0826105bf565b565b60409060031901126105d0576004356105fa816105bf565b90602435610607816105bf565b90565b6001600160a01b0316600090815260016020526040902090565b346105d0576020610660610637366105e2565b6001600160a01b0391821660009081526003855260408082209290931681526020919091522090565b54604051908152f35b60009103126105d057565b346105d05760003660031901126105d057604061068f6139a2565b825191151582526020820152f35b60005b8381106106b05750506000910152565b81810151838201526020016106a0565b906020916106d98151809281855285808601910161069d565b601f01601f1916010190565b9060206106079281815201906106c0565b346105d0576000806003193601126107bc57808060018060a01b03600b541660405160208101906306fdde0360e01b82526004815261073481611b29565b51915afa6107406149ee565b9150156107a5576107876107956107596107a193614b0a565b60405173546170696f63612053696e67756c61726974792d60601b6020820152928391603483015b906149d7565b03601f198101835282611b8d565b604051918291826106e5565b0390f35b506107a16107876107956107b7614a1e565b610759565b80fd5b801515036105d057565b346105d05760603660031901126105d0576004356107e6816105bf565b602435906107f3826107bf565b60443591610800836107bf565b6005546001600160a01b03919061081a90831633146131c9565b156108f3578116918215908115916108eb575b50156108ae5760055461089c9290610855906001600160a01b03165b6001600160a01b031690565b7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b600680546001600160a01b0319169055005b60405162461bcd60e51b81526020600482015260156024820152744f776e61626c653a207a65726f206164647265737360581b6044820152606490fd5b90503861082d565b60068054919092166001600160a01b0319909116179055005b346105d05760403660031901126105d05761093660043561092c816105bf565b6024359033614294565b602060405160018152f35b6004359060098210156105d057565b346105d05760403660031901126105d057610969610941565b602435610975816107bf565b6008546001600160a01b03163303610a0b576109fa826109a96109a461099d61001996611a61565b5460ff1690565b151590565b6109b884151591821415613446565b6109c461099d83611a61565b6109cd83611a52565b1515827feeec81de25875ce1725479bb76f720a8defdb43dea041919ae37bb4aae9847c0600080a4611a61565b9060ff801983541691151516179055565b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881d5b985d5d1a1bdc9a5e995960621b6044820152606490fd5b346105d05760003660031901126105d057602060255460801c604051908152f35b346105d05760203660031901126105d057600435610a85816105bf565b60018060a01b031660005260186020526020604060002054604051908152f35b60ff8116036105d057565b60e09060031901126105d057600435610ac8816105bf565b90602435610ad5816105bf565b906044359060643590608435610aea81610aa5565b9060a4359060c43590565b346105d057610b0336610ab0565b9592809594959291924211610bcb5761001996610bc693610bb393610ba6878a610b9e8b610787610bab99610b3786614219565b60405195869460208601988991959493909260c09360e08401977f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d685526000602086015260018060a01b038092166040860152166060840152608083015260a08201520152565b5190206141c3565b61414b565b919091614030565b6001600160a01b03838116911614613fcb565b614241565b60405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606490fd5b60609060031901126105d057600435610c28816105bf565b90602435610c35816105bf565b9060443590565b346105d057610c84600080516020615ec8833981519152610c5c36610c10565b9291939083610c93575b6040519384526001600160a01b039081169416929081906020820190565b0390a360405160018152602090f35b610c9c8561060a565b54610ca985821015613da4565b6001600160a01b038281169186918816839003610cc9575b505050610c66565b6001600160a01b03881660009081526002602090815260408083203384529091529020610d0d93610d0891548460018201610d35575b50501515613de9565b613533565b610d168661060a565b55610d208161060a565b610d2b858254613540565b9055388481610cc1565b81610d0882610d45941015613e2e565b6001600160a01b038b166000908152600260205260409020610d7b9033905b9060018060a01b0316600052602052604060002090565b553884610cff565b346105d05760003660031901126105d0576033546040516001600160a01b039091168152602090f35b908160609103126105d05790565b908160e09103126105d05790565b60809060a31901126105d05760a490565b610120806003193601126105d057600435610df3816105bf565b60443590610e00826107bf565b6001600160401b03906064358281116105d057610e21903690600401610dac565b936084359283116105d057610787610ea661001996610e94610e4a610eb1973690600401610dba565b91610e5436610dc8565b95604051998a98632a9399d960e01b60208b015260018060a01b031660248a015260243560448a0152151560648901526084880152610144870190615a7f565b8581036023190160a487015290615ac3565b9160c4840190615bb8565b615db0565b346105d0576000806003193601126107bc57808060018060a01b03600d5416604051602081019063313ce56760e01b825260048152610ef481611b29565b51915afa90610f016149ee565b9180610f4c575b15610f40576020828051810103126107bc575060206107a1910151610f2c81610aa5565b60405160ff90911681529081906020820190565b50506107a16012610f2c565b506020825114610f08565b346105d05760003660031901126105d0576020601354604051908152f35b346105d05760003660031901126105d0576020601954604051908152f35b346105d05760003660031901126105d0576020610fae613c8a565b604051908152f35b346105d05760003660031901126105d0576020601254604051908152f35b60a435906001600160401b03821682036105d057565b60c435906001600160401b03821682036105d057565b346105d0576101003660031901126105d057600435606435604435602435608435611029610fd4565b611031610fea565b60e4359261104a60018060a01b036005541633146131c9565b620186a09661105b888a1115613345565b61108f603054998060009b7fc353b09af857951dccce61b43a5854fc45beceed36c50e5d4cc2e71858a8e0df8d80a3603055565b806112be575b5080611261575b506001600160401b03918281169081611201575b505081811680611190575b50505080611159575b5080611116575b50806110d5578280f35b6110e3611110928210615d73565b806020547f1f1d0e9e5e3fd195010504141e7472fc7f53e44d7cd3f236f0892778039c63268580a3602055565b38808280f35b8061112684611153931115615d73565b806029547f1a98b2490874ba87102ae05e5b66fbe02edfcfb7e8b4e2d60f9aef620de5e3378780a3602955565b386110cb565b8061118a91602e547f6bdc0e1a8f6a69c7dcb57e254165094714bb2a8730e2fedd8c6e9b71e67478b58880a3602e55565b386110c4565b6111f992602d546111a48282168411615d73565b60401c167fb02a4833a4686ad41ec77a1e91a97a505459a34966985bf11c59b1e01852e4a68980a3602d805467ffffffffffffffff60401b191660409290921b67ffffffffffffffff60401b16919091179055565b3880806110bb565b61125a9184602d54611219828260401c168410615d73565b167f6d780269adaf7a0d9858a89a8c090b0b3add5f7088ccac6f619ff2b22987e7d58b80a36001600160401b03166001600160401b0319602d541617602d55565b38806110b0565b80611278670de0b6b3a76400006112a59310615d73565b80602b547f4d5fa9a75b98ca1386ef794acdb2601c953e99a9c7a94ed351a46e06dc1bab288b80a3602b55565b6112b86112b3602b5461351d565b602c55565b3861109c565b806112ef91602a547fa55fca071799e1b20f7cdcdf447fcc08c886bdd0cb741bf8862a311921bbb3888c80a3602a55565b38611095565b346105d05760003660031901126105d057600d546040516001600160a01b039091168152602090f35b346105d05760003660031901126105d0576020601154604051908152f35b346105d05760603660031901126105d0576020610fae6044356024356004356135ed565b346105d05760003660031901126105d0576020601654604051908152f35b346105d05760003660031901126105d0576020600e54604051908152f35b346105d05760003660031901126105d0576020601554604051908152f35b346105d05760203660031901126105d0576004356113d7816105bf565b60018060a01b031660005260176020526020604060002054604051908152f35b346105d05760003660031901126105d0576020602954604051908152f35b9181601f840112156105d0578235916001600160401b0383116105d057602083818601950101116105d057565b346105d05760203660031901126105d0576004356001600160401b0381116105d057611472903690600401611415565b60ff60235416611686578161148b916020930190614c08565b600a80546001600160a01b0319166001600160a01b038c16179055929c909b919a929993989497959695946040519e8f63de40657760e01b815260048160018060a01b038095165afa9e8f15611681576116279f826115e59761159c6116229f8f90848f61158582999361152884809b8197600091611653575b5060098054919092166001600160a01b03166001600160a01b0319909116179055565b600a5461156390611541906001600160a01b0316610849565b600580546001600160a01b0319166001600160a01b0392909216919091179055565b602180546001600160a01b0319166001600160a01b0392909216919091179055565b1615159182611647575b82611639575b5050614cbe565b1695169316911692909160018060a01b03928380928160018060a01b03199716876032541617603255168560345416176034551683603354161760335516906035541617603555565b9391929060018060a01b0380948160018060a01b0319971687600d541617600d551685600b541617600b55600e55600c551690600f541617600f55565b614d5e565b610019600160ff196023541617602355565b9091501615158f8490611595565b8d82161515925061158f565b611674915060203d811161167a575b61166c8183611b8d565b810190614ca9565b38611505565b503d611662565b613910565b60405162461bcd60e51b815260206004820152601360248201527213585c9ad95d0e881a5b9a5d1a585b1a5e9959606a1b6044820152606490fd5b346105d0576000806003193601126107bc576006546001600160a01b03163381900361175c5760055461174991908190611703906001600160a01b0316610849565b7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08580a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b600680546001600160a01b031916905580f35b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b346105d0576117f46107876117ef6117b736610c10565b6040516314890dcb60e21b60208201526001600160a01b03938416602482015292909116604483015260648201529182906084820190565b615e49565b6040818051810103126105d05780604060208193015191015182519182526020820152f35b346105d05760003660031901126105d05760208054604051908152f35b346105d05760003660031901126105d05760206001600160401b03602f5416604051908152f35b346105d05760003660031901126105d05760206001600160401b03602d5416604051908152f35b346105d05760003660031901126105d0576020602d546001600160401b036040519160401c168152f35b346105d05760003660031901126105d0576020601c54604051908152f35b346105d05760003660031901126105d0576032546040516001600160a01b039091168152602090f35b346105d05760003660031901126105d05761190e6142ee565b5060806119196143bc565b509350505050604051916001600160401b0380825116845260208201511660208401526040600180861b039101511660408301526060820152f35b60809060031901126105d05760043561196c816105bf565b90602435611979816105bf565b90604435611986816107bf565b9060643590565b346105d0576020610fae6119a036611954565b926007600093929352600786526119bf60ff6040600020541615615085565b6119c984826150c2565b6119d16148a4565b615198565b346105d05760003660031901126105d057600a546040516001600160a01b039091168152602090f35b346105d05760203660031901126105d057600435611a1c816105bf565b60018060a01b031660005260016020526020604060002054604051908152f35b634e487b7160e01b600052602160045260246000fd5b60091115611a5c57565b611a3c565b6009811015611a5c576000526007602052604060002090565b346105d05760203660031901126105d057611a93610941565b6009811015611a5c576000526007602052602060ff604060002054166040519015158152f35b90600182811c92168015611ae9575b6020831014611ad357565b634e487b7160e01b600052602260045260246000fd5b91607f1691611ac8565b634e487b7160e01b600052604160045260246000fd5b606081019081106001600160401b03821117611b2457604052565b611af3565b604081019081106001600160401b03821117611b2457604052565b6001600160401b038111611b2457604052565b60c081019081106001600160401b03821117611b2457604052565b60e081019081106001600160401b03821117611b2457604052565b90601f801991011681019081106001600160401b03821117611b2457604052565b346105d0576000806003193601126107bc5760405181601054611bd081611ab9565b80845290600190818116908115611c675750600114611c0e575b6107a184611bfa81880382611b8d565b6040519182916020835260208301906106c0565b60108352602094507f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae6725b828410611c5457505050816107a193611bfa9282010193611bea565b8054858501870152928501928101611c38565b6107a19650611bfa9450602092508593915060ff191682840152151560051b82010193611bea565b346105d05760003660031901126105d057600f546040516001600160a01b039091168152602090f35b346105d05760203660031901126105d057600435611cd5816105bf565b60018060a01b031660005260046020526020604060002054604051908152f35b346105d05760403660031901126105d057610936600435611d15816105bf565b6024359033614241565b346105d05760003660031901126105d0576020602e54604051908152f35b346105d05760003660031901126105d057601454604080516001600160801b038316815260809290921c602083015290f35b346105d05760003660031901126105d0576020601b54604051908152f35b346105d05760003660031901126105d0576005546040516001600160a01b039091168152602090f35b6001600160401b038111611b2457601f01601f191660200190565b6024359061ffff821682036105d057565b359061ffff821682036105d057565b346105d05760403660031901126105d0576004356001600160401b0381116105d057366023820112156105d0578060040135611e2c81611db6565b90611e3a6040519283611b8d565b80825236602482850101116105d057602081600092602461001996018386013783010152611e66611dd1565b90613e75565b346105d05760003660031901126105d0576020603054604051908152f35b346105d0576000806003193601126107bc57808060018060a01b03600b541660405160208101906395d89b4160e01b825260048152611ec881611b29565b51915afa611ed46149ee565b915015611f0857610787610795611eed6107a193614b0a565b60405162746d2d60e81b602082015292839160238301610781565b506107a1610787610795611f1a614a1e565b611eed565b346105d05760403660031901126105d0576020610fae600435611f41816105bf565b60243590613bb6565b346105d05760003660031901126105d0576020602c54604051908152f35b346105d05760403660031901126105d0576060611f93600435611f8a816105bf565b602435906136d1565b9060405192835260208301526040820152f35b346105d05760803660031901126105d057600435611fc3816105bf565b602435611fcf816105bf565b60443590611fdc826105bf565b606435926001600160401b0384116105d05761078761204b92612006610019963690600401611415565b60405163514735c160e11b60208201526001600160a01b03958616602482015292851660448401529390951660648201526080608482015293849260a4840191615a2d565b615e73565b346105d05760403660031901126105d05760043561206d816105bf565b6024358015801590612117575b6120ad575b6040519081526001600160a01b03909116903390600080516020615ec8833981519152908060208101610c84565b6120b63361060a565b546120c382821015613da4565b6001600160a01b038316908290338390036120e1575b50505061207f565b610d086120ef931515613de9565b6120f83361060a565b556121028261060a565b61210d828254613540565b90553881816120d9565b50336001600160a01b0383161461207a565b9181601f840112156105d0578235916001600160401b0383116105d0576020808501948460051b0101116105d057565b906040820191604081528151809352606081019260208093019060005b8181106121df57505050818184039101528251908183528083019281808460051b8301019501936000915b8483106121b15750505050505090565b90919293949584806121cf600193601f198682030187528a516106c0565b98019301930191949392906121a1565b8251151586529484019491840191600101612176565b346105d0576040806003193601126105d057600480356001600160401b0381116105d0576122269036908301612129565b9290602435612234816107bf565b60026031541461232357600260315561224c85614f20565b9361225686614f48565b95600090815b81811061227d5788886107a1896122736001603155565b5192839283612159565b828061228a83858a614f92565b906122998b5180938193614fd3565b0390305af46122a66149ee565b9080158061231c575b6122f55782916122d06122d5926122c96122f0968e614fe1565b9015159052565b614ff5565b6122df828c614fe1565b526122ea818b614fe1565b5061420a565b61225c565b888661231861230385614ff5565b925162461bcd60e51b815292839283016106e5565b0390fd5b50866122af565b825162461bcd60e51b8152602081860152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606490fd5b346105d05760403660031901126105d057600435612383816105bf565b6123e560243591600e54831460001461247c576020602754935b6009546123b2906001600160a01b0316610849565b604051627eeac760e11b81526001600160a01b038516600482015260248101929092529093849190829081906044820190565b03915afa8015611681576107a19361243693600092612446575b5061242061242f929360018060a01b03166000526026602052604060002090565b90600052602052604060002090565b5490613540565b6040519081529081906020820190565b61242f925061246e6124209160203d8111612475575b6124668183611b8d565b810190613ade565b92506123ff565b503d61245c565b60206028549361239d565b346105d0576000806003193601126107bc576124366107a19160018060a01b036124b6816005541633146131c9565b600a5481166001600160a01b03166024549092906001600160801b039060801c166124f0575b50506124e78161060a565b549033906155d9565b6124f86148a4565b7fbe641c3ffc44b2d6c184f023fa4ed7bda4b6ffa71e03b3c98ae0c776da1f17e761253461252860245460801c90565b6001600160801b031690565b9261253e8561060a565b612549858254613540565b90558416918281600080516020615ec88339815191526040518061257289829190602083019252565b0390a3602480546001600160801b0316905580a338806124dc565b346105d05760003660031901126105d0576020601a54604051908152f35b346105d05760403660031901126105d0576024356125c8816105bf565b6125dd60018060a01b036005541633146131c9565b60008080808094600435905af16125f26149ee565b50156125fb5780f35b60405162461bcd60e51b815260206004820152601560248201527429a3a61d103a3930b739b332b9103330b4b632b21760591b6044820152606490fd5b346105d05760003660031901126105d0576060602454604051906001600160401b0380821683528160401c16602083015260801c6040820152f35b346105d05760003660031901126105d0576020601e54604051908152f35b346105d05760403660031901126105d057602554600954612707906020906126c1906001600160a01b0316610849565b6014546001600160801b0316906040518080958194638eb22cdd60e01b8352602435600484019081526001600160801b0390911660208201526001604082015260600190565b03915afa918215611681576127406127386107a1946124369460009161274a575b506001600160801b038416613540565b6004356134d7565b9060801c90613500565b612762915060203d8111612475576124668183611b8d565b38612728565b346105d05760003660031901126105d0576034546040516001600160a01b039091168152602090f35b346105d0576100196107876127e06127a836610c10565b60405163cce19f8160e01b60208201526001600160a01b03938416602482015292909116604483015260648201529182906084820190565b615e9d565b346105d0576020610fae61283e6127fb36611954565b60405163cd0211eb60e01b888201526001600160a01b0394851660248201529390921660448401521515606483015260848083019190915281526117ef81611b57565b828082518301019101613ade565b346105d05760003660031901126105d0576008546040516001600160a01b039091168152602090f35b346105d0576101603660031901126105d057600435612893816105bf565b6024356001600160401b0381116105d0576128b2903690600401611415565b916044356128bf816105bf565b60643560843560a4359060c4359260e4359461010435966101243598610144359a60018060a01b03926128f7846005541633146131c9565b838116612b10575b5080612adb575b505081169081612a73575b505080612a55575b5080612a37575b5080612a1a575b50806129f0575b50806129c6575b508061298e575b5080612962575b508061294b57005b6100199061295d601e548210156133df565b601f55565b80612975620186a0612988931115613345565b612983601f54821115613385565b601e55565b38612943565b806129c0916016547fae6e0ab3b95f0a53ff9660a390ccedcbbf1f2355dce974a9841af106fddcfaba600080a3601655565b3861293c565b806129d8620186a06129ea9310613345565b6129e5601b548211613345565b601c55565b38612935565b80612a02620186a0612a149310613345565b612a0f601c548210613345565b601b55565b3861292e565b80612a2c620186a0612a319310613345565b601d55565b38612927565b80612a4a620186a0612a4f931115613345565b601a55565b38612920565b80612a68620186a0612a6d931115613345565b601955565b38612919565b600854612ad49290612a8d906001600160a01b0316610849565b7f5a62d22209e370e38eea92cfddcd228e656e6ec139243392a760a7769f5877fd600080a3600880546001600160a01b0319166001600160a01b0392909216919091179055565b3880612911565b612ae491613268565b7fa6f004921c944d4b8bf6e38462b00f36a58d62495d56b51f571ab78f732c9815600080a13880612906565b600f80546001600160a01b0319166001600160a01b039092169190911790557f0b2d6eb667d0522c3eb86e4288afecae6c11591ffd1345d4d12407e0598bca9b600080a1386128ff565b610140806003193601126105d05760043590612b75826105bf565b60643590612b82826107bf565b6001600160401b03926084358481116105d057612ba3903690600401610dac565b9360a4359081116105d057612bbc903690600401610dba565b9360803660c31901126105d05761001994612c1f612c3192610eb19560405197889663d49dffa760e01b602089015260018060a01b03166024880152602435604488015260443560648801521515608487015260a4860152610164850190615a7f565b8381036023190160c485015290615ac3565b61078760e48301615b63565b346105d05760803660031901126105d057600435612c5a816105bf565b606435906001600160401b0382116105d057612ccd610787610eb161243693612c8a6107a1963690600401611415565b9390604051948593636a7229a760e11b602086015260018060a01b03166024850152602435604485015260443560648501526080608485015260a4840191615a2d565b60208082518301019101613ade565b346105d057612cea36610ab0565b9592809594959291924211610bcb5761001996612d8593610bb393610ba6878a610b9e8b610787610bab99612d1e86614219565b60405195869460208601988991959493909260c09360e08401977f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e26685526000602086015260018060a01b038092166040860152166060840152608083015260a08201520152565b614294565b346105d05760003660031901126105d057600b546040516001600160a01b039091168152602090f35b346105d05760003660031901126105d0576021546040516001600160a01b039091168152602090f35b346105d0576020610660612def366105e2565b6001600160a01b0391821660009081526002855260408082209290931681526020919091522090565b346105d05760003660031901126105d0576009546040516001600160a01b039091168152602090f35b346105d05760003660031901126105d0576020601d54604051908152f35b346105d05760003660031901126105d0576006546040516001600160a01b039091168152602090f35b346105d05760803660031901126105d0576001600160401b036004358181116105d057612eb9903690600401612129565b906024358381116105d057612ed2903690600401612129565b906044358581116105d057612eeb903690600401612129565b9290916064359687116105d057612f09610019973690600401612129565b969095615caf565b346105d05760603660031901126105d057600435612f2e816105bf565b604435906001600160401b0382116105d057612ccd610787610eb161243693612f5e6107a1963690600401611415565b93906040519485936301cfadbd60e71b602086015260018060a01b031660248501526024356044850152606060648501526084840191615a2d565b346105d05760a03660031901126105d057610019600435612fb9816105bf565b60243590612fc6826105bf565b60443590612fd3826107bf565b604051926374d2492960e11b602085015260018060a01b03809216602485015216604483015215156064820152606435608482015260843560a482015260a481526127e081611b72565b346105d05760003660031901126105d0576020601f54604051908152f35b346105d05760003660031901126105d0576020600c54604051908152f35b346105d05760203660031901126105d057600435613076816105bf565b6005546001600160a01b03919061309090831633146131c9565b816021549116809282167ffb4fd7114609dd603b57adbc2082205bfbbcabf9265c4b437b472f5c592b8cd7600080a36001600160a01b03191617602155005b346105d05760003660031901126105d0576020602b54604051908152f35b346105d0576020613130610fae61310336610c10565b9060086000959395526007865261312260ff6040600020541615615085565b61312a6148a4565b846157b2565b80926150c2565b346105d05760003660031901126105d0576035546040516001600160a01b039091168152602090f35b346105d05760003660031901126105d0576100196148a4565b346105d05760003660031901126105d057602554604080516001600160801b038316815260809290921c602083015290f35b346105d05760003660031901126105d0576020602a54604051908152f35b156131d057565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b601f8111613220575050565b6000906010825260208220906020601f850160051c8301941061325e575b601f0160051c01915b82811061325357505050565b818155600101613247565b909250829061323e565b91906001600160401b038111611b245761328c81613287601054611ab9565b613214565b6000601f82116001146132c6578192936000926132bb575b50508160011b916000199060031b1c191617601055565b0135905038806132a4565b6010600052601f198216937f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae67291805b86811061332d5750836001959610613313575b505050811b01601055565b0135600019600384901b60f8161c19169055388080613308565b909260206001819286860135815501940191016132f5565b1561334c57565b60405162461bcd60e51b815260206004820152601160248201527013585c9ad95d0e881b9bdd081d985b1a59607a1b6044820152606490fd5b1561338c57565b60405162461bcd60e51b815260206004820152602560248201527f4d61726b65743a20636f6c6c61746572616c697a6174696f6e5261746520746f6044820152646f2062696760d81b6064820152608490fd5b156133e657565b60405162461bcd60e51b815260206004820152603260248201527f4d61726b65743a206c69717569646174696f6e436f6c6c61746572616c697a616044820152711d1a5bdb94985d19481d1bdbc81cdb585b1b60721b6064820152608490fd5b1561344d57565b60405162461bcd60e51b81526020600482015260126024820152714d61726b65743a2073616d6520737461746560701b6044820152606490fd5b634e487b7160e01b600052601160045260246000fd5b90620186a0918281029281840414901517156134b557565b613487565b90670de0b6b3a7640000918281029281840414901517156134b557565b818102929181159184041417156134b557565b634e487b7160e01b600052601260045260246000fd5b811561350a570490565b6134ea565b604d81116134b557600a0a90565b90670de0b6b3a76400009182039182116134b557565b919082039182116134b557565b919082018092116134b557565b818103929160001380158285131691841216176134b557565b906509184e72a000918281029281840514901517156134b557565b90670de0b6b3a7640000918281029281840514901517156134b557565b818102929160008212600160ff1b8214166134b55781840514901517156134b557565b811561350a57600160ff1b81146000198314166134b5570590565b600160ff1b81146134b55760000390565b60145491929190613608906001600160801b038316906134d7565b9060801c90811561350a5761363591613626910493601f54906134d7565b61362f8361350f565b90613500565b908183106136c95761369a61369461368f61365361369f9587613533565b9361368a61368461367b601e5461367561366c8661350f565b60205490613540565b906134d7565b61362f8461350f565b9161350f565b61354d565b613566565b91613581565b6135c1565b60008112156136c3576136b1906135dc565b905b8082116136be575090565b905090565b906136b3565b505050600090565b6001600160a01b0381166000908152601760205260408120549193929091801561384b5761377f9061370161430d565b5061370a6143bc565b505050505094905061371d841515613a92565b600954602090613735906001600160a01b0316610849565b600c546001600160a01b038a1660009081526018602052604080822054905163442c159960e01b815260048101939093526024830152604482015294859190829081906064820190565b03915afa928315611681576138229561362f61252860206137e66137cf8a6137ca6137c161381c9c6137f59a8c9161382e575b50602254620186a09004613675565b601e54906134d7565b613500565b8551909890613675906001600160801b0316612528565b9301516001600160801b031690565b908282106138265750035b6001600160a01b03909516600090815260186020526040902090565b54613aed565b9091565b915050613800565b6138459150873d8111612475576124668183611b8d565b386137b2565b505080919250918190565b91908260409103126105d0576020825161386f816107bf565b92015190565b60208082526000916010549161388a83611ab9565b92838284015260019081811690816000146138ed57506001146138af575b5050505090565b929350601060005280600020926000935b8585106138d957505050604092500101388080806138a8565b8054858501604001529382019381016138c0565b925050506040935060ff929192191683830152151560051b0101388080806138a8565b6040513d6000823e3d90fd5b1561392357565b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881c985d19481d1bdbc81bdb1960621b6044820152606490fd5b1561396657565b60405162461bcd60e51b81526020600482015260146024820152734d61726b65743a20696e76616c6964207261746560601b6044820152606490fd5b600f546139b7906001600160a01b0316610849565b6040805163d6d7d52560e01b815292918390816000816139d960048201613875565b03925af18015611681576000928391613a5e575b50908215613a3957613a0082151561395f565b613a0982601155565b817f9f9192b5edb17356c524e08d9e025c8e2f6307e6ea52fb7968faa3081f51c3c8600080a25b6105e042601355565b9050613a55613a4d60135460125490613540565b42111561391c565b60115490613a30565b9050613a8291925060403d8111613a8b575b613a7a8183611b8d565b810190613856565b919091386139ed565b503d613a70565b15613a9957565b60405162461bcd60e51b815260206004820152601e60248201527f4d61726b65743a2065786368616e676552617465206e6f742076616c696400006044820152606490fd5b908160209103126105d0575190565b613b426020831592613aff8415613a92565b600954600c5460405163442c159960e01b81526004810191909152602481019290925260006044830152909283916001600160a01b031690829081906064820190565b03915afa801561168157613b6291600091613b7c575b50602254906134d7565b9061350a5704620186a0613b78601e54836134d7565b0491565b613b94915060203d8111612475576124668183611b8d565b38613b58565b919091600083820193841291129080158216911516176134b557565b90613bda613bf89161381c8460018060a01b03166000526018602052604060002090565b6001600160a01b039093166000908152601760205260409020909291565b5480156136c95782156136c9578281106136c95781811015613c815782613c41613c3c613c4795610d0861362f956127406014549160018060801b038316906134d7565b61349d565b92613533565b613c75601b5491613c70613c67601c5492613c62848761354d565b61359e565b620186a0900590565b613b9a565b908082126136be575090565b505050601b5490565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03161480613d7b575b15613ce5577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f000000000000000000000000000000000000000000000000000000000000000082527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a08152613d7581611b57565b51902090565b507f00000000000000000000000000000000000000000000000000000000000000004614613cbc565b15613dab57565b60405162461bcd60e51b815260206004820152601660248201527545524332303a2062616c616e636520746f6f206c6f7760501b6044820152606490fd5b15613df057565b60405162461bcd60e51b815260206004820152601660248201527545524332303a206e6f207a65726f206164647265737360501b6044820152606490fd5b15613e3557565b60405162461bcd60e51b815260206004820152601860248201527745524332303a20616c6c6f77616e636520746f6f206c6f7760401b6044820152606490fd5b6101009081818051810103126105d0576020810151613e93816107bf565b604082015192613ea2846105bf565b606083015194613eb1866105bf565b60808401519460a085015160c086015193613ecb85610aa5565b60e08701519601516001600160a01b0392831698831696428310610bcb57613f8d95613f818a8c610b9e8199610787613f86998f8f600014613fa4577f9cc5629bbe7baa98a89f6f8c2c396b83ab62dbb6cbb12f17f1d6ba7e6f53e266965b613f3387614219565b60408051602081019a8b5261ffff909716908701526001600160a01b03978816606087015296909116608085015260a084015260c083019490945260e0820193909352918290610100820190565b614017565b1614613fcb565b15613f9b576105e092614294565b6105e092614241565b7f5c9ba5f0d101616843d7918f48ea857d6da95e04ac6d719e105e50a355e7c5d696613f2a565b15613fd257565b60405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152606490fd5b916106079391610bab9361414b565b60051115611a5c57565b61403981614026565b806140415750565b61404a81614026565b600181036140925760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b6044820152606490fd5b61409b81614026565b600281036140e85760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606490fd5b806140f4600392614026565b146140fb57565b60405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608490fd5b9291906fa2a8918ca85bafe22016d0b997e4df60600160ff1b0383116141b75791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa156116815781516001600160a01b038116156141b1579190565b50600190565b50505050600090600390565b6141cb613c8a565b9060405190602082019261190160f01b84526022830152604282015260428152608081018181106001600160401b03821117611b245760405251902090565b60001981146134b55760010190565b6001600160a01b0316600090815260046020526040902080549061423c8261420a565b905590565b6001600160a01b03908116600081815260036020908152604080832095909416808352949052918220849055907fe50de2333c10a9502fcb1d8ae13a51bbf423153dfc63c2b8997665b32154afc39080a4565b6001600160a01b0390811660008181526002602090815260408083208686168452825290912091937f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259391928690556040519586521693a3565b604051906142fb82611b09565b60006040838281528260208201520152565b6040519061431a82611b29565b60006020838281520152565b6040519061433382611b09565b8160406024546001600160401b03808216845281831c16602084015260801c910152565b6040519061436482611b29565b6014546001600160801b038116835260801c6020830152565b6040519061438a82611b29565b6025546001600160801b038116835260801c6020830152565b6001600160801b0391821690821601919082116134b557565b6143c46142ee565b506143cd61430d565b506143d661430d565b506143df614326565b906143e8614357565b906143f161437d565b9061445660008061440c61084960095460018060a01b031690565b600e54865160405163442c159960e01b808252600482018490526001600160801b039092166024820152600060448201529296602096919590939092918790829081906064820190565b03818b5afa801561168157614487918491614860575b508a51614481906001600160801b0316612528565b90613540565b8061483d575081945b8a6144bd6144b76144ab8a8a9401516001600160401b031690565b6001600160401b031690565b42613533565b96871561481557506001600160401b03428116898e01528b8901516001600160801b039995919491939192908a16156147b757508b518d518692918a91614518916001600160401b03909116906001600160801b03166134d7565b90614522916134d7565b8d51670de0b6b3a76400009091049b908e9061454a908d8f16906001600160801b03166143a3565b6001600160801b039081169091528d5160405193845260048401959095529390931660248201526000604482015291829060649082905afa801561168157846146026145de8f978f6137ca908f92612528613675916137e66145c96146249b6145d59d8f9161479a575b508651614481906001600160801b0316612528565b9b8c97601a54906134d7565b620186a0900490565b9a8b169161460f60408901614602856145fd835160018060801b031690565b6143a3565b6001600160801b03169052565b8d0180519092906001600160801b03166143a3565b806147775750945b602a5486818110156146d057936137ca614690936146776144ab61468261467c614669886137ca61466461469d9d9e6144ab9c613533565b6134ba565b94614677602e5496806134d7565b6134d7565b84613540565b94516001600160401b031690565b6001600160401b03168a52565b88516001600160401b0316602d546001600160401b0316918083169116106146c3575b50565b6001600160401b03168852565b919050602b548083116146e5575b5050505050565b614765946146776144ab61472861472261471461470b6146646137ca986147369b613533565b602c5490613500565b96614677602e5498806134d7565b86613540565b92516001600160401b031690565b602d5461474e9060401c6001600160401b03166144ab565b80821161476f575b50166001600160401b03168952565b87388080806146de565b905038614756565b8a5161479492506137ca90614664906001600160801b0316612528565b9461462c565b6147b19150843d8611612475576124668183611b8d565b386145b4565b98505050965092979893505094506147d682516001600160401b031690565b602f546001600160401b031691808316911603614800575b5094936147f961437d565b9383929190565b6001600160401b0316815260019450386147ee565b9a5050505095509693505050509261482b614357565b9261483461437d565b92809281929190565b895161485a91906137ca90614664906001600160801b0316612528565b94614490565b6148779150883d8a11612475576124668183611b8d565b3861446c565b805160209091015160801b6001600160801b0319166001600160801b039190911617602555565b6105e06149706149976148b56143bc565b93979495939092901561499c575050506001600160401b03602f54166000807f33af5ce86e8438eff54589f85332916444457dfa8685493fbd579b809097026b6020604051838152a45b6149296001600160401b038251166001600160401b03166001600160401b03196024541617602455565b6020810151602480546040938401516001600160401b039091169290931b67ffffffffffffffff60401b169190911760809290921b6001600160801b031916919091179055565b805160209091015160801b6001600160801b0319166001600160801b039190911617601455565b61487d565b7f33af5ce86e8438eff54589f85332916444457dfa8685493fbd579b809097026b60206001600160401b0386511694604051908152a46148ff565b906149ea6020928281519485920161069d565b0190565b3d15614a19573d906149ff82611db6565b91614a0d6040519384611b8d565b82523d6000602084013e565b606090565b60405190614a2b82611b29565b60038252623f3f3f60e81b6020830152565b634e487b7160e01b600052603260045260246000fd5b908151811015614a64570160200190565b614a3d565b60ff1660ff81146134b55760010190565b90614a8482611db6565b614a916040519182611b8d565b8281528092614aa2601f1991611db6565b0190602036910137565b6020818303126105d0578051906001600160401b0382116105d0570181601f820112156105d0578051614ade81611db6565b92614aec6040519485611b8d565b818452602082840101116105d057610607916020808501910161069d565b805160408110614b2857508060208061060793518301019101614aac565b602092908303614bfd576000805b60ff81168581109081614bdb575b5015614b5857614b5390614a69565b614b36565b92614b6660ff809516614a7a565b92825b85811687811080614bbc575b15614bb1579081614ba6614b9d614b8f614bac9588614a53565b516001600160f81b03191690565b871a9188614a53565b53614a69565b614b69565b505094505050905090565b506001600160f81b0319614bd3614b8f8387614a53565b161515614b75565b6001600160f81b03199150614bf490614b8f9087614a53565b16151538614b44565b915050610607614a1e565b9190826101c09103126105d057614c1e826105d5565b91614c2b602082016105d5565b91614c38604083016105d5565b91614c45606082016105d5565b91614c52608083016105d5565b91614c5f60a082016105d5565b9160c082013591614c7260e082016105d5565b9161010082013591614c8761012082016105d5565b9161014082013591610160810135916106076101a061018084013593016105d5565b908160209103126105d05751610607816105bf565b15614cc557565b60405162461bcd60e51b815260206004820152600d60248201526c29a3a61d103130b2103830b4b960991b6044820152606490fd5b15614d0157565b60405162461bcd60e51b815260206004820152602f60248201527f53474c3a206c69717569646174696f6e436f6c6c61746572616c697a6174696f60448201526e1b94985d19481b9bdd081d985b1a59608a1b6064820152608490fd5b614d7963097343e06001600160401b0319602d541617602d55565b602d805467ffffffffffffffff60401b19166324ea412360491b179055614db07054a2b63d65d79d094abb66880000000000602e55565b614de1614dc5602d546001600160401b031690565b6001600160401b03166001600160401b0319602f541617602f55565b614e12614df6602f546001600160401b031690565b6001600160401b03166001600160401b03196024541617602455565b614e1a6139a2565b5050614e276103e8601955565b614e316000601a55565b614e3b6032603055565b614e46612ee0602055565b8015614efc57601e555b8015614eef57601f555b614e69601f54601e5410614cfa565b614e746161a8602955565b8015614edd576022555b614e8a62013880601b55565b614e9662015f90601c55565b614ea1612710601d55565b614eb2670429d069189e0000602a55565b614ec36706f05b59d3b20000602b55565b614ed16112b3602b5461351d565b6105e062015180601255565b50614e7e670de0b6b3a7640000602255565b50614e5a6201388061295d565b50614e50620124f8612983565b6001600160401b038111611b245760051b60200190565b90614f2a82614f09565b614f376040519182611b8d565b8281528092614aa2601f1991614f09565b90614f5282614f09565b614f5f6040519182611b8d565b8281528092614f70601f1991614f09565b019060005b828110614f8157505050565b806060602080938501015201614f75565b9190811015614a645760051b81013590601e19813603018212156105d05701908135916001600160401b0383116105d05760200182360381136105d0579190565b908092918237016000815290565b8051821015614a645760209160051b010190565b6103e881511161505157604481511061501e578060248060046106079401518301019101614aac565b5060405161502b81611b29565b60168152754d61726b65743a206e6f2072657475726e206461746160501b602082015290565b5060405161505e81611b29565b60178152764d61726b65743a20726561736f6e20746f6f206c6f6e6760481b602082015290565b1561508c57565b60405162461bcd60e51b815260206004820152600e60248201526d13585c9ad95d0e881c185d5cd95960921b6044820152606490fd5b6001600160a01b0381163381036150d857505050565b600090815260026020908152604080832033845290915290208290541061515c576001600160a01b038116600090815260026020526040902060001990615120903390610d64565b540361512a575050565b6001600160a01b0316600090815260026020526040902061515890615150903390610d64565b918254613533565b9055565b60405162461bcd60e51b815260206004820152601460248201527313585c9ad95d0e881b9bdd08185c1c1c9bdd995960621b6044820152606490fd5b93929190936151a561437d565b80516009546001600160801b0397918816949290615211906020906151d2906001600160a01b0316610849565b600e54601454604051638eb22cdd60e01b815260048101929092526001600160801b031660248201526001604482015292839190829081906064820190565b03915afa80156116815761522e916000916153bb575b5086613540565b8061538c57506103e886985b602083015161525590828c16906001600160801b03166143a3565b1610615380576152ec6152c5959493926152766149978b8a6152fd966153d9565b61527f8161060a565b61528a8b8254613540565b90556040518a81526001600160a01b038281169890976152d29287928b91600091600080516020615ec8833981519152919081906020820190565b0390a38a600e548961547f565b6001600160a01b0316600090815260266020526040902090565b602754600052602052604060002090565b615308868254613540565b90551561535857506009547f30a8c4f9ab5af7e1309ca87c32377d1a83366c5990472dbf9d262450eae14e3890615347906001600160a01b0316610849565b915b604051878152921691602090a4565b7f30a8c4f9ab5af7e1309ca87c32377d1a83366c5990472dbf9d262450eae14e389091615349565b50600096505050505050565b60208201516103e8916153b5916137ca906153af906001600160801b0316612528565b8a6134d7565b9861523a565b6153d3915060203d8111612475576124668183611b8d565b38615227565b91906153fd906153e761430d565b5060018060801b039182809216828651166143a3565b16835261541381602085019316828451166143a3565b16905290565b6001600160a01b039182168152911660208201526040810191909152606081019190915260800190565b1561544a57565b60405162461bcd60e51b815260206004820152600d60248201526c0a68e987440e8dede40daeac6d609b1b6044820152606490fd5b9091929360001461551757506009546154d1916020916154a7906001600160a01b0316610849565b604051627eeac760e11b815230600482015260248101929092529092839190829081906044820190565b03915afa928315611681576105e0936154f2926000916154f9575b50613533565b1015615443565b615511915060203d8111612475576124668183611b8d565b386154ec565b6009549193509190615531906001600160a01b0316610849565b803b156105d05761555f936000809460405196879586948593630208d92960e11b8552309060048601615419565b03925af18015611681576155705750565b8061557d6105e092611b44565b80610669565b6001600160801b0391821690821603919082116134b557565b156155a357565b60405162461bcd60e51b815260206004820152600e60248201526d14d1d30e881b5a5b881b1a5b5a5d60921b6044820152606490fd5b6025549093926001600160801b039160801c156157a9576155f861437d565b80519095906001600160801b0316600954615622906020906151d2906001600160a01b0316610849565b03915afa918215611681578591600093615789575b50169061564391613540565b61564d90836134d7565b602087018051909291615669916001600160801b031690613500565b9687946156758361060a565b8581549061568291613533565b90556040518581526001600160a01b0393841694906000908690600080516020615ec883398151915290602090a382516156c890838916906001600160801b0316615583565b6001600160801b031683528051868316906001600160801b0316906156ec91615583565b6001600160801b03168152516001600160801b0316166103e811156157109061559c565b6157199061487d565b6040519283528416917f6e853a5fd6b51d773691f542ebac8513c9992a51380d4c342031056a6411422890602090a4600954600e546001600160a01b0390911691823b156105d05761555f9260009283879360405196879586948593630208d92960e11b85523060048601615419565b6157a291935060203d8111612475576124668183611b8d565b9138615637565b50600093505050565b6025546001600160801b0394939192919060801c156157a9576157d361437d565b80519091906001600160801b03166009546157fd906020906151d2906001600160a01b0316610849565b03915afa918215611681578891600093615a0d575b50169061581e91613540565b61582890826134d7565b6020830180519091615843916001600160801b031690613500565b96879361584f8761060a565b8481549061585c91613533565b90556040518481526001600160a01b03888116949093916000908690600080516020615ec883398151915290602090a382516158a490838916906001600160801b0316615583565b6001600160801b031683528051868316906001600160801b0316906158c891615583565b6001600160801b03168152516001600160801b0316166103e811156158ec9061559c565b6158f59061487d565b6040519283528416917f6e853a5fd6b51d773691f542ebac8513c9992a51380d4c342031056a6411422890602090a4600954600e546001600160a01b0390911691823b156105d0576159659260009283889360405196879586948593630208d92960e11b85523060048601615419565b03925af18015611681576159fa575b506001600160a01b03811660009081526026602052604090206159a4602754809290600052602052604060002090565b548411156159d057506001600160a01b031660009081526026602052604081206159cd906152ec565b55565b6124206159ef9260018060a01b03166000526026602052604060002090565b615158838254613533565b8061557d615a0792611b44565b38615974565b615a2691935060203d8111612475576124668183611b8d565b9138615812565b908060209392818452848401376000828201840152601f01601f1916010190565b9035601e19823603018112156105d05701602081359101916001600160401b0382116105d05781360383136105d057565b906060615ab3610607938035615a94816105bf565b6001600160a01b03168452602081810135908501526040810190615a4e565b9190928160408201520191615a2d565b908135815261ffff80615ad860208501611de2565b166020830152615aea60408401611de2565b16604082015260c06060830135615b00816105bf565b6001600160a01b03908116606084015281615b50615b35615b246080880188615a4e565b60e0608089015260e0880191615a2d565b615b4260a0880188615a4e565b9087830360a0890152615a2d565b940135615b5c816105bf565b1691015290565b606060c435615b71816105bf565b6001600160a01b0390811683528060e435615b8b816105bf565b1660208401528061010435615b9f816105bf565b16604084015261012435615bb2816105bf565b16910152565b60609081813591615bc8836105bf565b6001600160a01b039283168552826020820135615be4816105bf565b166020860152826040820135615bf9816105bf565b1660408601520135615bb2816105bf565b91908082526020809201929160005b828110615c27575050505090565b9091929382806001928735615c3b816105bf565b848060a01b03168152019501910192919092615c19565b90808352602080930192838260051b850194846000925b858410615c7a575050505050505090565b909192939495968580615c9e8385600195038852615c988c88615a4e565b90615a2d565b990194019401929594939190615c69565b9295969094969391936040519660209663e5644d8b60e01b888a01528060a48a01608060248c01525260c48901959060005b89828210615d4b575050505087850360231990810160448a0152818652936001600160fb1b0382116105d0576146c09961204b988a9861078798615d3c9560051b809284830137018981036003190160648b01520191615c0a565b92858403016084860152615c52565b808499600193949535615d5d816105bf565b848060a01b031681520198019101919091615ce1565b15615d7a57565b60405162461bcd60e51b815260206004820152600e60248201526d14d1d30e881b9bdd081d985b1a5960921b6044820152606490fd5b6035546001600160a01b03168015615e0e57816000929160208493519201905af490615dda6149ee565b9115615de257565b612318615dee83614ff5565b60405162461bcd60e51b81526020600482015291829160248301906106c0565b60405162461bcd60e51b815260206004820152601360248201527214d1d30e881b5bd91d5b19481b9bdd081cd95d606a1b6044820152606490fd5b6033546001600160a01b03168015615e0e57816000929160208493519201905af490615dda6149ee565b6032546001600160a01b03168015615e0e57816000929160208493519201905af490615dda6149ee565b6034546001600160a01b03168015615e0e57816000929160208493519201905af490615dda6149ee56feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220711e6854b8d35017bb015c10f8effb509f0d0a51a9bee975eb9ba5eaffad3db464736f6c63430008120033"; type SingularityConstructorParams = | [signer?: Signer] diff --git a/src/typechain/tapioca-bar/hardhat.d.ts b/src/typechain/tapioca-bar/hardhat.d.ts index 8f9f2e7c..8fc91c76 100644 --- a/src/typechain/tapioca-bar/hardhat.d.ts +++ b/src/typechain/tapioca-bar/hardhat.d.ts @@ -44,6 +44,10 @@ declare module "hardhat/types/runtime" { name: "BigBang", signerOrOptions?: ethers.Signer | FactoryOptions ): Promise; + getContractFactory( + name: "SimpleLeverageExecutor", + signerOrOptions?: ethers.Signer | FactoryOptions + ): Promise; getContractFactory( name: "Market", signerOrOptions?: ethers.Signer | FactoryOptions @@ -185,6 +189,11 @@ declare module "hardhat/types/runtime" { address: string, signer?: ethers.Signer ): Promise; + getContractAt( + name: "SimpleLeverageExecutor", + address: string, + signer?: ethers.Signer + ): Promise; getContractAt( name: "Market", address: string, diff --git a/src/typechain/tapioca-bar/index.ts b/src/typechain/tapioca-bar/index.ts index ac45a4d3..e632b136 100644 --- a/src/typechain/tapioca-bar/index.ts +++ b/src/typechain/tapioca-bar/index.ts @@ -24,6 +24,8 @@ export type { BBStorage } from "./markets/bigBang/BBStorage"; export { BBStorage__factory } from "./factories/markets/bigBang/BBStorage__factory"; export type { BigBang } from "./markets/bigBang/BigBang"; export { BigBang__factory } from "./factories/markets/bigBang/BigBang__factory"; +export type { SimpleLeverageExecutor } from "./markets/leverage/SimpleLeverageExecutor"; +export { SimpleLeverageExecutor__factory } from "./factories/markets/leverage/SimpleLeverageExecutor__factory"; export type { Market } from "./markets/Market"; export { Market__factory } from "./factories/markets/Market__factory"; export type { MarketERC20 } from "./markets/MarketERC20"; diff --git a/src/typechain/tapioca-bar/markets/Market.ts b/src/typechain/tapioca-bar/markets/Market.ts index b3e34281..a7ffa1b0 100644 --- a/src/typechain/tapioca-bar/markets/Market.ts +++ b/src/typechain/tapioca-bar/markets/Market.ts @@ -47,6 +47,7 @@ export interface MarketInterface extends utils.Interface { "computeTVLInfo(address,uint256)": FunctionFragment; "conservator()": FunctionFragment; "exchangeRate()": FunctionFragment; + "leverageExecutor()": FunctionFragment; "liquidationBonusAmount()": FunctionFragment; "liquidationCollateralizationRate()": FunctionFragment; "liquidationMultiplier()": FunctionFragment; @@ -65,6 +66,7 @@ export interface MarketInterface extends utils.Interface { "protocolFee()": FunctionFragment; "rateTimestamp()": FunctionFragment; "rateValidDuration()": FunctionFragment; + "setLeverageExecutor(address)": FunctionFragment; "setMarketConfig(address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)": FunctionFragment; "totalBorrow()": FunctionFragment; "totalBorrowCap()": FunctionFragment; @@ -118,6 +120,8 @@ export interface MarketInterface extends utils.Interface { | "conservator()" | "exchangeRate" | "exchangeRate()" + | "leverageExecutor" + | "leverageExecutor()" | "liquidationBonusAmount" | "liquidationBonusAmount()" | "liquidationCollateralizationRate" @@ -154,6 +158,8 @@ export interface MarketInterface extends utils.Interface { | "rateTimestamp()" | "rateValidDuration" | "rateValidDuration()" + | "setLeverageExecutor" + | "setLeverageExecutor(address)" | "setMarketConfig" | "setMarketConfig(address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)" | "totalBorrow" @@ -319,6 +325,14 @@ export interface MarketInterface extends utils.Interface { functionFragment: "exchangeRate()", values?: undefined ): string; + encodeFunctionData( + functionFragment: "leverageExecutor", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "leverageExecutor()", + values?: undefined + ): string; encodeFunctionData( functionFragment: "liquidationBonusAmount", values?: undefined @@ -477,6 +491,14 @@ export interface MarketInterface extends utils.Interface { functionFragment: "rateValidDuration()", values?: undefined ): string; + encodeFunctionData( + functionFragment: "setLeverageExecutor", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "setLeverageExecutor(address)", + values: [PromiseOrValue] + ): string; encodeFunctionData( functionFragment: "setMarketConfig", values: [ @@ -736,6 +758,14 @@ export interface MarketInterface extends utils.Interface { functionFragment: "exchangeRate()", data: BytesLike ): Result; + decodeFunctionResult( + functionFragment: "leverageExecutor", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "leverageExecutor()", + data: BytesLike + ): Result; decodeFunctionResult( functionFragment: "liquidationBonusAmount", data: BytesLike @@ -853,6 +883,14 @@ export interface MarketInterface extends utils.Interface { functionFragment: "rateValidDuration()", data: BytesLike ): Result; + decodeFunctionResult( + functionFragment: "setLeverageExecutor", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "setLeverageExecutor(address)", + data: BytesLike + ): Result; decodeFunctionResult( functionFragment: "setMarketConfig", data: BytesLike @@ -954,6 +992,7 @@ export interface MarketInterface extends utils.Interface { "ApprovalBorrow(address,address,uint256)": EventFragment; "ConservatorUpdated(address,address)": EventFragment; "ExchangeRateDurationUpdated(uint256,uint256)": EventFragment; + "LeverageExecutorSet(address,address)": EventFragment; "Liquidated(address,address[],uint256,uint256,uint256,uint256)": EventFragment; "LiquidationMultiplierUpdated(uint256,uint256)": EventFragment; "LogBorrowCapUpdated(uint256,uint256)": EventFragment; @@ -983,6 +1022,10 @@ export interface MarketInterface extends utils.Interface { getEvent( nameOrSignatureOrTopic: "ExchangeRateDurationUpdated(uint256,uint256)" ): EventFragment; + getEvent(nameOrSignatureOrTopic: "LeverageExecutorSet"): EventFragment; + getEvent( + nameOrSignatureOrTopic: "LeverageExecutorSet(address,address)" + ): EventFragment; getEvent(nameOrSignatureOrTopic: "Liquidated"): EventFragment; getEvent( nameOrSignatureOrTopic: "Liquidated(address,address[],uint256,uint256,uint256,uint256)" @@ -1065,6 +1108,18 @@ export type ExchangeRateDurationUpdatedEvent = TypedEvent< export type ExchangeRateDurationUpdatedEventFilter = TypedEventFilter; +export interface LeverageExecutorSetEventObject { + oldVal: string; + newVal: string; +} +export type LeverageExecutorSetEvent = TypedEvent< + [string, string], + LeverageExecutorSetEventObject +>; + +export type LeverageExecutorSetEventFilter = + TypedEventFilter; + export interface LiquidatedEventObject { liquidator: string; users: string[]; @@ -1345,6 +1400,10 @@ export interface Market extends BaseContract { "exchangeRate()"(overrides?: CallOverrides): Promise<[BigNumber]>; + leverageExecutor(overrides?: CallOverrides): Promise<[string]>; + + "leverageExecutor()"(overrides?: CallOverrides): Promise<[string]>; + liquidationBonusAmount(overrides?: CallOverrides): Promise<[BigNumber]>; "liquidationBonusAmount()"(overrides?: CallOverrides): Promise<[BigNumber]>; @@ -1477,6 +1536,16 @@ export interface Market extends BaseContract { "rateValidDuration()"(overrides?: CallOverrides): Promise<[BigNumber]>; + setLeverageExecutor( + _executor: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "setLeverageExecutor(address)"( + _executor: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + setMarketConfig( _oracle: PromiseOrValue, _oracleData: PromiseOrValue, @@ -1768,6 +1837,10 @@ export interface Market extends BaseContract { "exchangeRate()"(overrides?: CallOverrides): Promise; + leverageExecutor(overrides?: CallOverrides): Promise; + + "leverageExecutor()"(overrides?: CallOverrides): Promise; + liquidationBonusAmount(overrides?: CallOverrides): Promise; "liquidationBonusAmount()"(overrides?: CallOverrides): Promise; @@ -1900,6 +1973,16 @@ export interface Market extends BaseContract { "rateValidDuration()"(overrides?: CallOverrides): Promise; + setLeverageExecutor( + _executor: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "setLeverageExecutor(address)"( + _executor: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + setMarketConfig( _oracle: PromiseOrValue, _oracleData: PromiseOrValue, @@ -2183,6 +2266,10 @@ export interface Market extends BaseContract { "exchangeRate()"(overrides?: CallOverrides): Promise; + leverageExecutor(overrides?: CallOverrides): Promise; + + "leverageExecutor()"(overrides?: CallOverrides): Promise; + liquidationBonusAmount(overrides?: CallOverrides): Promise; "liquidationBonusAmount()"(overrides?: CallOverrides): Promise; @@ -2315,6 +2402,16 @@ export interface Market extends BaseContract { "rateValidDuration()"(overrides?: CallOverrides): Promise; + setLeverageExecutor( + _executor: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "setLeverageExecutor(address)"( + _executor: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + setMarketConfig( _oracle: PromiseOrValue, _oracleData: PromiseOrValue, @@ -2495,6 +2592,15 @@ export interface Market extends BaseContract { _newVal?: null ): ExchangeRateDurationUpdatedEventFilter; + "LeverageExecutorSet(address,address)"( + oldVal?: PromiseOrValue | null, + newVal?: PromiseOrValue | null + ): LeverageExecutorSetEventFilter; + LeverageExecutorSet( + oldVal?: PromiseOrValue | null, + newVal?: PromiseOrValue | null + ): LeverageExecutorSetEventFilter; + "Liquidated(address,address[],uint256,uint256,uint256,uint256)"( liquidator?: PromiseOrValue | null, users?: PromiseOrValue[] | null, @@ -2716,6 +2822,10 @@ export interface Market extends BaseContract { "exchangeRate()"(overrides?: CallOverrides): Promise; + leverageExecutor(overrides?: CallOverrides): Promise; + + "leverageExecutor()"(overrides?: CallOverrides): Promise; + liquidationBonusAmount(overrides?: CallOverrides): Promise; "liquidationBonusAmount()"(overrides?: CallOverrides): Promise; @@ -2848,6 +2958,16 @@ export interface Market extends BaseContract { "rateValidDuration()"(overrides?: CallOverrides): Promise; + setLeverageExecutor( + _executor: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "setLeverageExecutor(address)"( + _executor: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + setMarketConfig( _oracle: PromiseOrValue, _oracleData: PromiseOrValue, @@ -3126,6 +3246,12 @@ export interface Market extends BaseContract { "exchangeRate()"(overrides?: CallOverrides): Promise; + leverageExecutor(overrides?: CallOverrides): Promise; + + "leverageExecutor()"( + overrides?: CallOverrides + ): Promise; + liquidationBonusAmount( overrides?: CallOverrides ): Promise; @@ -3276,6 +3402,16 @@ export interface Market extends BaseContract { overrides?: CallOverrides ): Promise; + setLeverageExecutor( + _executor: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "setLeverageExecutor(address)"( + _executor: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + setMarketConfig( _oracle: PromiseOrValue, _oracleData: PromiseOrValue, diff --git a/src/typechain/tapioca-bar/markets/bigBang/BBBorrow.ts b/src/typechain/tapioca-bar/markets/bigBang/BBBorrow.ts index f9d8f93a..6c89fbdc 100644 --- a/src/typechain/tapioca-bar/markets/bigBang/BBBorrow.ts +++ b/src/typechain/tapioca-bar/markets/bigBang/BBBorrow.ts @@ -57,15 +57,18 @@ export interface BBBorrowInterface extends utils.Interface { "getDebtRate()": FunctionFragment; "getTotalDebt()": FunctionFragment; "isMainMarket()": FunctionFragment; + "leverageExecutor()": FunctionFragment; "liquidationBonusAmount()": FunctionFragment; "liquidationCollateralizationRate()": FunctionFragment; "liquidationMultiplier()": FunctionFragment; "maxDebtRate()": FunctionFragment; "maxLiquidatorReward()": FunctionFragment; "maxMintFee()": FunctionFragment; + "maxMintFeeStart()": FunctionFragment; "minDebtRate()": FunctionFragment; "minLiquidatorReward()": FunctionFragment; "minMintFee()": FunctionFragment; + "minMintFeeStart()": FunctionFragment; "nonces(address)": FunctionFragment; "openingFees(address)": FunctionFragment; "oracle()": FunctionFragment; @@ -81,6 +84,7 @@ export interface BBBorrowInterface extends utils.Interface { "rateTimestamp()": FunctionFragment; "rateValidDuration()": FunctionFragment; "repay(address,address,bool,uint256)": FunctionFragment; + "setLeverageExecutor(address)": FunctionFragment; "setMarketConfig(address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)": FunctionFragment; "totalBorrow()": FunctionFragment; "totalBorrowCap()": FunctionFragment; @@ -154,6 +158,8 @@ export interface BBBorrowInterface extends utils.Interface { | "getTotalDebt()" | "isMainMarket" | "isMainMarket()" + | "leverageExecutor" + | "leverageExecutor()" | "liquidationBonusAmount" | "liquidationBonusAmount()" | "liquidationCollateralizationRate" @@ -166,12 +172,16 @@ export interface BBBorrowInterface extends utils.Interface { | "maxLiquidatorReward()" | "maxMintFee" | "maxMintFee()" + | "maxMintFeeStart" + | "maxMintFeeStart()" | "minDebtRate" | "minDebtRate()" | "minLiquidatorReward" | "minLiquidatorReward()" | "minMintFee" | "minMintFee()" + | "minMintFeeStart" + | "minMintFeeStart()" | "nonces" | "nonces(address)" | "openingFees" @@ -202,6 +212,8 @@ export interface BBBorrowInterface extends utils.Interface { | "rateValidDuration()" | "repay" | "repay(address,address,bool,uint256)" + | "setLeverageExecutor" + | "setLeverageExecutor(address)" | "setMarketConfig" | "setMarketConfig(address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)" | "totalBorrow" @@ -449,6 +461,14 @@ export interface BBBorrowInterface extends utils.Interface { functionFragment: "isMainMarket()", values?: undefined ): string; + encodeFunctionData( + functionFragment: "leverageExecutor", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "leverageExecutor()", + values?: undefined + ): string; encodeFunctionData( functionFragment: "liquidationBonusAmount", values?: undefined @@ -497,6 +517,14 @@ export interface BBBorrowInterface extends utils.Interface { functionFragment: "maxMintFee()", values?: undefined ): string; + encodeFunctionData( + functionFragment: "maxMintFeeStart", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "maxMintFeeStart()", + values?: undefined + ): string; encodeFunctionData( functionFragment: "minDebtRate", values?: undefined @@ -521,6 +549,14 @@ export interface BBBorrowInterface extends utils.Interface { functionFragment: "minMintFee()", values?: undefined ): string; + encodeFunctionData( + functionFragment: "minMintFeeStart", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "minMintFeeStart()", + values?: undefined + ): string; encodeFunctionData( functionFragment: "nonces", values: [PromiseOrValue] @@ -665,6 +701,14 @@ export interface BBBorrowInterface extends utils.Interface { PromiseOrValue ] ): string; + encodeFunctionData( + functionFragment: "setLeverageExecutor", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "setLeverageExecutor(address)", + values: [PromiseOrValue] + ): string; encodeFunctionData( functionFragment: "setMarketConfig", values: [ @@ -992,6 +1036,14 @@ export interface BBBorrowInterface extends utils.Interface { functionFragment: "isMainMarket()", data: BytesLike ): Result; + decodeFunctionResult( + functionFragment: "leverageExecutor", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "leverageExecutor()", + data: BytesLike + ): Result; decodeFunctionResult( functionFragment: "liquidationBonusAmount", data: BytesLike @@ -1037,6 +1089,14 @@ export interface BBBorrowInterface extends utils.Interface { functionFragment: "maxMintFee()", data: BytesLike ): Result; + decodeFunctionResult( + functionFragment: "maxMintFeeStart", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "maxMintFeeStart()", + data: BytesLike + ): Result; decodeFunctionResult( functionFragment: "minDebtRate", data: BytesLike @@ -1058,6 +1118,14 @@ export interface BBBorrowInterface extends utils.Interface { functionFragment: "minMintFee()", data: BytesLike ): Result; + decodeFunctionResult( + functionFragment: "minMintFeeStart", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "minMintFeeStart()", + data: BytesLike + ): Result; decodeFunctionResult(functionFragment: "nonces", data: BytesLike): Result; decodeFunctionResult( functionFragment: "nonces(address)", @@ -1148,6 +1216,14 @@ export interface BBBorrowInterface extends utils.Interface { functionFragment: "repay(address,address,bool,uint256)", data: BytesLike ): Result; + decodeFunctionResult( + functionFragment: "setLeverageExecutor", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "setLeverageExecutor(address)", + data: BytesLike + ): Result; decodeFunctionResult( functionFragment: "setMarketConfig", data: BytesLike @@ -1252,6 +1328,7 @@ export interface BBBorrowInterface extends utils.Interface { "ConservatorUpdated(address,address)": EventFragment; "DebtRateAgainstEthUpdated(uint256,uint256)": EventFragment; "ExchangeRateDurationUpdated(uint256,uint256)": EventFragment; + "LeverageExecutorSet(address,address)": EventFragment; "Liquidated(address,address[],uint256,uint256,uint256,uint256)": EventFragment; "LiquidationMultiplierUpdated(uint256,uint256)": EventFragment; "LogAccrue(uint256,uint64)": EventFragment; @@ -1269,6 +1346,7 @@ export interface BBBorrowInterface extends utils.Interface { "PausedUpdated(uint8,bool,bool)": EventFragment; "Transfer(address,address,uint256)": EventFragment; "UpdateMinMaxMintFee(uint256,uint256,uint256,uint256)": EventFragment; + "UpdateMinMaxMintRange(uint256,uint256,uint256,uint256)": EventFragment; }; getEvent(nameOrSignatureOrTopic: "Approval"): EventFragment; @@ -1299,6 +1377,10 @@ export interface BBBorrowInterface extends utils.Interface { getEvent( nameOrSignatureOrTopic: "ExchangeRateDurationUpdated(uint256,uint256)" ): EventFragment; + getEvent(nameOrSignatureOrTopic: "LeverageExecutorSet"): EventFragment; + getEvent( + nameOrSignatureOrTopic: "LeverageExecutorSet(address,address)" + ): EventFragment; getEvent(nameOrSignatureOrTopic: "Liquidated"): EventFragment; getEvent( nameOrSignatureOrTopic: "Liquidated(address,address[],uint256,uint256,uint256,uint256)" @@ -1361,6 +1443,10 @@ export interface BBBorrowInterface extends utils.Interface { getEvent( nameOrSignatureOrTopic: "UpdateMinMaxMintFee(uint256,uint256,uint256,uint256)" ): EventFragment; + getEvent(nameOrSignatureOrTopic: "UpdateMinMaxMintRange"): EventFragment; + getEvent( + nameOrSignatureOrTopic: "UpdateMinMaxMintRange(uint256,uint256,uint256,uint256)" + ): EventFragment; } export interface ApprovalEventObject { @@ -1397,8 +1483,8 @@ export type AssetOracleDataUpdatedEventFilter = TypedEventFilter; export interface AssetOracleUpdatedEventObject { - _oldVal: string; - _newVal: string; + oldVal: string; + newVal: string; } export type AssetOracleUpdatedEvent = TypedEvent< [string, string], @@ -1444,6 +1530,18 @@ export type ExchangeRateDurationUpdatedEvent = TypedEvent< export type ExchangeRateDurationUpdatedEventFilter = TypedEventFilter; +export interface LeverageExecutorSetEventObject { + oldVal: string; + newVal: string; +} +export type LeverageExecutorSetEvent = TypedEvent< + [string, string], + LeverageExecutorSetEventObject +>; + +export type LeverageExecutorSetEventFilter = + TypedEventFilter; + export interface LiquidatedEventObject { liquidator: string; users: string[]; @@ -1645,6 +1743,20 @@ export type UpdateMinMaxMintFeeEvent = TypedEvent< export type UpdateMinMaxMintFeeEventFilter = TypedEventFilter; +export interface UpdateMinMaxMintRangeEventObject { + oldMin: BigNumber; + newMin: BigNumber; + oldMax: BigNumber; + newMax: BigNumber; +} +export type UpdateMinMaxMintRangeEvent = TypedEvent< + [BigNumber, BigNumber, BigNumber, BigNumber], + UpdateMinMaxMintRangeEventObject +>; + +export type UpdateMinMaxMintRangeEventFilter = + TypedEventFilter; + export interface BBBorrow extends BaseContract { contractName: "BBBorrow"; @@ -1890,6 +2002,10 @@ export interface BBBorrow extends BaseContract { "isMainMarket()"(overrides?: CallOverrides): Promise<[boolean]>; + leverageExecutor(overrides?: CallOverrides): Promise<[string]>; + + "leverageExecutor()"(overrides?: CallOverrides): Promise<[string]>; + liquidationBonusAmount(overrides?: CallOverrides): Promise<[BigNumber]>; "liquidationBonusAmount()"(overrides?: CallOverrides): Promise<[BigNumber]>; @@ -1918,6 +2034,10 @@ export interface BBBorrow extends BaseContract { "maxMintFee()"(overrides?: CallOverrides): Promise<[BigNumber]>; + maxMintFeeStart(overrides?: CallOverrides): Promise<[BigNumber]>; + + "maxMintFeeStart()"(overrides?: CallOverrides): Promise<[BigNumber]>; + minDebtRate(overrides?: CallOverrides): Promise<[BigNumber]>; "minDebtRate()"(overrides?: CallOverrides): Promise<[BigNumber]>; @@ -1930,6 +2050,10 @@ export interface BBBorrow extends BaseContract { "minMintFee()"(overrides?: CallOverrides): Promise<[BigNumber]>; + minMintFeeStart(overrides?: CallOverrides): Promise<[BigNumber]>; + + "minMintFeeStart()"(overrides?: CallOverrides): Promise<[BigNumber]>; + nonces( owner: PromiseOrValue, overrides?: CallOverrides @@ -2064,6 +2188,16 @@ export interface BBBorrow extends BaseContract { overrides?: Overrides & { from?: PromiseOrValue } ): Promise; + setLeverageExecutor( + _executor: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "setLeverageExecutor(address)"( + _executor: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + setMarketConfig( _oracle: PromiseOrValue, _oracleData: PromiseOrValue, @@ -2417,6 +2551,10 @@ export interface BBBorrow extends BaseContract { "isMainMarket()"(overrides?: CallOverrides): Promise; + leverageExecutor(overrides?: CallOverrides): Promise; + + "leverageExecutor()"(overrides?: CallOverrides): Promise; + liquidationBonusAmount(overrides?: CallOverrides): Promise; "liquidationBonusAmount()"(overrides?: CallOverrides): Promise; @@ -2445,6 +2583,10 @@ export interface BBBorrow extends BaseContract { "maxMintFee()"(overrides?: CallOverrides): Promise; + maxMintFeeStart(overrides?: CallOverrides): Promise; + + "maxMintFeeStart()"(overrides?: CallOverrides): Promise; + minDebtRate(overrides?: CallOverrides): Promise; "minDebtRate()"(overrides?: CallOverrides): Promise; @@ -2457,6 +2599,10 @@ export interface BBBorrow extends BaseContract { "minMintFee()"(overrides?: CallOverrides): Promise; + minMintFeeStart(overrides?: CallOverrides): Promise; + + "minMintFeeStart()"(overrides?: CallOverrides): Promise; + nonces( owner: PromiseOrValue, overrides?: CallOverrides @@ -2591,6 +2737,16 @@ export interface BBBorrow extends BaseContract { overrides?: Overrides & { from?: PromiseOrValue } ): Promise; + setLeverageExecutor( + _executor: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "setLeverageExecutor(address)"( + _executor: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + setMarketConfig( _oracle: PromiseOrValue, _oracleData: PromiseOrValue, @@ -2932,6 +3088,10 @@ export interface BBBorrow extends BaseContract { "isMainMarket()"(overrides?: CallOverrides): Promise; + leverageExecutor(overrides?: CallOverrides): Promise; + + "leverageExecutor()"(overrides?: CallOverrides): Promise; + liquidationBonusAmount(overrides?: CallOverrides): Promise; "liquidationBonusAmount()"(overrides?: CallOverrides): Promise; @@ -2960,6 +3120,10 @@ export interface BBBorrow extends BaseContract { "maxMintFee()"(overrides?: CallOverrides): Promise; + maxMintFeeStart(overrides?: CallOverrides): Promise; + + "maxMintFeeStart()"(overrides?: CallOverrides): Promise; + minDebtRate(overrides?: CallOverrides): Promise; "minDebtRate()"(overrides?: CallOverrides): Promise; @@ -2972,6 +3136,10 @@ export interface BBBorrow extends BaseContract { "minMintFee()"(overrides?: CallOverrides): Promise; + minMintFeeStart(overrides?: CallOverrides): Promise; + + "minMintFeeStart()"(overrides?: CallOverrides): Promise; + nonces( owner: PromiseOrValue, overrides?: CallOverrides @@ -3106,6 +3274,16 @@ export interface BBBorrow extends BaseContract { overrides?: CallOverrides ): Promise; + setLeverageExecutor( + _executor: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "setLeverageExecutor(address)"( + _executor: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + setMarketConfig( _oracle: PromiseOrValue, _oracleData: PromiseOrValue, @@ -3272,12 +3450,12 @@ export interface BBBorrow extends BaseContract { AssetOracleDataUpdated(): AssetOracleDataUpdatedEventFilter; "AssetOracleUpdated(address,address)"( - _oldVal?: PromiseOrValue | null, - _newVal?: PromiseOrValue | null + oldVal?: PromiseOrValue | null, + newVal?: PromiseOrValue | null ): AssetOracleUpdatedEventFilter; AssetOracleUpdated( - _oldVal?: PromiseOrValue | null, - _newVal?: PromiseOrValue | null + oldVal?: PromiseOrValue | null, + newVal?: PromiseOrValue | null ): AssetOracleUpdatedEventFilter; "ConservatorUpdated(address,address)"( @@ -3307,6 +3485,15 @@ export interface BBBorrow extends BaseContract { _newVal?: null ): ExchangeRateDurationUpdatedEventFilter; + "LeverageExecutorSet(address,address)"( + oldVal?: PromiseOrValue | null, + newVal?: PromiseOrValue | null + ): LeverageExecutorSetEventFilter; + LeverageExecutorSet( + oldVal?: PromiseOrValue | null, + newVal?: PromiseOrValue | null + ): LeverageExecutorSetEventFilter; + "Liquidated(address,address[],uint256,uint256,uint256,uint256)"( liquidator?: PromiseOrValue | null, users?: PromiseOrValue[] | null, @@ -3475,6 +3662,19 @@ export interface BBBorrow extends BaseContract { oldMax?: PromiseOrValue | null, newMax?: null ): UpdateMinMaxMintFeeEventFilter; + + "UpdateMinMaxMintRange(uint256,uint256,uint256,uint256)"( + oldMin?: PromiseOrValue | null, + newMin?: PromiseOrValue | null, + oldMax?: PromiseOrValue | null, + newMax?: null + ): UpdateMinMaxMintRangeEventFilter; + UpdateMinMaxMintRange( + oldMin?: PromiseOrValue | null, + newMin?: PromiseOrValue | null, + oldMax?: PromiseOrValue | null, + newMax?: null + ): UpdateMinMaxMintRangeEventFilter; }; estimateGas: { @@ -3672,6 +3872,10 @@ export interface BBBorrow extends BaseContract { "isMainMarket()"(overrides?: CallOverrides): Promise; + leverageExecutor(overrides?: CallOverrides): Promise; + + "leverageExecutor()"(overrides?: CallOverrides): Promise; + liquidationBonusAmount(overrides?: CallOverrides): Promise; "liquidationBonusAmount()"(overrides?: CallOverrides): Promise; @@ -3700,6 +3904,10 @@ export interface BBBorrow extends BaseContract { "maxMintFee()"(overrides?: CallOverrides): Promise; + maxMintFeeStart(overrides?: CallOverrides): Promise; + + "maxMintFeeStart()"(overrides?: CallOverrides): Promise; + minDebtRate(overrides?: CallOverrides): Promise; "minDebtRate()"(overrides?: CallOverrides): Promise; @@ -3712,6 +3920,10 @@ export interface BBBorrow extends BaseContract { "minMintFee()"(overrides?: CallOverrides): Promise; + minMintFeeStart(overrides?: CallOverrides): Promise; + + "minMintFeeStart()"(overrides?: CallOverrides): Promise; + nonces( owner: PromiseOrValue, overrides?: CallOverrides @@ -3846,6 +4058,16 @@ export interface BBBorrow extends BaseContract { overrides?: Overrides & { from?: PromiseOrValue } ): Promise; + setLeverageExecutor( + _executor: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "setLeverageExecutor(address)"( + _executor: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + setMarketConfig( _oracle: PromiseOrValue, _oracleData: PromiseOrValue, @@ -4186,6 +4408,12 @@ export interface BBBorrow extends BaseContract { "isMainMarket()"(overrides?: CallOverrides): Promise; + leverageExecutor(overrides?: CallOverrides): Promise; + + "leverageExecutor()"( + overrides?: CallOverrides + ): Promise; + liquidationBonusAmount( overrides?: CallOverrides ): Promise; @@ -4226,6 +4454,12 @@ export interface BBBorrow extends BaseContract { "maxMintFee()"(overrides?: CallOverrides): Promise; + maxMintFeeStart(overrides?: CallOverrides): Promise; + + "maxMintFeeStart()"( + overrides?: CallOverrides + ): Promise; + minDebtRate(overrides?: CallOverrides): Promise; "minDebtRate()"(overrides?: CallOverrides): Promise; @@ -4242,6 +4476,12 @@ export interface BBBorrow extends BaseContract { "minMintFee()"(overrides?: CallOverrides): Promise; + minMintFeeStart(overrides?: CallOverrides): Promise; + + "minMintFeeStart()"( + overrides?: CallOverrides + ): Promise; + nonces( owner: PromiseOrValue, overrides?: CallOverrides @@ -4378,6 +4618,16 @@ export interface BBBorrow extends BaseContract { overrides?: Overrides & { from?: PromiseOrValue } ): Promise; + setLeverageExecutor( + _executor: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "setLeverageExecutor(address)"( + _executor: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + setMarketConfig( _oracle: PromiseOrValue, _oracleData: PromiseOrValue, diff --git a/src/typechain/tapioca-bar/markets/bigBang/BBCollateral.ts b/src/typechain/tapioca-bar/markets/bigBang/BBCollateral.ts index f4a0178d..05a60783 100644 --- a/src/typechain/tapioca-bar/markets/bigBang/BBCollateral.ts +++ b/src/typechain/tapioca-bar/markets/bigBang/BBCollateral.ts @@ -57,15 +57,18 @@ export interface BBCollateralInterface extends utils.Interface { "getDebtRate()": FunctionFragment; "getTotalDebt()": FunctionFragment; "isMainMarket()": FunctionFragment; + "leverageExecutor()": FunctionFragment; "liquidationBonusAmount()": FunctionFragment; "liquidationCollateralizationRate()": FunctionFragment; "liquidationMultiplier()": FunctionFragment; "maxDebtRate()": FunctionFragment; "maxLiquidatorReward()": FunctionFragment; "maxMintFee()": FunctionFragment; + "maxMintFeeStart()": FunctionFragment; "minDebtRate()": FunctionFragment; "minLiquidatorReward()": FunctionFragment; "minMintFee()": FunctionFragment; + "minMintFeeStart()": FunctionFragment; "nonces(address)": FunctionFragment; "openingFees(address)": FunctionFragment; "oracle()": FunctionFragment; @@ -81,6 +84,7 @@ export interface BBCollateralInterface extends utils.Interface { "rateTimestamp()": FunctionFragment; "rateValidDuration()": FunctionFragment; "removeCollateral(address,address,uint256)": FunctionFragment; + "setLeverageExecutor(address)": FunctionFragment; "setMarketConfig(address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)": FunctionFragment; "totalBorrow()": FunctionFragment; "totalBorrowCap()": FunctionFragment; @@ -154,6 +158,8 @@ export interface BBCollateralInterface extends utils.Interface { | "getTotalDebt()" | "isMainMarket" | "isMainMarket()" + | "leverageExecutor" + | "leverageExecutor()" | "liquidationBonusAmount" | "liquidationBonusAmount()" | "liquidationCollateralizationRate" @@ -166,12 +172,16 @@ export interface BBCollateralInterface extends utils.Interface { | "maxLiquidatorReward()" | "maxMintFee" | "maxMintFee()" + | "maxMintFeeStart" + | "maxMintFeeStart()" | "minDebtRate" | "minDebtRate()" | "minLiquidatorReward" | "minLiquidatorReward()" | "minMintFee" | "minMintFee()" + | "minMintFeeStart" + | "minMintFeeStart()" | "nonces" | "nonces(address)" | "openingFees" @@ -202,6 +212,8 @@ export interface BBCollateralInterface extends utils.Interface { | "rateValidDuration()" | "removeCollateral" | "removeCollateral(address,address,uint256)" + | "setLeverageExecutor" + | "setLeverageExecutor(address)" | "setMarketConfig" | "setMarketConfig(address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)" | "totalBorrow" @@ -453,6 +465,14 @@ export interface BBCollateralInterface extends utils.Interface { functionFragment: "isMainMarket()", values?: undefined ): string; + encodeFunctionData( + functionFragment: "leverageExecutor", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "leverageExecutor()", + values?: undefined + ): string; encodeFunctionData( functionFragment: "liquidationBonusAmount", values?: undefined @@ -501,6 +521,14 @@ export interface BBCollateralInterface extends utils.Interface { functionFragment: "maxMintFee()", values?: undefined ): string; + encodeFunctionData( + functionFragment: "maxMintFeeStart", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "maxMintFeeStart()", + values?: undefined + ): string; encodeFunctionData( functionFragment: "minDebtRate", values?: undefined @@ -525,6 +553,14 @@ export interface BBCollateralInterface extends utils.Interface { functionFragment: "minMintFee()", values?: undefined ): string; + encodeFunctionData( + functionFragment: "minMintFeeStart", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "minMintFeeStart()", + values?: undefined + ): string; encodeFunctionData( functionFragment: "nonces", values: [PromiseOrValue] @@ -667,6 +703,14 @@ export interface BBCollateralInterface extends utils.Interface { PromiseOrValue ] ): string; + encodeFunctionData( + functionFragment: "setLeverageExecutor", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "setLeverageExecutor(address)", + values: [PromiseOrValue] + ): string; encodeFunctionData( functionFragment: "setMarketConfig", values: [ @@ -997,6 +1041,14 @@ export interface BBCollateralInterface extends utils.Interface { functionFragment: "isMainMarket()", data: BytesLike ): Result; + decodeFunctionResult( + functionFragment: "leverageExecutor", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "leverageExecutor()", + data: BytesLike + ): Result; decodeFunctionResult( functionFragment: "liquidationBonusAmount", data: BytesLike @@ -1042,6 +1094,14 @@ export interface BBCollateralInterface extends utils.Interface { functionFragment: "maxMintFee()", data: BytesLike ): Result; + decodeFunctionResult( + functionFragment: "maxMintFeeStart", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "maxMintFeeStart()", + data: BytesLike + ): Result; decodeFunctionResult( functionFragment: "minDebtRate", data: BytesLike @@ -1063,6 +1123,14 @@ export interface BBCollateralInterface extends utils.Interface { functionFragment: "minMintFee()", data: BytesLike ): Result; + decodeFunctionResult( + functionFragment: "minMintFeeStart", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "minMintFeeStart()", + data: BytesLike + ): Result; decodeFunctionResult(functionFragment: "nonces", data: BytesLike): Result; decodeFunctionResult( functionFragment: "nonces(address)", @@ -1156,6 +1224,14 @@ export interface BBCollateralInterface extends utils.Interface { functionFragment: "removeCollateral(address,address,uint256)", data: BytesLike ): Result; + decodeFunctionResult( + functionFragment: "setLeverageExecutor", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "setLeverageExecutor(address)", + data: BytesLike + ): Result; decodeFunctionResult( functionFragment: "setMarketConfig", data: BytesLike @@ -1260,6 +1336,7 @@ export interface BBCollateralInterface extends utils.Interface { "ConservatorUpdated(address,address)": EventFragment; "DebtRateAgainstEthUpdated(uint256,uint256)": EventFragment; "ExchangeRateDurationUpdated(uint256,uint256)": EventFragment; + "LeverageExecutorSet(address,address)": EventFragment; "Liquidated(address,address[],uint256,uint256,uint256,uint256)": EventFragment; "LiquidationMultiplierUpdated(uint256,uint256)": EventFragment; "LogAccrue(uint256,uint64)": EventFragment; @@ -1277,6 +1354,7 @@ export interface BBCollateralInterface extends utils.Interface { "PausedUpdated(uint8,bool,bool)": EventFragment; "Transfer(address,address,uint256)": EventFragment; "UpdateMinMaxMintFee(uint256,uint256,uint256,uint256)": EventFragment; + "UpdateMinMaxMintRange(uint256,uint256,uint256,uint256)": EventFragment; }; getEvent(nameOrSignatureOrTopic: "Approval"): EventFragment; @@ -1307,6 +1385,10 @@ export interface BBCollateralInterface extends utils.Interface { getEvent( nameOrSignatureOrTopic: "ExchangeRateDurationUpdated(uint256,uint256)" ): EventFragment; + getEvent(nameOrSignatureOrTopic: "LeverageExecutorSet"): EventFragment; + getEvent( + nameOrSignatureOrTopic: "LeverageExecutorSet(address,address)" + ): EventFragment; getEvent(nameOrSignatureOrTopic: "Liquidated"): EventFragment; getEvent( nameOrSignatureOrTopic: "Liquidated(address,address[],uint256,uint256,uint256,uint256)" @@ -1369,6 +1451,10 @@ export interface BBCollateralInterface extends utils.Interface { getEvent( nameOrSignatureOrTopic: "UpdateMinMaxMintFee(uint256,uint256,uint256,uint256)" ): EventFragment; + getEvent(nameOrSignatureOrTopic: "UpdateMinMaxMintRange"): EventFragment; + getEvent( + nameOrSignatureOrTopic: "UpdateMinMaxMintRange(uint256,uint256,uint256,uint256)" + ): EventFragment; } export interface ApprovalEventObject { @@ -1405,8 +1491,8 @@ export type AssetOracleDataUpdatedEventFilter = TypedEventFilter; export interface AssetOracleUpdatedEventObject { - _oldVal: string; - _newVal: string; + oldVal: string; + newVal: string; } export type AssetOracleUpdatedEvent = TypedEvent< [string, string], @@ -1452,6 +1538,18 @@ export type ExchangeRateDurationUpdatedEvent = TypedEvent< export type ExchangeRateDurationUpdatedEventFilter = TypedEventFilter; +export interface LeverageExecutorSetEventObject { + oldVal: string; + newVal: string; +} +export type LeverageExecutorSetEvent = TypedEvent< + [string, string], + LeverageExecutorSetEventObject +>; + +export type LeverageExecutorSetEventFilter = + TypedEventFilter; + export interface LiquidatedEventObject { liquidator: string; users: string[]; @@ -1653,6 +1751,20 @@ export type UpdateMinMaxMintFeeEvent = TypedEvent< export type UpdateMinMaxMintFeeEventFilter = TypedEventFilter; +export interface UpdateMinMaxMintRangeEventObject { + oldMin: BigNumber; + newMin: BigNumber; + oldMax: BigNumber; + newMax: BigNumber; +} +export type UpdateMinMaxMintRangeEvent = TypedEvent< + [BigNumber, BigNumber, BigNumber, BigNumber], + UpdateMinMaxMintRangeEventObject +>; + +export type UpdateMinMaxMintRangeEventFilter = + TypedEventFilter; + export interface BBCollateral extends BaseContract { contractName: "BBCollateral"; @@ -1902,6 +2014,10 @@ export interface BBCollateral extends BaseContract { "isMainMarket()"(overrides?: CallOverrides): Promise<[boolean]>; + leverageExecutor(overrides?: CallOverrides): Promise<[string]>; + + "leverageExecutor()"(overrides?: CallOverrides): Promise<[string]>; + liquidationBonusAmount(overrides?: CallOverrides): Promise<[BigNumber]>; "liquidationBonusAmount()"(overrides?: CallOverrides): Promise<[BigNumber]>; @@ -1930,6 +2046,10 @@ export interface BBCollateral extends BaseContract { "maxMintFee()"(overrides?: CallOverrides): Promise<[BigNumber]>; + maxMintFeeStart(overrides?: CallOverrides): Promise<[BigNumber]>; + + "maxMintFeeStart()"(overrides?: CallOverrides): Promise<[BigNumber]>; + minDebtRate(overrides?: CallOverrides): Promise<[BigNumber]>; "minDebtRate()"(overrides?: CallOverrides): Promise<[BigNumber]>; @@ -1942,6 +2062,10 @@ export interface BBCollateral extends BaseContract { "minMintFee()"(overrides?: CallOverrides): Promise<[BigNumber]>; + minMintFeeStart(overrides?: CallOverrides): Promise<[BigNumber]>; + + "minMintFeeStart()"(overrides?: CallOverrides): Promise<[BigNumber]>; + nonces( owner: PromiseOrValue, overrides?: CallOverrides @@ -2074,6 +2198,16 @@ export interface BBCollateral extends BaseContract { overrides?: Overrides & { from?: PromiseOrValue } ): Promise; + setLeverageExecutor( + _executor: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "setLeverageExecutor(address)"( + _executor: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + setMarketConfig( _oracle: PromiseOrValue, _oracleData: PromiseOrValue, @@ -2431,6 +2565,10 @@ export interface BBCollateral extends BaseContract { "isMainMarket()"(overrides?: CallOverrides): Promise; + leverageExecutor(overrides?: CallOverrides): Promise; + + "leverageExecutor()"(overrides?: CallOverrides): Promise; + liquidationBonusAmount(overrides?: CallOverrides): Promise; "liquidationBonusAmount()"(overrides?: CallOverrides): Promise; @@ -2459,6 +2597,10 @@ export interface BBCollateral extends BaseContract { "maxMintFee()"(overrides?: CallOverrides): Promise; + maxMintFeeStart(overrides?: CallOverrides): Promise; + + "maxMintFeeStart()"(overrides?: CallOverrides): Promise; + minDebtRate(overrides?: CallOverrides): Promise; "minDebtRate()"(overrides?: CallOverrides): Promise; @@ -2471,6 +2613,10 @@ export interface BBCollateral extends BaseContract { "minMintFee()"(overrides?: CallOverrides): Promise; + minMintFeeStart(overrides?: CallOverrides): Promise; + + "minMintFeeStart()"(overrides?: CallOverrides): Promise; + nonces( owner: PromiseOrValue, overrides?: CallOverrides @@ -2603,6 +2749,16 @@ export interface BBCollateral extends BaseContract { overrides?: Overrides & { from?: PromiseOrValue } ): Promise; + setLeverageExecutor( + _executor: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "setLeverageExecutor(address)"( + _executor: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + setMarketConfig( _oracle: PromiseOrValue, _oracleData: PromiseOrValue, @@ -2948,6 +3104,10 @@ export interface BBCollateral extends BaseContract { "isMainMarket()"(overrides?: CallOverrides): Promise; + leverageExecutor(overrides?: CallOverrides): Promise; + + "leverageExecutor()"(overrides?: CallOverrides): Promise; + liquidationBonusAmount(overrides?: CallOverrides): Promise; "liquidationBonusAmount()"(overrides?: CallOverrides): Promise; @@ -2976,6 +3136,10 @@ export interface BBCollateral extends BaseContract { "maxMintFee()"(overrides?: CallOverrides): Promise; + maxMintFeeStart(overrides?: CallOverrides): Promise; + + "maxMintFeeStart()"(overrides?: CallOverrides): Promise; + minDebtRate(overrides?: CallOverrides): Promise; "minDebtRate()"(overrides?: CallOverrides): Promise; @@ -2988,6 +3152,10 @@ export interface BBCollateral extends BaseContract { "minMintFee()"(overrides?: CallOverrides): Promise; + minMintFeeStart(overrides?: CallOverrides): Promise; + + "minMintFeeStart()"(overrides?: CallOverrides): Promise; + nonces( owner: PromiseOrValue, overrides?: CallOverrides @@ -3120,6 +3288,16 @@ export interface BBCollateral extends BaseContract { overrides?: CallOverrides ): Promise; + setLeverageExecutor( + _executor: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "setLeverageExecutor(address)"( + _executor: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + setMarketConfig( _oracle: PromiseOrValue, _oracleData: PromiseOrValue, @@ -3286,12 +3464,12 @@ export interface BBCollateral extends BaseContract { AssetOracleDataUpdated(): AssetOracleDataUpdatedEventFilter; "AssetOracleUpdated(address,address)"( - _oldVal?: PromiseOrValue | null, - _newVal?: PromiseOrValue | null + oldVal?: PromiseOrValue | null, + newVal?: PromiseOrValue | null ): AssetOracleUpdatedEventFilter; AssetOracleUpdated( - _oldVal?: PromiseOrValue | null, - _newVal?: PromiseOrValue | null + oldVal?: PromiseOrValue | null, + newVal?: PromiseOrValue | null ): AssetOracleUpdatedEventFilter; "ConservatorUpdated(address,address)"( @@ -3321,6 +3499,15 @@ export interface BBCollateral extends BaseContract { _newVal?: null ): ExchangeRateDurationUpdatedEventFilter; + "LeverageExecutorSet(address,address)"( + oldVal?: PromiseOrValue | null, + newVal?: PromiseOrValue | null + ): LeverageExecutorSetEventFilter; + LeverageExecutorSet( + oldVal?: PromiseOrValue | null, + newVal?: PromiseOrValue | null + ): LeverageExecutorSetEventFilter; + "Liquidated(address,address[],uint256,uint256,uint256,uint256)"( liquidator?: PromiseOrValue | null, users?: PromiseOrValue[] | null, @@ -3489,6 +3676,19 @@ export interface BBCollateral extends BaseContract { oldMax?: PromiseOrValue | null, newMax?: null ): UpdateMinMaxMintFeeEventFilter; + + "UpdateMinMaxMintRange(uint256,uint256,uint256,uint256)"( + oldMin?: PromiseOrValue | null, + newMin?: PromiseOrValue | null, + oldMax?: PromiseOrValue | null, + newMax?: null + ): UpdateMinMaxMintRangeEventFilter; + UpdateMinMaxMintRange( + oldMin?: PromiseOrValue | null, + newMin?: PromiseOrValue | null, + oldMax?: PromiseOrValue | null, + newMax?: null + ): UpdateMinMaxMintRangeEventFilter; }; estimateGas: { @@ -3690,6 +3890,10 @@ export interface BBCollateral extends BaseContract { "isMainMarket()"(overrides?: CallOverrides): Promise; + leverageExecutor(overrides?: CallOverrides): Promise; + + "leverageExecutor()"(overrides?: CallOverrides): Promise; + liquidationBonusAmount(overrides?: CallOverrides): Promise; "liquidationBonusAmount()"(overrides?: CallOverrides): Promise; @@ -3718,6 +3922,10 @@ export interface BBCollateral extends BaseContract { "maxMintFee()"(overrides?: CallOverrides): Promise; + maxMintFeeStart(overrides?: CallOverrides): Promise; + + "maxMintFeeStart()"(overrides?: CallOverrides): Promise; + minDebtRate(overrides?: CallOverrides): Promise; "minDebtRate()"(overrides?: CallOverrides): Promise; @@ -3730,6 +3938,10 @@ export interface BBCollateral extends BaseContract { "minMintFee()"(overrides?: CallOverrides): Promise; + minMintFeeStart(overrides?: CallOverrides): Promise; + + "minMintFeeStart()"(overrides?: CallOverrides): Promise; + nonces( owner: PromiseOrValue, overrides?: CallOverrides @@ -3862,6 +4074,16 @@ export interface BBCollateral extends BaseContract { overrides?: Overrides & { from?: PromiseOrValue } ): Promise; + setLeverageExecutor( + _executor: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "setLeverageExecutor(address)"( + _executor: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + setMarketConfig( _oracle: PromiseOrValue, _oracleData: PromiseOrValue, @@ -4206,6 +4428,12 @@ export interface BBCollateral extends BaseContract { "isMainMarket()"(overrides?: CallOverrides): Promise; + leverageExecutor(overrides?: CallOverrides): Promise; + + "leverageExecutor()"( + overrides?: CallOverrides + ): Promise; + liquidationBonusAmount( overrides?: CallOverrides ): Promise; @@ -4246,6 +4474,12 @@ export interface BBCollateral extends BaseContract { "maxMintFee()"(overrides?: CallOverrides): Promise; + maxMintFeeStart(overrides?: CallOverrides): Promise; + + "maxMintFeeStart()"( + overrides?: CallOverrides + ): Promise; + minDebtRate(overrides?: CallOverrides): Promise; "minDebtRate()"(overrides?: CallOverrides): Promise; @@ -4262,6 +4496,12 @@ export interface BBCollateral extends BaseContract { "minMintFee()"(overrides?: CallOverrides): Promise; + minMintFeeStart(overrides?: CallOverrides): Promise; + + "minMintFeeStart()"( + overrides?: CallOverrides + ): Promise; + nonces( owner: PromiseOrValue, overrides?: CallOverrides @@ -4396,6 +4636,16 @@ export interface BBCollateral extends BaseContract { overrides?: Overrides & { from?: PromiseOrValue } ): Promise; + setLeverageExecutor( + _executor: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "setLeverageExecutor(address)"( + _executor: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + setMarketConfig( _oracle: PromiseOrValue, _oracleData: PromiseOrValue, diff --git a/src/typechain/tapioca-bar/markets/bigBang/BBCommon.ts b/src/typechain/tapioca-bar/markets/bigBang/BBCommon.ts index 2bb0f18c..cb132fa0 100644 --- a/src/typechain/tapioca-bar/markets/bigBang/BBCommon.ts +++ b/src/typechain/tapioca-bar/markets/bigBang/BBCommon.ts @@ -56,15 +56,18 @@ export interface BBCommonInterface extends utils.Interface { "getDebtRate()": FunctionFragment; "getTotalDebt()": FunctionFragment; "isMainMarket()": FunctionFragment; + "leverageExecutor()": FunctionFragment; "liquidationBonusAmount()": FunctionFragment; "liquidationCollateralizationRate()": FunctionFragment; "liquidationMultiplier()": FunctionFragment; "maxDebtRate()": FunctionFragment; "maxLiquidatorReward()": FunctionFragment; "maxMintFee()": FunctionFragment; + "maxMintFeeStart()": FunctionFragment; "minDebtRate()": FunctionFragment; "minLiquidatorReward()": FunctionFragment; "minMintFee()": FunctionFragment; + "minMintFeeStart()": FunctionFragment; "nonces(address)": FunctionFragment; "openingFees(address)": FunctionFragment; "oracle()": FunctionFragment; @@ -79,6 +82,7 @@ export interface BBCommonInterface extends utils.Interface { "protocolFee()": FunctionFragment; "rateTimestamp()": FunctionFragment; "rateValidDuration()": FunctionFragment; + "setLeverageExecutor(address)": FunctionFragment; "setMarketConfig(address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)": FunctionFragment; "totalBorrow()": FunctionFragment; "totalBorrowCap()": FunctionFragment; @@ -150,6 +154,8 @@ export interface BBCommonInterface extends utils.Interface { | "getTotalDebt()" | "isMainMarket" | "isMainMarket()" + | "leverageExecutor" + | "leverageExecutor()" | "liquidationBonusAmount" | "liquidationBonusAmount()" | "liquidationCollateralizationRate" @@ -162,12 +168,16 @@ export interface BBCommonInterface extends utils.Interface { | "maxLiquidatorReward()" | "maxMintFee" | "maxMintFee()" + | "maxMintFeeStart" + | "maxMintFeeStart()" | "minDebtRate" | "minDebtRate()" | "minLiquidatorReward" | "minLiquidatorReward()" | "minMintFee" | "minMintFee()" + | "minMintFeeStart" + | "minMintFeeStart()" | "nonces" | "nonces(address)" | "openingFees" @@ -196,6 +206,8 @@ export interface BBCommonInterface extends utils.Interface { | "rateTimestamp()" | "rateValidDuration" | "rateValidDuration()" + | "setLeverageExecutor" + | "setLeverageExecutor(address)" | "setMarketConfig" | "setMarketConfig(address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)" | "totalBorrow" @@ -427,6 +439,14 @@ export interface BBCommonInterface extends utils.Interface { functionFragment: "isMainMarket()", values?: undefined ): string; + encodeFunctionData( + functionFragment: "leverageExecutor", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "leverageExecutor()", + values?: undefined + ): string; encodeFunctionData( functionFragment: "liquidationBonusAmount", values?: undefined @@ -475,6 +495,14 @@ export interface BBCommonInterface extends utils.Interface { functionFragment: "maxMintFee()", values?: undefined ): string; + encodeFunctionData( + functionFragment: "maxMintFeeStart", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "maxMintFeeStart()", + values?: undefined + ): string; encodeFunctionData( functionFragment: "minDebtRate", values?: undefined @@ -499,6 +527,14 @@ export interface BBCommonInterface extends utils.Interface { functionFragment: "minMintFee()", values?: undefined ): string; + encodeFunctionData( + functionFragment: "minMintFeeStart", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "minMintFeeStart()", + values?: undefined + ): string; encodeFunctionData( functionFragment: "nonces", values: [PromiseOrValue] @@ -625,6 +661,14 @@ export interface BBCommonInterface extends utils.Interface { functionFragment: "rateValidDuration()", values?: undefined ): string; + encodeFunctionData( + functionFragment: "setLeverageExecutor", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "setLeverageExecutor(address)", + values: [PromiseOrValue] + ): string; encodeFunctionData( functionFragment: "setMarketConfig", values: [ @@ -947,6 +991,14 @@ export interface BBCommonInterface extends utils.Interface { functionFragment: "isMainMarket()", data: BytesLike ): Result; + decodeFunctionResult( + functionFragment: "leverageExecutor", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "leverageExecutor()", + data: BytesLike + ): Result; decodeFunctionResult( functionFragment: "liquidationBonusAmount", data: BytesLike @@ -992,6 +1044,14 @@ export interface BBCommonInterface extends utils.Interface { functionFragment: "maxMintFee()", data: BytesLike ): Result; + decodeFunctionResult( + functionFragment: "maxMintFeeStart", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "maxMintFeeStart()", + data: BytesLike + ): Result; decodeFunctionResult( functionFragment: "minDebtRate", data: BytesLike @@ -1013,6 +1073,14 @@ export interface BBCommonInterface extends utils.Interface { functionFragment: "minMintFee()", data: BytesLike ): Result; + decodeFunctionResult( + functionFragment: "minMintFeeStart", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "minMintFeeStart()", + data: BytesLike + ): Result; decodeFunctionResult(functionFragment: "nonces", data: BytesLike): Result; decodeFunctionResult( functionFragment: "nonces(address)", @@ -1098,6 +1166,14 @@ export interface BBCommonInterface extends utils.Interface { functionFragment: "rateValidDuration()", data: BytesLike ): Result; + decodeFunctionResult( + functionFragment: "setLeverageExecutor", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "setLeverageExecutor(address)", + data: BytesLike + ): Result; decodeFunctionResult( functionFragment: "setMarketConfig", data: BytesLike @@ -1202,6 +1278,7 @@ export interface BBCommonInterface extends utils.Interface { "ConservatorUpdated(address,address)": EventFragment; "DebtRateAgainstEthUpdated(uint256,uint256)": EventFragment; "ExchangeRateDurationUpdated(uint256,uint256)": EventFragment; + "LeverageExecutorSet(address,address)": EventFragment; "Liquidated(address,address[],uint256,uint256,uint256,uint256)": EventFragment; "LiquidationMultiplierUpdated(uint256,uint256)": EventFragment; "LogAccrue(uint256,uint64)": EventFragment; @@ -1219,6 +1296,7 @@ export interface BBCommonInterface extends utils.Interface { "PausedUpdated(uint8,bool,bool)": EventFragment; "Transfer(address,address,uint256)": EventFragment; "UpdateMinMaxMintFee(uint256,uint256,uint256,uint256)": EventFragment; + "UpdateMinMaxMintRange(uint256,uint256,uint256,uint256)": EventFragment; }; getEvent(nameOrSignatureOrTopic: "Approval"): EventFragment; @@ -1249,6 +1327,10 @@ export interface BBCommonInterface extends utils.Interface { getEvent( nameOrSignatureOrTopic: "ExchangeRateDurationUpdated(uint256,uint256)" ): EventFragment; + getEvent(nameOrSignatureOrTopic: "LeverageExecutorSet"): EventFragment; + getEvent( + nameOrSignatureOrTopic: "LeverageExecutorSet(address,address)" + ): EventFragment; getEvent(nameOrSignatureOrTopic: "Liquidated"): EventFragment; getEvent( nameOrSignatureOrTopic: "Liquidated(address,address[],uint256,uint256,uint256,uint256)" @@ -1311,6 +1393,10 @@ export interface BBCommonInterface extends utils.Interface { getEvent( nameOrSignatureOrTopic: "UpdateMinMaxMintFee(uint256,uint256,uint256,uint256)" ): EventFragment; + getEvent(nameOrSignatureOrTopic: "UpdateMinMaxMintRange"): EventFragment; + getEvent( + nameOrSignatureOrTopic: "UpdateMinMaxMintRange(uint256,uint256,uint256,uint256)" + ): EventFragment; } export interface ApprovalEventObject { @@ -1347,8 +1433,8 @@ export type AssetOracleDataUpdatedEventFilter = TypedEventFilter; export interface AssetOracleUpdatedEventObject { - _oldVal: string; - _newVal: string; + oldVal: string; + newVal: string; } export type AssetOracleUpdatedEvent = TypedEvent< [string, string], @@ -1394,6 +1480,18 @@ export type ExchangeRateDurationUpdatedEvent = TypedEvent< export type ExchangeRateDurationUpdatedEventFilter = TypedEventFilter; +export interface LeverageExecutorSetEventObject { + oldVal: string; + newVal: string; +} +export type LeverageExecutorSetEvent = TypedEvent< + [string, string], + LeverageExecutorSetEventObject +>; + +export type LeverageExecutorSetEventFilter = + TypedEventFilter; + export interface LiquidatedEventObject { liquidator: string; users: string[]; @@ -1595,6 +1693,20 @@ export type UpdateMinMaxMintFeeEvent = TypedEvent< export type UpdateMinMaxMintFeeEventFilter = TypedEventFilter; +export interface UpdateMinMaxMintRangeEventObject { + oldMin: BigNumber; + newMin: BigNumber; + oldMax: BigNumber; + newMax: BigNumber; +} +export type UpdateMinMaxMintRangeEvent = TypedEvent< + [BigNumber, BigNumber, BigNumber, BigNumber], + UpdateMinMaxMintRangeEventObject +>; + +export type UpdateMinMaxMintRangeEventFilter = + TypedEventFilter; + export interface BBCommon extends BaseContract { contractName: "BBCommon"; @@ -1826,6 +1938,10 @@ export interface BBCommon extends BaseContract { "isMainMarket()"(overrides?: CallOverrides): Promise<[boolean]>; + leverageExecutor(overrides?: CallOverrides): Promise<[string]>; + + "leverageExecutor()"(overrides?: CallOverrides): Promise<[string]>; + liquidationBonusAmount(overrides?: CallOverrides): Promise<[BigNumber]>; "liquidationBonusAmount()"(overrides?: CallOverrides): Promise<[BigNumber]>; @@ -1854,6 +1970,10 @@ export interface BBCommon extends BaseContract { "maxMintFee()"(overrides?: CallOverrides): Promise<[BigNumber]>; + maxMintFeeStart(overrides?: CallOverrides): Promise<[BigNumber]>; + + "maxMintFeeStart()"(overrides?: CallOverrides): Promise<[BigNumber]>; + minDebtRate(overrides?: CallOverrides): Promise<[BigNumber]>; "minDebtRate()"(overrides?: CallOverrides): Promise<[BigNumber]>; @@ -1866,6 +1986,10 @@ export interface BBCommon extends BaseContract { "minMintFee()"(overrides?: CallOverrides): Promise<[BigNumber]>; + minMintFeeStart(overrides?: CallOverrides): Promise<[BigNumber]>; + + "minMintFeeStart()"(overrides?: CallOverrides): Promise<[BigNumber]>; + nonces( owner: PromiseOrValue, overrides?: CallOverrides @@ -1984,6 +2108,16 @@ export interface BBCommon extends BaseContract { "rateValidDuration()"(overrides?: CallOverrides): Promise<[BigNumber]>; + setLeverageExecutor( + _executor: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "setLeverageExecutor(address)"( + _executor: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + setMarketConfig( _oracle: PromiseOrValue, _oracleData: PromiseOrValue, @@ -2323,6 +2457,10 @@ export interface BBCommon extends BaseContract { "isMainMarket()"(overrides?: CallOverrides): Promise; + leverageExecutor(overrides?: CallOverrides): Promise; + + "leverageExecutor()"(overrides?: CallOverrides): Promise; + liquidationBonusAmount(overrides?: CallOverrides): Promise; "liquidationBonusAmount()"(overrides?: CallOverrides): Promise; @@ -2351,6 +2489,10 @@ export interface BBCommon extends BaseContract { "maxMintFee()"(overrides?: CallOverrides): Promise; + maxMintFeeStart(overrides?: CallOverrides): Promise; + + "maxMintFeeStart()"(overrides?: CallOverrides): Promise; + minDebtRate(overrides?: CallOverrides): Promise; "minDebtRate()"(overrides?: CallOverrides): Promise; @@ -2363,6 +2505,10 @@ export interface BBCommon extends BaseContract { "minMintFee()"(overrides?: CallOverrides): Promise; + minMintFeeStart(overrides?: CallOverrides): Promise; + + "minMintFeeStart()"(overrides?: CallOverrides): Promise; + nonces( owner: PromiseOrValue, overrides?: CallOverrides @@ -2481,6 +2627,16 @@ export interface BBCommon extends BaseContract { "rateValidDuration()"(overrides?: CallOverrides): Promise; + setLeverageExecutor( + _executor: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "setLeverageExecutor(address)"( + _executor: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + setMarketConfig( _oracle: PromiseOrValue, _oracleData: PromiseOrValue, @@ -2808,6 +2964,10 @@ export interface BBCommon extends BaseContract { "isMainMarket()"(overrides?: CallOverrides): Promise; + leverageExecutor(overrides?: CallOverrides): Promise; + + "leverageExecutor()"(overrides?: CallOverrides): Promise; + liquidationBonusAmount(overrides?: CallOverrides): Promise; "liquidationBonusAmount()"(overrides?: CallOverrides): Promise; @@ -2836,6 +2996,10 @@ export interface BBCommon extends BaseContract { "maxMintFee()"(overrides?: CallOverrides): Promise; + maxMintFeeStart(overrides?: CallOverrides): Promise; + + "maxMintFeeStart()"(overrides?: CallOverrides): Promise; + minDebtRate(overrides?: CallOverrides): Promise; "minDebtRate()"(overrides?: CallOverrides): Promise; @@ -2848,6 +3012,10 @@ export interface BBCommon extends BaseContract { "minMintFee()"(overrides?: CallOverrides): Promise; + minMintFeeStart(overrides?: CallOverrides): Promise; + + "minMintFeeStart()"(overrides?: CallOverrides): Promise; + nonces( owner: PromiseOrValue, overrides?: CallOverrides @@ -2966,6 +3134,16 @@ export interface BBCommon extends BaseContract { "rateValidDuration()"(overrides?: CallOverrides): Promise; + setLeverageExecutor( + _executor: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "setLeverageExecutor(address)"( + _executor: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + setMarketConfig( _oracle: PromiseOrValue, _oracleData: PromiseOrValue, @@ -3132,12 +3310,12 @@ export interface BBCommon extends BaseContract { AssetOracleDataUpdated(): AssetOracleDataUpdatedEventFilter; "AssetOracleUpdated(address,address)"( - _oldVal?: PromiseOrValue | null, - _newVal?: PromiseOrValue | null + oldVal?: PromiseOrValue | null, + newVal?: PromiseOrValue | null ): AssetOracleUpdatedEventFilter; AssetOracleUpdated( - _oldVal?: PromiseOrValue | null, - _newVal?: PromiseOrValue | null + oldVal?: PromiseOrValue | null, + newVal?: PromiseOrValue | null ): AssetOracleUpdatedEventFilter; "ConservatorUpdated(address,address)"( @@ -3167,6 +3345,15 @@ export interface BBCommon extends BaseContract { _newVal?: null ): ExchangeRateDurationUpdatedEventFilter; + "LeverageExecutorSet(address,address)"( + oldVal?: PromiseOrValue | null, + newVal?: PromiseOrValue | null + ): LeverageExecutorSetEventFilter; + LeverageExecutorSet( + oldVal?: PromiseOrValue | null, + newVal?: PromiseOrValue | null + ): LeverageExecutorSetEventFilter; + "Liquidated(address,address[],uint256,uint256,uint256,uint256)"( liquidator?: PromiseOrValue | null, users?: PromiseOrValue[] | null, @@ -3335,6 +3522,19 @@ export interface BBCommon extends BaseContract { oldMax?: PromiseOrValue | null, newMax?: null ): UpdateMinMaxMintFeeEventFilter; + + "UpdateMinMaxMintRange(uint256,uint256,uint256,uint256)"( + oldMin?: PromiseOrValue | null, + newMin?: PromiseOrValue | null, + oldMax?: PromiseOrValue | null, + newMax?: null + ): UpdateMinMaxMintRangeEventFilter; + UpdateMinMaxMintRange( + oldMin?: PromiseOrValue | null, + newMin?: PromiseOrValue | null, + oldMax?: PromiseOrValue | null, + newMax?: null + ): UpdateMinMaxMintRangeEventFilter; }; estimateGas: { @@ -3518,6 +3718,10 @@ export interface BBCommon extends BaseContract { "isMainMarket()"(overrides?: CallOverrides): Promise; + leverageExecutor(overrides?: CallOverrides): Promise; + + "leverageExecutor()"(overrides?: CallOverrides): Promise; + liquidationBonusAmount(overrides?: CallOverrides): Promise; "liquidationBonusAmount()"(overrides?: CallOverrides): Promise; @@ -3546,6 +3750,10 @@ export interface BBCommon extends BaseContract { "maxMintFee()"(overrides?: CallOverrides): Promise; + maxMintFeeStart(overrides?: CallOverrides): Promise; + + "maxMintFeeStart()"(overrides?: CallOverrides): Promise; + minDebtRate(overrides?: CallOverrides): Promise; "minDebtRate()"(overrides?: CallOverrides): Promise; @@ -3558,6 +3766,10 @@ export interface BBCommon extends BaseContract { "minMintFee()"(overrides?: CallOverrides): Promise; + minMintFeeStart(overrides?: CallOverrides): Promise; + + "minMintFeeStart()"(overrides?: CallOverrides): Promise; + nonces( owner: PromiseOrValue, overrides?: CallOverrides @@ -3676,6 +3888,16 @@ export interface BBCommon extends BaseContract { "rateValidDuration()"(overrides?: CallOverrides): Promise; + setLeverageExecutor( + _executor: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "setLeverageExecutor(address)"( + _executor: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + setMarketConfig( _oracle: PromiseOrValue, _oracleData: PromiseOrValue, @@ -4002,6 +4224,12 @@ export interface BBCommon extends BaseContract { "isMainMarket()"(overrides?: CallOverrides): Promise; + leverageExecutor(overrides?: CallOverrides): Promise; + + "leverageExecutor()"( + overrides?: CallOverrides + ): Promise; + liquidationBonusAmount( overrides?: CallOverrides ): Promise; @@ -4042,6 +4270,12 @@ export interface BBCommon extends BaseContract { "maxMintFee()"(overrides?: CallOverrides): Promise; + maxMintFeeStart(overrides?: CallOverrides): Promise; + + "maxMintFeeStart()"( + overrides?: CallOverrides + ): Promise; + minDebtRate(overrides?: CallOverrides): Promise; "minDebtRate()"(overrides?: CallOverrides): Promise; @@ -4058,6 +4292,12 @@ export interface BBCommon extends BaseContract { "minMintFee()"(overrides?: CallOverrides): Promise; + minMintFeeStart(overrides?: CallOverrides): Promise; + + "minMintFeeStart()"( + overrides?: CallOverrides + ): Promise; + nonces( owner: PromiseOrValue, overrides?: CallOverrides @@ -4178,6 +4418,16 @@ export interface BBCommon extends BaseContract { overrides?: CallOverrides ): Promise; + setLeverageExecutor( + _executor: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "setLeverageExecutor(address)"( + _executor: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + setMarketConfig( _oracle: PromiseOrValue, _oracleData: PromiseOrValue, diff --git a/src/typechain/tapioca-bar/markets/bigBang/BBLendingCommon.ts b/src/typechain/tapioca-bar/markets/bigBang/BBLendingCommon.ts index 7e9edf28..555e57f5 100644 --- a/src/typechain/tapioca-bar/markets/bigBang/BBLendingCommon.ts +++ b/src/typechain/tapioca-bar/markets/bigBang/BBLendingCommon.ts @@ -56,15 +56,18 @@ export interface BBLendingCommonInterface extends utils.Interface { "getDebtRate()": FunctionFragment; "getTotalDebt()": FunctionFragment; "isMainMarket()": FunctionFragment; + "leverageExecutor()": FunctionFragment; "liquidationBonusAmount()": FunctionFragment; "liquidationCollateralizationRate()": FunctionFragment; "liquidationMultiplier()": FunctionFragment; "maxDebtRate()": FunctionFragment; "maxLiquidatorReward()": FunctionFragment; "maxMintFee()": FunctionFragment; + "maxMintFeeStart()": FunctionFragment; "minDebtRate()": FunctionFragment; "minLiquidatorReward()": FunctionFragment; "minMintFee()": FunctionFragment; + "minMintFeeStart()": FunctionFragment; "nonces(address)": FunctionFragment; "openingFees(address)": FunctionFragment; "oracle()": FunctionFragment; @@ -79,6 +82,7 @@ export interface BBLendingCommonInterface extends utils.Interface { "protocolFee()": FunctionFragment; "rateTimestamp()": FunctionFragment; "rateValidDuration()": FunctionFragment; + "setLeverageExecutor(address)": FunctionFragment; "setMarketConfig(address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)": FunctionFragment; "totalBorrow()": FunctionFragment; "totalBorrowCap()": FunctionFragment; @@ -150,6 +154,8 @@ export interface BBLendingCommonInterface extends utils.Interface { | "getTotalDebt()" | "isMainMarket" | "isMainMarket()" + | "leverageExecutor" + | "leverageExecutor()" | "liquidationBonusAmount" | "liquidationBonusAmount()" | "liquidationCollateralizationRate" @@ -162,12 +168,16 @@ export interface BBLendingCommonInterface extends utils.Interface { | "maxLiquidatorReward()" | "maxMintFee" | "maxMintFee()" + | "maxMintFeeStart" + | "maxMintFeeStart()" | "minDebtRate" | "minDebtRate()" | "minLiquidatorReward" | "minLiquidatorReward()" | "minMintFee" | "minMintFee()" + | "minMintFeeStart" + | "minMintFeeStart()" | "nonces" | "nonces(address)" | "openingFees" @@ -196,6 +206,8 @@ export interface BBLendingCommonInterface extends utils.Interface { | "rateTimestamp()" | "rateValidDuration" | "rateValidDuration()" + | "setLeverageExecutor" + | "setLeverageExecutor(address)" | "setMarketConfig" | "setMarketConfig(address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)" | "totalBorrow" @@ -427,6 +439,14 @@ export interface BBLendingCommonInterface extends utils.Interface { functionFragment: "isMainMarket()", values?: undefined ): string; + encodeFunctionData( + functionFragment: "leverageExecutor", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "leverageExecutor()", + values?: undefined + ): string; encodeFunctionData( functionFragment: "liquidationBonusAmount", values?: undefined @@ -475,6 +495,14 @@ export interface BBLendingCommonInterface extends utils.Interface { functionFragment: "maxMintFee()", values?: undefined ): string; + encodeFunctionData( + functionFragment: "maxMintFeeStart", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "maxMintFeeStart()", + values?: undefined + ): string; encodeFunctionData( functionFragment: "minDebtRate", values?: undefined @@ -499,6 +527,14 @@ export interface BBLendingCommonInterface extends utils.Interface { functionFragment: "minMintFee()", values?: undefined ): string; + encodeFunctionData( + functionFragment: "minMintFeeStart", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "minMintFeeStart()", + values?: undefined + ): string; encodeFunctionData( functionFragment: "nonces", values: [PromiseOrValue] @@ -625,6 +661,14 @@ export interface BBLendingCommonInterface extends utils.Interface { functionFragment: "rateValidDuration()", values?: undefined ): string; + encodeFunctionData( + functionFragment: "setLeverageExecutor", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "setLeverageExecutor(address)", + values: [PromiseOrValue] + ): string; encodeFunctionData( functionFragment: "setMarketConfig", values: [ @@ -947,6 +991,14 @@ export interface BBLendingCommonInterface extends utils.Interface { functionFragment: "isMainMarket()", data: BytesLike ): Result; + decodeFunctionResult( + functionFragment: "leverageExecutor", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "leverageExecutor()", + data: BytesLike + ): Result; decodeFunctionResult( functionFragment: "liquidationBonusAmount", data: BytesLike @@ -992,6 +1044,14 @@ export interface BBLendingCommonInterface extends utils.Interface { functionFragment: "maxMintFee()", data: BytesLike ): Result; + decodeFunctionResult( + functionFragment: "maxMintFeeStart", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "maxMintFeeStart()", + data: BytesLike + ): Result; decodeFunctionResult( functionFragment: "minDebtRate", data: BytesLike @@ -1013,6 +1073,14 @@ export interface BBLendingCommonInterface extends utils.Interface { functionFragment: "minMintFee()", data: BytesLike ): Result; + decodeFunctionResult( + functionFragment: "minMintFeeStart", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "minMintFeeStart()", + data: BytesLike + ): Result; decodeFunctionResult(functionFragment: "nonces", data: BytesLike): Result; decodeFunctionResult( functionFragment: "nonces(address)", @@ -1098,6 +1166,14 @@ export interface BBLendingCommonInterface extends utils.Interface { functionFragment: "rateValidDuration()", data: BytesLike ): Result; + decodeFunctionResult( + functionFragment: "setLeverageExecutor", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "setLeverageExecutor(address)", + data: BytesLike + ): Result; decodeFunctionResult( functionFragment: "setMarketConfig", data: BytesLike @@ -1202,6 +1278,7 @@ export interface BBLendingCommonInterface extends utils.Interface { "ConservatorUpdated(address,address)": EventFragment; "DebtRateAgainstEthUpdated(uint256,uint256)": EventFragment; "ExchangeRateDurationUpdated(uint256,uint256)": EventFragment; + "LeverageExecutorSet(address,address)": EventFragment; "Liquidated(address,address[],uint256,uint256,uint256,uint256)": EventFragment; "LiquidationMultiplierUpdated(uint256,uint256)": EventFragment; "LogAccrue(uint256,uint64)": EventFragment; @@ -1219,6 +1296,7 @@ export interface BBLendingCommonInterface extends utils.Interface { "PausedUpdated(uint8,bool,bool)": EventFragment; "Transfer(address,address,uint256)": EventFragment; "UpdateMinMaxMintFee(uint256,uint256,uint256,uint256)": EventFragment; + "UpdateMinMaxMintRange(uint256,uint256,uint256,uint256)": EventFragment; }; getEvent(nameOrSignatureOrTopic: "Approval"): EventFragment; @@ -1249,6 +1327,10 @@ export interface BBLendingCommonInterface extends utils.Interface { getEvent( nameOrSignatureOrTopic: "ExchangeRateDurationUpdated(uint256,uint256)" ): EventFragment; + getEvent(nameOrSignatureOrTopic: "LeverageExecutorSet"): EventFragment; + getEvent( + nameOrSignatureOrTopic: "LeverageExecutorSet(address,address)" + ): EventFragment; getEvent(nameOrSignatureOrTopic: "Liquidated"): EventFragment; getEvent( nameOrSignatureOrTopic: "Liquidated(address,address[],uint256,uint256,uint256,uint256)" @@ -1311,6 +1393,10 @@ export interface BBLendingCommonInterface extends utils.Interface { getEvent( nameOrSignatureOrTopic: "UpdateMinMaxMintFee(uint256,uint256,uint256,uint256)" ): EventFragment; + getEvent(nameOrSignatureOrTopic: "UpdateMinMaxMintRange"): EventFragment; + getEvent( + nameOrSignatureOrTopic: "UpdateMinMaxMintRange(uint256,uint256,uint256,uint256)" + ): EventFragment; } export interface ApprovalEventObject { @@ -1347,8 +1433,8 @@ export type AssetOracleDataUpdatedEventFilter = TypedEventFilter; export interface AssetOracleUpdatedEventObject { - _oldVal: string; - _newVal: string; + oldVal: string; + newVal: string; } export type AssetOracleUpdatedEvent = TypedEvent< [string, string], @@ -1394,6 +1480,18 @@ export type ExchangeRateDurationUpdatedEvent = TypedEvent< export type ExchangeRateDurationUpdatedEventFilter = TypedEventFilter; +export interface LeverageExecutorSetEventObject { + oldVal: string; + newVal: string; +} +export type LeverageExecutorSetEvent = TypedEvent< + [string, string], + LeverageExecutorSetEventObject +>; + +export type LeverageExecutorSetEventFilter = + TypedEventFilter; + export interface LiquidatedEventObject { liquidator: string; users: string[]; @@ -1595,6 +1693,20 @@ export type UpdateMinMaxMintFeeEvent = TypedEvent< export type UpdateMinMaxMintFeeEventFilter = TypedEventFilter; +export interface UpdateMinMaxMintRangeEventObject { + oldMin: BigNumber; + newMin: BigNumber; + oldMax: BigNumber; + newMax: BigNumber; +} +export type UpdateMinMaxMintRangeEvent = TypedEvent< + [BigNumber, BigNumber, BigNumber, BigNumber], + UpdateMinMaxMintRangeEventObject +>; + +export type UpdateMinMaxMintRangeEventFilter = + TypedEventFilter; + export interface BBLendingCommon extends BaseContract { contractName: "BBLendingCommon"; @@ -1826,6 +1938,10 @@ export interface BBLendingCommon extends BaseContract { "isMainMarket()"(overrides?: CallOverrides): Promise<[boolean]>; + leverageExecutor(overrides?: CallOverrides): Promise<[string]>; + + "leverageExecutor()"(overrides?: CallOverrides): Promise<[string]>; + liquidationBonusAmount(overrides?: CallOverrides): Promise<[BigNumber]>; "liquidationBonusAmount()"(overrides?: CallOverrides): Promise<[BigNumber]>; @@ -1854,6 +1970,10 @@ export interface BBLendingCommon extends BaseContract { "maxMintFee()"(overrides?: CallOverrides): Promise<[BigNumber]>; + maxMintFeeStart(overrides?: CallOverrides): Promise<[BigNumber]>; + + "maxMintFeeStart()"(overrides?: CallOverrides): Promise<[BigNumber]>; + minDebtRate(overrides?: CallOverrides): Promise<[BigNumber]>; "minDebtRate()"(overrides?: CallOverrides): Promise<[BigNumber]>; @@ -1866,6 +1986,10 @@ export interface BBLendingCommon extends BaseContract { "minMintFee()"(overrides?: CallOverrides): Promise<[BigNumber]>; + minMintFeeStart(overrides?: CallOverrides): Promise<[BigNumber]>; + + "minMintFeeStart()"(overrides?: CallOverrides): Promise<[BigNumber]>; + nonces( owner: PromiseOrValue, overrides?: CallOverrides @@ -1984,6 +2108,16 @@ export interface BBLendingCommon extends BaseContract { "rateValidDuration()"(overrides?: CallOverrides): Promise<[BigNumber]>; + setLeverageExecutor( + _executor: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "setLeverageExecutor(address)"( + _executor: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + setMarketConfig( _oracle: PromiseOrValue, _oracleData: PromiseOrValue, @@ -2323,6 +2457,10 @@ export interface BBLendingCommon extends BaseContract { "isMainMarket()"(overrides?: CallOverrides): Promise; + leverageExecutor(overrides?: CallOverrides): Promise; + + "leverageExecutor()"(overrides?: CallOverrides): Promise; + liquidationBonusAmount(overrides?: CallOverrides): Promise; "liquidationBonusAmount()"(overrides?: CallOverrides): Promise; @@ -2351,6 +2489,10 @@ export interface BBLendingCommon extends BaseContract { "maxMintFee()"(overrides?: CallOverrides): Promise; + maxMintFeeStart(overrides?: CallOverrides): Promise; + + "maxMintFeeStart()"(overrides?: CallOverrides): Promise; + minDebtRate(overrides?: CallOverrides): Promise; "minDebtRate()"(overrides?: CallOverrides): Promise; @@ -2363,6 +2505,10 @@ export interface BBLendingCommon extends BaseContract { "minMintFee()"(overrides?: CallOverrides): Promise; + minMintFeeStart(overrides?: CallOverrides): Promise; + + "minMintFeeStart()"(overrides?: CallOverrides): Promise; + nonces( owner: PromiseOrValue, overrides?: CallOverrides @@ -2481,6 +2627,16 @@ export interface BBLendingCommon extends BaseContract { "rateValidDuration()"(overrides?: CallOverrides): Promise; + setLeverageExecutor( + _executor: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "setLeverageExecutor(address)"( + _executor: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + setMarketConfig( _oracle: PromiseOrValue, _oracleData: PromiseOrValue, @@ -2808,6 +2964,10 @@ export interface BBLendingCommon extends BaseContract { "isMainMarket()"(overrides?: CallOverrides): Promise; + leverageExecutor(overrides?: CallOverrides): Promise; + + "leverageExecutor()"(overrides?: CallOverrides): Promise; + liquidationBonusAmount(overrides?: CallOverrides): Promise; "liquidationBonusAmount()"(overrides?: CallOverrides): Promise; @@ -2836,6 +2996,10 @@ export interface BBLendingCommon extends BaseContract { "maxMintFee()"(overrides?: CallOverrides): Promise; + maxMintFeeStart(overrides?: CallOverrides): Promise; + + "maxMintFeeStart()"(overrides?: CallOverrides): Promise; + minDebtRate(overrides?: CallOverrides): Promise; "minDebtRate()"(overrides?: CallOverrides): Promise; @@ -2848,6 +3012,10 @@ export interface BBLendingCommon extends BaseContract { "minMintFee()"(overrides?: CallOverrides): Promise; + minMintFeeStart(overrides?: CallOverrides): Promise; + + "minMintFeeStart()"(overrides?: CallOverrides): Promise; + nonces( owner: PromiseOrValue, overrides?: CallOverrides @@ -2966,6 +3134,16 @@ export interface BBLendingCommon extends BaseContract { "rateValidDuration()"(overrides?: CallOverrides): Promise; + setLeverageExecutor( + _executor: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "setLeverageExecutor(address)"( + _executor: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + setMarketConfig( _oracle: PromiseOrValue, _oracleData: PromiseOrValue, @@ -3132,12 +3310,12 @@ export interface BBLendingCommon extends BaseContract { AssetOracleDataUpdated(): AssetOracleDataUpdatedEventFilter; "AssetOracleUpdated(address,address)"( - _oldVal?: PromiseOrValue | null, - _newVal?: PromiseOrValue | null + oldVal?: PromiseOrValue | null, + newVal?: PromiseOrValue | null ): AssetOracleUpdatedEventFilter; AssetOracleUpdated( - _oldVal?: PromiseOrValue | null, - _newVal?: PromiseOrValue | null + oldVal?: PromiseOrValue | null, + newVal?: PromiseOrValue | null ): AssetOracleUpdatedEventFilter; "ConservatorUpdated(address,address)"( @@ -3167,6 +3345,15 @@ export interface BBLendingCommon extends BaseContract { _newVal?: null ): ExchangeRateDurationUpdatedEventFilter; + "LeverageExecutorSet(address,address)"( + oldVal?: PromiseOrValue | null, + newVal?: PromiseOrValue | null + ): LeverageExecutorSetEventFilter; + LeverageExecutorSet( + oldVal?: PromiseOrValue | null, + newVal?: PromiseOrValue | null + ): LeverageExecutorSetEventFilter; + "Liquidated(address,address[],uint256,uint256,uint256,uint256)"( liquidator?: PromiseOrValue | null, users?: PromiseOrValue[] | null, @@ -3335,6 +3522,19 @@ export interface BBLendingCommon extends BaseContract { oldMax?: PromiseOrValue | null, newMax?: null ): UpdateMinMaxMintFeeEventFilter; + + "UpdateMinMaxMintRange(uint256,uint256,uint256,uint256)"( + oldMin?: PromiseOrValue | null, + newMin?: PromiseOrValue | null, + oldMax?: PromiseOrValue | null, + newMax?: null + ): UpdateMinMaxMintRangeEventFilter; + UpdateMinMaxMintRange( + oldMin?: PromiseOrValue | null, + newMin?: PromiseOrValue | null, + oldMax?: PromiseOrValue | null, + newMax?: null + ): UpdateMinMaxMintRangeEventFilter; }; estimateGas: { @@ -3518,6 +3718,10 @@ export interface BBLendingCommon extends BaseContract { "isMainMarket()"(overrides?: CallOverrides): Promise; + leverageExecutor(overrides?: CallOverrides): Promise; + + "leverageExecutor()"(overrides?: CallOverrides): Promise; + liquidationBonusAmount(overrides?: CallOverrides): Promise; "liquidationBonusAmount()"(overrides?: CallOverrides): Promise; @@ -3546,6 +3750,10 @@ export interface BBLendingCommon extends BaseContract { "maxMintFee()"(overrides?: CallOverrides): Promise; + maxMintFeeStart(overrides?: CallOverrides): Promise; + + "maxMintFeeStart()"(overrides?: CallOverrides): Promise; + minDebtRate(overrides?: CallOverrides): Promise; "minDebtRate()"(overrides?: CallOverrides): Promise; @@ -3558,6 +3766,10 @@ export interface BBLendingCommon extends BaseContract { "minMintFee()"(overrides?: CallOverrides): Promise; + minMintFeeStart(overrides?: CallOverrides): Promise; + + "minMintFeeStart()"(overrides?: CallOverrides): Promise; + nonces( owner: PromiseOrValue, overrides?: CallOverrides @@ -3676,6 +3888,16 @@ export interface BBLendingCommon extends BaseContract { "rateValidDuration()"(overrides?: CallOverrides): Promise; + setLeverageExecutor( + _executor: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "setLeverageExecutor(address)"( + _executor: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + setMarketConfig( _oracle: PromiseOrValue, _oracleData: PromiseOrValue, @@ -4002,6 +4224,12 @@ export interface BBLendingCommon extends BaseContract { "isMainMarket()"(overrides?: CallOverrides): Promise; + leverageExecutor(overrides?: CallOverrides): Promise; + + "leverageExecutor()"( + overrides?: CallOverrides + ): Promise; + liquidationBonusAmount( overrides?: CallOverrides ): Promise; @@ -4042,6 +4270,12 @@ export interface BBLendingCommon extends BaseContract { "maxMintFee()"(overrides?: CallOverrides): Promise; + maxMintFeeStart(overrides?: CallOverrides): Promise; + + "maxMintFeeStart()"( + overrides?: CallOverrides + ): Promise; + minDebtRate(overrides?: CallOverrides): Promise; "minDebtRate()"(overrides?: CallOverrides): Promise; @@ -4058,6 +4292,12 @@ export interface BBLendingCommon extends BaseContract { "minMintFee()"(overrides?: CallOverrides): Promise; + minMintFeeStart(overrides?: CallOverrides): Promise; + + "minMintFeeStart()"( + overrides?: CallOverrides + ): Promise; + nonces( owner: PromiseOrValue, overrides?: CallOverrides @@ -4178,6 +4418,16 @@ export interface BBLendingCommon extends BaseContract { overrides?: CallOverrides ): Promise; + setLeverageExecutor( + _executor: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "setLeverageExecutor(address)"( + _executor: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + setMarketConfig( _oracle: PromiseOrValue, _oracleData: PromiseOrValue, diff --git a/src/typechain/tapioca-bar/markets/bigBang/BBLeverage.ts b/src/typechain/tapioca-bar/markets/bigBang/BBLeverage.ts index 4d91ef90..9e5c99c1 100644 --- a/src/typechain/tapioca-bar/markets/bigBang/BBLeverage.ts +++ b/src/typechain/tapioca-bar/markets/bigBang/BBLeverage.ts @@ -41,7 +41,7 @@ export interface BBLeverageInterface extends utils.Interface { "assetOracle()": FunctionFragment; "assetOracleData()": FunctionFragment; "balanceOf(address)": FunctionFragment; - "buyCollateral(address,uint256,uint256,uint256,address,bytes)": FunctionFragment; + "buyCollateral(address,uint256,uint256,bytes)": FunctionFragment; "callerFee()": FunctionFragment; "claimOwnership()": FunctionFragment; "collateral()": FunctionFragment; @@ -57,15 +57,18 @@ export interface BBLeverageInterface extends utils.Interface { "getDebtRate()": FunctionFragment; "getTotalDebt()": FunctionFragment; "isMainMarket()": FunctionFragment; + "leverageExecutor()": FunctionFragment; "liquidationBonusAmount()": FunctionFragment; "liquidationCollateralizationRate()": FunctionFragment; "liquidationMultiplier()": FunctionFragment; "maxDebtRate()": FunctionFragment; "maxLiquidatorReward()": FunctionFragment; "maxMintFee()": FunctionFragment; + "maxMintFeeStart()": FunctionFragment; "minDebtRate()": FunctionFragment; "minLiquidatorReward()": FunctionFragment; "minMintFee()": FunctionFragment; + "minMintFeeStart()": FunctionFragment; "nonces(address)": FunctionFragment; "openingFees(address)": FunctionFragment; "oracle()": FunctionFragment; @@ -80,7 +83,8 @@ export interface BBLeverageInterface extends utils.Interface { "protocolFee()": FunctionFragment; "rateTimestamp()": FunctionFragment; "rateValidDuration()": FunctionFragment; - "sellCollateral(address,uint256,uint256,address,bytes)": FunctionFragment; + "sellCollateral(address,uint256,bytes)": FunctionFragment; + "setLeverageExecutor(address)": FunctionFragment; "setMarketConfig(address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)": FunctionFragment; "totalBorrow()": FunctionFragment; "totalBorrowCap()": FunctionFragment; @@ -123,7 +127,7 @@ export interface BBLeverageInterface extends utils.Interface { | "balanceOf" | "balanceOf(address)" | "buyCollateral" - | "buyCollateral(address,uint256,uint256,uint256,address,bytes)" + | "buyCollateral(address,uint256,uint256,bytes)" | "callerFee" | "callerFee()" | "claimOwnership" @@ -154,6 +158,8 @@ export interface BBLeverageInterface extends utils.Interface { | "getTotalDebt()" | "isMainMarket" | "isMainMarket()" + | "leverageExecutor" + | "leverageExecutor()" | "liquidationBonusAmount" | "liquidationBonusAmount()" | "liquidationCollateralizationRate" @@ -166,12 +172,16 @@ export interface BBLeverageInterface extends utils.Interface { | "maxLiquidatorReward()" | "maxMintFee" | "maxMintFee()" + | "maxMintFeeStart" + | "maxMintFeeStart()" | "minDebtRate" | "minDebtRate()" | "minLiquidatorReward" | "minLiquidatorReward()" | "minMintFee" | "minMintFee()" + | "minMintFeeStart" + | "minMintFeeStart()" | "nonces" | "nonces(address)" | "openingFees" @@ -201,7 +211,9 @@ export interface BBLeverageInterface extends utils.Interface { | "rateValidDuration" | "rateValidDuration()" | "sellCollateral" - | "sellCollateral(address,uint256,uint256,address,bytes)" + | "sellCollateral(address,uint256,bytes)" + | "setLeverageExecutor" + | "setLeverageExecutor(address)" | "setMarketConfig" | "setMarketConfig(address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)" | "totalBorrow" @@ -314,19 +326,15 @@ export interface BBLeverageInterface extends utils.Interface { PromiseOrValue, PromiseOrValue, PromiseOrValue, - PromiseOrValue, - PromiseOrValue, PromiseOrValue ] ): string; encodeFunctionData( - functionFragment: "buyCollateral(address,uint256,uint256,uint256,address,bytes)", + functionFragment: "buyCollateral(address,uint256,uint256,bytes)", values: [ PromiseOrValue, PromiseOrValue, PromiseOrValue, - PromiseOrValue, - PromiseOrValue, PromiseOrValue ] ): string; @@ -455,6 +463,14 @@ export interface BBLeverageInterface extends utils.Interface { functionFragment: "isMainMarket()", values?: undefined ): string; + encodeFunctionData( + functionFragment: "leverageExecutor", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "leverageExecutor()", + values?: undefined + ): string; encodeFunctionData( functionFragment: "liquidationBonusAmount", values?: undefined @@ -503,6 +519,14 @@ export interface BBLeverageInterface extends utils.Interface { functionFragment: "maxMintFee()", values?: undefined ): string; + encodeFunctionData( + functionFragment: "maxMintFeeStart", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "maxMintFeeStart()", + values?: undefined + ): string; encodeFunctionData( functionFragment: "minDebtRate", values?: undefined @@ -527,6 +551,14 @@ export interface BBLeverageInterface extends utils.Interface { functionFragment: "minMintFee()", values?: undefined ): string; + encodeFunctionData( + functionFragment: "minMintFeeStart", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "minMintFeeStart()", + values?: undefined + ): string; encodeFunctionData( functionFragment: "nonces", values: [PromiseOrValue] @@ -658,21 +690,25 @@ export interface BBLeverageInterface extends utils.Interface { values: [ PromiseOrValue, PromiseOrValue, - PromiseOrValue, - PromiseOrValue, PromiseOrValue ] ): string; encodeFunctionData( - functionFragment: "sellCollateral(address,uint256,uint256,address,bytes)", + functionFragment: "sellCollateral(address,uint256,bytes)", values: [ PromiseOrValue, PromiseOrValue, - PromiseOrValue, - PromiseOrValue, PromiseOrValue ] ): string; + encodeFunctionData( + functionFragment: "setLeverageExecutor", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "setLeverageExecutor(address)", + values: [PromiseOrValue] + ): string; encodeFunctionData( functionFragment: "setMarketConfig", values: [ @@ -886,7 +922,7 @@ export interface BBLeverageInterface extends utils.Interface { data: BytesLike ): Result; decodeFunctionResult( - functionFragment: "buyCollateral(address,uint256,uint256,uint256,address,bytes)", + functionFragment: "buyCollateral(address,uint256,uint256,bytes)", data: BytesLike ): Result; decodeFunctionResult(functionFragment: "callerFee", data: BytesLike): Result; @@ -1003,6 +1039,14 @@ export interface BBLeverageInterface extends utils.Interface { functionFragment: "isMainMarket()", data: BytesLike ): Result; + decodeFunctionResult( + functionFragment: "leverageExecutor", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "leverageExecutor()", + data: BytesLike + ): Result; decodeFunctionResult( functionFragment: "liquidationBonusAmount", data: BytesLike @@ -1048,6 +1092,14 @@ export interface BBLeverageInterface extends utils.Interface { functionFragment: "maxMintFee()", data: BytesLike ): Result; + decodeFunctionResult( + functionFragment: "maxMintFeeStart", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "maxMintFeeStart()", + data: BytesLike + ): Result; decodeFunctionResult( functionFragment: "minDebtRate", data: BytesLike @@ -1069,6 +1121,14 @@ export interface BBLeverageInterface extends utils.Interface { functionFragment: "minMintFee()", data: BytesLike ): Result; + decodeFunctionResult( + functionFragment: "minMintFeeStart", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "minMintFeeStart()", + data: BytesLike + ): Result; decodeFunctionResult(functionFragment: "nonces", data: BytesLike): Result; decodeFunctionResult( functionFragment: "nonces(address)", @@ -1159,7 +1219,15 @@ export interface BBLeverageInterface extends utils.Interface { data: BytesLike ): Result; decodeFunctionResult( - functionFragment: "sellCollateral(address,uint256,uint256,address,bytes)", + functionFragment: "sellCollateral(address,uint256,bytes)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "setLeverageExecutor", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "setLeverageExecutor(address)", data: BytesLike ): Result; decodeFunctionResult( @@ -1266,6 +1334,7 @@ export interface BBLeverageInterface extends utils.Interface { "ConservatorUpdated(address,address)": EventFragment; "DebtRateAgainstEthUpdated(uint256,uint256)": EventFragment; "ExchangeRateDurationUpdated(uint256,uint256)": EventFragment; + "LeverageExecutorSet(address,address)": EventFragment; "Liquidated(address,address[],uint256,uint256,uint256,uint256)": EventFragment; "LiquidationMultiplierUpdated(uint256,uint256)": EventFragment; "LogAccrue(uint256,uint64)": EventFragment; @@ -1283,6 +1352,7 @@ export interface BBLeverageInterface extends utils.Interface { "PausedUpdated(uint8,bool,bool)": EventFragment; "Transfer(address,address,uint256)": EventFragment; "UpdateMinMaxMintFee(uint256,uint256,uint256,uint256)": EventFragment; + "UpdateMinMaxMintRange(uint256,uint256,uint256,uint256)": EventFragment; }; getEvent(nameOrSignatureOrTopic: "Approval"): EventFragment; @@ -1313,6 +1383,10 @@ export interface BBLeverageInterface extends utils.Interface { getEvent( nameOrSignatureOrTopic: "ExchangeRateDurationUpdated(uint256,uint256)" ): EventFragment; + getEvent(nameOrSignatureOrTopic: "LeverageExecutorSet"): EventFragment; + getEvent( + nameOrSignatureOrTopic: "LeverageExecutorSet(address,address)" + ): EventFragment; getEvent(nameOrSignatureOrTopic: "Liquidated"): EventFragment; getEvent( nameOrSignatureOrTopic: "Liquidated(address,address[],uint256,uint256,uint256,uint256)" @@ -1375,6 +1449,10 @@ export interface BBLeverageInterface extends utils.Interface { getEvent( nameOrSignatureOrTopic: "UpdateMinMaxMintFee(uint256,uint256,uint256,uint256)" ): EventFragment; + getEvent(nameOrSignatureOrTopic: "UpdateMinMaxMintRange"): EventFragment; + getEvent( + nameOrSignatureOrTopic: "UpdateMinMaxMintRange(uint256,uint256,uint256,uint256)" + ): EventFragment; } export interface ApprovalEventObject { @@ -1411,8 +1489,8 @@ export type AssetOracleDataUpdatedEventFilter = TypedEventFilter; export interface AssetOracleUpdatedEventObject { - _oldVal: string; - _newVal: string; + oldVal: string; + newVal: string; } export type AssetOracleUpdatedEvent = TypedEvent< [string, string], @@ -1458,6 +1536,18 @@ export type ExchangeRateDurationUpdatedEvent = TypedEvent< export type ExchangeRateDurationUpdatedEventFilter = TypedEventFilter; +export interface LeverageExecutorSetEventObject { + oldVal: string; + newVal: string; +} +export type LeverageExecutorSetEvent = TypedEvent< + [string, string], + LeverageExecutorSetEventObject +>; + +export type LeverageExecutorSetEventFilter = + TypedEventFilter; + export interface LiquidatedEventObject { liquidator: string; users: string[]; @@ -1659,6 +1749,20 @@ export type UpdateMinMaxMintFeeEvent = TypedEvent< export type UpdateMinMaxMintFeeEventFilter = TypedEventFilter; +export interface UpdateMinMaxMintRangeEventObject { + oldMin: BigNumber; + newMin: BigNumber; + oldMax: BigNumber; + newMax: BigNumber; +} +export type UpdateMinMaxMintRangeEvent = TypedEvent< + [BigNumber, BigNumber, BigNumber, BigNumber], + UpdateMinMaxMintRangeEventObject +>; + +export type UpdateMinMaxMintRangeEventFilter = + TypedEventFilter; + export interface BBLeverage extends BaseContract { contractName: "BBLeverage"; @@ -1790,19 +1894,15 @@ export interface BBLeverage extends BaseContract { from: PromiseOrValue, borrowAmount: PromiseOrValue, supplyAmount: PromiseOrValue, - minAmountOut: PromiseOrValue, - swapper: PromiseOrValue, - dexData: PromiseOrValue, + data: PromiseOrValue, overrides?: Overrides & { from?: PromiseOrValue } ): Promise; - "buyCollateral(address,uint256,uint256,uint256,address,bytes)"( + "buyCollateral(address,uint256,uint256,bytes)"( from: PromiseOrValue, borrowAmount: PromiseOrValue, supplyAmount: PromiseOrValue, - minAmountOut: PromiseOrValue, - swapper: PromiseOrValue, - dexData: PromiseOrValue, + data: PromiseOrValue, overrides?: Overrides & { from?: PromiseOrValue } ): Promise; @@ -1910,6 +2010,10 @@ export interface BBLeverage extends BaseContract { "isMainMarket()"(overrides?: CallOverrides): Promise<[boolean]>; + leverageExecutor(overrides?: CallOverrides): Promise<[string]>; + + "leverageExecutor()"(overrides?: CallOverrides): Promise<[string]>; + liquidationBonusAmount(overrides?: CallOverrides): Promise<[BigNumber]>; "liquidationBonusAmount()"(overrides?: CallOverrides): Promise<[BigNumber]>; @@ -1938,6 +2042,10 @@ export interface BBLeverage extends BaseContract { "maxMintFee()"(overrides?: CallOverrides): Promise<[BigNumber]>; + maxMintFeeStart(overrides?: CallOverrides): Promise<[BigNumber]>; + + "maxMintFeeStart()"(overrides?: CallOverrides): Promise<[BigNumber]>; + minDebtRate(overrides?: CallOverrides): Promise<[BigNumber]>; "minDebtRate()"(overrides?: CallOverrides): Promise<[BigNumber]>; @@ -1950,6 +2058,10 @@ export interface BBLeverage extends BaseContract { "minMintFee()"(overrides?: CallOverrides): Promise<[BigNumber]>; + minMintFeeStart(overrides?: CallOverrides): Promise<[BigNumber]>; + + "minMintFeeStart()"(overrides?: CallOverrides): Promise<[BigNumber]>; + nonces( owner: PromiseOrValue, overrides?: CallOverrides @@ -2071,18 +2183,24 @@ export interface BBLeverage extends BaseContract { sellCollateral( from: PromiseOrValue, share: PromiseOrValue, - minAmountOut: PromiseOrValue, - swapper: PromiseOrValue, - dexData: PromiseOrValue, + data: PromiseOrValue, overrides?: Overrides & { from?: PromiseOrValue } ): Promise; - "sellCollateral(address,uint256,uint256,address,bytes)"( + "sellCollateral(address,uint256,bytes)"( from: PromiseOrValue, share: PromiseOrValue, - minAmountOut: PromiseOrValue, - swapper: PromiseOrValue, - dexData: PromiseOrValue, + data: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setLeverageExecutor( + _executor: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "setLeverageExecutor(address)"( + _executor: PromiseOrValue, overrides?: Overrides & { from?: PromiseOrValue } ): Promise; @@ -2327,19 +2445,15 @@ export interface BBLeverage extends BaseContract { from: PromiseOrValue, borrowAmount: PromiseOrValue, supplyAmount: PromiseOrValue, - minAmountOut: PromiseOrValue, - swapper: PromiseOrValue, - dexData: PromiseOrValue, + data: PromiseOrValue, overrides?: Overrides & { from?: PromiseOrValue } ): Promise; - "buyCollateral(address,uint256,uint256,uint256,address,bytes)"( + "buyCollateral(address,uint256,uint256,bytes)"( from: PromiseOrValue, borrowAmount: PromiseOrValue, supplyAmount: PromiseOrValue, - minAmountOut: PromiseOrValue, - swapper: PromiseOrValue, - dexData: PromiseOrValue, + data: PromiseOrValue, overrides?: Overrides & { from?: PromiseOrValue } ): Promise; @@ -2445,6 +2559,10 @@ export interface BBLeverage extends BaseContract { "isMainMarket()"(overrides?: CallOverrides): Promise; + leverageExecutor(overrides?: CallOverrides): Promise; + + "leverageExecutor()"(overrides?: CallOverrides): Promise; + liquidationBonusAmount(overrides?: CallOverrides): Promise; "liquidationBonusAmount()"(overrides?: CallOverrides): Promise; @@ -2473,6 +2591,10 @@ export interface BBLeverage extends BaseContract { "maxMintFee()"(overrides?: CallOverrides): Promise; + maxMintFeeStart(overrides?: CallOverrides): Promise; + + "maxMintFeeStart()"(overrides?: CallOverrides): Promise; + minDebtRate(overrides?: CallOverrides): Promise; "minDebtRate()"(overrides?: CallOverrides): Promise; @@ -2485,6 +2607,10 @@ export interface BBLeverage extends BaseContract { "minMintFee()"(overrides?: CallOverrides): Promise; + minMintFeeStart(overrides?: CallOverrides): Promise; + + "minMintFeeStart()"(overrides?: CallOverrides): Promise; + nonces( owner: PromiseOrValue, overrides?: CallOverrides @@ -2606,18 +2732,24 @@ export interface BBLeverage extends BaseContract { sellCollateral( from: PromiseOrValue, share: PromiseOrValue, - minAmountOut: PromiseOrValue, - swapper: PromiseOrValue, - dexData: PromiseOrValue, + data: PromiseOrValue, overrides?: Overrides & { from?: PromiseOrValue } ): Promise; - "sellCollateral(address,uint256,uint256,address,bytes)"( + "sellCollateral(address,uint256,bytes)"( from: PromiseOrValue, share: PromiseOrValue, - minAmountOut: PromiseOrValue, - swapper: PromiseOrValue, - dexData: PromiseOrValue, + data: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setLeverageExecutor( + _executor: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "setLeverageExecutor(address)"( + _executor: PromiseOrValue, overrides?: Overrides & { from?: PromiseOrValue } ): Promise; @@ -2854,19 +2986,15 @@ export interface BBLeverage extends BaseContract { from: PromiseOrValue, borrowAmount: PromiseOrValue, supplyAmount: PromiseOrValue, - minAmountOut: PromiseOrValue, - swapper: PromiseOrValue, - dexData: PromiseOrValue, + data: PromiseOrValue, overrides?: CallOverrides ): Promise; - "buyCollateral(address,uint256,uint256,uint256,address,bytes)"( + "buyCollateral(address,uint256,uint256,bytes)"( from: PromiseOrValue, borrowAmount: PromiseOrValue, supplyAmount: PromiseOrValue, - minAmountOut: PromiseOrValue, - swapper: PromiseOrValue, - dexData: PromiseOrValue, + data: PromiseOrValue, overrides?: CallOverrides ): Promise; @@ -2968,6 +3096,10 @@ export interface BBLeverage extends BaseContract { "isMainMarket()"(overrides?: CallOverrides): Promise; + leverageExecutor(overrides?: CallOverrides): Promise; + + "leverageExecutor()"(overrides?: CallOverrides): Promise; + liquidationBonusAmount(overrides?: CallOverrides): Promise; "liquidationBonusAmount()"(overrides?: CallOverrides): Promise; @@ -2996,6 +3128,10 @@ export interface BBLeverage extends BaseContract { "maxMintFee()"(overrides?: CallOverrides): Promise; + maxMintFeeStart(overrides?: CallOverrides): Promise; + + "maxMintFeeStart()"(overrides?: CallOverrides): Promise; + minDebtRate(overrides?: CallOverrides): Promise; "minDebtRate()"(overrides?: CallOverrides): Promise; @@ -3008,6 +3144,10 @@ export interface BBLeverage extends BaseContract { "minMintFee()"(overrides?: CallOverrides): Promise; + minMintFeeStart(overrides?: CallOverrides): Promise; + + "minMintFeeStart()"(overrides?: CallOverrides): Promise; + nonces( owner: PromiseOrValue, overrides?: CallOverrides @@ -3129,21 +3269,27 @@ export interface BBLeverage extends BaseContract { sellCollateral( from: PromiseOrValue, share: PromiseOrValue, - minAmountOut: PromiseOrValue, - swapper: PromiseOrValue, - dexData: PromiseOrValue, + data: PromiseOrValue, overrides?: CallOverrides ): Promise; - "sellCollateral(address,uint256,uint256,address,bytes)"( + "sellCollateral(address,uint256,bytes)"( from: PromiseOrValue, share: PromiseOrValue, - minAmountOut: PromiseOrValue, - swapper: PromiseOrValue, - dexData: PromiseOrValue, + data: PromiseOrValue, overrides?: CallOverrides ): Promise; + setLeverageExecutor( + _executor: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "setLeverageExecutor(address)"( + _executor: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + setMarketConfig( _oracle: PromiseOrValue, _oracleData: PromiseOrValue, @@ -3310,12 +3456,12 @@ export interface BBLeverage extends BaseContract { AssetOracleDataUpdated(): AssetOracleDataUpdatedEventFilter; "AssetOracleUpdated(address,address)"( - _oldVal?: PromiseOrValue | null, - _newVal?: PromiseOrValue | null + oldVal?: PromiseOrValue | null, + newVal?: PromiseOrValue | null ): AssetOracleUpdatedEventFilter; AssetOracleUpdated( - _oldVal?: PromiseOrValue | null, - _newVal?: PromiseOrValue | null + oldVal?: PromiseOrValue | null, + newVal?: PromiseOrValue | null ): AssetOracleUpdatedEventFilter; "ConservatorUpdated(address,address)"( @@ -3345,6 +3491,15 @@ export interface BBLeverage extends BaseContract { _newVal?: null ): ExchangeRateDurationUpdatedEventFilter; + "LeverageExecutorSet(address,address)"( + oldVal?: PromiseOrValue | null, + newVal?: PromiseOrValue | null + ): LeverageExecutorSetEventFilter; + LeverageExecutorSet( + oldVal?: PromiseOrValue | null, + newVal?: PromiseOrValue | null + ): LeverageExecutorSetEventFilter; + "Liquidated(address,address[],uint256,uint256,uint256,uint256)"( liquidator?: PromiseOrValue | null, users?: PromiseOrValue[] | null, @@ -3513,6 +3668,19 @@ export interface BBLeverage extends BaseContract { oldMax?: PromiseOrValue | null, newMax?: null ): UpdateMinMaxMintFeeEventFilter; + + "UpdateMinMaxMintRange(uint256,uint256,uint256,uint256)"( + oldMin?: PromiseOrValue | null, + newMin?: PromiseOrValue | null, + oldMax?: PromiseOrValue | null, + newMax?: null + ): UpdateMinMaxMintRangeEventFilter; + UpdateMinMaxMintRange( + oldMin?: PromiseOrValue | null, + newMin?: PromiseOrValue | null, + oldMax?: PromiseOrValue | null, + newMax?: null + ): UpdateMinMaxMintRangeEventFilter; }; estimateGas: { @@ -3610,19 +3778,15 @@ export interface BBLeverage extends BaseContract { from: PromiseOrValue, borrowAmount: PromiseOrValue, supplyAmount: PromiseOrValue, - minAmountOut: PromiseOrValue, - swapper: PromiseOrValue, - dexData: PromiseOrValue, + data: PromiseOrValue, overrides?: Overrides & { from?: PromiseOrValue } ): Promise; - "buyCollateral(address,uint256,uint256,uint256,address,bytes)"( + "buyCollateral(address,uint256,uint256,bytes)"( from: PromiseOrValue, borrowAmount: PromiseOrValue, supplyAmount: PromiseOrValue, - minAmountOut: PromiseOrValue, - swapper: PromiseOrValue, - dexData: PromiseOrValue, + data: PromiseOrValue, overrides?: Overrides & { from?: PromiseOrValue } ): Promise; @@ -3716,6 +3880,10 @@ export interface BBLeverage extends BaseContract { "isMainMarket()"(overrides?: CallOverrides): Promise; + leverageExecutor(overrides?: CallOverrides): Promise; + + "leverageExecutor()"(overrides?: CallOverrides): Promise; + liquidationBonusAmount(overrides?: CallOverrides): Promise; "liquidationBonusAmount()"(overrides?: CallOverrides): Promise; @@ -3744,6 +3912,10 @@ export interface BBLeverage extends BaseContract { "maxMintFee()"(overrides?: CallOverrides): Promise; + maxMintFeeStart(overrides?: CallOverrides): Promise; + + "maxMintFeeStart()"(overrides?: CallOverrides): Promise; + minDebtRate(overrides?: CallOverrides): Promise; "minDebtRate()"(overrides?: CallOverrides): Promise; @@ -3756,6 +3928,10 @@ export interface BBLeverage extends BaseContract { "minMintFee()"(overrides?: CallOverrides): Promise; + minMintFeeStart(overrides?: CallOverrides): Promise; + + "minMintFeeStart()"(overrides?: CallOverrides): Promise; + nonces( owner: PromiseOrValue, overrides?: CallOverrides @@ -3877,18 +4053,24 @@ export interface BBLeverage extends BaseContract { sellCollateral( from: PromiseOrValue, share: PromiseOrValue, - minAmountOut: PromiseOrValue, - swapper: PromiseOrValue, - dexData: PromiseOrValue, + data: PromiseOrValue, overrides?: Overrides & { from?: PromiseOrValue } ): Promise; - "sellCollateral(address,uint256,uint256,address,bytes)"( + "sellCollateral(address,uint256,bytes)"( from: PromiseOrValue, share: PromiseOrValue, - minAmountOut: PromiseOrValue, - swapper: PromiseOrValue, - dexData: PromiseOrValue, + data: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setLeverageExecutor( + _executor: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "setLeverageExecutor(address)"( + _executor: PromiseOrValue, overrides?: Overrides & { from?: PromiseOrValue } ): Promise; @@ -4122,19 +4304,15 @@ export interface BBLeverage extends BaseContract { from: PromiseOrValue, borrowAmount: PromiseOrValue, supplyAmount: PromiseOrValue, - minAmountOut: PromiseOrValue, - swapper: PromiseOrValue, - dexData: PromiseOrValue, + data: PromiseOrValue, overrides?: Overrides & { from?: PromiseOrValue } ): Promise; - "buyCollateral(address,uint256,uint256,uint256,address,bytes)"( + "buyCollateral(address,uint256,uint256,bytes)"( from: PromiseOrValue, borrowAmount: PromiseOrValue, supplyAmount: PromiseOrValue, - minAmountOut: PromiseOrValue, - swapper: PromiseOrValue, - dexData: PromiseOrValue, + data: PromiseOrValue, overrides?: Overrides & { from?: PromiseOrValue } ): Promise; @@ -4238,6 +4416,12 @@ export interface BBLeverage extends BaseContract { "isMainMarket()"(overrides?: CallOverrides): Promise; + leverageExecutor(overrides?: CallOverrides): Promise; + + "leverageExecutor()"( + overrides?: CallOverrides + ): Promise; + liquidationBonusAmount( overrides?: CallOverrides ): Promise; @@ -4278,6 +4462,12 @@ export interface BBLeverage extends BaseContract { "maxMintFee()"(overrides?: CallOverrides): Promise; + maxMintFeeStart(overrides?: CallOverrides): Promise; + + "maxMintFeeStart()"( + overrides?: CallOverrides + ): Promise; + minDebtRate(overrides?: CallOverrides): Promise; "minDebtRate()"(overrides?: CallOverrides): Promise; @@ -4294,6 +4484,12 @@ export interface BBLeverage extends BaseContract { "minMintFee()"(overrides?: CallOverrides): Promise; + minMintFeeStart(overrides?: CallOverrides): Promise; + + "minMintFeeStart()"( + overrides?: CallOverrides + ): Promise; + nonces( owner: PromiseOrValue, overrides?: CallOverrides @@ -4417,18 +4613,24 @@ export interface BBLeverage extends BaseContract { sellCollateral( from: PromiseOrValue, share: PromiseOrValue, - minAmountOut: PromiseOrValue, - swapper: PromiseOrValue, - dexData: PromiseOrValue, + data: PromiseOrValue, overrides?: Overrides & { from?: PromiseOrValue } ): Promise; - "sellCollateral(address,uint256,uint256,address,bytes)"( + "sellCollateral(address,uint256,bytes)"( from: PromiseOrValue, share: PromiseOrValue, - minAmountOut: PromiseOrValue, - swapper: PromiseOrValue, - dexData: PromiseOrValue, + data: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setLeverageExecutor( + _executor: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "setLeverageExecutor(address)"( + _executor: PromiseOrValue, overrides?: Overrides & { from?: PromiseOrValue } ): Promise; diff --git a/src/typechain/tapioca-bar/markets/bigBang/BBLiquidation.ts b/src/typechain/tapioca-bar/markets/bigBang/BBLiquidation.ts index db8d613b..852f362f 100644 --- a/src/typechain/tapioca-bar/markets/bigBang/BBLiquidation.ts +++ b/src/typechain/tapioca-bar/markets/bigBang/BBLiquidation.ts @@ -56,6 +56,7 @@ export interface BBLiquidationInterface extends utils.Interface { "getDebtRate()": FunctionFragment; "getTotalDebt()": FunctionFragment; "isMainMarket()": FunctionFragment; + "leverageExecutor()": FunctionFragment; "liquidate(address[],uint256[],address[],bytes[])": FunctionFragment; "liquidateBadDebt(address,address,address,bytes)": FunctionFragment; "liquidationBonusAmount()": FunctionFragment; @@ -64,9 +65,11 @@ export interface BBLiquidationInterface extends utils.Interface { "maxDebtRate()": FunctionFragment; "maxLiquidatorReward()": FunctionFragment; "maxMintFee()": FunctionFragment; + "maxMintFeeStart()": FunctionFragment; "minDebtRate()": FunctionFragment; "minLiquidatorReward()": FunctionFragment; "minMintFee()": FunctionFragment; + "minMintFeeStart()": FunctionFragment; "nonces(address)": FunctionFragment; "openingFees(address)": FunctionFragment; "oracle()": FunctionFragment; @@ -81,6 +84,7 @@ export interface BBLiquidationInterface extends utils.Interface { "protocolFee()": FunctionFragment; "rateTimestamp()": FunctionFragment; "rateValidDuration()": FunctionFragment; + "setLeverageExecutor(address)": FunctionFragment; "setMarketConfig(address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)": FunctionFragment; "totalBorrow()": FunctionFragment; "totalBorrowCap()": FunctionFragment; @@ -152,6 +156,8 @@ export interface BBLiquidationInterface extends utils.Interface { | "getTotalDebt()" | "isMainMarket" | "isMainMarket()" + | "leverageExecutor" + | "leverageExecutor()" | "liquidate" | "liquidate(address[],uint256[],address[],bytes[])" | "liquidateBadDebt" @@ -168,12 +174,16 @@ export interface BBLiquidationInterface extends utils.Interface { | "maxLiquidatorReward()" | "maxMintFee" | "maxMintFee()" + | "maxMintFeeStart" + | "maxMintFeeStart()" | "minDebtRate" | "minDebtRate()" | "minLiquidatorReward" | "minLiquidatorReward()" | "minMintFee" | "minMintFee()" + | "minMintFeeStart" + | "minMintFeeStart()" | "nonces" | "nonces(address)" | "openingFees" @@ -202,6 +212,8 @@ export interface BBLiquidationInterface extends utils.Interface { | "rateTimestamp()" | "rateValidDuration" | "rateValidDuration()" + | "setLeverageExecutor" + | "setLeverageExecutor(address)" | "setMarketConfig" | "setMarketConfig(address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)" | "totalBorrow" @@ -433,6 +445,14 @@ export interface BBLiquidationInterface extends utils.Interface { functionFragment: "isMainMarket()", values?: undefined ): string; + encodeFunctionData( + functionFragment: "leverageExecutor", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "leverageExecutor()", + values?: undefined + ): string; encodeFunctionData( functionFragment: "liquidate", values: [ @@ -517,6 +537,14 @@ export interface BBLiquidationInterface extends utils.Interface { functionFragment: "maxMintFee()", values?: undefined ): string; + encodeFunctionData( + functionFragment: "maxMintFeeStart", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "maxMintFeeStart()", + values?: undefined + ): string; encodeFunctionData( functionFragment: "minDebtRate", values?: undefined @@ -541,6 +569,14 @@ export interface BBLiquidationInterface extends utils.Interface { functionFragment: "minMintFee()", values?: undefined ): string; + encodeFunctionData( + functionFragment: "minMintFeeStart", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "minMintFeeStart()", + values?: undefined + ): string; encodeFunctionData( functionFragment: "nonces", values: [PromiseOrValue] @@ -667,6 +703,14 @@ export interface BBLiquidationInterface extends utils.Interface { functionFragment: "rateValidDuration()", values?: undefined ): string; + encodeFunctionData( + functionFragment: "setLeverageExecutor", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "setLeverageExecutor(address)", + values: [PromiseOrValue] + ): string; encodeFunctionData( functionFragment: "setMarketConfig", values: [ @@ -989,6 +1033,14 @@ export interface BBLiquidationInterface extends utils.Interface { functionFragment: "isMainMarket()", data: BytesLike ): Result; + decodeFunctionResult( + functionFragment: "leverageExecutor", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "leverageExecutor()", + data: BytesLike + ): Result; decodeFunctionResult(functionFragment: "liquidate", data: BytesLike): Result; decodeFunctionResult( functionFragment: "liquidate(address[],uint256[],address[],bytes[])", @@ -1047,6 +1099,14 @@ export interface BBLiquidationInterface extends utils.Interface { functionFragment: "maxMintFee()", data: BytesLike ): Result; + decodeFunctionResult( + functionFragment: "maxMintFeeStart", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "maxMintFeeStart()", + data: BytesLike + ): Result; decodeFunctionResult( functionFragment: "minDebtRate", data: BytesLike @@ -1068,6 +1128,14 @@ export interface BBLiquidationInterface extends utils.Interface { functionFragment: "minMintFee()", data: BytesLike ): Result; + decodeFunctionResult( + functionFragment: "minMintFeeStart", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "minMintFeeStart()", + data: BytesLike + ): Result; decodeFunctionResult(functionFragment: "nonces", data: BytesLike): Result; decodeFunctionResult( functionFragment: "nonces(address)", @@ -1153,6 +1221,14 @@ export interface BBLiquidationInterface extends utils.Interface { functionFragment: "rateValidDuration()", data: BytesLike ): Result; + decodeFunctionResult( + functionFragment: "setLeverageExecutor", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "setLeverageExecutor(address)", + data: BytesLike + ): Result; decodeFunctionResult( functionFragment: "setMarketConfig", data: BytesLike @@ -1257,6 +1333,7 @@ export interface BBLiquidationInterface extends utils.Interface { "ConservatorUpdated(address,address)": EventFragment; "DebtRateAgainstEthUpdated(uint256,uint256)": EventFragment; "ExchangeRateDurationUpdated(uint256,uint256)": EventFragment; + "LeverageExecutorSet(address,address)": EventFragment; "Liquidated(address,address[],uint256,uint256,uint256,uint256)": EventFragment; "LiquidationMultiplierUpdated(uint256,uint256)": EventFragment; "LogAccrue(uint256,uint64)": EventFragment; @@ -1274,6 +1351,7 @@ export interface BBLiquidationInterface extends utils.Interface { "PausedUpdated(uint8,bool,bool)": EventFragment; "Transfer(address,address,uint256)": EventFragment; "UpdateMinMaxMintFee(uint256,uint256,uint256,uint256)": EventFragment; + "UpdateMinMaxMintRange(uint256,uint256,uint256,uint256)": EventFragment; }; getEvent(nameOrSignatureOrTopic: "Approval"): EventFragment; @@ -1304,6 +1382,10 @@ export interface BBLiquidationInterface extends utils.Interface { getEvent( nameOrSignatureOrTopic: "ExchangeRateDurationUpdated(uint256,uint256)" ): EventFragment; + getEvent(nameOrSignatureOrTopic: "LeverageExecutorSet"): EventFragment; + getEvent( + nameOrSignatureOrTopic: "LeverageExecutorSet(address,address)" + ): EventFragment; getEvent(nameOrSignatureOrTopic: "Liquidated"): EventFragment; getEvent( nameOrSignatureOrTopic: "Liquidated(address,address[],uint256,uint256,uint256,uint256)" @@ -1366,6 +1448,10 @@ export interface BBLiquidationInterface extends utils.Interface { getEvent( nameOrSignatureOrTopic: "UpdateMinMaxMintFee(uint256,uint256,uint256,uint256)" ): EventFragment; + getEvent(nameOrSignatureOrTopic: "UpdateMinMaxMintRange"): EventFragment; + getEvent( + nameOrSignatureOrTopic: "UpdateMinMaxMintRange(uint256,uint256,uint256,uint256)" + ): EventFragment; } export interface ApprovalEventObject { @@ -1402,8 +1488,8 @@ export type AssetOracleDataUpdatedEventFilter = TypedEventFilter; export interface AssetOracleUpdatedEventObject { - _oldVal: string; - _newVal: string; + oldVal: string; + newVal: string; } export type AssetOracleUpdatedEvent = TypedEvent< [string, string], @@ -1449,6 +1535,18 @@ export type ExchangeRateDurationUpdatedEvent = TypedEvent< export type ExchangeRateDurationUpdatedEventFilter = TypedEventFilter; +export interface LeverageExecutorSetEventObject { + oldVal: string; + newVal: string; +} +export type LeverageExecutorSetEvent = TypedEvent< + [string, string], + LeverageExecutorSetEventObject +>; + +export type LeverageExecutorSetEventFilter = + TypedEventFilter; + export interface LiquidatedEventObject { liquidator: string; users: string[]; @@ -1650,6 +1748,20 @@ export type UpdateMinMaxMintFeeEvent = TypedEvent< export type UpdateMinMaxMintFeeEventFilter = TypedEventFilter; +export interface UpdateMinMaxMintRangeEventObject { + oldMin: BigNumber; + newMin: BigNumber; + oldMax: BigNumber; + newMax: BigNumber; +} +export type UpdateMinMaxMintRangeEvent = TypedEvent< + [BigNumber, BigNumber, BigNumber, BigNumber], + UpdateMinMaxMintRangeEventObject +>; + +export type UpdateMinMaxMintRangeEventFilter = + TypedEventFilter; + export interface BBLiquidation extends BaseContract { contractName: "BBLiquidation"; @@ -1881,6 +1993,10 @@ export interface BBLiquidation extends BaseContract { "isMainMarket()"(overrides?: CallOverrides): Promise<[boolean]>; + leverageExecutor(overrides?: CallOverrides): Promise<[string]>; + + "leverageExecutor()"(overrides?: CallOverrides): Promise<[string]>; + liquidate( users: PromiseOrValue[], maxBorrowParts: PromiseOrValue[], @@ -1941,6 +2057,10 @@ export interface BBLiquidation extends BaseContract { "maxMintFee()"(overrides?: CallOverrides): Promise<[BigNumber]>; + maxMintFeeStart(overrides?: CallOverrides): Promise<[BigNumber]>; + + "maxMintFeeStart()"(overrides?: CallOverrides): Promise<[BigNumber]>; + minDebtRate(overrides?: CallOverrides): Promise<[BigNumber]>; "minDebtRate()"(overrides?: CallOverrides): Promise<[BigNumber]>; @@ -1953,6 +2073,10 @@ export interface BBLiquidation extends BaseContract { "minMintFee()"(overrides?: CallOverrides): Promise<[BigNumber]>; + minMintFeeStart(overrides?: CallOverrides): Promise<[BigNumber]>; + + "minMintFeeStart()"(overrides?: CallOverrides): Promise<[BigNumber]>; + nonces( owner: PromiseOrValue, overrides?: CallOverrides @@ -2071,6 +2195,16 @@ export interface BBLiquidation extends BaseContract { "rateValidDuration()"(overrides?: CallOverrides): Promise<[BigNumber]>; + setLeverageExecutor( + _executor: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "setLeverageExecutor(address)"( + _executor: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + setMarketConfig( _oracle: PromiseOrValue, _oracleData: PromiseOrValue, @@ -2410,6 +2544,10 @@ export interface BBLiquidation extends BaseContract { "isMainMarket()"(overrides?: CallOverrides): Promise; + leverageExecutor(overrides?: CallOverrides): Promise; + + "leverageExecutor()"(overrides?: CallOverrides): Promise; + liquidate( users: PromiseOrValue[], maxBorrowParts: PromiseOrValue[], @@ -2470,6 +2608,10 @@ export interface BBLiquidation extends BaseContract { "maxMintFee()"(overrides?: CallOverrides): Promise; + maxMintFeeStart(overrides?: CallOverrides): Promise; + + "maxMintFeeStart()"(overrides?: CallOverrides): Promise; + minDebtRate(overrides?: CallOverrides): Promise; "minDebtRate()"(overrides?: CallOverrides): Promise; @@ -2482,6 +2624,10 @@ export interface BBLiquidation extends BaseContract { "minMintFee()"(overrides?: CallOverrides): Promise; + minMintFeeStart(overrides?: CallOverrides): Promise; + + "minMintFeeStart()"(overrides?: CallOverrides): Promise; + nonces( owner: PromiseOrValue, overrides?: CallOverrides @@ -2600,6 +2746,16 @@ export interface BBLiquidation extends BaseContract { "rateValidDuration()"(overrides?: CallOverrides): Promise; + setLeverageExecutor( + _executor: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "setLeverageExecutor(address)"( + _executor: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + setMarketConfig( _oracle: PromiseOrValue, _oracleData: PromiseOrValue, @@ -2927,6 +3083,10 @@ export interface BBLiquidation extends BaseContract { "isMainMarket()"(overrides?: CallOverrides): Promise; + leverageExecutor(overrides?: CallOverrides): Promise; + + "leverageExecutor()"(overrides?: CallOverrides): Promise; + liquidate( users: PromiseOrValue[], maxBorrowParts: PromiseOrValue[], @@ -2987,6 +3147,10 @@ export interface BBLiquidation extends BaseContract { "maxMintFee()"(overrides?: CallOverrides): Promise; + maxMintFeeStart(overrides?: CallOverrides): Promise; + + "maxMintFeeStart()"(overrides?: CallOverrides): Promise; + minDebtRate(overrides?: CallOverrides): Promise; "minDebtRate()"(overrides?: CallOverrides): Promise; @@ -2999,6 +3163,10 @@ export interface BBLiquidation extends BaseContract { "minMintFee()"(overrides?: CallOverrides): Promise; + minMintFeeStart(overrides?: CallOverrides): Promise; + + "minMintFeeStart()"(overrides?: CallOverrides): Promise; + nonces( owner: PromiseOrValue, overrides?: CallOverrides @@ -3117,6 +3285,16 @@ export interface BBLiquidation extends BaseContract { "rateValidDuration()"(overrides?: CallOverrides): Promise; + setLeverageExecutor( + _executor: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "setLeverageExecutor(address)"( + _executor: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + setMarketConfig( _oracle: PromiseOrValue, _oracleData: PromiseOrValue, @@ -3283,12 +3461,12 @@ export interface BBLiquidation extends BaseContract { AssetOracleDataUpdated(): AssetOracleDataUpdatedEventFilter; "AssetOracleUpdated(address,address)"( - _oldVal?: PromiseOrValue | null, - _newVal?: PromiseOrValue | null + oldVal?: PromiseOrValue | null, + newVal?: PromiseOrValue | null ): AssetOracleUpdatedEventFilter; AssetOracleUpdated( - _oldVal?: PromiseOrValue | null, - _newVal?: PromiseOrValue | null + oldVal?: PromiseOrValue | null, + newVal?: PromiseOrValue | null ): AssetOracleUpdatedEventFilter; "ConservatorUpdated(address,address)"( @@ -3318,6 +3496,15 @@ export interface BBLiquidation extends BaseContract { _newVal?: null ): ExchangeRateDurationUpdatedEventFilter; + "LeverageExecutorSet(address,address)"( + oldVal?: PromiseOrValue | null, + newVal?: PromiseOrValue | null + ): LeverageExecutorSetEventFilter; + LeverageExecutorSet( + oldVal?: PromiseOrValue | null, + newVal?: PromiseOrValue | null + ): LeverageExecutorSetEventFilter; + "Liquidated(address,address[],uint256,uint256,uint256,uint256)"( liquidator?: PromiseOrValue | null, users?: PromiseOrValue[] | null, @@ -3486,6 +3673,19 @@ export interface BBLiquidation extends BaseContract { oldMax?: PromiseOrValue | null, newMax?: null ): UpdateMinMaxMintFeeEventFilter; + + "UpdateMinMaxMintRange(uint256,uint256,uint256,uint256)"( + oldMin?: PromiseOrValue | null, + newMin?: PromiseOrValue | null, + oldMax?: PromiseOrValue | null, + newMax?: null + ): UpdateMinMaxMintRangeEventFilter; + UpdateMinMaxMintRange( + oldMin?: PromiseOrValue | null, + newMin?: PromiseOrValue | null, + oldMax?: PromiseOrValue | null, + newMax?: null + ): UpdateMinMaxMintRangeEventFilter; }; estimateGas: { @@ -3669,6 +3869,10 @@ export interface BBLiquidation extends BaseContract { "isMainMarket()"(overrides?: CallOverrides): Promise; + leverageExecutor(overrides?: CallOverrides): Promise; + + "leverageExecutor()"(overrides?: CallOverrides): Promise; + liquidate( users: PromiseOrValue[], maxBorrowParts: PromiseOrValue[], @@ -3729,6 +3933,10 @@ export interface BBLiquidation extends BaseContract { "maxMintFee()"(overrides?: CallOverrides): Promise; + maxMintFeeStart(overrides?: CallOverrides): Promise; + + "maxMintFeeStart()"(overrides?: CallOverrides): Promise; + minDebtRate(overrides?: CallOverrides): Promise; "minDebtRate()"(overrides?: CallOverrides): Promise; @@ -3741,6 +3949,10 @@ export interface BBLiquidation extends BaseContract { "minMintFee()"(overrides?: CallOverrides): Promise; + minMintFeeStart(overrides?: CallOverrides): Promise; + + "minMintFeeStart()"(overrides?: CallOverrides): Promise; + nonces( owner: PromiseOrValue, overrides?: CallOverrides @@ -3859,6 +4071,16 @@ export interface BBLiquidation extends BaseContract { "rateValidDuration()"(overrides?: CallOverrides): Promise; + setLeverageExecutor( + _executor: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "setLeverageExecutor(address)"( + _executor: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + setMarketConfig( _oracle: PromiseOrValue, _oracleData: PromiseOrValue, @@ -4185,6 +4407,12 @@ export interface BBLiquidation extends BaseContract { "isMainMarket()"(overrides?: CallOverrides): Promise; + leverageExecutor(overrides?: CallOverrides): Promise; + + "leverageExecutor()"( + overrides?: CallOverrides + ): Promise; + liquidate( users: PromiseOrValue[], maxBorrowParts: PromiseOrValue[], @@ -4257,6 +4485,12 @@ export interface BBLiquidation extends BaseContract { "maxMintFee()"(overrides?: CallOverrides): Promise; + maxMintFeeStart(overrides?: CallOverrides): Promise; + + "maxMintFeeStart()"( + overrides?: CallOverrides + ): Promise; + minDebtRate(overrides?: CallOverrides): Promise; "minDebtRate()"(overrides?: CallOverrides): Promise; @@ -4273,6 +4507,12 @@ export interface BBLiquidation extends BaseContract { "minMintFee()"(overrides?: CallOverrides): Promise; + minMintFeeStart(overrides?: CallOverrides): Promise; + + "minMintFeeStart()"( + overrides?: CallOverrides + ): Promise; + nonces( owner: PromiseOrValue, overrides?: CallOverrides @@ -4393,6 +4633,16 @@ export interface BBLiquidation extends BaseContract { overrides?: CallOverrides ): Promise; + setLeverageExecutor( + _executor: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "setLeverageExecutor(address)"( + _executor: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + setMarketConfig( _oracle: PromiseOrValue, _oracleData: PromiseOrValue, diff --git a/src/typechain/tapioca-bar/markets/bigBang/BBStorage.ts b/src/typechain/tapioca-bar/markets/bigBang/BBStorage.ts index ecb5a549..eabc3f24 100644 --- a/src/typechain/tapioca-bar/markets/bigBang/BBStorage.ts +++ b/src/typechain/tapioca-bar/markets/bigBang/BBStorage.ts @@ -53,15 +53,18 @@ export interface BBStorageInterface extends utils.Interface { "debtStartPoint()": FunctionFragment; "exchangeRate()": FunctionFragment; "isMainMarket()": FunctionFragment; + "leverageExecutor()": FunctionFragment; "liquidationBonusAmount()": FunctionFragment; "liquidationCollateralizationRate()": FunctionFragment; "liquidationMultiplier()": FunctionFragment; "maxDebtRate()": FunctionFragment; "maxLiquidatorReward()": FunctionFragment; "maxMintFee()": FunctionFragment; + "maxMintFeeStart()": FunctionFragment; "minDebtRate()": FunctionFragment; "minLiquidatorReward()": FunctionFragment; "minMintFee()": FunctionFragment; + "minMintFeeStart()": FunctionFragment; "nonces(address)": FunctionFragment; "openingFees(address)": FunctionFragment; "oracle()": FunctionFragment; @@ -76,6 +79,7 @@ export interface BBStorageInterface extends utils.Interface { "protocolFee()": FunctionFragment; "rateTimestamp()": FunctionFragment; "rateValidDuration()": FunctionFragment; + "setLeverageExecutor(address)": FunctionFragment; "setMarketConfig(address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)": FunctionFragment; "totalBorrow()": FunctionFragment; "totalBorrowCap()": FunctionFragment; @@ -141,6 +145,8 @@ export interface BBStorageInterface extends utils.Interface { | "exchangeRate()" | "isMainMarket" | "isMainMarket()" + | "leverageExecutor" + | "leverageExecutor()" | "liquidationBonusAmount" | "liquidationBonusAmount()" | "liquidationCollateralizationRate" @@ -153,12 +159,16 @@ export interface BBStorageInterface extends utils.Interface { | "maxLiquidatorReward()" | "maxMintFee" | "maxMintFee()" + | "maxMintFeeStart" + | "maxMintFeeStart()" | "minDebtRate" | "minDebtRate()" | "minLiquidatorReward" | "minLiquidatorReward()" | "minMintFee" | "minMintFee()" + | "minMintFeeStart" + | "minMintFeeStart()" | "nonces" | "nonces(address)" | "openingFees" @@ -187,6 +197,8 @@ export interface BBStorageInterface extends utils.Interface { | "rateTimestamp()" | "rateValidDuration" | "rateValidDuration()" + | "setLeverageExecutor" + | "setLeverageExecutor(address)" | "setMarketConfig" | "setMarketConfig(address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)" | "totalBorrow" @@ -400,6 +412,14 @@ export interface BBStorageInterface extends utils.Interface { functionFragment: "isMainMarket()", values?: undefined ): string; + encodeFunctionData( + functionFragment: "leverageExecutor", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "leverageExecutor()", + values?: undefined + ): string; encodeFunctionData( functionFragment: "liquidationBonusAmount", values?: undefined @@ -448,6 +468,14 @@ export interface BBStorageInterface extends utils.Interface { functionFragment: "maxMintFee()", values?: undefined ): string; + encodeFunctionData( + functionFragment: "maxMintFeeStart", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "maxMintFeeStart()", + values?: undefined + ): string; encodeFunctionData( functionFragment: "minDebtRate", values?: undefined @@ -472,6 +500,14 @@ export interface BBStorageInterface extends utils.Interface { functionFragment: "minMintFee()", values?: undefined ): string; + encodeFunctionData( + functionFragment: "minMintFeeStart", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "minMintFeeStart()", + values?: undefined + ): string; encodeFunctionData( functionFragment: "nonces", values: [PromiseOrValue] @@ -598,6 +634,14 @@ export interface BBStorageInterface extends utils.Interface { functionFragment: "rateValidDuration()", values?: undefined ): string; + encodeFunctionData( + functionFragment: "setLeverageExecutor", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "setLeverageExecutor(address)", + values: [PromiseOrValue] + ): string; encodeFunctionData( functionFragment: "setMarketConfig", values: [ @@ -902,6 +946,14 @@ export interface BBStorageInterface extends utils.Interface { functionFragment: "isMainMarket()", data: BytesLike ): Result; + decodeFunctionResult( + functionFragment: "leverageExecutor", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "leverageExecutor()", + data: BytesLike + ): Result; decodeFunctionResult( functionFragment: "liquidationBonusAmount", data: BytesLike @@ -947,6 +999,14 @@ export interface BBStorageInterface extends utils.Interface { functionFragment: "maxMintFee()", data: BytesLike ): Result; + decodeFunctionResult( + functionFragment: "maxMintFeeStart", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "maxMintFeeStart()", + data: BytesLike + ): Result; decodeFunctionResult( functionFragment: "minDebtRate", data: BytesLike @@ -968,6 +1028,14 @@ export interface BBStorageInterface extends utils.Interface { functionFragment: "minMintFee()", data: BytesLike ): Result; + decodeFunctionResult( + functionFragment: "minMintFeeStart", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "minMintFeeStart()", + data: BytesLike + ): Result; decodeFunctionResult(functionFragment: "nonces", data: BytesLike): Result; decodeFunctionResult( functionFragment: "nonces(address)", @@ -1053,6 +1121,14 @@ export interface BBStorageInterface extends utils.Interface { functionFragment: "rateValidDuration()", data: BytesLike ): Result; + decodeFunctionResult( + functionFragment: "setLeverageExecutor", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "setLeverageExecutor(address)", + data: BytesLike + ): Result; decodeFunctionResult( functionFragment: "setMarketConfig", data: BytesLike @@ -1157,6 +1233,7 @@ export interface BBStorageInterface extends utils.Interface { "ConservatorUpdated(address,address)": EventFragment; "DebtRateAgainstEthUpdated(uint256,uint256)": EventFragment; "ExchangeRateDurationUpdated(uint256,uint256)": EventFragment; + "LeverageExecutorSet(address,address)": EventFragment; "Liquidated(address,address[],uint256,uint256,uint256,uint256)": EventFragment; "LiquidationMultiplierUpdated(uint256,uint256)": EventFragment; "LogAccrue(uint256,uint64)": EventFragment; @@ -1174,6 +1251,7 @@ export interface BBStorageInterface extends utils.Interface { "PausedUpdated(uint8,bool,bool)": EventFragment; "Transfer(address,address,uint256)": EventFragment; "UpdateMinMaxMintFee(uint256,uint256,uint256,uint256)": EventFragment; + "UpdateMinMaxMintRange(uint256,uint256,uint256,uint256)": EventFragment; }; getEvent(nameOrSignatureOrTopic: "Approval"): EventFragment; @@ -1204,6 +1282,10 @@ export interface BBStorageInterface extends utils.Interface { getEvent( nameOrSignatureOrTopic: "ExchangeRateDurationUpdated(uint256,uint256)" ): EventFragment; + getEvent(nameOrSignatureOrTopic: "LeverageExecutorSet"): EventFragment; + getEvent( + nameOrSignatureOrTopic: "LeverageExecutorSet(address,address)" + ): EventFragment; getEvent(nameOrSignatureOrTopic: "Liquidated"): EventFragment; getEvent( nameOrSignatureOrTopic: "Liquidated(address,address[],uint256,uint256,uint256,uint256)" @@ -1266,6 +1348,10 @@ export interface BBStorageInterface extends utils.Interface { getEvent( nameOrSignatureOrTopic: "UpdateMinMaxMintFee(uint256,uint256,uint256,uint256)" ): EventFragment; + getEvent(nameOrSignatureOrTopic: "UpdateMinMaxMintRange"): EventFragment; + getEvent( + nameOrSignatureOrTopic: "UpdateMinMaxMintRange(uint256,uint256,uint256,uint256)" + ): EventFragment; } export interface ApprovalEventObject { @@ -1302,8 +1388,8 @@ export type AssetOracleDataUpdatedEventFilter = TypedEventFilter; export interface AssetOracleUpdatedEventObject { - _oldVal: string; - _newVal: string; + oldVal: string; + newVal: string; } export type AssetOracleUpdatedEvent = TypedEvent< [string, string], @@ -1349,6 +1435,18 @@ export type ExchangeRateDurationUpdatedEvent = TypedEvent< export type ExchangeRateDurationUpdatedEventFilter = TypedEventFilter; +export interface LeverageExecutorSetEventObject { + oldVal: string; + newVal: string; +} +export type LeverageExecutorSetEvent = TypedEvent< + [string, string], + LeverageExecutorSetEventObject +>; + +export type LeverageExecutorSetEventFilter = + TypedEventFilter; + export interface LiquidatedEventObject { liquidator: string; users: string[]; @@ -1550,6 +1648,20 @@ export type UpdateMinMaxMintFeeEvent = TypedEvent< export type UpdateMinMaxMintFeeEventFilter = TypedEventFilter; +export interface UpdateMinMaxMintRangeEventObject { + oldMin: BigNumber; + newMin: BigNumber; + oldMax: BigNumber; + newMax: BigNumber; +} +export type UpdateMinMaxMintRangeEvent = TypedEvent< + [BigNumber, BigNumber, BigNumber, BigNumber], + UpdateMinMaxMintRangeEventObject +>; + +export type UpdateMinMaxMintRangeEventFilter = + TypedEventFilter; + export interface BBStorage extends BaseContract { contractName: "BBStorage"; @@ -1765,6 +1877,10 @@ export interface BBStorage extends BaseContract { "isMainMarket()"(overrides?: CallOverrides): Promise<[boolean]>; + leverageExecutor(overrides?: CallOverrides): Promise<[string]>; + + "leverageExecutor()"(overrides?: CallOverrides): Promise<[string]>; + liquidationBonusAmount(overrides?: CallOverrides): Promise<[BigNumber]>; "liquidationBonusAmount()"(overrides?: CallOverrides): Promise<[BigNumber]>; @@ -1793,6 +1909,10 @@ export interface BBStorage extends BaseContract { "maxMintFee()"(overrides?: CallOverrides): Promise<[BigNumber]>; + maxMintFeeStart(overrides?: CallOverrides): Promise<[BigNumber]>; + + "maxMintFeeStart()"(overrides?: CallOverrides): Promise<[BigNumber]>; + minDebtRate(overrides?: CallOverrides): Promise<[BigNumber]>; "minDebtRate()"(overrides?: CallOverrides): Promise<[BigNumber]>; @@ -1805,6 +1925,10 @@ export interface BBStorage extends BaseContract { "minMintFee()"(overrides?: CallOverrides): Promise<[BigNumber]>; + minMintFeeStart(overrides?: CallOverrides): Promise<[BigNumber]>; + + "minMintFeeStart()"(overrides?: CallOverrides): Promise<[BigNumber]>; + nonces( owner: PromiseOrValue, overrides?: CallOverrides @@ -1923,6 +2047,16 @@ export interface BBStorage extends BaseContract { "rateValidDuration()"(overrides?: CallOverrides): Promise<[BigNumber]>; + setLeverageExecutor( + _executor: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "setLeverageExecutor(address)"( + _executor: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + setMarketConfig( _oracle: PromiseOrValue, _oracleData: PromiseOrValue, @@ -2246,6 +2380,10 @@ export interface BBStorage extends BaseContract { "isMainMarket()"(overrides?: CallOverrides): Promise; + leverageExecutor(overrides?: CallOverrides): Promise; + + "leverageExecutor()"(overrides?: CallOverrides): Promise; + liquidationBonusAmount(overrides?: CallOverrides): Promise; "liquidationBonusAmount()"(overrides?: CallOverrides): Promise; @@ -2274,6 +2412,10 @@ export interface BBStorage extends BaseContract { "maxMintFee()"(overrides?: CallOverrides): Promise; + maxMintFeeStart(overrides?: CallOverrides): Promise; + + "maxMintFeeStart()"(overrides?: CallOverrides): Promise; + minDebtRate(overrides?: CallOverrides): Promise; "minDebtRate()"(overrides?: CallOverrides): Promise; @@ -2286,6 +2428,10 @@ export interface BBStorage extends BaseContract { "minMintFee()"(overrides?: CallOverrides): Promise; + minMintFeeStart(overrides?: CallOverrides): Promise; + + "minMintFeeStart()"(overrides?: CallOverrides): Promise; + nonces( owner: PromiseOrValue, overrides?: CallOverrides @@ -2404,6 +2550,16 @@ export interface BBStorage extends BaseContract { "rateValidDuration()"(overrides?: CallOverrides): Promise; + setLeverageExecutor( + _executor: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "setLeverageExecutor(address)"( + _executor: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + setMarketConfig( _oracle: PromiseOrValue, _oracleData: PromiseOrValue, @@ -2719,6 +2875,10 @@ export interface BBStorage extends BaseContract { "isMainMarket()"(overrides?: CallOverrides): Promise; + leverageExecutor(overrides?: CallOverrides): Promise; + + "leverageExecutor()"(overrides?: CallOverrides): Promise; + liquidationBonusAmount(overrides?: CallOverrides): Promise; "liquidationBonusAmount()"(overrides?: CallOverrides): Promise; @@ -2747,6 +2907,10 @@ export interface BBStorage extends BaseContract { "maxMintFee()"(overrides?: CallOverrides): Promise; + maxMintFeeStart(overrides?: CallOverrides): Promise; + + "maxMintFeeStart()"(overrides?: CallOverrides): Promise; + minDebtRate(overrides?: CallOverrides): Promise; "minDebtRate()"(overrides?: CallOverrides): Promise; @@ -2759,6 +2923,10 @@ export interface BBStorage extends BaseContract { "minMintFee()"(overrides?: CallOverrides): Promise; + minMintFeeStart(overrides?: CallOverrides): Promise; + + "minMintFeeStart()"(overrides?: CallOverrides): Promise; + nonces( owner: PromiseOrValue, overrides?: CallOverrides @@ -2877,6 +3045,16 @@ export interface BBStorage extends BaseContract { "rateValidDuration()"(overrides?: CallOverrides): Promise; + setLeverageExecutor( + _executor: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "setLeverageExecutor(address)"( + _executor: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + setMarketConfig( _oracle: PromiseOrValue, _oracleData: PromiseOrValue, @@ -3043,12 +3221,12 @@ export interface BBStorage extends BaseContract { AssetOracleDataUpdated(): AssetOracleDataUpdatedEventFilter; "AssetOracleUpdated(address,address)"( - _oldVal?: PromiseOrValue | null, - _newVal?: PromiseOrValue | null + oldVal?: PromiseOrValue | null, + newVal?: PromiseOrValue | null ): AssetOracleUpdatedEventFilter; AssetOracleUpdated( - _oldVal?: PromiseOrValue | null, - _newVal?: PromiseOrValue | null + oldVal?: PromiseOrValue | null, + newVal?: PromiseOrValue | null ): AssetOracleUpdatedEventFilter; "ConservatorUpdated(address,address)"( @@ -3078,6 +3256,15 @@ export interface BBStorage extends BaseContract { _newVal?: null ): ExchangeRateDurationUpdatedEventFilter; + "LeverageExecutorSet(address,address)"( + oldVal?: PromiseOrValue | null, + newVal?: PromiseOrValue | null + ): LeverageExecutorSetEventFilter; + LeverageExecutorSet( + oldVal?: PromiseOrValue | null, + newVal?: PromiseOrValue | null + ): LeverageExecutorSetEventFilter; + "Liquidated(address,address[],uint256,uint256,uint256,uint256)"( liquidator?: PromiseOrValue | null, users?: PromiseOrValue[] | null, @@ -3246,6 +3433,19 @@ export interface BBStorage extends BaseContract { oldMax?: PromiseOrValue | null, newMax?: null ): UpdateMinMaxMintFeeEventFilter; + + "UpdateMinMaxMintRange(uint256,uint256,uint256,uint256)"( + oldMin?: PromiseOrValue | null, + newMin?: PromiseOrValue | null, + oldMax?: PromiseOrValue | null, + newMax?: null + ): UpdateMinMaxMintRangeEventFilter; + UpdateMinMaxMintRange( + oldMin?: PromiseOrValue | null, + newMin?: PromiseOrValue | null, + oldMax?: PromiseOrValue | null, + newMax?: null + ): UpdateMinMaxMintRangeEventFilter; }; estimateGas: { @@ -3413,6 +3613,10 @@ export interface BBStorage extends BaseContract { "isMainMarket()"(overrides?: CallOverrides): Promise; + leverageExecutor(overrides?: CallOverrides): Promise; + + "leverageExecutor()"(overrides?: CallOverrides): Promise; + liquidationBonusAmount(overrides?: CallOverrides): Promise; "liquidationBonusAmount()"(overrides?: CallOverrides): Promise; @@ -3441,6 +3645,10 @@ export interface BBStorage extends BaseContract { "maxMintFee()"(overrides?: CallOverrides): Promise; + maxMintFeeStart(overrides?: CallOverrides): Promise; + + "maxMintFeeStart()"(overrides?: CallOverrides): Promise; + minDebtRate(overrides?: CallOverrides): Promise; "minDebtRate()"(overrides?: CallOverrides): Promise; @@ -3453,6 +3661,10 @@ export interface BBStorage extends BaseContract { "minMintFee()"(overrides?: CallOverrides): Promise; + minMintFeeStart(overrides?: CallOverrides): Promise; + + "minMintFeeStart()"(overrides?: CallOverrides): Promise; + nonces( owner: PromiseOrValue, overrides?: CallOverrides @@ -3571,6 +3783,16 @@ export interface BBStorage extends BaseContract { "rateValidDuration()"(overrides?: CallOverrides): Promise; + setLeverageExecutor( + _executor: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "setLeverageExecutor(address)"( + _executor: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + setMarketConfig( _oracle: PromiseOrValue, _oracleData: PromiseOrValue, @@ -3881,6 +4103,12 @@ export interface BBStorage extends BaseContract { "isMainMarket()"(overrides?: CallOverrides): Promise; + leverageExecutor(overrides?: CallOverrides): Promise; + + "leverageExecutor()"( + overrides?: CallOverrides + ): Promise; + liquidationBonusAmount( overrides?: CallOverrides ): Promise; @@ -3921,6 +4149,12 @@ export interface BBStorage extends BaseContract { "maxMintFee()"(overrides?: CallOverrides): Promise; + maxMintFeeStart(overrides?: CallOverrides): Promise; + + "maxMintFeeStart()"( + overrides?: CallOverrides + ): Promise; + minDebtRate(overrides?: CallOverrides): Promise; "minDebtRate()"(overrides?: CallOverrides): Promise; @@ -3937,6 +4171,12 @@ export interface BBStorage extends BaseContract { "minMintFee()"(overrides?: CallOverrides): Promise; + minMintFeeStart(overrides?: CallOverrides): Promise; + + "minMintFeeStart()"( + overrides?: CallOverrides + ): Promise; + nonces( owner: PromiseOrValue, overrides?: CallOverrides @@ -4057,6 +4297,16 @@ export interface BBStorage extends BaseContract { overrides?: CallOverrides ): Promise; + setLeverageExecutor( + _executor: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "setLeverageExecutor(address)"( + _executor: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + setMarketConfig( _oracle: PromiseOrValue, _oracleData: PromiseOrValue, diff --git a/src/typechain/tapioca-bar/markets/bigBang/BigBang.ts b/src/typechain/tapioca-bar/markets/bigBang/BigBang.ts index d7357eb6..6906e476 100644 --- a/src/typechain/tapioca-bar/markets/bigBang/BigBang.ts +++ b/src/typechain/tapioca-bar/markets/bigBang/BigBang.ts @@ -44,7 +44,7 @@ export interface BigBangInterface extends utils.Interface { "balanceOf(address)": FunctionFragment; "borrow(address,address,uint256)": FunctionFragment; "borrowModule()": FunctionFragment; - "buyCollateral(address,uint256,uint256,uint256,address,bytes)": FunctionFragment; + "buyCollateral(address,uint256,uint256,bytes)": FunctionFragment; "callerFee()": FunctionFragment; "claimOwnership()": FunctionFragment; "collateral()": FunctionFragment; @@ -63,6 +63,7 @@ export interface BigBangInterface extends utils.Interface { "getTotalDebt()": FunctionFragment; "init(bytes)": FunctionFragment; "isMainMarket()": FunctionFragment; + "leverageExecutor()": FunctionFragment; "leverageModule()": FunctionFragment; "liquidate(address[],uint256[],address[],bytes[])": FunctionFragment; "liquidateBadDebt(address,address,address,bytes)": FunctionFragment; @@ -73,9 +74,11 @@ export interface BigBangInterface extends utils.Interface { "maxDebtRate()": FunctionFragment; "maxLiquidatorReward()": FunctionFragment; "maxMintFee()": FunctionFragment; + "maxMintFeeStart()": FunctionFragment; "minDebtRate()": FunctionFragment; "minLiquidatorReward()": FunctionFragment; "minMintFee()": FunctionFragment; + "minMintFeeStart()": FunctionFragment; "nonces(address)": FunctionFragment; "openingFees(address)": FunctionFragment; "oracle()": FunctionFragment; @@ -94,11 +97,13 @@ export interface BigBangInterface extends utils.Interface { "removeCollateral(address,address,uint256)": FunctionFragment; "repay(address,address,bool,uint256)": FunctionFragment; "rescueEth(uint256,address)": FunctionFragment; - "sellCollateral(address,uint256,uint256,address,bytes)": FunctionFragment; + "sellCollateral(address,uint256,bytes)": FunctionFragment; "setAssetOracle(address,bytes)": FunctionFragment; "setBigBangConfig(uint256,uint256,uint256,uint256)": FunctionFragment; + "setLeverageExecutor(address)": FunctionFragment; "setMarketConfig(address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)": FunctionFragment; "setMinAndMaxMintFee(uint256,uint256)": FunctionFragment; + "setMinAndMaxMintRange(uint256,uint256)": FunctionFragment; "totalBorrow()": FunctionFragment; "totalBorrowCap()": FunctionFragment; "totalCollateralShare()": FunctionFragment; @@ -146,7 +151,7 @@ export interface BigBangInterface extends utils.Interface { | "borrowModule" | "borrowModule()" | "buyCollateral" - | "buyCollateral(address,uint256,uint256,uint256,address,bytes)" + | "buyCollateral(address,uint256,uint256,bytes)" | "callerFee" | "callerFee()" | "claimOwnership" @@ -183,6 +188,8 @@ export interface BigBangInterface extends utils.Interface { | "init(bytes)" | "isMainMarket" | "isMainMarket()" + | "leverageExecutor" + | "leverageExecutor()" | "leverageModule" | "leverageModule()" | "liquidate" @@ -203,12 +210,16 @@ export interface BigBangInterface extends utils.Interface { | "maxLiquidatorReward()" | "maxMintFee" | "maxMintFee()" + | "maxMintFeeStart" + | "maxMintFeeStart()" | "minDebtRate" | "minDebtRate()" | "minLiquidatorReward" | "minLiquidatorReward()" | "minMintFee" | "minMintFee()" + | "minMintFeeStart" + | "minMintFeeStart()" | "nonces" | "nonces(address)" | "openingFees" @@ -246,15 +257,19 @@ export interface BigBangInterface extends utils.Interface { | "rescueEth" | "rescueEth(uint256,address)" | "sellCollateral" - | "sellCollateral(address,uint256,uint256,address,bytes)" + | "sellCollateral(address,uint256,bytes)" | "setAssetOracle" | "setAssetOracle(address,bytes)" | "setBigBangConfig" | "setBigBangConfig(uint256,uint256,uint256,uint256)" + | "setLeverageExecutor" + | "setLeverageExecutor(address)" | "setMarketConfig" | "setMarketConfig(address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)" | "setMinAndMaxMintFee" | "setMinAndMaxMintFee(uint256,uint256)" + | "setMinAndMaxMintRange" + | "setMinAndMaxMintRange(uint256,uint256)" | "totalBorrow" | "totalBorrow()" | "totalBorrowCap" @@ -409,19 +424,15 @@ export interface BigBangInterface extends utils.Interface { PromiseOrValue, PromiseOrValue, PromiseOrValue, - PromiseOrValue, - PromiseOrValue, PromiseOrValue ] ): string; encodeFunctionData( - functionFragment: "buyCollateral(address,uint256,uint256,uint256,address,bytes)", + functionFragment: "buyCollateral(address,uint256,uint256,bytes)", values: [ PromiseOrValue, PromiseOrValue, PromiseOrValue, - PromiseOrValue, - PromiseOrValue, PromiseOrValue ] ): string; @@ -574,6 +585,14 @@ export interface BigBangInterface extends utils.Interface { functionFragment: "isMainMarket()", values?: undefined ): string; + encodeFunctionData( + functionFragment: "leverageExecutor", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "leverageExecutor()", + values?: undefined + ): string; encodeFunctionData( functionFragment: "leverageModule", values?: undefined @@ -674,6 +693,14 @@ export interface BigBangInterface extends utils.Interface { functionFragment: "maxMintFee()", values?: undefined ): string; + encodeFunctionData( + functionFragment: "maxMintFeeStart", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "maxMintFeeStart()", + values?: undefined + ): string; encodeFunctionData( functionFragment: "minDebtRate", values?: undefined @@ -698,6 +725,14 @@ export interface BigBangInterface extends utils.Interface { functionFragment: "minMintFee()", values?: undefined ): string; + encodeFunctionData( + functionFragment: "minMintFeeStart", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "minMintFeeStart()", + values?: undefined + ): string; encodeFunctionData( functionFragment: "nonces", values: [PromiseOrValue] @@ -879,18 +914,14 @@ export interface BigBangInterface extends utils.Interface { values: [ PromiseOrValue, PromiseOrValue, - PromiseOrValue, - PromiseOrValue, PromiseOrValue ] ): string; encodeFunctionData( - functionFragment: "sellCollateral(address,uint256,uint256,address,bytes)", + functionFragment: "sellCollateral(address,uint256,bytes)", values: [ PromiseOrValue, PromiseOrValue, - PromiseOrValue, - PromiseOrValue, PromiseOrValue ] ): string; @@ -920,6 +951,14 @@ export interface BigBangInterface extends utils.Interface { PromiseOrValue ] ): string; + encodeFunctionData( + functionFragment: "setLeverageExecutor", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "setLeverageExecutor(address)", + values: [PromiseOrValue] + ): string; encodeFunctionData( functionFragment: "setMarketConfig", values: [ @@ -960,6 +999,14 @@ export interface BigBangInterface extends utils.Interface { functionFragment: "setMinAndMaxMintFee(uint256,uint256)", values: [PromiseOrValue, PromiseOrValue] ): string; + encodeFunctionData( + functionFragment: "setMinAndMaxMintRange", + values: [PromiseOrValue, PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "setMinAndMaxMintRange(uint256,uint256)", + values: [PromiseOrValue, PromiseOrValue] + ): string; encodeFunctionData( functionFragment: "totalBorrow", values?: undefined @@ -1162,7 +1209,7 @@ export interface BigBangInterface extends utils.Interface { data: BytesLike ): Result; decodeFunctionResult( - functionFragment: "buyCollateral(address,uint256,uint256,uint256,address,bytes)", + functionFragment: "buyCollateral(address,uint256,uint256,bytes)", data: BytesLike ): Result; decodeFunctionResult(functionFragment: "callerFee", data: BytesLike): Result; @@ -1297,6 +1344,14 @@ export interface BigBangInterface extends utils.Interface { functionFragment: "isMainMarket()", data: BytesLike ): Result; + decodeFunctionResult( + functionFragment: "leverageExecutor", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "leverageExecutor()", + data: BytesLike + ): Result; decodeFunctionResult( functionFragment: "leverageModule", data: BytesLike @@ -1371,6 +1426,14 @@ export interface BigBangInterface extends utils.Interface { functionFragment: "maxMintFee()", data: BytesLike ): Result; + decodeFunctionResult( + functionFragment: "maxMintFeeStart", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "maxMintFeeStart()", + data: BytesLike + ): Result; decodeFunctionResult( functionFragment: "minDebtRate", data: BytesLike @@ -1392,6 +1455,14 @@ export interface BigBangInterface extends utils.Interface { functionFragment: "minMintFee()", data: BytesLike ): Result; + decodeFunctionResult( + functionFragment: "minMintFeeStart", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "minMintFeeStart()", + data: BytesLike + ): Result; decodeFunctionResult(functionFragment: "nonces", data: BytesLike): Result; decodeFunctionResult( functionFragment: "nonces(address)", @@ -1508,7 +1579,7 @@ export interface BigBangInterface extends utils.Interface { data: BytesLike ): Result; decodeFunctionResult( - functionFragment: "sellCollateral(address,uint256,uint256,address,bytes)", + functionFragment: "sellCollateral(address,uint256,bytes)", data: BytesLike ): Result; decodeFunctionResult( @@ -1527,6 +1598,14 @@ export interface BigBangInterface extends utils.Interface { functionFragment: "setBigBangConfig(uint256,uint256,uint256,uint256)", data: BytesLike ): Result; + decodeFunctionResult( + functionFragment: "setLeverageExecutor", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "setLeverageExecutor(address)", + data: BytesLike + ): Result; decodeFunctionResult( functionFragment: "setMarketConfig", data: BytesLike @@ -1543,6 +1622,14 @@ export interface BigBangInterface extends utils.Interface { functionFragment: "setMinAndMaxMintFee(uint256,uint256)", data: BytesLike ): Result; + decodeFunctionResult( + functionFragment: "setMinAndMaxMintRange", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "setMinAndMaxMintRange(uint256,uint256)", + data: BytesLike + ): Result; decodeFunctionResult( functionFragment: "totalBorrow", data: BytesLike @@ -1639,6 +1726,7 @@ export interface BigBangInterface extends utils.Interface { "ConservatorUpdated(address,address)": EventFragment; "DebtRateAgainstEthUpdated(uint256,uint256)": EventFragment; "ExchangeRateDurationUpdated(uint256,uint256)": EventFragment; + "LeverageExecutorSet(address,address)": EventFragment; "Liquidated(address,address[],uint256,uint256,uint256,uint256)": EventFragment; "LiquidationMultiplierUpdated(uint256,uint256)": EventFragment; "LogAccrue(uint256,uint64)": EventFragment; @@ -1656,6 +1744,7 @@ export interface BigBangInterface extends utils.Interface { "PausedUpdated(uint8,bool,bool)": EventFragment; "Transfer(address,address,uint256)": EventFragment; "UpdateMinMaxMintFee(uint256,uint256,uint256,uint256)": EventFragment; + "UpdateMinMaxMintRange(uint256,uint256,uint256,uint256)": EventFragment; }; getEvent(nameOrSignatureOrTopic: "Approval"): EventFragment; @@ -1686,6 +1775,10 @@ export interface BigBangInterface extends utils.Interface { getEvent( nameOrSignatureOrTopic: "ExchangeRateDurationUpdated(uint256,uint256)" ): EventFragment; + getEvent(nameOrSignatureOrTopic: "LeverageExecutorSet"): EventFragment; + getEvent( + nameOrSignatureOrTopic: "LeverageExecutorSet(address,address)" + ): EventFragment; getEvent(nameOrSignatureOrTopic: "Liquidated"): EventFragment; getEvent( nameOrSignatureOrTopic: "Liquidated(address,address[],uint256,uint256,uint256,uint256)" @@ -1748,6 +1841,10 @@ export interface BigBangInterface extends utils.Interface { getEvent( nameOrSignatureOrTopic: "UpdateMinMaxMintFee(uint256,uint256,uint256,uint256)" ): EventFragment; + getEvent(nameOrSignatureOrTopic: "UpdateMinMaxMintRange"): EventFragment; + getEvent( + nameOrSignatureOrTopic: "UpdateMinMaxMintRange(uint256,uint256,uint256,uint256)" + ): EventFragment; } export interface ApprovalEventObject { @@ -1784,8 +1881,8 @@ export type AssetOracleDataUpdatedEventFilter = TypedEventFilter; export interface AssetOracleUpdatedEventObject { - _oldVal: string; - _newVal: string; + oldVal: string; + newVal: string; } export type AssetOracleUpdatedEvent = TypedEvent< [string, string], @@ -1831,6 +1928,18 @@ export type ExchangeRateDurationUpdatedEvent = TypedEvent< export type ExchangeRateDurationUpdatedEventFilter = TypedEventFilter; +export interface LeverageExecutorSetEventObject { + oldVal: string; + newVal: string; +} +export type LeverageExecutorSetEvent = TypedEvent< + [string, string], + LeverageExecutorSetEventObject +>; + +export type LeverageExecutorSetEventFilter = + TypedEventFilter; + export interface LiquidatedEventObject { liquidator: string; users: string[]; @@ -2032,6 +2141,20 @@ export type UpdateMinMaxMintFeeEvent = TypedEvent< export type UpdateMinMaxMintFeeEventFilter = TypedEventFilter; +export interface UpdateMinMaxMintRangeEventObject { + oldMin: BigNumber; + newMin: BigNumber; + oldMax: BigNumber; + newMax: BigNumber; +} +export type UpdateMinMaxMintRangeEvent = TypedEvent< + [BigNumber, BigNumber, BigNumber, BigNumber], + UpdateMinMaxMintRangeEventObject +>; + +export type UpdateMinMaxMintRangeEventFilter = + TypedEventFilter; + export interface BigBang extends BaseContract { contractName: "BigBang"; @@ -2199,19 +2322,15 @@ export interface BigBang extends BaseContract { from: PromiseOrValue, borrowAmount: PromiseOrValue, supplyAmount: PromiseOrValue, - minAmountOut: PromiseOrValue, - swapper: PromiseOrValue, - dexData: PromiseOrValue, + data: PromiseOrValue, overrides?: Overrides & { from?: PromiseOrValue } ): Promise; - "buyCollateral(address,uint256,uint256,uint256,address,bytes)"( + "buyCollateral(address,uint256,uint256,bytes)"( from: PromiseOrValue, borrowAmount: PromiseOrValue, supplyAmount: PromiseOrValue, - minAmountOut: PromiseOrValue, - swapper: PromiseOrValue, - dexData: PromiseOrValue, + data: PromiseOrValue, overrides?: Overrides & { from?: PromiseOrValue } ): Promise; @@ -2345,6 +2464,10 @@ export interface BigBang extends BaseContract { "isMainMarket()"(overrides?: CallOverrides): Promise<[boolean]>; + leverageExecutor(overrides?: CallOverrides): Promise<[string]>; + + "leverageExecutor()"(overrides?: CallOverrides): Promise<[string]>; + leverageModule(overrides?: CallOverrides): Promise<[string]>; "leverageModule()"(overrides?: CallOverrides): Promise<[string]>; @@ -2413,6 +2536,10 @@ export interface BigBang extends BaseContract { "maxMintFee()"(overrides?: CallOverrides): Promise<[BigNumber]>; + maxMintFeeStart(overrides?: CallOverrides): Promise<[BigNumber]>; + + "maxMintFeeStart()"(overrides?: CallOverrides): Promise<[BigNumber]>; + minDebtRate(overrides?: CallOverrides): Promise<[BigNumber]>; "minDebtRate()"(overrides?: CallOverrides): Promise<[BigNumber]>; @@ -2425,6 +2552,10 @@ export interface BigBang extends BaseContract { "minMintFee()"(overrides?: CallOverrides): Promise<[BigNumber]>; + minMintFeeStart(overrides?: CallOverrides): Promise<[BigNumber]>; + + "minMintFeeStart()"(overrides?: CallOverrides): Promise<[BigNumber]>; + nonces( owner: PromiseOrValue, overrides?: CallOverrides @@ -2596,18 +2727,14 @@ export interface BigBang extends BaseContract { sellCollateral( from: PromiseOrValue, share: PromiseOrValue, - minAmountOut: PromiseOrValue, - swapper: PromiseOrValue, - dexData: PromiseOrValue, + data: PromiseOrValue, overrides?: Overrides & { from?: PromiseOrValue } ): Promise; - "sellCollateral(address,uint256,uint256,address,bytes)"( + "sellCollateral(address,uint256,bytes)"( from: PromiseOrValue, share: PromiseOrValue, - minAmountOut: PromiseOrValue, - swapper: PromiseOrValue, - dexData: PromiseOrValue, + data: PromiseOrValue, overrides?: Overrides & { from?: PromiseOrValue } ): Promise; @@ -2639,6 +2766,16 @@ export interface BigBang extends BaseContract { overrides?: Overrides & { from?: PromiseOrValue } ): Promise; + setLeverageExecutor( + _executor: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "setLeverageExecutor(address)"( + _executor: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + setMarketConfig( _oracle: PromiseOrValue, _oracleData: PromiseOrValue, @@ -2681,6 +2818,18 @@ export interface BigBang extends BaseContract { overrides?: Overrides & { from?: PromiseOrValue } ): Promise; + setMinAndMaxMintRange( + _min: PromiseOrValue, + _max: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "setMinAndMaxMintRange(uint256,uint256)"( + _min: PromiseOrValue, + _max: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + totalBorrow( overrides?: CallOverrides ): Promise< @@ -2928,19 +3077,15 @@ export interface BigBang extends BaseContract { from: PromiseOrValue, borrowAmount: PromiseOrValue, supplyAmount: PromiseOrValue, - minAmountOut: PromiseOrValue, - swapper: PromiseOrValue, - dexData: PromiseOrValue, + data: PromiseOrValue, overrides?: Overrides & { from?: PromiseOrValue } ): Promise; - "buyCollateral(address,uint256,uint256,uint256,address,bytes)"( + "buyCollateral(address,uint256,uint256,bytes)"( from: PromiseOrValue, borrowAmount: PromiseOrValue, supplyAmount: PromiseOrValue, - minAmountOut: PromiseOrValue, - swapper: PromiseOrValue, - dexData: PromiseOrValue, + data: PromiseOrValue, overrides?: Overrides & { from?: PromiseOrValue } ): Promise; @@ -3072,6 +3217,10 @@ export interface BigBang extends BaseContract { "isMainMarket()"(overrides?: CallOverrides): Promise; + leverageExecutor(overrides?: CallOverrides): Promise; + + "leverageExecutor()"(overrides?: CallOverrides): Promise; + leverageModule(overrides?: CallOverrides): Promise; "leverageModule()"(overrides?: CallOverrides): Promise; @@ -3140,6 +3289,10 @@ export interface BigBang extends BaseContract { "maxMintFee()"(overrides?: CallOverrides): Promise; + maxMintFeeStart(overrides?: CallOverrides): Promise; + + "maxMintFeeStart()"(overrides?: CallOverrides): Promise; + minDebtRate(overrides?: CallOverrides): Promise; "minDebtRate()"(overrides?: CallOverrides): Promise; @@ -3152,6 +3305,10 @@ export interface BigBang extends BaseContract { "minMintFee()"(overrides?: CallOverrides): Promise; + minMintFeeStart(overrides?: CallOverrides): Promise; + + "minMintFeeStart()"(overrides?: CallOverrides): Promise; + nonces( owner: PromiseOrValue, overrides?: CallOverrides @@ -3323,18 +3480,14 @@ export interface BigBang extends BaseContract { sellCollateral( from: PromiseOrValue, share: PromiseOrValue, - minAmountOut: PromiseOrValue, - swapper: PromiseOrValue, - dexData: PromiseOrValue, + data: PromiseOrValue, overrides?: Overrides & { from?: PromiseOrValue } ): Promise; - "sellCollateral(address,uint256,uint256,address,bytes)"( + "sellCollateral(address,uint256,bytes)"( from: PromiseOrValue, share: PromiseOrValue, - minAmountOut: PromiseOrValue, - swapper: PromiseOrValue, - dexData: PromiseOrValue, + data: PromiseOrValue, overrides?: Overrides & { from?: PromiseOrValue } ): Promise; @@ -3366,6 +3519,16 @@ export interface BigBang extends BaseContract { overrides?: Overrides & { from?: PromiseOrValue } ): Promise; + setLeverageExecutor( + _executor: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "setLeverageExecutor(address)"( + _executor: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + setMarketConfig( _oracle: PromiseOrValue, _oracleData: PromiseOrValue, @@ -3408,6 +3571,18 @@ export interface BigBang extends BaseContract { overrides?: Overrides & { from?: PromiseOrValue } ): Promise; + setMinAndMaxMintRange( + _min: PromiseOrValue, + _max: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "setMinAndMaxMintRange(uint256,uint256)"( + _min: PromiseOrValue, + _max: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + totalBorrow( overrides?: CallOverrides ): Promise<[BigNumber, BigNumber] & { elastic: BigNumber; base: BigNumber }>; @@ -3647,19 +3822,15 @@ export interface BigBang extends BaseContract { from: PromiseOrValue, borrowAmount: PromiseOrValue, supplyAmount: PromiseOrValue, - minAmountOut: PromiseOrValue, - swapper: PromiseOrValue, - dexData: PromiseOrValue, + data: PromiseOrValue, overrides?: CallOverrides ): Promise; - "buyCollateral(address,uint256,uint256,uint256,address,bytes)"( + "buyCollateral(address,uint256,uint256,bytes)"( from: PromiseOrValue, borrowAmount: PromiseOrValue, supplyAmount: PromiseOrValue, - minAmountOut: PromiseOrValue, - swapper: PromiseOrValue, - dexData: PromiseOrValue, + data: PromiseOrValue, overrides?: CallOverrides ): Promise; @@ -3791,6 +3962,10 @@ export interface BigBang extends BaseContract { "isMainMarket()"(overrides?: CallOverrides): Promise; + leverageExecutor(overrides?: CallOverrides): Promise; + + "leverageExecutor()"(overrides?: CallOverrides): Promise; + leverageModule(overrides?: CallOverrides): Promise; "leverageModule()"(overrides?: CallOverrides): Promise; @@ -3859,6 +4034,10 @@ export interface BigBang extends BaseContract { "maxMintFee()"(overrides?: CallOverrides): Promise; + maxMintFeeStart(overrides?: CallOverrides): Promise; + + "maxMintFeeStart()"(overrides?: CallOverrides): Promise; + minDebtRate(overrides?: CallOverrides): Promise; "minDebtRate()"(overrides?: CallOverrides): Promise; @@ -3871,6 +4050,10 @@ export interface BigBang extends BaseContract { "minMintFee()"(overrides?: CallOverrides): Promise; + minMintFeeStart(overrides?: CallOverrides): Promise; + + "minMintFeeStart()"(overrides?: CallOverrides): Promise; + nonces( owner: PromiseOrValue, overrides?: CallOverrides @@ -4038,18 +4221,14 @@ export interface BigBang extends BaseContract { sellCollateral( from: PromiseOrValue, share: PromiseOrValue, - minAmountOut: PromiseOrValue, - swapper: PromiseOrValue, - dexData: PromiseOrValue, + data: PromiseOrValue, overrides?: CallOverrides ): Promise; - "sellCollateral(address,uint256,uint256,address,bytes)"( + "sellCollateral(address,uint256,bytes)"( from: PromiseOrValue, share: PromiseOrValue, - minAmountOut: PromiseOrValue, - swapper: PromiseOrValue, - dexData: PromiseOrValue, + data: PromiseOrValue, overrides?: CallOverrides ): Promise; @@ -4081,6 +4260,16 @@ export interface BigBang extends BaseContract { overrides?: CallOverrides ): Promise; + setLeverageExecutor( + _executor: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "setLeverageExecutor(address)"( + _executor: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + setMarketConfig( _oracle: PromiseOrValue, _oracleData: PromiseOrValue, @@ -4123,6 +4312,18 @@ export interface BigBang extends BaseContract { overrides?: CallOverrides ): Promise; + setMinAndMaxMintRange( + _min: PromiseOrValue, + _max: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "setMinAndMaxMintRange(uint256,uint256)"( + _min: PromiseOrValue, + _max: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + totalBorrow( overrides?: CallOverrides ): Promise< @@ -4259,12 +4460,12 @@ export interface BigBang extends BaseContract { AssetOracleDataUpdated(): AssetOracleDataUpdatedEventFilter; "AssetOracleUpdated(address,address)"( - _oldVal?: PromiseOrValue | null, - _newVal?: PromiseOrValue | null + oldVal?: PromiseOrValue | null, + newVal?: PromiseOrValue | null ): AssetOracleUpdatedEventFilter; AssetOracleUpdated( - _oldVal?: PromiseOrValue | null, - _newVal?: PromiseOrValue | null + oldVal?: PromiseOrValue | null, + newVal?: PromiseOrValue | null ): AssetOracleUpdatedEventFilter; "ConservatorUpdated(address,address)"( @@ -4294,6 +4495,15 @@ export interface BigBang extends BaseContract { _newVal?: null ): ExchangeRateDurationUpdatedEventFilter; + "LeverageExecutorSet(address,address)"( + oldVal?: PromiseOrValue | null, + newVal?: PromiseOrValue | null + ): LeverageExecutorSetEventFilter; + LeverageExecutorSet( + oldVal?: PromiseOrValue | null, + newVal?: PromiseOrValue | null + ): LeverageExecutorSetEventFilter; + "Liquidated(address,address[],uint256,uint256,uint256,uint256)"( liquidator?: PromiseOrValue | null, users?: PromiseOrValue[] | null, @@ -4462,6 +4672,19 @@ export interface BigBang extends BaseContract { oldMax?: PromiseOrValue | null, newMax?: null ): UpdateMinMaxMintFeeEventFilter; + + "UpdateMinMaxMintRange(uint256,uint256,uint256,uint256)"( + oldMin?: PromiseOrValue | null, + newMin?: PromiseOrValue | null, + oldMax?: PromiseOrValue | null, + newMax?: null + ): UpdateMinMaxMintRangeEventFilter; + UpdateMinMaxMintRange( + oldMin?: PromiseOrValue | null, + newMin?: PromiseOrValue | null, + oldMax?: PromiseOrValue | null, + newMax?: null + ): UpdateMinMaxMintRangeEventFilter; }; estimateGas: { @@ -4595,19 +4818,15 @@ export interface BigBang extends BaseContract { from: PromiseOrValue, borrowAmount: PromiseOrValue, supplyAmount: PromiseOrValue, - minAmountOut: PromiseOrValue, - swapper: PromiseOrValue, - dexData: PromiseOrValue, + data: PromiseOrValue, overrides?: Overrides & { from?: PromiseOrValue } ): Promise; - "buyCollateral(address,uint256,uint256,uint256,address,bytes)"( + "buyCollateral(address,uint256,uint256,bytes)"( from: PromiseOrValue, borrowAmount: PromiseOrValue, supplyAmount: PromiseOrValue, - minAmountOut: PromiseOrValue, - swapper: PromiseOrValue, - dexData: PromiseOrValue, + data: PromiseOrValue, overrides?: Overrides & { from?: PromiseOrValue } ): Promise; @@ -4727,6 +4946,10 @@ export interface BigBang extends BaseContract { "isMainMarket()"(overrides?: CallOverrides): Promise; + leverageExecutor(overrides?: CallOverrides): Promise; + + "leverageExecutor()"(overrides?: CallOverrides): Promise; + leverageModule(overrides?: CallOverrides): Promise; "leverageModule()"(overrides?: CallOverrides): Promise; @@ -4795,6 +5018,10 @@ export interface BigBang extends BaseContract { "maxMintFee()"(overrides?: CallOverrides): Promise; + maxMintFeeStart(overrides?: CallOverrides): Promise; + + "maxMintFeeStart()"(overrides?: CallOverrides): Promise; + minDebtRate(overrides?: CallOverrides): Promise; "minDebtRate()"(overrides?: CallOverrides): Promise; @@ -4807,6 +5034,10 @@ export interface BigBang extends BaseContract { "minMintFee()"(overrides?: CallOverrides): Promise; + minMintFeeStart(overrides?: CallOverrides): Promise; + + "minMintFeeStart()"(overrides?: CallOverrides): Promise; + nonces( owner: PromiseOrValue, overrides?: CallOverrides @@ -4978,18 +5209,14 @@ export interface BigBang extends BaseContract { sellCollateral( from: PromiseOrValue, share: PromiseOrValue, - minAmountOut: PromiseOrValue, - swapper: PromiseOrValue, - dexData: PromiseOrValue, + data: PromiseOrValue, overrides?: Overrides & { from?: PromiseOrValue } ): Promise; - "sellCollateral(address,uint256,uint256,address,bytes)"( + "sellCollateral(address,uint256,bytes)"( from: PromiseOrValue, share: PromiseOrValue, - minAmountOut: PromiseOrValue, - swapper: PromiseOrValue, - dexData: PromiseOrValue, + data: PromiseOrValue, overrides?: Overrides & { from?: PromiseOrValue } ): Promise; @@ -5021,6 +5248,16 @@ export interface BigBang extends BaseContract { overrides?: Overrides & { from?: PromiseOrValue } ): Promise; + setLeverageExecutor( + _executor: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "setLeverageExecutor(address)"( + _executor: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + setMarketConfig( _oracle: PromiseOrValue, _oracleData: PromiseOrValue, @@ -5063,6 +5300,18 @@ export interface BigBang extends BaseContract { overrides?: Overrides & { from?: PromiseOrValue } ): Promise; + setMinAndMaxMintRange( + _min: PromiseOrValue, + _max: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "setMinAndMaxMintRange(uint256,uint256)"( + _min: PromiseOrValue, + _max: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + totalBorrow(overrides?: CallOverrides): Promise; "totalBorrow()"(overrides?: CallOverrides): Promise; @@ -5299,19 +5548,15 @@ export interface BigBang extends BaseContract { from: PromiseOrValue, borrowAmount: PromiseOrValue, supplyAmount: PromiseOrValue, - minAmountOut: PromiseOrValue, - swapper: PromiseOrValue, - dexData: PromiseOrValue, + data: PromiseOrValue, overrides?: Overrides & { from?: PromiseOrValue } ): Promise; - "buyCollateral(address,uint256,uint256,uint256,address,bytes)"( + "buyCollateral(address,uint256,uint256,bytes)"( from: PromiseOrValue, borrowAmount: PromiseOrValue, supplyAmount: PromiseOrValue, - minAmountOut: PromiseOrValue, - swapper: PromiseOrValue, - dexData: PromiseOrValue, + data: PromiseOrValue, overrides?: Overrides & { from?: PromiseOrValue } ): Promise; @@ -5443,6 +5688,12 @@ export interface BigBang extends BaseContract { "isMainMarket()"(overrides?: CallOverrides): Promise; + leverageExecutor(overrides?: CallOverrides): Promise; + + "leverageExecutor()"( + overrides?: CallOverrides + ): Promise; + leverageModule(overrides?: CallOverrides): Promise; "leverageModule()"( @@ -5527,6 +5778,12 @@ export interface BigBang extends BaseContract { "maxMintFee()"(overrides?: CallOverrides): Promise; + maxMintFeeStart(overrides?: CallOverrides): Promise; + + "maxMintFeeStart()"( + overrides?: CallOverrides + ): Promise; + minDebtRate(overrides?: CallOverrides): Promise; "minDebtRate()"(overrides?: CallOverrides): Promise; @@ -5543,6 +5800,12 @@ export interface BigBang extends BaseContract { "minMintFee()"(overrides?: CallOverrides): Promise; + minMintFeeStart(overrides?: CallOverrides): Promise; + + "minMintFeeStart()"( + overrides?: CallOverrides + ): Promise; + nonces( owner: PromiseOrValue, overrides?: CallOverrides @@ -5716,18 +5979,14 @@ export interface BigBang extends BaseContract { sellCollateral( from: PromiseOrValue, share: PromiseOrValue, - minAmountOut: PromiseOrValue, - swapper: PromiseOrValue, - dexData: PromiseOrValue, + data: PromiseOrValue, overrides?: Overrides & { from?: PromiseOrValue } ): Promise; - "sellCollateral(address,uint256,uint256,address,bytes)"( + "sellCollateral(address,uint256,bytes)"( from: PromiseOrValue, share: PromiseOrValue, - minAmountOut: PromiseOrValue, - swapper: PromiseOrValue, - dexData: PromiseOrValue, + data: PromiseOrValue, overrides?: Overrides & { from?: PromiseOrValue } ): Promise; @@ -5759,6 +6018,16 @@ export interface BigBang extends BaseContract { overrides?: Overrides & { from?: PromiseOrValue } ): Promise; + setLeverageExecutor( + _executor: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "setLeverageExecutor(address)"( + _executor: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + setMarketConfig( _oracle: PromiseOrValue, _oracleData: PromiseOrValue, @@ -5801,6 +6070,18 @@ export interface BigBang extends BaseContract { overrides?: Overrides & { from?: PromiseOrValue } ): Promise; + setMinAndMaxMintRange( + _min: PromiseOrValue, + _max: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "setMinAndMaxMintRange(uint256,uint256)"( + _min: PromiseOrValue, + _max: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + totalBorrow(overrides?: CallOverrides): Promise; "totalBorrow()"(overrides?: CallOverrides): Promise; diff --git a/src/typechain/tapioca-bar/markets/index.ts b/src/typechain/tapioca-bar/markets/index.ts index ff7048a7..b0b4e154 100644 --- a/src/typechain/tapioca-bar/markets/index.ts +++ b/src/typechain/tapioca-bar/markets/index.ts @@ -3,6 +3,8 @@ /* eslint-disable */ import type * as bigBang from "./bigBang"; export type { bigBang }; +import type * as leverage from "./leverage"; +export type { leverage }; import type * as singularity from "./singularity"; export type { singularity }; export type { Market } from "./Market"; diff --git a/src/typechain/tapioca-bar/markets/leverage/SimpleLeverageExecutor.ts b/src/typechain/tapioca-bar/markets/leverage/SimpleLeverageExecutor.ts new file mode 100644 index 00000000..e4c32492 --- /dev/null +++ b/src/typechain/tapioca-bar/markets/leverage/SimpleLeverageExecutor.ts @@ -0,0 +1,781 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + BaseContract, + BigNumber, + BigNumberish, + BytesLike, + CallOverrides, + ContractTransaction, + Overrides, + PopulatedTransaction, + Signer, + utils, +} from "ethers"; +import type { + FunctionFragment, + Result, + EventFragment, +} from "@ethersproject/abi"; +import type { Listener, Provider } from "@ethersproject/providers"; +import type { + TypedEventFilter, + TypedEvent, + TypedListener, + OnEvent, + PromiseOrValue, +} from "../../common"; + +export interface SimpleLeverageExecutorInterface extends utils.Interface { + functions: { + "claimOwnership()": FunctionFragment; + "cluster()": FunctionFragment; + "getAsset(uint256,uint256,uint256,address,bytes)": FunctionFragment; + "getCollateral(uint256,uint256,uint256,address,bytes)": FunctionFragment; + "owner()": FunctionFragment; + "pendingOwner()": FunctionFragment; + "setCluster(address)": FunctionFragment; + "setSwapper(address)": FunctionFragment; + "swapper()": FunctionFragment; + "transferOwnership(address,bool,bool)": FunctionFragment; + "yieldBox()": FunctionFragment; + }; + + getFunction( + nameOrSignatureOrTopic: + | "claimOwnership" + | "claimOwnership()" + | "cluster" + | "cluster()" + | "getAsset" + | "getAsset(uint256,uint256,uint256,address,bytes)" + | "getCollateral" + | "getCollateral(uint256,uint256,uint256,address,bytes)" + | "owner" + | "owner()" + | "pendingOwner" + | "pendingOwner()" + | "setCluster" + | "setCluster(address)" + | "setSwapper" + | "setSwapper(address)" + | "swapper" + | "swapper()" + | "transferOwnership" + | "transferOwnership(address,bool,bool)" + | "yieldBox" + | "yieldBox()" + ): FunctionFragment; + + encodeFunctionData( + functionFragment: "claimOwnership", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "claimOwnership()", + values?: undefined + ): string; + encodeFunctionData(functionFragment: "cluster", values?: undefined): string; + encodeFunctionData(functionFragment: "cluster()", values?: undefined): string; + encodeFunctionData( + functionFragment: "getAsset", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + encodeFunctionData( + functionFragment: "getAsset(uint256,uint256,uint256,address,bytes)", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + encodeFunctionData( + functionFragment: "getCollateral", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + encodeFunctionData( + functionFragment: "getCollateral(uint256,uint256,uint256,address,bytes)", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + encodeFunctionData(functionFragment: "owner", values?: undefined): string; + encodeFunctionData(functionFragment: "owner()", values?: undefined): string; + encodeFunctionData( + functionFragment: "pendingOwner", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "pendingOwner()", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "setCluster", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "setCluster(address)", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "setSwapper", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "setSwapper(address)", + values: [PromiseOrValue] + ): string; + encodeFunctionData(functionFragment: "swapper", values?: undefined): string; + encodeFunctionData(functionFragment: "swapper()", values?: undefined): string; + encodeFunctionData( + functionFragment: "transferOwnership", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + encodeFunctionData( + functionFragment: "transferOwnership(address,bool,bool)", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + encodeFunctionData(functionFragment: "yieldBox", values?: undefined): string; + encodeFunctionData( + functionFragment: "yieldBox()", + values?: undefined + ): string; + + decodeFunctionResult( + functionFragment: "claimOwnership", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "claimOwnership()", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "cluster", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "cluster()", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "getAsset", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "getAsset(uint256,uint256,uint256,address,bytes)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "getCollateral", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "getCollateral(uint256,uint256,uint256,address,bytes)", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "owner", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "owner()", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "pendingOwner", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "pendingOwner()", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "setCluster", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "setCluster(address)", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "setSwapper", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "setSwapper(address)", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "swapper", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "swapper()", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "transferOwnership", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "transferOwnership(address,bool,bool)", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "yieldBox", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "yieldBox()", data: BytesLike): Result; + + events: { + "OwnershipTransferred(address,address)": EventFragment; + }; + + getEvent(nameOrSignatureOrTopic: "OwnershipTransferred"): EventFragment; + getEvent( + nameOrSignatureOrTopic: "OwnershipTransferred(address,address)" + ): EventFragment; +} + +export interface OwnershipTransferredEventObject { + previousOwner: string; + newOwner: string; +} +export type OwnershipTransferredEvent = TypedEvent< + [string, string], + OwnershipTransferredEventObject +>; + +export type OwnershipTransferredEventFilter = + TypedEventFilter; + +export interface SimpleLeverageExecutor extends BaseContract { + contractName: "SimpleLeverageExecutor"; + + connect(signerOrProvider: Signer | Provider | string): this; + attach(addressOrName: string): this; + deployed(): Promise; + + interface: SimpleLeverageExecutorInterface; + + queryFilter( + event: TypedEventFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>; + + listeners( + eventFilter?: TypedEventFilter + ): Array>; + listeners(eventName?: string): Array; + removeAllListeners( + eventFilter: TypedEventFilter + ): this; + removeAllListeners(eventName?: string): this; + off: OnEvent; + on: OnEvent; + once: OnEvent; + removeListener: OnEvent; + + functions: { + claimOwnership( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "claimOwnership()"( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + cluster(overrides?: CallOverrides): Promise<[string]>; + + "cluster()"(overrides?: CallOverrides): Promise<[string]>; + + getAsset( + assetId: PromiseOrValue, + collateralId: PromiseOrValue, + collateralShareIn: PromiseOrValue, + from: PromiseOrValue, + data: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "getAsset(uint256,uint256,uint256,address,bytes)"( + assetId: PromiseOrValue, + collateralId: PromiseOrValue, + collateralShareIn: PromiseOrValue, + from: PromiseOrValue, + data: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + getCollateral( + assetId: PromiseOrValue, + collateralId: PromiseOrValue, + assetShareIn: PromiseOrValue, + from: PromiseOrValue, + data: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "getCollateral(uint256,uint256,uint256,address,bytes)"( + assetId: PromiseOrValue, + collateralId: PromiseOrValue, + assetShareIn: PromiseOrValue, + from: PromiseOrValue, + data: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + owner(overrides?: CallOverrides): Promise<[string]>; + + "owner()"(overrides?: CallOverrides): Promise<[string]>; + + pendingOwner(overrides?: CallOverrides): Promise<[string]>; + + "pendingOwner()"(overrides?: CallOverrides): Promise<[string]>; + + setCluster( + _cluster: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "setCluster(address)"( + _cluster: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setSwapper( + _swapper: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "setSwapper(address)"( + _swapper: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + swapper(overrides?: CallOverrides): Promise<[string]>; + + "swapper()"(overrides?: CallOverrides): Promise<[string]>; + + transferOwnership( + newOwner: PromiseOrValue, + direct: PromiseOrValue, + renounce: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "transferOwnership(address,bool,bool)"( + newOwner: PromiseOrValue, + direct: PromiseOrValue, + renounce: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + yieldBox(overrides?: CallOverrides): Promise<[string]>; + + "yieldBox()"(overrides?: CallOverrides): Promise<[string]>; + }; + + claimOwnership( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "claimOwnership()"( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + cluster(overrides?: CallOverrides): Promise; + + "cluster()"(overrides?: CallOverrides): Promise; + + getAsset( + assetId: PromiseOrValue, + collateralId: PromiseOrValue, + collateralShareIn: PromiseOrValue, + from: PromiseOrValue, + data: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "getAsset(uint256,uint256,uint256,address,bytes)"( + assetId: PromiseOrValue, + collateralId: PromiseOrValue, + collateralShareIn: PromiseOrValue, + from: PromiseOrValue, + data: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + getCollateral( + assetId: PromiseOrValue, + collateralId: PromiseOrValue, + assetShareIn: PromiseOrValue, + from: PromiseOrValue, + data: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "getCollateral(uint256,uint256,uint256,address,bytes)"( + assetId: PromiseOrValue, + collateralId: PromiseOrValue, + assetShareIn: PromiseOrValue, + from: PromiseOrValue, + data: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + owner(overrides?: CallOverrides): Promise; + + "owner()"(overrides?: CallOverrides): Promise; + + pendingOwner(overrides?: CallOverrides): Promise; + + "pendingOwner()"(overrides?: CallOverrides): Promise; + + setCluster( + _cluster: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "setCluster(address)"( + _cluster: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setSwapper( + _swapper: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "setSwapper(address)"( + _swapper: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + swapper(overrides?: CallOverrides): Promise; + + "swapper()"(overrides?: CallOverrides): Promise; + + transferOwnership( + newOwner: PromiseOrValue, + direct: PromiseOrValue, + renounce: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "transferOwnership(address,bool,bool)"( + newOwner: PromiseOrValue, + direct: PromiseOrValue, + renounce: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + yieldBox(overrides?: CallOverrides): Promise; + + "yieldBox()"(overrides?: CallOverrides): Promise; + + callStatic: { + claimOwnership(overrides?: CallOverrides): Promise; + + "claimOwnership()"(overrides?: CallOverrides): Promise; + + cluster(overrides?: CallOverrides): Promise; + + "cluster()"(overrides?: CallOverrides): Promise; + + getAsset( + assetId: PromiseOrValue, + collateralId: PromiseOrValue, + collateralShareIn: PromiseOrValue, + from: PromiseOrValue, + data: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "getAsset(uint256,uint256,uint256,address,bytes)"( + assetId: PromiseOrValue, + collateralId: PromiseOrValue, + collateralShareIn: PromiseOrValue, + from: PromiseOrValue, + data: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getCollateral( + assetId: PromiseOrValue, + collateralId: PromiseOrValue, + assetShareIn: PromiseOrValue, + from: PromiseOrValue, + data: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "getCollateral(uint256,uint256,uint256,address,bytes)"( + assetId: PromiseOrValue, + collateralId: PromiseOrValue, + assetShareIn: PromiseOrValue, + from: PromiseOrValue, + data: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + owner(overrides?: CallOverrides): Promise; + + "owner()"(overrides?: CallOverrides): Promise; + + pendingOwner(overrides?: CallOverrides): Promise; + + "pendingOwner()"(overrides?: CallOverrides): Promise; + + setCluster( + _cluster: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "setCluster(address)"( + _cluster: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + setSwapper( + _swapper: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "setSwapper(address)"( + _swapper: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + swapper(overrides?: CallOverrides): Promise; + + "swapper()"(overrides?: CallOverrides): Promise; + + transferOwnership( + newOwner: PromiseOrValue, + direct: PromiseOrValue, + renounce: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "transferOwnership(address,bool,bool)"( + newOwner: PromiseOrValue, + direct: PromiseOrValue, + renounce: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + yieldBox(overrides?: CallOverrides): Promise; + + "yieldBox()"(overrides?: CallOverrides): Promise; + }; + + filters: { + "OwnershipTransferred(address,address)"( + previousOwner?: PromiseOrValue | null, + newOwner?: PromiseOrValue | null + ): OwnershipTransferredEventFilter; + OwnershipTransferred( + previousOwner?: PromiseOrValue | null, + newOwner?: PromiseOrValue | null + ): OwnershipTransferredEventFilter; + }; + + estimateGas: { + claimOwnership( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "claimOwnership()"( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + cluster(overrides?: CallOverrides): Promise; + + "cluster()"(overrides?: CallOverrides): Promise; + + getAsset( + assetId: PromiseOrValue, + collateralId: PromiseOrValue, + collateralShareIn: PromiseOrValue, + from: PromiseOrValue, + data: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "getAsset(uint256,uint256,uint256,address,bytes)"( + assetId: PromiseOrValue, + collateralId: PromiseOrValue, + collateralShareIn: PromiseOrValue, + from: PromiseOrValue, + data: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + getCollateral( + assetId: PromiseOrValue, + collateralId: PromiseOrValue, + assetShareIn: PromiseOrValue, + from: PromiseOrValue, + data: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "getCollateral(uint256,uint256,uint256,address,bytes)"( + assetId: PromiseOrValue, + collateralId: PromiseOrValue, + assetShareIn: PromiseOrValue, + from: PromiseOrValue, + data: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + owner(overrides?: CallOverrides): Promise; + + "owner()"(overrides?: CallOverrides): Promise; + + pendingOwner(overrides?: CallOverrides): Promise; + + "pendingOwner()"(overrides?: CallOverrides): Promise; + + setCluster( + _cluster: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "setCluster(address)"( + _cluster: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setSwapper( + _swapper: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "setSwapper(address)"( + _swapper: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + swapper(overrides?: CallOverrides): Promise; + + "swapper()"(overrides?: CallOverrides): Promise; + + transferOwnership( + newOwner: PromiseOrValue, + direct: PromiseOrValue, + renounce: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "transferOwnership(address,bool,bool)"( + newOwner: PromiseOrValue, + direct: PromiseOrValue, + renounce: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + yieldBox(overrides?: CallOverrides): Promise; + + "yieldBox()"(overrides?: CallOverrides): Promise; + }; + + populateTransaction: { + claimOwnership( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "claimOwnership()"( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + cluster(overrides?: CallOverrides): Promise; + + "cluster()"(overrides?: CallOverrides): Promise; + + getAsset( + assetId: PromiseOrValue, + collateralId: PromiseOrValue, + collateralShareIn: PromiseOrValue, + from: PromiseOrValue, + data: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "getAsset(uint256,uint256,uint256,address,bytes)"( + assetId: PromiseOrValue, + collateralId: PromiseOrValue, + collateralShareIn: PromiseOrValue, + from: PromiseOrValue, + data: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + getCollateral( + assetId: PromiseOrValue, + collateralId: PromiseOrValue, + assetShareIn: PromiseOrValue, + from: PromiseOrValue, + data: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "getCollateral(uint256,uint256,uint256,address,bytes)"( + assetId: PromiseOrValue, + collateralId: PromiseOrValue, + assetShareIn: PromiseOrValue, + from: PromiseOrValue, + data: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + owner(overrides?: CallOverrides): Promise; + + "owner()"(overrides?: CallOverrides): Promise; + + pendingOwner(overrides?: CallOverrides): Promise; + + "pendingOwner()"(overrides?: CallOverrides): Promise; + + setCluster( + _cluster: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "setCluster(address)"( + _cluster: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setSwapper( + _swapper: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "setSwapper(address)"( + _swapper: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + swapper(overrides?: CallOverrides): Promise; + + "swapper()"(overrides?: CallOverrides): Promise; + + transferOwnership( + newOwner: PromiseOrValue, + direct: PromiseOrValue, + renounce: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "transferOwnership(address,bool,bool)"( + newOwner: PromiseOrValue, + direct: PromiseOrValue, + renounce: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + yieldBox(overrides?: CallOverrides): Promise; + + "yieldBox()"(overrides?: CallOverrides): Promise; + }; +} diff --git a/src/typechain/tapioca-bar/markets/leverage/index.ts b/src/typechain/tapioca-bar/markets/leverage/index.ts new file mode 100644 index 00000000..e3382fa6 --- /dev/null +++ b/src/typechain/tapioca-bar/markets/leverage/index.ts @@ -0,0 +1,4 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +export type { SimpleLeverageExecutor } from "./SimpleLeverageExecutor"; diff --git a/src/typechain/tapioca-bar/markets/singularity/SGLBorrow.ts b/src/typechain/tapioca-bar/markets/singularity/SGLBorrow.ts index ebf34e37..30c51aae 100644 --- a/src/typechain/tapioca-bar/markets/singularity/SGLBorrow.ts +++ b/src/typechain/tapioca-bar/markets/singularity/SGLBorrow.ts @@ -69,6 +69,7 @@ export interface SGLBorrowInterface extends utils.Interface { "fullUtilizationMinusMax()": FunctionFragment; "getInterestDetails()": FunctionFragment; "interestElasticity()": FunctionFragment; + "leverageExecutor()": FunctionFragment; "liquidationBonusAmount()": FunctionFragment; "liquidationCollateralizationRate()": FunctionFragment; "liquidationMultiplier()": FunctionFragment; @@ -94,6 +95,7 @@ export interface SGLBorrowInterface extends utils.Interface { "rateTimestamp()": FunctionFragment; "rateValidDuration()": FunctionFragment; "repay(address,address,bool,uint256)": FunctionFragment; + "setLeverageExecutor(address)": FunctionFragment; "setMarketConfig(address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)": FunctionFragment; "startingInterestPerSecond()": FunctionFragment; "symbol()": FunctionFragment; @@ -166,6 +168,8 @@ export interface SGLBorrowInterface extends utils.Interface { | "getInterestDetails()" | "interestElasticity" | "interestElasticity()" + | "leverageExecutor" + | "leverageExecutor()" | "liquidationBonusAmount" | "liquidationBonusAmount()" | "liquidationCollateralizationRate" @@ -216,6 +220,8 @@ export interface SGLBorrowInterface extends utils.Interface { | "rateValidDuration()" | "repay" | "repay(address,address,bool,uint256)" + | "setLeverageExecutor" + | "setLeverageExecutor(address)" | "setMarketConfig" | "setMarketConfig(address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)" | "startingInterestPerSecond" @@ -450,6 +456,14 @@ export interface SGLBorrowInterface extends utils.Interface { functionFragment: "interestElasticity()", values?: undefined ): string; + encodeFunctionData( + functionFragment: "leverageExecutor", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "leverageExecutor()", + values?: undefined + ): string; encodeFunctionData( functionFragment: "liquidationBonusAmount", values?: undefined @@ -668,6 +682,14 @@ export interface SGLBorrowInterface extends utils.Interface { PromiseOrValue ] ): string; + encodeFunctionData( + functionFragment: "setLeverageExecutor", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "setLeverageExecutor(address)", + values: [PromiseOrValue] + ): string; encodeFunctionData( functionFragment: "setMarketConfig", values: [ @@ -991,6 +1013,14 @@ export interface SGLBorrowInterface extends utils.Interface { functionFragment: "interestElasticity()", data: BytesLike ): Result; + decodeFunctionResult( + functionFragment: "leverageExecutor", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "leverageExecutor()", + data: BytesLike + ): Result; decodeFunctionResult( functionFragment: "liquidationBonusAmount", data: BytesLike @@ -1155,6 +1185,14 @@ export interface SGLBorrowInterface extends utils.Interface { functionFragment: "repay(address,address,bool,uint256)", data: BytesLike ): Result; + decodeFunctionResult( + functionFragment: "setLeverageExecutor", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "setLeverageExecutor(address)", + data: BytesLike + ): Result; decodeFunctionResult( functionFragment: "setMarketConfig", data: BytesLike @@ -1273,6 +1311,7 @@ export interface SGLBorrowInterface extends utils.Interface { "ConservatorUpdated(address,address)": EventFragment; "ExchangeRateDurationUpdated(uint256,uint256)": EventFragment; "InterestElasticityUpdated(uint256,uint256)": EventFragment; + "LeverageExecutorSet(address,address)": EventFragment; "Liquidated(address,address[],uint256,uint256,uint256,uint256)": EventFragment; "LiquidationMultiplierUpdated(uint256,uint256)": EventFragment; "LogAccrue(uint256,uint256,uint64,uint256)": EventFragment; @@ -1327,6 +1366,10 @@ export interface SGLBorrowInterface extends utils.Interface { getEvent( nameOrSignatureOrTopic: "InterestElasticityUpdated(uint256,uint256)" ): EventFragment; + getEvent(nameOrSignatureOrTopic: "LeverageExecutorSet"): EventFragment; + getEvent( + nameOrSignatureOrTopic: "LeverageExecutorSet(address,address)" + ): EventFragment; getEvent(nameOrSignatureOrTopic: "Liquidated"): EventFragment; getEvent( nameOrSignatureOrTopic: "Liquidated(address,address[],uint256,uint256,uint256,uint256)" @@ -1512,6 +1555,18 @@ export type InterestElasticityUpdatedEvent = TypedEvent< export type InterestElasticityUpdatedEventFilter = TypedEventFilter; +export interface LeverageExecutorSetEventObject { + oldVal: string; + newVal: string; +} +export type LeverageExecutorSetEvent = TypedEvent< + [string, string], + LeverageExecutorSetEventObject +>; + +export type LeverageExecutorSetEventFilter = + TypedEventFilter; + export interface LiquidatedEventObject { liquidator: string; users: string[]; @@ -2079,6 +2134,10 @@ export interface SGLBorrow extends BaseContract { "interestElasticity()"(overrides?: CallOverrides): Promise<[BigNumber]>; + leverageExecutor(overrides?: CallOverrides): Promise<[string]>; + + "leverageExecutor()"(overrides?: CallOverrides): Promise<[string]>; + liquidationBonusAmount(overrides?: CallOverrides): Promise<[BigNumber]>; "liquidationBonusAmount()"(overrides?: CallOverrides): Promise<[BigNumber]>; @@ -2261,6 +2320,16 @@ export interface SGLBorrow extends BaseContract { overrides?: Overrides & { from?: PromiseOrValue } ): Promise; + setLeverageExecutor( + _executor: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "setLeverageExecutor(address)"( + _executor: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + setMarketConfig( _oracle: PromiseOrValue, _oracleData: PromiseOrValue, @@ -2650,6 +2719,10 @@ export interface SGLBorrow extends BaseContract { "interestElasticity()"(overrides?: CallOverrides): Promise; + leverageExecutor(overrides?: CallOverrides): Promise; + + "leverageExecutor()"(overrides?: CallOverrides): Promise; + liquidationBonusAmount(overrides?: CallOverrides): Promise; "liquidationBonusAmount()"(overrides?: CallOverrides): Promise; @@ -2822,6 +2895,16 @@ export interface SGLBorrow extends BaseContract { overrides?: Overrides & { from?: PromiseOrValue } ): Promise; + setLeverageExecutor( + _executor: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "setLeverageExecutor(address)"( + _executor: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + setMarketConfig( _oracle: PromiseOrValue, _oracleData: PromiseOrValue, @@ -3193,6 +3276,10 @@ export interface SGLBorrow extends BaseContract { "interestElasticity()"(overrides?: CallOverrides): Promise; + leverageExecutor(overrides?: CallOverrides): Promise; + + "leverageExecutor()"(overrides?: CallOverrides): Promise; + liquidationBonusAmount(overrides?: CallOverrides): Promise; "liquidationBonusAmount()"(overrides?: CallOverrides): Promise; @@ -3365,6 +3452,16 @@ export interface SGLBorrow extends BaseContract { overrides?: CallOverrides ): Promise; + setLeverageExecutor( + _executor: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "setLeverageExecutor(address)"( + _executor: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + setMarketConfig( _oracle: PromiseOrValue, _oracleData: PromiseOrValue, @@ -3583,6 +3680,15 @@ export interface SGLBorrow extends BaseContract { newVal?: PromiseOrValue | null ): InterestElasticityUpdatedEventFilter; + "LeverageExecutorSet(address,address)"( + oldVal?: PromiseOrValue | null, + newVal?: PromiseOrValue | null + ): LeverageExecutorSetEventFilter; + LeverageExecutorSet( + oldVal?: PromiseOrValue | null, + newVal?: PromiseOrValue | null + ): LeverageExecutorSetEventFilter; + "Liquidated(address,address[],uint256,uint256,uint256,uint256)"( liquidator?: PromiseOrValue | null, users?: PromiseOrValue[] | null, @@ -4027,6 +4133,10 @@ export interface SGLBorrow extends BaseContract { "interestElasticity()"(overrides?: CallOverrides): Promise; + leverageExecutor(overrides?: CallOverrides): Promise; + + "leverageExecutor()"(overrides?: CallOverrides): Promise; + liquidationBonusAmount(overrides?: CallOverrides): Promise; "liquidationBonusAmount()"(overrides?: CallOverrides): Promise; @@ -4199,6 +4309,16 @@ export interface SGLBorrow extends BaseContract { overrides?: Overrides & { from?: PromiseOrValue } ): Promise; + setLeverageExecutor( + _executor: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "setLeverageExecutor(address)"( + _executor: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + setMarketConfig( _oracle: PromiseOrValue, _oracleData: PromiseOrValue, @@ -4551,6 +4671,12 @@ export interface SGLBorrow extends BaseContract { overrides?: CallOverrides ): Promise; + leverageExecutor(overrides?: CallOverrides): Promise; + + "leverageExecutor()"( + overrides?: CallOverrides + ): Promise; + liquidationBonusAmount( overrides?: CallOverrides ): Promise; @@ -4761,6 +4887,16 @@ export interface SGLBorrow extends BaseContract { overrides?: Overrides & { from?: PromiseOrValue } ): Promise; + setLeverageExecutor( + _executor: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "setLeverageExecutor(address)"( + _executor: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + setMarketConfig( _oracle: PromiseOrValue, _oracleData: PromiseOrValue, diff --git a/src/typechain/tapioca-bar/markets/singularity/SGLCollateral.ts b/src/typechain/tapioca-bar/markets/singularity/SGLCollateral.ts index b3cd5aa5..99164d81 100644 --- a/src/typechain/tapioca-bar/markets/singularity/SGLCollateral.ts +++ b/src/typechain/tapioca-bar/markets/singularity/SGLCollateral.ts @@ -69,6 +69,7 @@ export interface SGLCollateralInterface extends utils.Interface { "fullUtilizationMinusMax()": FunctionFragment; "getInterestDetails()": FunctionFragment; "interestElasticity()": FunctionFragment; + "leverageExecutor()": FunctionFragment; "liquidationBonusAmount()": FunctionFragment; "liquidationCollateralizationRate()": FunctionFragment; "liquidationMultiplier()": FunctionFragment; @@ -94,6 +95,7 @@ export interface SGLCollateralInterface extends utils.Interface { "rateTimestamp()": FunctionFragment; "rateValidDuration()": FunctionFragment; "removeCollateral(address,address,uint256)": FunctionFragment; + "setLeverageExecutor(address)": FunctionFragment; "setMarketConfig(address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)": FunctionFragment; "startingInterestPerSecond()": FunctionFragment; "symbol()": FunctionFragment; @@ -166,6 +168,8 @@ export interface SGLCollateralInterface extends utils.Interface { | "getInterestDetails()" | "interestElasticity" | "interestElasticity()" + | "leverageExecutor" + | "leverageExecutor()" | "liquidationBonusAmount" | "liquidationBonusAmount()" | "liquidationCollateralizationRate" @@ -216,6 +220,8 @@ export interface SGLCollateralInterface extends utils.Interface { | "rateValidDuration()" | "removeCollateral" | "removeCollateral(address,address,uint256)" + | "setLeverageExecutor" + | "setLeverageExecutor(address)" | "setMarketConfig" | "setMarketConfig(address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)" | "startingInterestPerSecond" @@ -454,6 +460,14 @@ export interface SGLCollateralInterface extends utils.Interface { functionFragment: "interestElasticity()", values?: undefined ): string; + encodeFunctionData( + functionFragment: "leverageExecutor", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "leverageExecutor()", + values?: undefined + ): string; encodeFunctionData( functionFragment: "liquidationBonusAmount", values?: undefined @@ -670,6 +684,14 @@ export interface SGLCollateralInterface extends utils.Interface { PromiseOrValue ] ): string; + encodeFunctionData( + functionFragment: "setLeverageExecutor", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "setLeverageExecutor(address)", + values: [PromiseOrValue] + ): string; encodeFunctionData( functionFragment: "setMarketConfig", values: [ @@ -996,6 +1018,14 @@ export interface SGLCollateralInterface extends utils.Interface { functionFragment: "interestElasticity()", data: BytesLike ): Result; + decodeFunctionResult( + functionFragment: "leverageExecutor", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "leverageExecutor()", + data: BytesLike + ): Result; decodeFunctionResult( functionFragment: "liquidationBonusAmount", data: BytesLike @@ -1163,6 +1193,14 @@ export interface SGLCollateralInterface extends utils.Interface { functionFragment: "removeCollateral(address,address,uint256)", data: BytesLike ): Result; + decodeFunctionResult( + functionFragment: "setLeverageExecutor", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "setLeverageExecutor(address)", + data: BytesLike + ): Result; decodeFunctionResult( functionFragment: "setMarketConfig", data: BytesLike @@ -1281,6 +1319,7 @@ export interface SGLCollateralInterface extends utils.Interface { "ConservatorUpdated(address,address)": EventFragment; "ExchangeRateDurationUpdated(uint256,uint256)": EventFragment; "InterestElasticityUpdated(uint256,uint256)": EventFragment; + "LeverageExecutorSet(address,address)": EventFragment; "Liquidated(address,address[],uint256,uint256,uint256,uint256)": EventFragment; "LiquidationMultiplierUpdated(uint256,uint256)": EventFragment; "LogAccrue(uint256,uint256,uint64,uint256)": EventFragment; @@ -1335,6 +1374,10 @@ export interface SGLCollateralInterface extends utils.Interface { getEvent( nameOrSignatureOrTopic: "InterestElasticityUpdated(uint256,uint256)" ): EventFragment; + getEvent(nameOrSignatureOrTopic: "LeverageExecutorSet"): EventFragment; + getEvent( + nameOrSignatureOrTopic: "LeverageExecutorSet(address,address)" + ): EventFragment; getEvent(nameOrSignatureOrTopic: "Liquidated"): EventFragment; getEvent( nameOrSignatureOrTopic: "Liquidated(address,address[],uint256,uint256,uint256,uint256)" @@ -1520,6 +1563,18 @@ export type InterestElasticityUpdatedEvent = TypedEvent< export type InterestElasticityUpdatedEventFilter = TypedEventFilter; +export interface LeverageExecutorSetEventObject { + oldVal: string; + newVal: string; +} +export type LeverageExecutorSetEvent = TypedEvent< + [string, string], + LeverageExecutorSetEventObject +>; + +export type LeverageExecutorSetEventFilter = + TypedEventFilter; + export interface LiquidatedEventObject { liquidator: string; users: string[]; @@ -2091,6 +2146,10 @@ export interface SGLCollateral extends BaseContract { "interestElasticity()"(overrides?: CallOverrides): Promise<[BigNumber]>; + leverageExecutor(overrides?: CallOverrides): Promise<[string]>; + + "leverageExecutor()"(overrides?: CallOverrides): Promise<[string]>; + liquidationBonusAmount(overrides?: CallOverrides): Promise<[BigNumber]>; "liquidationBonusAmount()"(overrides?: CallOverrides): Promise<[BigNumber]>; @@ -2271,6 +2330,16 @@ export interface SGLCollateral extends BaseContract { overrides?: Overrides & { from?: PromiseOrValue } ): Promise; + setLeverageExecutor( + _executor: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "setLeverageExecutor(address)"( + _executor: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + setMarketConfig( _oracle: PromiseOrValue, _oracleData: PromiseOrValue, @@ -2664,6 +2733,10 @@ export interface SGLCollateral extends BaseContract { "interestElasticity()"(overrides?: CallOverrides): Promise; + leverageExecutor(overrides?: CallOverrides): Promise; + + "leverageExecutor()"(overrides?: CallOverrides): Promise; + liquidationBonusAmount(overrides?: CallOverrides): Promise; "liquidationBonusAmount()"(overrides?: CallOverrides): Promise; @@ -2834,6 +2907,16 @@ export interface SGLCollateral extends BaseContract { overrides?: Overrides & { from?: PromiseOrValue } ): Promise; + setLeverageExecutor( + _executor: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "setLeverageExecutor(address)"( + _executor: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + setMarketConfig( _oracle: PromiseOrValue, _oracleData: PromiseOrValue, @@ -3209,6 +3292,10 @@ export interface SGLCollateral extends BaseContract { "interestElasticity()"(overrides?: CallOverrides): Promise; + leverageExecutor(overrides?: CallOverrides): Promise; + + "leverageExecutor()"(overrides?: CallOverrides): Promise; + liquidationBonusAmount(overrides?: CallOverrides): Promise; "liquidationBonusAmount()"(overrides?: CallOverrides): Promise; @@ -3379,6 +3466,16 @@ export interface SGLCollateral extends BaseContract { overrides?: CallOverrides ): Promise; + setLeverageExecutor( + _executor: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "setLeverageExecutor(address)"( + _executor: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + setMarketConfig( _oracle: PromiseOrValue, _oracleData: PromiseOrValue, @@ -3597,6 +3694,15 @@ export interface SGLCollateral extends BaseContract { newVal?: PromiseOrValue | null ): InterestElasticityUpdatedEventFilter; + "LeverageExecutorSet(address,address)"( + oldVal?: PromiseOrValue | null, + newVal?: PromiseOrValue | null + ): LeverageExecutorSetEventFilter; + LeverageExecutorSet( + oldVal?: PromiseOrValue | null, + newVal?: PromiseOrValue | null + ): LeverageExecutorSetEventFilter; + "Liquidated(address,address[],uint256,uint256,uint256,uint256)"( liquidator?: PromiseOrValue | null, users?: PromiseOrValue[] | null, @@ -4045,6 +4151,10 @@ export interface SGLCollateral extends BaseContract { "interestElasticity()"(overrides?: CallOverrides): Promise; + leverageExecutor(overrides?: CallOverrides): Promise; + + "leverageExecutor()"(overrides?: CallOverrides): Promise; + liquidationBonusAmount(overrides?: CallOverrides): Promise; "liquidationBonusAmount()"(overrides?: CallOverrides): Promise; @@ -4215,6 +4325,16 @@ export interface SGLCollateral extends BaseContract { overrides?: Overrides & { from?: PromiseOrValue } ): Promise; + setLeverageExecutor( + _executor: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "setLeverageExecutor(address)"( + _executor: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + setMarketConfig( _oracle: PromiseOrValue, _oracleData: PromiseOrValue, @@ -4571,6 +4691,12 @@ export interface SGLCollateral extends BaseContract { overrides?: CallOverrides ): Promise; + leverageExecutor(overrides?: CallOverrides): Promise; + + "leverageExecutor()"( + overrides?: CallOverrides + ): Promise; + liquidationBonusAmount( overrides?: CallOverrides ): Promise; @@ -4779,6 +4905,16 @@ export interface SGLCollateral extends BaseContract { overrides?: Overrides & { from?: PromiseOrValue } ): Promise; + setLeverageExecutor( + _executor: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "setLeverageExecutor(address)"( + _executor: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + setMarketConfig( _oracle: PromiseOrValue, _oracleData: PromiseOrValue, diff --git a/src/typechain/tapioca-bar/markets/singularity/SGLCommon.ts b/src/typechain/tapioca-bar/markets/singularity/SGLCommon.ts index 3f0d617c..f697597f 100644 --- a/src/typechain/tapioca-bar/markets/singularity/SGLCommon.ts +++ b/src/typechain/tapioca-bar/markets/singularity/SGLCommon.ts @@ -68,6 +68,7 @@ export interface SGLCommonInterface extends utils.Interface { "fullUtilizationMinusMax()": FunctionFragment; "getInterestDetails()": FunctionFragment; "interestElasticity()": FunctionFragment; + "leverageExecutor()": FunctionFragment; "liquidationBonusAmount()": FunctionFragment; "liquidationCollateralizationRate()": FunctionFragment; "liquidationMultiplier()": FunctionFragment; @@ -92,6 +93,7 @@ export interface SGLCommonInterface extends utils.Interface { "protocolFee()": FunctionFragment; "rateTimestamp()": FunctionFragment; "rateValidDuration()": FunctionFragment; + "setLeverageExecutor(address)": FunctionFragment; "setMarketConfig(address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)": FunctionFragment; "startingInterestPerSecond()": FunctionFragment; "symbol()": FunctionFragment; @@ -162,6 +164,8 @@ export interface SGLCommonInterface extends utils.Interface { | "getInterestDetails()" | "interestElasticity" | "interestElasticity()" + | "leverageExecutor" + | "leverageExecutor()" | "liquidationBonusAmount" | "liquidationBonusAmount()" | "liquidationCollateralizationRate" @@ -210,6 +214,8 @@ export interface SGLCommonInterface extends utils.Interface { | "rateTimestamp()" | "rateValidDuration" | "rateValidDuration()" + | "setLeverageExecutor" + | "setLeverageExecutor(address)" | "setMarketConfig" | "setMarketConfig(address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)" | "startingInterestPerSecond" @@ -428,6 +434,14 @@ export interface SGLCommonInterface extends utils.Interface { functionFragment: "interestElasticity()", values?: undefined ): string; + encodeFunctionData( + functionFragment: "leverageExecutor", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "leverageExecutor()", + values?: undefined + ): string; encodeFunctionData( functionFragment: "liquidationBonusAmount", values?: undefined @@ -628,6 +642,14 @@ export interface SGLCommonInterface extends utils.Interface { functionFragment: "rateValidDuration()", values?: undefined ): string; + encodeFunctionData( + functionFragment: "setLeverageExecutor", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "setLeverageExecutor(address)", + values: [PromiseOrValue] + ): string; encodeFunctionData( functionFragment: "setMarketConfig", values: [ @@ -946,6 +968,14 @@ export interface SGLCommonInterface extends utils.Interface { functionFragment: "interestElasticity()", data: BytesLike ): Result; + decodeFunctionResult( + functionFragment: "leverageExecutor", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "leverageExecutor()", + data: BytesLike + ): Result; decodeFunctionResult( functionFragment: "liquidationBonusAmount", data: BytesLike @@ -1105,6 +1135,14 @@ export interface SGLCommonInterface extends utils.Interface { functionFragment: "rateValidDuration()", data: BytesLike ): Result; + decodeFunctionResult( + functionFragment: "setLeverageExecutor", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "setLeverageExecutor(address)", + data: BytesLike + ): Result; decodeFunctionResult( functionFragment: "setMarketConfig", data: BytesLike @@ -1223,6 +1261,7 @@ export interface SGLCommonInterface extends utils.Interface { "ConservatorUpdated(address,address)": EventFragment; "ExchangeRateDurationUpdated(uint256,uint256)": EventFragment; "InterestElasticityUpdated(uint256,uint256)": EventFragment; + "LeverageExecutorSet(address,address)": EventFragment; "Liquidated(address,address[],uint256,uint256,uint256,uint256)": EventFragment; "LiquidationMultiplierUpdated(uint256,uint256)": EventFragment; "LogAccrue(uint256,uint256,uint64,uint256)": EventFragment; @@ -1277,6 +1316,10 @@ export interface SGLCommonInterface extends utils.Interface { getEvent( nameOrSignatureOrTopic: "InterestElasticityUpdated(uint256,uint256)" ): EventFragment; + getEvent(nameOrSignatureOrTopic: "LeverageExecutorSet"): EventFragment; + getEvent( + nameOrSignatureOrTopic: "LeverageExecutorSet(address,address)" + ): EventFragment; getEvent(nameOrSignatureOrTopic: "Liquidated"): EventFragment; getEvent( nameOrSignatureOrTopic: "Liquidated(address,address[],uint256,uint256,uint256,uint256)" @@ -1462,6 +1505,18 @@ export type InterestElasticityUpdatedEvent = TypedEvent< export type InterestElasticityUpdatedEventFilter = TypedEventFilter; +export interface LeverageExecutorSetEventObject { + oldVal: string; + newVal: string; +} +export type LeverageExecutorSetEvent = TypedEvent< + [string, string], + LeverageExecutorSetEventObject +>; + +export type LeverageExecutorSetEventFilter = + TypedEventFilter; + export interface LiquidatedEventObject { liquidator: string; users: string[]; @@ -2015,6 +2070,10 @@ export interface SGLCommon extends BaseContract { "interestElasticity()"(overrides?: CallOverrides): Promise<[BigNumber]>; + leverageExecutor(overrides?: CallOverrides): Promise<[string]>; + + "leverageExecutor()"(overrides?: CallOverrides): Promise<[string]>; + liquidationBonusAmount(overrides?: CallOverrides): Promise<[BigNumber]>; "liquidationBonusAmount()"(overrides?: CallOverrides): Promise<[BigNumber]>; @@ -2181,6 +2240,16 @@ export interface SGLCommon extends BaseContract { "rateValidDuration()"(overrides?: CallOverrides): Promise<[BigNumber]>; + setLeverageExecutor( + _executor: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "setLeverageExecutor(address)"( + _executor: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + setMarketConfig( _oracle: PromiseOrValue, _oracleData: PromiseOrValue, @@ -2556,6 +2625,10 @@ export interface SGLCommon extends BaseContract { "interestElasticity()"(overrides?: CallOverrides): Promise; + leverageExecutor(overrides?: CallOverrides): Promise; + + "leverageExecutor()"(overrides?: CallOverrides): Promise; + liquidationBonusAmount(overrides?: CallOverrides): Promise; "liquidationBonusAmount()"(overrides?: CallOverrides): Promise; @@ -2712,6 +2785,16 @@ export interface SGLCommon extends BaseContract { "rateValidDuration()"(overrides?: CallOverrides): Promise; + setLeverageExecutor( + _executor: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "setLeverageExecutor(address)"( + _executor: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + setMarketConfig( _oracle: PromiseOrValue, _oracleData: PromiseOrValue, @@ -3069,6 +3152,10 @@ export interface SGLCommon extends BaseContract { "interestElasticity()"(overrides?: CallOverrides): Promise; + leverageExecutor(overrides?: CallOverrides): Promise; + + "leverageExecutor()"(overrides?: CallOverrides): Promise; + liquidationBonusAmount(overrides?: CallOverrides): Promise; "liquidationBonusAmount()"(overrides?: CallOverrides): Promise; @@ -3225,6 +3312,16 @@ export interface SGLCommon extends BaseContract { "rateValidDuration()"(overrides?: CallOverrides): Promise; + setLeverageExecutor( + _executor: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "setLeverageExecutor(address)"( + _executor: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + setMarketConfig( _oracle: PromiseOrValue, _oracleData: PromiseOrValue, @@ -3443,6 +3540,15 @@ export interface SGLCommon extends BaseContract { newVal?: PromiseOrValue | null ): InterestElasticityUpdatedEventFilter; + "LeverageExecutorSet(address,address)"( + oldVal?: PromiseOrValue | null, + newVal?: PromiseOrValue | null + ): LeverageExecutorSetEventFilter; + LeverageExecutorSet( + oldVal?: PromiseOrValue | null, + newVal?: PromiseOrValue | null + ): LeverageExecutorSetEventFilter; + "Liquidated(address,address[],uint256,uint256,uint256,uint256)"( liquidator?: PromiseOrValue | null, users?: PromiseOrValue[] | null, @@ -3873,6 +3979,10 @@ export interface SGLCommon extends BaseContract { "interestElasticity()"(overrides?: CallOverrides): Promise; + leverageExecutor(overrides?: CallOverrides): Promise; + + "leverageExecutor()"(overrides?: CallOverrides): Promise; + liquidationBonusAmount(overrides?: CallOverrides): Promise; "liquidationBonusAmount()"(overrides?: CallOverrides): Promise; @@ -4029,6 +4139,16 @@ export interface SGLCommon extends BaseContract { "rateValidDuration()"(overrides?: CallOverrides): Promise; + setLeverageExecutor( + _executor: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "setLeverageExecutor(address)"( + _executor: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + setMarketConfig( _oracle: PromiseOrValue, _oracleData: PromiseOrValue, @@ -4367,6 +4487,12 @@ export interface SGLCommon extends BaseContract { overrides?: CallOverrides ): Promise; + leverageExecutor(overrides?: CallOverrides): Promise; + + "leverageExecutor()"( + overrides?: CallOverrides + ): Promise; + liquidationBonusAmount( overrides?: CallOverrides ): Promise; @@ -4561,6 +4687,16 @@ export interface SGLCommon extends BaseContract { overrides?: CallOverrides ): Promise; + setLeverageExecutor( + _executor: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "setLeverageExecutor(address)"( + _executor: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + setMarketConfig( _oracle: PromiseOrValue, _oracleData: PromiseOrValue, diff --git a/src/typechain/tapioca-bar/markets/singularity/SGLLendingCommon.ts b/src/typechain/tapioca-bar/markets/singularity/SGLLendingCommon.ts index 3be2f272..0274a7b6 100644 --- a/src/typechain/tapioca-bar/markets/singularity/SGLLendingCommon.ts +++ b/src/typechain/tapioca-bar/markets/singularity/SGLLendingCommon.ts @@ -68,6 +68,7 @@ export interface SGLLendingCommonInterface extends utils.Interface { "fullUtilizationMinusMax()": FunctionFragment; "getInterestDetails()": FunctionFragment; "interestElasticity()": FunctionFragment; + "leverageExecutor()": FunctionFragment; "liquidationBonusAmount()": FunctionFragment; "liquidationCollateralizationRate()": FunctionFragment; "liquidationMultiplier()": FunctionFragment; @@ -92,6 +93,7 @@ export interface SGLLendingCommonInterface extends utils.Interface { "protocolFee()": FunctionFragment; "rateTimestamp()": FunctionFragment; "rateValidDuration()": FunctionFragment; + "setLeverageExecutor(address)": FunctionFragment; "setMarketConfig(address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)": FunctionFragment; "startingInterestPerSecond()": FunctionFragment; "symbol()": FunctionFragment; @@ -162,6 +164,8 @@ export interface SGLLendingCommonInterface extends utils.Interface { | "getInterestDetails()" | "interestElasticity" | "interestElasticity()" + | "leverageExecutor" + | "leverageExecutor()" | "liquidationBonusAmount" | "liquidationBonusAmount()" | "liquidationCollateralizationRate" @@ -210,6 +214,8 @@ export interface SGLLendingCommonInterface extends utils.Interface { | "rateTimestamp()" | "rateValidDuration" | "rateValidDuration()" + | "setLeverageExecutor" + | "setLeverageExecutor(address)" | "setMarketConfig" | "setMarketConfig(address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)" | "startingInterestPerSecond" @@ -428,6 +434,14 @@ export interface SGLLendingCommonInterface extends utils.Interface { functionFragment: "interestElasticity()", values?: undefined ): string; + encodeFunctionData( + functionFragment: "leverageExecutor", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "leverageExecutor()", + values?: undefined + ): string; encodeFunctionData( functionFragment: "liquidationBonusAmount", values?: undefined @@ -628,6 +642,14 @@ export interface SGLLendingCommonInterface extends utils.Interface { functionFragment: "rateValidDuration()", values?: undefined ): string; + encodeFunctionData( + functionFragment: "setLeverageExecutor", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "setLeverageExecutor(address)", + values: [PromiseOrValue] + ): string; encodeFunctionData( functionFragment: "setMarketConfig", values: [ @@ -946,6 +968,14 @@ export interface SGLLendingCommonInterface extends utils.Interface { functionFragment: "interestElasticity()", data: BytesLike ): Result; + decodeFunctionResult( + functionFragment: "leverageExecutor", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "leverageExecutor()", + data: BytesLike + ): Result; decodeFunctionResult( functionFragment: "liquidationBonusAmount", data: BytesLike @@ -1105,6 +1135,14 @@ export interface SGLLendingCommonInterface extends utils.Interface { functionFragment: "rateValidDuration()", data: BytesLike ): Result; + decodeFunctionResult( + functionFragment: "setLeverageExecutor", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "setLeverageExecutor(address)", + data: BytesLike + ): Result; decodeFunctionResult( functionFragment: "setMarketConfig", data: BytesLike @@ -1223,6 +1261,7 @@ export interface SGLLendingCommonInterface extends utils.Interface { "ConservatorUpdated(address,address)": EventFragment; "ExchangeRateDurationUpdated(uint256,uint256)": EventFragment; "InterestElasticityUpdated(uint256,uint256)": EventFragment; + "LeverageExecutorSet(address,address)": EventFragment; "Liquidated(address,address[],uint256,uint256,uint256,uint256)": EventFragment; "LiquidationMultiplierUpdated(uint256,uint256)": EventFragment; "LogAccrue(uint256,uint256,uint64,uint256)": EventFragment; @@ -1277,6 +1316,10 @@ export interface SGLLendingCommonInterface extends utils.Interface { getEvent( nameOrSignatureOrTopic: "InterestElasticityUpdated(uint256,uint256)" ): EventFragment; + getEvent(nameOrSignatureOrTopic: "LeverageExecutorSet"): EventFragment; + getEvent( + nameOrSignatureOrTopic: "LeverageExecutorSet(address,address)" + ): EventFragment; getEvent(nameOrSignatureOrTopic: "Liquidated"): EventFragment; getEvent( nameOrSignatureOrTopic: "Liquidated(address,address[],uint256,uint256,uint256,uint256)" @@ -1462,6 +1505,18 @@ export type InterestElasticityUpdatedEvent = TypedEvent< export type InterestElasticityUpdatedEventFilter = TypedEventFilter; +export interface LeverageExecutorSetEventObject { + oldVal: string; + newVal: string; +} +export type LeverageExecutorSetEvent = TypedEvent< + [string, string], + LeverageExecutorSetEventObject +>; + +export type LeverageExecutorSetEventFilter = + TypedEventFilter; + export interface LiquidatedEventObject { liquidator: string; users: string[]; @@ -2015,6 +2070,10 @@ export interface SGLLendingCommon extends BaseContract { "interestElasticity()"(overrides?: CallOverrides): Promise<[BigNumber]>; + leverageExecutor(overrides?: CallOverrides): Promise<[string]>; + + "leverageExecutor()"(overrides?: CallOverrides): Promise<[string]>; + liquidationBonusAmount(overrides?: CallOverrides): Promise<[BigNumber]>; "liquidationBonusAmount()"(overrides?: CallOverrides): Promise<[BigNumber]>; @@ -2181,6 +2240,16 @@ export interface SGLLendingCommon extends BaseContract { "rateValidDuration()"(overrides?: CallOverrides): Promise<[BigNumber]>; + setLeverageExecutor( + _executor: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "setLeverageExecutor(address)"( + _executor: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + setMarketConfig( _oracle: PromiseOrValue, _oracleData: PromiseOrValue, @@ -2556,6 +2625,10 @@ export interface SGLLendingCommon extends BaseContract { "interestElasticity()"(overrides?: CallOverrides): Promise; + leverageExecutor(overrides?: CallOverrides): Promise; + + "leverageExecutor()"(overrides?: CallOverrides): Promise; + liquidationBonusAmount(overrides?: CallOverrides): Promise; "liquidationBonusAmount()"(overrides?: CallOverrides): Promise; @@ -2712,6 +2785,16 @@ export interface SGLLendingCommon extends BaseContract { "rateValidDuration()"(overrides?: CallOverrides): Promise; + setLeverageExecutor( + _executor: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "setLeverageExecutor(address)"( + _executor: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + setMarketConfig( _oracle: PromiseOrValue, _oracleData: PromiseOrValue, @@ -3069,6 +3152,10 @@ export interface SGLLendingCommon extends BaseContract { "interestElasticity()"(overrides?: CallOverrides): Promise; + leverageExecutor(overrides?: CallOverrides): Promise; + + "leverageExecutor()"(overrides?: CallOverrides): Promise; + liquidationBonusAmount(overrides?: CallOverrides): Promise; "liquidationBonusAmount()"(overrides?: CallOverrides): Promise; @@ -3225,6 +3312,16 @@ export interface SGLLendingCommon extends BaseContract { "rateValidDuration()"(overrides?: CallOverrides): Promise; + setLeverageExecutor( + _executor: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "setLeverageExecutor(address)"( + _executor: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + setMarketConfig( _oracle: PromiseOrValue, _oracleData: PromiseOrValue, @@ -3443,6 +3540,15 @@ export interface SGLLendingCommon extends BaseContract { newVal?: PromiseOrValue | null ): InterestElasticityUpdatedEventFilter; + "LeverageExecutorSet(address,address)"( + oldVal?: PromiseOrValue | null, + newVal?: PromiseOrValue | null + ): LeverageExecutorSetEventFilter; + LeverageExecutorSet( + oldVal?: PromiseOrValue | null, + newVal?: PromiseOrValue | null + ): LeverageExecutorSetEventFilter; + "Liquidated(address,address[],uint256,uint256,uint256,uint256)"( liquidator?: PromiseOrValue | null, users?: PromiseOrValue[] | null, @@ -3873,6 +3979,10 @@ export interface SGLLendingCommon extends BaseContract { "interestElasticity()"(overrides?: CallOverrides): Promise; + leverageExecutor(overrides?: CallOverrides): Promise; + + "leverageExecutor()"(overrides?: CallOverrides): Promise; + liquidationBonusAmount(overrides?: CallOverrides): Promise; "liquidationBonusAmount()"(overrides?: CallOverrides): Promise; @@ -4029,6 +4139,16 @@ export interface SGLLendingCommon extends BaseContract { "rateValidDuration()"(overrides?: CallOverrides): Promise; + setLeverageExecutor( + _executor: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "setLeverageExecutor(address)"( + _executor: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + setMarketConfig( _oracle: PromiseOrValue, _oracleData: PromiseOrValue, @@ -4367,6 +4487,12 @@ export interface SGLLendingCommon extends BaseContract { overrides?: CallOverrides ): Promise; + leverageExecutor(overrides?: CallOverrides): Promise; + + "leverageExecutor()"( + overrides?: CallOverrides + ): Promise; + liquidationBonusAmount( overrides?: CallOverrides ): Promise; @@ -4561,6 +4687,16 @@ export interface SGLLendingCommon extends BaseContract { overrides?: CallOverrides ): Promise; + setLeverageExecutor( + _executor: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "setLeverageExecutor(address)"( + _executor: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + setMarketConfig( _oracle: PromiseOrValue, _oracleData: PromiseOrValue, diff --git a/src/typechain/tapioca-bar/markets/singularity/SGLLeverage.ts b/src/typechain/tapioca-bar/markets/singularity/SGLLeverage.ts index 6d707711..f3d73537 100644 --- a/src/typechain/tapioca-bar/markets/singularity/SGLLeverage.ts +++ b/src/typechain/tapioca-bar/markets/singularity/SGLLeverage.ts @@ -111,7 +111,7 @@ export interface SGLLeverageInterface extends utils.Interface { "assetId()": FunctionFragment; "balanceOf(address)": FunctionFragment; "borrowOpeningFee()": FunctionFragment; - "buyCollateral(address,uint256,uint256,uint256,address,bytes)": FunctionFragment; + "buyCollateral(address,uint256,uint256,bytes)": FunctionFragment; "callerFee()": FunctionFragment; "claimOwnership()": FunctionFragment; "collateral()": FunctionFragment; @@ -126,6 +126,7 @@ export interface SGLLeverageInterface extends utils.Interface { "fullUtilizationMinusMax()": FunctionFragment; "getInterestDetails()": FunctionFragment; "interestElasticity()": FunctionFragment; + "leverageExecutor()": FunctionFragment; "liquidationBonusAmount()": FunctionFragment; "liquidationCollateralizationRate()": FunctionFragment; "liquidationMultiplier()": FunctionFragment; @@ -152,7 +153,8 @@ export interface SGLLeverageInterface extends utils.Interface { "protocolFee()": FunctionFragment; "rateTimestamp()": FunctionFragment; "rateValidDuration()": FunctionFragment; - "sellCollateral(address,uint256,uint256,address,bytes)": FunctionFragment; + "sellCollateral(address,uint256,bytes)": FunctionFragment; + "setLeverageExecutor(address)": FunctionFragment; "setMarketConfig(address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)": FunctionFragment; "startingInterestPerSecond()": FunctionFragment; "symbol()": FunctionFragment; @@ -196,7 +198,7 @@ export interface SGLLeverageInterface extends utils.Interface { | "borrowOpeningFee" | "borrowOpeningFee()" | "buyCollateral" - | "buyCollateral(address,uint256,uint256,uint256,address,bytes)" + | "buyCollateral(address,uint256,uint256,bytes)" | "callerFee" | "callerFee()" | "claimOwnership" @@ -225,6 +227,8 @@ export interface SGLLeverageInterface extends utils.Interface { | "getInterestDetails()" | "interestElasticity" | "interestElasticity()" + | "leverageExecutor" + | "leverageExecutor()" | "liquidationBonusAmount" | "liquidationBonusAmount()" | "liquidationCollateralizationRate" @@ -278,7 +282,9 @@ export interface SGLLeverageInterface extends utils.Interface { | "rateValidDuration" | "rateValidDuration()" | "sellCollateral" - | "sellCollateral(address,uint256,uint256,address,bytes)" + | "sellCollateral(address,uint256,bytes)" + | "setLeverageExecutor" + | "setLeverageExecutor(address)" | "setMarketConfig" | "setMarketConfig(address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)" | "startingInterestPerSecond" @@ -389,19 +395,15 @@ export interface SGLLeverageInterface extends utils.Interface { PromiseOrValue, PromiseOrValue, PromiseOrValue, - PromiseOrValue, - PromiseOrValue, PromiseOrValue ] ): string; encodeFunctionData( - functionFragment: "buyCollateral(address,uint256,uint256,uint256,address,bytes)", + functionFragment: "buyCollateral(address,uint256,uint256,bytes)", values: [ PromiseOrValue, PromiseOrValue, PromiseOrValue, - PromiseOrValue, - PromiseOrValue, PromiseOrValue ] ): string; @@ -519,6 +521,14 @@ export interface SGLLeverageInterface extends utils.Interface { functionFragment: "interestElasticity()", values?: undefined ): string; + encodeFunctionData( + functionFragment: "leverageExecutor", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "leverageExecutor()", + values?: undefined + ): string; encodeFunctionData( functionFragment: "liquidationBonusAmount", values?: undefined @@ -770,21 +780,25 @@ export interface SGLLeverageInterface extends utils.Interface { values: [ PromiseOrValue, PromiseOrValue, - PromiseOrValue, - PromiseOrValue, PromiseOrValue ] ): string; encodeFunctionData( - functionFragment: "sellCollateral(address,uint256,uint256,address,bytes)", + functionFragment: "sellCollateral(address,uint256,bytes)", values: [ PromiseOrValue, PromiseOrValue, - PromiseOrValue, - PromiseOrValue, PromiseOrValue ] ): string; + encodeFunctionData( + functionFragment: "setLeverageExecutor", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "setLeverageExecutor(address)", + values: [PromiseOrValue] + ): string; encodeFunctionData( functionFragment: "setMarketConfig", values: [ @@ -1008,7 +1022,7 @@ export interface SGLLeverageInterface extends utils.Interface { data: BytesLike ): Result; decodeFunctionResult( - functionFragment: "buyCollateral(address,uint256,uint256,uint256,address,bytes)", + functionFragment: "buyCollateral(address,uint256,uint256,bytes)", data: BytesLike ): Result; decodeFunctionResult(functionFragment: "callerFee", data: BytesLike): Result; @@ -1111,6 +1125,14 @@ export interface SGLLeverageInterface extends utils.Interface { functionFragment: "interestElasticity()", data: BytesLike ): Result; + decodeFunctionResult( + functionFragment: "leverageExecutor", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "leverageExecutor()", + data: BytesLike + ): Result; decodeFunctionResult( functionFragment: "liquidationBonusAmount", data: BytesLike @@ -1291,7 +1313,15 @@ export interface SGLLeverageInterface extends utils.Interface { data: BytesLike ): Result; decodeFunctionResult( - functionFragment: "sellCollateral(address,uint256,uint256,address,bytes)", + functionFragment: "sellCollateral(address,uint256,bytes)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "setLeverageExecutor", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "setLeverageExecutor(address)", data: BytesLike ): Result; decodeFunctionResult( @@ -1412,6 +1442,7 @@ export interface SGLLeverageInterface extends utils.Interface { "ConservatorUpdated(address,address)": EventFragment; "ExchangeRateDurationUpdated(uint256,uint256)": EventFragment; "InterestElasticityUpdated(uint256,uint256)": EventFragment; + "LeverageExecutorSet(address,address)": EventFragment; "Liquidated(address,address[],uint256,uint256,uint256,uint256)": EventFragment; "LiquidationMultiplierUpdated(uint256,uint256)": EventFragment; "LogAccrue(uint256,uint256,uint64,uint256)": EventFragment; @@ -1466,6 +1497,10 @@ export interface SGLLeverageInterface extends utils.Interface { getEvent( nameOrSignatureOrTopic: "InterestElasticityUpdated(uint256,uint256)" ): EventFragment; + getEvent(nameOrSignatureOrTopic: "LeverageExecutorSet"): EventFragment; + getEvent( + nameOrSignatureOrTopic: "LeverageExecutorSet(address,address)" + ): EventFragment; getEvent(nameOrSignatureOrTopic: "Liquidated"): EventFragment; getEvent( nameOrSignatureOrTopic: "Liquidated(address,address[],uint256,uint256,uint256,uint256)" @@ -1651,6 +1686,18 @@ export type InterestElasticityUpdatedEvent = TypedEvent< export type InterestElasticityUpdatedEventFilter = TypedEventFilter; +export interface LeverageExecutorSetEventObject { + oldVal: string; + newVal: string; +} +export type LeverageExecutorSetEvent = TypedEvent< + [string, string], + LeverageExecutorSetEventObject +>; + +export type LeverageExecutorSetEventFilter = + TypedEventFilter; + export interface LiquidatedEventObject { liquidator: string; users: string[]; @@ -2094,19 +2141,15 @@ export interface SGLLeverage extends BaseContract { from: PromiseOrValue, borrowAmount: PromiseOrValue, supplyAmount: PromiseOrValue, - minAmountOut: PromiseOrValue, - swapper: PromiseOrValue, - dexData: PromiseOrValue, + data: PromiseOrValue, overrides?: Overrides & { from?: PromiseOrValue } ): Promise; - "buyCollateral(address,uint256,uint256,uint256,address,bytes)"( + "buyCollateral(address,uint256,uint256,bytes)"( from: PromiseOrValue, borrowAmount: PromiseOrValue, supplyAmount: PromiseOrValue, - minAmountOut: PromiseOrValue, - swapper: PromiseOrValue, - dexData: PromiseOrValue, + data: PromiseOrValue, overrides?: Overrides & { from?: PromiseOrValue } ): Promise; @@ -2224,6 +2267,10 @@ export interface SGLLeverage extends BaseContract { "interestElasticity()"(overrides?: CallOverrides): Promise<[BigNumber]>; + leverageExecutor(overrides?: CallOverrides): Promise<[string]>; + + "leverageExecutor()"(overrides?: CallOverrides): Promise<[string]>; + liquidationBonusAmount(overrides?: CallOverrides): Promise<[BigNumber]>; "liquidationBonusAmount()"(overrides?: CallOverrides): Promise<[BigNumber]>; @@ -2435,18 +2482,24 @@ export interface SGLLeverage extends BaseContract { sellCollateral( from: PromiseOrValue, share: PromiseOrValue, - minAmountOut: PromiseOrValue, - swapper: PromiseOrValue, - dexData: PromiseOrValue, + data: PromiseOrValue, overrides?: Overrides & { from?: PromiseOrValue } ): Promise; - "sellCollateral(address,uint256,uint256,address,bytes)"( + "sellCollateral(address,uint256,bytes)"( from: PromiseOrValue, share: PromiseOrValue, - minAmountOut: PromiseOrValue, - swapper: PromiseOrValue, - dexData: PromiseOrValue, + data: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setLeverageExecutor( + _executor: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "setLeverageExecutor(address)"( + _executor: PromiseOrValue, overrides?: Overrides & { from?: PromiseOrValue } ): Promise; @@ -2717,19 +2770,15 @@ export interface SGLLeverage extends BaseContract { from: PromiseOrValue, borrowAmount: PromiseOrValue, supplyAmount: PromiseOrValue, - minAmountOut: PromiseOrValue, - swapper: PromiseOrValue, - dexData: PromiseOrValue, + data: PromiseOrValue, overrides?: Overrides & { from?: PromiseOrValue } ): Promise; - "buyCollateral(address,uint256,uint256,uint256,address,bytes)"( + "buyCollateral(address,uint256,uint256,bytes)"( from: PromiseOrValue, borrowAmount: PromiseOrValue, supplyAmount: PromiseOrValue, - minAmountOut: PromiseOrValue, - swapper: PromiseOrValue, - dexData: PromiseOrValue, + data: PromiseOrValue, overrides?: Overrides & { from?: PromiseOrValue } ): Promise; @@ -2845,6 +2894,10 @@ export interface SGLLeverage extends BaseContract { "interestElasticity()"(overrides?: CallOverrides): Promise; + leverageExecutor(overrides?: CallOverrides): Promise; + + "leverageExecutor()"(overrides?: CallOverrides): Promise; + liquidationBonusAmount(overrides?: CallOverrides): Promise; "liquidationBonusAmount()"(overrides?: CallOverrides): Promise; @@ -3046,18 +3099,24 @@ export interface SGLLeverage extends BaseContract { sellCollateral( from: PromiseOrValue, share: PromiseOrValue, - minAmountOut: PromiseOrValue, - swapper: PromiseOrValue, - dexData: PromiseOrValue, + data: PromiseOrValue, overrides?: Overrides & { from?: PromiseOrValue } ): Promise; - "sellCollateral(address,uint256,uint256,address,bytes)"( + "sellCollateral(address,uint256,bytes)"( from: PromiseOrValue, share: PromiseOrValue, - minAmountOut: PromiseOrValue, - swapper: PromiseOrValue, - dexData: PromiseOrValue, + data: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setLeverageExecutor( + _executor: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "setLeverageExecutor(address)"( + _executor: PromiseOrValue, overrides?: Overrides & { from?: PromiseOrValue } ): Promise; @@ -3314,19 +3373,15 @@ export interface SGLLeverage extends BaseContract { from: PromiseOrValue, borrowAmount: PromiseOrValue, supplyAmount: PromiseOrValue, - minAmountOut: PromiseOrValue, - swapper: PromiseOrValue, - dexData: PromiseOrValue, + data: PromiseOrValue, overrides?: CallOverrides ): Promise; - "buyCollateral(address,uint256,uint256,uint256,address,bytes)"( + "buyCollateral(address,uint256,uint256,bytes)"( from: PromiseOrValue, borrowAmount: PromiseOrValue, supplyAmount: PromiseOrValue, - minAmountOut: PromiseOrValue, - swapper: PromiseOrValue, - dexData: PromiseOrValue, + data: PromiseOrValue, overrides?: CallOverrides ): Promise; @@ -3438,6 +3493,10 @@ export interface SGLLeverage extends BaseContract { "interestElasticity()"(overrides?: CallOverrides): Promise; + leverageExecutor(overrides?: CallOverrides): Promise; + + "leverageExecutor()"(overrides?: CallOverrides): Promise; + liquidationBonusAmount(overrides?: CallOverrides): Promise; "liquidationBonusAmount()"(overrides?: CallOverrides): Promise; @@ -3639,21 +3698,27 @@ export interface SGLLeverage extends BaseContract { sellCollateral( from: PromiseOrValue, share: PromiseOrValue, - minAmountOut: PromiseOrValue, - swapper: PromiseOrValue, - dexData: PromiseOrValue, + data: PromiseOrValue, overrides?: CallOverrides ): Promise; - "sellCollateral(address,uint256,uint256,address,bytes)"( + "sellCollateral(address,uint256,bytes)"( from: PromiseOrValue, share: PromiseOrValue, - minAmountOut: PromiseOrValue, - swapper: PromiseOrValue, - dexData: PromiseOrValue, + data: PromiseOrValue, overrides?: CallOverrides ): Promise; + setLeverageExecutor( + _executor: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "setLeverageExecutor(address)"( + _executor: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + setMarketConfig( _oracle: PromiseOrValue, _oracleData: PromiseOrValue, @@ -3872,6 +3937,15 @@ export interface SGLLeverage extends BaseContract { newVal?: PromiseOrValue | null ): InterestElasticityUpdatedEventFilter; + "LeverageExecutorSet(address,address)"( + oldVal?: PromiseOrValue | null, + newVal?: PromiseOrValue | null + ): LeverageExecutorSetEventFilter; + LeverageExecutorSet( + oldVal?: PromiseOrValue | null, + newVal?: PromiseOrValue | null + ): LeverageExecutorSetEventFilter; + "Liquidated(address,address[],uint256,uint256,uint256,uint256)"( liquidator?: PromiseOrValue | null, users?: PromiseOrValue[] | null, @@ -4220,19 +4294,15 @@ export interface SGLLeverage extends BaseContract { from: PromiseOrValue, borrowAmount: PromiseOrValue, supplyAmount: PromiseOrValue, - minAmountOut: PromiseOrValue, - swapper: PromiseOrValue, - dexData: PromiseOrValue, + data: PromiseOrValue, overrides?: Overrides & { from?: PromiseOrValue } ): Promise; - "buyCollateral(address,uint256,uint256,uint256,address,bytes)"( + "buyCollateral(address,uint256,uint256,bytes)"( from: PromiseOrValue, borrowAmount: PromiseOrValue, supplyAmount: PromiseOrValue, - minAmountOut: PromiseOrValue, - swapper: PromiseOrValue, - dexData: PromiseOrValue, + data: PromiseOrValue, overrides?: Overrides & { from?: PromiseOrValue } ): Promise; @@ -4322,6 +4392,10 @@ export interface SGLLeverage extends BaseContract { "interestElasticity()"(overrides?: CallOverrides): Promise; + leverageExecutor(overrides?: CallOverrides): Promise; + + "leverageExecutor()"(overrides?: CallOverrides): Promise; + liquidationBonusAmount(overrides?: CallOverrides): Promise; "liquidationBonusAmount()"(overrides?: CallOverrides): Promise; @@ -4523,18 +4597,24 @@ export interface SGLLeverage extends BaseContract { sellCollateral( from: PromiseOrValue, share: PromiseOrValue, - minAmountOut: PromiseOrValue, - swapper: PromiseOrValue, - dexData: PromiseOrValue, + data: PromiseOrValue, overrides?: Overrides & { from?: PromiseOrValue } ): Promise; - "sellCollateral(address,uint256,uint256,address,bytes)"( + "sellCollateral(address,uint256,bytes)"( from: PromiseOrValue, share: PromiseOrValue, - minAmountOut: PromiseOrValue, - swapper: PromiseOrValue, - dexData: PromiseOrValue, + data: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setLeverageExecutor( + _executor: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "setLeverageExecutor(address)"( + _executor: PromiseOrValue, overrides?: Overrides & { from?: PromiseOrValue } ): Promise; @@ -4778,19 +4858,15 @@ export interface SGLLeverage extends BaseContract { from: PromiseOrValue, borrowAmount: PromiseOrValue, supplyAmount: PromiseOrValue, - minAmountOut: PromiseOrValue, - swapper: PromiseOrValue, - dexData: PromiseOrValue, + data: PromiseOrValue, overrides?: Overrides & { from?: PromiseOrValue } ): Promise; - "buyCollateral(address,uint256,uint256,uint256,address,bytes)"( + "buyCollateral(address,uint256,uint256,bytes)"( from: PromiseOrValue, borrowAmount: PromiseOrValue, supplyAmount: PromiseOrValue, - minAmountOut: PromiseOrValue, - swapper: PromiseOrValue, - dexData: PromiseOrValue, + data: PromiseOrValue, overrides?: Overrides & { from?: PromiseOrValue } ): Promise; @@ -4896,6 +4972,12 @@ export interface SGLLeverage extends BaseContract { overrides?: CallOverrides ): Promise; + leverageExecutor(overrides?: CallOverrides): Promise; + + "leverageExecutor()"( + overrides?: CallOverrides + ): Promise; + liquidationBonusAmount( overrides?: CallOverrides ): Promise; @@ -5135,18 +5217,24 @@ export interface SGLLeverage extends BaseContract { sellCollateral( from: PromiseOrValue, share: PromiseOrValue, - minAmountOut: PromiseOrValue, - swapper: PromiseOrValue, - dexData: PromiseOrValue, + data: PromiseOrValue, overrides?: Overrides & { from?: PromiseOrValue } ): Promise; - "sellCollateral(address,uint256,uint256,address,bytes)"( + "sellCollateral(address,uint256,bytes)"( from: PromiseOrValue, share: PromiseOrValue, - minAmountOut: PromiseOrValue, - swapper: PromiseOrValue, - dexData: PromiseOrValue, + data: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setLeverageExecutor( + _executor: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "setLeverageExecutor(address)"( + _executor: PromiseOrValue, overrides?: Overrides & { from?: PromiseOrValue } ): Promise; diff --git a/src/typechain/tapioca-bar/markets/singularity/SGLLiquidation.ts b/src/typechain/tapioca-bar/markets/singularity/SGLLiquidation.ts index faba5d3d..d8d2238b 100644 --- a/src/typechain/tapioca-bar/markets/singularity/SGLLiquidation.ts +++ b/src/typechain/tapioca-bar/markets/singularity/SGLLiquidation.ts @@ -68,6 +68,7 @@ export interface SGLLiquidationInterface extends utils.Interface { "fullUtilizationMinusMax()": FunctionFragment; "getInterestDetails()": FunctionFragment; "interestElasticity()": FunctionFragment; + "leverageExecutor()": FunctionFragment; "liquidate(address[],uint256[],address[],bytes[])": FunctionFragment; "liquidateBadDebt(address,address,address,bytes)": FunctionFragment; "liquidationBonusAmount()": FunctionFragment; @@ -94,6 +95,7 @@ export interface SGLLiquidationInterface extends utils.Interface { "protocolFee()": FunctionFragment; "rateTimestamp()": FunctionFragment; "rateValidDuration()": FunctionFragment; + "setLeverageExecutor(address)": FunctionFragment; "setMarketConfig(address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)": FunctionFragment; "startingInterestPerSecond()": FunctionFragment; "symbol()": FunctionFragment; @@ -164,6 +166,8 @@ export interface SGLLiquidationInterface extends utils.Interface { | "getInterestDetails()" | "interestElasticity" | "interestElasticity()" + | "leverageExecutor" + | "leverageExecutor()" | "liquidate" | "liquidate(address[],uint256[],address[],bytes[])" | "liquidateBadDebt" @@ -216,6 +220,8 @@ export interface SGLLiquidationInterface extends utils.Interface { | "rateTimestamp()" | "rateValidDuration" | "rateValidDuration()" + | "setLeverageExecutor" + | "setLeverageExecutor(address)" | "setMarketConfig" | "setMarketConfig(address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)" | "startingInterestPerSecond" @@ -434,6 +440,14 @@ export interface SGLLiquidationInterface extends utils.Interface { functionFragment: "interestElasticity()", values?: undefined ): string; + encodeFunctionData( + functionFragment: "leverageExecutor", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "leverageExecutor()", + values?: undefined + ): string; encodeFunctionData( functionFragment: "liquidate", values: [ @@ -670,6 +684,14 @@ export interface SGLLiquidationInterface extends utils.Interface { functionFragment: "rateValidDuration()", values?: undefined ): string; + encodeFunctionData( + functionFragment: "setLeverageExecutor", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "setLeverageExecutor(address)", + values: [PromiseOrValue] + ): string; encodeFunctionData( functionFragment: "setMarketConfig", values: [ @@ -988,6 +1010,14 @@ export interface SGLLiquidationInterface extends utils.Interface { functionFragment: "interestElasticity()", data: BytesLike ): Result; + decodeFunctionResult( + functionFragment: "leverageExecutor", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "leverageExecutor()", + data: BytesLike + ): Result; decodeFunctionResult(functionFragment: "liquidate", data: BytesLike): Result; decodeFunctionResult( functionFragment: "liquidate(address[],uint256[],address[],bytes[])", @@ -1160,6 +1190,14 @@ export interface SGLLiquidationInterface extends utils.Interface { functionFragment: "rateValidDuration()", data: BytesLike ): Result; + decodeFunctionResult( + functionFragment: "setLeverageExecutor", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "setLeverageExecutor(address)", + data: BytesLike + ): Result; decodeFunctionResult( functionFragment: "setMarketConfig", data: BytesLike @@ -1278,6 +1316,7 @@ export interface SGLLiquidationInterface extends utils.Interface { "ConservatorUpdated(address,address)": EventFragment; "ExchangeRateDurationUpdated(uint256,uint256)": EventFragment; "InterestElasticityUpdated(uint256,uint256)": EventFragment; + "LeverageExecutorSet(address,address)": EventFragment; "Liquidated(address,address[],uint256,uint256,uint256,uint256)": EventFragment; "LiquidationMultiplierUpdated(uint256,uint256)": EventFragment; "LogAccrue(uint256,uint256,uint64,uint256)": EventFragment; @@ -1332,6 +1371,10 @@ export interface SGLLiquidationInterface extends utils.Interface { getEvent( nameOrSignatureOrTopic: "InterestElasticityUpdated(uint256,uint256)" ): EventFragment; + getEvent(nameOrSignatureOrTopic: "LeverageExecutorSet"): EventFragment; + getEvent( + nameOrSignatureOrTopic: "LeverageExecutorSet(address,address)" + ): EventFragment; getEvent(nameOrSignatureOrTopic: "Liquidated"): EventFragment; getEvent( nameOrSignatureOrTopic: "Liquidated(address,address[],uint256,uint256,uint256,uint256)" @@ -1517,6 +1560,18 @@ export type InterestElasticityUpdatedEvent = TypedEvent< export type InterestElasticityUpdatedEventFilter = TypedEventFilter; +export interface LeverageExecutorSetEventObject { + oldVal: string; + newVal: string; +} +export type LeverageExecutorSetEvent = TypedEvent< + [string, string], + LeverageExecutorSetEventObject +>; + +export type LeverageExecutorSetEventFilter = + TypedEventFilter; + export interface LiquidatedEventObject { liquidator: string; users: string[]; @@ -2070,6 +2125,10 @@ export interface SGLLiquidation extends BaseContract { "interestElasticity()"(overrides?: CallOverrides): Promise<[BigNumber]>; + leverageExecutor(overrides?: CallOverrides): Promise<[string]>; + + "leverageExecutor()"(overrides?: CallOverrides): Promise<[string]>; + liquidate( users: PromiseOrValue[], maxBorrowParts: PromiseOrValue[], @@ -2268,6 +2327,16 @@ export interface SGLLiquidation extends BaseContract { "rateValidDuration()"(overrides?: CallOverrides): Promise<[BigNumber]>; + setLeverageExecutor( + _executor: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "setLeverageExecutor(address)"( + _executor: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + setMarketConfig( _oracle: PromiseOrValue, _oracleData: PromiseOrValue, @@ -2643,6 +2712,10 @@ export interface SGLLiquidation extends BaseContract { "interestElasticity()"(overrides?: CallOverrides): Promise; + leverageExecutor(overrides?: CallOverrides): Promise; + + "leverageExecutor()"(overrides?: CallOverrides): Promise; + liquidate( users: PromiseOrValue[], maxBorrowParts: PromiseOrValue[], @@ -2831,6 +2904,16 @@ export interface SGLLiquidation extends BaseContract { "rateValidDuration()"(overrides?: CallOverrides): Promise; + setLeverageExecutor( + _executor: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "setLeverageExecutor(address)"( + _executor: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + setMarketConfig( _oracle: PromiseOrValue, _oracleData: PromiseOrValue, @@ -3188,6 +3271,10 @@ export interface SGLLiquidation extends BaseContract { "interestElasticity()"(overrides?: CallOverrides): Promise; + leverageExecutor(overrides?: CallOverrides): Promise; + + "leverageExecutor()"(overrides?: CallOverrides): Promise; + liquidate( users: PromiseOrValue[], maxBorrowParts: PromiseOrValue[], @@ -3376,6 +3463,16 @@ export interface SGLLiquidation extends BaseContract { "rateValidDuration()"(overrides?: CallOverrides): Promise; + setLeverageExecutor( + _executor: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "setLeverageExecutor(address)"( + _executor: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + setMarketConfig( _oracle: PromiseOrValue, _oracleData: PromiseOrValue, @@ -3594,6 +3691,15 @@ export interface SGLLiquidation extends BaseContract { newVal?: PromiseOrValue | null ): InterestElasticityUpdatedEventFilter; + "LeverageExecutorSet(address,address)"( + oldVal?: PromiseOrValue | null, + newVal?: PromiseOrValue | null + ): LeverageExecutorSetEventFilter; + LeverageExecutorSet( + oldVal?: PromiseOrValue | null, + newVal?: PromiseOrValue | null + ): LeverageExecutorSetEventFilter; + "Liquidated(address,address[],uint256,uint256,uint256,uint256)"( liquidator?: PromiseOrValue | null, users?: PromiseOrValue[] | null, @@ -4024,6 +4130,10 @@ export interface SGLLiquidation extends BaseContract { "interestElasticity()"(overrides?: CallOverrides): Promise; + leverageExecutor(overrides?: CallOverrides): Promise; + + "leverageExecutor()"(overrides?: CallOverrides): Promise; + liquidate( users: PromiseOrValue[], maxBorrowParts: PromiseOrValue[], @@ -4212,6 +4322,16 @@ export interface SGLLiquidation extends BaseContract { "rateValidDuration()"(overrides?: CallOverrides): Promise; + setLeverageExecutor( + _executor: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "setLeverageExecutor(address)"( + _executor: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + setMarketConfig( _oracle: PromiseOrValue, _oracleData: PromiseOrValue, @@ -4550,6 +4670,12 @@ export interface SGLLiquidation extends BaseContract { overrides?: CallOverrides ): Promise; + leverageExecutor(overrides?: CallOverrides): Promise; + + "leverageExecutor()"( + overrides?: CallOverrides + ): Promise; + liquidate( users: PromiseOrValue[], maxBorrowParts: PromiseOrValue[], @@ -4776,6 +4902,16 @@ export interface SGLLiquidation extends BaseContract { overrides?: CallOverrides ): Promise; + setLeverageExecutor( + _executor: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "setLeverageExecutor(address)"( + _executor: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + setMarketConfig( _oracle: PromiseOrValue, _oracleData: PromiseOrValue, diff --git a/src/typechain/tapioca-bar/markets/singularity/SGLStorage.ts b/src/typechain/tapioca-bar/markets/singularity/SGLStorage.ts index 8dfad525..ee3eaa53 100644 --- a/src/typechain/tapioca-bar/markets/singularity/SGLStorage.ts +++ b/src/typechain/tapioca-bar/markets/singularity/SGLStorage.ts @@ -52,6 +52,7 @@ export interface SGLStorageInterface extends utils.Interface { "exchangeRate()": FunctionFragment; "fullUtilizationMinusMax()": FunctionFragment; "interestElasticity()": FunctionFragment; + "leverageExecutor()": FunctionFragment; "liquidationBonusAmount()": FunctionFragment; "liquidationCollateralizationRate()": FunctionFragment; "liquidationMultiplier()": FunctionFragment; @@ -76,6 +77,7 @@ export interface SGLStorageInterface extends utils.Interface { "protocolFee()": FunctionFragment; "rateTimestamp()": FunctionFragment; "rateValidDuration()": FunctionFragment; + "setLeverageExecutor(address)": FunctionFragment; "setMarketConfig(address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)": FunctionFragment; "startingInterestPerSecond()": FunctionFragment; "symbol()": FunctionFragment; @@ -142,6 +144,8 @@ export interface SGLStorageInterface extends utils.Interface { | "fullUtilizationMinusMax()" | "interestElasticity" | "interestElasticity()" + | "leverageExecutor" + | "leverageExecutor()" | "liquidationBonusAmount" | "liquidationBonusAmount()" | "liquidationCollateralizationRate" @@ -190,6 +194,8 @@ export interface SGLStorageInterface extends utils.Interface { | "rateTimestamp()" | "rateValidDuration" | "rateValidDuration()" + | "setLeverageExecutor" + | "setLeverageExecutor(address)" | "setMarketConfig" | "setMarketConfig(address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)" | "startingInterestPerSecond" @@ -398,6 +404,14 @@ export interface SGLStorageInterface extends utils.Interface { functionFragment: "interestElasticity()", values?: undefined ): string; + encodeFunctionData( + functionFragment: "leverageExecutor", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "leverageExecutor()", + values?: undefined + ): string; encodeFunctionData( functionFragment: "liquidationBonusAmount", values?: undefined @@ -598,6 +612,14 @@ export interface SGLStorageInterface extends utils.Interface { functionFragment: "rateValidDuration()", values?: undefined ): string; + encodeFunctionData( + functionFragment: "setLeverageExecutor", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "setLeverageExecutor(address)", + values: [PromiseOrValue] + ): string; encodeFunctionData( functionFragment: "setMarketConfig", values: [ @@ -906,6 +928,14 @@ export interface SGLStorageInterface extends utils.Interface { functionFragment: "interestElasticity()", data: BytesLike ): Result; + decodeFunctionResult( + functionFragment: "leverageExecutor", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "leverageExecutor()", + data: BytesLike + ): Result; decodeFunctionResult( functionFragment: "liquidationBonusAmount", data: BytesLike @@ -1065,6 +1095,14 @@ export interface SGLStorageInterface extends utils.Interface { functionFragment: "rateValidDuration()", data: BytesLike ): Result; + decodeFunctionResult( + functionFragment: "setLeverageExecutor", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "setLeverageExecutor(address)", + data: BytesLike + ): Result; decodeFunctionResult( functionFragment: "setMarketConfig", data: BytesLike @@ -1183,6 +1221,7 @@ export interface SGLStorageInterface extends utils.Interface { "ConservatorUpdated(address,address)": EventFragment; "ExchangeRateDurationUpdated(uint256,uint256)": EventFragment; "InterestElasticityUpdated(uint256,uint256)": EventFragment; + "LeverageExecutorSet(address,address)": EventFragment; "Liquidated(address,address[],uint256,uint256,uint256,uint256)": EventFragment; "LiquidationMultiplierUpdated(uint256,uint256)": EventFragment; "LogAccrue(uint256,uint256,uint64,uint256)": EventFragment; @@ -1237,6 +1276,10 @@ export interface SGLStorageInterface extends utils.Interface { getEvent( nameOrSignatureOrTopic: "InterestElasticityUpdated(uint256,uint256)" ): EventFragment; + getEvent(nameOrSignatureOrTopic: "LeverageExecutorSet"): EventFragment; + getEvent( + nameOrSignatureOrTopic: "LeverageExecutorSet(address,address)" + ): EventFragment; getEvent(nameOrSignatureOrTopic: "Liquidated"): EventFragment; getEvent( nameOrSignatureOrTopic: "Liquidated(address,address[],uint256,uint256,uint256,uint256)" @@ -1422,6 +1465,18 @@ export type InterestElasticityUpdatedEvent = TypedEvent< export type InterestElasticityUpdatedEventFilter = TypedEventFilter; +export interface LeverageExecutorSetEventObject { + oldVal: string; + newVal: string; +} +export type LeverageExecutorSetEvent = TypedEvent< + [string, string], + LeverageExecutorSetEventObject +>; + +export type LeverageExecutorSetEventFilter = + TypedEventFilter; + export interface LiquidatedEventObject { liquidator: string; users: string[]; @@ -1949,6 +2004,10 @@ export interface SGLStorage extends BaseContract { "interestElasticity()"(overrides?: CallOverrides): Promise<[BigNumber]>; + leverageExecutor(overrides?: CallOverrides): Promise<[string]>; + + "leverageExecutor()"(overrides?: CallOverrides): Promise<[string]>; + liquidationBonusAmount(overrides?: CallOverrides): Promise<[BigNumber]>; "liquidationBonusAmount()"(overrides?: CallOverrides): Promise<[BigNumber]>; @@ -2115,6 +2174,16 @@ export interface SGLStorage extends BaseContract { "rateValidDuration()"(overrides?: CallOverrides): Promise<[BigNumber]>; + setLeverageExecutor( + _executor: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "setLeverageExecutor(address)"( + _executor: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + setMarketConfig( _oracle: PromiseOrValue, _oracleData: PromiseOrValue, @@ -2464,6 +2533,10 @@ export interface SGLStorage extends BaseContract { "interestElasticity()"(overrides?: CallOverrides): Promise; + leverageExecutor(overrides?: CallOverrides): Promise; + + "leverageExecutor()"(overrides?: CallOverrides): Promise; + liquidationBonusAmount(overrides?: CallOverrides): Promise; "liquidationBonusAmount()"(overrides?: CallOverrides): Promise; @@ -2620,6 +2693,16 @@ export interface SGLStorage extends BaseContract { "rateValidDuration()"(overrides?: CallOverrides): Promise; + setLeverageExecutor( + _executor: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "setLeverageExecutor(address)"( + _executor: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + setMarketConfig( _oracle: PromiseOrValue, _oracleData: PromiseOrValue, @@ -2955,6 +3038,10 @@ export interface SGLStorage extends BaseContract { "interestElasticity()"(overrides?: CallOverrides): Promise; + leverageExecutor(overrides?: CallOverrides): Promise; + + "leverageExecutor()"(overrides?: CallOverrides): Promise; + liquidationBonusAmount(overrides?: CallOverrides): Promise; "liquidationBonusAmount()"(overrides?: CallOverrides): Promise; @@ -3111,6 +3198,16 @@ export interface SGLStorage extends BaseContract { "rateValidDuration()"(overrides?: CallOverrides): Promise; + setLeverageExecutor( + _executor: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "setLeverageExecutor(address)"( + _executor: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + setMarketConfig( _oracle: PromiseOrValue, _oracleData: PromiseOrValue, @@ -3329,6 +3426,15 @@ export interface SGLStorage extends BaseContract { newVal?: PromiseOrValue | null ): InterestElasticityUpdatedEventFilter; + "LeverageExecutorSet(address,address)"( + oldVal?: PromiseOrValue | null, + newVal?: PromiseOrValue | null + ): LeverageExecutorSetEventFilter; + LeverageExecutorSet( + oldVal?: PromiseOrValue | null, + newVal?: PromiseOrValue | null + ): LeverageExecutorSetEventFilter; + "Liquidated(address,address[],uint256,uint256,uint256,uint256)"( liquidator?: PromiseOrValue | null, users?: PromiseOrValue[] | null, @@ -3747,6 +3853,10 @@ export interface SGLStorage extends BaseContract { "interestElasticity()"(overrides?: CallOverrides): Promise; + leverageExecutor(overrides?: CallOverrides): Promise; + + "leverageExecutor()"(overrides?: CallOverrides): Promise; + liquidationBonusAmount(overrides?: CallOverrides): Promise; "liquidationBonusAmount()"(overrides?: CallOverrides): Promise; @@ -3903,6 +4013,16 @@ export interface SGLStorage extends BaseContract { "rateValidDuration()"(overrides?: CallOverrides): Promise; + setLeverageExecutor( + _executor: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "setLeverageExecutor(address)"( + _executor: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + setMarketConfig( _oracle: PromiseOrValue, _oracleData: PromiseOrValue, @@ -4225,6 +4345,12 @@ export interface SGLStorage extends BaseContract { overrides?: CallOverrides ): Promise; + leverageExecutor(overrides?: CallOverrides): Promise; + + "leverageExecutor()"( + overrides?: CallOverrides + ): Promise; + liquidationBonusAmount( overrides?: CallOverrides ): Promise; @@ -4419,6 +4545,16 @@ export interface SGLStorage extends BaseContract { overrides?: CallOverrides ): Promise; + setLeverageExecutor( + _executor: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "setLeverageExecutor(address)"( + _executor: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + setMarketConfig( _oracle: PromiseOrValue, _oracleData: PromiseOrValue, diff --git a/src/typechain/tapioca-bar/markets/singularity/Singularity.ts b/src/typechain/tapioca-bar/markets/singularity/Singularity.ts index fd76f7e9..c3695bac 100644 --- a/src/typechain/tapioca-bar/markets/singularity/Singularity.ts +++ b/src/typechain/tapioca-bar/markets/singularity/Singularity.ts @@ -115,7 +115,7 @@ export interface SingularityInterface extends utils.Interface { "borrow(address,address,uint256)": FunctionFragment; "borrowModule()": FunctionFragment; "borrowOpeningFee()": FunctionFragment; - "buyCollateral(address,uint256,uint256,uint256,address,bytes)": FunctionFragment; + "buyCollateral(address,uint256,uint256,bytes)": FunctionFragment; "callerFee()": FunctionFragment; "claimOwnership()": FunctionFragment; "collateral()": FunctionFragment; @@ -134,6 +134,7 @@ export interface SingularityInterface extends utils.Interface { "getInterestDetails()": FunctionFragment; "init(bytes)": FunctionFragment; "interestElasticity()": FunctionFragment; + "leverageExecutor()": FunctionFragment; "leverageModule()": FunctionFragment; "liquidate(address[],uint256[],address[],bytes[])": FunctionFragment; "liquidateBadDebt(address,address,address,bytes)": FunctionFragment; @@ -169,7 +170,8 @@ export interface SingularityInterface extends utils.Interface { "removeCollateral(address,address,uint256)": FunctionFragment; "repay(address,address,bool,uint256)": FunctionFragment; "rescueEth(uint256,address)": FunctionFragment; - "sellCollateral(address,uint256,uint256,address,bytes)": FunctionFragment; + "sellCollateral(address,uint256,bytes)": FunctionFragment; + "setLeverageExecutor(address)": FunctionFragment; "setMarketConfig(address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)": FunctionFragment; "setSingularityConfig(uint256,uint256,uint256,uint256,uint256,uint64,uint64,uint256)": FunctionFragment; "startingInterestPerSecond()": FunctionFragment; @@ -223,7 +225,7 @@ export interface SingularityInterface extends utils.Interface { | "borrowOpeningFee" | "borrowOpeningFee()" | "buyCollateral" - | "buyCollateral(address,uint256,uint256,uint256,address,bytes)" + | "buyCollateral(address,uint256,uint256,bytes)" | "callerFee" | "callerFee()" | "claimOwnership" @@ -260,6 +262,8 @@ export interface SingularityInterface extends utils.Interface { | "init(bytes)" | "interestElasticity" | "interestElasticity()" + | "leverageExecutor" + | "leverageExecutor()" | "leverageModule" | "leverageModule()" | "liquidate" @@ -331,7 +335,9 @@ export interface SingularityInterface extends utils.Interface { | "rescueEth" | "rescueEth(uint256,address)" | "sellCollateral" - | "sellCollateral(address,uint256,uint256,address,bytes)" + | "sellCollateral(address,uint256,bytes)" + | "setLeverageExecutor" + | "setLeverageExecutor(address)" | "setMarketConfig" | "setMarketConfig(address,bytes,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)" | "setSingularityConfig" @@ -508,19 +514,15 @@ export interface SingularityInterface extends utils.Interface { PromiseOrValue, PromiseOrValue, PromiseOrValue, - PromiseOrValue, - PromiseOrValue, PromiseOrValue ] ): string; encodeFunctionData( - functionFragment: "buyCollateral(address,uint256,uint256,uint256,address,bytes)", + functionFragment: "buyCollateral(address,uint256,uint256,bytes)", values: [ PromiseOrValue, PromiseOrValue, PromiseOrValue, - PromiseOrValue, - PromiseOrValue, PromiseOrValue ] ): string; @@ -670,6 +672,14 @@ export interface SingularityInterface extends utils.Interface { functionFragment: "interestElasticity()", values?: undefined ): string; + encodeFunctionData( + functionFragment: "leverageExecutor", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "leverageExecutor()", + values?: undefined + ): string; encodeFunctionData( functionFragment: "leverageModule", values?: undefined @@ -1039,21 +1049,25 @@ export interface SingularityInterface extends utils.Interface { values: [ PromiseOrValue, PromiseOrValue, - PromiseOrValue, - PromiseOrValue, PromiseOrValue ] ): string; encodeFunctionData( - functionFragment: "sellCollateral(address,uint256,uint256,address,bytes)", + functionFragment: "sellCollateral(address,uint256,bytes)", values: [ PromiseOrValue, PromiseOrValue, - PromiseOrValue, - PromiseOrValue, PromiseOrValue ] ): string; + encodeFunctionData( + functionFragment: "setLeverageExecutor", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "setLeverageExecutor(address)", + values: [PromiseOrValue] + ): string; encodeFunctionData( functionFragment: "setMarketConfig", values: [ @@ -1337,7 +1351,7 @@ export interface SingularityInterface extends utils.Interface { data: BytesLike ): Result; decodeFunctionResult( - functionFragment: "buyCollateral(address,uint256,uint256,uint256,address,bytes)", + functionFragment: "buyCollateral(address,uint256,uint256,bytes)", data: BytesLike ): Result; decodeFunctionResult(functionFragment: "callerFee", data: BytesLike): Result; @@ -1466,6 +1480,14 @@ export interface SingularityInterface extends utils.Interface { functionFragment: "interestElasticity()", data: BytesLike ): Result; + decodeFunctionResult( + functionFragment: "leverageExecutor", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "leverageExecutor()", + data: BytesLike + ): Result; decodeFunctionResult( functionFragment: "leverageModule", data: BytesLike @@ -1709,7 +1731,15 @@ export interface SingularityInterface extends utils.Interface { data: BytesLike ): Result; decodeFunctionResult( - functionFragment: "sellCollateral(address,uint256,uint256,address,bytes)", + functionFragment: "sellCollateral(address,uint256,bytes)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "setLeverageExecutor", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "setLeverageExecutor(address)", data: BytesLike ): Result; decodeFunctionResult( @@ -1846,6 +1876,7 @@ export interface SingularityInterface extends utils.Interface { "ConservatorUpdated(address,address)": EventFragment; "ExchangeRateDurationUpdated(uint256,uint256)": EventFragment; "InterestElasticityUpdated(uint256,uint256)": EventFragment; + "LeverageExecutorSet(address,address)": EventFragment; "Liquidated(address,address[],uint256,uint256,uint256,uint256)": EventFragment; "LiquidationMultiplierUpdated(uint256,uint256)": EventFragment; "LogAccrue(uint256,uint256,uint64,uint256)": EventFragment; @@ -1900,6 +1931,10 @@ export interface SingularityInterface extends utils.Interface { getEvent( nameOrSignatureOrTopic: "InterestElasticityUpdated(uint256,uint256)" ): EventFragment; + getEvent(nameOrSignatureOrTopic: "LeverageExecutorSet"): EventFragment; + getEvent( + nameOrSignatureOrTopic: "LeverageExecutorSet(address,address)" + ): EventFragment; getEvent(nameOrSignatureOrTopic: "Liquidated"): EventFragment; getEvent( nameOrSignatureOrTopic: "Liquidated(address,address[],uint256,uint256,uint256,uint256)" @@ -2085,6 +2120,18 @@ export type InterestElasticityUpdatedEvent = TypedEvent< export type InterestElasticityUpdatedEventFilter = TypedEventFilter; +export interface LeverageExecutorSetEventObject { + oldVal: string; + newVal: string; +} +export type LeverageExecutorSetEvent = TypedEvent< + [string, string], + LeverageExecutorSetEventObject +>; + +export type LeverageExecutorSetEventFilter = + TypedEventFilter; + export interface LiquidatedEventObject { liquidator: string; users: string[]; @@ -2580,19 +2627,15 @@ export interface Singularity extends BaseContract { from: PromiseOrValue, borrowAmount: PromiseOrValue, supplyAmount: PromiseOrValue, - minAmountOut: PromiseOrValue, - swapper: PromiseOrValue, - dexData: PromiseOrValue, + data: PromiseOrValue, overrides?: Overrides & { from?: PromiseOrValue } ): Promise; - "buyCollateral(address,uint256,uint256,uint256,address,bytes)"( + "buyCollateral(address,uint256,uint256,bytes)"( from: PromiseOrValue, borrowAmount: PromiseOrValue, supplyAmount: PromiseOrValue, - minAmountOut: PromiseOrValue, - swapper: PromiseOrValue, - dexData: PromiseOrValue, + data: PromiseOrValue, overrides?: Overrides & { from?: PromiseOrValue } ): Promise; @@ -2748,6 +2791,10 @@ export interface Singularity extends BaseContract { "interestElasticity()"(overrides?: CallOverrides): Promise<[BigNumber]>; + leverageExecutor(overrides?: CallOverrides): Promise<[string]>; + + "leverageExecutor()"(overrides?: CallOverrides): Promise<[string]>; + leverageModule(overrides?: CallOverrides): Promise<[string]>; "leverageModule()"(overrides?: CallOverrides): Promise<[string]>; @@ -3063,18 +3110,24 @@ export interface Singularity extends BaseContract { sellCollateral( from: PromiseOrValue, share: PromiseOrValue, - minAmountOut: PromiseOrValue, - swapper: PromiseOrValue, - dexData: PromiseOrValue, + data: PromiseOrValue, overrides?: Overrides & { from?: PromiseOrValue } ): Promise; - "sellCollateral(address,uint256,uint256,address,bytes)"( + "sellCollateral(address,uint256,bytes)"( from: PromiseOrValue, share: PromiseOrValue, - minAmountOut: PromiseOrValue, - swapper: PromiseOrValue, - dexData: PromiseOrValue, + data: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setLeverageExecutor( + _executor: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "setLeverageExecutor(address)"( + _executor: PromiseOrValue, overrides?: Overrides & { from?: PromiseOrValue } ): Promise; @@ -3433,19 +3486,15 @@ export interface Singularity extends BaseContract { from: PromiseOrValue, borrowAmount: PromiseOrValue, supplyAmount: PromiseOrValue, - minAmountOut: PromiseOrValue, - swapper: PromiseOrValue, - dexData: PromiseOrValue, + data: PromiseOrValue, overrides?: Overrides & { from?: PromiseOrValue } ): Promise; - "buyCollateral(address,uint256,uint256,uint256,address,bytes)"( + "buyCollateral(address,uint256,uint256,bytes)"( from: PromiseOrValue, borrowAmount: PromiseOrValue, supplyAmount: PromiseOrValue, - minAmountOut: PromiseOrValue, - swapper: PromiseOrValue, - dexData: PromiseOrValue, + data: PromiseOrValue, overrides?: Overrides & { from?: PromiseOrValue } ): Promise; @@ -3599,6 +3648,10 @@ export interface Singularity extends BaseContract { "interestElasticity()"(overrides?: CallOverrides): Promise; + leverageExecutor(overrides?: CallOverrides): Promise; + + "leverageExecutor()"(overrides?: CallOverrides): Promise; + leverageModule(overrides?: CallOverrides): Promise; "leverageModule()"(overrides?: CallOverrides): Promise; @@ -3904,18 +3957,24 @@ export interface Singularity extends BaseContract { sellCollateral( from: PromiseOrValue, share: PromiseOrValue, - minAmountOut: PromiseOrValue, - swapper: PromiseOrValue, - dexData: PromiseOrValue, + data: PromiseOrValue, overrides?: Overrides & { from?: PromiseOrValue } ): Promise; - "sellCollateral(address,uint256,uint256,address,bytes)"( + "sellCollateral(address,uint256,bytes)"( from: PromiseOrValue, share: PromiseOrValue, - minAmountOut: PromiseOrValue, - swapper: PromiseOrValue, - dexData: PromiseOrValue, + data: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setLeverageExecutor( + _executor: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "setLeverageExecutor(address)"( + _executor: PromiseOrValue, overrides?: Overrides & { from?: PromiseOrValue } ): Promise; @@ -4260,19 +4319,15 @@ export interface Singularity extends BaseContract { from: PromiseOrValue, borrowAmount: PromiseOrValue, supplyAmount: PromiseOrValue, - minAmountOut: PromiseOrValue, - swapper: PromiseOrValue, - dexData: PromiseOrValue, + data: PromiseOrValue, overrides?: CallOverrides ): Promise; - "buyCollateral(address,uint256,uint256,uint256,address,bytes)"( + "buyCollateral(address,uint256,uint256,bytes)"( from: PromiseOrValue, borrowAmount: PromiseOrValue, supplyAmount: PromiseOrValue, - minAmountOut: PromiseOrValue, - swapper: PromiseOrValue, - dexData: PromiseOrValue, + data: PromiseOrValue, overrides?: CallOverrides ): Promise; @@ -4426,6 +4481,10 @@ export interface Singularity extends BaseContract { "interestElasticity()"(overrides?: CallOverrides): Promise; + leverageExecutor(overrides?: CallOverrides): Promise; + + "leverageExecutor()"(overrides?: CallOverrides): Promise; + leverageModule(overrides?: CallOverrides): Promise; "leverageModule()"(overrides?: CallOverrides): Promise; @@ -4727,21 +4786,27 @@ export interface Singularity extends BaseContract { sellCollateral( from: PromiseOrValue, share: PromiseOrValue, - minAmountOut: PromiseOrValue, - swapper: PromiseOrValue, - dexData: PromiseOrValue, + data: PromiseOrValue, overrides?: CallOverrides ): Promise; - "sellCollateral(address,uint256,uint256,address,bytes)"( + "sellCollateral(address,uint256,bytes)"( from: PromiseOrValue, share: PromiseOrValue, - minAmountOut: PromiseOrValue, - swapper: PromiseOrValue, - dexData: PromiseOrValue, + data: PromiseOrValue, overrides?: CallOverrides ): Promise; + setLeverageExecutor( + _executor: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "setLeverageExecutor(address)"( + _executor: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + setMarketConfig( _oracle: PromiseOrValue, _oracleData: PromiseOrValue, @@ -4996,6 +5061,15 @@ export interface Singularity extends BaseContract { newVal?: PromiseOrValue | null ): InterestElasticityUpdatedEventFilter; + "LeverageExecutorSet(address,address)"( + oldVal?: PromiseOrValue | null, + newVal?: PromiseOrValue | null + ): LeverageExecutorSetEventFilter; + LeverageExecutorSet( + oldVal?: PromiseOrValue | null, + newVal?: PromiseOrValue | null + ): LeverageExecutorSetEventFilter; + "Liquidated(address,address[],uint256,uint256,uint256,uint256)"( liquidator?: PromiseOrValue | null, users?: PromiseOrValue[] | null, @@ -5396,19 +5470,15 @@ export interface Singularity extends BaseContract { from: PromiseOrValue, borrowAmount: PromiseOrValue, supplyAmount: PromiseOrValue, - minAmountOut: PromiseOrValue, - swapper: PromiseOrValue, - dexData: PromiseOrValue, + data: PromiseOrValue, overrides?: Overrides & { from?: PromiseOrValue } ): Promise; - "buyCollateral(address,uint256,uint256,uint256,address,bytes)"( + "buyCollateral(address,uint256,uint256,bytes)"( from: PromiseOrValue, borrowAmount: PromiseOrValue, supplyAmount: PromiseOrValue, - minAmountOut: PromiseOrValue, - swapper: PromiseOrValue, - dexData: PromiseOrValue, + data: PromiseOrValue, overrides?: Overrides & { from?: PromiseOrValue } ): Promise; @@ -5536,6 +5606,10 @@ export interface Singularity extends BaseContract { "interestElasticity()"(overrides?: CallOverrides): Promise; + leverageExecutor(overrides?: CallOverrides): Promise; + + "leverageExecutor()"(overrides?: CallOverrides): Promise; + leverageModule(overrides?: CallOverrides): Promise; "leverageModule()"(overrides?: CallOverrides): Promise; @@ -5841,18 +5915,24 @@ export interface Singularity extends BaseContract { sellCollateral( from: PromiseOrValue, share: PromiseOrValue, - minAmountOut: PromiseOrValue, - swapper: PromiseOrValue, - dexData: PromiseOrValue, + data: PromiseOrValue, overrides?: Overrides & { from?: PromiseOrValue } ): Promise; - "sellCollateral(address,uint256,uint256,address,bytes)"( + "sellCollateral(address,uint256,bytes)"( from: PromiseOrValue, share: PromiseOrValue, - minAmountOut: PromiseOrValue, - swapper: PromiseOrValue, - dexData: PromiseOrValue, + data: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setLeverageExecutor( + _executor: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "setLeverageExecutor(address)"( + _executor: PromiseOrValue, overrides?: Overrides & { from?: PromiseOrValue } ): Promise; @@ -6184,19 +6264,15 @@ export interface Singularity extends BaseContract { from: PromiseOrValue, borrowAmount: PromiseOrValue, supplyAmount: PromiseOrValue, - minAmountOut: PromiseOrValue, - swapper: PromiseOrValue, - dexData: PromiseOrValue, + data: PromiseOrValue, overrides?: Overrides & { from?: PromiseOrValue } ): Promise; - "buyCollateral(address,uint256,uint256,uint256,address,bytes)"( + "buyCollateral(address,uint256,uint256,bytes)"( from: PromiseOrValue, borrowAmount: PromiseOrValue, supplyAmount: PromiseOrValue, - minAmountOut: PromiseOrValue, - swapper: PromiseOrValue, - dexData: PromiseOrValue, + data: PromiseOrValue, overrides?: Overrides & { from?: PromiseOrValue } ): Promise; @@ -6342,6 +6418,12 @@ export interface Singularity extends BaseContract { overrides?: CallOverrides ): Promise; + leverageExecutor(overrides?: CallOverrides): Promise; + + "leverageExecutor()"( + overrides?: CallOverrides + ): Promise; + leverageModule(overrides?: CallOverrides): Promise; "leverageModule()"( @@ -6689,18 +6771,24 @@ export interface Singularity extends BaseContract { sellCollateral( from: PromiseOrValue, share: PromiseOrValue, - minAmountOut: PromiseOrValue, - swapper: PromiseOrValue, - dexData: PromiseOrValue, + data: PromiseOrValue, overrides?: Overrides & { from?: PromiseOrValue } ): Promise; - "sellCollateral(address,uint256,uint256,address,bytes)"( + "sellCollateral(address,uint256,bytes)"( from: PromiseOrValue, share: PromiseOrValue, - minAmountOut: PromiseOrValue, - swapper: PromiseOrValue, - dexData: PromiseOrValue, + data: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setLeverageExecutor( + _executor: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "setLeverageExecutor(address)"( + _executor: PromiseOrValue, overrides?: Overrides & { from?: PromiseOrValue } ): Promise;