0x608060405234801561001057600080fd5b50600436106101985760003560e01c806342966c68116100e357806395d89b411161008c578063d539139311610066578063d53913931461036a578063d547741f14610391578063dd62ed3e146103a457600080fd5b806395d89b4114610347578063a217fddf1461034f578063a9059cbb1461035757600080fd5b806379cc6790116100bd57806379cc6790146102f55780638456cb591461030857806391d148541461031057600080fd5b806342966c68146102ae5780635c975abb146102c157806370a08231146102cc57600080fd5b80632f2ff15d11610145578063389ed2671161011f578063389ed2671461026c5780633f4ba83a1461029357806340c10f191461029b57600080fd5b80632f2ff15d14610235578063313ce5671461024a57806336568abe1461025957600080fd5b806318160ddd1161017657806318160ddd146101ed57806323b872dd146101ff578063248a9ca31461021257600080fd5b806301ffc9a71461019d57806306fdde03146101c5578063095ea7b3146101da575b600080fd5b6101b06101ab366004610d39565b6103dd565b60405190151581526020015b60405180910390f35b6101cd610476565b6040516101bc9190610d82565b6101b06101e8366004610ded565b610508565b6003545b6040519081526020016101bc565b6101b061020d366004610e17565b610520565b6101f1610220366004610e53565b60009081526020819052604090206001015490565b610248610243366004610e6c565b610544565b005b604051601281526020016101bc565b610248610267366004610e6c565b61056f565b6101f17f139c2898040ef16910dc9f44dc697df79363da767d8bc92f2e310312b816e46d81565b6102486105c0565b6102486102a9366004610ded565b6105f5565b6102486102bc366004610e53565b610629565b60065460ff166101b0565b6101f16102da366004610e98565b6001600160a01b031660009081526001602052604090205490565b610248610303366004610ded565b610633565b61024861064c565b6101b061031e366004610e6c565b6000918252602082815260408084206001600160a01b0393909316845291905290205460ff1690565b6101cd61067e565b6101f1600081565b6101b0610365366004610ded565b61068d565b6101f17f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a681565b61024861039f366004610e6c565b61069b565b6101f16103b2366004610eb3565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148061047057507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b60606004805461048590610edd565b80601f01602080910402602001604051908101604052809291908181526020018280546104b190610edd565b80156104fe5780601f106104d3576101008083540402835291602001916104fe565b820191906000526020600020905b8154815290600101906020018083116104e157829003601f168201915b5050505050905090565b6000336105168185856106c0565b5060019392505050565b60003361052e8582856106cd565b610539858585610764565b506001949350505050565b60008281526020819052604090206001015461055f816107c3565b61056983836107cd565b50505050565b6001600160a01b03811633146105b1576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6105bb8282610877565b505050565b7f139c2898040ef16910dc9f44dc697df79363da767d8bc92f2e310312b816e46d6105ea816107c3565b6105f26108fa565b50565b7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a661061f816107c3565b6105bb838361094c565b6105f23382610982565b61063e8233836106cd565b6106488282610982565b5050565b7f139c2898040ef16910dc9f44dc697df79363da767d8bc92f2e310312b816e46d610676816107c3565b6105f26109b8565b60606005805461048590610edd565b600033610516818585610764565b6000828152602081905260409020600101546106b6816107c3565b6105698383610877565b6105bb83838360016109f5565b6001600160a01b038381166000908152600260209081526040808320938616835292905220546000198110156105695781811015610755576040517ffb8f41b20000000000000000000000000000000000000000000000000000000081526001600160a01b038416600482015260248101829052604481018390526064015b60405180910390fd5b610569848484840360006109f5565b6001600160a01b03831661078e57604051634b637e8f60e11b81526000600482015260240161074c565b6001600160a01b0382166107b85760405163ec442f0560e01b81526000600482015260240161074c565b6105bb838383610afc565b6105f28133610b0f565b6000828152602081815260408083206001600160a01b038516845290915281205460ff1661086f576000838152602081815260408083206001600160a01b03861684529091529020805460ff191660011790556108273390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a4506001610470565b506000610470565b6000828152602081815260408083206001600160a01b038516845290915281205460ff161561086f576000838152602081815260408083206001600160a01b0386168085529252808320805460ff1916905551339286917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a4506001610470565b610902610b7b565b6006805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b6001600160a01b0382166109765760405163ec442f0560e01b81526000600482015260240161074c565b61064860008383610afc565b6001600160a01b0382166109ac57604051634b637e8f60e11b81526000600482015260240161074c565b61064882600083610afc565b6109c0610bb9565b6006805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25861092f3390565b6001600160a01b038416610a38576040517fe602df050000000000000000000000000000000000000000000000000000000081526000600482015260240161074c565b6001600160a01b038316610a7b576040517f94280d620000000000000000000000000000000000000000000000000000000081526000600482015260240161074c565b6001600160a01b038085166000908152600260209081526040808320938716835292905220829055801561056957826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610aee91815260200190565b60405180910390a350505050565b610b04610bb9565b6105bb838383610bf6565b6000828152602081815260408083206001600160a01b038516845290915290205460ff16610648576040517fe2517d3f0000000000000000000000000000000000000000000000000000000081526001600160a01b03821660048201526024810183905260440161074c565b60065460ff16610bb7576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b60065460ff1615610bb7576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b038316610c21578060036000828254610c169190610f17565b90915550610cac9050565b6001600160a01b03831660009081526001602052604090205481811015610c8d576040517fe450d38c0000000000000000000000000000000000000000000000000000000081526001600160a01b0385166004820152602481018290526044810183905260640161074c565b6001600160a01b03841660009081526001602052604090209082900390555b6001600160a01b038216610cc857600380548290039055610ce7565b6001600160a01b03821660009081526001602052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610d2c91815260200190565b60405180910390a3505050565b600060208284031215610d4b57600080fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114610d7b57600080fd5b9392505050565b60006020808352835180602085015260005b81811015610db057858101830151858201604001528201610d94565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b0381168114610de857600080fd5b919050565b60008060408385031215610e0057600080fd5b610e0983610dd1565b946020939093013593505050565b600080600060608486031215610e2c57600080fd5b610e3584610dd1565b9250610e4360208501610dd1565b9150604084013590509250925092565b600060208284031215610e6557600080fd5b5035919050565b60008060408385031215610e7f57600080fd5b82359150610e8f60208401610dd1565b90509250929050565b600060208284031215610eaa57600080fd5b610d7b82610dd1565b60008060408385031215610ec657600080fd5b610ecf83610dd1565b9150610e8f60208401610dd1565b600181811c90821680610ef157607f821691505b602082108103610f1157634e487b7160e01b600052602260045260246000fd5b50919050565b8082018082111561047057634e487b7160e01b600052601160045260246000fdfea2646970667358221220eef2bccec8d895baeb8e8cfb5cba229ec5758e26cff673bbd22179d47ae6671864736f6c63430008190033
0x608060405234801561001057600080fd5b506040518060400160405280601381526020017f53696e67756c61726974792046696e616e6365000000000000000000000000008152506040518060400160405280600381526020016253464960e81b815250818181600490816100749190610244565b5060056100818282610244565b50506006805460ff19169055506100996000336100f7565b506100c47f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a6336100f7565b506100ef7f139c2898040ef16910dc9f44dc697df79363da767d8bc92f2e310312b816e46d336100f7565b505050610303565b6000828152602081815260408083206001600160a01b038516845290915281205460ff16610199576000838152602081815260408083206001600160a01b03861684529091529020805460ff191660011790556101513390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a450600161019d565b5060005b92915050565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806101cd57607f821691505b6020821081036101ed57634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561023f576000816000526020600020601f850160051c8101602086101561021c5750805b601f850160051c820191505b8181101561023b57828155600101610228565b5050505b505050565b81516001600160401b0381111561025d5761025d6101a3565b6102718161026b84546101b9565b846101f3565b602080601f8311600181146102a6576000841561028e5750858301515b600019600386901b1c1916600185901b17855561023b565b600085815260208120601f198616915b828110156102d5578886015182559484019460019091019084016102b6565b50858210156102f35787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b610f6e806103126000396000f3fe608060405234801561001057600080fd5b50600436106101985760003560e01c806342966c68116100e357806395d89b411161008c578063d539139311610066578063d53913931461036a578063d547741f14610391578063dd62ed3e146103a457600080fd5b806395d89b4114610347578063a217fddf1461034f578063a9059cbb1461035757600080fd5b806379cc6790116100bd57806379cc6790146102f55780638456cb591461030857806391d148541461031057600080fd5b806342966c68146102ae5780635c975abb146102c157806370a08231146102cc57600080fd5b80632f2ff15d11610145578063389ed2671161011f578063389ed2671461026c5780633f4ba83a1461029357806340c10f191461029b57600080fd5b80632f2ff15d14610235578063313ce5671461024a57806336568abe1461025957600080fd5b806318160ddd1161017657806318160ddd146101ed57806323b872dd146101ff578063248a9ca31461021257600080fd5b806301ffc9a71461019d57806306fdde03146101c5578063095ea7b3146101da575b600080fd5b6101b06101ab366004610d39565b6103dd565b60405190151581526020015b60405180910390f35b6101cd610476565b6040516101bc9190610d82565b6101b06101e8366004610ded565b610508565b6003545b6040519081526020016101bc565b6101b061020d366004610e17565b610520565b6101f1610220366004610e53565b60009081526020819052604090206001015490565b610248610243366004610e6c565b610544565b005b604051601281526020016101bc565b610248610267366004610e6c565b61056f565b6101f17f139c2898040ef16910dc9f44dc697df79363da767d8bc92f2e310312b816e46d81565b6102486105c0565b6102486102a9366004610ded565b6105f5565b6102486102bc366004610e53565b610629565b60065460ff166101b0565b6101f16102da366004610e98565b6001600160a01b031660009081526001602052604090205490565b610248610303366004610ded565b610633565b61024861064c565b6101b061031e366004610e6c565b6000918252602082815260408084206001600160a01b0393909316845291905290205460ff1690565b6101cd61067e565b6101f1600081565b6101b0610365366004610ded565b61068d565b6101f17f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a681565b61024861039f366004610e6c565b61069b565b6101f16103b2366004610eb3565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148061047057507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b60606004805461048590610edd565b80601f01602080910402602001604051908101604052809291908181526020018280546104b190610edd565b80156104fe5780601f106104d3576101008083540402835291602001916104fe565b820191906000526020600020905b8154815290600101906020018083116104e157829003601f168201915b5050505050905090565b6000336105168185856106c0565b5060019392505050565b60003361052e8582856106cd565b610539858585610764565b506001949350505050565b60008281526020819052604090206001015461055f816107c3565b61056983836107cd565b50505050565b6001600160a01b03811633146105b1576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6105bb8282610877565b505050565b7f139c2898040ef16910dc9f44dc697df79363da767d8bc92f2e310312b816e46d6105ea816107c3565b6105f26108fa565b50565b7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a661061f816107c3565b6105bb838361094c565b6105f23382610982565b61063e8233836106cd565b6106488282610982565b5050565b7f139c2898040ef16910dc9f44dc697df79363da767d8bc92f2e310312b816e46d610676816107c3565b6105f26109b8565b60606005805461048590610edd565b600033610516818585610764565b6000828152602081905260409020600101546106b6816107c3565b6105698383610877565b6105bb83838360016109f5565b6001600160a01b038381166000908152600260209081526040808320938616835292905220546000198110156105695781811015610755576040517ffb8f41b20000000000000000000000000000000000000000000000000000000081526001600160a01b038416600482015260248101829052604481018390526064015b60405180910390fd5b610569848484840360006109f5565b6001600160a01b03831661078e57604051634b637e8f60e11b81526000600482015260240161074c565b6001600160a01b0382166107b85760405163ec442f0560e01b81526000600482015260240161074c565b6105bb838383610afc565b6105f28133610b0f565b6000828152602081815260408083206001600160a01b038516845290915281205460ff1661086f576000838152602081815260408083206001600160a01b03861684529091529020805460ff191660011790556108273390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a4506001610470565b506000610470565b6000828152602081815260408083206001600160a01b038516845290915281205460ff161561086f576000838152602081815260408083206001600160a01b0386168085529252808320805460ff1916905551339286917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a4506001610470565b610902610b7b565b6006805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b6001600160a01b0382166109765760405163ec442f0560e01b81526000600482015260240161074c565b61064860008383610afc565b6001600160a01b0382166109ac57604051634b637e8f60e11b81526000600482015260240161074c565b61064882600083610afc565b6109c0610bb9565b6006805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25861092f3390565b6001600160a01b038416610a38576040517fe602df050000000000000000000000000000000000000000000000000000000081526000600482015260240161074c565b6001600160a01b038316610a7b576040517f94280d620000000000000000000000000000000000000000000000000000000081526000600482015260240161074c565b6001600160a01b038085166000908152600260209081526040808320938716835292905220829055801561056957826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610aee91815260200190565b60405180910390a350505050565b610b04610bb9565b6105bb838383610bf6565b6000828152602081815260408083206001600160a01b038516845290915290205460ff16610648576040517fe2517d3f0000000000000000000000000000000000000000000000000000000081526001600160a01b03821660048201526024810183905260440161074c565b60065460ff16610bb7576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b60065460ff1615610bb7576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b038316610c21578060036000828254610c169190610f17565b90915550610cac9050565b6001600160a01b03831660009081526001602052604090205481811015610c8d576040517fe450d38c0000000000000000000000000000000000000000000000000000000081526001600160a01b0385166004820152602481018290526044810183905260640161074c565b6001600160a01b03841660009081526001602052604090209082900390555b6001600160a01b038216610cc857600380548290039055610ce7565b6001600160a01b03821660009081526001602052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610d2c91815260200190565b60405180910390a3505050565b600060208284031215610d4b57600080fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114610d7b57600080fd5b9392505050565b60006020808352835180602085015260005b81811015610db057858101830151858201604001528201610d94565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b0381168114610de857600080fd5b919050565b60008060408385031215610e0057600080fd5b610e0983610dd1565b946020939093013593505050565b600080600060608486031215610e2c57600080fd5b610e3584610dd1565b9250610e4360208501610dd1565b9150604084013590509250925092565b600060208284031215610e6557600080fd5b5035919050565b60008060408385031215610e7f57600080fd5b82359150610e8f60208401610dd1565b90509250929050565b600060208284031215610eaa57600080fd5b610d7b82610dd1565b60008060408385031215610ec657600080fd5b610ecf83610dd1565b9150610e8f60208401610dd1565b600181811c90821680610ef157607f821691505b602082108103610f1157634e487b7160e01b600052602260045260246000fd5b50919050565b8082018082111561047057634e487b7160e01b600052601160045260246000fdfea2646970667358221220eef2bccec8d895baeb8e8cfb5cba229ec5758e26cff673bbd22179d47ae6671864736f6c63430008190033