0x60806040523480156200001157600080fd5b506040518060400160405280600d81526020016c26b0b733b79021b63ab13132b960991b815250604051806040016040528060058152602001644f394e564d60d81b815250816000908162000067919062000124565b50600162000076828262000124565b505050620001f0565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680620000aa57607f821691505b602082108103620000cb57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200011f57600081815260208120601f850160051c81016020861015620000fa5750805b601f850160051c820191505b818110156200011b5782815560010162000106565b5050505b505050565b81516001600160401b038111156200014057620001406200007f565b620001588162000151845462000095565b84620000d1565b602080601f831160018114620001905760008415620001775750858301515b600019600386901b1c1916600185901b1785556200011b565b600085815260208120601f198616915b82811015620001c157888601518255948401946001909101908401620001a0565b5085821015620001e05787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b61160980620002006000396000f3fe608060405234801561001057600080fd5b50600436106100f55760003560e01c806342842e0e11610097578063a22cb46511610066578063a22cb465146101e9578063b88d4fde146101fc578063c87b56dd1461020f578063e985e9c51461022257600080fd5b806342842e0e1461019a5780636352211e146101ad57806370a08231146101c057806395d89b41146101e157600080fd5b8063095ea7b3116100d3578063095ea7b3146101625780631249c58b146101775780631928972e1461017f57806323b872dd1461018757600080fd5b806301ffc9a7146100fa57806306fdde0314610122578063081812fc14610137575b600080fd5b61010d6101083660046111d1565b61025e565b60405190151581526020015b60405180910390f35b61012a6102fb565b604051610119919061123e565b61014a610145366004611251565b61038d565b6040516001600160a01b039091168152602001610119565b610175610170366004611286565b6103b4565b005b610175610508565b610175610578565b6101756101953660046112b0565b610690565b6101756101a83660046112b0565b610717565b61014a6101bb366004611251565b610732565b6101d36101ce3660046112ec565b610797565b604051908152602001610119565b61012a610831565b6101756101f7366004611307565b610840565b61017561020a366004611359565b61084f565b61012a61021d366004611251565b6108dd565b61010d610230366004611435565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b60006001600160e01b031982167f80ac58cd0000000000000000000000000000000000000000000000000000000014806102c157506001600160e01b031982167f5b5e139f00000000000000000000000000000000000000000000000000000000145b806102f557507f01ffc9a7000000000000000000000000000000000000000000000000000000006001600160e01b03198316145b92915050565b60606000805461030a90611468565b80601f016020809104026020016040519081016040528092919081815260200182805461033690611468565b80156103835780601f1061035857610100808354040283529160200191610383565b820191906000526020600020905b81548152906001019060200180831161036657829003601f168201915b5050505050905090565b600061039882610951565b506000908152600460205260409020546001600160a01b031690565b60006103bf82610732565b9050806001600160a01b0316836001600160a01b03160361044d5760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560448201527f720000000000000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b336001600160a01b038216148061048757506001600160a01b038116600090815260056020908152604080832033845290915290205460ff165b6104f95760405162461bcd60e51b815260206004820152603e60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206e6f7220617070726f76656420666f7220616c6c00006064820152608401610444565b61050383836109b5565b505050565b735f79ee8f8fa862e98201120d83c4ec39d9468d49331461056b5760405162461bcd60e51b815260206004820152600560248201527f4f574e45520000000000000000000000000000000000000000000000000000006044820152606401610444565b610576336001610a30565b565b600654610100900460ff16158080156105985750600654600160ff909116105b806105b25750303b1580156105b2575060065460ff166001145b6106245760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610444565b6006805460ff191660011790558015610647576006805461ff0019166101001790555b801561068d576006805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50565b61069a3382610b7f565b61070c5760405162461bcd60e51b815260206004820152602e60248201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560448201527f72206e6f7220617070726f7665640000000000000000000000000000000000006064820152608401610444565b610503838383610bfe565b6105038383836040518060200160405280600081525061084f565b6000818152600260205260408120546001600160a01b0316806102f55760405162461bcd60e51b815260206004820152601860248201527f4552433732313a20696e76616c696420746f6b656e20494400000000000000006044820152606401610444565b60006001600160a01b0382166108155760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f74206120766160448201527f6c6964206f776e657200000000000000000000000000000000000000000000006064820152608401610444565b506001600160a01b031660009081526003602052604090205490565b60606001805461030a90611468565b61084b338383610dd8565b5050565b6108593383610b7f565b6108cb5760405162461bcd60e51b815260206004820152602e60248201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560448201527f72206e6f7220617070726f7665640000000000000000000000000000000000006064820152608401610444565b6108d784848484610ea6565b50505050565b60606108e882610951565b60006108ff60408051602081019091526000815290565b9050600081511161091f576040518060200160405280600081525061094a565b8061092984610f2f565b60405160200161093a9291906114a2565b6040516020818303038152906040525b9392505050565b6000818152600260205260409020546001600160a01b031661068d5760405162461bcd60e51b815260206004820152601860248201527f4552433732313a20696e76616c696420746f6b656e20494400000000000000006044820152606401610444565b6000818152600460205260409020805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b03841690811790915581906109f782610732565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6001600160a01b038216610a865760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f20616464726573736044820152606401610444565b6000818152600260205260409020546001600160a01b031615610aeb5760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e746564000000006044820152606401610444565b6001600160a01b0382166000908152600360205260408120805460019290610b149084906114e7565b9091555050600081815260026020526040808220805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b600080610b8b83610732565b9050806001600160a01b0316846001600160a01b03161480610bd257506001600160a01b0380821660009081526005602090815260408083209388168352929052205460ff165b80610bf65750836001600160a01b0316610beb8461038d565b6001600160a01b0316145b949350505050565b826001600160a01b0316610c1182610732565b6001600160a01b031614610c8d5760405162461bcd60e51b815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201527f6f776e65720000000000000000000000000000000000000000000000000000006064820152608401610444565b6001600160a01b038216610d085760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f2061646460448201527f72657373000000000000000000000000000000000000000000000000000000006064820152608401610444565b610d136000826109b5565b6001600160a01b0383166000908152600360205260408120805460019290610d3c9084906114fa565b90915550506001600160a01b0382166000908152600360205260408120805460019290610d6a9084906114e7565b9091555050600081815260026020526040808220805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b816001600160a01b0316836001600160a01b031603610e395760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c6572000000000000006044820152606401610444565b6001600160a01b03838116600081815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b610eb1848484610bfe565b610ebd84848484611064565b6108d75760405162461bcd60e51b815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527f63656976657220696d706c656d656e74657200000000000000000000000000006064820152608401610444565b606081600003610f7257505060408051808201909152600181527f3000000000000000000000000000000000000000000000000000000000000000602082015290565b8160005b8115610f9c5780610f868161150d565b9150610f959050600a8361153c565b9150610f76565b60008167ffffffffffffffff811115610fb757610fb7611343565b6040519080825280601f01601f191660200182016040528015610fe1576020820181803683370190505b5090505b8415610bf657610ff66001836114fa565b9150611003600a86611550565b61100e9060306114e7565b60f81b81838151811061102357611023611564565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535061105d600a8661153c565b9450610fe5565b60006001600160a01b0384163b156111b057604051630a85bd0160e11b81526001600160a01b0385169063150b7a02906110a890339089908890889060040161157a565b6020604051808303816000875af19250505080156110e3575060408051601f3d908101601f191682019092526110e0918101906115b6565b60015b611196573d808015611111576040519150601f19603f3d011682016040523d82523d6000602084013e611116565b606091505b50805160000361118e5760405162461bcd60e51b815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527f63656976657220696d706c656d656e74657200000000000000000000000000006064820152608401610444565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050610bf6565b506001949350505050565b6001600160e01b03198116811461068d57600080fd5b6000602082840312156111e357600080fd5b813561094a816111bb565b60005b838110156112095781810151838201526020016111f1565b50506000910152565b6000815180845261122a8160208601602086016111ee565b601f01601f19169290920160200192915050565b60208152600061094a6020830184611212565b60006020828403121561126357600080fd5b5035919050565b80356001600160a01b038116811461128157600080fd5b919050565b6000806040838503121561129957600080fd5b6112a28361126a565b946020939093013593505050565b6000806000606084860312156112c557600080fd5b6112ce8461126a565b92506112dc6020850161126a565b9150604084013590509250925092565b6000602082840312156112fe57600080fd5b61094a8261126a565b6000806040838503121561131a57600080fd5b6113238361126a565b91506020830135801515811461133857600080fd5b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b6000806000806080858703121561136f57600080fd5b6113788561126a565b93506113866020860161126a565b925060408501359150606085013567ffffffffffffffff808211156113aa57600080fd5b818701915087601f8301126113be57600080fd5b8135818111156113d0576113d0611343565b604051601f8201601f19908116603f011681019083821181831017156113f8576113f8611343565b816040528281528a602084870101111561141157600080fd5b82602086016020830137600060208483010152809550505050505092959194509250565b6000806040838503121561144857600080fd5b6114518361126a565b915061145f6020840161126a565b90509250929050565b600181811c9082168061147c57607f821691505b60208210810361149c57634e487b7160e01b600052602260045260246000fd5b50919050565b600083516114b48184602088016111ee565b8351908301906114c88183602088016111ee565b01949350505050565b634e487b7160e01b600052601160045260246000fd5b808201808211156102f5576102f56114d1565b818103818111156102f5576102f56114d1565b60006001820161151f5761151f6114d1565b5060010190565b634e487b7160e01b600052601260045260246000fd5b60008261154b5761154b611526565b500490565b60008261155f5761155f611526565b500690565b634e487b7160e01b600052603260045260246000fd5b60006001600160a01b038087168352808616602084015250836040830152608060608301526115ac6080830184611212565b9695505050505050565b6000602082840312156115c857600080fd5b815161094a816111bb56fea26469706673582212208d8f3f2e1d4e9fa15dd50f2f504c50702fef551b943a0312bfd868658122458d64736f6c63430008110033