60806040525f6006555f600a5f6101000a81548160ff02191690831515021790555073b50201558b00496a145fe76f7424749556e326d8600a60016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550734200000000000000000000000000000000000006600b5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507323e4e76d01b2002be436ce8d6044b0aa2f68b68a600c5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550735a26a2abfe972cf20aeffb180f64a331044e74f3600d5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550734c9cb855170372bfabcced87fb0306a19a55bbd8600e5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550348015620001d2575f80fd5b5060405162003f7838038062003f788339818101604052810190620001f8919062000435565b848481600390816200020b919062000725565b5080600490816200021d919062000725565b505050826007819055508160058190555080600981905550505050505062000809565b5f604051905090565b5f80fd5b5f80fd5b5f80fd5b5f80fd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b620002a18262000259565b810181811067ffffffffffffffff82111715620002c357620002c262000269565b5b80604052505050565b5f620002d762000240565b9050620002e5828262000296565b919050565b5f67ffffffffffffffff82111562000307576200030662000269565b5b620003128262000259565b9050602081019050919050565b5f5b838110156200033e57808201518184015260208101905062000321565b5f8484015250505050565b5f6200035f6200035984620002ea565b620002cc565b9050828152602081018484840111156200037e576200037d62000255565b5b6200038b8482856200031f565b509392505050565b5f82601f830112620003aa57620003a962000251565b5b8151620003bc84826020860162000349565b91505092915050565b5f819050919050565b620003d981620003c5565b8114620003e4575f80fd5b50565b5f81519050620003f781620003ce565b92915050565b5f819050919050565b6200041181620003fd565b81146200041c575f80fd5b50565b5f815190506200042f8162000406565b92915050565b5f805f805f60a0868803121562000451576200045062000249565b5b5f86015167ffffffffffffffff8111156200047157620004706200024d565b5b6200047f8882890162000393565b955050602086015167ffffffffffffffff811115620004a357620004a26200024d565b5b620004b18882890162000393565b9450506040620004c488828901620003e7565b9350506060620004d788828901620003e7565b9250506080620004ea888289016200041f565b9150509295509295909350565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806200054657607f821691505b6020821081036200055c576200055b62000501565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f60088302620005c07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000583565b620005cc868362000583565b95508019841693508086168417925050509392505050565b5f819050919050565b5f6200060d620006076200060184620003c5565b620005e4565b620003c5565b9050919050565b5f819050919050565b6200062883620005ed565b62000640620006378262000614565b8484546200058f565b825550505050565b5f90565b6200065662000648565b620006638184846200061d565b505050565b5b818110156200068a576200067e5f826200064c565b60018101905062000669565b5050565b601f821115620006d957620006a38162000562565b620006ae8462000574565b81016020851015620006be578190505b620006d6620006cd8562000574565b83018262000668565b50505b505050565b5f82821c905092915050565b5f620006fb5f1984600802620006de565b1980831691505092915050565b5f620007158383620006ea565b9150826002028217905092915050565b6200073082620004f7565b67ffffffffffffffff8111156200074c576200074b62000269565b5b6200075882546200052e565b620007658282856200068e565b5f60209050601f8311600181146200079b575f841562000786578287015190505b62000792858262000708565b86555062000801565b601f198416620007ab8662000562565b5f5b82811015620007d457848901518255600182019150602085019450602081019050620007ad565b86831015620007f45784890151620007f0601f891682620006ea565b8355505b6001600288020188555050505b505050505050565b61376180620008175f395ff3fe608060405260043610610143575f3560e01c806370b04241116100b5578063ad044f491161006e578063ad044f49146104a9578063b4edfb16146104d3578063bfe60856146104ef578063dd62ed3e14610519578063e7c2b77214610555578063ec3c481a1461057f5761014a565b806370b042411461038957806392fdb023146103c557806395d89b41146103ef5780639c6e026814610419578063a9059cbb14610443578063aa98e0c61461047f5761014a565b806324c62c441161010757806324c62c4414610256578063313ce56714610280578063539ad31a146102aa578063686f2c90146102e65780636e98a2ed1461031157806370a082311461034d5761014a565b806306fdde031461014e578063095ea7b314610178578063150b7a02146101b457806318160ddd146101f057806323b872dd1461021a5761014a565b3661014a57005b5f80fd5b348015610159575f80fd5b506101626105a7565b60405161016f919061248c565b60405180910390f35b348015610183575f80fd5b5061019e60048036038101906101999190612541565b610637565b6040516101ab9190612599565b60405180910390f35b3480156101bf575f80fd5b506101da60048036038101906101d59190612613565b610659565b6040516101e791906126d1565b60405180910390f35b3480156101fb575f80fd5b5061020461066d565b60405161021191906126f9565b60405180910390f35b348015610225575f80fd5b50610240600480360381019061023b9190612712565b610676565b60405161024d9190612599565b60405180910390f35b348015610261575f80fd5b5061026a6106a4565b60405161027791906126f9565b60405180910390f35b34801561028b575f80fd5b506102946106aa565b6040516102a1919061277d565b60405180910390f35b3480156102b5575f80fd5b506102d060048036038101906102cb9190612796565b6106b2565b6040516102dd91906126f9565b60405180910390f35b3480156102f1575f80fd5b506102fa610775565b6040516103089291906127c1565b60405180910390f35b34801561031c575f80fd5b5061033760048036038101906103329190612796565b610890565b60405161034491906126f9565b60405180910390f35b348015610358575f80fd5b50610373600480360381019061036e91906127e8565b61097e565b60405161038091906126f9565b60405180910390f35b348015610394575f80fd5b506103af60048036038101906103aa9190612796565b6109c3565b6040516103bc91906126f9565b60405180910390f35b3480156103d0575f80fd5b506103d9610a77565b6040516103e691906126f9565b60405180910390f35b3480156103fa575f80fd5b50610403610a7d565b604051610410919061248c565b60405180910390f35b348015610424575f80fd5b5061042d610b0d565b60405161043a91906126f9565b60405180910390f35b34801561044e575f80fd5b5061046960048036038101906104649190612541565b610b13565b6040516104769190612599565b60405180910390f35b34801561048a575f80fd5b50610493610b35565b6040516104a0919061282b565b60405180910390f35b3480156104b4575f80fd5b506104bd610b3b565b6040516104ca91906126f9565b60405180910390f35b6104ed60048036038101906104e89190612899565b610b41565b005b3480156104fa575f80fd5b50610503610fd4565b60405161051091906126f9565b60405180910390f35b348015610524575f80fd5b5061053f600480360381019061053a91906128f6565b610fe4565b60405161054c91906126f9565b60405180910390f35b348015610560575f80fd5b50610569611066565b6040516105769190612599565b60405180910390f35b34801561058a575f80fd5b506105a560048036038101906105a09190612796565b611078565b005b6060600380546105b690612961565b80601f01602080910402602001604051908101604052809291908181526020018280546105e290612961565b801561062d5780601f106106045761010080835404028352916020019161062d565b820191905f5260205f20905b81548152906001019060200180831161061057829003601f168201915b5050505050905090565b5f806106416111a8565b905061064e8185856111af565b600191505092915050565b5f63150b7a0260e01b905095945050505050565b5f600254905090565b5f806106806111a8565b905061068d8582856111c1565b610698858585611253565b60019150509392505050565b60055481565b5f6012905090565b5f8082116106f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106ec90612a01565b60405180910390fd5b6b019d971e4fe8401e74000000821115610744576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161073b90612a8f565b60405180910390fd5b5f6b019d971e4fe8401e74000000600554846107609190612ada565b61076a9190612b48565b905080915050919050565b5f805f604051806080016040528060085481526020013073ffffffffffffffffffffffffffffffffffffffff1681526020016fffffffffffffffffffffffffffffffff801681526020016fffffffffffffffffffffffffffffffff80168152509050600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663fc6f7865826040518263ffffffff1660e01b81526004016108319190612c13565b60408051808303815f875af115801561084c573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108709190612c40565b80935081945050506108823084611343565b61088b826113c2565b509091565b5f80600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016108ec9190612c8d565b602060405180830381865afa158015610907573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061092b9190612ca6565b90505f8161093761066d565b856109429190612b48565b61094c9190612ada565b9050600754421015610974576064605a826109679190612ada565b6109719190612b48565b90505b8092505050919050565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b5f808211610a06576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109fd90612d41565b60405180910390fd5b600554821115610a4b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a4290612dcf565b60405180910390fd5b6b019d971e4fe8401e7400000060055483610a669190612b48565b610a709190612ada565b9050919050565b60085481565b606060048054610a8c90612961565b80601f0160208091040260200160405190810160405280929190818152602001828054610ab890612961565b8015610b035780601f10610ada57610100808354040283529160200191610b03565b820191905f5260205f20905b815481529060010190602001808311610ae657829003601f168201915b5050505050905090565b60075481565b5f80610b1d6111a8565b9050610b2a818585611253565b600191505092915050565b60095481565b60065481565b6007544210610b85576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b7c90612e37565b60405180910390fd5b5f8311610bc7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bbe90612e9f565b60405180910390fd5b60055483600654610bd89190612ebd565b1115610c19576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c1090612f60565b60405180910390fd5b5f801b60095414610cde575f3384604051602001610c38929190612fe3565b604051602081830303815290604052805190602001209050610c9d8383808060200260200160405190810160405280939291908181526020018383602002808284375f81840152601f19601f8201169050808301925050505050505060095483611533565b610cdc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cd390613058565b60405180910390fd5b505b823414610d20576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d17906130c0565b60405180910390fd5b600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d0e30db0846040518263ffffffff1660e01b81526004015f604051808303818588803b158015610d87575f80fd5b505af1158015610d99573d5f803e3d5ffd5b5050505050610da7836113c2565b5f610db1846109c3565b90508360065f828254610dc49190612ebd565b92505081905550610dd53382611549565b60055460065410158015610df55750600a5f9054906101000a900460ff16155b15610fce575f600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff1610610e7657600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610e78565b305b90505f600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff1611610ef657600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610ef8565b305b90505f600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610f559190612c8d565b602060405180830381865afa158015610f70573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f949190612ca6565b9050610f9f816115c8565b610fac600654848461168c565b505050506001600a5f6101000a81548160ff0219169083151502179055505050505b50505050565b6b019d971e4fe8401e7400000081565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b600a5f9054906101000a900460ff1681565b5f81116110ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110b19061314e565b60405180910390fd5b5f6110c482610890565b90506110d03383611343565b6110d9816115c8565b600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632e1a7d4d826040518263ffffffff1660e01b815260040161113391906126f9565b5f604051808303815f87803b15801561114a575f80fd5b505af115801561115c573d5f803e3d5ffd5b505050503373ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f193505050501580156111a3573d5f803e3d5ffd5b505050565b5f33905090565b6111bc8383836001611f88565b505050565b5f6111cc8484610fe4565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811461124d578181101561123e578281836040517ffb8f41b20000000000000000000000000000000000000000000000000000000081526004016112359392919061316c565b60405180910390fd5b61124c84848484035f611f88565b5b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036112c3575f6040517f96c6fd1e0000000000000000000000000000000000000000000000000000000081526004016112ba9190612c8d565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611333575f6040517fec442f0500000000000000000000000000000000000000000000000000000000815260040161132a9190612c8d565b60405180910390fd5b61133e838383612157565b505050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036113b3575f6040517f96c6fd1e0000000000000000000000000000000000000000000000000000000081526004016113aa9190612c8d565b60405180910390fd5b6113be825f83612157565b5050565b600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600a60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b81526004016114409291906131a1565b6020604051808303815f875af115801561145c573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061148091906131f2565b50600a60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663617ba037600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683305f6040518563ffffffff1660e01b8152600401611503949392919061326c565b5f604051808303815f87803b15801561151a575f80fd5b505af115801561152c573d5f803e3d5ffd5b5050505050565b5f8261153f8584612370565b1490509392505050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036115b9575f6040517fec442f050000000000000000000000000000000000000000000000000000000081526004016115b09190612c8d565b60405180910390fd5b6115c45f8383612157565b5050565b600a60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166369328dec600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683306040518463ffffffff1660e01b8152600401611648939291906132af565b6020604051808303815f875af1158015611664573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906116889190612ca6565b5050565b5f805f805f600d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a16712958888610bb86040518463ffffffff1660e01b81526004016116f19392919061332b565b6020604051808303815f875af115801561170d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906117319190613374565b90505f674563918244f40000600554036117d157600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff16146117aa576a068db8bac710cb295e9e1b6117ba565b6d27100000000000000000000000005b6dffffffffffffffffffffffffffff169050611ad8565b678ac7230489e800006005540361186e57600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff1614611847576a0944a81999493c7145b553611857565b6d1b9f115c1e507f3671e7b7d2f2155b6dffffffffffffffffffffffffffff169050611ad7565b6801158e460913d000006005540361190c57600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff16146118e5576a0d1b71758e219652bd3c366118f5565b6d13880000000000000000000000005b6dffffffffffffffffffffffffffff169050611ad6565b6802b5e3af16b1880000600554036119aa57600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff1614611983576a14b96be9c2da2be2860ce4611993565b6d0c5a4714bc9e97514c43760bfd465b6dffffffffffffffffffffffffffff169050611ad5565b68056bc75e2d6310000060055403611a4857600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff1614611a21576a1d4effc45a0a15b7b35d77611a31565b6d08bc1166f93275e96b7f389ef0d65b6dffffffffffffffffffffffffffff169050611ad4565b600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff1614611aa9576627ce7b90a833ab611abd565b71066e5c7c301979a99761e2a309bd156ca19f5b71ffffffffffffffffffffffffffffffffffff1690505b5b5b5b5b8173ffffffffffffffffffffffffffffffffffffffff1663f637731d826040518263ffffffff1660e01b8152600401611b1191906133ae565b5f604051808303815f87803b158015611b28575f80fd5b505af1158015611b3a573d5f803e3d5ffd5b505050505f8273ffffffffffffffffffffffffffffffffffffffff1663d0c93a7c6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611b88573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611bac91906133fd565b9050600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff168c6040518363ffffffff1660e01b8152600401611c2b9291906131a1565b6020604051808303815f875af1158015611c47573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611c6b91906131f2565b50611c82306b019d971e4fe8401e74000000611549565b3073ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166b019d971e4fe8401e740000006040518363ffffffff1660e01b8152600401611cea9291906131a1565b6020604051808303815f875af1158015611d06573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611d2a91906131f2565b505f6040518061016001604052808b73ffffffffffffffffffffffffffffffffffffffff1681526020018a73ffffffffffffffffffffffffffffffffffffffff168152602001610bb862ffffff16815260200183847ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff27618611daa9190613428565b611db49190613490565b60020b815260200183847ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff27618611de8906134cc565b611df29190613428565b611dfc9190613490565b60020b81526020013073ffffffffffffffffffffffffffffffffffffffff168c73ffffffffffffffffffffffffffffffffffffffff1614611e3d578c611e4b565b6b019d971e4fe8401e740000005b81526020013073ffffffffffffffffffffffffffffffffffffffff168b73ffffffffffffffffffffffffffffffffffffffff1614611e89578c611e97565b6b019d971e4fe8401e740000005b81526020015f81526020015f81526020013073ffffffffffffffffffffffffffffffffffffffff168152602001428152509050600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166388316456826040518263ffffffff1660e01b8152600401611f24919061360f565b6080604051808303815f875af1158015611f40573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611f649190613653565b809850819950829a50839b5050505050876008819055505050505093509350935093565b5f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603611ff8575f6040517fe602df05000000000000000000000000000000000000000000000000000000008152600401611fef9190612c8d565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612068575f6040517f94280d6200000000000000000000000000000000000000000000000000000000815260040161205f9190612c8d565b60405180910390fd5b8160015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508015612151578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161214891906126f9565b60405180910390a35b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036121a7578060025f82825461219b9190612ebd565b92505081905550612275565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015612230578381836040517fe450d38c0000000000000000000000000000000000000000000000000000000081526004016122279392919061316c565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036122bc578060025f8282540392505081905550612306565b805f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161236391906126f9565b60405180910390a3505050565b5f808290505f5b84518110156123b9576123a482868381518110612397576123966136b7565b5b60200260200101516123c4565b915080806123b1906136e4565b915050612377565b508091505092915050565b5f8183106123db576123d682846123ee565b6123e6565b6123e583836123ee565b5b905092915050565b5f825f528160205260405f20905092915050565b5f81519050919050565b5f82825260208201905092915050565b5f5b8381101561243957808201518184015260208101905061241e565b5f8484015250505050565b5f601f19601f8301169050919050565b5f61245e82612402565b612468818561240c565b935061247881856020860161241c565b61248181612444565b840191505092915050565b5f6020820190508181035f8301526124a48184612454565b905092915050565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6124dd826124b4565b9050919050565b6124ed816124d3565b81146124f7575f80fd5b50565b5f81359050612508816124e4565b92915050565b5f819050919050565b6125208161250e565b811461252a575f80fd5b50565b5f8135905061253b81612517565b92915050565b5f8060408385031215612557576125566124ac565b5b5f612564858286016124fa565b92505060206125758582860161252d565b9150509250929050565b5f8115159050919050565b6125938161257f565b82525050565b5f6020820190506125ac5f83018461258a565b92915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f8401126125d3576125d26125b2565b5b8235905067ffffffffffffffff8111156125f0576125ef6125b6565b5b60208301915083600182028301111561260c5761260b6125ba565b5b9250929050565b5f805f805f6080868803121561262c5761262b6124ac565b5b5f612639888289016124fa565b955050602061264a888289016124fa565b945050604061265b8882890161252d565b935050606086013567ffffffffffffffff81111561267c5761267b6124b0565b5b612688888289016125be565b92509250509295509295909350565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6126cb81612697565b82525050565b5f6020820190506126e45f8301846126c2565b92915050565b6126f38161250e565b82525050565b5f60208201905061270c5f8301846126ea565b92915050565b5f805f60608486031215612729576127286124ac565b5b5f612736868287016124fa565b9350506020612747868287016124fa565b92505060406127588682870161252d565b9150509250925092565b5f60ff82169050919050565b61277781612762565b82525050565b5f6020820190506127905f83018461276e565b92915050565b5f602082840312156127ab576127aa6124ac565b5b5f6127b88482850161252d565b91505092915050565b5f6040820190506127d45f8301856126ea565b6127e160208301846126ea565b9392505050565b5f602082840312156127fd576127fc6124ac565b5b5f61280a848285016124fa565b91505092915050565b5f819050919050565b61282581612813565b82525050565b5f60208201905061283e5f83018461281c565b92915050565b5f8083601f840112612859576128586125b2565b5b8235905067ffffffffffffffff811115612876576128756125b6565b5b602083019150836020820283011115612892576128916125ba565b5b9250929050565b5f805f604084860312156128b0576128af6124ac565b5b5f6128bd8682870161252d565b935050602084013567ffffffffffffffff8111156128de576128dd6124b0565b5b6128ea86828701612844565b92509250509250925092565b5f806040838503121561290c5761290b6124ac565b5b5f612919858286016124fa565b925050602061292a858286016124fa565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061297857607f821691505b60208210810361298b5761298a612934565b5b50919050565b7f4d656d6520746f6b656e20616d6f756e74206d757374206265206772656174655f8201527f72207468616e207a65726f000000000000000000000000000000000000000000602082015250565b5f6129eb602b8361240c565b91506129f682612991565b604082019050919050565b5f6020820190508181035f830152612a18816129df565b9050919050565b7f4d656d6520746f6b656e20616d6f756e742065786365656473206d61782073755f8201527f70706c7900000000000000000000000000000000000000000000000000000000602082015250565b5f612a7960248361240c565b9150612a8482612a1f565b604082019050919050565b5f6020820190508181035f830152612aa681612a6d565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f612ae48261250e565b9150612aef8361250e565b9250828202612afd8161250e565b91508282048414831517612b1457612b13612aad565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f612b528261250e565b9150612b5d8361250e565b925082612b6d57612b6c612b1b565b5b828204905092915050565b612b818161250e565b82525050565b612b90816124d3565b82525050565b5f6fffffffffffffffffffffffffffffffff82169050919050565b612bba81612b96565b82525050565b608082015f820151612bd45f850182612b78565b506020820151612be76020850182612b87565b506040820151612bfa6040850182612bb1565b506060820151612c0d6060850182612bb1565b50505050565b5f608082019050612c265f830184612bc0565b92915050565b5f81519050612c3a81612517565b92915050565b5f8060408385031215612c5657612c556124ac565b5b5f612c6385828601612c2c565b9250506020612c7485828601612c2c565b9150509250929050565b612c87816124d3565b82525050565b5f602082019050612ca05f830184612c7e565b92915050565b5f60208284031215612cbb57612cba6124ac565b5b5f612cc884828501612c2c565b91505092915050565b7f46756e6420616d6f756e74206d7573742062652067726561746572207468616e5f8201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b5f612d2b60258361240c565b9150612d3682612cd1565b604082019050919050565b5f6020820190508181035f830152612d5881612d1f565b9050919050565b7f46756e6420616d6f756e7420657863656564732066756e64207468726573686f5f8201527f6c64000000000000000000000000000000000000000000000000000000000000602082015250565b5f612db960228361240c565b9150612dc482612d5f565b604082019050919050565b5f6020820190508181035f830152612de681612dad565b9050919050565b7f46756e6472616973696e672068617320656e64656400000000000000000000005f82015250565b5f612e2160158361240c565b9150612e2c82612ded565b602082019050919050565b5f6020820190508181035f830152612e4e81612e15565b9050919050565b7f416d6f756e742073686f756c642062652067726561746572207468616e2030005f82015250565b5f612e89601f8361240c565b9150612e9482612e55565b602082019050919050565b5f6020820190508181035f830152612eb681612e7d565b9050919050565b5f612ec78261250e565b9150612ed28361250e565b9250828201905080821115612eea57612ee9612aad565b5b92915050565b7f46756e64656420616d6f756e74206578636565647320746172676574207468725f8201527f6573686f6c640000000000000000000000000000000000000000000000000000602082015250565b5f612f4a60268361240c565b9150612f5582612ef0565b604082019050919050565b5f6020820190508181035f830152612f7781612f3e565b9050919050565b5f8160601b9050919050565b5f612f9482612f7e565b9050919050565b5f612fa582612f8a565b9050919050565b612fbd612fb8826124d3565b612f9b565b82525050565b5f819050919050565b612fdd612fd88261250e565b612fc3565b82525050565b5f612fee8285612fac565b601482019150612ffe8284612fcc565b6020820191508190509392505050565b7f4e6f742077686974656c697374656400000000000000000000000000000000005f82015250565b5f613042600f8361240c565b915061304d8261300e565b602082019050919050565b5f6020820190508181035f83015261306f81613036565b9050919050565b7f496e636f7272656374204554482076616c75652073656e7400000000000000005f82015250565b5f6130aa60188361240c565b91506130b582613076565b602082019050919050565b5f6020820190508181035f8301526130d78161309e565b9050919050565b7f416d6f756e74206f66206d656d6520746f6b656e7320746f2072657475726e205f8201527f6d7573742062652067726561746572207468616e203000000000000000000000602082015250565b5f61313860368361240c565b9150613143826130de565b604082019050919050565b5f6020820190508181035f8301526131658161312c565b9050919050565b5f60608201905061317f5f830186612c7e565b61318c60208301856126ea565b61319960408301846126ea565b949350505050565b5f6040820190506131b45f830185612c7e565b6131c160208301846126ea565b9392505050565b6131d18161257f565b81146131db575f80fd5b50565b5f815190506131ec816131c8565b92915050565b5f60208284031215613207576132066124ac565b5b5f613214848285016131de565b91505092915050565b5f819050919050565b5f61ffff82169050919050565b5f819050919050565b5f61325661325161324c8461321d565b613233565b613226565b9050919050565b6132668161323c565b82525050565b5f60808201905061327f5f830187612c7e565b61328c60208301866126ea565b6132996040830185612c7e565b6132a6606083018461325d565b95945050505050565b5f6060820190506132c25f830186612c7e565b6132cf60208301856126ea565b6132dc6040830184612c7e565b949350505050565b5f819050919050565b5f62ffffff82169050919050565b5f61331561331061330b846132e4565b613233565b6132ed565b9050919050565b613325816132fb565b82525050565b5f60608201905061333e5f830186612c7e565b61334b6020830185612c7e565b613358604083018461331c565b949350505050565b5f8151905061336e816124e4565b92915050565b5f60208284031215613389576133886124ac565b5b5f61339684828501613360565b91505092915050565b6133a8816124b4565b82525050565b5f6020820190506133c15f83018461339f565b92915050565b5f8160020b9050919050565b6133dc816133c7565b81146133e6575f80fd5b50565b5f815190506133f7816133d3565b92915050565b5f60208284031215613412576134116124ac565b5b5f61341f848285016133e9565b91505092915050565b5f613432826133c7565b915061343d836133c7565b92508261344d5761344c612b1b565b5b60015f0383147fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8000008314161561348557613484612aad565b5b828205905092915050565b5f61349a826133c7565b91506134a5836133c7565b92508282026134b3816133c7565b91508082146134c5576134c4612aad565b5b5092915050565b5f6134d6826133c7565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff800000820361350857613507612aad565b5b815f039050919050565b61351b816132ed565b82525050565b61352a816133c7565b82525050565b61016082015f8201516135455f850182612b87565b5060208201516135586020850182612b87565b50604082015161356b6040850182613512565b50606082015161357e6060850182613521565b5060808201516135916080850182613521565b5060a08201516135a460a0850182612b78565b5060c08201516135b760c0850182612b78565b5060e08201516135ca60e0850182612b78565b506101008201516135df610100850182612b78565b506101208201516135f4610120850182612b87565b50610140820151613609610140850182612b78565b50505050565b5f610160820190506136235f830184613530565b92915050565b61363281612b96565b811461363c575f80fd5b50565b5f8151905061364d81613629565b92915050565b5f805f806080858703121561366b5761366a6124ac565b5b5f61367887828801612c2c565b94505060206136898782880161363f565b935050604061369a87828801612c2c565b92505060606136ab87828801612c2c565b91505092959194509250565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f6136ee8261250e565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036137205761371f612aad565b5b60018201905091905056fea2646970667358221220ad19169ce274ba987c1fc7a95bdc2bf7b7aa138631a469dd22916db96075006264736f6c6343000814003300000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000e000000000000000000000000000000000000000000000000000018af0f16504f3000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008657177657177657100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000057265717271000000000000000000000000000000000000000000000000000000