0x608060405234801561000f575f80fd5b50600436106100f0575f3560e01c806342966c6811610093578063a457c2d711610063578063a457c2d714610243578063a9059cbb14610256578063dd62ed3e14610269578063f940e385146102a1575f80fd5b806342966c68146101ba57806370a08231146101cd5780638da5cb5b146101f557806395d89b4114610220575f80fd5b80631e89d545116100ce5780631e89d5451461016557806323b872dd1461017a578063313ce5671461018d57806339509351146101a7575f80fd5b806306fdde03146100f4578063095ea7b31461013057806318160ddd14610153575b5f80fd5b61011a604051806040016040528060078152602001663bb7b7b7b732b760c91b81525081565b6040516101279190610881565b60405180910390f35b61014361013e3660046108e7565b6102b4565b6040519015158152602001610127565b6003545b604051908152602001610127565b6101786101733660046109df565b61032c565b005b610143610188366004610a99565b61038b565b610195601281565b60405160ff9091168152602001610127565b6101436101b53660046108e7565b6104e0565b6101786101c8366004610ad2565b610576565b6101576101db366004610ae9565b6001600160a01b03165f9081526020819052604090205490565b600254610208906001600160a01b031681565b6040516001600160a01b039091168152602001610127565b61011a60405180604001604052806004815260200163776f6f6f60e01b81525081565b6101436102513660046108e7565b61060c565b6101436102643660046108e7565b61064c565b610157610277366004610b02565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b6101786102af366004610b02565b610709565b5f6001600160a01b0383166102c7575f80fd5b335f8181526001602090815260408083206001600160a01b03881680855290835292819020869055518581529192917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a35060015b92915050565b5f5b82518110156103865761037383828151811061034c5761034c610b33565b602002602001015183838151811061036657610366610b33565b602002602001015161064c565b508061037e81610b5b565b91505061032e565b505050565b6001600160a01b0383165f908152602081905260408120548211156103ae575f80fd5b6001600160a01b0384165f9081526001602090815260408083203384529091529020548211156103dc575f80fd5b6001600160a01b0383166103ee575f80fd5b6001600160a01b0384165f908152602081905260409020546104109083610849565b6001600160a01b038086165f90815260208190526040808220939093559085168152205461043e9083610867565b6001600160a01b038085165f908152602081815260408083209490945591871681526001825282812033825290915220546104799083610849565b6001600160a01b038581165f81815260016020908152604080832033845282529182902094909455518581529186169290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35060019392505050565b5f6001600160a01b0383166104f3575f80fd5b335f9081526001602090815260408083206001600160a01b03871684529091529020546105209083610867565b335f8181526001602090815260408083206001600160a01b038916808552908352928190208590555193845290927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910161031a565b805f03610581575f80fd5b335f9081526020819052604090205481111561059b575f80fd5b6003546105a89082610849565b600355335f908152602081905260409020546105c49082610849565b335f8181526020818152604080832094909455925184815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a350565b5f6001600160a01b03831661061f575f80fd5b335f9081526001602090815260408083206001600160a01b03871684529091529020546105209083610849565b335f90815260208190526040812054821115610666575f80fd5b6001600160a01b038316610678575f80fd5b335f908152602081905260409020546106919083610849565b335f90815260208190526040808220929092556001600160a01b038516815220546106bc9083610867565b6001600160a01b0384165f81815260208181526040918290209390935551848152909133917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910161031a565b6002546001600160a01b031633146107675760405162461bcd60e51b815260206004820152601760248201527f63616c6c6572206973206e6f7420746865206f776e6572000000000000000000604482015260640160405180910390fd5b6040516370a0823160e01b81523060048201525f906001600160a01b038316906370a0823190602401602060405180830381865afa1580156107ab573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107cf9190610b73565b60405163a9059cbb60e01b81526001600160a01b038581166004830152602482018390529192509083169063a9059cbb906044016020604051808303815f875af115801561081f573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108439190610b8a565b50505050565b5f82821115610856575f80fd5b6108608284610ba9565b9392505050565b5f806108738385610bbc565b905083811015610860575f80fd5b5f6020808352835180828501525f5b818110156108ac57858101830151858201604001528201610890565b505f604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b03811681146108e2575f80fd5b919050565b5f80604083850312156108f8575f80fd5b610901836108cc565b946020939093013593505050565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f1916810167ffffffffffffffff8111828210171561094c5761094c61090f565b604052919050565b5f67ffffffffffffffff82111561096d5761096d61090f565b5060051b60200190565b5f82601f830112610986575f80fd5b8135602061099b61099683610954565b610923565b82815260059290921b840181019181810190868411156109b9575f80fd5b8286015b848110156109d457803583529183019183016109bd565b509695505050505050565b5f80604083850312156109f0575f80fd5b823567ffffffffffffffff80821115610a07575f80fd5b818501915085601f830112610a1a575f80fd5b81356020610a2a61099683610954565b82815260059290921b84018101918181019089841115610a48575f80fd5b948201945b83861015610a6d57610a5e866108cc565b82529482019490820190610a4d565b96505086013592505080821115610a82575f80fd5b50610a8f85828601610977565b9150509250929050565b5f805f60608486031215610aab575f80fd5b610ab4846108cc565b9250610ac2602085016108cc565b9150604084013590509250925092565b5f60208284031215610ae2575f80fd5b5035919050565b5f60208284031215610af9575f80fd5b610860826108cc565b5f8060408385031215610b13575f80fd5b610b1c836108cc565b9150610b2a602084016108cc565b90509250929050565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b5f60018201610b6c57610b6c610b47565b5060010190565b5f60208284031215610b83575f80fd5b5051919050565b5f60208284031215610b9a575f80fd5b81518015158114610860575f80fd5b8181038181111561032657610326610b47565b8082018082111561032657610326610b4756fea2646970667358221220e7eb17b6d43bdc2d1d54c7bd833dbce5ab45c7c4471d7f05003afb7e4699c2e964736f6c63430008140033
0x60806040526b033b2e3c9fd0803ce800000060035534801561001f575f80fd5b50600280546001600160a01b031916339081179091556003545f828152602081815260408083208490555192835290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3610c05806100875f395ff3fe608060405234801561000f575f80fd5b50600436106100f0575f3560e01c806342966c6811610093578063a457c2d711610063578063a457c2d714610243578063a9059cbb14610256578063dd62ed3e14610269578063f940e385146102a1575f80fd5b806342966c68146101ba57806370a08231146101cd5780638da5cb5b146101f557806395d89b4114610220575f80fd5b80631e89d545116100ce5780631e89d5451461016557806323b872dd1461017a578063313ce5671461018d57806339509351146101a7575f80fd5b806306fdde03146100f4578063095ea7b31461013057806318160ddd14610153575b5f80fd5b61011a604051806040016040528060078152602001663bb7b7b7b732b760c91b81525081565b6040516101279190610881565b60405180910390f35b61014361013e3660046108e7565b6102b4565b6040519015158152602001610127565b6003545b604051908152602001610127565b6101786101733660046109df565b61032c565b005b610143610188366004610a99565b61038b565b610195601281565b60405160ff9091168152602001610127565b6101436101b53660046108e7565b6104e0565b6101786101c8366004610ad2565b610576565b6101576101db366004610ae9565b6001600160a01b03165f9081526020819052604090205490565b600254610208906001600160a01b031681565b6040516001600160a01b039091168152602001610127565b61011a60405180604001604052806004815260200163776f6f6f60e01b81525081565b6101436102513660046108e7565b61060c565b6101436102643660046108e7565b61064c565b610157610277366004610b02565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b6101786102af366004610b02565b610709565b5f6001600160a01b0383166102c7575f80fd5b335f8181526001602090815260408083206001600160a01b03881680855290835292819020869055518581529192917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a35060015b92915050565b5f5b82518110156103865761037383828151811061034c5761034c610b33565b602002602001015183838151811061036657610366610b33565b602002602001015161064c565b508061037e81610b5b565b91505061032e565b505050565b6001600160a01b0383165f908152602081905260408120548211156103ae575f80fd5b6001600160a01b0384165f9081526001602090815260408083203384529091529020548211156103dc575f80fd5b6001600160a01b0383166103ee575f80fd5b6001600160a01b0384165f908152602081905260409020546104109083610849565b6001600160a01b038086165f90815260208190526040808220939093559085168152205461043e9083610867565b6001600160a01b038085165f908152602081815260408083209490945591871681526001825282812033825290915220546104799083610849565b6001600160a01b038581165f81815260016020908152604080832033845282529182902094909455518581529186169290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35060019392505050565b5f6001600160a01b0383166104f3575f80fd5b335f9081526001602090815260408083206001600160a01b03871684529091529020546105209083610867565b335f8181526001602090815260408083206001600160a01b038916808552908352928190208590555193845290927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910161031a565b805f03610581575f80fd5b335f9081526020819052604090205481111561059b575f80fd5b6003546105a89082610849565b600355335f908152602081905260409020546105c49082610849565b335f8181526020818152604080832094909455925184815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a350565b5f6001600160a01b03831661061f575f80fd5b335f9081526001602090815260408083206001600160a01b03871684529091529020546105209083610849565b335f90815260208190526040812054821115610666575f80fd5b6001600160a01b038316610678575f80fd5b335f908152602081905260409020546106919083610849565b335f90815260208190526040808220929092556001600160a01b038516815220546106bc9083610867565b6001600160a01b0384165f81815260208181526040918290209390935551848152909133917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910161031a565b6002546001600160a01b031633146107675760405162461bcd60e51b815260206004820152601760248201527f63616c6c6572206973206e6f7420746865206f776e6572000000000000000000604482015260640160405180910390fd5b6040516370a0823160e01b81523060048201525f906001600160a01b038316906370a0823190602401602060405180830381865afa1580156107ab573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107cf9190610b73565b60405163a9059cbb60e01b81526001600160a01b038581166004830152602482018390529192509083169063a9059cbb906044016020604051808303815f875af115801561081f573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108439190610b8a565b50505050565b5f82821115610856575f80fd5b6108608284610ba9565b9392505050565b5f806108738385610bbc565b905083811015610860575f80fd5b5f6020808352835180828501525f5b818110156108ac57858101830151858201604001528201610890565b505f604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b03811681146108e2575f80fd5b919050565b5f80604083850312156108f8575f80fd5b610901836108cc565b946020939093013593505050565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f1916810167ffffffffffffffff8111828210171561094c5761094c61090f565b604052919050565b5f67ffffffffffffffff82111561096d5761096d61090f565b5060051b60200190565b5f82601f830112610986575f80fd5b8135602061099b61099683610954565b610923565b82815260059290921b840181019181810190868411156109b9575f80fd5b8286015b848110156109d457803583529183019183016109bd565b509695505050505050565b5f80604083850312156109f0575f80fd5b823567ffffffffffffffff80821115610a07575f80fd5b818501915085601f830112610a1a575f80fd5b81356020610a2a61099683610954565b82815260059290921b84018101918181019089841115610a48575f80fd5b948201945b83861015610a6d57610a5e866108cc565b82529482019490820190610a4d565b96505086013592505080821115610a82575f80fd5b50610a8f85828601610977565b9150509250929050565b5f805f60608486031215610aab575f80fd5b610ab4846108cc565b9250610ac2602085016108cc565b9150604084013590509250925092565b5f60208284031215610ae2575f80fd5b5035919050565b5f60208284031215610af9575f80fd5b610860826108cc565b5f8060408385031215610b13575f80fd5b610b1c836108cc565b9150610b2a602084016108cc565b90509250929050565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b5f60018201610b6c57610b6c610b47565b5060010190565b5f60208284031215610b83575f80fd5b5051919050565b5f60208284031215610b9a575f80fd5b81518015158114610860575f80fd5b8181038181111561032657610326610b47565b8082018082111561032657610326610b4756fea2646970667358221220e7eb17b6d43bdc2d1d54c7bd833dbce5ab45c7c4471d7f05003afb7e4699c2e964736f6c63430008140033