Loading
[ { "inputs": [ { "internalType": "address[]", "name": "allowlistFrom", "type": "address[]" }, { "internalType": "address[]", "name": "allowlistTo", "type": "address[]" }, { "internalType": "uint256", "name": "unlockTimestamp", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "constructor" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "spender", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "Approval", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "contractAddress", "type": "address" }, { "indexed": true, "internalType": "address", "name": "ethDestinationAddress", "type": "address" }, { "indexed": true, "internalType": "address", "name": "primeDestinationAddress", "type": "address" } ], "name": "EchelonGatewayRegistered", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "indexed": true, "internalType": "bytes32", "name": "previousAdminRole", "type": "bytes32" }, { "indexed": true, "internalType": "bytes32", "name": "newAdminRole", "type": "bytes32" } ], "name": "RoleAdminChanged", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "indexed": true, "internalType": "address", "name": "account", "type": "address" }, { "indexed": true, "internalType": "address", "name": "sender", "type": "address" } ], "name": "RoleGranted", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "indexed": true, "internalType": "address", "name": "account", "type": "address" }, { "indexed": true, "internalType": "address", "name": "sender", "type": "address" } ], "name": "RoleRevoked", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, { "indexed": true, "internalType": "address", "name": "to", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "Transfer", "type": "event" }, { "inputs": [], "name": "DEFAULT_ADMIN_ROLE", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "INVOKE_ECHELON_CONFIGURATION_ROLE", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "NAME", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "SUPPLY", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "SYMBOL", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "UNLOCK_ROLE", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "_unlockTimestamp", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_contractAddress", "type": "address" }, { "internalType": "address", "name": "_ethDestinationAddress", "type": "address" }, { "internalType": "address", "name": "_primeDestinationAddress", "type": "address" } ], "name": "addEchelonHandlerContract", "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": "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": "decimals", "outputs": [ { "internalType": "uint8", "name": "", "type": "uint8" } ], "stateMutability": "view", "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": "address", "name": "", "type": "address" } ], "name": "echelonGateways", "outputs": [ { "internalType": "address", "name": "ethDestinationAddress", "type": "address" }, { "internalType": "address", "name": "primeDestinationAddress", "type": "address" }, { "internalType": "contract InvokeEchelonHandler", "name": "invokeEchelonHandler", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "executeUnlock", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" } ], "name": "getRoleAdmin", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "internalType": "address", "name": "account", "type": "address" } ], "name": "grantRole", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "internalType": "address", "name": "account", "type": "address" } ], "name": "hasRole", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "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": "address", "name": "_handlerAddress", "type": "address" }, { "internalType": "uint256", "name": "_id", "type": "uint256" }, { "internalType": "uint256", "name": "_primeValue", "type": "uint256" }, { "internalType": "bytes", "name": "_data", "type": "bytes" } ], "name": "invokeEchelon", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "isAllowlistFrom", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "isAllowlistTo", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" }, { "internalType": "address", "name": "", "type": "address" } ], "name": "renounceRole", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "internalType": "address", "name": "account", "type": "address" } ], "name": "revokeRole", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes4", "name": "interfaceId", "type": "bytes4" } ], "name": "supportsInterface", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "symbol", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address[]", "name": "_allowlistAddresses", "type": "address[]" }, { "internalType": "bool", "name": "_toggle", "type": "bool" } ], "name": "toggleAllowlistFrom", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address[]", "name": "_allowlistAddresses", "type": "address[]" }, { "internalType": "bool", "name": "_toggle", "type": "bool" } ], "name": "toggleAllowlistTo", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "totalSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "transfer", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "transferFrom", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "unlocked", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" } ]
6080604052600a805460ff191690553480156200001b57600080fd5b50604051620024df380380620024df8339810160408190526200003e91620005bc565b604051806040016040528060058152602001645072696d6560d81b815250604051806040016040528060058152602001645052494d4560d81b8152506a5be8b16716c5a35ccd80003383838160039080519060200190620000a192919062000446565b508051620000b790600490602084019062000446565b505050620000cc8183620001e160201b60201c565b5050600160065550620000e39050600033620002d9565b600b81905560005b83518161ffff1610156200015f57600160086000868461ffff1681518110620001185762000118620006c2565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff191691151591909117905580620001568162000687565b915050620000eb565b5060005b82518161ffff161015620001d757600160096000858461ffff1681518110620001905762000190620006c2565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff191691151591909117905580620001ce8162000687565b91505062000163565b50505050620006ee565b6001600160a01b0382166200023d5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064015b60405180910390fd5b6200024b60008383620002e5565b80600260008282546200025f91906200062f565b90915550506001600160a01b038216600090815260208190526040812080548392906200028e9084906200062f565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35b5050565b620002d58282620003a2565b600a5460ff16806200033257506001600160a01b03831660009081526008602052604090205460ff16806200033257506001600160a01b03821660009081526009602052604090205460ff165b806200034557506001600160a01b038316155b6200039d5760405162461bcd60e51b815260206004820152602160248201527f5472616e7366657273206e6f742063757272656e746c7920737570706f7274656044820152601960fa1b606482015260840162000234565b505050565b60008281526005602090815260408083206001600160a01b038516845290915290205460ff16620002d55760008281526005602090815260408083206001600160a01b03851684529091529020805460ff19166001179055620004023390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b82805462000454906200064a565b90600052602060002090601f016020900481019282620004785760008555620004c3565b82601f106200049357805160ff1916838001178555620004c3565b82800160010185558215620004c3579182015b82811115620004c3578251825591602001919060010190620004a6565b50620004d1929150620004d5565b5090565b5b80821115620004d15760008155600101620004d6565b80516001600160a01b03811681146200050457600080fd5b919050565b600082601f8301126200051b57600080fd5b815160206001600160401b03808311156200053a576200053a620006d8565b8260051b604051601f19603f83011681018181108482111715620005625762000562620006d8565b604052848152838101925086840182880185018910156200058257600080fd5b600092505b85831015620005b0576200059b81620004ec565b84529284019260019290920191840162000587565b50979650505050505050565b600080600060608486031215620005d257600080fd5b83516001600160401b0380821115620005ea57600080fd5b620005f88783880162000509565b945060208601519150808211156200060f57600080fd5b506200061e8682870162000509565b925050604084015190509250925092565b60008219821115620006455762000645620006ac565b500190565b600181811c908216806200065f57607f821691505b602082108114156200068157634e487b7160e01b600052602260045260246000fd5b50919050565b600061ffff80831681811415620006a257620006a2620006ac565b6001019392505050565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b611de180620006fe6000396000f3fe6080604052600436106102045760003560e01c80637bb1748011610118578063aba5379c116100a0578063d547741f1161006f578063d547741f14610635578063dd62ed3e14610655578063ece881ad14610675578063f104489f146106a9578063f76f8d78146106bc57600080fd5b8063aba5379c1461052b578063b4b7e703146105c6578063b9c78516146105f6578063c50497ae1461061657600080fd5b8063a217fddf116100e7578063a217fddf1461052b578063a3f4df7e14610540578063a433313b14610571578063a457c2d714610586578063a9059cbb146105a657600080fd5b80637bb174801461046d57806391d1485414610483578063955049cd146104a357806395d89b411461051657600080fd5b806335c5ed4b1161019b57806342966c681161016a57806342966c68146103bd5780636a5e2650146103dd57806370a08231146103f75780637212e1b11461042d57806379cc67901461044d57600080fd5b806335c5ed4b1461032d57806336568abe1461034d578063395093511461036d57806340d47bb51461038d57600080fd5b806323b872dd116101d757806323b872dd1461029f578063248a9ca3146102bf5780632f2ff15d146102ef578063313ce5671461031157600080fd5b806301ffc9a71461020957806306fdde031461023e578063095ea7b31461026057806318160ddd14610280575b600080fd5b34801561021557600080fd5b50610229610224366004611b21565b6106ed565b60405190151581526020015b60405180910390f35b34801561024a57600080fd5b50610253610724565b6040516102359190611c3e565b34801561026c57600080fd5b5061022961027b36600461193c565b6107b6565b34801561028c57600080fd5b506002545b604051908152602001610235565b3480156102ab57600080fd5b506102296102ba366004611900565b6107ce565b3480156102cb57600080fd5b506102916102da366004611ae5565b60009081526005602052604090206001015490565b3480156102fb57600080fd5b5061030f61030a366004611afe565b6107f2565b005b34801561031d57600080fd5b5060405160128152602001610235565b34801561033957600080fd5b5061030f6103483660046118bd565b61081c565b34801561035957600080fd5b5061030f610368366004611afe565b6109b7565b34801561037957600080fd5b5061022961038836600461193c565b6109f6565b34801561039957600080fd5b506102296103a836600461186f565b60086020526000908152604090205460ff1681565b3480156103c957600080fd5b5061030f6103d8366004611ae5565b610a18565b3480156103e957600080fd5b50600a546102299060ff1681565b34801561040357600080fd5b5061029161041236600461186f565b6001600160a01b031660009081526020819052604090205490565b34801561043957600080fd5b5061030f610448366004611a1f565b610a25565b34801561045957600080fd5b5061030f61046836600461193c565b610a9d565b34801561047957600080fd5b50610291600b5481565b34801561048f57600080fd5b5061022961049e366004611afe565b610ab6565b3480156104af57600080fd5b506104ec6104be36600461186f565b6007602052600090815260409020805460018201546002909201546001600160a01b03918216928216911683565b604080516001600160a01b0394851681529284166020840152921691810191909152606001610235565b34801561052257600080fd5b50610253610ae1565b34801561053757600080fd5b50610291600081565b34801561054c57600080fd5b50610253604051806040016040528060058152602001645072696d6560d81b81525081565b34801561057d57600080fd5b5061030f610af0565b34801561059257600080fd5b506102296105a136600461193c565b610b7b565b3480156105b257600080fd5b506102296105c136600461193c565b610bf6565b3480156105d257600080fd5b506102296105e136600461186f565b60096020526000908152604090205460ff1681565b34801561060257600080fd5b5061030f610611366004611a1f565b610c04565b34801561062257600080fd5b506102916a5be8b16716c5a35ccd800081565b34801561064157600080fd5b5061030f610650366004611afe565b610c76565b34801561066157600080fd5b5061029161067036600461188a565b610cf4565b34801561068157600080fd5b506102917fcbbe7dfe7bfb9f48c266587cde1d740252fcb25946b3c7c54b79962b0581377d81565b61030f6106b7366004611966565b610d1f565b3480156106c857600080fd5b50610253604051806040016040528060058152602001645052494d4560d81b81525081565b60006001600160e01b03198216637965db0b60e01b148061071e57506301ffc9a760e01b6001600160e01b03198316145b92915050565b60606003805461073390611d13565b80601f016020809104026020016040519081016040528092919081815260200182805461075f90611d13565b80156107ac5780601f10610781576101008083540402835291602001916107ac565b820191906000526020600020905b81548152906001019060200180831161078f57829003601f168201915b5050505050905090565b6000336107c4818585610fc7565b5060019392505050565b6000336107dc8582856110eb565b6107e785858561115f565b506001949350505050565b60008281526005602052604090206001015461080d81611338565b6108178383611342565b505050565b600061082781611338565b6001600160a01b0383161580159061084757506001600160a01b03821615155b6108a45760405162461bcd60e51b815260206004820152602360248201527f44657374696e6174696f6e206164647265737365732063616e6e6f742062652060448201526203078360ec1b60648201526084015b60405180910390fd5b6001600160a01b03848116600090815260076020526040902060010154161561090f5760405162461bcd60e51b815260206004820181905260248201527f43616e2774206f7665727772697465206578697374696e672067617465776179604482015260640161089b565b604080516060810182526001600160a01b0380861680835285821660208085018281528a851686880181815260008281526007909452888420975188549088166001600160a01b03199182161789559251600189018054918916918516919091179055516002909701805497909616969091169590951790935593519092917f66b81d7da7f7d79569de91e83fe8bf2d91493e92250227e66bd4fce953b2b4f691a450505050565b60405162461bcd60e51b815260206004820152601460248201527343616e6e6f742072656e6f756e636520726f6c6560601b604482015260640161089b565b6000336107c4818585610a098383610cf4565b610a139190611c82565b610fc7565b610a2233826113c8565b50565b6000610a3081611338565b60005b8351811015610a97578260086000868481518110610a5357610a53611d7f565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff191691151591909117905580610a8f81611d4e565b915050610a33565b50505050565b610aa88233836110eb565b610ab282826113c8565b5050565b60009182526005602090815260408084206001600160a01b0393909316845291905290205460ff1690565b60606004805461073390611d13565b7fcbbe7dfe7bfb9f48c266587cde1d740252fcb25946b3c7c54b79962b0581377d610b1a81611338565b600b544211610b6b5760405162461bcd60e51b815260206004820152601e60248201527f4d757374206265206166746572205f756e6c6f636b54696d657374616d700000604482015260640161089b565b50600a805460ff19166001179055565b60003381610b898286610cf4565b905083811015610be95760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b606482015260840161089b565b6107e78286868403610fc7565b6000336107c481858561115f565b6000610c0f81611338565b60005b8351811015610a97578260096000868481518110610c3257610c32611d7f565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff191691151591909117905580610c6e81611d4e565b915050610c12565b600082815260056020526040902060010154610c9181611338565b6001600160a01b038216331415610cea5760405162461bcd60e51b815260206004820152601c60248201527f43616e6e6f74207265766f6b6520726f6c652066726f6d2073656c6600000000604482015260640161089b565b6108178383611522565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b60026006541415610d725760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015260640161089b565b60026006556000610d838334611c82565b11610dd05760405162461bcd60e51b815260206004820152601a60248201527f4d7573742073656e642045544820616e642f6f72205052494d45000000000000604482015260640161089b565b6001600160a01b0384811660009081526007602052604090206001015416610e465760405162461bcd60e51b8152602060048201526024808201527f4e6f2068616e646c657220666f7220676976656e205f68616e646c65724164646044820152637265737360e01b606482015260840161089b565b6001600160a01b038085166000908152600760209081526040918290208251606081018452815485168152600182015485169281019290925260020154909216908201523415610f315760008082600001516001600160a01b03163460405160006040518083038185875af1925050503d8060008114610ee2576040519150601f19603f3d011682016040523d82523d6000602084013e610ee7565b606091505b509150915081610f2e5760405162461bcd60e51b815260206004820152601260248201527108cc2d2d8cac840e8de40e6cadcc8408aa8960731b604482015260640161089b565b50505b8215610f4657610f463382602001518561115f565b604080820151825160208401519251632675b6ff60e11b81526001600160a01b0390921692634ceb6dfe92610f8992339290918a9034908b908b90600401611bec565b600060405180830381600087803b158015610fa357600080fd5b505af1158015610fb7573d6000803e3d6000fd5b5050600160065550505050505050565b6001600160a01b0383166110295760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161089b565b6001600160a01b03821661108a5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161089b565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006110f78484610cf4565b90506000198114610a9757818110156111525760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000604482015260640161089b565b610a978484848403610fc7565b6001600160a01b0383166111c35760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161089b565b6001600160a01b0382166112255760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161089b565b611230838383611589565b6001600160a01b038316600090815260208190526040902054818110156112a85760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b606482015260840161089b565b6001600160a01b038085166000908152602081905260408082208585039055918516815290812080548492906112df908490611c82565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161132b91815260200190565b60405180910390a3610a97565b610a22813361163c565b61134c8282610ab6565b610ab25760008281526005602090815260408083206001600160a01b03851684529091529020805460ff191660011790556113843390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b6001600160a01b0382166114285760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b606482015260840161089b565b61143482600083611589565b6001600160a01b038216600090815260208190526040902054818110156114a85760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b606482015260840161089b565b6001600160a01b03831660009081526020819052604081208383039055600280548492906114d7908490611cb9565b90915550506040518281526000906001600160a01b038516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3505050565b61152c8282610ab6565b15610ab25760008281526005602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b600a5460ff16806115d457506001600160a01b03831660009081526008602052604090205460ff16806115d457506001600160a01b03821660009081526009602052604090205460ff165b806115e657506001600160a01b038316155b6108175760405162461bcd60e51b815260206004820152602160248201527f5472616e7366657273206e6f742063757272656e746c7920737570706f7274656044820152601960fa1b606482015260840161089b565b6116468282610ab6565b610ab25761165e816001600160a01b031660146116a0565b6116698360206116a0565b60405160200161167a929190611b77565b60408051601f198184030181529082905262461bcd60e51b825261089b91600401611c3e565b606060006116af836002611c9a565b6116ba906002611c82565b67ffffffffffffffff8111156116d2576116d2611d95565b6040519080825280601f01601f1916602001820160405280156116fc576020820181803683370190505b509050600360fc1b8160008151811061171757611717611d7f565b60200101906001600160f81b031916908160001a905350600f60fb1b8160018151811061174657611746611d7f565b60200101906001600160f81b031916908160001a905350600061176a846002611c9a565b611775906001611c82565b90505b60018111156117ed576f181899199a1a9b1b9c1cb0b131b232b360811b85600f16601081106117a9576117a9611d7f565b1a60f81b8282815181106117bf576117bf611d7f565b60200101906001600160f81b031916908160001a90535060049490941c936117e681611cfc565b9050611778565b50831561183c5760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e74604482015260640161089b565b9392505050565b80356001600160a01b038116811461185a57600080fd5b919050565b8035801515811461185a57600080fd5b60006020828403121561188157600080fd5b61183c82611843565b6000806040838503121561189d57600080fd5b6118a683611843565b91506118b460208401611843565b90509250929050565b6000806000606084860312156118d257600080fd5b6118db84611843565b92506118e960208501611843565b91506118f760408501611843565b90509250925092565b60008060006060848603121561191557600080fd5b61191e84611843565b925061192c60208501611843565b9150604084013590509250925092565b6000806040838503121561194f57600080fd5b61195883611843565b946020939093013593505050565b6000806000806080858703121561197c57600080fd5b61198585611843565b9350602080860135935060408601359250606086013567ffffffffffffffff808211156119b157600080fd5b818801915088601f8301126119c557600080fd5b8135818111156119d7576119d7611d95565b6119e9601f8201601f19168501611c51565b915080825289848285010111156119ff57600080fd5b808484018584013760008482840101525080935050505092959194509250565b60008060408385031215611a3257600080fd5b823567ffffffffffffffff80821115611a4a57600080fd5b818501915085601f830112611a5e57600080fd5b8135602082821115611a7257611a72611d95565b8160051b9250611a83818401611c51565b8281528181019085830185870184018b1015611a9e57600080fd5b600096505b84871015611ac857611ab481611843565b835260019690960195918301918301611aa3565b509650611ad8905087820161185f565b9450505050509250929050565b600060208284031215611af757600080fd5b5035919050565b60008060408385031215611b1157600080fd5b823591506118b460208401611843565b600060208284031215611b3357600080fd5b81356001600160e01b03198116811461183c57600080fd5b60008151808452611b63816020860160208601611cd0565b601f01601f19169290920160200192915050565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000815260008351611baf816017850160208801611cd0565b7001034b99036b4b9b9b4b733903937b6329607d1b6017918401918201528351611be0816028840160208801611cd0565b01602801949350505050565b600060018060a01b03808a16835280891660208401528088166040840152508560608301528460808301528360a083015260e060c0830152611c3160e0830184611b4b565b9998505050505050505050565b60208152600061183c6020830184611b4b565b604051601f8201601f1916810167ffffffffffffffff81118282101715611c7a57611c7a611d95565b604052919050565b60008219821115611c9557611c95611d69565b500190565b6000816000190483118215151615611cb457611cb4611d69565b500290565b600082821015611ccb57611ccb611d69565b500390565b60005b83811015611ceb578181015183820152602001611cd3565b83811115610a975750506000910152565b600081611d0b57611d0b611d69565b506000190190565b600181811c90821680611d2757607f821691505b60208210811415611d4857634e487b7160e01b600052602260045260246000fd5b50919050565b6000600019821415611d6257611d62611d69565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fdfea2646970667358221220227c9d340aacadaa283ea60492610d6b4ae4c6e54ca88e75d631c80c5941e8a764736f6c63430008070033000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000063b1135000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000