60806040526040518060400160405280600581526020017f2e6a736f6e000000000000000000000000000000000000000000000000000000815250601090816100489190610792565b506638d7ea4c68000060115534801561005f575f80fd5b5060405161652838038061652883398181016040528101906100819190610900565b8383836040518060400160405280601981526020017f547574616e6b68616d756e27732049726f6e20446167676572000000000000008152506040518060400160405280601981526020017f547574616e6b68616d756e27732049726f6e2044616767657200000000000000815250818181600290816101019190610792565b5080600390816101119190610792565b5061012061025260201b60201c565b5f8190555061013361025260201b60201c565b61014161025a60201b60201c565b101561015e5761015d63fed8210f60e01b61028160201b60201c565b5b50505050610172828261028960201b60201c565b50505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036101e4575f6040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081526004016101db9190610973565b60405180910390fd5b6101f3816102eb60201b60201c565b50600160155f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555050505050610a1a565b5f6001905090565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff905090565b805f5260045ffd5b61029982826103ae60201b60201c565b8173ffffffffffffffffffffffffffffffffffffffff167f8a8bae378cb731c5c40b632330c6836c2f916f48edb967699c86736f9a6a76ef826040516102df919061099b565b60405180910390a25050565b5f600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600c5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f6103bd61054f60201b60201c565b6bffffffffffffffffffffffff16905080826bffffffffffffffffffffffff1611156104225781816040517f6f483d090000000000000000000000000000000000000000000000000000000081526004016104199291906109f3565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610492575f6040517fb6d9900a0000000000000000000000000000000000000000000000000000000081526004016104899190610973565b60405180910390fd5b60405180604001604052808473ffffffffffffffffffffffffffffffffffffffff168152602001836bffffffffffffffffffffffff16815250600a5f820151815f015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506020820151815f0160146101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff160217905550905050505050565b5f612710905090565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806105d357607f821691505b6020821081036105e6576105e561058f565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f600883026106487fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8261060d565b610652868361060d565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f61069661069161068c8461066a565b610673565b61066a565b9050919050565b5f819050919050565b6106af8361067c565b6106c36106bb8261069d565b848454610619565b825550505050565b5f90565b6106d76106cb565b6106e28184846106a6565b505050565b5b81811015610705576106fa5f826106cf565b6001810190506106e8565b5050565b601f82111561074a5761071b816105ec565b610724846105fe565b81016020851015610733578190505b61074761073f856105fe565b8301826106e7565b50505b505050565b5f82821c905092915050565b5f61076a5f198460080261074f565b1980831691505092915050565b5f610782838361075b565b9150826002028217905092915050565b61079b82610558565b67ffffffffffffffff8111156107b4576107b3610562565b5b6107be82546105bc565b6107c9828285610709565b5f60209050601f8311600181146107fa575f84156107e8578287015190505b6107f28582610777565b865550610859565b601f198416610808866105ec565b5f5b8281101561082f5784890151825560018201915060208501945060208101905061080a565b8683101561084c5784890151610848601f89168261075b565b8355505b6001600288020188555050505b505050505050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61088e82610865565b9050919050565b61089e81610884565b81146108a8575f80fd5b50565b5f815190506108b981610895565b92915050565b5f6bffffffffffffffffffffffff82169050919050565b6108df816108bf565b81146108e9575f80fd5b50565b5f815190506108fa816108d6565b92915050565b5f805f806080858703121561091857610917610861565b5b5f610925878288016108ab565b9450506020610936878288016108ab565b9350506040610947878288016108ec565b9250506060610958878288016108ab565b91505092959194509250565b61096d81610884565b82525050565b5f6020820190506109865f830184610964565b92915050565b610995816108bf565b82525050565b5f6020820190506109ae5f83018461098c565b92915050565b5f6109ce6109c96109c4846108bf565b610673565b61066a565b9050919050565b6109de816109b4565b82525050565b6109ed8161066a565b82525050565b5f604082019050610a065f8301856109d5565b610a1360208301846109e4565b9392505050565b615b0180610a275f395ff3fe6080604052600436106102fe575f3560e01c806370a082311161018f578063c6682862116100db578063dc33e68111610094578063f2fde38b1161006e578063f2fde38b14610b33578063f4a0a52814610b5b578063fb796e6c14610b83578063fd762d9214610bad576102fe565b8063dc33e68114610a93578063e75179a414610acf578063e985e9c514610af7576102fe565b8063c668286214610995578063c68b3305146109bf578063c6ab67a3146109e7578063c87b56dd14610a11578063ce6df2b914610a4d578063d007af5c14610a69576102fe565b8063a22cb46511610148578063b7c0b8e811610122578063b7c0b8e8146108eb578063b88d4fde14610913578063bbadfe761461092f578063be537f431461096b576102fe565b8063a22cb46514610871578063a9fc664e14610899578063aa592f25146108c1576102fe565b806370a0823114610767578063715018a6146107a357806374d0101d146107b95780638da5cb5b146107e157806395d89b411461080b5780639d645a4414610835576102fe565b80632e8da8291161024e57806355f804b31161020757806361347162116101e157806361347162146106c35780636352211e146106eb5780636817c76c146107275780636c3b869914610751576102fe565b806355f804b3146106495780635944c753146106715780635d4c1d4614610699576102fe565b80632e8da8291461054d57806334531828146105895780633ccfd60b146105b15780633dd08c38146105c757806342842e0e14610603578063495c8bf91461061f576102fe565b8063098144d4116102bb5780631b25b077116102955780631b25b0771461048e5780631c33b328146104ca57806323b872dd146104f45780632a55205a14610510576102fe565b8063098144d414610412578063109695231461043c57806318160ddd14610464576102fe565b8063014635461461030257806301ffc9a71461032c57806304634d8d1461036857806306fdde0314610390578063081812fc146103ba578063095ea7b3146103f6575b5f80fd5b34801561030d575f80fd5b50610316610bd5565b604051610323919061440e565b60405180910390f35b348015610337575f80fd5b50610352600480360381019061034d919061448d565b610beb565b60405161035f91906144d2565b60405180910390f35b348015610373575f80fd5b5061038e60048036038101906103899190614556565b610bfc565b005b34801561039b575f80fd5b506103a4610c1a565b6040516103b19190614604565b60405180910390f35b3480156103c5575f80fd5b506103e060048036038101906103db9190614657565b610caa565b6040516103ed919061440e565b60405180910390f35b610410600480360381019061040b9190614682565b610d03565b005b34801561041d575f80fd5b50610426610d11565b604051610433919061471b565b60405180910390f35b348015610447575f80fd5b50610462600480360381019061045d9190614795565b610d39565b005b34801561046f575f80fd5b50610478610e54565b60405161048591906147ef565b60405180910390f35b348015610499575f80fd5b506104b460048036038101906104af9190614808565b610e9f565b6040516104c191906144d2565b60405180910390f35b3480156104d5575f80fd5b506104de610f9a565b6040516104eb91906148cb565b60405180910390f35b61050e600480360381019061050991906148e4565b610f9f565b005b34801561051b575f80fd5b5061053660048036038101906105319190614934565b610faf565b604051610544929190614972565b60405180910390f35b348015610558575f80fd5b50610573600480360381019061056e9190614999565b61118b565b60405161058091906144d2565b60405180910390f35b348015610594575f80fd5b506105af60048036038101906105aa919061448d565b611327565b005b3480156105bc575f80fd5b506105c5611399565b005b3480156105d2575f80fd5b506105ed60048036038101906105e89190614999565b611443565b6040516105fa91906144d2565b60405180910390f35b61061d600480360381019061061891906148e4565b611460565b005b34801561062a575f80fd5b50610633611470565b6040516106409190614a7b565b60405180910390f35b348015610654575f80fd5b5061066f600480360381019061066a9190614795565b611654565b005b34801561067c575f80fd5b5061069760048036038101906106929190614a9b565b611720565b005b3480156106a4575f80fd5b506106ad611740565b6040516106ba9190614b14565b60405180910390f35b3480156106ce575f80fd5b506106e960048036038101906106e49190614b7a565b611745565b005b3480156106f6575f80fd5b50610711600480360381019061070c9190614657565b6118fb565b60405161071e919061440e565b60405180910390f35b348015610732575f80fd5b5061073b61190c565b60405161074891906147ef565b60405180910390f35b34801561075c575f80fd5b50610765611912565b005b348015610772575f80fd5b5061078d60048036038101906107889190614999565b611a2d565b60405161079a91906147ef565b60405180910390f35b3480156107ae575f80fd5b506107b7611ac1565b005b3480156107c4575f80fd5b506107df60048036038101906107da9190614682565b611ad4565b005b3480156107ec575f80fd5b506107f5611c1a565b604051610802919061440e565b60405180910390f35b348015610816575f80fd5b5061081f611c42565b60405161082c9190614604565b60405180910390f35b348015610840575f80fd5b5061085b60048036038101906108569190614999565b611cd2565b60405161086891906144d2565b60405180910390f35b34801561087c575f80fd5b5061089760048036038101906108929190614bf4565b611e6e565b005b3480156108a4575f80fd5b506108bf60048036038101906108ba9190614999565b611e7c565b005b3480156108cc575f80fd5b506108d5612031565b6040516108e291906147ef565b60405180910390f35b3480156108f6575f80fd5b50610911600480360381019061090c9190614c32565b612036565b005b61092d60048036038101906109289190614d85565b612110565b005b34801561093a575f80fd5b506109556004803603810190610950919061448d565b612122565b60405161096291906144d2565b60405180910390f35b348015610976575f80fd5b5061097f61213f565b60405161098c9190614e63565b60405180910390f35b3480156109a0575f80fd5b506109a9612290565b6040516109b69190614604565b60405180910390f35b3480156109ca575f80fd5b506109e560048036038101906109e09190614c32565b61231c565b005b3480156109f2575f80fd5b506109fb612347565b604051610a089190614604565b60405180910390f35b348015610a1c575f80fd5b50610a376004803603810190610a329190614657565b6123d3565b604051610a449190614604565b60405180910390f35b610a676004803603810190610a629190614682565b612477565b005b348015610a74575f80fd5b50610a7d6125da565b604051610a8a9190614a7b565b60405180910390f35b348015610a9e575f80fd5b50610ab96004803603810190610ab49190614999565b6127be565b604051610ac691906147ef565b60405180910390f35b348015610ada575f80fd5b50610af56004803603810190610af09190614999565b6127cf565b005b348015610b02575f80fd5b50610b1d6004803603810190610b189190614e7c565b6128dc565b604051610b2a91906144d2565b60405180910390f35b348015610b3e575f80fd5b50610b596004803603810190610b549190614999565b61296a565b005b348015610b66575f80fd5b50610b816004803603810190610b7c9190614657565b6129ee565b005b348015610b8e575f80fd5b50610b97612a00565b604051610ba491906144d2565b60405180910390f35b348015610bb8575f80fd5b50610bd36004803603810190610bce9190614eba565b612a12565b005b71721c310194ccfc01e523fc93c9cccfa2a0ac81565b5f610bf582612b61565b9050919050565b610c04612bda565b610c0c612c61565b610c168282612c6b565b5050565b606060028054610c2990614f4b565b80601f0160208091040260200160405190810160405280929190818152602001828054610c5590614f4b565b8015610ca05780601f10610c7757610100808354040283529160200191610ca0565b820191905f5260205f20905b815481529060010190602001808311610c8357829003601f168201915b5050505050905090565b5f610cb482612cc7565b610cc957610cc863cf4700e460e01b612d6a565b5b60065f8381526020019081526020015f205f015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b610d0d8282612d72565b5050565b5f60095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60145f80357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019081526020015f205f9054906101000a900460ff1615610def576040517f8bf9b99f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610df7612bda565b5f600e8054610e0590614f4b565b905014610e3e576040517f19e24c1100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8181600e9182610e4f929190615119565b505050565b5f610e5d612d82565b6001545f54030390507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610e8f612d8a565b14610e9c57600854810190505b90565b5f8073ffffffffffffffffffffffffffffffffffffffff1660095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f8e5760095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663285fb8c88585856040518463ffffffff1660e01b8152600401610f52939291906151e6565b5f6040518083038186803b158015610f68575f80fd5b505afa925050508015610f79575060015b610f85575f9050610f93565b60019050610f93565b600190505b9392505050565b600181565b610faa838383612db1565b505050565b5f805f600b5f8681526020019081526020015f206040518060400160405290815f82015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020015f820160149054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff166bffffffffffffffffffffffff168152505090505f73ffffffffffffffffffffffffffffffffffffffff16815f015173ffffffffffffffffffffffffffffffffffffffff160361113857600a6040518060400160405290815f82015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020015f820160149054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff166bffffffffffffffffffffffff168152505090505b5f61114161305c565b6bffffffffffffffffffffffff1682602001516bffffffffffffffffffffffff168661116d9190615248565b61117791906152b6565b9050815f0151819350935050509250929050565b5f8073ffffffffffffffffffffffffffffffffffffffff1660095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461131e5760095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d72dde5e60095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b9554552306040518263ffffffff1660e01b8152600401611277919061440e565b606060405180830381865afa158015611292573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112b69190615373565b60200151846040518363ffffffff1660e01b81526004016112d892919061539e565b602060405180830381865afa1580156112f3573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061131791906153d9565b9050611322565b5f90505b919050565b61132f612bda565b600160145f837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019081526020015f205f6101000a81548160ff02191690831515021790555050565b6113a1612bda565b5f3373ffffffffffffffffffffffffffffffffffffffff16476040516113c690615431565b5f6040518083038185875af1925050503d805f8114611400576040519150601f19603f3d011682016040523d82523d5f602084013e611405565b606091505b5050905080611440576040517f750b219c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50565b6015602052805f5260405f205f915054906101000a900460ff1681565b61146b838383613065565b505050565b60605f73ffffffffffffffffffffffffffffffffffffffff1660095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146116055760095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16633fe5df9960095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b9554552306040518263ffffffff1660e01b815260040161155d919061440e565b606060405180830381865afa158015611578573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061159c9190615373565b602001516040518263ffffffff1660e01b81526004016115bc9190614b14565b5f60405180830381865afa1580156115d6573d5f803e3d5ffd5b505050506040513d5f823e3d601f19601f820116820180604052508101906115fe9190615519565b9050611651565b5f67ffffffffffffffff81111561161f5761161e614c61565b5b60405190808252806020026020018201604052801561164d5781602001602082028036833780820191505090505b5090505b90565b60145f80357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019081526020015f205f9054906101000a900460ff161561170a576040517f8bf9b99f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8181600d918261171b929190615119565b505050565b611728612bda565b611730612c61565b61173b838383613084565b505050565b600181565b61174d612c61565b5f611756610d11565b90505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036117bd576040517f39ffc7ba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1663da0194c030866040518363ffffffff1660e01b81526004016117f8929190615560565b5f604051808303815f87803b15801561180f575f80fd5b505af1158015611821573d5f803e3d5ffd5b505050508073ffffffffffffffffffffffffffffffffffffffff16632304aa0230856040518363ffffffff1660e01b8152600401611860929190615587565b5f604051808303815f87803b158015611877575f80fd5b505af1158015611889573d5f803e3d5ffd5b505050508073ffffffffffffffffffffffffffffffffffffffff16638d74431430846040518363ffffffff1660e01b81526004016118c8929190615587565b5f604051808303815f87803b1580156118df575f80fd5b505af11580156118f1573d5f803e3d5ffd5b5050505050505050565b5f611905826130e3565b9050919050565b60115481565b61191a612c61565b61193571721c310194ccfc01e523fc93c9cccfa2a0ac611e7c565b71721c310194ccfc01e523fc93c9cccfa2a0ac73ffffffffffffffffffffffffffffffffffffffff1663da0194c03060016040518363ffffffff1660e01b8152600401611983929190615560565b5f604051808303815f87803b15801561199a575f80fd5b505af11580156119ac573d5f803e3d5ffd5b5050505071721c310194ccfc01e523fc93c9cccfa2a0ac73ffffffffffffffffffffffffffffffffffffffff16632304aa023060016040518363ffffffff1660e01b81526004016119fe929190615587565b5f604051808303815f87803b158015611a15575f80fd5b505af1158015611a27573d5f803e3d5ffd5b50505050565b5f8073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611a7257611a71638f4eb60460e01b612d6a565b5b67ffffffffffffffff60055f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054169050919050565b611ac9612bda565b611ad25f6131f2565b565b6001151560155f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16151514611b64576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b5b906155f8565b60405180910390fd5b6001151560135f9054906101000a900460ff16151514611bb9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bb090615660565b60405180910390fd5b62015180601254611bca919061567e565b421115611c0c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c03906156fb565b60405180910390fd5b611c1682826132b5565b5050565b5f600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060038054611c5190614f4b565b80601f0160208091040260200160405190810160405280929190818152602001828054611c7d90614f4b565b8015611cc85780601f10611c9f57610100808354040283529160200191611cc8565b820191905f5260205f20905b815481529060010190602001808311611cab57829003601f168201915b5050505050905090565b5f8073ffffffffffffffffffffffffffffffffffffffff1660095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611e655760095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16639445f53060095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b9554552306040518263ffffffff1660e01b8152600401611dbe919061440e565b606060405180830381865afa158015611dd9573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611dfd9190615373565b60400151846040518363ffffffff1660e01b8152600401611e1f92919061539e565b602060405180830381865afa158015611e3a573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611e5e91906153d9565b9050611e69565b5f90505b919050565b611e788282613429565b5050565b611e84612c61565b5f808273ffffffffffffffffffffffffffffffffffffffff163b1115611f22578173ffffffffffffffffffffffffffffffffffffffff166301ffc9a75f6040518263ffffffff1660e01b8152600401611edd9190615728565b602060405180830381865afa925050508015611f1757506040513d601f19601f82011682018060405250810190611f1491906153d9565b60015b15611f2157809150505b5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614158015611f5c575080155b15611f93576040517f32483afb00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7fcc5dc080ff977b3c3a211fa63ab74f90f658f5ba9d3236e92c8f59570f442aac60095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683604051611fe5929190615741565b60405180910390a18160095f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b602381565b60145f80357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019081526020015f205f9054906101000a900460ff16156120ec576040517f8bf9b99f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6120f4612bda565b80600f5f6101000a81548160ff02191690831515021790555050565b61211c8484848461352f565b50505050565b6014602052805f5260405f205f915054906101000a900460ff1681565b61214761437d565b5f73ffffffffffffffffffffffffffffffffffffffff1660095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461223b5760095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b9554552306040518263ffffffff1660e01b81526004016121f5919061440e565b606060405180830381865afa158015612210573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906122349190615373565b905061228d565b60405180606001604052805f600681111561225957612258614858565b5b81526020015f6effffffffffffffffffffffffffffff1681526020015f6effffffffffffffffffffffffffffff1681525090505b90565b6010805461229d90614f4b565b80601f01602080910402602001604051908101604052809291908181526020018280546122c990614f4b565b80156123145780601f106122eb57610100808354040283529160200191612314565b820191905f5260205f20905b8154815290600101906020018083116122f757829003601f168201915b505050505081565b612324612bda565b8060135f6101000a81548160ff0219169083151502179055504260128190555050565b600e805461235490614f4b565b80601f016020809104026020016040519081016040528092919081815260200182805461238090614f4b565b80156123cb5780601f106123a2576101008083540402835291602001916123cb565b820191905f5260205f20905b8154815290600101906020018083116123ae57829003601f168201915b505050505081565b60606123de82612cc7565b61241d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612414906157d8565b60405180910390fd5b5f612426613580565b90505f8151116124445760405180602001604052805f81525061246f565b8061244e84613610565b60405160200161245f929190615830565b6040516020818303038152906040525b915050919050565b6001151560135f9054906101000a900460ff161515146124cc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124c390615660565b60405180910390fd5b620151806012546124dd919061567e565b42111561251f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612516906156fb565b60405180910390fd5b5f6011548261252e9190615248565b905080341015612573576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161256a9061589d565b60405180910390fd5b61257d83836132b5565b803411156125d5573373ffffffffffffffffffffffffffffffffffffffff166108fc82346125ab91906158bb565b90811502906040515f60405180830381858888f193505050501580156125d3573d5f803e3d5ffd5b505b505050565b60605f73ffffffffffffffffffffffffffffffffffffffff1660095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461276f5760095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166317e94a6c60095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b9554552306040518263ffffffff1660e01b81526004016126c7919061440e565b606060405180830381865afa1580156126e2573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906127069190615373565b604001516040518263ffffffff1660e01b81526004016127269190614b14565b5f60405180830381865afa158015612740573d5f803e3d5ffd5b505050506040513d5f823e3d601f19601f820116820180604052508101906127689190615519565b90506127bb565b5f67ffffffffffffffff81111561278957612788614c61565b5b6040519080825280602002602001820160405280156127b75781602001602082028036833780820191505090505b5090505b90565b5f6127c8826136da565b9050919050565b60145f80357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019081526020015f205f9054906101000a900460ff1615612885576040517f8bf9b99f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61288d612bda565b602361289761372e565b106128ce576040517f1f0f14ca00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6128d98160236132b5565b50565b5f60075f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16905092915050565b612972612bda565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036129e2575f6040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081526004016129d9919061440e565b60405180910390fd5b6129eb816131f2565b50565b6129f6612bda565b8060118190555050565b600f5f9054906101000a900460ff1681565b612a1a612c61565b612a2384611e7c565b8373ffffffffffffffffffffffffffffffffffffffff1663da0194c030856040518363ffffffff1660e01b8152600401612a5e929190615560565b5f604051808303815f87803b158015612a75575f80fd5b505af1158015612a87573d5f803e3d5ffd5b505050508373ffffffffffffffffffffffffffffffffffffffff16632304aa0230846040518363ffffffff1660e01b8152600401612ac6929190615587565b5f604051808303815f87803b158015612add575f80fd5b505af1158015612aef573d5f803e3d5ffd5b505050508373ffffffffffffffffffffffffffffffffffffffff16638d74431430836040518363ffffffff1660e01b8152600401612b2e929190615587565b5f604051808303815f87803b158015612b45575f80fd5b505af1158015612b57573d5f803e3d5ffd5b5050505050505050565b5f7f86455d28000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480612bd35750612bd282613775565b5b9050919050565b612be2613806565b73ffffffffffffffffffffffffffffffffffffffff16612c00611c1a565b73ffffffffffffffffffffffffffffffffffffffff1614612c5f57612c23613806565b6040517f118cdaa7000000000000000000000000000000000000000000000000000000008152600401612c56919061440e565b60405180910390fd5b565b612c69612bda565b565b612c75828261380d565b8173ffffffffffffffffffffffffffffffffffffffff167f8a8bae378cb731c5c40b632330c6836c2f916f48edb967699c86736f9a6a76ef82604051612cbb91906158fd565b60405180910390a25050565b5f81612cd1612d82565b11612d6457612cde612d8a565b821115612d0657612cff60045f8481526020019081526020015f20546139a8565b9050612d65565b5f54821015612d63575f5b5f60045f8581526020019081526020015f205491508103612d3d5782612d3690615916565b9250612d11565b5f7c01000000000000000000000000000000000000000000000000000000008216149150505b5b5b919050565b805f5260045ffd5b612d7e828260016139e8565b5050565b5f6001905090565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff905090565b5f612dbb826130e3565b905073ffffffffffffffffffffffffffffffffffffffff8473ffffffffffffffffffffffffffffffffffffffff161693508373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614612e3057612e2f63a114810060e01b612d6a565b5b5f80612e3b84613b12565b91509150612e518187612e4c613b35565b613b43565b612e7c57612e6686612e61613b35565b6128dc565b612e7b57612e7a6359c896be60e01b612d6a565b5b5b612e898686866001613b86565b8015612e93575f82555b60055f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8154600190039190508190555060055f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f815460010191905081905550612f5b85612f37888887613bb8565b7c020000000000000000000000000000000000000000000000000000000017613bdf565b60045f8681526020019081526020015f20819055505f7c0200000000000000000000000000000000000000000000000000000000841603612fd7575f6001850190505f60045f8381526020019081526020015f205403612fd5575f548114612fd4578360045f8381526020019081526020015f20819055505b5b505b5f73ffffffffffffffffffffffffffffffffffffffff8673ffffffffffffffffffffffffffffffffffffffff161690508481887fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef5f80a45f81036130465761304563ea553b3460e01b612d6a565b5b6130538787876001613c09565b50505050505050565b5f612710905090565b61307f83838360405180602001604052805f815250612110565b505050565b61308f838383613c3b565b8173ffffffffffffffffffffffffffffffffffffffff16837f7f5b076c952c0ec86e5425963c1326dd0f03a3595c19f81d765e8ff559a6e33c836040516130d691906158fd565b60405180910390a3505050565b5f816130ed612d82565b116131dc5760045f8381526020019081526020015f2054905061310e612d8a565b8211156131335761311e816139a8565b6131ed5761313263df2d9b4260e01b612d6a565b5b5f81036131b4575f5482106131535761315263df2d9b4260e01b612d6a565b5b5b60045f836001900393508381526020019081526020015f205490505f8103156131af575f7c0100000000000000000000000000000000000000000000000000000000821603156131ed576131ae63df2d9b4260e01b612d6a565b5b613154565b5f7c0100000000000000000000000000000000000000000000000000000000821603156131ed575b6131ec63df2d9b4260e01b612d6a565b5b919050565b5f600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600c5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f805490505f82036132d2576132d163b562e8dd60e01b612d6a565b5b6132de5f848385613b86565b6132fc836132ed5f865f613bb8565b6132f685613dea565b17613bdf565b60045f8381526020019081526020015f2081905550600160406001901b17820260055f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055505f73ffffffffffffffffffffffffffffffffffffffff8473ffffffffffffffffffffffffffffffffffffffff161690505f81036133ad576133ac632e07630060e01b612d6a565b5b5f83830190505f8390506133bf612d8a565b6001830311156133da576133d96381647e3a60e01b612d6a565b5b5b80835f7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef5f80a48181600101915081036133db57815f819055505050506134245f848385613c09565b505050565b8060075f613435613b35565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff166134de613b35565b73ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c318360405161352391906144d2565b60405180910390a35050565b61353a848484610f9f565b5f8373ffffffffffffffffffffffffffffffffffffffff163b1461357a5761356484848484613df9565b6135795761357863d1a57ed660e01b612d6a565b5b5b50505050565b6060600d805461358f90614f4b565b80601f01602080910402602001604051908101604052809291908181526020018280546135bb90614f4b565b80156136065780601f106135dd57610100808354040283529160200191613606565b820191905f5260205f20905b8154815290600101906020018083116135e957829003601f168201915b5050505050905090565b60605f600161361e84613f23565b0190505f8167ffffffffffffffff81111561363c5761363b614c61565b5b6040519080825280601f01601f19166020018201604052801561366e5781602001600182028036833780820191505090505b5090505f82602001820190505b6001156136cf578080600190039150507f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a85816136c4576136c3615289565b5b0494505f850361367b575b819350505050919050565b5f67ffffffffffffffff604060055f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054901c169050919050565b5f613737612d82565b5f540390507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff613765612d8a565b1461377257600854810190505b90565b5f6301ffc9a760e01b827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806137cf57506380ac58cd60e01b827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b806137ff5750635b5e139f60e01b827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b9050919050565b5f33905090565b5f61381661305c565b6bffffffffffffffffffffffff16905080826bffffffffffffffffffffffff16111561387b5781816040517f6f483d0900000000000000000000000000000000000000000000000000000000815260040161387292919061596d565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036138eb575f6040517fb6d9900a0000000000000000000000000000000000000000000000000000000081526004016138e2919061440e565b60405180910390fd5b60405180604001604052808473ffffffffffffffffffffffffffffffffffffffff168152602001836bffffffffffffffffffffffff16815250600a5f820151815f015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506020820151815f0160146101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff160217905550905050505050565b5f7c0100000000000000000000000000000000000000000000000000000000821673ffffffffffffffffffffffffffffffffffffffff8316119050919050565b5f6139f2836118fb565b9050818015613a3457508073ffffffffffffffffffffffffffffffffffffffff16613a1b613b35565b73ffffffffffffffffffffffffffffffffffffffff1614155b15613a6057613a4a81613a45613b35565b6128dc565b613a5f57613a5e63cfb3b94260e01b612d6a565b5b5b8360065f8581526020019081526020015f205f015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550828473ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a450505050565b5f805f60065f8581526020019081526020015f2090508092508254915050915091565b5f613b3e613806565b905090565b5f73ffffffffffffffffffffffffffffffffffffffff8316925073ffffffffffffffffffffffffffffffffffffffff821691508382148383141790509392505050565b5f5b81811015613bb157613ba685858386613ba1919061567e565b614074565b806001019050613b88565b5050505050565b5f8060e883901c905060e8613bce868684614172565b62ffffff16901b9150509392505050565b5f73ffffffffffffffffffffffffffffffffffffffff83169250814260a01b178317905092915050565b5f5b81811015613c3457613c2985858386613c24919061567e565b61417a565b806001019050613c0b565b5050505050565b5f613c4461305c565b6bffffffffffffffffffffffff16905080826bffffffffffffffffffffffff161115613cab578382826040517fdfd1fc1b000000000000000000000000000000000000000000000000000000008152600401613ca293929190615994565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603613d1d57835f6040517f969f0852000000000000000000000000000000000000000000000000000000008152600401613d149291906159c9565b60405180910390fd5b60405180604001604052808473ffffffffffffffffffffffffffffffffffffffff168152602001836bffffffffffffffffffffffff16815250600b5f8681526020019081526020015f205f820151815f015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506020820151815f0160146101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff16021790555090505050505050565b5f6001821460e11b9050919050565b5f8373ffffffffffffffffffffffffffffffffffffffff1663150b7a02613e1e613b35565b8786866040518563ffffffff1660e01b8152600401613e409493929190615a42565b6020604051808303815f875af1925050508015613e7b57506040513d601f19601f82011682018060405250810190613e789190615aa0565b60015b613ed0573d805f8114613ea9576040519150601f19603f3d011682016040523d82523d5f602084013e613eae565b606091505b505f815103613ec857613ec763d1a57ed660e01b612d6a565b5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614915050949350505050565b5f805f90507a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008310613f7f577a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008381613f7557613f74615289565b5b0492506040810190505b6d04ee2d6d415b85acef81000000008310613fbc576d04ee2d6d415b85acef81000000008381613fb257613fb1615289565b5b0492506020810190505b662386f26fc100008310613feb57662386f26fc100008381613fe157613fe0615289565b5b0492506010810190505b6305f5e1008310614014576305f5e100838161400a57614009615289565b5b0492506008810190505b612710831061403957612710838161402f5761402e615289565b5b0492506004810190505b6064831061405c576064838161405257614051615289565b5b0492506002810190505b600a831061406b576001810190505b80915050919050565b5f8073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161490505f8073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161490508180156140e25750805b15614119576040517f5cbd944100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81156141375761413261412a613806565b858534614278565b61416b565b801561415557614150614148613806565b86853461427e565b61416a565b614169614160613806565b86868634614284565b5b5b5050505050565b5f9392505050565b5f8073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161490505f8073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161490508180156141e85750805b1561421f576040517f5cbd944100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b811561423d57614238614230613806565b85853461436a565b614271565b801561425b5761425661424e613806565b868534614370565b614270565b61426f614266613806565b86868634614376565b5b5b5050505050565b50505050565b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff1660095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146143635760095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663285fb8c88686866040518463ffffffff1660e01b8152600401614336939291906151e6565b5f6040518083038186803b15801561434c575f80fd5b505afa15801561435e573d5f803e3d5ffd5b505050505b5050505050565b50505050565b50505050565b5050505050565b60405180606001604052805f600681111561439b5761439a614858565b5b81526020015f6effffffffffffffffffffffffffffff1681526020015f6effffffffffffffffffffffffffffff1681525090565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6143f8826143cf565b9050919050565b614408816143ee565b82525050565b5f6020820190506144215f8301846143ff565b92915050565b5f604051905090565b5f80fd5b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b61446c81614438565b8114614476575f80fd5b50565b5f8135905061448781614463565b92915050565b5f602082840312156144a2576144a1614430565b5b5f6144af84828501614479565b91505092915050565b5f8115159050919050565b6144cc816144b8565b82525050565b5f6020820190506144e55f8301846144c3565b92915050565b6144f4816143ee565b81146144fe575f80fd5b50565b5f8135905061450f816144eb565b92915050565b5f6bffffffffffffffffffffffff82169050919050565b61453581614515565b811461453f575f80fd5b50565b5f813590506145508161452c565b92915050565b5f806040838503121561456c5761456b614430565b5b5f61457985828601614501565b925050602061458a85828601614542565b9150509250929050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f6145d682614594565b6145e0818561459e565b93506145f08185602086016145ae565b6145f9816145bc565b840191505092915050565b5f6020820190508181035f83015261461c81846145cc565b905092915050565b5f819050919050565b61463681614624565b8114614640575f80fd5b50565b5f813590506146518161462d565b92915050565b5f6020828403121561466c5761466b614430565b5b5f61467984828501614643565b91505092915050565b5f806040838503121561469857614697614430565b5b5f6146a585828601614501565b92505060206146b685828601614643565b9150509250929050565b5f819050919050565b5f6146e36146de6146d9846143cf565b6146c0565b6143cf565b9050919050565b5f6146f4826146c9565b9050919050565b5f614705826146ea565b9050919050565b614715816146fb565b82525050565b5f60208201905061472e5f83018461470c565b92915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f84011261475557614754614734565b5b8235905067ffffffffffffffff81111561477257614771614738565b5b60208301915083600182028301111561478e5761478d61473c565b5b9250929050565b5f80602083850312156147ab576147aa614430565b5b5f83013567ffffffffffffffff8111156147c8576147c7614434565b5b6147d485828601614740565b92509250509250929050565b6147e981614624565b82525050565b5f6020820190506148025f8301846147e0565b92915050565b5f805f6060848603121561481f5761481e614430565b5b5f61482c86828701614501565b935050602061483d86828701614501565b925050604061484e86828701614501565b9150509250925092565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b6007811061489657614895614858565b5b50565b5f8190506148a682614885565b919050565b5f6148b582614899565b9050919050565b6148c5816148ab565b82525050565b5f6020820190506148de5f8301846148bc565b92915050565b5f805f606084860312156148fb576148fa614430565b5b5f61490886828701614501565b935050602061491986828701614501565b925050604061492a86828701614643565b9150509250925092565b5f806040838503121561494a57614949614430565b5b5f61495785828601614643565b925050602061496885828601614643565b9150509250929050565b5f6040820190506149855f8301856143ff565b61499260208301846147e0565b9392505050565b5f602082840312156149ae576149ad614430565b5b5f6149bb84828501614501565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b6149f6816143ee565b82525050565b5f614a0783836149ed565b60208301905092915050565b5f602082019050919050565b5f614a29826149c4565b614a3381856149ce565b9350614a3e836149de565b805f5b83811015614a6e578151614a5588826149fc565b9750614a6083614a13565b925050600181019050614a41565b5085935050505092915050565b5f6020820190508181035f830152614a938184614a1f565b905092915050565b5f805f60608486031215614ab257614ab1614430565b5b5f614abf86828701614643565b9350506020614ad086828701614501565b9250506040614ae186828701614542565b9150509250925092565b5f6effffffffffffffffffffffffffffff82169050919050565b614b0e81614aeb565b82525050565b5f602082019050614b275f830184614b05565b92915050565b60078110614b39575f80fd5b50565b5f81359050614b4a81614b2d565b92915050565b614b5981614aeb565b8114614b63575f80fd5b50565b5f81359050614b7481614b50565b92915050565b5f805f60608486031215614b9157614b90614430565b5b5f614b9e86828701614b3c565b9350506020614baf86828701614b66565b9250506040614bc086828701614b66565b9150509250925092565b614bd3816144b8565b8114614bdd575f80fd5b50565b5f81359050614bee81614bca565b92915050565b5f8060408385031215614c0a57614c09614430565b5b5f614c1785828601614501565b9250506020614c2885828601614be0565b9150509250929050565b5f60208284031215614c4757614c46614430565b5b5f614c5484828501614be0565b91505092915050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b614c97826145bc565b810181811067ffffffffffffffff82111715614cb657614cb5614c61565b5b80604052505050565b5f614cc8614427565b9050614cd48282614c8e565b919050565b5f67ffffffffffffffff821115614cf357614cf2614c61565b5b614cfc826145bc565b9050602081019050919050565b828183375f83830152505050565b5f614d29614d2484614cd9565b614cbf565b905082815260208101848484011115614d4557614d44614c5d565b5b614d50848285614d09565b509392505050565b5f82601f830112614d6c57614d6b614734565b5b8135614d7c848260208601614d17565b91505092915050565b5f805f8060808587031215614d9d57614d9c614430565b5b5f614daa87828801614501565b9450506020614dbb87828801614501565b9350506040614dcc87828801614643565b925050606085013567ffffffffffffffff811115614ded57614dec614434565b5b614df987828801614d58565b91505092959194509250565b614e0e816148ab565b82525050565b614e1d81614aeb565b82525050565b606082015f820151614e375f850182614e05565b506020820151614e4a6020850182614e14565b506040820151614e5d6040850182614e14565b50505050565b5f606082019050614e765f830184614e23565b92915050565b5f8060408385031215614e9257614e91614430565b5b5f614e9f85828601614501565b9250506020614eb085828601614501565b9150509250929050565b5f805f8060808587031215614ed257614ed1614430565b5b5f614edf87828801614501565b9450506020614ef087828801614b3c565b9350506040614f0187828801614b66565b9250506060614f1287828801614b66565b91505092959194509250565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680614f6257607f821691505b602082108103614f7557614f74614f1e565b5b50919050565b5f82905092915050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f60088302614fe17fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82614fa6565b614feb8683614fa6565b95508019841693508086168417925050509392505050565b5f61501d61501861501384614624565b6146c0565b614624565b9050919050565b5f819050919050565b61503683615003565b61504a61504282615024565b848454614fb2565b825550505050565b5f90565b61505e615052565b61506981848461502d565b505050565b5b8181101561508c576150815f82615056565b60018101905061506f565b5050565b601f8211156150d1576150a281614f85565b6150ab84614f97565b810160208510156150ba578190505b6150ce6150c685614f97565b83018261506e565b50505b505050565b5f82821c905092915050565b5f6150f15f19846008026150d6565b1980831691505092915050565b5f61510983836150e2565b9150826002028217905092915050565b6151238383614f7b565b67ffffffffffffffff81111561513c5761513b614c61565b5b6151468254614f4b565b615151828285615090565b5f601f83116001811461517e575f841561516c578287013590505b61517685826150fe565b8655506151dd565b601f19841661518c86614f85565b5f5b828110156151b35784890135825560018201915060208501945060208101905061518e565b868310156151d057848901356151cc601f8916826150e2565b8355505b6001600288020188555050505b50505050505050565b5f6060820190506151f95f8301866143ff565b61520660208301856143ff565b61521360408301846143ff565b949350505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61525282614624565b915061525d83614624565b925082820261526b81614624565b915082820484148315176152825761528161521b565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6152c082614624565b91506152cb83614624565b9250826152db576152da615289565b5b828204905092915050565b5f80fd5b5f815190506152f881614b2d565b92915050565b5f8151905061530c81614b50565b92915050565b5f60608284031215615327576153266152e6565b5b6153316060614cbf565b90505f615340848285016152ea565b5f830152506020615353848285016152fe565b6020830152506040615367848285016152fe565b60408301525092915050565b5f6060828403121561538857615387614430565b5b5f61539584828501615312565b91505092915050565b5f6040820190506153b15f830185614b05565b6153be60208301846143ff565b9392505050565b5f815190506153d381614bca565b92915050565b5f602082840312156153ee576153ed614430565b5b5f6153fb848285016153c5565b91505092915050565b5f81905092915050565b50565b5f61541c5f83615404565b91506154278261540e565b5f82019050919050565b5f61543b82615411565b9150819050919050565b5f67ffffffffffffffff82111561545f5761545e614c61565b5b602082029050602081019050919050565b5f8151905061547e816144eb565b92915050565b5f61549661549184615445565b614cbf565b905080838252602082019050602084028301858111156154b9576154b861473c565b5b835b818110156154e257806154ce8882615470565b8452602084019350506020810190506154bb565b5050509392505050565b5f82601f830112615500576154ff614734565b5b8151615510848260208601615484565b91505092915050565b5f6020828403121561552e5761552d614430565b5b5f82015167ffffffffffffffff81111561554b5761554a614434565b5b615557848285016154ec565b91505092915050565b5f6040820190506155735f8301856143ff565b61558060208301846148bc565b9392505050565b5f60408201905061559a5f8301856143ff565b6155a76020830184614b05565b9392505050565b7f596f75277265206e6f742061206d696e746572000000000000000000000000005f82015250565b5f6155e260138361459e565b91506155ed826155ae565b602082019050919050565b5f6020820190508181035f83015261560f816155d6565b9050919050565b7f4d696e74696e67206973206e6f742073746172746564207965740000000000005f82015250565b5f61564a601a8361459e565b915061565582615616565b602082019050919050565b5f6020820190508181035f8301526156778161563e565b9050919050565b5f61568882614624565b915061569383614624565b92508282019050808211156156ab576156aa61521b565b5b92915050565b7f4d696e74696e672054696d6573207570000000000000000000000000000000005f82015250565b5f6156e560108361459e565b91506156f0826156b1565b602082019050919050565b5f6020820190508181035f830152615712816156d9565b9050919050565b61572281614438565b82525050565b5f60208201905061573b5f830184615719565b92915050565b5f6040820190506157545f8301856143ff565b61576160208301846143ff565b9392505050565b7f4552433732314d657461646174613a2055524920717565727920666f72206e6f5f8201527f6e6578697374656e7420746f6b656e0000000000000000000000000000000000602082015250565b5f6157c2602f8361459e565b91506157cd82615768565b604082019050919050565b5f6020820190508181035f8301526157ef816157b6565b9050919050565b5f81905092915050565b5f61580a82614594565b61581481856157f6565b93506158248185602086016145ae565b80840191505092915050565b5f61583b8285615800565b91506158478284615800565b91508190509392505050565b7f45746865722073656e74206973206e6f7420636f72726563742e0000000000005f82015250565b5f615887601a8361459e565b915061589282615853565b602082019050919050565b5f6020820190508181035f8301526158b48161587b565b9050919050565b5f6158c582614624565b91506158d083614624565b92508282039050818111156158e8576158e761521b565b5b92915050565b6158f781614515565b82525050565b5f6020820190506159105f8301846158ee565b92915050565b5f61592082614624565b91505f82036159325761593161521b565b5b600182039050919050565b5f61595761595261594d84614515565b6146c0565b614624565b9050919050565b6159678161593d565b82525050565b5f6040820190506159805f83018561595e565b61598d60208301846147e0565b9392505050565b5f6060820190506159a75f8301866147e0565b6159b4602083018561595e565b6159c160408301846147e0565b949350505050565b5f6040820190506159dc5f8301856147e0565b6159e960208301846143ff565b9392505050565b5f81519050919050565b5f82825260208201905092915050565b5f615a14826159f0565b615a1e81856159fa565b9350615a2e8185602086016145ae565b615a37816145bc565b840191505092915050565b5f608082019050615a555f8301876143ff565b615a6260208301866143ff565b615a6f60408301856147e0565b8181036060830152615a818184615a0a565b905095945050505050565b5f81519050615a9a81614463565b92915050565b5f60208284031215615ab557615ab4614430565b5b5f615ac284828501615a8c565b9150509291505056fea26469706673582212209c037391f725b817460e13963593bc372f7c08c986f3066528cbac3d0def4b7e64736f6c634300081a003300000000000000000000000059de7273191e6bf1907d614e94ecfbe8e5fb7318000000000000000000000000bb1d20b0250b298aa325219d56896fb6c1566c9c00000000000000000000000000000000000000000000000000000000000001f40000000000000000000000003bdc72443bd7fe4ab1ecbbfe04389e3b4197941b