diff --git a/abis/BMath.json b/abis/BMath.json index f61f7ed..76e48fb 100644 --- a/abis/BMath.json +++ b/abis/BMath.json @@ -1,314 +1,314 @@ { - "_format": "hh-sol-artifact-1", - "contractName": "BMath", - "sourceName": "contracts/pools/balancer/BMath.sol", - "abi": [ - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "uint256", - "name": "swapFeeAmount", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "oceanFeeAmount", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "marketFeeAmount", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "address", - "name": "tokenFees", - "type": "address" - } - ], - "name": "SWAP_FEES", - "type": "event" - }, - { - "inputs": [], - "name": "BONE", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "BPOW_PRECISION", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "EXIT_FEE", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "INIT_POOL_SUPPLY", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "MAX_BOUND_TOKENS", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "MAX_BPOW_BASE", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "MAX_FEE", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "MAX_IN_RATIO", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "MAX_OUT_RATIO", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "MAX_TOTAL_WEIGHT", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "MAX_WEIGHT", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "MIN_BALANCE", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "MIN_BOUND_TOKENS", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "MIN_BPOW_BASE", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "MIN_FEE", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "MIN_WEIGHT", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "_swapMarketFee", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "name": "communityFees", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "getOPFFee", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "name": "marketFees", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - } - ], - "bytecode": "0x608060405234801561001057600080fd5b50610460806100206000396000f3fe608060405234801561001057600080fd5b506004361061012c5760003560e01c8063992e2a92116100ad578063bc694ea211610071578063bc694ea2146101eb578063c36596a614610153578063c6580d12146101f3578063e4a28a5214610131578063ec093021146101fb57600080fd5b8063992e2a92146101cb578063b0e0d136146101d3578063b7b800a4146101d3578063ba019dab146101db578063bc063e1a146101e357600080fd5b806349e9350f116100f457806349e9350f146101a2578063700dd7e8146101ab57806376c7a3c7146101b3578063867378c5146101bb5780639381cd2b146101c357600080fd5b806309a3bbe414610131578063189d00ca1461014b578063218b538214610153578063300621921461016257806331e2761b14610182575b600080fd5b610139610203565b60405190815260200160405180910390f35b610139610219565b610139670de0b6b3a764000081565b61013961017036600461035b565b60056020526000908152604090205481565b61013961019036600461035b565b60066020526000908152604090205481565b61013960005481565b610139610230565b6101396102b9565b6101396102ce565b6101396102e5565b6101396102f8565b610139600281565b610139600181565b610139610316565b610139610329565b610139600081565b610139610348565b610216670de0b6b3a764000060326103de565b81565b6102166402540be400670de0b6b3a76400006103bc565b60025460048054604051637c0aa57760e11b81526001600160a01b0391821692810192909252600092169063f8154aee9060240160206040518083038186803b15801561027c57600080fd5b505afa158015610290573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102b4919061038b565b905090565b610216620f4240670de0b6b3a76400006103bc565b61021664e8d4a51000670de0b6b3a76400006103bc565b610216670de0b6b3a764000060646103de565b61030b6003670de0b6b3a76400006103bc565b6102169060016103a4565b610216600a670de0b6b3a76400006103bc565b600161033e670de0b6b3a764000060026103de565b61021691906103fd565b6102166002670de0b6b3a76400006103bc565b60006020828403121561036d57600080fd5b81356001600160a01b038116811461038457600080fd5b9392505050565b60006020828403121561039d57600080fd5b5051919050565b600082198211156103b7576103b7610414565b500190565b6000826103d957634e487b7160e01b600052601260045260246000fd5b500490565b60008160001904831182151516156103f8576103f8610414565b500290565b60008282101561040f5761040f610414565b500390565b634e487b7160e01b600052601160045260246000fdfea2646970667358221220699b1f34bf1d54caa297e60d6fddebd8dc902d2243c98d4a62f4485302305a1064736f6c63430008070033", - "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061012c5760003560e01c8063992e2a92116100ad578063bc694ea211610071578063bc694ea2146101eb578063c36596a614610153578063c6580d12146101f3578063e4a28a5214610131578063ec093021146101fb57600080fd5b8063992e2a92146101cb578063b0e0d136146101d3578063b7b800a4146101d3578063ba019dab146101db578063bc063e1a146101e357600080fd5b806349e9350f116100f457806349e9350f146101a2578063700dd7e8146101ab57806376c7a3c7146101b3578063867378c5146101bb5780639381cd2b146101c357600080fd5b806309a3bbe414610131578063189d00ca1461014b578063218b538214610153578063300621921461016257806331e2761b14610182575b600080fd5b610139610203565b60405190815260200160405180910390f35b610139610219565b610139670de0b6b3a764000081565b61013961017036600461035b565b60056020526000908152604090205481565b61013961019036600461035b565b60066020526000908152604090205481565b61013960005481565b610139610230565b6101396102b9565b6101396102ce565b6101396102e5565b6101396102f8565b610139600281565b610139600181565b610139610316565b610139610329565b610139600081565b610139610348565b610216670de0b6b3a764000060326103de565b81565b6102166402540be400670de0b6b3a76400006103bc565b60025460048054604051637c0aa57760e11b81526001600160a01b0391821692810192909252600092169063f8154aee9060240160206040518083038186803b15801561027c57600080fd5b505afa158015610290573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102b4919061038b565b905090565b610216620f4240670de0b6b3a76400006103bc565b61021664e8d4a51000670de0b6b3a76400006103bc565b610216670de0b6b3a764000060646103de565b61030b6003670de0b6b3a76400006103bc565b6102169060016103a4565b610216600a670de0b6b3a76400006103bc565b600161033e670de0b6b3a764000060026103de565b61021691906103fd565b6102166002670de0b6b3a76400006103bc565b60006020828403121561036d57600080fd5b81356001600160a01b038116811461038457600080fd5b9392505050565b60006020828403121561039d57600080fd5b5051919050565b600082198211156103b7576103b7610414565b500190565b6000826103d957634e487b7160e01b600052601260045260246000fd5b500490565b60008160001904831182151516156103f8576103f8610414565b500290565b60008282101561040f5761040f610414565b500390565b634e487b7160e01b600052601160045260246000fdfea2646970667358221220699b1f34bf1d54caa297e60d6fddebd8dc902d2243c98d4a62f4485302305a1064736f6c63430008070033", - "linkReferences": {}, - "deployedLinkReferences": {} - } \ No newline at end of file + "_format": "hh-sol-artifact-1", + "contractName": "BMath", + "sourceName": "contracts/pools/balancer/BMath.sol", + "abi": [ + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "swapFeeAmount", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "oceanFeeAmount", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "marketFeeAmount", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "address", + "name": "tokenFees", + "type": "address" + } + ], + "name": "SWAP_FEES", + "type": "event" + }, + { + "inputs": [], + "name": "BONE", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "BPOW_PRECISION", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "EXIT_FEE", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "INIT_POOL_SUPPLY", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "MAX_BOUND_TOKENS", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "MAX_BPOW_BASE", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "MAX_FEE", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "MAX_IN_RATIO", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "MAX_OUT_RATIO", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "MAX_TOTAL_WEIGHT", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "MAX_WEIGHT", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "MIN_BALANCE", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "MIN_BOUND_TOKENS", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "MIN_BPOW_BASE", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "MIN_FEE", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "MIN_WEIGHT", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "_swapMarketFee", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "communityFees", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getOPFFee", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "marketFees", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "bytecode": "0x608060405234801561001057600080fd5b50610460806100206000396000f3fe608060405234801561001057600080fd5b506004361061012c5760003560e01c8063992e2a92116100ad578063bc694ea211610071578063bc694ea2146101eb578063c36596a614610153578063c6580d12146101f3578063e4a28a5214610131578063ec093021146101fb57600080fd5b8063992e2a92146101cb578063b0e0d136146101d3578063b7b800a4146101d3578063ba019dab146101db578063bc063e1a146101e357600080fd5b806349e9350f116100f457806349e9350f146101a2578063700dd7e8146101ab57806376c7a3c7146101b3578063867378c5146101bb5780639381cd2b146101c357600080fd5b806309a3bbe414610131578063189d00ca1461014b578063218b538214610153578063300621921461016257806331e2761b14610182575b600080fd5b610139610203565b60405190815260200160405180910390f35b610139610219565b610139670de0b6b3a764000081565b61013961017036600461035b565b60056020526000908152604090205481565b61013961019036600461035b565b60066020526000908152604090205481565b61013960005481565b610139610230565b6101396102b9565b6101396102ce565b6101396102e5565b6101396102f8565b610139600281565b610139600181565b610139610316565b610139610329565b610139600081565b610139610348565b610216670de0b6b3a764000060326103de565b81565b6102166402540be400670de0b6b3a76400006103bc565b60025460048054604051637c0aa57760e11b81526001600160a01b0391821692810192909252600092169063f8154aee9060240160206040518083038186803b15801561027c57600080fd5b505afa158015610290573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102b4919061038b565b905090565b610216620f4240670de0b6b3a76400006103bc565b61021664e8d4a51000670de0b6b3a76400006103bc565b610216670de0b6b3a764000060646103de565b61030b6003670de0b6b3a76400006103bc565b6102169060016103a4565b610216600a670de0b6b3a76400006103bc565b600161033e670de0b6b3a764000060026103de565b61021691906103fd565b6102166002670de0b6b3a76400006103bc565b60006020828403121561036d57600080fd5b81356001600160a01b038116811461038457600080fd5b9392505050565b60006020828403121561039d57600080fd5b5051919050565b600082198211156103b7576103b7610414565b500190565b6000826103d957634e487b7160e01b600052601260045260246000fd5b500490565b60008160001904831182151516156103f8576103f8610414565b500290565b60008282101561040f5761040f610414565b500390565b634e487b7160e01b600052601160045260246000fdfea2646970667358221220699b1f34bf1d54caa297e60d6fddebd8dc902d2243c98d4a62f4485302305a1064736f6c63430008070033", + "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061012c5760003560e01c8063992e2a92116100ad578063bc694ea211610071578063bc694ea2146101eb578063c36596a614610153578063c6580d12146101f3578063e4a28a5214610131578063ec093021146101fb57600080fd5b8063992e2a92146101cb578063b0e0d136146101d3578063b7b800a4146101d3578063ba019dab146101db578063bc063e1a146101e357600080fd5b806349e9350f116100f457806349e9350f146101a2578063700dd7e8146101ab57806376c7a3c7146101b3578063867378c5146101bb5780639381cd2b146101c357600080fd5b806309a3bbe414610131578063189d00ca1461014b578063218b538214610153578063300621921461016257806331e2761b14610182575b600080fd5b610139610203565b60405190815260200160405180910390f35b610139610219565b610139670de0b6b3a764000081565b61013961017036600461035b565b60056020526000908152604090205481565b61013961019036600461035b565b60066020526000908152604090205481565b61013960005481565b610139610230565b6101396102b9565b6101396102ce565b6101396102e5565b6101396102f8565b610139600281565b610139600181565b610139610316565b610139610329565b610139600081565b610139610348565b610216670de0b6b3a764000060326103de565b81565b6102166402540be400670de0b6b3a76400006103bc565b60025460048054604051637c0aa57760e11b81526001600160a01b0391821692810192909252600092169063f8154aee9060240160206040518083038186803b15801561027c57600080fd5b505afa158015610290573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102b4919061038b565b905090565b610216620f4240670de0b6b3a76400006103bc565b61021664e8d4a51000670de0b6b3a76400006103bc565b610216670de0b6b3a764000060646103de565b61030b6003670de0b6b3a76400006103bc565b6102169060016103a4565b610216600a670de0b6b3a76400006103bc565b600161033e670de0b6b3a764000060026103de565b61021691906103fd565b6102166002670de0b6b3a76400006103bc565b60006020828403121561036d57600080fd5b81356001600160a01b038116811461038457600080fd5b9392505050565b60006020828403121561039d57600080fd5b5051919050565b600082198211156103b7576103b7610414565b500190565b6000826103d957634e487b7160e01b600052601260045260246000fd5b500490565b60008160001904831182151516156103f8576103f8610414565b500290565b60008282101561040f5761040f610414565b500390565b634e487b7160e01b600052601160045260246000fdfea2646970667358221220699b1f34bf1d54caa297e60d6fddebd8dc902d2243c98d4a62f4485302305a1064736f6c63430008070033", + "linkReferences": {}, + "deployedLinkReferences": {} +} \ No newline at end of file diff --git a/abis/BPool.json b/abis/BPool.json index 93901fd..9fa4ace 100644 --- a/abis/BPool.json +++ b/abis/BPool.json @@ -41,6 +41,19 @@ "name": "LOG_BPT", "type": "event" }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "bptAmount", + "type": "uint256" + } + ], + "name": "LOG_BPT_SS", + "type": "event" + }, { "anonymous": false, "inputs": [ @@ -226,6 +239,87 @@ "name": "LOG_SWAP", "type": "event" }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "caller", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "newMarketCollector", + "type": "address" + } + ], + "name": "MarketCollectorChanged", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "caller", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "marketAddress", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "MarketFee", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "caller", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "OPFWallet", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "OPFFee", + "type": "event" + }, { "anonymous": false, "inputs": [ @@ -693,13 +787,7 @@ "type": "function" }, { - "inputs": [ - { - "internalType": "address", - "name": "to", - "type": "address" - } - ], + "inputs": [], "name": "collectMarketFee", "outputs": [], "stateMutability": "nonpayable", @@ -947,6 +1035,42 @@ "stateMutability": "view", "type": "function" }, + { + "inputs": [], + "name": "getCurrentMarketFees", + "outputs": [ + { + "internalType": "address[]", + "name": "", + "type": "address[]" + }, + { + "internalType": "uint256[]", + "name": "", + "type": "uint256[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getCurrentOPFFees", + "outputs": [ + { + "internalType": "address[]", + "name": "", + "type": "address[]" + }, + { + "internalType": "uint256[]", + "name": "", + "type": "uint256[]" + } + ], + "stateMutability": "view", + "type": "function" + }, { "inputs": [], "name": "getCurrentTokens", @@ -1005,6 +1129,19 @@ "stateMutability": "view", "type": "function" }, + { + "inputs": [], + "name": "getMarketFee", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, { "inputs": [ { @@ -1571,8 +1708,8 @@ "type": "function" } ], - "bytecode": "0x60c0604052601360808190527f42616c616e63657220506f6f6c20546f6b656e0000000000000000000000000060a09081526200004091600a91906200008f565b506040805180820190915260038082526210941560ea1b60209092019182526200006d91600b916200008f565b50600c805460ff191660121790553480156200008857600080fd5b5062000172565b8280546200009d9062000135565b90600052602060002090601f016020900481019282620000c157600085556200010c565b82601f10620000dc57805160ff19168380011785556200010c565b828001600101855582156200010c579182015b828111156200010c578251825591602001919060010190620000ef565b506200011a9291506200011e565b5090565b5b808211156200011a57600081556001016200011f565b600181811c908216806200014a57607f821691505b602082108114156200016c57634e487b7160e01b600052602260045260246000fd5b50919050565b61578e80620001826000396000f3fe608060405234801561001057600080fd5b50600436106104075760003560e01c80638201aa3f11610220578063be3bbd2e11610130578063e4a28a52116100b8578063f68045a511610087578063f68045a514610875578063f8b2cb4f1461087d578063fbb9dd5014610890578063fde924f7146108a3578063ff9b1850146108b557600080fd5b8063e4a28a521461048f578063ec09302114610847578063f0f13f0b1461084f578063f1b8a9b71461086257600080fd5b8063cc77828d116100ff578063cc77828d146107e3578063cd2ed8fb146107eb578063d4cadf68146107f3578063d73dd623146107fb578063dd62ed3e1461080e57600080fd5b8063be3bbd2e146107b3578063c070a6d8146107c8578063c36596a6146104cf578063c6580d12146107db57600080fd5b8063a3b3a16d116101b3578063b0e0d13611610182578063b0e0d13614610793578063b7b800a414610793578063ba019dab1461079b578063bc063e1a146107a3578063bc694ea2146107ab57600080fd5b8063a3b3a16d14610747578063a562ddf01461075a578063a9059cbb1461076d578063b02f0b731461078057600080fd5b80639381cd2b116101ef5780639381cd2b1461071c578063948d8ce61461072457806395d89b4114610737578063992e2a921461073f57600080fd5b80638201aa3f146106e7578063867378c5146106fa5780638d4e408314610702578063936c34771461071457600080fd5b806334e199071161031b5780634f69c0d4116102ae578063700dd7e81161027d578063700dd7e814610673578063703305181461067b57806370a082311461068e57806376c7a3c7146106b75780637c5e9ea4146106bf57600080fd5b80634f69c0d4146106275780635db342771461063a578063661884631461064d5780636d06dfa01461066057600080fd5b8063430ed5d0116102ea578063430ed5d0146105e757806346ab38f1146105fa57806349e9350f1461060d5780634df947d01461061657600080fd5b806334e199071461059c578063380376a6146105af578063392e53cd146105c25780633950b3fd146105d457600080fd5b8063189d00ca1161039e5780632f37b6241161036d5780632f37b6241461050457806330062192146105305780633018205f14610550578063313ce5671461056757806331e2761b1461057c57600080fd5b8063189d00ca146104c7578063218b5382146104cf57806323b872dd146104de5780632ea07d8a146104f157600080fd5b806309a3bbe4116103da57806309a3bbe41461048f57806309ef3f5b1461049757806315e84af9146104ac57806318160ddd146104bf57600080fd5b806302c967481461040c57806304ad79541461043257806306fdde0314610457578063095ea7b31461046c575b600080fd5b61041f61041a36600461528e565b6108c8565b6040519081526020015b60405180910390f35b6003546001600160a01b03165b6040516001600160a01b039091168152602001610429565b61045f610d46565b6040516104299190615425565b61047f61047a366004615216565b610dd8565b6040519015158152602001610429565b61041f610e33565b6104aa6104a53660046152c1565b610e49565b005b61041f6104ba3660046150fa565b611042565b60095461041f565b61041f611126565b61041f670de0b6b3a764000081565b61047f6104ec3660046151da565b61113d565b61041f6104ff3660046151da565b611291565b61047f6105123660046150df565b6001600160a01b031660009081526010602052604090205460ff1690565b61041f61053e3660046150df565b60056020526000908152604090205481565b600c546201000090046001600160a01b031661043f565b600c5460405160ff9091168152602001610429565b61041f61058a3660046150df565b60066020526000908152604090205481565b6104aa6105aa366004615336565b61134c565b61041f6105bd3660046151da565b611495565b601254600160a01b900460ff1661047f565b61041f6105e2366004615216565b611546565b61041f6105f5366004615216565b6115ae565b61041f61060836600461528e565b61160e565b61041f60005481565b6004546001600160a01b031661043f565b6104aa610635366004615368565b611a0b565b61041f61064836600461528e565b611c32565b61047f61065b366004615216565b612036565b61041f61066e36600461528e565b61210c565b61041f6124f4565b6104aa6106893660046150df565b61257d565b61041f61069c3660046150df565b6001600160a01b031660009081526007602052604090205490565b61041f6125f1565b6106d26106cd366004615240565b612606565b60408051928352602083019190915201610429565b6106d26106f5366004615240565b612957565b61041f612c8c565b600e54600160a01b900460ff1661047f565b61041f612ca3565b61041f612cd5565b61041f6107323660046150df565b612ce8565b61045f612d6e565b61041f612d7d565b61041f610755366004615216565b612d9b565b600d5461043f906001600160a01b031681565b61047f61077b366004615216565b612dfb565b6104aa61078e366004615368565b612e11565b61041f600281565b61041f600181565b61041f61304c565b61041f61305f565b6107bb61307e565b60405161042991906153d8565b61047f6107d636600461512d565b613131565b61041f600081565b6107bb6133a1565b600f5461041f565b60015461041f565b61047f610809366004615216565b6133cc565b61041f61081c3660046150fa565b6001600160a01b03918216600090815260086020908152604080832093909416825291909152205490565b61041f61343f565b600e5461043f906001600160a01b031681565b61041f6108703660046150df565b613452565b6104aa6134e6565b61041f61088b3660046150df565b613640565b6104aa61089e3660046150df565b6136c2565b600c54600160b01b900460ff1661047f565b61041f6108c3366004615216565b61386d565b600c54600090610100900460ff16156108fc5760405162461bcd60e51b81526004016108f39061551a565b60405180910390fd5b600c805461ff001916610100179055600e54600160a01b900460ff166109345760405162461bcd60e51b81526004016108f390615591565b6001600160a01b03841660009081526010602052604090205460ff1661096c5760405162461bcd60e51b81526004016108f39061556a565b6001600160a01b03841660009081526010602052604090206003908101546109b0916109a090670de0b6b3a76400006155d4565b6109ab9060016155bc565b6138cd565b8311156109cf5760405162461bcd60e51b81526004016108f39061553f565b6001600160a01b038416600090815260106020526040902060038101546002820154600954601154610a0493929190886139a8565b915081610a235760405162461bcd60e51b81526004016108f3906154a4565b82821115610a435760405162461bcd60e51b81526004016108f3906154f4565b610a51816003015485613a6c565b60038201556000610a6283826138cd565b604080518781524260208201529192506001600160a01b0388169133916000805160206156d9833981519152910160405180910390a36040518381526000805160206156f98339815191529060200160405180910390a1610ac33384613ac9565b610ad5610ad08483613a6c565b613ad3565b600254610aeb906001600160a01b031682613adf565b610af6863387613ae9565b6003546000906001600160a01b0388811691161415610b2157506004546001600160a01b0316610b2f565b506003546001600160a01b03165b60125460035460405163efd4810360e01b81526001600160a01b039283169263efd4810392610b6792911690859089906004016153b4565b60206040518083038186803b158015610b7f57600080fd5b505afa158015610b93573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bb79190615319565b151560011415610d3157600380546001600160a01b03166000908152601060205260408120918201546002830154600954601154610bf8939291908a613bb7565b9050610c08826003015482613a6c565b6003830155610c188660006138cd565b600c54604080518481524260208201529296506001600160a01b03868116936201000090930416916000805160206156d9833981519152910160405180910390a3600c54610c75906201000090046001600160a01b031687613ac9565b610c82610ad08786613a6c565b600254610c98906001600160a01b031685613adf565b600c54610cb69084906201000090046001600160a01b031683613ae9565b6012546003546040516307b01ab360e41b81526001600160a01b03918216600482015285821660248201526044810184905260648101899052911690637b01ab30906084015b600060405180830381600087803b158015610d1657600080fd5b505af1158015610d2a573d6000803e3d6000fd5b5050505050505b505050600c805461ff00191690559392505050565b6060600a8054610d559061561e565b80601f0160208091040260200160405190810160405280929190818152602001828054610d819061561e565b8015610dce5780601f10610da357610100808354040283529160200191610dce565b820191906000526020600020905b815481529060010190602001808311610db157829003601f168201915b5050505050905090565b3360008181526008602090815260408083206001600160a01b0387168085529252808320859055519192909160008051602061573983398151915290610e219086815260200190565b60405180910390a35060015b92915050565b610e46670de0b6b3a764000060326155e8565b81565b600c546201000090046001600160a01b03163314610ea25760405162461bcd60e51b815260206004820152601660248201527522a9292fa4a72b20a624a22fa1a7a72a2927a62622a960511b60448201526064016108f3565b6003546001600160a01b03878116911614610eff5760405162461bcd60e51b815260206004820152601d60248201527f4552525f494e56414c49445f44415441544f4b454e5f4144445245535300000060448201526064016108f3565b6004546001600160a01b03848116911614610f5c5760405162461bcd60e51b815260206004820152601d60248201527f4552525f494e56414c49445f42415345544f4b454e5f4144445245535300000060448201526064016108f3565b610f67868686613c81565b604080518681524260208201526001600160a01b038816913391600080516020615719833981519152910160405180910390a3610fa5838383613c81565b604080518381524260208201526001600160a01b038516913391600080516020615719833981519152910160405180910390a3610fe0613e6b565b6040805183815260208101839052908101869052606081018590526001600160a01b03808816919085169033907fbece8b4dcdbe446dd65a9288154698e067e3e91de17a1a408c2f531b9f845d739060800160405180910390a4505050505050565b600c54600090610100900460ff161561106d5760405162461bcd60e51b81526004016108f39061551a565b6001600160a01b03831660009081526010602052604090205460ff166110a55760405162461bcd60e51b81526004016108f39061556a565b6001600160a01b03821660009081526010602052604090205460ff166110dd5760405162461bcd60e51b81526004016108f39061556a565b6001600160a01b0380841660009081526010602052604080822092851682529020600380830154600280850154928401549084015461111d939190613eca565b95945050505050565b610e466402540be400670de0b6b3a76400006155d4565b6000336001600160a01b038516148061117957506001600160a01b03841660009081526008602090815260408083203384529091529020548211155b6111bd5760405162461bcd60e51b815260206004820152601560248201527422a9292fa12a27a5a2a72fa120a22fa1a0a62622a960591b60448201526064016108f3565b6111c8848484613f42565b336001600160a01b0385161480159061120657506001600160a01b038416600090815260086020908152604080832033845290915290205460001914155b15611287576001600160a01b03841660009081526008602090815260408083203384529091529020546112399083613a6c565b6001600160a01b038581166000908152600860209081526040808320338085529083529281902085905551938452918616929091600080516020615739833981519152910160405180910390a35b5060019392505050565b6001600160a01b03831660009081526010602052604081205460ff166112c95760405162461bcd60e51b81526004016108f39061556a565b6001600160a01b03831660009081526010602052604090205460ff166113015760405162461bcd60e51b81526004016108f39061556a565b6001600160a01b0380851660009081526010602052604080822092861682529020600380830154600280850154928401549084015461134293919088614054565b9695505050505050565b600e54600160a01b900460ff16156113995760405162461bcd60e51b815260206004820152601060248201526f11549497d254d7d1925390531256915160821b60448201526064016108f3565b600c546201000090046001600160a01b031633146113ee5760405162461bcd60e51b815260206004820152601260248201527122a9292fa727aa2fa1a7a72a2927a62622a960711b60448201526064016108f3565b611403620f4240670de0b6b3a76400006155d4565b8110156114405760405162461bcd60e51b815260206004820152600b60248201526a4552525f4d494e5f46454560a81b60448201526064016108f3565b611453600a670de0b6b3a76400006155d4565b8111156114905760405162461bcd60e51b815260206004820152600b60248201526a4552525f4d41585f46454560a81b60448201526064016108f3565b600155565b6001600160a01b03831660009081526010602052604081205460ff166114cd5760405162461bcd60e51b81526004016108f39061556a565b6001600160a01b03831660009081526010602052604090205460ff166115055760405162461bcd60e51b81526004016108f39061556a565b6001600160a01b03808516600090815260106020526040808220928616825290206003808301546002808501549284015490840154611342939190886140fc565b6001600160a01b03821660009081526010602090815260408083208151608081018352815460ff1615158152600182015493810193909352600281015491830182905260030154606083018190526009546011546115a6939190876141a2565b949350505050565b6001600160a01b03821660009081526010602090815260408083208151608081018352815460ff1615158152600182015493810193909352600281015491830182905260030154606083018190526009546011546115a693919087613bb7565b600c54600090610100900460ff16156116395760405162461bcd60e51b81526004016108f39061551a565b600c805461ff001916610100179055600e54600160a01b900460ff166116715760405162461bcd60e51b81526004016108f390615591565b6001600160a01b03841660009081526010602052604090205460ff166116a95760405162461bcd60e51b81526004016108f39061556a565b6001600160a01b0384166000908152601060205260409020600381015460028201546009546011546116de9392919088613bb7565b9150828210156117005760405162461bcd60e51b81526004016108f3906154cd565b6001600160a01b0385166000908152601060205260409020600390810154611734916109a090670de0b6b3a76400006155d4565b8211156117535760405162461bcd60e51b81526004016108f39061553f565b611761816003015483613a6c565b6003820155600061177285826138cd565b604080518581524260208201529192506001600160a01b0388169133916000805160206156d9833981519152910160405180910390a36040518581526000805160206156f98339815191529060200160405180910390a16117d33386613ac9565b6117e0610ad08683613a6c565b6002546117f6906001600160a01b031682613adf565b611801863385613ae9565b6003546000906001600160a01b038881169116141561182c57506004546001600160a01b031661183a565b506003546001600160a01b03165b60125460035460405163efd4810360e01b81526001600160a01b039283169263efd48103926118729291169085908b906004016153b4565b60206040518083038186803b15801561188a57600080fd5b505afa15801561189e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118c29190615319565b151560011415610d3157600380546001600160a01b03166000908152601060205260408120918201546002830154600954601154611903939291908c613bb7565b9050611913826003015482613a6c565b60038301556119238860006138cd565b600c54604080518481524260208201529296506001600160a01b03868116936201000090930416916000805160206156d9833981519152910160405180910390a3600c54611980906201000090046001600160a01b031689613ac9565b61198d610ad08986613a6c565b6002546119a3906001600160a01b031685613adf565b600c546119c19084906201000090046001600160a01b031683613ae9565b6012546003546040516307b01ab360e41b81526001600160a01b039182166004820152858216602482015260448101849052606481018b9052911690637b01ab3090608401610cfc565b600c54610100900460ff1615611a335760405162461bcd60e51b81526004016108f39061551a565b600c805461ff001916610100179055600e54600160a01b900460ff16611a6b5760405162461bcd60e51b81526004016108f390615591565b6000611a7660095490565b90506000611a848583614237565b905080611aa35760405162461bcd60e51b81526004016108f3906154a4565b60005b600f54811015611beb576000600f8281548110611ac557611ac56156b4565b60009182526020808320909101546001600160a01b03168083526010909152604082206003015490925090611afa85836138cd565b905080611b195760405162461bcd60e51b81526004016108f3906154a4565b878785818110611b2b57611b2b6156b4565b90506020020135811115611b515760405162461bcd60e51b81526004016108f3906154f4565b6001600160a01b038316600090815260106020526040902060030154611b77908261434f565b6001600160a01b03841660008181526010602052604090819020600301929092559051339060008051602061571983398151915290611bc29085904290918252602082015260400190565b60405180910390a3611bd58333836143a1565b5050508080611be390615659565b915050611aa6565b50611bf5856143d4565b611bff3386613adf565b6040518581526000805160206156f98339815191529060200160405180910390a15050600c805461ff0019169055505050565b600c54600090610100900460ff1615611c5d5760405162461bcd60e51b81526004016108f39061551a565b600c805461ff001916610100179055600e54600160a01b900460ff16611c955760405162461bcd60e51b81526004016108f390615591565b6001600160a01b03841660009081526010602052604090205460ff16611ccd5760405162461bcd60e51b81526004016108f39061556a565b6001600160a01b038416600090815260106020526040902060030154611d00906109ab6002670de0b6b3a76400006155d4565b831115611d1f5760405162461bcd60e51b81526004016108f39061547a565b6001600160a01b038416600090815260106020526040902060038101546002820154600954601154611d5493929190886141a2565b915082821015611d765760405162461bcd60e51b81526004016108f3906154cd565b611d8481600301548561434f565b6003820155604080518581524260208201526001600160a01b038716913391600080516020615719833981519152910160405180910390a36040518281526000805160206156f98339815191529060200160405180910390a1611de6826143d4565b611df03383613adf565b611dfb8533866143a1565b600380546001600160a01b031660009081526010602052604081209182015460028301546009546011548493611e359390929091896143dd565b6003549091506001600160a01b0389811691161415611e61576004546001600160a01b03169150611e70565b6003546001600160a01b031691505b6012546003546040516326b1f01f60e01b81526001600160a01b03928316926326b1f01f92611ea892911690869086906004016153b4565b60206040518083038186803b158015611ec057600080fd5b505afa158015611ed4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ef89190615319565b151560011415612020576012546003546040516399039fcf60e01b81526001600160a01b03928316926399039fcf92611f3a92911690869086906004016153b4565b600060405180830381600087803b158015611f5457600080fd5b505af1158015611f68573d6000803e3d6000fd5b50505050611f7a83600301548261434f565b6003840155600c54604080518381524260208201526001600160a01b03858116936201000090041691600080516020615719833981519152910160405180910390a36040518581526000805160206156f98339815191529060200160405180910390a1611fe6856143d4565b600c54612002906201000090046001600160a01b031686613adf565b600c546120209083906201000090046001600160a01b0316836143a1565b50505050600c805461ff00191690559392505050565b3360009081526008602090815260408083206001600160a01b03861684529091528120548083111561208b573360009081526008602090815260408083206001600160a01b03881684529091528120556120ba565b6120958184613a6c565b3360009081526008602090815260408083206001600160a01b03891684529091529020555b3360008181526008602090815260408083206001600160a01b03891680855290835292819020549051908152919291600080516020615739833981519152910160405180910390a35060019392505050565b600c54600090610100900460ff16156121375760405162461bcd60e51b81526004016108f39061551a565b600c805461ff001916610100179055600e54600160a01b900460ff1661216f5760405162461bcd60e51b81526004016108f390615591565b6001600160a01b03841660009081526010602052604090205460ff166121a75760405162461bcd60e51b81526004016108f39061556a565b6001600160a01b0384166000908152601060205260409020600381015460028201546009546011546121dc93929190886143dd565b9150816121fb5760405162461bcd60e51b81526004016108f3906154a4565b8282111561221b5760405162461bcd60e51b81526004016108f3906154f4565b6001600160a01b03851660009081526010602052604090206003015461224e906109ab6002670de0b6b3a76400006155d4565b82111561226d5760405162461bcd60e51b81526004016108f39061547a565b61227b81600301548361434f565b6003820155604080518381524260208201526001600160a01b038716913391600080516020615719833981519152910160405180910390a36040518481526000805160206156f98339815191529060200160405180910390a16122dd846143d4565b6122e73385613adf565b6122f28533846143a1565b600380546001600160a01b03166000908152601060205260408120918201546002830154600954601154612329939291908a6143dd565b6003549091506000906001600160a01b038981169116141561235757506004546001600160a01b0316612365565b506003546001600160a01b03165b6012546003546040516326b1f01f60e01b81526001600160a01b03928316926326b1f01f9261239d92911690859087906004016153b4565b60206040518083038186803b1580156123b557600080fd5b505afa1580156123c9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123ed9190615319565b151560011415612020576012546003546040516399039fcf60e01b81526001600160a01b03928316926399039fcf9261242f92911690859087906004016153b4565b600060405180830381600087803b15801561244957600080fd5b505af115801561245d573d6000803e3d6000fd5b5050505061246f83600301548361434f565b6003840155600c54604080518481524260208201526001600160a01b03848116936201000090041691600080516020615719833981519152910160405180910390a36124ba876143d4565b600c546124d6906201000090046001600160a01b031688613adf565b600c546120209082906201000090046001600160a01b0316846143a1565b60025460048054604051637c0aa57760e11b81526001600160a01b0391821692810192909252600092169063f8154aee9060240160206040518083038186803b15801561254057600080fd5b505afa158015612554573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612578919061534f565b905090565b600d546001600160a01b031633146125cf5760405162461bcd60e51b815260206004820152601560248201527427a7262c9026a0a925a2aa1021a7a62622a1aa27a960591b60448201526064016108f3565b600d80546001600160a01b0319166001600160a01b0392909216919091179055565b610e46620f4240670de0b6b3a76400006155d4565b600c546000908190610100900460ff16156126335760405162461bcd60e51b81526004016108f39061551a565b600c805461ff001916610100179055600e54600160a01b900460ff1661266b5760405162461bcd60e51b81526004016108f390615591565b6001600160a01b03871660009081526010602052604090205460ff166126a35760405162461bcd60e51b81526004016108f39061556a565b6001600160a01b03851660009081526010602052604090205460ff166126db5760405162461bcd60e51b81526004016108f39061556a565b6001600160a01b0380881660009081526010602052604080822092881682529020600380820154612718916109a090670de0b6b3a76400006155d4565b8611156127375760405162461bcd60e51b81526004016108f39061553f565b60006127558360030154846002015484600301548560020154613eca565b90508581111561279d5760405162461bcd60e51b81526020600482015260136024820152724552525f4241445f4c494d49545f505249434560681b60448201526064016108f3565b6000806040518060800160405280866003015481526020018660020154815260200185600301548152602001856002015481525090506127de818a8e614477565b90975091508a8711156128035760405162461bcd60e51b81526004016108f3906154f4565b61281185600301548361434f565b856003018190555061282784600301548a613a6c565b6003808601829055860154600280880154908701546128469390613eca565b9550828610156128685760405162461bcd60e51b81526004016108f3906154a4565b878611156128aa5760405162461bcd60e51b815260206004820152600f60248201526e4552525f4c494d49545f505249434560881b60448201526064016108f3565b6128b4878a614237565b8311156128d35760405162461bcd60e51b81526004016108f3906154a4565b60408051888152602081018b9052428183015290516001600160a01b038c811692908f169133917f50ef2fc267012b5c84b56835f16ffd5331ac5a151a3760d74908721ba78b0efe919081900360600190a46129308c33896143a1565b61293b8a338b613ae9565b5050505050600c805461ff001916905590969095509350505050565b600c546000908190610100900460ff16156129845760405162461bcd60e51b81526004016108f39061551a565b600c805461ff001916610100179055600e54600160a01b900460ff166129bc5760405162461bcd60e51b81526004016108f390615591565b6001600160a01b03871660009081526010602052604090205460ff166129f45760405162461bcd60e51b81526004016108f39061556a565b6001600160a01b03851660009081526010602052604090205460ff16612a2c5760405162461bcd60e51b81526004016108f39061556a565b6001600160a01b03808816600090815260106020526040808220928816825290206003820154612a69906109ab6002670de0b6b3a76400006155d4565b881115612a885760405162461bcd60e51b81526004016108f39061547a565b6000612aa68360030154846002015484600301548560020154613eca565b905085811115612aee5760405162461bcd60e51b81526020600482015260136024820152724552525f4241445f4c494d49545f505249434560681b60448201526064016108f3565b600080604051806080016040528086600301548152602001866002015481526020018560030154815260200185600201548152509050612b2f818c8e614695565b909750915088871015612b545760405162461bcd60e51b81526004016108f3906154cd565b612b6285600301548361434f565b8560030181905550612b78846003015488613a6c565b600380860182905586015460028088015490870154612b979390613eca565b955082861015612bb95760405162461bcd60e51b81526004016108f3906154a4565b87861115612bfb5760405162461bcd60e51b815260206004820152600f60248201526e4552525f4c494d49545f505249434560881b60448201526064016108f3565b612c058b88614237565b831115612c245760405162461bcd60e51b81526004016108f3906154a4565b604080518c815260208101899052428183015290516001600160a01b038c811692908f169133917f50ef2fc267012b5c84b56835f16ffd5331ac5a151a3760d74908721ba78b0efe919081900360600190a4612c818c338d6143a1565b61293b8a3389613ae9565b610e4664e8d4a51000670de0b6b3a76400006155d4565b600c54600090610100900460ff1615612cce5760405162461bcd60e51b81526004016108f39061551a565b5060115490565b610e46670de0b6b3a764000060646155e8565b600c54600090610100900460ff1615612d135760405162461bcd60e51b81526004016108f39061551a565b6001600160a01b03821660009081526010602052604090205460ff16612d4b5760405162461bcd60e51b81526004016108f39061556a565b506001600160a01b0381166000908152601060205260409020600201545b919050565b6060600b8054610d559061561e565b612d906003670de0b6b3a76400006155d4565b610e469060016155bc565b6001600160a01b03821660009081526010602090815260408083208151608081018352815460ff1615158152600182015493810193909352600281015491830182905260030154606083018190526009546011546115a6939190876139a8565b6000612e08338484613f42565b50600192915050565b600c54610100900460ff1615612e395760405162461bcd60e51b81526004016108f39061551a565b600c805461ff001916610100179055600e54600160a01b900460ff16612e715760405162461bcd60e51b81526004016108f390615591565b6000612e7c60095490565b90506000612e8b8560006138cd565b90506000612e998683613a6c565b90506000612ea78285614237565b905080612ec65760405162461bcd60e51b81526004016108f3906154a4565b612ed03388613ac9565b600254612ee6906001600160a01b031684613adf565b612eef82613ad3565b60005b600f54811015613037576000600f8281548110612f1157612f116156b4565b60009182526020808320909101546001600160a01b03168083526010909152604082206003015490925090612f4685836138cd565b905080612f655760405162461bcd60e51b81526004016108f3906154a4565b898985818110612f7757612f776156b4565b90506020020135811015612f9d5760405162461bcd60e51b81526004016108f3906154cd565b6001600160a01b038316600090815260106020526040902060030154612fc39082613a6c565b6001600160a01b0384166000818152601060205260409081902060030192909255905133906000805160206156d98339815191529061300e9085904290918252602082015260400190565b60405180910390a3613021833383613ae9565b505050808061302f90615659565b915050612ef2565b5050600c805461ff0019169055505050505050565b610e46600a670de0b6b3a76400006155d4565b6001613074670de0b6b3a764000060026155e8565b610e469190615607565b600c54606090610100900460ff16156130a95760405162461bcd60e51b81526004016108f39061551a565b600e54600160a01b900460ff166130d25760405162461bcd60e51b81526004016108f390615591565b600f805480602002602001604051908101604052809291908181526020018280548015610dce57602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161310a575050505050905090565b601254600090600160a01b900460ff161561318e5760405162461bcd60e51b815260206004820152601760248201527f4552525f414c52454144595f494e495449414c495a454400000000000000000060448201526064016108f3565b6001600160a01b0389166131e45760405162461bcd60e51b815260206004820152601e60248201527f4552525f494e56414c49445f434f4e54524f4c4c45525f41444452455353000060448201526064016108f3565b6001600160a01b03881661323a5760405162461bcd60e51b815260206004820152601b60248201527f4552525f494e56414c49445f464143544f52595f41444452455353000000000060448201526064016108f3565b61324f620f4240670de0b6b3a76400006155d4565b87876000818110613262576132626156b4565b9050602002013510156132a55760405162461bcd60e51b815260206004820152600b60248201526a4552525f4d494e5f46454560a81b60448201526064016108f3565b6132b8600a670de0b6b3a76400006155d4565b878760008181106132cb576132cb6156b4565b90506020020135111561330e5760405162461bcd60e51b815260206004820152600b60248201526a4552525f4d41585f46454560a81b60448201526064016108f3565b6133948989898980806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250506040805180820182528c93508b9250908a9060029083908390808284376000920191909152505060408051808201825291508a90600290839083908082843760009201919091525061489a915050565b9998505050505050505050565b600c54606090610100900460ff16156130d25760405162461bcd60e51b81526004016108f39061551a565b3360009081526008602090815260408083206001600160a01b03861684529091528120546133fa908361434f565b3360008181526008602090815260408083206001600160a01b038916808552908352928190208590555193845290926000805160206157398339815191529101610e21565b610e466002670de0b6b3a76400006155d4565b600c54600090610100900460ff161561347d5760405162461bcd60e51b81526004016108f39061551a565b6001600160a01b03821660009081526010602052604090205460ff166134b55760405162461bcd60e51b81526004016108f39061556a565b6001600160a01b0382166000908152601060205260409020600201546011546134df908290614237565b9392505050565b60006134f061307e565b905060005b815181101561363c57600060056000848481518110613516576135166156b4565b60200260200101516001600160a01b03166001600160a01b03168152602001908152602001600020549050600060056000858581518110613559576135596156b4565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002081905550828281518110613597576135976156b4565b6020908102919091010151600e5460405163a9059cbb60e01b81526001600160a01b0391821660048201526024810184905291169063a9059cbb90604401602060405180830381600087803b1580156135ef57600080fd5b505af1158015613603573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906136279190615319565b5050808061363490615659565b9150506134f5565b5050565b600c54600090610100900460ff161561366b5760405162461bcd60e51b81526004016108f39061551a565b6001600160a01b03821660009081526010602052604090205460ff166136a35760405162461bcd60e51b81526004016108f39061556a565b506001600160a01b031660009081526010602052604090206003015490565b600d546001600160a01b031633146137145760405162461bcd60e51b815260206004820152601560248201527427a7262c9026a0a925a2aa1021a7a62622a1aa27a960591b60448201526064016108f3565b600061371e61307e565b905060005b815181101561386857600060066000848481518110613744576137446156b4565b60200260200101516001600160a01b03166001600160a01b03168152602001908152602001600020549050600060066000858581518110613787576137876156b4565b60200260200101516001600160a01b03166001600160a01b03168152602001908152602001600020819055508282815181106137c5576137c56156b4565b602090810291909101015160405163a9059cbb60e01b81526001600160a01b038681166004830152602482018490529091169063a9059cbb90604401602060405180830381600087803b15801561381b57600080fd5b505af115801561382f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906138539190615319565b5050808061386090615659565b915050613723565b505050565b6001600160a01b03821660009081526010602090815260408083208151608081018352815460ff1615158152600182015493810193909352600281015491830182905260030154606083018190526009546011546115a6939190876143dd565b6000806138da83856155e8565b90508315806138f15750826138ef85836155d4565b145b6139305760405162461bcd60e51b815260206004820152601060248201526f4552525f4d554c5f4f564552464c4f5760801b60448201526064016108f3565b60006139456002670de0b6b3a76400006155d4565b61394f90836155bc565b9050818110156139945760405162461bcd60e51b815260206004820152601060248201526f4552525f4d554c5f4f564552464c4f5760801b60448201526064016108f3565b6000611342670de0b6b3a7640000836155d4565b6000806139b58685614237565b905060006139cb670de0b6b3a764000083613a6c565b905060006139db826001546138cd565b905060006139fa866139f5670de0b6b3a764000085613a6c565b614237565b90506000613a088b83613a6c565b90506000613a16828d614237565b90506000613a2482886149d8565b90506000613a32828d6138cd565b90506000613a408d83613a6c565b9050613a59816139f5670de0b6b3a76400006000613a6c565b9f9e505050505050505050505050505050565b6000806000613a7b8585614b04565b915091508015613ac15760405162461bcd60e51b81526020600482015260116024820152704552525f5355425f554e444552464c4f5760781b60448201526064016108f3565b509392505050565b61363c8282614b3b565b613adc81614b46565b50565b61363c8282614c12565b60405163a9059cbb60e01b81526001600160a01b038381166004830152602482018390526000919085169063a9059cbb906044015b602060405180830381600087803b158015613b3857600080fd5b505af1158015613b4c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613b709190615319565b905080613bb15760405162461bcd60e51b815260206004820152600f60248201526e4552525f45524332305f46414c534560881b60448201526064016108f3565b50505050565b600080613bc48685614237565b90506000613bdf846109ab670de0b6b3a76400006000613a6c565b90506000613bed8783613a6c565b90506000613bfb8289614237565b90506000613c1a82613c15670de0b6b3a764000088614237565b6149d8565b90506000613c28828d6138cd565b90506000613c368d83613a6c565b90506000613c57613c4f670de0b6b3a76400008a613a6c565b6001546138cd565b9050613c6f826109ab670de0b6b3a764000084613a6c565b9e9d5050505050505050505050505050565b600c546201000090046001600160a01b03163314613cd65760405162461bcd60e51b815260206004820152601260248201527122a9292fa727aa2fa1a7a72a2927a62622a960711b60448201526064016108f3565b6001600160a01b03831660009081526010602052604090205460ff1615613d2e5760405162461bcd60e51b815260206004820152600c60248201526b11549497d254d7d093d5539160a21b60448201526064016108f3565b600e54600160a01b900460ff1615613d7b5760405162461bcd60e51b815260206004820152601060248201526f11549497d254d7d1925390531256915160821b60448201526064016108f3565b600f54600211613dbe5760405162461bcd60e51b815260206004820152600e60248201526d4552525f4d41585f544f4b454e5360901b60448201526064016108f3565b604080516080810182526001808252600f805460208085019182526000858701818152606087018281526001600160a01b038c1680845260109094529782209651875460ff1916901515178755925186860155915160028601559451600390940193909355805491820181559091527f8d1108e10bcb7c27dddfc02ed9d693a074039d026cf4ea4240b40f7d581ac8020180546001600160a01b0319169091179055613868838383614c1d565b600e805460ff60a01b1916600160a01b179055600c805460ff60b01b1916600160b01b179055613eac613ea7670de0b6b3a764000060646155e8565b6143d4565b613ec833613ec3670de0b6b3a764000060646155e8565b613adf565b565b600080613ed78686614237565b90506000613ee58585614237565b90506000613ef38383614237565b90506000613f36670de0b6b3a76400006139f5670de0b6b3a7640000600054613f1a6124f4565b600154613f2791906155bc565b613f3191906155bc565b613a6c565b905061339482826138cd565b6001600160a01b038316600090815260076020526040902054811115613fa15760405162461bcd60e51b815260206004820152601460248201527311549497d25394d551919250d251539517d0905360621b60448201526064016108f3565b6001600160a01b038316600090815260076020526040902054613fc49082613a6c565b6001600160a01b038085166000908152600760205260408082209390935590841681522054613ff3908261434f565b6001600160a01b0380841660008181526007602052604090819020939093559151908516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906140479085815260200190565b60405180910390a3505050565b6000806140618487614237565b9050600061406f8685613a6c565b9050600061407d8783614237565b9050600061408b82856149d8565b905061409f81670de0b6b3a7640000613a6c565b9050600080546140ad6124f4565b6001546140ba91906155bc565b6140c491906155bc565b90506140d8670de0b6b3a764000082613a6c565b95506140ed6140e78c846138cd565b87614237565b9b9a5050505050505050505050565b6000806141098685614237565b9050600080546141176124f4565b60015461412491906155bc565b61412e91906155bc565b90506000614144670de0b6b3a764000083613a6c565b905061415085826138cd565b905060006141628a6139f58c8561434f565b9050600061417082866149d8565b90506000614186670de0b6b3a764000083613a6c565b90506141928a826138cd565b9c9b505050505050505050505050565b6000806141af8685614237565b905060006141c8613c4f670de0b6b3a764000084613a6c565b905060006141e2856109ab670de0b6b3a764000085613a6c565b905060006141f08a8361434f565b905060006141fe828c614237565b9050600061420c82876149d8565b9050600061421a828c6138cd565b9050614226818c613a6c565b9d9c50505050505050505050505050565b6000816142755760405162461bcd60e51b815260206004820152600c60248201526b4552525f4449565f5a45524f60a01b60448201526064016108f3565b6000614289670de0b6b3a7640000856155e8565b90508315806142a85750670de0b6b3a76400006142a685836155d4565b145b6142e75760405162461bcd60e51b815260206004820152601060248201526f11549497d1125597d25395115493905360821b60448201526064016108f3565b60006142f46002856155d4565b6142fe90836155bc565b9050818110156143435760405162461bcd60e51b815260206004820152601060248201526f11549497d1125597d25395115493905360821b60448201526064016108f3565b600061134285836155d4565b60008061435c83856155bc565b9050838110156134df5760405162461bcd60e51b815260206004820152601060248201526f4552525f4144445f4f564552464c4f5760801b60448201526064016108f3565b6040516323b872dd60e01b81526000906001600160a01b038516906323b872dd90613b1e908690309087906004016153b4565b613adc81614e6d565b6000806143ea8685614237565b905060006143f8868561434f565b905060006144068288614237565b9050600061441c670de0b6b3a764000085614237565b9050600061442a83836149d8565b90506000614438828d6138cd565b90506000614446828e613a6c565b9050600061445f613c4f670de0b6b3a76400008a613a6c565b9050613c6f826139f5670de0b6b3a764000084613a6c565b6000808061449486600360200201518760015b6020020151614237565b905060006144a9876002602002015187613a6c565b905060006144be886002602002015183614237565b905060006144cc82856149d8565b90506144e081670de0b6b3a7640000613a6c565b9050600080546144ee6124f4565b6001546144fb91906155bc565b61450591906155bc565b8a5190915061452a9061451890846138cd565b6139f5670de0b6b3a764000084613a6c565b9650600061454a88613f318a6109ab670de0b6b3a7640000613f316124f4565b6001600160a01b038a16600090815260056020526040902054909150614570908261434f565b600560008b6001600160a01b03166001600160a01b031681526020019081526020016000208190555060006145b789613f318b6109ab670de0b6b3a7640000600054613a6c565b6001600160a01b038b166000908152600660205260409020549091506145dd908261434f565b6001600160a01b038b166000908152600660205260409020558b5161461a9061460690866138cd565b6139f5670de0b6b3a7640000600154613a6c565b97507f90d9f1d0641138b6407ac37bea3a905d63a371c2d91a484f68d59924634d4ef36146598a613f318c6109ab670de0b6b3a7640000600154613a6c565b604080519182526020820185905281018390526001600160a01b038c16606082015260800160405180910390a150505050505050935093915050565b600080806146ac866001602002015187600361448a565b905060006146cc86613f31886109ab670de0b6b3a7640000613f316124f4565b6001600160a01b0386166000908152600560205260409020549091506146f2908261434f565b60056000876001600160a01b03166001600160a01b0316815260200190815260200160002081905550600061473987613f31896109ab670de0b6b3a7640000600054613a6c565b6001600160a01b03871660009081526006602052604090205490915061475f908261434f565b6001600160a01b03871660009081526006602052604081209190915580546147856124f4565b60015461479291906155bc565b61479c91906155bc565b90507f90d9f1d0641138b6407ac37bea3a905d63a371c2d91a484f68d59924634d4ef36147db89613f318b6109ab670de0b6b3a7640000600154613a6c565b604080519182526020820186905281018490526001600160a01b038916606082015260800160405180910390a1600061481c670de0b6b3a764000083613a6c565b905061482889826138cd565b8a5190915060009061483e906139f5818561434f565b9050600061484c82886149d8565b90506000614862670de0b6b3a764000083613a6c565b90506148758d60026020020151826138cd565b9950896148868d613f31898b6155bc565b995099505050505050505050935093915050565b600c805462010000600160b01b031916620100006001600160a01b038a81169190910291909117909155600280546001600160a01b0319169188169190911790558451600090869082906148f0576148f06156b4565b602002602001015160018190555085600181518110614911576149116156b4565b602090810291909101810151600055600c8054961515600160b01b0260ff60b01b199097169690961795869055600e80548551600380546001600160a01b039283166001600160a01b03199182161790915596840151600480549183169189169190911790558551600d805491831691891691909117905594909201518416951515600160a01b908102959095166001600160a81b0319928316179590951790945550601280549093166201000090940416929092178217908190550460ff169392505050565b60006001831015614a235760405162461bcd60e51b81526020600482015260156024820152744552525f42504f575f424153455f544f4f5f4c4f5760581b60448201526064016108f3565b6001614a38670de0b6b3a764000060026155e8565b614a429190615607565b831115614a8a5760405162461bcd60e51b815260206004820152601660248201527508aa4a4be84a09eaebe8482a68abea89e9ebe90928e960531b60448201526064016108f3565b6000614a9583614edc565b90506000614aa38483613a6c565b90506000614ab986614ab485614efa565b614f0e565b905081614aca579250610e2d915050565b6000614aed8784614ae86402540be400670de0b6b3a76400006155d4565b614f82565b9050614af982826138cd565b979650505050505050565b600080828410614b2357614b188385615607565b600091509150614b34565b614b2d8484615607565b6001915091505b9250929050565b61363c823083613f42565b30600090815260076020526040902054811115614b9c5760405162461bcd60e51b815260206004820152601460248201527311549497d25394d551919250d251539517d0905360621b60448201526064016108f3565b30600090815260076020526040902054614bb69082613a6c565b30600090815260076020526040902055600954614bd39082613a6c565b60095560405181815260009030907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906020015b60405180910390a350565b61363c308383613f42565b670de0b6b3a7640000811015614c665760405162461bcd60e51b815260206004820152600e60248201526d11549497d3525397d5d15251d21560921b60448201526064016108f3565b614c79670de0b6b3a764000060326155e8565b811115614cb95760405162461bcd60e51b815260206004820152600e60248201526d11549497d3505617d5d15251d21560921b60448201526064016108f3565b614cd064e8d4a51000670de0b6b3a76400006155d4565b821015614d115760405162461bcd60e51b815260206004820152600f60248201526e4552525f4d494e5f42414c414e434560881b60448201526064016108f3565b6001600160a01b03831660009081526010602052604090206002015480821115614dad57614d4a601154614d458484613a6c565b61434f565b601155614d60670de0b6b3a764000060326155e8565b6011541115614da85760405162461bcd60e51b815260206004820152601460248201527311549497d3505617d513d5105317d5d15251d21560621b60448201526064016108f3565b614dc9565b80821015614dc957614dc5601154613f318385613a6c565b6011555b6001600160a01b03841660009081526010602052604090206002810183905560030180549084905580841115614e1257614e0d8533614e088785613a6c565b6143a1565b614e66565b80841015614e66576000614e268286613a6c565b90506000614e358260006138cd565b9050614e4b8733614e468585613a6c565b613ae9565b600254614e639088906001600160a01b031683613ae9565b50505b5050505050565b30600090815260076020526040902054614e87908261434f565b30600090815260076020526040902055600954614ea4908261434f565b60095560405181815230906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602001614c07565b6000670de0b6b3a7640000614ef083614efa565b610e2d91906155e8565b6000610e2d670de0b6b3a7640000836155d4565b60008281614f1d600285615674565b614f2f57670de0b6b3a7640000614f31565b815b9050614f3e6002856155d4565b93505b83156115a657614f5182836138cd565b9150614f5e600285615674565b15614f7057614f6d81836138cd565b90505b614f7b6002856155d4565b9350614f41565b6000828180614f9987670de0b6b3a7640000614b04565b9092509050670de0b6b3a764000080600060015b888410615063576000614fc8670de0b6b3a7640000836155e8565b9050600080614fe88a614fe385670de0b6b3a7640000613a6c565b614b04565b91509150614ffa876109ab848c6138cd565b96506150068784614237565b96508661501557505050615063565b871561501f579315935b8015615029579315935b8415615040576150398688613a6c565b955061504d565b61504a868861434f565b95505b505050808061505b90615659565b915050614fad565b50909998505050505050505050565b80356001600160a01b0381168114612d6957600080fd5b8060408101831015610e2d57600080fd5b60008083601f8401126150ac57600080fd5b50813567ffffffffffffffff8111156150c457600080fd5b6020830191508360208260051b8501011115614b3457600080fd5b6000602082840312156150f157600080fd5b6134df82615072565b6000806040838503121561510d57600080fd5b61511683615072565b915061512460208401615072565b90509250929050565b600080600080600080600080610120898b03121561514a57600080fd5b61515389615072565b975061516160208a01615072565b9650604089013567ffffffffffffffff81111561517d57600080fd5b6151898b828c0161509a565b909750955050606089013561519d816156ca565b935060808901356151ad816156ca565b92506151bc8a60a08b01615089565b91506151cb8a60e08b01615089565b90509295985092959890939650565b6000806000606084860312156151ef57600080fd5b6151f884615072565b925061520660208501615072565b9150604084013590509250925092565b6000806040838503121561522957600080fd5b61523283615072565b946020939093013593505050565b600080600080600060a0868803121561525857600080fd5b61526186615072565b94506020860135935061527660408701615072565b94979396509394606081013594506080013592915050565b6000806000606084860312156152a357600080fd5b6152ac84615072565b95602085013595506040909401359392505050565b60008060008060008060c087890312156152da57600080fd5b6152e387615072565b955060208701359450604087013593506152ff60608801615072565b92506080870135915060a087013590509295509295509295565b60006020828403121561532b57600080fd5b81516134df816156ca565b60006020828403121561534857600080fd5b5035919050565b60006020828403121561536157600080fd5b5051919050565b60008060006040848603121561537d57600080fd5b83359250602084013567ffffffffffffffff81111561539b57600080fd5b6153a78682870161509a565b9497909650939450505050565b6001600160a01b039384168152919092166020820152604081019190915260600190565b6020808252825182820181905260009190848201906040850190845b818110156154195783516001600160a01b0316835292840192918401916001016153f4565b50909695505050505050565b600060208083528351808285015260005b8181101561545257858101830151858201604001528201615436565b81811115615464576000604083870101525b50601f01601f1916929092016040019392505050565b60208082526010908201526f4552525f4d41585f494e5f524154494f60801b604082015260600190565b6020808252600f908201526e08aa4a4be9a82a890be82a0a0a49eb608b1b604082015260600190565b6020808252600d908201526c11549497d31253525517d3d555609a1b604082015260600190565b6020808252600c908201526b22a9292fa624a6a4aa2fa4a760a11b604082015260600190565b6020808252600b908201526a4552525f5245454e54525960a81b604082015260600190565b6020808252601190820152704552525f4d41585f4f55545f524154494f60781b604082015260600190565b6020808252600d908201526c11549497d393d517d093d55391609a1b604082015260600190565b60208082526011908201527011549497d393d517d19253905312569151607a1b604082015260600190565b600082198211156155cf576155cf615688565b500190565b6000826155e3576155e361569e565b500490565b600081600019048311821515161561560257615602615688565b500290565b60008282101561561957615619615688565b500390565b600181811c9082168061563257607f821691505b6020821081141561565357634e487b7160e01b600052602260045260246000fd5b50919050565b600060001982141561566d5761566d615688565b5060010190565b6000826156835761568361569e565b500690565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052603260045260246000fd5b8015158114613adc57600080fdfe9d9058fd2f25ccc389fec7720abef0ca83472f5abfafd5f10d37f51e6a0493f3fcda32798d5a9d032f49b37fea876d422f18f6e386e0f07db6029b693624b2c215a8ca63e37b2cff1677df2b6b82d36fcf8a524228bd7a4b4d02d107c28c1e8a8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925a264697066735822122050e05b3a15d209f645981c5602187830783411d60acf6d58ed970e01e78b794664736f6c63430008070033", - "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106104075760003560e01c80638201aa3f11610220578063be3bbd2e11610130578063e4a28a52116100b8578063f68045a511610087578063f68045a514610875578063f8b2cb4f1461087d578063fbb9dd5014610890578063fde924f7146108a3578063ff9b1850146108b557600080fd5b8063e4a28a521461048f578063ec09302114610847578063f0f13f0b1461084f578063f1b8a9b71461086257600080fd5b8063cc77828d116100ff578063cc77828d146107e3578063cd2ed8fb146107eb578063d4cadf68146107f3578063d73dd623146107fb578063dd62ed3e1461080e57600080fd5b8063be3bbd2e146107b3578063c070a6d8146107c8578063c36596a6146104cf578063c6580d12146107db57600080fd5b8063a3b3a16d116101b3578063b0e0d13611610182578063b0e0d13614610793578063b7b800a414610793578063ba019dab1461079b578063bc063e1a146107a3578063bc694ea2146107ab57600080fd5b8063a3b3a16d14610747578063a562ddf01461075a578063a9059cbb1461076d578063b02f0b731461078057600080fd5b80639381cd2b116101ef5780639381cd2b1461071c578063948d8ce61461072457806395d89b4114610737578063992e2a921461073f57600080fd5b80638201aa3f146106e7578063867378c5146106fa5780638d4e408314610702578063936c34771461071457600080fd5b806334e199071161031b5780634f69c0d4116102ae578063700dd7e81161027d578063700dd7e814610673578063703305181461067b57806370a082311461068e57806376c7a3c7146106b75780637c5e9ea4146106bf57600080fd5b80634f69c0d4146106275780635db342771461063a578063661884631461064d5780636d06dfa01461066057600080fd5b8063430ed5d0116102ea578063430ed5d0146105e757806346ab38f1146105fa57806349e9350f1461060d5780634df947d01461061657600080fd5b806334e199071461059c578063380376a6146105af578063392e53cd146105c25780633950b3fd146105d457600080fd5b8063189d00ca1161039e5780632f37b6241161036d5780632f37b6241461050457806330062192146105305780633018205f14610550578063313ce5671461056757806331e2761b1461057c57600080fd5b8063189d00ca146104c7578063218b5382146104cf57806323b872dd146104de5780632ea07d8a146104f157600080fd5b806309a3bbe4116103da57806309a3bbe41461048f57806309ef3f5b1461049757806315e84af9146104ac57806318160ddd146104bf57600080fd5b806302c967481461040c57806304ad79541461043257806306fdde0314610457578063095ea7b31461046c575b600080fd5b61041f61041a36600461528e565b6108c8565b6040519081526020015b60405180910390f35b6003546001600160a01b03165b6040516001600160a01b039091168152602001610429565b61045f610d46565b6040516104299190615425565b61047f61047a366004615216565b610dd8565b6040519015158152602001610429565b61041f610e33565b6104aa6104a53660046152c1565b610e49565b005b61041f6104ba3660046150fa565b611042565b60095461041f565b61041f611126565b61041f670de0b6b3a764000081565b61047f6104ec3660046151da565b61113d565b61041f6104ff3660046151da565b611291565b61047f6105123660046150df565b6001600160a01b031660009081526010602052604090205460ff1690565b61041f61053e3660046150df565b60056020526000908152604090205481565b600c546201000090046001600160a01b031661043f565b600c5460405160ff9091168152602001610429565b61041f61058a3660046150df565b60066020526000908152604090205481565b6104aa6105aa366004615336565b61134c565b61041f6105bd3660046151da565b611495565b601254600160a01b900460ff1661047f565b61041f6105e2366004615216565b611546565b61041f6105f5366004615216565b6115ae565b61041f61060836600461528e565b61160e565b61041f60005481565b6004546001600160a01b031661043f565b6104aa610635366004615368565b611a0b565b61041f61064836600461528e565b611c32565b61047f61065b366004615216565b612036565b61041f61066e36600461528e565b61210c565b61041f6124f4565b6104aa6106893660046150df565b61257d565b61041f61069c3660046150df565b6001600160a01b031660009081526007602052604090205490565b61041f6125f1565b6106d26106cd366004615240565b612606565b60408051928352602083019190915201610429565b6106d26106f5366004615240565b612957565b61041f612c8c565b600e54600160a01b900460ff1661047f565b61041f612ca3565b61041f612cd5565b61041f6107323660046150df565b612ce8565b61045f612d6e565b61041f612d7d565b61041f610755366004615216565b612d9b565b600d5461043f906001600160a01b031681565b61047f61077b366004615216565b612dfb565b6104aa61078e366004615368565b612e11565b61041f600281565b61041f600181565b61041f61304c565b61041f61305f565b6107bb61307e565b60405161042991906153d8565b61047f6107d636600461512d565b613131565b61041f600081565b6107bb6133a1565b600f5461041f565b60015461041f565b61047f610809366004615216565b6133cc565b61041f61081c3660046150fa565b6001600160a01b03918216600090815260086020908152604080832093909416825291909152205490565b61041f61343f565b600e5461043f906001600160a01b031681565b61041f6108703660046150df565b613452565b6104aa6134e6565b61041f61088b3660046150df565b613640565b6104aa61089e3660046150df565b6136c2565b600c54600160b01b900460ff1661047f565b61041f6108c3366004615216565b61386d565b600c54600090610100900460ff16156108fc5760405162461bcd60e51b81526004016108f39061551a565b60405180910390fd5b600c805461ff001916610100179055600e54600160a01b900460ff166109345760405162461bcd60e51b81526004016108f390615591565b6001600160a01b03841660009081526010602052604090205460ff1661096c5760405162461bcd60e51b81526004016108f39061556a565b6001600160a01b03841660009081526010602052604090206003908101546109b0916109a090670de0b6b3a76400006155d4565b6109ab9060016155bc565b6138cd565b8311156109cf5760405162461bcd60e51b81526004016108f39061553f565b6001600160a01b038416600090815260106020526040902060038101546002820154600954601154610a0493929190886139a8565b915081610a235760405162461bcd60e51b81526004016108f3906154a4565b82821115610a435760405162461bcd60e51b81526004016108f3906154f4565b610a51816003015485613a6c565b60038201556000610a6283826138cd565b604080518781524260208201529192506001600160a01b0388169133916000805160206156d9833981519152910160405180910390a36040518381526000805160206156f98339815191529060200160405180910390a1610ac33384613ac9565b610ad5610ad08483613a6c565b613ad3565b600254610aeb906001600160a01b031682613adf565b610af6863387613ae9565b6003546000906001600160a01b0388811691161415610b2157506004546001600160a01b0316610b2f565b506003546001600160a01b03165b60125460035460405163efd4810360e01b81526001600160a01b039283169263efd4810392610b6792911690859089906004016153b4565b60206040518083038186803b158015610b7f57600080fd5b505afa158015610b93573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bb79190615319565b151560011415610d3157600380546001600160a01b03166000908152601060205260408120918201546002830154600954601154610bf8939291908a613bb7565b9050610c08826003015482613a6c565b6003830155610c188660006138cd565b600c54604080518481524260208201529296506001600160a01b03868116936201000090930416916000805160206156d9833981519152910160405180910390a3600c54610c75906201000090046001600160a01b031687613ac9565b610c82610ad08786613a6c565b600254610c98906001600160a01b031685613adf565b600c54610cb69084906201000090046001600160a01b031683613ae9565b6012546003546040516307b01ab360e41b81526001600160a01b03918216600482015285821660248201526044810184905260648101899052911690637b01ab30906084015b600060405180830381600087803b158015610d1657600080fd5b505af1158015610d2a573d6000803e3d6000fd5b5050505050505b505050600c805461ff00191690559392505050565b6060600a8054610d559061561e565b80601f0160208091040260200160405190810160405280929190818152602001828054610d819061561e565b8015610dce5780601f10610da357610100808354040283529160200191610dce565b820191906000526020600020905b815481529060010190602001808311610db157829003601f168201915b5050505050905090565b3360008181526008602090815260408083206001600160a01b0387168085529252808320859055519192909160008051602061573983398151915290610e219086815260200190565b60405180910390a35060015b92915050565b610e46670de0b6b3a764000060326155e8565b81565b600c546201000090046001600160a01b03163314610ea25760405162461bcd60e51b815260206004820152601660248201527522a9292fa4a72b20a624a22fa1a7a72a2927a62622a960511b60448201526064016108f3565b6003546001600160a01b03878116911614610eff5760405162461bcd60e51b815260206004820152601d60248201527f4552525f494e56414c49445f44415441544f4b454e5f4144445245535300000060448201526064016108f3565b6004546001600160a01b03848116911614610f5c5760405162461bcd60e51b815260206004820152601d60248201527f4552525f494e56414c49445f42415345544f4b454e5f4144445245535300000060448201526064016108f3565b610f67868686613c81565b604080518681524260208201526001600160a01b038816913391600080516020615719833981519152910160405180910390a3610fa5838383613c81565b604080518381524260208201526001600160a01b038516913391600080516020615719833981519152910160405180910390a3610fe0613e6b565b6040805183815260208101839052908101869052606081018590526001600160a01b03808816919085169033907fbece8b4dcdbe446dd65a9288154698e067e3e91de17a1a408c2f531b9f845d739060800160405180910390a4505050505050565b600c54600090610100900460ff161561106d5760405162461bcd60e51b81526004016108f39061551a565b6001600160a01b03831660009081526010602052604090205460ff166110a55760405162461bcd60e51b81526004016108f39061556a565b6001600160a01b03821660009081526010602052604090205460ff166110dd5760405162461bcd60e51b81526004016108f39061556a565b6001600160a01b0380841660009081526010602052604080822092851682529020600380830154600280850154928401549084015461111d939190613eca565b95945050505050565b610e466402540be400670de0b6b3a76400006155d4565b6000336001600160a01b038516148061117957506001600160a01b03841660009081526008602090815260408083203384529091529020548211155b6111bd5760405162461bcd60e51b815260206004820152601560248201527422a9292fa12a27a5a2a72fa120a22fa1a0a62622a960591b60448201526064016108f3565b6111c8848484613f42565b336001600160a01b0385161480159061120657506001600160a01b038416600090815260086020908152604080832033845290915290205460001914155b15611287576001600160a01b03841660009081526008602090815260408083203384529091529020546112399083613a6c565b6001600160a01b038581166000908152600860209081526040808320338085529083529281902085905551938452918616929091600080516020615739833981519152910160405180910390a35b5060019392505050565b6001600160a01b03831660009081526010602052604081205460ff166112c95760405162461bcd60e51b81526004016108f39061556a565b6001600160a01b03831660009081526010602052604090205460ff166113015760405162461bcd60e51b81526004016108f39061556a565b6001600160a01b0380851660009081526010602052604080822092861682529020600380830154600280850154928401549084015461134293919088614054565b9695505050505050565b600e54600160a01b900460ff16156113995760405162461bcd60e51b815260206004820152601060248201526f11549497d254d7d1925390531256915160821b60448201526064016108f3565b600c546201000090046001600160a01b031633146113ee5760405162461bcd60e51b815260206004820152601260248201527122a9292fa727aa2fa1a7a72a2927a62622a960711b60448201526064016108f3565b611403620f4240670de0b6b3a76400006155d4565b8110156114405760405162461bcd60e51b815260206004820152600b60248201526a4552525f4d494e5f46454560a81b60448201526064016108f3565b611453600a670de0b6b3a76400006155d4565b8111156114905760405162461bcd60e51b815260206004820152600b60248201526a4552525f4d41585f46454560a81b60448201526064016108f3565b600155565b6001600160a01b03831660009081526010602052604081205460ff166114cd5760405162461bcd60e51b81526004016108f39061556a565b6001600160a01b03831660009081526010602052604090205460ff166115055760405162461bcd60e51b81526004016108f39061556a565b6001600160a01b03808516600090815260106020526040808220928616825290206003808301546002808501549284015490840154611342939190886140fc565b6001600160a01b03821660009081526010602090815260408083208151608081018352815460ff1615158152600182015493810193909352600281015491830182905260030154606083018190526009546011546115a6939190876141a2565b949350505050565b6001600160a01b03821660009081526010602090815260408083208151608081018352815460ff1615158152600182015493810193909352600281015491830182905260030154606083018190526009546011546115a693919087613bb7565b600c54600090610100900460ff16156116395760405162461bcd60e51b81526004016108f39061551a565b600c805461ff001916610100179055600e54600160a01b900460ff166116715760405162461bcd60e51b81526004016108f390615591565b6001600160a01b03841660009081526010602052604090205460ff166116a95760405162461bcd60e51b81526004016108f39061556a565b6001600160a01b0384166000908152601060205260409020600381015460028201546009546011546116de9392919088613bb7565b9150828210156117005760405162461bcd60e51b81526004016108f3906154cd565b6001600160a01b0385166000908152601060205260409020600390810154611734916109a090670de0b6b3a76400006155d4565b8211156117535760405162461bcd60e51b81526004016108f39061553f565b611761816003015483613a6c565b6003820155600061177285826138cd565b604080518581524260208201529192506001600160a01b0388169133916000805160206156d9833981519152910160405180910390a36040518581526000805160206156f98339815191529060200160405180910390a16117d33386613ac9565b6117e0610ad08683613a6c565b6002546117f6906001600160a01b031682613adf565b611801863385613ae9565b6003546000906001600160a01b038881169116141561182c57506004546001600160a01b031661183a565b506003546001600160a01b03165b60125460035460405163efd4810360e01b81526001600160a01b039283169263efd48103926118729291169085908b906004016153b4565b60206040518083038186803b15801561188a57600080fd5b505afa15801561189e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118c29190615319565b151560011415610d3157600380546001600160a01b03166000908152601060205260408120918201546002830154600954601154611903939291908c613bb7565b9050611913826003015482613a6c565b60038301556119238860006138cd565b600c54604080518481524260208201529296506001600160a01b03868116936201000090930416916000805160206156d9833981519152910160405180910390a3600c54611980906201000090046001600160a01b031689613ac9565b61198d610ad08986613a6c565b6002546119a3906001600160a01b031685613adf565b600c546119c19084906201000090046001600160a01b031683613ae9565b6012546003546040516307b01ab360e41b81526001600160a01b039182166004820152858216602482015260448101849052606481018b9052911690637b01ab3090608401610cfc565b600c54610100900460ff1615611a335760405162461bcd60e51b81526004016108f39061551a565b600c805461ff001916610100179055600e54600160a01b900460ff16611a6b5760405162461bcd60e51b81526004016108f390615591565b6000611a7660095490565b90506000611a848583614237565b905080611aa35760405162461bcd60e51b81526004016108f3906154a4565b60005b600f54811015611beb576000600f8281548110611ac557611ac56156b4565b60009182526020808320909101546001600160a01b03168083526010909152604082206003015490925090611afa85836138cd565b905080611b195760405162461bcd60e51b81526004016108f3906154a4565b878785818110611b2b57611b2b6156b4565b90506020020135811115611b515760405162461bcd60e51b81526004016108f3906154f4565b6001600160a01b038316600090815260106020526040902060030154611b77908261434f565b6001600160a01b03841660008181526010602052604090819020600301929092559051339060008051602061571983398151915290611bc29085904290918252602082015260400190565b60405180910390a3611bd58333836143a1565b5050508080611be390615659565b915050611aa6565b50611bf5856143d4565b611bff3386613adf565b6040518581526000805160206156f98339815191529060200160405180910390a15050600c805461ff0019169055505050565b600c54600090610100900460ff1615611c5d5760405162461bcd60e51b81526004016108f39061551a565b600c805461ff001916610100179055600e54600160a01b900460ff16611c955760405162461bcd60e51b81526004016108f390615591565b6001600160a01b03841660009081526010602052604090205460ff16611ccd5760405162461bcd60e51b81526004016108f39061556a565b6001600160a01b038416600090815260106020526040902060030154611d00906109ab6002670de0b6b3a76400006155d4565b831115611d1f5760405162461bcd60e51b81526004016108f39061547a565b6001600160a01b038416600090815260106020526040902060038101546002820154600954601154611d5493929190886141a2565b915082821015611d765760405162461bcd60e51b81526004016108f3906154cd565b611d8481600301548561434f565b6003820155604080518581524260208201526001600160a01b038716913391600080516020615719833981519152910160405180910390a36040518281526000805160206156f98339815191529060200160405180910390a1611de6826143d4565b611df03383613adf565b611dfb8533866143a1565b600380546001600160a01b031660009081526010602052604081209182015460028301546009546011548493611e359390929091896143dd565b6003549091506001600160a01b0389811691161415611e61576004546001600160a01b03169150611e70565b6003546001600160a01b031691505b6012546003546040516326b1f01f60e01b81526001600160a01b03928316926326b1f01f92611ea892911690869086906004016153b4565b60206040518083038186803b158015611ec057600080fd5b505afa158015611ed4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ef89190615319565b151560011415612020576012546003546040516399039fcf60e01b81526001600160a01b03928316926399039fcf92611f3a92911690869086906004016153b4565b600060405180830381600087803b158015611f5457600080fd5b505af1158015611f68573d6000803e3d6000fd5b50505050611f7a83600301548261434f565b6003840155600c54604080518381524260208201526001600160a01b03858116936201000090041691600080516020615719833981519152910160405180910390a36040518581526000805160206156f98339815191529060200160405180910390a1611fe6856143d4565b600c54612002906201000090046001600160a01b031686613adf565b600c546120209083906201000090046001600160a01b0316836143a1565b50505050600c805461ff00191690559392505050565b3360009081526008602090815260408083206001600160a01b03861684529091528120548083111561208b573360009081526008602090815260408083206001600160a01b03881684529091528120556120ba565b6120958184613a6c565b3360009081526008602090815260408083206001600160a01b03891684529091529020555b3360008181526008602090815260408083206001600160a01b03891680855290835292819020549051908152919291600080516020615739833981519152910160405180910390a35060019392505050565b600c54600090610100900460ff16156121375760405162461bcd60e51b81526004016108f39061551a565b600c805461ff001916610100179055600e54600160a01b900460ff1661216f5760405162461bcd60e51b81526004016108f390615591565b6001600160a01b03841660009081526010602052604090205460ff166121a75760405162461bcd60e51b81526004016108f39061556a565b6001600160a01b0384166000908152601060205260409020600381015460028201546009546011546121dc93929190886143dd565b9150816121fb5760405162461bcd60e51b81526004016108f3906154a4565b8282111561221b5760405162461bcd60e51b81526004016108f3906154f4565b6001600160a01b03851660009081526010602052604090206003015461224e906109ab6002670de0b6b3a76400006155d4565b82111561226d5760405162461bcd60e51b81526004016108f39061547a565b61227b81600301548361434f565b6003820155604080518381524260208201526001600160a01b038716913391600080516020615719833981519152910160405180910390a36040518481526000805160206156f98339815191529060200160405180910390a16122dd846143d4565b6122e73385613adf565b6122f28533846143a1565b600380546001600160a01b03166000908152601060205260408120918201546002830154600954601154612329939291908a6143dd565b6003549091506000906001600160a01b038981169116141561235757506004546001600160a01b0316612365565b506003546001600160a01b03165b6012546003546040516326b1f01f60e01b81526001600160a01b03928316926326b1f01f9261239d92911690859087906004016153b4565b60206040518083038186803b1580156123b557600080fd5b505afa1580156123c9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123ed9190615319565b151560011415612020576012546003546040516399039fcf60e01b81526001600160a01b03928316926399039fcf9261242f92911690859087906004016153b4565b600060405180830381600087803b15801561244957600080fd5b505af115801561245d573d6000803e3d6000fd5b5050505061246f83600301548361434f565b6003840155600c54604080518481524260208201526001600160a01b03848116936201000090041691600080516020615719833981519152910160405180910390a36124ba876143d4565b600c546124d6906201000090046001600160a01b031688613adf565b600c546120209082906201000090046001600160a01b0316846143a1565b60025460048054604051637c0aa57760e11b81526001600160a01b0391821692810192909252600092169063f8154aee9060240160206040518083038186803b15801561254057600080fd5b505afa158015612554573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612578919061534f565b905090565b600d546001600160a01b031633146125cf5760405162461bcd60e51b815260206004820152601560248201527427a7262c9026a0a925a2aa1021a7a62622a1aa27a960591b60448201526064016108f3565b600d80546001600160a01b0319166001600160a01b0392909216919091179055565b610e46620f4240670de0b6b3a76400006155d4565b600c546000908190610100900460ff16156126335760405162461bcd60e51b81526004016108f39061551a565b600c805461ff001916610100179055600e54600160a01b900460ff1661266b5760405162461bcd60e51b81526004016108f390615591565b6001600160a01b03871660009081526010602052604090205460ff166126a35760405162461bcd60e51b81526004016108f39061556a565b6001600160a01b03851660009081526010602052604090205460ff166126db5760405162461bcd60e51b81526004016108f39061556a565b6001600160a01b0380881660009081526010602052604080822092881682529020600380820154612718916109a090670de0b6b3a76400006155d4565b8611156127375760405162461bcd60e51b81526004016108f39061553f565b60006127558360030154846002015484600301548560020154613eca565b90508581111561279d5760405162461bcd60e51b81526020600482015260136024820152724552525f4241445f4c494d49545f505249434560681b60448201526064016108f3565b6000806040518060800160405280866003015481526020018660020154815260200185600301548152602001856002015481525090506127de818a8e614477565b90975091508a8711156128035760405162461bcd60e51b81526004016108f3906154f4565b61281185600301548361434f565b856003018190555061282784600301548a613a6c565b6003808601829055860154600280880154908701546128469390613eca565b9550828610156128685760405162461bcd60e51b81526004016108f3906154a4565b878611156128aa5760405162461bcd60e51b815260206004820152600f60248201526e4552525f4c494d49545f505249434560881b60448201526064016108f3565b6128b4878a614237565b8311156128d35760405162461bcd60e51b81526004016108f3906154a4565b60408051888152602081018b9052428183015290516001600160a01b038c811692908f169133917f50ef2fc267012b5c84b56835f16ffd5331ac5a151a3760d74908721ba78b0efe919081900360600190a46129308c33896143a1565b61293b8a338b613ae9565b5050505050600c805461ff001916905590969095509350505050565b600c546000908190610100900460ff16156129845760405162461bcd60e51b81526004016108f39061551a565b600c805461ff001916610100179055600e54600160a01b900460ff166129bc5760405162461bcd60e51b81526004016108f390615591565b6001600160a01b03871660009081526010602052604090205460ff166129f45760405162461bcd60e51b81526004016108f39061556a565b6001600160a01b03851660009081526010602052604090205460ff16612a2c5760405162461bcd60e51b81526004016108f39061556a565b6001600160a01b03808816600090815260106020526040808220928816825290206003820154612a69906109ab6002670de0b6b3a76400006155d4565b881115612a885760405162461bcd60e51b81526004016108f39061547a565b6000612aa68360030154846002015484600301548560020154613eca565b905085811115612aee5760405162461bcd60e51b81526020600482015260136024820152724552525f4241445f4c494d49545f505249434560681b60448201526064016108f3565b600080604051806080016040528086600301548152602001866002015481526020018560030154815260200185600201548152509050612b2f818c8e614695565b909750915088871015612b545760405162461bcd60e51b81526004016108f3906154cd565b612b6285600301548361434f565b8560030181905550612b78846003015488613a6c565b600380860182905586015460028088015490870154612b979390613eca565b955082861015612bb95760405162461bcd60e51b81526004016108f3906154a4565b87861115612bfb5760405162461bcd60e51b815260206004820152600f60248201526e4552525f4c494d49545f505249434560881b60448201526064016108f3565b612c058b88614237565b831115612c245760405162461bcd60e51b81526004016108f3906154a4565b604080518c815260208101899052428183015290516001600160a01b038c811692908f169133917f50ef2fc267012b5c84b56835f16ffd5331ac5a151a3760d74908721ba78b0efe919081900360600190a4612c818c338d6143a1565b61293b8a3389613ae9565b610e4664e8d4a51000670de0b6b3a76400006155d4565b600c54600090610100900460ff1615612cce5760405162461bcd60e51b81526004016108f39061551a565b5060115490565b610e46670de0b6b3a764000060646155e8565b600c54600090610100900460ff1615612d135760405162461bcd60e51b81526004016108f39061551a565b6001600160a01b03821660009081526010602052604090205460ff16612d4b5760405162461bcd60e51b81526004016108f39061556a565b506001600160a01b0381166000908152601060205260409020600201545b919050565b6060600b8054610d559061561e565b612d906003670de0b6b3a76400006155d4565b610e469060016155bc565b6001600160a01b03821660009081526010602090815260408083208151608081018352815460ff1615158152600182015493810193909352600281015491830182905260030154606083018190526009546011546115a6939190876139a8565b6000612e08338484613f42565b50600192915050565b600c54610100900460ff1615612e395760405162461bcd60e51b81526004016108f39061551a565b600c805461ff001916610100179055600e54600160a01b900460ff16612e715760405162461bcd60e51b81526004016108f390615591565b6000612e7c60095490565b90506000612e8b8560006138cd565b90506000612e998683613a6c565b90506000612ea78285614237565b905080612ec65760405162461bcd60e51b81526004016108f3906154a4565b612ed03388613ac9565b600254612ee6906001600160a01b031684613adf565b612eef82613ad3565b60005b600f54811015613037576000600f8281548110612f1157612f116156b4565b60009182526020808320909101546001600160a01b03168083526010909152604082206003015490925090612f4685836138cd565b905080612f655760405162461bcd60e51b81526004016108f3906154a4565b898985818110612f7757612f776156b4565b90506020020135811015612f9d5760405162461bcd60e51b81526004016108f3906154cd565b6001600160a01b038316600090815260106020526040902060030154612fc39082613a6c565b6001600160a01b0384166000818152601060205260409081902060030192909255905133906000805160206156d98339815191529061300e9085904290918252602082015260400190565b60405180910390a3613021833383613ae9565b505050808061302f90615659565b915050612ef2565b5050600c805461ff0019169055505050505050565b610e46600a670de0b6b3a76400006155d4565b6001613074670de0b6b3a764000060026155e8565b610e469190615607565b600c54606090610100900460ff16156130a95760405162461bcd60e51b81526004016108f39061551a565b600e54600160a01b900460ff166130d25760405162461bcd60e51b81526004016108f390615591565b600f805480602002602001604051908101604052809291908181526020018280548015610dce57602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161310a575050505050905090565b601254600090600160a01b900460ff161561318e5760405162461bcd60e51b815260206004820152601760248201527f4552525f414c52454144595f494e495449414c495a454400000000000000000060448201526064016108f3565b6001600160a01b0389166131e45760405162461bcd60e51b815260206004820152601e60248201527f4552525f494e56414c49445f434f4e54524f4c4c45525f41444452455353000060448201526064016108f3565b6001600160a01b03881661323a5760405162461bcd60e51b815260206004820152601b60248201527f4552525f494e56414c49445f464143544f52595f41444452455353000000000060448201526064016108f3565b61324f620f4240670de0b6b3a76400006155d4565b87876000818110613262576132626156b4565b9050602002013510156132a55760405162461bcd60e51b815260206004820152600b60248201526a4552525f4d494e5f46454560a81b60448201526064016108f3565b6132b8600a670de0b6b3a76400006155d4565b878760008181106132cb576132cb6156b4565b90506020020135111561330e5760405162461bcd60e51b815260206004820152600b60248201526a4552525f4d41585f46454560a81b60448201526064016108f3565b6133948989898980806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250506040805180820182528c93508b9250908a9060029083908390808284376000920191909152505060408051808201825291508a90600290839083908082843760009201919091525061489a915050565b9998505050505050505050565b600c54606090610100900460ff16156130d25760405162461bcd60e51b81526004016108f39061551a565b3360009081526008602090815260408083206001600160a01b03861684529091528120546133fa908361434f565b3360008181526008602090815260408083206001600160a01b038916808552908352928190208590555193845290926000805160206157398339815191529101610e21565b610e466002670de0b6b3a76400006155d4565b600c54600090610100900460ff161561347d5760405162461bcd60e51b81526004016108f39061551a565b6001600160a01b03821660009081526010602052604090205460ff166134b55760405162461bcd60e51b81526004016108f39061556a565b6001600160a01b0382166000908152601060205260409020600201546011546134df908290614237565b9392505050565b60006134f061307e565b905060005b815181101561363c57600060056000848481518110613516576135166156b4565b60200260200101516001600160a01b03166001600160a01b03168152602001908152602001600020549050600060056000858581518110613559576135596156b4565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002081905550828281518110613597576135976156b4565b6020908102919091010151600e5460405163a9059cbb60e01b81526001600160a01b0391821660048201526024810184905291169063a9059cbb90604401602060405180830381600087803b1580156135ef57600080fd5b505af1158015613603573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906136279190615319565b5050808061363490615659565b9150506134f5565b5050565b600c54600090610100900460ff161561366b5760405162461bcd60e51b81526004016108f39061551a565b6001600160a01b03821660009081526010602052604090205460ff166136a35760405162461bcd60e51b81526004016108f39061556a565b506001600160a01b031660009081526010602052604090206003015490565b600d546001600160a01b031633146137145760405162461bcd60e51b815260206004820152601560248201527427a7262c9026a0a925a2aa1021a7a62622a1aa27a960591b60448201526064016108f3565b600061371e61307e565b905060005b815181101561386857600060066000848481518110613744576137446156b4565b60200260200101516001600160a01b03166001600160a01b03168152602001908152602001600020549050600060066000858581518110613787576137876156b4565b60200260200101516001600160a01b03166001600160a01b03168152602001908152602001600020819055508282815181106137c5576137c56156b4565b602090810291909101015160405163a9059cbb60e01b81526001600160a01b038681166004830152602482018490529091169063a9059cbb90604401602060405180830381600087803b15801561381b57600080fd5b505af115801561382f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906138539190615319565b5050808061386090615659565b915050613723565b505050565b6001600160a01b03821660009081526010602090815260408083208151608081018352815460ff1615158152600182015493810193909352600281015491830182905260030154606083018190526009546011546115a6939190876143dd565b6000806138da83856155e8565b90508315806138f15750826138ef85836155d4565b145b6139305760405162461bcd60e51b815260206004820152601060248201526f4552525f4d554c5f4f564552464c4f5760801b60448201526064016108f3565b60006139456002670de0b6b3a76400006155d4565b61394f90836155bc565b9050818110156139945760405162461bcd60e51b815260206004820152601060248201526f4552525f4d554c5f4f564552464c4f5760801b60448201526064016108f3565b6000611342670de0b6b3a7640000836155d4565b6000806139b58685614237565b905060006139cb670de0b6b3a764000083613a6c565b905060006139db826001546138cd565b905060006139fa866139f5670de0b6b3a764000085613a6c565b614237565b90506000613a088b83613a6c565b90506000613a16828d614237565b90506000613a2482886149d8565b90506000613a32828d6138cd565b90506000613a408d83613a6c565b9050613a59816139f5670de0b6b3a76400006000613a6c565b9f9e505050505050505050505050505050565b6000806000613a7b8585614b04565b915091508015613ac15760405162461bcd60e51b81526020600482015260116024820152704552525f5355425f554e444552464c4f5760781b60448201526064016108f3565b509392505050565b61363c8282614b3b565b613adc81614b46565b50565b61363c8282614c12565b60405163a9059cbb60e01b81526001600160a01b038381166004830152602482018390526000919085169063a9059cbb906044015b602060405180830381600087803b158015613b3857600080fd5b505af1158015613b4c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613b709190615319565b905080613bb15760405162461bcd60e51b815260206004820152600f60248201526e4552525f45524332305f46414c534560881b60448201526064016108f3565b50505050565b600080613bc48685614237565b90506000613bdf846109ab670de0b6b3a76400006000613a6c565b90506000613bed8783613a6c565b90506000613bfb8289614237565b90506000613c1a82613c15670de0b6b3a764000088614237565b6149d8565b90506000613c28828d6138cd565b90506000613c368d83613a6c565b90506000613c57613c4f670de0b6b3a76400008a613a6c565b6001546138cd565b9050613c6f826109ab670de0b6b3a764000084613a6c565b9e9d5050505050505050505050505050565b600c546201000090046001600160a01b03163314613cd65760405162461bcd60e51b815260206004820152601260248201527122a9292fa727aa2fa1a7a72a2927a62622a960711b60448201526064016108f3565b6001600160a01b03831660009081526010602052604090205460ff1615613d2e5760405162461bcd60e51b815260206004820152600c60248201526b11549497d254d7d093d5539160a21b60448201526064016108f3565b600e54600160a01b900460ff1615613d7b5760405162461bcd60e51b815260206004820152601060248201526f11549497d254d7d1925390531256915160821b60448201526064016108f3565b600f54600211613dbe5760405162461bcd60e51b815260206004820152600e60248201526d4552525f4d41585f544f4b454e5360901b60448201526064016108f3565b604080516080810182526001808252600f805460208085019182526000858701818152606087018281526001600160a01b038c1680845260109094529782209651875460ff1916901515178755925186860155915160028601559451600390940193909355805491820181559091527f8d1108e10bcb7c27dddfc02ed9d693a074039d026cf4ea4240b40f7d581ac8020180546001600160a01b0319169091179055613868838383614c1d565b600e805460ff60a01b1916600160a01b179055600c805460ff60b01b1916600160b01b179055613eac613ea7670de0b6b3a764000060646155e8565b6143d4565b613ec833613ec3670de0b6b3a764000060646155e8565b613adf565b565b600080613ed78686614237565b90506000613ee58585614237565b90506000613ef38383614237565b90506000613f36670de0b6b3a76400006139f5670de0b6b3a7640000600054613f1a6124f4565b600154613f2791906155bc565b613f3191906155bc565b613a6c565b905061339482826138cd565b6001600160a01b038316600090815260076020526040902054811115613fa15760405162461bcd60e51b815260206004820152601460248201527311549497d25394d551919250d251539517d0905360621b60448201526064016108f3565b6001600160a01b038316600090815260076020526040902054613fc49082613a6c565b6001600160a01b038085166000908152600760205260408082209390935590841681522054613ff3908261434f565b6001600160a01b0380841660008181526007602052604090819020939093559151908516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906140479085815260200190565b60405180910390a3505050565b6000806140618487614237565b9050600061406f8685613a6c565b9050600061407d8783614237565b9050600061408b82856149d8565b905061409f81670de0b6b3a7640000613a6c565b9050600080546140ad6124f4565b6001546140ba91906155bc565b6140c491906155bc565b90506140d8670de0b6b3a764000082613a6c565b95506140ed6140e78c846138cd565b87614237565b9b9a5050505050505050505050565b6000806141098685614237565b9050600080546141176124f4565b60015461412491906155bc565b61412e91906155bc565b90506000614144670de0b6b3a764000083613a6c565b905061415085826138cd565b905060006141628a6139f58c8561434f565b9050600061417082866149d8565b90506000614186670de0b6b3a764000083613a6c565b90506141928a826138cd565b9c9b505050505050505050505050565b6000806141af8685614237565b905060006141c8613c4f670de0b6b3a764000084613a6c565b905060006141e2856109ab670de0b6b3a764000085613a6c565b905060006141f08a8361434f565b905060006141fe828c614237565b9050600061420c82876149d8565b9050600061421a828c6138cd565b9050614226818c613a6c565b9d9c50505050505050505050505050565b6000816142755760405162461bcd60e51b815260206004820152600c60248201526b4552525f4449565f5a45524f60a01b60448201526064016108f3565b6000614289670de0b6b3a7640000856155e8565b90508315806142a85750670de0b6b3a76400006142a685836155d4565b145b6142e75760405162461bcd60e51b815260206004820152601060248201526f11549497d1125597d25395115493905360821b60448201526064016108f3565b60006142f46002856155d4565b6142fe90836155bc565b9050818110156143435760405162461bcd60e51b815260206004820152601060248201526f11549497d1125597d25395115493905360821b60448201526064016108f3565b600061134285836155d4565b60008061435c83856155bc565b9050838110156134df5760405162461bcd60e51b815260206004820152601060248201526f4552525f4144445f4f564552464c4f5760801b60448201526064016108f3565b6040516323b872dd60e01b81526000906001600160a01b038516906323b872dd90613b1e908690309087906004016153b4565b613adc81614e6d565b6000806143ea8685614237565b905060006143f8868561434f565b905060006144068288614237565b9050600061441c670de0b6b3a764000085614237565b9050600061442a83836149d8565b90506000614438828d6138cd565b90506000614446828e613a6c565b9050600061445f613c4f670de0b6b3a76400008a613a6c565b9050613c6f826139f5670de0b6b3a764000084613a6c565b6000808061449486600360200201518760015b6020020151614237565b905060006144a9876002602002015187613a6c565b905060006144be886002602002015183614237565b905060006144cc82856149d8565b90506144e081670de0b6b3a7640000613a6c565b9050600080546144ee6124f4565b6001546144fb91906155bc565b61450591906155bc565b8a5190915061452a9061451890846138cd565b6139f5670de0b6b3a764000084613a6c565b9650600061454a88613f318a6109ab670de0b6b3a7640000613f316124f4565b6001600160a01b038a16600090815260056020526040902054909150614570908261434f565b600560008b6001600160a01b03166001600160a01b031681526020019081526020016000208190555060006145b789613f318b6109ab670de0b6b3a7640000600054613a6c565b6001600160a01b038b166000908152600660205260409020549091506145dd908261434f565b6001600160a01b038b166000908152600660205260409020558b5161461a9061460690866138cd565b6139f5670de0b6b3a7640000600154613a6c565b97507f90d9f1d0641138b6407ac37bea3a905d63a371c2d91a484f68d59924634d4ef36146598a613f318c6109ab670de0b6b3a7640000600154613a6c565b604080519182526020820185905281018390526001600160a01b038c16606082015260800160405180910390a150505050505050935093915050565b600080806146ac866001602002015187600361448a565b905060006146cc86613f31886109ab670de0b6b3a7640000613f316124f4565b6001600160a01b0386166000908152600560205260409020549091506146f2908261434f565b60056000876001600160a01b03166001600160a01b0316815260200190815260200160002081905550600061473987613f31896109ab670de0b6b3a7640000600054613a6c565b6001600160a01b03871660009081526006602052604090205490915061475f908261434f565b6001600160a01b03871660009081526006602052604081209190915580546147856124f4565b60015461479291906155bc565b61479c91906155bc565b90507f90d9f1d0641138b6407ac37bea3a905d63a371c2d91a484f68d59924634d4ef36147db89613f318b6109ab670de0b6b3a7640000600154613a6c565b604080519182526020820186905281018490526001600160a01b038916606082015260800160405180910390a1600061481c670de0b6b3a764000083613a6c565b905061482889826138cd565b8a5190915060009061483e906139f5818561434f565b9050600061484c82886149d8565b90506000614862670de0b6b3a764000083613a6c565b90506148758d60026020020151826138cd565b9950896148868d613f31898b6155bc565b995099505050505050505050935093915050565b600c805462010000600160b01b031916620100006001600160a01b038a81169190910291909117909155600280546001600160a01b0319169188169190911790558451600090869082906148f0576148f06156b4565b602002602001015160018190555085600181518110614911576149116156b4565b602090810291909101810151600055600c8054961515600160b01b0260ff60b01b199097169690961795869055600e80548551600380546001600160a01b039283166001600160a01b03199182161790915596840151600480549183169189169190911790558551600d805491831691891691909117905594909201518416951515600160a01b908102959095166001600160a81b0319928316179590951790945550601280549093166201000090940416929092178217908190550460ff169392505050565b60006001831015614a235760405162461bcd60e51b81526020600482015260156024820152744552525f42504f575f424153455f544f4f5f4c4f5760581b60448201526064016108f3565b6001614a38670de0b6b3a764000060026155e8565b614a429190615607565b831115614a8a5760405162461bcd60e51b815260206004820152601660248201527508aa4a4be84a09eaebe8482a68abea89e9ebe90928e960531b60448201526064016108f3565b6000614a9583614edc565b90506000614aa38483613a6c565b90506000614ab986614ab485614efa565b614f0e565b905081614aca579250610e2d915050565b6000614aed8784614ae86402540be400670de0b6b3a76400006155d4565b614f82565b9050614af982826138cd565b979650505050505050565b600080828410614b2357614b188385615607565b600091509150614b34565b614b2d8484615607565b6001915091505b9250929050565b61363c823083613f42565b30600090815260076020526040902054811115614b9c5760405162461bcd60e51b815260206004820152601460248201527311549497d25394d551919250d251539517d0905360621b60448201526064016108f3565b30600090815260076020526040902054614bb69082613a6c565b30600090815260076020526040902055600954614bd39082613a6c565b60095560405181815260009030907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906020015b60405180910390a350565b61363c308383613f42565b670de0b6b3a7640000811015614c665760405162461bcd60e51b815260206004820152600e60248201526d11549497d3525397d5d15251d21560921b60448201526064016108f3565b614c79670de0b6b3a764000060326155e8565b811115614cb95760405162461bcd60e51b815260206004820152600e60248201526d11549497d3505617d5d15251d21560921b60448201526064016108f3565b614cd064e8d4a51000670de0b6b3a76400006155d4565b821015614d115760405162461bcd60e51b815260206004820152600f60248201526e4552525f4d494e5f42414c414e434560881b60448201526064016108f3565b6001600160a01b03831660009081526010602052604090206002015480821115614dad57614d4a601154614d458484613a6c565b61434f565b601155614d60670de0b6b3a764000060326155e8565b6011541115614da85760405162461bcd60e51b815260206004820152601460248201527311549497d3505617d513d5105317d5d15251d21560621b60448201526064016108f3565b614dc9565b80821015614dc957614dc5601154613f318385613a6c565b6011555b6001600160a01b03841660009081526010602052604090206002810183905560030180549084905580841115614e1257614e0d8533614e088785613a6c565b6143a1565b614e66565b80841015614e66576000614e268286613a6c565b90506000614e358260006138cd565b9050614e4b8733614e468585613a6c565b613ae9565b600254614e639088906001600160a01b031683613ae9565b50505b5050505050565b30600090815260076020526040902054614e87908261434f565b30600090815260076020526040902055600954614ea4908261434f565b60095560405181815230906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602001614c07565b6000670de0b6b3a7640000614ef083614efa565b610e2d91906155e8565b6000610e2d670de0b6b3a7640000836155d4565b60008281614f1d600285615674565b614f2f57670de0b6b3a7640000614f31565b815b9050614f3e6002856155d4565b93505b83156115a657614f5182836138cd565b9150614f5e600285615674565b15614f7057614f6d81836138cd565b90505b614f7b6002856155d4565b9350614f41565b6000828180614f9987670de0b6b3a7640000614b04565b9092509050670de0b6b3a764000080600060015b888410615063576000614fc8670de0b6b3a7640000836155e8565b9050600080614fe88a614fe385670de0b6b3a7640000613a6c565b614b04565b91509150614ffa876109ab848c6138cd565b96506150068784614237565b96508661501557505050615063565b871561501f579315935b8015615029579315935b8415615040576150398688613a6c565b955061504d565b61504a868861434f565b95505b505050808061505b90615659565b915050614fad565b50909998505050505050505050565b80356001600160a01b0381168114612d6957600080fd5b8060408101831015610e2d57600080fd5b60008083601f8401126150ac57600080fd5b50813567ffffffffffffffff8111156150c457600080fd5b6020830191508360208260051b8501011115614b3457600080fd5b6000602082840312156150f157600080fd5b6134df82615072565b6000806040838503121561510d57600080fd5b61511683615072565b915061512460208401615072565b90509250929050565b600080600080600080600080610120898b03121561514a57600080fd5b61515389615072565b975061516160208a01615072565b9650604089013567ffffffffffffffff81111561517d57600080fd5b6151898b828c0161509a565b909750955050606089013561519d816156ca565b935060808901356151ad816156ca565b92506151bc8a60a08b01615089565b91506151cb8a60e08b01615089565b90509295985092959890939650565b6000806000606084860312156151ef57600080fd5b6151f884615072565b925061520660208501615072565b9150604084013590509250925092565b6000806040838503121561522957600080fd5b61523283615072565b946020939093013593505050565b600080600080600060a0868803121561525857600080fd5b61526186615072565b94506020860135935061527660408701615072565b94979396509394606081013594506080013592915050565b6000806000606084860312156152a357600080fd5b6152ac84615072565b95602085013595506040909401359392505050565b60008060008060008060c087890312156152da57600080fd5b6152e387615072565b955060208701359450604087013593506152ff60608801615072565b92506080870135915060a087013590509295509295509295565b60006020828403121561532b57600080fd5b81516134df816156ca565b60006020828403121561534857600080fd5b5035919050565b60006020828403121561536157600080fd5b5051919050565b60008060006040848603121561537d57600080fd5b83359250602084013567ffffffffffffffff81111561539b57600080fd5b6153a78682870161509a565b9497909650939450505050565b6001600160a01b039384168152919092166020820152604081019190915260600190565b6020808252825182820181905260009190848201906040850190845b818110156154195783516001600160a01b0316835292840192918401916001016153f4565b50909695505050505050565b600060208083528351808285015260005b8181101561545257858101830151858201604001528201615436565b81811115615464576000604083870101525b50601f01601f1916929092016040019392505050565b60208082526010908201526f4552525f4d41585f494e5f524154494f60801b604082015260600190565b6020808252600f908201526e08aa4a4be9a82a890be82a0a0a49eb608b1b604082015260600190565b6020808252600d908201526c11549497d31253525517d3d555609a1b604082015260600190565b6020808252600c908201526b22a9292fa624a6a4aa2fa4a760a11b604082015260600190565b6020808252600b908201526a4552525f5245454e54525960a81b604082015260600190565b6020808252601190820152704552525f4d41585f4f55545f524154494f60781b604082015260600190565b6020808252600d908201526c11549497d393d517d093d55391609a1b604082015260600190565b60208082526011908201527011549497d393d517d19253905312569151607a1b604082015260600190565b600082198211156155cf576155cf615688565b500190565b6000826155e3576155e361569e565b500490565b600081600019048311821515161561560257615602615688565b500290565b60008282101561561957615619615688565b500390565b600181811c9082168061563257607f821691505b6020821081141561565357634e487b7160e01b600052602260045260246000fd5b50919050565b600060001982141561566d5761566d615688565b5060010190565b6000826156835761568361569e565b500690565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052603260045260246000fd5b8015158114613adc57600080fdfe9d9058fd2f25ccc389fec7720abef0ca83472f5abfafd5f10d37f51e6a0493f3fcda32798d5a9d032f49b37fea876d422f18f6e386e0f07db6029b693624b2c215a8ca63e37b2cff1677df2b6b82d36fcf8a524228bd7a4b4d02d107c28c1e8a8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925a264697066735822122050e05b3a15d209f645981c5602187830783411d60acf6d58ed970e01e78b794664736f6c63430008070033", + "bytecode": "0x60c0604052601360808190527f42616c616e63657220506f6f6c20546f6b656e0000000000000000000000000060a09081526200004091600a91906200008f565b506040805180820190915260038082526210941560ea1b60209092019182526200006d91600b916200008f565b50600c805460ff191660121790553480156200008857600080fd5b5062000172565b8280546200009d9062000135565b90600052602060002090601f016020900481019282620000c157600085556200010c565b82601f10620000dc57805160ff19168380011785556200010c565b828001600101855582156200010c579182015b828111156200010c578251825591602001919060010190620000ef565b506200011a9291506200011e565b5090565b5b808211156200011a57600081556001016200011f565b600181811c908216806200014a57607f821691505b602082108114156200016c57634e487b7160e01b600052602260045260246000fd5b50919050565b615d0780620001826000396000f3fe608060405234801561001057600080fd5b50600436106104285760003560e01c80638201aa3f1161022b578063c070a6d811610130578063dd62ed3e116100b8578063f1b8a9b711610087578063f1b8a9b7146108b1578063f68045a5146108c4578063f8b2cb4f146108cc578063fde924f7146108df578063ff9b1850146108f157600080fd5b8063dd62ed3e1461085d578063e4a28a52146104b0578063ec09302114610896578063f0f13f0b1461089e57600080fd5b8063c8ff1833116100ff578063c8ff18331461082a578063cc77828d14610832578063cd2ed8fb1461083a578063d4cadf6814610842578063d73dd6231461084a57600080fd5b8063c070a6d8146107f9578063c36596a6146104f0578063c44a42831461080c578063c6580d121461082257600080fd5b8063a562ddf0116101b3578063b7b800a411610182578063b7b800a4146107c4578063ba019dab146107cc578063bc063e1a146107d4578063bc694ea2146107dc578063be3bbd2e146107e457600080fd5b8063a562ddf01461078b578063a9059cbb1461079e578063b02f0b73146107b1578063b0e0d136146107c457600080fd5b80639381cd2b116101fa5780639381cd2b1461074d578063948d8ce61461075557806395d89b4114610768578063992e2a9214610770578063a3b3a16d1461077857600080fd5b80638201aa3f14610718578063867378c51461072b5780638d4e408314610733578063936c34771461074557600080fd5b8063380376a6116103315780635e123add116102b9578063703305181161028857806370330518146106a457806370a08231146106b757806376c7a3c7146106e05780637c5e9ea4146106e857806380ca73081461071057600080fd5b80635e123add1461066e57806366188463146106765780636d06dfa014610689578063700dd7e81461069c57600080fd5b806346ab38f11161030057806346ab38f11461061b57806349e9350f1461062e5780634df947d0146106375780634f69c0d4146106485780635db342771461065b57600080fd5b8063380376a6146105d0578063392e53cd146105e35780633950b3fd146105f5578063430ed5d01461060857600080fd5b8063218b5382116103b4578063300621921161038357806330062192146105515780633018205f14610571578063313ce5671461058857806331e2761b1461059d57806334e19907146105bd57600080fd5b8063218b5382146104f057806323b872dd146104ff5780632ea07d8a146105125780632f37b6241461052557600080fd5b806309a3bbe4116103fb57806309a3bbe4146104b057806309ef3f5b146104b857806315e84af9146104cd57806318160ddd146104e0578063189d00ca146104e857600080fd5b806302c967481461042d57806304ad79541461045357806306fdde0314610478578063095ea7b31461048d575b600080fd5b61044061043b366004615770565b610904565b6040519081526020015b60405180910390f35b6003546001600160a01b03165b6040516001600160a01b03909116815260200161044a565b610480610da8565b60405161044a9190615968565b6104a061049b3660046156f8565b610e3a565b604051901515815260200161044a565b610440610e95565b6104cb6104c63660046157a3565b610eab565b005b6104406104db3660046155dc565b6110a4565b600954610440565b610440611188565b610440670de0b6b3a764000081565b6104a061050d3660046156bc565b61119f565b6104406105203660046156bc565b6112f3565b6104a06105333660046155c1565b6001600160a01b031660009081526010602052604090205460ff1690565b61044061055f3660046155c1565b60056020526000908152604090205481565b600c546201000090046001600160a01b0316610460565b600c5460405160ff909116815260200161044a565b6104406105ab3660046155c1565b60066020526000908152604090205481565b6104cb6105cb366004615818565b6113ae565b6104406105de3660046156bc565b6114f7565b601254600160a01b900460ff166104a0565b6104406106033660046156f8565b6115a8565b6104406106163660046156f8565b611610565b610440610629366004615770565b611670565b61044060005481565b6004546001600160a01b0316610460565b6104cb61065636600461584a565b611ab9565b610440610669366004615770565b611ce0565b600054610440565b6104a06106843660046156f8565b6120e4565b610440610697366004615770565b6121ba565b6104406125d9565b6104cb6106b23660046155c1565b612662565b6104406106c53660046155c1565b6001600160a01b031660009081526007602052604090205490565b61044061270f565b6106fb6106f6366004615722565b612724565b6040805192835260208301919091520161044a565b6104cb612a75565b6106fb610726366004615722565b612c5e565b610440612f93565b600e54600160a01b900460ff166104a0565b610440612faa565b610440612fdc565b6104406107633660046155c1565b612fef565b610480613075565b610440613084565b6104406107863660046156f8565b6130a2565b600d54610460906001600160a01b031681565b6104a06107ac3660046156f8565b613102565b6104cb6107bf36600461584a565b613118565b610440600281565b610440600181565b610440613374565b610440613387565b6107ec6133a6565b60405161044a91906158fe565b6104a061080736600461560f565b613459565b6108146136c9565b60405161044a929190615911565b610440600081565b610814613839565b6107ec61399e565b600f54610440565b600154610440565b6104a06108583660046156f8565b6139c9565b61044061086b3660046155dc565b6001600160a01b03918216600090815260086020908152604080832093909416825291909152205490565b610440613a3c565b600e54610460906001600160a01b031681565b6104406108bf3660046155c1565b613a4f565b6104cb613ae3565b6104406108da3660046155c1565b613cc8565b600c54600160b01b900460ff166104a0565b6104406108ff3660046156f8565b613d4a565b600c54600090610100900460ff16156109385760405162461bcd60e51b815260040161092f90615a5d565b60405180910390fd5b600c805461ff001916610100179055600e54600160a01b900460ff166109705760405162461bcd60e51b815260040161092f90615ad4565b6001600160a01b03841660009081526010602052604090205460ff166109a85760405162461bcd60e51b815260040161092f90615aad565b6001600160a01b03841660009081526010602052604090206003908101546109ec916109dc90670de0b6b3a7640000615b17565b6109e7906001615aff565b613daa565b831115610a0b5760405162461bcd60e51b815260040161092f90615a82565b6001600160a01b038416600090815260106020526040902060038101546002820154600954601154610a409392919088613e85565b915081610a5f5760405162461bcd60e51b815260040161092f906159e7565b82821115610a7f5760405162461bcd60e51b815260040161092f90615a37565b610a8d816003015485613f49565b60038201556000610a9e8382613daa565b604080518781524260208201529192506001600160a01b038816913391600080516020615c32833981519152910160405180910390a3604051838152600080516020615c728339815191529060200160405180910390a1610aff3384613fa6565b610b11610b0c8483613f49565b613fb0565b600254610b27906001600160a01b031682613fbc565b610b32863387613fc6565b6003546000906001600160a01b0388811691161415610b5d57506004546001600160a01b0316610b6b565b506003546001600160a01b03165b60125460035460405163efd4810360e01b81526001600160a01b039283169263efd4810392610ba392911690859089906004016158da565b60206040518083038186803b158015610bbb57600080fd5b505afa158015610bcf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bf391906157fb565b151560011415610d9357600380546001600160a01b03166000908152601060205260408120918201546002830154600954601154610c34939291908a614094565b9050610c44826003015482613f49565b6003830155610c54866000613daa565b600c54604080518481524260208201529296506001600160a01b0386811693620100009093041691600080516020615c32833981519152910160405180910390a3600c54610cb1906201000090046001600160a01b031687613fa6565b610cbe610b0c8786613f49565b600254610cd4906001600160a01b031685613fbc565b600c54610cf29084906201000090046001600160a01b031683613fc6565b6012546003546040516307b01ab360e41b81526001600160a01b03918216600482015285821660248201526044810184905260648101899052911690637b01ab3090608401600060405180830381600087803b158015610d5157600080fd5b505af1158015610d65573d6000803e3d6000fd5b50505050600080516020615c5283398151915286604051610d8891815260200190565b60405180910390a150505b505050600c805461ff00191690559392505050565b6060600a8054610db790615b61565b80601f0160208091040260200160405190810160405280929190818152602001828054610de390615b61565b8015610e305780601f10610e0557610100808354040283529160200191610e30565b820191906000526020600020905b815481529060010190602001808311610e1357829003601f168201915b5050505050905090565b3360008181526008602090815260408083206001600160a01b03871680855292528083208590555191929091600080516020615cb283398151915290610e839086815260200190565b60405180910390a35060015b92915050565b610ea8670de0b6b3a76400006032615b2b565b81565b600c546201000090046001600160a01b03163314610f045760405162461bcd60e51b815260206004820152601660248201527522a9292fa4a72b20a624a22fa1a7a72a2927a62622a960511b604482015260640161092f565b6003546001600160a01b03878116911614610f615760405162461bcd60e51b815260206004820152601d60248201527f4552525f494e56414c49445f44415441544f4b454e5f41444452455353000000604482015260640161092f565b6004546001600160a01b03848116911614610fbe5760405162461bcd60e51b815260206004820152601d60248201527f4552525f494e56414c49445f42415345544f4b454e5f41444452455353000000604482015260640161092f565b610fc986868661415e565b604080518681524260208201526001600160a01b038816913391600080516020615c92833981519152910160405180910390a361100783838361415e565b604080518381524260208201526001600160a01b038516913391600080516020615c92833981519152910160405180910390a361104261434d565b6040805183815260208101839052908101869052606081018590526001600160a01b03808816919085169033907fbece8b4dcdbe446dd65a9288154698e067e3e91de17a1a408c2f531b9f845d739060800160405180910390a4505050505050565b600c54600090610100900460ff16156110cf5760405162461bcd60e51b815260040161092f90615a5d565b6001600160a01b03831660009081526010602052604090205460ff166111075760405162461bcd60e51b815260040161092f90615aad565b6001600160a01b03821660009081526010602052604090205460ff1661113f5760405162461bcd60e51b815260040161092f90615aad565b6001600160a01b0380841660009081526010602052604080822092851682529020600380830154600280850154928401549084015461117f9391906143ac565b95945050505050565b610ea86402540be400670de0b6b3a7640000615b17565b6000336001600160a01b03851614806111db57506001600160a01b03841660009081526008602090815260408083203384529091529020548211155b61121f5760405162461bcd60e51b815260206004820152601560248201527422a9292fa12a27a5a2a72fa120a22fa1a0a62622a960591b604482015260640161092f565b61122a848484614424565b336001600160a01b0385161480159061126857506001600160a01b038416600090815260086020908152604080832033845290915290205460001914155b156112e9576001600160a01b038416600090815260086020908152604080832033845290915290205461129b9083613f49565b6001600160a01b038581166000908152600860209081526040808320338085529083529281902085905551938452918616929091600080516020615cb2833981519152910160405180910390a35b5060019392505050565b6001600160a01b03831660009081526010602052604081205460ff1661132b5760405162461bcd60e51b815260040161092f90615aad565b6001600160a01b03831660009081526010602052604090205460ff166113635760405162461bcd60e51b815260040161092f90615aad565b6001600160a01b038085166000908152601060205260408082209286168252902060038083015460028085015492840154908401546113a493919088614536565b9695505050505050565b600e54600160a01b900460ff16156113fb5760405162461bcd60e51b815260206004820152601060248201526f11549497d254d7d1925390531256915160821b604482015260640161092f565b600c546201000090046001600160a01b031633146114505760405162461bcd60e51b815260206004820152601260248201527122a9292fa727aa2fa1a7a72a2927a62622a960711b604482015260640161092f565b611465620f4240670de0b6b3a7640000615b17565b8110156114a25760405162461bcd60e51b815260206004820152600b60248201526a4552525f4d494e5f46454560a81b604482015260640161092f565b6114b5600a670de0b6b3a7640000615b17565b8111156114f25760405162461bcd60e51b815260206004820152600b60248201526a4552525f4d41585f46454560a81b604482015260640161092f565b600155565b6001600160a01b03831660009081526010602052604081205460ff1661152f5760405162461bcd60e51b815260040161092f90615aad565b6001600160a01b03831660009081526010602052604090205460ff166115675760405162461bcd60e51b815260040161092f90615aad565b6001600160a01b038085166000908152601060205260408082209286168252902060038083015460028085015492840154908401546113a4939190886145de565b6001600160a01b03821660009081526010602090815260408083208151608081018352815460ff16151581526001820154938101939093526002810154918301829052600301546060830181905260095460115461160893919087614684565b949350505050565b6001600160a01b03821660009081526010602090815260408083208151608081018352815460ff16151581526001820154938101939093526002810154918301829052600301546060830181905260095460115461160893919087614094565b600c54600090610100900460ff161561169b5760405162461bcd60e51b815260040161092f90615a5d565b600c805461ff001916610100179055600e54600160a01b900460ff166116d35760405162461bcd60e51b815260040161092f90615ad4565b6001600160a01b03841660009081526010602052604090205460ff1661170b5760405162461bcd60e51b815260040161092f90615aad565b6001600160a01b0384166000908152601060205260409020600381015460028201546009546011546117409392919088614094565b9150828210156117625760405162461bcd60e51b815260040161092f90615a10565b6001600160a01b0385166000908152601060205260409020600390810154611796916109dc90670de0b6b3a7640000615b17565b8211156117b55760405162461bcd60e51b815260040161092f90615a82565b6117c3816003015483613f49565b600382015560006117d48582613daa565b604080518581524260208201529192506001600160a01b038816913391600080516020615c32833981519152910160405180910390a3604051858152600080516020615c728339815191529060200160405180910390a16118353386613fa6565b611842610b0c8683613f49565b600254611858906001600160a01b031682613fbc565b611863863385613fc6565b6003546000906001600160a01b038881169116141561188e57506004546001600160a01b031661189c565b506003546001600160a01b03165b60125460035460405163efd4810360e01b81526001600160a01b039283169263efd48103926118d49291169085908b906004016158da565b60206040518083038186803b1580156118ec57600080fd5b505afa158015611900573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061192491906157fb565b151560011415610d9357600380546001600160a01b03166000908152601060205260408120918201546002830154600954601154611965939291908c614094565b9050611975826003015482613f49565b6003830155611985886000613daa565b600c54604080518481524260208201529296506001600160a01b0386811693620100009093041691600080516020615c32833981519152910160405180910390a3600c546119e2906201000090046001600160a01b031689613fa6565b6119ef610b0c8986613f49565b600254611a05906001600160a01b031685613fbc565b600c54611a239084906201000090046001600160a01b031683613fc6565b6012546003546040516307b01ab360e41b81526001600160a01b039182166004820152858216602482015260448101849052606481018b9052911690637b01ab3090608401600060405180830381600087803b158015611a8257600080fd5b505af1158015611a96573d6000803e3d6000fd5b50505050600080516020615c5283398151915288604051610d8891815260200190565b600c54610100900460ff1615611ae15760405162461bcd60e51b815260040161092f90615a5d565b600c805461ff001916610100179055600e54600160a01b900460ff16611b195760405162461bcd60e51b815260040161092f90615ad4565b6000611b2460095490565b90506000611b328583614719565b905080611b515760405162461bcd60e51b815260040161092f906159e7565b60005b600f54811015611c99576000600f8281548110611b7357611b73615bf7565b60009182526020808320909101546001600160a01b03168083526010909152604082206003015490925090611ba88583613daa565b905080611bc75760405162461bcd60e51b815260040161092f906159e7565b878785818110611bd957611bd9615bf7565b90506020020135811115611bff5760405162461bcd60e51b815260040161092f90615a37565b6001600160a01b038316600090815260106020526040902060030154611c259082614831565b6001600160a01b038416600081815260106020526040908190206003019290925590513390600080516020615c9283398151915290611c709085904290918252602082015260400190565b60405180910390a3611c83833383614883565b5050508080611c9190615b9c565b915050611b54565b50611ca3856148b6565b611cad3386613fbc565b604051858152600080516020615c728339815191529060200160405180910390a15050600c805461ff0019169055505050565b600c54600090610100900460ff1615611d0b5760405162461bcd60e51b815260040161092f90615a5d565b600c805461ff001916610100179055600e54600160a01b900460ff16611d435760405162461bcd60e51b815260040161092f90615ad4565b6001600160a01b03841660009081526010602052604090205460ff16611d7b5760405162461bcd60e51b815260040161092f90615aad565b6001600160a01b038416600090815260106020526040902060030154611dae906109e76002670de0b6b3a7640000615b17565b831115611dcd5760405162461bcd60e51b815260040161092f906159bd565b6001600160a01b038416600090815260106020526040902060038101546002820154600954601154611e029392919088614684565b915082821015611e245760405162461bcd60e51b815260040161092f90615a10565b611e32816003015485614831565b6003820155604080518581524260208201526001600160a01b038716913391600080516020615c92833981519152910160405180910390a3604051828152600080516020615c728339815191529060200160405180910390a1611e94826148b6565b611e9e3383613fbc565b611ea9853386614883565b600380546001600160a01b031660009081526010602052604081209182015460028301546009546011548493611ee39390929091896148bf565b6003549091506001600160a01b0389811691161415611f0f576004546001600160a01b03169150611f1e565b6003546001600160a01b031691505b6012546003546040516326b1f01f60e01b81526001600160a01b03928316926326b1f01f92611f5692911690869086906004016158da565b60206040518083038186803b158015611f6e57600080fd5b505afa158015611f82573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fa691906157fb565b1515600114156120ce576012546003546040516399039fcf60e01b81526001600160a01b03928316926399039fcf92611fe892911690869086906004016158da565b600060405180830381600087803b15801561200257600080fd5b505af1158015612016573d6000803e3d6000fd5b50505050612028836003015482614831565b6003840155600c54604080518381524260208201526001600160a01b03858116936201000090041691600080516020615c92833981519152910160405180910390a3604051858152600080516020615c528339815191529060200160405180910390a1612094856148b6565b600c546120b0906201000090046001600160a01b031686613fbc565b600c546120ce9083906201000090046001600160a01b031683614883565b50505050600c805461ff00191690559392505050565b3360009081526008602090815260408083206001600160a01b038616845290915281205480831115612139573360009081526008602090815260408083206001600160a01b0388168452909152812055612168565b6121438184613f49565b3360009081526008602090815260408083206001600160a01b03891684529091529020555b3360008181526008602090815260408083206001600160a01b03891680855290835292819020549051908152919291600080516020615cb2833981519152910160405180910390a35060019392505050565b600c54600090610100900460ff16156121e55760405162461bcd60e51b815260040161092f90615a5d565b600c805461ff001916610100179055600e54600160a01b900460ff1661221d5760405162461bcd60e51b815260040161092f90615ad4565b6001600160a01b03841660009081526010602052604090205460ff166122555760405162461bcd60e51b815260040161092f90615aad565b6001600160a01b03841660009081526010602052604090206003810154600282015460095460115461228a93929190886148bf565b9150816122a95760405162461bcd60e51b815260040161092f906159e7565b828211156122c95760405162461bcd60e51b815260040161092f90615a37565b6001600160a01b0385166000908152601060205260409020600301546122fc906109e76002670de0b6b3a7640000615b17565b82111561231b5760405162461bcd60e51b815260040161092f906159bd565b612329816003015483614831565b6003820155604080518381524260208201526001600160a01b038716913391600080516020615c92833981519152910160405180910390a3604051848152600080516020615c728339815191529060200160405180910390a161238b846148b6565b6123953385613fbc565b6123a0853384614883565b600380546001600160a01b031660009081526010602052604081209182015460028301546009546011546123d7939291908a6148bf565b6003549091506000906001600160a01b038981169116141561240557506004546001600160a01b0316612413565b506003546001600160a01b03165b6012546003546040516326b1f01f60e01b81526001600160a01b03928316926326b1f01f9261244b92911690859087906004016158da565b60206040518083038186803b15801561246357600080fd5b505afa158015612477573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061249b91906157fb565b1515600114156120ce576012546003546040516399039fcf60e01b81526001600160a01b03928316926399039fcf926124dd92911690859087906004016158da565b600060405180830381600087803b1580156124f757600080fd5b505af115801561250b573d6000803e3d6000fd5b5050505061251d836003015483614831565b6003840155600c54604080518481524260208201526001600160a01b03848116936201000090041691600080516020615c92833981519152910160405180910390a3612568876148b6565b600c54612584906201000090046001600160a01b031688613fbc565b600c546125a29082906201000090046001600160a01b031684614883565b604051878152600080516020615c528339815191529060200160405180910390a150505050600c805461ff00191690559392505050565b60025460048054604051637c0aa57760e11b81526001600160a01b0391821692810192909252600092169063f8154aee9060240160206040518083038186803b15801561262557600080fd5b505afa158015612639573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061265d9190615831565b905090565b600d546001600160a01b031633146126b45760405162461bcd60e51b815260206004820152601560248201527427a7262c9026a0a925a2aa1021a7a62622a1aa27a960591b604482015260640161092f565b600d80546001600160a01b0319166001600160a01b0383169081179091556040805133815260208101929092527f82aaf1a11850bc9b5eb1b7db8b4ad08629911d970a4d7539875938c4017e59b8910160405180910390a150565b610ea8620f4240670de0b6b3a7640000615b17565b600c546000908190610100900460ff16156127515760405162461bcd60e51b815260040161092f90615a5d565b600c805461ff001916610100179055600e54600160a01b900460ff166127895760405162461bcd60e51b815260040161092f90615ad4565b6001600160a01b03871660009081526010602052604090205460ff166127c15760405162461bcd60e51b815260040161092f90615aad565b6001600160a01b03851660009081526010602052604090205460ff166127f95760405162461bcd60e51b815260040161092f90615aad565b6001600160a01b0380881660009081526010602052604080822092881682529020600380820154612836916109dc90670de0b6b3a7640000615b17565b8611156128555760405162461bcd60e51b815260040161092f90615a82565b600061287383600301548460020154846003015485600201546143ac565b9050858111156128bb5760405162461bcd60e51b81526020600482015260136024820152724552525f4241445f4c494d49545f505249434560681b604482015260640161092f565b6000806040518060800160405280866003015481526020018660020154815260200185600301548152602001856002015481525090506128fc818a8e614959565b90975091508a8711156129215760405162461bcd60e51b815260040161092f90615a37565b61292f856003015483614831565b856003018190555061294584600301548a613f49565b60038086018290558601546002808801549087015461296493906143ac565b9550828610156129865760405162461bcd60e51b815260040161092f906159e7565b878611156129c85760405162461bcd60e51b815260206004820152600f60248201526e4552525f4c494d49545f505249434560881b604482015260640161092f565b6129d2878a614719565b8311156129f15760405162461bcd60e51b815260040161092f906159e7565b60408051888152602081018b9052428183015290516001600160a01b038c811692908f169133917f50ef2fc267012b5c84b56835f16ffd5331ac5a151a3760d74908721ba78b0efe919081900360600190a4612a4e8c3389614883565b612a598a338b613fc6565b5050505050600c805461ff001916905590969095509350505050565b6000612a7f6133a6565b905060005b8151811015612c5a57600060066000848481518110612aa557612aa5615bf7565b60200260200101516001600160a01b03166001600160a01b03168152602001908152602001600020549050600060066000858581518110612ae857612ae8615bf7565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002081905550828281518110612b2657612b26615bf7565b6020908102919091010151600d5460405163a9059cbb60e01b81526001600160a01b0391821660048201526024810184905291169063a9059cbb90604401602060405180830381600087803b158015612b7e57600080fd5b505af1158015612b92573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612bb691906157fb565b507f6b98b886762529d8027f347356f9ec147e1735888054ace831c0e3de7983ab3d33600d60009054906101000a90046001600160a01b0316858581518110612c0157612c01615bf7565b602002602001015184604051612c3f94939291906001600160a01b039485168152928416602084015292166040820152606081019190915260800190565b60405180910390a15080612c5281615b9c565b915050612a84565b5050565b600c546000908190610100900460ff1615612c8b5760405162461bcd60e51b815260040161092f90615a5d565b600c805461ff001916610100179055600e54600160a01b900460ff16612cc35760405162461bcd60e51b815260040161092f90615ad4565b6001600160a01b03871660009081526010602052604090205460ff16612cfb5760405162461bcd60e51b815260040161092f90615aad565b6001600160a01b03851660009081526010602052604090205460ff16612d335760405162461bcd60e51b815260040161092f90615aad565b6001600160a01b03808816600090815260106020526040808220928816825290206003820154612d70906109e76002670de0b6b3a7640000615b17565b881115612d8f5760405162461bcd60e51b815260040161092f906159bd565b6000612dad83600301548460020154846003015485600201546143ac565b905085811115612df55760405162461bcd60e51b81526020600482015260136024820152724552525f4241445f4c494d49545f505249434560681b604482015260640161092f565b600080604051806080016040528086600301548152602001866002015481526020018560030154815260200185600201548152509050612e36818c8e614b77565b909750915088871015612e5b5760405162461bcd60e51b815260040161092f90615a10565b612e69856003015483614831565b8560030181905550612e7f846003015488613f49565b600380860182905586015460028088015490870154612e9e93906143ac565b955082861015612ec05760405162461bcd60e51b815260040161092f906159e7565b87861115612f025760405162461bcd60e51b815260206004820152600f60248201526e4552525f4c494d49545f505249434560881b604482015260640161092f565b612f0c8b88614719565b831115612f2b5760405162461bcd60e51b815260040161092f906159e7565b604080518c815260208101899052428183015290516001600160a01b038c811692908f169133917f50ef2fc267012b5c84b56835f16ffd5331ac5a151a3760d74908721ba78b0efe919081900360600190a4612f888c338d614883565b612a598a3389613fc6565b610ea864e8d4a51000670de0b6b3a7640000615b17565b600c54600090610100900460ff1615612fd55760405162461bcd60e51b815260040161092f90615a5d565b5060115490565b610ea8670de0b6b3a76400006064615b2b565b600c54600090610100900460ff161561301a5760405162461bcd60e51b815260040161092f90615a5d565b6001600160a01b03821660009081526010602052604090205460ff166130525760405162461bcd60e51b815260040161092f90615aad565b506001600160a01b0381166000908152601060205260409020600201545b919050565b6060600b8054610db790615b61565b6130976003670de0b6b3a7640000615b17565b610ea8906001615aff565b6001600160a01b03821660009081526010602090815260408083208151608081018352815460ff16151581526001820154938101939093526002810154918301829052600301546060830181905260095460115461160893919087613e85565b600061310f338484614424565b50600192915050565b600c54610100900460ff16156131405760405162461bcd60e51b815260040161092f90615a5d565b600c805461ff001916610100179055600e54600160a01b900460ff166131785760405162461bcd60e51b815260040161092f90615ad4565b600061318360095490565b90506000613192856000613daa565b905060006131a08683613f49565b905060006131ae8285614719565b9050806131cd5760405162461bcd60e51b815260040161092f906159e7565b6131d73388613fa6565b6002546131ed906001600160a01b031684613fbc565b6131f682613fb0565b60005b600f5481101561333e576000600f828154811061321857613218615bf7565b60009182526020808320909101546001600160a01b0316808352601090915260408220600301549092509061324d8583613daa565b90508061326c5760405162461bcd60e51b815260040161092f906159e7565b89898581811061327e5761327e615bf7565b905060200201358110156132a45760405162461bcd60e51b815260040161092f90615a10565b6001600160a01b0383166000908152601060205260409020600301546132ca9082613f49565b6001600160a01b038416600081815260106020526040908190206003019290925590513390600080516020615c32833981519152906133159085904290918252602082015260400190565b60405180910390a3613328833383613fc6565b505050808061333690615b9c565b9150506131f9565b50604051878152600080516020615c728339815191529060200160405180910390a15050600c805461ff00191690555050505050565b610ea8600a670de0b6b3a7640000615b17565b600161339c670de0b6b3a76400006002615b2b565b610ea89190615b4a565b600c54606090610100900460ff16156133d15760405162461bcd60e51b815260040161092f90615a5d565b600e54600160a01b900460ff166133fa5760405162461bcd60e51b815260040161092f90615ad4565b600f805480602002602001604051908101604052809291908181526020018280548015610e3057602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311613432575050505050905090565b601254600090600160a01b900460ff16156134b65760405162461bcd60e51b815260206004820152601760248201527f4552525f414c52454144595f494e495449414c495a4544000000000000000000604482015260640161092f565b6001600160a01b03891661350c5760405162461bcd60e51b815260206004820152601e60248201527f4552525f494e56414c49445f434f4e54524f4c4c45525f414444524553530000604482015260640161092f565b6001600160a01b0388166135625760405162461bcd60e51b815260206004820152601b60248201527f4552525f494e56414c49445f464143544f52595f414444524553530000000000604482015260640161092f565b613577620f4240670de0b6b3a7640000615b17565b8787600081811061358a5761358a615bf7565b9050602002013510156135cd5760405162461bcd60e51b815260206004820152600b60248201526a4552525f4d494e5f46454560a81b604482015260640161092f565b6135e0600a670de0b6b3a7640000615b17565b878760008181106135f3576135f3615bf7565b9050602002013511156136365760405162461bcd60e51b815260206004820152600b60248201526a4552525f4d41585f46454560a81b604482015260640161092f565b6136bc8989898980806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250506040805180820182528c93508b9250908a9060029083908390808284376000920191909152505060408051808201825291508a906002908390839080828437600092019190915250614d7c915050565b9998505050505050505050565b60608060006136d66133a6565b90506000815167ffffffffffffffff8111156136f4576136f4615c0d565b60405190808252806020026020018201604052801561371d578160200160208202803683370190505b5090506000825167ffffffffffffffff81111561373c5761373c615c0d565b604051908082528060200260200182016040528015613765578160200160208202803683370190505b50905060005b835181101561382e5783818151811061378657613786615bf7565b60200260200101518382815181106137a0576137a0615bf7565b60200260200101906001600160a01b031690816001600160a01b031681525050600660008583815181106137d6576137d6615bf7565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020016000205482828151811061381157613811615bf7565b60209081029190910101528061382681615b9c565b91505061376b565b509094909350915050565b60608060006138466133a6565b90506000815167ffffffffffffffff81111561386457613864615c0d565b60405190808252806020026020018201604052801561388d578160200160208202803683370190505b5090506000825167ffffffffffffffff8111156138ac576138ac615c0d565b6040519080825280602002602001820160405280156138d5578160200160208202803683370190505b50905060005b835181101561382e578381815181106138f6576138f6615bf7565b602002602001015183828151811061391057613910615bf7565b60200260200101906001600160a01b031690816001600160a01b0316815250506005600085838151811061394657613946615bf7565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020016000205482828151811061398157613981615bf7565b60209081029190910101528061399681615b9c565b9150506138db565b600c54606090610100900460ff16156133fa5760405162461bcd60e51b815260040161092f90615a5d565b3360009081526008602090815260408083206001600160a01b03861684529091528120546139f79083614831565b3360008181526008602090815260408083206001600160a01b03891680855290835292819020859055519384529092600080516020615cb28339815191529101610e83565b610ea86002670de0b6b3a7640000615b17565b600c54600090610100900460ff1615613a7a5760405162461bcd60e51b815260040161092f90615a5d565b6001600160a01b03821660009081526010602052604090205460ff16613ab25760405162461bcd60e51b815260040161092f90615aad565b6001600160a01b038216600090815260106020526040902060020154601154613adc908290614719565b9392505050565b6000613aed6133a6565b905060005b8151811015612c5a57600060056000848481518110613b1357613b13615bf7565b60200260200101516001600160a01b03166001600160a01b03168152602001908152602001600020549050600060056000858581518110613b5657613b56615bf7565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002081905550828281518110613b9457613b94615bf7565b6020908102919091010151600e5460405163a9059cbb60e01b81526001600160a01b0391821660048201526024810184905291169063a9059cbb90604401602060405180830381600087803b158015613bec57600080fd5b505af1158015613c00573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613c2491906157fb565b507fe8e83bbe0f2a413d8e79dcb9ef4143cd967143e9d6b93c91d002c7eefdc507cc33600e60009054906101000a90046001600160a01b0316858581518110613c6f57613c6f615bf7565b602002602001015184604051613cad94939291906001600160a01b039485168152928416602084015292166040820152606081019190915260800190565b60405180910390a15080613cc081615b9c565b915050613af2565b600c54600090610100900460ff1615613cf35760405162461bcd60e51b815260040161092f90615a5d565b6001600160a01b03821660009081526010602052604090205460ff16613d2b5760405162461bcd60e51b815260040161092f90615aad565b506001600160a01b031660009081526010602052604090206003015490565b6001600160a01b03821660009081526010602090815260408083208151608081018352815460ff161515815260018201549381019390935260028101549183018290526003015460608301819052600954601154611608939190876148bf565b600080613db78385615b2b565b9050831580613dce575082613dcc8583615b17565b145b613e0d5760405162461bcd60e51b815260206004820152601060248201526f4552525f4d554c5f4f564552464c4f5760801b604482015260640161092f565b6000613e226002670de0b6b3a7640000615b17565b613e2c9083615aff565b905081811015613e715760405162461bcd60e51b815260206004820152601060248201526f4552525f4d554c5f4f564552464c4f5760801b604482015260640161092f565b60006113a4670de0b6b3a764000083615b17565b600080613e928685614719565b90506000613ea8670de0b6b3a764000083613f49565b90506000613eb882600154613daa565b90506000613ed786613ed2670de0b6b3a764000085613f49565b614719565b90506000613ee58b83613f49565b90506000613ef3828d614719565b90506000613f018288614eba565b90506000613f0f828d613daa565b90506000613f1d8d83613f49565b9050613f3681613ed2670de0b6b3a76400006000613f49565b9f9e505050505050505050505050505050565b6000806000613f588585614fe6565b915091508015613f9e5760405162461bcd60e51b81526020600482015260116024820152704552525f5355425f554e444552464c4f5760781b604482015260640161092f565b509392505050565b612c5a828261501d565b613fb981615028565b50565b612c5a82826150f4565b60405163a9059cbb60e01b81526001600160a01b038381166004830152602482018390526000919085169063a9059cbb906044015b602060405180830381600087803b15801561401557600080fd5b505af1158015614029573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061404d91906157fb565b90508061408e5760405162461bcd60e51b815260206004820152600f60248201526e4552525f45524332305f46414c534560881b604482015260640161092f565b50505050565b6000806140a18685614719565b905060006140bc846109e7670de0b6b3a76400006000613f49565b905060006140ca8783613f49565b905060006140d88289614719565b905060006140f7826140f2670de0b6b3a764000088614719565b614eba565b90506000614105828d613daa565b905060006141138d83613f49565b9050600061413461412c670de0b6b3a76400008a613f49565b600154613daa565b905061414c826109e7670de0b6b3a764000084613f49565b9e9d5050505050505050505050505050565b600c546201000090046001600160a01b031633146141b35760405162461bcd60e51b815260206004820152601260248201527122a9292fa727aa2fa1a7a72a2927a62622a960711b604482015260640161092f565b6001600160a01b03831660009081526010602052604090205460ff161561420b5760405162461bcd60e51b815260206004820152600c60248201526b11549497d254d7d093d5539160a21b604482015260640161092f565b600e54600160a01b900460ff16156142585760405162461bcd60e51b815260206004820152601060248201526f11549497d254d7d1925390531256915160821b604482015260640161092f565b600f5460021161429b5760405162461bcd60e51b815260206004820152600e60248201526d4552525f4d41585f544f4b454e5360901b604482015260640161092f565b604080516080810182526001808252600f805460208085019182526000858701818152606087018281526001600160a01b038c1680845260109094529782209651875460ff1916901515178755925186860155915160028601559451600390940193909355805491820181559091527f8d1108e10bcb7c27dddfc02ed9d693a074039d026cf4ea4240b40f7d581ac8020180546001600160a01b03191690911790556143488383836150ff565b505050565b600e805460ff60a01b1916600160a01b179055600c805460ff60b01b1916600160b01b17905561438e614389670de0b6b3a76400006064615b2b565b6148b6565b6143aa336143a5670de0b6b3a76400006064615b2b565b613fbc565b565b6000806143b98686614719565b905060006143c78585614719565b905060006143d58383614719565b90506000614418670de0b6b3a7640000613ed2670de0b6b3a76400006000546143fc6125d9565b6001546144099190615aff565b6144139190615aff565b613f49565b90506136bc8282613daa565b6001600160a01b0383166000908152600760205260409020548111156144835760405162461bcd60e51b815260206004820152601460248201527311549497d25394d551919250d251539517d0905360621b604482015260640161092f565b6001600160a01b0383166000908152600760205260409020546144a69082613f49565b6001600160a01b0380851660009081526007602052604080822093909355908416815220546144d59082614831565b6001600160a01b0380841660008181526007602052604090819020939093559151908516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906145299085815260200190565b60405180910390a3505050565b6000806145438487614719565b905060006145518685613f49565b9050600061455f8783614719565b9050600061456d8285614eba565b905061458181670de0b6b3a7640000613f49565b90506000805461458f6125d9565b60015461459c9190615aff565b6145a69190615aff565b90506145ba670de0b6b3a764000082613f49565b95506145cf6145c98c84613daa565b87614719565b9b9a5050505050505050505050565b6000806145eb8685614719565b9050600080546145f96125d9565b6001546146069190615aff565b6146109190615aff565b90506000614626670de0b6b3a764000083613f49565b90506146328582613daa565b905060006146448a613ed28c85614831565b905060006146528286614eba565b90506000614668670de0b6b3a764000083613f49565b90506146748a82613daa565b9c9b505050505050505050505050565b6000806146918685614719565b905060006146aa61412c670de0b6b3a764000084613f49565b905060006146c4856109e7670de0b6b3a764000085613f49565b905060006146d28a83614831565b905060006146e0828c614719565b905060006146ee8287614eba565b905060006146fc828c613daa565b9050614708818c613f49565b9d9c50505050505050505050505050565b6000816147575760405162461bcd60e51b815260206004820152600c60248201526b4552525f4449565f5a45524f60a01b604482015260640161092f565b600061476b670de0b6b3a764000085615b2b565b905083158061478a5750670de0b6b3a76400006147888583615b17565b145b6147c95760405162461bcd60e51b815260206004820152601060248201526f11549497d1125597d25395115493905360821b604482015260640161092f565b60006147d6600285615b17565b6147e09083615aff565b9050818110156148255760405162461bcd60e51b815260206004820152601060248201526f11549497d1125597d25395115493905360821b604482015260640161092f565b60006113a48583615b17565b60008061483e8385615aff565b905083811015613adc5760405162461bcd60e51b815260206004820152601060248201526f4552525f4144445f4f564552464c4f5760801b604482015260640161092f565b6040516323b872dd60e01b81526000906001600160a01b038516906323b872dd90613ffb908690309087906004016158da565b613fb98161534f565b6000806148cc8685614719565b905060006148da8685614831565b905060006148e88288614719565b905060006148fe670de0b6b3a764000085614719565b9050600061490c8383614eba565b9050600061491a828d613daa565b90506000614928828e613f49565b9050600061494161412c670de0b6b3a76400008a613f49565b905061414c82613ed2670de0b6b3a764000084613f49565b6000808061497686600360200201518760015b6020020151614719565b9050600061498b876002602002015187613f49565b905060006149a0886002602002015183614719565b905060006149ae8285614eba565b90506149c281670de0b6b3a7640000613f49565b9050600080546149d06125d9565b6001546149dd9190615aff565b6149e79190615aff565b8a51909150614a0c906149fa9084613daa565b613ed2670de0b6b3a764000084613f49565b96506000614a2c886144138a6109e7670de0b6b3a76400006144136125d9565b6001600160a01b038a16600090815260056020526040902054909150614a529082614831565b600560008b6001600160a01b03166001600160a01b03168152602001908152602001600020819055506000614a99896144138b6109e7670de0b6b3a7640000600054613f49565b6001600160a01b038b16600090815260066020526040902054909150614abf9082614831565b6001600160a01b038b166000908152600660205260409020558b51614afc90614ae89086613daa565b613ed2670de0b6b3a7640000600154613f49565b97507f90d9f1d0641138b6407ac37bea3a905d63a371c2d91a484f68d59924634d4ef3614b3b8a6144138c6109e7670de0b6b3a7640000600154613f49565b604080519182526020820185905281018390526001600160a01b038c16606082015260800160405180910390a150505050505050935093915050565b60008080614b8e866001602002015187600361496c565b90506000614bae86614413886109e7670de0b6b3a76400006144136125d9565b6001600160a01b038616600090815260056020526040902054909150614bd49082614831565b60056000876001600160a01b03166001600160a01b03168152602001908152602001600020819055506000614c1b87614413896109e7670de0b6b3a7640000600054613f49565b6001600160a01b038716600090815260066020526040902054909150614c419082614831565b6001600160a01b0387166000908152600660205260408120919091558054614c676125d9565b600154614c749190615aff565b614c7e9190615aff565b90507f90d9f1d0641138b6407ac37bea3a905d63a371c2d91a484f68d59924634d4ef3614cbd896144138b6109e7670de0b6b3a7640000600154613f49565b604080519182526020820186905281018490526001600160a01b038916606082015260800160405180910390a16000614cfe670de0b6b3a764000083613f49565b9050614d0a8982613daa565b8a51909150600090614d2090613ed28185614831565b90506000614d2e8288614eba565b90506000614d44670de0b6b3a764000083613f49565b9050614d578d6002602002015182613daa565b995089614d688d614413898b615aff565b995099505050505050505050935093915050565b600c805462010000600160b01b031916620100006001600160a01b038a81169190910291909117909155600280546001600160a01b031916918816919091179055845160009086908290614dd257614dd2615bf7565b602002602001015160018190555085600181518110614df357614df3615bf7565b602090810291909101810151600055600c8054961515600160b01b0260ff60b01b199097169690961795869055600e80548551600380546001600160a01b039283166001600160a01b03199182161790915596840151600480549183169189169190911790558551600d805491831691891691909117905594909201518416951515600160a01b908102959095166001600160a81b0319928316179590951790945550601280549093166201000090940416929092178217908190550460ff169392505050565b60006001831015614f055760405162461bcd60e51b81526020600482015260156024820152744552525f42504f575f424153455f544f4f5f4c4f5760581b604482015260640161092f565b6001614f1a670de0b6b3a76400006002615b2b565b614f249190615b4a565b831115614f6c5760405162461bcd60e51b815260206004820152601660248201527508aa4a4be84a09eaebe8482a68abea89e9ebe90928e960531b604482015260640161092f565b6000614f77836153be565b90506000614f858483613f49565b90506000614f9b86614f96856153dc565b6153f0565b905081614fac579250610e8f915050565b6000614fcf8784614fca6402540be400670de0b6b3a7640000615b17565b615464565b9050614fdb8282613daa565b979650505050505050565b60008082841061500557614ffa8385615b4a565b600091509150615016565b61500f8484615b4a565b6001915091505b9250929050565b612c5a823083614424565b3060009081526007602052604090205481111561507e5760405162461bcd60e51b815260206004820152601460248201527311549497d25394d551919250d251539517d0905360621b604482015260640161092f565b306000908152600760205260409020546150989082613f49565b306000908152600760205260409020556009546150b59082613f49565b60095560405181815260009030907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906020015b60405180910390a350565b612c5a308383614424565b670de0b6b3a76400008110156151485760405162461bcd60e51b815260206004820152600e60248201526d11549497d3525397d5d15251d21560921b604482015260640161092f565b61515b670de0b6b3a76400006032615b2b565b81111561519b5760405162461bcd60e51b815260206004820152600e60248201526d11549497d3505617d5d15251d21560921b604482015260640161092f565b6151b264e8d4a51000670de0b6b3a7640000615b17565b8210156151f35760405162461bcd60e51b815260206004820152600f60248201526e4552525f4d494e5f42414c414e434560881b604482015260640161092f565b6001600160a01b0383166000908152601060205260409020600201548082111561528f5761522c6011546152278484613f49565b614831565b601155615242670de0b6b3a76400006032615b2b565b601154111561528a5760405162461bcd60e51b815260206004820152601460248201527311549497d3505617d513d5105317d5d15251d21560621b604482015260640161092f565b6152ab565b808210156152ab576152a76011546144138385613f49565b6011555b6001600160a01b038416600090815260106020526040902060028101839055600301805490849055808411156152f4576152ef85336152ea8785613f49565b614883565b615348565b808410156153485760006153088286613f49565b90506000615317826000613daa565b905061532d87336153288585613f49565b613fc6565b6002546153459088906001600160a01b031683613fc6565b50505b5050505050565b306000908152600760205260409020546153699082614831565b306000908152600760205260409020556009546153869082614831565b60095560405181815230906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906020016150e9565b6000670de0b6b3a76400006153d2836153dc565b610e8f9190615b2b565b6000610e8f670de0b6b3a764000083615b17565b600082816153ff600285615bb7565b61541157670de0b6b3a7640000615413565b815b9050615420600285615b17565b93505b8315611608576154338283613daa565b9150615440600285615bb7565b156154525761544f8183613daa565b90505b61545d600285615b17565b9350615423565b600082818061547b87670de0b6b3a7640000614fe6565b9092509050670de0b6b3a764000080600060015b8884106155455760006154aa670de0b6b3a764000083615b2b565b90506000806154ca8a6154c585670de0b6b3a7640000613f49565b614fe6565b915091506154dc876109e7848c613daa565b96506154e88784614719565b9650866154f757505050615545565b8715615501579315935b801561550b579315935b84156155225761551b8688613f49565b955061552f565b61552c8688614831565b95505b505050808061553d90615b9c565b91505061548f565b50909998505050505050505050565b80356001600160a01b038116811461307057600080fd5b8060408101831015610e8f57600080fd5b60008083601f84011261558e57600080fd5b50813567ffffffffffffffff8111156155a657600080fd5b6020830191508360208260051b850101111561501657600080fd5b6000602082840312156155d357600080fd5b613adc82615554565b600080604083850312156155ef57600080fd5b6155f883615554565b915061560660208401615554565b90509250929050565b600080600080600080600080610120898b03121561562c57600080fd5b61563589615554565b975061564360208a01615554565b9650604089013567ffffffffffffffff81111561565f57600080fd5b61566b8b828c0161557c565b909750955050606089013561567f81615c23565b9350608089013561568f81615c23565b925061569e8a60a08b0161556b565b91506156ad8a60e08b0161556b565b90509295985092959890939650565b6000806000606084860312156156d157600080fd5b6156da84615554565b92506156e860208501615554565b9150604084013590509250925092565b6000806040838503121561570b57600080fd5b61571483615554565b946020939093013593505050565b600080600080600060a0868803121561573a57600080fd5b61574386615554565b94506020860135935061575860408701615554565b94979396509394606081013594506080013592915050565b60008060006060848603121561578557600080fd5b61578e84615554565b95602085013595506040909401359392505050565b60008060008060008060c087890312156157bc57600080fd5b6157c587615554565b955060208701359450604087013593506157e160608801615554565b92506080870135915060a087013590509295509295509295565b60006020828403121561580d57600080fd5b8151613adc81615c23565b60006020828403121561582a57600080fd5b5035919050565b60006020828403121561584357600080fd5b5051919050565b60008060006040848603121561585f57600080fd5b83359250602084013567ffffffffffffffff81111561587d57600080fd5b6158898682870161557c565b9497909650939450505050565b600081518084526020808501945080840160005b838110156158cf5781516001600160a01b0316875295820195908201906001016158aa565b509495945050505050565b6001600160a01b039384168152919092166020820152604081019190915260600190565b602081526000613adc6020830184615896565b6040815260006159246040830185615896565b82810360208481019190915284518083528582019282019060005b8181101561595b5784518352938301939183019160010161593f565b5090979650505050505050565b600060208083528351808285015260005b8181101561599557858101830151858201604001528201615979565b818111156159a7576000604083870101525b50601f01601f1916929092016040019392505050565b60208082526010908201526f4552525f4d41585f494e5f524154494f60801b604082015260600190565b6020808252600f908201526e08aa4a4be9a82a890be82a0a0a49eb608b1b604082015260600190565b6020808252600d908201526c11549497d31253525517d3d555609a1b604082015260600190565b6020808252600c908201526b22a9292fa624a6a4aa2fa4a760a11b604082015260600190565b6020808252600b908201526a4552525f5245454e54525960a81b604082015260600190565b6020808252601190820152704552525f4d41585f4f55545f524154494f60781b604082015260600190565b6020808252600d908201526c11549497d393d517d093d55391609a1b604082015260600190565b60208082526011908201527011549497d393d517d19253905312569151607a1b604082015260600190565b60008219821115615b1257615b12615bcb565b500190565b600082615b2657615b26615be1565b500490565b6000816000190483118215151615615b4557615b45615bcb565b500290565b600082821015615b5c57615b5c615bcb565b500390565b600181811c90821680615b7557607f821691505b60208210811415615b9657634e487b7160e01b600052602260045260246000fd5b50919050565b6000600019821415615bb057615bb0615bcb565b5060010190565b600082615bc657615bc6615be1565b500690565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b8015158114613fb957600080fdfe9d9058fd2f25ccc389fec7720abef0ca83472f5abfafd5f10d37f51e6a0493f387b3975661762d852ddf2eeaad6a43b2d93777de7b3b7bdb634283df32456118fcda32798d5a9d032f49b37fea876d422f18f6e386e0f07db6029b693624b2c215a8ca63e37b2cff1677df2b6b82d36fcf8a524228bd7a4b4d02d107c28c1e8a8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925a264697066735822122073646db29623b1c8aa1c956fe0a883d1cba8c036c96a754e6ca1ede440838db964736f6c63430008070033", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106104285760003560e01c80638201aa3f1161022b578063c070a6d811610130578063dd62ed3e116100b8578063f1b8a9b711610087578063f1b8a9b7146108b1578063f68045a5146108c4578063f8b2cb4f146108cc578063fde924f7146108df578063ff9b1850146108f157600080fd5b8063dd62ed3e1461085d578063e4a28a52146104b0578063ec09302114610896578063f0f13f0b1461089e57600080fd5b8063c8ff1833116100ff578063c8ff18331461082a578063cc77828d14610832578063cd2ed8fb1461083a578063d4cadf6814610842578063d73dd6231461084a57600080fd5b8063c070a6d8146107f9578063c36596a6146104f0578063c44a42831461080c578063c6580d121461082257600080fd5b8063a562ddf0116101b3578063b7b800a411610182578063b7b800a4146107c4578063ba019dab146107cc578063bc063e1a146107d4578063bc694ea2146107dc578063be3bbd2e146107e457600080fd5b8063a562ddf01461078b578063a9059cbb1461079e578063b02f0b73146107b1578063b0e0d136146107c457600080fd5b80639381cd2b116101fa5780639381cd2b1461074d578063948d8ce61461075557806395d89b4114610768578063992e2a9214610770578063a3b3a16d1461077857600080fd5b80638201aa3f14610718578063867378c51461072b5780638d4e408314610733578063936c34771461074557600080fd5b8063380376a6116103315780635e123add116102b9578063703305181161028857806370330518146106a457806370a08231146106b757806376c7a3c7146106e05780637c5e9ea4146106e857806380ca73081461071057600080fd5b80635e123add1461066e57806366188463146106765780636d06dfa014610689578063700dd7e81461069c57600080fd5b806346ab38f11161030057806346ab38f11461061b57806349e9350f1461062e5780634df947d0146106375780634f69c0d4146106485780635db342771461065b57600080fd5b8063380376a6146105d0578063392e53cd146105e35780633950b3fd146105f5578063430ed5d01461060857600080fd5b8063218b5382116103b4578063300621921161038357806330062192146105515780633018205f14610571578063313ce5671461058857806331e2761b1461059d57806334e19907146105bd57600080fd5b8063218b5382146104f057806323b872dd146104ff5780632ea07d8a146105125780632f37b6241461052557600080fd5b806309a3bbe4116103fb57806309a3bbe4146104b057806309ef3f5b146104b857806315e84af9146104cd57806318160ddd146104e0578063189d00ca146104e857600080fd5b806302c967481461042d57806304ad79541461045357806306fdde0314610478578063095ea7b31461048d575b600080fd5b61044061043b366004615770565b610904565b6040519081526020015b60405180910390f35b6003546001600160a01b03165b6040516001600160a01b03909116815260200161044a565b610480610da8565b60405161044a9190615968565b6104a061049b3660046156f8565b610e3a565b604051901515815260200161044a565b610440610e95565b6104cb6104c63660046157a3565b610eab565b005b6104406104db3660046155dc565b6110a4565b600954610440565b610440611188565b610440670de0b6b3a764000081565b6104a061050d3660046156bc565b61119f565b6104406105203660046156bc565b6112f3565b6104a06105333660046155c1565b6001600160a01b031660009081526010602052604090205460ff1690565b61044061055f3660046155c1565b60056020526000908152604090205481565b600c546201000090046001600160a01b0316610460565b600c5460405160ff909116815260200161044a565b6104406105ab3660046155c1565b60066020526000908152604090205481565b6104cb6105cb366004615818565b6113ae565b6104406105de3660046156bc565b6114f7565b601254600160a01b900460ff166104a0565b6104406106033660046156f8565b6115a8565b6104406106163660046156f8565b611610565b610440610629366004615770565b611670565b61044060005481565b6004546001600160a01b0316610460565b6104cb61065636600461584a565b611ab9565b610440610669366004615770565b611ce0565b600054610440565b6104a06106843660046156f8565b6120e4565b610440610697366004615770565b6121ba565b6104406125d9565b6104cb6106b23660046155c1565b612662565b6104406106c53660046155c1565b6001600160a01b031660009081526007602052604090205490565b61044061270f565b6106fb6106f6366004615722565b612724565b6040805192835260208301919091520161044a565b6104cb612a75565b6106fb610726366004615722565b612c5e565b610440612f93565b600e54600160a01b900460ff166104a0565b610440612faa565b610440612fdc565b6104406107633660046155c1565b612fef565b610480613075565b610440613084565b6104406107863660046156f8565b6130a2565b600d54610460906001600160a01b031681565b6104a06107ac3660046156f8565b613102565b6104cb6107bf36600461584a565b613118565b610440600281565b610440600181565b610440613374565b610440613387565b6107ec6133a6565b60405161044a91906158fe565b6104a061080736600461560f565b613459565b6108146136c9565b60405161044a929190615911565b610440600081565b610814613839565b6107ec61399e565b600f54610440565b600154610440565b6104a06108583660046156f8565b6139c9565b61044061086b3660046155dc565b6001600160a01b03918216600090815260086020908152604080832093909416825291909152205490565b610440613a3c565b600e54610460906001600160a01b031681565b6104406108bf3660046155c1565b613a4f565b6104cb613ae3565b6104406108da3660046155c1565b613cc8565b600c54600160b01b900460ff166104a0565b6104406108ff3660046156f8565b613d4a565b600c54600090610100900460ff16156109385760405162461bcd60e51b815260040161092f90615a5d565b60405180910390fd5b600c805461ff001916610100179055600e54600160a01b900460ff166109705760405162461bcd60e51b815260040161092f90615ad4565b6001600160a01b03841660009081526010602052604090205460ff166109a85760405162461bcd60e51b815260040161092f90615aad565b6001600160a01b03841660009081526010602052604090206003908101546109ec916109dc90670de0b6b3a7640000615b17565b6109e7906001615aff565b613daa565b831115610a0b5760405162461bcd60e51b815260040161092f90615a82565b6001600160a01b038416600090815260106020526040902060038101546002820154600954601154610a409392919088613e85565b915081610a5f5760405162461bcd60e51b815260040161092f906159e7565b82821115610a7f5760405162461bcd60e51b815260040161092f90615a37565b610a8d816003015485613f49565b60038201556000610a9e8382613daa565b604080518781524260208201529192506001600160a01b038816913391600080516020615c32833981519152910160405180910390a3604051838152600080516020615c728339815191529060200160405180910390a1610aff3384613fa6565b610b11610b0c8483613f49565b613fb0565b600254610b27906001600160a01b031682613fbc565b610b32863387613fc6565b6003546000906001600160a01b0388811691161415610b5d57506004546001600160a01b0316610b6b565b506003546001600160a01b03165b60125460035460405163efd4810360e01b81526001600160a01b039283169263efd4810392610ba392911690859089906004016158da565b60206040518083038186803b158015610bbb57600080fd5b505afa158015610bcf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bf391906157fb565b151560011415610d9357600380546001600160a01b03166000908152601060205260408120918201546002830154600954601154610c34939291908a614094565b9050610c44826003015482613f49565b6003830155610c54866000613daa565b600c54604080518481524260208201529296506001600160a01b0386811693620100009093041691600080516020615c32833981519152910160405180910390a3600c54610cb1906201000090046001600160a01b031687613fa6565b610cbe610b0c8786613f49565b600254610cd4906001600160a01b031685613fbc565b600c54610cf29084906201000090046001600160a01b031683613fc6565b6012546003546040516307b01ab360e41b81526001600160a01b03918216600482015285821660248201526044810184905260648101899052911690637b01ab3090608401600060405180830381600087803b158015610d5157600080fd5b505af1158015610d65573d6000803e3d6000fd5b50505050600080516020615c5283398151915286604051610d8891815260200190565b60405180910390a150505b505050600c805461ff00191690559392505050565b6060600a8054610db790615b61565b80601f0160208091040260200160405190810160405280929190818152602001828054610de390615b61565b8015610e305780601f10610e0557610100808354040283529160200191610e30565b820191906000526020600020905b815481529060010190602001808311610e1357829003601f168201915b5050505050905090565b3360008181526008602090815260408083206001600160a01b03871680855292528083208590555191929091600080516020615cb283398151915290610e839086815260200190565b60405180910390a35060015b92915050565b610ea8670de0b6b3a76400006032615b2b565b81565b600c546201000090046001600160a01b03163314610f045760405162461bcd60e51b815260206004820152601660248201527522a9292fa4a72b20a624a22fa1a7a72a2927a62622a960511b604482015260640161092f565b6003546001600160a01b03878116911614610f615760405162461bcd60e51b815260206004820152601d60248201527f4552525f494e56414c49445f44415441544f4b454e5f41444452455353000000604482015260640161092f565b6004546001600160a01b03848116911614610fbe5760405162461bcd60e51b815260206004820152601d60248201527f4552525f494e56414c49445f42415345544f4b454e5f41444452455353000000604482015260640161092f565b610fc986868661415e565b604080518681524260208201526001600160a01b038816913391600080516020615c92833981519152910160405180910390a361100783838361415e565b604080518381524260208201526001600160a01b038516913391600080516020615c92833981519152910160405180910390a361104261434d565b6040805183815260208101839052908101869052606081018590526001600160a01b03808816919085169033907fbece8b4dcdbe446dd65a9288154698e067e3e91de17a1a408c2f531b9f845d739060800160405180910390a4505050505050565b600c54600090610100900460ff16156110cf5760405162461bcd60e51b815260040161092f90615a5d565b6001600160a01b03831660009081526010602052604090205460ff166111075760405162461bcd60e51b815260040161092f90615aad565b6001600160a01b03821660009081526010602052604090205460ff1661113f5760405162461bcd60e51b815260040161092f90615aad565b6001600160a01b0380841660009081526010602052604080822092851682529020600380830154600280850154928401549084015461117f9391906143ac565b95945050505050565b610ea86402540be400670de0b6b3a7640000615b17565b6000336001600160a01b03851614806111db57506001600160a01b03841660009081526008602090815260408083203384529091529020548211155b61121f5760405162461bcd60e51b815260206004820152601560248201527422a9292fa12a27a5a2a72fa120a22fa1a0a62622a960591b604482015260640161092f565b61122a848484614424565b336001600160a01b0385161480159061126857506001600160a01b038416600090815260086020908152604080832033845290915290205460001914155b156112e9576001600160a01b038416600090815260086020908152604080832033845290915290205461129b9083613f49565b6001600160a01b038581166000908152600860209081526040808320338085529083529281902085905551938452918616929091600080516020615cb2833981519152910160405180910390a35b5060019392505050565b6001600160a01b03831660009081526010602052604081205460ff1661132b5760405162461bcd60e51b815260040161092f90615aad565b6001600160a01b03831660009081526010602052604090205460ff166113635760405162461bcd60e51b815260040161092f90615aad565b6001600160a01b038085166000908152601060205260408082209286168252902060038083015460028085015492840154908401546113a493919088614536565b9695505050505050565b600e54600160a01b900460ff16156113fb5760405162461bcd60e51b815260206004820152601060248201526f11549497d254d7d1925390531256915160821b604482015260640161092f565b600c546201000090046001600160a01b031633146114505760405162461bcd60e51b815260206004820152601260248201527122a9292fa727aa2fa1a7a72a2927a62622a960711b604482015260640161092f565b611465620f4240670de0b6b3a7640000615b17565b8110156114a25760405162461bcd60e51b815260206004820152600b60248201526a4552525f4d494e5f46454560a81b604482015260640161092f565b6114b5600a670de0b6b3a7640000615b17565b8111156114f25760405162461bcd60e51b815260206004820152600b60248201526a4552525f4d41585f46454560a81b604482015260640161092f565b600155565b6001600160a01b03831660009081526010602052604081205460ff1661152f5760405162461bcd60e51b815260040161092f90615aad565b6001600160a01b03831660009081526010602052604090205460ff166115675760405162461bcd60e51b815260040161092f90615aad565b6001600160a01b038085166000908152601060205260408082209286168252902060038083015460028085015492840154908401546113a4939190886145de565b6001600160a01b03821660009081526010602090815260408083208151608081018352815460ff16151581526001820154938101939093526002810154918301829052600301546060830181905260095460115461160893919087614684565b949350505050565b6001600160a01b03821660009081526010602090815260408083208151608081018352815460ff16151581526001820154938101939093526002810154918301829052600301546060830181905260095460115461160893919087614094565b600c54600090610100900460ff161561169b5760405162461bcd60e51b815260040161092f90615a5d565b600c805461ff001916610100179055600e54600160a01b900460ff166116d35760405162461bcd60e51b815260040161092f90615ad4565b6001600160a01b03841660009081526010602052604090205460ff1661170b5760405162461bcd60e51b815260040161092f90615aad565b6001600160a01b0384166000908152601060205260409020600381015460028201546009546011546117409392919088614094565b9150828210156117625760405162461bcd60e51b815260040161092f90615a10565b6001600160a01b0385166000908152601060205260409020600390810154611796916109dc90670de0b6b3a7640000615b17565b8211156117b55760405162461bcd60e51b815260040161092f90615a82565b6117c3816003015483613f49565b600382015560006117d48582613daa565b604080518581524260208201529192506001600160a01b038816913391600080516020615c32833981519152910160405180910390a3604051858152600080516020615c728339815191529060200160405180910390a16118353386613fa6565b611842610b0c8683613f49565b600254611858906001600160a01b031682613fbc565b611863863385613fc6565b6003546000906001600160a01b038881169116141561188e57506004546001600160a01b031661189c565b506003546001600160a01b03165b60125460035460405163efd4810360e01b81526001600160a01b039283169263efd48103926118d49291169085908b906004016158da565b60206040518083038186803b1580156118ec57600080fd5b505afa158015611900573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061192491906157fb565b151560011415610d9357600380546001600160a01b03166000908152601060205260408120918201546002830154600954601154611965939291908c614094565b9050611975826003015482613f49565b6003830155611985886000613daa565b600c54604080518481524260208201529296506001600160a01b0386811693620100009093041691600080516020615c32833981519152910160405180910390a3600c546119e2906201000090046001600160a01b031689613fa6565b6119ef610b0c8986613f49565b600254611a05906001600160a01b031685613fbc565b600c54611a239084906201000090046001600160a01b031683613fc6565b6012546003546040516307b01ab360e41b81526001600160a01b039182166004820152858216602482015260448101849052606481018b9052911690637b01ab3090608401600060405180830381600087803b158015611a8257600080fd5b505af1158015611a96573d6000803e3d6000fd5b50505050600080516020615c5283398151915288604051610d8891815260200190565b600c54610100900460ff1615611ae15760405162461bcd60e51b815260040161092f90615a5d565b600c805461ff001916610100179055600e54600160a01b900460ff16611b195760405162461bcd60e51b815260040161092f90615ad4565b6000611b2460095490565b90506000611b328583614719565b905080611b515760405162461bcd60e51b815260040161092f906159e7565b60005b600f54811015611c99576000600f8281548110611b7357611b73615bf7565b60009182526020808320909101546001600160a01b03168083526010909152604082206003015490925090611ba88583613daa565b905080611bc75760405162461bcd60e51b815260040161092f906159e7565b878785818110611bd957611bd9615bf7565b90506020020135811115611bff5760405162461bcd60e51b815260040161092f90615a37565b6001600160a01b038316600090815260106020526040902060030154611c259082614831565b6001600160a01b038416600081815260106020526040908190206003019290925590513390600080516020615c9283398151915290611c709085904290918252602082015260400190565b60405180910390a3611c83833383614883565b5050508080611c9190615b9c565b915050611b54565b50611ca3856148b6565b611cad3386613fbc565b604051858152600080516020615c728339815191529060200160405180910390a15050600c805461ff0019169055505050565b600c54600090610100900460ff1615611d0b5760405162461bcd60e51b815260040161092f90615a5d565b600c805461ff001916610100179055600e54600160a01b900460ff16611d435760405162461bcd60e51b815260040161092f90615ad4565b6001600160a01b03841660009081526010602052604090205460ff16611d7b5760405162461bcd60e51b815260040161092f90615aad565b6001600160a01b038416600090815260106020526040902060030154611dae906109e76002670de0b6b3a7640000615b17565b831115611dcd5760405162461bcd60e51b815260040161092f906159bd565b6001600160a01b038416600090815260106020526040902060038101546002820154600954601154611e029392919088614684565b915082821015611e245760405162461bcd60e51b815260040161092f90615a10565b611e32816003015485614831565b6003820155604080518581524260208201526001600160a01b038716913391600080516020615c92833981519152910160405180910390a3604051828152600080516020615c728339815191529060200160405180910390a1611e94826148b6565b611e9e3383613fbc565b611ea9853386614883565b600380546001600160a01b031660009081526010602052604081209182015460028301546009546011548493611ee39390929091896148bf565b6003549091506001600160a01b0389811691161415611f0f576004546001600160a01b03169150611f1e565b6003546001600160a01b031691505b6012546003546040516326b1f01f60e01b81526001600160a01b03928316926326b1f01f92611f5692911690869086906004016158da565b60206040518083038186803b158015611f6e57600080fd5b505afa158015611f82573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fa691906157fb565b1515600114156120ce576012546003546040516399039fcf60e01b81526001600160a01b03928316926399039fcf92611fe892911690869086906004016158da565b600060405180830381600087803b15801561200257600080fd5b505af1158015612016573d6000803e3d6000fd5b50505050612028836003015482614831565b6003840155600c54604080518381524260208201526001600160a01b03858116936201000090041691600080516020615c92833981519152910160405180910390a3604051858152600080516020615c528339815191529060200160405180910390a1612094856148b6565b600c546120b0906201000090046001600160a01b031686613fbc565b600c546120ce9083906201000090046001600160a01b031683614883565b50505050600c805461ff00191690559392505050565b3360009081526008602090815260408083206001600160a01b038616845290915281205480831115612139573360009081526008602090815260408083206001600160a01b0388168452909152812055612168565b6121438184613f49565b3360009081526008602090815260408083206001600160a01b03891684529091529020555b3360008181526008602090815260408083206001600160a01b03891680855290835292819020549051908152919291600080516020615cb2833981519152910160405180910390a35060019392505050565b600c54600090610100900460ff16156121e55760405162461bcd60e51b815260040161092f90615a5d565b600c805461ff001916610100179055600e54600160a01b900460ff1661221d5760405162461bcd60e51b815260040161092f90615ad4565b6001600160a01b03841660009081526010602052604090205460ff166122555760405162461bcd60e51b815260040161092f90615aad565b6001600160a01b03841660009081526010602052604090206003810154600282015460095460115461228a93929190886148bf565b9150816122a95760405162461bcd60e51b815260040161092f906159e7565b828211156122c95760405162461bcd60e51b815260040161092f90615a37565b6001600160a01b0385166000908152601060205260409020600301546122fc906109e76002670de0b6b3a7640000615b17565b82111561231b5760405162461bcd60e51b815260040161092f906159bd565b612329816003015483614831565b6003820155604080518381524260208201526001600160a01b038716913391600080516020615c92833981519152910160405180910390a3604051848152600080516020615c728339815191529060200160405180910390a161238b846148b6565b6123953385613fbc565b6123a0853384614883565b600380546001600160a01b031660009081526010602052604081209182015460028301546009546011546123d7939291908a6148bf565b6003549091506000906001600160a01b038981169116141561240557506004546001600160a01b0316612413565b506003546001600160a01b03165b6012546003546040516326b1f01f60e01b81526001600160a01b03928316926326b1f01f9261244b92911690859087906004016158da565b60206040518083038186803b15801561246357600080fd5b505afa158015612477573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061249b91906157fb565b1515600114156120ce576012546003546040516399039fcf60e01b81526001600160a01b03928316926399039fcf926124dd92911690859087906004016158da565b600060405180830381600087803b1580156124f757600080fd5b505af115801561250b573d6000803e3d6000fd5b5050505061251d836003015483614831565b6003840155600c54604080518481524260208201526001600160a01b03848116936201000090041691600080516020615c92833981519152910160405180910390a3612568876148b6565b600c54612584906201000090046001600160a01b031688613fbc565b600c546125a29082906201000090046001600160a01b031684614883565b604051878152600080516020615c528339815191529060200160405180910390a150505050600c805461ff00191690559392505050565b60025460048054604051637c0aa57760e11b81526001600160a01b0391821692810192909252600092169063f8154aee9060240160206040518083038186803b15801561262557600080fd5b505afa158015612639573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061265d9190615831565b905090565b600d546001600160a01b031633146126b45760405162461bcd60e51b815260206004820152601560248201527427a7262c9026a0a925a2aa1021a7a62622a1aa27a960591b604482015260640161092f565b600d80546001600160a01b0319166001600160a01b0383169081179091556040805133815260208101929092527f82aaf1a11850bc9b5eb1b7db8b4ad08629911d970a4d7539875938c4017e59b8910160405180910390a150565b610ea8620f4240670de0b6b3a7640000615b17565b600c546000908190610100900460ff16156127515760405162461bcd60e51b815260040161092f90615a5d565b600c805461ff001916610100179055600e54600160a01b900460ff166127895760405162461bcd60e51b815260040161092f90615ad4565b6001600160a01b03871660009081526010602052604090205460ff166127c15760405162461bcd60e51b815260040161092f90615aad565b6001600160a01b03851660009081526010602052604090205460ff166127f95760405162461bcd60e51b815260040161092f90615aad565b6001600160a01b0380881660009081526010602052604080822092881682529020600380820154612836916109dc90670de0b6b3a7640000615b17565b8611156128555760405162461bcd60e51b815260040161092f90615a82565b600061287383600301548460020154846003015485600201546143ac565b9050858111156128bb5760405162461bcd60e51b81526020600482015260136024820152724552525f4241445f4c494d49545f505249434560681b604482015260640161092f565b6000806040518060800160405280866003015481526020018660020154815260200185600301548152602001856002015481525090506128fc818a8e614959565b90975091508a8711156129215760405162461bcd60e51b815260040161092f90615a37565b61292f856003015483614831565b856003018190555061294584600301548a613f49565b60038086018290558601546002808801549087015461296493906143ac565b9550828610156129865760405162461bcd60e51b815260040161092f906159e7565b878611156129c85760405162461bcd60e51b815260206004820152600f60248201526e4552525f4c494d49545f505249434560881b604482015260640161092f565b6129d2878a614719565b8311156129f15760405162461bcd60e51b815260040161092f906159e7565b60408051888152602081018b9052428183015290516001600160a01b038c811692908f169133917f50ef2fc267012b5c84b56835f16ffd5331ac5a151a3760d74908721ba78b0efe919081900360600190a4612a4e8c3389614883565b612a598a338b613fc6565b5050505050600c805461ff001916905590969095509350505050565b6000612a7f6133a6565b905060005b8151811015612c5a57600060066000848481518110612aa557612aa5615bf7565b60200260200101516001600160a01b03166001600160a01b03168152602001908152602001600020549050600060066000858581518110612ae857612ae8615bf7565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002081905550828281518110612b2657612b26615bf7565b6020908102919091010151600d5460405163a9059cbb60e01b81526001600160a01b0391821660048201526024810184905291169063a9059cbb90604401602060405180830381600087803b158015612b7e57600080fd5b505af1158015612b92573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612bb691906157fb565b507f6b98b886762529d8027f347356f9ec147e1735888054ace831c0e3de7983ab3d33600d60009054906101000a90046001600160a01b0316858581518110612c0157612c01615bf7565b602002602001015184604051612c3f94939291906001600160a01b039485168152928416602084015292166040820152606081019190915260800190565b60405180910390a15080612c5281615b9c565b915050612a84565b5050565b600c546000908190610100900460ff1615612c8b5760405162461bcd60e51b815260040161092f90615a5d565b600c805461ff001916610100179055600e54600160a01b900460ff16612cc35760405162461bcd60e51b815260040161092f90615ad4565b6001600160a01b03871660009081526010602052604090205460ff16612cfb5760405162461bcd60e51b815260040161092f90615aad565b6001600160a01b03851660009081526010602052604090205460ff16612d335760405162461bcd60e51b815260040161092f90615aad565b6001600160a01b03808816600090815260106020526040808220928816825290206003820154612d70906109e76002670de0b6b3a7640000615b17565b881115612d8f5760405162461bcd60e51b815260040161092f906159bd565b6000612dad83600301548460020154846003015485600201546143ac565b905085811115612df55760405162461bcd60e51b81526020600482015260136024820152724552525f4241445f4c494d49545f505249434560681b604482015260640161092f565b600080604051806080016040528086600301548152602001866002015481526020018560030154815260200185600201548152509050612e36818c8e614b77565b909750915088871015612e5b5760405162461bcd60e51b815260040161092f90615a10565b612e69856003015483614831565b8560030181905550612e7f846003015488613f49565b600380860182905586015460028088015490870154612e9e93906143ac565b955082861015612ec05760405162461bcd60e51b815260040161092f906159e7565b87861115612f025760405162461bcd60e51b815260206004820152600f60248201526e4552525f4c494d49545f505249434560881b604482015260640161092f565b612f0c8b88614719565b831115612f2b5760405162461bcd60e51b815260040161092f906159e7565b604080518c815260208101899052428183015290516001600160a01b038c811692908f169133917f50ef2fc267012b5c84b56835f16ffd5331ac5a151a3760d74908721ba78b0efe919081900360600190a4612f888c338d614883565b612a598a3389613fc6565b610ea864e8d4a51000670de0b6b3a7640000615b17565b600c54600090610100900460ff1615612fd55760405162461bcd60e51b815260040161092f90615a5d565b5060115490565b610ea8670de0b6b3a76400006064615b2b565b600c54600090610100900460ff161561301a5760405162461bcd60e51b815260040161092f90615a5d565b6001600160a01b03821660009081526010602052604090205460ff166130525760405162461bcd60e51b815260040161092f90615aad565b506001600160a01b0381166000908152601060205260409020600201545b919050565b6060600b8054610db790615b61565b6130976003670de0b6b3a7640000615b17565b610ea8906001615aff565b6001600160a01b03821660009081526010602090815260408083208151608081018352815460ff16151581526001820154938101939093526002810154918301829052600301546060830181905260095460115461160893919087613e85565b600061310f338484614424565b50600192915050565b600c54610100900460ff16156131405760405162461bcd60e51b815260040161092f90615a5d565b600c805461ff001916610100179055600e54600160a01b900460ff166131785760405162461bcd60e51b815260040161092f90615ad4565b600061318360095490565b90506000613192856000613daa565b905060006131a08683613f49565b905060006131ae8285614719565b9050806131cd5760405162461bcd60e51b815260040161092f906159e7565b6131d73388613fa6565b6002546131ed906001600160a01b031684613fbc565b6131f682613fb0565b60005b600f5481101561333e576000600f828154811061321857613218615bf7565b60009182526020808320909101546001600160a01b0316808352601090915260408220600301549092509061324d8583613daa565b90508061326c5760405162461bcd60e51b815260040161092f906159e7565b89898581811061327e5761327e615bf7565b905060200201358110156132a45760405162461bcd60e51b815260040161092f90615a10565b6001600160a01b0383166000908152601060205260409020600301546132ca9082613f49565b6001600160a01b038416600081815260106020526040908190206003019290925590513390600080516020615c32833981519152906133159085904290918252602082015260400190565b60405180910390a3613328833383613fc6565b505050808061333690615b9c565b9150506131f9565b50604051878152600080516020615c728339815191529060200160405180910390a15050600c805461ff00191690555050505050565b610ea8600a670de0b6b3a7640000615b17565b600161339c670de0b6b3a76400006002615b2b565b610ea89190615b4a565b600c54606090610100900460ff16156133d15760405162461bcd60e51b815260040161092f90615a5d565b600e54600160a01b900460ff166133fa5760405162461bcd60e51b815260040161092f90615ad4565b600f805480602002602001604051908101604052809291908181526020018280548015610e3057602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311613432575050505050905090565b601254600090600160a01b900460ff16156134b65760405162461bcd60e51b815260206004820152601760248201527f4552525f414c52454144595f494e495449414c495a4544000000000000000000604482015260640161092f565b6001600160a01b03891661350c5760405162461bcd60e51b815260206004820152601e60248201527f4552525f494e56414c49445f434f4e54524f4c4c45525f414444524553530000604482015260640161092f565b6001600160a01b0388166135625760405162461bcd60e51b815260206004820152601b60248201527f4552525f494e56414c49445f464143544f52595f414444524553530000000000604482015260640161092f565b613577620f4240670de0b6b3a7640000615b17565b8787600081811061358a5761358a615bf7565b9050602002013510156135cd5760405162461bcd60e51b815260206004820152600b60248201526a4552525f4d494e5f46454560a81b604482015260640161092f565b6135e0600a670de0b6b3a7640000615b17565b878760008181106135f3576135f3615bf7565b9050602002013511156136365760405162461bcd60e51b815260206004820152600b60248201526a4552525f4d41585f46454560a81b604482015260640161092f565b6136bc8989898980806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250506040805180820182528c93508b9250908a9060029083908390808284376000920191909152505060408051808201825291508a906002908390839080828437600092019190915250614d7c915050565b9998505050505050505050565b60608060006136d66133a6565b90506000815167ffffffffffffffff8111156136f4576136f4615c0d565b60405190808252806020026020018201604052801561371d578160200160208202803683370190505b5090506000825167ffffffffffffffff81111561373c5761373c615c0d565b604051908082528060200260200182016040528015613765578160200160208202803683370190505b50905060005b835181101561382e5783818151811061378657613786615bf7565b60200260200101518382815181106137a0576137a0615bf7565b60200260200101906001600160a01b031690816001600160a01b031681525050600660008583815181106137d6576137d6615bf7565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020016000205482828151811061381157613811615bf7565b60209081029190910101528061382681615b9c565b91505061376b565b509094909350915050565b60608060006138466133a6565b90506000815167ffffffffffffffff81111561386457613864615c0d565b60405190808252806020026020018201604052801561388d578160200160208202803683370190505b5090506000825167ffffffffffffffff8111156138ac576138ac615c0d565b6040519080825280602002602001820160405280156138d5578160200160208202803683370190505b50905060005b835181101561382e578381815181106138f6576138f6615bf7565b602002602001015183828151811061391057613910615bf7565b60200260200101906001600160a01b031690816001600160a01b0316815250506005600085838151811061394657613946615bf7565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020016000205482828151811061398157613981615bf7565b60209081029190910101528061399681615b9c565b9150506138db565b600c54606090610100900460ff16156133fa5760405162461bcd60e51b815260040161092f90615a5d565b3360009081526008602090815260408083206001600160a01b03861684529091528120546139f79083614831565b3360008181526008602090815260408083206001600160a01b03891680855290835292819020859055519384529092600080516020615cb28339815191529101610e83565b610ea86002670de0b6b3a7640000615b17565b600c54600090610100900460ff1615613a7a5760405162461bcd60e51b815260040161092f90615a5d565b6001600160a01b03821660009081526010602052604090205460ff16613ab25760405162461bcd60e51b815260040161092f90615aad565b6001600160a01b038216600090815260106020526040902060020154601154613adc908290614719565b9392505050565b6000613aed6133a6565b905060005b8151811015612c5a57600060056000848481518110613b1357613b13615bf7565b60200260200101516001600160a01b03166001600160a01b03168152602001908152602001600020549050600060056000858581518110613b5657613b56615bf7565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002081905550828281518110613b9457613b94615bf7565b6020908102919091010151600e5460405163a9059cbb60e01b81526001600160a01b0391821660048201526024810184905291169063a9059cbb90604401602060405180830381600087803b158015613bec57600080fd5b505af1158015613c00573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613c2491906157fb565b507fe8e83bbe0f2a413d8e79dcb9ef4143cd967143e9d6b93c91d002c7eefdc507cc33600e60009054906101000a90046001600160a01b0316858581518110613c6f57613c6f615bf7565b602002602001015184604051613cad94939291906001600160a01b039485168152928416602084015292166040820152606081019190915260800190565b60405180910390a15080613cc081615b9c565b915050613af2565b600c54600090610100900460ff1615613cf35760405162461bcd60e51b815260040161092f90615a5d565b6001600160a01b03821660009081526010602052604090205460ff16613d2b5760405162461bcd60e51b815260040161092f90615aad565b506001600160a01b031660009081526010602052604090206003015490565b6001600160a01b03821660009081526010602090815260408083208151608081018352815460ff161515815260018201549381019390935260028101549183018290526003015460608301819052600954601154611608939190876148bf565b600080613db78385615b2b565b9050831580613dce575082613dcc8583615b17565b145b613e0d5760405162461bcd60e51b815260206004820152601060248201526f4552525f4d554c5f4f564552464c4f5760801b604482015260640161092f565b6000613e226002670de0b6b3a7640000615b17565b613e2c9083615aff565b905081811015613e715760405162461bcd60e51b815260206004820152601060248201526f4552525f4d554c5f4f564552464c4f5760801b604482015260640161092f565b60006113a4670de0b6b3a764000083615b17565b600080613e928685614719565b90506000613ea8670de0b6b3a764000083613f49565b90506000613eb882600154613daa565b90506000613ed786613ed2670de0b6b3a764000085613f49565b614719565b90506000613ee58b83613f49565b90506000613ef3828d614719565b90506000613f018288614eba565b90506000613f0f828d613daa565b90506000613f1d8d83613f49565b9050613f3681613ed2670de0b6b3a76400006000613f49565b9f9e505050505050505050505050505050565b6000806000613f588585614fe6565b915091508015613f9e5760405162461bcd60e51b81526020600482015260116024820152704552525f5355425f554e444552464c4f5760781b604482015260640161092f565b509392505050565b612c5a828261501d565b613fb981615028565b50565b612c5a82826150f4565b60405163a9059cbb60e01b81526001600160a01b038381166004830152602482018390526000919085169063a9059cbb906044015b602060405180830381600087803b15801561401557600080fd5b505af1158015614029573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061404d91906157fb565b90508061408e5760405162461bcd60e51b815260206004820152600f60248201526e4552525f45524332305f46414c534560881b604482015260640161092f565b50505050565b6000806140a18685614719565b905060006140bc846109e7670de0b6b3a76400006000613f49565b905060006140ca8783613f49565b905060006140d88289614719565b905060006140f7826140f2670de0b6b3a764000088614719565b614eba565b90506000614105828d613daa565b905060006141138d83613f49565b9050600061413461412c670de0b6b3a76400008a613f49565b600154613daa565b905061414c826109e7670de0b6b3a764000084613f49565b9e9d5050505050505050505050505050565b600c546201000090046001600160a01b031633146141b35760405162461bcd60e51b815260206004820152601260248201527122a9292fa727aa2fa1a7a72a2927a62622a960711b604482015260640161092f565b6001600160a01b03831660009081526010602052604090205460ff161561420b5760405162461bcd60e51b815260206004820152600c60248201526b11549497d254d7d093d5539160a21b604482015260640161092f565b600e54600160a01b900460ff16156142585760405162461bcd60e51b815260206004820152601060248201526f11549497d254d7d1925390531256915160821b604482015260640161092f565b600f5460021161429b5760405162461bcd60e51b815260206004820152600e60248201526d4552525f4d41585f544f4b454e5360901b604482015260640161092f565b604080516080810182526001808252600f805460208085019182526000858701818152606087018281526001600160a01b038c1680845260109094529782209651875460ff1916901515178755925186860155915160028601559451600390940193909355805491820181559091527f8d1108e10bcb7c27dddfc02ed9d693a074039d026cf4ea4240b40f7d581ac8020180546001600160a01b03191690911790556143488383836150ff565b505050565b600e805460ff60a01b1916600160a01b179055600c805460ff60b01b1916600160b01b17905561438e614389670de0b6b3a76400006064615b2b565b6148b6565b6143aa336143a5670de0b6b3a76400006064615b2b565b613fbc565b565b6000806143b98686614719565b905060006143c78585614719565b905060006143d58383614719565b90506000614418670de0b6b3a7640000613ed2670de0b6b3a76400006000546143fc6125d9565b6001546144099190615aff565b6144139190615aff565b613f49565b90506136bc8282613daa565b6001600160a01b0383166000908152600760205260409020548111156144835760405162461bcd60e51b815260206004820152601460248201527311549497d25394d551919250d251539517d0905360621b604482015260640161092f565b6001600160a01b0383166000908152600760205260409020546144a69082613f49565b6001600160a01b0380851660009081526007602052604080822093909355908416815220546144d59082614831565b6001600160a01b0380841660008181526007602052604090819020939093559151908516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906145299085815260200190565b60405180910390a3505050565b6000806145438487614719565b905060006145518685613f49565b9050600061455f8783614719565b9050600061456d8285614eba565b905061458181670de0b6b3a7640000613f49565b90506000805461458f6125d9565b60015461459c9190615aff565b6145a69190615aff565b90506145ba670de0b6b3a764000082613f49565b95506145cf6145c98c84613daa565b87614719565b9b9a5050505050505050505050565b6000806145eb8685614719565b9050600080546145f96125d9565b6001546146069190615aff565b6146109190615aff565b90506000614626670de0b6b3a764000083613f49565b90506146328582613daa565b905060006146448a613ed28c85614831565b905060006146528286614eba565b90506000614668670de0b6b3a764000083613f49565b90506146748a82613daa565b9c9b505050505050505050505050565b6000806146918685614719565b905060006146aa61412c670de0b6b3a764000084613f49565b905060006146c4856109e7670de0b6b3a764000085613f49565b905060006146d28a83614831565b905060006146e0828c614719565b905060006146ee8287614eba565b905060006146fc828c613daa565b9050614708818c613f49565b9d9c50505050505050505050505050565b6000816147575760405162461bcd60e51b815260206004820152600c60248201526b4552525f4449565f5a45524f60a01b604482015260640161092f565b600061476b670de0b6b3a764000085615b2b565b905083158061478a5750670de0b6b3a76400006147888583615b17565b145b6147c95760405162461bcd60e51b815260206004820152601060248201526f11549497d1125597d25395115493905360821b604482015260640161092f565b60006147d6600285615b17565b6147e09083615aff565b9050818110156148255760405162461bcd60e51b815260206004820152601060248201526f11549497d1125597d25395115493905360821b604482015260640161092f565b60006113a48583615b17565b60008061483e8385615aff565b905083811015613adc5760405162461bcd60e51b815260206004820152601060248201526f4552525f4144445f4f564552464c4f5760801b604482015260640161092f565b6040516323b872dd60e01b81526000906001600160a01b038516906323b872dd90613ffb908690309087906004016158da565b613fb98161534f565b6000806148cc8685614719565b905060006148da8685614831565b905060006148e88288614719565b905060006148fe670de0b6b3a764000085614719565b9050600061490c8383614eba565b9050600061491a828d613daa565b90506000614928828e613f49565b9050600061494161412c670de0b6b3a76400008a613f49565b905061414c82613ed2670de0b6b3a764000084613f49565b6000808061497686600360200201518760015b6020020151614719565b9050600061498b876002602002015187613f49565b905060006149a0886002602002015183614719565b905060006149ae8285614eba565b90506149c281670de0b6b3a7640000613f49565b9050600080546149d06125d9565b6001546149dd9190615aff565b6149e79190615aff565b8a51909150614a0c906149fa9084613daa565b613ed2670de0b6b3a764000084613f49565b96506000614a2c886144138a6109e7670de0b6b3a76400006144136125d9565b6001600160a01b038a16600090815260056020526040902054909150614a529082614831565b600560008b6001600160a01b03166001600160a01b03168152602001908152602001600020819055506000614a99896144138b6109e7670de0b6b3a7640000600054613f49565b6001600160a01b038b16600090815260066020526040902054909150614abf9082614831565b6001600160a01b038b166000908152600660205260409020558b51614afc90614ae89086613daa565b613ed2670de0b6b3a7640000600154613f49565b97507f90d9f1d0641138b6407ac37bea3a905d63a371c2d91a484f68d59924634d4ef3614b3b8a6144138c6109e7670de0b6b3a7640000600154613f49565b604080519182526020820185905281018390526001600160a01b038c16606082015260800160405180910390a150505050505050935093915050565b60008080614b8e866001602002015187600361496c565b90506000614bae86614413886109e7670de0b6b3a76400006144136125d9565b6001600160a01b038616600090815260056020526040902054909150614bd49082614831565b60056000876001600160a01b03166001600160a01b03168152602001908152602001600020819055506000614c1b87614413896109e7670de0b6b3a7640000600054613f49565b6001600160a01b038716600090815260066020526040902054909150614c419082614831565b6001600160a01b0387166000908152600660205260408120919091558054614c676125d9565b600154614c749190615aff565b614c7e9190615aff565b90507f90d9f1d0641138b6407ac37bea3a905d63a371c2d91a484f68d59924634d4ef3614cbd896144138b6109e7670de0b6b3a7640000600154613f49565b604080519182526020820186905281018490526001600160a01b038916606082015260800160405180910390a16000614cfe670de0b6b3a764000083613f49565b9050614d0a8982613daa565b8a51909150600090614d2090613ed28185614831565b90506000614d2e8288614eba565b90506000614d44670de0b6b3a764000083613f49565b9050614d578d6002602002015182613daa565b995089614d688d614413898b615aff565b995099505050505050505050935093915050565b600c805462010000600160b01b031916620100006001600160a01b038a81169190910291909117909155600280546001600160a01b031916918816919091179055845160009086908290614dd257614dd2615bf7565b602002602001015160018190555085600181518110614df357614df3615bf7565b602090810291909101810151600055600c8054961515600160b01b0260ff60b01b199097169690961795869055600e80548551600380546001600160a01b039283166001600160a01b03199182161790915596840151600480549183169189169190911790558551600d805491831691891691909117905594909201518416951515600160a01b908102959095166001600160a81b0319928316179590951790945550601280549093166201000090940416929092178217908190550460ff169392505050565b60006001831015614f055760405162461bcd60e51b81526020600482015260156024820152744552525f42504f575f424153455f544f4f5f4c4f5760581b604482015260640161092f565b6001614f1a670de0b6b3a76400006002615b2b565b614f249190615b4a565b831115614f6c5760405162461bcd60e51b815260206004820152601660248201527508aa4a4be84a09eaebe8482a68abea89e9ebe90928e960531b604482015260640161092f565b6000614f77836153be565b90506000614f858483613f49565b90506000614f9b86614f96856153dc565b6153f0565b905081614fac579250610e8f915050565b6000614fcf8784614fca6402540be400670de0b6b3a7640000615b17565b615464565b9050614fdb8282613daa565b979650505050505050565b60008082841061500557614ffa8385615b4a565b600091509150615016565b61500f8484615b4a565b6001915091505b9250929050565b612c5a823083614424565b3060009081526007602052604090205481111561507e5760405162461bcd60e51b815260206004820152601460248201527311549497d25394d551919250d251539517d0905360621b604482015260640161092f565b306000908152600760205260409020546150989082613f49565b306000908152600760205260409020556009546150b59082613f49565b60095560405181815260009030907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906020015b60405180910390a350565b612c5a308383614424565b670de0b6b3a76400008110156151485760405162461bcd60e51b815260206004820152600e60248201526d11549497d3525397d5d15251d21560921b604482015260640161092f565b61515b670de0b6b3a76400006032615b2b565b81111561519b5760405162461bcd60e51b815260206004820152600e60248201526d11549497d3505617d5d15251d21560921b604482015260640161092f565b6151b264e8d4a51000670de0b6b3a7640000615b17565b8210156151f35760405162461bcd60e51b815260206004820152600f60248201526e4552525f4d494e5f42414c414e434560881b604482015260640161092f565b6001600160a01b0383166000908152601060205260409020600201548082111561528f5761522c6011546152278484613f49565b614831565b601155615242670de0b6b3a76400006032615b2b565b601154111561528a5760405162461bcd60e51b815260206004820152601460248201527311549497d3505617d513d5105317d5d15251d21560621b604482015260640161092f565b6152ab565b808210156152ab576152a76011546144138385613f49565b6011555b6001600160a01b038416600090815260106020526040902060028101839055600301805490849055808411156152f4576152ef85336152ea8785613f49565b614883565b615348565b808410156153485760006153088286613f49565b90506000615317826000613daa565b905061532d87336153288585613f49565b613fc6565b6002546153459088906001600160a01b031683613fc6565b50505b5050505050565b306000908152600760205260409020546153699082614831565b306000908152600760205260409020556009546153869082614831565b60095560405181815230906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906020016150e9565b6000670de0b6b3a76400006153d2836153dc565b610e8f9190615b2b565b6000610e8f670de0b6b3a764000083615b17565b600082816153ff600285615bb7565b61541157670de0b6b3a7640000615413565b815b9050615420600285615b17565b93505b8315611608576154338283613daa565b9150615440600285615bb7565b156154525761544f8183613daa565b90505b61545d600285615b17565b9350615423565b600082818061547b87670de0b6b3a7640000614fe6565b9092509050670de0b6b3a764000080600060015b8884106155455760006154aa670de0b6b3a764000083615b2b565b90506000806154ca8a6154c585670de0b6b3a7640000613f49565b614fe6565b915091506154dc876109e7848c613daa565b96506154e88784614719565b9650866154f757505050615545565b8715615501579315935b801561550b579315935b84156155225761551b8688613f49565b955061552f565b61552c8688614831565b95505b505050808061553d90615b9c565b91505061548f565b50909998505050505050505050565b80356001600160a01b038116811461307057600080fd5b8060408101831015610e8f57600080fd5b60008083601f84011261558e57600080fd5b50813567ffffffffffffffff8111156155a657600080fd5b6020830191508360208260051b850101111561501657600080fd5b6000602082840312156155d357600080fd5b613adc82615554565b600080604083850312156155ef57600080fd5b6155f883615554565b915061560660208401615554565b90509250929050565b600080600080600080600080610120898b03121561562c57600080fd5b61563589615554565b975061564360208a01615554565b9650604089013567ffffffffffffffff81111561565f57600080fd5b61566b8b828c0161557c565b909750955050606089013561567f81615c23565b9350608089013561568f81615c23565b925061569e8a60a08b0161556b565b91506156ad8a60e08b0161556b565b90509295985092959890939650565b6000806000606084860312156156d157600080fd5b6156da84615554565b92506156e860208501615554565b9150604084013590509250925092565b6000806040838503121561570b57600080fd5b61571483615554565b946020939093013593505050565b600080600080600060a0868803121561573a57600080fd5b61574386615554565b94506020860135935061575860408701615554565b94979396509394606081013594506080013592915050565b60008060006060848603121561578557600080fd5b61578e84615554565b95602085013595506040909401359392505050565b60008060008060008060c087890312156157bc57600080fd5b6157c587615554565b955060208701359450604087013593506157e160608801615554565b92506080870135915060a087013590509295509295509295565b60006020828403121561580d57600080fd5b8151613adc81615c23565b60006020828403121561582a57600080fd5b5035919050565b60006020828403121561584357600080fd5b5051919050565b60008060006040848603121561585f57600080fd5b83359250602084013567ffffffffffffffff81111561587d57600080fd5b6158898682870161557c565b9497909650939450505050565b600081518084526020808501945080840160005b838110156158cf5781516001600160a01b0316875295820195908201906001016158aa565b509495945050505050565b6001600160a01b039384168152919092166020820152604081019190915260600190565b602081526000613adc6020830184615896565b6040815260006159246040830185615896565b82810360208481019190915284518083528582019282019060005b8181101561595b5784518352938301939183019160010161593f565b5090979650505050505050565b600060208083528351808285015260005b8181101561599557858101830151858201604001528201615979565b818111156159a7576000604083870101525b50601f01601f1916929092016040019392505050565b60208082526010908201526f4552525f4d41585f494e5f524154494f60801b604082015260600190565b6020808252600f908201526e08aa4a4be9a82a890be82a0a0a49eb608b1b604082015260600190565b6020808252600d908201526c11549497d31253525517d3d555609a1b604082015260600190565b6020808252600c908201526b22a9292fa624a6a4aa2fa4a760a11b604082015260600190565b6020808252600b908201526a4552525f5245454e54525960a81b604082015260600190565b6020808252601190820152704552525f4d41585f4f55545f524154494f60781b604082015260600190565b6020808252600d908201526c11549497d393d517d093d55391609a1b604082015260600190565b60208082526011908201527011549497d393d517d19253905312569151607a1b604082015260600190565b60008219821115615b1257615b12615bcb565b500190565b600082615b2657615b26615be1565b500490565b6000816000190483118215151615615b4557615b45615bcb565b500290565b600082821015615b5c57615b5c615bcb565b500390565b600181811c90821680615b7557607f821691505b60208210811415615b9657634e487b7160e01b600052602260045260246000fd5b50919050565b6000600019821415615bb057615bb0615bcb565b5060010190565b600082615bc657615bc6615be1565b500690565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b8015158114613fb957600080fdfe9d9058fd2f25ccc389fec7720abef0ca83472f5abfafd5f10d37f51e6a0493f387b3975661762d852ddf2eeaad6a43b2d93777de7b3b7bdb634283df32456118fcda32798d5a9d032f49b37fea876d422f18f6e386e0f07db6029b693624b2c215a8ca63e37b2cff1677df2b6b82d36fcf8a524228bd7a4b4d02d107c28c1e8a8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925a264697066735822122073646db29623b1c8aa1c956fe0a883d1cba8c036c96a754e6ca1ede440838db964736f6c63430008070033", "linkReferences": {}, "deployedLinkReferences": {} -} +} \ No newline at end of file diff --git a/abis/ERC20Template.json b/abis/ERC20Template.json index c2a3a85..b82c453 100644 --- a/abis/ERC20Template.json +++ b/abis/ERC20Template.json @@ -1,1174 +1,1243 @@ { - "_format": "hh-sol-artifact-1", - "contractName": "ERC20Template", - "sourceName": "contracts/templates/ERC20Template.sol", - "abi": [ - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "user", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "signer", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "timestamp", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "blockNumber", - "type": "uint256" - } - ], - "name": "AddedFeeManager", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "user", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "signer", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "timestamp", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "blockNumber", - "type": "uint256" - } - ], - "name": "AddedMinter", - "type": "event" - }, - { - "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": "signer", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "timestamp", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "blockNumber", - "type": "uint256" - } - ], - "name": "CleanedPermissions", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "currentMinter", - "type": "address" - }, - { - "indexed": false, - "internalType": "address", - "name": "newMinter", - "type": "address" - } - ], - "name": "MinterApproved", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "currentMinter", - "type": "address" - }, - { - "indexed": false, - "internalType": "address", - "name": "newMinter", - "type": "address" - } - ], - "name": "MinterProposed", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "bytes32", - "name": "exchangeId", - "type": "bytes32" - }, - { - "indexed": false, - "internalType": "address", - "name": "owner", - "type": "address" - } - ], - "name": "NewFixedRate", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "poolAddress", - "type": "address" - }, - { - "indexed": false, - "internalType": "address", - "name": "ssContract", - "type": "address" - }, - { - "indexed": false, - "internalType": "address", - "name": "basetokenAddress", - "type": "address" - } - ], - "name": "NewPool", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "consumer", - "type": "address" - }, - { - "indexed": false, - "internalType": "address", - "name": "payer", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "amount", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "serviceId", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "timestamp", - "type": "uint256" - }, - { - "indexed": true, - "internalType": "address", - "name": "publishMarketAddress", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "consumeFeeMarketAddress", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "blockNumber", - "type": "uint256" - } - ], - "name": "OrderStarted", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "user", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "signer", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "timestamp", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "blockNumber", - "type": "uint256" - } - ], - "name": "RemovedFeeManager", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "user", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "signer", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "timestamp", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "blockNumber", - "type": "uint256" - } - ], - "name": "RemovedMinter", - "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" - }, - { - "stateMutability": "payable", - "type": "fallback" - }, - { - "inputs": [], - "name": "BASE", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "BASE_COMMUNITY_FEE_PERCENTAGE", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "DOMAIN_SEPARATOR", - "outputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "PERMIT_TYPEHASH", - "outputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "_feeManager", - "type": "address" - } - ], - "name": "addFeeManager", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "_minter", - "type": "address" - } - ], - "name": "addMinter", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "owner", - "type": "address" - }, - { - "internalType": "address", - "name": "spender", - "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": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "name": "authERC20", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "account", - "type": "address" - } - ], - "name": "balanceOf", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "amount", - "type": "uint256" - } - ], - "name": "burn", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "account", - "type": "address" - }, - { - "internalType": "uint256", - "name": "amount", - "type": "uint256" - } - ], - "name": "burnFrom", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "cap", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "cleanFrom721", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "cleanPermissions", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "_dispenser", - "type": "address" - }, - { - "internalType": "uint256", - "name": "maxTokens", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "maxBalance", - "type": "uint256" - }, - { - "internalType": "bool", - "name": "withMint", - "type": "bool" - }, - { - "internalType": "address", - "name": "allowedSwapper", - "type": "address" - } - ], - "name": "createDispenser", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "fixedPriceAddress", - "type": "address" - }, - { - "internalType": "address[]", - "name": "addresses", - "type": "address[]" - }, - { - "internalType": "uint256[]", - "name": "uints", - "type": "uint256[]" - } - ], - "name": "createFixedRate", - "outputs": [ - { - "internalType": "bytes32", - "name": "exchangeId", - "type": "bytes32" - } - ], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "decimals", - "outputs": [ - { - "internalType": "uint8", - "name": "", - "type": "uint8" - } - ], - "stateMutability": "pure", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "spender", - "type": "address" - }, - { - "internalType": "uint256", - "name": "subtractedValue", - "type": "uint256" - } - ], - "name": "decreaseAllowance", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256[]", - "name": "ssParams", - "type": "uint256[]" - }, - { - "internalType": "uint256[]", - "name": "swapFees", - "type": "uint256[]" - }, - { - "internalType": "address[]", - "name": "addresses", - "type": "address[]" - } - ], - "name": "deployPool", - "outputs": [ - { - "internalType": "address", - "name": "pool", - "type": "address" - } - ], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "getFeeCollector", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "getId", - "outputs": [ - { - "internalType": "uint8", - "name": "", - "type": "uint8" - } - ], - "stateMutability": "pure", - "type": "function" - }, - { - "inputs": [], - "name": "getPublishingMarketFee", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - }, - { - "internalType": "address", - "name": "", - "type": "address" - }, - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "spender", - "type": "address" - }, - { - "internalType": "uint256", - "name": "addedValue", - "type": "uint256" - } - ], - "name": "increaseAllowance", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "string[]", - "name": "strings_", - "type": "string[]" - }, - { - "internalType": "address[]", - "name": "addresses_", - "type": "address[]" - }, - { - "internalType": "address[]", - "name": "factoryAddresses_", - "type": "address[]" - }, - { - "internalType": "uint256[]", - "name": "uints_", - "type": "uint256[]" - }, - { - "internalType": "bytes[]", - "name": "bytes_", - "type": "bytes[]" - } - ], - "name": "initialize", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "isInitialized", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "account", - "type": "address" - } - ], - "name": "isMinter", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "account", - "type": "address" - }, - { - "internalType": "uint256", - "name": "value", - "type": "uint256" - } - ], - "name": "mint", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "name", - "outputs": [ - { - "internalType": "string", - "name": "", - "type": "string" - } - ], - "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": "", - "type": "address" - } - ], - "name": "permissions", - "outputs": [ - { - "internalType": "bool", - "name": "minter", - "type": "bool" - }, - { - "internalType": "bool", - "name": "feeManager", - "type": "bool" - } - ], - "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": [ - { - "internalType": "address", - "name": "_feeManager", - "type": "address" - } - ], - "name": "removeFeeManager", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "_minter", - "type": "address" - } - ], - "name": "removeMinter", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "router", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes", - "name": "_value", - "type": "bytes" - } - ], - "name": "setData", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "_newFeeCollector", - "type": "address" - } - ], - "name": "setFeeCollector", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "_publishMarketFeeAddress", - "type": "address" - }, - { - "internalType": "address", - "name": "_publishMarketFeeToken", - "type": "address" - }, - { - "internalType": "uint256", - "name": "_publishMarketFeeAmount", - "type": "uint256" - } - ], - "name": "setPublishingMarketFee", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "consumer", - "type": "address" - }, - { - "internalType": "uint256", - "name": "amount", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "serviceId", - "type": "uint256" - }, - { - "internalType": "address", - "name": "consumeFeeAddress", - "type": "address" - }, - { - "internalType": "address", - "name": "consumeFeeToken", - "type": "address" - }, - { - "internalType": "uint256", - "name": "consumeFeeAmount", - "type": "uint256" - } - ], - "name": "startOrder", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "symbol", - "outputs": [ - { - "internalType": "string", - "name": "", - "type": "string" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "totalSupply", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "recipient", - "type": "address" - }, - { - "internalType": "uint256", - "name": "amount", - "type": "uint256" - } - ], - "name": "transfer", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "sender", - "type": "address" - }, - { - "internalType": "address", - "name": "recipient", - "type": "address" - }, - { - "internalType": "uint256", - "name": "amount", - "type": "uint256" - } - ], - "name": "transferFrom", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "withdrawETH", - "outputs": [], - "stateMutability": "payable", - "type": "function" - } - ], - "bytecode": "0x6080604052600a805460ff60a01b191690553480156200001e57600080fd5b5060408051808201825260048152631d195cdd60e21b60208083019182528351808501909452600a8452691d195cdd14de5b589bdb60b21b9084015281519192916200006d916003916200008c565b508051620000839060049060208401906200008c565b5050506200016f565b8280546200009a9062000132565b90600052602060002090601f016020900481019282620000be576000855562000109565b82601f10620000d957805160ff191683800117855562000109565b8280016001018555821562000109579182015b8281111562000109578251825591602001919060010190620000ec565b50620001179291506200011b565b5090565b5b808211156200011757600081556001016200011c565b600181811c908216806200014757607f821691505b602082108114156200016957634e487b7160e01b600052602260045260246000fd5b50919050565b613f07806200017f6000396000f3fe6080604052600436106102525760003560e01c806370a0823111610138578063aa271e1a116100b0578063dd62ed3e11610077578063dd62ed3e14610787578063e086e5ec146107cd578063ec342ad0146107d5578063ef867ff4146107f1578063f887ea4014610811578063fda9dae71461083157005b8063aa271e1a146106d9578063ab62f0e114610712578063b2263a5d14610732578063b3998be014610747578063d505accf1461076757005b80638b96412b116100ff5780638b96412b1461062457806395d89b4114610644578063983b2d5614610659578063a42dce8014610679578063a457c2d714610699578063a9059cbb146106b957005b806370a082311461056c57806379cc6790146105a25780637ecebe00146105c25780638115c9cc146105ef57806382c03da51461060f57005b8063355274ea116101cb57806340c10f191161019257806340c10f19146104c357806342966c68146104e35780634f189cb21461050357806357ad5ff6146105185780635bfe4da0146105385780635d1ca6311461055857005b8063355274ea1461041d5780633644e51514610432578063392e53cd146104485780633950935114610467578063397b37431461048757005b8063191c918a1161021a578063191c918a146103475780631f2d32c31461036757806323b872dd146103875780633092afd5146103a757806330adf81f146103c7578063313ce567146103fb57005b806301e882081461025457806306fdde03146102a9578063095ea7b3146102cb57806312fde4b7146102fb57806318160ddd14610328575b005b34801561026057600080fd5b5061028d61026f366004613496565b60056020526000908152604090205460ff8082169161010090041682565b6040805192151583529015156020830152015b60405180910390f35b3480156102b557600080fd5b506102be610851565b6040516102a09190613bda565b3480156102d757600080fd5b506102eb6102e6366004613637565b6108e3565b60405190151581526020016102a0565b34801561030757600080fd5b506103106108f9565b6040516001600160a01b0390911681526020016102a0565b34801561033457600080fd5b506002545b6040519081526020016102a0565b34801561035357600080fd5b506102526103623660046136ca565b61099d565b34801561037357600080fd5b50610252610382366004613496565b610ae4565b34801561039357600080fd5b506102eb6103a2366004613509565b610b92565b3480156103b357600080fd5b506102526103c2366004613496565b610c3c565b3480156103d357600080fd5b506103397f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b34801561040757600080fd5b5060125b60405160ff90911681526020016102a0565b34801561042957600080fd5b50600954610339565b34801561043e57600080fd5b5061033960105481565b34801561045457600080fd5b50600a54600160a01b900460ff166102eb565b34801561047357600080fd5b506102eb610482366004613637565b610ce7565b34801561049357600080fd5b50600d54600e54600f54604080516001600160a01b039485168152939092166020840152908201526060016102a0565b3480156104cf57600080fd5b506102526104de366004613637565b610d23565b3480156104ef57600080fd5b506102526104fe3660046139c5565b610df9565b34801561050f57600080fd5b50610252610e03565b34801561052457600080fd5b50610252610533366004613509565b610ef9565b34801561054457600080fd5b5061031061055336600461381a565b610f9b565b34801561056457600080fd5b50600161040b565b34801561057857600080fd5b50610339610587366004613496565b6001600160a01b031660009081526020819052604090205490565b3480156105ae57600080fd5b506102526105bd366004613637565b6112a4565b3480156105ce57600080fd5b506103396105dd366004613496565b60116020526000908152604090205481565b3480156105fb57600080fd5b5061025261060a366004613496565b61132a565b34801561061b57600080fd5b506102526113d5565b34801561063057600080fd5b5061033961063f3660046135c1565b61142f565b34801561065057600080fd5b506102be6115f2565b34801561066557600080fd5b50610252610674366004613496565b611601565b34801561068557600080fd5b50610252610694366004613496565b6116ac565b3480156106a557600080fd5b506102eb6106b4366004613637565b611738565b3480156106c557600080fd5b506102eb6106d4366004613637565b6117d1565b3480156106e557600080fd5b506102eb6106f4366004613496565b6001600160a01b031660009081526005602052604090205460ff1690565b34801561071e57600080fd5b5061025261072d3660046138ce565b6117de565b34801561073e57600080fd5b50610339611923565b34801561075357600080fd5b506102eb610762366004613729565b611939565b34801561077357600080fd5b5061025261078236600461354a565b611a73565b34801561079357600080fd5b506103396107a23660046134d0565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b610252611c85565b3480156107e157600080fd5b50610339670de0b6b3a764000081565b3480156107fd57600080fd5b5061031061080c3660046139c5565b611cc5565b34801561081d57600080fd5b50601254610310906001600160a01b031681565b34801561083d57600080fd5b5061025261084c366004613663565b611cef565b60606007805461086090613e16565b80601f016020809104026020016040519081016040528092919081815260200182805461088c90613e16565b80156108d95780601f106108ae576101008083540402835291602001916108d9565b820191906000526020600020905b8154815290600101906020018083116108bc57829003601f168201915b5050505050905090565b60006108f0338484612548565b50600192915050565b600c546000906001600160a01b031661098d57600b546040516331a9108f60e11b8152600160048201526001600160a01b0390911690636352211e9060240160206040518083038186803b15801561095057600080fd5b505afa158015610964573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061098891906134b3565b905090565b50600c546001600160a01b031690565b600b5460405163160a792560e01b81523360048201526001600160a01b039091169063160a792590602401608060405180830381600087803b1580156109e257600080fd5b505af11580156109f6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a1a9190613940565b602001511515600114610a485760405162461bcd60e51b8152600401610a3f90613c2f565b60405180910390fd5b601254604051636b14d00560e11b81526001600160a01b038781166004830152306024830152604482018790526064820186905233608483015283811660a48301529091169063d629a00a9060c401600060405180830381600087803b158015610ab157600080fd5b505af1158015610ac5573d6000803e3d6000fd5b5050505081151560011415610add57610add8561266c565b5050505050565b600b5460405163160a792560e01b81523360048201526001600160a01b039091169063160a792590602401608060405180830381600087803b158015610b2957600080fd5b505af1158015610b3d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b619190613940565b602001511515600114610b865760405162461bcd60e51b8152600401610a3f90613c2f565b610b8f8161276e565b50565b6000610b9f84848461287c565b6001600160a01b038416600090815260016020908152604080832033845290915290205482811015610c245760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b6064820152608401610a3f565b610c318533858403612548565b506001949350505050565b600b5460405163160a792560e01b81523360048201526001600160a01b039091169063160a792590602401608060405180830381600087803b158015610c8157600080fd5b505af1158015610c95573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cb99190613940565b602001511515600114610cde5760405162461bcd60e51b8152600401610a3f90613c2f565b610b8f81612a4b565b3360008181526001602090815260408083206001600160a01b038716845290915281205490916108f0918590610d1e908690613cb9565b612548565b3360009081526005602052604090205460ff161515600114610d875760405162461bcd60e51b815260206004820152601960248201527f455243323054656d706c6174653a204e4f54204d494e544552000000000000006044820152606401610a3f565b600954610d9d82610d9760025490565b90612aab565b1115610deb5760405162461bcd60e51b815260206004820152601f60248201527f44617461546f6b656e54656d706c6174653a20636170206578636565646564006044820152606401610a3f565b610df58282612abe565b5050565b610b8f3382612b9d565b600b546040516331a9108f60e11b8152600160048201526001600160a01b0390911690636352211e9060240160206040518083038186803b158015610e4757600080fd5b505afa158015610e5b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e7f91906134b3565b6001600160a01b0316336001600160a01b031614610edf5760405162461bcd60e51b815260206004820152601b60248201527f455243323054656d706c6174653a206e6f74204e46544f776e657200000000006044820152606401610a3f565b610ee7612ceb565b600c80546001600160a01b0319169055565b600d546001600160a01b03163314610f665760405162461bcd60e51b815260206004820152602a60248201527f455243323054656d706c6174653a206e6f74207075626c6973684d61726b65746044820152694665654164647265737360b01b6064820152608401610a3f565b600d80546001600160a01b039485166001600160a01b031991821617909155600e805493909416921691909117909155600f55565b600b5460405163160a792560e01b81523360048201526000916001600160a01b03169063160a792590602401608060405180830381600087803b158015610fe157600080fd5b505af1158015610ff5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110199190613940565b60200151151560011461103e5760405162461bcd60e51b8152600401610a3f90613c2f565b6002541561109a5760405162461bcd60e51b8152602060048201526024808201527f455243323054656d706c6174653a20746f6b656e7320616c7265616479206d696044820152631b9d195960e21b6064820152608401610a3f565b6110bd826000815181106110b0576110b0613e82565b602002602001015161266c565b62250490846003815181106110d4576110d4613e82565b60200260200101511161113b5760405162461bcd60e51b815260206004820152602960248201527f455243323054656d706c6174653a206d696e696d756d20626c6f636b73206e6f6044820152681d081c995858da195960ba1b6064820152608401610a3f565b60006040518060400160405280306001600160a01b03166001600160a01b031681526020018460018151811061117357611173613e82565b60209081029190910101516001600160a01b0390811690915260125460405163ee3bc63560e01b8152929350169063ee3bc635906111bb908490899089908990600401613b2e565b602060405180830381600087803b1580156111d557600080fd5b505af11580156111e9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061120d91906134b3565b91507fd02da1bec30f7f750aa0a131745dfb9ce96767c45a192dc26409f5d690e0b967828460008151811061124457611244613e82565b60200260200101518560018151811061125f5761125f613e82565b6020026020010151604051611294939291906001600160a01b0393841681529183166020830152909116604082015260600190565b60405180910390a1509392505050565b60006112b083336107a2565b90508181101561130e5760405162461bcd60e51b8152602060048201526024808201527f45524332303a206275726e20616d6f756e74206578636565647320616c6c6f77604482015263616e636560e01b6064820152608401610a3f565b61131b8333848403612548565b6113258383612b9d565b505050565b600b5460405163160a792560e01b81523360048201526001600160a01b039091169063160a792590602401608060405180830381600087803b15801561136f57600080fd5b505af1158015611383573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113a79190613940565b6020015115156001146113cc5760405162461bcd60e51b8152600401610a3f90613c2f565b610b8f81612d9a565b600b546001600160a01b03163314610edf5760405162461bcd60e51b815260206004820152601f60248201527f455243323054656d706c6174653a204e4f542037323120436f6e7472616374006044820152606401610a3f565b600b5460405163160a792560e01b81523360048201526000916001600160a01b03169063160a792590602401608060405180830381600087803b15801561147557600080fd5b505af1158015611489573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114ad9190613940565b6020015115156001146114d25760405162461bcd60e51b8152600401610a3f90613c2f565b601254604051638244937560e01b81526001600160a01b039091169063824493759061150690879087908790600401613aee565b602060405180830381600087803b15801561152057600080fd5b505af1158015611534573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061155891906138b5565b905060008260048151811061156f5761156f613e82565b60200260200101511115611586576115868461266c565b7f195d202f33578769e120c3041341554af3193e67ee004175095bc9c06e6e616581846000815181106115bb576115bb613e82565b60200260200101516040516115e39291909182526001600160a01b0316602082015260400190565b60405180910390a19392505050565b60606008805461086090613e16565b600b5460405163160a792560e01b81523360048201526001600160a01b039091169063160a792590602401608060405180830381600087803b15801561164657600080fd5b505af115801561165a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061167e9190613940565b6020015115156001146116a35760405162461bcd60e51b8152600401610a3f90613c2f565b610b8f8161266c565b3360009081526005602052604090205460ff6101009091041615156001146117165760405162461bcd60e51b815260206004820152601e60248201527f455243323054656d706c6174653a204e4f5420464545204d414e4147455200006044820152606401610a3f565b600c80546001600160a01b0319166001600160a01b0392909216919091179055565b3360009081526001602090815260408083206001600160a01b0386168452909152812054828110156117ba5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610a3f565b6117c73385858403612548565b5060019392505050565b60006108f033848461287c565b600b5460405163160a792560e01b81523360048201526001600160a01b039091169063160a792590602401608060405180830381600087803b15801561182357600080fd5b505af1158015611837573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061185b9190613940565b6020015115156001146118805760405162461bcd60e51b8152600401610a3f90613c2f565b6040516bffffffffffffffffffffffff193060601b16602082015260009060340160408051601f19818403018152908290528051602090910120600b546301caf8fd60e31b83529092506001600160a01b031690630e57c7e8906118ec90849087908790600401613ba4565b600060405180830381600087803b15801561190657600080fd5b505af115801561191a573d6000803e3d6000fd5b50505050505050565b6119366064670de0b6b3a7640000613cd1565b81565b600a54600090600160a01b900460ff16156119b05760405162461bcd60e51b815260206004820152603160248201527f455243323054656d706c6174653a20746f6b656e20696e7374616e636520616c6044820152701c9958591e481a5b9a5d1a585b1a5e9959607a1b6064820152608401610a3f565b611a646119bd8b8d613d96565b8a8a8080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020808e0282810182019093528d82529093508d92508c91829185019084908082843760009201919091525050604080516020808d0282810182019093528c82529093508c92508b918291850190849080828437600092019190915250611a5f92508991508a9050613d0a565b612dfb565b9b9a5050505050505050505050565b42841015611ab65760405162461bcd60e51b815260206004820152601060248201526f115490cc8c11150e881156141254915160821b6044820152606401610a3f565b6010546001600160a01b038816600090815260116020526040812080549192917f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9918b918b918b919087611b0983613e51565b909155506040805160208101969096526001600160a01b0394851690860152929091166060840152608083015260a082015260c0810187905260e00160405160208183030381529060405280519060200120604051602001611b8292919061190160f01b81526002810192909252602282015260420190565b60408051601f198184030181528282528051602091820120600080855291840180845281905260ff88169284019290925260608301869052608083018590529092509060019060a0016020604051602081039080840390855afa158015611bed573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811615801590611c235750886001600160a01b0316816001600160a01b0316145b611c6f5760405162461bcd60e51b815260206004820152601a60248201527f455243323044543a20494e56414c49445f5349474e41545552450000000000006044820152606401610a3f565b611c7a898989612548565b505050505050505050565b611c8d6108f9565b6001600160a01b03166108fc479081150290604051600060405180830381858888f19350505050158015610b8f573d6000803e3d6000fd5b60068181548110611cd557600080fd5b6000918252602090912001546001600160a01b0316905081565b336000908152602081905260408120548190871115611d5e5760405162461bcd60e51b815260206004820152602560248201527f4e6f7420656e6f756768204461746120546f6b656e7320746f2073746172742060448201526427b93232b960d91b6064820152608401610a3f565b6000600f54118015611d7a5750600e546001600160a01b031615155b8015611d905750600d546001600160a01b031615155b15611f9957600e54600f546040516323b872dd60e01b815233600482015230602482015260448101919091526001600160a01b03909116906323b872dd90606401602060405180830381600087803b158015611deb57600080fd5b505af1158015611dff573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e239190613898565b611e7b5760405162461bcd60e51b815260206004820152602360248201527f4661696c656420746f207472616e73666572207075626c6973684d61726b657460448201526246656560e81b6064820152608401610a3f565b600f54611e89906064613248565b600e54600d54600f549293506001600160a01b039182169263a9059cbb9290911690611eb59085613254565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401602060405180830381600087803b158015611efb57600080fd5b505af1158015611f0f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f339190613898565b611f995760405162461bcd60e51b815260206004820152603160248201527f4661696c656420746f207472616e736665722066656520746f207075626c6973604482015270684d61726b65744665654164647265737360781b6064820152608401610a3f565b600083118015611fb157506001600160a01b03841615155b8015611fc557506001600160a01b03851615155b156121a1576040516323b872dd60e01b8152336004820152306024820152604481018490526001600160a01b038516906323b872dd90606401602060405180830381600087803b15801561201857600080fd5b505af115801561202c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120509190613898565b61209c5760405162461bcd60e51b815260206004820152601d60248201527f4661696c656420746f207472616e7366657220636f6e73756d654665650000006044820152606401610a3f565b6120a7836064613248565b91506001600160a01b03841663a9059cbb866120c38686613254565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401602060405180830381600087803b15801561210957600080fd5b505af115801561211d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121419190613898565b6121a15760405162461bcd60e51b815260206004820152602b60248201527f4661696c656420746f207472616e736665722066656520746f20636f6e73756d60448201526a654665654164647265737360a81b6064820152608401610a3f565b6000811180156121b15750600082115b80156121ca5750600e546001600160a01b038581169116145b156122ca57600a546001600160a01b038086169163a9059cbb91166121ef8486612aab565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401602060405180830381600087803b15801561223557600080fd5b505af1158015612249573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061226d9190613898565b6122c55760405162461bcd60e51b815260206004820152602360248201527f4661696c656420746f207472616e7366657220626f7468206665657320746f2060448201526227a82360e91b6064820152608401610a3f565b6124c9565b6000811180156122e45750600e546001600160a01b031615155b156123cc57600e54600a5460405163a9059cbb60e01b81526001600160a01b0391821660048201526024810184905291169063a9059cbb90604401602060405180830381600087803b15801561233957600080fd5b505af115801561234d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123719190613898565b6123cc5760405162461bcd60e51b815260206004820152602660248201527f4661696c656420746f207472616e73666572207075626c6973682066656573206044820152653a379027a82360d11b6064820152608401610a3f565b6000821180156123e457506001600160a01b03841615155b156124c957600a5460405163a9059cbb60e01b81526001600160a01b039182166004820152602481018490529085169063a9059cbb90604401602060405180830381600087803b15801561243757600080fd5b505af115801561244b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061246f9190613898565b6124c95760405162461bcd60e51b815260206004820152602560248201527f4661696c656420746f207472616e7366657220636f6e73756d65206665652074604482015264379027a82360d91b6064820152608401610a3f565b6124da6124d46108f9565b886117d1565b50600d5460408051338152602081018a90529081018890524260608201524360808201526001600160a01b0387811692811691908b16907fb07adb6a34680ecbbc7935971c45a07b9baf67ce5dc57332d51e3a5745c9e9639060a00160405180910390a45050505050505050565b6001600160a01b0383166125aa5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610a3f565b6001600160a01b03821661260b5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610a3f565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0381166000908152600560205260409020805460ff16156126d65760405162461bcd60e51b815260206004820152601d60248201527f4552433230526f6c65733a2020414c52454144592041204d494e5445520000006044820152606401610a3f565b8054600160ff19909116811782556006805491820181556000527ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f0180546001600160a01b0319166001600160a01b038416908117909155604080514281524360208201523392917f4f7e100eb1ee13e903798bd0d6aa854152e07eb05544f392b9409c12935c809591015b60405180910390a35050565b6001600160a01b03811660009081526005602052604090208054610100900460ff16156127e85760405162461bcd60e51b815260206004820152602260248201527f4552433230526f6c65733a2020414c5245414459204120464545204d414e414760448201526122a960f11b6064820152608401610a3f565b805461ff001916610100178155600680546001810182556000919091527ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f0180546001600160a01b0384166001600160a01b03199091168117909155604080514281524360208201523392917f5b0831b6bc7ca878cadad8a6b96869b9db121df456a859f03261d13f4d08204b9101612762565b6001600160a01b0383166128e05760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610a3f565b6001600160a01b0382166129425760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610a3f565b6001600160a01b038316600090815260208190526040902054818110156129ba5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610a3f565b6001600160a01b038085166000908152602081905260408082208585039055918516815290812080548492906129f1908490613cb9565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612a3d91815260200190565b60405180910390a350505050565b6001600160a01b03811660008181526005602052604090819020805460ff191681559051909133917fefa2735987005aaa89c050c0ff8cc9ae7d9079d19382081c429130f98c52d480906127629042904390918252602082015260400190565b6000612ab78284613cb9565b9392505050565b6001600160a01b038216612b145760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610a3f565b8060026000828254612b269190613cb9565b90915550506001600160a01b03821660009081526020819052604081208054839290612b53908490613cb9565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6001600160a01b038216612bfd5760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608401610a3f565b6001600160a01b03821660009081526020819052604090205481811015612c715760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152608401610a3f565b6001600160a01b0383166000908152602081905260408120838303905560028054849290612ca0908490613cf3565b90915550506040518281526000906001600160a01b038516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3505050565b60005b600654811015612d515760006005600060068481548110612d1157612d11613e82565b60009182526020808320909101546001600160a01b031683528201929092526040019020805461ffff191690555080612d4981613e51565b915050612cee565b50612d5e60066000613260565b6040805142815243602082015233917f712bc71db81927a76b8bf1ea346247bb0ad58f18e4e5c1bd4aa0ec6573e02a2b910160405180910390a2565b6001600160a01b03811660008181526005602052604090819020805461ff00191681559051909133917fc6148ac08e050e2098c5d953dffbbf54d7eae1a56b8d894015268bfc2dff5b6a906127629042904390918252602082015260400190565b60008084600081518110612e1157612e11613e82565b60200260200101519050600085600181518110612e3057612e30613e82565b6020026020010151905060006001600160a01b0316826001600160a01b03161415612eb25760405162461bcd60e51b815260206004820152602c60248201527f455243323054656d706c6174653a20496e76616c6964206d696e7465722c202060448201526b7a65726f206164647265737360a01b6064820152608401610a3f565b6001600160a01b038116612f2e5760405162461bcd60e51b815260206004820152603c60248201527f455243323054656d706c6174653a20496e76616c696420636f6d6d756e69747960448201527f2066656520636f6c6c6563746f722c207a65726f2061646472657373000000006064820152608401610a3f565b84600081518110612f4157612f41613e82565b602002602001015160001415612fa55760405162461bcd60e51b8152602060048201526024808201527f44617461546f6b656e54656d706c6174653a20496e76616c6964206361702076604482015263616c756560e01b6064820152608401610a3f565b84600081518110612fb857612fb8613e82565b602002602001015160098190555087600081518110612fd957612fd9613e82565b602002602001015160079080519060200190612ff692919061327e565b508760018151811061300a5761300a613e82565b60200260200101516008908051906020019061302792919061327e565b50600b80546001600160a01b0319166001600160a01b03841617905585518690600290811061305857613058613e82565b6020908102919091010151601280546001600160a01b039283166001600160a01b0319909116179055600a80546001600160a81b03191691831691909117600160a01b17905586516130b59088906000906110b0576110b0613e82565b6130d8876001815181106130cb576130cb613e82565b602002602001015161276e565b866002815181106130eb576130eb613e82565b6020026020010151600d60006101000a8154816001600160a01b0302191690836001600160a01b031602179055508660038151811061312c5761312c613e82565b6020026020010151600e60006101000a8154816001600160a01b0302191690836001600160a01b031602179055508460018151811061316d5761316d613e82565b6020026020010151600f8190555060004690507f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60076040516131b09190613a52565b60408051918290038220828201825260018352603160f81b6020938401528151928301939093528101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc66060820152608081018290523060a082015260c00160408051808303601f1901815291905280516020909101206010555050600a54600160a01b900460ff16979650505050505050565b6000612ab78284613cd1565b6000612ab78284613cf3565b5080546000825590600052602060002090810190610b8f9190613302565b82805461328a90613e16565b90600052602060002090601f0160209004810192826132ac57600085556132f2565b82601f106132c557805160ff19168380011785556132f2565b828001600101855582156132f2579182015b828111156132f25782518255916020019190600101906132d7565b506132fe929150613302565b5090565b5b808211156132fe5760008155600101613303565b600067ffffffffffffffff83111561333157613331613e98565b613344601f8401601f1916602001613c64565b905082815283838301111561335857600080fd5b828260208301376000602084830101529392505050565b60008083601f84011261338157600080fd5b50813567ffffffffffffffff81111561339957600080fd5b6020830191508360208260051b85010111156133b457600080fd5b9250929050565b600082601f8301126133cc57600080fd5b813560206133e16133dc83613c95565b613c64565b80838252828201915082860187848660051b890101111561340157600080fd5b60005b8581101561342957813561341781613eae565b84529284019290840190600101613404565b5090979650505050505050565b600082601f83011261344757600080fd5b813560206134576133dc83613c95565b80838252828201915082860187848660051b890101111561347757600080fd5b60005b858110156134295781358452928401929084019060010161347a565b6000602082840312156134a857600080fd5b8135612ab781613eae565b6000602082840312156134c557600080fd5b8151612ab781613eae565b600080604083850312156134e357600080fd5b82356134ee81613eae565b915060208301356134fe81613eae565b809150509250929050565b60008060006060848603121561351e57600080fd5b833561352981613eae565b9250602084013561353981613eae565b929592945050506040919091013590565b600080600080600080600060e0888a03121561356557600080fd5b873561357081613eae565b9650602088013561358081613eae565b95506040880135945060608801359350608088013560ff811681146135a457600080fd5b9699959850939692959460a0840135945060c09093013592915050565b6000806000606084860312156135d657600080fd5b83356135e181613eae565b9250602084013567ffffffffffffffff808211156135fe57600080fd5b61360a878388016133bb565b9350604086013591508082111561362057600080fd5b5061362d86828701613436565b9150509250925092565b6000806040838503121561364a57600080fd5b823561365581613eae565b946020939093013593505050565b60008060008060008060c0878903121561367c57600080fd5b863561368781613eae565b9550602087013594506040870135935060608701356136a581613eae565b925060808701356136b581613eae565b8092505060a087013590509295509295509295565b600080600080600060a086880312156136e257600080fd5b85356136ed81613eae565b94506020860135935060408601359250606086013561370b81613ec3565b9150608086013561371b81613eae565b809150509295509295909350565b60008060008060008060008060008060a08b8d03121561374857600080fd5b8a3567ffffffffffffffff8082111561376057600080fd5b61376c8e838f0161336f565b909c509a5060208d013591508082111561378557600080fd5b6137918e838f0161336f565b909a50985060408d01359150808211156137aa57600080fd5b6137b68e838f0161336f565b909850965060608d01359150808211156137cf57600080fd5b6137db8e838f0161336f565b909650945060808d01359150808211156137f457600080fd5b506138018d828e0161336f565b915080935050809150509295989b9194979a5092959850565b60008060006060848603121561382f57600080fd5b833567ffffffffffffffff8082111561384757600080fd5b61385387838801613436565b9450602086013591508082111561386957600080fd5b61387587838801613436565b9350604086013591508082111561388b57600080fd5b5061362d868287016133bb565b6000602082840312156138aa57600080fd5b8151612ab781613ec3565b6000602082840312156138c757600080fd5b5051919050565b600080602083850312156138e157600080fd5b823567ffffffffffffffff808211156138f957600080fd5b818501915085601f83011261390d57600080fd5b81358181111561391c57600080fd5b86602082850101111561392e57600080fd5b60209290920196919550909350505050565b60006080828403121561395257600080fd5b6040516080810181811067ffffffffffffffff8211171561397557613975613e98565b604052825161398381613ec3565b8152602083015161399381613ec3565b602082015260408301516139a681613ec3565b604082015260608301516139b981613ec3565b60608201529392505050565b6000602082840312156139d757600080fd5b5035919050565b600081518084526020808501945080840160005b83811015613a175781516001600160a01b0316875295820195908201906001016139f2565b509495945050505050565b600081518084526020808501945080840160005b83811015613a1757815187529582019590820190600101613a36565b600080835481600182811c915080831680613a6e57607f831692505b6020808410821415613a8e57634e487b7160e01b86526022600452602486fd5b818015613aa25760018114613ab357613ae0565b60ff19861689528489019650613ae0565b60008a81526020902060005b86811015613ad85781548b820152908501908301613abf565b505084890196505b509498975050505050505050565b6001600160a01b0384168152606060208201819052600090613b12908301856139de565b8281036040840152613b248185613a22565b9695505050505050565b60008186825b6002811015613b5c5781516001600160a01b0316835260209283019290910190600101613b34565b50505060a06040830152613b7360a0830186613a22565b8281036060840152613b858186613a22565b90508281036080840152613b9981856139de565b979650505050505050565b83815260406020820152816040820152818360608301376000818301606090810191909152601f909201601f1916010192915050565b600060208083528351808285015260005b81811015613c0757858101830151858201604001528201613beb565b81811115613c19576000604083870101525b50601f01601f1916929092016040019392505050565b6020808252818101527f455243323054656d706c6174653a204e4f54204445504c4f59455220524f4c45604082015260600190565b604051601f8201601f1916810167ffffffffffffffff81118282101715613c8d57613c8d613e98565b604052919050565b600067ffffffffffffffff821115613caf57613caf613e98565b5060051b60200190565b60008219821115613ccc57613ccc613e6c565b500190565b600082613cee57634e487b7160e01b600052601260045260246000fd5b500490565b600082821015613d0557613d05613e6c565b500390565b6000613d186133dc84613c95565b808482526020808301925084368760051b87011115613d3657600080fd5b60005b87811015613d8a57813567ffffffffffffffff811115613d5857600080fd5b870136601f820112613d6957600080fd5b613d77368235868401613317565b8652509382019390820190600101613d39565b50919695505050505050565b6000613da46133dc84613c95565b808482526020808301925084368760051b87011115613dc257600080fd5b60005b87811015613d8a57813567ffffffffffffffff811115613de457600080fd5b870136601f820112613df557600080fd5b613e03368235868401613317565b8652509382019390820190600101613dc5565b600181811c90821680613e2a57607f821691505b60208210811415613e4b57634e487b7160e01b600052602260045260246000fd5b50919050565b6000600019821415613e6557613e65613e6c565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b0381168114610b8f57600080fd5b8015158114610b8f57600080fdfea2646970667358221220168b31cc6fab32fdd684bd93720e0104e156ada91ff56e4fb12452539769f78964736f6c63430008070033", - "deployedBytecode": "0x6080604052600436106102525760003560e01c806370a0823111610138578063aa271e1a116100b0578063dd62ed3e11610077578063dd62ed3e14610787578063e086e5ec146107cd578063ec342ad0146107d5578063ef867ff4146107f1578063f887ea4014610811578063fda9dae71461083157005b8063aa271e1a146106d9578063ab62f0e114610712578063b2263a5d14610732578063b3998be014610747578063d505accf1461076757005b80638b96412b116100ff5780638b96412b1461062457806395d89b4114610644578063983b2d5614610659578063a42dce8014610679578063a457c2d714610699578063a9059cbb146106b957005b806370a082311461056c57806379cc6790146105a25780637ecebe00146105c25780638115c9cc146105ef57806382c03da51461060f57005b8063355274ea116101cb57806340c10f191161019257806340c10f19146104c357806342966c68146104e35780634f189cb21461050357806357ad5ff6146105185780635bfe4da0146105385780635d1ca6311461055857005b8063355274ea1461041d5780633644e51514610432578063392e53cd146104485780633950935114610467578063397b37431461048757005b8063191c918a1161021a578063191c918a146103475780631f2d32c31461036757806323b872dd146103875780633092afd5146103a757806330adf81f146103c7578063313ce567146103fb57005b806301e882081461025457806306fdde03146102a9578063095ea7b3146102cb57806312fde4b7146102fb57806318160ddd14610328575b005b34801561026057600080fd5b5061028d61026f366004613496565b60056020526000908152604090205460ff8082169161010090041682565b6040805192151583529015156020830152015b60405180910390f35b3480156102b557600080fd5b506102be610851565b6040516102a09190613bda565b3480156102d757600080fd5b506102eb6102e6366004613637565b6108e3565b60405190151581526020016102a0565b34801561030757600080fd5b506103106108f9565b6040516001600160a01b0390911681526020016102a0565b34801561033457600080fd5b506002545b6040519081526020016102a0565b34801561035357600080fd5b506102526103623660046136ca565b61099d565b34801561037357600080fd5b50610252610382366004613496565b610ae4565b34801561039357600080fd5b506102eb6103a2366004613509565b610b92565b3480156103b357600080fd5b506102526103c2366004613496565b610c3c565b3480156103d357600080fd5b506103397f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b34801561040757600080fd5b5060125b60405160ff90911681526020016102a0565b34801561042957600080fd5b50600954610339565b34801561043e57600080fd5b5061033960105481565b34801561045457600080fd5b50600a54600160a01b900460ff166102eb565b34801561047357600080fd5b506102eb610482366004613637565b610ce7565b34801561049357600080fd5b50600d54600e54600f54604080516001600160a01b039485168152939092166020840152908201526060016102a0565b3480156104cf57600080fd5b506102526104de366004613637565b610d23565b3480156104ef57600080fd5b506102526104fe3660046139c5565b610df9565b34801561050f57600080fd5b50610252610e03565b34801561052457600080fd5b50610252610533366004613509565b610ef9565b34801561054457600080fd5b5061031061055336600461381a565b610f9b565b34801561056457600080fd5b50600161040b565b34801561057857600080fd5b50610339610587366004613496565b6001600160a01b031660009081526020819052604090205490565b3480156105ae57600080fd5b506102526105bd366004613637565b6112a4565b3480156105ce57600080fd5b506103396105dd366004613496565b60116020526000908152604090205481565b3480156105fb57600080fd5b5061025261060a366004613496565b61132a565b34801561061b57600080fd5b506102526113d5565b34801561063057600080fd5b5061033961063f3660046135c1565b61142f565b34801561065057600080fd5b506102be6115f2565b34801561066557600080fd5b50610252610674366004613496565b611601565b34801561068557600080fd5b50610252610694366004613496565b6116ac565b3480156106a557600080fd5b506102eb6106b4366004613637565b611738565b3480156106c557600080fd5b506102eb6106d4366004613637565b6117d1565b3480156106e557600080fd5b506102eb6106f4366004613496565b6001600160a01b031660009081526005602052604090205460ff1690565b34801561071e57600080fd5b5061025261072d3660046138ce565b6117de565b34801561073e57600080fd5b50610339611923565b34801561075357600080fd5b506102eb610762366004613729565b611939565b34801561077357600080fd5b5061025261078236600461354a565b611a73565b34801561079357600080fd5b506103396107a23660046134d0565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b610252611c85565b3480156107e157600080fd5b50610339670de0b6b3a764000081565b3480156107fd57600080fd5b5061031061080c3660046139c5565b611cc5565b34801561081d57600080fd5b50601254610310906001600160a01b031681565b34801561083d57600080fd5b5061025261084c366004613663565b611cef565b60606007805461086090613e16565b80601f016020809104026020016040519081016040528092919081815260200182805461088c90613e16565b80156108d95780601f106108ae576101008083540402835291602001916108d9565b820191906000526020600020905b8154815290600101906020018083116108bc57829003601f168201915b5050505050905090565b60006108f0338484612548565b50600192915050565b600c546000906001600160a01b031661098d57600b546040516331a9108f60e11b8152600160048201526001600160a01b0390911690636352211e9060240160206040518083038186803b15801561095057600080fd5b505afa158015610964573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061098891906134b3565b905090565b50600c546001600160a01b031690565b600b5460405163160a792560e01b81523360048201526001600160a01b039091169063160a792590602401608060405180830381600087803b1580156109e257600080fd5b505af11580156109f6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a1a9190613940565b602001511515600114610a485760405162461bcd60e51b8152600401610a3f90613c2f565b60405180910390fd5b601254604051636b14d00560e11b81526001600160a01b038781166004830152306024830152604482018790526064820186905233608483015283811660a48301529091169063d629a00a9060c401600060405180830381600087803b158015610ab157600080fd5b505af1158015610ac5573d6000803e3d6000fd5b5050505081151560011415610add57610add8561266c565b5050505050565b600b5460405163160a792560e01b81523360048201526001600160a01b039091169063160a792590602401608060405180830381600087803b158015610b2957600080fd5b505af1158015610b3d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b619190613940565b602001511515600114610b865760405162461bcd60e51b8152600401610a3f90613c2f565b610b8f8161276e565b50565b6000610b9f84848461287c565b6001600160a01b038416600090815260016020908152604080832033845290915290205482811015610c245760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b6064820152608401610a3f565b610c318533858403612548565b506001949350505050565b600b5460405163160a792560e01b81523360048201526001600160a01b039091169063160a792590602401608060405180830381600087803b158015610c8157600080fd5b505af1158015610c95573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cb99190613940565b602001511515600114610cde5760405162461bcd60e51b8152600401610a3f90613c2f565b610b8f81612a4b565b3360008181526001602090815260408083206001600160a01b038716845290915281205490916108f0918590610d1e908690613cb9565b612548565b3360009081526005602052604090205460ff161515600114610d875760405162461bcd60e51b815260206004820152601960248201527f455243323054656d706c6174653a204e4f54204d494e544552000000000000006044820152606401610a3f565b600954610d9d82610d9760025490565b90612aab565b1115610deb5760405162461bcd60e51b815260206004820152601f60248201527f44617461546f6b656e54656d706c6174653a20636170206578636565646564006044820152606401610a3f565b610df58282612abe565b5050565b610b8f3382612b9d565b600b546040516331a9108f60e11b8152600160048201526001600160a01b0390911690636352211e9060240160206040518083038186803b158015610e4757600080fd5b505afa158015610e5b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e7f91906134b3565b6001600160a01b0316336001600160a01b031614610edf5760405162461bcd60e51b815260206004820152601b60248201527f455243323054656d706c6174653a206e6f74204e46544f776e657200000000006044820152606401610a3f565b610ee7612ceb565b600c80546001600160a01b0319169055565b600d546001600160a01b03163314610f665760405162461bcd60e51b815260206004820152602a60248201527f455243323054656d706c6174653a206e6f74207075626c6973684d61726b65746044820152694665654164647265737360b01b6064820152608401610a3f565b600d80546001600160a01b039485166001600160a01b031991821617909155600e805493909416921691909117909155600f55565b600b5460405163160a792560e01b81523360048201526000916001600160a01b03169063160a792590602401608060405180830381600087803b158015610fe157600080fd5b505af1158015610ff5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110199190613940565b60200151151560011461103e5760405162461bcd60e51b8152600401610a3f90613c2f565b6002541561109a5760405162461bcd60e51b8152602060048201526024808201527f455243323054656d706c6174653a20746f6b656e7320616c7265616479206d696044820152631b9d195960e21b6064820152608401610a3f565b6110bd826000815181106110b0576110b0613e82565b602002602001015161266c565b62250490846003815181106110d4576110d4613e82565b60200260200101511161113b5760405162461bcd60e51b815260206004820152602960248201527f455243323054656d706c6174653a206d696e696d756d20626c6f636b73206e6f6044820152681d081c995858da195960ba1b6064820152608401610a3f565b60006040518060400160405280306001600160a01b03166001600160a01b031681526020018460018151811061117357611173613e82565b60209081029190910101516001600160a01b0390811690915260125460405163ee3bc63560e01b8152929350169063ee3bc635906111bb908490899089908990600401613b2e565b602060405180830381600087803b1580156111d557600080fd5b505af11580156111e9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061120d91906134b3565b91507fd02da1bec30f7f750aa0a131745dfb9ce96767c45a192dc26409f5d690e0b967828460008151811061124457611244613e82565b60200260200101518560018151811061125f5761125f613e82565b6020026020010151604051611294939291906001600160a01b0393841681529183166020830152909116604082015260600190565b60405180910390a1509392505050565b60006112b083336107a2565b90508181101561130e5760405162461bcd60e51b8152602060048201526024808201527f45524332303a206275726e20616d6f756e74206578636565647320616c6c6f77604482015263616e636560e01b6064820152608401610a3f565b61131b8333848403612548565b6113258383612b9d565b505050565b600b5460405163160a792560e01b81523360048201526001600160a01b039091169063160a792590602401608060405180830381600087803b15801561136f57600080fd5b505af1158015611383573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113a79190613940565b6020015115156001146113cc5760405162461bcd60e51b8152600401610a3f90613c2f565b610b8f81612d9a565b600b546001600160a01b03163314610edf5760405162461bcd60e51b815260206004820152601f60248201527f455243323054656d706c6174653a204e4f542037323120436f6e7472616374006044820152606401610a3f565b600b5460405163160a792560e01b81523360048201526000916001600160a01b03169063160a792590602401608060405180830381600087803b15801561147557600080fd5b505af1158015611489573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114ad9190613940565b6020015115156001146114d25760405162461bcd60e51b8152600401610a3f90613c2f565b601254604051638244937560e01b81526001600160a01b039091169063824493759061150690879087908790600401613aee565b602060405180830381600087803b15801561152057600080fd5b505af1158015611534573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061155891906138b5565b905060008260048151811061156f5761156f613e82565b60200260200101511115611586576115868461266c565b7f195d202f33578769e120c3041341554af3193e67ee004175095bc9c06e6e616581846000815181106115bb576115bb613e82565b60200260200101516040516115e39291909182526001600160a01b0316602082015260400190565b60405180910390a19392505050565b60606008805461086090613e16565b600b5460405163160a792560e01b81523360048201526001600160a01b039091169063160a792590602401608060405180830381600087803b15801561164657600080fd5b505af115801561165a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061167e9190613940565b6020015115156001146116a35760405162461bcd60e51b8152600401610a3f90613c2f565b610b8f8161266c565b3360009081526005602052604090205460ff6101009091041615156001146117165760405162461bcd60e51b815260206004820152601e60248201527f455243323054656d706c6174653a204e4f5420464545204d414e4147455200006044820152606401610a3f565b600c80546001600160a01b0319166001600160a01b0392909216919091179055565b3360009081526001602090815260408083206001600160a01b0386168452909152812054828110156117ba5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610a3f565b6117c73385858403612548565b5060019392505050565b60006108f033848461287c565b600b5460405163160a792560e01b81523360048201526001600160a01b039091169063160a792590602401608060405180830381600087803b15801561182357600080fd5b505af1158015611837573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061185b9190613940565b6020015115156001146118805760405162461bcd60e51b8152600401610a3f90613c2f565b6040516bffffffffffffffffffffffff193060601b16602082015260009060340160408051601f19818403018152908290528051602090910120600b546301caf8fd60e31b83529092506001600160a01b031690630e57c7e8906118ec90849087908790600401613ba4565b600060405180830381600087803b15801561190657600080fd5b505af115801561191a573d6000803e3d6000fd5b50505050505050565b6119366064670de0b6b3a7640000613cd1565b81565b600a54600090600160a01b900460ff16156119b05760405162461bcd60e51b815260206004820152603160248201527f455243323054656d706c6174653a20746f6b656e20696e7374616e636520616c6044820152701c9958591e481a5b9a5d1a585b1a5e9959607a1b6064820152608401610a3f565b611a646119bd8b8d613d96565b8a8a8080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020808e0282810182019093528d82529093508d92508c91829185019084908082843760009201919091525050604080516020808d0282810182019093528c82529093508c92508b918291850190849080828437600092019190915250611a5f92508991508a9050613d0a565b612dfb565b9b9a5050505050505050505050565b42841015611ab65760405162461bcd60e51b815260206004820152601060248201526f115490cc8c11150e881156141254915160821b6044820152606401610a3f565b6010546001600160a01b038816600090815260116020526040812080549192917f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9918b918b918b919087611b0983613e51565b909155506040805160208101969096526001600160a01b0394851690860152929091166060840152608083015260a082015260c0810187905260e00160405160208183030381529060405280519060200120604051602001611b8292919061190160f01b81526002810192909252602282015260420190565b60408051601f198184030181528282528051602091820120600080855291840180845281905260ff88169284019290925260608301869052608083018590529092509060019060a0016020604051602081039080840390855afa158015611bed573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811615801590611c235750886001600160a01b0316816001600160a01b0316145b611c6f5760405162461bcd60e51b815260206004820152601a60248201527f455243323044543a20494e56414c49445f5349474e41545552450000000000006044820152606401610a3f565b611c7a898989612548565b505050505050505050565b611c8d6108f9565b6001600160a01b03166108fc479081150290604051600060405180830381858888f19350505050158015610b8f573d6000803e3d6000fd5b60068181548110611cd557600080fd5b6000918252602090912001546001600160a01b0316905081565b336000908152602081905260408120548190871115611d5e5760405162461bcd60e51b815260206004820152602560248201527f4e6f7420656e6f756768204461746120546f6b656e7320746f2073746172742060448201526427b93232b960d91b6064820152608401610a3f565b6000600f54118015611d7a5750600e546001600160a01b031615155b8015611d905750600d546001600160a01b031615155b15611f9957600e54600f546040516323b872dd60e01b815233600482015230602482015260448101919091526001600160a01b03909116906323b872dd90606401602060405180830381600087803b158015611deb57600080fd5b505af1158015611dff573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e239190613898565b611e7b5760405162461bcd60e51b815260206004820152602360248201527f4661696c656420746f207472616e73666572207075626c6973684d61726b657460448201526246656560e81b6064820152608401610a3f565b600f54611e89906064613248565b600e54600d54600f549293506001600160a01b039182169263a9059cbb9290911690611eb59085613254565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401602060405180830381600087803b158015611efb57600080fd5b505af1158015611f0f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f339190613898565b611f995760405162461bcd60e51b815260206004820152603160248201527f4661696c656420746f207472616e736665722066656520746f207075626c6973604482015270684d61726b65744665654164647265737360781b6064820152608401610a3f565b600083118015611fb157506001600160a01b03841615155b8015611fc557506001600160a01b03851615155b156121a1576040516323b872dd60e01b8152336004820152306024820152604481018490526001600160a01b038516906323b872dd90606401602060405180830381600087803b15801561201857600080fd5b505af115801561202c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120509190613898565b61209c5760405162461bcd60e51b815260206004820152601d60248201527f4661696c656420746f207472616e7366657220636f6e73756d654665650000006044820152606401610a3f565b6120a7836064613248565b91506001600160a01b03841663a9059cbb866120c38686613254565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401602060405180830381600087803b15801561210957600080fd5b505af115801561211d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121419190613898565b6121a15760405162461bcd60e51b815260206004820152602b60248201527f4661696c656420746f207472616e736665722066656520746f20636f6e73756d60448201526a654665654164647265737360a81b6064820152608401610a3f565b6000811180156121b15750600082115b80156121ca5750600e546001600160a01b038581169116145b156122ca57600a546001600160a01b038086169163a9059cbb91166121ef8486612aab565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401602060405180830381600087803b15801561223557600080fd5b505af1158015612249573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061226d9190613898565b6122c55760405162461bcd60e51b815260206004820152602360248201527f4661696c656420746f207472616e7366657220626f7468206665657320746f2060448201526227a82360e91b6064820152608401610a3f565b6124c9565b6000811180156122e45750600e546001600160a01b031615155b156123cc57600e54600a5460405163a9059cbb60e01b81526001600160a01b0391821660048201526024810184905291169063a9059cbb90604401602060405180830381600087803b15801561233957600080fd5b505af115801561234d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123719190613898565b6123cc5760405162461bcd60e51b815260206004820152602660248201527f4661696c656420746f207472616e73666572207075626c6973682066656573206044820152653a379027a82360d11b6064820152608401610a3f565b6000821180156123e457506001600160a01b03841615155b156124c957600a5460405163a9059cbb60e01b81526001600160a01b039182166004820152602481018490529085169063a9059cbb90604401602060405180830381600087803b15801561243757600080fd5b505af115801561244b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061246f9190613898565b6124c95760405162461bcd60e51b815260206004820152602560248201527f4661696c656420746f207472616e7366657220636f6e73756d65206665652074604482015264379027a82360d91b6064820152608401610a3f565b6124da6124d46108f9565b886117d1565b50600d5460408051338152602081018a90529081018890524260608201524360808201526001600160a01b0387811692811691908b16907fb07adb6a34680ecbbc7935971c45a07b9baf67ce5dc57332d51e3a5745c9e9639060a00160405180910390a45050505050505050565b6001600160a01b0383166125aa5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610a3f565b6001600160a01b03821661260b5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610a3f565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0381166000908152600560205260409020805460ff16156126d65760405162461bcd60e51b815260206004820152601d60248201527f4552433230526f6c65733a2020414c52454144592041204d494e5445520000006044820152606401610a3f565b8054600160ff19909116811782556006805491820181556000527ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f0180546001600160a01b0319166001600160a01b038416908117909155604080514281524360208201523392917f4f7e100eb1ee13e903798bd0d6aa854152e07eb05544f392b9409c12935c809591015b60405180910390a35050565b6001600160a01b03811660009081526005602052604090208054610100900460ff16156127e85760405162461bcd60e51b815260206004820152602260248201527f4552433230526f6c65733a2020414c5245414459204120464545204d414e414760448201526122a960f11b6064820152608401610a3f565b805461ff001916610100178155600680546001810182556000919091527ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f0180546001600160a01b0384166001600160a01b03199091168117909155604080514281524360208201523392917f5b0831b6bc7ca878cadad8a6b96869b9db121df456a859f03261d13f4d08204b9101612762565b6001600160a01b0383166128e05760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610a3f565b6001600160a01b0382166129425760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610a3f565b6001600160a01b038316600090815260208190526040902054818110156129ba5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610a3f565b6001600160a01b038085166000908152602081905260408082208585039055918516815290812080548492906129f1908490613cb9565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612a3d91815260200190565b60405180910390a350505050565b6001600160a01b03811660008181526005602052604090819020805460ff191681559051909133917fefa2735987005aaa89c050c0ff8cc9ae7d9079d19382081c429130f98c52d480906127629042904390918252602082015260400190565b6000612ab78284613cb9565b9392505050565b6001600160a01b038216612b145760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610a3f565b8060026000828254612b269190613cb9565b90915550506001600160a01b03821660009081526020819052604081208054839290612b53908490613cb9565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6001600160a01b038216612bfd5760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608401610a3f565b6001600160a01b03821660009081526020819052604090205481811015612c715760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152608401610a3f565b6001600160a01b0383166000908152602081905260408120838303905560028054849290612ca0908490613cf3565b90915550506040518281526000906001600160a01b038516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3505050565b60005b600654811015612d515760006005600060068481548110612d1157612d11613e82565b60009182526020808320909101546001600160a01b031683528201929092526040019020805461ffff191690555080612d4981613e51565b915050612cee565b50612d5e60066000613260565b6040805142815243602082015233917f712bc71db81927a76b8bf1ea346247bb0ad58f18e4e5c1bd4aa0ec6573e02a2b910160405180910390a2565b6001600160a01b03811660008181526005602052604090819020805461ff00191681559051909133917fc6148ac08e050e2098c5d953dffbbf54d7eae1a56b8d894015268bfc2dff5b6a906127629042904390918252602082015260400190565b60008084600081518110612e1157612e11613e82565b60200260200101519050600085600181518110612e3057612e30613e82565b6020026020010151905060006001600160a01b0316826001600160a01b03161415612eb25760405162461bcd60e51b815260206004820152602c60248201527f455243323054656d706c6174653a20496e76616c6964206d696e7465722c202060448201526b7a65726f206164647265737360a01b6064820152608401610a3f565b6001600160a01b038116612f2e5760405162461bcd60e51b815260206004820152603c60248201527f455243323054656d706c6174653a20496e76616c696420636f6d6d756e69747960448201527f2066656520636f6c6c6563746f722c207a65726f2061646472657373000000006064820152608401610a3f565b84600081518110612f4157612f41613e82565b602002602001015160001415612fa55760405162461bcd60e51b8152602060048201526024808201527f44617461546f6b656e54656d706c6174653a20496e76616c6964206361702076604482015263616c756560e01b6064820152608401610a3f565b84600081518110612fb857612fb8613e82565b602002602001015160098190555087600081518110612fd957612fd9613e82565b602002602001015160079080519060200190612ff692919061327e565b508760018151811061300a5761300a613e82565b60200260200101516008908051906020019061302792919061327e565b50600b80546001600160a01b0319166001600160a01b03841617905585518690600290811061305857613058613e82565b6020908102919091010151601280546001600160a01b039283166001600160a01b0319909116179055600a80546001600160a81b03191691831691909117600160a01b17905586516130b59088906000906110b0576110b0613e82565b6130d8876001815181106130cb576130cb613e82565b602002602001015161276e565b866002815181106130eb576130eb613e82565b6020026020010151600d60006101000a8154816001600160a01b0302191690836001600160a01b031602179055508660038151811061312c5761312c613e82565b6020026020010151600e60006101000a8154816001600160a01b0302191690836001600160a01b031602179055508460018151811061316d5761316d613e82565b6020026020010151600f8190555060004690507f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60076040516131b09190613a52565b60408051918290038220828201825260018352603160f81b6020938401528151928301939093528101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc66060820152608081018290523060a082015260c00160408051808303601f1901815291905280516020909101206010555050600a54600160a01b900460ff16979650505050505050565b6000612ab78284613cd1565b6000612ab78284613cf3565b5080546000825590600052602060002090810190610b8f9190613302565b82805461328a90613e16565b90600052602060002090601f0160209004810192826132ac57600085556132f2565b82601f106132c557805160ff19168380011785556132f2565b828001600101855582156132f2579182015b828111156132f25782518255916020019190600101906132d7565b506132fe929150613302565b5090565b5b808211156132fe5760008155600101613303565b600067ffffffffffffffff83111561333157613331613e98565b613344601f8401601f1916602001613c64565b905082815283838301111561335857600080fd5b828260208301376000602084830101529392505050565b60008083601f84011261338157600080fd5b50813567ffffffffffffffff81111561339957600080fd5b6020830191508360208260051b85010111156133b457600080fd5b9250929050565b600082601f8301126133cc57600080fd5b813560206133e16133dc83613c95565b613c64565b80838252828201915082860187848660051b890101111561340157600080fd5b60005b8581101561342957813561341781613eae565b84529284019290840190600101613404565b5090979650505050505050565b600082601f83011261344757600080fd5b813560206134576133dc83613c95565b80838252828201915082860187848660051b890101111561347757600080fd5b60005b858110156134295781358452928401929084019060010161347a565b6000602082840312156134a857600080fd5b8135612ab781613eae565b6000602082840312156134c557600080fd5b8151612ab781613eae565b600080604083850312156134e357600080fd5b82356134ee81613eae565b915060208301356134fe81613eae565b809150509250929050565b60008060006060848603121561351e57600080fd5b833561352981613eae565b9250602084013561353981613eae565b929592945050506040919091013590565b600080600080600080600060e0888a03121561356557600080fd5b873561357081613eae565b9650602088013561358081613eae565b95506040880135945060608801359350608088013560ff811681146135a457600080fd5b9699959850939692959460a0840135945060c09093013592915050565b6000806000606084860312156135d657600080fd5b83356135e181613eae565b9250602084013567ffffffffffffffff808211156135fe57600080fd5b61360a878388016133bb565b9350604086013591508082111561362057600080fd5b5061362d86828701613436565b9150509250925092565b6000806040838503121561364a57600080fd5b823561365581613eae565b946020939093013593505050565b60008060008060008060c0878903121561367c57600080fd5b863561368781613eae565b9550602087013594506040870135935060608701356136a581613eae565b925060808701356136b581613eae565b8092505060a087013590509295509295509295565b600080600080600060a086880312156136e257600080fd5b85356136ed81613eae565b94506020860135935060408601359250606086013561370b81613ec3565b9150608086013561371b81613eae565b809150509295509295909350565b60008060008060008060008060008060a08b8d03121561374857600080fd5b8a3567ffffffffffffffff8082111561376057600080fd5b61376c8e838f0161336f565b909c509a5060208d013591508082111561378557600080fd5b6137918e838f0161336f565b909a50985060408d01359150808211156137aa57600080fd5b6137b68e838f0161336f565b909850965060608d01359150808211156137cf57600080fd5b6137db8e838f0161336f565b909650945060808d01359150808211156137f457600080fd5b506138018d828e0161336f565b915080935050809150509295989b9194979a5092959850565b60008060006060848603121561382f57600080fd5b833567ffffffffffffffff8082111561384757600080fd5b61385387838801613436565b9450602086013591508082111561386957600080fd5b61387587838801613436565b9350604086013591508082111561388b57600080fd5b5061362d868287016133bb565b6000602082840312156138aa57600080fd5b8151612ab781613ec3565b6000602082840312156138c757600080fd5b5051919050565b600080602083850312156138e157600080fd5b823567ffffffffffffffff808211156138f957600080fd5b818501915085601f83011261390d57600080fd5b81358181111561391c57600080fd5b86602082850101111561392e57600080fd5b60209290920196919550909350505050565b60006080828403121561395257600080fd5b6040516080810181811067ffffffffffffffff8211171561397557613975613e98565b604052825161398381613ec3565b8152602083015161399381613ec3565b602082015260408301516139a681613ec3565b604082015260608301516139b981613ec3565b60608201529392505050565b6000602082840312156139d757600080fd5b5035919050565b600081518084526020808501945080840160005b83811015613a175781516001600160a01b0316875295820195908201906001016139f2565b509495945050505050565b600081518084526020808501945080840160005b83811015613a1757815187529582019590820190600101613a36565b600080835481600182811c915080831680613a6e57607f831692505b6020808410821415613a8e57634e487b7160e01b86526022600452602486fd5b818015613aa25760018114613ab357613ae0565b60ff19861689528489019650613ae0565b60008a81526020902060005b86811015613ad85781548b820152908501908301613abf565b505084890196505b509498975050505050505050565b6001600160a01b0384168152606060208201819052600090613b12908301856139de565b8281036040840152613b248185613a22565b9695505050505050565b60008186825b6002811015613b5c5781516001600160a01b0316835260209283019290910190600101613b34565b50505060a06040830152613b7360a0830186613a22565b8281036060840152613b858186613a22565b90508281036080840152613b9981856139de565b979650505050505050565b83815260406020820152816040820152818360608301376000818301606090810191909152601f909201601f1916010192915050565b600060208083528351808285015260005b81811015613c0757858101830151858201604001528201613beb565b81811115613c19576000604083870101525b50601f01601f1916929092016040019392505050565b6020808252818101527f455243323054656d706c6174653a204e4f54204445504c4f59455220524f4c45604082015260600190565b604051601f8201601f1916810167ffffffffffffffff81118282101715613c8d57613c8d613e98565b604052919050565b600067ffffffffffffffff821115613caf57613caf613e98565b5060051b60200190565b60008219821115613ccc57613ccc613e6c565b500190565b600082613cee57634e487b7160e01b600052601260045260246000fd5b500490565b600082821015613d0557613d05613e6c565b500390565b6000613d186133dc84613c95565b808482526020808301925084368760051b87011115613d3657600080fd5b60005b87811015613d8a57813567ffffffffffffffff811115613d5857600080fd5b870136601f820112613d6957600080fd5b613d77368235868401613317565b8652509382019390820190600101613d39565b50919695505050505050565b6000613da46133dc84613c95565b808482526020808301925084368760051b87011115613dc257600080fd5b60005b87811015613d8a57813567ffffffffffffffff811115613de457600080fd5b870136601f820112613df557600080fd5b613e03368235868401613317565b8652509382019390820190600101613dc5565b600181811c90821680613e2a57607f821691505b60208210811415613e4b57634e487b7160e01b600052602260045260246000fd5b50919050565b6000600019821415613e6557613e65613e6c565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b0381168114610b8f57600080fd5b8015158114610b8f57600080fdfea2646970667358221220168b31cc6fab32fdd684bd93720e0104e156ada91ff56e4fb12452539769f78964736f6c63430008070033", - "linkReferences": {}, - "deployedLinkReferences": {} - } \ No newline at end of file + "_format": "hh-sol-artifact-1", + "contractName": "ERC20Template", + "sourceName": "contracts/templates/ERC20Template.sol", + "abi": [ + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "user", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "signer", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "timestamp", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "blockNumber", + "type": "uint256" + } + ], + "name": "AddedMinter", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "user", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "signer", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "timestamp", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "blockNumber", + "type": "uint256" + } + ], + "name": "AddedPaymentManager", + "type": "event" + }, + { + "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": "signer", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "timestamp", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "blockNumber", + "type": "uint256" + } + ], + "name": "CleanedPermissions", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "currentMinter", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "newMinter", + "type": "address" + } + ], + "name": "MinterApproved", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "currentMinter", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "newMinter", + "type": "address" + } + ], + "name": "MinterProposed", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "bytes32", + "name": "exchangeId", + "type": "bytes32" + }, + { + "indexed": false, + "internalType": "address", + "name": "owner", + "type": "address" + } + ], + "name": "NewFixedRate", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "caller", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "_newPaymentCollector", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "timestamp", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "blockNumber", + "type": "uint256" + } + ], + "name": "NewPaymentCollector", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "poolAddress", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "ssContract", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "basetokenAddress", + "type": "address" + } + ], + "name": "NewPool", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "consumeFeeAddress", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "consumeFeeToken", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "consumeFeeAmount", + "type": "uint256" + } + ], + "name": "OrderMarketFees", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "consumer", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "payer", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "serviceId", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "timestamp", + "type": "uint256" + }, + { + "indexed": true, + "internalType": "address", + "name": "publishMarketAddress", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "consumeFeeMarketAddress", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "blockNumber", + "type": "uint256" + } + ], + "name": "OrderStarted", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "user", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "signer", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "timestamp", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "blockNumber", + "type": "uint256" + } + ], + "name": "RemovedMinter", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "user", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "signer", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "timestamp", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "blockNumber", + "type": "uint256" + } + ], + "name": "RemovedPaymentManager", + "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" + }, + { + "stateMutability": "payable", + "type": "fallback" + }, + { + "inputs": [], + "name": "BASE", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "BASE_COMMUNITY_FEE_PERCENTAGE", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "DOMAIN_SEPARATOR", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "PERMIT_TYPEHASH", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_minter", + "type": "address" + } + ], + "name": "addMinter", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_paymentManager", + "type": "address" + } + ], + "name": "addPaymentManager", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "address", + "name": "spender", + "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": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "authERC20", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "burn", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "burnFrom", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "cap", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "cleanFrom721", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "cleanPermissions", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_dispenser", + "type": "address" + }, + { + "internalType": "uint256", + "name": "maxTokens", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "maxBalance", + "type": "uint256" + }, + { + "internalType": "bool", + "name": "withMint", + "type": "bool" + }, + { + "internalType": "address", + "name": "allowedSwapper", + "type": "address" + } + ], + "name": "createDispenser", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "fixedPriceAddress", + "type": "address" + }, + { + "internalType": "address[]", + "name": "addresses", + "type": "address[]" + }, + { + "internalType": "uint256[]", + "name": "uints", + "type": "uint256[]" + } + ], + "name": "createFixedRate", + "outputs": [ + { + "internalType": "bytes32", + "name": "exchangeId", + "type": "bytes32" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "decimals", + "outputs": [ + { + "internalType": "uint8", + "name": "", + "type": "uint8" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "subtractedValue", + "type": "uint256" + } + ], + "name": "decreaseAllowance", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256[]", + "name": "ssParams", + "type": "uint256[]" + }, + { + "internalType": "uint256[]", + "name": "swapFees", + "type": "uint256[]" + }, + { + "internalType": "address[]", + "name": "addresses", + "type": "address[]" + } + ], + "name": "deployPool", + "outputs": [ + { + "internalType": "address", + "name": "pool", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "getERC721Address", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getId", + "outputs": [ + { + "internalType": "uint8", + "name": "", + "type": "uint8" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [], + "name": "getPaymentCollector", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getPublishingMarketFee", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "addedValue", + "type": "uint256" + } + ], + "name": "increaseAllowance", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "string[]", + "name": "strings_", + "type": "string[]" + }, + { + "internalType": "address[]", + "name": "addresses_", + "type": "address[]" + }, + { + "internalType": "address[]", + "name": "factoryAddresses_", + "type": "address[]" + }, + { + "internalType": "uint256[]", + "name": "uints_", + "type": "uint256[]" + }, + { + "internalType": "bytes[]", + "name": "bytes_", + "type": "bytes[]" + } + ], + "name": "initialize", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "isInitialized", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "isMinter", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "mint", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "name", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "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": "", + "type": "address" + } + ], + "name": "permissions", + "outputs": [ + { + "internalType": "bool", + "name": "minter", + "type": "bool" + }, + { + "internalType": "bool", + "name": "paymentManager", + "type": "bool" + } + ], + "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": [ + { + "internalType": "address", + "name": "_minter", + "type": "address" + } + ], + "name": "removeMinter", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_paymentManager", + "type": "address" + } + ], + "name": "removePaymentManager", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "router", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes", + "name": "_value", + "type": "bytes" + } + ], + "name": "setData", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_newPaymentCollector", + "type": "address" + } + ], + "name": "setPaymentCollector", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_publishMarketFeeAddress", + "type": "address" + }, + { + "internalType": "address", + "name": "_publishMarketFeeToken", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_publishMarketFeeAmount", + "type": "uint256" + } + ], + "name": "setPublishingMarketFee", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "consumer", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "serviceId", + "type": "uint256" + }, + { + "internalType": "address", + "name": "consumeFeeAddress", + "type": "address" + }, + { + "internalType": "address", + "name": "consumeFeeToken", + "type": "address" + }, + { + "internalType": "uint256", + "name": "consumeFeeAmount", + "type": "uint256" + } + ], + "name": "startOrder", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "symbol", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "totalSupply", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "recipient", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "transfer", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "internalType": "address", + "name": "recipient", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "withdrawETH", + "outputs": [], + "stateMutability": "payable", + "type": "function" + } + ], + "bytecode": "0x6080604052600a805460ff60a01b191690553480156200001e57600080fd5b5060408051808201825260048152631d195cdd60e21b60208083019182528351808501909452600a8452691d195cdd14de5b589bdb60b21b9084015281519192916200006d916003916200008c565b508051620000839060049060208401906200008c565b5050506200016f565b8280546200009a9062000132565b90600052602060002090601f016020900481019282620000be576000855562000109565b82601f10620000d957805160ff191683800117855562000109565b8280016001018555821562000109579182015b8281111562000109578251825591602001919060010190620000ec565b50620001179291506200011b565b5090565b5b808211156200011757600081556001016200011c565b600181811c908216806200014757607f821691505b602082108114156200016957634e487b7160e01b600052602260045260246000fd5b50919050565b61410f806200017f6000396000f3fe60806040526004361061025c5760003560e01c80635d1ca63111610143578063aa492ef9116100bb578063e086e5ec11610077578063e086e5ec146107dc578063e487c2e8146107e4578063ec342ad0146107f9578063ef867ff414610815578063f887ea4014610835578063fda9dae71461085557005b8063aa492ef914610701578063ab62f0e114610721578063b2263a5d14610741578063b3998be014610756578063d505accf14610776578063dd62ed3e1461079657005b80638b96412b1161010a5780638b96412b1461063357806395d89b4114610653578063983b2d5614610668578063a457c2d714610688578063a9059cbb146106a8578063aa271e1a146106c857005b80635d1ca6311461058757806370a082311461059b57806379cc6790146105d15780637ecebe00146105f157806382c03da51461061e57005b8063355274ea116101d657806340c10f191161019d57806340c10f19146104d257806342966c68146104f25780634f189cb21461051257806357a3a31b1461052757806357ad5ff6146105475780635bfe4da01461056757005b8063355274ea1461042c5780633644e51514610441578063392e53cd146104575780633950935114610476578063397b37431461049657005b8063191c918a11610225578063191c918a1461035657806323b872dd1461037657806325b00243146103965780633092afd5146103b657806330adf81f146103d6578063313ce5671461040a57005b80627ffb781461025e57806301e882081461029557806306fdde03146102e5578063095ea7b31461030757806318160ddd14610337575b005b34801561026a57600080fd5b50600b546001600160a01b03165b6040516001600160a01b0390911681526020015b60405180910390f35b3480156102a157600080fd5b506102ce6102b036600461369e565b60056020526000908152604090205460ff8082169161010090041682565b60408051921515835290151560208301520161028c565b3480156102f157600080fd5b506102fa610875565b60405161028c9190613de2565b34801561031357600080fd5b5061032761032236600461383f565b610907565b604051901515815260200161028c565b34801561034357600080fd5b506002545b60405190815260200161028c565b34801561036257600080fd5b5061025c6103713660046138d2565b61091d565b34801561038257600080fd5b50610327610391366004613711565b610a64565b3480156103a257600080fd5b5061025c6103b136600461369e565b610b0e565b3480156103c257600080fd5b5061025c6103d136600461369e565b610bbc565b3480156103e257600080fd5b506103487f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b34801561041657600080fd5b5060125b60405160ff909116815260200161028c565b34801561043857600080fd5b50600954610348565b34801561044d57600080fd5b5061034860105481565b34801561046357600080fd5b50600a54600160a01b900460ff16610327565b34801561048257600080fd5b5061032761049136600461383f565b610c67565b3480156104a257600080fd5b50600d54600e54600f54604080516001600160a01b0394851681529390921660208401529082015260600161028c565b3480156104de57600080fd5b5061025c6104ed36600461383f565b610ca3565b3480156104fe57600080fd5b5061025c61050d366004613bcd565b610d79565b34801561051e57600080fd5b5061025c610d83565b34801561053357600080fd5b5061025c61054236600461369e565b610e79565b34801561055357600080fd5b5061025c610562366004613711565b610fd5565b34801561057357600080fd5b50610278610582366004613a22565b611077565b34801561059357600080fd5b50600161041a565b3480156105a757600080fd5b506103486105b636600461369e565b6001600160a01b031660009081526020819052604090205490565b3480156105dd57600080fd5b5061025c6105ec36600461383f565b611380565b3480156105fd57600080fd5b5061034861060c36600461369e565b60116020526000908152604090205481565b34801561062a57600080fd5b5061025c611406565b34801561063f57600080fd5b5061034861064e3660046137c9565b611460565b34801561065f57600080fd5b506102fa611623565b34801561067457600080fd5b5061025c61068336600461369e565b611632565b34801561069457600080fd5b506103276106a336600461383f565b6116dd565b3480156106b457600080fd5b506103276106c336600461383f565b611776565b3480156106d457600080fd5b506103276106e336600461369e565b6001600160a01b031660009081526005602052604090205460ff1690565b34801561070d57600080fd5b5061025c61071c36600461369e565b611783565b34801561072d57600080fd5b5061025c61073c366004613ad6565b61182e565b34801561074d57600080fd5b50610348611973565b34801561076257600080fd5b50610327610771366004613931565b611989565b34801561078257600080fd5b5061025c610791366004613752565b611ac3565b3480156107a257600080fd5b506103486107b13660046136d8565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b61025c611cd5565b3480156107f057600080fd5b50610278611d15565b34801561080557600080fd5b50610348670de0b6b3a764000081565b34801561082157600080fd5b50610278610830366004613bcd565b611db9565b34801561084157600080fd5b50601254610278906001600160a01b031681565b34801561086157600080fd5b5061025c61087036600461386b565b611de3565b6060600780546108849061401e565b80601f01602080910402602001604051908101604052809291908181526020018280546108b09061401e565b80156108fd5780601f106108d2576101008083540402835291602001916108fd565b820191906000526020600020905b8154815290600101906020018083116108e057829003601f168201915b5050505050905090565b6000610914338484612689565b50600192915050565b600b5460405163160a792560e01b81523360048201526001600160a01b039091169063160a792590602401608060405180830381600087803b15801561096257600080fd5b505af1158015610976573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061099a9190613b48565b6020015115156001146109c85760405162461bcd60e51b81526004016109bf90613e37565b60405180910390fd5b601254604051636b14d00560e11b81526001600160a01b038781166004830152306024830152604482018790526064820186905233608483015283811660a48301529091169063d629a00a9060c401600060405180830381600087803b158015610a3157600080fd5b505af1158015610a45573d6000803e3d6000fd5b5050505081151560011415610a5d57610a5d856127ad565b5050505050565b6000610a718484846128af565b6001600160a01b038416600090815260016020908152604080832033845290915290205482811015610af65760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084016109bf565b610b038533858403612689565b506001949350505050565b600b5460405163160a792560e01b81523360048201526001600160a01b039091169063160a792590602401608060405180830381600087803b158015610b5357600080fd5b505af1158015610b67573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b8b9190613b48565b602001511515600114610bb05760405162461bcd60e51b81526004016109bf90613e37565b610bb981612a7e565b50565b600b5460405163160a792560e01b81523360048201526001600160a01b039091169063160a792590602401608060405180830381600087803b158015610c0157600080fd5b505af1158015610c15573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c399190613b48565b602001511515600114610c5e5760405162461bcd60e51b81526004016109bf90613e37565b610bb981612adf565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091610914918590610c9e908690613ec1565b612689565b3360009081526005602052604090205460ff161515600114610d075760405162461bcd60e51b815260206004820152601960248201527f455243323054656d706c6174653a204e4f54204d494e5445520000000000000060448201526064016109bf565b600954610d1d82610d1760025490565b90612b3f565b1115610d6b5760405162461bcd60e51b815260206004820152601f60248201527f44617461546f6b656e54656d706c6174653a206361702065786365656465640060448201526064016109bf565b610d758282612b52565b5050565b610bb93382612c31565b600b546040516331a9108f60e11b8152600160048201526001600160a01b0390911690636352211e9060240160206040518083038186803b158015610dc757600080fd5b505afa158015610ddb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dff91906136bb565b6001600160a01b0316336001600160a01b031614610e5f5760405162461bcd60e51b815260206004820152601b60248201527f455243323054656d706c6174653a206e6f74204e46544f776e6572000000000060448201526064016109bf565b610e67612d7f565b600c80546001600160a01b0319169055565b3360009081526005602052604090205460ff61010090910416151560011480610f245750600b5460405163160a792560e01b81523360048201526001600160a01b039091169063160a792590602401608060405180830381600087803b158015610ee257600080fd5b505af1158015610ef6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f1a9190613b48565b6020015115156001145b610f845760405162461bcd60e51b815260206004820152602b60248201527f455243323054656d706c6174653a204e4f54205041594d454e54204d414e414760448201526a22a91037b91027aba722a960a91b60648201526084016109bf565b610f8d81612e2e565b604080514281524360208201526001600160a01b0383169133917f4d7694d695c57cc54947177c8e8a0e61aae664e9223492a798c32fadfc6419cc910160405180910390a350565b600d546001600160a01b031633146110425760405162461bcd60e51b815260206004820152602a60248201527f455243323054656d706c6174653a206e6f74207075626c6973684d61726b65746044820152694665654164647265737360b01b60648201526084016109bf565b600d80546001600160a01b039485166001600160a01b031991821617909155600e805493909416921691909117909155600f55565b600b5460405163160a792560e01b81523360048201526000916001600160a01b03169063160a792590602401608060405180830381600087803b1580156110bd57600080fd5b505af11580156110d1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110f59190613b48565b60200151151560011461111a5760405162461bcd60e51b81526004016109bf90613e37565b600254156111765760405162461bcd60e51b8152602060048201526024808201527f455243323054656d706c6174653a20746f6b656e7320616c7265616479206d696044820152631b9d195960e21b60648201526084016109bf565b6111998260008151811061118c5761118c61408a565b60200260200101516127ad565b62250490846003815181106111b0576111b061408a565b6020026020010151116112175760405162461bcd60e51b815260206004820152602960248201527f455243323054656d706c6174653a206d696e696d756d20626c6f636b73206e6f6044820152681d081c995858da195960ba1b60648201526084016109bf565b60006040518060400160405280306001600160a01b03166001600160a01b031681526020018460018151811061124f5761124f61408a565b60209081029190910101516001600160a01b0390811690915260125460405163ee3bc63560e01b8152929350169063ee3bc63590611297908490899089908990600401613d36565b602060405180830381600087803b1580156112b157600080fd5b505af11580156112c5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112e991906136bb565b91507fd02da1bec30f7f750aa0a131745dfb9ce96767c45a192dc26409f5d690e0b96782846000815181106113205761132061408a565b60200260200101518560018151811061133b5761133b61408a565b6020026020010151604051611370939291906001600160a01b0393841681529183166020830152909116604082015260600190565b60405180910390a1509392505050565b600061138c83336107b1565b9050818110156113ea5760405162461bcd60e51b8152602060048201526024808201527f45524332303a206275726e20616d6f756e74206578636565647320616c6c6f77604482015263616e636560e01b60648201526084016109bf565b6113f78333848403612689565b6114018383612c31565b505050565b600b546001600160a01b03163314610e5f5760405162461bcd60e51b815260206004820152601f60248201527f455243323054656d706c6174653a204e4f542037323120436f6e74726163740060448201526064016109bf565b600b5460405163160a792560e01b81523360048201526000916001600160a01b03169063160a792590602401608060405180830381600087803b1580156114a657600080fd5b505af11580156114ba573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114de9190613b48565b6020015115156001146115035760405162461bcd60e51b81526004016109bf90613e37565b601254604051638244937560e01b81526001600160a01b039091169063824493759061153790879087908790600401613cf6565b602060405180830381600087803b15801561155157600080fd5b505af1158015611565573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115899190613abd565b90506000826004815181106115a0576115a061408a565b602002602001015111156115b7576115b7846127ad565b7f195d202f33578769e120c3041341554af3193e67ee004175095bc9c06e6e616581846000815181106115ec576115ec61408a565b60200260200101516040516116149291909182526001600160a01b0316602082015260400190565b60405180910390a19392505050565b6060600880546108849061401e565b600b5460405163160a792560e01b81523360048201526001600160a01b039091169063160a792590602401608060405180830381600087803b15801561167757600080fd5b505af115801561168b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116af9190613b48565b6020015115156001146116d45760405162461bcd60e51b81526004016109bf90613e37565b610bb9816127ad565b3360009081526001602090815260408083206001600160a01b03861684529091528120548281101561175f5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016109bf565b61176c3385858403612689565b5060019392505050565b60006109143384846128af565b600b5460405163160a792560e01b81523360048201526001600160a01b039091169063160a792590602401608060405180830381600087803b1580156117c857600080fd5b505af11580156117dc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118009190613b48565b6020015115156001146118255760405162461bcd60e51b81526004016109bf90613e37565b610bb981612e50565b600b5460405163160a792560e01b81523360048201526001600160a01b039091169063160a792590602401608060405180830381600087803b15801561187357600080fd5b505af1158015611887573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118ab9190613b48565b6020015115156001146118d05760405162461bcd60e51b81526004016109bf90613e37565b6040516bffffffffffffffffffffffff193060601b16602082015260009060340160408051601f19818403018152908290528051602090910120600b546301caf8fd60e31b83529092506001600160a01b031690630e57c7e89061193c90849087908790600401613dac565b600060405180830381600087803b15801561195657600080fd5b505af115801561196a573d6000803e3d6000fd5b50505050505050565b6119866064670de0b6b3a7640000613ed9565b81565b600a54600090600160a01b900460ff1615611a005760405162461bcd60e51b815260206004820152603160248201527f455243323054656d706c6174653a20746f6b656e20696e7374616e636520616c6044820152701c9958591e481a5b9a5d1a585b1a5e9959607a1b60648201526084016109bf565b611ab4611a0d8b8d613f9e565b8a8a8080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020808e0282810182019093528d82529093508d92508c91829185019084908082843760009201919091525050604080516020808d0282810182019093528c82529093508c92508b918291850190849080828437600092019190915250611aaf92508991508a9050613f12565b612f5e565b9b9a5050505050505050505050565b42841015611b065760405162461bcd60e51b815260206004820152601060248201526f115490cc8c11150e881156141254915160821b60448201526064016109bf565b6010546001600160a01b038816600090815260116020526040812080549192917f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9918b918b918b919087611b5983614059565b909155506040805160208101969096526001600160a01b0394851690860152929091166060840152608083015260a082015260c0810187905260e00160405160208183030381529060405280519060200120604051602001611bd292919061190160f01b81526002810192909252602282015260420190565b60408051601f198184030181528282528051602091820120600080855291840180845281905260ff88169284019290925260608301869052608083018590529092509060019060a0016020604051602081039080840390855afa158015611c3d573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811615801590611c735750886001600160a01b0316816001600160a01b0316145b611cbf5760405162461bcd60e51b815260206004820152601a60248201527f455243323044543a20494e56414c49445f5349474e415455524500000000000060448201526064016109bf565b611cca898989612689565b505050505050505050565b611cdd611d15565b6001600160a01b03166108fc479081150290604051600060405180830381858888f19350505050158015610bb9573d6000803e3d6000fd5b600c546000906001600160a01b0316611da957600b546040516331a9108f60e11b8152600160048201526001600160a01b0390911690636352211e9060240160206040518083038186803b158015611d6c57600080fd5b505afa158015611d80573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611da491906136bb565b905090565b50600c546001600160a01b031690565b60068181548110611dc957600080fd5b6000918252602090912001546001600160a01b0316905081565b336000908152602081905260408120548190871115611e525760405162461bcd60e51b815260206004820152602560248201527f4e6f7420656e6f756768204461746120546f6b656e7320746f2073746172742060448201526427b93232b960d91b60648201526084016109bf565b6000600f54118015611e6e5750600e546001600160a01b031615155b8015611e845750600d546001600160a01b031615155b1561208d57600e54600f546040516323b872dd60e01b815233600482015230602482015260448101919091526001600160a01b03909116906323b872dd90606401602060405180830381600087803b158015611edf57600080fd5b505af1158015611ef3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f179190613aa0565b611f6f5760405162461bcd60e51b815260206004820152602360248201527f4661696c656420746f207472616e73666572207075626c6973684d61726b657460448201526246656560e81b60648201526084016109bf565b600f54611f7d906064613450565b600e54600d54600f549293506001600160a01b039182169263a9059cbb9290911690611fa9908561345c565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401602060405180830381600087803b158015611fef57600080fd5b505af1158015612003573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120279190613aa0565b61208d5760405162461bcd60e51b815260206004820152603160248201527f4661696c656420746f207472616e736665722066656520746f207075626c6973604482015270684d61726b65744665654164647265737360781b60648201526084016109bf565b6000831180156120a557506001600160a01b03841615155b80156120b957506001600160a01b03851615155b15612295576040516323b872dd60e01b8152336004820152306024820152604481018490526001600160a01b038516906323b872dd90606401602060405180830381600087803b15801561210c57600080fd5b505af1158015612120573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121449190613aa0565b6121905760405162461bcd60e51b815260206004820152601d60248201527f4661696c656420746f207472616e7366657220636f6e73756d6546656500000060448201526064016109bf565b61219b836064613450565b91506001600160a01b03841663a9059cbb866121b7868661345c565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401602060405180830381600087803b1580156121fd57600080fd5b505af1158015612211573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122359190613aa0565b6122955760405162461bcd60e51b815260206004820152602b60248201527f4661696c656420746f207472616e736665722066656520746f20636f6e73756d60448201526a654665654164647265737360a81b60648201526084016109bf565b6000811180156122a55750600082115b80156122be5750600e546001600160a01b038581169116145b156123be57600a546001600160a01b038086169163a9059cbb91166122e38486612b3f565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401602060405180830381600087803b15801561232957600080fd5b505af115801561233d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123619190613aa0565b6123b95760405162461bcd60e51b815260206004820152602360248201527f4661696c656420746f207472616e7366657220626f7468206665657320746f2060448201526227a82360e91b60648201526084016109bf565b6125bd565b6000811180156123d85750600e546001600160a01b031615155b156124c057600e54600a5460405163a9059cbb60e01b81526001600160a01b0391821660048201526024810184905291169063a9059cbb90604401602060405180830381600087803b15801561242d57600080fd5b505af1158015612441573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124659190613aa0565b6124c05760405162461bcd60e51b815260206004820152602660248201527f4661696c656420746f207472616e73666572207075626c6973682066656573206044820152653a379027a82360d11b60648201526084016109bf565b6000821180156124d857506001600160a01b03841615155b156125bd57600a5460405163a9059cbb60e01b81526001600160a01b039182166004820152602481018490529085169063a9059cbb90604401602060405180830381600087803b15801561252b57600080fd5b505af115801561253f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125639190613aa0565b6125bd5760405162461bcd60e51b815260206004820152602560248201527f4661696c656420746f207472616e7366657220636f6e73756d65206665652074604482015264379027a82360d91b60648201526084016109bf565b6125ce6125c8611d15565b88611776565b50600d5460408051338152602081018a90529081018890524260608201524360808201526001600160a01b0387811692811691908b16907fb07adb6a34680ecbbc7935971c45a07b9baf67ce5dc57332d51e3a5745c9e9639060a00160405180910390a4836001600160a01b0316856001600160a01b03167fcc9877307cd6845dfd092292e4719f293ac5d1039527d98ca0ae9fd76791236b8560405161267791815260200190565b60405180910390a35050505050505050565b6001600160a01b0383166126eb5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016109bf565b6001600160a01b03821661274c5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016109bf565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0381166000908152600560205260409020805460ff16156128175760405162461bcd60e51b815260206004820152601d60248201527f4552433230526f6c65733a2020414c52454144592041204d494e54455200000060448201526064016109bf565b8054600160ff19909116811782556006805491820181556000527ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f0180546001600160a01b0319166001600160a01b038416908117909155604080514281524360208201523392917f4f7e100eb1ee13e903798bd0d6aa854152e07eb05544f392b9409c12935c809591015b60405180910390a35050565b6001600160a01b0383166129135760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016109bf565b6001600160a01b0382166129755760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016109bf565b6001600160a01b038316600090815260208190526040902054818110156129ed5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016109bf565b6001600160a01b03808516600090815260208190526040808220858503905591851681529081208054849290612a24908490613ec1565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612a7091815260200190565b60405180910390a350505050565b6001600160a01b03811660008181526005602052604090819020805461ff00191681559051909133917faee911eec8b2df8f3ae0464841541b1e5f339519bd5cf51889fe8b07fecff658906128a39042904390918252602082015260400190565b6001600160a01b03811660008181526005602052604090819020805460ff191681559051909133917fefa2735987005aaa89c050c0ff8cc9ae7d9079d19382081c429130f98c52d480906128a39042904390918252602082015260400190565b6000612b4b8284613ec1565b9392505050565b6001600160a01b038216612ba85760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016109bf565b8060026000828254612bba9190613ec1565b90915550506001600160a01b03821660009081526020819052604081208054839290612be7908490613ec1565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6001600160a01b038216612c915760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b60648201526084016109bf565b6001600160a01b03821660009081526020819052604090205481811015612d055760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b60648201526084016109bf565b6001600160a01b0383166000908152602081905260408120838303905560028054849290612d34908490613efb565b90915550506040518281526000906001600160a01b038516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3505050565b60005b600654811015612de55760006005600060068481548110612da557612da561408a565b60009182526020808320909101546001600160a01b031683528201929092526040019020805461ffff191690555080612ddd81614059565b915050612d82565b50612df260066000613468565b6040805142815243602082015233917f712bc71db81927a76b8bf1ea346247bb0ad58f18e4e5c1bd4aa0ec6573e02a2b910160405180910390a2565b600c80546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b03811660009081526005602052604090208054610100900460ff1615612eca5760405162461bcd60e51b815260206004820152602260248201527f4552433230526f6c65733a2020414c5245414459204120464545204d414e414760448201526122a960f11b60648201526084016109bf565b805461ff001916610100178155600680546001810182556000919091527ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f0180546001600160a01b0384166001600160a01b03199091168117909155604080514281524360208201523392917fb17da2e9910b4ba5754e8872385ba315a238bafb5ae221fc85093c33432c40a791016128a3565b60008084600081518110612f7457612f7461408a565b60200260200101519050600085600181518110612f9357612f9361408a565b6020026020010151905060006001600160a01b0316826001600160a01b031614156130155760405162461bcd60e51b815260206004820152602c60248201527f455243323054656d706c6174653a20496e76616c6964206d696e7465722c202060448201526b7a65726f206164647265737360a01b60648201526084016109bf565b6001600160a01b0381166130915760405162461bcd60e51b815260206004820152603c60248201527f455243323054656d706c6174653a20496e76616c696420636f6d6d756e69747960448201527f2066656520636f6c6c6563746f722c207a65726f20616464726573730000000060648201526084016109bf565b846000815181106130a4576130a461408a565b6020026020010151600014156131085760405162461bcd60e51b8152602060048201526024808201527f44617461546f6b656e54656d706c6174653a20496e76616c6964206361702076604482015263616c756560e01b60648201526084016109bf565b8460008151811061311b5761311b61408a565b60200260200101516009819055508760008151811061313c5761313c61408a565b602002602001015160079080519060200190613159929190613486565b508760018151811061316d5761316d61408a565b60200260200101516008908051906020019061318a929190613486565b50600b80546001600160a01b0319166001600160a01b0384161790558551869060029081106131bb576131bb61408a565b6020908102919091010151601280546001600160a01b039283166001600160a01b0319909116179055600a80546001600160a81b03191691831691909117600160a01b179055865161321890889060009061118c5761118c61408a565b60006001600160a01b0316876001815181106132365761323661408a565b60200260200101516001600160a01b0316146132e05761326f876001815181106132625761326261408a565b6020026020010151612e2e565b866001815181106132825761328261408a565b60200260200101516001600160a01b0316336001600160a01b03167f4d7694d695c57cc54947177c8e8a0e61aae664e9223492a798c32fadfc6419cc42436040516132d7929190918252602082015260400190565b60405180910390a35b866002815181106132f3576132f361408a565b6020026020010151600d60006101000a8154816001600160a01b0302191690836001600160a01b03160217905550866003815181106133345761333461408a565b6020026020010151600e60006101000a8154816001600160a01b0302191690836001600160a01b03160217905550846001815181106133755761337561408a565b6020026020010151600f8190555060004690507f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60076040516133b89190613c5a565b60408051918290038220828201825260018352603160f81b6020938401528151928301939093528101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc66060820152608081018290523060a082015260c00160408051808303601f1901815291905280516020909101206010555050600a54600160a01b900460ff16979650505050505050565b6000612b4b8284613ed9565b6000612b4b8284613efb565b5080546000825590600052602060002090810190610bb9919061350a565b8280546134929061401e565b90600052602060002090601f0160209004810192826134b457600085556134fa565b82601f106134cd57805160ff19168380011785556134fa565b828001600101855582156134fa579182015b828111156134fa5782518255916020019190600101906134df565b5061350692915061350a565b5090565b5b80821115613506576000815560010161350b565b600067ffffffffffffffff831115613539576135396140a0565b61354c601f8401601f1916602001613e6c565b905082815283838301111561356057600080fd5b828260208301376000602084830101529392505050565b60008083601f84011261358957600080fd5b50813567ffffffffffffffff8111156135a157600080fd5b6020830191508360208260051b85010111156135bc57600080fd5b9250929050565b600082601f8301126135d457600080fd5b813560206135e96135e483613e9d565b613e6c565b80838252828201915082860187848660051b890101111561360957600080fd5b60005b8581101561363157813561361f816140b6565b8452928401929084019060010161360c565b5090979650505050505050565b600082601f83011261364f57600080fd5b8135602061365f6135e483613e9d565b80838252828201915082860187848660051b890101111561367f57600080fd5b60005b8581101561363157813584529284019290840190600101613682565b6000602082840312156136b057600080fd5b8135612b4b816140b6565b6000602082840312156136cd57600080fd5b8151612b4b816140b6565b600080604083850312156136eb57600080fd5b82356136f6816140b6565b91506020830135613706816140b6565b809150509250929050565b60008060006060848603121561372657600080fd5b8335613731816140b6565b92506020840135613741816140b6565b929592945050506040919091013590565b600080600080600080600060e0888a03121561376d57600080fd5b8735613778816140b6565b96506020880135613788816140b6565b95506040880135945060608801359350608088013560ff811681146137ac57600080fd5b9699959850939692959460a0840135945060c09093013592915050565b6000806000606084860312156137de57600080fd5b83356137e9816140b6565b9250602084013567ffffffffffffffff8082111561380657600080fd5b613812878388016135c3565b9350604086013591508082111561382857600080fd5b506138358682870161363e565b9150509250925092565b6000806040838503121561385257600080fd5b823561385d816140b6565b946020939093013593505050565b60008060008060008060c0878903121561388457600080fd5b863561388f816140b6565b9550602087013594506040870135935060608701356138ad816140b6565b925060808701356138bd816140b6565b8092505060a087013590509295509295509295565b600080600080600060a086880312156138ea57600080fd5b85356138f5816140b6565b945060208601359350604086013592506060860135613913816140cb565b91506080860135613923816140b6565b809150509295509295909350565b60008060008060008060008060008060a08b8d03121561395057600080fd5b8a3567ffffffffffffffff8082111561396857600080fd5b6139748e838f01613577565b909c509a5060208d013591508082111561398d57600080fd5b6139998e838f01613577565b909a50985060408d01359150808211156139b257600080fd5b6139be8e838f01613577565b909850965060608d01359150808211156139d757600080fd5b6139e38e838f01613577565b909650945060808d01359150808211156139fc57600080fd5b50613a098d828e01613577565b915080935050809150509295989b9194979a5092959850565b600080600060608486031215613a3757600080fd5b833567ffffffffffffffff80821115613a4f57600080fd5b613a5b8783880161363e565b94506020860135915080821115613a7157600080fd5b613a7d8783880161363e565b93506040860135915080821115613a9357600080fd5b50613835868287016135c3565b600060208284031215613ab257600080fd5b8151612b4b816140cb565b600060208284031215613acf57600080fd5b5051919050565b60008060208385031215613ae957600080fd5b823567ffffffffffffffff80821115613b0157600080fd5b818501915085601f830112613b1557600080fd5b813581811115613b2457600080fd5b866020828501011115613b3657600080fd5b60209290920196919550909350505050565b600060808284031215613b5a57600080fd5b6040516080810181811067ffffffffffffffff82111715613b7d57613b7d6140a0565b6040528251613b8b816140cb565b81526020830151613b9b816140cb565b60208201526040830151613bae816140cb565b60408201526060830151613bc1816140cb565b60608201529392505050565b600060208284031215613bdf57600080fd5b5035919050565b600081518084526020808501945080840160005b83811015613c1f5781516001600160a01b031687529582019590820190600101613bfa565b509495945050505050565b600081518084526020808501945080840160005b83811015613c1f57815187529582019590820190600101613c3e565b600080835481600182811c915080831680613c7657607f831692505b6020808410821415613c9657634e487b7160e01b86526022600452602486fd5b818015613caa5760018114613cbb57613ce8565b60ff19861689528489019650613ce8565b60008a81526020902060005b86811015613ce05781548b820152908501908301613cc7565b505084890196505b509498975050505050505050565b6001600160a01b0384168152606060208201819052600090613d1a90830185613be6565b8281036040840152613d2c8185613c2a565b9695505050505050565b60008186825b6002811015613d645781516001600160a01b0316835260209283019290910190600101613d3c565b50505060a06040830152613d7b60a0830186613c2a565b8281036060840152613d8d8186613c2a565b90508281036080840152613da18185613be6565b979650505050505050565b83815260406020820152816040820152818360608301376000818301606090810191909152601f909201601f1916010192915050565b600060208083528351808285015260005b81811015613e0f57858101830151858201604001528201613df3565b81811115613e21576000604083870101525b50601f01601f1916929092016040019392505050565b6020808252818101527f455243323054656d706c6174653a204e4f54204445504c4f59455220524f4c45604082015260600190565b604051601f8201601f1916810167ffffffffffffffff81118282101715613e9557613e956140a0565b604052919050565b600067ffffffffffffffff821115613eb757613eb76140a0565b5060051b60200190565b60008219821115613ed457613ed4614074565b500190565b600082613ef657634e487b7160e01b600052601260045260246000fd5b500490565b600082821015613f0d57613f0d614074565b500390565b6000613f206135e484613e9d565b808482526020808301925084368760051b87011115613f3e57600080fd5b60005b87811015613f9257813567ffffffffffffffff811115613f6057600080fd5b870136601f820112613f7157600080fd5b613f7f36823586840161351f565b8652509382019390820190600101613f41565b50919695505050505050565b6000613fac6135e484613e9d565b808482526020808301925084368760051b87011115613fca57600080fd5b60005b87811015613f9257813567ffffffffffffffff811115613fec57600080fd5b870136601f820112613ffd57600080fd5b61400b36823586840161351f565b8652509382019390820190600101613fcd565b600181811c9082168061403257607f821691505b6020821081141561405357634e487b7160e01b600052602260045260246000fd5b50919050565b600060001982141561406d5761406d614074565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b0381168114610bb957600080fd5b8015158114610bb957600080fdfea264697066735822122038e80733697a8b6fee40b6bffcc7b9a64e18064240c8751cb1c5b429c6f89b6364736f6c63430008070033", + "deployedBytecode": "0x60806040526004361061025c5760003560e01c80635d1ca63111610143578063aa492ef9116100bb578063e086e5ec11610077578063e086e5ec146107dc578063e487c2e8146107e4578063ec342ad0146107f9578063ef867ff414610815578063f887ea4014610835578063fda9dae71461085557005b8063aa492ef914610701578063ab62f0e114610721578063b2263a5d14610741578063b3998be014610756578063d505accf14610776578063dd62ed3e1461079657005b80638b96412b1161010a5780638b96412b1461063357806395d89b4114610653578063983b2d5614610668578063a457c2d714610688578063a9059cbb146106a8578063aa271e1a146106c857005b80635d1ca6311461058757806370a082311461059b57806379cc6790146105d15780637ecebe00146105f157806382c03da51461061e57005b8063355274ea116101d657806340c10f191161019d57806340c10f19146104d257806342966c68146104f25780634f189cb21461051257806357a3a31b1461052757806357ad5ff6146105475780635bfe4da01461056757005b8063355274ea1461042c5780633644e51514610441578063392e53cd146104575780633950935114610476578063397b37431461049657005b8063191c918a11610225578063191c918a1461035657806323b872dd1461037657806325b00243146103965780633092afd5146103b657806330adf81f146103d6578063313ce5671461040a57005b80627ffb781461025e57806301e882081461029557806306fdde03146102e5578063095ea7b31461030757806318160ddd14610337575b005b34801561026a57600080fd5b50600b546001600160a01b03165b6040516001600160a01b0390911681526020015b60405180910390f35b3480156102a157600080fd5b506102ce6102b036600461369e565b60056020526000908152604090205460ff8082169161010090041682565b60408051921515835290151560208301520161028c565b3480156102f157600080fd5b506102fa610875565b60405161028c9190613de2565b34801561031357600080fd5b5061032761032236600461383f565b610907565b604051901515815260200161028c565b34801561034357600080fd5b506002545b60405190815260200161028c565b34801561036257600080fd5b5061025c6103713660046138d2565b61091d565b34801561038257600080fd5b50610327610391366004613711565b610a64565b3480156103a257600080fd5b5061025c6103b136600461369e565b610b0e565b3480156103c257600080fd5b5061025c6103d136600461369e565b610bbc565b3480156103e257600080fd5b506103487f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b34801561041657600080fd5b5060125b60405160ff909116815260200161028c565b34801561043857600080fd5b50600954610348565b34801561044d57600080fd5b5061034860105481565b34801561046357600080fd5b50600a54600160a01b900460ff16610327565b34801561048257600080fd5b5061032761049136600461383f565b610c67565b3480156104a257600080fd5b50600d54600e54600f54604080516001600160a01b0394851681529390921660208401529082015260600161028c565b3480156104de57600080fd5b5061025c6104ed36600461383f565b610ca3565b3480156104fe57600080fd5b5061025c61050d366004613bcd565b610d79565b34801561051e57600080fd5b5061025c610d83565b34801561053357600080fd5b5061025c61054236600461369e565b610e79565b34801561055357600080fd5b5061025c610562366004613711565b610fd5565b34801561057357600080fd5b50610278610582366004613a22565b611077565b34801561059357600080fd5b50600161041a565b3480156105a757600080fd5b506103486105b636600461369e565b6001600160a01b031660009081526020819052604090205490565b3480156105dd57600080fd5b5061025c6105ec36600461383f565b611380565b3480156105fd57600080fd5b5061034861060c36600461369e565b60116020526000908152604090205481565b34801561062a57600080fd5b5061025c611406565b34801561063f57600080fd5b5061034861064e3660046137c9565b611460565b34801561065f57600080fd5b506102fa611623565b34801561067457600080fd5b5061025c61068336600461369e565b611632565b34801561069457600080fd5b506103276106a336600461383f565b6116dd565b3480156106b457600080fd5b506103276106c336600461383f565b611776565b3480156106d457600080fd5b506103276106e336600461369e565b6001600160a01b031660009081526005602052604090205460ff1690565b34801561070d57600080fd5b5061025c61071c36600461369e565b611783565b34801561072d57600080fd5b5061025c61073c366004613ad6565b61182e565b34801561074d57600080fd5b50610348611973565b34801561076257600080fd5b50610327610771366004613931565b611989565b34801561078257600080fd5b5061025c610791366004613752565b611ac3565b3480156107a257600080fd5b506103486107b13660046136d8565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b61025c611cd5565b3480156107f057600080fd5b50610278611d15565b34801561080557600080fd5b50610348670de0b6b3a764000081565b34801561082157600080fd5b50610278610830366004613bcd565b611db9565b34801561084157600080fd5b50601254610278906001600160a01b031681565b34801561086157600080fd5b5061025c61087036600461386b565b611de3565b6060600780546108849061401e565b80601f01602080910402602001604051908101604052809291908181526020018280546108b09061401e565b80156108fd5780601f106108d2576101008083540402835291602001916108fd565b820191906000526020600020905b8154815290600101906020018083116108e057829003601f168201915b5050505050905090565b6000610914338484612689565b50600192915050565b600b5460405163160a792560e01b81523360048201526001600160a01b039091169063160a792590602401608060405180830381600087803b15801561096257600080fd5b505af1158015610976573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061099a9190613b48565b6020015115156001146109c85760405162461bcd60e51b81526004016109bf90613e37565b60405180910390fd5b601254604051636b14d00560e11b81526001600160a01b038781166004830152306024830152604482018790526064820186905233608483015283811660a48301529091169063d629a00a9060c401600060405180830381600087803b158015610a3157600080fd5b505af1158015610a45573d6000803e3d6000fd5b5050505081151560011415610a5d57610a5d856127ad565b5050505050565b6000610a718484846128af565b6001600160a01b038416600090815260016020908152604080832033845290915290205482811015610af65760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084016109bf565b610b038533858403612689565b506001949350505050565b600b5460405163160a792560e01b81523360048201526001600160a01b039091169063160a792590602401608060405180830381600087803b158015610b5357600080fd5b505af1158015610b67573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b8b9190613b48565b602001511515600114610bb05760405162461bcd60e51b81526004016109bf90613e37565b610bb981612a7e565b50565b600b5460405163160a792560e01b81523360048201526001600160a01b039091169063160a792590602401608060405180830381600087803b158015610c0157600080fd5b505af1158015610c15573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c399190613b48565b602001511515600114610c5e5760405162461bcd60e51b81526004016109bf90613e37565b610bb981612adf565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091610914918590610c9e908690613ec1565b612689565b3360009081526005602052604090205460ff161515600114610d075760405162461bcd60e51b815260206004820152601960248201527f455243323054656d706c6174653a204e4f54204d494e5445520000000000000060448201526064016109bf565b600954610d1d82610d1760025490565b90612b3f565b1115610d6b5760405162461bcd60e51b815260206004820152601f60248201527f44617461546f6b656e54656d706c6174653a206361702065786365656465640060448201526064016109bf565b610d758282612b52565b5050565b610bb93382612c31565b600b546040516331a9108f60e11b8152600160048201526001600160a01b0390911690636352211e9060240160206040518083038186803b158015610dc757600080fd5b505afa158015610ddb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dff91906136bb565b6001600160a01b0316336001600160a01b031614610e5f5760405162461bcd60e51b815260206004820152601b60248201527f455243323054656d706c6174653a206e6f74204e46544f776e6572000000000060448201526064016109bf565b610e67612d7f565b600c80546001600160a01b0319169055565b3360009081526005602052604090205460ff61010090910416151560011480610f245750600b5460405163160a792560e01b81523360048201526001600160a01b039091169063160a792590602401608060405180830381600087803b158015610ee257600080fd5b505af1158015610ef6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f1a9190613b48565b6020015115156001145b610f845760405162461bcd60e51b815260206004820152602b60248201527f455243323054656d706c6174653a204e4f54205041594d454e54204d414e414760448201526a22a91037b91027aba722a960a91b60648201526084016109bf565b610f8d81612e2e565b604080514281524360208201526001600160a01b0383169133917f4d7694d695c57cc54947177c8e8a0e61aae664e9223492a798c32fadfc6419cc910160405180910390a350565b600d546001600160a01b031633146110425760405162461bcd60e51b815260206004820152602a60248201527f455243323054656d706c6174653a206e6f74207075626c6973684d61726b65746044820152694665654164647265737360b01b60648201526084016109bf565b600d80546001600160a01b039485166001600160a01b031991821617909155600e805493909416921691909117909155600f55565b600b5460405163160a792560e01b81523360048201526000916001600160a01b03169063160a792590602401608060405180830381600087803b1580156110bd57600080fd5b505af11580156110d1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110f59190613b48565b60200151151560011461111a5760405162461bcd60e51b81526004016109bf90613e37565b600254156111765760405162461bcd60e51b8152602060048201526024808201527f455243323054656d706c6174653a20746f6b656e7320616c7265616479206d696044820152631b9d195960e21b60648201526084016109bf565b6111998260008151811061118c5761118c61408a565b60200260200101516127ad565b62250490846003815181106111b0576111b061408a565b6020026020010151116112175760405162461bcd60e51b815260206004820152602960248201527f455243323054656d706c6174653a206d696e696d756d20626c6f636b73206e6f6044820152681d081c995858da195960ba1b60648201526084016109bf565b60006040518060400160405280306001600160a01b03166001600160a01b031681526020018460018151811061124f5761124f61408a565b60209081029190910101516001600160a01b0390811690915260125460405163ee3bc63560e01b8152929350169063ee3bc63590611297908490899089908990600401613d36565b602060405180830381600087803b1580156112b157600080fd5b505af11580156112c5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112e991906136bb565b91507fd02da1bec30f7f750aa0a131745dfb9ce96767c45a192dc26409f5d690e0b96782846000815181106113205761132061408a565b60200260200101518560018151811061133b5761133b61408a565b6020026020010151604051611370939291906001600160a01b0393841681529183166020830152909116604082015260600190565b60405180910390a1509392505050565b600061138c83336107b1565b9050818110156113ea5760405162461bcd60e51b8152602060048201526024808201527f45524332303a206275726e20616d6f756e74206578636565647320616c6c6f77604482015263616e636560e01b60648201526084016109bf565b6113f78333848403612689565b6114018383612c31565b505050565b600b546001600160a01b03163314610e5f5760405162461bcd60e51b815260206004820152601f60248201527f455243323054656d706c6174653a204e4f542037323120436f6e74726163740060448201526064016109bf565b600b5460405163160a792560e01b81523360048201526000916001600160a01b03169063160a792590602401608060405180830381600087803b1580156114a657600080fd5b505af11580156114ba573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114de9190613b48565b6020015115156001146115035760405162461bcd60e51b81526004016109bf90613e37565b601254604051638244937560e01b81526001600160a01b039091169063824493759061153790879087908790600401613cf6565b602060405180830381600087803b15801561155157600080fd5b505af1158015611565573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115899190613abd565b90506000826004815181106115a0576115a061408a565b602002602001015111156115b7576115b7846127ad565b7f195d202f33578769e120c3041341554af3193e67ee004175095bc9c06e6e616581846000815181106115ec576115ec61408a565b60200260200101516040516116149291909182526001600160a01b0316602082015260400190565b60405180910390a19392505050565b6060600880546108849061401e565b600b5460405163160a792560e01b81523360048201526001600160a01b039091169063160a792590602401608060405180830381600087803b15801561167757600080fd5b505af115801561168b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116af9190613b48565b6020015115156001146116d45760405162461bcd60e51b81526004016109bf90613e37565b610bb9816127ad565b3360009081526001602090815260408083206001600160a01b03861684529091528120548281101561175f5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016109bf565b61176c3385858403612689565b5060019392505050565b60006109143384846128af565b600b5460405163160a792560e01b81523360048201526001600160a01b039091169063160a792590602401608060405180830381600087803b1580156117c857600080fd5b505af11580156117dc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118009190613b48565b6020015115156001146118255760405162461bcd60e51b81526004016109bf90613e37565b610bb981612e50565b600b5460405163160a792560e01b81523360048201526001600160a01b039091169063160a792590602401608060405180830381600087803b15801561187357600080fd5b505af1158015611887573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118ab9190613b48565b6020015115156001146118d05760405162461bcd60e51b81526004016109bf90613e37565b6040516bffffffffffffffffffffffff193060601b16602082015260009060340160408051601f19818403018152908290528051602090910120600b546301caf8fd60e31b83529092506001600160a01b031690630e57c7e89061193c90849087908790600401613dac565b600060405180830381600087803b15801561195657600080fd5b505af115801561196a573d6000803e3d6000fd5b50505050505050565b6119866064670de0b6b3a7640000613ed9565b81565b600a54600090600160a01b900460ff1615611a005760405162461bcd60e51b815260206004820152603160248201527f455243323054656d706c6174653a20746f6b656e20696e7374616e636520616c6044820152701c9958591e481a5b9a5d1a585b1a5e9959607a1b60648201526084016109bf565b611ab4611a0d8b8d613f9e565b8a8a8080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020808e0282810182019093528d82529093508d92508c91829185019084908082843760009201919091525050604080516020808d0282810182019093528c82529093508c92508b918291850190849080828437600092019190915250611aaf92508991508a9050613f12565b612f5e565b9b9a5050505050505050505050565b42841015611b065760405162461bcd60e51b815260206004820152601060248201526f115490cc8c11150e881156141254915160821b60448201526064016109bf565b6010546001600160a01b038816600090815260116020526040812080549192917f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9918b918b918b919087611b5983614059565b909155506040805160208101969096526001600160a01b0394851690860152929091166060840152608083015260a082015260c0810187905260e00160405160208183030381529060405280519060200120604051602001611bd292919061190160f01b81526002810192909252602282015260420190565b60408051601f198184030181528282528051602091820120600080855291840180845281905260ff88169284019290925260608301869052608083018590529092509060019060a0016020604051602081039080840390855afa158015611c3d573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811615801590611c735750886001600160a01b0316816001600160a01b0316145b611cbf5760405162461bcd60e51b815260206004820152601a60248201527f455243323044543a20494e56414c49445f5349474e415455524500000000000060448201526064016109bf565b611cca898989612689565b505050505050505050565b611cdd611d15565b6001600160a01b03166108fc479081150290604051600060405180830381858888f19350505050158015610bb9573d6000803e3d6000fd5b600c546000906001600160a01b0316611da957600b546040516331a9108f60e11b8152600160048201526001600160a01b0390911690636352211e9060240160206040518083038186803b158015611d6c57600080fd5b505afa158015611d80573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611da491906136bb565b905090565b50600c546001600160a01b031690565b60068181548110611dc957600080fd5b6000918252602090912001546001600160a01b0316905081565b336000908152602081905260408120548190871115611e525760405162461bcd60e51b815260206004820152602560248201527f4e6f7420656e6f756768204461746120546f6b656e7320746f2073746172742060448201526427b93232b960d91b60648201526084016109bf565b6000600f54118015611e6e5750600e546001600160a01b031615155b8015611e845750600d546001600160a01b031615155b1561208d57600e54600f546040516323b872dd60e01b815233600482015230602482015260448101919091526001600160a01b03909116906323b872dd90606401602060405180830381600087803b158015611edf57600080fd5b505af1158015611ef3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f179190613aa0565b611f6f5760405162461bcd60e51b815260206004820152602360248201527f4661696c656420746f207472616e73666572207075626c6973684d61726b657460448201526246656560e81b60648201526084016109bf565b600f54611f7d906064613450565b600e54600d54600f549293506001600160a01b039182169263a9059cbb9290911690611fa9908561345c565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401602060405180830381600087803b158015611fef57600080fd5b505af1158015612003573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120279190613aa0565b61208d5760405162461bcd60e51b815260206004820152603160248201527f4661696c656420746f207472616e736665722066656520746f207075626c6973604482015270684d61726b65744665654164647265737360781b60648201526084016109bf565b6000831180156120a557506001600160a01b03841615155b80156120b957506001600160a01b03851615155b15612295576040516323b872dd60e01b8152336004820152306024820152604481018490526001600160a01b038516906323b872dd90606401602060405180830381600087803b15801561210c57600080fd5b505af1158015612120573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121449190613aa0565b6121905760405162461bcd60e51b815260206004820152601d60248201527f4661696c656420746f207472616e7366657220636f6e73756d6546656500000060448201526064016109bf565b61219b836064613450565b91506001600160a01b03841663a9059cbb866121b7868661345c565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401602060405180830381600087803b1580156121fd57600080fd5b505af1158015612211573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122359190613aa0565b6122955760405162461bcd60e51b815260206004820152602b60248201527f4661696c656420746f207472616e736665722066656520746f20636f6e73756d60448201526a654665654164647265737360a81b60648201526084016109bf565b6000811180156122a55750600082115b80156122be5750600e546001600160a01b038581169116145b156123be57600a546001600160a01b038086169163a9059cbb91166122e38486612b3f565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401602060405180830381600087803b15801561232957600080fd5b505af115801561233d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123619190613aa0565b6123b95760405162461bcd60e51b815260206004820152602360248201527f4661696c656420746f207472616e7366657220626f7468206665657320746f2060448201526227a82360e91b60648201526084016109bf565b6125bd565b6000811180156123d85750600e546001600160a01b031615155b156124c057600e54600a5460405163a9059cbb60e01b81526001600160a01b0391821660048201526024810184905291169063a9059cbb90604401602060405180830381600087803b15801561242d57600080fd5b505af1158015612441573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124659190613aa0565b6124c05760405162461bcd60e51b815260206004820152602660248201527f4661696c656420746f207472616e73666572207075626c6973682066656573206044820152653a379027a82360d11b60648201526084016109bf565b6000821180156124d857506001600160a01b03841615155b156125bd57600a5460405163a9059cbb60e01b81526001600160a01b039182166004820152602481018490529085169063a9059cbb90604401602060405180830381600087803b15801561252b57600080fd5b505af115801561253f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125639190613aa0565b6125bd5760405162461bcd60e51b815260206004820152602560248201527f4661696c656420746f207472616e7366657220636f6e73756d65206665652074604482015264379027a82360d91b60648201526084016109bf565b6125ce6125c8611d15565b88611776565b50600d5460408051338152602081018a90529081018890524260608201524360808201526001600160a01b0387811692811691908b16907fb07adb6a34680ecbbc7935971c45a07b9baf67ce5dc57332d51e3a5745c9e9639060a00160405180910390a4836001600160a01b0316856001600160a01b03167fcc9877307cd6845dfd092292e4719f293ac5d1039527d98ca0ae9fd76791236b8560405161267791815260200190565b60405180910390a35050505050505050565b6001600160a01b0383166126eb5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016109bf565b6001600160a01b03821661274c5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016109bf565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0381166000908152600560205260409020805460ff16156128175760405162461bcd60e51b815260206004820152601d60248201527f4552433230526f6c65733a2020414c52454144592041204d494e54455200000060448201526064016109bf565b8054600160ff19909116811782556006805491820181556000527ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f0180546001600160a01b0319166001600160a01b038416908117909155604080514281524360208201523392917f4f7e100eb1ee13e903798bd0d6aa854152e07eb05544f392b9409c12935c809591015b60405180910390a35050565b6001600160a01b0383166129135760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016109bf565b6001600160a01b0382166129755760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016109bf565b6001600160a01b038316600090815260208190526040902054818110156129ed5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016109bf565b6001600160a01b03808516600090815260208190526040808220858503905591851681529081208054849290612a24908490613ec1565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612a7091815260200190565b60405180910390a350505050565b6001600160a01b03811660008181526005602052604090819020805461ff00191681559051909133917faee911eec8b2df8f3ae0464841541b1e5f339519bd5cf51889fe8b07fecff658906128a39042904390918252602082015260400190565b6001600160a01b03811660008181526005602052604090819020805460ff191681559051909133917fefa2735987005aaa89c050c0ff8cc9ae7d9079d19382081c429130f98c52d480906128a39042904390918252602082015260400190565b6000612b4b8284613ec1565b9392505050565b6001600160a01b038216612ba85760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016109bf565b8060026000828254612bba9190613ec1565b90915550506001600160a01b03821660009081526020819052604081208054839290612be7908490613ec1565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6001600160a01b038216612c915760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b60648201526084016109bf565b6001600160a01b03821660009081526020819052604090205481811015612d055760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b60648201526084016109bf565b6001600160a01b0383166000908152602081905260408120838303905560028054849290612d34908490613efb565b90915550506040518281526000906001600160a01b038516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3505050565b60005b600654811015612de55760006005600060068481548110612da557612da561408a565b60009182526020808320909101546001600160a01b031683528201929092526040019020805461ffff191690555080612ddd81614059565b915050612d82565b50612df260066000613468565b6040805142815243602082015233917f712bc71db81927a76b8bf1ea346247bb0ad58f18e4e5c1bd4aa0ec6573e02a2b910160405180910390a2565b600c80546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b03811660009081526005602052604090208054610100900460ff1615612eca5760405162461bcd60e51b815260206004820152602260248201527f4552433230526f6c65733a2020414c5245414459204120464545204d414e414760448201526122a960f11b60648201526084016109bf565b805461ff001916610100178155600680546001810182556000919091527ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f0180546001600160a01b0384166001600160a01b03199091168117909155604080514281524360208201523392917fb17da2e9910b4ba5754e8872385ba315a238bafb5ae221fc85093c33432c40a791016128a3565b60008084600081518110612f7457612f7461408a565b60200260200101519050600085600181518110612f9357612f9361408a565b6020026020010151905060006001600160a01b0316826001600160a01b031614156130155760405162461bcd60e51b815260206004820152602c60248201527f455243323054656d706c6174653a20496e76616c6964206d696e7465722c202060448201526b7a65726f206164647265737360a01b60648201526084016109bf565b6001600160a01b0381166130915760405162461bcd60e51b815260206004820152603c60248201527f455243323054656d706c6174653a20496e76616c696420636f6d6d756e69747960448201527f2066656520636f6c6c6563746f722c207a65726f20616464726573730000000060648201526084016109bf565b846000815181106130a4576130a461408a565b6020026020010151600014156131085760405162461bcd60e51b8152602060048201526024808201527f44617461546f6b656e54656d706c6174653a20496e76616c6964206361702076604482015263616c756560e01b60648201526084016109bf565b8460008151811061311b5761311b61408a565b60200260200101516009819055508760008151811061313c5761313c61408a565b602002602001015160079080519060200190613159929190613486565b508760018151811061316d5761316d61408a565b60200260200101516008908051906020019061318a929190613486565b50600b80546001600160a01b0319166001600160a01b0384161790558551869060029081106131bb576131bb61408a565b6020908102919091010151601280546001600160a01b039283166001600160a01b0319909116179055600a80546001600160a81b03191691831691909117600160a01b179055865161321890889060009061118c5761118c61408a565b60006001600160a01b0316876001815181106132365761323661408a565b60200260200101516001600160a01b0316146132e05761326f876001815181106132625761326261408a565b6020026020010151612e2e565b866001815181106132825761328261408a565b60200260200101516001600160a01b0316336001600160a01b03167f4d7694d695c57cc54947177c8e8a0e61aae664e9223492a798c32fadfc6419cc42436040516132d7929190918252602082015260400190565b60405180910390a35b866002815181106132f3576132f361408a565b6020026020010151600d60006101000a8154816001600160a01b0302191690836001600160a01b03160217905550866003815181106133345761333461408a565b6020026020010151600e60006101000a8154816001600160a01b0302191690836001600160a01b03160217905550846001815181106133755761337561408a565b6020026020010151600f8190555060004690507f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60076040516133b89190613c5a565b60408051918290038220828201825260018352603160f81b6020938401528151928301939093528101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc66060820152608081018290523060a082015260c00160408051808303601f1901815291905280516020909101206010555050600a54600160a01b900460ff16979650505050505050565b6000612b4b8284613ed9565b6000612b4b8284613efb565b5080546000825590600052602060002090810190610bb9919061350a565b8280546134929061401e565b90600052602060002090601f0160209004810192826134b457600085556134fa565b82601f106134cd57805160ff19168380011785556134fa565b828001600101855582156134fa579182015b828111156134fa5782518255916020019190600101906134df565b5061350692915061350a565b5090565b5b80821115613506576000815560010161350b565b600067ffffffffffffffff831115613539576135396140a0565b61354c601f8401601f1916602001613e6c565b905082815283838301111561356057600080fd5b828260208301376000602084830101529392505050565b60008083601f84011261358957600080fd5b50813567ffffffffffffffff8111156135a157600080fd5b6020830191508360208260051b85010111156135bc57600080fd5b9250929050565b600082601f8301126135d457600080fd5b813560206135e96135e483613e9d565b613e6c565b80838252828201915082860187848660051b890101111561360957600080fd5b60005b8581101561363157813561361f816140b6565b8452928401929084019060010161360c565b5090979650505050505050565b600082601f83011261364f57600080fd5b8135602061365f6135e483613e9d565b80838252828201915082860187848660051b890101111561367f57600080fd5b60005b8581101561363157813584529284019290840190600101613682565b6000602082840312156136b057600080fd5b8135612b4b816140b6565b6000602082840312156136cd57600080fd5b8151612b4b816140b6565b600080604083850312156136eb57600080fd5b82356136f6816140b6565b91506020830135613706816140b6565b809150509250929050565b60008060006060848603121561372657600080fd5b8335613731816140b6565b92506020840135613741816140b6565b929592945050506040919091013590565b600080600080600080600060e0888a03121561376d57600080fd5b8735613778816140b6565b96506020880135613788816140b6565b95506040880135945060608801359350608088013560ff811681146137ac57600080fd5b9699959850939692959460a0840135945060c09093013592915050565b6000806000606084860312156137de57600080fd5b83356137e9816140b6565b9250602084013567ffffffffffffffff8082111561380657600080fd5b613812878388016135c3565b9350604086013591508082111561382857600080fd5b506138358682870161363e565b9150509250925092565b6000806040838503121561385257600080fd5b823561385d816140b6565b946020939093013593505050565b60008060008060008060c0878903121561388457600080fd5b863561388f816140b6565b9550602087013594506040870135935060608701356138ad816140b6565b925060808701356138bd816140b6565b8092505060a087013590509295509295509295565b600080600080600060a086880312156138ea57600080fd5b85356138f5816140b6565b945060208601359350604086013592506060860135613913816140cb565b91506080860135613923816140b6565b809150509295509295909350565b60008060008060008060008060008060a08b8d03121561395057600080fd5b8a3567ffffffffffffffff8082111561396857600080fd5b6139748e838f01613577565b909c509a5060208d013591508082111561398d57600080fd5b6139998e838f01613577565b909a50985060408d01359150808211156139b257600080fd5b6139be8e838f01613577565b909850965060608d01359150808211156139d757600080fd5b6139e38e838f01613577565b909650945060808d01359150808211156139fc57600080fd5b50613a098d828e01613577565b915080935050809150509295989b9194979a5092959850565b600080600060608486031215613a3757600080fd5b833567ffffffffffffffff80821115613a4f57600080fd5b613a5b8783880161363e565b94506020860135915080821115613a7157600080fd5b613a7d8783880161363e565b93506040860135915080821115613a9357600080fd5b50613835868287016135c3565b600060208284031215613ab257600080fd5b8151612b4b816140cb565b600060208284031215613acf57600080fd5b5051919050565b60008060208385031215613ae957600080fd5b823567ffffffffffffffff80821115613b0157600080fd5b818501915085601f830112613b1557600080fd5b813581811115613b2457600080fd5b866020828501011115613b3657600080fd5b60209290920196919550909350505050565b600060808284031215613b5a57600080fd5b6040516080810181811067ffffffffffffffff82111715613b7d57613b7d6140a0565b6040528251613b8b816140cb565b81526020830151613b9b816140cb565b60208201526040830151613bae816140cb565b60408201526060830151613bc1816140cb565b60608201529392505050565b600060208284031215613bdf57600080fd5b5035919050565b600081518084526020808501945080840160005b83811015613c1f5781516001600160a01b031687529582019590820190600101613bfa565b509495945050505050565b600081518084526020808501945080840160005b83811015613c1f57815187529582019590820190600101613c3e565b600080835481600182811c915080831680613c7657607f831692505b6020808410821415613c9657634e487b7160e01b86526022600452602486fd5b818015613caa5760018114613cbb57613ce8565b60ff19861689528489019650613ce8565b60008a81526020902060005b86811015613ce05781548b820152908501908301613cc7565b505084890196505b509498975050505050505050565b6001600160a01b0384168152606060208201819052600090613d1a90830185613be6565b8281036040840152613d2c8185613c2a565b9695505050505050565b60008186825b6002811015613d645781516001600160a01b0316835260209283019290910190600101613d3c565b50505060a06040830152613d7b60a0830186613c2a565b8281036060840152613d8d8186613c2a565b90508281036080840152613da18185613be6565b979650505050505050565b83815260406020820152816040820152818360608301376000818301606090810191909152601f909201601f1916010192915050565b600060208083528351808285015260005b81811015613e0f57858101830151858201604001528201613df3565b81811115613e21576000604083870101525b50601f01601f1916929092016040019392505050565b6020808252818101527f455243323054656d706c6174653a204e4f54204445504c4f59455220524f4c45604082015260600190565b604051601f8201601f1916810167ffffffffffffffff81118282101715613e9557613e956140a0565b604052919050565b600067ffffffffffffffff821115613eb757613eb76140a0565b5060051b60200190565b60008219821115613ed457613ed4614074565b500190565b600082613ef657634e487b7160e01b600052601260045260246000fd5b500490565b600082821015613f0d57613f0d614074565b500390565b6000613f206135e484613e9d565b808482526020808301925084368760051b87011115613f3e57600080fd5b60005b87811015613f9257813567ffffffffffffffff811115613f6057600080fd5b870136601f820112613f7157600080fd5b613f7f36823586840161351f565b8652509382019390820190600101613f41565b50919695505050505050565b6000613fac6135e484613e9d565b808482526020808301925084368760051b87011115613fca57600080fd5b60005b87811015613f9257813567ffffffffffffffff811115613fec57600080fd5b870136601f820112613ffd57600080fd5b61400b36823586840161351f565b8652509382019390820190600101613fcd565b600181811c9082168061403257607f821691505b6020821081141561405357634e487b7160e01b600052602260045260246000fd5b50919050565b600060001982141561406d5761406d614074565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b0381168114610bb957600080fd5b8015158114610bb957600080fdfea264697066735822122038e80733697a8b6fee40b6bffcc7b9a64e18064240c8751cb1c5b429c6f89b6364736f6c63430008070033", + "linkReferences": {}, + "deployedLinkReferences": {} +} \ No newline at end of file diff --git a/abis/ERC20TemplateEnterprise.json b/abis/ERC20TemplateEnterprise.json new file mode 100644 index 0000000..e5bcd0b --- /dev/null +++ b/abis/ERC20TemplateEnterprise.json @@ -0,0 +1,1326 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "ERC20TemplateEnterprise", + "sourceName": "contracts/templates/ERC20TemplateEnterprise.sol", + "abi": [ + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "user", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "signer", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "timestamp", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "blockNumber", + "type": "uint256" + } + ], + "name": "AddedMinter", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "user", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "signer", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "timestamp", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "blockNumber", + "type": "uint256" + } + ], + "name": "AddedPaymentManager", + "type": "event" + }, + { + "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": "signer", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "timestamp", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "blockNumber", + "type": "uint256" + } + ], + "name": "CleanedPermissions", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "currentMinter", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "newMinter", + "type": "address" + } + ], + "name": "MinterApproved", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "currentMinter", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "newMinter", + "type": "address" + } + ], + "name": "MinterProposed", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "bytes32", + "name": "exchangeId", + "type": "bytes32" + }, + { + "indexed": false, + "internalType": "address", + "name": "owner", + "type": "address" + } + ], + "name": "NewFixedRate", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "caller", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "_newPaymentCollector", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "timestamp", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "blockNumber", + "type": "uint256" + } + ], + "name": "NewPaymentCollector", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "poolAddress", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "ssContract", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "basetokenAddress", + "type": "address" + } + ], + "name": "NewPool", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "consumeFeeAddress", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "consumeFeeToken", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "consumeFeeAmount", + "type": "uint256" + } + ], + "name": "OrderMarketFees", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "consumer", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "payer", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "serviceId", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "timestamp", + "type": "uint256" + }, + { + "indexed": true, + "internalType": "address", + "name": "publishMarketAddress", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "consumeFeeMarketAddress", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "blockNumber", + "type": "uint256" + } + ], + "name": "OrderStarted", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "user", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "signer", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "timestamp", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "blockNumber", + "type": "uint256" + } + ], + "name": "RemovedMinter", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "user", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "signer", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "timestamp", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "blockNumber", + "type": "uint256" + } + ], + "name": "RemovedPaymentManager", + "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" + }, + { + "stateMutability": "payable", + "type": "fallback" + }, + { + "inputs": [], + "name": "BASE", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "BASE_COMMUNITY_FEE_PERCENTAGE", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "DOMAIN_SEPARATOR", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "PERMIT_TYPEHASH", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_minter", + "type": "address" + } + ], + "name": "addMinter", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_paymentManager", + "type": "address" + } + ], + "name": "addPaymentManager", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "address", + "name": "spender", + "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": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "authERC20", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "burn", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "burnFrom", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "components": [ + { + "internalType": "address", + "name": "consumer", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "serviceId", + "type": "uint256" + }, + { + "internalType": "address", + "name": "consumeFeeAddress", + "type": "address" + }, + { + "internalType": "address", + "name": "consumeFeeToken", + "type": "address" + }, + { + "internalType": "uint256", + "name": "consumeFeeAmount", + "type": "uint256" + } + ], + "internalType": "struct ERC20TemplateEnterprise.OrderParams", + "name": "_orderParams", + "type": "tuple" + }, + { + "internalType": "address", + "name": "dispenserContract", + "type": "address" + } + ], + "name": "buyFromDispenserAndOrder", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "components": [ + { + "internalType": "address", + "name": "consumer", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "serviceId", + "type": "uint256" + }, + { + "internalType": "address", + "name": "consumeFeeAddress", + "type": "address" + }, + { + "internalType": "address", + "name": "consumeFeeToken", + "type": "address" + }, + { + "internalType": "uint256", + "name": "consumeFeeAmount", + "type": "uint256" + } + ], + "internalType": "struct ERC20TemplateEnterprise.OrderParams", + "name": "_orderParams", + "type": "tuple" + }, + { + "components": [ + { + "internalType": "address", + "name": "exchangeContract", + "type": "address" + }, + { + "internalType": "bytes32", + "name": "exchangeId", + "type": "bytes32" + }, + { + "internalType": "uint256", + "name": "maxBaseTokenAmount", + "type": "uint256" + } + ], + "internalType": "struct ERC20TemplateEnterprise.FreParams", + "name": "_freParams", + "type": "tuple" + } + ], + "name": "buyFromFreAndOrder", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "cap", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "cleanFrom721", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "cleanPermissions", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_dispenser", + "type": "address" + }, + { + "internalType": "uint256", + "name": "maxTokens", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "maxBalance", + "type": "uint256" + }, + { + "internalType": "bool", + "name": "withMint", + "type": "bool" + } + ], + "name": "createDispenser", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "fixedPriceAddress", + "type": "address" + }, + { + "internalType": "address[]", + "name": "addresses", + "type": "address[]" + }, + { + "internalType": "uint256[]", + "name": "uints", + "type": "uint256[]" + } + ], + "name": "createFixedRate", + "outputs": [ + { + "internalType": "bytes32", + "name": "exchangeId", + "type": "bytes32" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "decimals", + "outputs": [ + { + "internalType": "uint8", + "name": "", + "type": "uint8" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "subtractedValue", + "type": "uint256" + } + ], + "name": "decreaseAllowance", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "getERC721Address", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getId", + "outputs": [ + { + "internalType": "uint8", + "name": "", + "type": "uint8" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [], + "name": "getPaymentCollector", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getPublishingMarketFee", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "addedValue", + "type": "uint256" + } + ], + "name": "increaseAllowance", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "string[]", + "name": "strings_", + "type": "string[]" + }, + { + "internalType": "address[]", + "name": "addresses_", + "type": "address[]" + }, + { + "internalType": "address[]", + "name": "factoryAddresses_", + "type": "address[]" + }, + { + "internalType": "uint256[]", + "name": "uints_", + "type": "uint256[]" + }, + { + "internalType": "bytes[]", + "name": "bytes_", + "type": "bytes[]" + } + ], + "name": "initialize", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "isInitialized", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "isMinter", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "mint", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "name", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "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": "", + "type": "address" + } + ], + "name": "permissions", + "outputs": [ + { + "internalType": "bool", + "name": "minter", + "type": "bool" + }, + { + "internalType": "bool", + "name": "paymentManager", + "type": "bool" + } + ], + "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": [ + { + "internalType": "address", + "name": "_minter", + "type": "address" + } + ], + "name": "removeMinter", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_paymentManager", + "type": "address" + } + ], + "name": "removePaymentManager", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "router", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes", + "name": "_value", + "type": "bytes" + } + ], + "name": "setData", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_newPaymentCollector", + "type": "address" + } + ], + "name": "setPaymentCollector", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_publishMarketFeeAddress", + "type": "address" + }, + { + "internalType": "address", + "name": "_publishMarketFeeToken", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_publishMarketFeeAmount", + "type": "uint256" + } + ], + "name": "setPublishingMarketFee", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "consumer", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "serviceId", + "type": "uint256" + }, + { + "internalType": "address", + "name": "consumeFeeAddress", + "type": "address" + }, + { + "internalType": "address", + "name": "consumeFeeToken", + "type": "address" + }, + { + "internalType": "uint256", + "name": "consumeFeeAmount", + "type": "uint256" + } + ], + "name": "startOrder", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "symbol", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "totalSupply", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "recipient", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "transfer", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "internalType": "address", + "name": "recipient", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "withdrawETH", + "outputs": [], + "stateMutability": "payable", + "type": "function" + } + ], + "bytecode": "0x6080604052600a805460ff60a01b191690553480156200001e57600080fd5b5060408051808201825260048152631d195cdd60e21b60208083019182528351808501909452600a8452691d195cdd14de5b589bdb60b21b9084015281519192916200006d916003916200008c565b508051620000839060049060208401906200008c565b5050506200016f565b8280546200009a9062000132565b90600052602060002090601f016020900481019282620000be576000855562000109565b82601f10620000d957805160ff191683800117855562000109565b8280016001018555821562000109579182015b8281111562000109578251825591602001919060010190620000ec565b50620001179291506200011b565b5090565b5b808211156200011757600081556001016200011c565b600181811c908216806200014757607f821691505b602082108114156200016957634e487b7160e01b600052602260045260246000fd5b50919050565b614512806200017f6000396000f3fe6080604052600436106102675760003560e01c806379cc679011610143578063b2263a5d116100bb578063e487c2e811610077578063e487c2e8146107e4578063ec342ad0146107f9578063ef867ff414610815578063f887ea4014610835578063f94bb42114610855578063fda9dae71461087557005b8063b2263a5d14610721578063b3998be014610736578063c3d3cf4d14610756578063d505accf14610776578063dd62ed3e14610796578063e086e5ec146107dc57005b8063983b2d561161010a578063983b2d5614610648578063a457c2d714610668578063a9059cbb14610688578063aa271e1a146106a8578063aa492ef9146106e1578063ab62f0e11461070157005b806379cc6790146105b15780637ecebe00146105d157806382c03da5146105fe5780638b96412b1461061357806395d89b411461063357005b80633644e515116101e157806342966c681161019d57806342966c68146104f25780634f189cb21461051257806357a3a31b1461052757806357ad5ff6146105475780635d1ca6311461056757806370a082311461057b57005b80633644e5151461042c5780633830285014610442578063392e53cd146104625780633950935114610481578063397b3743146104a157806340c10f19146104d257005b806323b872dd1161023057806323b872dd1461036157806325b00243146103815780633092afd5146103a157806330adf81f146103c1578063313ce567146103f5578063355274ea1461041757005b80627ffb781461026957806301e88208146102a057806306fdde03146102f0578063095ea7b31461031257806318160ddd14610342575b005b34801561027557600080fd5b50600b546001600160a01b03165b6040516001600160a01b0390911681526020015b60405180910390f35b3480156102ac57600080fd5b506102d96102bb366004613998565b60056020526000908152604090205460ff8082169161010090041682565b604080519215158352901515602083015201610297565b3480156102fc57600080fd5b50610305610895565b60405161029791906141e5565b34801561031e57600080fd5b5061033261032d366004613c5d565b610927565b6040519015158152602001610297565b34801561034e57600080fd5b506002545b604051908152602001610297565b34801561036d57600080fd5b5061033261037c366004613a0b565b61093d565b34801561038d57600080fd5b5061026761039c366004613998565b6109ec565b3480156103ad57600080fd5b506102676103bc366004613998565b610a9a565b3480156103cd57600080fd5b506103537f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b34801561040157600080fd5b5060125b60405160ff9091168152602001610297565b34801561042357600080fd5b50600954610353565b34801561043857600080fd5b5061035360105481565b34801561044e57600080fd5b5061026761045d366004613ed3565b610b45565b34801561046e57600080fd5b50600a54600160a01b900460ff16610332565b34801561048d57600080fd5b5061033261049c366004613c5d565b610c4d565b3480156104ad57600080fd5b50600d54600e54600f54604051610297936001600160a01b03908116931691906140f7565b3480156104de57600080fd5b506102676104ed366004613c5d565b610c89565b3480156104fe57600080fd5b5061026761050d36600461400c565b610d5b565b34801561051e57600080fd5b50610267610d65565b34801561053357600080fd5b50610267610542366004613998565b610e5b565b34801561055357600080fd5b50610267610562366004613a0b565b610fb7565b34801561057357600080fd5b506002610405565b34801561058757600080fd5b50610353610596366004613998565b6001600160a01b031660009081526020819052604090205490565b3480156105bd57600080fd5b506102676105cc366004613c5d565b611059565b3480156105dd57600080fd5b506103536105ec366004613998565b60116020526000908152604090205481565b34801561060a57600080fd5b506102676110df565b34801561061f57600080fd5b5061035361062e366004613b80565b611139565b34801561063f57600080fd5b5061030561131d565b34801561065457600080fd5b50610267610663366004613998565b61132c565b34801561067457600080fd5b50610332610683366004613c5d565b6113d7565b34801561069457600080fd5b506103326106a3366004613c5d565b611470565b3480156106b457600080fd5b506103326106c3366004613998565b6001600160a01b031660009081526005602052604090205460ff1690565b3480156106ed57600080fd5b506102676106fc366004613998565b61147d565b34801561070d57600080fd5b5061026761071c366004613e61565b611528565b34801561072d57600080fd5b5061035361166d565b34801561074257600080fd5b50610332610751366004613d3a565b611683565b34801561076257600080fd5b50610267610771366004613f00565b6117bd565b34801561078257600080fd5b50610267610791366004613b09565b611c43565b3480156107a257600080fd5b506103536107b13660046139d2565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b610267611e55565b3480156107f057600080fd5b50610283611e95565b34801561080557600080fd5b50610353670de0b6b3a764000081565b34801561082157600080fd5b5061028361083036600461400c565b611f39565b34801561084157600080fd5b50601254610283906001600160a01b031681565b34801561086157600080fd5b50610267610870366004613cf0565b611f63565b34801561088157600080fd5b50610267610890366004613c89565b61209f565b6060600780546108a490614421565b80601f01602080910402602001604051908101604052809291908181526020018280546108d090614421565b801561091d5780601f106108f25761010080835404028352916020019161091d565b820191906000526020600020905b81548152906001019060200180831161090057829003601f168201915b5050505050905090565b60006109343384846120b5565b50600192915050565b600061094a8484846121d9565b6001600160a01b0384166000908152600160209081526040808320338452909152902054828110156109d45760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084015b60405180910390fd5b6109e185338584036120b5565b506001949350505050565b600b5460405163160a792560e01b81523360048201526001600160a01b039091169063160a792590602401608060405180830381600087803b158015610a3157600080fd5b505af1158015610a45573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a699190613f87565b602001511515600114610a8e5760405162461bcd60e51b81526004016109cb9061423a565b610a97816123a7565b50565b600b5460405163160a792560e01b81523360048201526001600160a01b039091169063160a792590602401608060405180830381600087803b158015610adf57600080fd5b505af1158015610af3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b179190613f87565b602001511515600114610b3c5760405162461bcd60e51b81526004016109cb9061423a565b610a9781612414565b6020820151604051631d746d8360e01b815230600482015260248101919091523360448201526001600160a01b03821690631d746d8390606401600060405180830381600087803b158015610b9957600080fd5b505af1158015610bad573d6000803e3d6000fd5b505050508160200151610bd5336001600160a01b031660009081526020819052604090205490565b1015610c235760405162461bcd60e51b815260206004820152601f60248201527f556e61626c6520746f206765742044542066726f6d2044697370656e7365720060448201526064016109cb565b610c49826000015183602001518460400151856060015186608001518760a00151612474565b5050565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091610934918590610c849086906142c4565b6120b5565b3360009081526005602052604090205460ff161515600114610ced5760405162461bcd60e51b815260206004820152601960248201527f455243323054656d706c6174653a204e4f54204d494e5445520000000000000060448201526064016109cb565b600954610d0382610cfd60025490565b90612d06565b1115610d515760405162461bcd60e51b815260206004820152601f60248201527f44617461546f6b656e54656d706c6174653a206361702065786365656465640060448201526064016109cb565b610c498282612d19565b610a973382612df8565b600b546040516331a9108f60e11b8152600160048201526001600160a01b0390911690636352211e9060240160206040518083038186803b158015610da957600080fd5b505afa158015610dbd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610de191906139b5565b6001600160a01b0316336001600160a01b031614610e415760405162461bcd60e51b815260206004820152601b60248201527f455243323054656d706c6174653a206e6f74204e46544f776e6572000000000060448201526064016109cb565b610e49612f46565b600c80546001600160a01b0319169055565b3360009081526005602052604090205460ff61010090910416151560011480610f065750600b5460405163160a792560e01b81523360048201526001600160a01b039091169063160a792590602401608060405180830381600087803b158015610ec457600080fd5b505af1158015610ed8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610efc9190613f87565b6020015115156001145b610f665760405162461bcd60e51b815260206004820152602b60248201527f455243323054656d706c6174653a204e4f54205041594d454e54204d414e414760448201526a22a91037b91027aba722a960a91b60648201526084016109cb565b610f6f81612ff5565b604080514281524360208201526001600160a01b0383169133917f4d7694d695c57cc54947177c8e8a0e61aae664e9223492a798c32fadfc6419cc910160405180910390a350565b600d546001600160a01b031633146110245760405162461bcd60e51b815260206004820152602a60248201527f455243323054656d706c6174653a206e6f74207075626c6973684d61726b65746044820152694665654164647265737360b01b60648201526084016109cb565b600d80546001600160a01b039485166001600160a01b031991821617909155600e805493909416921691909117909155600f55565b600061106583336107b1565b9050818110156110c35760405162461bcd60e51b8152602060048201526024808201527f45524332303a206275726e20616d6f756e74206578636565647320616c6c6f77604482015263616e636560e01b60648201526084016109cb565b6110d083338484036120b5565b6110da8383612df8565b505050565b600b546001600160a01b03163314610e415760405162461bcd60e51b815260206004820152601f60248201527f455243323054656d706c6174653a204e4f542037323120436f6e74726163740060448201526064016109cb565b600b5460405163160a792560e01b81523360048201526000916001600160a01b03169063160a792590602401608060405180830381600087803b15801561117f57600080fd5b505af1158015611193573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111b79190613f87565b6020015115156001146111dc5760405162461bcd60e51b81526004016109cb9061423a565b30836003815181106111f0576111f061448d565b6001600160a01b039283166020918202929092010152601254604051638244937560e01b81529116906382449375906112319087908790879060040161411b565b602060405180830381600087803b15801561124b57600080fd5b505af115801561125f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112839190613e48565b905060008260048151811061129a5761129a61448d565b602002602001015111156112b1576112b184613017565b7f195d202f33578769e120c3041341554af3193e67ee004175095bc9c06e6e616581846000815181106112e6576112e661448d565b602002602001015160405161130e9291909182526001600160a01b0316602082015260400190565b60405180910390a19392505050565b6060600880546108a490614421565b600b5460405163160a792560e01b81523360048201526001600160a01b039091169063160a792590602401608060405180830381600087803b15801561137157600080fd5b505af1158015611385573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113a99190613f87565b6020015115156001146113ce5760405162461bcd60e51b81526004016109cb9061423a565b610a9781613017565b3360009081526001602090815260408083206001600160a01b0386168452909152812054828110156114595760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016109cb565b61146633858584036120b5565b5060019392505050565b60006109343384846121d9565b600b5460405163160a792560e01b81523360048201526001600160a01b039091169063160a792590602401608060405180830381600087803b1580156114c257600080fd5b505af11580156114d6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114fa9190613f87565b60200151151560011461151f5760405162461bcd60e51b81526004016109cb9061423a565b610a9781613111565b600b5460405163160a792560e01b81523360048201526001600160a01b039091169063160a792590602401608060405180830381600087803b15801561156d57600080fd5b505af1158015611581573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115a59190613f87565b6020015115156001146115ca5760405162461bcd60e51b81526004016109cb9061423a565b6040516bffffffffffffffffffffffff193060601b16602082015260009060340160408051601f19818403018152908290528051602090910120600b546301caf8fd60e31b83529092506001600160a01b031690630e57c7e890611636908490879087906004016141af565b600060405180830381600087803b15801561165057600080fd5b505af1158015611664573d6000803e3d6000fd5b50505050505050565b6116806064670de0b6b3a76400006142dc565b81565b600a54600090600160a01b900460ff16156116fa5760405162461bcd60e51b815260206004820152603160248201527f455243323054656d706c6174653a20746f6b656e20696e7374616e636520616c6044820152701c9958591e481a5b9a5d1a585b1a5e9959607a1b60648201526084016109cb565b6117ae6117078b8d6143a1565b8a8a8080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020808e0282810182019093528d82529093508d92508c91829185019084908082843760009201919091525050604080516020808d0282810182019093528c82529093508c92508b9182918501908490808284376000920191909152506117a992508991508a9050614315565b61321f565b9b9a5050505050505050505050565b80516020820151604051634c87087d60e01b815260009283926001600160a01b0390911691634c87087d916117f89160040190815260200190565b6101806040518083038186803b15801561181157600080fd5b505afa158015611825573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118499190613a4c565b5050505050505050935050925050306001600160a01b0316826001600160a01b0316146118c85760405162461bcd60e51b815260206004820152602760248201527f5468697320466978656452617465206973206e6f742070726f766964696e67206044820152661d1a1a5cc8111560ca1b60648201526084016109cb565b82516020808501519086015160405163c99733a760e01b81526000936001600160a01b03169263c99733a79261190992600401918252602082015260400190565b60806040518083038186803b15801561192157600080fd5b505afa158015611935573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119599190614025565b505050905083604001518111156119c25760405162461bcd60e51b815260206004820152602760248201527f46697865645261746545786368616e67653a20546f6f206d616e79206261736560448201526620746f6b656e7360c81b60648201526084016109cb565b6040516323b872dd60e01b81526001600160a01b038316906323b872dd906119f2903390309086906004016140f7565b602060405180830381600087803b158015611a0c57600080fd5b505af1158015611a20573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a449190613e2b565b611a9b5760405162461bcd60e51b815260206004820152602260248201527f4661696c656420746f207472616e736665722062617365546f6b656e416d6f756044820152611b9d60f21b60648201526084016109cb565b835160405163095ea7b360e01b81526001600160a01b039182166004820152602481018390529083169063095ea7b390604401602060405180830381600087803b158015611ae857600080fd5b505af1158015611afc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b209190613e2b565b5083516020808601519087015160405163412dae6b60e11b815260048101929092526024820152604481018390526001600160a01b039091169063825b5cd690606401600060405180830381600087803b158015611b7d57600080fd5b505af1158015611b91573d6000803e3d6000fd5b505050508460200151611bb9306001600160a01b031660009081526020819052604090205490565b1015611c075760405162461bcd60e51b815260206004820152601f60248201527f556e61626c6520746f206275792044542066726f6d204669786564526174650060448201526064016109cb565b611c16303387602001516121d9565b611c3c856000015186602001518760400151886060015189608001518a60a00151612474565b5050505050565b42841015611c865760405162461bcd60e51b815260206004820152601060248201526f115490cc8c11150e881156141254915160821b60448201526064016109cb565b6010546001600160a01b038816600090815260116020526040812080549192917f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9918b918b918b919087611cd98361445c565b909155506040805160208101969096526001600160a01b0394851690860152929091166060840152608083015260a082015260c0810187905260e00160405160208183030381529060405280519060200120604051602001611d5292919061190160f01b81526002810192909252602282015260420190565b60408051601f198184030181528282528051602091820120600080855291840180845281905260ff88169284019290925260608301869052608083018590529092509060019060a0016020604051602081039080840390855afa158015611dbd573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811615801590611df35750886001600160a01b0316816001600160a01b0316145b611e3f5760405162461bcd60e51b815260206004820152601a60248201527f455243323044543a20494e56414c49445f5349474e415455524500000000000060448201526064016109cb565b611e4a8989896120b5565b505050505050505050565b611e5d611e95565b6001600160a01b03166108fc479081150290604051600060405180830381858888f19350505050158015610a97573d6000803e3d6000fd5b600c546000906001600160a01b0316611f2957600b546040516331a9108f60e11b8152600160048201526001600160a01b0390911690636352211e9060240160206040518083038186803b158015611eec57600080fd5b505afa158015611f00573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f2491906139b5565b905090565b50600c546001600160a01b031690565b60068181548110611f4957600080fd5b6000918252602090912001546001600160a01b0316905081565b600b5460405163160a792560e01b81523360048201526001600160a01b039091169063160a792590602401608060405180830381600087803b158015611fa857600080fd5b505af1158015611fbc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fe09190613f87565b6020015115156001146120055760405162461bcd60e51b81526004016109cb9061423a565b601254604051636b14d00560e11b81526001600160a01b0386811660048301523060248301819052604483018790526064830186905233608484015260a48301529091169063d629a00a9060c401600060405180830381600087803b15801561206d57600080fd5b505af1158015612081573d6000803e3d6000fd5b50505050801515600114156120995761209984613017565b50505050565b6120ad868686868686612474565b505050505050565b6001600160a01b0383166121175760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016109cb565b6001600160a01b0382166121785760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016109cb565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b03831661223d5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016109cb565b6001600160a01b03821661229f5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016109cb565b6001600160a01b038316600090815260208190526040902054818110156123175760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016109cb565b6001600160a01b0380851660009081526020819052604080822085850390559185168152908120805484929061234e9084906142c4565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161239a91815260200190565b60405180910390a3612099565b6001600160a01b03811660008181526005602052604090819020805461ff00191681559051909133917faee911eec8b2df8f3ae0464841541b1e5f339519bd5cf51889fe8b07fecff658906124089042904390918252602082015260400190565b60405180910390a35050565b6001600160a01b03811660008181526005602052604090819020805460ff191681559051909133917fefa2735987005aaa89c050c0ff8cc9ae7d9079d19382081c429130f98c52d480906124089042904390918252602082015260400190565b3360009081526020819052604081205481908711156124e35760405162461bcd60e51b815260206004820152602560248201527f4e6f7420656e6f756768204461746120546f6b656e7320746f2073746172742060448201526427b93232b960d91b60648201526084016109cb565b6000600f541180156124ff5750600e546001600160a01b031615155b80156125155750600d546001600160a01b031615155b1561271757600e54600f546040516323b872dd60e01b81526001600160a01b03909216916323b872dd9161254f91339130916004016140f7565b602060405180830381600087803b15801561256957600080fd5b505af115801561257d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125a19190613e2b565b6125f95760405162461bcd60e51b815260206004820152602360248201527f4661696c656420746f207472616e73666572207075626c6973684d61726b657460448201526246656560e81b60648201526084016109cb565b600f5461260790606461371e565b600e54600d54600f549293506001600160a01b039182169263a9059cbb9290911690612633908561372a565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401602060405180830381600087803b15801561267957600080fd5b505af115801561268d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126b19190613e2b565b6127175760405162461bcd60e51b815260206004820152603160248201527f4661696c656420746f207472616e736665722066656520746f207075626c6973604482015270684d61726b65744665654164647265737360781b60648201526084016109cb565b60008311801561272f57506001600160a01b03841615155b801561274357506001600160a01b03851615155b1561291b576040516323b872dd60e01b81526001600160a01b038516906323b872dd90612778903390309088906004016140f7565b602060405180830381600087803b15801561279257600080fd5b505af11580156127a6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127ca9190613e2b565b6128165760405162461bcd60e51b815260206004820152601d60248201527f4661696c656420746f207472616e7366657220636f6e73756d6546656500000060448201526064016109cb565b61282183606461371e565b91506001600160a01b03841663a9059cbb8661283d868661372a565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401602060405180830381600087803b15801561288357600080fd5b505af1158015612897573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128bb9190613e2b565b61291b5760405162461bcd60e51b815260206004820152602b60248201527f4661696c656420746f207472616e736665722066656520746f20636f6e73756d60448201526a654665654164647265737360a81b60648201526084016109cb565b60008111801561292b5750600082115b80156129445750600e546001600160a01b038581169116145b15612a4457600a546001600160a01b038086169163a9059cbb91166129698486612d06565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401602060405180830381600087803b1580156129af57600080fd5b505af11580156129c3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129e79190613e2b565b612a3f5760405162461bcd60e51b815260206004820152602360248201527f4661696c656420746f207472616e7366657220626f7468206665657320746f2060448201526227a82360e91b60648201526084016109cb565b612c43565b600081118015612a5e5750600e546001600160a01b031615155b15612b4657600e54600a5460405163a9059cbb60e01b81526001600160a01b0391821660048201526024810184905291169063a9059cbb90604401602060405180830381600087803b158015612ab357600080fd5b505af1158015612ac7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612aeb9190613e2b565b612b465760405162461bcd60e51b815260206004820152602660248201527f4661696c656420746f207472616e73666572207075626c6973682066656573206044820152653a379027a82360d11b60648201526084016109cb565b600082118015612b5e57506001600160a01b03841615155b15612c4357600a5460405163a9059cbb60e01b81526001600160a01b039182166004820152602481018490529085169063a9059cbb90604401602060405180830381600087803b158015612bb157600080fd5b505af1158015612bc5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612be99190613e2b565b612c435760405162461bcd60e51b815260206004820152602560248201527f4661696c656420746f207472616e7366657220636f6e73756d65206665652074604482015264379027a82360d91b60648201526084016109cb565b612c4c87610d5b565b600d5460408051338152602081018a90529081018890524260608201524360808201526001600160a01b0387811692811691908b16907fb07adb6a34680ecbbc7935971c45a07b9baf67ce5dc57332d51e3a5745c9e9639060a00160405180910390a4836001600160a01b0316856001600160a01b03167fcc9877307cd6845dfd092292e4719f293ac5d1039527d98ca0ae9fd76791236b85604051612cf491815260200190565b60405180910390a35050505050505050565b6000612d1282846142c4565b9392505050565b6001600160a01b038216612d6f5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016109cb565b8060026000828254612d8191906142c4565b90915550506001600160a01b03821660009081526020819052604081208054839290612dae9084906142c4565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6001600160a01b038216612e585760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b60648201526084016109cb565b6001600160a01b03821660009081526020819052604090205481811015612ecc5760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b60648201526084016109cb565b6001600160a01b0383166000908152602081905260408120838303905560028054849290612efb9084906142fe565b90915550506040518281526000906001600160a01b038516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3505050565b60005b600654811015612fac5760006005600060068481548110612f6c57612f6c61448d565b60009182526020808320909101546001600160a01b031683528201929092526040019020805461ffff191690555080612fa48161445c565b915050612f49565b50612fb960066000613736565b6040805142815243602082015233917f712bc71db81927a76b8bf1ea346247bb0ad58f18e4e5c1bd4aa0ec6573e02a2b910160405180910390a2565b600c80546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0381166000908152600560205260409020805460ff16156130815760405162461bcd60e51b815260206004820152601d60248201527f4552433230526f6c65733a2020414c52454144592041204d494e54455200000060448201526064016109cb565b8054600160ff19909116811782556006805491820181556000527ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f0180546001600160a01b0319166001600160a01b038416908117909155604080514281524360208201523392917f4f7e100eb1ee13e903798bd0d6aa854152e07eb05544f392b9409c12935c80959101612408565b6001600160a01b03811660009081526005602052604090208054610100900460ff161561318b5760405162461bcd60e51b815260206004820152602260248201527f4552433230526f6c65733a2020414c5245414459204120464545204d414e414760448201526122a960f11b60648201526084016109cb565b805461ff001916610100178155600680546001810182556000919091527ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f0180546001600160a01b0384166001600160a01b03199091168117909155604080514281524360208201523392917fb17da2e9910b4ba5754e8872385ba315a238bafb5ae221fc85093c33432c40a79101612408565b600080846000815181106132355761323561448d565b602002602001015190506000856001815181106132545761325461448d565b6020026020010151905060006001600160a01b0316826001600160a01b031614156132d65760405162461bcd60e51b815260206004820152602c60248201527f455243323054656d706c6174653a20496e76616c6964206d696e7465722c202060448201526b7a65726f206164647265737360a01b60648201526084016109cb565b6001600160a01b0381166133525760405162461bcd60e51b815260206004820152603c60248201527f455243323054656d706c6174653a20496e76616c696420636f6d6d756e69747960448201527f2066656520636f6c6c6563746f722c207a65726f20616464726573730000000060648201526084016109cb565b846000815181106133655761336561448d565b6020026020010151600014156133c95760405162461bcd60e51b8152602060048201526024808201527f44617461546f6b656e54656d706c6174653a20496e76616c6964206361702076604482015263616c756560e01b60648201526084016109cb565b846000815181106133dc576133dc61448d565b6020026020010151600981905550876000815181106133fd576133fd61448d565b60200260200101516007908051906020019061341a929190613754565b508760018151811061342e5761342e61448d565b60200260200101516008908051906020019061344b929190613754565b50600b80546001600160a01b0319166001600160a01b03841617905585518690600290811061347c5761347c61448d565b6020908102919091010151601280546001600160a01b039283166001600160a01b0319909116179055600a80546001600160a81b03191691831691909117600160a01b17905586516134e69088906000906134d9576134d961448d565b6020026020010151613017565b60006001600160a01b0316876001815181106135045761350461448d565b60200260200101516001600160a01b0316146135ae5761353d876001815181106135305761353061448d565b6020026020010151612ff5565b866001815181106135505761355061448d565b60200260200101516001600160a01b0316336001600160a01b03167f4d7694d695c57cc54947177c8e8a0e61aae664e9223492a798c32fadfc6419cc42436040516135a5929190918252602082015260400190565b60405180910390a35b866002815181106135c1576135c161448d565b6020026020010151600d60006101000a8154816001600160a01b0302191690836001600160a01b03160217905550866003815181106136025761360261448d565b6020026020010151600e60006101000a8154816001600160a01b0302191690836001600160a01b03160217905550846001815181106136435761364361448d565b6020026020010151600f8190555060004690507f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f6007604051613686919061405b565b60408051918290038220828201825260018352603160f81b6020938401528151928301939093528101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc66060820152608081018290523060a082015260c00160408051808303601f1901815291905280516020909101206010555050600a54600160a01b900460ff16979650505050505050565b6000612d1282846142dc565b6000612d1282846142fe565b5080546000825590600052602060002090810190610a9791906137d8565b82805461376090614421565b90600052602060002090601f01602090048101928261378257600085556137c8565b82601f1061379b57805160ff19168380011785556137c8565b828001600101855582156137c8579182015b828111156137c85782518255916020019190600101906137ad565b506137d49291506137d8565b5090565b5b808211156137d457600081556001016137d9565b600067ffffffffffffffff831115613807576138076144a3565b61381a601f8401601f191660200161426f565b905082815283838301111561382e57600080fd5b828260208301376000602084830101529392505050565b60008083601f84011261385757600080fd5b50813567ffffffffffffffff81111561386f57600080fd5b6020830191508360208260051b850101111561388a57600080fd5b9250929050565b600082601f8301126138a257600080fd5b813560206138b76138b2836142a0565b61426f565b80838252828201915082860187848660051b89010111156138d757600080fd5b60005b858110156138f6578135845292840192908401906001016138da565b5090979650505050505050565b600060c0828403121561391557600080fd5b60405160c0810181811067ffffffffffffffff82111715613938576139386144a3565b6040529050808235613949816144b9565b808252506020830135602082015260408301356040820152606083013561396f816144b9565b60608201526080830135613982816144b9565b608082015260a092830135920191909152919050565b6000602082840312156139aa57600080fd5b8135612d12816144b9565b6000602082840312156139c757600080fd5b8151612d12816144b9565b600080604083850312156139e557600080fd5b82356139f0816144b9565b91506020830135613a00816144b9565b809150509250929050565b600080600060608486031215613a2057600080fd5b8335613a2b816144b9565b92506020840135613a3b816144b9565b929592945050506040919091013590565b6000806000806000806000806000806000806101808d8f031215613a6f57600080fd5b8c51613a7a816144b9565b60208e0151909c50613a8b816144b9565b60408e015160608f0151919c509a50613aa3816144b9565b8099505060808d0151975060a08d0151965060c08d0151613ac3816144ce565b8096505060e08d015194506101008d015193506101208d015192506101408d015191506101608d0151613af5816144ce565b809150509295989b509295989b509295989b565b600080600080600080600060e0888a031215613b2457600080fd5b8735613b2f816144b9565b96506020880135613b3f816144b9565b95506040880135945060608801359350608088013560ff81168114613b6357600080fd5b9699959850939692959460a0840135945060c09093013592915050565b600080600060608486031215613b9557600080fd5b8335613ba0816144b9565b925060208481013567ffffffffffffffff80821115613bbe57600080fd5b818701915087601f830112613bd257600080fd5b8135613be06138b2826142a0565b8082825285820191508585018b878560051b8801011115613c0057600080fd5b600095505b83861015613c2c578035613c18816144b9565b835260019590950194918601918601613c05565b50965050506040870135925080831115613c4557600080fd5b5050613c5386828701613891565b9150509250925092565b60008060408385031215613c7057600080fd5b8235613c7b816144b9565b946020939093013593505050565b60008060008060008060c08789031215613ca257600080fd5b8635613cad816144b9565b955060208701359450604087013593506060870135613ccb816144b9565b92506080870135613cdb816144b9565b8092505060a087013590509295509295509295565b60008060008060808587031215613d0657600080fd5b8435613d11816144b9565b935060208501359250604085013591506060850135613d2f816144ce565b939692955090935050565b60008060008060008060008060008060a08b8d031215613d5957600080fd5b8a3567ffffffffffffffff80821115613d7157600080fd5b613d7d8e838f01613845565b909c509a5060208d0135915080821115613d9657600080fd5b613da28e838f01613845565b909a50985060408d0135915080821115613dbb57600080fd5b613dc78e838f01613845565b909850965060608d0135915080821115613de057600080fd5b613dec8e838f01613845565b909650945060808d0135915080821115613e0557600080fd5b50613e128d828e01613845565b915080935050809150509295989b9194979a5092959850565b600060208284031215613e3d57600080fd5b8151612d12816144ce565b600060208284031215613e5a57600080fd5b5051919050565b60008060208385031215613e7457600080fd5b823567ffffffffffffffff80821115613e8c57600080fd5b818501915085601f830112613ea057600080fd5b813581811115613eaf57600080fd5b866020828501011115613ec157600080fd5b60209290920196919550909350505050565b60008060e08385031215613ee657600080fd5b613ef08484613903565b915060c0830135613a00816144b9565b600080828403610120811215613f1557600080fd5b613f1f8585613903565b9250606060bf1982011215613f3357600080fd5b506040516060810181811067ffffffffffffffff82111715613f5757613f576144a3565b60405260c0840135613f68816144b9565b815260e084013560208201526101009093013560408401525092909150565b600060808284031215613f9957600080fd5b6040516080810181811067ffffffffffffffff82111715613fbc57613fbc6144a3565b6040528251613fca816144ce565b81526020830151613fda816144ce565b60208201526040830151613fed816144ce565b60408201526060830151614000816144ce565b60608201529392505050565b60006020828403121561401e57600080fd5b5035919050565b6000806000806080858703121561403b57600080fd5b505082516020840151604085015160609095015191969095509092509050565b600080835481600182811c91508083168061407757607f831692505b602080841082141561409757634e487b7160e01b86526022600452602486fd5b8180156140ab57600181146140bc576140e9565b60ff198616895284890196506140e9565b60008a81526020902060005b868110156140e15781548b8201529085019083016140c8565b505084890196505b509498975050505050505050565b6001600160a01b039384168152919092166020820152604081019190915260600190565b6001600160a01b038481168252606060208084018290528551918401829052600092868201929091906080860190855b8181101561416957855185168352948301949183019160010161414b565b5050858103604087015286518082529082019350915080860160005b838110156141a157815185529382019390820190600101614185565b509298975050505050505050565b83815260406020820152816040820152818360608301376000818301606090810191909152601f909201601f1916010192915050565b600060208083528351808285015260005b81811015614212578581018301518582016040015282016141f6565b81811115614224576000604083870101525b50601f01601f1916929092016040019392505050565b6020808252818101527f455243323054656d706c6174653a204e4f54204445504c4f59455220524f4c45604082015260600190565b604051601f8201601f1916810167ffffffffffffffff81118282101715614298576142986144a3565b604052919050565b600067ffffffffffffffff8211156142ba576142ba6144a3565b5060051b60200190565b600082198211156142d7576142d7614477565b500190565b6000826142f957634e487b7160e01b600052601260045260246000fd5b500490565b60008282101561431057614310614477565b500390565b60006143236138b2846142a0565b808482526020808301925084368760051b8701111561434157600080fd5b60005b8781101561439557813567ffffffffffffffff81111561436357600080fd5b870136601f82011261437457600080fd5b6143823682358684016137ed565b8652509382019390820190600101614344565b50919695505050505050565b60006143af6138b2846142a0565b808482526020808301925084368760051b870111156143cd57600080fd5b60005b8781101561439557813567ffffffffffffffff8111156143ef57600080fd5b870136601f82011261440057600080fd5b61440e3682358684016137ed565b86525093820193908201906001016143d0565b600181811c9082168061443557607f821691505b6020821081141561445657634e487b7160e01b600052602260045260246000fd5b50919050565b600060001982141561447057614470614477565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b0381168114610a9757600080fd5b8015158114610a9757600080fdfea26469706673582212209f9de6ab354b17b3e749def83b0752ab14e24c17dc984ea442f7caaf4ff87ea964736f6c63430008070033", + "deployedBytecode": "0x6080604052600436106102675760003560e01c806379cc679011610143578063b2263a5d116100bb578063e487c2e811610077578063e487c2e8146107e4578063ec342ad0146107f9578063ef867ff414610815578063f887ea4014610835578063f94bb42114610855578063fda9dae71461087557005b8063b2263a5d14610721578063b3998be014610736578063c3d3cf4d14610756578063d505accf14610776578063dd62ed3e14610796578063e086e5ec146107dc57005b8063983b2d561161010a578063983b2d5614610648578063a457c2d714610668578063a9059cbb14610688578063aa271e1a146106a8578063aa492ef9146106e1578063ab62f0e11461070157005b806379cc6790146105b15780637ecebe00146105d157806382c03da5146105fe5780638b96412b1461061357806395d89b411461063357005b80633644e515116101e157806342966c681161019d57806342966c68146104f25780634f189cb21461051257806357a3a31b1461052757806357ad5ff6146105475780635d1ca6311461056757806370a082311461057b57005b80633644e5151461042c5780633830285014610442578063392e53cd146104625780633950935114610481578063397b3743146104a157806340c10f19146104d257005b806323b872dd1161023057806323b872dd1461036157806325b00243146103815780633092afd5146103a157806330adf81f146103c1578063313ce567146103f5578063355274ea1461041757005b80627ffb781461026957806301e88208146102a057806306fdde03146102f0578063095ea7b31461031257806318160ddd14610342575b005b34801561027557600080fd5b50600b546001600160a01b03165b6040516001600160a01b0390911681526020015b60405180910390f35b3480156102ac57600080fd5b506102d96102bb366004613998565b60056020526000908152604090205460ff8082169161010090041682565b604080519215158352901515602083015201610297565b3480156102fc57600080fd5b50610305610895565b60405161029791906141e5565b34801561031e57600080fd5b5061033261032d366004613c5d565b610927565b6040519015158152602001610297565b34801561034e57600080fd5b506002545b604051908152602001610297565b34801561036d57600080fd5b5061033261037c366004613a0b565b61093d565b34801561038d57600080fd5b5061026761039c366004613998565b6109ec565b3480156103ad57600080fd5b506102676103bc366004613998565b610a9a565b3480156103cd57600080fd5b506103537f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b34801561040157600080fd5b5060125b60405160ff9091168152602001610297565b34801561042357600080fd5b50600954610353565b34801561043857600080fd5b5061035360105481565b34801561044e57600080fd5b5061026761045d366004613ed3565b610b45565b34801561046e57600080fd5b50600a54600160a01b900460ff16610332565b34801561048d57600080fd5b5061033261049c366004613c5d565b610c4d565b3480156104ad57600080fd5b50600d54600e54600f54604051610297936001600160a01b03908116931691906140f7565b3480156104de57600080fd5b506102676104ed366004613c5d565b610c89565b3480156104fe57600080fd5b5061026761050d36600461400c565b610d5b565b34801561051e57600080fd5b50610267610d65565b34801561053357600080fd5b50610267610542366004613998565b610e5b565b34801561055357600080fd5b50610267610562366004613a0b565b610fb7565b34801561057357600080fd5b506002610405565b34801561058757600080fd5b50610353610596366004613998565b6001600160a01b031660009081526020819052604090205490565b3480156105bd57600080fd5b506102676105cc366004613c5d565b611059565b3480156105dd57600080fd5b506103536105ec366004613998565b60116020526000908152604090205481565b34801561060a57600080fd5b506102676110df565b34801561061f57600080fd5b5061035361062e366004613b80565b611139565b34801561063f57600080fd5b5061030561131d565b34801561065457600080fd5b50610267610663366004613998565b61132c565b34801561067457600080fd5b50610332610683366004613c5d565b6113d7565b34801561069457600080fd5b506103326106a3366004613c5d565b611470565b3480156106b457600080fd5b506103326106c3366004613998565b6001600160a01b031660009081526005602052604090205460ff1690565b3480156106ed57600080fd5b506102676106fc366004613998565b61147d565b34801561070d57600080fd5b5061026761071c366004613e61565b611528565b34801561072d57600080fd5b5061035361166d565b34801561074257600080fd5b50610332610751366004613d3a565b611683565b34801561076257600080fd5b50610267610771366004613f00565b6117bd565b34801561078257600080fd5b50610267610791366004613b09565b611c43565b3480156107a257600080fd5b506103536107b13660046139d2565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b610267611e55565b3480156107f057600080fd5b50610283611e95565b34801561080557600080fd5b50610353670de0b6b3a764000081565b34801561082157600080fd5b5061028361083036600461400c565b611f39565b34801561084157600080fd5b50601254610283906001600160a01b031681565b34801561086157600080fd5b50610267610870366004613cf0565b611f63565b34801561088157600080fd5b50610267610890366004613c89565b61209f565b6060600780546108a490614421565b80601f01602080910402602001604051908101604052809291908181526020018280546108d090614421565b801561091d5780601f106108f25761010080835404028352916020019161091d565b820191906000526020600020905b81548152906001019060200180831161090057829003601f168201915b5050505050905090565b60006109343384846120b5565b50600192915050565b600061094a8484846121d9565b6001600160a01b0384166000908152600160209081526040808320338452909152902054828110156109d45760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084015b60405180910390fd5b6109e185338584036120b5565b506001949350505050565b600b5460405163160a792560e01b81523360048201526001600160a01b039091169063160a792590602401608060405180830381600087803b158015610a3157600080fd5b505af1158015610a45573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a699190613f87565b602001511515600114610a8e5760405162461bcd60e51b81526004016109cb9061423a565b610a97816123a7565b50565b600b5460405163160a792560e01b81523360048201526001600160a01b039091169063160a792590602401608060405180830381600087803b158015610adf57600080fd5b505af1158015610af3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b179190613f87565b602001511515600114610b3c5760405162461bcd60e51b81526004016109cb9061423a565b610a9781612414565b6020820151604051631d746d8360e01b815230600482015260248101919091523360448201526001600160a01b03821690631d746d8390606401600060405180830381600087803b158015610b9957600080fd5b505af1158015610bad573d6000803e3d6000fd5b505050508160200151610bd5336001600160a01b031660009081526020819052604090205490565b1015610c235760405162461bcd60e51b815260206004820152601f60248201527f556e61626c6520746f206765742044542066726f6d2044697370656e7365720060448201526064016109cb565b610c49826000015183602001518460400151856060015186608001518760a00151612474565b5050565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091610934918590610c849086906142c4565b6120b5565b3360009081526005602052604090205460ff161515600114610ced5760405162461bcd60e51b815260206004820152601960248201527f455243323054656d706c6174653a204e4f54204d494e5445520000000000000060448201526064016109cb565b600954610d0382610cfd60025490565b90612d06565b1115610d515760405162461bcd60e51b815260206004820152601f60248201527f44617461546f6b656e54656d706c6174653a206361702065786365656465640060448201526064016109cb565b610c498282612d19565b610a973382612df8565b600b546040516331a9108f60e11b8152600160048201526001600160a01b0390911690636352211e9060240160206040518083038186803b158015610da957600080fd5b505afa158015610dbd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610de191906139b5565b6001600160a01b0316336001600160a01b031614610e415760405162461bcd60e51b815260206004820152601b60248201527f455243323054656d706c6174653a206e6f74204e46544f776e6572000000000060448201526064016109cb565b610e49612f46565b600c80546001600160a01b0319169055565b3360009081526005602052604090205460ff61010090910416151560011480610f065750600b5460405163160a792560e01b81523360048201526001600160a01b039091169063160a792590602401608060405180830381600087803b158015610ec457600080fd5b505af1158015610ed8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610efc9190613f87565b6020015115156001145b610f665760405162461bcd60e51b815260206004820152602b60248201527f455243323054656d706c6174653a204e4f54205041594d454e54204d414e414760448201526a22a91037b91027aba722a960a91b60648201526084016109cb565b610f6f81612ff5565b604080514281524360208201526001600160a01b0383169133917f4d7694d695c57cc54947177c8e8a0e61aae664e9223492a798c32fadfc6419cc910160405180910390a350565b600d546001600160a01b031633146110245760405162461bcd60e51b815260206004820152602a60248201527f455243323054656d706c6174653a206e6f74207075626c6973684d61726b65746044820152694665654164647265737360b01b60648201526084016109cb565b600d80546001600160a01b039485166001600160a01b031991821617909155600e805493909416921691909117909155600f55565b600061106583336107b1565b9050818110156110c35760405162461bcd60e51b8152602060048201526024808201527f45524332303a206275726e20616d6f756e74206578636565647320616c6c6f77604482015263616e636560e01b60648201526084016109cb565b6110d083338484036120b5565b6110da8383612df8565b505050565b600b546001600160a01b03163314610e415760405162461bcd60e51b815260206004820152601f60248201527f455243323054656d706c6174653a204e4f542037323120436f6e74726163740060448201526064016109cb565b600b5460405163160a792560e01b81523360048201526000916001600160a01b03169063160a792590602401608060405180830381600087803b15801561117f57600080fd5b505af1158015611193573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111b79190613f87565b6020015115156001146111dc5760405162461bcd60e51b81526004016109cb9061423a565b30836003815181106111f0576111f061448d565b6001600160a01b039283166020918202929092010152601254604051638244937560e01b81529116906382449375906112319087908790879060040161411b565b602060405180830381600087803b15801561124b57600080fd5b505af115801561125f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112839190613e48565b905060008260048151811061129a5761129a61448d565b602002602001015111156112b1576112b184613017565b7f195d202f33578769e120c3041341554af3193e67ee004175095bc9c06e6e616581846000815181106112e6576112e661448d565b602002602001015160405161130e9291909182526001600160a01b0316602082015260400190565b60405180910390a19392505050565b6060600880546108a490614421565b600b5460405163160a792560e01b81523360048201526001600160a01b039091169063160a792590602401608060405180830381600087803b15801561137157600080fd5b505af1158015611385573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113a99190613f87565b6020015115156001146113ce5760405162461bcd60e51b81526004016109cb9061423a565b610a9781613017565b3360009081526001602090815260408083206001600160a01b0386168452909152812054828110156114595760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016109cb565b61146633858584036120b5565b5060019392505050565b60006109343384846121d9565b600b5460405163160a792560e01b81523360048201526001600160a01b039091169063160a792590602401608060405180830381600087803b1580156114c257600080fd5b505af11580156114d6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114fa9190613f87565b60200151151560011461151f5760405162461bcd60e51b81526004016109cb9061423a565b610a9781613111565b600b5460405163160a792560e01b81523360048201526001600160a01b039091169063160a792590602401608060405180830381600087803b15801561156d57600080fd5b505af1158015611581573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115a59190613f87565b6020015115156001146115ca5760405162461bcd60e51b81526004016109cb9061423a565b6040516bffffffffffffffffffffffff193060601b16602082015260009060340160408051601f19818403018152908290528051602090910120600b546301caf8fd60e31b83529092506001600160a01b031690630e57c7e890611636908490879087906004016141af565b600060405180830381600087803b15801561165057600080fd5b505af1158015611664573d6000803e3d6000fd5b50505050505050565b6116806064670de0b6b3a76400006142dc565b81565b600a54600090600160a01b900460ff16156116fa5760405162461bcd60e51b815260206004820152603160248201527f455243323054656d706c6174653a20746f6b656e20696e7374616e636520616c6044820152701c9958591e481a5b9a5d1a585b1a5e9959607a1b60648201526084016109cb565b6117ae6117078b8d6143a1565b8a8a8080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020808e0282810182019093528d82529093508d92508c91829185019084908082843760009201919091525050604080516020808d0282810182019093528c82529093508c92508b9182918501908490808284376000920191909152506117a992508991508a9050614315565b61321f565b9b9a5050505050505050505050565b80516020820151604051634c87087d60e01b815260009283926001600160a01b0390911691634c87087d916117f89160040190815260200190565b6101806040518083038186803b15801561181157600080fd5b505afa158015611825573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118499190613a4c565b5050505050505050935050925050306001600160a01b0316826001600160a01b0316146118c85760405162461bcd60e51b815260206004820152602760248201527f5468697320466978656452617465206973206e6f742070726f766964696e67206044820152661d1a1a5cc8111560ca1b60648201526084016109cb565b82516020808501519086015160405163c99733a760e01b81526000936001600160a01b03169263c99733a79261190992600401918252602082015260400190565b60806040518083038186803b15801561192157600080fd5b505afa158015611935573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119599190614025565b505050905083604001518111156119c25760405162461bcd60e51b815260206004820152602760248201527f46697865645261746545786368616e67653a20546f6f206d616e79206261736560448201526620746f6b656e7360c81b60648201526084016109cb565b6040516323b872dd60e01b81526001600160a01b038316906323b872dd906119f2903390309086906004016140f7565b602060405180830381600087803b158015611a0c57600080fd5b505af1158015611a20573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a449190613e2b565b611a9b5760405162461bcd60e51b815260206004820152602260248201527f4661696c656420746f207472616e736665722062617365546f6b656e416d6f756044820152611b9d60f21b60648201526084016109cb565b835160405163095ea7b360e01b81526001600160a01b039182166004820152602481018390529083169063095ea7b390604401602060405180830381600087803b158015611ae857600080fd5b505af1158015611afc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b209190613e2b565b5083516020808601519087015160405163412dae6b60e11b815260048101929092526024820152604481018390526001600160a01b039091169063825b5cd690606401600060405180830381600087803b158015611b7d57600080fd5b505af1158015611b91573d6000803e3d6000fd5b505050508460200151611bb9306001600160a01b031660009081526020819052604090205490565b1015611c075760405162461bcd60e51b815260206004820152601f60248201527f556e61626c6520746f206275792044542066726f6d204669786564526174650060448201526064016109cb565b611c16303387602001516121d9565b611c3c856000015186602001518760400151886060015189608001518a60a00151612474565b5050505050565b42841015611c865760405162461bcd60e51b815260206004820152601060248201526f115490cc8c11150e881156141254915160821b60448201526064016109cb565b6010546001600160a01b038816600090815260116020526040812080549192917f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9918b918b918b919087611cd98361445c565b909155506040805160208101969096526001600160a01b0394851690860152929091166060840152608083015260a082015260c0810187905260e00160405160208183030381529060405280519060200120604051602001611d5292919061190160f01b81526002810192909252602282015260420190565b60408051601f198184030181528282528051602091820120600080855291840180845281905260ff88169284019290925260608301869052608083018590529092509060019060a0016020604051602081039080840390855afa158015611dbd573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811615801590611df35750886001600160a01b0316816001600160a01b0316145b611e3f5760405162461bcd60e51b815260206004820152601a60248201527f455243323044543a20494e56414c49445f5349474e415455524500000000000060448201526064016109cb565b611e4a8989896120b5565b505050505050505050565b611e5d611e95565b6001600160a01b03166108fc479081150290604051600060405180830381858888f19350505050158015610a97573d6000803e3d6000fd5b600c546000906001600160a01b0316611f2957600b546040516331a9108f60e11b8152600160048201526001600160a01b0390911690636352211e9060240160206040518083038186803b158015611eec57600080fd5b505afa158015611f00573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f2491906139b5565b905090565b50600c546001600160a01b031690565b60068181548110611f4957600080fd5b6000918252602090912001546001600160a01b0316905081565b600b5460405163160a792560e01b81523360048201526001600160a01b039091169063160a792590602401608060405180830381600087803b158015611fa857600080fd5b505af1158015611fbc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fe09190613f87565b6020015115156001146120055760405162461bcd60e51b81526004016109cb9061423a565b601254604051636b14d00560e11b81526001600160a01b0386811660048301523060248301819052604483018790526064830186905233608484015260a48301529091169063d629a00a9060c401600060405180830381600087803b15801561206d57600080fd5b505af1158015612081573d6000803e3d6000fd5b50505050801515600114156120995761209984613017565b50505050565b6120ad868686868686612474565b505050505050565b6001600160a01b0383166121175760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016109cb565b6001600160a01b0382166121785760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016109cb565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b03831661223d5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016109cb565b6001600160a01b03821661229f5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016109cb565b6001600160a01b038316600090815260208190526040902054818110156123175760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016109cb565b6001600160a01b0380851660009081526020819052604080822085850390559185168152908120805484929061234e9084906142c4565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161239a91815260200190565b60405180910390a3612099565b6001600160a01b03811660008181526005602052604090819020805461ff00191681559051909133917faee911eec8b2df8f3ae0464841541b1e5f339519bd5cf51889fe8b07fecff658906124089042904390918252602082015260400190565b60405180910390a35050565b6001600160a01b03811660008181526005602052604090819020805460ff191681559051909133917fefa2735987005aaa89c050c0ff8cc9ae7d9079d19382081c429130f98c52d480906124089042904390918252602082015260400190565b3360009081526020819052604081205481908711156124e35760405162461bcd60e51b815260206004820152602560248201527f4e6f7420656e6f756768204461746120546f6b656e7320746f2073746172742060448201526427b93232b960d91b60648201526084016109cb565b6000600f541180156124ff5750600e546001600160a01b031615155b80156125155750600d546001600160a01b031615155b1561271757600e54600f546040516323b872dd60e01b81526001600160a01b03909216916323b872dd9161254f91339130916004016140f7565b602060405180830381600087803b15801561256957600080fd5b505af115801561257d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125a19190613e2b565b6125f95760405162461bcd60e51b815260206004820152602360248201527f4661696c656420746f207472616e73666572207075626c6973684d61726b657460448201526246656560e81b60648201526084016109cb565b600f5461260790606461371e565b600e54600d54600f549293506001600160a01b039182169263a9059cbb9290911690612633908561372a565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401602060405180830381600087803b15801561267957600080fd5b505af115801561268d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126b19190613e2b565b6127175760405162461bcd60e51b815260206004820152603160248201527f4661696c656420746f207472616e736665722066656520746f207075626c6973604482015270684d61726b65744665654164647265737360781b60648201526084016109cb565b60008311801561272f57506001600160a01b03841615155b801561274357506001600160a01b03851615155b1561291b576040516323b872dd60e01b81526001600160a01b038516906323b872dd90612778903390309088906004016140f7565b602060405180830381600087803b15801561279257600080fd5b505af11580156127a6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127ca9190613e2b565b6128165760405162461bcd60e51b815260206004820152601d60248201527f4661696c656420746f207472616e7366657220636f6e73756d6546656500000060448201526064016109cb565b61282183606461371e565b91506001600160a01b03841663a9059cbb8661283d868661372a565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401602060405180830381600087803b15801561288357600080fd5b505af1158015612897573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128bb9190613e2b565b61291b5760405162461bcd60e51b815260206004820152602b60248201527f4661696c656420746f207472616e736665722066656520746f20636f6e73756d60448201526a654665654164647265737360a81b60648201526084016109cb565b60008111801561292b5750600082115b80156129445750600e546001600160a01b038581169116145b15612a4457600a546001600160a01b038086169163a9059cbb91166129698486612d06565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401602060405180830381600087803b1580156129af57600080fd5b505af11580156129c3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129e79190613e2b565b612a3f5760405162461bcd60e51b815260206004820152602360248201527f4661696c656420746f207472616e7366657220626f7468206665657320746f2060448201526227a82360e91b60648201526084016109cb565b612c43565b600081118015612a5e5750600e546001600160a01b031615155b15612b4657600e54600a5460405163a9059cbb60e01b81526001600160a01b0391821660048201526024810184905291169063a9059cbb90604401602060405180830381600087803b158015612ab357600080fd5b505af1158015612ac7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612aeb9190613e2b565b612b465760405162461bcd60e51b815260206004820152602660248201527f4661696c656420746f207472616e73666572207075626c6973682066656573206044820152653a379027a82360d11b60648201526084016109cb565b600082118015612b5e57506001600160a01b03841615155b15612c4357600a5460405163a9059cbb60e01b81526001600160a01b039182166004820152602481018490529085169063a9059cbb90604401602060405180830381600087803b158015612bb157600080fd5b505af1158015612bc5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612be99190613e2b565b612c435760405162461bcd60e51b815260206004820152602560248201527f4661696c656420746f207472616e7366657220636f6e73756d65206665652074604482015264379027a82360d91b60648201526084016109cb565b612c4c87610d5b565b600d5460408051338152602081018a90529081018890524260608201524360808201526001600160a01b0387811692811691908b16907fb07adb6a34680ecbbc7935971c45a07b9baf67ce5dc57332d51e3a5745c9e9639060a00160405180910390a4836001600160a01b0316856001600160a01b03167fcc9877307cd6845dfd092292e4719f293ac5d1039527d98ca0ae9fd76791236b85604051612cf491815260200190565b60405180910390a35050505050505050565b6000612d1282846142c4565b9392505050565b6001600160a01b038216612d6f5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016109cb565b8060026000828254612d8191906142c4565b90915550506001600160a01b03821660009081526020819052604081208054839290612dae9084906142c4565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6001600160a01b038216612e585760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b60648201526084016109cb565b6001600160a01b03821660009081526020819052604090205481811015612ecc5760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b60648201526084016109cb565b6001600160a01b0383166000908152602081905260408120838303905560028054849290612efb9084906142fe565b90915550506040518281526000906001600160a01b038516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3505050565b60005b600654811015612fac5760006005600060068481548110612f6c57612f6c61448d565b60009182526020808320909101546001600160a01b031683528201929092526040019020805461ffff191690555080612fa48161445c565b915050612f49565b50612fb960066000613736565b6040805142815243602082015233917f712bc71db81927a76b8bf1ea346247bb0ad58f18e4e5c1bd4aa0ec6573e02a2b910160405180910390a2565b600c80546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0381166000908152600560205260409020805460ff16156130815760405162461bcd60e51b815260206004820152601d60248201527f4552433230526f6c65733a2020414c52454144592041204d494e54455200000060448201526064016109cb565b8054600160ff19909116811782556006805491820181556000527ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f0180546001600160a01b0319166001600160a01b038416908117909155604080514281524360208201523392917f4f7e100eb1ee13e903798bd0d6aa854152e07eb05544f392b9409c12935c80959101612408565b6001600160a01b03811660009081526005602052604090208054610100900460ff161561318b5760405162461bcd60e51b815260206004820152602260248201527f4552433230526f6c65733a2020414c5245414459204120464545204d414e414760448201526122a960f11b60648201526084016109cb565b805461ff001916610100178155600680546001810182556000919091527ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f0180546001600160a01b0384166001600160a01b03199091168117909155604080514281524360208201523392917fb17da2e9910b4ba5754e8872385ba315a238bafb5ae221fc85093c33432c40a79101612408565b600080846000815181106132355761323561448d565b602002602001015190506000856001815181106132545761325461448d565b6020026020010151905060006001600160a01b0316826001600160a01b031614156132d65760405162461bcd60e51b815260206004820152602c60248201527f455243323054656d706c6174653a20496e76616c6964206d696e7465722c202060448201526b7a65726f206164647265737360a01b60648201526084016109cb565b6001600160a01b0381166133525760405162461bcd60e51b815260206004820152603c60248201527f455243323054656d706c6174653a20496e76616c696420636f6d6d756e69747960448201527f2066656520636f6c6c6563746f722c207a65726f20616464726573730000000060648201526084016109cb565b846000815181106133655761336561448d565b6020026020010151600014156133c95760405162461bcd60e51b8152602060048201526024808201527f44617461546f6b656e54656d706c6174653a20496e76616c6964206361702076604482015263616c756560e01b60648201526084016109cb565b846000815181106133dc576133dc61448d565b6020026020010151600981905550876000815181106133fd576133fd61448d565b60200260200101516007908051906020019061341a929190613754565b508760018151811061342e5761342e61448d565b60200260200101516008908051906020019061344b929190613754565b50600b80546001600160a01b0319166001600160a01b03841617905585518690600290811061347c5761347c61448d565b6020908102919091010151601280546001600160a01b039283166001600160a01b0319909116179055600a80546001600160a81b03191691831691909117600160a01b17905586516134e69088906000906134d9576134d961448d565b6020026020010151613017565b60006001600160a01b0316876001815181106135045761350461448d565b60200260200101516001600160a01b0316146135ae5761353d876001815181106135305761353061448d565b6020026020010151612ff5565b866001815181106135505761355061448d565b60200260200101516001600160a01b0316336001600160a01b03167f4d7694d695c57cc54947177c8e8a0e61aae664e9223492a798c32fadfc6419cc42436040516135a5929190918252602082015260400190565b60405180910390a35b866002815181106135c1576135c161448d565b6020026020010151600d60006101000a8154816001600160a01b0302191690836001600160a01b03160217905550866003815181106136025761360261448d565b6020026020010151600e60006101000a8154816001600160a01b0302191690836001600160a01b03160217905550846001815181106136435761364361448d565b6020026020010151600f8190555060004690507f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f6007604051613686919061405b565b60408051918290038220828201825260018352603160f81b6020938401528151928301939093528101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc66060820152608081018290523060a082015260c00160408051808303601f1901815291905280516020909101206010555050600a54600160a01b900460ff16979650505050505050565b6000612d1282846142dc565b6000612d1282846142fe565b5080546000825590600052602060002090810190610a9791906137d8565b82805461376090614421565b90600052602060002090601f01602090048101928261378257600085556137c8565b82601f1061379b57805160ff19168380011785556137c8565b828001600101855582156137c8579182015b828111156137c85782518255916020019190600101906137ad565b506137d49291506137d8565b5090565b5b808211156137d457600081556001016137d9565b600067ffffffffffffffff831115613807576138076144a3565b61381a601f8401601f191660200161426f565b905082815283838301111561382e57600080fd5b828260208301376000602084830101529392505050565b60008083601f84011261385757600080fd5b50813567ffffffffffffffff81111561386f57600080fd5b6020830191508360208260051b850101111561388a57600080fd5b9250929050565b600082601f8301126138a257600080fd5b813560206138b76138b2836142a0565b61426f565b80838252828201915082860187848660051b89010111156138d757600080fd5b60005b858110156138f6578135845292840192908401906001016138da565b5090979650505050505050565b600060c0828403121561391557600080fd5b60405160c0810181811067ffffffffffffffff82111715613938576139386144a3565b6040529050808235613949816144b9565b808252506020830135602082015260408301356040820152606083013561396f816144b9565b60608201526080830135613982816144b9565b608082015260a092830135920191909152919050565b6000602082840312156139aa57600080fd5b8135612d12816144b9565b6000602082840312156139c757600080fd5b8151612d12816144b9565b600080604083850312156139e557600080fd5b82356139f0816144b9565b91506020830135613a00816144b9565b809150509250929050565b600080600060608486031215613a2057600080fd5b8335613a2b816144b9565b92506020840135613a3b816144b9565b929592945050506040919091013590565b6000806000806000806000806000806000806101808d8f031215613a6f57600080fd5b8c51613a7a816144b9565b60208e0151909c50613a8b816144b9565b60408e015160608f0151919c509a50613aa3816144b9565b8099505060808d0151975060a08d0151965060c08d0151613ac3816144ce565b8096505060e08d015194506101008d015193506101208d015192506101408d015191506101608d0151613af5816144ce565b809150509295989b509295989b509295989b565b600080600080600080600060e0888a031215613b2457600080fd5b8735613b2f816144b9565b96506020880135613b3f816144b9565b95506040880135945060608801359350608088013560ff81168114613b6357600080fd5b9699959850939692959460a0840135945060c09093013592915050565b600080600060608486031215613b9557600080fd5b8335613ba0816144b9565b925060208481013567ffffffffffffffff80821115613bbe57600080fd5b818701915087601f830112613bd257600080fd5b8135613be06138b2826142a0565b8082825285820191508585018b878560051b8801011115613c0057600080fd5b600095505b83861015613c2c578035613c18816144b9565b835260019590950194918601918601613c05565b50965050506040870135925080831115613c4557600080fd5b5050613c5386828701613891565b9150509250925092565b60008060408385031215613c7057600080fd5b8235613c7b816144b9565b946020939093013593505050565b60008060008060008060c08789031215613ca257600080fd5b8635613cad816144b9565b955060208701359450604087013593506060870135613ccb816144b9565b92506080870135613cdb816144b9565b8092505060a087013590509295509295509295565b60008060008060808587031215613d0657600080fd5b8435613d11816144b9565b935060208501359250604085013591506060850135613d2f816144ce565b939692955090935050565b60008060008060008060008060008060a08b8d031215613d5957600080fd5b8a3567ffffffffffffffff80821115613d7157600080fd5b613d7d8e838f01613845565b909c509a5060208d0135915080821115613d9657600080fd5b613da28e838f01613845565b909a50985060408d0135915080821115613dbb57600080fd5b613dc78e838f01613845565b909850965060608d0135915080821115613de057600080fd5b613dec8e838f01613845565b909650945060808d0135915080821115613e0557600080fd5b50613e128d828e01613845565b915080935050809150509295989b9194979a5092959850565b600060208284031215613e3d57600080fd5b8151612d12816144ce565b600060208284031215613e5a57600080fd5b5051919050565b60008060208385031215613e7457600080fd5b823567ffffffffffffffff80821115613e8c57600080fd5b818501915085601f830112613ea057600080fd5b813581811115613eaf57600080fd5b866020828501011115613ec157600080fd5b60209290920196919550909350505050565b60008060e08385031215613ee657600080fd5b613ef08484613903565b915060c0830135613a00816144b9565b600080828403610120811215613f1557600080fd5b613f1f8585613903565b9250606060bf1982011215613f3357600080fd5b506040516060810181811067ffffffffffffffff82111715613f5757613f576144a3565b60405260c0840135613f68816144b9565b815260e084013560208201526101009093013560408401525092909150565b600060808284031215613f9957600080fd5b6040516080810181811067ffffffffffffffff82111715613fbc57613fbc6144a3565b6040528251613fca816144ce565b81526020830151613fda816144ce565b60208201526040830151613fed816144ce565b60408201526060830151614000816144ce565b60608201529392505050565b60006020828403121561401e57600080fd5b5035919050565b6000806000806080858703121561403b57600080fd5b505082516020840151604085015160609095015191969095509092509050565b600080835481600182811c91508083168061407757607f831692505b602080841082141561409757634e487b7160e01b86526022600452602486fd5b8180156140ab57600181146140bc576140e9565b60ff198616895284890196506140e9565b60008a81526020902060005b868110156140e15781548b8201529085019083016140c8565b505084890196505b509498975050505050505050565b6001600160a01b039384168152919092166020820152604081019190915260600190565b6001600160a01b038481168252606060208084018290528551918401829052600092868201929091906080860190855b8181101561416957855185168352948301949183019160010161414b565b5050858103604087015286518082529082019350915080860160005b838110156141a157815185529382019390820190600101614185565b509298975050505050505050565b83815260406020820152816040820152818360608301376000818301606090810191909152601f909201601f1916010192915050565b600060208083528351808285015260005b81811015614212578581018301518582016040015282016141f6565b81811115614224576000604083870101525b50601f01601f1916929092016040019392505050565b6020808252818101527f455243323054656d706c6174653a204e4f54204445504c4f59455220524f4c45604082015260600190565b604051601f8201601f1916810167ffffffffffffffff81118282101715614298576142986144a3565b604052919050565b600067ffffffffffffffff8211156142ba576142ba6144a3565b5060051b60200190565b600082198211156142d7576142d7614477565b500190565b6000826142f957634e487b7160e01b600052601260045260246000fd5b500490565b60008282101561431057614310614477565b500390565b60006143236138b2846142a0565b808482526020808301925084368760051b8701111561434157600080fd5b60005b8781101561439557813567ffffffffffffffff81111561436357600080fd5b870136601f82011261437457600080fd5b6143823682358684016137ed565b8652509382019390820190600101614344565b50919695505050505050565b60006143af6138b2846142a0565b808482526020808301925084368760051b870111156143cd57600080fd5b60005b8781101561439557813567ffffffffffffffff8111156143ef57600080fd5b870136601f82011261440057600080fd5b61440e3682358684016137ed565b86525093820193908201906001016143d0565b600181811c9082168061443557607f821691505b6020821081141561445657634e487b7160e01b600052602260045260246000fd5b50919050565b600060001982141561447057614470614477565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b0381168114610a9757600080fd5b8015158114610a9757600080fdfea26469706673582212209f9de6ab354b17b3e749def83b0752ab14e24c17dc984ea442f7caaf4ff87ea964736f6c63430008070033", + "linkReferences": {}, + "deployedLinkReferences": {} + } \ No newline at end of file diff --git a/subgraph.yaml b/subgraph.yaml index fe3b1d1..0225876 100644 --- a/subgraph.yaml +++ b/subgraph.yaml @@ -104,6 +104,8 @@ templates: abis: - name: ERC20Template file: ./abis/ERC20Template.json + - name: ERC20TemplateEnterprise + file: ./abis/ERC20TemplateEnterprise.json - name: ERC20 file: ./abis/ERC20.json - name: ERC20Roles @@ -111,18 +113,8 @@ templates: eventHandlers: - event: OrderStarted(indexed address,address,uint256,uint256,uint256,indexed address,indexed address,uint256) handler: handleOrderStarted - - event: MinterApproved(address,address) - handler: handleMinterApproved - - event: AddedMinter(indexed address,indexed address,uint256,uint256) - handler: handleAddMinter - - event: RemovedMinter(indexed address,indexed address,uint256,uint256) - handler: handleRemoveMinter - - event: AddedFeeManager(indexed address,indexed address,uint256,uint256) - handler: handlerAddFeeManager - - event: RemovedFeeManager(indexed address,indexed address,uint256,uint256) - handler: handlerRemoveFeeManager - - event: CleanedPermissions(indexed address,uint256,uint256) - handler: handleCleanPermissions + - event: NewPaymentCollector(indexed address,indexed address,uint256,uint256) + handler: handlerNewPaymentCollector - kind: ethereum/contract name: BFactory network: barge @@ -158,6 +150,8 @@ templates: file: ./abis/BPool.json - name: BToken file: ./abis/BToken.json + - name: BMath + file: ./abis/BMath.json eventHandlers: - event: LOG_SWAP(indexed address,indexed address,indexed address,uint256,uint256,uint256) handler: handleSwap @@ -171,6 +165,8 @@ templates: handler: handleBpt - event: Transfer(indexed address,indexed address,uint256) handler: handlerBptTransfer + - event: SWAP_FEES(uint,uint,uint,address) + handler: handlerSwapFees features: - nonFatalErrors