0x60806040523480156200001157600080fd5b506040518060400160405280600781526020017f556b7261696e6500000000000000000000000000000000000000000000000000815250600290805190602001906200005f929190620001c9565b50600a600360006101000a81548160ff021916908360ff1602179055506040518060400160405280600381526020017f554148000000000000000000000000000000000000000000000000000000000081525060049080519060200190620000c9929190620001c9565b5033600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061029a6006819055506006546000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600654604051620001bb919062000294565b60405180910390a362000316565b828054620001d790620002e0565b90600052602060002090601f016020900481019282620001fb576000855562000247565b82601f106200021657805160ff191683800117855562000247565b8280016001018555821562000247579182015b828111156200024657825182559160200191906001019062000229565b5b5090506200025691906200025a565b5090565b5b80821115620002755760008160009055506001016200025b565b5090565b6000819050919050565b6200028e8162000279565b82525050565b6000602082019050620002ab600083018462000283565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680620002f957607f821691505b6020821081141562000310576200030f620002b1565b5b50919050565b611a4b80620003266000396000f3fe608060405234801561001057600080fd5b50600436106100f55760003560e01c806350912783116100975780638da5cb5b116100665780638da5cb5b146102d457806395d89b41146102f2578063a9059cbb14610310578063dd62ed3e14610340576100f5565b8063509127831461021457806370a082311461024457806379cc6790146102745780638863dd1a146102a4576100f5565b806323b872dd116100d357806323b872dd14610166578063313ce5671461019657806340c10f19146101b457806342966c68146101e4576100f5565b806306fdde03146100fa578063095ea7b31461011857806318160ddd14610148575b600080fd5b610102610370565b60405161010f91906112c9565b60405180910390f35b610132600480360381019061012d9190611393565b610402565b60405161013f91906113ee565b60405180910390f35b610150610563565b60405161015d9190611418565b60405180910390f35b610180600480360381019061017b9190611433565b61056d565b60405161018d91906113ee565b60405180910390f35b61019e610923565b6040516101ab91906114a2565b60405180910390f35b6101ce60048036038101906101c99190611393565b61093a565b6040516101db91906113ee565b60405180910390f35b6101fe60048036038101906101f991906114bd565b610aaa565b60405161020b91906113ee565b60405180910390f35b61022e6004803603810190610229919061161f565b610b89565b60405161023b91906113ee565b60405180910390f35b61025e60048036038101906102599190611668565b610bab565b60405161026b9190611418565b60405180910390f35b61028e60048036038101906102899190611393565b610bf3565b60405161029b91906113ee565b60405180910390f35b6102be60048036038101906102b99190611668565b610d63565b6040516102cb91906113ee565b60405180910390f35b6102dc610e3f565b6040516102e991906116a4565b60405180910390f35b6102fa610e69565b60405161030791906112c9565b60405180910390f35b61032a60048036038101906103259190611393565b610efb565b60405161033791906113ee565b60405180910390f35b61035a600480360381019061035591906116bf565b611106565b6040516103679190611418565b60405180910390f35b60606002805461037f9061172e565b80601f01602080910402602001604051908101604052809291908181526020018280546103ab9061172e565b80156103f85780601f106103cd576101008083540402835291602001916103f8565b820191906000526020600020905b8154815290600101906020018083116103db57829003601f168201915b5050505050905090565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610473576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161046a906117ac565b60405180910390fd5b81600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516105519190611418565b60405180910390a36001905092915050565b6000600654905090565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156105de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105d590611818565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461066e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610665906118aa565b60405180910390fd5b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050826000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015801561073d5750828110155b61077c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107739061193c565b60405180910390fd5b826000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546107ca919061198b565b92505081905550826000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461081f91906119bf565b92505081905550828161083291906119bf565b600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161090f9190611418565b60405180910390a360019150509392505050565b6000600360009054906101000a900460ff16905090565b60003373ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146109cc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109c3906118aa565b60405180910390fd5b81600660008282546109de91906119bf565b92505081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610a3391906119bf565b925050819055508273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610a989190611418565b60405180910390a36001905092915050565b6000816000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610afa919061198b565b925050819055508160066000828254610b13919061198b565b92505081905550600073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610b789190611418565b60405180910390a360019050919050565b60008160029080519060200190610ba192919061118d565b5060019050919050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60003373ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c85576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c7c906118aa565b60405180910390fd5b816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610cd3919061198b565b925050819055508160066000828254610cec919061198b565b92505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610d519190611418565b60405180910390a36001905092915050565b60003373ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610df5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dec906118aa565b60405180910390fd5b81600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060019050919050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060048054610e789061172e565b80601f0160208091040260200160405190810160405280929190818152602001828054610ea49061172e565b8015610ef15780601f10610ec657610100808354040283529160200191610ef1565b820191906000526020600020905b815481529060010190602001808311610ed457829003601f168201915b5050505050905090565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610f6c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f6390611818565b60405180910390fd5b816000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015610fed576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fe49061193c565b60405180910390fd5b816000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461103b919061198b565b92505081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461109091906119bf565b925050819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516110f49190611418565b60405180910390a36001905092915050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b8280546111999061172e565b90600052602060002090601f0160209004810192826111bb5760008555611202565b82601f106111d457805160ff1916838001178555611202565b82800160010185558215611202579182015b828111156112015782518255916020019190600101906111e6565b5b50905061120f9190611213565b5090565b5b8082111561122c576000816000905550600101611214565b5090565b600081519050919050565b600082825260208201905092915050565b60005b8381101561126a57808201518184015260208101905061124f565b83811115611279576000848401525b50505050565b6000601f19601f8301169050919050565b600061129b82611230565b6112a5818561123b565b93506112b581856020860161124c565b6112be8161127f565b840191505092915050565b600060208201905081810360008301526112e38184611290565b905092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061132a826112ff565b9050919050565b61133a8161131f565b811461134557600080fd5b50565b60008135905061135781611331565b92915050565b6000819050919050565b6113708161135d565b811461137b57600080fd5b50565b60008135905061138d81611367565b92915050565b600080604083850312156113aa576113a96112f5565b5b60006113b885828601611348565b92505060206113c98582860161137e565b9150509250929050565b60008115159050919050565b6113e8816113d3565b82525050565b600060208201905061140360008301846113df565b92915050565b6114128161135d565b82525050565b600060208201905061142d6000830184611409565b92915050565b60008060006060848603121561144c5761144b6112f5565b5b600061145a86828701611348565b935050602061146b86828701611348565b925050604061147c8682870161137e565b9150509250925092565b600060ff82169050919050565b61149c81611486565b82525050565b60006020820190506114b76000830184611493565b92915050565b6000602082840312156114d3576114d26112f5565b5b60006114e18482850161137e565b91505092915050565b600080fd5b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61152c8261127f565b810181811067ffffffffffffffff8211171561154b5761154a6114f4565b5b80604052505050565b600061155e6112eb565b905061156a8282611523565b919050565b600067ffffffffffffffff82111561158a576115896114f4565b5b6115938261127f565b9050602081019050919050565b82818337600083830152505050565b60006115c26115bd8461156f565b611554565b9050828152602081018484840111156115de576115dd6114ef565b5b6115e98482856115a0565b509392505050565b600082601f830112611606576116056114ea565b5b81356116168482602086016115af565b91505092915050565b600060208284031215611635576116346112f5565b5b600082013567ffffffffffffffff811115611653576116526112fa565b5b61165f848285016115f1565b91505092915050565b60006020828403121561167e5761167d6112f5565b5b600061168c84828501611348565b91505092915050565b61169e8161131f565b82525050565b60006020820190506116b96000830184611695565b92915050565b600080604083850312156116d6576116d56112f5565b5b60006116e485828601611348565b92505060206116f585828601611348565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061174657607f821691505b6020821081141561175a576117596116ff565b5b50919050565b7f45524332303a20417070726f766520746f207a65726f20616464726573730000600082015250565b6000611796601e8361123b565b91506117a182611760565b602082019050919050565b600060208201905081810360008301526117c581611789565b9050919050565b7f45524332303a205472616e7366657220746f207a65726f206164647265737300600082015250565b6000611802601f8361123b565b915061180d826117cc565b602082019050919050565b60006020820190508181036000830152611831816117f5565b9050919050565b7f596f7520617265206e6f74206f776e6572206f66207468697320636f6e74726160008201527f6374210000000000000000000000000000000000000000000000000000000000602082015250565b600061189460238361123b565b915061189f82611838565b604082019050919050565b600060208201905081810360008301526118c381611887565b9050919050565b7f546f6b656e2062616c616e6365206973206c6f776572207468616e207468652060008201527f76616c7565207265717565737465642e00000000000000000000000000000000602082015250565b600061192660308361123b565b9150611931826118ca565b604082019050919050565b6000602082019050818103600083015261195581611919565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006119968261135d565b91506119a18361135d565b9250828210156119b4576119b361195c565b5b828203905092915050565b60006119ca8261135d565b91506119d58361135d565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115611a0a57611a0961195c565b5b82820190509291505056fea2646970667358221220b3a6939370efef24338c4ad452e73d47cb8e4db4c660e37333069f7ccc60828c64736f6c63430008090033