60806040526000600481905560059081556006805460ff1916600117905564e8d4a510006008556009553480156200003657600080fd5b5062000041620003ee565b600080546001600160a01b0319166001600160a01b0392909216919091179055620000f9620000b66064620000a2816200007e6012600a620005d6565b6200008e90633b9aca00620006c1565b620003f260201b620006f81790919060201c565b6200044060201b620007391790919060201c565b60026000620000c4620003ee565b6001600160a01b03166001600160a01b0316815260200190815260200160002054620004c560201b620007b21790919060201c565b6002600062000107620003ee565b6001600160a01b039081168252602080830193909352604091820160002093909355600780546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d1790819055815163c45a015560e01b8152915193169263c45a015592600480840193919291829003018186803b1580156200018657600080fd5b505afa1580156200019b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001c191906200050b565b6001600160a01b031663c9c6539630600760009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156200021f57600080fd5b505afa15801562000234573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200025a91906200050b565b6040518363ffffffff1660e01b81526004016200027992919062000534565b602060405180830381600087803b1580156200029457600080fd5b505af1158015620002a9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002cf91906200050b565b60068054610100600160a81b0319166101006001600160a01b0393841681029190911791829055600360208190527ffb19a963956c9cb662dd3ae48988c4b90766df71ea130109840abe0a1b23dba8805460ff1916600190811790915591909204909216600090815262000342620004fc565b6001600160a01b0316815260208082019290925260409081016000908120805494151560ff1995861617905530815260039092529020805490911660011790556200038c620003ee565b6001600160a01b031660007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef620003d16064620000a2816200007e6012600a620005d6565b604051620003e091906200054e565b60405180910390a362000726565b3390565b60008262000403575060006200043a565b6200040f8284620006c1565b9050816200041e848362000572565b146200043a57634e487b7160e01b600052600160045260246000fd5b92915050565b60008082116200046057634e487b7160e01b600052600160045260246000fd5b60006200046e838562000572565b90506200047c8385620006e3565b620004888285620006c1565b62000494919062000557565b8414620004b157634e487b7160e01b600052600160045260246000fd5b620004bd838562000572565b949350505050565b600080620004d4838562000557565b905083811015620004f557634e487b7160e01b600052600160045260246000fd5b9392505050565b6000546001600160a01b031690565b6000602082840312156200051d578081fd5b81516001600160a01b0381168114620004f5578182fd5b6001600160a01b0392831681529116602082015260400190565b90815260200190565b600082198211156200056d576200056d620006fa565b500190565b60008262000584576200058462000710565b500490565b80825b60018086116200059d5750620005cd565b818704821115620005b257620005b2620006fa565b80861615620005c057918102915b9490941c9380026200058c565b94509492505050565b6000620004f560001960ff851684600082620005f557506001620004f5565b816200060457506000620004f5565b81600181146200061d576002811462000628576200065c565b6001915050620004f5565b60ff8411156200063c576200063c620006fa565b6001841b915084821115620006555762000655620006fa565b50620004f5565b5060208310610133831016604e8410600b841016171562000694575081810a838111156200068e576200068e620006fa565b620004f5565b620006a3848484600162000589565b808604821115620006b857620006b8620006fa565b02949350505050565b6000816000190483118215151615620006de57620006de620006fa565b500290565b600082620006f557620006f562000710565b500690565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b61118880620007366000396000f3fe6080604052600436106100f75760003560e01c806370a082311161008a578063a9059cbb11610059578063a9059cbb14610277578063c9567bf914610297578063dd62ed3e146102ac578063e194c2b2146102cc576100fe565b806370a082311461020b5780638da5cb5b1461022b57806395d89b41146102405780639e94590b14610255576100fe565b806318160ddd116100c657806318160ddd1461019f57806323b872dd146101b4578063313ce567146101d45780633c9f5ed6146101f6576100fe565b806303c525731461010357806306fdde031461012e578063095ea7b3146101505780631694505e1461017d576100fe565b366100fe57005b600080fd5b34801561010f57600080fd5b506101186102e1565b6040516101259190610f67565b60405180910390f35b34801561013a57600080fd5b506101436102e7565b6040516101259190610d66565b34801561015c57600080fd5b5061017061016b366004610d1e565b61030a565b6040516101259190610d5b565b34801561018957600080fd5b50610192610328565b6040516101259190610d47565b3480156101ab57600080fd5b50610118610337565b3480156101c057600080fd5b506101706101cf366004610c65565b610358565b3480156101e057600080fd5b506101e96103c8565b6040516101259190610f70565b34801561020257600080fd5b506101706103cd565b34801561021757600080fd5b50610118610226366004610c19565b6103d6565b34801561023757600080fd5b506101926103f5565b34801561024c57600080fd5b50610143610404565b34801561026157600080fd5b50610275610270366004610ca0565b610421565b005b34801561028357600080fd5b50610170610292366004610d1e565b610693565b3480156102a357600080fd5b506102756106ab565b3480156102b857600080fd5b506101186102c7366004610c33565b6106c7565b3480156102d857600080fd5b506101186106f2565b60045481565b60408051808201909152600981526853686172706520414960b81b602082015290565b600061031e6103176107df565b84846107e3565b5060015b92915050565b6007546001600160a01b031681565b60006103456012600a610ff0565b61035390633b9aca006110c1565b905090565b60006103658484846108a0565b6103bd846103716107df565b6001600160a01b03871660009081526001602052604081206103b8918791906103986107df565b6001600160a01b0316815260208101919091526040016000205490610b12565b6107e3565b5060015b9392505050565b601290565b60065460ff1690565b6001600160a01b0381166000908152600260205260409020545b919050565b6000546001600160a01b031690565b60408051808201909152600381526253414960e81b602082015290565b6104296103f5565b6001600160a01b031661043a6107df565b6001600160a01b03161461044d57600080fd5b60005b8381101561068b576104b76104676012600a610ff0565b84848481811061048757634e487b7160e01b600052603260045260246000fd5b9050602002013561049891906110c1565b6001600160a01b03881660009081526002602052604090205490610b12565b6001600160a01b0387166000908152600260205260409020556105696104df6012600a610ff0565b8484848181106104ff57634e487b7160e01b600052603260045260246000fd5b9050602002013561051091906110c1565b6002600088888681811061053457634e487b7160e01b600052603260045260246000fd5b90506020020160208101906105499190610c19565b6001600160a01b03168152602081019190915260400160002054906107b2565b6002600087878581811061058d57634e487b7160e01b600052603260045260246000fd5b90506020020160208101906105a29190610c19565b6001600160a01b031681526020810191909152604001600020558484828181106105dc57634e487b7160e01b600052603260045260246000fd5b90506020020160208101906105f19190610c19565b6001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6012600a6106339190610ff0565b86868681811061065357634e487b7160e01b600052603260045260246000fd5b9050602002013561066491906110c1565b6040516106719190610f67565b60405180910390a380610683816110f7565b915050610450565b505050505050565b60008061069e6107df565b90506103bd8185856108a0565b6106b3610b3c565b6006805460ff19811660ff90911615179055565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b60055481565b60008261070757506000610322565b61071182846110c1565b90508161071e8483610f96565b1461032257634e487b7160e01b600052600160045260246000fd5b600080821161075857634e487b7160e01b600052600160045260246000fd5b60006107648385610f96565b90506107708385611112565b61077a82856110c1565b6107849190610f7e565b84146107a057634e487b7160e01b600052600160045260246000fd5b6107aa8385610f96565b949350505050565b6000806107bf8385610f7e565b9050838110156103c157634e487b7160e01b600052600160045260246000fd5b3390565b6001600160a01b0383166108125760405162461bcd60e51b815260040161080990610f23565b60405180910390fd5b6001600160a01b0382166108385760405162461bcd60e51b815260040161080990610dfc565b6001600160a01b0380841660008181526001602090815260408083209487168084529490915290819020849055517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590610893908590610f67565b60405180910390a3505050565b6001600160a01b0383166108c65760405162461bcd60e51b815260040161080990610ebb565b6001600160a01b0382166108ec5760405162461bcd60e51b815260040161080990610db9565b806108f6846103d6565b10156109145760405162461bcd60e51b815260040161080990610e3e565b6001600160a01b03831660009081526003602052604081205460ff1615801561095657506001600160a01b03831660009081526003602052604090205460ff16155b156109da5760065460ff1661097d5760405162461bcd60e51b815260040161080990610e84565b60646004548361098d91906110c1565b6109979190610f96565b6006549091506001600160a01b038481166101009092041614156109da576064600554836109c591906110c1565b6109cf9190610f96565b90506109da84610b73565b8015610a5357306000908152600260205260409020546109fb908290610f7e565b30600081815260026020526040908190209290925590516001600160a01b038616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610a4a908590610f67565b60405180910390a35b81610a5d856103d6565b610a6791906110e0565b6001600160a01b038516600090815260026020526040902055610a8a81836110e0565b6001600160a01b038416600090815260026020526040902054610aad9190610f7e565b6001600160a01b0380851660008181526002602052604090209290925585167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef610af784866110e0565b604051610b049190610f67565b60405180910390a350505050565b600081831015610b3257634e487b7160e01b600052600160045260246000fd5b6103c182846110e0565b610b446107df565b6000546001600160a01b03908116911614610b715760405162461bcd60e51b815260040161080990610f00565b565b6000610b7e826103d6565b1115610ba95760065460ff16610b9e57610b99600854610bac565b610ba9565b610ba9600954610bac565b50565b803a1115610ba957600080fd5b80356001600160a01b03811681146103f057600080fd5b60008083601f840112610be1578182fd5b50813567ffffffffffffffff811115610bf8578182fd5b6020830191508360208083028501011115610c1257600080fd5b9250929050565b600060208284031215610c2a578081fd5b6103c182610bb9565b60008060408385031215610c45578081fd5b610c4e83610bb9565b9150610c5c60208401610bb9565b90509250929050565b600080600060608486031215610c79578081fd5b610c8284610bb9565b9250610c9060208501610bb9565b9150604084013590509250925092565b600080600080600060608688031215610cb7578081fd5b610cc086610bb9565b9450602086013567ffffffffffffffff80821115610cdc578283fd5b610ce889838a01610bd0565b90965094506040880135915080821115610d00578283fd5b50610d0d88828901610bd0565b969995985093965092949392505050565b60008060408385031215610d30578182fd5b610d3983610bb9565b946020939093013593505050565b6001600160a01b0391909116815260200190565b901515815260200190565b6000602080835283518082850152825b81811015610d9257858101830151858201604001528201610d76565b81811115610da35783604083870101525b50601f01601f1916929092016040019392505050565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b60208082526022908201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604082015261737360f01b606082015260800190565b60208082526026908201527f4552524f523a2062616c616e6365206f662066726f6d206c657373207468616e6040820152652076616c756560d01b606082015260800190565b6020808252601d908201527f547261646520686173206e6f74206265656e206f70656e656420796574000000604082015260600190565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b6020808252600990820152682737ba1037bbb732b960b91b604082015260600190565b60208082526024908201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646040820152637265737360e01b606082015260800190565b90815260200190565b60ff91909116815260200190565b60008219821115610f9157610f91611126565b500190565b600082610fa557610fa561113c565b500490565b80825b6001808611610fbc5750610fe7565b818704821115610fce57610fce611126565b80861615610fdb57918102915b9490941c938002610fad565b94509492505050565b60006103c160001960ff85168460008261100c575060016103c1565b81611019575060006103c1565b816001811461102f576002811461103957611066565b60019150506103c1565b60ff84111561104a5761104a611126565b6001841b91508482111561106057611060611126565b506103c1565b5060208310610133831016604e8410600b8410161715611099575081810a8381111561109457611094611126565b6103c1565b6110a68484846001610faa565b8086048211156110b8576110b8611126565b02949350505050565b60008160001904831182151516156110db576110db611126565b500290565b6000828210156110f2576110f2611126565b500390565b600060001982141561110b5761110b611126565b5060010190565b6000826111215761112161113c565b500690565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fdfea2646970667358221220d29cbc5ca2465cb560beef31bd2b90dec5f2e9cb1d5e36d447aefe7b5f5f1da764736f6c63430008000033