0x6080604052670de0b6b3a76400006098553480156200001d57600080fd5b50600060019054906101000a900460ff168062000045575060008054906101000a900460ff16155b62000087576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200007e9062000169565b60405180910390fd5b60008060019054906101000a900460ff161590508015620000d8576001600060016101000a81548160ff02191690831515021790555060016000806101000a81548160ff0219169083151502179055505b8015620000fa5760008060016101000a81548160ff0219169083151502179055505b506200019c565b600062000110602e836200018b565b91507f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160008301527f647920696e697469616c697a65640000000000000000000000000000000000006020830152604082019050919050565b60006020820190508181036000830152620001848162000101565b9050919050565b600082825260208201905092915050565b6120cd80620001ac6000396000f3fe60806040526004361061010d5760003560e01c80638da5cb5b11610095578063a040cb8511610064578063a040cb851461050e578063c4d66de814610537578063da74222814610560578063e744092e14610589578063f2fde38b146105c6576102bb565b80638da5cb5b146104525780638fcc9cfb1461047d5780639878cbb3146104a65780639afd453c146104e3576102bb565b806356c022bb116100dc57806356c022bb1461037a578063572b6c05146103a55780635d9c31d3146103e25780636d88f4511461041f578063715018a61461043b576102bb565b806315f69012146102c0578063201d0f82146102e95780632e1a7d4d1461032657806341b3d1851461034f576102bb565b366102bb5760003411610155576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161014c90611ed0565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff163273ffffffffffffffffffffffffffffffffffffffff16146101c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101ba90611e30565b60405180910390fd5b34609b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008081526020019081526020016000205461021f9190611f5c565b609b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000808152602001908152602001600020819055506000343373ffffffffffffffffffffffffffffffffffffffff167f90890809c654f11d6e72a28fa60149770a0d11ec6c92319d6ceb2bb0a4ea1a1560405160405180910390a4005b600080fd5b3480156102cc57600080fd5b506102e760048036038101906102e29190611984565b6105ef565b005b3480156102f557600080fd5b50610310600480360381019061030b91906119c0565b610790565b60405161031d9190611f30565b60405180910390f35b34801561033257600080fd5b5061034d600480360381019061034891906119fc565b6107b5565b005b34801561035b57600080fd5b5061036461091a565b6040516103719190611f30565b60405180910390f35b34801561038657600080fd5b5061038f610920565b60405161039c9190611d9f565b60405180910390f35b3480156103b157600080fd5b506103cc60048036038101906103c79190611932565b610946565b6040516103d99190611dd5565b60405180910390f35b3480156103ee57600080fd5b50610409600480360381019061040491906119fc565b6109a0565b6040516104169190611f30565b60405180910390f35b610439600480360381019061043491906119fc565b6109b8565b005b34801561044757600080fd5b50610450610c9d565b005b34801561045e57600080fd5b50610467610d25565b6040516104749190611d9f565b60405180910390f35b34801561048957600080fd5b506104a4600480360381019061049f91906119fc565b610d4f565b005b3480156104b257600080fd5b506104cd60048036038101906104c89190611932565b610e19565b6040516104da9190611d9f565b60405180910390f35b3480156104ef57600080fd5b506104f8610e4c565b6040516105059190611dba565b60405180910390f35b34801561051a57600080fd5b506105356004803603810190610530919061195b565b610e72565b005b34801561054357600080fd5b5061055e60048036038101906105599190611932565b610f8c565b005b34801561056c57600080fd5b506105876004803603810190610582919061195b565b611093565b005b34801561059557600080fd5b506105b060048036038101906105ab9190611932565b61121d565b6040516105bd9190611dd5565b60405180910390f35b3480156105d257600080fd5b506105ed60048036038101906105e89190611932565b61123d565b005b6105f7611335565b73ffffffffffffffffffffffffffffffffffffffff16610615610d25565b73ffffffffffffffffffffffffffffffffffffffff161461066b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161066290611ef0565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156106db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106d290611e70565b60405180910390fd5b80609c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055503373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f4d10ecf9da236fc925a7283e7277ed82a53ebff302888a1a9ca285ee986621f260405160405180910390a35050565b609b602052816000526040600020602052806000526040600020600091509150505481565b6107bd611335565b73ffffffffffffffffffffffffffffffffffffffff166107db610d25565b73ffffffffffffffffffffffffffffffffffffffff1614610831576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161082890611ef0565b60405180910390fd5b609760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015610899573d6000803e3d6000fd5b50609760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16813373ffffffffffffffffffffffffffffffffffffffff167f56c54ba9bd38d8fd62012e42c7ee564519b09763c426d331b3661b537ead19b260405160405180910390a450565b60985481565b606560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000606560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b609a6020528060005260406000206000915090505481565b3273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610a3f5750606560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b610a7e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a7590611df0565b60405180910390fd5b60003411610ac1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ab890611e10565b60405180910390fd5b609854341015610b06576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610afd90611e90565b60405180910390fd5b609760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc349081150290604051600060405180830381858888f19350505050158015610b6e573d6000803e3d6000fd5b5034609a600083815260200190815260200160002054610b8e9190611f5c565b609a60008381526020019081526020016000208190555034609b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002054610c019190611f5c565b609b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008381526020019081526020016000208190555080343373ffffffffffffffffffffffffffffffffffffffff167f90890809c654f11d6e72a28fa60149770a0d11ec6c92319d6ceb2bb0a4ea1a1560405160405180910390a450565b610ca5611335565b73ffffffffffffffffffffffffffffffffffffffff16610cc3610d25565b73ffffffffffffffffffffffffffffffffffffffff1614610d19576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d1090611ef0565b60405180910390fd5b610d236000611344565b565b6000603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610d57611335565b73ffffffffffffffffffffffffffffffffffffffff16610d75610d25565b73ffffffffffffffffffffffffffffffffffffffff1614610dcb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dc290611ef0565b60405180910390fd5b806098819055503373ffffffffffffffffffffffffffffffffffffffff16817fd7fcb0ae0023f2c47ad87c3f6886b7d78850d713c118a1a4bd2b13523961105160405160405180910390a350565b609d6020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b609760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610e7a611335565b73ffffffffffffffffffffffffffffffffffffffff16610e98610d25565b73ffffffffffffffffffffffffffffffffffffffff1614610eee576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ee590611ef0565b60405180910390fd5b80609760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167fca9f79532036ed57a638a72597e104fb5c14b1dfdd6d3aa360b943741a48208160405160405180910390a350565b600060019054906101000a900460ff1680610fb2575060008054906101000a900460ff16155b610ff1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fe890611eb0565b60405180910390fd5b60008060019054906101000a900460ff161590508015611041576001600060016101000a81548160ff02191690831515021790555060016000806101000a81548160ff0219169083151502179055505b61104a8261140a565b6110526114ed565b6000609960006101000a81548160ff021916908360ff160217905550801561108f5760008060016101000a81548160ff0219169083151502179055505b5050565b61109b611335565b73ffffffffffffffffffffffffffffffffffffffff166110b9610d25565b73ffffffffffffffffffffffffffffffffffffffff161461110f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161110690611ef0565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561117f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161117690611f10565b60405180910390fd5b80606560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f06dff7401eb7fb04d241246ade7f817c7ad512b1bed61c18aedd9bc51eec047560405160405180910390a350565b609c6020528060005260406000206000915054906101000a900460ff1681565b611245611335565b73ffffffffffffffffffffffffffffffffffffffff16611263610d25565b73ffffffffffffffffffffffffffffffffffffffff16146112b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112b090611ef0565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611329576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161132090611e50565b60405180910390fd5b61133281611344565b50565b600061133f6115d6565b905090565b6000603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081603360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600060019054906101000a900460ff1680611430575060008054906101000a900460ff16155b61146f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161146690611eb0565b60405180910390fd5b60008060019054906101000a900460ff1615905080156114bf576001600060016101000a81548160ff02191690831515021790555060016000806101000a81548160ff0219169083151502179055505b6114c882611601565b80156114e95760008060016101000a81548160ff0219169083151502179055505b5050565b600060019054906101000a900460ff1680611513575060008054906101000a900460ff16155b611552576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161154990611eb0565b60405180910390fd5b60008060019054906101000a900460ff1615905080156115a2576001600060016101000a81548160ff02191690831515021790555060016000806101000a81548160ff0219169083151502179055505b6115aa61171c565b6115b26117f5565b80156115d35760008060016101000a81548160ff0219169083151502179055505b50565b60006115e133610946565b156115f557601436033560601c90506115fd565b3390506115fe565b5b90565b600060019054906101000a900460ff1680611627575060008054906101000a900460ff16155b611666576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161165d90611eb0565b60405180910390fd5b60008060019054906101000a900460ff1615905080156116b6576001600060016101000a81548160ff02191690831515021790555060016000806101000a81548160ff0219169083151502179055505b81606560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080156117185760008060016101000a81548160ff0219169083151502179055505b5050565b600060019054906101000a900460ff1680611742575060008054906101000a900460ff16155b611781576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161177890611eb0565b60405180910390fd5b60008060019054906101000a900460ff1615905080156117d1576001600060016101000a81548160ff02191690831515021790555060016000806101000a81548160ff0219169083151502179055505b80156117f25760008060016101000a81548160ff0219169083151502179055505b50565b600060019054906101000a900460ff168061181b575060008054906101000a900460ff16155b61185a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161185190611eb0565b60405180910390fd5b60008060019054906101000a900460ff1615905080156118aa576001600060016101000a81548160ff02191690831515021790555060016000806101000a81548160ff0219169083151502179055505b6118ba6118b5611335565b611344565b80156118db5760008060016101000a81548160ff0219169083151502179055505b50565b6000813590506118ed8161203b565b92915050565b60008135905061190281612052565b92915050565b60008135905061191781612069565b92915050565b60008135905061192c81612080565b92915050565b60006020828403121561194457600080fd5b6000611952848285016118de565b91505092915050565b60006020828403121561196d57600080fd5b600061197b848285016118f3565b91505092915050565b6000806040838503121561199757600080fd5b60006119a5858286016118de565b92505060206119b685828601611908565b9150509250929050565b600080604083850312156119d357600080fd5b60006119e1858286016118de565b92505060206119f28582860161191d565b9150509250929050565b600060208284031215611a0e57600080fd5b6000611a1c8482850161191d565b91505092915050565b611a2e81611fc4565b82525050565b611a3d81611fb2565b82525050565b611a4c81611fd6565b82525050565b6000611a5f602783611f4b565b91507f73656e646572206d75737420626520454f41206f72207472757374656420666f60008301527f72776172646572000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000611ac5602083611f4b565b91507f4e6f2076616c75652070726f766964656420746f206465706f736974466f722e6000830152602082019050919050565b6000611b05601e83611f4b565b91507f4f6e6c7920454f412063616e206465706f736974206469726563746c792e00006000830152602082019050919050565b6000611b45602683611f4b565b91507f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008301527f64647265737300000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000611bab601983611f4b565b91507f546f6b656e20616464726573732063616e6e6f742062652030000000000000006000830152602082019050919050565b6000611beb603483611f4b565b91507f4d75737420626520677261746572207468616e206d696e696d756d206465706f60008301527f73697420666f722074686973206e6574776f726b0000000000000000000000006020830152604082019050919050565b6000611c51602e83611f4b565b91507f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160008301527f647920696e697469616c697a65640000000000000000000000000000000000006020830152604082019050919050565b6000611cb7601e83611f4b565b91507f4e6f2076616c75652070726f766964656420746f2066616c6c6261636b2e00006000830152602082019050919050565b6000611cf7602083611f4b565b91507f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726000830152602082019050919050565b6000611d37603083611f4b565b91507f4249434f3a3a20496e76616c6964206164647265737320666f72206e6577207460008301527f72757374656420666f72776172646572000000000000000000000000000000006020830152604082019050919050565b611d9981612002565b82525050565b6000602082019050611db46000830184611a34565b92915050565b6000602082019050611dcf6000830184611a25565b92915050565b6000602082019050611dea6000830184611a43565b92915050565b60006020820190508181036000830152611e0981611a52565b9050919050565b60006020820190508181036000830152611e2981611ab8565b9050919050565b60006020820190508181036000830152611e4981611af8565b9050919050565b60006020820190508181036000830152611e6981611b38565b9050919050565b60006020820190508181036000830152611e8981611b9e565b9050919050565b60006020820190508181036000830152611ea981611bde565b9050919050565b60006020820190508181036000830152611ec981611c44565b9050919050565b60006020820190508181036000830152611ee981611caa565b9050919050565b60006020820190508181036000830152611f0981611cea565b9050919050565b60006020820190508181036000830152611f2981611d2a565b9050919050565b6000602082019050611f456000830184611d90565b92915050565b600082825260208201905092915050565b6000611f6782612002565b9150611f7283612002565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115611fa757611fa661200c565b5b828201905092915050565b6000611fbd82611fe2565b9050919050565b6000611fcf82611fe2565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b61204481611fb2565b811461204f57600080fd5b50565b61205b81611fc4565b811461206657600080fd5b50565b61207281611fd6565b811461207d57600080fd5b50565b61208981612002565b811461209457600080fd5b5056fea264697066735822122094e5e2b1ba27e5b728baac16da026f96bdb3ac0f6a1256c91e25e38ee302328564736f6c63430008000033