0x60806040523480156200001157600080fd5b50604051620011c1380380620011c1833981016040819052620000349162000175565b600080546001600160a01b0319166001600160a01b03861690811782556040518692907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3508015620000ba576000805260026020527fac33ff75c19e70fe83507db0d683fd3465c996598dc972688b7ace676c89077b805460ff191660011790555b600580546001600160a01b038086166001600160a01b0319928316179092556007805492851692909116821790556040805163200c612d60e21b8152905163803184b4916004808201926020929091908290030181865afa15801562000124573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200014a9190620001d8565b60045550620001f292505050565b80516001600160a01b03811681146200017057600080fd5b919050565b600080600080608085870312156200018c57600080fd5b620001978562000158565b9350620001a76020860162000158565b9250620001b76040860162000158565b915060608501518015158114620001cd57600080fd5b939692955090935050565b600060208284031215620001eb57600080fd5b5051919050565b610fbf80620002026000396000f3fe6080604052600436106100975760003560e01c80631ddac1bf1461009c57806356ace584146101125780637e29e32114610134578063803184b4146101625780638da5cb5b1461017857806391ee30e5146101b0578063c8effdf7146101d0578063cd59658314610210578063cff0ab9614610230578063dc8e4a7f14610250578063f2fde38b14610270578063f4d4c9d714610290575b600080fd5b3480156100a857600080fd5b506100e66100b7366004610e2b565b600360205260009081526040902080546001909101546001600160401b03821691600160401b900460ff169083565b604080516001600160401b03909416845260ff9092166020840152908201526060015b60405180910390f35b34801561011e57600080fd5b5061013261012d366004610e2b565b6102a3565b005b34801561014057600080fd5b5061015461014f366004610e2b565b6104b7565b604051908152602001610109565b34801561016e57600080fd5b5061015460045481565b34801561018457600080fd5b50600054610198906001600160a01b031681565b6040516001600160a01b039091168152602001610109565b3480156101bc57600080fd5b506101326101cb366004610e4d565b6104e7565b3480156101dc57600080fd5b506102006101eb366004610e2b565b60026020526000908152604090205460ff1681565b6040519015158152602001610109565b34801561021c57600080fd5b50600554610198906001600160a01b031681565b34801561023c57600080fd5b50600754610198906001600160a01b031681565b34801561025c57600080fd5b5061013261026b366004610e4d565b6106fc565b34801561027c57600080fd5b5061013261028b366004610e8f565b610970565b61013261029e366004610e4d565b6109e5565b60ff808216600090815260036020908152604091829020825160608101845281546001600160401b03808216808452600160401b90920490961693820193909352600190910154928101929092529091421611801561030b575080516001600160401b031615155b6103545760405162461bcd60e51b815260206004820152601560248201527413db99dbda5b99c81d5c19185d19481c195c9a5bd9605a1b60448201526064015b60405180910390fd5b60408082015160ff84166000908152600160205291822080549192839261037c908490610ec2565b909155505060ff808416600090815260036020908152604080832080546001600160481b0319168155600101839055600290915290205416156103d4576000546103cf906001600160a01b031682610c9c565b610475565b6007546004805460405163248a8e0f60e01b81526001600160a01b039093169263248a8e0f926104079291889101610ed5565b602060405180830381865afa158015610424573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104489190610ee6565b600680546001600160a01b0319166001600160a01b03928316908117909155600054610475921683610cf2565b8260ff167fd7d22af606c4d58253b5d9c1d02d0f8d328376c09ff439fd4c3deabbf25a90bc826040516104aa91815260200190565b60405180910390a2505050565b60ff8116600090815260036020908152604080832060019081015492528220546104e19190610ec2565b92915050565b6000546001600160a01b031633146105115760405162461bcd60e51b815260040161034b90610f03565b600080526002602052600080516020610f6a83398151915254829060ff16801561053c575060ff8116155b806105c457506007546004805460405163248a8e0f60e01b81526000936001600160a01b03169263248a8e0f92610577929091879101610ed5565b602060405180830381865afa158015610594573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105b89190610ee6565b6001600160a01b031614155b6105e05760405162461bcd60e51b815260040161034b90610f29565b60ff83166000908152600160205260409020548211156106505760405162461bcd60e51b815260206004820152602560248201527f496e73756666696369656e7420626f6e642062616c616e636520746f20776974604482015264686472617760d81b606482015260840161034b565b6040518060600160405280612a30426106699190610f56565b6001600160401b03908116825260ff808716602080850182905260409485018890526000828152600382528590208651815492880151909416600160401b026001600160481b0319909216939094169290921791909117825592820151600190910155517fd4ba910d5244a94a621bb8c93f5f0a941d030065f140deb38259e52cd039bad5906104aa9085815260200190565b6005546001600160a01b031633146107605760405162461bcd60e51b815260206004820152602160248201527f43616c6c6572206973206e6f74207468652062726964676520636f6e747261636044820152601d60fa1b606482015260840161034b565b600080526002602052600080516020610f6a83398151915254829060ff16801561078b575060ff8116155b8061081357506007546004805460405163248a8e0f60e01b81526000936001600160a01b03169263248a8e0f926107c6929091879101610ed5565b602060405180830381865afa1580156107e3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108079190610ee6565b6001600160a01b031614155b61082f5760405162461bcd60e51b815260040161034b90610f29565b60ff831660009081526001602052604081208054849290610851908490610ec2565b909155505060ff808416600090815260036020908152604080832080546001600160481b03191681556001018390556002909152902054161561089d576108983383610c9c565b61093b565b6007546004805460405163248a8e0f60e01b81526001600160a01b039093169263248a8e0f926108d09291889101610ed5565b602060405180830381865afa1580156108ed573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109119190610ee6565b600680546001600160a01b0319166001600160a01b0392909216918217905561093b903384610cf2565b8260ff167f0b0997b3ef9776a06b24d815aa3ee9340e726981ed965e5dfedd543344d79b8f836040516104aa91815260200190565b6000546001600160a01b0316331461099a5760405162461bcd60e51b815260040161034b90610f03565b600080546001600160a01b0319166001600160a01b0383169081178255604051909133917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b600080526002602052600080516020610f6a83398151915254829060ff168015610a10575060ff8116155b80610a9857506007546004805460405163248a8e0f60e01b81526000936001600160a01b03169263248a8e0f92610a4b929091879101610ed5565b602060405180830381865afa158015610a68573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a8c9190610ee6565b6001600160a01b031614155b610ab45760405162461bcd60e51b815260040161034b90610f29565b6000546001600160a01b03163314610ade5760405162461bcd60e51b815260040161034b90610f03565b60008211610b2e5760405162461bcd60e51b815260206004820152601d60248201527f416d6f756e74206d7573742062652067726561746572207468616e2030000000604482015260640161034b565b60ff8084166000908152600260205260409020541615610b9757813414610b925760405162461bcd60e51b8152602060048201526018602482015277496e73756666696369656e74204554482062616c616e636560401b604482015260640161034b565b610c36565b6007546004805460405163248a8e0f60e01b81526001600160a01b039093169263248a8e0f92610bca9291889101610ed5565b602060405180830381865afa158015610be7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c0b9190610ee6565b600680546001600160a01b0319166001600160a01b03929092169182179055610c3690333085610d79565b60ff831660009081526001602052604081208054849290610c58908490610f56565b909155505060405182815260ff84169033907f59493ac36552818e40f9277dce7f07ab9a7e18fc02b41fd51a1a91228115972a9060200160405180910390a3505050565b600080600080600085875af1905080610ced5760405162461bcd60e51b815260206004820152601360248201527211551217d514905394d1915497d19052531151606a1b604482015260640161034b565b505050565b600060405163a9059cbb60e01b81526001600160a01b0384166004820152826024820152602060006044836000895af13d15601f3d1160016000511416171691505080610d735760405162461bcd60e51b815260206004820152600f60248201526e1514905394d1915497d19052531151608a1b604482015260640161034b565b50505050565b60006040516323b872dd60e01b81526001600160a01b03851660048201526001600160a01b03841660248201528260448201526020600060648360008a5af13d15601f3d1160016000511416171691505080610e0e5760405162461bcd60e51b81526020600482015260146024820152731514905394d1915497d19493d357d1905253115160621b604482015260640161034b565b5050505050565b803560ff81168114610e2657600080fd5b919050565b600060208284031215610e3d57600080fd5b610e4682610e15565b9392505050565b60008060408385031215610e6057600080fd5b610e6983610e15565b946020939093013593505050565b6001600160a01b0381168114610e8c57600080fd5b50565b600060208284031215610ea157600080fd5b8135610e4681610e77565b634e487b7160e01b600052601160045260246000fd5b818103818111156104e1576104e1610eac565b91825260ff16602082015260400190565b600060208284031215610ef857600080fd5b8151610e4681610e77565b6020808252600c908201526b15539055551213d49256915160a21b604082015260600190565b602080825260139082015272092dcecc2d8d2c840e8ded6cadc40d2dcc8caf606b1b604082015260600190565b808201808211156104e1576104e1610eac56feac33ff75c19e70fe83507db0d683fd3465c996598dc972688b7ace676c89077ba2646970667358221220beeb28de718947c7e001e67d92a12b52e29e0fcacb778cd1999050fdfffc981164736f6c634300081200330000000000000000000000001650683e50e075efc778be4d1a6be929f38317190000000000000000000000009f28ac2c1a2a82db54dfed6b9784a7a950efec080000000000000000000000000890f8a7b193a3eee810de3adcfad181b9ce294e0000000000000000000000000000000000000000000000000000000000000001