60806040523480156200001157600080fd5b5060405162003183380380620031838339810160408190526200003491620001ff565b604080518082018252601381527f496d70657276696f75732052656769737472790000000000000000000000000060208083019182528351808501909452600284526124a960f11b90840152815184939162000094916000919062000159565b508051620000aa90600190602084019062000159565b5050600680546001600160a01b0319166001600160a01b03939093169290921790915550620000e0620000da3390565b62000107565b50600c80546001600160a01b0319166001600160a01b039290921691909117905562000293565b600a80546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b82805462000167906200023d565b90600052602060002090601f0160209004810192826200018b5760008555620001d6565b82601f10620001a657805160ff1916838001178555620001d6565b82800160010185558215620001d6579182015b82811115620001d6578251825591602001919060010190620001b9565b50620001e4929150620001e8565b5090565b5b80821115620001e45760008155600101620001e9565b6000806040838503121562000212578182fd5b82516200021f816200027a565b602084015190925062000232816200027a565b809150509250929050565b600181811c908216806200025257607f821691505b602082108114156200027457634e487b7160e01b600052602260045260246000fd5b50919050565b6001600160a01b03811681146200029057600080fd5b50565b612ee080620002a36000396000f3fe608060405234801561001057600080fd5b506004361061025c5760003560e01c80638da5cb5b11610145578063d344f062116100bd578063e72b65a61161008c578063ebf0c71711610071578063ebf0c71714610559578063f2fde38b1461056c578063fe1a84871461057f57600080fd5b8063e72b65a61461050a578063e985e9c51461051d57600080fd5b8063d344f0621461049b578063d6e4fa86146104c4578063d9899b7a146104e4578063d9b0829f146104f757600080fd5b8063a22cb46511610114578063c1a287e2116100f9578063c1a287e21461046b578063c87b56dd14610475578063cd34004b1461048857600080fd5b8063a22cb46514610445578063b88d4fde1461045857600080fd5b80638da5cb5b1461040657806395d89b411461041757806396e494e81461041f5780639b642de11461043257600080fd5b806342842e0e116101d857806370a08231116101a7578063854a03dc1161018c578063854a03dc146103cd5780638ae85c4c146103e05780638cb8ecec146103f357600080fd5b806370a08231146103b2578063715018a6146103c557600080fd5b806342842e0e1461035857806361b93ed91461036b5780636352211e1461037e578063703ed86d1461039157600080fd5b806317c210381161022f5780631896f70a116102145780631896f70a1461031f57806323b872dd146103325780633f15457f1461034557600080fd5b806317c21038146102de578063183e8bb5146102f157600080fd5b806301ffc9a71461026157806306fdde0314610289578063081812fc1461029e578063095ea7b3146102c9575b600080fd5b61027461026f366004612b76565b610592565b60405190151581526020015b60405180910390f35b610291610677565b6040516102809190612ca9565b6102b16102ac366004612a4b565b610709565b6040516001600160a01b039091168152602001610280565b6102dc6102d7366004612a04565b6107b4565b005b6102dc6102ec3660046129d7565b6108e6565b6102746102ff366004612a7b565b600e60209081526000928352604080842090915290825290205460ff1681565b6102dc61032d366004612a7b565b610a00565b6102dc61034036600461291a565b610aa9565b600c546102b1906001600160a01b031681565b6102dc61036636600461291a565b610b30565b6102dc610379366004612a7b565b610b4b565b6102b161038c366004612a4b565b610c1b565b6103a461039f366004612b0d565b610c3e565b604051908152602001610280565b6103a46103c03660046128aa565b610c59565b6102dc610cf3565b6102dc6103db366004612a7b565b610d59565b6102dc6103ee366004612ae0565b610ec1565b6103a4610401366004612a7b565b611056565b600a546001600160a01b03166102b1565b6102916112b9565b61027461042d366004612a4b565b6112c8565b6102dc610440366004612bae565b6112ee565b6102dc6104533660046129d7565b61135f565b6102dc61046636600461295a565b61136a565b6103a46276a70081565b610291610483366004612a4b565b6113f8565b6103a4610496366004612b4b565b6114e1565b6102b16104a9366004612a4b565b6000908152600760205260409020546001600160a01b031690565b6103a46104d2366004612a4b565b6000908152600b602052604090205490565b6102dc6104f2366004612a9f565b6116cf565b6103a4610505366004612b0d565b6117f8565b6102dc610518366004612a4b565b611808565b61027461052b3660046128e2565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b6006546102b1906001600160a01b031681565b6102dc61057a3660046128aa565b6118b2565b6102dc61058d366004612a7b565b611994565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000148061062557507fffffffff0000000000000000000000000000000000000000000000000000000082167f80ac58cd00000000000000000000000000000000000000000000000000000000145b8061067157507fffffffff0000000000000000000000000000000000000000000000000000000082167f4380258d00000000000000000000000000000000000000000000000000000000145b92915050565b60606000805461068690612d2b565b80601f01602080910402602001604051908101604052809291908181526020018280546106b290612d2b565b80156106ff5780601f106106d4576101008083540402835291602001916106ff565b820191906000526020600020905b8154815290600101906020018083116106e257829003601f168201915b5050505050905090565b6000818152600260205260408120546001600160a01b03166107985760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860448201527f697374656e7420746f6b656e000000000000000000000000000000000000000060648201526084015b60405180910390fd5b506000908152600460205260409020546001600160a01b031690565b60006107bf82611a30565b9050806001600160a01b0316836001600160a01b031614156108495760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560448201527f7200000000000000000000000000000000000000000000000000000000000000606482015260840161078f565b336001600160a01b03821614806108655750610865813361052b565b6108d75760405162461bcd60e51b815260206004820152603860248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760448201527f6e6572206e6f7220617070726f76656420666f7220616c6c0000000000000000606482015260840161078f565b6108e18383611abb565b505050565b6006546040517fda8c229e0000000000000000000000000000000000000000000000000000000081523360048201526001600160a01b039091169063da8c229e9060240160206040518083038186803b15801561094257600080fd5b505afa158015610956573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061097a9190612a2f565b61098357600080fd5b6001600160a01b03821660008181526008602090815260409182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001685151590811790915591519182527f57d3921711941d46a01157f21672b33678faf885943c6db3cda8102501b77240910160405180910390a25050565b60008281526007602052604090205482906001600160a01b03163314610a2557600080fd5b600c546040517f1896f70a000000000000000000000000000000000000000000000000000000008152600481018590526001600160a01b03848116602483015290911690631896f70a90604401600060405180830381600087803b158015610a8c57600080fd5b505af1158015610aa0573d6000803e3d6000fd5b50505050505050565b610ab33382611b41565b610b255760405162461bcd60e51b815260206004820152603160248201527f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60448201527f776e6572206e6f7220617070726f766564000000000000000000000000000000606482015260840161078f565b6108e1838383611bbc565b6108e18383836040518060200160405280600081525061136a565b60008281526007602052604090205482906001600160a01b03163314610b7057600080fd5b6001600160a01b038216610b8357600080fd5b6000838152600760209081526040918290205491518581526001600160a01b038581169316917f5bfe3924a961e6b5dea82cce5a404c8daf7547d14915b468a1aa897ed3ac3590910160405180910390a35060009182526007602052604090912080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03909216919091179055565b6000818152600b60205260408120544210610c3557600080fd5b61067182611a30565b6000610c4e858585856000611da1565b90505b949350505050565b60006001600160a01b038216610cd75760405162461bcd60e51b815260206004820152602a60248201527f4552433732313a2062616c616e636520717565727920666f7220746865207a6560448201527f726f206164647265737300000000000000000000000000000000000000000000606482015260840161078f565b506001600160a01b031660009081526003602052604090205490565b600a546001600160a01b03163314610d4d5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161078f565b610d576000612039565b565b60008281526007602052604090205482906001600160a01b03163314610d7e57600080fd5b60008381526009602090815260408083206001600160a01b03861684529091529020548390839060ff1680610dcb57506001600160a01b03811660009081526008602052604090205460ff165b610e3d5760405162461bcd60e51b815260206004820152602360248201527f636f6e74726f6c6c6572206e6f7420617070726f76656420627920726567697360448201527f7472790000000000000000000000000000000000000000000000000000000000606482015260840161078f565b6000858152600e602090815260408083206001600160a01b0388168085529083529281902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055518781527f37f16608023716800f023e04d83c82c9db12258537f6dbc7dcfd6ab1eddfec29910160405180910390a25050505050565b600c546040517f02571be300000000000000000000000000000000000000000000000000000000815260048101859052849130916001600160a01b03909116906302571be39060240160206040518083038186803b158015610f2257600080fd5b505afa158015610f36573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f5a91906128c6565b6001600160a01b031614610f6d57600080fd5b60408051602080820187905281830186905282518083038401815260609092019092528051910120610f9f3382611b41565b610fa857600080fd5b600c546040517f06ab592300000000000000000000000000000000000000000000000000000000815260048101879052602481018690526001600160a01b038581166044830152909116906306ab592390606401602060405180830381600087803b15801561101657600080fd5b505af115801561102a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061104e9190612a63565b505050505050565b6006546040517fda8c229e0000000000000000000000000000000000000000000000000000000081523360048201526000916001600160a01b03169063da8c229e9060240160206040518083038186803b1580156110b357600080fd5b505afa1580156110c7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110eb9190612a2f565b6110f457600080fd5b6006546040517fcbe9e764000000000000000000000000000000000000000000000000000000008152600481018590526001600160a01b039091169063cbe9e7649060240160206040518083038186803b15801561115157600080fd5b505afa158015611165573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111899190612a2f565b156111d65760405162461bcd60e51b815260206004820152600b60248201527f6e616d65206c6f636b6564000000000000000000000000000000000000000000604482015260640161078f565b60408051600060208201819052918101859052606001604080518083037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0018152828252805160209182012060008181526007835292909220548284529193506001600160a01b03868116939216917f5bfe3924a961e6b5dea82cce5a404c8daf7547d14915b468a1aa897ed3ac3590910160405180910390a3600081815260076020526040902080546001600160a01b0385167fffffffffffffffffffffffff0000000000000000000000000000000000000000909116179055905092915050565b60606001805461068690612d2b565b6000818152600b602052604081205442906112e7906276a70090612cbc565b1092915050565b600a546001600160a01b031633146113485760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161078f565b805161135b90600d90602084019061277d565b5050565b61135b3383836120a3565b6113743383611b41565b6113e65760405162461bcd60e51b815260206004820152603160248201527f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60448201527f776e6572206e6f7220617070726f766564000000000000000000000000000000606482015260840161078f565b6113f284848484612190565b50505050565b6000818152600260205260409020546060906001600160a01b03166114855760405162461bcd60e51b815260206004820152602f60248201527f4552433732314d657461646174613a2055524920717565727920666f72206e6f60448201527f6e6578697374656e7420746f6b656e0000000000000000000000000000000000606482015260840161078f565b600061148f612219565b905060008151116114af57604051806020016040528060008152506114da565b806114b984612228565b6040516020016114ca929190612c3e565b6040516020818303038152906040525b9392505050565b600c546040517f02571be300000000000000000000000000000000000000000000000000000000815260048101859052600091859130916001600160a01b0316906302571be39060240160206040518083038186803b15801561154357600080fd5b505afa158015611557573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061157b91906128c6565b6001600160a01b03161461158e57600080fd5b6000858152600e60209081526040808320338452909152902054859060ff166115b657600080fd5b604080516020808201899052818301889052825180830384018152606090920183528151918101919091206000818152600b9092529190205442906115ff906276a70090612cbc565b101561160a57600080fd5b6116176276a70086612cbc565b6000828152600b60205260409020546276a70090611636908890612cbc565b6116409190612cbc565b1161164a57600080fd5b6000818152600b602052604081208054879290611668908490612cbc565b90915550506000818152600b60209081526040918290205482518a81529182015287917f227c4f85aaec4624e2479bd2906b6158a7417e44a1f6ba9730fedce24b7eb97d910160405180910390a26000908152600b60205260409020549695505050505050565b6006546040517fda8c229e0000000000000000000000000000000000000000000000000000000081523360048201526001600160a01b039091169063da8c229e9060240160206040518083038186803b15801561172b57600080fd5b505afa15801561173f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117639190612a2f565b61176c57600080fd5b60008381526009602090815260408083206001600160a01b0386168085529083529281902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00168515159081179091558151878152928301527f67baca8e5b41e7bd94248daf737ad5f75ee63f2e59009abb21b80a1313b3cd2791015b60405180910390a2505050565b6000610c4e858585856001611da1565b60008181526007602052604090205481906001600160a01b0316331461182d57600080fd5b60008281526007602090815260408083205490518581526001600160a01b03909116917f5bfe3924a961e6b5dea82cce5a404c8daf7547d14915b468a1aa897ed3ac3590910160405180910390a350600090815260076020526040902080547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055565b600a546001600160a01b0316331461190c5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161078f565b6001600160a01b0381166119885760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f6464726573730000000000000000000000000000000000000000000000000000606482015260840161078f565b61199181612039565b50565b60008281526007602052604090205482906001600160a01b031633146119b957600080fd5b6000838152600e602090815260408083206001600160a01b0386168085529083529281902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055518581527ff085adec143327053d6bfad3d8d0966e1d16f97bae1cb10aef79936352c4b4de91016117eb565b6000818152600260205260408120546001600160a01b0316806106715760405162461bcd60e51b815260206004820152602960248201527f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460448201527f656e7420746f6b656e0000000000000000000000000000000000000000000000606482015260840161078f565b600081815260046020526040902080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0384169081179091558190611b0882611a30565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b600080611b4d83610c1b565b9050806001600160a01b0316846001600160a01b03161480611b885750836001600160a01b0316611b7d84610709565b6001600160a01b0316145b80610c5157506001600160a01b0380821660009081526005602090815260408083209388168352929052205460ff16610c51565b826001600160a01b0316611bcf82611a30565b6001600160a01b031614611c4b5760405162461bcd60e51b815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201527f6f776e6572000000000000000000000000000000000000000000000000000000606482015260840161078f565b6001600160a01b038216611cc65760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f2061646460448201527f7265737300000000000000000000000000000000000000000000000000000000606482015260840161078f565b611cd1600082611abb565b6001600160a01b0383166000908152600360205260408120805460019290611cfa908490612ce8565b90915550506001600160a01b0382166000908152600360205260408120805460019290611d28908490612cbc565b909155505060008181526002602052604080822080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b600c546040517f02571be300000000000000000000000000000000000000000000000000000000815260048101879052600091879130916001600160a01b0316906302571be39060240160206040518083038186803b158015611e0357600080fd5b505afa158015611e17573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e3b91906128c6565b6001600160a01b031614611e4e57600080fd5b6000878152600e60209081526040808320338452909152902054879060ff16611e7657600080fd5b611e836276a70042612cbc565b6276a700611e918742612cbc565b611e9b9190612cbc565b11611ea557600080fd5b6040805160208082018b90528183018a905282518083038401815260609092019092528051910120611ed6816112c8565b611edf57600080fd5b611ee98642612cbc565b6000828152600b60209081526040808320939093556002905220546001600160a01b031615611f1b57611f1b816123a8565b611f25878261245b565b8415611fd357600c546040517f06ab5923000000000000000000000000000000000000000000000000000000008152600481018b9052602481018a90526001600160a01b038981166044830152909116906306ab592390606401602060405180830381600087803b158015611f9957600080fd5b505af1158015611fad573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fd19190612a63565b505b6001600160a01b038716887f3251aebce8a513efde2e10b830aa3f3bda3c6d99c31c4ce74b146ef6c6bfc6068b61200a8a42612cbc565b6040805192835260208301919091520160405180910390a361202c8642612cbc565b9998505050505050505050565b600a80546001600160a01b038381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b816001600160a01b0316836001600160a01b031614156121055760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c657200000000000000604482015260640161078f565b6001600160a01b0383811660008181526005602090815260408083209487168084529482529182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b61219b848484611bbc565b6121a7848484846125b5565b6113f25760405162461bcd60e51b815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527f63656976657220696d706c656d656e7465720000000000000000000000000000606482015260840161078f565b6060600d805461068690612d2b565b60608161226857505060408051808201909152600181527f3000000000000000000000000000000000000000000000000000000000000000602082015290565b8160005b8115612292578061227c81612d7f565b915061228b9050600a83612cd4565b915061226c565b60008167ffffffffffffffff8111156122d4577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280601f01601f1916602001820160405280156122fe576020820181803683370190505b5090505b8415610c5157612313600183612ce8565b9150612320600a86612db8565b61232b906030612cbc565b60f81b818381518110612367577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053506123a1600a86612cd4565b9450612302565b60006123b382611a30565b90506123c0600083611abb565b6001600160a01b03811660009081526003602052604081208054600192906123e9908490612ce8565b909155505060008281526002602052604080822080547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055518391906001600160a01b038416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908390a45050565b6001600160a01b0382166124b15760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f2061646472657373604482015260640161078f565b6000818152600260205260409020546001600160a01b0316156125165760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000604482015260640161078f565b6001600160a01b038216600090815260036020526040812080546001929061253f908490612cbc565b909155505060008181526002602052604080822080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b60006001600160a01b0384163b15612775576040517f150b7a020000000000000000000000000000000000000000000000000000000081526001600160a01b0385169063150b7a0290612612903390899088908890600401612c6d565b602060405180830381600087803b15801561262c57600080fd5b505af192505050801561267a575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820190925261267791810190612b92565b60015b61272a573d8080156126a8576040519150601f19603f3d011682016040523d82523d6000602084013e6126ad565b606091505b5080516127225760405162461bcd60e51b815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527f63656976657220696d706c656d656e7465720000000000000000000000000000606482015260840161078f565b805181602001fd5b7fffffffff00000000000000000000000000000000000000000000000000000000167f150b7a0200000000000000000000000000000000000000000000000000000000149050610c51565b506001610c51565b82805461278990612d2b565b90600052602060002090601f0160209004810192826127ab57600085556127f1565b82601f106127c457805160ff19168380011785556127f1565b828001600101855582156127f1579182015b828111156127f15782518255916020019190600101906127d6565b506127fd929150612801565b5090565b5b808211156127fd5760008155600101612802565b600067ffffffffffffffff8084111561283157612831612e2a565b604051601f85017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190828211818310171561287757612877612e2a565b8160405280935085815286868601111561289057600080fd5b858560208301376000602087830101525050509392505050565b6000602082840312156128bb578081fd5b81356114da81612e59565b6000602082840312156128d7578081fd5b81516114da81612e59565b600080604083850312156128f4578081fd5b82356128ff81612e59565b9150602083013561290f81612e59565b809150509250929050565b60008060006060848603121561292e578081fd5b833561293981612e59565b9250602084013561294981612e59565b929592945050506040919091013590565b6000806000806080858703121561296f578081fd5b843561297a81612e59565b9350602085013561298a81612e59565b925060408501359150606085013567ffffffffffffffff8111156129ac578182fd5b8501601f810187136129bc578182fd5b6129cb87823560208401612816565b91505092959194509250565b600080604083850312156129e9578182fd5b82356129f481612e59565b9150602083013561290f81612e6e565b60008060408385031215612a16578182fd5b8235612a2181612e59565b946020939093013593505050565b600060208284031215612a40578081fd5b81516114da81612e6e565b600060208284031215612a5c578081fd5b5035919050565b600060208284031215612a74578081fd5b5051919050565b60008060408385031215612a8d578182fd5b82359150602083013561290f81612e59565b600080600060608486031215612ab3578283fd5b833592506020840135612ac581612e59565b91506040840135612ad581612e6e565b809150509250925092565b600080600060608486031215612af4578081fd5b83359250602084013591506040840135612ad581612e59565b60008060008060808587031215612b22578182fd5b84359350602085013592506040850135612b3b81612e59565b9396929550929360600135925050565b600080600060608486031215612b5f578081fd5b505081359360208301359350604090920135919050565b600060208284031215612b87578081fd5b81356114da81612e7c565b600060208284031215612ba3578081fd5b81516114da81612e7c565b600060208284031215612bbf578081fd5b813567ffffffffffffffff811115612bd5578182fd5b8201601f81018413612be5578182fd5b610c5184823560208401612816565b60008151808452612c0c816020860160208601612cff565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60008351612c50818460208801612cff565b835190830190612c64818360208801612cff565b01949350505050565b60006001600160a01b03808716835280861660208401525083604083015260806060830152612c9f6080830184612bf4565b9695505050505050565b6020815260006114da6020830184612bf4565b60008219821115612ccf57612ccf612dcc565b500190565b600082612ce357612ce3612dfb565b500490565b600082821015612cfa57612cfa612dcc565b500390565b60005b83811015612d1a578181015183820152602001612d02565b838111156113f25750506000910152565b600181811c90821680612d3f57607f821691505b60208210811415612d79577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415612db157612db1612dcc565b5060010190565b600082612dc757612dc7612dfb565b500690565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6001600160a01b038116811461199157600080fd5b801515811461199157600080fd5b7fffffffff000000000000000000000000000000000000000000000000000000008116811461199157600080fdfea264697066735822122003c3e51316c8f3ce391fea3d4a6f6636fec0879e1a67983ee9b54401e2add71864736f6c6343000804003300000000000000000000000006081c6b2b876eabdc41dfd3345e8fa59588c02e000000000000000000000000d5237534f8800e1d30d3d5961cfe1104e93fa03a