0x60806040523480156200001157600080fd5b506040516200148438038062001484833981016040819052620000349162000199565b6001600160a01b0383166200004857600080fd5b6001600160a01b0381166200005c57600080fd5b600380546001600160a01b0319166001600160a01b03858116919091179091556005839055604051630981b24d60e41b81529082169063981b24d090620000a8908590600401620001f9565b60206040518083038186803b158015620000c157600080fd5b505afa158015620000d6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000fc9190620001e0565b60065560055460405163ebcd2a6160e01b81526000916001600160a01b0384169163ebcd2a61916200013191600401620001f9565b60206040518083038186803b1580156200014a57600080fd5b505afa1580156200015f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001859190620001e0565b905060048104600455506200021b92505050565b600080600060608486031215620001ae578283fd5b8351620001bb8162000202565b602085015160408601519194509250620001d58162000202565b809150509250925092565b600060208284031215620001f2578081fd5b5051919050565b90815260200190565b6001600160a01b03811681146200021857600080fd5b50565b611259806200022b6000396000f3fe608060405234801561001057600080fd5b50600436106100cf5760003560e01c806386d1a69f1161008c578063ce7c2ac211610066578063ce7c2ac21461016f578063cf3dfae714610182578063d40480891461018a578063ebcd2a6114610192576100cf565b806386d1a69f1461013f578063981b24d014610149578063acd7af011461015c576100cf565b80630dbe671f146100d457806327f38113146100f25780633a98ef391461010757806353bcb9511461011c57806363037b0c1461012457806378e9792514610137575b600080fd5b6100dc6101a5565b6040516100e99190610ed8565b60405180910390f35b6100fa6101b4565b6040516100e99190610f05565b61010f610216565b6040516100e991906111b0565b61010f61021c565b6100dc610132366004610ec0565b610222565b61010f610249565b61014761024f565b005b61010f610157366004610ec0565b610326565b61014761016a366004610da9565b6103fe565b61010f61017d366004610d8d565b61071d565b61010f61072f565b61010f61083e565b61010f6101a0366004610ec0565b610845565b6003546001600160a01b031681565b6060600280548060200260200160405190810160405280929190818152602001828054801561020c57602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116101ee575b5050505050905090565b60005481565b60065481565b6002818154811061022f57fe5b6000918252602090912001546001600160a01b0316905081565b60055481565b600061025961072f565b9050600081116102845760405162461bcd60e51b815260040161027b9061104d565b60405180910390fd5b6002546102a35760405162461bcd60e51b815260040161027b9061111c565b60005b6002548110156102e9576000600282815481106102bf57fe5b6000918252602090912001546001600160a01b031690506102e08382610896565b506001016102a6565b507f06bfc9e66ca14afa6b27c5211d92e2453d2007b51cd69146f7d2b2b5654cf2b9814260405161031b9291906111b9565b60405180910390a150565b60008061033e600554846109ac90919063ffffffff16565b9050600061034f8262093a806109f7565b905062093a8082066000610361610a39565b905060006103b161037e836b032fb4175dfb24dbce2000006109ac565b6004546103ab906103a561039e6b032fb4175dfb24dbce2000008a610a49565b87906109ac565b90610aa3565b90610ad5565b905060006103be88610845565b905060006103d962093a806103d38488610aff565b906109f7565b90506103f16103e88483610b39565b60065490610b39565b9998505050505050505050565b600360009054906101000a90046001600160a01b03166001600160a01b031663f77c47916040518163ffffffff1660e01b815260040160206040518083038186803b15801561044c57600080fd5b505afa158015610460573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104849190610ea4565b6001600160a01b03166391d14854600360009054906101000a90046001600160a01b03166001600160a01b031663f77c47916040518163ffffffff1660e01b815260040160206040518083038186803b1580156104e057600080fd5b505afa1580156104f4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105189190610ea4565b6001600160a01b031663ec87621c6040518163ffffffff1660e01b815260040160206040518083038186803b15801561055057600080fd5b505afa158015610564573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105889190610e8c565b336040518363ffffffff1660e01b81526004016105a6929190610f52565b60206040518083038186803b1580156105be57600080fd5b505afa1580156105d2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105f69190610e6c565b6106125760405162461bcd60e51b815260040161027b906110b6565b80518251146106335760405162461bcd60e51b815260040161027b90611153565b60008251116106545760405162461bcd60e51b815260040161027b90610ff3565b6002541580159061066c5750600061066a61072f565b115b156106795761067961024f565b60005b6002548110156106c457600160006002838154811061069757fe5b60009182526020808320909101546001600160a01b0316835282019290925260400181205560010161067c565b506106d160026000610ce5565b60008080555b8251811015610718576107108382815181106106ef57fe5b602002602001015183838151811061070357fe5b6020026020010151610b5e565b6001016106d7565b505050565b60016020526000908152604090205481565b6000610839600360009054906101000a90046001600160a01b03166001600160a01b0316636d9b18236040518163ffffffff1660e01b815260040160206040518083038186803b15801561078257600080fd5b505afa158015610796573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107ba9190610ea4565b6001600160a01b03166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b1580156107f257600080fd5b505afa158015610806573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061082a9190610e8c565b61083342610326565b906109ac565b905090565b6000610839425b60008061085d600554846109ac90919063ffffffff16565b9050600061086e8262093a806109f7565b60045490915061088e906103a56b032fb4175dfb24dbce20000084610a49565b949350505050565b600080546001600160a01b0383168252600160205260408220546108c091906103d3908690610aff565b9050600360009054906101000a90046001600160a01b03166001600160a01b0316636d9b18236040518163ffffffff1660e01b815260040160206040518083038186803b15801561091057600080fd5b505afa158015610924573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109489190610ea4565b6001600160a01b03166340c10f1983836040518363ffffffff1660e01b8152600401610975929190610eec565b600060405180830381600087803b15801561098f57600080fd5b505af11580156109a3573d6000803e3d6000fd5b50505050505050565b60006109ee83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610c82565b90505b92915050565b60006109ee83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250610cae565b6b033b2e3c9fd0803ce800000090565b600060028206610a65576b033b2e3c9fd0803ce8000000610a67565b825b90506002820491505b81156109f157610a808384610aa3565b92506002820615610a9857610a958184610aa3565b90505b600282049150610a70565b60006109ee6b033b2e3c9fd0803ce80000006103d3610ac28686610aff565b6b019d971e4fe8401e7400000090610b39565b60006002820461088e836103d3610af8876b033b2e3c9fd0803ce8000000610aff565b8490610b39565b600082610b0e575060006109f1565b82820282848281610b1b57fe5b04146109ee5760405162461bcd60e51b815260040161027b90611075565b6000828201838110156109ee5760405162461bcd60e51b815260040161027b90610fbc565b6001600160a01b038216610b845760405162461bcd60e51b815260040161027b906110e5565b60008111610ba45760405162461bcd60e51b815260040161027b9061118a565b6001600160a01b03821660009081526001602052604090205415610bda5760405162461bcd60e51b815260040161027b90611016565b6002805460018082019092557f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace0180546001600160a01b0319166001600160a01b03851690811790915560009081526020919091526040812082905554610c419082610b39565b6000556040517f40c340f65e17194d14ddddb073d3c9f888e3cb52b5aae0c6c7706b4fbc905fac90610c769084908490610eec565b60405180910390a15050565b60008184841115610ca65760405162461bcd60e51b815260040161027b9190610f69565b505050900390565b60008183610ccf5760405162461bcd60e51b815260040161027b9190610f69565b506000838581610cdb57fe5b0495945050505050565b5080546000825590600052602060002090810190610d039190610d06565b50565b5b80821115610d1b5760008155600101610d07565b5090565b600082601f830112610d2f578081fd5b8135610d42610d3d826111ee565b6111c7565b818152915060208083019084810181840286018201871015610d6357600080fd5b60005b84811015610d8257813584529282019290820190600101610d66565b505050505092915050565b600060208284031215610d9e578081fd5b81356109ee8161120e565b60008060408385031215610dbb578081fd5b823567ffffffffffffffff80821115610dd2578283fd5b818501915085601f830112610de5578283fd5b8135610df3610d3d826111ee565b80828252602080830192508086018a828387028901011115610e13578788fd5b8796505b84871015610e3e578035610e2a8161120e565b845260019690960195928101928101610e17565b509096508701359350505080821115610e55578283fd5b50610e6285828601610d1f565b9150509250929050565b600060208284031215610e7d578081fd5b815180151581146109ee578182fd5b600060208284031215610e9d578081fd5b5051919050565b600060208284031215610eb5578081fd5b81516109ee8161120e565b600060208284031215610ed1578081fd5b5035919050565b6001600160a01b0391909116815260200190565b6001600160a01b03929092168252602082015260400190565b6020808252825182820181905260009190848201906040850190845b81811015610f465783516001600160a01b031683529284019291840191600101610f21565b50909695505050505050565b9182526001600160a01b0316602082015260400190565b6000602080835283518082850152825b81811015610f9557858101830151858201604001528201610f79565b81811115610fa65783604083870101525b50601f01601f1916929092016040019392505050565b6020808252601b908201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604082015260600190565b6020808252600990820152684e6f2070617965657360b81b604082015260600190565b60208082526018908201527f706179656520616c726561647920686173207368617265730000000000000000604082015260600190565b6020808252600e908201526d06e6577546f6b656e7320697320360941b604082015260600190565b60208082526021908201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6040820152607760f81b606082015260800190565b60208082526015908201527421b0b63632b91034b9903737ba1026b0b730b3b2b960591b604082015260600190565b60208082526019908201527f706179656520697320746865207a65726f206164647265737300000000000000604082015260600190565b60208082526019908201527f506179656573206e6f7420636f6e666967757265642079657400000000000000604082015260600190565b6020808252601c908201527f50617965657320616e6420736861726573206d69736d61746368656400000000604082015260600190565b6020808252600c908201526b07368617265732061726520360a41b604082015260600190565b90815260200190565b918252602082015260400190565b60405181810167ffffffffffffffff811182821017156111e657600080fd5b604052919050565b600067ffffffffffffffff821115611204578081fd5b5060209081020190565b6001600160a01b0381168114610d0357600080fdfea2646970667358221220e860eaa1226ff39616e2388d83706837e35b545fc04eeaf98a3d3a1177bcf0ab64736f6c634300060c0033000000000000000000000000718b7584d410f364fc16724027c07c617b87f2fc00000000000000000000000000000000000000000000000000000000613aa000000000000000000000000000fbc75c737bfa8a02504871032b550cbef8d4c568