60806040526007805460ff60a81b1916600160a81b17905562000020601290565b6200002d90600a620005c4565b6200003d9063fac14360620005dc565b6008556200004e6012600a620005c4565b6200005e9063fac14360620005dc565b6009556200006f6012600a620005c4565b6200007f9063fac14360620005dc565b600a5560126200009190600a620005c4565b620000a2906401f58286c1620005dc565b600b55600c80546001600160a01b031916732f121367feda34418f3a8e13231eef5c839e90ee1790556040805160608082018352601e80835260006020808501829052938501819052600d91909155600e819055600f8190558351808301855260468082528185018390529085018290526010556011819055601281905583519182018452808252918101829052909101819052601381905560148190556015553480156200015057600080fd5b5060405180604001604052806004815260200163466f726760e01b81525060405180604001604052806004815260200163464f524760e01b81525081600390816200019c91906200069b565b506004620001ab82826200069b565b505050620001c8620001c26200040560201b60201c565b62000409565b600c54620001fe906001600160a01b0316620001e76012600a620005c4565b620001f8906461f37e51e0620005dc565b6200045b565b6000737a250d5630b4cf539739df2c5dacb4c659f2488d90506000816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000258573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200027e919062000767565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002cc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002f2919062000767565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af115801562000340573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000366919062000767565b600680546001600160a01b03199081166001600160a01b0395861617909155600780549091169184169190911790555030600090815260166020526040808220805460ff1990811660019081179092557f290d80ce586bfe95e1ebf348e3ba109df813891ad867417e64d38c5a50473b5780548216831790553384528284208054821683179055600c5490941683529120805490921617905562000792565b3390565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b60028190556001600160a01b038216600081815260208181526040808320859055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b634e487b7160e01b600052601160045260246000fd5b600181815b8085111562000506578160001904821115620004ea57620004ea620004af565b80851615620004f857918102915b93841c9390800290620004ca565b509250929050565b6000826200051f57506001620005be565b816200052e57506000620005be565b8160018114620005475760028114620005525762000572565b6001915050620005be565b60ff841115620005665762000566620004af565b50506001821b620005be565b5060208310610133831016604e8410600b841016171562000597575081810a620005be565b620005a38383620004c5565b8060001904821115620005ba57620005ba620004af565b0290505b92915050565b6000620005d560ff8416836200050e565b9392505050565b8082028115828204841417620005be57620005be620004af565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200062157607f821691505b6020821081036200064257634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200069657600081815260208120601f850160051c81016020861015620006715750805b601f850160051c820191505b8181101562000692578281556001016200067d565b5050505b505050565b81516001600160401b03811115620006b757620006b7620005f6565b620006cf81620006c884546200060c565b8462000648565b602080601f831160018114620007075760008415620006ee5750858301515b600019600386901b1c1916600185901b17855562000692565b600085815260208120601f198616915b82811015620007385788860151825594840194600190910190840162000717565b5085821015620007575787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6000602082840312156200077a57600080fd5b81516001600160a01b0381168114620005d557600080fd5b61211080620007a26000396000f3fe6080604052600436106102085760003560e01c8063715018a611610118578063a457c2d7116100a0578063dd62ed3e1161006f578063dd62ed3e146105f2578063f2fde38b14610638578063f66895a314610658578063f887ea4014610677578063fbe6324e1461069757600080fd5b8063a457c2d714610562578063a8aa1b3114610582578063a9059cbb146105a2578063c5d32bb2146105c257600080fd5b806385141a77116100e757806385141a77146104d95780638cd4426d146104ef5780638da5cb5b1461050f57806395d89b411461052d5780639e252f001461054257600080fd5b8063715018a61461044d578063728f8eea1461046257806375f0a8741461048157806379cc6790146104b957600080fd5b8063395093511161019b5780635331803c1161016a5780635331803c1461039b578063652e2f04146103d557806366a88d96146103eb5780636aa5b37f1461040157806370a082311461041757600080fd5b80633950935114610326578063420ee01d1461034657806342966c681461035b57806342b6fa111461037b57600080fd5b806318160ddd116101d757806318160ddd146102b557806323b872dd146102ca5780632f37aa6d146102ea578063313ce5671461030a57600080fd5b806306fdde0314610214578063095ea7b31461023f5780631340538f1461026f5780631675d8021461029157600080fd5b3661020f57005b600080fd5b34801561022057600080fd5b506102296106b8565b6040516102369190611c81565b60405180910390f35b34801561024b57600080fd5b5061025f61025a366004611ce4565b61074a565b6040519015158152602001610236565b34801561027b57600080fd5b5061028f61028a366004611d1e565b610761565b005b34801561029d57600080fd5b506102a760085481565b604051908152602001610236565b3480156102c157600080fd5b506002546102a7565b3480156102d657600080fd5b5061025f6102e5366004611d42565b6107b2565b3480156102f657600080fd5b5061028f610305366004611d83565b610863565b34801561031657600080fd5b5060405160128152602001610236565b34801561033257600080fd5b5061025f610341366004611ce4565b6108f8565b34801561035257600080fd5b5061028f61092f565b34801561036757600080fd5b5061028f610376366004611da5565b610a4e565b34801561038757600080fd5b5061028f610396366004611da5565b610a5b565b3480156103a757600080fd5b506013546014546015546103ba92919083565b60408051938452602084019290925290820152606001610236565b3480156103e157600080fd5b506102a7600a5481565b3480156103f757600080fd5b506102a7600b5481565b34801561040d57600080fd5b506102a760095481565b34801561042357600080fd5b506102a7610432366004611dbe565b6001600160a01b031660009081526020819052604090205490565b34801561045957600080fd5b5061028f610b28565b34801561046e57600080fd5b50600d54600e54600f546103ba92919083565b34801561048d57600080fd5b50600c546104a1906001600160a01b031681565b6040516001600160a01b039091168152602001610236565b3480156104c557600080fd5b5061028f6104d4366004611ce4565b610b5e565b3480156104e557600080fd5b506104a161dead81565b3480156104fb57600080fd5b5061028f61050a366004611ce4565b610b77565b34801561051b57600080fd5b506005546001600160a01b03166104a1565b34801561053957600080fd5b50610229610c38565b34801561054e57600080fd5b5061028f61055d366004611da5565b610c47565b34801561056e57600080fd5b5061025f61057d366004611ce4565b610cab565b34801561058e57600080fd5b506007546104a1906001600160a01b031681565b3480156105ae57600080fd5b5061025f6105bd366004611ce4565b610d46565b3480156105ce57600080fd5b5061025f6105dd366004611dbe565b60166020526000908152604090205460ff1681565b3480156105fe57600080fd5b506102a761060d366004611ddb565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b34801561064457600080fd5b5061028f610653366004611dbe565b610d53565b34801561066457600080fd5b506010546011546012546103ba92919083565b34801561068357600080fd5b506006546104a1906001600160a01b031681565b3480156106a357600080fd5b5060075461025f90600160a81b900460ff1681565b6060600380546106c790611e14565b80601f01602080910402602001604051908101604052809291908181526020018280546106f390611e14565b80156107405780601f1061071557610100808354040283529160200191610740565b820191906000526020600020905b81548152906001019060200180831161072357829003601f168201915b5050505050905090565b6000610757338484610deb565b5060015b92915050565b6005546001600160a01b031633146107945760405162461bcd60e51b815260040161078b90611e4e565b60405180910390fd5b60078054911515600160a81b0260ff60a81b19909216919091179055565b60006107bf848484610f0f565b6001600160a01b0384166000908152600160209081526040808320338452909152902054828110156108445760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b606482015260840161078b565b61085885336108538685611e99565b610deb565b506001949350505050565b6005546001600160a01b0316331461088d5760405162461bcd60e51b815260040161078b90611e4e565b606382111561089b57600080fd5b60638111156108a957600080fd5b604080516060808201835284825260006020808401829052928401819052600d95909555600e859055600f85905582519081018352838152908101849052018290526010556011819055601255565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091610757918590610853908690611eac565b6005546001600160a01b031633146109595760405162461bcd60e51b815260040161078b90611e4e565b600254600955600254600a55600254600b556040805160608082018352600280835260006020808501829052938501819052600d829055600e819055600f81905584519283018552818352928201839052920181905260109190915560118190556012556109c5610b28565b600954600a54600b5460408051938452602084019290925282820152517f71e50fc869ff266df718ea6817d210f1b19d3d84b5d3dcfb72735630d5403d359181900360600190a1604080516000808252602082018190528183015290517f2862e186e6f0269fce86721e7c136c9a03d0672316fb9a878885a07f0a2b09289181900360600190a1565b610a58338261142d565b50565b6005546001600160a01b03163314610a855760405162461bcd60e51b815260040161078b90611e4e565b62e4e1c08111158015610a985750600081115b610b0c576040805162461bcd60e51b81526020600482015260248101919091527f53776170207468726573686f6c6420616d6f756e742073686f756c642062652060448201527f6c6f776572206f7220657571616c20746f20312e3525206f6620746f6b656e73606482015260840161078b565b610b186012600a611fa3565b610b229082611fb2565b60085550565b6005546001600160a01b03163314610b525760405162461bcd60e51b815260040161078b90611e4e565b610b5c6000611563565b565b610b698233836115b5565b610b73828261142d565b5050565b6005546001600160a01b03163314610ba15760405162461bcd60e51b815260040161078b90611e4e565b816001600160a01b031663a9059cbb610bc26005546001600160a01b031690565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602481018490526044016020604051808303816000875af1158015610c0f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c339190611fc9565b505050565b6060600480546106c790611e14565b6005546001600160a01b03163314610c715760405162461bcd60e51b815260040161078b90611e4e565b6005546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015610b73573d6000803e3d6000fd5b3360009081526001602090815260408083206001600160a01b038616845290915281205482811015610d2d5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b606482015260840161078b565b610d3c33856108538685611e99565b5060019392505050565b6000610757338484610f0f565b6005546001600160a01b03163314610d7d5760405162461bcd60e51b815260040161078b90611e4e565b6001600160a01b038116610de25760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161078b565b610a5881611563565b6001600160a01b038316610e4d5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161078b565b6001600160a01b038216610eae5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161078b565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60008111610f715760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b606482015260840161078b565b6007546001600160a01b038481169116148015610fa757506001600160a01b03821660009081526016602052604090205460ff16155b8015610fbd5750600754600160a01b900460ff16155b1561108f576009548111156110145760405162461bcd60e51b815260206004820152601d60248201527f596f752061726520657863656564696e67206d61784275794c696d6974000000604482015260640161078b565b600b5481611037846001600160a01b031660009081526020819052604090205490565b6110419190611eac565b111561108f5760405162461bcd60e51b815260206004820181905260248201527f596f752061726520657863656564696e67206d617857616c6c65744c696d6974604482015260640161078b565b6007546001600160a01b038481169116148015906110c657506001600160a01b03821660009081526016602052604090205460ff16155b80156110eb57506001600160a01b03831660009081526016602052604090205460ff16155b80156111015750600754600160a01b900460ff16155b156111e857600a548111156111585760405162461bcd60e51b815260206004820152601e60248201527f596f752061726520657863656564696e67206d617853656c6c4c696d69740000604482015260640161078b565b6007546001600160a01b038381169116146111e857600b5481611190846001600160a01b031660009081526020819052604090205490565b61119a9190611eac565b11156111e85760405162461bcd60e51b815260206004820181905260248201527f596f752061726520657863656564696e67206d617857616c6c65744c696d6974604482015260640161078b565b600080600080600061121460405180606001604052806000815260200160008152602001600081525090565b600754600160a01b900460ff168061124457506001600160a01b03891660009081526016602052604090205460ff165b8061126757506001600160a01b03881660009081526016602052604090205460ff165b15611275576000935061135a565b6007546001600160a01b03908116908916036112ca5760105460115461129b9190611eac565b60125460408051606081018252601054815260115460208201529081018290529197508796509350905061135a565b6007546001600160a01b03908116908a160361131f57600d54600e546112f09190611eac565b600f5460408051606081018252600d548152600e5460208201529081018290529197508796509350905061135a565b60135460145461132f9190611eac565b6015546040805160608101825260135481526014546020820152908101829052919750879650935090505b60646113668689611fb2565b6113709190611fe6565b9350606461137e8489611fb2565b6113889190611fe6565b600754909250600160a81b900460ff1680156113b257506007546001600160a01b038a8116911614155b156113c1576113c18682611647565b6113df89896113d08588611eac565b6113da908b611e99565b611784565b81156113ef576113ef898361142d565b83156114225785156114225760006064611409888a611fb2565b6114139190611fe6565b90506114208a3083611784565b505b505050505050505050565b6001600160a01b03821661148d5760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b606482015260840161078b565b6001600160a01b038216600090815260208190526040902054818110156115015760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b606482015260840161078b565b6001600160a01b038316600081815260208181526040918290208585039055600280548690039055905184815261dead92917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3505050565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b03838116600090815260016020908152604080832093861683529290522054600019811461164157818110156116345760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000604482015260640161078b565b6116418484848403610deb565b50505050565b600754600160a01b900460ff16610b73576007805460ff60a01b1916600160a01b179055811561177357306000908152602081905260409020546008548110611771576001600854111561169a57506008545b60006116a7846002611fb2565b90506000818460200151846116bc9190611fb2565b6116c69190611fe6565b905060006116d48285611e99565b9050476116e08261195c565b60006116ec8247611e99565b905060008760200151866117009190611e99565b61170a9083611fe6565b9050600088602001518261171e9190611fb2565b90508015611730576117308682611ab6565b8851600090611740846002611fb2565b61174a9190611fb2565b9050801561176857600c54611768906001600160a01b031682611b68565b50505050505050505b505b6007805460ff60a01b191690555050565b6001600160a01b0383166117e85760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161078b565b6001600160a01b03821661184a5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161078b565b6001600160a01b038316600090815260208190526040902054818110156118c25760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b606482015260840161078b565b6118cc8282611e99565b6001600160a01b038086166000908152602081905260408082209390935590851681529081208054849290611902908490611eac565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161194e91815260200190565b60405180910390a350505050565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061199157611991612008565b6001600160a01b03928316602091820292909201810191909152600654604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156119ea573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a0e919061201e565b81600181518110611a2157611a21612008565b6001600160a01b039283166020918202929092010152600654611a479130911684610deb565b60065460405163791ac94760e01b81526001600160a01b039091169063791ac94790611a8090859060009086903090429060040161203b565b600060405180830381600087803b158015611a9a57600080fd5b505af1158015611aae573d6000803e3d6000fd5b505050505050565b600654611ace9030906001600160a01b031684610deb565b60065460405163f305d71960e01b815230600482015260248101849052600060448201819052606482015261dead60848201524260a48201526001600160a01b039091169063f305d71990839060c40160606040518083038185885af1158015611b3c573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611b6191906120ac565b5050505050565b80471015611bb85760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e6365000000604482015260640161078b565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114611c05576040519150601f19603f3d011682016040523d82523d6000602084013e611c0a565b606091505b5050905080610c335760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d61792068617665207265766572746564000000000000606482015260840161078b565b600060208083528351808285015260005b81811015611cae57858101830151858201604001528201611c92565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114610a5857600080fd5b60008060408385031215611cf757600080fd5b8235611d0281611ccf565b946020939093013593505050565b8015158114610a5857600080fd5b600060208284031215611d3057600080fd5b8135611d3b81611d10565b9392505050565b600080600060608486031215611d5757600080fd5b8335611d6281611ccf565b92506020840135611d7281611ccf565b929592945050506040919091013590565b60008060408385031215611d9657600080fd5b50508035926020909101359150565b600060208284031215611db757600080fd5b5035919050565b600060208284031215611dd057600080fd5b8135611d3b81611ccf565b60008060408385031215611dee57600080fd5b8235611df981611ccf565b91506020830135611e0981611ccf565b809150509250929050565b600181811c90821680611e2857607f821691505b602082108103611e4857634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b8181038181111561075b5761075b611e83565b8082018082111561075b5761075b611e83565b600181815b80851115611efa578160001904821115611ee057611ee0611e83565b80851615611eed57918102915b93841c9390800290611ec4565b509250929050565b600082611f115750600161075b565b81611f1e5750600061075b565b8160018114611f345760028114611f3e57611f5a565b600191505061075b565b60ff841115611f4f57611f4f611e83565b50506001821b61075b565b5060208310610133831016604e8410600b8410161715611f7d575081810a61075b565b611f878383611ebf565b8060001904821115611f9b57611f9b611e83565b029392505050565b6000611d3b60ff841683611f02565b808202811582820484141761075b5761075b611e83565b600060208284031215611fdb57600080fd5b8151611d3b81611d10565b60008261200357634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561203057600080fd5b8151611d3b81611ccf565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b8181101561208b5784516001600160a01b031683529383019391830191600101612066565b50506001600160a01b03969096166060850152505050608001529392505050565b6000806000606084860312156120c157600080fd5b835192506020840151915060408401519050925092509256fea2646970667358221220e44d51c64caf69817f392a496a62da5b36141b4e6e34a90b517feec694eab07a64736f6c63430008130033