60806040526c0c9f2c9cd04674edea4000000060025534801561002157600080fd5b506002543360008181526020818152604080832085905551938452919290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3600380546001600160a01b03191633179055610d188061008c6000396000f3fe608060405234801561001057600080fd5b50600436106100f55760003560e01c806342966c6811610097578063a457c2d711610066578063a457c2d71461024e578063a9059cbb14610261578063cae9ca5114610274578063dd62ed3e1461028757600080fd5b806342966c68146101c557806370a08231146101d85780638da5cb5b1461020157806395d89b411461022c57600080fd5b80631e89d545116100d35780631e89d5451461017057806323b872dd14610185578063313ce5671461019857806339509351146101b257600080fd5b806306fdde03146100fa578063095ea7b31461013b57806318160ddd1461015e575b600080fd5b6101256040518060400160405280600c81526020016b42616c6c204973204c69666560a01b81525081565b60405161013291906108cf565b60405180910390f35b61014e610149366004610939565b6102c0565b6040519015158152602001610132565b6002545b604051908152602001610132565b61018361017e366004610a39565b61033b565b005b61014e610193366004610af9565b61039b565b6101a0601281565b60405160ff9091168152602001610132565b61014e6101c0366004610939565b6104f9565b6101836101d3366004610b35565b610593565b6101626101e6366004610b4e565b6001600160a01b031660009081526020819052604090205490565b600354610214906001600160a01b031681565b6040516001600160a01b039091168152602001610132565b6101256040518060400160405280600381526020016210925360ea1b81525081565b61014e61025c366004610939565b61062e565b61014e61026f366004610939565b610671565b61014e610282366004610b69565b610734565b610162610295366004610bf0565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b60006001600160a01b0383166102d557600080fd5b3360008181526001602090815260408083206001600160a01b03881680855290835292819020869055518581529192917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a35060015b92915050565b60005b82518110156103965761038383828151811061035c5761035c610c23565b602002602001015183838151811061037657610376610c23565b6020026020010151610671565b508061038e81610c4f565b91505061033e565b505050565b6001600160a01b0383166000908152602081905260408120548211156103c057600080fd5b6001600160a01b03841660009081526001602090815260408083203384529091529020548211156103f057600080fd5b6001600160a01b03831661040357600080fd5b6001600160a01b0384166000908152602081905260409020546104269083610808565b6001600160a01b0380861660009081526020819052604080822093909355908516815220546104559083610870565b6001600160a01b038085166000908152602081815260408083209490945591871681526001825282812033825290915220546104919083610808565b6001600160a01b03858116600081815260016020908152604080832033845282529182902094909455518581529186169290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35060019392505050565b60006001600160a01b03831661050e57600080fd5b3360009081526001602090815260408083206001600160a01b038716845290915290205461053c9083610870565b3360008181526001602090815260408083206001600160a01b038916808552908352928190208590555193845290927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259101610329565b806000036105a057600080fd5b336000908152602081905260409020548111156105bc57600080fd5b6105c860025482610808565b600255336000908152602081905260409020546105e59082610808565b3360008181526020818152604080832094909455925184815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a350565b60006001600160a01b03831661064357600080fd5b3360009081526001602090815260408083206001600160a01b038716845290915290205461053c9083610808565b3360009081526020819052604081205482111561068d57600080fd5b6001600160a01b0383166106a057600080fd5b336000908152602081905260409020546106ba9083610808565b33600090815260208190526040808220929092556001600160a01b038516815220546106e69083610870565b6001600160a01b038416600081815260208181526040918290209390935551848152909133917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9101610329565b3360008181526001602090815260408083206001600160a01b038916808552925280832087905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259061078f9088815260200190565b60405180910390a3604051638f4ffcb160e01b81526001600160a01b03861690638f4ffcb1906107cb9033908890309089908990600401610c68565b600060405180830381600087803b1580156107e557600080fd5b505af11580156107f9573d6000803e3d6000fd5b50600198975050505050505050565b60008282111561085f5760405162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f77000060448201526064015b60405180910390fd5b6108698284610cbc565b9392505050565b60008061087d8385610ccf565b9050838110156108695760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610856565b600060208083528351808285015260005b818110156108fc578581018301518582016040015282016108e0565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b038116811461093457600080fd5b919050565b6000806040838503121561094c57600080fd5b6109558361091d565b946020939093013593505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff811182821017156109a2576109a2610963565b604052919050565b600067ffffffffffffffff8211156109c4576109c4610963565b5060051b60200190565b600082601f8301126109df57600080fd5b813560206109f46109ef836109aa565b610979565b82815260059290921b84018101918181019086841115610a1357600080fd5b8286015b84811015610a2e5780358352918301918301610a17565b509695505050505050565b60008060408385031215610a4c57600080fd5b823567ffffffffffffffff80821115610a6457600080fd5b818501915085601f830112610a7857600080fd5b81356020610a886109ef836109aa565b82815260059290921b84018101918181019089841115610aa757600080fd5b948201945b83861015610acc57610abd8661091d565b82529482019490820190610aac565b96505086013592505080821115610ae257600080fd5b50610aef858286016109ce565b9150509250929050565b600080600060608486031215610b0e57600080fd5b610b178461091d565b9250610b256020850161091d565b9150604084013590509250925092565b600060208284031215610b4757600080fd5b5035919050565b600060208284031215610b6057600080fd5b6108698261091d565b60008060008060608587031215610b7f57600080fd5b610b888561091d565b935060208501359250604085013567ffffffffffffffff80821115610bac57600080fd5b818701915087601f830112610bc057600080fd5b813581811115610bcf57600080fd5b886020828501011115610be157600080fd5b95989497505060200194505050565b60008060408385031215610c0357600080fd5b610c0c8361091d565b9150610c1a6020840161091d565b90509250929050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600060018201610c6157610c61610c39565b5060010190565b6001600160a01b038681168252602082018690528416604082015260806060820181905281018290526000828460a0840137600060a0848401015260a0601f19601f85011683010190509695505050505050565b8181038181111561033557610335610c39565b8082018082111561033557610335610c3956fea264697066735822122039c1239cea1f99894388cb96103bd0c3539da91bc00dc56b1628f7b061481e5564736f6c63430008110033