0x60806040526007805460ff191690556200002a426302cfd30062000052602090811b62001c2417901c565b60085562127500600a55600d805460ff191690553480156200004b57600080fd5b50620000b4565b600082820183811015620000ad576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b61297980620000c46000396000f3fe608060405234801561001057600080fd5b50600436106102475760003560e01c8063587cde1e1161013b57806395d89b41116100b8578063dd62ed3e1161007c578063dd62ed3e146108e9578063e38e8c0f14610917578063e58398361461093d578063f1127ed814610963578063f1a01182146109b557610247565b806395d89b411461082d578063a457c2d714610835578063a9059cbb14610861578063b4b5ea571461088d578063cea9d26f146108b357610247565b806373f03dff116100ff57806373f03dff146107c3578063771282f6146107e9578063782d6fe1146107f1578063827c049e1461081d5780638456cb591461082557610247565b8063587cde1e146105cc5780635c19a95c146105f25780635d66ae34146106185780636fcfff451461075e57806370a082311461079d57610247565b806325240810116101c95780633f4ba83a1161018d5780633f4ba83a1461056b57806340c10f191461057357806342966c681461059f578063452a9320146105bc5780634bda2e20146105c457610247565b80632524081014610509578063313ce567146105115780633724b8b11461052f57806339509351146105375780633b97430f1461056357610247565b8063158ef93e11610210578063158ef93e1461037b5780631624f6c61461038357806318160ddd146104b157806323b872dd146104cb5780632456ec111461050157610247565b806294815e1461024c57806306fdde0314610274578063095ea7b3146102f15780630f9eea741461033157806312d43a5114610357575b600080fd5b6102726004803603602081101561026257600080fd5b50356001600160a01b03166109db565b005b61027c610a94565b6040805160208082528351818301528351919283929083019185019080838360005b838110156102b657818101518382015260200161029e565b50505050905090810190601f1680156102e35780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61031d6004803603604081101561030757600080fd5b506001600160a01b038135169060200135610b22565b604080519115158252519081900360200190f35b6102726004803603602081101561034757600080fd5b50356001600160a01b0316610b89565b61035f610c97565b604080516001600160a01b039092168252519081900360200190f35b61031d610cab565b6102726004803603606081101561039957600080fd5b810190602081018135600160201b8111156103b357600080fd5b8201836020820111156103c557600080fd5b803590602001918460018302840111600160201b831117156103e657600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b81111561043857600080fd5b82018360208201111561044a57600080fd5b803590602001918460018302840111600160201b8311171561046b57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295505050903560ff169150610cb49050565b6104b9610d42565b60408051918252519081900360200190f35b61031d600480360360608110156104e157600080fd5b506001600160a01b03813581169160208101359091169060400135610d48565b6104b9610f32565b61035f610f38565b610519610f47565b6040805160ff9092168252519081900360200190f35b610272610f50565b61031d6004803603604081101561054d57600080fd5b506001600160a01b038135169060200135610f86565b6104b961101f565b610272611025565b61031d6004803603604081101561058957600080fd5b506001600160a01b0381351690602001356110cb565b61031d600480360360208110156105b557600080fd5b5035611192565b61035f6111a6565b6102726111b5565b61035f600480360360208110156105e257600080fd5b50356001600160a01b0316611280565b6102726004803603602081101561060857600080fd5b50356001600160a01b031661129e565b610272600480360360c081101561062e57600080fd5b810190602081018135600160201b81111561064857600080fd5b82018360208201111561065a57600080fd5b803590602001918460018302840111600160201b8311171561067b57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b8111156106cd57600080fd5b8201836020820111156106df57600080fd5b803590602001918460018302840111600160201b8311171561070057600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295505060ff8335169350506001600160a01b036020830135169160408101359150606001356112a8565b6107846004803603602081101561077457600080fd5b50356001600160a01b0316611316565b6040805163ffffffff9092168252519081900360200190f35b6104b9600480360360208110156107b357600080fd5b50356001600160a01b031661132e565b610272600480360360208110156107d957600080fd5b50356001600160a01b0316611349565b6104b9611402565b6104b96004803603604081101561080757600080fd5b506001600160a01b038135169060200135611408565b61035f611610565b61027261161f565b61027c6116c8565b61031d6004803603604081101561084b57600080fd5b506001600160a01b038135169060200135611722565b61031d6004803603604081101561087757600080fd5b506001600160a01b038135169060200135611811565b6104b9600480360360208110156108a357600080fd5b50356001600160a01b031661199f565b61031d600480360360608110156108c957600080fd5b506001600160a01b03813581169160208101359091169060400135611a03565b6104b9600480360360408110156108ff57600080fd5b506001600160a01b0381358116916020013516611a71565b6102726004803603602081101561092d57600080fd5b50356001600160a01b0316611a9c565b61031d6004803603602081101561095357600080fd5b50356001600160a01b0316611b74565b6109956004803603604081101561097957600080fd5b5080356001600160a01b0316906020013563ffffffff16611b87565b6040805163ffffffff909316835260208301919091528051918290030190f35b610272600480360360208110156109cb57600080fd5b50356001600160a01b0316611bb4565b60025461010090046001600160a01b03163314610a31576040805162461bcd60e51b815260206004820152600f60248201526e6f6e6c7920676f7665726e616e636560881b604482015290519081900360640190fd5b600480546001600160a01b038381166001600160a01b0319831681179093556040805191909216808252602082019390935281517f17cb761e9f8b93478051c6aea43856ca64bd84015ceb8d5e4966fc1e42c2fe6d929181900390910190a15050565b6000805460408051602060026001851615610100026000190190941693909304601f81018490048402820184019092528181529291830182828015610b1a5780601f10610aef57610100808354040283529160200191610b1a565b820191906000526020600020905b815481529060010190602001808311610afd57829003601f168201915b505050505081565b336000818152600c602090815260408083206001600160a01b038716808552908352818420869055815186815291519394909390927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925928290030190a35060015b92915050565b6005546001600160a01b0316331480610bb1575060025461010090046001600160a01b031633145b610bf0576040805162461bcd60e51b81526020600482015260186024820152600080516020612925833981519152604482015290519081900360640190fd5b600a546001600160a01b0382166000908152600960205260409020544291610c1e919063ffffffff611c2416565b10610c70576040805162461bcd60e51b815260206004820152601a60248201527f546172676574207761732046726f7a656e20726563656e746c79000000000000604482015290519081900360640190fd5b6001600160a01b0381166000908152600960205260409020429055610c9481611c7e565b50565b60025461010090046001600160a01b031681565b600d5460ff1681565b600d5460ff1615610d02576040805162461bcd60e51b8152602060048201526013602482015272185b1c9958591e481a5b9a5d1a585b1a5e9959606a1b604482015290519081900360640190fd5b8251610d15906000906020860190612764565b508151610d29906001906020850190612764565b506002805460ff191660ff929092169190911790555050565b60065481565b6000826001600160a01b038116610d5e57600080fd5b6001600160a01b038116301415610d7457600080fd5b84610d7e81611b74565b15610dba5760405162461bcd60e51b81526004018080602001828103825260248152602001806128176024913960400191505060405180910390fd5b60075460ff1615610e05576040805162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b604482015290519081900360640190fd5b6001600160a01b0386166000908152600c60209081526040808320338452909152902054610e39908563ffffffff611cc616565b6001600160a01b0387166000818152600c60209081526040808320338452825280832094909455918152600b9091522054610e7a908563ffffffff611cc616565b6001600160a01b038088166000908152600b60205260408082209390935590871681522054610eaf908563ffffffff611c2416565b6001600160a01b038087166000818152600b602090815260409182902094909455805188815290519193928a169260008051602061287e83398151915292918290030190a36001600160a01b038087166000908152600f6020526040808220548884168352912054610f2692918216911686611d08565b50600195945050505050565b600a5481565b6003546001600160a01b031681565b60025460ff1681565b6005546001600160a01b0316331480610f6b57506008544210155b610f7457600080fd5b600580546001600160a01b0319169055565b336000908152600c602090815260408083206001600160a01b0386168452909152812054610fba908363ffffffff611c2416565b336000818152600c602090815260408083206001600160a01b0389168085529083529281902085905580519485525191937f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929081900390910190a350600192915050565b60085481565b6005546001600160a01b031633148061104d575060025461010090046001600160a01b031633145b61108c576040805162461bcd60e51b81526020600482015260186024820152600080516020612925833981519152604482015290519081900360640190fd5b6007805460ff191690556040805133815290517f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa9181900360200190a1565b6004546000906001600160a01b03163314806110f6575060025461010090046001600160a01b031633145b611134576040805162461bcd60e51b815260206004820152600a6024820152693737ba1036b4b73a32b960b11b604482015290519081900360640190fd5b60075460ff161561117f576040805162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b604482015290519081900360640190fd5b6111898383611e5a565b50600192915050565b600061119e3383611fad565b506001919050565b6005546001600160a01b031681565b6003546001600160a01b031633146111ff576040805162461bcd60e51b81526020600482015260086024820152672170656e64696e6760c01b604482015290519081900360640190fd5b60028054600380546001600160a01b03818116610100908102610100600160a81b0319861617958690556001600160a01b031990921690925560408051938290048316808552919094049091166020830152825190927f1f14cfc03e486d23acee577b07bc0b3b23f4888c91fcdba5e0fef5a2549d5523928290030190a150565b6001600160a01b039081166000908152600f60205260409020541690565b610c9433826120ae565b6112b3868686610cb4565b600d805460ff19166001179055600e8290556006556001600160a01b039091166000818152600b6020526040902091909155600280546101008302610100600160a81b0319909116179055600580546001600160a01b0319169091179055505050565b60116020526000908152604090205463ffffffff1681565b6001600160a01b03166000908152600b602052604090205490565b60025461010090046001600160a01b0316331461139f576040805162461bcd60e51b815260206004820152600f60248201526e6f6e6c7920676f7665726e616e636560881b604482015290519081900360640190fd5b600380546001600160a01b038381166001600160a01b0319831681179093556040805191909216808252602082019390935281517f6163d5b9efd962645dd649e6e48a61bcb0f9df00997a2398b80d135a9ab0c61e929181900390910190a15050565b600e5481565b60004382106114485760405162461bcd60e51b81526004018080602001828103825260288152602001806128fd6028913960400191505060405180910390fd5b6001600160a01b03831660009081526011602052604090205463ffffffff1680611476576000915050610b83565b6001600160a01b038416600090815260106020908152604080832063ffffffff6000198601811685529252909120541683106114e5576001600160a01b03841660009081526010602090815260408083206000199490940163ffffffff16835292905220600101549050610b83565b6001600160a01b038416600090815260106020908152604080832083805290915290205463ffffffff16831015611520576000915050610b83565b600060001982015b8163ffffffff168163ffffffff1611156115d957600282820363ffffffff160481036115526127e2565b506001600160a01b038716600090815260106020908152604080832063ffffffff8086168552908352928190208151808301909252805490931680825260019093015491810191909152908714156115b457602001519450610b839350505050565b805163ffffffff168711156115cb578193506115d2565b6001820392505b5050611528565b506001600160a01b038516600090815260106020908152604080832063ffffffff9094168352929052206001015491505092915050565b6004546001600160a01b031681565b6005546001600160a01b0316331480611647575060025461010090046001600160a01b031633145b611686576040805162461bcd60e51b81526020600482015260186024820152600080516020612925833981519152604482015290519081900360640190fd5b6007805460ff191660011790556040805133815290517f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2589181900360200190a1565b60018054604080516020600284861615610100026000190190941693909304601f81018490048402820184019092528181529291830182828015610b1a5780601f10610aef57610100808354040283529160200191610b1a565b336000908152600c602090815260408083206001600160a01b038616845290915281205480831061177657336000908152600c602090815260408083206001600160a01b03881684529091528120556117ab565b611786818463ffffffff611cc616565b336000908152600c602090815260408083206001600160a01b03891684529091529020555b336000818152600c602090815260408083206001600160a01b0389168085529083529281902054815190815290519293927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929181900390910190a35060019392505050565b6000826001600160a01b03811661182757600080fd5b6001600160a01b03811630141561183d57600080fd5b3361184781611b74565b156118835760405162461bcd60e51b81526004018080602001828103825260248152602001806128176024913960400191505060405180910390fd5b60075460ff16156118ce576040805162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b604482015290519081900360640190fd5b336000908152600b60205260409020546118ee908563ffffffff611cc616565b336000908152600b6020526040808220929092556001600160a01b03871681522054611920908563ffffffff611c2416565b6001600160a01b0386166000818152600b602090815260409182902093909355805187815290519192339260008051602061287e8339815191529281900390910190a3336000908152600f6020526040808220546001600160a01b0388811684529190922054611994928216911686611d08565b506001949350505050565b6001600160a01b03811660009081526011602052604081205463ffffffff16806119ca5760006119fc565b6001600160a01b038316600090815260106020908152604080832063ffffffff60001986011684529091529020600101545b9392505050565b60025460009061010090046001600160a01b03163314611a5c576040805162461bcd60e51b815260206004820152600f60248201526e6f6e6c7920676f7665726e616e636560881b604482015290519081900360640190fd5b611a6784848461212e565b5060019392505050565b6001600160a01b039182166000908152600c6020908152604080832093909416825291909152205490565b6005546001600160a01b0316331480611ac4575060025461010090046001600160a01b031633145b611b03576040805162461bcd60e51b81526020600482015260186024820152600080516020612925833981519152604482015290519081900360640190fd5b6008544210611b1157600080fd5b600580546001600160a01b038381166001600160a01b0319831681179093556040805191909216808252602082019390935281517f08fdaf06427a2010e5958f4329b566993472d14ce81d3f16ce7f2a2660da98e3929181900390910190a15050565b6000610b8360128363ffffffff61218016565b60106020908152600092835260408084209091529082529020805460019091015463ffffffff9091169082565b6005546001600160a01b0316331480611bdc575060025461010090046001600160a01b031633145b611c1b576040805162461bcd60e51b81526020600482015260186024820152600080516020612925833981519152604482015290519081900360640190fd5b610c94816121e7565b6000828201838110156119fc576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b611c8f60128263ffffffff61222f16565b6040516001600160a01b038216907f4f2a367e694e71282f29ab5eaa04c4c0be45ac5bf2ca74fb67068b98bdc2887d90600090a250565b60006119fc83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506122b0565b816001600160a01b0316836001600160a01b031614158015611d2a5750600081115b15611e55576001600160a01b03831615611dc2576001600160a01b03831660009081526011602052604081205463ffffffff169081611d6a576000611d9c565b6001600160a01b038516600090815260106020908152604080832063ffffffff60001987011684529091529020600101545b90506000611db0828563ffffffff611cc616565b9050611dbe86848484612347565b5050505b6001600160a01b03821615611e55576001600160a01b03821660009081526011602052604081205463ffffffff169081611dfd576000611e2f565b6001600160a01b038416600090815260106020908152604080832063ffffffff60001987011684529091529020600101545b90506000611e43828563ffffffff611c2416565b9050611e5185848484612347565b5050505b505050565b600654600e54611e70908363ffffffff611c2416565b1115611ec3576040805162461bcd60e51b815260206004820152601d60248201527f456d697373696f6e206578636565647320746f74616c20737570706c79000000604482015290519081900360640190fd5b600e54611ed6908263ffffffff611c2416565b600e556001600160a01b0382166000908152600b6020526040902054611f02908263ffffffff611c2416565b6001600160a01b038084166000908152600b6020908152604080832094909455600f905291822054611f3692911683611d08565b604080516001600160a01b03841681526020810183905281517f0f6798a560793a54c3bcfe86a93cde1e73087d944c0ea20544137d4121396885929181900390910190a16040805182815290516001600160a01b0384169160009160008051602061287e8339815191529181900360200190a35050565b600654611fc0908263ffffffff611cc616565b600655600e54611fd6908263ffffffff611cc616565b600e556001600160a01b0382166000908152600b6020526040902054612002908263ffffffff611cc616565b6001600160a01b038084166000908152600b6020908152604080832094909455600f9052918220546120379291169083611d08565b604080516001600160a01b03841681526020810183905281517fcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca5929181900390910190a16040805182815290516000916001600160a01b0385169160008051602061287e8339815191529181900360200190a35050565b6001600160a01b038083166000818152600f602081815260408084208054600b845282862054949093528787166001600160a01b03198416811790915590519190951694919391928592917f3134e8a2e6d97e929a7e54011ea5485d7d196dd5f0ba4d4ef95803e8e3fc257f9190a4612128828483611d08565b50505050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052611e559084906124ac565b60006001600160a01b0382166121c75760405162461bcd60e51b815260040180806020018281038252602281526020018061285c6022913960400191505060405180910390fd5b506001600160a01b03166000908152602091909152604090205460ff1690565b6121f860128263ffffffff61266416565b6040516001600160a01b038216907ff915cd9fe234de6e8d3afe7bf2388d35b2b6d48e8c629a24602019bde79c213a90600090a250565b6122398282612180565b1561228b576040805162461bcd60e51b815260206004820152601f60248201527f526f6c65733a206163636f756e7420616c72656164792068617320726f6c6500604482015290519081900360640190fd5b6001600160a01b0316600090815260209190915260409020805460ff19166001179055565b6000818484111561233f5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156123045781810151838201526020016122ec565b50505050905090810190601f1680156123315780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b600061236b4360405180606001604052806035815260200161289e603591396126cb565b905060008463ffffffff161180156123b457506001600160a01b038516600090815260106020908152604080832063ffffffff6000198901811685529252909120548282169116145b156123f1576001600160a01b038516600090815260106020908152604080832063ffffffff60001989011684529091529020600101829055612462565b60408051808201825263ffffffff808416825260208083018681526001600160a01b038a166000818152601084528681208b8616825284528681209551865490861663ffffffff19918216178755925160019687015590815260119092529390208054928801909116919092161790555b604080518481526020810184905281516001600160a01b038816927fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a724928290030190a25050505050565b6124be826001600160a01b0316612728565b61250f576040805162461bcd60e51b815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604482015290519081900360640190fd5b60006060836001600160a01b0316836040518082805190602001908083835b6020831061254d5780518252601f19909201916020918201910161252e565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146125af576040519150601f19603f3d011682016040523d82523d6000602084013e6125b4565b606091505b50915091508161260b576040805162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015290519081900360640190fd5b8051156121285780806020019051602081101561262757600080fd5b50516121285760405162461bcd60e51b815260040180806020018281038252602a8152602001806128d3602a913960400191505060405180910390fd5b61266e8282612180565b6126a95760405162461bcd60e51b815260040180806020018281038252602181526020018061283b6021913960400191505060405180910390fd5b6001600160a01b0316600090815260209190915260409020805460ff19169055565b600081600160201b84106127205760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156123045781810151838201526020016122ec565b509192915050565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47081811480159061275c57508115155b949350505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106127a557805160ff19168380011785556127d2565b828001600101855582156127d2579182015b828111156127d25782518255916020019190600101906127b7565b506127de9291506127f9565b5090565b604080518082019091526000808252602082015290565b61281391905b808211156127de57600081556001016127ff565b9056fe46726f7a656e3a2053656e6465722773207472616e66657273206172652066726f7a656e526f6c65733a206163636f756e7420646f6573206e6f74206861766520726f6c65526f6c65733a206163636f756e7420697320746865207a65726f2061646472657373ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef4b434f494e3a3a5f7772697465436865636b706f696e743a20626c6f636b206e756d626572206578636565647320333220626974735361666545524332303a204552433230206f7065726174696f6e20646964206e6f7420737563636565644b434f494e3a3a6765745072696f72566f7465733a206e6f74207965742064657465726d696e65646e6f7420677561726469616e206f7220676f7665726e6f720000000000000000a265627a7a72315820e01fe3fa28ce9a683424046696f9f8591846ac48e917a52e5a99a9d71eda93aa64736f6c63430005100032