60806040526200001b68056bc75e2d6310000060001962000520565b62000029906000196200054d565b600755600060098190556005600a55600b819055600f600c819055600d80546001600160b01b031916757a250d5630b4cf539739df2c5dacb4c659f2488d0000179055818155601081905560119190915560125560158054336001600160a01b031991821681179092556016805490911690911790556018805462ffffff60a01b19166201000160a01b17905568056bc75e2d631000006019819055620000fb906103e890620000e7906032620003ed602090811b62000ee817901c565b6200048460201b62000f711790919060201c565b601a556200012b633b9aca00620000e7600168056bc75e2d63100000620003ed60201b62000ee81790919060201c565b601b55652d79883d2000601c553480156200014557600080fd5b5060008054336001600160a01b031991821681178355600180549092168117909155604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3506007543360009081526003602090815260409182902092909255601780546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d908117909155815163c45a015560e01b815291519092839263c45a015592600480830193928290030181865afa15801562000210573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000236919062000567565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000284573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002aa919062000567565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015620002f8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200031e919062000567565b601880546001600160a01b0319166001600160a01b03928316179055600080548216815260066020526040808220805460ff1990811660019081179092553084528284208054821683179055601554851684528284208054821683179055601654909416835291208054909216179055336001600160a01b031660006001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef68056bc75e2d63100000604051620003de91815260200190565b60405180910390a35062000623565b60008260000362000401575060006200047e565b60006200040f838562000592565b9050826200041e8583620005b4565b146200047b5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084015b60405180910390fd5b90505b92915050565b60006200047b83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250620004ce60201b60201c565b60008183620004f25760405162461bcd60e51b8152600401620004729190620005cb565b506000620005018486620005b4565b95945050505050565b634e487b7160e01b600052601260045260246000fd5b6000826200053257620005326200050a565b500690565b634e487b7160e01b600052601160045260246000fd5b60008282101562000562576200056262000537565b500390565b6000602082840312156200057a57600080fd5b81516001600160a01b03811681146200047b57600080fd5b6000816000190483118215151615620005af57620005af62000537565b500290565b600082620005c657620005c66200050a565b500490565b600060208083528351808285015260005b81811015620005fa57858101830151858201604001528201620005dc565b818111156200060d576000604083870101525b50601f01601f1916929092016040019392505050565b61228680620006336000396000f3fe6080604052600436106102495760003560e01c806370a082311161013957806398a5c315116100b6578063c492f0461161007a578063c492f046146106e2578063caac793414610702578063dd62ed3e14610722578063e6a461ba14610768578063ea1644d514610787578063f2fde38b146107a757600080fd5b806398a5c3151461063d578063a2a957bb1461065d578063a9059cbb1461067d578063bfd792841461069d578063c3c8cd80146106cd57600080fd5b80638da5cb5b116100fd5780638da5cb5b146105885780638dbbad3a146105a65780638f70ccf7146105d65780638f9a55c0146105f657806395d89b411461060c57600080fd5b806370a08231146104f0578063715018a61461051057806374010ece146105255780637d1db4a5146105455780637f2feddc1461055b57600080fd5b8063313ce567116101c75780635ccaae031161018b5780635ccaae031461045b57806362940cc41461047b5780636b9990531461049b5780636d8aa8f8146104bb5780636fc3eaec146104db57600080fd5b8063313ce567146103c55780633d6a9afe146103e1578063496cfca31461040157806349bd5a5e146104215780635554757d1461044157600080fd5b806318160ddd1161020e57806318160ddd1461033e5780631f608c0e146103645780631ffc96071461037957806323b872dd1461038f5780632fd689e3146103af57600080fd5b8062b8cf2a1461025557806306fdde0314610277578063095ea7b3146102c157806310027bc5146102f15780631694505e1461030657600080fd5b3661025057005b600080fd5b34801561026157600080fd5b50610275610270366004611dd9565b6107c7565b005b34801561028357600080fd5b5060408051808201909152600f81526e45726f6368696b6120e7a59ee8bcbf60881b60208201525b6040516102b89190611e9e565b60405180910390f35b3480156102cd57600080fd5b506102e16102dc366004611ef3565b610866565b60405190151581526020016102b8565b3480156102fd57600080fd5b5061027561087d565b34801561031257600080fd5b50601754610326906001600160a01b031681565b6040516001600160a01b0390911681526020016102b8565b34801561034a57600080fd5b5068056bc75e2d631000005b6040519081526020016102b8565b34801561037057600080fd5b506102756108b8565b34801561038557600080fd5b50610356601b5481565b34801561039b57600080fd5b506102e16103aa366004611f1f565b610903565b3480156103bb57600080fd5b50610356601c5481565b3480156103d157600080fd5b50604051600981526020016102b8565b3480156103ed57600080fd5b50601554610326906001600160a01b031681565b34801561040d57600080fd5b5061027561041c366004611f70565b61096c565b34801561042d57600080fd5b50601854610326906001600160a01b031681565b34801561044d57600080fd5b50600d546102e19060ff1681565b34801561046757600080fd5b50610275610476366004611ff4565b610a22565b34801561048757600080fd5b50600154610326906001600160a01b031681565b3480156104a757600080fd5b506102756104b636600461200d565b610a66565b3480156104c757600080fd5b506102756104d636600461202a565b610ab1565b3480156104e757600080fd5b50610275610af9565b3480156104fc57600080fd5b5061035661050b36600461200d565b610b44565b34801561051c57600080fd5b50610275610b66565b34801561053157600080fd5b50610275610540366004611ff4565b610bda565b34801561055157600080fd5b5061035660195481565b34801561056757600080fd5b5061035661057636600461200d565b60146020526000908152604090205481565b34801561059457600080fd5b506000546001600160a01b0316610326565b3480156105b257600080fd5b506102e16105c136600461200d565b600e6020526000908152604090205460ff1681565b3480156105e257600080fd5b506102756105f136600461202a565b610c09565b34801561060257600080fd5b50610356601a5481565b34801561061857600080fd5b50604080518082019091526008815267244d494b4f53484960c01b60208201526102ab565b34801561064957600080fd5b50610275610658366004611ff4565b610c51565b34801561066957600080fd5b50610275610678366004612045565b610c80565b34801561068957600080fd5b506102e1610698366004611ef3565b610cbe565b3480156106a957600080fd5b506102e16106b836600461200d565b60136020526000908152604090205460ff1681565b3480156106d957600080fd5b50610275610ccb565b3480156106ee57600080fd5b506102756106fd366004611f70565b610d1f565b34801561070e57600080fd5b50601654610326906001600160a01b031681565b34801561072e57600080fd5b5061035661073d366004612077565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205490565b34801561077457600080fd5b50600d546102e190610100900460ff1681565b34801561079357600080fd5b506102756107a2366004611ff4565b610dba565b3480156107b357600080fd5b506102756107c236600461200d565b610dfe565b6000546001600160a01b031633146107fa5760405162461bcd60e51b81526004016107f1906120b0565b60405180910390fd5b60005b81518110156108625760016013600084848151811061081e5761081e6120e5565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff19169115159190911790558061085a81612111565b9150506107fd565b5050565b6000610873338484610fb3565b5060015b92915050565b6000546001600160a01b031633146108a75760405162461bcd60e51b81526004016107f1906120b0565b600d805461ffff1916610101179055565b6001546001600160a01b03163314806108db57506000546001600160a01b031633145b6108f75760405162461bcd60e51b81526004016107f1906120b0565b600d805460ff19169055565b60006109108484846110d7565b610962843361095d85604051806060016040528060288152602001612229602891396001600160a01b038a166000908152600560209081526040808320338452909152902054919061173c565b610fb3565b5060019392505050565b6001546001600160a01b031633148061098f57506000546001600160a01b031633145b6109ab5760405162461bcd60e51b81526004016107f1906120b0565b60005b82811015610a1c5781600e60008686858181106109cd576109cd6120e5565b90506020020160208101906109e2919061200d565b6001600160a01b031681526020810191909152604001600020805460ff191691151591909117905580610a1481612111565b9150506109ae565b50505050565b6001546001600160a01b0316331480610a4557506000546001600160a01b031633145b610a615760405162461bcd60e51b81526004016107f1906120b0565b601b55565b6000546001600160a01b03163314610a905760405162461bcd60e51b81526004016107f1906120b0565b6001600160a01b03166000908152601360205260409020805460ff19169055565b6000546001600160a01b03163314610adb5760405162461bcd60e51b81526004016107f1906120b0565b60188054911515600160b01b0260ff60b01b19909216919091179055565b6015546001600160a01b0316336001600160a01b03161480610b2e57506016546001600160a01b0316336001600160a01b0316145b610b3757600080fd5b47610b4181611776565b50565b6001600160a01b038116600090815260036020526040812054610877906117b0565b6000546001600160a01b03163314610b905760405162461bcd60e51b81526004016107f1906120b0565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b03163314610c045760405162461bcd60e51b81526004016107f1906120b0565b601955565b6000546001600160a01b03163314610c335760405162461bcd60e51b81526004016107f1906120b0565b60188054911515600160a01b0260ff60a01b19909216919091179055565b6000546001600160a01b03163314610c7b5760405162461bcd60e51b81526004016107f1906120b0565b601c55565b6000546001600160a01b03163314610caa5760405162461bcd60e51b81526004016107f1906120b0565b600993909355600b91909155600a55600c55565b60006108733384846110d7565b6015546001600160a01b0316336001600160a01b03161480610d0057506016546001600160a01b0316336001600160a01b0316145b610d0957600080fd5b6000610d1430610b44565b9050610b418161182d565b6000546001600160a01b03163314610d495760405162461bcd60e51b81526004016107f1906120b0565b60005b82811015610a1c578160066000868685818110610d6b57610d6b6120e5565b9050602002016020810190610d80919061200d565b6001600160a01b031681526020810191909152604001600020805460ff191691151591909117905580610db281612111565b915050610d4c565b6001546001600160a01b0316331480610ddd57506000546001600160a01b031633145b610df95760405162461bcd60e51b81526004016107f1906120b0565b601a55565b6000546001600160a01b03163314610e285760405162461bcd60e51b81526004016107f1906120b0565b6001600160a01b038116610e8d5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016107f1565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b600082600003610efa57506000610877565b6000610f06838561212a565b905082610f138583612149565b14610f6a5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084016107f1565b9392505050565b6000610f6a83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506119a7565b6001600160a01b0383166110155760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016107f1565b6001600160a01b0382166110765760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016107f1565b6001600160a01b0383811660008181526005602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b03831661113b5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016107f1565b6001600160a01b03821661119d5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016107f1565b600081116111ff5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016107f1565b6000546001600160a01b0384811691161480159061122b57506000546001600160a01b03838116911614155b1561163557601854600160a01b900460ff166112c4576000546001600160a01b038481169116146112c45760405162461bcd60e51b815260206004820152603f60248201527f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060448201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c65640060648201526084016107f1565b6019548111156113165760405162461bcd60e51b815260206004820152601c60248201527f544f4b454e3a204d6178205472616e73616374696f6e204c696d69740000000060448201526064016107f1565b6001600160a01b03831660009081526013602052604090205460ff1615801561135857506001600160a01b03821660009081526013602052604090205460ff16155b6113b05760405162461bcd60e51b815260206004820152602360248201527f544f4b454e3a20596f7572206163636f756e7420697320626c61636b6c69737460448201526265642160e81b60648201526084016107f1565b6018546001600160a01b0383811691161461143557601a54816113d284610b44565b6113dc919061216b565b106114355760405162461bcd60e51b815260206004820152602360248201527f544f4b454e3a2042616c616e636520657863656564732077616c6c65742073696044820152627a652160e81b60648201526084016107f1565b600d54610100900460ff16156114c2576001600160a01b0383166000908152600e602052604090205460ff16156114c257601b548111156114c25760405162461bcd60e51b815260206004820152602160248201527f506c6561736520636f6e746163742061646d696e20666f722076657374696e676044820152601760f91b60648201526084016107f1565b60006114cd30610b44565b601c546019549192508210159082106114e65760195491505b8080156114fd5750601854600160a81b900460ff16155b801561151757506018546001600160a01b03868116911614155b801561152c5750601854600160b01b900460ff165b801561155157506001600160a01b03851660009081526006602052604090205460ff16155b801561157657506001600160a01b03841660009081526006602052604090205460ff16155b15611596576115848261182d565b4780156115945761159447611776565b505b600d5460ff1680156115d557506018546001600160a01b038581169116148015906115d55750600d546001600160a01b03858116620100009092041614155b80156115ef57506000546001600160a01b03868116911614155b801561160957506000546001600160a01b03858116911614155b15611632576001600160a01b0384166000908152600e60205260409020805460ff191660011790555b50505b6001600160a01b03831660009081526006602052604090205460019060ff168061167757506001600160a01b03831660009081526006602052604090205460ff165b806116a957506018546001600160a01b038581169116148015906116a957506018546001600160a01b03848116911614155b156116b657506000611730565b6018546001600160a01b0385811691161480156116e157506017546001600160a01b03848116911614155b156116f357600954600f55600a546010555b6018546001600160a01b03848116911614801561171e57506017546001600160a01b03858116911614155b1561173057600b54600f55600c546010555b610a1c848484846119d5565b600081848411156117605760405162461bcd60e51b81526004016107f19190611e9e565b50600061176d8486612183565b95945050505050565b6016546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015610862573d6000803e3d6000fd5b60006007548211156118175760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b60648201526084016107f1565b6000611821611a03565b9050610f6a8382610f71565b6018805460ff60a81b1916600160a81b1790556040805160028082526060820183526000926020830190803683370190505090503081600081518110611875576118756120e5565b6001600160a01b03928316602091820292909201810191909152601754604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156118ce573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118f2919061219a565b81600181518110611905576119056120e5565b6001600160a01b03928316602091820292909201015260175461192b9130911684610fb3565b60175460405163791ac94760e01b81526001600160a01b039091169063791ac947906119649085906000908690309042906004016121b7565b600060405180830381600087803b15801561197e57600080fd5b505af1158015611992573d6000803e3d6000fd5b50506018805460ff60a81b1916905550505050565b600081836119c85760405162461bcd60e51b81526004016107f19190611e9e565b50600061176d8486612149565b806119e2576119e2611a26565b6119ed848484611a54565b80610a1c57610a1c601154600f55601254601055565b6000806000611a10611b4b565b9092509050611a1f8282610f71565b9250505090565b600f54158015611a365750601054155b15611a3d57565b600f80546011556010805460125560009182905555565b600080600080600080611a6687611b8d565b6001600160a01b038f16600090815260036020526040902054959b50939950919750955093509150611a989087611bea565b6001600160a01b03808b1660009081526003602052604080822093909355908a1681522054611ac79086611c2c565b6001600160a01b038916600090815260036020526040902055611ae981611c8b565b611af38483611cd5565b876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051611b3891815260200190565b60405180910390a3505050505050505050565b600754600090819068056bc75e2d63100000611b678282610f71565b821015611b845750506007549268056bc75e2d6310000092509050565b90939092509050565b6000806000806000806000806000611baa8a600f54601054611cf9565b9250925092506000611bba611a03565b90506000806000611bcd8e878787611d4e565b919e509c509a509598509396509194505050505091939550919395565b6000610f6a83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061173c565b600080611c39838561216b565b905083811015610f6a5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016107f1565b6000611c95611a03565b90506000611ca38383610ee8565b30600090815260036020526040902054909150611cc09082611c2c565b30600090815260036020526040902055505050565b600754611ce29083611bea565b600755600854611cf29082611c2c565b6008555050565b6000808080611d136064611d0d8989610ee8565b90610f71565b90506000611d266064611d0d8a89610ee8565b90506000611d3e82611d388b86611bea565b90611bea565b9992985090965090945050505050565b6000808080611d5d8886610ee8565b90506000611d6b8887610ee8565b90506000611d798888610ee8565b90506000611d8b82611d388686611bea565b939b939a50919850919650505050505050565b634e487b7160e01b600052604160045260246000fd5b6001600160a01b0381168114610b4157600080fd5b8035611dd481611db4565b919050565b60006020808385031215611dec57600080fd5b823567ffffffffffffffff80821115611e0457600080fd5b818501915085601f830112611e1857600080fd5b813581811115611e2a57611e2a611d9e565b8060051b604051601f19603f83011681018181108582111715611e4f57611e4f611d9e565b604052918252848201925083810185019188831115611e6d57600080fd5b938501935b82851015611e9257611e8385611dc9565b84529385019392850192611e72565b98975050505050505050565b600060208083528351808285015260005b81811015611ecb57858101830151858201604001528201611eaf565b81811115611edd576000604083870101525b50601f01601f1916929092016040019392505050565b60008060408385031215611f0657600080fd5b8235611f1181611db4565b946020939093013593505050565b600080600060608486031215611f3457600080fd5b8335611f3f81611db4565b92506020840135611f4f81611db4565b929592945050506040919091013590565b80358015158114611dd457600080fd5b600080600060408486031215611f8557600080fd5b833567ffffffffffffffff80821115611f9d57600080fd5b818601915086601f830112611fb157600080fd5b813581811115611fc057600080fd5b8760208260051b8501011115611fd557600080fd5b602092830195509350611feb9186019050611f60565b90509250925092565b60006020828403121561200657600080fd5b5035919050565b60006020828403121561201f57600080fd5b8135610f6a81611db4565b60006020828403121561203c57600080fd5b610f6a82611f60565b6000806000806080858703121561205b57600080fd5b5050823594602084013594506040840135936060013592509050565b6000806040838503121561208a57600080fd5b823561209581611db4565b915060208301356120a581611db4565b809150509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600060018201612123576121236120fb565b5060010190565b6000816000190483118215151615612144576121446120fb565b500290565b60008261216657634e487b7160e01b600052601260045260246000fd5b500490565b6000821982111561217e5761217e6120fb565b500190565b600082821015612195576121956120fb565b500390565b6000602082840312156121ac57600080fd5b8151610f6a81611db4565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156122075784516001600160a01b0316835293830193918301916001016121e2565b50506001600160a01b0396909616606085015250505060800152939250505056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212204d31d368aa7b91afe7621bb25ee098ef95fecc9698d45457a2220bee4fc882f964736f6c634300080f0033