0x60806040526000600355655af3107a400060045534801561001f57600080fd5b50600080546001600160a01b0319163390811782558152600160208190526040909120805460ff191690911790556119958061005c6000396000f3fe60806040526004361061007f5760003560e01c806388f93af81161004e57806388f93af81461011b5780638f32d59b1461013b578063f2fde38b1461015b578063f34507511461017b57600080fd5b806326e3b8e21461008b5780635a1ed9e3146100ad578063611b4095146100cd578063767290871461010857600080fd5b3661008657005b600080fd5b34801561009757600080fd5b506100ab6100a6366004611454565b61018e565b005b3480156100b957600080fd5b506100ab6100c8366004611454565b6101e8565b3480156100d957600080fd5b503360009081526001602081905260409091205460ff161515145b604051901515815260200160405180910390f35b6100ab610116366004611553565b61028a565b34801561012757600080fd5b506100ab610136366004611653565b6112a9565b34801561014757600080fd5b506000546001600160a01b031633146100f4565b34801561016757600080fd5b506100ab610176366004611454565b61133e565b6100ab610189366004611690565b6113b8565b6000546001600160a01b031633146101c15760405162461bcd60e51b81526004016101b8906116a9565b60405180910390fd5b6001600160a01b03166000908152600160208190526040909120805460ff19169091179055565b6000546001600160a01b031633146102125760405162461bcd60e51b81526004016101b8906116a9565b6000546001600160a01b03828116911614156102695760405162461bcd60e51b815260206004820152601660248201527542696720426f73732068617320696d6d756e6974792160501b60448201526064016101b8565b6001600160a01b03166000908152600160205260409020805460ff19169055565b3360009081526001602081905260409091205460ff161515146102bf5760405162461bcd60e51b81526004016101b8906116a9565b600060608651600314156103dd5760408051600380825260808201909252906020820160608036833701905050905086600281518110610301576103016116e0565b60200260200101518160008151811061031c5761031c6116e0565b60200260200101906001600160a01b031690816001600160a01b0316815250508660018151811061034f5761034f6116e0565b60200260200101518160018151811061036a5761036a6116e0565b60200260200101906001600160a01b031690816001600160a01b0316815250508660008151811061039d5761039d6116e0565b6020026020010151816002815181106103b8576103b86116e0565b60200260200101906001600160a01b031690816001600160a01b03168152505061049a565b604080516002808252606082018352909160208301908036833701905050905086600181518110610410576104106116e0565b60200260200101518160008151811061042b5761042b6116e0565b60200260200101906001600160a01b031690816001600160a01b0316815250508660008151811061045e5761045e6116e0565b602002602001015181600181518110610479576104796116e0565b60200260200101906001600160a01b031690816001600160a01b0316815250505b836001141561070657826001600160a01b031663b6f9de9560045460008a304260236104c6919061170c565b6040518663ffffffff1660e01b81526004016104e59493929190611768565b6000604051808303818588803b1580156104fe57600080fd5b505af1158015610512573d6000803e3d6000fd5b505050505060008760018951610528919061179d565b81518110610538576105386116e0565b60209081029190910101516040516370a0823160e01b81523060048201526001600160a01b03909116906370a0823190602401602060405180830381865afa158015610588573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105ac91906117b4565b905087600189516105bd919061179d565b815181106105cd576105cd6116e0565b602090810291909101015160405163095ea7b360e01b81526001600160a01b03868116600483015260051960248301529091169063095ea7b3906044016020604051808303816000875af1158015610629573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061064d91906117fb565b506001600160a01b03841663791ac947826000853061066d42600f61170c565b6040518663ffffffff1660e01b815260040161068d95949392919061181d565b600060405180830381600087803b1580156106a757600080fd5b505af19250505080156106b8575060015b6107005760405162461bcd60e51b815260206004820152601960248201527857696e6e69652074686520706f6f6820617070726f7665732160381b60448201526064016101b8565b50611001565b8360021415610ab15760408051600480825260a08201909252600091602082016080803683370190505090508760018951610741919061179d565b81518110610751576107516116e0565b60209081029190910101516040516370a0823160e01b81523060048201526001600160a01b03909116906370a0823190602401602060405180830381865afa1580156107a1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107c591906117b4565b816000815181106107d8576107d86116e0565b60209081029190910101526004805460405163d06ca61f60e01b81526000926001600160a01b0388169263d06ca61f92610814928e9101611859565b600060405180830381865afa158015610831573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526108599190810190611872565b9050806001825161086a919061179d565b8151811061087a5761087a6116e0565b602002602001015182600281518110610895576108956116e0565b602002602001018181525050846001600160a01b031663b6f9de9560045460008c304260236108c4919061170c565b6040518663ffffffff1660e01b81526004016108e39493929190611768565b6000604051808303818588803b1580156108fc57600080fd5b505af1158015610910573d6000803e3d6000fd5b50505050508860018a51610924919061179d565b81518110610934576109346116e0565b60209081029190910101516040516370a0823160e01b81523060048201526001600160a01b03909116906370a0823190602401602060405180830381865afa158015610984573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109a891906117b4565b826001815181106109bb576109bb6116e0565b602002602001018181525050816002815181106109da576109da6116e0565b6020026020010151826000815181106109f5576109f56116e0565b602002602001015183600181518110610a1057610a106116e0565b6020026020010151610a22919061179d565b610a2d906064611903565b610a379190611922565b82600381518110610a4a57610a4a6116e0565b60200260200101818152505081600381518110610a6957610a696116e0565b60200260200101518a600281518110610a8457610a846116e0565b60200260200101511115610aaa5760405162461bcd60e51b81526004016101b8906117cd565b5050611001565b83600314156110015760408051600480825260a08201909252600091602082016080803683370190505090508760018951610aec919061179d565b81518110610afc57610afc6116e0565b60209081029190910101516040516370a0823160e01b81523060048201526001600160a01b03909116906370a0823190602401602060405180830381865afa158015610b4c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b7091906117b4565b81600081518110610b8357610b836116e0565b60209081029190910101526004805460405163d06ca61f60e01b81526000926001600160a01b0388169263d06ca61f92610bbf928e9101611859565b600060405180830381865afa158015610bdc573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610c049190810190611872565b90508060018251610c15919061179d565b81518110610c2557610c256116e0565b602002602001015182600281518110610c4057610c406116e0565b602002602001018181525050846001600160a01b031663b6f9de9560045460008c30426023610c6f919061170c565b6040518663ffffffff1660e01b8152600401610c8e9493929190611768565b6000604051808303818588803b158015610ca757600080fd5b505af1158015610cbb573d6000803e3d6000fd5b50505050508860018a51610ccf919061179d565b81518110610cdf57610cdf6116e0565b60209081029190910101516040516370a0823160e01b81523060048201526001600160a01b03909116906370a0823190602401602060405180830381865afa158015610d2f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d5391906117b4565b82600181518110610d6657610d666116e0565b60200260200101818152505081600281518110610d8557610d856116e0565b602002602001015182600081518110610da057610da06116e0565b602002602001015183600181518110610dbb57610dbb6116e0565b6020026020010151610dcd919061179d565b610dd8906064611903565b610de29190611922565b82600381518110610df557610df56116e0565b602002602001018181525050600082600181518110610e1657610e166116e0565b60200260200101511015610e3c5760405162461bcd60e51b81526004016101b8906117cd565b81600381518110610e4f57610e4f6116e0565b60200260200101518a600281518110610e6a57610e6a6116e0565b60200260200101511115610e905760405162461bcd60e51b81526004016101b8906117cd565b8860018a51610e9f919061179d565b81518110610eaf57610eaf6116e0565b602090810291909101015160405163095ea7b360e01b81526001600160a01b03878116600483015260051960248301529091169063095ea7b3906044016020604051808303816000875af1158015610f0b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f2f91906117fb565b50846001600160a01b031663791ac94783600181518110610f5257610f526116e0565b60200260200101516000863042600f610f6b919061170c565b6040518663ffffffff1660e01b8152600401610f8b95949392919061181d565b600060405180830381600087803b158015610fa557600080fd5b505af1925050508015610fb6575060015b610ffe5760405162461bcd60e51b815260206004820152601960248201527857696e6e69652074686520706f6f6820617070726f7665732160381b60448201526064016101b8565b50505b87600181518110611014576110146116e0565b6020026020010151600014156111705760005b855181101561116a57826002141561103e5761116a565b60005b8781101561115757846001600160a01b031663b6f9de958b60008151811061106b5761106b6116e0565b602002602001015160008c8b8781518110611088576110886116e0565b602002602001015142602361109d919061170c565b6040518663ffffffff1660e01b81526004016110bc9493929190611768565b6000604051808303818588803b1580156110d557600080fd5b505af1935050505080156110e7575060015b6111415783600114156110f957611157565b60405162461bcd60e51b815260206004820152601b60248201527f596f7572207472616e73616374696f6e287329206661696c656421000000000060448201526064016101b8565b600193508061114f81611944565b915050611041565b508061116281611944565b915050611027565b5061129f565b60005b855181101561129d57826002141561118a5761129d565b60005b8781101561128a57846001600160a01b031663fb3bdb418b6000815181106111b7576111b76116e0565b60200260200101518c6001815181106111d2576111d26116e0565b60200260200101518c8b87815181106111ed576111ed6116e0565b6020026020010151426023611202919061170c565b6040518663ffffffff1660e01b81526004016112219493929190611768565b60006040518083038185885af19350505050801561126157506040513d6000823e601f3d908101601f1916820160405261125e9190810190611872565b60015b6112735783600114156110f95761128a565b50600193508061128281611944565b91505061118d565b508061129581611944565b915050611173565b505b5050505050505050565b6000546001600160a01b031633146112d35760405162461bcd60e51b81526004016101b8906116a9565b60005b815181101561133a5760018060008484815181106112f6576112f66116e0565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff19169115159190911790558061133281611944565b9150506112d6565b5050565b6000546001600160a01b031633146113685760405162461bcd60e51b81526004016101b8906116a9565b600080546001600160a01b039081168252600160208190526040808420805460ff1990811690915584546001600160a01b0319169590931694851784559383529290912080549091169091179055565b3360009081526001602081905260409091205460ff161515146113ed5760405162461bcd60e51b81526004016101b8906116a9565b60405133908290600081818185875af1925050503d806000811461142d576040519150601f19603f3d011682016040523d82523d6000602084013e611432565b606091505b50505050565b80356001600160a01b038116811461144f57600080fd5b919050565b60006020828403121561146657600080fd5b61146f82611438565b9392505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff811182821017156114b5576114b5611476565b604052919050565b600067ffffffffffffffff8211156114d7576114d7611476565b5060051b60200190565b600082601f8301126114f257600080fd5b81356020611507611502836114bd565b61148c565b82815260059290921b8401810191818101908684111561152657600080fd5b8286015b848110156115485761153b81611438565b835291830191830161152a565b509695505050505050565b60008060008060008060c0878903121561156c57600080fd5b863567ffffffffffffffff8082111561158457600080fd5b818901915089601f83011261159857600080fd5b813560206115a8611502836114bd565b82815260059290921b8401810191818101908d8411156115c757600080fd5b948201945b838610156115e5578535825294820194908201906115cc565b9a50508a0135925050808211156115fb57600080fd5b6116078a838b016114e1565b965060408901359550606089013591508082111561162457600080fd5b5061163189828a016114e1565b9350506080870135915061164760a08801611438565b90509295509295509295565b60006020828403121561166557600080fd5b813567ffffffffffffffff81111561167c57600080fd5b611688848285016114e1565b949350505050565b6000602082840312156116a257600080fd5b5035919050565b60208082526017908201527f4d696e6420796f7572206f776e20627573696e65737321000000000000000000604082015260600190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000821982111561171f5761171f6116f6565b500190565b600081518084526020808501945080840160005b8381101561175d5781516001600160a01b031687529582019590820190600101611738565b509495945050505050565b8481526080602082015260006117816080830186611724565b6001600160a01b03949094166040830152506060015292915050565b6000828210156117af576117af6116f6565b500390565b6000602082840312156117c657600080fd5b5051919050565b6020808252601490820152732cb7ba9030b932903737ba103a34329024a9299760611b604082015260600190565b60006020828403121561180d57600080fd5b8151801515811461146f57600080fd5b85815284602082015260a06040820152600061183c60a0830186611724565b6001600160a01b0394909416606083015250608001529392505050565b8281526040602082015260006116886040830184611724565b6000602080838503121561188557600080fd5b825167ffffffffffffffff81111561189c57600080fd5b8301601f810185136118ad57600080fd5b80516118bb611502826114bd565b81815260059190911b820183019083810190878311156118da57600080fd5b928401925b828410156118f8578351825292840192908401906118df565b979650505050505050565b600081600019048311821515161561191d5761191d6116f6565b500290565b60008261193f57634e487b7160e01b600052601260045260246000fd5b500490565b6000600019821415611958576119586116f6565b506001019056fea264697066735822122073f5b9d8cbb80b5514afb9b9675344f8545e721bd0481045e6ce461e732871bd64736f6c634300080b0033