6080604052620000126009600a620003db565b62000022906305f5e100620003f3565b600181905560028181556064916200003a91620003f3565b62000046919062000415565b600355600f60088190556009556064600a55600e805460ff60a01b1916600160a01b179055600154612710906200007f906037620003f3565b6200008b919062000415565b600f553480156200009b57600080fd5b50600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350600d80546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d9081179091556040805163c45a015560e01b8152905133929163c45a01559160048083019260209291908290030181865afa15801562000144573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200016a919062000438565b6040516364e329cb60e11b815273c02aaa39b223fe8d0a0e5c4f27ead9083c756cc260048201523060248201526001600160a01b03919091169063c9c65396906044016020604051808303816000875af1158015620001cd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001f3919062000438565b600e80546001600160a01b03199081166001600160a01b0393841617909155306000908152600560209081526040808320600d8054871685529083528184206000199055548516835260078252808320805460ff19908116600190811790925595871680855282852080548816831790556006845282852080549097168217909655600b80549095168617909455925460048252838320819055925192835290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35062000463565b634e487b7160e01b600052601160045260246000fd5b600181815b808511156200031d578160001904821115620003015762000301620002c6565b808516156200030f57918102915b93841c9390800290620002e1565b509250929050565b6000826200033657506001620003d5565b816200034557506000620003d5565b81600181146200035e5760028114620003695762000389565b6001915050620003d5565b60ff8411156200037d576200037d620002c6565b50506001821b620003d5565b5060208310610133831016604e8410600b8410161715620003ae575081810a620003d5565b620003ba8383620002dc565b8060001904821115620003d157620003d1620002c6565b0290505b92915050565b6000620003ec60ff84168362000325565b9392505050565b6000816000190483118215151615620004105762000410620002c6565b500290565b6000826200043357634e487b7160e01b600052601260045260246000fd5b500490565b6000602082840312156200044b57600080fd5b81516001600160a01b0381168114620003ec57600080fd5b6119f580620004736000396000f3fe6080604052600436106101f25760003560e01c80638da5cb5b1161010d578063caf5f67d116100a0578063f1f3bca31161006f578063f1f3bca3146105e8578063f2fde38b1461060a578063f84ba65d1461062a578063f887ea401461064a578063fadf5ba11461066a57600080fd5b8063caf5f67d1461054d578063dd62ed3e14610562578063df20fd49146105a8578063e01bb688146105c857600080fd5b8063a8aa1b31116100dc578063a8aa1b31146104cd578063a9059cbb146104ed578063bae192351461050d578063c39bbb431461052d57600080fd5b80638da5cb5b146104535780638f9a55c01461047157806395d89b4114610487578063a890d2e8146104b857600080fd5b8063571ac8b01161018557806370a082311161015457806370a08231146103a5578063715018a6146103db578063850c0bd6146103f0578063893d20e81461042157600080fd5b8063571ac8b014610322578063658d4b7f1461034257806369fe0e2d146103645780636ddd17131461038457600080fd5b806323b872dd116101c157806323b872dd146102bb5780632b112e49146102db578063313ce567146102f057806348b856d41461030c57600080fd5b80630445b667146101fe57806306fdde0314610227578063095ea7b31461027657806318160ddd146102a657600080fd5b366101f957005b600080fd5b34801561020a57600080fd5b50610214600f5481565b6040519081526020015b60405180910390f35b34801561023357600080fd5b5060408051808201909152601a81527f4d797468206f662074686520416e6369656e7420447261676f6e00000000000060208201525b60405161021e91906115b6565b34801561028257600080fd5b50610296610291366004611627565b61068a565b604051901515815260200161021e565b3480156102b257600080fd5b50600154610214565b3480156102c757600080fd5b506102966102d6366004611651565b6106f7565b3480156102e757600080fd5b506102146107b9565b3480156102fc57600080fd5b506040516009815260200161021e565b34801561031857600080fd5b5061021460025481565b34801561032e57600080fd5b5061029661033d36600461168d565b61082a565b34801561034e57600080fd5b5061036261035d3660046116b8565b610838565b005b34801561037057600080fd5b5061036261037f3660046116eb565b610896565b34801561039057600080fd5b50600e5461029690600160a01b900460ff1681565b3480156103b157600080fd5b506102146103c036600461168d565b6001600160a01b031660009081526004602052604090205490565b3480156103e757600080fd5b5061036261091e565b3480156103fc57600080fd5b50600854600954600a546040805193845260208401929092529082015260600161021e565b34801561042d57600080fd5b506000546001600160a01b03165b6040516001600160a01b03909116815260200161021e565b34801561045f57600080fd5b506000546001600160a01b031661043b565b34801561047d57600080fd5b5061021460035481565b34801561049357600080fd5b506040805180820190915260088152674d5553485553535560c01b6020820152610269565b3480156104c457600080fd5b50610362610992565b3480156104d957600080fd5b50600e5461043b906001600160a01b031681565b3480156104f957600080fd5b50610296610508366004611627565b6109b3565b34801561051957600080fd5b50610362610528366004611704565b6109c0565b34801561053957600080fd5b5061036261054836600461173c565b610a79565b34801561055957600080fd5b50610362610b23565b34801561056e57600080fd5b5061021461057d366004611801565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205490565b3480156105b457600080fd5b506103626105c336600461182b565b610b5c565b3480156105d457600080fd5b506103626105e336600461168d565b610ba8565b3480156105f457600080fd5b50610214610603366004611847565b5060095490565b34801561061657600080fd5b5061036261062536600461168d565b610bf4565b34801561063657600080fd5b506103626106453660046116b8565b610cde565b34801561065657600080fd5b50600d5461043b906001600160a01b031681565b34801561067657600080fd5b50610362610685366004611704565b610d33565b3360008181526005602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906106e59086815260200190565b60405180910390a35060015b92915050565b6001600160a01b0383166000908152600560209081526040808320338452909152812054600019146107a4576040805180820182526016815275496e73756666696369656e7420416c6c6f77616e636560501b6020808301919091526001600160a01b038716600090815260058252838120338252909152919091205461077f918490610de7565b6001600160a01b03851660009081526005602090815260408083203384529091529020555b6107af848484610e21565b90505b9392505050565b60046020527f17ef568e3e12ab5b9c7254a8d58478811de00f9e6eb34345acd53bf8fd09d3ec5461dead60009081527f42c63635470f1fb1d6d4b6441c413cb435b1ebb6fedd1896dd5e25d1399147dd54600154919261082592909161081f9190611053565b90611053565b905090565b60006106f18260001961068a565b6000546001600160a01b0316331461086b5760405162461bcd60e51b815260040161086290611862565b60405180910390fd5b6001600160a01b03919091166000908152600660205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146108c05760405162461bcd60e51b815260040161086290611862565b60088190556009819055600a81111561091b5760405162461bcd60e51b815260206004820152601b60248201527f4665652073686f756c64206265206c657373207468616e2031302500000000006044820152606401610862565b50565b6000546001600160a01b031633146109485760405162461bcd60e51b815260040161086290611862565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b670de0b6b3a76400004710156109a757600080fd5b60006008819055600955565b60006107b2338484610e21565b6000546001600160a01b031633146109ea5760405162461bcd60e51b815260040161086290611862565b600182101580156109fc575060648110155b610a535760405162461bcd60e51b815260206004820152602260248201527f4d61782077616c6c6574206d7573742062652067726561746572207468616e20604482015261312560f01b6064820152608401610862565b610a7281610a6c8460015461109590919063ffffffff16565b90611114565b6003555050565b6000546001600160a01b03163314610aa35760405162461bcd60e51b815260040161086290611862565b60005b8151811015610b1f57610b0c828281518110610ac457610ac4611897565b602002602001015161dead610b07858581518110610ae457610ae4611897565b60200260200101516001600160a01b031660009081526004602052604090205490565b610e21565b5080610b17816118c3565b915050610aa6565b5050565b600b546040516001600160a01b03909116904780156108fc02916000818181858888f1935050505015801561091b573d6000803e3d6000fd5b6000546001600160a01b03163314610b865760405162461bcd60e51b815260040161086290611862565b600e8054921515600160a01b0260ff60a01b1990931692909217909155600f55565b6000546001600160a01b03163314610bd25760405162461bcd60e51b815260040161086290611862565b600b80546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b03163314610c1e5760405162461bcd60e51b815260040161086290611862565b6001600160a01b038116610c835760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610862565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b03163314610d085760405162461bcd60e51b815260040161086290611862565b6001600160a01b03919091166000908152600760205260409020805460ff1916911515919091179055565b6000546001600160a01b03163314610d5d5760405162461bcd60e51b815260040161086290611862565b60018210158015610d6f575060648110155b610dc75760405162461bcd60e51b8152602060048201526024808201527f4d6178207472616e73666572206d7573742062652067726561746572207468616044820152636e20312560e01b6064820152608401610862565b610de081610a6c8460015461109590919063ffffffff16565b6002555050565b60008184841115610e0b5760405162461bcd60e51b815260040161086291906115b6565b506000610e1884866118de565b95945050505050565b60105460009060ff1615610e4157610e3a848484611156565b90506107b2565b610e4b848361123c565b600e546001600160a01b03848116911614801590610e7457506001600160a01b03831661dead14155b15610f1f576001600160a01b03831660009081526007602052604090205460ff1680610ec557506003546001600160a01b038416600090815260046020526040902054610ec29084906118f5565b11155b610f1f5760405162461bcd60e51b815260206004820152602560248201527f5472616e7366657220616d6f756e74206578636565647320746865206261672060448201526439b4bd329760d91b6064820152608401610862565b610f276112a5565b15610f3457610f346112fb565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b038716600090815260049091529190912054610f86918490610de7565b6001600160a01b038516600090815260046020908152604080832093909355600690529081205460ff1615610fbb5782610fc6565b610fc685858561148e565b6001600160a01b038516600090815260046020526040902054909150610fec9082611529565b6001600160a01b0380861660008181526004602052604090819020939093559151908716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906110409085815260200190565b60405180910390a3506001949350505050565b60006107b283836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610de7565b6000826110a4575060006106f1565b60006110b0838561190d565b9050826110bd858361192c565b146107b25760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610862565b60006107b283836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611588565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b03861660009081526004909152918220546111a7918490610de7565b6001600160a01b0380861660009081526004602052604080822093909355908516815220546111d69083611529565b6001600160a01b0380851660008181526004602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9061122a9086815260200190565b60405180910390a35060019392505050565b6002548111158061126557506001600160a01b03821660009081526007602052604090205460ff165b610b1f5760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b6044820152606401610862565b600e546000906001600160a01b031633148015906112c6575060105460ff16155b80156112db5750600e54600160a01b900460ff165b8015610825575050600f5430600090815260046020526040902054101590565b6010805460ff1916600117905530600090815260046020819052604090912054600f54909161132a919061190d565b811061134157600f5461133e90600461190d565b90505b604080516002808252606082018352600092602083019080368337019050509050308160008151811061137657611376611897565b60200260200101906001600160a01b031690816001600160a01b03168152505073c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2816001815181106113be576113be611897565b6001600160a01b039283166020918202929092010152600d5460405163791ac94760e01b815291169063791ac9479061140490859060009086903090429060040161194e565b600060405180830381600087803b15801561141e57600080fd5b505af1158015611432573d6000803e3d6000fd5b5050505067016345785d8a0000471061148057600b546040516001600160a01b03909116904780156108fc02916000818181858888f1935050505015801561147e573d6000803e3d6000fd5b505b50506010805460ff19169055565b600a5460095460009182916114a99190610a6c908690611095565b306000908152600460205260409020549091506114c69082611529565b30600081815260046020526040908190209290925590516001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906115179085815260200190565b60405180910390a3610e188382611053565b60008061153683856118f5565b9050838110156107b25760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610862565b600081836115a95760405162461bcd60e51b815260040161086291906115b6565b506000610e18848661192c565b600060208083528351808285015260005b818110156115e3578581018301518582016040015282016115c7565b818111156115f5576000604083870101525b50601f01601f1916929092016040019392505050565b80356001600160a01b038116811461162257600080fd5b919050565b6000806040838503121561163a57600080fd5b6116438361160b565b946020939093013593505050565b60008060006060848603121561166657600080fd5b61166f8461160b565b925061167d6020850161160b565b9150604084013590509250925092565b60006020828403121561169f57600080fd5b6107b28261160b565b8035801515811461162257600080fd5b600080604083850312156116cb57600080fd5b6116d48361160b565b91506116e2602084016116a8565b90509250929050565b6000602082840312156116fd57600080fd5b5035919050565b6000806040838503121561171757600080fd5b50508035926020909101359150565b634e487b7160e01b600052604160045260246000fd5b6000602080838503121561174f57600080fd5b823567ffffffffffffffff8082111561176757600080fd5b818501915085601f83011261177b57600080fd5b81358181111561178d5761178d611726565b8060051b604051601f19603f830116810181811085821117156117b2576117b2611726565b6040529182528482019250838101850191888311156117d057600080fd5b938501935b828510156117f5576117e68561160b565b845293850193928501926117d5565b98975050505050505050565b6000806040838503121561181457600080fd5b61181d8361160b565b91506116e26020840161160b565b6000806040838503121561183e57600080fd5b611643836116a8565b60006020828403121561185957600080fd5b6107b2826116a8565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006000198214156118d7576118d76118ad565b5060010190565b6000828210156118f0576118f06118ad565b500390565b60008219821115611908576119086118ad565b500190565b6000816000190483118215151615611927576119276118ad565b500290565b60008261194957634e487b7160e01b600052601260045260246000fd5b500490565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b8181101561199e5784516001600160a01b031683529383019391830191600101611979565b50506001600160a01b0396909616606085015250505060800152939250505056fea26469706673582212202a9f7d4bc3a2e01178ce26892c3b5333fb45cfaf679bcfaaa8c2a1181484a4c664736f6c634300080b0033