60806040526003805461ffff60a01b191690556000600681905560078190556016600881905560146009819055600a829055600b819055600c91909155600d91909155600e80546001600160a01b0319167322885cd45fa456fb761c00eae4e366e95b6e7e39179055671d30f4a164cba000601281905560138190559055673a61e942c997400060155534801561009557600080fd5b5060006100a06101d9565b600080546001600160a01b0319166001600160a01b0383169081178255604051929350917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3506816ce3f1e16bf150000600f60006101006101d9565b6001600160a01b03166001600160a01b03168152602001908152602001600020819055506001601160006101386101dd60201b60201c565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff19968716179055600e54909116815260119092529020805490911660011790556101876101d9565b604080516816ce3f1e16bf150000815290516001600160a01b0392909216916000917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef919081900360200190a36101ec565b3390565b6000546001600160a01b031690565b61166980620001fc6000396000f3fe6080604052600436106101025760003560e01c80638da5cb5b11610095578063b6de8e3111610064578063b6de8e311461036d578063c3f70b5214610382578063c9567bf914610397578063d36e8239146103ac578063dd62ed3e146103c157610109565b80638da5cb5b146102d95780638f3fa8601461030a57806395d89b411461031f578063a9059cbb1461033457610109565b8063313ce567116100d1578063313ce5671461024f57806370a082311461027a578063715018a6146102ad578063751039fc146102c457610109565b806306fdde031461010e578063095ea7b31461019857806318160ddd146101e557806323b872dd1461020c57610109565b3661010957005b600080fd5b34801561011a57600080fd5b506101236103fc565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561015d578181015183820152602001610145565b50505050905090810190601f16801561018a5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156101a457600080fd5b506101d1600480360360408110156101bb57600080fd5b506001600160a01b038135169060200135610421565b604080519115158252519081900360200190f35b3480156101f157600080fd5b506101fa61043f565b60408051918252519081900360200190f35b34801561021857600080fd5b506101d16004803603606081101561022f57600080fd5b506001600160a01b0381358116916020810135909116906040013561044c565b34801561025b57600080fd5b506102646104d3565b6040805160ff9092168252519081900360200190f35b34801561028657600080fd5b506101fa6004803603602081101561029d57600080fd5b50356001600160a01b03166104d8565b3480156102b957600080fd5b506102c26104f3565b005b3480156102d057600080fd5b506102c26105a7565b3480156102e557600080fd5b506102ee610659565b604080516001600160a01b039092168252519081900360200190f35b34801561031657600080fd5b506101fa610668565b34801561032b57600080fd5b5061012361066e565b34801561034057600080fd5b506101d16004803603604081101561035757600080fd5b506001600160a01b03813516906020013561068d565b34801561037957600080fd5b506101fa6106a1565b34801561038e57600080fd5b506101fa6106a7565b3480156103a357600080fd5b506102c26106ad565b3480156103b857600080fd5b506101fa610ae1565b3480156103cd57600080fd5b506101fa600480360360408110156103e457600080fd5b506001600160a01b0381358116916020013516610ae7565b60408051808201909152600b81526a4e2d574f5244205041535360a81b602082015290565b600061043561042e610b12565b8484610b16565b5060015b92915050565b6816ce3f1e16bf15000090565b6000610459848484610c02565b6104c984610465610b12565b6104c4856040518060600160405280602881526020016115e8602891396001600160a01b038a166000908152601060205260408120906104a3610b12565b6001600160a01b031681526020810191909152604001600020549190611149565b610b16565b5060019392505050565b600990565b6001600160a01b03166000908152600f602052604090205490565b6104fb610b12565b6000546001600160a01b0390811691161461055d576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6105af610b12565b6000546001600160a01b03908116911614610611576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6816ce3f1e16bf1500006012819055601381905560408051918252517f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf9181900360200190a1565b6000546001600160a01b031690565b60135481565b6040805180820190915260058152641395d3d49160da1b602082015290565b600061043561069a610b12565b8484610c02565b60155481565b60125481565b6106b5610b12565b6000546001600160a01b03908116911614610717576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b60055460ff161561076f576040805162461bcd60e51b815260206004820152601760248201527f547261646520697320616c7265616479206f70656e6564000000000000000000604482015290519081900360640190fd5b600180546001600160a01b0319908116737a250d5630b4cf539739df2c5dacb4c659f2488d1791829055600280549091166e22d473030f116ddee9f6b43ac78ba31790556107d19030906001600160a01b03166816ce3f1e16bf150000610b16565b600e546002546107f0916001600160a01b039081169116600019610b16565b600160009054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b15801561083e57600080fd5b505afa158015610852573d6000803e3d6000fd5b505050506040513d602081101561086857600080fd5b5051600154604080516315ab88c960e31b815290516001600160a01b039384169363c9c6539693309391169163ad5c464891600480820192602092909190829003018186803b1580156108ba57600080fd5b505afa1580156108ce573d6000803e3d6000fd5b505050506040513d60208110156108e457600080fd5b5051604080516001600160e01b031960e086901b1681526001600160a01b0393841660048201529290911660248301525160448083019260209291908290030181600087803b15801561093657600080fd5b505af115801561094a573d6000803e3d6000fd5b505050506040513d602081101561096057600080fd5b5051600380546001600160a01b0319166001600160a01b039283161790556001541663f305d7194730610992816104d8565b60008061099d610659565b426040518863ffffffff1660e01b815260040180876001600160a01b03168152602001868152602001858152602001848152602001836001600160a01b0316815260200182815260200196505050505050506060604051808303818588803b158015610a0857600080fd5b505af1158015610a1c573d6000803e3d6000fd5b50505050506040513d6060811015610a3357600080fd5b50506003546001546040805163095ea7b360e01b81526001600160a01b03928316600482015260001960248201529051919092169163095ea7b39160448083019260209291908290030181600087803b158015610a8f57600080fd5b505af1158015610aa3573d6000803e3d6000fd5b505050506040513d6020811015610ab957600080fd5b50506003805460ff60a81b1916600160a81b1790556005805460ff1916600117905543600455565b60145481565b6001600160a01b03918216600090815260106020908152604080832093909416825291909152205490565b3390565b6001600160a01b038316610b5b5760405162461bcd60e51b81526004018080602001828103825260248152602001806116106024913960400191505060405180910390fd5b6001600160a01b038216610ba05760405162461bcd60e51b81526004018080602001828103825260228152602001806115a56022913960400191505060405180910390fd5b6001600160a01b03808416600081815260106020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6001600160a01b038316610c5d576040805162461bcd60e51b815260206004820152601a60248201527f5472616e736665722066726f6d207a65726f2061646472657373000000000000604482015290519081900360640190fd5b6001600160a01b038216610cb8576040805162461bcd60e51b815260206004820152601860248201527f5472616e7366657220746f207a65726f20616464726573730000000000000000604482015290519081900360640190fd5b6000610cc2610659565b6001600160a01b0316846001600160a01b031614158015610cfc5750610ce6610659565b6001600160a01b0316836001600160a01b031614155b15611020576001600160a01b03831660009081526011602052604090205460ff16610d5257610d4d6064610d47600954600d5411610d3c57600b54610d40565b6006545b85906111e0565b90611240565b610d55565b60015b6003549091506001600160a01b038581169116148015610d8357506001546001600160a01b03848116911614155b8015610da857506001600160a01b03831660009081526011602052604090205460ff16155b15610e6f57601254821115610e04576040805162461bcd60e51b815260206004820152601b60248201527f4578636565647320746865206d61785472616e73616374696f6e2e0000000000604482015290519081900360640190fd5b60135482610e11856104d8565b011115610e65576040805162461bcd60e51b815260206004820152601a60248201527f4578636565647320746865206d617857616c6c657453697a652e000000000000604482015290519081900360640190fd5b600d805460010190555b6003546001600160a01b03848116911614801590610ea657506001600160a01b03831660009081526011602052604090205460ff16155b15610f0c5760135482610eb8856104d8565b011115610f0c576040805162461bcd60e51b815260206004820152601a60248201527f4578636565647320746865206d617857616c6c657453697a652e000000000000604482015290519081900360640190fd5b6003546001600160a01b038481169116148015610f3257506001600160a01b0384163014155b15610f5f57610f5c6064610d47600a54600d5411610f5257600c54610d40565b60075485906111e0565b90505b6000610f6a306104d8565b600354909150600160a01b900460ff16158015610f9457506003546001600160a01b038581169116145b8015610fa95750600354600160a81b900460ff165b8015610fb6575060145481115b8015610fc55750600854600d54115b8015610fea57506001600160a01b03851660009081526011602052604090205460ff16155b1561101e5761100c6110078461100284601554611282565b611282565b611297565b47801561101c5761101c47611465565b505b505b801561109657306000908152600f602052604090205461104090826114a3565b306000818152600f6020908152604091829020939093558051848152905191926001600160a01b038816927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35b6001600160a01b0384166000908152600f60205260409020546110b990836114fd565b6001600160a01b038086166000908152600f602052604080822093909355908516815220546110ea908284036114a3565b6001600160a01b038085166000818152600f6020908152604091829020949094558051858703815290519193928816927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a350505050565b600081848411156111d85760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561119d578181015183820152602001611185565b50505050905090810190601f1680156111ca5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b6000826111ef57506000610439565b828202828482816111fc57fe5b04146112395760405162461bcd60e51b81526004018080602001828103825260218152602001806115c76021913960400191505060405180910390fd5b9392505050565b600061123983836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061153f565b60008183116112915782611239565b50919050565b6003805460ff60a01b1916600160a01b179055604080516002808252606080830184529260208301908036833701905050905030816000815181106112d857fe5b6001600160a01b03928316602091820292909201810191909152600154604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b15801561132c57600080fd5b505afa158015611340573d6000803e3d6000fd5b505050506040513d602081101561135657600080fd5b505181518290600190811061136757fe5b6001600160a01b03928316602091820292909201015260015461138d9130911684610b16565b60015460405163791ac94760e01b8152600481018481526000602483018190523060648401819052426084850181905260a060448601908152875160a487015287516001600160a01b039097169663791ac947968a968a9594939092909160c40190602080880191028083838b5b838110156114135781810151838201526020016113fb565b505050509050019650505050505050600060405180830381600087803b15801561143c57600080fd5b505af1158015611450573d6000803e3d6000fd5b50506003805460ff60a01b1916905550505050565b600e546040516001600160a01b039091169082156108fc029083906000818181858888f1935050505015801561149f573d6000803e3d6000fd5b5050565b600082820183811015611239576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b600061123983836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611149565b6000818361158e5760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561119d578181015183820152602001611185565b50600083858161159a57fe5b049594505050505056fe45524332303a20617070726f766520746f20746865207a65726f2061646472657373536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7745524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a20617070726f76652066726f6d20746865207a65726f2061646472657373a2646970667358221220f07cdd5ea05fd3b4d170a53774cdb7120ab91ab8ff28c9b915e9f0b2680ecbc464736f6c63430007050033