60806040526224ea006007553480156200001857600080fd5b5060006200002e6001600160e01b036200010a16565b600380546001600160a01b0319166001600160a01b038316908117909155604051919250906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350620000a2620000936001600160e01b036200010a16565b6001600160e01b036200010e16565b6005805460ff19169055620000d2620000c36001600160e01b036200010a16565b6001600160e01b036200016016565b62000104620000e96001600160e01b036200010a16565b6a52b7d2dcc80cd2e40000006001600160e01b03620001b216565b6200040b565b3390565b62000129816004620002b360201b62001c161790919060201c565b6040516001600160a01b038216907f6719d08c1888103bea251a4ed56406bd0c3e69723c8a1686e017e7bbe159b6f890600090a250565b6200017b816006620002b360201b62001c161790919060201c565b6040516001600160a01b038216907f22380c05984257a1cb900161c713dd71d39e74820f1aea43bd3f1bdd2096129990600090a250565b6001600160a01b0382166200020e576040805162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b6200022a816002546200034060201b6200169f1790919060201c565b6002556001600160a01b038216600090815260208181526040909120546200025d9183906200169f62000340821b17901c565b6001600160a01b0383166000818152602081815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b620002c882826001600160e01b03620003a216565b156200031b576040805162461bcd60e51b815260206004820152601f60248201527f526f6c65733a206163636f756e7420616c72656164792068617320726f6c6500604482015290519081900360640190fd5b6001600160a01b0316600090815260209190915260409020805460ff19166001179055565b6000828201838110156200039b576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b60006001600160a01b038216620003eb5760405162461bcd60e51b8152600401808060200182810382526022815260200180620026ff6022913960400191505060405180910390fd5b506001600160a01b03166000908152602091909152604090205460ff1690565b6122e4806200041b6000396000f3fe608060405234801561001057600080fd5b50600436106102275760003560e01c80637fe76df0116101305780639e20749a116100b8578063c40868931161007c578063c408689314610675578063dd62ed3e1461069b578063e6108fc9146106c9578063f2fde38b146106f5578063f83e9a201461071b57610227565b80639e20749a1461059f578063a31052e8146105d1578063a457c2d7146105f7578063a9059cbb14610623578063bb5f747b1461064f57610227565b80638d88a2ff116100ff5780638d88a2ff1461051f5780638da5cb5b146105455780638dc73521146105695780638f32d59b1461058f57806395d89b411461059757610227565b80637fe76df0146104a557806382dc1ec4146104cb5780638456cb59146104f15780638870985b146104f957610227565b806346fbf68e116101b35780636c4e5c86116101825780636c4e5c861461041d5780636ef8d66d1461044957806370a0823114610451578063715018a6146104775780637362d9c81461047f57610227565b806346fbf68e146103bb578063476fe919146103e15780634c5a628c1461040d5780635c975abb1461041557610227565b806323b872dd116101fa57806323b872dd146103295780632ff2e9dc1461035f578063313ce5671461036757806339509351146103855780633f4ba83a146103b157610227565b806306fdde031461022c578063095ea7b3146102a95780630cb7eb4c146102e957806318160ddd14610321575b600080fd5b610234610723565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561026e578181015183820152602001610256565b50505050905090810190601f16801561029b5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102d5600480360360408110156102bf57600080fd5b506001600160a01b038135169060200135610755565b604080519115158252519081900360200190f35b61030f600480360360208110156102ff57600080fd5b50356001600160a01b0316610784565b60408051918252519081900360200190f35b61030f6107bc565b6102d56004803603606081101561033f57600080fd5b506001600160a01b038135811691602081013590911690604001356107c2565b61030f6107ec565b61036f6107fb565b6040805160ff9092168252519081900360200190f35b6102d56004803603604081101561039b57600080fd5b506001600160a01b038135169060200135610800565b6103b9610843565b005b6102d5600480360360208110156103d157600080fd5b50356001600160a01b031661092c565b6102d5600480360360408110156103f757600080fd5b506001600160a01b038135169060200135610945565b6103b9610a19565b6102d5610a6f565b6102d56004803603604081101561043357600080fd5b506001600160a01b038135169060200135610a78565b6103b9610b9b565b61030f6004803603602081101561046757600080fd5b50356001600160a01b0316610bef565b6103b9610c0a565b6103b96004803603602081101561049557600080fd5b50356001600160a01b0316610c88565b6103b9600480360360208110156104bb57600080fd5b50356001600160a01b0316610cdb565b6103b9600480360360208110156104e157600080fd5b50356001600160a01b0316610d83565b6103b9610dd3565b61030f6004803603602081101561050f57600080fd5b50356001600160a01b0316610e9a565b6103b96004803603602081101561053557600080fd5b50356001600160a01b0316610f2d565b61054d610fd5565b604080516001600160a01b039092168252519081900360200190f35b6102d56004803603602081101561057f57600080fd5b50356001600160a01b0316610fe4565b6102d56110a9565b6102346110cf565b6102d5600480360360608110156105b557600080fd5b506001600160a01b0381351690602081013590604001356110ef565b6102d5600480360360208110156105e757600080fd5b50356001600160a01b031661126e565b6102d56004803603604081101561060d57600080fd5b506001600160a01b038135169060200135611356565b6102d56004803603604081101561063957600080fd5b506001600160a01b0381351690602001356113a4565b6102d56004803603602081101561066557600080fd5b50356001600160a01b03166113c7565b61030f6004803603602081101561068b57600080fd5b50356001600160a01b03166113da565b61030f600480360360408110156106b157600080fd5b506001600160a01b0381358116916020013516611420565b6102d5600480360360408110156106df57600080fd5b506001600160a01b03813516906020013561144b565b6103b96004803603602081101561070b57600080fd5b50356001600160a01b0316611539565b61030f6115e4565b6040518060400160405280601681526020017554686520646179206f66206f6365616e2073746f727960501b81525081565b6000816107686107636115ea565b610e9a565b101561077357600080fd5b61077d83836115ee565b9392505050565b60006001600160a01b03821661079957600080fd5b506001600160a01b0381166000908152600860205260409020600101545b919050565b60025490565b6000816107ce85610e9a565b10156107d957600080fd5b6107e4848484611646565b949350505050565b6a52b7d2dcc80cd2e400000081565b601281565b6000610823826108176108116115ea565b86611420565b9063ffffffff61169f16565b61082e6107636115ea565b101561083957600080fd5b61077d83836116f9565b61085361084e6115ea565b61092c565b61088e5760405162461bcd60e51b815260040180806020018281038252603a81526020018061206c603a913960400191505060405180910390fd5b60055460ff166108dc576040805162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b604482015290519081900360640190fd5b6005805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa61090f6115ea565b604080516001600160a01b039092168252519081900360200190a1565b600061093f60048363ffffffff61175116565b92915050565b60006109576109526115ea565b6113c7565b6109925760405162461bcd60e51b815260040180806020018281038252604a815260200180612241604a913960600191505060405180910390fd5b6001600160a01b0383166109a557600080fd5b428210156109b257600080fd5b6001600160a01b038316600081815260086020908152604091829020600101805490869055825181815291820186905282519093927f014515183d12c0df4c26d74864371ebfe412e000f1f0a252af66950035ff42fe928290030190a25060019392505050565b610a216110a9565b15610a5d5760405162461bcd60e51b81526004018080602001828103825260468152602001806120266046913960600191505060405180910390fd5b610a6d610a686115ea565b6117b8565b565b60055460ff1690565b6000610a856109526115ea565b610ac05760405162461bcd60e51b815260040180806020018281038252604a815260200180612241604a913960600191505060405180910390fd5b6001600160a01b038316610ad357600080fd5b60008211610ae057600080fd5b6001600160a01b038316600090815260086020526040902054821115610b0557600080fd5b6001600160a01b038316600090815260086020526040902054610b2e908363ffffffff61180016565b6001600160a01b03841660008181526008602090815260409182902084815560010154825187815291820194909452808201939093525190917f44cebfefa4561bee5b61d675ccfd8dc9969fff9cc15e7a4eccccd62af94f9c11919081900360600190a250600192915050565b610ba36110a9565b15610bdf5760405162461bcd60e51b81526004018080602001828103825260368152602001806121146036913960400191505060405180910390fd5b610a6d610bea6115ea565b611842565b6001600160a01b031660009081526020819052604090205490565b610c126110a9565b610c51576040805162461bcd60e51b815260206004820181905260248201526000805160206121b6833981519152604482015290519081900360640190fd5b60405162461bcd60e51b815260040180806020018281038252602381526020018061214a6023913960400191505060405180910390fd5b610c906110a9565b610ccf576040805162461bcd60e51b815260206004820181905260248201526000805160206121b6833981519152604482015290519081900360640190fd5b610cd88161188a565b50565b610ce36110a9565b610d22576040805162461bcd60e51b815260206004820181905260248201526000805160206121b6833981519152604482015290519081900360640190fd5b610d2a610fd5565b6001600160a01b0316816001600160a01b03161415610d7a5760405162461bcd60e51b81526004018080602001828103825260368152602001806121146036913960400191505060405180910390fd5b610cd881611842565b610d8b6110a9565b610dca576040805162461bcd60e51b815260206004820181905260248201526000805160206121b6833981519152604482015290519081900360640190fd5b610cd8816118d2565b610dde61084e6115ea565b610e195760405162461bcd60e51b815260040180806020018281038252603a81526020018061206c603a913960400191505060405180910390fd5b60055460ff1615610e64576040805162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b604482015290519081900360640190fd5b6005805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25861090f6115ea565b6001600160a01b0381166000908152600860205260408120600101544210610ecc57610ec582610bef565b90506107b7565b6001600160a01b038216600090815260086020526040902054610eee83610bef565b11610efb575060006107b7565b6001600160a01b03821660009081526008602052604090205461093f90610f2184610bef565b9063ffffffff61180016565b610f356110a9565b610f74576040805162461bcd60e51b815260206004820181905260248201526000805160206121b6833981519152604482015290519081900360640190fd5b610f7c610fd5565b6001600160a01b0316816001600160a01b03161415610fcc5760405162461bcd60e51b81526004018080602001828103825260468152602001806120266046913960600191505060405180910390fd5b610cd8816117b8565b6003546001600160a01b031690565b6000610ff16109526115ea565b61102c5760405162461bcd60e51b815260040180806020018281038252604a815260200180612241604a913960600191505060405180910390fd5b6001600160a01b03821661103f57600080fd5b6001600160a01b038216600081815260086020908152604080832083815560010183905580518381529182018390528181019290925290517f44cebfefa4561bee5b61d675ccfd8dc9969fff9cc15e7a4eccccd62af94f9c119181900360600190a2506001919050565b6003546000906001600160a01b03166110c06115ea565b6001600160a01b031614905090565b6040518060400160405280600481526020016354444f5360e01b81525081565b60006110fc6109526115ea565b6111375760405162461bcd60e51b815260040180806020018281038252604a815260200180612241604a913960600191505060405180910390fd5b6001600160a01b03841661114a57600080fd5b6000831161115757600080fd5b8261116185610e9a565b101561116c57600080fd5b4282101561117957600080fd5b6001600160a01b038416600081815260086020908152604091829020600101805490869055825181815291820186905282519093927f014515183d12c0df4c26d74864371ebfe412e000f1f0a252af66950035ff42fe928290030190a26001600160a01b0385166000908152600860205260409020546111ff908563ffffffff61169f16565b6001600160a01b03861660008181526008602090815260409182902084815560010154825189815291820194909452808201939093525190917f44cebfefa4561bee5b61d675ccfd8dc9969fff9cc15e7a4eccccd62af94f9c11919081900360600190a2506001949350505050565b600061127b6109526115ea565b6112b65760405162461bcd60e51b815260040180806020018281038252604a815260200180612241604a913960600191505060405180910390fd5b6001600160a01b0382166112c957600080fd5b6001600160a01b0382166000908152600860205260409020600101546112ee57600080fd5b6001600160a01b038216600081815260086020908152604080832060010180549084905581518181529283019390935280519293927f014515183d12c0df4c26d74864371ebfe412e000f1f0a252af66950035ff42fe9281900390910190a250600192915050565b60008061136a6113646115ea565b85611420565b90508083101561139a57611384818463ffffffff61180016565b61138f6107636115ea565b101561139a57600080fd5b6107e4848461191a565b6000816113b26107636115ea565b10156113bd57600080fd5b61077d8383611972565b600061093f60068363ffffffff61175116565b6001600160a01b0381166000908152600860205260408120600101544210611404575060006107b7565b506001600160a01b031660009081526008602052604090205490565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b60006114586109526115ea565b6114935760405162461bcd60e51b815260040180806020018281038252604a815260200180612241604a913960600191505060405180910390fd5b6001600160a01b0383166114a657600080fd5b600082116114b357600080fd5b816114bd84610e9a565b10156114c857600080fd5b6001600160a01b0383166000908152600860205260409020600101544210611510576007546001600160a01b0384166000908152600860205260409020429091016001909101555b6001600160a01b038316600090815260086020526040902054610b2e908363ffffffff61169f16565b6115416110a9565b611580576040805162461bcd60e51b815260206004820181905260248201526000805160206121b6833981519152604482015290519081900360640190fd5b6001600160a01b03811661159357600080fd5b61159b610fd5565b6001600160a01b0316816001600160a01b031614156115b957600080fd5b6115c281610d83565b6115cb81610c88565b6115d4816119ca565b6115dc610b9b565b610cd8610a19565b60075481565b3390565b60055460009060ff161561163c576040805162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b604482015290519081900360640190fd5b61077d8383611a1a565b60055460009060ff1615611694576040805162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b604482015290519081900360640190fd5b6107e4848484611a37565b60008282018381101561077d576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b60055460009060ff1615611747576040805162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b604482015290519081900360640190fd5b61077d8383611ac4565b60006001600160a01b0382166117985760405162461bcd60e51b81526004018080602001828103825260228152602001806121d66022913960400191505060405180910390fd5b506001600160a01b03166000908152602091909152604090205460ff1690565b6117c960068263ffffffff611b1816565b6040516001600160a01b038216907f0a8eb35e5ca14b3d6f28e4abf2f128dbab231a58b56e89beb5d636115001e16590600090a250565b600061077d83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611b7f565b61185360048263ffffffff611b1816565b6040516001600160a01b038216907fcd265ebaf09df2871cc7bd4133404a235ba12eff2041bb89d9c714a2621c7c7e90600090a250565b61189b60068263ffffffff611c1616565b6040516001600160a01b038216907f22380c05984257a1cb900161c713dd71d39e74820f1aea43bd3f1bdd2096129990600090a250565b6118e360048263ffffffff611c1616565b6040516001600160a01b038216907f6719d08c1888103bea251a4ed56406bd0c3e69723c8a1686e017e7bbe159b6f890600090a250565b60055460009060ff1615611968576040805162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b604482015290519081900360640190fd5b61077d8383611c97565b60055460009060ff16156119c0576040805162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b604482015290519081900360640190fd5b61077d8383611d05565b6119d26110a9565b611a11576040805162461bcd60e51b815260206004820181905260248201526000805160206121b6833981519152604482015290519081900360640190fd5b610cd881611d19565b6000611a2e611a276115ea565b8484611dba565b50600192915050565b6000611a44848484611ea6565b611aba84611a506115ea565b611ab58560405180606001604052806028815260200161218e602891396001600160a01b038a16600090815260016020526040812090611a8e6115ea565b6001600160a01b03168152602081019190915260400160002054919063ffffffff611b7f16565b611dba565b5060019392505050565b6000611a2e611ad16115ea565b84611ab58560016000611ae26115ea565b6001600160a01b03908116825260208083019390935260409182016000908120918c16815292529020549063ffffffff61169f16565b611b228282611751565b611b5d5760405162461bcd60e51b815260040180806020018281038252602181526020018061216d6021913960400191505060405180910390fd5b6001600160a01b0316600090815260209190915260409020805460ff19169055565b60008184841115611c0e5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611bd3578181015183820152602001611bbb565b50505050905090810190601f168015611c005780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b611c208282611751565b15611c72576040805162461bcd60e51b815260206004820152601f60248201527f526f6c65733a206163636f756e7420616c72656164792068617320726f6c6500604482015290519081900360640190fd5b6001600160a01b0316600090815260209190915260409020805460ff19166001179055565b6000611a2e611ca46115ea565b84611ab58560405180606001604052806025815260200161228b6025913960016000611cce6115ea565b6001600160a01b03908116825260208083019390935260409182016000908120918d1681529252902054919063ffffffff611b7f16565b6000611a2e611d126115ea565b8484611ea6565b6001600160a01b038116611d5e5760405162461bcd60e51b81526004018080602001828103825260268152602001806120a66026913960400191505060405180910390fd5b6003546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600380546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b038316611dff5760405162461bcd60e51b815260040180806020018281038252602481526020018061221d6024913960400191505060405180910390fd5b6001600160a01b038216611e445760405162461bcd60e51b81526004018080602001828103825260228152602001806120cc6022913960400191505060405180910390fd5b6001600160a01b03808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6001600160a01b038316611eeb5760405162461bcd60e51b81526004018080602001828103825260258152602001806121f86025913960400191505060405180910390fd5b6001600160a01b038216611f305760405162461bcd60e51b81526004018080602001828103825260238152602001806120036023913960400191505060405180910390fd5b611f73816040518060600160405280602681526020016120ee602691396001600160a01b038616600090815260208190526040902054919063ffffffff611b7f16565b6001600160a01b038085166000908152602081905260408082209390935590841681522054611fa8908263ffffffff61169f16565b6001600160a01b038084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a350505056fe45524332303a207472616e7366657220746f20746865207a65726f2061646472657373436f6e74726f6c6c656457686974656c69737441646d696e526f6c653a206f776e65722063616e6e6f742072656e6f756e63652057686974656c69737441646d696e526f6c65436f6e74726f6c6c6564506175736572526f6c653a2063616c6c657220646f6573206e6f742068617665207468652050617573657220726f6c654f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e6365436f6e74726f6c6c6564506175736572526f6c653a206f776e65722063616e6e6f742072656e6f756e636520506175736572526f6c65546865206f776e65722063616e6e6f742072656c65617365206f776e6572736869702e526f6c65733a206163636f756e7420646f6573206e6f74206861766520726f6c6545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63654f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572526f6c65733a206163636f756e7420697320746865207a65726f206164647265737345524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f2061646472657373436f6e74726f6c6c656457686974656c69737441646d696e526f6c653a2063616c6c657220646f6573206e6f742068617665207468652057686974656c69737441646d696e20726f6c6545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa265627a7a723158202a229ced24ace1219606a774f9185f1dbf7da49978260dee22ef3b958f41431664736f6c63430005110032526f6c65733a206163636f756e7420697320746865207a65726f2061646472657373