0x6080604052600436106103435760003560e01c8063590ffdce116101b0578063b3d514fb116100ec578063e4fcfd1811610095578063eec2744e1161006f578063eec2744e146109ca578063f94aa1b4146109ea578063fdb78c0e14610a31578063fe575a8714610a5057600080fd5b8063e4fcfd181461097f578063eafb5a3c14610995578063ee5d9c2d146109b557600080fd5b8063cf847706116100c6578063cf847706146108e8578063d3f6a15714610919578063dd62ed3e1461093957600080fd5b8063b3d514fb14610567578063bcd96a25146108a8578063cab5ebea146108c857600080fd5b806380c581d1116101595780638a8c523c116101335780638a8c523c1461082d57806395d89b4114610842578063a9059cbb14610888578063b1b08f711461056757600080fd5b806380c581d1146107da578063893d20e8146107fa5780638a63bd9b1461081857600080fd5b80636ebd00781161018a5780636ebd00781461077a57806370a082311461078f578063715018a6146107c557600080fd5b8063590ffdce146107015780635c24b074146107215780635cce86cd1461074157600080fd5b80632b28fc7a1161027f57806336fddb04116102285780634ada218b116102025780634ada218b1461066f5780634fb2e45d146106895780634fbee193146106a957806350a8e016146106e257600080fd5b806336fddb041461060f5780633f3cf56c1461062f578063452ed4f11461064f57600080fd5b806332cde6641161025957806332cde664146105af57806333251a0b146105cf57806334cd8260146105ef57600080fd5b80632b28fc7a146105675780632e8fa8211461057d578063313ce5671461059357600080fd5b80630758d924116102ec57806318160ddd116102c657806318160ddd146104f257806323b872dd1461050757806326003957146105275780632610eaca1461054757600080fd5b80630758d9241461048d578063095ea7b3146104ad5780630fa604e4146104dd57600080fd5b806305bbedb61161031d57806305bbedb6146103c8578063069d955f146103e857806306fdde031461043e57600080fd5b806303fd2a451461034f5780630445b66714610382578063044df726146103a657600080fd5b3661034a57005b600080fd5b34801561035b57600080fd5b5061036561dead81565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561038e57600080fd5b5061039860115481565b604051908152602001610379565b3480156103b257600080fd5b506103c66103c13660046132a0565b610a70565b005b3480156103d457600080fd5b506103c66103e33660046133e6565b610b4d565b3480156103f457600080fd5b506008546104199061ffff808216916201000081048216916401000000009091041683565b6040805161ffff94851681529284166020840152921691810191909152606001610379565b34801561044a57600080fd5b5060408051808201909152600b81527f4d696e747374617274657200000000000000000000000000000000000000000060208201525b604051610379919061342d565b34801561049957600080fd5b50600a54610365906001600160a01b031681565b3480156104b957600080fd5b506104cd6104c8366004613482565b610beb565b6040519015158152602001610379565b3480156104e957600080fd5b50610398610c02565b3480156104fe57600080fd5b50610398610c22565b34801561051357600080fd5b506104cd6105223660046134ae565b610c61565b34801561053357600080fd5b506103c66105423660046134ef565b610cd9565b34801561055357600080fd5b506103c6610562366004613511565b610e29565b34801561057357600080fd5b506103986107d081565b34801561058957600080fd5b5061039860125481565b34801561059f57600080fd5b5060405160128152602001610379565b3480156105bb57600080fd5b506103c66105ca3660046135e3565b610f4a565b3480156105db57600080fd5b506103c66105ea366004613626565b611085565b3480156105fb57600080fd5b506103c661060a366004613643565b611155565b34801561061b57600080fd5b506103c661062a36600461367e565b611212565b34801561063b57600080fd5b506103c661064a3660046134ef565b61128b565b34801561065b57600080fd5b50600b54610365906001600160a01b031681565b34801561067b57600080fd5b506015546104cd9060ff1681565b34801561069557600080fd5b506103c66106a4366004613626565b6113db565b3480156106b557600080fd5b506104cd6106c4366004613626565b6001600160a01b031660009081526005602052604090205460ff1690565b3480156106ee57600080fd5b506015546104cd90610100900460ff1681565b34801561070d57600080fd5b506103c661071c36600461367e565b6115f4565b34801561072d57600080fd5b506103c661073c366004613626565b61166d565b34801561074d57600080fd5b506104cd61075c366004613626565b6001600160a01b031660009081526006602052604090205460ff1690565b34801561078657600080fd5b50610398611769565b34801561079b57600080fd5b506103986107aa366004613626565b6001600160a01b031660009081526001602052604090205490565b3480156107d157600080fd5b506103c6611784565b3480156107e657600080fd5b506103c66107f536600461367e565b61183f565b34801561080657600080fd5b506000546001600160a01b0316610365565b34801561082457600080fd5b506104cd6119e9565b34801561083957600080fd5b506103c6611a58565b34801561084e57600080fd5b5060408051808201909152600481527f4d494e54000000000000000000000000000000000000000000000000000000006020820152610480565b34801561089457600080fd5b506104cd6108a3366004613482565b611cc0565b3480156108b457600080fd5b506103c66108c336600461369c565b611cd7565b3480156108d457600080fd5b506103c66108e33660046136cf565b611da9565b3480156108f457600080fd5b506009546104199061ffff808216916201000081048216916401000000009091041683565b34801561092557600080fd5b506103c66109343660046136ec565b611e4b565b34801561094557600080fd5b506103986109543660046136ec565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205490565b34801561098b57600080fd5b50610398600f5481565b3480156109a157600080fd5b506103c66109b0366004613626565b611edf565b3480156109c157600080fd5b506103c66122af565b3480156109d657600080fd5b506103c66109e536600461367e565b612392565b3480156109f657600080fd5b50600c54600d54610a11916001600160a01b03908116911682565b604080516001600160a01b03938416815292909116602083015201610379565b348015610a3d57600080fd5b50600e546104cd90610100900460ff1681565b348015610a5c57600080fd5b506104cd610a6b366004613626565b61243a565b6000546001600160a01b03163314610ac35760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b60448201526064015b60405180910390fd5b6015546040517fefbdbabd00000000000000000000000000000000000000000000000000000000815283151560048201528215156024820152620100009091046001600160a01b03169063efbdbabd906044015b600060405180830381600087803b158015610b3157600080fd5b505af1158015610b45573d6000803e3d6000fd5b505050505050565b6000546001600160a01b03163314610b9b5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610aba565b6015546040517f05bbedb6000000000000000000000000000000000000000000000000000000008152620100009091046001600160a01b0316906305bbedb690610b17908590859060040161375e565b6000610bf83384846124c8565b5060015b92915050565b6000610c106012600a613895565b601454610c1d91906138a4565b905090565b6000610c306012600a613895565b610c3e906305f5e1006138df565b610c4757600080fd5b610c536012600a613895565b610c1d906305f5e1006138df565b6001600160a01b038316600090815260046020908152604080832033845290915281205460001914610cc6576001600160a01b038416600090815260046020908152604080832033845290915281208054849290610cc09084906138fe565b90915550505b610cd18484846125d5565b949350505050565b6000546001600160a01b03163314610d275760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610aba565b6103e8610d366012600a613895565b610d44906305f5e1006138df565b610d4e91906138a4565b8183610d5c6012600a613895565b610d6a906305f5e1006138df565b610d7491906138df565b610d7e91906138a4565b1015610df25760405162461bcd60e51b815260206004820152603260248201527f4d61782057616c6c657420616d74206d7573742062652061626f766520302e3160448201527f25206f6620746f74616c20737570706c792e00000000000000000000000000006064820152608401610aba565b8082610e006012600a613895565b610e0e906305f5e1006138df565b610e1891906138df565b610e2291906138a4565b6014555050565b8051825114610e7a5760405162461bcd60e51b815260206004820152601560248201527f4c656e6774687320646f206e6f74206d617463682e00000000000000000000006044820152606401610aba565b60005b82518160ff161015610f4557818160ff1681518110610e9e57610e9e613915565b6020026020010151610ec5336001600160a01b031660009081526001602052604090205490565b1015610ed057600080fd5b610f3233848360ff1681518110610ee957610ee9613915565b60200260200101516012600a610eff9190613895565b858560ff1681518110610f1457610f14613915565b6020026020010151610f2691906138df565b60008060006001612a8a565b5080610f3d81613944565b915050610e7d565b505050565b6000546001600160a01b03163314610f985760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610aba565b6107d08361ffff1611158015610fb457506107d08261ffff1611155b8015610fc657506107d08161ffff1611155b6110125760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f7420657863656564206d6178696d756d732e0000000000000000006044820152606401610aba565b6008805461ffff9485167fffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000909116176201000093851693909302929092177fffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffff166401000000009190931602919091179055565b6000546001600160a01b031633146110d35760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610aba565b6015546040517f33251a0b0000000000000000000000000000000000000000000000000000000081526001600160a01b03838116600483015262010000909204909116906333251a0b90602401600060405180830381600087803b15801561113a57600080fd5b505af115801561114e573d6000803e3d6000fd5b5050505050565b6000546001600160a01b031633146111a35760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610aba565b83856111b16012600a613895565b6111bf906305f5e1006138df565b6111c991906138df565b6111d391906138a4565b60115581836111e46012600a613895565b6111f2906305f5e1006138df565b6111fc91906138df565b61120691906138a4565b601255600f5550505050565b6000546001600160a01b031633146112605760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610aba565b6001600160a01b03919091166000908152600660205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146112d95760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610aba565b6103e86112e86012600a613895565b6112f6906305f5e1006138df565b61130091906138a4565b818361130e6012600a613895565b61131c906305f5e1006138df565b61132691906138df565b61133091906138a4565b10156113a45760405162461bcd60e51b815260206004820152603760248201527f4d6178205472616e73616374696f6e20616d74206d7573742062652061626f7660448201527f6520302e3125206f6620746f74616c20737570706c792e0000000000000000006064820152608401610aba565b80826113b26012600a613895565b6113c0906305f5e1006138df565b6113ca91906138df565b6113d491906138a4565b6013555050565b6000546001600160a01b031633146114295760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610aba565b6001600160a01b0381166114a55760405162461bcd60e51b815260206004820152603d60248201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660448201527f6572206f776e657220746f20746865207a65726f20616464726573732e0000006064820152608401610aba565b6001600160a01b03811661dead14156115265760405162461bcd60e51b815260206004820152603d60248201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660448201527f6572206f776e657220746f20746865207a65726f20616464726573732e0000006064820152608401610aba565b6000805461153f916001600160a01b03909116906115f4565b61154a8160016115f4565b600080546001600160a01b03168152600160205260409020541561159157600080546001600160a01b0316808252600160205260409091205461158f919083906125d5565b505b600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0383169081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b6000546001600160a01b031633146116425760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610aba565b6001600160a01b03919091166000908152600560205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146116bb5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610aba565b601554610100900460ff16156116d057600080fd5b6001600160a01b0381163014156117295760405162461bcd60e51b815260206004820152600e60248201527f43616e27742062652073656c662e0000000000000000000000000000000000006044820152606401610aba565b601580546001600160a01b0390921662010000027fffffffffffffffffffff0000000000000000000000000000000000000000ffff909216919091179055565b60006117776012600a613895565b601354610c1d91906138a4565b6000546001600160a01b031633146117d25760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610aba565b600080546117eb916001600160a01b03909116906115f4565b600080547fffffffffffffffffffffffff000000000000000000000000000000000000000016815560405181907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3565b6000546001600160a01b0316331461188d5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610aba565b80611904576001600160a01b03828116600081815260026020526040808220805460ff1916905560155490517f80c581d100000000000000000000000000000000000000000000000000000000815260048101939093526024830191909152620100009004909116906380c581d190604401610b17565b6003541561196b576203f4806003544261191e91906138fe565b1161196b5760405162461bcd60e51b815260206004820152601060248201527f332044617920636f6f6c646f776e2e21000000000000000000000000000000006044820152606401610aba565b6001600160a01b0382811660008181526002602052604090819020805460ff191660019081179091554260035560155491517f80c581d100000000000000000000000000000000000000000000000000000000815260048101939093526024830152620100009004909116906380c581d190604401610b17565b5050565b600080546001600160a01b03163314611a385760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610aba565b600a54611a529030906001600160a01b03166000196124c8565b50600190565b6000546001600160a01b03163314611aa65760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610aba565b60155460ff1615611af95760405162461bcd60e51b815260206004820152601860248201527f54726164696e6720616c726561647920656e61626c65642100000000000000006044820152606401610aba565b601554610100900460ff16611b505760405162461bcd60e51b815260206004820152601860248201527f4c6971756964697479206d7573742062652061646465642e00000000000000006044820152606401610aba565b6015546201000090046001600160a01b0316611b9657601580547fffffffffffffffffffff0000000000000000000000000000000000000000ffff163062010000021790555b601554600b546040517f6c115c340000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015263ffffffff4316602482015267ffffffffffffffff4216604482015260126064820152620100009092041690636c115c3490608401600060405180830381600087803b158015611c2157600080fd5b505af1925050508015611c32575060015b506015805460ff19166001179055600b5461271090611c6f906001600160a01b03166001600160a01b031660009081526001602052604090205490565b611c7a9060056138df565b611c8491906138a4565b601155600b546001600160a01b03166000908152600160205260409020546103e890611cb19060016138df565b611cbb91906138a4565b601255565b6000611ccd3384846125d5565b5060019392505050565b6000546001600160a01b03163314611d255760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610aba565b6009805461ffff83811662010000027fffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000090921690851617179055611d698183613964565b6009805461ffff92909216640100000000027fffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffff9092169190911790555050565b6000546001600160a01b03163314611df75760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610aba565b600e80548215156101000261ff00199091161790556040517f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f914105325790611e4090831515815260200190565b60405180910390a150565b6000546001600160a01b03163314611e995760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610aba565b600c80546001600160a01b039384167fffffffffffffffffffffffff000000000000000000000000000000000000000091821617909155600d8054929093169116179055565b6000546001600160a01b03163314611f2d5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610aba565b60008190506000816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611f72573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f96919061398a565b6001600160a01b031663e6a4390530846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611fe3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612007919061398a565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa15801561206a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061208e919061398a565b90506001600160a01b03811661223757816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156120dc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612100919061398a565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561214d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612171919061398a565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af11580156121d6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121fa919061398a565b600b80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039290921691909117905561226b565b600b80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0383161790555b600a80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b038416908117909155610f459030906000196124c8565b6000546001600160a01b031633146122fd5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610aba565b601554610100900460ff16156123555760405162461bcd60e51b815260206004820152601c60248201527f43616e6e6f742063616c6c206166746572206c69717569646974792e000000006044820152606401610aba565b600080546040516001600160a01b03909116914780156108fc02929091818181858888f1935050505015801561238f573d6000803e3d6000fd5b50565b6000546001600160a01b031633146123e05760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610aba565b6015546040517feec2744e0000000000000000000000000000000000000000000000000000000081526001600160a01b0384811660048301528315156024830152620100009092049091169063eec2744e90604401610b17565b6015546040517ffe575a870000000000000000000000000000000000000000000000000000000081526001600160a01b038381166004830152600092620100009004169063fe575a8790602401602060405180830381865afa1580156124a4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bfc91906139a7565b6001600160a01b03831661251e5760405162461bcd60e51b815260206004820152601360248201527f45524332303a205a65726f2041646472657373000000000000000000000000006044820152606401610aba565b6001600160a01b0382166125745760405162461bcd60e51b815260206004820152601360248201527f45524332303a205a65726f2041646472657373000000000000000000000000006044820152606401610aba565b6001600160a01b0383811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006001600160a01b0384166126535760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f64726573730000000000000000000000000000000000000000000000000000006064820152608401610aba565b6001600160a01b0383166126cf5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f65737300000000000000000000000000000000000000000000000000000000006064820152608401610aba565b600082116127455760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d75737420626520677265617465722060448201527f7468616e207a65726f00000000000000000000000000000000000000000000006064820152608401610aba565b6001600160a01b0384166000908152600260205260408120548190819060ff161561277357600192506127a1565b6001600160a01b03861660009081526002602052604090205460ff161561279d57600191506127a1565b5060015b6127ab8787612cca565b156129b15760155460ff166128025760405162461bcd60e51b815260206004820152601860248201527f54726164696e67206e6f742079657420656e61626c65642100000000000000006044820152606401610aba565b828061280b5750815b156128cf576001600160a01b03871660009081526006602052604090205460ff1615801561285257506001600160a01b03861660009081526006602052604090205460ff16155b156128cf576013548511156128cf5760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d61785460448201527f78416d6f756e742e0000000000000000000000000000000000000000000000006064820152608401610aba565b600a546001600160a01b038781169116148015906128eb575081155b156129b1576001600160a01b03861660009081526006602052604090205460ff166129b15760145485612933886001600160a01b031660009081526001602052604090205490565b61293d91906139c4565b11156129b15760405162461bcd60e51b815260206004820152602a60248201527f5472616e7366657220616d6f756e74206578636565647320746865206d61785760448201527f616c6c657453697a652e000000000000000000000000000000000000000000006064820152608401610aba565b6001600160a01b03871660009081526005602052604090205460019060ff16806129f357506001600160a01b03871660009081526005602052604090205460ff165b156129fc575060005b8215612a6f57600e5460ff16158015612a1c5750600e54610100900460ff165b15612a6f5742600f54601054612a3291906139c4565b1015612a6f57306000908152600160205260409020546011548110612a6d576012548110612a5f57506012545b612a6881612d9f565b426010555b505b612a7e88888884888888612a8a565b98975050505050505050565b601554600090610100900460ff16612b3657612aa68888612f9f565b601554610100900460ff16158015612ac35750612ac38888612cca565b15612b365760405162461bcd60e51b815260206004820152602560248201527f4f6e6c79206f776e65722063616e207472616e7366657220617420746869732060448201527f74696d652e0000000000000000000000000000000000000000000000000000006064820152608401610aba565b612b408888612cca565b15612bf3576015546040517fecd07a530000000000000000000000000000000000000000000000000000000081526001600160a01b038a81166004830152898116602483015260448201899052600092620100009004169063ecd07a53906064016020604051808303816000875af1925050508015612bdc575060408051601f3d908101601f19168201909252612bd9918101906139a7565b60015b612be557600080fd5b905080612bf157600080fd5b505b6001600160a01b03881660009081526001602052604081208054889290612c1b9084906138fe565b909155506000905085612c2e5786612c3a565b612c3a8986868a6130fd565b6001600160a01b038916600090815260016020526040812080549293508392909190612c679084906139c4565b92505081905550876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612cb391815260200190565b60405180910390a350600198975050505050505050565b600080546001600160a01b03848116911614801590612cf757506000546001600160a01b03838116911614155b8015612d0e57506000546001600160a01b03163214155b8015612d3357506001600160a01b03821660009081526007602052604090205460ff16155b8015612d5857506001600160a01b03831660009081526007602052604090205460ff16155b8015612d6f57506001600160a01b03821661dead14155b8015612d8357506001600160a01b03821615155b8015612d9857506001600160a01b0383163014155b9392505050565b600e805460ff19166001179055306000908152600460209081526040808320600a546001600160a01b0316845290915290205460001914612e0557306000908152600460209081526040808320600a546001600160a01b03168452909152902060001990555b60095462010000900461ffff16612e1b57612f92565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110612e5057612e50613915565b6001600160a01b03928316602091820292909201810191909152600a54604080517fad5c46480000000000000000000000000000000000000000000000000000000081529051919093169263ad5c46489260048083019391928290030181865afa158015612ec2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ee6919061398a565b81600181518110612ef957612ef9613915565b6001600160a01b039283166020918202929092010152600a54600d546040517f791ac9470000000000000000000000000000000000000000000000000000000081529183169263791ac94792612f5e92879260009288929091169042906004016139dc565b600060405180830381600087803b158015612f7857600080fd5b505af1158015612f8c573d6000803e3d6000fd5b50505050505b50600e805460ff19169055565b601554610100900460ff161561301d5760405162461bcd60e51b815260206004820152602360248201527f4c697175696469747920616c726561647920616464656420616e64206d61726b60448201527f65642e00000000000000000000000000000000000000000000000000000000006064820152608401610aba565b6130278282612cca565b1580156130415750600b546001600160a01b038281169116145b156119e5576001600160a01b038083166000908152600760205260409020805460ff191660011790556015805461ff0019166101001790819055620100009004166130b657601580547fffffffffffffffffffff0000000000000000000000000000000000000000ffff163062010000021790555b600e805461ff001916610100179055604051600181527f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f91410532579060200160405180910390a15050565b6000808415613113575060085461ffff1661313d565b831561312c575060085462010000900461ffff1661313d565b50600854640100000000900461ffff165b600061271061314c83866138df565b61315691906138a4565b60095490915060009061ffff64010000000082048116916131789116846138df565b61318291906138a4565b9050801561321a5761319481836138fe565b600c546001600160a01b0316600081815260016020526040812080549395509192849291906131c49084906139c4565b92505081905550806001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161321091815260200190565b60405180910390a3505b30600090815260016020526040812080548492906132399084906139c4565b909155505060405182815230906001600160a01b038a16907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a361328881836139c4565b612a7e90866138fe565b801515811461238f57600080fd5b600080604083850312156132b357600080fd5b82356132be81613292565b915060208301356132ce81613292565b809150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715613331576133316132d9565b604052919050565b600067ffffffffffffffff821115613353576133536132d9565b5060051b60200190565b6001600160a01b038116811461238f57600080fd5b600082601f83011261338357600080fd5b8135602061339861339383613339565b613308565b82815260059290921b840181019181810190868411156133b757600080fd5b8286015b848110156133db5780356133ce8161335d565b83529183019183016133bb565b509695505050505050565b600080604083850312156133f957600080fd5b823567ffffffffffffffff81111561341057600080fd5b61341c85828601613372565b92505060208301356132ce81613292565b600060208083528351808285015260005b8181101561345a5785810183015185820160400152820161343e565b8181111561346c576000604083870101525b50601f01601f1916929092016040019392505050565b6000806040838503121561349557600080fd5b82356134a08161335d565b946020939093013593505050565b6000806000606084860312156134c357600080fd5b83356134ce8161335d565b925060208401356134de8161335d565b929592945050506040919091013590565b6000806040838503121561350257600080fd5b50508035926020909101359150565b6000806040838503121561352457600080fd5b823567ffffffffffffffff8082111561353c57600080fd5b61354886838701613372565b935060209150818501358181111561355f57600080fd5b85019050601f8101861361357257600080fd5b803561358061339382613339565b81815260059190911b8201830190838101908883111561359f57600080fd5b928401925b828410156135bd578335825292840192908401906135a4565b80955050505050509250929050565b803561ffff811681146135de57600080fd5b919050565b6000806000606084860312156135f857600080fd5b613601846135cc565b925061360f602085016135cc565b915061361d604085016135cc565b90509250925092565b60006020828403121561363857600080fd5b8135612d988161335d565b600080600080600060a0868803121561365b57600080fd5b505083359560208501359550604085013594606081013594506080013592509050565b6000806040838503121561369157600080fd5b82356132be8161335d565b600080604083850312156136af57600080fd5b6136b8836135cc565b91506136c6602084016135cc565b90509250929050565b6000602082840312156136e157600080fd5b8135612d9881613292565b600080604083850312156136ff57600080fd5b823561370a8161335d565b915060208301356132ce8161335d565b600081518084526020808501945080840160005b838110156137535781516001600160a01b03168752958201959082019060010161372e565b509495945050505050565b604081526000613771604083018561371a565b905082151560208301529392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600181815b808511156137ec5781600019048211156137d2576137d2613782565b808516156137df57918102915b93841c93908002906137b6565b509250929050565b60008261380357506001610bfc565b8161381057506000610bfc565b816001811461382657600281146138305761384c565b6001915050610bfc565b60ff84111561384157613841613782565b50506001821b610bfc565b5060208310610133831016604e8410600b841016171561386f575081810a610bfc565b61387983836137b1565b806000190482111561388d5761388d613782565b029392505050565b6000612d9860ff8416836137f4565b6000826138da577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b60008160001904831182151516156138f9576138f9613782565b500290565b60008282101561391057613910613782565b500390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600060ff821660ff81141561395b5761395b613782565b60010192915050565b600061ffff80831681851680830382111561398157613981613782565b01949350505050565b60006020828403121561399c57600080fd5b8151612d988161335d565b6000602082840312156139b957600080fd5b8151612d9881613292565b600082198211156139d7576139d7613782565b500190565b85815284602082015260a0604082015260006139fb60a083018661371a565b6001600160a01b039490941660608301525060800152939250505056fea26469706673582212204909f1285f3abf46e3e4d04a0dcf4bdaf4270c699612c81f67f2908518904d4764736f6c634300080c0033
0x6000600381815561025860808190526104b060a05260c0526008805465ffffffffffff1990811665025804b002581790915560e091909152600f6101008190526012610120819052600980549093166412000f00031790925561018060405273d380308038ae8184daae37b4bbc5a59608fe9f63610140819052610160819052600c80546001600160a01b03199081168317909155600d80549091169091179055600e805461ff001916905591909155620000bc90600a62000733565b620000cc906305f5e1006200074b565b601355620000dd6012600a62000733565b620000ed906305f5e1006200074b565b6014556015805461ffff19169055620001096012600a62000733565b62000119906305f5e1006200074b565b33600081815260016020526040812092909255907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6200015c6012600a62000733565b6200016c906305f5e1006200074b565b60405190815260200160405180910390a3600080546001600160a01b031916331790556038461415620001c557600a80546001600160a01b0319167310ed43c718714eb63d5aa57b78b54704e256024e179055620002bb565b4660611415620001fb57600a80546001600160a01b031916739ac64cc6e4415144c455bd8e4837fea55603e5c3179055620002bb565b46600114806200020b5750466004145b80620002175750466003145b156200024957600a80546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d179055620002bb565b4661a86a14156200028057600a80546001600160a01b0319167360ae616a2155ee3d9a68541ba4544862310933d4179055620002bb565b4660fa1415620002b657600a80546001600160a01b03191673f491e7b69e4244ad4002bc14e878a34207e38c29179055620002bb565b600080fd5b600a60009054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200030f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200033591906200076d565b6001600160a01b031663c9c65396600a60009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000397573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003bd91906200076d565b6040516001600160e01b031960e084901b1681526001600160a01b0390911660048201523060248201526044016020604051808303816000875af11580156200040a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200043091906200076d565b600b80546001600160a01b0319166001600160a01b039283169081179091556000908152600260205260408120805460ff1916600117905554600a546200047f9291821691166000196200051d565b600a546200049b9030906001600160a01b03166000196200051d565b600080546001600160a01b0390811682526005602090815260408084208054600160ff19918216811790925530865282862080548216831790557f7d509c07f0d4edcc2dd1b53aae68677132eb562dcba78e36381b63ccaf66e6ba80548216831790558554909416855260079092529092208054909116909117905562000798565b6001600160a01b0383166200056f5760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b60448201526064015b60405180910390fd5b6001600160a01b038216620005bd5760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b604482015260640162000566565b6001600160a01b0383811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115620006755781600019048211156200065957620006596200061e565b808516156200066757918102915b93841c939080029062000639565b509250929050565b6000826200068e575060016200072d565b816200069d575060006200072d565b8160018114620006b65760028114620006c157620006e1565b60019150506200072d565b60ff841115620006d557620006d56200061e565b50506001821b6200072d565b5060208310610133831016604e8410600b841016171562000706575081810a6200072d565b62000712838362000634565b80600019048211156200072957620007296200061e565b0290505b92915050565b60006200074460ff8416836200067d565b9392505050565b60008160001904831182151516156200076857620007686200061e565b500290565b6000602082840312156200078057600080fd5b81516001600160a01b03811681146200074457600080fd5b613a4e80620007a86000396000f3fe6080604052600436106103435760003560e01c8063590ffdce116101b0578063b3d514fb116100ec578063e4fcfd1811610095578063eec2744e1161006f578063eec2744e146109ca578063f94aa1b4146109ea578063fdb78c0e14610a31578063fe575a8714610a5057600080fd5b8063e4fcfd181461097f578063eafb5a3c14610995578063ee5d9c2d146109b557600080fd5b8063cf847706116100c6578063cf847706146108e8578063d3f6a15714610919578063dd62ed3e1461093957600080fd5b8063b3d514fb14610567578063bcd96a25146108a8578063cab5ebea146108c857600080fd5b806380c581d1116101595780638a8c523c116101335780638a8c523c1461082d57806395d89b4114610842578063a9059cbb14610888578063b1b08f711461056757600080fd5b806380c581d1146107da578063893d20e8146107fa5780638a63bd9b1461081857600080fd5b80636ebd00781161018a5780636ebd00781461077a57806370a082311461078f578063715018a6146107c557600080fd5b8063590ffdce146107015780635c24b074146107215780635cce86cd1461074157600080fd5b80632b28fc7a1161027f57806336fddb04116102285780634ada218b116102025780634ada218b1461066f5780634fb2e45d146106895780634fbee193146106a957806350a8e016146106e257600080fd5b806336fddb041461060f5780633f3cf56c1461062f578063452ed4f11461064f57600080fd5b806332cde6641161025957806332cde664146105af57806333251a0b146105cf57806334cd8260146105ef57600080fd5b80632b28fc7a146105675780632e8fa8211461057d578063313ce5671461059357600080fd5b80630758d924116102ec57806318160ddd116102c657806318160ddd146104f257806323b872dd1461050757806326003957146105275780632610eaca1461054757600080fd5b80630758d9241461048d578063095ea7b3146104ad5780630fa604e4146104dd57600080fd5b806305bbedb61161031d57806305bbedb6146103c8578063069d955f146103e857806306fdde031461043e57600080fd5b806303fd2a451461034f5780630445b66714610382578063044df726146103a657600080fd5b3661034a57005b600080fd5b34801561035b57600080fd5b5061036561dead81565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561038e57600080fd5b5061039860115481565b604051908152602001610379565b3480156103b257600080fd5b506103c66103c13660046132a0565b610a70565b005b3480156103d457600080fd5b506103c66103e33660046133e6565b610b4d565b3480156103f457600080fd5b506008546104199061ffff808216916201000081048216916401000000009091041683565b6040805161ffff94851681529284166020840152921691810191909152606001610379565b34801561044a57600080fd5b5060408051808201909152600b81527f4d696e747374617274657200000000000000000000000000000000000000000060208201525b604051610379919061342d565b34801561049957600080fd5b50600a54610365906001600160a01b031681565b3480156104b957600080fd5b506104cd6104c8366004613482565b610beb565b6040519015158152602001610379565b3480156104e957600080fd5b50610398610c02565b3480156104fe57600080fd5b50610398610c22565b34801561051357600080fd5b506104cd6105223660046134ae565b610c61565b34801561053357600080fd5b506103c66105423660046134ef565b610cd9565b34801561055357600080fd5b506103c6610562366004613511565b610e29565b34801561057357600080fd5b506103986107d081565b34801561058957600080fd5b5061039860125481565b34801561059f57600080fd5b5060405160128152602001610379565b3480156105bb57600080fd5b506103c66105ca3660046135e3565b610f4a565b3480156105db57600080fd5b506103c66105ea366004613626565b611085565b3480156105fb57600080fd5b506103c661060a366004613643565b611155565b34801561061b57600080fd5b506103c661062a36600461367e565b611212565b34801561063b57600080fd5b506103c661064a3660046134ef565b61128b565b34801561065b57600080fd5b50600b54610365906001600160a01b031681565b34801561067b57600080fd5b506015546104cd9060ff1681565b34801561069557600080fd5b506103c66106a4366004613626565b6113db565b3480156106b557600080fd5b506104cd6106c4366004613626565b6001600160a01b031660009081526005602052604090205460ff1690565b3480156106ee57600080fd5b506015546104cd90610100900460ff1681565b34801561070d57600080fd5b506103c661071c36600461367e565b6115f4565b34801561072d57600080fd5b506103c661073c366004613626565b61166d565b34801561074d57600080fd5b506104cd61075c366004613626565b6001600160a01b031660009081526006602052604090205460ff1690565b34801561078657600080fd5b50610398611769565b34801561079b57600080fd5b506103986107aa366004613626565b6001600160a01b031660009081526001602052604090205490565b3480156107d157600080fd5b506103c6611784565b3480156107e657600080fd5b506103c66107f536600461367e565b61183f565b34801561080657600080fd5b506000546001600160a01b0316610365565b34801561082457600080fd5b506104cd6119e9565b34801561083957600080fd5b506103c6611a58565b34801561084e57600080fd5b5060408051808201909152600481527f4d494e54000000000000000000000000000000000000000000000000000000006020820152610480565b34801561089457600080fd5b506104cd6108a3366004613482565b611cc0565b3480156108b457600080fd5b506103c66108c336600461369c565b611cd7565b3480156108d457600080fd5b506103c66108e33660046136cf565b611da9565b3480156108f457600080fd5b506009546104199061ffff808216916201000081048216916401000000009091041683565b34801561092557600080fd5b506103c66109343660046136ec565b611e4b565b34801561094557600080fd5b506103986109543660046136ec565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205490565b34801561098b57600080fd5b50610398600f5481565b3480156109a157600080fd5b506103c66109b0366004613626565b611edf565b3480156109c157600080fd5b506103c66122af565b3480156109d657600080fd5b506103c66109e536600461367e565b612392565b3480156109f657600080fd5b50600c54600d54610a11916001600160a01b03908116911682565b604080516001600160a01b03938416815292909116602083015201610379565b348015610a3d57600080fd5b50600e546104cd90610100900460ff1681565b348015610a5c57600080fd5b506104cd610a6b366004613626565b61243a565b6000546001600160a01b03163314610ac35760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b60448201526064015b60405180910390fd5b6015546040517fefbdbabd00000000000000000000000000000000000000000000000000000000815283151560048201528215156024820152620100009091046001600160a01b03169063efbdbabd906044015b600060405180830381600087803b158015610b3157600080fd5b505af1158015610b45573d6000803e3d6000fd5b505050505050565b6000546001600160a01b03163314610b9b5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610aba565b6015546040517f05bbedb6000000000000000000000000000000000000000000000000000000008152620100009091046001600160a01b0316906305bbedb690610b17908590859060040161375e565b6000610bf83384846124c8565b5060015b92915050565b6000610c106012600a613895565b601454610c1d91906138a4565b905090565b6000610c306012600a613895565b610c3e906305f5e1006138df565b610c4757600080fd5b610c536012600a613895565b610c1d906305f5e1006138df565b6001600160a01b038316600090815260046020908152604080832033845290915281205460001914610cc6576001600160a01b038416600090815260046020908152604080832033845290915281208054849290610cc09084906138fe565b90915550505b610cd18484846125d5565b949350505050565b6000546001600160a01b03163314610d275760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610aba565b6103e8610d366012600a613895565b610d44906305f5e1006138df565b610d4e91906138a4565b8183610d5c6012600a613895565b610d6a906305f5e1006138df565b610d7491906138df565b610d7e91906138a4565b1015610df25760405162461bcd60e51b815260206004820152603260248201527f4d61782057616c6c657420616d74206d7573742062652061626f766520302e3160448201527f25206f6620746f74616c20737570706c792e00000000000000000000000000006064820152608401610aba565b8082610e006012600a613895565b610e0e906305f5e1006138df565b610e1891906138df565b610e2291906138a4565b6014555050565b8051825114610e7a5760405162461bcd60e51b815260206004820152601560248201527f4c656e6774687320646f206e6f74206d617463682e00000000000000000000006044820152606401610aba565b60005b82518160ff161015610f4557818160ff1681518110610e9e57610e9e613915565b6020026020010151610ec5336001600160a01b031660009081526001602052604090205490565b1015610ed057600080fd5b610f3233848360ff1681518110610ee957610ee9613915565b60200260200101516012600a610eff9190613895565b858560ff1681518110610f1457610f14613915565b6020026020010151610f2691906138df565b60008060006001612a8a565b5080610f3d81613944565b915050610e7d565b505050565b6000546001600160a01b03163314610f985760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610aba565b6107d08361ffff1611158015610fb457506107d08261ffff1611155b8015610fc657506107d08161ffff1611155b6110125760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f7420657863656564206d6178696d756d732e0000000000000000006044820152606401610aba565b6008805461ffff9485167fffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000909116176201000093851693909302929092177fffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffff166401000000009190931602919091179055565b6000546001600160a01b031633146110d35760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610aba565b6015546040517f33251a0b0000000000000000000000000000000000000000000000000000000081526001600160a01b03838116600483015262010000909204909116906333251a0b90602401600060405180830381600087803b15801561113a57600080fd5b505af115801561114e573d6000803e3d6000fd5b5050505050565b6000546001600160a01b031633146111a35760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610aba565b83856111b16012600a613895565b6111bf906305f5e1006138df565b6111c991906138df565b6111d391906138a4565b60115581836111e46012600a613895565b6111f2906305f5e1006138df565b6111fc91906138df565b61120691906138a4565b601255600f5550505050565b6000546001600160a01b031633146112605760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610aba565b6001600160a01b03919091166000908152600660205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146112d95760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610aba565b6103e86112e86012600a613895565b6112f6906305f5e1006138df565b61130091906138a4565b818361130e6012600a613895565b61131c906305f5e1006138df565b61132691906138df565b61133091906138a4565b10156113a45760405162461bcd60e51b815260206004820152603760248201527f4d6178205472616e73616374696f6e20616d74206d7573742062652061626f7660448201527f6520302e3125206f6620746f74616c20737570706c792e0000000000000000006064820152608401610aba565b80826113b26012600a613895565b6113c0906305f5e1006138df565b6113ca91906138df565b6113d491906138a4565b6013555050565b6000546001600160a01b031633146114295760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610aba565b6001600160a01b0381166114a55760405162461bcd60e51b815260206004820152603d60248201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660448201527f6572206f776e657220746f20746865207a65726f20616464726573732e0000006064820152608401610aba565b6001600160a01b03811661dead14156115265760405162461bcd60e51b815260206004820152603d60248201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660448201527f6572206f776e657220746f20746865207a65726f20616464726573732e0000006064820152608401610aba565b6000805461153f916001600160a01b03909116906115f4565b61154a8160016115f4565b600080546001600160a01b03168152600160205260409020541561159157600080546001600160a01b0316808252600160205260409091205461158f919083906125d5565b505b600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0383169081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b6000546001600160a01b031633146116425760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610aba565b6001600160a01b03919091166000908152600560205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146116bb5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610aba565b601554610100900460ff16156116d057600080fd5b6001600160a01b0381163014156117295760405162461bcd60e51b815260206004820152600e60248201527f43616e27742062652073656c662e0000000000000000000000000000000000006044820152606401610aba565b601580546001600160a01b0390921662010000027fffffffffffffffffffff0000000000000000000000000000000000000000ffff909216919091179055565b60006117776012600a613895565b601354610c1d91906138a4565b6000546001600160a01b031633146117d25760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610aba565b600080546117eb916001600160a01b03909116906115f4565b600080547fffffffffffffffffffffffff000000000000000000000000000000000000000016815560405181907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3565b6000546001600160a01b0316331461188d5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610aba565b80611904576001600160a01b03828116600081815260026020526040808220805460ff1916905560155490517f80c581d100000000000000000000000000000000000000000000000000000000815260048101939093526024830191909152620100009004909116906380c581d190604401610b17565b6003541561196b576203f4806003544261191e91906138fe565b1161196b5760405162461bcd60e51b815260206004820152601060248201527f332044617920636f6f6c646f776e2e21000000000000000000000000000000006044820152606401610aba565b6001600160a01b0382811660008181526002602052604090819020805460ff191660019081179091554260035560155491517f80c581d100000000000000000000000000000000000000000000000000000000815260048101939093526024830152620100009004909116906380c581d190604401610b17565b5050565b600080546001600160a01b03163314611a385760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610aba565b600a54611a529030906001600160a01b03166000196124c8565b50600190565b6000546001600160a01b03163314611aa65760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610aba565b60155460ff1615611af95760405162461bcd60e51b815260206004820152601860248201527f54726164696e6720616c726561647920656e61626c65642100000000000000006044820152606401610aba565b601554610100900460ff16611b505760405162461bcd60e51b815260206004820152601860248201527f4c6971756964697479206d7573742062652061646465642e00000000000000006044820152606401610aba565b6015546201000090046001600160a01b0316611b9657601580547fffffffffffffffffffff0000000000000000000000000000000000000000ffff163062010000021790555b601554600b546040517f6c115c340000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015263ffffffff4316602482015267ffffffffffffffff4216604482015260126064820152620100009092041690636c115c3490608401600060405180830381600087803b158015611c2157600080fd5b505af1925050508015611c32575060015b506015805460ff19166001179055600b5461271090611c6f906001600160a01b03166001600160a01b031660009081526001602052604090205490565b611c7a9060056138df565b611c8491906138a4565b601155600b546001600160a01b03166000908152600160205260409020546103e890611cb19060016138df565b611cbb91906138a4565b601255565b6000611ccd3384846125d5565b5060019392505050565b6000546001600160a01b03163314611d255760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610aba565b6009805461ffff83811662010000027fffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000090921690851617179055611d698183613964565b6009805461ffff92909216640100000000027fffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffff9092169190911790555050565b6000546001600160a01b03163314611df75760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610aba565b600e80548215156101000261ff00199091161790556040517f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f914105325790611e4090831515815260200190565b60405180910390a150565b6000546001600160a01b03163314611e995760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610aba565b600c80546001600160a01b039384167fffffffffffffffffffffffff000000000000000000000000000000000000000091821617909155600d8054929093169116179055565b6000546001600160a01b03163314611f2d5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610aba565b60008190506000816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611f72573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f96919061398a565b6001600160a01b031663e6a4390530846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611fe3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612007919061398a565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa15801561206a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061208e919061398a565b90506001600160a01b03811661223757816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156120dc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612100919061398a565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561214d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612171919061398a565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af11580156121d6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121fa919061398a565b600b80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039290921691909117905561226b565b600b80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0383161790555b600a80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b038416908117909155610f459030906000196124c8565b6000546001600160a01b031633146122fd5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610aba565b601554610100900460ff16156123555760405162461bcd60e51b815260206004820152601c60248201527f43616e6e6f742063616c6c206166746572206c69717569646974792e000000006044820152606401610aba565b600080546040516001600160a01b03909116914780156108fc02929091818181858888f1935050505015801561238f573d6000803e3d6000fd5b50565b6000546001600160a01b031633146123e05760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610aba565b6015546040517feec2744e0000000000000000000000000000000000000000000000000000000081526001600160a01b0384811660048301528315156024830152620100009092049091169063eec2744e90604401610b17565b6015546040517ffe575a870000000000000000000000000000000000000000000000000000000081526001600160a01b038381166004830152600092620100009004169063fe575a8790602401602060405180830381865afa1580156124a4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bfc91906139a7565b6001600160a01b03831661251e5760405162461bcd60e51b815260206004820152601360248201527f45524332303a205a65726f2041646472657373000000000000000000000000006044820152606401610aba565b6001600160a01b0382166125745760405162461bcd60e51b815260206004820152601360248201527f45524332303a205a65726f2041646472657373000000000000000000000000006044820152606401610aba565b6001600160a01b0383811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006001600160a01b0384166126535760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f64726573730000000000000000000000000000000000000000000000000000006064820152608401610aba565b6001600160a01b0383166126cf5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f65737300000000000000000000000000000000000000000000000000000000006064820152608401610aba565b600082116127455760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d75737420626520677265617465722060448201527f7468616e207a65726f00000000000000000000000000000000000000000000006064820152608401610aba565b6001600160a01b0384166000908152600260205260408120548190819060ff161561277357600192506127a1565b6001600160a01b03861660009081526002602052604090205460ff161561279d57600191506127a1565b5060015b6127ab8787612cca565b156129b15760155460ff166128025760405162461bcd60e51b815260206004820152601860248201527f54726164696e67206e6f742079657420656e61626c65642100000000000000006044820152606401610aba565b828061280b5750815b156128cf576001600160a01b03871660009081526006602052604090205460ff1615801561285257506001600160a01b03861660009081526006602052604090205460ff16155b156128cf576013548511156128cf5760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d61785460448201527f78416d6f756e742e0000000000000000000000000000000000000000000000006064820152608401610aba565b600a546001600160a01b038781169116148015906128eb575081155b156129b1576001600160a01b03861660009081526006602052604090205460ff166129b15760145485612933886001600160a01b031660009081526001602052604090205490565b61293d91906139c4565b11156129b15760405162461bcd60e51b815260206004820152602a60248201527f5472616e7366657220616d6f756e74206578636565647320746865206d61785760448201527f616c6c657453697a652e000000000000000000000000000000000000000000006064820152608401610aba565b6001600160a01b03871660009081526005602052604090205460019060ff16806129f357506001600160a01b03871660009081526005602052604090205460ff165b156129fc575060005b8215612a6f57600e5460ff16158015612a1c5750600e54610100900460ff165b15612a6f5742600f54601054612a3291906139c4565b1015612a6f57306000908152600160205260409020546011548110612a6d576012548110612a5f57506012545b612a6881612d9f565b426010555b505b612a7e88888884888888612a8a565b98975050505050505050565b601554600090610100900460ff16612b3657612aa68888612f9f565b601554610100900460ff16158015612ac35750612ac38888612cca565b15612b365760405162461bcd60e51b815260206004820152602560248201527f4f6e6c79206f776e65722063616e207472616e7366657220617420746869732060448201527f74696d652e0000000000000000000000000000000000000000000000000000006064820152608401610aba565b612b408888612cca565b15612bf3576015546040517fecd07a530000000000000000000000000000000000000000000000000000000081526001600160a01b038a81166004830152898116602483015260448201899052600092620100009004169063ecd07a53906064016020604051808303816000875af1925050508015612bdc575060408051601f3d908101601f19168201909252612bd9918101906139a7565b60015b612be557600080fd5b905080612bf157600080fd5b505b6001600160a01b03881660009081526001602052604081208054889290612c1b9084906138fe565b909155506000905085612c2e5786612c3a565b612c3a8986868a6130fd565b6001600160a01b038916600090815260016020526040812080549293508392909190612c679084906139c4565b92505081905550876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612cb391815260200190565b60405180910390a350600198975050505050505050565b600080546001600160a01b03848116911614801590612cf757506000546001600160a01b03838116911614155b8015612d0e57506000546001600160a01b03163214155b8015612d3357506001600160a01b03821660009081526007602052604090205460ff16155b8015612d5857506001600160a01b03831660009081526007602052604090205460ff16155b8015612d6f57506001600160a01b03821661dead14155b8015612d8357506001600160a01b03821615155b8015612d9857506001600160a01b0383163014155b9392505050565b600e805460ff19166001179055306000908152600460209081526040808320600a546001600160a01b0316845290915290205460001914612e0557306000908152600460209081526040808320600a546001600160a01b03168452909152902060001990555b60095462010000900461ffff16612e1b57612f92565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110612e5057612e50613915565b6001600160a01b03928316602091820292909201810191909152600a54604080517fad5c46480000000000000000000000000000000000000000000000000000000081529051919093169263ad5c46489260048083019391928290030181865afa158015612ec2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ee6919061398a565b81600181518110612ef957612ef9613915565b6001600160a01b039283166020918202929092010152600a54600d546040517f791ac9470000000000000000000000000000000000000000000000000000000081529183169263791ac94792612f5e92879260009288929091169042906004016139dc565b600060405180830381600087803b158015612f7857600080fd5b505af1158015612f8c573d6000803e3d6000fd5b50505050505b50600e805460ff19169055565b601554610100900460ff161561301d5760405162461bcd60e51b815260206004820152602360248201527f4c697175696469747920616c726561647920616464656420616e64206d61726b60448201527f65642e00000000000000000000000000000000000000000000000000000000006064820152608401610aba565b6130278282612cca565b1580156130415750600b546001600160a01b038281169116145b156119e5576001600160a01b038083166000908152600760205260409020805460ff191660011790556015805461ff0019166101001790819055620100009004166130b657601580547fffffffffffffffffffff0000000000000000000000000000000000000000ffff163062010000021790555b600e805461ff001916610100179055604051600181527f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f91410532579060200160405180910390a15050565b6000808415613113575060085461ffff1661313d565b831561312c575060085462010000900461ffff1661313d565b50600854640100000000900461ffff165b600061271061314c83866138df565b61315691906138a4565b60095490915060009061ffff64010000000082048116916131789116846138df565b61318291906138a4565b9050801561321a5761319481836138fe565b600c546001600160a01b0316600081815260016020526040812080549395509192849291906131c49084906139c4565b92505081905550806001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161321091815260200190565b60405180910390a3505b30600090815260016020526040812080548492906132399084906139c4565b909155505060405182815230906001600160a01b038a16907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a361328881836139c4565b612a7e90866138fe565b801515811461238f57600080fd5b600080604083850312156132b357600080fd5b82356132be81613292565b915060208301356132ce81613292565b809150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715613331576133316132d9565b604052919050565b600067ffffffffffffffff821115613353576133536132d9565b5060051b60200190565b6001600160a01b038116811461238f57600080fd5b600082601f83011261338357600080fd5b8135602061339861339383613339565b613308565b82815260059290921b840181019181810190868411156133b757600080fd5b8286015b848110156133db5780356133ce8161335d565b83529183019183016133bb565b509695505050505050565b600080604083850312156133f957600080fd5b823567ffffffffffffffff81111561341057600080fd5b61341c85828601613372565b92505060208301356132ce81613292565b600060208083528351808285015260005b8181101561345a5785810183015185820160400152820161343e565b8181111561346c576000604083870101525b50601f01601f1916929092016040019392505050565b6000806040838503121561349557600080fd5b82356134a08161335d565b946020939093013593505050565b6000806000606084860312156134c357600080fd5b83356134ce8161335d565b925060208401356134de8161335d565b929592945050506040919091013590565b6000806040838503121561350257600080fd5b50508035926020909101359150565b6000806040838503121561352457600080fd5b823567ffffffffffffffff8082111561353c57600080fd5b61354886838701613372565b935060209150818501358181111561355f57600080fd5b85019050601f8101861361357257600080fd5b803561358061339382613339565b81815260059190911b8201830190838101908883111561359f57600080fd5b928401925b828410156135bd578335825292840192908401906135a4565b80955050505050509250929050565b803561ffff811681146135de57600080fd5b919050565b6000806000606084860312156135f857600080fd5b613601846135cc565b925061360f602085016135cc565b915061361d604085016135cc565b90509250925092565b60006020828403121561363857600080fd5b8135612d988161335d565b600080600080600060a0868803121561365b57600080fd5b505083359560208501359550604085013594606081013594506080013592509050565b6000806040838503121561369157600080fd5b82356132be8161335d565b600080604083850312156136af57600080fd5b6136b8836135cc565b91506136c6602084016135cc565b90509250929050565b6000602082840312156136e157600080fd5b8135612d9881613292565b600080604083850312156136ff57600080fd5b823561370a8161335d565b915060208301356132ce8161335d565b600081518084526020808501945080840160005b838110156137535781516001600160a01b03168752958201959082019060010161372e565b509495945050505050565b604081526000613771604083018561371a565b905082151560208301529392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600181815b808511156137ec5781600019048211156137d2576137d2613782565b808516156137df57918102915b93841c93908002906137b6565b509250929050565b60008261380357506001610bfc565b8161381057506000610bfc565b816001811461382657600281146138305761384c565b6001915050610bfc565b60ff84111561384157613841613782565b50506001821b610bfc565b5060208310610133831016604e8410600b841016171561386f575081810a610bfc565b61387983836137b1565b806000190482111561388d5761388d613782565b029392505050565b6000612d9860ff8416836137f4565b6000826138da577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b60008160001904831182151516156138f9576138f9613782565b500290565b60008282101561391057613910613782565b500390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600060ff821660ff81141561395b5761395b613782565b60010192915050565b600061ffff80831681851680830382111561398157613981613782565b01949350505050565b60006020828403121561399c57600080fd5b8151612d988161335d565b6000602082840312156139b957600080fd5b8151612d9881613292565b600082198211156139d7576139d7613782565b500190565b85815284602082015260a0604082015260006139fb60a083018661371a565b6001600160a01b039490941660608301525060800152939250505056fea26469706673582212204909f1285f3abf46e3e4d04a0dcf4bdaf4270c699612c81f67f2908518904d4764736f6c634300080c0033