0x6080604052348015600e575f80fd5b503360065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506110208061005c5f395ff3fe608060405234801561000f575f80fd5b5060043610610055575f3560e01c806327b4d20514610059578063728bb189146100895780637d03f5f3146100a85780638da5cb5b146100c7578063d7c81b55146100e5575b5f80fd5b610073600480360381019061006e91906109d4565b610103565b6040516100809190610a35565b60405180910390f35b61009161022c565b60405161009f929190610b5f565b60405180910390f35b6100b06102aa565b6040516100be929190610b5f565b60405180910390f35b6100cf61038f565b6040516100dc9190610bce565b60405180910390f35b6100ed6103b4565b6040516100fa9190610bff565b60405180910390f35b5f6051825114610148576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161013f90610c88565b60405180910390fd5b5f600190505f8390505f5b60518110156101e8575f603083838151811061017257610171610ca6565b5b602001015160f81c60f81b60f81c61018a9190610d00565b90505f8160ff1614806101cc5750600382605181106101ac576101ab610ca6565b5b602091828204019190069054906101000a900460ff1660ff168160ff1614155b156101da575f9350506101e8565b508080600101915050610153565b507fb0f8b7da2ff9ff530890c43477fb48272dd8d07f35cc5b744a28becb7f79a9a3338360405161021a929190610d34565b60405180910390a18192505050919050565b610234610864565b60605f61023f6103ba565b8160518060200260405190810160405280929190826051801561029b576020028201915f905b82829054906101000a900460ff1660ff16815260200190600101906020825f010492830192600103820291508084116102655790505b50505050509150915091509091565b6102b2610864565b60606102bc6104a6565b6102c46105f4565b60075f8154809291906102d690610d5b565b91905055505f6102e46103ba565b90507fe168594257e5518114aa593b91aab917077a02adb83bd3752980d20f384aee6e60075482604051610319929190610da2565b60405180910390a15f818160518060200260405190810160405280929190826051801561037f576020028201915f905b82829054906101000a900460ff1660ff16815260200190600101906020825f010492830192600103820291508084116103495790505b5050505050915092509250509091565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60075481565b60605f605167ffffffffffffffff8111156103d8576103d76108b0565b5b6040519080825280601f01601f19166020018201604052801561040a5781602001600182028036833780820191505090505b5090505f5b605181101561049e5760305f826051811061042d5761042c610ca6565b5b602091828204019190069054906101000a900460ff1661044d9190610dd0565b60f81b82828151811061046357610462610ca6565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a905350808060010191505061040f565b508091505090565b5f604051806101200160405280600160ff168152602001600260ff168152602001600360ff168152602001600460ff168152602001600560ff168152602001600660ff168152602001600760ff168152602001600860ff168152602001600960ff16815250905061051681610781565b5f5b60098160ff1610156105f0575f5b60098160ff1610156105e2578260096003846105429190610e31565b84600361054f9190610e61565b8461055a9190610dd0565b6105649190610dd0565b61056e9190610e9d565b60ff166009811061058257610581610ca6565b5b60200201516003826009856105979190610e61565b6105a19190610dd0565b60ff16605181106105b5576105b4610ca6565b5b602091828204019190066101000a81548160ff021916908360ff1602179055508080600101915050610526565b508080600101915050610518565b5050565b5f5b6051811015610669576003816051811061061357610612610ca6565b5b602091828204019190069054906101000a900460ff165f826051811061063c5761063b610ca6565b5b602091828204019190066101000a81548160ff021916908360ff16021790555080806001019150506105f6565b505f600b4244604051602001610680929190610eed565b604051602081830303815290604052805190602001205f1c6106a29190610f18565b60286106ae9190610f48565b90505f5b81811080156106c15750603c81105b1561077d575f60514244846040516020016106de93929190610f7b565b604051602081830303815290604052805190602001205f1c6107009190610f18565b90505f80826051811061071657610715610ca6565b5b602091828204019190069054906101000a900460ff1660ff1614610777575f80826051811061074857610747610ca6565b5b602091828204019190066101000a81548160ff021916908360ff160217905550818061077390610d5b565b9250505b506106b2565b5050565b5f5b6009811015610860575f81600961079a9190610fb7565b4244846040516020016107af93929190610f7b565b604051602081830303815290604052805190602001205f1c6107d19190610f18565b826107dc9190610f48565b90508281600981106107f1576107f0610ca6565b5b602002015183836009811061080957610808610ca6565b5b602002015184846009811061082157610820610ca6565b5b6020020185846009811061083857610837610ca6565b5b602002018260ff1660ff168152508260ff1660ff168152505050508080600101915050610783565b5050565b60405180610a200160405280605190602082028036833780820191505090505090565b5f604051905090565b5f80fd5b5f80fd5b5f80fd5b5f80fd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6108e6826108a0565b810181811067ffffffffffffffff82111715610905576109046108b0565b5b80604052505050565b5f610917610887565b905061092382826108dd565b919050565b5f67ffffffffffffffff821115610942576109416108b0565b5b61094b826108a0565b9050602081019050919050565b828183375f83830152505050565b5f61097861097384610928565b61090e565b9050828152602081018484840111156109945761099361089c565b5b61099f848285610958565b509392505050565b5f82601f8301126109bb576109ba610898565b5b81356109cb848260208601610966565b91505092915050565b5f602082840312156109e9576109e8610890565b5b5f82013567ffffffffffffffff811115610a0657610a05610894565b5b610a12848285016109a7565b91505092915050565b5f8115159050919050565b610a2f81610a1b565b82525050565b5f602082019050610a485f830184610a26565b92915050565b5f60519050919050565b5f81905092915050565b5f819050919050565b5f60ff82169050919050565b610a8081610a6b565b82525050565b5f610a918383610a77565b60208301905092915050565b5f602082019050919050565b610ab281610a4e565b610abc8184610a58565b9250610ac782610a62565b805f5b83811015610af7578151610ade8782610a86565b9650610ae983610a9d565b925050600181019050610aca565b505050505050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f610b3182610aff565b610b3b8185610b09565b9350610b4b818560208601610b19565b610b54816108a0565b840191505092915050565b5f610a4082019050610b735f830185610aa9565b818103610a20830152610b868184610b27565b90509392505050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f610bb882610b8f565b9050919050565b610bc881610bae565b82525050565b5f602082019050610be15f830184610bbf565b92915050565b5f819050919050565b610bf981610be7565b82525050565b5f602082019050610c125f830184610bf0565b92915050565b7f536f6c7574696f6e206d7573742062652065786163746c7920383120636861725f8201527f616374657273206c6f6e67000000000000000000000000000000000000000000602082015250565b5f610c72602b83610b09565b9150610c7d82610c18565b604082019050919050565b5f6020820190508181035f830152610c9f81610c66565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f610d0a82610a6b565b9150610d1583610a6b565b9250828203905060ff811115610d2e57610d2d610cd3565b5b92915050565b5f604082019050610d475f830185610bbf565b610d546020830184610a26565b9392505050565b5f610d6582610be7565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203610d9757610d96610cd3565b5b600182019050919050565b5f604082019050610db55f830185610bf0565b8181036020830152610dc78184610b27565b90509392505050565b5f610dda82610a6b565b9150610de583610a6b565b9250828201905060ff811115610dfe57610dfd610cd3565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f610e3b82610a6b565b9150610e4683610a6b565b925082610e5657610e55610e04565b5b828204905092915050565b5f610e6b82610a6b565b9150610e7683610a6b565b9250828202610e8481610a6b565b9150808214610e9657610e95610cd3565b5b5092915050565b5f610ea782610a6b565b9150610eb283610a6b565b925082610ec257610ec1610e04565b5b828206905092915050565b5f819050919050565b610ee7610ee282610be7565b610ecd565b82525050565b5f610ef88285610ed6565b602082019150610f088284610ed6565b6020820191508190509392505050565b5f610f2282610be7565b9150610f2d83610be7565b925082610f3d57610f3c610e04565b5b828206905092915050565b5f610f5282610be7565b9150610f5d83610be7565b9250828201905080821115610f7557610f74610cd3565b5b92915050565b5f610f868286610ed6565b602082019150610f968285610ed6565b602082019150610fa68284610ed6565b602082019150819050949350505050565b5f610fc182610be7565b9150610fcc83610be7565b9250828203905081811115610fe457610fe3610cd3565b5b9291505056fea2646970667358221220b7f23d348cfff2a60a459641dec44cc8c3a68c0013ed85555250df602a686c6664736f6c634300081a0033