6080604052604051620016523803806200165283398101604081905262000026916200075a565b82604051806020016040528060008152506200004b82826000620000ee60201b60201c565b506200005a905083826200012b565b80620000947ff1d28697ebfd3945ab169f44c52207f202e9d70af45e28ef53a15d0d2845fe2560001b6200021e60201b620002881760201c565b8151620000a59260200190620005cb565b50620000da826040518060400160405280600a815260200169283937bc3ca0b236b4b760b11b8152506200012b60201b60201c565b620000e58262000221565b50505062000888565b620000f9836200027c565b600082511180620001075750805b156200012657620001248383620002be60201b6200028b1760201c565b505b505050565b816001600160a01b03166393f0899a6040518163ffffffff1660e01b815260040160006040518083038186803b1580156200016557600080fd5b505afa1580156200017a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620001a49190810190620007c0565b805190602001208180519060200120146200021a5760405162461bcd60e51b815260206004820152602b60248201527f4d6f64756c654261736550726f78793a20696e76616c6964207461726765742060448201526a6d6f64756c65206e616d6560a81b60648201526084015b60405180910390fd5b5050565b90565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6200024c620002ed565b604080516001600160a01b03928316815291841660208301520160405180910390a1620002798162000326565b50565b6200028781620003d7565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6060620002e683836040518060600160405280602781526020016200162b602791396200048b565b9392505050565b6000620003176000805160206200160b83398151915260001b6200021e60201b620002881760201c565b546001600160a01b0316919050565b6001600160a01b0381166200038d5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b606482015260840162000211565b80620003b66000805160206200160b83398151915260001b6200021e60201b620002881760201c565b80546001600160a01b0319166001600160a01b039290921691909117905550565b620003ed816200050a60201b620002b71760201c565b620004515760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b606482015260840162000211565b80620003b67f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b6200021e60201b620002881760201c565b6060600080856001600160a01b031685604051620004aa9190620007f8565b600060405180830381855af49150503d8060008114620004e7576040519150601f19603f3d011682016040523d82523d6000602084013e620004ec565b606091505b509092509050620005008683838762000519565b9695505050505050565b6001600160a01b03163b151590565b606083156200058a57825162000582576001600160a01b0385163b620005825760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640162000211565b508162000596565b6200059683836200059e565b949350505050565b815115620005af5781518083602001fd5b8060405162461bcd60e51b815260040162000211919062000816565b828054620005d9906200084b565b90600052602060002090601f016020900481019282620005fd576000855562000648565b82601f106200061857805160ff191683800117855562000648565b8280016001018555821562000648579182015b82811115620006485782518255916020019190600101906200062b565b50620006569291506200065a565b5090565b5b808211156200065657600081556001016200065b565b80516001600160a01b03811681146200068957600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b83811015620006c1578181015183820152602001620006a7565b83811115620001245750506000910152565b600082601f830112620006e557600080fd5b81516001600160401b03808211156200070257620007026200068e565b604051601f8301601f19908116603f011681019082821181831017156200072d576200072d6200068e565b816040528381528660208588010111156200074757600080fd5b62000500846020830160208901620006a4565b6000806000606084860312156200077057600080fd5b6200077b8462000671565b92506200078b6020850162000671565b60408501519092506001600160401b03811115620007a857600080fd5b620007b686828701620006d3565b9150509250925092565b600060208284031215620007d357600080fd5b81516001600160401b03811115620007ea57600080fd5b6200059684828501620006d3565b600082516200080c818460208701620006a4565b9190910192915050565b602081526000825180602084015262000837816040850160208701620006a4565b601f01601f19169190910160400192915050565b600181811c908216806200086057607f821691505b602082108114156200088257634e487b7160e01b600052602260045260246000fd5b50919050565b610d7380620008986000396000f3fe60806040526004361061002d5760003560e01c8063867865f21461004457806393f0899a146100655761003c565b3661003c5761003a610087565b005b61003a610087565b34801561005057600080fd5b50604051600181526020015b60405180910390f35b34801561007157600080fd5b5061007a6101d7565b60405161005c9190610a90565b61008f6102c6565b6001600160a01b0316336001600160a01b031614156101cd5760606001600160e01b031960003516631b2ce7f360e11b8114156100d5576100ce6102f9565b91506101c5565b6001600160e01b0319811663278f794360e11b14156100f6576100ce61036a565b6001600160e01b031981166308f2839760e41b1415610117576100ce6103c5565b6001600160e01b031981166303e1469160e61b1415610138576100ce610422565b6001600160e01b03198116635c60da1b60e01b1415610159576100ce610462565b60405162461bcd60e51b815260206004820152603660248201527f4d6f64756c654261736550726f78793a2061646d696e2063616e6e6f742066616044820152751b1b189858dac81d1bc81c1c9bde1e481d185c99d95d60521b60648201526084015b60405180910390fd5b815160208301f35b6101d5610476565b565b60607ff1d28697ebfd3945ab169f44c52207f202e9d70af45e28ef53a15d0d2845fe25805461020590610ac3565b80601f016020809104026020016040519081016040528092919081815260200182805461023190610ac3565b801561027e5780601f106102535761010080835404028352916020019161027e565b820191906000526020600020905b81548152906001019060200180831161026157829003601f168201915b5050505050905090565b90565b60606102b08383604051806060016040528060278152602001610d1760279139610486565b9392505050565b6001600160a01b03163b151590565b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b60606103036104fe565b60006103123660048184610afe565b81019061031f9190610b44565b90506103328161032d6101d7565b610509565b61033b816105f2565b61035681604051806020016040528060008152506000610761565b505060408051602081019091526000815290565b606060008061037c3660048184610afe565b8101906103899190610bce565b915091506103998261032d6101d7565b6103a2826105f2565b6103ae82826001610761565b604051806020016040528060008152509250505090565b60606103cf6104fe565b60006103de3660048184610afe565b8101906103eb9190610b44565b9050610419816040518060400160405280600a815260200169283937bc3ca0b236b4b760b11b815250610509565b6103568161078d565b606061042c6104fe565b60006104366102c6565b604080516001600160a01b03831660208201529192500160405160208183030381529060405291505090565b606061046c6104fe565b60006104366107e4565b6101d56104816107e4565b6107f3565b6060600080856001600160a01b0316856040516104a39190610c5f565b600060405180830381855af49150503d80600081146104de576040519150601f19603f3d011682016040523d82523d6000602084013e6104e3565b606091505b50915091506104f486838387610817565b9695505050505050565b34156101d557600080fd5b816001600160a01b03166393f0899a6040518163ffffffff1660e01b815260040160006040518083038186803b15801561054257600080fd5b505afa158015610556573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261057e9190810190610c7b565b805190602001208180519060200120146105ee5760405162461bcd60e51b815260206004820152602b60248201527f4d6f64756c654261736550726f78793a20696e76616c6964207461726765742060448201526a6d6f64756c65206e616d6560a81b60648201526084016101bc565b5050565b6000816001600160a01b031663baa3b4d76040518163ffffffff1660e01b815260040160206040518083038186803b15801561062d57600080fd5b505afa158015610641573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106659190610cf2565b905060008161ffff161180156106fa575061067e6107e4565b6001600160a01b031663baa3b4d76040518163ffffffff1660e01b815260040160206040518083038186803b1580156106b657600080fd5b505afa1580156106ca573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106ee9190610cf2565b61ffff168161ffff1614155b6105ee5760405162461bcd60e51b815260206004820152603260248201527f4d6f64756c654261736550726f78793a20696e76616c6964206f722073616d65604482015271103732bb903637b3b4b1903b32b939b4b7b760711b60648201526084016101bc565b61076a83610895565b6000825111806107775750805b1561078857610786838361028b565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6107b66102c6565b604080516001600160a01b03928316815291841660208301520160405180910390a16107e1816108d5565b50565b60006107ee61097e565b905090565b3660008037600080366000845af43d6000803e808015610812573d6000f35b3d6000fd5b6060831561088357825161087c576001600160a01b0385163b61087c5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016101bc565b508161088d565b61088d83836109a6565b949350505050565b61089e816109d0565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6001600160a01b03811661093a5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084016101bc565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6102ea565b8151156109b65781518083602001fd5b8060405162461bcd60e51b81526004016101bc9190610a90565b6001600160a01b0381163b610a3d5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016101bc565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61095d565b60005b83811015610a7f578181015183820152602001610a67565b838111156107865750506000910152565b6020815260008251806020840152610aaf816040850160208701610a64565b601f01601f19169190910160400192915050565b600181811c90821680610ad757607f821691505b60208210811415610af857634e487b7160e01b600052602260045260246000fd5b50919050565b60008085851115610b0e57600080fd5b83861115610b1b57600080fd5b5050820193919092039150565b80356001600160a01b0381168114610b3f57600080fd5b919050565b600060208284031215610b5657600080fd5b6102b082610b28565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715610b9e57610b9e610b5f565b604052919050565b600067ffffffffffffffff821115610bc057610bc0610b5f565b50601f01601f191660200190565b60008060408385031215610be157600080fd5b610bea83610b28565b9150602083013567ffffffffffffffff811115610c0657600080fd5b8301601f81018513610c1757600080fd5b8035610c2a610c2582610ba6565b610b75565b818152866020838501011115610c3f57600080fd5b816020840160208301376000602083830101528093505050509250929050565b60008251610c71818460208701610a64565b9190910192915050565b600060208284031215610c8d57600080fd5b815167ffffffffffffffff811115610ca457600080fd5b8201601f81018413610cb557600080fd5b8051610cc3610c2582610ba6565b818152856020838501011115610cd857600080fd5b610ce9826020830160208601610a64565b95945050505050565b600060208284031215610d0457600080fd5b815161ffff811681146102b057600080fdfe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220082f01f7c0860f9b9d82e7decc72080b8c5adf7939a7db1fd87423724a63e53964736f6c63430008090033b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564000000000000000000000000703893c9feaecf865bdeefd79fcf821ec57d0e8b0000000000000000000000002602d6c98b80459b03ca10e2457f51c587ae066e00000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000008546f6b656e464343000000000000000000000000000000000000000000000000