60806040523480156200001157600080fd5b50604080518082018252601381527f446578746f6b656e20476f7665726e616e6365000000000000000000000000006020808301918252835180850190945260048452634445584760e01b908401528151919291601291620000779160039190620000e4565b5081516200008d906004906020850190620000e4565b5060058054336101008102610100600160a81b031960ff90951660ff199093169290921793909316179055600680546001600160a81b0319169055600980546001600160a01b031916909117905550620001899050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200012757805160ff191683800117855562000157565b8280016001018555821562000157579182015b82811115620001575782518255916020019190600101906200013a565b506200016592915062000169565b5090565b6200018691905b8082111562000165576000815560010162000170565b90565b61166480620001996000396000f3fe608060405234801561001057600080fd5b50600436106101cf5760003560e01c806379ba509711610104578063a9059cbb116100a2578063dd62ed3e11610071578063dd62ed3e14610543578063f26c159f14610571578063f2fde38b14610597578063f46eccc4146105bd576101cf565b8063a9059cbb146104c3578063ab033ea9146104ef578063b414d4b614610515578063d4ee1d901461053b576101cf565b806395d89b41116100de57806395d89b411461043d578063983b2d56146104455780639dc29fac1461046b578063a457c2d714610497576101cf565b806379ba5097146104255780638456cb591461042d5780638da5cb5b14610435576101cf565b806339509351116101715780635aa6e6751161014b5780635aa6e675146103ad5780635c975abb146103d157806370a08231146103d9578063788649ea146103ff576101cf565b8063395093511461034b5780633f4ba83a1461037757806340c10f1914610381576101cf565b806323b872dd116101ad57806323b872dd146102ab5780632f54bf6e146102e15780633092afd514610307578063313ce5671461032d576101cf565b806306fdde03146101d4578063095ea7b31461025157806318160ddd14610291575b600080fd5b6101dc6105e3565b6040805160208082528351818301528351919283929083019185019080838360005b838110156102165781810151838201526020016101fe565b50505050905090810190601f1680156102435780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61027d6004803603604081101561026757600080fd5b506001600160a01b038135169060200135610679565b604080519115158252519081900360200190f35b610299610696565b60408051918252519081900360200190f35b61027d600480360360608110156102c157600080fd5b506001600160a01b0381358116916020810135909116906040013561069c565b61027d600480360360208110156102f757600080fd5b50356001600160a01b03166106ef565b61027d6004803603602081101561031d57600080fd5b50356001600160a01b031661071e565b610335610793565b6040805160ff9092168252519081900360200190f35b61027d6004803603604081101561036157600080fd5b506001600160a01b03813516906020013561079c565b61037f6107f5565b005b61027d6004803603604081101561039757600080fd5b506001600160a01b038135169060200135610869565b6103b56108c1565b604080516001600160a01b039092168252519081900360200190f35b61027d6108d0565b610299600480360360208110156103ef57600080fd5b50356001600160a01b03166108e0565b61027d6004803603602081101561041557600080fd5b50356001600160a01b03166108fb565b61037f6109d5565b61037f610a6d565b6103b5610ae8565b6101dc610afc565b61027d6004803603602081101561045b57600080fd5b50356001600160a01b0316610b5d565b61027d6004803603604081101561048157600080fd5b506001600160a01b038135169060200135610bd6565b61027d600480360360408110156104ad57600080fd5b506001600160a01b038135169060200135610c30565b61027d600480360360408110156104d957600080fd5b506001600160a01b038135169060200135610c9e565b61037f6004803603602081101561050557600080fd5b50356001600160a01b0316610ce7565b61027d6004803603602081101561052b57600080fd5b50356001600160a01b0316610d56565b6103b5610d6b565b6102996004803603604081101561055957600080fd5b506001600160a01b0381358116916020013516610d7a565b61027d6004803603602081101561058757600080fd5b50356001600160a01b0316610da5565b61037f600480360360208110156105ad57600080fd5b50356001600160a01b0316610e7b565b61027d600480360360208110156105d357600080fd5b50356001600160a01b0316610ecc565b60038054604080516020601f600260001961010060018816150201909516949094049384018190048102820181019092528281526060939092909183018282801561066f5780601f106106445761010080835404028352916020019161066f565b820191906000526020600020905b81548152906001019060200180831161065257829003601f168201915b5050505050905090565b600061068d610686610ee1565b8484610ee5565b50600192915050565b60025490565b6001600160a01b038316600090815260086020526040812054849060ff16156106c457600080fd5b600654600160a01b900460ff16156106db57600080fd5b6106e6858585610fd1565b95945050505050565b6005546000906001600160a01b0383811661010090920416141561071557506001610719565b5060005b919050565b6009546000906001600160a01b0316331461076e576040805162461bcd60e51b815260206004820152600b60248201526a21676f7665726e616e636560a81b604482015290519081900360640190fd5b506001600160a01b03166000908152600760205260409020805460ff19169055600190565b60055460ff1690565b600061068d6107a9610ee1565b846107f085600160006107ba610ee1565b6001600160a01b03908116825260208083019390935260409182016000908120918c16815292529020549063ffffffff61105916565b610ee5565b60055461010090046001600160a01b0316331461081157600080fd5b600654600160a01b900460ff1661082757600080fd5b6006805460ff60a01b191690556040805133815290517f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa9181900360200190a1565b3360009081526007602052604081205460ff166108b7576040805162461bcd60e51b815260206004820152600760248201526610b6b4b73a32b960c91b604482015290519081900360640190fd5b61068d83836110ba565b6009546001600160a01b031681565b600654600160a01b900460ff1690565b6001600160a01b031660009081526020819052604090205490565b60055460009061010090046001600160a01b0316331461091a57600080fd5b6001600160a01b03821660009081526008602052604090205460ff16610987576040805162461bcd60e51b815260206004820152601960248201527f45524332303a206163636f756e74206e6f742066726f7a656e00000000000000604482015290519081900360640190fd5b6001600160a01b038216600081815260086020526040808220805460ff19169055517fca5069937e68fd197927055037f59d7c90bf75ac104e6e375539ef480c3ad6ee9190a2506001919050565b336109df57600080fd5b6006546001600160a01b031633146109f657600080fd5b6006546005546040516001600160a01b0392831692610100909204909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a36006805460058054610100600160a81b0319166101006001600160a01b038416021790556001600160a01b0319169055565b60055461010090046001600160a01b03163314610a8957600080fd5b600654600160a01b900460ff1615610aa057600080fd5b6006805460ff60a01b1916600160a01b1790556040805133815290517f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2589181900360200190a1565b60055461010090046001600160a01b031681565b60048054604080516020601f600260001961010060018816150201909516949094049384018190048102820181019092528281526060939092909183018282801561066f5780601f106106445761010080835404028352916020019161066f565b6009546000906001600160a01b03163314610bad576040805162461bcd60e51b815260206004820152600b60248201526a21676f7665726e616e636560a81b604482015290519081900360640190fd5b506001600160a01b03166000908152600760205260409020805460ff1916600190811790915590565b6009546000906001600160a01b03163314610c26576040805162461bcd60e51b815260206004820152600b60248201526a21676f7665726e616e636560a81b604482015290519081900360640190fd5b61068d83836111aa565b600061068d610c3d610ee1565b846107f08560405180606001604052806025815260200161160b6025913960016000610c67610ee1565b6001600160a01b03908116825260208083019390935260409182016000908120918d1681529252902054919063ffffffff6112a616565b3360008181526008602052604081205490919060ff1615610cbe57600080fd5b600654600160a01b900460ff1615610cd557600080fd5b610cdf848461133d565b949350505050565b6009546001600160a01b03163314610d34576040805162461bcd60e51b815260206004820152600b60248201526a21676f7665726e616e636560a81b604482015290519081900360640190fd5b600980546001600160a01b0319166001600160a01b0392909216919091179055565b60086020526000908152604090205460ff1681565b6006546001600160a01b031681565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b60055460009061010090046001600160a01b03163314610dc457600080fd5b6001600160a01b03821660009081526008602052604090205460ff1615610e2a576040805162461bcd60e51b815260206004820152601560248201527422a92199181d1030b1b1b7bab73a10333937bd32b760591b604482015290519081900360640190fd5b6001600160a01b038216600081815260086020526040808220805460ff19166001179055517faf85b60d26151edd11443b704d424da6c43d0468f2235ebae3d1904dbc3230499190a2506001919050565b60055461010090046001600160a01b03163314610e9757600080fd5b6001600160a01b038116610eaa57600080fd5b600680546001600160a01b0319166001600160a01b0392909216919091179055565b60076020526000908152604090205460ff1681565b3390565b6001600160a01b038316610f2a5760405162461bcd60e51b81526004018080602001828103825260248152602001806115e76024913960400191505060405180910390fd5b6001600160a01b038216610f6f5760405162461bcd60e51b81526004018080602001828103825260228152602001806115316022913960400191505060405180910390fd5b6001600160a01b03808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6000610fde84848461134d565b61104f84610fea610ee1565b6107f085604051806060016040528060288152602001611579602891396001600160a01b038a16600090815260016020526040812090611028610ee1565b6001600160a01b03168152602081019190915260400160002054919063ffffffff6112a616565b5060019392505050565b6000828201838110156110b3576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b6001600160a01b038216611115576040805162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b600254611128908263ffffffff61105916565b6002556001600160a01b038216600090815260208190526040902054611154908263ffffffff61105916565b6001600160a01b0383166000818152602081815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b6001600160a01b0382166111ef5760405162461bcd60e51b81526004018080602001828103825260218152602001806115a16021913960400191505060405180910390fd5b6112328160405180606001604052806022815260200161150f602291396001600160a01b038516600090815260208190526040902054919063ffffffff6112a616565b6001600160a01b03831660009081526020819052604090205560025461125e908263ffffffff6114a916565b6002556040805182815290516000916001600160a01b038516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a35050565b600081848411156113355760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156112fa5781810151838201526020016112e2565b50505050905090810190601f1680156113275780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b600061068d61134a610ee1565b84845b6001600160a01b0383166113925760405162461bcd60e51b81526004018080602001828103825260258152602001806115c26025913960400191505060405180910390fd5b6001600160a01b0382166113d75760405162461bcd60e51b81526004018080602001828103825260238152602001806114ec6023913960400191505060405180910390fd5b61141a81604051806060016040528060268152602001611553602691396001600160a01b038616600090815260208190526040902054919063ffffffff6112a616565b6001600160a01b03808516600090815260208190526040808220939093559084168152205461144f908263ffffffff61105916565b6001600160a01b038084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b60006110b383836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506112a656fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a206275726e20616d6f756e7420657863656564732062616c616e636545524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a206275726e2066726f6d20746865207a65726f206164647265737345524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa265627a7a723158204e44b5b80dc4e9c7f6bd72ae92e78c5ee363b5db217714a93af99bf28ae702c564736f6c63430005100032