0x608060405234801561001057600080fd5b506004361061007d5760003560e01c8063715018a61161005b578063715018a6146100d95780638da5cb5b146100e1578063c4d66de8146100e9578063f2fde38b146100fc5761007d565b806307546172146100825780630900f010146100b157806322dbae32146100c6575b600080fd5b606554610095906001600160a01b031681565b6040516001600160a01b03909116815260200160405180910390f35b6100c46100bf366004610b0a565b61010f565b005b6100956100d4366004610b2b565b6101fe565b6100c4610333565b61009561039e565b6100c46100f7366004610b0a565b6103ae565b6100c461010a366004610b0a565b6104b5565b3361011861039e565b6001600160a01b0316146101735760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064015b60405180910390fd5b806001600160a01b0316633659cfe661018a61059c565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681526001600160a01b039091166004820152602401600060405180830381600087803b1580156101e357600080fd5b505af11580156101f7573d6000803e3d6000fd5b5050505050565b60003361020961039e565b6001600160a01b03161461025f5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161016a565b600061026b85856106ec565b6040516001600160a01b03821681529091507f183e50e714a4af1facd4f941d2c40f0d40261b250503d241334bcce7bc3593b09060200160405180910390a16065546040517f298a26870000000000000000000000000000000000000000000000000000000081526001600160a01b038381166004830152602482018690529091169063298a2687906044015b600060405180830381600087803b15801561031257600080fd5b505af1158015610326573d6000803e3d6000fd5b5092979650505050505050565b3361033c61039e565b6001600160a01b0316146103925760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161016a565b61039c6000610803565b565b6033546001600160a01b03165b90565b600054610100900460ff16806103c7575060005460ff16155b6104395760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a6564000000000000000000000000000000000000606482015260840161016a565b600054610100900460ff16158015610464576000805460ff1961ff0019909116610100171660011790555b61046c61086d565b606580547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03841617905580156104b1576000805461ff00191690555b5050565b336104be61039e565b6001600160a01b0316146105145760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161016a565b6001600160a01b0381166105905760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f6464726573730000000000000000000000000000000000000000000000000000606482015260840161016a565b61059981610803565b50565b6040516000907f4661726d696e67563300000000000000000000000000000000000000000000009082906105d260208201610ad9565b601f1982820381018352601f90910116604081815282516020808501919091207fff00000000000000000000000000000000000000000000000000000000000000828501527fffffffffffffffffffffffffffffffffffffffff0000000000000000000000003060601b166021850152603584018790526055808501919091528251808503909101815260759093019091528151910120935090508261067781610947565b15610684575050506103ab565b828251602084016000f593506001600160a01b0384166106e65760405162461bcd60e51b815260206004820152601960248201527f556e61626c6520746f2063726561746520636f6e747261637400000000000000604482015260640161016a565b50505090565b6000807fc0c53b8b00000000000000000000000000000000000000000000000000000000848461071a61039e565b6040516001600160a01b03938416602482015291831660448301529091166064820152608401604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050905060006040516107ad90610ae6565b604051809103906000f0801580156107c9573d6000803e3d6000fd5b509050806001600160a01b031663cf7a1d776107e361059c565b30856040518463ffffffff1660e01b81526004016102f893929190610b66565b603380546001600160a01b038381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600054610100900460ff1680610886575060005460ff16155b6108f85760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a6564000000000000000000000000000000000000606482015260840161016a565b600054610100900460ff16158015610923576000805460ff1961ff0019909116610100171660011790555b61092b610951565b610933610a1a565b8015610599576000805461ff001916905550565b803b15155b919050565b600054610100900460ff168061096a575060005460ff16155b6109dc5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a6564000000000000000000000000000000000000606482015260840161016a565b600054610100900460ff16158015610933576000805460ff1961ff0019909116610100171660011790558015610599576000805461ff001916905550565b600054610100900460ff1680610a33575060005460ff16155b610aa55760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a6564000000000000000000000000000000000000606482015260840161016a565b600054610100900460ff16158015610ad0576000805460ff1961ff0019909116610100171660011790555b61093333610803565b611d4e80610bd783390190565b610b5e8061292583390190565b80356001600160a01b038116811461094c57600080fd5b600060208284031215610b1b578081fd5b610b2482610af3565b9392505050565b600080600060608486031215610b3f578182fd5b610b4884610af3565b9250610b5660208501610af3565b9150604084013590509250925092565b60006001600160a01b0380861683526020818616818501526060604085015284519150816060850152825b82811015610bad57858101820151858201608001528101610b91565b82811115610bbe5783608084870101525b5050601f01601f19169190910160800194935050505056fe608060405234801561001057600080fd5b50611d2e806100206000396000f3fe608060405234801561001057600080fd5b50600436106101775760003560e01c80638868aea3116100d8578063d7a74e141161008c578063f430cf0d11610066578063f430cf0d146102fb578063fc0c546a14610323578063fee151b01461033657610177565b8063d7a74e14146102d6578063e31ed88e146102df578063f2fde38b146102e857610177565b8063b6b55f25116100bd578063b6b55f2514610287578063c0c53b8b1461029a578063cb13cddb146102ad57610177565b80638868aea3146102565780638da5cb5b1461027657610177565b80632e1a7d4d1161012f57806340ef1e041161011457806340ef1e041461023e57806360e8f13a14610246578063715018a61461024e57610177565b80632e1a7d4d146102235780633d18b9121461023657610177565b80631959a002116101605780631959a002146101be5780631d8557d71461020857806321df0da71461021257610177565b8063075461721461017c5780630ba9c976146101ac575b600080fd5b60665461018f906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b6067545b6040519081526020016101a3565b6101ed6101cc366004611a0b565b606a6020526000908152604090208054600182015460029092015490919083565b604080519384526020840192909252908201526060016101a3565b61021061033e565b005b6065546001600160a01b031661018f565b610210610231366004611b7d565b610348565b61021061057e565b6102106107c1565b606b546101b0565b61021061082a565b610269610264366004611a0b565b61088e565b6040516101a39190611bd9565b6033546001600160a01b031661018f565b610210610295366004611b7d565b6108fe565b6102106102a8366004611a2c565b610adc565b6101b06102bb366004611a0b565b6001600160a01b03166000908152606a602052604090205490565b6101b0606c5481565b6101b0606b5481565b6102106102f6366004611a0b565b610c08565b61030e610309366004611a6e565b610cea565b604080519283526020830191909152016101a3565b60655461018f906001600160a01b031681565b610210610d03565b610346610d1a565b565b6000811161039d5760405162461bcd60e51b815260206004820152600860248201527f616d6f756e74203000000000000000000000000000000000000000000000000060448201526064015b60405180910390fd5b336000908152606a6020526040902080548211156103fd5760405162461bcd60e51b815260206004820152601460248201527f77697468647261773a206e6f7420656e6f7567680000000000000000000000006044820152606401610394565b610405610d1a565b6065546040517fa9059cbb000000000000000000000000000000000000000000000000000000008152336004820152602481018490526001600160a01b039091169063a9059cbb90604401602060405180830381600087803b15801561046a57600080fd5b505af115801561047e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104a29190611b5d565b6104ee5760405162461bcd60e51b815260206004820152601260248201527f4661696c656420746f20776974686472617700000000000000000000000000006044820152606401610394565b6104f781610d69565b8054610504908390611c9a565b80825560695464e8d4a510009161051b9190611c7b565b6105259190611c5b565b8160010181905550816067600082825461053f9190611c9a565b909155505060405182815233907f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a9424364906020015b60405180910390a25050565b60685460ff161561034657610591610d1a565b336000908152606a602052604090206105a981610d69565b600080606660009054906101000a90046001600160a01b03166001600160a01b031663900cf0cf6040518163ffffffff1660e01b815260040160206040518083038186803b1580156105fa57600080fd5b505afa15801561060e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106329190611bb8565b905060005b8160ff1681116106cc5760038401548110156106ba5783600301818154811061067057634e487b7160e01b600052603260045260246000fd5b9060005260206000200154836106869190611c43565b925060008460030182815481106106ad57634e487b7160e01b600052603260045260246000fd5b6000918252602090912001555b806106c481611cb1565b915050610637565b50818360020160008282546106e19190611c9a565b9091555050606954835464e8d4a51000916106fb91611c7b565b6107059190611c5b565b60018401556066546040517f40c10f19000000000000000000000000000000000000000000000000000000008152336004820152602481018490526001600160a01b03909116906340c10f1990604401600060405180830381600087803b15801561076f57600080fd5b505af1158015610783573d6000803e3d6000fd5b50506040518481523392507f619caafabdd75649b302ba8419e48cccf64f37f1983ac4727cfb38b57703ffc9915060200160405180910390a2505050565b6033546001600160a01b0316331461081b5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610394565b6068805460ff19166001179055565b6033546001600160a01b031633146108845760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610394565b610346600061125a565b6001600160a01b0381166000908152606a60209081526040918290206003018054835181840281018401909452808452606093928301828280156108f157602002820191906000526020600020905b8154815260200190600101908083116108dd575b505050505090505b919050565b6000811161094e5760405162461bcd60e51b815260206004820152600860248201527f616d6f756e7420300000000000000000000000000000000000000000000000006044820152606401610394565b336000908152606a60205260409020610965610d1a565b6065546040517f23b872dd000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018490526001600160a01b03909116906323b872dd90606401602060405180830381600087803b1580156109d057600080fd5b505af11580156109e4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a089190611b5d565b610a545760405162461bcd60e51b815260206004820152601160248201527f4661696c656420746f206465706f7369740000000000000000000000000000006044820152606401610394565b610a5d81610d69565b8054610a6a908390611c43565b80825560695464e8d4a5100091610a819190611c7b565b610a8b9190611c5b565b81600101819055508160676000828254610aa59190611c43565b909155505060405182815233907fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c90602001610572565b600054610100900460ff1680610af5575060005460ff16155b610b675760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610394565b600054610100900460ff16158015610b92576000805460ff1961ff0019909116610100171660011790555b606580546001600160a01b038087167fffffffffffffffffffffffff00000000000000000000000000000000000000009283161790925560668054928616929091169190911790556001606c55610be76112c4565b610bf082610c08565b8015610c02576000805461ff00191690555b50505050565b6033546001600160a01b03163314610c625760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610394565b6001600160a01b038116610cde5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610394565b610ce78161125a565b50565b600080610cf7848461139e565b50909590945092505050565b606c5461034657610d12610d1a565b606954606c55565b600080610d2643611747565b606b819055606754919350915015610d6557606754610d4a8364e8d4a51000611c7b565b610d549190611c5b565b606954610d619190611c43565b6069555b5050565b606c54610d7f57610d78610d1a565b606954606c555b600080606660009054906101000a90046001600160a01b03166001600160a01b03166344329f8d6040518163ffffffff1660e01b815260040160006040518083038186803b158015610dd057600080fd5b505afa158015610de4573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610e0c9190810190611a97565b90506000815111610e5f5760405162461bcd60e51b815260206004820152601a60248201527f4552524f523a204e6f20776569676874732070726f76696465640000000000006044820152606401610394565b6003830154610f815760028301546001840154606c54855464e8d4a5100091610e8791611c7b565b610e919190611c5b565b610e9b9190611c9a565b610ea59190611c43565b9150805167ffffffffffffffff811115610ecf57634e487b7160e01b600052604160045260246000fd5b604051908082528060200260200182016040528015610ef8578160200160208202803683370190505b508051610f0f916003860191602090910190611982565b508183600301600081548110610f3557634e487b7160e01b600052603260045260246000fd5b600091825260209091200155606c546069541115610f7c5764e8d4a51000606c54606954610f639190611c9a565b8454610f6f9190611c7b565b610f799190611c5b565b91505b610fb2565b6001830154606954845464e8d4a5100091610f9b91611c7b565b610fa59190611c5b565b610faf9190611c9a565b91505b60008060008560030180549050845111156110b0576000845167ffffffffffffffff811115610ff157634e487b7160e01b600052604160045260246000fd5b60405190808252806020026020018201604052801561101a578160200160208202803683370190505b50905060005b60038801548110156110975787600301818154811061104f57634e487b7160e01b600052603260045260246000fd5b906000526020600020015482828151811061107a57634e487b7160e01b600052603260045260246000fd5b60209081029190910101528061108f81611cb1565b915050611020565b5080516110ad9060038901906020840190611982565b50505b60005b600185516110c19190611c9a565b8110156111aa576127108582815181106110eb57634e487b7160e01b600052603260045260246000fd5b602002602001015161ffff16876111029190611c7b565b61110c9190611c5b565b92508287600301828154811061113257634e487b7160e01b600052603260045260246000fd5b90600052602060002001600082825461114b9190611c43565b90915550506003870180548290811061117457634e487b7160e01b600052603260045260246000fd5b90600052602060002001548261118a9190611c43565b91506111968385611c43565b9350806111a281611cb1565b9150506110b3565b506111b58386611c9a565b86600301600186516111c79190611c9a565b815481106111e557634e487b7160e01b600052603260045260246000fd5b9060005260206000200160008282546111fe9190611c43565b90915550508351600387019061121690600190611c9a565b8154811061123457634e487b7160e01b600052603260045260246000fd5b90600052602060002001548161124a9190611c43565b6002909601959095555050505050565b603380546001600160a01b038381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600054610100900460ff16806112dd575060005460ff16155b61134f5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610394565b600054610100900460ff1615801561137a576000805460ff1961ff0019909116610100171660011790555b6113826117fa565b61138a6118c3565b8015610ce7576000805461ff001916905550565b6001600160a01b038083166000908152606a6020908152604080832060695460665483517f900cf0cf000000000000000000000000000000000000000000000000000000008152935195968796879694959394929091169263900cf0cf926004808301939192829003018186803b15801561141857600080fd5b505afa15801561142c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114509190611bb8565b92506000606660009054906101000a90046001600160a01b03166001600160a01b03166344329f8d6040518163ffffffff1660e01b815260040160006040518083038186803b1580156114a257600080fd5b505afa1580156114b6573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526114de9190810190611a97565b905060008151116115315760405162461bcd60e51b815260206004820152601a60248201527f4552524f523a204e6f20776569676874732070726f76696465640000000000006044820152606401610394565b60008060005b8660ff1681116115d15783818151811061156157634e487b7160e01b600052603260045260246000fd5b6020026020010151836115749190611c1d565b60038701549093508110156115bf578560030181815481106115a657634e487b7160e01b600052603260045260246000fd5b9060005260206000200154896115bc9190611c43565b98505b806115c981611cb1565b915050611537565b50606754156116135760006115e58a611747565b506067549091506115fb8264e8d4a51000611c7b565b6116059190611c5b565b61160f9086611c43565b9450505b60038501541561168a576001850154855464e8d4a5100090611636908790611c7b565b6116409190611c5b565b61164a9190611c9a565b965061271061165d61ffff841689611c7b565b6116679190611c5b565b6116719089611c43565b97508460020154876116839190611c43565b965061173b565b60008560020154866001015464e8d4a51000606c5489600001546116ae9190611c7b565b6116b89190611c5b565b6116c29190611c9a565b6116cc9190611c43565b9050606c548511156117055764e8d4a51000606c54866116ec9190611c9a565b87546116f89190611c7b565b6117029190611c5b565b97505b8061271061171761ffff86168b611c7b565b6117219190611c5b565b61172b9190611c43565b98506117378189611c43565b9750505b50505050509250925092565b606654606b546040517ffb2b347300000000000000000000000000000000000000000000000000000000815260048101919091526024810183905230604482015260009182916001600160a01b039091169063fb2b347390606401604080518083038186803b1580156117b957600080fd5b505afa1580156117cd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117f19190611b95565b91509150915091565b600054610100900460ff1680611813575060005460ff16155b6118855760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610394565b600054610100900460ff1615801561138a576000805460ff1961ff0019909116610100171660011790558015610ce7576000805461ff001916905550565b600054610100900460ff16806118dc575060005460ff16155b61194e5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610394565b600054610100900460ff16158015611979576000805460ff1961ff0019909116610100171660011790555b61138a3361125a565b8280548282559060005260206000209081019282156119bd579160200282015b828111156119bd5782518255916020019190600101906119a2565b506119c99291506119cd565b5090565b5b808211156119c957600081556001016119ce565b80356001600160a01b03811681146108f957600080fd5b805161ffff811681146108f957600080fd5b600060208284031215611a1c578081fd5b611a25826119e2565b9392505050565b600080600060608486031215611a40578182fd5b611a49846119e2565b9250611a57602085016119e2565b9150611a65604085016119e2565b90509250925092565b60008060408385031215611a80578182fd5b611a89836119e2565b946020939093013593505050565b60006020808385031215611aa9578182fd5b825167ffffffffffffffff80821115611ac0578384fd5b818501915085601f830112611ad3578384fd5b815181811115611ae557611ae5611ce2565b838102604051601f19603f83011681018181108582111715611b0957611b09611ce2565b604052828152858101935084860182860187018a1015611b27578788fd5b8795505b83861015611b5057611b3c816119f9565b855260019590950194938601938601611b2b565b5098975050505050505050565b600060208284031215611b6e578081fd5b81518015158114611a25578182fd5b600060208284031215611b8e578081fd5b5035919050565b60008060408385031215611ba7578182fd5b505080516020909101519092909150565b600060208284031215611bc9578081fd5b815160ff81168114611a25578182fd5b6020808252825182820181905260009190848201906040850190845b81811015611c1157835183529284019291840191600101611bf5565b50909695505050505050565b600061ffff808316818516808303821115611c3a57611c3a611ccc565b01949350505050565b60008219821115611c5657611c56611ccc565b500190565b600082611c7657634e487b7160e01b81526012600452602481fd5b500490565b6000816000190483118215151615611c9557611c95611ccc565b500290565b600082821015611cac57611cac611ccc565b500390565b6000600019821415611cc557611cc5611ccc565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052604160045260246000fdfea26469706673582212200c7a7fccc3e8483c351484cd99254e8c0ecb5d08f6bbd2c8b6c7326a80ea3bb164736f6c63430008020033608060405234801561001057600080fd5b50610b3e806100206000396000f3fe6080604052600436106100745760003560e01c80638f2839701161004e5780638f283970146100ef578063cf7a1d771461010f578063d1f5789414610122578063f851a4401461013557610083565b80633659cfe61461008b5780634f1ef286146100ab5780635c60da1b146100be57610083565b366100835761008161014a565b005b61008161014a565b34801561009757600080fd5b506100816100a636600461093f565b610184565b6100816100b93660046109bc565b6101d8565b3480156100ca57600080fd5b506100d3610299565b6040516001600160a01b03909116815260200160405180910390f35b3480156100fb57600080fd5b5061008161010a36600461093f565b610311565b61008161011d366004610960565b610460565b610081610130366004610a3a565b610536565b34801561014157600080fd5b506100d3610656565b6101526106c0565b61018261017d7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b6106c8565b565b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103546001600160a01b0316336001600160a01b031614156101cd576101c8816106ec565b6101d5565b6101d561014a565b50565b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103546001600160a01b0316336001600160a01b0316141561028c5761021c836106ec565b6000836001600160a01b03168383604051610238929190610a86565b600060405180830381855af49150503d8060008114610273576040519150601f19603f3d011682016040523d82523d6000602084013e610278565b606091505b505090508061028657600080fd5b50610294565b61029461014a565b505050565b60006102c37fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b6001600160a01b0316336001600160a01b03161415610306577f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc545b905061030e565b61030e61014a565b90565b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103546001600160a01b0316336001600160a01b031614156101cd576001600160a01b0381166103cd5760405162461bcd60e51b815260206004820152603660248201527f43616e6e6f74206368616e6765207468652061646d696e206f6620612070726f60448201527f787920746f20746865207a65726f20616464726573730000000000000000000060648201526084015b60405180910390fd5b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6104167fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b604080516001600160a01b03928316815291841660208301520160405180910390a16101c8817fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d610355565b600061048a7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b6001600160a01b03161461049d57600080fd5b6104a78382610536565b6104d260017fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6104610acf565b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61031461050e57634e487b7160e01b600052600160045260246000fd5b610294827fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d610355565b60006105607f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b6001600160a01b03161461057357600080fd5b61059e60017f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbd610acf565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc146105da57634e487b7160e01b600052600160045260246000fd5b6105e38261072c565b805115610652576000826001600160a01b0316826040516106049190610a96565b600060405180830381855af49150503d806000811461063f576040519150601f19603f3d011682016040523d82523d6000602084013e610644565b606091505b505090508061029457600080fd5b5050565b60006106807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b6001600160a01b0316336001600160a01b03161415610306577fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103546102ff565b6101826107cb565b3660008037600080366000845af43d6000803e8080156106e7573d6000f35b3d6000fd5b6106f58161072c565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b61073581610879565b6107a75760405162461bcd60e51b815260206004820152603b60248201527f43616e6e6f742073657420612070726f787920696d706c656d656e746174696f60448201527f6e20746f2061206e6f6e2d636f6e74726163742061646472657373000000000060648201526084016103c4565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc55565b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103546001600160a01b0316336001600160a01b031614156108745760405162461bcd60e51b815260206004820152603260248201527f43616e6e6f742063616c6c2066616c6c6261636b2066756e6374696f6e20667260448201527f6f6d207468652070726f78792061646d696e000000000000000000000000000060648201526084016103c4565b610182565b803b15155b919050565b80356001600160a01b038116811461087e57600080fd5b600082601f8301126108aa578081fd5b813567ffffffffffffffff808211156108c5576108c5610af2565b604051601f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190828211818310171561090b5761090b610af2565b81604052838152866020858801011115610923578485fd5b8360208701602083013792830160200193909352509392505050565b600060208284031215610950578081fd5b61095982610883565b9392505050565b600080600060608486031215610974578182fd5b61097d84610883565b925061098b60208501610883565b9150604084013567ffffffffffffffff8111156109a6578182fd5b6109b28682870161089a565b9150509250925092565b6000806000604084860312156109d0578283fd5b6109d984610883565b9250602084013567ffffffffffffffff808211156109f5578384fd5b818601915086601f830112610a08578384fd5b813581811115610a16578485fd5b876020828501011115610a27578485fd5b6020830194508093505050509250925092565b60008060408385031215610a4c578182fd5b610a5583610883565b9150602083013567ffffffffffffffff811115610a70578182fd5b610a7c8582860161089a565b9150509250929050565b6000828483379101908152919050565b60008251815b81811015610ab65760208186018101518583015201610a9c565b81811115610ac45782828501525b509190910192915050565b600082821015610aed57634e487b7160e01b81526011600452602481fd5b500390565b634e487b7160e01b600052604160045260246000fdfea2646970667358221220b13f03fc85cac673f6d4d4432635fd0b5b85dcec20926cb31827b523aeea2db664736f6c63430008020033a26469706673582212206c91836fe7625fc5aeef590289f5008080b805524983ecf136185d93b8312b1764736f6c63430008020033