0x60806040526006805464ffffffffff19164264ffffffffff1617905534801561002757600080fd5b50600061003b6001600160e01b036102a916565b600080546001600160a01b0319166001600160a01b0383169081178255604051929350917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3506001805460ff60a01b196001600160a01b0319909116331716815560048054808301825560208082047f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b90810180546014601f95861661010090810a82810260ff91820219909416939093179093558654808901885585810485018054600f928916860a92830292850219169190911790558654808901885585810485018054600a928916860a838102908602199091161790558754808a018955868104860180546005928a16870a838102908702199091161790558854808b0190995586890490950180546003998916860a8a8102908602199091161790558454808a0186558681047f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db090810180546028938b16880a9384029387021916929092179091558554808b01875587810482018054601e928b16880a92830292870219169190911790558554808b01875587810482018054918a16870a94850294860219909116939093179092558454808a019095559484040180549390951690910a92830292021916179055805480830182556000829052674563918244f400007fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b91820155815480840183556801158e460913d0000090820155815480840183556802b5e3af16b188000090820155815492830190915568056bc75e2d631000009101556102ad565b3390565b6120eb806102bc6000396000f3fe6080604052600436106101d15760003560e01c80638456cb59116100f7578063a9c3ac5311610095578063c864130f11610064578063c864130f1461078c578063e7204ffb146107b9578063f2fde38b146107ce578063f340fa011461080157610234565b8063a9c3ac5314610684578063afbce3b9146106fd578063b7d9f0d214610727578063c662c1d41461075157610234565b8063970d106f116100d1578063970d106f146105845780639a8318f414610599578063a1983416146105ae578063a87430ba146105dd57610234565b80638456cb59146105305780638959af3c146105455780638da5cb5b1461056f57610234565b80633ccfd60b1161016f5780636da61d1e1161013e5780636da61d1e1461043d578063715018a61461048957806374a88b8b1461049e57806374b95b2d146104d757610234565b80633ccfd60b146103aa5780633f4ba83a146103bf5780635c975abb146103d45780636d5f6f11146103fd57610234565b80631959a002116101ab5780631959a002146102b65780631a975376146103315780632b68b9c614610362578063375e5c6c1461037757610234565b806315c43aaf146102395780631818b1e31461027a578063192ef492146102a157610234565b3661023457600154600160a01b900460ff1615610228576040805162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b604482015290519081900360640190fd5b6102323334610827565b005b600080fd5b34801561024557600080fd5b5061024e610be9565b6040805194855264ffffffffff9093166020850152838301919091526060830152519081900360800190f35b34801561028657600080fd5b5061028f610c49565b60408051918252519081900360200190f35b3480156102ad57600080fd5b5061028f610c4f565b3480156102c257600080fd5b506102e9600480360360208110156102d957600080fd5b50356001600160a01b0316610c55565b604080516001600160a01b03909816885264ffffffffff9096166020880152868601949094526060860192909252608085015260a084015260c0830152519081900360e00190f35b34801561033d57600080fd5b50610346610cac565b604080516001600160a01b039092168252519081900360200190f35b34801561036e57600080fd5b50610232610cbb565b34801561038357600080fd5b506102326004803603602081101561039a57600080fd5b50356001600160a01b0316610d28565b3480156103b657600080fd5b50610232610da9565b3480156103cb57600080fd5b50610232611238565b3480156103e057600080fd5b506103e9611296565b604080519115158252519081900360200190f35b34801561040957600080fd5b506104276004803603602081101561042057600080fd5b50356112a6565b6040805160ff9092168252519081900360200190f35b34801561044957600080fd5b506104706004803603602081101561046057600080fd5b50356001600160a01b03166112d7565b6040805192835260208301919091528051918290030190f35b34801561049557600080fd5b506102326113f9565b3480156104aa57600080fd5b5061028f600480360360408110156104c157600080fd5b50803590602001356001600160a01b0316611497565b3480156104e357600080fd5b5061050a600480360360208110156104fa57600080fd5b50356001600160a01b03166114b4565b604080519485526020850193909352838301919091526060830152519081900360800190f35b34801561053c57600080fd5b506102326114ea565b34801561055157600080fd5b5061028f6004803603602081101561056857600080fd5b5035611546565b34801561057b57600080fd5b50610346611552565b34801561059057600080fd5b5061028f611561565b3480156105a557600080fd5b5061028f611567565b3480156105ba57600080fd5b506105c361156d565b6040805164ffffffffff9092168252519081900360200190f35b3480156105e957600080fd5b506106106004803603602081101561060057600080fd5b50356001600160a01b031661157a565b604080519d8e526001600160a01b03909c1660208e01528c8c019a909a5260608c019890985260808b019690965260a08a019490945260c089019290925260e088015261010087015264ffffffffff1661012086015261014085015261016084015261018083015251908190036101a00190f35b34801561069057600080fd5b506106996115f2565b6040518083608080838360005b838110156106be5781810151838201526020016106a6565b5050505090500182600460200280838360005b838110156106e95781810151838201526020016106d1565b505050509050019250505060405180910390f35b34801561070957600080fd5b5061028f6004803603602081101561072057600080fd5b50356116c1565b34801561073357600080fd5b506104276004803603602081101561074a57600080fd5b50356116df565b34801561075d57600080fd5b506102326004803603604081101561077457600080fd5b506001600160a01b03813581169160200135166116ec565b34801561079857600080fd5b50610346600480360360208110156107af57600080fd5b503560ff16611840565b3480156107c557600080fd5b5061023261185b565b3480156107da57600080fd5b50610232600480360360208110156107f157600080fd5b50356001600160a01b03166118b7565b6102326004803603602081101561081757600080fd5b50356001600160a01b03166119ab565b6001600160a01b038281166000908152600260205260409020600101541615158061086a5750610855611552565b6001600160a01b0316826001600160a01b0316145b6108bb576040805162461bcd60e51b815260206004820152601d60248201527f4e6f2075706c696e652c20796f75206e65656420616e2075706c696e65000000604482015290519081900360640190fd5b6001600160a01b03821660009081526002602052604090206009015464ffffffffff166108ec57600c805460010190555b6001600160a01b03821660009081526002602052604090206009015464ffffffffff16156109eb576001600160a01b0382166000908152600260205260409020805460010181556007015481108015906109a85750600380546001600160a01b03841660009081526002602052604090205460001990910110610987576001600160a01b03831660009081526002602052604090205461098f565b600354600019015b8154811061099957fe5b90600052602060002001548111155b6109e6576040805162461bcd60e51b815260206004820152600a60248201526910985908185b5bdd5b9d60b21b604482015290519081900360640190fd5b610a59565b67016345785d8a00008110158015610a1b57506003600081548110610a0c57fe5b90600052602060002001548111155b610a59576040805162461bcd60e51b815260206004820152600a60248201526910985908185b5bdd5b9d60b21b604482015290519081900360640190fd5b6001600160a01b03821660008181526002602090815260408083206003810184905560078101869055600881019390935560098301805464ffffffffff19164264ffffffffff16179055600a909201805485019055815184815291517f2cb77763bc1e8490c1a904905c4d74b4269919aca114464f4bb4d911e60de3649281900390910190a26001600160a01b038281166000908152600260205260409020600101541615610b74576001600160a01b0382811660008181526002602090815260408083206001018054861684528184206004018054600a8904908101909155938590525481519384529051939416927fba5b08f0cddc64825b52c35c09323af810c1d2e29c97aba01a4ed25cfdc482d19281900390910190a35b610b7e8282611a14565b600654426201518064ffffffffff928316019091161015610ba157610ba1611c75565b610ba9611552565b6001600160a01b03166108fc606483049081150290604051600060405180830381858888f19350505050158015610be4573d6000803e3d6000fd5b505050565b600b5460065460085460075460009081526009602090815260408083207f13da86008ba1c6922daee3e07db95305ef49ebced9f5467a0b8613fcc6b343e3546001600160a01b0316845290915290205464ffffffffff9092169190919293565b600c5481565b60085481565b6001600160a01b039081166000908152600260205260409020600181015460098201546007830154600384015460048501546005860154600690960154949096169664ffffffffff90931695919490939192909190565b6001546001600160a01b031681565b6001546001600160a01b03163314610d1a576040805162461bcd60e51b815260206004820181905260248201527f4163636573732064656e69656420286f6e6c79206772616e64206f776e657229604482015290519081900360640190fd5b6001546001600160a01b0316ff5b6001546001600160a01b03163314610d87576040805162461bcd60e51b815260206004820181905260248201527f4163636573732064656e69656420286f6e6c79206772616e64206f776e657229604482015290519081900360640190fd5b600180546001600160a01b0319166001600160a01b0392909216919091179055565b600154600160a01b900460ff1615610dfb576040805162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b604482015290519081900360640190fd5b604080516336d30e8f60e11b8152336004820152815160009283923092636da61d1e92602480840193919291829003018186803b158015610e3b57600080fd5b505afa158015610e4f573d6000803e3d6000fd5b505050506040513d6040811015610e6557600080fd5b50805160209182015133600090815260029093526040909220600301549093509091508111610edb576040805162461bcd60e51b815260206004820152601760248201527f7573657273207061796f75747320636f6d706c65746564000000000000000000604482015290519081900360640190fd5b8115610f4157336000908152600260205260409020600301548201811015610f155733600090815260026020526040902060030154810391505b33600081815260026020526040902060088101805485019055600301805484019055610f419083611dd4565b3360009081526002602052604090206003015481118015610f7357503360009081526002602052604090206004015415155b15610fdb5733600090815260026020526040902060048101546003909101548101821015610fb257503360009081526002602052604090206003015481035b336000908152600260205260409020600481018054839003905560030180548201905591909101905b336000908152600260205260409020600301548111801561100d57503360009081526002602052604090206005015415155b15611075573360009081526002602052604090206005810154600390910154810182101561104c57503360009081526002602052604090206003015481035b336000908152600260205260409020600581018054839003905560030180548201905591909101905b33600090815260026020526040902060030154811180156110a757503360009081526002602052604090206006015415155b1561110f57336000908152600260205260409020600681015460039091015481018210156110e657503360009081526002602052604090206003015481035b336000908152600260205260409020600681018054839003905560030180548201905591909101905b60008211611152576040805162461bcd60e51b815260206004820152600b60248201526a16995c9bc81c185e5bdd5d60aa1b604482015290519081900360640190fd5b33600081815260026020526040808220600b9081018054870190558054860190555184156108fc0291859190818181858888f1935050505015801561119b573d6000803e3d6000fd5b5060408051838152905133917f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a9424364919081900360200190a2336000908152600260205260409020600301548111611234573360008181526002602090815260409182902060030154825190815291517f97ddeb77c85e6a1dd99a34fe2bb1a4f9b211d5ffced7a707de9dbeb24363d0e49281900390910190a25b5050565b611240611f0b565b6000546001600160a01b0390811691161461128c5760405162461bcd60e51b81526004018080602001828103825260268152602001806120646026913960400191505060405180910390fd5b611294611f0f565b565b600154600160a01b900460ff1690565b600581815481106112b357fe5b9060005260206000209060209182820401919006915054906101000a900460ff1681565b6001600160a01b03811660009081526002602090815260408083206007015481516322566bcf60e21b81526004810191909152905183923092638959af3c9260248083019392829003018186803b15801561133157600080fd5b505afa158015611345573d6000803e3d6000fd5b505050506040513d602081101561135b57600080fd5b50516001600160a01b0384166000908152600260205260409020600801549091508111156113f4576001600160a01b03831660009081526002602052604090206008810154600982015460079092015460326201518064ffffffffff9094164203939093040291909104819003925082018110156113f4576001600160a01b038316600090815260026020526040902060080154810391505b915091565b611401611f0b565b6000546001600160a01b0390811691161461144d5760405162461bcd60e51b81526004018080602001828103825260268152602001806120646026913960400191505060405180910390fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b600960209081526000928352604080842090915290825290205481565b6001600160a01b0316600090815260026020819052604090912090810154600a820154600b830154600c90930154919390929190565b6114f2611f0b565b6000546001600160a01b0390811691161461153e5760405162461bcd60e51b81526004018080602001828103825260268152602001806120646026913960400191505060405180910390fd5b611294611fb7565b600a6028919091020490565b6000546001600160a01b031690565b60075481565b600b5481565b60065464ffffffffff1681565b600260208190526000918252604090912080546001820154928201546003830154600484015460058501546006860154600787015460088801546009890154600a8a0154600b8b0154600c909b0154999b6001600160a01b03169a989997989697959694959394929364ffffffffff9092169290918d565b6115fa612045565b611602612045565b60005b60055460ff821610156116bc5760ff81166000908152600a60205260409020546001600160a01b0316611637576116bc565b60ff81166000818152600a60205260409020546001600160a01b03169084906004811061166057fe5b6001600160a01b0392831660209182029290920191909152600754600090815260098252604080822060ff8616808452600a85528284205490951683529092522054908390600481106116af57fe5b6020020152600101611605565b509091565b600381815481106116ce57fe5b600091825260209091200154905081565b600481815481106112b357fe5b6001600160a01b03828116600090815260026020526040902060010154161580156117295750816001600160a01b0316816001600160a01b031614155b801561177857506001600160a01b03811660009081526002602052604090206009015464ffffffffff161515806117785750611763611552565b6001600160a01b0316816001600160a01b0316145b15611234576001600160a01b038281166000818152600260208190526040808320600190810180546001600160a01b03191696881696871790558584528184209092018054909201909155517f9f4d150e5193cfa9a87226111d3b60b624d97ccc056eeeac1569af1ea27bf6419190a360005b60045460ff82161015610be4576001600160a01b03821661180b57610be4565b6001600160a01b039182166000908152600260205260409020600c8101805460019081019091559081015490921691016117eb565b600a602052600090815260409020546001600160a01b031681565b611863611f0b565b6000546001600160a01b039081169116146118af5760405162461bcd60e51b81526004018080602001828103825260268152602001806120646026913960400191505060405180910390fd5b611294611c75565b6118bf611f0b565b6000546001600160a01b0390811691161461190b5760405162461bcd60e51b81526004018080602001828103825260268152602001806120646026913960400191505060405180910390fd5b6001600160a01b0381166119505760405162461bcd60e51b815260040180806020018281038252602c81526020018061208a602c913960400191505060405180910390fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b600154600160a01b900460ff16156119fd576040805162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b604482015290519081900360640190fd5b611a0733826116ec565b611a113334610827565b50565b60088054601483040190556001600160a01b038281166000908152600260205260409020600101541680611a485750611234565b60075460009081526009602090815260408083206001600160a01b038516845290915281208054840190555b60055460ff82161015611c6f5760ff81166000908152600a60205260409020546001600160a01b0383811691161415611aac57611c6f565b60ff81166000908152600a60205260409020546001600160a01b0316611afc5760ff81166000908152600a6020526040902080546001600160a01b0319166001600160a01b038416179055611c6f565b600754600090815260096020908152604080832060ff85168452600a8352818420546001600160a01b0390811685529252808320549185168352909120541115611c6757600181015b60055460ff82161015611bd95760ff81166000908152600a60205260409020546001600160a01b0384811691161415611bd157805b60055460ff821611611bcb5760ff600182018181166000908152600a6020526040808220549390941681529290922080546001600160a01b0319166001600160a01b03909216919091179055611b7a565b50611bd9565b600101611b45565b50600554600019015b8160ff168160ff161115611c365760ff60001982018181166000908152600a6020526040808220549390941681529290922080546001600160a01b0319166001600160a01b03909216919091179055611be2565b5060ff81166000908152600a6020526040902080546001600160a01b0319166001600160a01b038416179055611c6f565b600101611a74565b50505050565b6006805464ffffffffff19164264ffffffffff16179055600780546001019055600854600a900460005b60055460ff82161015611d9b5760ff81166000908152600a60205260409020546001600160a01b0316611cd157611d9b565b6000606460058360ff1681548110611ce557fe5b60009182526020918290209181049091015460ff601f9092166101000a900416840281611d0e57fe5b60ff84166000818152600a6020818152604080842080546001600160a01b0390811686526002845282862060050180549990980498890190975560088054899003905594909352908152915481518581529151949550909216927fdbdfa5cb8586917247fbe7178cf53555d199e091a14b06f7de5a182ece2d453a9281900390910190a250600101611c9f565b5060005b60055460ff821610156112345760ff81166000908152600a6020526040902080546001600160a01b0319169055600101611d9f565b6001600160a01b03808316600090815260026020526040812060010154909116905b60045460ff82161015611c6f576001600160a01b038216611e1657611c6f565b6001600160a01b0382166000908152600260208190526040909120015460ff600183011611611ee2576000606460048360ff1681548110611e5357fe5b60009182526020918290209181049091015460ff601f9092166101000a900416850281611e7c57fe5b6001600160a01b03808616600081815260026020908152604091829020600601805496909504958601909455805185815290519495509189169390927f16e746f9be6c4b545700b04df27afb9fceabf59b94ef1c816e78a435059fabea928290030190a3505b6001600160a01b0391821660009081526002602052604090206001908101549092169101611df6565b3390565b600154600160a01b900460ff16611f64576040805162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b604482015290519081900360640190fd5b6001805460ff60a01b191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa611f9a611f0b565b604080516001600160a01b039092168252519081900360200190a1565b600154600160a01b900460ff1615612009576040805162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b604482015290519081900360640190fd5b6001805460ff60a01b1916600160a01b1790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258611f9a611f0b565b6040518060800160405280600490602082028036833750919291505056fe476f7665726e616e63653a2063616c6c6572206973206e6f742074686520476f7665726e6f72476f7665726e616e63653a206e657720476f7665726e6f7220697320746865207a65726f2061646472657373a26469706673582212200f8a2a871f00b84320378537c9acb54b99ef893ce738fb4400b2b0cfd5dc917a64736f6c63430006040033