60806040523480156200001157600080fd5b506040805180820182526008815267213ab3aa37b5b2b760c11b6020808301918252835180850190945260048452634255475360e01b9084015281519192916200005e91600391620000ed565b50805162000074906004906020840190620000ed565b505050620000916200008b6200009760201b60201c565b6200009b565b620001d0565b3390565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b828054620000fb9062000193565b90600052602060002090601f0160209004810192826200011f57600085556200016a565b82601f106200013a57805160ff19168380011785556200016a565b828001600101855582156200016a579182015b828111156200016a5782518255916020019190600101906200014d565b50620001789291506200017c565b5090565b5b808211156200017857600081556001016200017d565b600181811c90821680620001a857607f821691505b60208210811415620001ca57634e487b7160e01b600052602260045260246000fd5b50919050565b611a4380620001e06000396000f3fe608060405234801561001057600080fd5b50600436106101a95760003560e01c806370a08231116100f9578063a9059cbb11610097578063dd62ed3e11610071578063dd62ed3e146103f2578063e7a324dc14610405578063f1127ed81461042c578063f2fde38b1461048357600080fd5b8063a9059cbb146103b9578063b4b5ea57146103cc578063c3cda520146103df57600080fd5b80637ecebe00116100d35780637ecebe001461036d5780638da5cb5b1461038d57806395d89b411461039e578063a457c2d7146103a657600080fd5b806370a0823114610329578063715018a614610352578063782d6fe11461035a57600080fd5b806332cb6b0c1161016657806342966c681161014057806342966c6814610284578063587cde1e146102975780635c19a95c146102db5780636fcfff45146102ee57600080fd5b806332cb6b0c1461024a578063395093511461025c57806340c10f191461026f57600080fd5b806306fdde03146101ae578063095ea7b3146101cc57806318160ddd146101ef57806320606b701461020157806323b872dd14610228578063313ce5671461023b575b600080fd5b6101b6610496565b6040516101c391906116e2565b60405180910390f35b6101df6101da366004611753565b610528565b60405190151581526020016101c3565b6002545b6040519081526020016101c3565b6101f37f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a86681565b6101df61023636600461177d565b610542565b604051601281526020016101c3565b6101f36a05b521bfdfb9347080000081565b6101df61026a366004611753565b610566565b61028261027d366004611753565b610588565b005b6102826102923660046117b9565b610622565b6102c36102a53660046117d2565b6001600160a01b039081166000908152600660205260409020541690565b6040516001600160a01b0390911681526020016101c3565b6102826102e93660046117d2565b610655565b6103146102fc3660046117d2565b60086020526000908152604090205463ffffffff1681565b60405163ffffffff90911681526020016101c3565b6101f36103373660046117d2565b6001600160a01b031660009081526020819052604090205490565b61028261065f565b6101f3610368366004611753565b610673565b6101f361037b3660046117d2565b60096020526000908152604090205481565b6005546001600160a01b03166102c3565b6101b66108d8565b6101df6103b4366004611753565b6108e7565b6101df6103c7366004611753565b610962565b6101f36103da3660046117d2565b610970565b6102826103ed3660046117ed565b6109e5565b6101f361040036600461184d565b610cb3565b6101f37fe48329057bfd03d55e49b547132e39cffd9c1820ad7b9d4c5307691425d15adf81565b61046761043a366004611880565b60076020908152600092835260408084209091529082529020805460019091015463ffffffff9091169082565b6040805163ffffffff90931683526020830191909152016101c3565b6102826104913660046117d2565b610cde565b6060600380546104a5906118c0565b80601f01602080910402602001604051908101604052809291908181526020018280546104d1906118c0565b801561051e5780601f106104f35761010080835404028352916020019161051e565b820191906000526020600020905b81548152906001019060200180831161050157829003601f168201915b5050505050905090565b600033610536818585610d54565b60019150505b92915050565b600033610550858285610e78565b61055b858585610ef2565b506001949350505050565b6000336105368185856105798383610cb3565b6105839190611911565b610d54565b610590611096565b6a05b521bfdfb934708000006105a560025490565b11156105ef5760405162461bcd60e51b8152602060048201526014602482015273427567546f6b656e3a204d41585f535550504c5960601b60448201526064015b60405180910390fd5b6105f982826110f0565b6001600160a01b0380831660009081526006602052604081205461061e9216836111af565b5050565b61062c3382611313565b33600090815260066020526040812054610652916001600160a01b0390911690836111af565b50565b6106523382611445565b610667611096565b61067160006114be565b565b60004382106106d45760405162461bcd60e51b815260206004820152602760248201527f425547533a3a6765745072696f72566f7465733a206e6f742079657420646574604482015266195c9b5a5b995960ca1b60648201526084016105e6565b6001600160a01b03831660009081526008602052604090205463ffffffff168061070257600091505061053c565b6001600160a01b03841660009081526007602052604081208491610727600185611929565b63ffffffff90811682526020820192909252604001600020541611610790576001600160a01b03841660009081526007602052604081209061076a600184611929565b63ffffffff1663ffffffff1681526020019081526020016000206001015491505061053c565b6001600160a01b038416600090815260076020908152604080832083805290915290205463ffffffff168310156107cb57600091505061053c565b6000806107d9600184611929565b90505b8163ffffffff168163ffffffff1611156108a157600060026107fe8484611929565b610808919061194e565b6108129083611929565b6001600160a01b038816600090815260076020908152604080832063ffffffff80861685529083529281902081518083019092528054909316808252600190930154918101919091529192508714156108755760200151945061053c9350505050565b805163ffffffff1687111561088c5781935061089a565b610897600183611929565b92505b50506107dc565b506001600160a01b038516600090815260076020908152604080832063ffffffff9094168352929052206001015491505092915050565b6060600480546104a5906118c0565b600033816108f58286610cb3565b9050838110156109555760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016105e6565b61055b8286868403610d54565b600033610536818585610ef2565b6001600160a01b03811660009081526008602052604081205463ffffffff168061099b5760006109de565b6001600160a01b0383166000908152600760205260408120906109bf600184611929565b63ffffffff1663ffffffff168152602001908152602001600020600101545b9392505050565b60007f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a866610a10610496565b80519060200120610a1e4690565b60408051602080820195909552808201939093526060830191909152306080808401919091528151808403909101815260a0830182528051908401207fe48329057bfd03d55e49b547132e39cffd9c1820ad7b9d4c5307691425d15adf60c08401526001600160a01b038b1660e084015261010083018a90526101208084018a90528251808503909101815261014084019092528151919093012061190160f01b610160830152610162820183905261018282018190529192506000906101a20160408051601f198184030181528282528051602091820120600080855291840180845281905260ff8a169284019290925260608301889052608083018790529092509060019060a0016020604051602081039080840390855afa158015610b4a573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116610bbc5760405162461bcd60e51b815260206004820152602660248201527f425547533a3a64656c656761746542795369673a20696e76616c6964207369676044820152656e617475726560d01b60648201526084016105e6565b6001600160a01b0381166000908152600960205260408120805491610be08361197f565b919050558914610c3d5760405162461bcd60e51b815260206004820152602260248201527f425547533a3a64656c656761746542795369673a20696e76616c6964206e6f6e604482015261636560f01b60648201526084016105e6565b87421115610c9c5760405162461bcd60e51b815260206004820152602660248201527f425547533a3a64656c656761746542795369673a207369676e617475726520656044820152651e1c1a5c995960d21b60648201526084016105e6565b610ca6818b611445565b505050505b505050505050565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b610ce6611096565b6001600160a01b038116610d4b5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016105e6565b610652816114be565b6001600160a01b038316610db65760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016105e6565b6001600160a01b038216610e175760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016105e6565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6000610e848484610cb3565b90506000198114610eec5781811015610edf5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016105e6565b610eec8484848403610d54565b50505050565b6001600160a01b038316610f565760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016105e6565b6001600160a01b038216610fb85760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016105e6565b6001600160a01b038316600090815260208190526040902054818110156110305760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016105e6565b6001600160a01b03848116600081815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3610eec565b6005546001600160a01b031633146106715760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016105e6565b6001600160a01b0382166111465760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016105e6565b80600260008282546111589190611911565b90915550506001600160a01b038216600081815260208181526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b816001600160a01b0316836001600160a01b0316141580156111d15750600081115b1561130e576001600160a01b03831615611274576001600160a01b03831660009081526008602052604081205463ffffffff169081611211576000611254565b6001600160a01b038516600090815260076020526040812090611235600185611929565b63ffffffff1663ffffffff168152602001908152602001600020600101545b90506000611262848361199a565b905061127086848484611510565b5050505b6001600160a01b0382161561130e576001600160a01b03821660009081526008602052604081205463ffffffff1690816112af5760006112f2565b6001600160a01b0384166000908152600760205260408120906112d3600185611929565b63ffffffff1663ffffffff168152602001908152602001600020600101545b905060006113008483611911565b9050610cab85848484611510565b505050565b6001600160a01b0382166113735760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b60648201526084016105e6565b6001600160a01b038216600090815260208190526040902054818110156113e75760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b60648201526084016105e6565b6001600160a01b0383166000818152602081815260408083208686039055600280548790039055518581529192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3505050565b6001600160a01b038281166000818152600660208181526040808420805485845282862054949093528787166001600160a01b03198416811790915590519190951694919391928592917f3134e8a2e6d97e929a7e54011ea5485d7d196dd5f0ba4d4ef95803e8e3fc257f9190a4610eec8284836111af565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6000611534436040518060600160405280603481526020016119da603491396116b2565b905060008463ffffffff1611801561158e57506001600160a01b038516600090815260076020526040812063ffffffff831691611572600188611929565b63ffffffff908116825260208201929092526040016000205416145b156115d7576001600160a01b038516600090815260076020526040812083916115b8600188611929565b63ffffffff168152602081019190915260400160002060010155611667565b60408051808201825263ffffffff838116825260208083018681526001600160a01b038a166000908152600783528581208a851682529092529390209151825463ffffffff1916911617815590516001918201556116369085906119b1565b6001600160a01b0386166000908152600860205260409020805463ffffffff191663ffffffff929092169190911790555b60408051848152602081018490526001600160a01b038716917fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a724910160405180910390a25050505050565b60008164010000000084106116da5760405162461bcd60e51b81526004016105e691906116e2565b509192915050565b600060208083528351808285015260005b8181101561170f578581018301518582016040015282016116f3565b81811115611721576000604083870101525b50601f01601f1916929092016040019392505050565b80356001600160a01b038116811461174e57600080fd5b919050565b6000806040838503121561176657600080fd5b61176f83611737565b946020939093013593505050565b60008060006060848603121561179257600080fd5b61179b84611737565b92506117a960208501611737565b9150604084013590509250925092565b6000602082840312156117cb57600080fd5b5035919050565b6000602082840312156117e457600080fd5b6109de82611737565b60008060008060008060c0878903121561180657600080fd5b61180f87611737565b95506020870135945060408701359350606087013560ff8116811461183357600080fd5b9598949750929560808101359460a0909101359350915050565b6000806040838503121561186057600080fd5b61186983611737565b915061187760208401611737565b90509250929050565b6000806040838503121561189357600080fd5b61189c83611737565b9150602083013563ffffffff811681146118b557600080fd5b809150509250929050565b600181811c908216806118d457607f821691505b602082108114156118f557634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b60008219821115611924576119246118fb565b500190565b600063ffffffff83811690831681811015611946576119466118fb565b039392505050565b600063ffffffff8084168061197357634e487b7160e01b600052601260045260246000fd5b92169190910492915050565b6000600019821415611993576119936118fb565b5060010190565b6000828210156119ac576119ac6118fb565b500390565b600063ffffffff8083168185168083038211156119d0576119d06118fb565b0194935050505056fe425547533a3a5f7772697465436865636b706f696e743a20626c6f636b206e756d62657220657863656564732033322062697473a26469706673582212205ced360f1137e5215fd88df69614d76ef5f91c248a88fd28797ab2f0d4ed454264736f6c634300080a0033