0x610160604052348015610010575f5ffd5b5060405161245d38038061245d83398181016040528101906100329190610444565b336040518060400160405280601681526020017f5369676e617475726542617365645472616e73666572000000000000000000008152506040518060400160405280600181526020017f31000000000000000000000000000000000000000000000000000000000000008152506100b25f8361020e60201b90919060201c565b61012081815250506100ce60018261020e60201b90919060201c565b6101408181525050818051906020012060e08181525050808051906020012061010081815250504660a0818152505061010b61025b60201b60201c565b608081815250503073ffffffffffffffffffffffffffffffffffffffff1660c08173ffffffffffffffffffffffffffffffffffffffff168152505050505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036101b8575f6040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081526004016101af919061047e565b60405180910390fd5b6101c7816102b560201b60201c565b508060035f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050610934565b5f60208351101561022f576102288361037860201b60201c565b9050610255565b8261023f836103dd60201b60201c565b5f01908161024d91906106d4565b5060ff5f1b90505b92915050565b5f7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60e05161010051463060405160200161029a9594939291906107ca565b60405160208183030381529060405280519060200120905090565b5f60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160025f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f5f829050601f815111156103c457826040517f305a27a90000000000000000000000000000000000000000000000000000000081526004016103bb9190610881565b60405180910390fd5b8051816103d0906108ce565b5f1c175f1b915050919050565b5f819050919050565b5f5ffd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f610413826103ea565b9050919050565b61042381610409565b811461042d575f5ffd5b50565b5f8151905061043e8161041a565b92915050565b5f60208284031215610459576104586103e6565b5b5f61046684828501610430565b91505092915050565b61047881610409565b82525050565b5f6020820190506104915f83018461046f565b92915050565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061051257607f821691505b602082108103610525576105246104ce565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f600883026105877fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8261054c565b610591868361054c565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f6105d56105d06105cb846105a9565b6105b2565b6105a9565b9050919050565b5f819050919050565b6105ee836105bb565b6106026105fa826105dc565b848454610558565b825550505050565b5f5f905090565b61061961060a565b6106248184846105e5565b505050565b5b818110156106475761063c5f82610611565b60018101905061062a565b5050565b601f82111561068c5761065d8161052b565b6106668461053d565b81016020851015610675578190505b6106896106818561053d565b830182610629565b50505b505050565b5f82821c905092915050565b5f6106ac5f1984600802610691565b1980831691505092915050565b5f6106c4838361069d565b9150826002028217905092915050565b6106dd82610497565b67ffffffffffffffff8111156106f6576106f56104a1565b5b61070082546104fb565b61070b82828561064b565b5f60209050601f83116001811461073c575f841561072a578287015190505b61073485826106b9565b86555061079b565b601f19841661074a8661052b565b5f5b828110156107715784890151825560018201915060208501945060208101905061074c565b8683101561078e578489015161078a601f89168261069d565b8355505b6001600288020188555050505b505050505050565b5f819050919050565b6107b5816107a3565b82525050565b6107c4816105a9565b82525050565b5f60a0820190506107dd5f8301886107ac565b6107ea60208301876107ac565b6107f760408301866107ac565b61080460608301856107bb565b610811608083018461046f565b9695505050505050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f61085382610497565b61085d818561081b565b935061086d81856020860161082b565b61087681610839565b840191505092915050565b5f6020820190508181035f8301526108998184610849565b905092915050565b5f81519050919050565b5f819050602082019050919050565b5f6108c582516107a3565b80915050919050565b5f6108d8826108a1565b826108e2846108ab565b90506108ed816108ba565b9250602082101561092d576109287fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8360200360080261054c565b831692505b5050919050565b60805160a05160c05160e051610100516101205161014051611ad86109855f395f6109e901525f6109ae01525f610f2001525f610eff01525f610baa01525f610c0001525f610c290152611ad85ff3fe608060405234801561000f575f5ffd5b506004361061009c575f3560e01c80638da5cb5b116100645780638da5cb5b14610124578063c465859914610142578063ce845d1d1461015e578063f2fde38b1461017c578063fc0c546a146101985761009c565b806326a4e8d2146100a05780633ccfd60b146100bc578063715018a6146100c65780637ecebe00146100d057806384b0196e14610100575b5f5ffd5b6100ba60048036038101906100b591906112a1565b6101b6565b005b6100c4610201565b005b6100ce6102fb565b005b6100ea60048036038101906100e591906112a1565b61030e565b6040516100f791906112e4565b60405180910390f35b610108610323565b60405161011b9796959493929190611485565b60405180910390f35b61012c6103c8565b6040516101399190611507565b60405180910390f35b61015c600480360381019061015791906115ab565b6103f0565b005b610166610695565b60405161017391906112e4565b60405180910390f35b610196600480360381019061019191906112a1565b610734565b005b6101a06107b8565b6040516101ad9190611677565b60405180910390f35b6101be6107dd565b8060035f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6102096107dd565b5f60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016102649190611507565b602060405180830381865afa15801561027f573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906102a391906116a4565b90506102f86102b06103c8565b8260035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108649092919063ffffffff16565b50565b6103036107dd565b61030c5f6108e3565b565b6004602052805f5260405f205f915090505481565b5f6060805f5f5f60606103346109a6565b61033c6109e0565b46305f5f1b5f67ffffffffffffffff81111561035b5761035a6116cf565b5b6040519080825280602002602001820160405280156103895781602001602082028036833780820191505090505b507f0f00000000000000000000000000000000000000000000000000000000000000959493929190965096509650965096509650965090919293949596565b5f60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b5f33905060045f8273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20548414610473576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161046a90611746565b60405180910390fd5b5f7f60147cf535943924d03f078d38b8bd9f12f7f3742b3b91a59ff6d6e761fe31d28287876040516020016104ab9493929190611764565b6040516020818303038152906040528051906020012090505f6104cd82610a1b565b90505f61052686868080601f0160208091040260200160405190810160405280939291908181526020018383808284375f81840152601f19601f8201169050808301925050505050505083610a3490919063ffffffff16565b90506105306103c8565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161461059d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610594906117f1565b60405180910390fd5b600160045f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546105ea919061183c565b9250508190555061063d848960035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108649092919063ffffffff16565b8373ffffffffffffffffffffffffffffffffffffffff167f12f4533b5cbd2c9f8a0752a2d0b16379af992dbb2a0844a5007a19d983b3a9348960405161068391906112e4565b60405180910390a25050505050505050565b5f60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016106f09190611507565b602060405180830381865afa15801561070b573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061072f91906116a4565b905090565b61073c6107dd565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036107ac575f6040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081526004016107a39190611507565b60405180910390fd5b6107b5816108e3565b50565b60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6107e5610a5e565b73ffffffffffffffffffffffffffffffffffffffff166108036103c8565b73ffffffffffffffffffffffffffffffffffffffff161461086257610826610a5e565b6040517f118cdaa70000000000000000000000000000000000000000000000000000000081526004016108599190611507565b60405180910390fd5b565b6108de838473ffffffffffffffffffffffffffffffffffffffff1663a9059cbb858560405160240161089792919061186f565b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050610a65565b505050565b5f60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160025f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60606109db5f7f0000000000000000000000000000000000000000000000000000000000000000610afa90919063ffffffff16565b905090565b6060610a1660017f0000000000000000000000000000000000000000000000000000000000000000610afa90919063ffffffff16565b905090565b5f610a2d610a27610ba7565b83610c5d565b9050919050565b5f5f5f5f610a428686610c9d565b925092509250610a528282610cf2565b82935050505092915050565b5f33905090565b5f610a8f828473ffffffffffffffffffffffffffffffffffffffff16610e5490919063ffffffff16565b90505f815114158015610ab3575080806020019051810190610ab191906118cb565b155b15610af557826040517f5274afe7000000000000000000000000000000000000000000000000000000008152600401610aec9190611507565b60405180910390fd5b505050565b606060ff5f1b8314610b1657610b0f83610e69565b9050610ba1565b818054610b2290611923565b80601f0160208091040260200160405190810160405280929190818152602001828054610b4e90611923565b8015610b995780601f10610b7057610100808354040283529160200191610b99565b820191905f5260205f20905b815481529060010190602001808311610b7c57829003601f168201915b505050505090505b92915050565b5f7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff16148015610c2257507f000000000000000000000000000000000000000000000000000000000000000046145b15610c4f577f00000000000000000000000000000000000000000000000000000000000000009050610c5a565b610c57610edb565b90505b90565b5f6040517f190100000000000000000000000000000000000000000000000000000000000081528360028201528260228201526042812091505092915050565b5f5f5f6041845103610cdd575f5f5f602087015192506040870151915060608701515f1a9050610ccf88828585610f70565b955095509550505050610ceb565b5f600285515f1b9250925092505b9250925092565b5f6003811115610d0557610d04611953565b5b826003811115610d1857610d17611953565b5b0315610e505760016003811115610d3257610d31611953565b5b826003811115610d4557610d44611953565b5b03610d7c576040517ff645eedf00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60026003811115610d9057610d8f611953565b5b826003811115610da357610da2611953565b5b03610de757805f1c6040517ffce698f7000000000000000000000000000000000000000000000000000000008152600401610dde91906112e4565b60405180910390fd5b600380811115610dfa57610df9611953565b5b826003811115610e0d57610e0c611953565b5b03610e4f57806040517fd78bce0c000000000000000000000000000000000000000000000000000000008152600401610e469190611980565b60405180910390fd5b5b5050565b6060610e6183835f611057565b905092915050565b60605f610e7583611120565b90505f602067ffffffffffffffff811115610e9357610e926116cf565b5b6040519080825280601f01601f191660200182016040528015610ec55781602001600182028036833780820191505090505b5090508181528360208201528092505050919050565b5f7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f7f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000004630604051602001610f55959493929190611999565b60405160208183030381529060405280519060200120905090565b5f5f5f7f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0845f1c1115610fac575f60038592509250925061104d565b5f6001888888886040515f8152602001604052604051610fcf9493929190611a05565b6020604051602081039080840390855afa158015610fef573d5f5f3e3d5ffd5b5050506020604051035190505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611040575f60015f5f1b9350935093505061104d565b805f5f5f1b935093509350505b9450945094915050565b60608147101561109e57306040517fcd7860590000000000000000000000000000000000000000000000000000000081526004016110959190611507565b60405180910390fd5b5f5f8573ffffffffffffffffffffffffffffffffffffffff1684866040516110c69190611a8c565b5f6040518083038185875af1925050503d805f8114611100576040519150601f19603f3d011682016040523d82523d5f602084013e611105565b606091505b509150915061111586838361116e565b925050509392505050565b5f5f60ff835f1c169050601f811115611165576040517fb3512b0c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80915050919050565b6060826111835761117e826111fb565b6111f3565b5f82511480156111a957505f8473ffffffffffffffffffffffffffffffffffffffff163b145b156111eb57836040517f9996b3150000000000000000000000000000000000000000000000000000000081526004016111e29190611507565b60405180910390fd5b8190506111f4565b5b9392505050565b5f8151111561120d5780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5ffd5b5f5ffd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61127082611247565b9050919050565b61128081611266565b811461128a575f5ffd5b50565b5f8135905061129b81611277565b92915050565b5f602082840312156112b6576112b561123f565b5b5f6112c38482850161128d565b91505092915050565b5f819050919050565b6112de816112cc565b82525050565b5f6020820190506112f75f8301846112d5565b92915050565b5f7fff0000000000000000000000000000000000000000000000000000000000000082169050919050565b611331816112fd565b82525050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f61137982611337565b6113838185611341565b9350611393818560208601611351565b61139c8161135f565b840191505092915050565b6113b081611266565b82525050565b5f819050919050565b6113c8816113b6565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b611400816112cc565b82525050565b5f61141183836113f7565b60208301905092915050565b5f602082019050919050565b5f611433826113ce565b61143d81856113d8565b9350611448836113e8565b805f5b8381101561147857815161145f8882611406565b975061146a8361141d565b92505060018101905061144b565b5085935050505092915050565b5f60e0820190506114985f83018a611328565b81810360208301526114aa818961136f565b905081810360408301526114be818861136f565b90506114cd60608301876112d5565b6114da60808301866113a7565b6114e760a08301856113bf565b81810360c08301526114f98184611429565b905098975050505050505050565b5f60208201905061151a5f8301846113a7565b92915050565b611529816112cc565b8114611533575f5ffd5b50565b5f8135905061154481611520565b92915050565b5f5ffd5b5f5ffd5b5f5ffd5b5f5f83601f84011261156b5761156a61154a565b5b8235905067ffffffffffffffff8111156115885761158761154e565b5b6020830191508360018202830111156115a4576115a3611552565b5b9250929050565b5f5f5f5f606085870312156115c3576115c261123f565b5b5f6115d087828801611536565b94505060206115e187828801611536565b935050604085013567ffffffffffffffff81111561160257611601611243565b5b61160e87828801611556565b925092505092959194509250565b5f819050919050565b5f61163f61163a61163584611247565b61161c565b611247565b9050919050565b5f61165082611625565b9050919050565b5f61166182611646565b9050919050565b61167181611657565b82525050565b5f60208201905061168a5f830184611668565b92915050565b5f8151905061169e81611520565b92915050565b5f602082840312156116b9576116b861123f565b5b5f6116c684828501611690565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f496e76616c6964206e6f6e6365000000000000000000000000000000000000005f82015250565b5f611730600d83611341565b915061173b826116fc565b602082019050919050565b5f6020820190508181035f83015261175d81611724565b9050919050565b5f6080820190506117775f8301876113bf565b61178460208301866113a7565b61179160408301856112d5565b61179e60608301846112d5565b95945050505050565b7f496e76616c6964207369676e61747572650000000000000000000000000000005f82015250565b5f6117db601183611341565b91506117e6826117a7565b602082019050919050565b5f6020820190508181035f830152611808816117cf565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f611846826112cc565b9150611851836112cc565b92508282019050808211156118695761186861180f565b5b92915050565b5f6040820190506118825f8301856113a7565b61188f60208301846112d5565b9392505050565b5f8115159050919050565b6118aa81611896565b81146118b4575f5ffd5b50565b5f815190506118c5816118a1565b92915050565b5f602082840312156118e0576118df61123f565b5b5f6118ed848285016118b7565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061193a57607f821691505b60208210810361194d5761194c6118f6565b5b50919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b5f6020820190506119935f8301846113bf565b92915050565b5f60a0820190506119ac5f8301886113bf565b6119b960208301876113bf565b6119c660408301866113bf565b6119d360608301856112d5565b6119e060808301846113a7565b9695505050505050565b5f60ff82169050919050565b6119ff816119ea565b82525050565b5f608082019050611a185f8301876113bf565b611a2560208301866119f6565b611a3260408301856113bf565b611a3f60608301846113bf565b95945050505050565b5f81519050919050565b5f81905092915050565b5f611a6682611a48565b611a708185611a52565b9350611a80818560208601611351565b80840191505092915050565b5f611a978284611a5c565b91508190509291505056fea2646970667358221220d670ef1095aa5bc96263082fc7f96e16ca4487718cb950beb0215fc2be17692164736f6c634300081c003300000000000000000000000072fdc31f4a9a1edf6b6132d3c1754f1cdcf5d9b1