6080604052600060075560006008556212750060095534801561002157600080fd5b506040516118f13803806118f18339818101604052608081101561004457600080fd5b5080516020820151604083015160609093015191929091836001600160a01b0381166100b7576040805162461bcd60e51b815260206004820152601960248201527f4f776e657220616464726573732063616e6e6f74206265203000000000000000604482015290519081900360640190fd5b600080546001600160a01b0319166001600160a01b038316908117825560408051928352602083019190915280517fb532073b38c83145e3e5135377a08bf9aab55bc0fd7c1179cd4fb995d2a5159c9281900390910190a15060016003556000546001600160a01b0316610166576040805162461bcd60e51b815260206004820152601160248201527013dddb995c881b5d5cdd081899481cd95d607a1b604482015290519081900360640190fd5b600580546001600160a01b0393841661010002610100600160a81b0319909116179055600680549183166001600160a01b03199283161790556002805493909216921691909117905550611732806101bf6000396000f3fe608060405234801561001057600080fd5b50600436106101d95760003560e01c806372f702f311610104578063a694fc3a116100a2578063d1af0c7d11610071578063d1af0c7d14610411578063df136d6514610419578063e9fad8ee14610421578063ebe2b12b14610429576101d9565b8063a694fc3a146103c7578063c8f33c91146103e4578063cc1a378f146103ec578063cd3daf9d14610409576101d9565b806380faa57d116100de57806380faa57d146103895780638b876347146103915780638da5cb5b146103b757806391b4ded9146103bf576101d9565b806372f702f31461037157806379ba5097146103795780637b0a47ee14610381576101d9565b80632e1a7d4d1161017c5780633fc6df6e1161014b5780633fc6df6e1461030357806353a47bb7146103275780635c975abb1461032f57806370a082311461034b576101d9565b80632e1a7d4d146102b9578063386a9525146102d65780633c6b16ab146102de5780633d18b912146102fb576101d9565b806316c38b3c116101b857806316c38b3c1461026457806318160ddd14610283578063197621431461028b5780631c1f78eb146102b1576101d9565b80628cc262146101de5780630700037d146102165780631627540c1461023c575b600080fd5b610204600480360360208110156101f457600080fd5b50356001600160a01b0316610431565b60408051918252519081900360200190f35b6102046004803603602081101561022c57600080fd5b50356001600160a01b03166104c7565b6102626004803603602081101561025257600080fd5b50356001600160a01b03166104d9565b005b6102626004803603602081101561027a57600080fd5b50351515610576565b610204610631565b610262600480360360208110156102a157600080fd5b50356001600160a01b0316610638565b6102046106a3565b610262600480360360208110156102cf57600080fd5b50356106c1565b610204610863565b610262600480360360208110156102f457600080fd5b5035610869565b610262610abf565b61030b610bfd565b604080516001600160a01b039092168252519081900360200190f35b61030b610c0c565b610337610c1b565b604080519115158252519081900360200190f35b6102046004803603602081101561036157600080fd5b50356001600160a01b0316610c24565b61030b610c3f565b610262610c4e565b610204610d0a565b610204610d10565b610204600480360360208110156103a757600080fd5b50356001600160a01b0316610d1e565b61030b610d30565b610204610d3f565b610262600480360360208110156103dd57600080fd5b5035610d45565b610204610f23565b6102626004803603602081101561040257600080fd5b5035610f29565b610204610ff8565b61030b611052565b610204611066565b61026261106c565b61020461108f565b6001600160a01b0381166000908152600d6020908152604080832054600c9092528220546104c191906104b590670de0b6b3a7640000906104a99061048490610478610ff8565b9063ffffffff61109516565b6001600160a01b0388166000908152600f60205260409020549063ffffffff6110de16565b9063ffffffff61113716565b9063ffffffff61117916565b92915050565b600d6020526000908152604090205481565b6000546001600160a01b031633146105225760405162461bcd60e51b815260040180806020018281038252602f81526020018061161e602f913960400191505060405180910390fd5b600180546001600160a01b0383166001600160a01b0319909116811790915560408051918252517f906a1c6bd7e3091ea86693dd029a831c19049ce77f1dce2ce0bab1cacbabce229181900360200190a150565b6000546001600160a01b031633146105bf5760405162461bcd60e51b815260040180806020018281038252602f81526020018061161e602f913960400191505060405180910390fd5b60055460ff16151581151514156105d55761062e565b6005805460ff1916821515179081905560ff16156105f257426004555b6005546040805160ff90921615158252517f8fb6c181ee25a520cf3dd6565006ef91229fcfe5a989566c2a3b8c115570cec59181900360200190a15b50565b600e545b90565b6000546001600160a01b031633146106815760405162461bcd60e51b815260040180806020018281038252602f81526020018061161e602f913960400191505060405180910390fd5b600280546001600160a01b0319166001600160a01b0392909216919091179055565b60006106bc6009546008546110de90919063ffffffff16565b905090565b6003805460010190819055336106d5610ff8565b600b556106e0610d10565b600a556001600160a01b03811615610727576106fb81610431565b6001600160a01b0382166000908152600d6020908152604080832093909355600b54600c909152919020555b60008311610770576040805162461bcd60e51b8152602060048201526011602482015270043616e6e6f74207769746864726177203607c1b604482015290519081900360640190fd5b600e54610783908463ffffffff61109516565b600e55336000908152600f60205260409020546107a6908463ffffffff61109516565b336000818152600f60205260409020919091556006546107d2916001600160a01b0390911690856111d3565b60408051848152905133917f7084f5476618d8e60b11ef0d7d3f06914655adb8793e28ff7f018d4c76d505d5919081900360200190a250600354811461085f576040805162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b5050565b60095481565b6002546001600160a01b031633146108b25760405162461bcd60e51b815260040180806020018281038252602a8152602001806116aa602a913960400191505060405180910390fd5b60006108bc610ff8565b600b556108c7610d10565b600a556001600160a01b0381161561090e576108e281610431565b6001600160a01b0382166000908152600d6020908152604080832093909355600b54600c909152919020555b60075442106109335760095461092b90839063ffffffff61113716565b600855610982565b600754600090610949904263ffffffff61109516565b90506000610962600854836110de90919063ffffffff16565b60095490915061097c906104a9868463ffffffff61117916565b60085550505b600554604080516370a0823160e01b8152306004820152905160009261010090046001600160a01b0316916370a08231916024808301926020929190829003018186803b1580156109d257600080fd5b505afa1580156109e6573d6000803e3d6000fd5b505050506040513d60208110156109fc57600080fd5b5051600954909150610a1590829063ffffffff61113716565b6008541115610a6b576040805162461bcd60e51b815260206004820152601860248201527f50726f76696465642072657761726420746f6f20686967680000000000000000604482015290519081900360640190fd5b42600a819055600954610a84919063ffffffff61117916565b6007556040805184815290517fde88a922e0d3b88b24e9623efeb464919c6bf9f66857a65e2bfcf2ce87a9433d9181900360200190a1505050565b600380546001019081905533610ad3610ff8565b600b55610ade610d10565b600a556001600160a01b03811615610b2557610af981610431565b6001600160a01b0382166000908152600d6020908152604080832093909355600b54600c909152919020555b336000908152600d60205260409020548015610ba557336000818152600d6020526040812055600554610b6e916101009091046001600160a01b0316908363ffffffff6111d316565b60408051828152905133917fe2403640ba68fed3a2f88b7557551d1993f84b99bb10ff833f0cf8db0c5e0486919081900360200190a25b5050600354811461062e576040805162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b6002546001600160a01b031681565b6001546001600160a01b031681565b60055460ff1681565b6001600160a01b03166000908152600f602052604090205490565b6006546001600160a01b031681565b6001546001600160a01b03163314610c975760405162461bcd60e51b81526004018080602001828103825260358152602001806115e96035913960400191505060405180910390fd5b600054600154604080516001600160a01b03938416815292909116602083015280517fb532073b38c83145e3e5135377a08bf9aab55bc0fd7c1179cd4fb995d2a5159c9281900390910190a160018054600080546001600160a01b03199081166001600160a01b03841617909155169055565b60085481565b60006106bc4260075461122a565b600c6020526000908152604090205481565b6000546001600160a01b031681565b60045481565b600380546001019081905560055460ff1615610d925760405162461bcd60e51b815260040180806020018281038252603c81526020018061166e603c913960400191505060405180910390fd5b33610d9b610ff8565b600b55610da6610d10565b600a556001600160a01b03811615610ded57610dc181610431565b6001600160a01b0382166000908152600d6020908152604080832093909355600b54600c909152919020555b60008311610e33576040805162461bcd60e51b815260206004820152600e60248201526d043616e6e6f74207374616b6520360941b604482015290519081900360640190fd5b600e54610e46908463ffffffff61117916565b600e55336000908152600f6020526040902054610e69908463ffffffff61117916565b336000818152600f6020526040902091909155600654610e96916001600160a01b03909116903086611240565b60408051848152905133917f9e71bc8eea02a63969f509818f2dafb9254532904319f9dbda79b67bd34a5f3d919081900360200190a250600354811461085f576040805162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b600a5481565b6000546001600160a01b03163314610f725760405162461bcd60e51b815260040180806020018281038252602f81526020018061161e602f913960400191505060405180910390fd5b6007541580610f82575060075442115b610fbd5760405162461bcd60e51b81526004018080602001828103825260588152602001806115916058913960600191505060405180910390fd5b60098190556040805182815290517ffb46ca5a5e06d4540d6387b930a7c978bce0db5f449ec6b3f5d07c6e1d44f2d39181900360200190a150565b6000600e546000141561100e5750600b54610635565b6106bc611043600e546104a9670de0b6b3a7640000611037600854611037600a54610478610d10565b9063ffffffff6110de16565b600b549063ffffffff61117916565b60055461010090046001600160a01b031681565b600b5481565b336000908152600f6020526040902054611085906106c1565b61108d610abf565b565b60075481565b60006110d783836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506112a0565b9392505050565b6000826110ed575060006104c1565b828202828482816110fa57fe5b04146110d75760405162461bcd60e51b815260040180806020018281038252602181526020018061164d6021913960400191505060405180910390fd5b60006110d783836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611337565b6000828201838110156110d7576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b17905261122590849061139c565b505050565b600081831061123957816110d7565b5090919050565b604080516001600160a01b0385811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180516001600160e01b03166323b872dd60e01b17905261129a90859061139c565b50505050565b6000818484111561132f5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156112f45781810151838201526020016112dc565b50505050905090810190601f1680156113215780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b600081836113865760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156112f45781810151838201526020016112dc565b50600083858161139257fe5b0495945050505050565b6113ae826001600160a01b0316611554565b6113ff576040805162461bcd60e51b815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604482015290519081900360640190fd5b60006060836001600160a01b0316836040518082805190602001908083835b6020831061143d5780518252601f19909201916020918201910161141e565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d806000811461149f576040519150601f19603f3d011682016040523d82523d6000602084013e6114a4565b606091505b5091509150816114fb576040805162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015290519081900360640190fd5b80511561129a5780806020019051602081101561151757600080fd5b505161129a5760405162461bcd60e51b815260040180806020018281038252602a8152602001806116d4602a913960400191505060405180910390fd5b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47081158015906115885750808214155b94935050505056fe50726576696f7573207265776172647320706572696f64206d75737420626520636f6d706c657465206265666f7265206368616e67696e6720746865206475726174696f6e20666f7220746865206e657720706572696f64596f75206d757374206265206e6f6d696e61746564206265666f726520796f752063616e20616363657074206f776e6572736869704f6e6c792074686520636f6e7472616374206f776e6572206d617920706572666f726d207468697320616374696f6e536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f775468697320616374696f6e2063616e6e6f7420626520706572666f726d6564207768696c652074686520636f6e74726163742069732070617573656443616c6c6572206973206e6f742052657761726473446973747269627574696f6e20636f6e74726163745361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564a265627a7a7231582027f5489c489a521f644a7c45a403267c0e0968d1e9ac47afed996d9fba4e5bf064736f6c634300051000320000000000000000000000005d521bb0063d5c413a41921d1f8e10adc18900f40000000000000000000000005d521bb0063d5c413a41921d1f8e10adc18900f4000000000000000000000000892a6f9df0147e5f079b0993f486f9aca3c87881000000000000000000000000ab2d2f5bc36620a57ec4bb60d6a7df2a847deab5