60806040526008805462ffffff1916620100001790553480156200002257600080fd5b50604080518082018252600580825264484152414d60d81b602080840182815285518087019096529285528401528151919291620000639160039162000519565b5080516200007990600490602084019062000519565b50505062000096620000906200022060201b60201c565b62000224565b620000cb33620000a562000276565b620000b290600a62000748565b620000c5906602cadce2cb204862000833565b6200027b565b6000737a250d5630b4cf539739df2c5dacb4c659f2488d9050600073c02aaa39b223fe8d0a0e5c4f27ead9083c756cc29050816001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156200013757600080fd5b505afa1580156200014c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001729190620005bf565b6001600160a01b031663c9c6539682306040518363ffffffff1660e01b8152600401620001a1929190620005ef565b602060405180830381600087803b158015620001bc57600080fd5b505af1158015620001d1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001f79190620005bf565b600680546001600160a01b0319166001600160a01b039290921691909117905550620008a89050565b3390565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600990565b6001600160a01b038216620002ad5760405162461bcd60e51b8152600401620002a490620006a0565b60405180910390fd5b620002bb600083836200035d565b8060026000828254620002cf9190620006e0565b90915550506001600160a01b03821660009081526020819052604081208054839290620002fe908490620006e0565b90915550506040516001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9062000343908590620006d7565b60405180910390a36200035960008383620004ea565b5050565b6001600160a01b03821660009081526009602052604090205460ff16158015620003a057506001600160a01b03831660009081526009602052604090205460ff16155b620003bf5760405162461bcd60e51b8152600401620002a4906200067c565b60085460ff166200043357620003d4620004ef565b6001600160a01b0316836001600160a01b031614806200040e5750620003f9620004ef565b6001600160a01b0316826001600160a01b0316145b6200042d5760405162461bcd60e51b8152600401620002a49062000657565b620004ea565b600854610100900460ff16806200045857506006546001600160a01b03838116911614155b620004775760405162461bcd60e51b8152600401620002a49062000609565b60085462010000900460ff1680156200049d57506006546001600160a01b038481169116145b15620004ea5760075481620004bd84620004fe60201b6200051e1760201c565b620004c99190620006e0565b1115620004ea5760405162461bcd60e51b8152600401620002a4906200062d565b505050565b6005546001600160a01b031690565b6001600160a01b031660009081526020819052604090205490565b828054620005279062000855565b90600052602060002090601f0160209004810192826200054b576000855562000596565b82601f106200056657805160ff191683800117855562000596565b8280016001018555821562000596579182015b828111156200059657825182559160200191906001019062000579565b50620005a4929150620005a8565b5090565b5b80821115620005a45760008155600101620005a9565b600060208284031215620005d1578081fd5b81516001600160a01b0381168114620005e8578182fd5b9392505050565b6001600160a01b0392831681529116602082015260400190565b6020808252600a9082015269082985a96828492a482960b31b604082015260600190565b60208082526010908201526f6162736f6c7574656c7920686172616d60801b604082015260600190565b6020808252600b908201526a20a616a9a0a3a42093a4a960a91b604082015260600190565b6020808252600a90820152690a68a8a964082989882960b31b604082015260600190565b6020808252601f908201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604082015260600190565b90815260200190565b60008219821115620006f657620006f662000892565b500190565b80825b60018086116200070f57506200073f565b81870482111562000724576200072462000892565b808616156200073257918102915b9490941c938002620006fe565b94509492505050565b6000620005e860001960ff8516846000826200076757506001620005e8565b816200077657506000620005e8565b81600181146200078f57600281146200079a57620007ce565b6001915050620005e8565b60ff841115620007ae57620007ae62000892565b6001841b915084821115620007c757620007c762000892565b50620005e8565b5060208310610133831016604e8410600b841016171562000806575081810a8381111562000800576200080062000892565b620005e8565b620008158484846001620006fb565b8086048211156200082a576200082a62000892565b02949350505050565b600081600019048311821515161562000850576200085062000892565b500290565b6002810460018216806200086a57607f821691505b602082108114156200088c57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b6111a980620008b86000396000f3fe608060405234801561001057600080fd5b50600436106101825760003560e01c80638da5cb5b116100d8578063b671efbb1161008c578063e402aa5811610066578063e402aa58146102d9578063f2fde38b146102e1578063fd1bc2ca146102f457610182565b8063b671efbb146102a0578063d9cc405b146102b3578063dd62ed3e146102c657610182565b8063a457c2d7116100bd578063a457c2d714610272578063a8aa1b3114610285578063a9059cbb1461028d57610182565b80638da5cb5b1461025557806395d89b411461026a57610182565b8063313ce5671161013a578063715018a611610114578063715018a61461023d57806371f482341461024557806389f9a1d31461024d57610182565b8063313ce56714610202578063395093511461021757806370a082311461022a57610182565b806318160ddd1161016b57806318160ddd146101c557806323b872dd146101da5780632cffb599146101ed57610182565b806306fdde0314610187578063095ea7b3146101a5575b600080fd5b61018f6102fc565b60405161019c9190610cb1565b60405180910390f35b6101b86101b3366004610c1f565b61038e565b60405161019c9190610ca6565b6101cd6103ab565b60405161019c91906110fd565b6101b86101e8366004610bbb565b6103b1565b6102006101fb366004610c48565b61044a565b005b61020a6104c5565b60405161019c9190611106565b6101b8610225366004610c1f565b6104ca565b6101cd610238366004610b68565b61051e565b61020061053d565b6101b8610588565b6101cd610597565b61025d61059d565b60405161019c9190610c92565b61018f6105ac565b6101b8610280366004610c1f565b6105bb565b61025d610634565b6101b861029b366004610c1f565b610643565b6102006102ae366004610bf6565b610657565b6101b86102c1366004610b68565b6106c1565b6101cd6102d4366004610b89565b6106d6565b6101b8610701565b6102006102ef366004610b68565b61070f565b6101b8610780565b60606003805461030b90611138565b80601f016020809104026020016040519081016040528092919081815260200182805461033790611138565b80156103845780601f1061035957610100808354040283529160200191610384565b820191906000526020600020905b81548152906001019060200180831161036757829003601f168201915b5050505050905090565b60006103a261039b610789565b848461078d565b50600192915050565b60025490565b60006103be848484610841565b6001600160a01b0384166000908152600160205260408120816103df610789565b6001600160a01b03166001600160a01b031681526020019081526020016000205490508281101561042b5760405162461bcd60e51b815260040161042290610ee6565b60405180910390fd5b61043f85610437610789565b85840361078d565b506001949350505050565b610452610789565b6001600160a01b031661046361059d565b6001600160a01b0316146104895760405162461bcd60e51b815260040161042290610f43565b6008805460ff19169415159490941761ff001916610100931515939093029290921762ff00001916620100009115159190910217909155600755565b600990565b60006103a26104d7610789565b8484600160006104e5610789565b6001600160a01b03908116825260208083019390935260409182016000908120918b16815292529020546105199190611114565b61078d565b6001600160a01b0381166000908152602081905260409020545b919050565b610545610789565b6001600160a01b031661055661059d565b6001600160a01b03161461057c5760405162461bcd60e51b815260040161042290610f43565b610586600061096b565b565b60085462010000900460ff1681565b60075481565b6005546001600160a01b031690565b60606004805461030b90611138565b600080600160006105ca610789565b6001600160a01b03908116825260208083019390935260409182016000908120918816815292529020549050828110156106165760405162461bcd60e51b8152600401610422906110a0565b61062a610621610789565b8585840361078d565b5060019392505050565b6006546001600160a01b031681565b60006103a2610650610789565b8484610841565b61065f610789565b6001600160a01b031661067061059d565b6001600160a01b0316146106965760405162461bcd60e51b815260040161042290610f43565b6001600160a01b03919091166000908152600960205260409020805460ff1916911515919091179055565b60096020526000908152604090205460ff1681565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b600854610100900460ff1681565b610717610789565b6001600160a01b031661072861059d565b6001600160a01b03161461074e5760405162461bcd60e51b815260040161042290610f43565b6001600160a01b0381166107745760405162461bcd60e51b815260040161042290610d61565b61077d8161096b565b50565b60085460ff1681565b3390565b6001600160a01b0383166107b35760405162461bcd60e51b815260040161042290611043565b6001600160a01b0382166107d95760405162461bcd60e51b815260040161042290610dbe565b6001600160a01b0380841660008181526001602090815260408083209487168084529490915290819020849055517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906108349085906110fd565b60405180910390a3505050565b6001600160a01b0383166108675760405162461bcd60e51b815260040161042290610faf565b6001600160a01b03821661088d5760405162461bcd60e51b815260040161042290610d04565b6108988383836109d5565b6001600160a01b038316600090815260208190526040902054818110156108d15760405162461bcd60e51b815260040161042290610e52565b6001600160a01b03808516600090815260208190526040808220858503905591851681529081208054849290610908908490611114565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161095291906110fd565b60405180910390a3610965848484610b3c565b50505050565b600580546001600160a01b038381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b03821660009081526009602052604090205460ff16158015610a1757506001600160a01b03831660009081526009602052604090205460ff16155b610a335760405162461bcd60e51b81526004016104229061100c565b60085460ff16610a9d57610a4561059d565b6001600160a01b0316836001600160a01b03161480610a7c5750610a6761059d565b6001600160a01b0316826001600160a01b0316145b610a985760405162461bcd60e51b815260040161042290610f78565b610b3c565b600854610100900460ff1680610ac157506006546001600160a01b03838116911614155b610add5760405162461bcd60e51b815260040161042290610e1b565b60085462010000900460ff168015610b0257506006546001600160a01b038481169116145b15610b3c5760075481610b148461051e565b610b1e9190611114565b1115610b3c5760405162461bcd60e51b815260040161042290610eaf565b505050565b80356001600160a01b038116811461053857600080fd5b8035801515811461053857600080fd5b600060208284031215610b79578081fd5b610b8282610b41565b9392505050565b60008060408385031215610b9b578081fd5b610ba483610b41565b9150610bb260208401610b41565b90509250929050565b600080600060608486031215610bcf578081fd5b610bd884610b41565b9250610be660208501610b41565b9150604084013590509250925092565b60008060408385031215610c08578182fd5b610c1183610b41565b9150610bb260208401610b58565b60008060408385031215610c31578182fd5b610c3a83610b41565b946020939093013593505050565b60008060008060808587031215610c5d578081fd5b610c6685610b58565b9350610c7460208601610b58565b9250610c8260408601610b58565b9396929550929360600135925050565b6001600160a01b0391909116815260200190565b901515815260200190565b6000602080835283518082850152825b81811015610cdd57858101830151858201604001528201610cc1565b81811115610cee5783604083870101525b50601f01601f1916929092016040019392505050565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201527f6573730000000000000000000000000000000000000000000000000000000000606082015260800190565b60208082526026908201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160408201527f6464726573730000000000000000000000000000000000000000000000000000606082015260800190565b60208082526022908201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560408201527f7373000000000000000000000000000000000000000000000000000000000000606082015260800190565b6020808252600a908201527f414c2d4b41424952414800000000000000000000000000000000000000000000604082015260600190565b60208082526026908201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260408201527f616c616e63650000000000000000000000000000000000000000000000000000606082015260800190565b60208082526010908201527f6162736f6c7574656c7920686172616d00000000000000000000000000000000604082015260600190565b60208082526028908201527f45524332303a207472616e7366657220616d6f756e742065786365656473206160408201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000606082015260800190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6020808252600b908201527f414c2d5341474841274952000000000000000000000000000000000000000000604082015260600190565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460408201527f6472657373000000000000000000000000000000000000000000000000000000606082015260800190565b6020808252600a908201527f5345454b20414c4c414800000000000000000000000000000000000000000000604082015260600190565b60208082526024908201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460408201527f7265737300000000000000000000000000000000000000000000000000000000606082015260800190565b60208082526025908201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760408201527f207a65726f000000000000000000000000000000000000000000000000000000606082015260800190565b90815260200190565b60ff91909116815260200190565b6000821982111561113357634e487b7160e01b81526011600452602481fd5b500190565b60028104600182168061114c57607f821691505b6020821081141561116d57634e487b7160e01b600052602260045260246000fd5b5091905056fea2646970667358221220f74bcb137f26f25e787e21fe066d822d3373a079c8fbaefd49d64d8a3661da5c64736f6c63430008000033