60806040523480156200001157600080fd5b5060408051808201825260168082527f56657273655f4469766964656e645f547261636b657200000000000000000000602080840182815285518087019096529285528401528151919291839183916200006e91600391620000e0565b50805162000084906004906020840190620000e0565b5050610bb86008555050600a80546001600160a01b0319163390811790915560405190915081906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350610e10601255620001c3565b828054620000ee9062000186565b90600052602060002090601f0160209004810192826200011257600085556200015d565b82601f106200012d57805160ff19168380011785556200015d565b828001600101855582156200015d579182015b828111156200015d57825182559160200191906001019062000140565b506200016b9291506200016f565b5090565b5b808211156200016b576000815560010162000170565b600181811c908216806200019b57607f821691505b60208210811415620001bd57634e487b7160e01b600052602260045260246000fd5b50919050565b61231d80620001d36000396000f3fe6080604052600436106102295760003560e01c806385a6b3ae11610123578063bc4c4b37116100ab578063e98030c71161006f578063e98030c7146106b4578063f2fde38b146106d4578063f39b5020146106f4578063fbcbc0f11461070a578063ffb2c4791461072a57600080fd5b8063bc4c4b37146105fc578063c38f9cad1461061c578063dd62ed3e14610639578063e30443bc1461067f578063e7841ec01461069f57600080fd5b80639d55d16f116100f25780639d55d16f14610546578063a457c2d714610566578063a8b9d24014610586578063a9059cbb146105a6578063aafd847a146105c657600080fd5b806385a6b3ae146104d35780638da5cb5b146104e957806391b89fba1461051157806395d89b411461053157600080fd5b8063313ce567116101b15780636a474002116101755780636a474002146104485780636f2789ec1461045d57806370a0823114610473578063715018a6146104a95780637bae416f146104be57600080fd5b8063313ce5671461035757806331e79db01461037357806339509351146103935780634e7b827f146103b35780635183d6fd146103e357600080fd5b806318160ddd116101f857806318160ddd146102bf578063226cfa3d146102d457806323b872dd1461030157806327ce0147146103215780633009a6091461034157600080fd5b806303c833021461023d57806306fdde0314610245578063095ea7b31461027057806309bbedde146102a057600080fd5b3661023857610236610765565b005b600080fd5b610236610765565b34801561025157600080fd5b5061025a6107f8565b604051610267919061207e565b60405180910390f35b34801561027c57600080fd5b5061029061028b366004611fb6565b61088a565b6040519015158152602001610267565b3480156102ac57600080fd5b50600b545b604051908152602001610267565b3480156102cb57600080fd5b506002546102b1565b3480156102e057600080fd5b506102b16102ef366004611f42565b60116020526000908152604090205481565b34801561030d57600080fd5b5061029061031c36600461200e565b6108a1565b34801561032d57600080fd5b506102b161033c366004611f42565b61090a565b34801561034d57600080fd5b506102b1600f5481565b34801561036357600080fd5b5060405160128152602001610267565b34801561037f57600080fd5b5061023661038e366004611f42565b610966565b34801561039f57600080fd5b506102906103ae366004611fb6565b610a96565b3480156103bf57600080fd5b506102906103ce366004611f42565b60106020526000908152604090205460ff1681565b3480156103ef57600080fd5b506104036103fe366004612066565b610acc565b604080516001600160a01b0390991689526020890197909752958701949094526060860192909252608085015260a084015260c083015260e082015261010001610267565b34801561045457600080fd5b50610236610c3e565b34801561046957600080fd5b506102b160125481565b34801561047f57600080fd5b506102b161048e366004611f42565b6001600160a01b031660009081526020819052604090205490565b3480156104b557600080fd5b50610236610ce2565b3480156104ca57600080fd5b50610403610d56565b3480156104df57600080fd5b506102b160095481565b3480156104f557600080fd5b50600a546040516001600160a01b039091168152602001610267565b34801561051d57600080fd5b506102b161052c366004611f42565b610ecd565b34801561053d57600080fd5b5061025a610ed8565b34801561055257600080fd5b50610236610561366004612066565b610ee7565b34801561057257600080fd5b50610290610581366004611fb6565b610fc7565b34801561059257600080fd5b506102b16105a1366004611f42565b611016565b3480156105b257600080fd5b506102906105c1366004611fb6565b611042565b3480156105d257600080fd5b506102b16105e1366004611f42565b6001600160a01b031660009081526007602052604090205490565b34801561060857600080fd5b50610290610617366004611f7a565b61104f565b34801561062857600080fd5b506102b1681b1ae4d6e2ef50000081565b34801561064557600080fd5b506102b1610654366004611fe1565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b34801561068b57600080fd5b5061023661069a366004611fb6565b6110fd565b3480156106ab57600080fd5b50600f546102b1565b3480156106c057600080fd5b506102366106cf366004612066565b611272565b3480156106e057600080fd5b506102366106ef366004611f42565b6113e2565b34801561070057600080fd5b506102b160085481565b34801561071657600080fd5b50610403610725366004611f42565b6114cd565b34801561073657600080fd5b5061074a610745366004612066565b611645565b60408051938452602084019290925290820152606001610267565b600061077060025490565b1161077a57600080fd5b34156107f6576107ad61078c60025490565b61079a34600160801b61176e565b6107a4919061215f565b600554906117f4565b60055560405134815233907fa493a9229478c3fcd73f66d2cdeb7f94fd0f341da924d1054236d784541165119060200160405180910390a26009546107f290346117f4565b6009555b565b606060038054610807906121f4565b80601f0160208091040260200160405190810160405280929190818152602001828054610833906121f4565b80156108805780601f1061085557610100808354040283529160200191610880565b820191906000526020600020905b81548152906001019060200180831161086357829003601f168201915b5050505050905090565b6000610897338484611853565b5060015b92915050565b60006108ae848484611977565b61090084336108fb8560405180606001604052806028815260200161229b602891396001600160a01b038a16600090815260016020908152604080832033845290915290205491906119d4565b611853565b5060019392505050565b6001600160a01b03811660009081526006602090815260408083205491839052822054600554600160801b9261095c92610957926109519161094c919061176e565b611a0e565b90611a1e565b611a5c565b61089b919061215f565b600a546001600160a01b031633146109995760405162461bcd60e51b8152600401610990906120d1565b60405180910390fd5b6001600160a01b03811660009081526010602052604090205460ff16156109bf57600080fd5b6001600160a01b0381166000908152601060205260408120805460ff191660011790556109ed908290611a6f565b60405163131836e760e21b8152600b60048201526001600160a01b0382166024820152731a1402e73d651cce8a9b7158087eec33be4ac80790634c60db9c9060440160006040518083038186803b158015610a4757600080fd5b505af4158015610a5b573d6000803e3d6000fd5b50506040516001600160a01b03841692507fbc358c1a6bbec2cf1d21c2fb5a564b55d7828e32fb5da64adf3c5479264650109150600090a250565b3360008181526001602090815260408083206001600160a01b038716845290915281205490916108979185906108fb90866117f4565b600080600080600080600080600b731a1402e73d651cce8a9b7158087eec33be4ac80763deb3d89690916040518263ffffffff1660e01b8152600401610b1491815260200190565b60206040518083038186803b158015610b2c57600080fd5b505af4158015610b40573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b64919061204e565b8910610b89575060009650600019955085945086935083925082915081905080610c33565b6040516368d54f3f60e11b8152600b6004820152602481018a9052600090731a1402e73d651cce8a9b7158087eec33be4ac8079063d1aa9e7e9060440160206040518083038186803b158015610bde57600080fd5b505af4158015610bf2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c169190611f5e565b9050610c21816114cd565b98509850985098509850985098509850505b919395975091939597565b60405162461bcd60e51b815260206004820152606760248201527f56657273655f4469766964656e645f547261636b65723a20776974686472617760448201527f4469766964656e642064697361626c65642e20557365207468652027636c616960648201527f6d272066756e6374696f6e206f6e20746865206d61696e20566572736520636f608482015266373a3930b1ba1760c91b60a482015260c401610990565b600a546001600160a01b03163314610d0c5760405162461bcd60e51b8152600401610990906120d1565b600a546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600a80546001600160a01b0319169055565b600080600080600080600080600b731a1402e73d651cce8a9b7158087eec33be4ac80763deb3d89690916040518263ffffffff1660e01b8152600401610d9e91815260200190565b60206040518083038186803b158015610db657600080fd5b505af4158015610dca573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dee919061204e565b600f5410610e15575060009650600019955085945086935083925082915081905080610ec3565b600f546040516368d54f3f60e11b8152600b60048201526024810191909152600090731a1402e73d651cce8a9b7158087eec33be4ac8079063d1aa9e7e9060440160206040518083038186803b158015610e6e57600080fd5b505af4158015610e82573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ea69190611f5e565b9050610eb1816114cd565b98509850985098509850985098509850505b9091929394959697565b600061089b82611016565b606060048054610807906121f4565b600a546001600160a01b03163314610f115760405162461bcd60e51b8152600401610990906120d1565b600854811415610f945760405162461bcd60e51b815260206004820152604260248201527f56657273655f4469766964656e645f547261636b65723a2043616e6e6f74207560448201527f706461746520676173466f725472616e7366657220746f2073616d652076616c606482015261756560f01b608482015260a401610990565b60085460405182907f5e2963a3d7c88b344b101641f89a2f7da9734fc777ed11ad0097b2775a9e9d1790600090a3600855565b600061089733846108fb856040518060600160405280602581526020016122c3602591393360009081526001602090815260408083206001600160a01b038d16845290915290205491906119d4565b6001600160a01b03811660009081526007602052604081205461089b9061103c8461090a565b90611ace565b6000610897338484611977565b600a546000906001600160a01b0316331461107c5760405162461bcd60e51b8152600401610990906120d1565b600061108784611b10565b905080156110f3576001600160a01b038416600081815260116020526040908190204290555184151591907fa2c38e2d2fb7e3e1912d937fd1ca11ed6d51864dee4cfa7a7bf02becd7acf092906110e19085815260200190565b60405180910390a3600191505061089b565b5060009392505050565b600a546001600160a01b031633146111275760405162461bcd60e51b8152600401610990906120d1565b6001600160a01b03821660009081526010602052604090205460ff161561114c575050565b681b1ae4d6e2ef50000081106111e4576111668282611a6f565b604051632f0ad01760e21b8152600b60048201526001600160a01b038316602482015260448101829052731a1402e73d651cce8a9b7158087eec33be4ac8079063bc2b405c9060640160006040518083038186803b1580156111c757600080fd5b505af41580156111db573d6000803e3d6000fd5b50505050611262565b6111ef826000611a6f565b60405163131836e760e21b8152600b60048201526001600160a01b0383166024820152731a1402e73d651cce8a9b7158087eec33be4ac80790634c60db9c9060440160006040518083038186803b15801561124957600080fd5b505af415801561125d573d6000803e3d6000fd5b505050505b61126d82600161104f565b505050565b600a546001600160a01b0316331461129c5760405162461bcd60e51b8152600401610990906120d1565b610e1081101580156112b15750620151808111155b6113375760405162461bcd60e51b815260206004820152604b60248201527f56657273655f4469766964656e645f547261636b65723a20636c61696d57616960448201527f74206d757374206265207570646174656420746f206265747765656e2031206160648201526a6e6420323420686f75727360a81b608482015260a401610990565b6012548114156113af5760405162461bcd60e51b815260206004820152603d60248201527f56657273655f4469766964656e645f547261636b65723a2043616e6e6f74207560448201527f706461746520636c61696d5761697420746f2073616d652076616c75650000006064820152608401610990565b60125460405182907f474ea64804364a1e29a4487ddb63c3342a2dd826ccd8acf48825e680a0e6f20f90600090a3601255565b600a546001600160a01b0316331461140c5760405162461bcd60e51b8152600401610990906120d1565b6001600160a01b0381166114715760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610990565b600a546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600a80546001600160a01b0319166001600160a01b0392909216919091179055565b6040516317e142d160e01b8152600b60048201526001600160a01b03821660248201528190600090819081908190819081908190731a1402e73d651cce8a9b7158087eec33be4ac807906317e142d19060440160206040518083038186803b15801561153857600080fd5b505af415801561154c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611570919061204e565b96506000199550600087126115d257600f5487111561159e57600f54611597908890611c53565b95506115d2565b600f54600b54600091106115b35760006115c2565b600f54600b546115c291611ace565b90506115ce8882611a1e565b9650505b6115db88611016565b94506115e68861090a565b6001600160a01b03891660009081526011602052604090205490945092508261161057600061161e565b60125461161e9084906117f4565b915042821161162e576000611638565b6116388242611ace565b9050919395975091939597565b600b546000908190819080611665575050600f5460009250829150611767565b600f546000805a90506000805b898410801561168057508582105b15611756578461168f8161222f565b600b54909650861090506116a257600094505b6000600b60000186815481106116c857634e487b7160e01b600052603260045260246000fd5b60009182526020808320909101546001600160a01b031680835260119091526040909120549091506116f990611c90565b1561171c5761170981600161104f565b1561171c57816117188161222f565b9250505b826117268161222f565b93505060005a90508085111561174d5761174a6117438683611ace565b87906117f4565b95505b93506116729050565b600f85905590975095509193505050505b9193909250565b60008261177d5750600061089b565b6000611789838561217f565b905082611796858361215f565b146117ed5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610990565b9392505050565b6000806118018385612147565b9050838110156117ed5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610990565b6001600160a01b0383166118b55760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610990565b6001600160a01b0382166119165760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610990565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60405162461bcd60e51b815260206004820152602c60248201527f56657273655f4469766964656e645f547261636b65723a204e6f207472616e7360448201526b19995c9cc8185b1b1bddd95960a21b6064820152608401610990565b600081848411156119f85760405162461bcd60e51b8152600401610990919061207e565b506000611a0584866121dd565b95945050505050565b6000818181121561089b57600080fd5b600080611a2b8385612106565b905060008312158015611a3e5750838112155b80611a535750600083128015611a5357508381125b6117ed57600080fd5b600080821215611a6b57600080fd5b5090565b6001600160a01b03821660009081526020819052604090205480821115611aae576000611a9c8383611ace565b9050611aa88482611cb7565b50505050565b8082101561126d576000611ac28284611ace565b9050611aa88482611d1b565b60006117ed83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506119d4565b600080611b1c83611016565b90508015611c4a576001600160a01b038316600090815260076020526040902054611b4790826117f4565b6001600160a01b038416600081815260076020526040908190209290925590517fee503bee2bb6a87e57bc57db795f98137327401a0e7b7ce42e37926cc1a9ca4d90611b969084815260200190565b60405180910390a26008546040516000916001600160a01b03861691849084818181858888f193505050503d8060008114611bed576040519150601f19603f3d011682016040523d82523d6000602084013e611bf2565b606091505b5050905080611c43576001600160a01b038416600090815260076020526040902054611c1e9083611ace565b6001600160a01b03909416600090815260076020526040812094909455509192915050565b5092915050565b50600092915050565b600080611c60838561219e565b905060008312158015611c735750838113155b80611a535750600083128015611a5357508381136117ed57600080fd5b600042821115611ca257506000919050565b601254611caf4284611ace565b101592915050565b611cc18282611d5f565b611cfb611cdc61094c8360055461176e90919063ffffffff16565b6001600160a01b03841660009081526006602052604090205490611c53565b6001600160a01b0390921660009081526006602052604090209190915550565b611d258282611e3e565b611cfb611d4061094c8360055461176e90919063ffffffff16565b6001600160a01b03841660009081526006602052604090205490611a1e565b6001600160a01b038216611db55760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610990565b600254611dc290826117f4565b6002556001600160a01b038216600090815260208190526040902054611de890826117f4565b6001600160a01b038316600081815260208181526040808320949094559251848152919290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91015b60405180910390a35050565b6001600160a01b038216611e9e5760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608401610990565b611edb81604051806060016040528060228152602001612279602291396001600160a01b03851660009081526020819052604090205491906119d4565b6001600160a01b038316600090815260208190526040902055600254611f019082611ace565b6002556040518181526000906001600160a01b038416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602001611e32565b600060208284031215611f53578081fd5b81356117ed81612260565b600060208284031215611f6f578081fd5b81516117ed81612260565b60008060408385031215611f8c578081fd5b8235611f9781612260565b915060208301358015158114611fab578182fd5b809150509250929050565b60008060408385031215611fc8578182fd5b8235611fd381612260565b946020939093013593505050565b60008060408385031215611ff3578182fd5b8235611ffe81612260565b91506020830135611fab81612260565b600080600060608486031215612022578081fd5b833561202d81612260565b9250602084013561203d81612260565b929592945050506040919091013590565b60006020828403121561205f578081fd5b5051919050565b600060208284031215612077578081fd5b5035919050565b6000602080835283518082850152825b818110156120aa5785810183015185820160400152820161208e565b818111156120bb5783604083870101525b50601f01601f1916929092016040019392505050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600080821280156001600160ff1b03849003851316156121285761212861224a565b600160ff1b83900384128116156121415761214161224a565b50500190565b6000821982111561215a5761215a61224a565b500190565b60008261217a57634e487b7160e01b81526012600452602481fd5b500490565b60008160001904831182151516156121995761219961224a565b500290565b60008083128015600160ff1b8501841216156121bc576121bc61224a565b6001600160ff1b03840183138116156121d7576121d761224a565b50500390565b6000828210156121ef576121ef61224a565b500390565b600181811c9082168061220857607f821691505b6020821081141561222957634e487b7160e01b600052602260045260246000fd5b50919050565b60006000198214156122435761224361224a565b5060010190565b634e487b7160e01b600052601160045260246000fd5b6001600160a01b038116811461227557600080fd5b5056fe45524332303a206275726e20616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa264697066735822122043767014c32a61adac11e6281c2a989216f6c725aa5054d54759ce9e90ebb63064736f6c63430008040033