0x60806040523480156200001157600080fd5b506040516200129e3803806200129e833981016040819052620000349162000217565b60408051808201825260088082526770616e64616a616b60c01b6020808401829052845180860190955291845290830152906003620000748382620002ed565b506004620000838282620002ed565b505050620000a06200009a620000f660201b60201c565b620000fa565b600680546001600160a01b0319166001600160a01b038316179055620000ef81620000c9601290565b620000d690600a620004ce565b620000e9906601e2a2d7371000620004df565b6200014c565b506200050f565b3390565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b038216620001a75760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640160405180910390fd5b8060026000828254620001bb9190620004f9565b90915550506001600160a01b038216600081815260208181526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b505050565b6000602082840312156200022a57600080fd5b81516001600160a01b03811681146200024257600080fd5b9392505050565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200027457607f821691505b6020821081036200029557634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200021257600081815260208120601f850160051c81016020861015620002c45750805b601f850160051c820191505b81811015620002e557828155600101620002d0565b505050505050565b81516001600160401b0381111562000309576200030962000249565b62000321816200031a84546200025f565b846200029b565b602080601f831160018114620003595760008415620003405750858301515b600019600386901b1c1916600185901b178555620002e5565b600085815260208120601f198616915b828110156200038a5788860151825594840194600190910190840162000369565b5085821015620003a95787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052601160045260246000fd5b600181815b8085111562000410578160001904821115620003f457620003f4620003b9565b808516156200040257918102915b93841c9390800290620003d4565b509250929050565b6000826200042957506001620004c8565b816200043857506000620004c8565b81600181146200045157600281146200045c576200047c565b6001915050620004c8565b60ff841115620004705762000470620003b9565b50506001821b620004c8565b5060208310610133831016604e8410600b8410161715620004a1575081810a620004c8565b620004ad8383620003cf565b8060001904821115620004c457620004c4620003b9565b0290505b92915050565b60006200024260ff84168362000418565b8082028115828204841417620004c857620004c8620003b9565b80820180821115620004c857620004c8620003b9565b610d7f806200051f6000396000f3fe608060405234801561001057600080fd5b506004361061011b5760003560e01c806370a08231116100b257806395d89b4111610081578063a9059cbb11610066578063a9059cbb1461024e578063dd62ed3e14610261578063f2fde38b1461029a57600080fd5b806395d89b4114610233578063a457c2d71461023b57600080fd5b806370a08231146101e7578063715018a61461021057806379886b9d1461021a5780638da5cb5b1461022257600080fd5b806318160ddd116100ee57806318160ddd146101a057806323b872dd146101b2578063313ce567146101c557806339509351146101d457600080fd5b806306fdde0314610120578063075461721461013e578063095ea7b314610169578063172869c41461018c575b600080fd5b6101286102ad565b6040516101359190610b80565b60405180910390f35b600654610151906001600160a01b031681565b6040516001600160a01b039091168152602001610135565b61017c610177366004610c08565b61033f565b6040519015158152602001610135565b60065461017c90600160a01b900460ff1681565b6002545b604051908152602001610135565b61017c6101c0366004610c32565b610359565b60405160128152602001610135565b61017c6101e2366004610c08565b6103e5565b6101a46101f5366004610c6e565b6001600160a01b031660009081526020819052604090205490565b610218610424565b005b610218610438565b6005546001600160a01b0316610151565b6101286104ca565b61017c610249366004610c08565b6104d9565b61017c61025c366004610c08565b61058e565b6101a461026f366004610c89565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6102186102a8366004610c6e565b610610565b6060600380546102bc90610cbc565b80601f01602080910402602001604051908101604052809291908181526020018280546102e890610cbc565b80156103355780601f1061030a57610100808354040283529160200191610335565b820191906000526020600020905b81548152906001019060200180831161031857829003601f168201915b5050505050905090565b60003361034d8185856106a0565b60019150505b92915050565b600654600090600160a01b900460ff168061038157506006546001600160a01b038581169116145b6103d25760405162461bcd60e51b815260206004820152601460248201527f53776170206e6f7420616c6c6f7765642079657400000000000000000000000060448201526064015b60405180910390fd5b6103dd8484846107f8565b949350505050565b3360008181526001602090815260408083206001600160a01b038716845290915281205490919061034d908290869061041f908790610d0f565b6106a0565b61042c610811565b610436600061086b565b565b610440610811565b600654600160a01b900460ff161561049a5760405162461bcd60e51b815260206004820152601760248201527f5377617020697320616c726561647920616c6c6f77656400000000000000000060448201526064016103c9565b600680547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff16600160a01b179055565b6060600480546102bc90610cbc565b3360008181526001602090815260408083206001600160a01b0387168452909152812054909190838110156105765760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f00000000000000000000000000000000000000000000000000000060648201526084016103c9565b61058382868684036106a0565b506001949350505050565b600654600090600160a01b900460ff16806105b357506006546001600160a01b031633145b6105ff5760405162461bcd60e51b815260206004820152601460248201527f53776170206e6f7420616c6c6f7765642079657400000000000000000000000060448201526064016103c9565b61060983836108d5565b9392505050565b610618610811565b6001600160a01b0381166106945760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084016103c9565b61069d8161086b565b50565b6001600160a01b03831661071b5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f726573730000000000000000000000000000000000000000000000000000000060648201526084016103c9565b6001600160a01b0382166107975760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f737300000000000000000000000000000000000000000000000000000000000060648201526084016103c9565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6000336108068582856108e3565b610583858585610993565b6005546001600160a01b031633146104365760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016103c9565b600580546001600160a01b038381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b60003361034d818585610993565b6001600160a01b038381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811461098d57818110156109805760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016103c9565b61098d84848484036106a0565b50505050565b6001600160a01b038316610a0f5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f647265737300000000000000000000000000000000000000000000000000000060648201526084016103c9565b6001600160a01b038216610a8b5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f657373000000000000000000000000000000000000000000000000000000000060648201526084016103c9565b6001600160a01b03831660009081526020819052604090205481811015610b1a5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e6365000000000000000000000000000000000000000000000000000060648201526084016103c9565b6001600160a01b03848116600081815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a361098d565b600060208083528351808285015260005b81811015610bad57858101830151858201604001528201610b91565b5060006040828601015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8301168501019250505092915050565b80356001600160a01b0381168114610c0357600080fd5b919050565b60008060408385031215610c1b57600080fd5b610c2483610bec565b946020939093013593505050565b600080600060608486031215610c4757600080fd5b610c5084610bec565b9250610c5e60208501610bec565b9150604084013590509250925092565b600060208284031215610c8057600080fd5b61060982610bec565b60008060408385031215610c9c57600080fd5b610ca583610bec565b9150610cb360208401610bec565b90509250929050565b600181811c90821680610cd057607f821691505b602082108103610d09577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b80820180821115610353577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fdfea26469706673582212207d831db109154df2e0a59b2c98f09d1a3dfd8fff4ac3684fc46a5c778dd7f00164736f6c634300081200330000000000000000000000008602920fe3265c5fb88b106224b84cdeb987af5c