60806040523480156200001157600080fd5b5060405162001f6538038062001f658339810160408190526200003491620001e0565b604051806040016040528060048152602001634d656c6b60e01b815250604051806040016040528060048152602001634d454c4b60e01b8152508160039080519060200190620000869291906200013a565b5080516200009c9060049060208401906200013a565b505050620000b9620000b3620000e460201b60201c565b620000e8565b6001600655600780546001600160a01b0319166001600160a01b03929092169190911790556200024d565b3390565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b828054620001489062000210565b90600052602060002090601f0160209004810192826200016c5760008555620001b7565b82601f106200018757805160ff1916838001178555620001b7565b82800160010185558215620001b7579182015b82811115620001b75782518255916020019190600101906200019a565b50620001c5929150620001c9565b5090565b5b80821115620001c55760008155600101620001ca565b600060208284031215620001f2578081fd5b81516001600160a01b038116811462000209578182fd5b9392505050565b600181811c908216806200022557607f821691505b602082108114156200024757634e487b7160e01b600052602260045260246000fd5b50919050565b611d08806200025d6000396000f3fe608060405234801561001057600080fd5b506004361061012c5760003560e01c80638da5cb5b116100ad578063cda6b84711610071578063cda6b8471461027b578063d7fb97821461028e578063dd62ed3e146102a1578063e222d804146102da578063f2fde38b146102ed57600080fd5b80638da5cb5b1461021257806395d89b411461022d578063a457c2d714610235578063a9059cbb14610248578063b7614de71461025b57600080fd5b806323b872dd116100f457806323b872dd146101ac578063313ce567146101bf57806339509351146101ce57806370a08231146101e1578063715018a61461020a57600080fd5b806305a222a91461013157806306fdde0314610146578063095ea7b31461016457806318160ddd14610187578063211c843014610199575b600080fd5b61014461013f3660046118c3565b610300565b005b61014e610455565b60405161015b9190611ae9565b60405180910390f35b610177610172366004611898565b6104e7565b604051901515815260200161015b565b6002545b60405190815260200161015b565b6101446101a73660046118f3565b6104fd565b6101776101ba366004611858565b610729565b6040516012815260200161015b565b6101776101dc366004611898565b6107d3565b61018b6101ef3660046117e1565b6001600160a01b031660009081526020819052604090205490565b61014461080f565b6005546040516001600160a01b03909116815260200161015b565b61014e610875565b610177610243366004611898565b610884565b610177610256366004611898565b61091d565b61026e6102693660046117e1565b61092a565b60405161015b9190611aa5565b6101446102893660046118c3565b610b5e565b61018b61029c3660046118c3565b610d96565b61018b6102af366004611820565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6101446102e83660046118f3565b610e15565b6101446102fb3660046117e1565b610faf565b6002600654141561032c5760405162461bcd60e51b815260040161032390611b33565b60405180910390fd5b60026006556000818152600960205260409020546001600160a01b031633146103975760405162461bcd60e51b815260206004820152601a60248201527f596f7520646964206e6f74207374616b65207468697320636f770000000000006044820152606401610323565b6007546040516323b872dd60e01b8152306004820152336024820152604481018390526001600160a01b03909116906323b872dd90606401600060405180830381600087803b1580156103e957600080fd5b505af11580156103fd573d6000803e3d6000fd5b505050506104253361040e83610d96565b61042090678ac7230489e80000611baf565b61107a565b60009081526008602090815260408083208390556009909152902080546001600160a01b03191690556001600655565b60606003805461046490611c11565b80601f016020809104026020016040519081016040528092919081815260200182805461049090611c11565b80156104dd5780601f106104b2576101008083540402835291602001916104dd565b820191906000526020600020905b8154815290600101906020018083116104c057829003601f168201915b5050505050905090565b60006104f4338484611159565b50600192915050565b600260065414156105205760405162461bcd60e51b815260040161032390611b33565b60026006556040516105529061053a908790602001611a2b565b6040516020818303038152906040528585858561127e565b6105925760405162461bcd60e51b815260206004820152601160248201527014da59db985d1d5c99481a5b9d985b1a59607a1b6044820152606401610323565b6007546040516331a9108f60e11b81526004810188905233916001600160a01b031690636352211e9060240160206040518083038186803b1580156105d657600080fd5b505afa1580156105ea573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061060e9190611804565b6001600160a01b0316146106345760405162461bcd60e51b815260040161032390611afc565b336000908152602081905260409020546812f939c99edab80000111561069c5760405162461bcd60e51b815260206004820152601b60248201527f596f7520646f206e6f74206861766520656e6f756768204d454c4b00000000006044820152606401610323565b6106af336812f939c99edab80000611341565b33600090815260205260075460405163428fe25b60e11b81526001600160a01b039091169063851fc4b6906106ea9089908990600401611b6a565b600060405180830381600087803b15801561070457600080fd5b505af1158015610718573d6000803e3d6000fd5b505060016006555050505050505050565b6000610736848484611487565b6001600160a01b0384166000908152600160209081526040808320338452909152902054828110156107bb5760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b6064820152608401610323565b6107c88533858403611159565b506001949350505050565b3360008181526001602090815260408083206001600160a01b038716845290915281205490916104f491859061080a908690611b83565b611159565b6005546001600160a01b031633146108695760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610323565b6108736000611657565b565b60606004805461046490611c11565b3360009081526001602090815260408083206001600160a01b0386168452909152812054828110156109065760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610323565b6109133385858403611159565b5060019392505050565b60006104f4338484611487565b60606000805b600760009054906101000a90046001600160a01b03166001600160a01b03166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b15801561097e57600080fd5b505afa158015610992573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109b691906118db565b8110156109ff576000818152600960205260409020546001600160a01b03858116911614156109ed57816109e981611c4c565b9250505b806109f781611c4c565b915050610930565b5060008167ffffffffffffffff811115610a2957634e487b7160e01b600052604160045260246000fd5b604051908082528060200260200182016040528015610a52578160200160208202803683370190505b5090506000805b600760009054906101000a90046001600160a01b03166001600160a01b03166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b158015610aa757600080fd5b505afa158015610abb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610adf91906118db565b811015610b54576000818152600960205260409020546001600160a01b0387811691161415610b425780838381518110610b2957634e487b7160e01b600052603260045260246000fd5b602090810291909101015281610b3e81611c4c565b9250505b80610b4c81611c4c565b915050610a59565b5090949350505050565b60026006541415610b815760405162461bcd60e51b815260040161032390611b33565b600260065560075460405163020604bf60e21b81526004810183905230916001600160a01b03169063081812fc9060240160206040518083038186803b158015610bca57600080fd5b505afa158015610bde573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c029190611804565b6001600160a01b031614610c585760405162461bcd60e51b815260206004820152601e60248201527f4e6f7420617070726f76656420746f207472616e7366657220746f6b656e00006044820152606401610323565b6007546040516331a9108f60e11b81526004810183905233916001600160a01b031690636352211e9060240160206040518083038186803b158015610c9c57600080fd5b505afa158015610cb0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cd49190611804565b6001600160a01b031614610cfa5760405162461bcd60e51b815260040161032390611afc565b6007546040516323b872dd60e01b8152336004820152306024820152604481018390526001600160a01b03909116906323b872dd90606401600060405180830381600087803b158015610d4c57600080fd5b505af1158015610d60573d6000803e3d6000fd5b5050506000918252506008602090815260408083204290556009909152902080546001600160a01b031916331790556001600655565b600081815260086020526040812054610de75760405162461bcd60e51b8152602060048201526013602482015272151bdad95b881a5cc81b9bdd081cdd185ad959606a1b6044820152606401610323565b6000828152600860205260409020546201518090610e059042611bce565b610e0f9190611b9b565b92915050565b60026006541415610e385760405162461bcd60e51b815260040161032390611b33565b6002600655604051610e529061053a9087906020016119ff565b610e925760405162461bcd60e51b815260206004820152601160248201527014da59db985d1d5c99481a5b9d985b1a59607a1b6044820152606401610323565b6007546040516331a9108f60e11b81526004810188905233916001600160a01b031690636352211e9060240160206040518083038186803b158015610ed657600080fd5b505afa158015610eea573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f0e9190611804565b6001600160a01b031614610f345760405162461bcd60e51b815260040161032390611afc565b33600090815260208190526040902054680d8d726b7177a800001115610f9c5760405162461bcd60e51b815260206004820152601b60248201527f596f7520646f206e6f74206861766520656e6f756768204d454c4b00000000006044820152606401610323565b6106af33680d8d726b7177a80000611341565b6005546001600160a01b031633146110095760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610323565b6001600160a01b03811661106e5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610323565b61107781611657565b50565b6001600160a01b0382166110d05760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610323565b80600260008282546110e29190611b83565b90915550506001600160a01b0382166000908152602081905260408120805483929061110f908490611b83565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6001600160a01b0383166111bb5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610323565b6001600160a01b03821661121c5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610323565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b60008061128b87516116a9565b8760405160200161129d929190611a4a565b6040516020818303038152906040528051906020012090508086148015611336575060055460408051600081526020810180835289905260ff88169181019190915260608101869052608081018590526001600160a01b039091169060019060a0016020604051602081039080840390855afa158015611321573d6000803e3d6000fd5b505050602060405103516001600160a01b0316145b979650505050505050565b6001600160a01b0382166113a15760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608401610323565b6001600160a01b038216600090815260208190526040902054818110156114155760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152608401610323565b6001600160a01b0383166000908152602081905260408120838303905560028054849290611444908490611bce565b90915550506040518281526000906001600160a01b038516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602001611271565b6001600160a01b0383166114eb5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610323565b6001600160a01b03821661154d5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610323565b6001600160a01b038316600090815260208190526040902054818110156115c55760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610323565b6001600160a01b038085166000908152602081905260408082208585039055918516815290812080548492906115fc908490611b83565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161164891815260200190565b60405180910390a35b50505050565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6060816116cd5750506040805180820190915260018152600360fc1b602082015290565b8160005b81156116f757806116e181611c4c565b91506116f09050600a83611b9b565b91506116d1565b60008167ffffffffffffffff81111561172057634e487b7160e01b600052604160045260246000fd5b6040519080825280601f01601f19166020018201604052801561174a576020820181803683370190505b5090505b84156117c35761175f600183611bce565b915061176c600a86611c67565b611777906030611b83565b60f81b81838151811061179a57634e487b7160e01b600052603260045260246000fd5b60200101906001600160f81b031916908160001a9053506117bc600a86611b9b565b945061174e565b949350505050565b803560ff811681146117dc57600080fd5b919050565b6000602082840312156117f2578081fd5b81356117fd81611cbd565b9392505050565b600060208284031215611815578081fd5b81516117fd81611cbd565b60008060408385031215611832578081fd5b823561183d81611cbd565b9150602083013561184d81611cbd565b809150509250929050565b60008060006060848603121561186c578081fd5b833561187781611cbd565b9250602084013561188781611cbd565b929592945050506040919091013590565b600080604083850312156118aa578182fd5b82356118b581611cbd565b946020939093013593505050565b6000602082840312156118d4578081fd5b5035919050565b6000602082840312156118ec578081fd5b5051919050565b60008060008060008060c0878903121561190b578182fd5b86359550602087013567ffffffffffffffff80821115611929578384fd5b818901915089601f83011261193c578384fd5b81358181111561194e5761194e611ca7565b604051601f8201601f19908116603f0116810190838211818310171561197657611976611ca7565b816040528281528c602084870101111561198e578687fd5b826020860160208301379182016020018690525096505050604087013593506119b9606088016117cb565b92506080870135915060a087013590509295509295509295565b600081518084526119eb816020860160208601611be5565b601f01601f19169290920160200192915050565b636e616d6560e01b815260008251611a1e816004850160208701611be5565b9190910160040192915050565b636465736360e01b815260008251611a1e816004850160208701611be5565b7f19457468657265756d205369676e6564204d6573736167653a0a000000000000815260008351611a8281601a850160208801611be5565b835190830190611a9981601a840160208801611be5565b01601a01949350505050565b6020808252825182820181905260009190848201906040850190845b81811015611add57835183529284019291840191600101611ac1565b50909695505050505050565b6020815260006117fd60208301846119d3565b60208082526019908201527f596f7520646f206e6f74206f776e207468697320746f6b656e00000000000000604082015260600190565b6020808252601f908201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604082015260600190565b8281526040602082015260006117c360408301846119d3565b60008219821115611b9657611b96611c7b565b500190565b600082611baa57611baa611c91565b500490565b6000816000190483118215151615611bc957611bc9611c7b565b500290565b600082821015611be057611be0611c7b565b500390565b60005b83811015611c00578181015183820152602001611be8565b838111156116515750506000910152565b600181811c90821680611c2557607f821691505b60208210811415611c4657634e487b7160e01b600052602260045260246000fd5b50919050565b6000600019821415611c6057611c60611c7b565b5060010190565b600082611c7657611c76611c91565b500690565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b038116811461107757600080fdfea2646970667358221220dcb9b713383631f5269b92759dad72b10077853b28b331cacd8fd7ba5c8f317f64736f6c63430008040033000000000000000000000000a08f775cbb37d12959f6baf098456bfb6276bdea