6080604052620000126009600a62000457565b6200002190620f42406200046f565b60015561271060015460646200003891906200046f565b62000044919062000491565b60025561271060015461012c6200005c91906200046f565b62000068919062000491565b60035560c8600981905561012c600a55600b556102bc600c819055600d556000600e55612710600f556010805461ffff1916600190811790915554620186a090620000b6906102586200046f565b620000c2919062000491565b601355620186a06001546014620000da91906200046f565b620000e6919062000491565b601455348015620000f657600080fd5b50600080546001600160a01b031916331781556040805163c45a015560e01b81529051737a250d5630b4cf539739df2c5dacb4c659f2488d9291839163c45a0155916004808201926020929091908290030181865afa1580156200015e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001849190620004b4565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001d2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001f89190620004b4565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af115801562000246573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200026c9190620004b4565b600780546001600160a01b03199081166001600160a01b038681169190911790925560088054821692841692909217909155336000818152600560209081526040808320805460ff1990811660019081179092553085528285208054909116821790556010805462010000600160b01b0319166201000087021790556011805490961685179095559354838352600482528483208190559351938452939450909290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050620004df565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115620003995781600019048211156200037d576200037d62000342565b808516156200038b57918102915b93841c93908002906200035d565b509250929050565b600082620003b25750600162000451565b81620003c15750600062000451565b8160018114620003da5760028114620003e55762000405565b600191505062000451565b60ff841115620003f957620003f962000342565b50506001821b62000451565b5060208310610133831016604e8410600b84101617156200042a575081810a62000451565b62000436838362000358565b80600019048211156200044d576200044d62000342565b0290505b92915050565b60006200046860ff841683620003a1565b9392505050565b60008160001904831182151516156200048c576200048c62000342565b500290565b600082620004af57634e487b7160e01b600052601260045260246000fd5b500490565b600060208284031215620004c757600080fd5b81516001600160a01b03811681146200046857600080fd5b61169080620004ef6000396000f3fe6080604052600436106101185760003560e01c806378109e54116100a0578063a8aa1b3111610064578063a8aa1b3114610336578063a9059cbb14610356578063bbce2c1714610376578063dd62ed3e1461038b578063f2fde38b146103d157600080fd5b806378109e54146102975780637d1db4a5146102ad578063876448b6146102c3578063893d20e8146102d857806395d89b411461030a57600080fd5b80632f54bf6e116100e75780632f54bf6e146101da578063313ce567146102095780633f4218e014610225578063647a0fed1461025557806370a082311461027757600080fd5b806306fdde0314610124578063095ea7b31461016757806318160ddd1461019757806323b872dd146101ba57600080fd5b3661011f57005b600080fd5b34801561013057600080fd5b5060408051808201909152600881526741474e49204b414960c01b60208201525b60405161015e91906113aa565b60405180910390f35b34801561017357600080fd5b50610187610182366004611417565b6103f1565b604051901515815260200161015e565b3480156101a357600080fd5b506101ac610408565b60405190815260200161015e565b3480156101c657600080fd5b506101876101d5366004611443565b610439565b3480156101e657600080fd5b506101876101f5366004611484565b6000546001600160a01b0391821691161490565b34801561021557600080fd5b506040516009815260200161015e565b34801561023157600080fd5b50610187610240366004611484565b60056020526000908152604090205460ff1681565b34801561026157600080fd5b506102756102703660046114a1565b6104a3565b005b34801561028357600080fd5b506101ac610292366004611484565b61056b565b3480156102a357600080fd5b506101ac60035481565b3480156102b957600080fd5b506101ac60025481565b3480156102cf57600080fd5b506101ac610586565b3480156102e457600080fd5b506000546001600160a01b03165b6040516001600160a01b03909116815260200161015e565b34801561031657600080fd5b5060408051808201909152600381526224414b60e81b6020820152610151565b34801561034257600080fd5b506008546102f2906001600160a01b031681565b34801561036257600080fd5b50610187610371366004611417565b6105a6565b34801561038257600080fd5b506012546101ac565b34801561039757600080fd5b506101ac6103a63660046114a1565b6001600160a01b03918216600090815260066020908152604080832093909416825291909152205490565b3480156103dd57600080fd5b506102756103ec366004611484565b6105b3565b60006103fe33848461064a565b5060015b92915050565b6000610434610417600061056b565b61042e61042561dead61056b565b6001549061076e565b9061076e565b905090565b600061044684848461077a565b610498843361049385604051806060016040528060288152602001611633602891396001600160a01b038a16600090815260066020908152604080832033845290915290205491906108aa565b61064a565b5060015b9392505050565b6000546001600160a01b031633146104eb5760405162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b60448201526064015b60405180910390fd5b601080546001600160a01b0393841662010000810262010000600160b01b0319909216919091178255600090815260056020526040808220805460ff19908116600190811790925560118054969097166001600160a01b0319909616861790965593825290208054909316909117909155805461ff001916610100179055565b6001600160a01b031660009081526004602052604090205490565b6000610434610595600061056b565b6105a061dead61056b565b906108d6565b60006103fe33848461077a565b6000546001600160a01b031633146105f65760405162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b60448201526064016104e2565b600080546001600160a01b0319166001600160a01b0383169081179091556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639060200160405180910390a150565b6001600160a01b0383166106ac5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016104e2565b6001600160a01b03821661070d5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016104e2565b6001600160a01b0383811660008181526006602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b600061049c82846114f0565b6107858383836108e2565b61078f8383610a81565b61079a838383610b18565b6107a48383610c63565b6107af838383610cba565b6107b98282610d46565b6107c4838383610d69565b6001600160a01b0383166000908152600460205260409020546107e7908261076e565b6001600160a01b03841660009081526004602052604081209190915561080d8484610da1565b6108175781610822565b610822848484610de7565b6001600160a01b03841660009081526004602052604090205490915061084890826108d6565b6001600160a01b0380851660008181526004602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9061089c9085815260200190565b60405180910390a350505050565b600081848411156108ce5760405162461bcd60e51b81526004016104e291906113aa565b505050900390565b600061049c8284611507565b6001600160a01b0383166109465760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016104e2565b6001600160a01b0382166109a85760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016104e2565b60008111610a0a5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016104e2565b610a138361056b565b811115610a7c5760405162461bcd60e51b815260206004820152603160248201527f596f752061726520747279696e6720746f207472616e73666572206d6f7265206044820152707468616e20796f75722062616c616e636560781b60648201526084016104e2565b505050565b6001600160a01b03821660009081526005602052604090205460ff16158015610ac357506001600160a01b03811660009081526005602052604090205460ff16155b15610b1457601054610100900460ff16610b145760405162461bcd60e51b8152602060048201526012602482015271151c98591a5b99c814995cdd1c9a58dd195960721b60448201526064016104e2565b5050565b813b15158015610b3657506008546001600160a01b03848116911614155b8015610b415750823b155b15610b77576001546001600160a01b038316600090815260046020526040902054610b6c90836108d6565b1115610a7c57600080fd5b6001600160a01b03831660009081526005602052604090205460ff16158015610bb957506001600160a01b03821660009081526005602052604090205460ff16155b8015610bd057506001600160a01b03821661dead14155b8015610bea57506008546001600160a01b03838116911614155b15610a7c576003546001600160a01b038316600090815260046020526040902054610c1590836108d6565b1115610a7c5760405162461bcd60e51b815260206004820152601e60248201527f45786365656473206d6178696d756d2077616c6c657420616d6f756e742e000060448201526064016104e2565b6008546001600160a01b038281169116148015610c9957506001600160a01b03821660009081526005602052604090205460ff16155b15610b1457600160156000828254610cb19190611507565b90915550505050565b60025481111580610ce357506001600160a01b03831660009081526005602052604090205460ff165b80610d0657506001600160a01b03821660009081526005602052604090205460ff165b610a7c5760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b60448201526064016104e2565b610d508282610f0e565b15610b1457610d60601354610f84565b60006015555050565b610d738383610da1565b15610a7c57610d99600b54610d93600f548461113390919063ffffffff16565b9061113f565b601255505050565b6001600160a01b03821660009081526005602052604081205460ff1615801561049c5750506001600160a01b031660009081526005602052604090205460ff1615919050565b600080610df4858561114b565b1115610f07576000610e17610e09868661114b565b600f54610d93908690611133565b30600090815260046020526040902054909150610e3490826108d6565b30600081815260046020526040908190209290925590516001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610e859085815260200190565b60405180910390a3610ed330601060029054906101000a90046001600160a01b0316610ece610ec0600460095461113390919063ffffffff16565b600f54610d93908990611133565b61077a565b610ef53061dead610ece600b54610d93600f548961113390919063ffffffff16565b610eff838261076e565b91505061049c565b5092915050565b60008060145483101590506000601354610f273061056b565b601654911115915060ff16158015610f41575060105460ff165b8015610f4a5750815b8015610f6357506008546001600160a01b038681169116145b8015610f725750600260155410155b8015610f7b5750805b95945050505050565b6016805460ff19166001179055600954600b54600a54600092610fb992600292610d9392916105a0918591859184908461113f565b90506000610fdc82610fd66009548661113f90919063ffffffff16565b90611133565b90506000610fea848361076e565b905047610ff682611196565b6000611002478361076e565b9050600061102561101e6009548861076e90919063ffffffff16565b8390611133565b9050600061103e6009548361113f90919063ffffffff16565b905080156110505761105086826112f0565b600061107661106b6002600a5461113f90919063ffffffff16565b610d9385600261113f565b11156110d657601154600a546001600160a01b03909116906108fc906110ac906110a190600261113f565b610d9386600261113f565b6040518115909202916000818181858888f193505050501580156110d4573d6000803e3d6000fd5b505b471561111f576010546040516001600160a01b036201000090920491909116904780156108fc02916000818181858888f1935050505015801561111d573d6000803e3d6000fd5b505b50506016805460ff19169055505050505050565b600061049c828461151f565b600061049c8284611541565b6008546000906001600160a01b039081169083160361116d5750600d54610402565b6008546001600160a01b039081169084160361118c5750600c54610402565b50600e5492915050565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106111cb576111cb611560565b6001600160a01b03928316602091820292909201810191909152600754604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611224573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112489190611576565b8160018151811061125b5761125b611560565b6001600160a01b039283166020918202929092010152600754611281913091168461064a565b60075460405163791ac94760e01b81526001600160a01b039091169063791ac947906112ba908590600090869030904290600401611593565b600060405180830381600087803b1580156112d457600080fd5b505af11580156112e8573d6000803e3d6000fd5b505050505050565b6007546113089030906001600160a01b03168461064a565b60075460105460405163f305d71960e01b81523060048201526024810185905260006044820181905260648201526001600160a01b0362010000909204821660848201524260a482015291169063f305d71990839060c40160606040518083038185885af115801561137e573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906113a39190611604565b5050505050565b600060208083528351808285015260005b818110156113d7578581018301518582016040015282016113bb565b818111156113e9576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b038116811461141457600080fd5b50565b6000806040838503121561142a57600080fd5b8235611435816113ff565b946020939093013593505050565b60008060006060848603121561145857600080fd5b8335611463816113ff565b92506020840135611473816113ff565b929592945050506040919091013590565b60006020828403121561149657600080fd5b813561049c816113ff565b600080604083850312156114b457600080fd5b82356114bf816113ff565b915060208301356114cf816113ff565b809150509250929050565b634e487b7160e01b600052601160045260246000fd5b600082821015611502576115026114da565b500390565b6000821982111561151a5761151a6114da565b500190565b60008261153c57634e487b7160e01b600052601260045260246000fd5b500490565b600081600019048311821515161561155b5761155b6114da565b500290565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561158857600080fd5b815161049c816113ff565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156115e35784516001600160a01b0316835293830193918301916001016115be565b50506001600160a01b03969096166060850152505050608001529392505050565b60008060006060848603121561161957600080fd5b835192506020840151915060408401519050925092509256fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220532fb0f6ef6b8fa82b8972346163ed3aafad4c509ebbe8c210bb3275a245941064736f6c634300080f0033