60806040526003805460ff1916601217905534801561001c575f5ffd5b5060405161100b38038061100b83398101604081905261003b916101a8565b5f80546001600160a01b0319163390811782556040519091907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a360016100858482610299565b5060026100928382610299565b506003546100a49060ff16600a61044c565b6100ae908261045e565b6004819055335f81815260056020908152604080832085905551938452919290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a350505f600c819055600d5550610475565b634e487b7160e01b5f52604160045260245ffd5b5f82601f83011261012e575f5ffd5b81516001600160401b038111156101475761014761010b565b604051601f8201601f19908116603f011681016001600160401b03811182821017156101755761017561010b565b60405281815283820160200185101561018c575f5ffd5b8160208501602083015e5f918101602001919091529392505050565b5f5f5f606084860312156101ba575f5ffd5b83516001600160401b038111156101cf575f5ffd5b6101db8682870161011f565b602086015190945090506001600160401b038111156101f8575f5ffd5b6102048682870161011f565b925050604084015190509250925092565b600181811c9082168061022957607f821691505b60208210810361024757634e487b7160e01b5f52602260045260245ffd5b50919050565b601f82111561029457805f5260205f20601f840160051c810160208510156102725750805b601f840160051c820191505b81811015610291575f815560010161027e565b50505b505050565b81516001600160401b038111156102b2576102b261010b565b6102c6816102c08454610215565b8461024d565b6020601f8211600181146102f8575f83156102e15750848201515b5f19600385901b1c1916600184901b178455610291565b5f84815260208120601f198516915b828110156103275787850151825560209485019460019092019101610307565b508482101561034457868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b634e487b7160e01b5f52601160045260245ffd5b6001815b60018411156103a25780850481111561038657610386610353565b600184161561039457908102905b60019390931c92800261036b565b935093915050565b5f826103b857506001610446565b816103c457505f610446565b81600181146103da57600281146103e457610400565b6001915050610446565b60ff8411156103f5576103f5610353565b50506001821b610446565b5060208310610133831016604e8410600b8410161715610423575081810a610446565b61042f5f198484610367565b805f190482111561044257610442610353565b0290505b92915050565b5f61045783836103aa565b9392505050565b808202811582820484141761044657610446610353565b610b89806104825f395ff3fe608060405234801561000f575f5ffd5b50600436106100f0575f3560e01c80638da5cb5b11610093578063bb2c99f711610063578063bb2c99f714610209578063c521724314610211578063dd62ed3e1461021c578063f2fde38b14610254575f5ffd5b80638da5cb5b146101bf57806395d89b41146101d957806397541e9f146101e1578063a9059cbb146101f6575f5ffd5b806318160ddd116100ce57806318160ddd1461016757806323b872dd1461016f578063313ce5671461018257806370a0823114610197575f5ffd5b8063033b9b4f146100f457806306fdde031461012f578063095ea7b314610144575b5f5ffd5b61011c6101023660046109f9565b6001600160a01b03165f9081526009602052604090205490565b6040519081526020015b60405180910390f35b610137610267565b6040516101269190610a19565b610157610152366004610a4e565b6102f7565b6040519015158152602001610126565b60045461011c565b61015761017d366004610a76565b61035e565b60035460405160ff9091168152602001610126565b61011c6101a53660046109f9565b6001600160a01b03165f9081526005602052604090205490565b5f546040516001600160a01b039091168152602001610126565b6101376103f4565b6101f46101ef3660046109f9565b610403565b005b610157610204366004610a4e565b6104e5565b600d5461011c565b600b5460ff16610157565b61011c61022a366004610ab0565b6001600160a01b039182165f90815260066020908152604080832093909416825291909152205490565b6101f46102623660046109f9565b6104fa565b60606001805461027690610ae1565b80601f01602080910402602001604051908101604052809291908181526020018280546102a290610ae1565b80156102ed5780601f106102c4576101008083540402835291602001916102ed565b820191905f5260205f20905b8154815290600101906020018083116102d057829003601f168201915b5050505050905090565b335f8181526006602090815260408083206001600160a01b03871680855290835281842086905590518581529293909290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a35060015b92915050565b6001600160a01b0383165f908152600660209081526040808320338452909152812054828110156103b757604051637dc7a0d960e11b815233600482015260248101829052604481018490526064015b60405180910390fd5b6001600160a01b0385165f908152600660209081526040808320338452909152902083820390556103e9858585610611565b506001949350505050565b60606002805461027690610ae1565b5f546001600160a01b0316331461045c5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016103ae565b335f908152600760205260409020546001600160a01b03908116908216036104c65760405162461bcd60e51b815260206004820152601b60248201527f5370656e646572206973206d756c74697369672061646472657373000000000060448201526064016103ae565b6001600160a01b03165f90815260096020526040902063069e10ad9055565b5f6104f1338484610611565b50600192915050565b5f546001600160a01b031633146105535760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016103ae565b6001600160a01b0381166105b85760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016103ae565b5f80546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35f80546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b03831661063a57604051634b637e8f60e11b81525f60048201526024016103ae565b6001600160a01b0382166106635760405163ec442f0560e01b81525f60048201526024016103ae565b5f81116106c45760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016103ae565b5f546001600160a01b03848116911614801561070e57505f6007816106f05f546001600160a01b031690565b6001600160a01b03908116825260208201929092526040015f205416145b15610759578160075f6107285f546001600160a01b031690565b6001600160a01b03908116825260208201929092526040015f2080546001600160a01b031916929091169190911790555b610764436001610b2d565b600a556001600160a01b0383165f9081526008602052604090205460ff1661081557600a546001600160a01b0384165f9081526009602052604090205411156108155760405162461bcd60e51b815260206004820152603a60248201527f5472616e73666572206e6f7420616c6c6f776564207965743a20696e7375666660448201527f696369656e7420696e636f6d696e67207472616e73666572732e00000000000060648201526084016103ae565b6001600160a01b0383165f908152600560205260409020548181101561088c5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016103ae565b600c541561096d575f600c54436108a39190610b40565b9050600281116108c5576001600d5f8282546108bf9190610b2d565b90915550505b6005600d54111561096b57600b805460ff191660011790556005811161096b5760405162461bcd60e51b815260206004820152604f60248201527f5472616e73666572206e6f7420616c6c6f7765643a206d75737420776169742060448201527f6174206c65617374203520626c6f636b73206166746572203520636f6e73656360648201526e7574697665207472616e736665727360881b608482015260a4016103ae565b505b43600c556001600160a01b038085165f8181526005602052604080822086860390559286168082529083902080548601905591517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906109d09086815260200190565b60405180910390a350505050565b80356001600160a01b03811681146109f4575f5ffd5b919050565b5f60208284031215610a09575f5ffd5b610a12826109de565b9392505050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f5f60408385031215610a5f575f5ffd5b610a68836109de565b946020939093013593505050565b5f5f5f60608486031215610a88575f5ffd5b610a91846109de565b9250610a9f602085016109de565b929592945050506040919091013590565b5f5f60408385031215610ac1575f5ffd5b610aca836109de565b9150610ad8602084016109de565b90509250929050565b600181811c90821680610af557607f821691505b602082108103610b1357634e487b7160e01b5f52602260045260245ffd5b50919050565b634e487b7160e01b5f52601160045260245ffd5b8082018082111561035857610358610b19565b8181038181111561035857610358610b1956fea26469706673582212208ddc5adc6ac7388a133a320104fbe527ebb7601213b1bc6978d5e826bf8e16d864736f6c634300081c0033000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000292090800000000000000000000000000000000000000000000000000000000000000003474747000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000034747470000000000000000000000000000000000000000000000000000000000