61016060405234801562000011575f80fd5b506040518060400160405280600881526020017f52656e7469626c65000000000000000000000000000000000000000000000000815250806040518060400160405280600181526020017f31000000000000000000000000000000000000000000000000000000000000008152506040518060400160405280600881526020017f52656e7469626c650000000000000000000000000000000000000000000000008152506040518060400160405280600381526020017f524e4200000000000000000000000000000000000000000000000000000000008152508160039081620000fc919062001308565b5080600490816200010e919062001308565b505050620001276005836200020760201b90919060201c565b6101208181525050620001456006826200020760201b90919060201c565b6101408181525050818051906020012060e08181525050808051906020012061010081815250504660a08181525050620001846200025c60201b60201c565b608081815250503073ffffffffffffffffffffffffffffffffffffffff1660c08173ffffffffffffffffffffffffffffffffffffffff16815250505050506200020133620001d7620002b860201b60201c565b600a620001e5919062001575565b62989680620001f59190620015c5565b620002c060201b60201c565b62001ad7565b5f6020835110156200022c5762000224836200034a60201b60201c565b905062000256565b826200023e83620003b460201b60201c565b5f0190816200024e919062001308565b5060ff5f1b90505b92915050565b5f7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60e0516101005146306040516020016200029d9594939291906200167d565b60405160208183030381529060405280519060200120905090565b5f6012905090565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362000333575f6040517fec442f050000000000000000000000000000000000000000000000000000000081526004016200032a9190620016d8565b60405180910390fd5b620003465f8383620003bd60201b60201c565b5050565b5f80829050601f815111156200039957826040517f305a27a90000000000000000000000000000000000000000000000000000000081526004016200039091906200177d565b60405180910390fd5b805181620003a790620017ce565b5f1c175f1b915050919050565b5f819050919050565b620003d0838383620003d560201b60201c565b505050565b620003e8838383620004a760201b60201c565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036200048f575f6200042d620006cb60201b60201c565b90505f62000440620006d460201b60201c565b9050808211156200048c5781816040517f1cb15d26000000000000000000000000000000000000000000000000000000008152600401620004839291906200183d565b60405180910390fd5b50505b620004a2838383620006f760201b60201c565b505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603620004fb578060025f828254620004ee919062001868565b92505081905550620005cc565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490508181101562000587578381836040517fe450d38c0000000000000000000000000000000000000000000000000000000081526004016200057e93929190620018a2565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362000615578060025f82825403925050819055506200065f565b805f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051620006be9190620018dd565b60405180910390a3505050565b5f600254905090565b5f79ffffffffffffffffffffffffffffffffffffffffffffffffffff8016905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036200075d576200075a600a620007fb60201b62000dc7176200074e846200081260201b60201c565b6200088260201b60201c565b50505b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603620007c357620007c0600a620008d160201b62000ddc17620007b4846200081260201b60201c565b6200088260201b60201c565b50505b620007f6620007d884620008e860201b60201c565b620007e984620008e860201b60201c565b836200094d60201b60201c565b505050565b5f81836200080a91906200191d565b905092915050565b5f79ffffffffffffffffffffffffffffffffffffffffffffffffffff80168211156200087a5760d0826040517f6dfcc65000000000000000000000000000000000000000000000000000000000815260040162000871929190620019b2565b60405180910390fd5b819050919050565b5f80620008c56200089862000bf760201b60201c565b620008b4620008ad8862000c0d60201b60201c565b868860201c565b8762000c7b60201b9092919060201c565b91509150935093915050565b5f8183620008e09190620019dd565b905092915050565b5f60085f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156200098957505f81115b1562000bf2575f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161462000ac0575f8062000a2f60095f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20620008d160201b62000ddc1762000a23866200081260201b60201c565b6200088260201b60201c565b79ffffffffffffffffffffffffffffffffffffffffffffffffffff16915079ffffffffffffffffffffffffffffffffffffffffffffffffffff1691508473ffffffffffffffffffffffffffffffffffffffff167fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a724838360405162000ab59291906200183d565b60405180910390a250505b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161462000bf1575f8062000b6060095f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20620007fb60201b62000dc71762000b54866200081260201b60201c565b6200088260201b60201c565b79ffffffffffffffffffffffffffffffffffffffffffffffffffff16915079ffffffffffffffffffffffffffffffffffffffffffffffffffff1691508373ffffffffffffffffffffffffffffffffffffffff167fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a724838360405162000be69291906200183d565b60405180910390a250505b5b505050565b5f62000c0862000c9e60201b60201c565b905090565b5f80825f018054905090505f811462000c715762000c42835f0160018362000c36919062001a31565b62000cb560201b60201c565b5f0160069054906101000a900479ffffffffffffffffffffffffffffffffffffffffffffffffffff1662000c73565b5f5b915050919050565b5f8062000c92855f01858562000cc760201b60201c565b91509150935093915050565b5f62000cb0436200104860201b60201c565b905090565b5f825f528160205f2001905092915050565b5f805f858054905090505f81111562000f60575f62000cfb8760018462000cef919062001a31565b62000cb560201b60201c565b6040518060400160405290815f82015f9054906101000a900465ffffffffffff1665ffffffffffff1665ffffffffffff1681526020015f820160069054906101000a900479ffffffffffffffffffffffffffffffffffffffffffffffffffff1679ffffffffffffffffffffffffffffffffffffffffffffffffffff1679ffffffffffffffffffffffffffffffffffffffffffffffffffff168152505090508565ffffffffffff16815f015165ffffffffffff16111562000de7576040517f2520601d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8565ffffffffffff16815f015165ffffffffffff160362000e75578462000e238860018562000e17919062001a31565b62000cb560201b60201c565b5f0160066101000a81548179ffffffffffffffffffffffffffffffffffffffffffffffffffff021916908379ffffffffffffffffffffffffffffffffffffffffffffffffffff16021790555062000f4e565b8660405180604001604052808865ffffffffffff1681526020018779ffffffffffffffffffffffffffffffffffffffffffffffffffff16815250908060018154018082558091505060019003905f5260205f20015f909190919091505f820151815f015f6101000a81548165ffffffffffff021916908365ffffffffffff1602179055506020820151815f0160066101000a81548179ffffffffffffffffffffffffffffffffffffffffffffffffffff021916908379ffffffffffffffffffffffffffffffffffffffffffffffffffff16021790555050505b80602001518593509350505062001040565b8560405180604001604052808765ffffffffffff1681526020018679ffffffffffffffffffffffffffffffffffffffffffffffffffff16815250908060018154018082558091505060019003905f5260205f20015f909190919091505f820151815f015f6101000a81548165ffffffffffff021916908365ffffffffffff1602179055506020820151815f0160066101000a81548179ffffffffffffffffffffffffffffffffffffffffffffffffffff021916908379ffffffffffffffffffffffffffffffffffffffffffffffffffff16021790555050505f8492509250505b935093915050565b5f65ffffffffffff80168211156200109c576030826040517f6dfcc6500000000000000000000000000000000000000000000000000000000081526004016200109392919062001aac565b60405180910390fd5b819050919050565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806200112057607f821691505b602082108103620011365762001135620010db565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f600883026200119a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826200115d565b620011a686836200115d565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f620011f0620011ea620011e484620011be565b620011c7565b620011be565b9050919050565b5f819050919050565b6200120b83620011d0565b620012236200121a82620011f7565b84845462001169565b825550505050565b5f90565b620012396200122b565b6200124681848462001200565b505050565b5b818110156200126d57620012615f826200122f565b6001810190506200124c565b5050565b601f821115620012bc5762001286816200113c565b62001291846200114e565b81016020851015620012a1578190505b620012b9620012b0856200114e565b8301826200124b565b50505b505050565b5f82821c905092915050565b5f620012de5f1984600802620012c1565b1980831691505092915050565b5f620012f88383620012cd565b9150826002028217905092915050565b6200131382620010a4565b67ffffffffffffffff8111156200132f576200132e620010ae565b5b6200133b825462001108565b6200134882828562001271565b5f60209050601f8311600181146200137e575f841562001369578287015190505b620013758582620012eb565b865550620013e4565b601f1984166200138e866200113c565b5f5b82811015620013b75784890151825560018201915060208501945060208101905062001390565b86831015620013d75784890151620013d3601f891682620012cd565b8355505b6001600288020188555050505b505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b600185111562001476578086048111156200144e576200144d620013ec565b5b60018516156200145e5780820291505b80810290506200146e8562001419565b94506200142e565b94509492505050565b5f8262001490576001905062001562565b816200149f575f905062001562565b8160018114620014b85760028114620014c357620014f9565b600191505062001562565b60ff841115620014d857620014d7620013ec565b5b8360020a915084821115620014f257620014f1620013ec565b5b5062001562565b5060208310610133831016604e8410600b8410161715620015335782820a9050838111156200152d576200152c620013ec565b5b62001562565b62001542848484600162001425565b925090508184048111156200155c576200155b620013ec565b5b81810290505b9392505050565b5f60ff82169050919050565b5f6200158182620011be565b91506200158e8362001569565b9250620015bd7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846200147f565b905092915050565b5f620015d182620011be565b9150620015de83620011be565b9250828202620015ee81620011be565b91508282048414831517620016085762001607620013ec565b5b5092915050565b5f819050919050565b62001623816200160f565b82525050565b6200163481620011be565b82525050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f62001665826200163a565b9050919050565b620016778162001659565b82525050565b5f60a082019050620016925f83018862001618565b620016a1602083018762001618565b620016b0604083018662001618565b620016bf606083018562001629565b620016ce60808301846200166c565b9695505050505050565b5f602082019050620016ed5f8301846200166c565b92915050565b5f82825260208201905092915050565b5f5b838110156200172257808201518184015260208101905062001705565b5f8484015250505050565b5f601f19601f8301169050919050565b5f6200174982620010a4565b620017558185620016f3565b93506200176781856020860162001703565b62001772816200172d565b840191505092915050565b5f6020820190508181035f8301526200179781846200173d565b905092915050565b5f81519050919050565b5f819050602082019050919050565b5f620017c582516200160f565b80915050919050565b5f620017da826200179f565b82620017e684620017a9565b9050620017f381620017b8565b925060208210156200183657620018317fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff836020036008026200115d565b831692505b5050919050565b5f604082019050620018525f83018562001629565b62001861602083018462001629565b9392505050565b5f6200187482620011be565b91506200188183620011be565b92508282019050808211156200189c576200189b620013ec565b5b92915050565b5f606082019050620018b75f8301866200166c565b620018c6602083018562001629565b620018d5604083018462001629565b949350505050565b5f602082019050620018f25f83018462001629565b92915050565b5f79ffffffffffffffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6200192982620018f8565b91506200193683620018f8565b9250828201905079ffffffffffffffffffffffffffffffffffffffffffffffffffff8111156200196b576200196a620013ec565b5b92915050565b5f819050919050565b5f6200199a620019946200198e8462001971565b620011c7565b62001569565b9050919050565b620019ac816200197a565b82525050565b5f604082019050620019c75f830185620019a1565b620019d6602083018462001629565b9392505050565b5f620019e982620018f8565b9150620019f683620018f8565b9250828203905079ffffffffffffffffffffffffffffffffffffffffffffffffffff81111562001a2b5762001a2a620013ec565b5b92915050565b5f62001a3d82620011be565b915062001a4a83620011be565b925082820390508181111562001a655762001a64620013ec565b5b92915050565b5f819050919050565b5f62001a9462001a8e62001a888462001a6b565b620011c7565b62001569565b9050919050565b62001aa68162001a74565b82525050565b5f60408201905062001ac15f83018562001a9b565b62001ad0602083018462001629565b9392505050565b60805160a05160c05160e05161010051610120516101405161381f62001b295f395f6113d001525f61139501525f6117d801525f6117b701525f610f8f01525f610fe501525f61100e015261381f5ff3fe608060405234801561000f575f80fd5b5060043610610171575f3560e01c806370a08231116100dc57806395d89b4111610095578063c3cda5201161006f578063c3cda5201461049f578063d505accf146104bb578063dd62ed3e146104d7578063f1127ed81461050757610171565b806395d89b41146104215780639ab24eb01461043f578063a9059cbb1461046f57610171565b806370a082311461033357806379cc6790146103635780637ecebe001461037f57806384b0196e146103af5780638e539e8c146103d357806391ddadf41461040357610171565b80633a46b1a81161012e5780633a46b1a81461024d57806342966c681461027d5780634bf5d7e914610299578063587cde1e146102b75780635c19a95c146102e75780636fcfff451461030357610171565b806306fdde0314610175578063095ea7b31461019357806318160ddd146101c357806323b872dd146101e1578063313ce567146102115780633644e5151461022f575b5f80fd5b61017d610537565b60405161018a9190612b42565b60405180910390f35b6101ad60048036038101906101a89190612bf3565b6105c7565b6040516101ba9190612c4b565b60405180910390f35b6101cb6105e9565b6040516101d89190612c73565b60405180910390f35b6101fb60048036038101906101f69190612c8c565b6105f2565b6040516102089190612c4b565b60405180910390f35b610219610620565b6040516102269190612cf7565b60405180910390f35b610237610628565b6040516102449190612d28565b60405180910390f35b61026760048036038101906102629190612bf3565b610636565b6040516102749190612c73565b60405180910390f35b61029760048036038101906102929190612d41565b61070c565b005b6102a1610720565b6040516102ae9190612b42565b60405180910390f35b6102d160048036038101906102cc9190612d6c565b6107b4565b6040516102de9190612da6565b60405180910390f35b61030160048036038101906102fc9190612d6c565b610819565b005b61031d60048036038101906103189190612d6c565b610832565b60405161032a9190612ddd565b60405180910390f35b61034d60048036038101906103489190612d6c565b610843565b60405161035a9190612c73565b60405180910390f35b61037d60048036038101906103789190612bf3565b610888565b005b61039960048036038101906103949190612d6c565b6108a8565b6040516103a69190612c73565b60405180910390f35b6103b76108b9565b6040516103ca9796959493929190612ee7565b60405180910390f35b6103ed60048036038101906103e89190612d41565b61095e565b6040516103fa9190612c73565b60405180910390f35b61040b6109f8565b6040516104189190612f89565b60405180910390f35b610429610a06565b6040516104369190612b42565b60405180910390f35b61045960048036038101906104549190612d6c565b610a96565b6040516104669190612c73565b60405180910390f35b61048960048036038101906104849190612bf3565b610aff565b6040516104969190612c4b565b60405180910390f35b6104b960048036038101906104b49190612ff6565b610b21565b005b6104d560048036038101906104d0919061307f565b610be6565b005b6104f160048036038101906104ec919061311c565b610d2b565b6040516104fe9190612c73565b60405180910390f35b610521600480360381019061051c9190613184565b610dad565b60405161052e9190613232565b60405180910390f35b60606003805461054690613278565b80601f016020809104026020016040519081016040528092919081815260200182805461057290613278565b80156105bd5780601f10610594576101008083540402835291602001916105bd565b820191905f5260205f20905b8154815290600101906020018083116105a057829003601f168201915b5050505050905090565b5f806105d1610df1565b90506105de818585610df8565b600191505092915050565b5f600254905090565b5f806105fc610df1565b9050610609858285610e0a565b610614858585610e9c565b60019150509392505050565b5f6012905090565b5f610631610f8c565b905090565b5f806106406109f8565b90508065ffffffffffff1683106106905782816040517fecd3f81e0000000000000000000000000000000000000000000000000000000081526004016106879291906132a8565b60405180910390fd5b6106e761069c84611042565b60095f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2061109b90919063ffffffff16565b79ffffffffffffffffffffffffffffffffffffffffffffffffffff1691505092915050565b61071d610717610df1565b82611188565b50565b606061072a611207565b65ffffffffffff1661073a6109f8565b65ffffffffffff1614610779576040517f6ff0714000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040518060400160405280601d81526020017f6d6f64653d626c6f636b6e756d6265722666726f6d3d64656661756c74000000815250905090565b5f60085f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b5f610822610df1565b905061082e8183611216565b5050565b5f61083c82611326565b9050919050565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b61089a82610894610df1565b83610e0a565b6108a48282611188565b5050565b5f6108b28261137b565b9050919050565b5f6060805f805f60606108ca61138c565b6108d26113c7565b46305f801b5f67ffffffffffffffff8111156108f1576108f06132cf565b5b60405190808252806020026020018201604052801561091f5781602001602082028036833780820191505090505b507f0f00000000000000000000000000000000000000000000000000000000000000959493929190965096509650965096509650965090919293949596565b5f806109686109f8565b90508065ffffffffffff1683106109b85782816040517fecd3f81e0000000000000000000000000000000000000000000000000000000081526004016109af9291906132a8565b60405180910390fd5b6109d46109c484611042565b600a61109b90919063ffffffff16565b79ffffffffffffffffffffffffffffffffffffffffffffffffffff16915050919050565b5f610a01611207565b905090565b606060048054610a1590613278565b80601f0160208091040260200160405190810160405280929190818152602001828054610a4190613278565b8015610a8c5780601f10610a6357610100808354040283529160200191610a8c565b820191905f5260205f20905b815481529060010190602001808311610a6f57829003601f168201915b5050505050905090565b5f610adc60095f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20611402565b79ffffffffffffffffffffffffffffffffffffffffffffffffffff169050919050565b5f80610b09610df1565b9050610b16818585610e9c565b600191505092915050565b83421115610b6657836040517f4683af0e000000000000000000000000000000000000000000000000000000008152600401610b5d9190612c73565b60405180910390fd5b5f610bc7610bbf7fe48329057bfd03d55e49b547132e39cffd9c1820ad7b9d4c5307691425d15adf898989604051602001610ba494939291906132fc565b60405160208183030381529060405280519060200120611464565b85858561147d565b9050610bd381876114ab565b610bdd8188611216565b50505050505050565b83421115610c2b57836040517f62791302000000000000000000000000000000000000000000000000000000008152600401610c229190612c73565b60405180910390fd5b5f7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9888888610c598c611502565b89604051602001610c6f9695949392919061333f565b6040516020818303038152906040528051906020012090505f610c9182611464565b90505f610ca08287878761147d565b90508973ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610d1457808a6040517f4b800e46000000000000000000000000000000000000000000000000000000008152600401610d0b92919061339e565b60405180910390fd5b610d1f8a8a8a610df8565b50505050505050505050565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b610db5612a7c565b610dbf8383611555565b905092915050565b5f8183610dd491906133f2565b905092915050565b5f8183610de9919061343f565b905092915050565b5f33905090565b610e0583838360016115b4565b505050565b5f610e158484610d2b565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610e965781811015610e87578281836040517ffb8f41b2000000000000000000000000000000000000000000000000000000008152600401610e7e9392919061348c565b60405180910390fd5b610e9584848484035f6115b4565b5b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610f0c575f6040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600401610f039190612da6565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610f7c575f6040517fec442f05000000000000000000000000000000000000000000000000000000008152600401610f739190612da6565b60405180910390fd5b610f87838383611783565b505050565b5f7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff1614801561100757507f000000000000000000000000000000000000000000000000000000000000000046145b15611034577f0000000000000000000000000000000000000000000000000000000000000000905061103f565b61103c611793565b90505b90565b5f65ffffffffffff8016821115611093576030826040517f6dfcc65000000000000000000000000000000000000000000000000000000000815260040161108a929190613503565b60405180910390fd5b819050919050565b5f80835f018054905090505f80829050600583111561111c575f6110be84611828565b846110c9919061352a565b90506110d7875f018261191e565b5f015f9054906101000a900465ffffffffffff1665ffffffffffff168665ffffffffffff16101561110a5780915061111a565b600181611117919061355d565b92505b505b5f61112b875f01878585611930565b90505f811461117a5761114c875f01600183611147919061352a565b61191e565b5f0160069054906101000a900479ffffffffffffffffffffffffffffffffffffffffffffffffffff1661117c565b5f5b94505050505092915050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036111f8575f6040517f96c6fd1e0000000000000000000000000000000000000000000000000000000081526004016111ef9190612da6565b60405180910390fd5b611203825f83611783565b5050565b5f61121143611042565b905090565b5f611220836107b4565b90508160085f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f3134e8a2e6d97e929a7e54011ea5485d7d196dd5f0ba4d4ef95803e8e3fc257f60405160405180910390a4611321818361131c866119a5565b6119b6565b505050565b5f61137461136f60095f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20611c26565b611c35565b9050919050565b5f61138582611c8c565b9050919050565b60606113c260057f0000000000000000000000000000000000000000000000000000000000000000611cd290919063ffffffff16565b905090565b60606113fd60067f0000000000000000000000000000000000000000000000000000000000000000611cd290919063ffffffff16565b905090565b5f80825f018054905090505f811461145a5761142c835f01600183611427919061352a565b61191e565b5f0160069054906101000a900479ffffffffffffffffffffffffffffffffffffffffffffffffffff1661145c565b5f5b915050919050565b5f611476611470610f8c565b83611d7f565b9050919050565b5f805f8061148d88888888611dbf565b92509250925061149d8282611ea6565b829350505050949350505050565b5f6114b583611502565b90508082146114fd5782816040517f752d88c00000000000000000000000000000000000000000000000000000000081526004016114f4929190613590565b60405180910390fd5b505050565b5f60075f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f815480929190600101919050559050919050565b61155d612a7c565b6115ac8260095f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2061200890919063ffffffff16565b905092915050565b5f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603611624575f6040517fe602df0500000000000000000000000000000000000000000000000000000000815260040161161b9190612da6565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611694575f6040517f94280d6200000000000000000000000000000000000000000000000000000000815260040161168b9190612da6565b60405180910390fd5b8160015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550801561177d578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516117749190612c73565b60405180910390a35b50505050565b61178e8383836120d7565b505050565b5f7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f7f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000463060405160200161180d9594939291906135b7565b60405160208183030381529060405280519060200120905090565b5f808203611838575f9050611919565b5f600161184484612185565b901c6001901b9050600181848161185e5761185d613608565b5b048201901c9050600181848161187757611876613608565b5b048201901c905060018184816118905761188f613608565b5b048201901c905060018184816118a9576118a8613608565b5b048201901c905060018184816118c2576118c1613608565b5b048201901c905060018184816118db576118da613608565b5b048201901c905060018184816118f4576118f3613608565b5b048201901c90506119158182858161190f5761190e613608565b5b0461225c565b9150505b919050565b5f825f528160205f2001905092915050565b5f5b8183101561199a575f6119458484612274565b90508465ffffffffffff1661195a878361191e565b5f015f9054906101000a900465ffffffffffff1665ffffffffffff16111561198457809250611994565b600181611991919061355d565b93505b50611932565b819050949350505050565b5f6119af82610843565b9050919050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156119f157505f81115b15611c21575f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614611b0b575f80611a7c60095f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20610ddc611a7786612299565b612306565b79ffffffffffffffffffffffffffffffffffffffffffffffffffff16915079ffffffffffffffffffffffffffffffffffffffffffffffffffff1691508473ffffffffffffffffffffffffffffffffffffffff167fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a7248383604051611b00929190613635565b60405180910390a250505b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614611c20575f80611b9160095f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20610dc7611b8c86612299565b612306565b79ffffffffffffffffffffffffffffffffffffffffffffffffffff16915079ffffffffffffffffffffffffffffffffffffffffffffffffffff1691508373ffffffffffffffffffffffffffffffffffffffff167fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a7248383604051611c15929190613635565b60405180910390a250505b5b505050565b5f815f01805490509050919050565b5f63ffffffff8016821115611c84576020826040517f6dfcc650000000000000000000000000000000000000000000000000000000008152600401611c7b929190613695565b60405180910390fd5b819050919050565b5f60075f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b606060ff5f1b8314611cee57611ce783612345565b9050611d79565b818054611cfa90613278565b80601f0160208091040260200160405190810160405280929190818152602001828054611d2690613278565b8015611d715780601f10611d4857610100808354040283529160200191611d71565b820191905f5260205f20905b815481529060010190602001808311611d5457829003601f168201915b505050505090505b92915050565b5f6040517f190100000000000000000000000000000000000000000000000000000000000081528360028201528260228201526042812091505092915050565b5f805f7f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0845f1c1115611dfb575f600385925092509250611e9c565b5f6001888888886040515f8152602001604052604051611e1e94939291906136bc565b6020604051602081039080840390855afa158015611e3e573d5f803e3d5ffd5b5050506020604051035190505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611e8f575f60015f801b93509350935050611e9c565b805f805f1b935093509350505b9450945094915050565b5f6003811115611eb957611eb86136ff565b5b826003811115611ecc57611ecb6136ff565b5b03156120045760016003811115611ee657611ee56136ff565b5b826003811115611ef957611ef86136ff565b5b03611f30576040517ff645eedf00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60026003811115611f4457611f436136ff565b5b826003811115611f5757611f566136ff565b5b03611f9b57805f1c6040517ffce698f7000000000000000000000000000000000000000000000000000000008152600401611f929190612c73565b60405180910390fd5b600380811115611fae57611fad6136ff565b5b826003811115611fc157611fc06136ff565b5b0361200357806040517fd78bce0c000000000000000000000000000000000000000000000000000000008152600401611ffa9190612d28565b60405180910390fd5b5b5050565b612010612a7c565b825f018263ffffffff168154811061202b5761202a61372c565b5b905f5260205f20016040518060400160405290815f82015f9054906101000a900465ffffffffffff1665ffffffffffff1665ffffffffffff1681526020015f820160069054906101000a900479ffffffffffffffffffffffffffffffffffffffffffffffffffff1679ffffffffffffffffffffffffffffffffffffffffffffffffffff1679ffffffffffffffffffffffffffffffffffffffffffffffffffff1681525050905092915050565b6120e28383836123b7565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612175575f61211e6105e9565b90505f6121296125d0565b9050808211156121725781816040517f1cb15d26000000000000000000000000000000000000000000000000000000008152600401612169929190613635565b60405180910390fd5b50505b6121808383836125f3565b505050565b5f805f90505f608084901c11156121a457608083901c92506080810190505b5f604084901c11156121be57604083901c92506040810190505b5f602084901c11156121d857602083901c92506020810190505b5f601084901c11156121f257601083901c92506010810190505b5f600884901c111561220c57600883901c92506008810190505b5f600484901c111561222657600483901c92506004810190505b5f600284901c111561224057600283901c92506002810190505b5f600184901c1115612253576001810190505b80915050919050565b5f81831061226a578161226c565b825b905092915050565b5f60028284186122849190613759565b828416612291919061355d565b905092915050565b5f79ffffffffffffffffffffffffffffffffffffffffffffffffffff80168211156122fe5760d0826040517f6dfcc6500000000000000000000000000000000000000000000000000000000081526004016122f59291906137c2565b60405180910390fd5b819050919050565b5f806123396123136109f8565b61232961231f88611402565b868863ffffffff16565b876126ab9092919063ffffffff16565b91509150935093915050565b60605f612351836126c6565b90505f602067ffffffffffffffff81111561236f5761236e6132cf565b5b6040519080825280601f01601f1916602001820160405280156123a15781602001600182028036833780820191505090505b5090508181528360208201528092505050919050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612407578060025f8282546123fb919061355d565b925050819055506124d5565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015612490578381836040517fe450d38c0000000000000000000000000000000000000000000000000000000081526004016124879392919061348c565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361251c578060025f8282540392505081905550612566565b805f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516125c39190612c73565b60405180910390a3505050565b5f79ffffffffffffffffffffffffffffffffffffffffffffffffffff8016905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361263f5761263c600a610dc761263784612299565b612306565b50505b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361268b57612688600a610ddc61268384612299565b612306565b50505b6126a6612697846107b4565b6126a0846107b4565b836119b6565b505050565b5f806126ba855f018585612714565b91509150935093915050565b5f8060ff835f1c169050601f81111561270b576040517fb3512b0c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80915050919050565b5f805f858054905090505f811115612994575f61273d87600184612738919061352a565b61191e565b6040518060400160405290815f82015f9054906101000a900465ffffffffffff1665ffffffffffff1665ffffffffffff1681526020015f820160069054906101000a900479ffffffffffffffffffffffffffffffffffffffffffffffffffff1679ffffffffffffffffffffffffffffffffffffffffffffffffffff1679ffffffffffffffffffffffffffffffffffffffffffffffffffff168152505090508565ffffffffffff16815f015165ffffffffffff161115612828576040517f2520601d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8565ffffffffffff16815f015165ffffffffffff16036128aa578461285988600185612854919061352a565b61191e565b5f0160066101000a81548179ffffffffffffffffffffffffffffffffffffffffffffffffffff021916908379ffffffffffffffffffffffffffffffffffffffffffffffffffff160217905550612983565b8660405180604001604052808865ffffffffffff1681526020018779ffffffffffffffffffffffffffffffffffffffffffffffffffff16815250908060018154018082558091505060019003905f5260205f20015f909190919091505f820151815f015f6101000a81548165ffffffffffff021916908365ffffffffffff1602179055506020820151815f0160066101000a81548179ffffffffffffffffffffffffffffffffffffffffffffffffffff021916908379ffffffffffffffffffffffffffffffffffffffffffffffffffff16021790555050505b806020015185935093505050612a74565b8560405180604001604052808765ffffffffffff1681526020018679ffffffffffffffffffffffffffffffffffffffffffffffffffff16815250908060018154018082558091505060019003905f5260205f20015f909190919091505f820151815f015f6101000a81548165ffffffffffff021916908365ffffffffffff1602179055506020820151815f0160066101000a81548179ffffffffffffffffffffffffffffffffffffffffffffffffffff021916908379ffffffffffffffffffffffffffffffffffffffffffffffffffff16021790555050505f8492509250505b935093915050565b60405180604001604052805f65ffffffffffff1681526020015f79ffffffffffffffffffffffffffffffffffffffffffffffffffff1681525090565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015612aef578082015181840152602081019050612ad4565b5f8484015250505050565b5f601f19601f8301169050919050565b5f612b1482612ab8565b612b1e8185612ac2565b9350612b2e818560208601612ad2565b612b3781612afa565b840191505092915050565b5f6020820190508181035f830152612b5a8184612b0a565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f612b8f82612b66565b9050919050565b612b9f81612b85565b8114612ba9575f80fd5b50565b5f81359050612bba81612b96565b92915050565b5f819050919050565b612bd281612bc0565b8114612bdc575f80fd5b50565b5f81359050612bed81612bc9565b92915050565b5f8060408385031215612c0957612c08612b62565b5b5f612c1685828601612bac565b9250506020612c2785828601612bdf565b9150509250929050565b5f8115159050919050565b612c4581612c31565b82525050565b5f602082019050612c5e5f830184612c3c565b92915050565b612c6d81612bc0565b82525050565b5f602082019050612c865f830184612c64565b92915050565b5f805f60608486031215612ca357612ca2612b62565b5b5f612cb086828701612bac565b9350506020612cc186828701612bac565b9250506040612cd286828701612bdf565b9150509250925092565b5f60ff82169050919050565b612cf181612cdc565b82525050565b5f602082019050612d0a5f830184612ce8565b92915050565b5f819050919050565b612d2281612d10565b82525050565b5f602082019050612d3b5f830184612d19565b92915050565b5f60208284031215612d5657612d55612b62565b5b5f612d6384828501612bdf565b91505092915050565b5f60208284031215612d8157612d80612b62565b5b5f612d8e84828501612bac565b91505092915050565b612da081612b85565b82525050565b5f602082019050612db95f830184612d97565b92915050565b5f63ffffffff82169050919050565b612dd781612dbf565b82525050565b5f602082019050612df05f830184612dce565b92915050565b5f7fff0000000000000000000000000000000000000000000000000000000000000082169050919050565b612e2a81612df6565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b612e6281612bc0565b82525050565b5f612e738383612e59565b60208301905092915050565b5f602082019050919050565b5f612e9582612e30565b612e9f8185612e3a565b9350612eaa83612e4a565b805f5b83811015612eda578151612ec18882612e68565b9750612ecc83612e7f565b925050600181019050612ead565b5085935050505092915050565b5f60e082019050612efa5f83018a612e21565b8181036020830152612f0c8189612b0a565b90508181036040830152612f208188612b0a565b9050612f2f6060830187612c64565b612f3c6080830186612d97565b612f4960a0830185612d19565b81810360c0830152612f5b8184612e8b565b905098975050505050505050565b5f65ffffffffffff82169050919050565b612f8381612f69565b82525050565b5f602082019050612f9c5f830184612f7a565b92915050565b612fab81612cdc565b8114612fb5575f80fd5b50565b5f81359050612fc681612fa2565b92915050565b612fd581612d10565b8114612fdf575f80fd5b50565b5f81359050612ff081612fcc565b92915050565b5f805f805f8060c087890312156130105761300f612b62565b5b5f61301d89828a01612bac565b965050602061302e89828a01612bdf565b955050604061303f89828a01612bdf565b945050606061305089828a01612fb8565b935050608061306189828a01612fe2565b92505060a061307289828a01612fe2565b9150509295509295509295565b5f805f805f805f60e0888a03121561309a57613099612b62565b5b5f6130a78a828b01612bac565b97505060206130b88a828b01612bac565b96505060406130c98a828b01612bdf565b95505060606130da8a828b01612bdf565b94505060806130eb8a828b01612fb8565b93505060a06130fc8a828b01612fe2565b92505060c061310d8a828b01612fe2565b91505092959891949750929550565b5f806040838503121561313257613131612b62565b5b5f61313f85828601612bac565b925050602061315085828601612bac565b9150509250929050565b61316381612dbf565b811461316d575f80fd5b50565b5f8135905061317e8161315a565b92915050565b5f806040838503121561319a57613199612b62565b5b5f6131a785828601612bac565b92505060206131b885828601613170565b9150509250929050565b6131cb81612f69565b82525050565b5f79ffffffffffffffffffffffffffffffffffffffffffffffffffff82169050919050565b6131ff816131d1565b82525050565b604082015f8201516132195f8501826131c2565b50602082015161322c60208501826131f6565b50505050565b5f6040820190506132455f830184613205565b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061328f57607f821691505b6020821081036132a2576132a161324b565b5b50919050565b5f6040820190506132bb5f830185612c64565b6132c86020830184612f7a565b9392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f60808201905061330f5f830187612d19565b61331c6020830186612d97565b6133296040830185612c64565b6133366060830184612c64565b95945050505050565b5f60c0820190506133525f830189612d19565b61335f6020830188612d97565b61336c6040830187612d97565b6133796060830186612c64565b6133866080830185612c64565b61339360a0830184612c64565b979650505050505050565b5f6040820190506133b15f830185612d97565b6133be6020830184612d97565b9392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6133fc826131d1565b9150613407836131d1565b9250828201905079ffffffffffffffffffffffffffffffffffffffffffffffffffff811115613439576134386133c5565b5b92915050565b5f613449826131d1565b9150613454836131d1565b9250828203905079ffffffffffffffffffffffffffffffffffffffffffffffffffff811115613486576134856133c5565b5b92915050565b5f60608201905061349f5f830186612d97565b6134ac6020830185612c64565b6134b96040830184612c64565b949350505050565b5f819050919050565b5f819050919050565b5f6134ed6134e86134e3846134c1565b6134ca565b612cdc565b9050919050565b6134fd816134d3565b82525050565b5f6040820190506135165f8301856134f4565b6135236020830184612c64565b9392505050565b5f61353482612bc0565b915061353f83612bc0565b9250828203905081811115613557576135566133c5565b5b92915050565b5f61356782612bc0565b915061357283612bc0565b925082820190508082111561358a576135896133c5565b5b92915050565b5f6040820190506135a35f830185612d97565b6135b06020830184612c64565b9392505050565b5f60a0820190506135ca5f830188612d19565b6135d76020830187612d19565b6135e46040830186612d19565b6135f16060830185612c64565b6135fe6080830184612d97565b9695505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6040820190506136485f830185612c64565b6136556020830184612c64565b9392505050565b5f819050919050565b5f61367f61367a6136758461365c565b6134ca565b612cdc565b9050919050565b61368f81613665565b82525050565b5f6040820190506136a85f830185613686565b6136b56020830184612c64565b9392505050565b5f6080820190506136cf5f830187612d19565b6136dc6020830186612ce8565b6136e96040830185612d19565b6136f66060830184612d19565b95945050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f61376382612bc0565b915061376e83612bc0565b92508261377e5761377d613608565b5b828204905092915050565b5f819050919050565b5f6137ac6137a76137a284613789565b6134ca565b612cdc565b9050919050565b6137bc81613792565b82525050565b5f6040820190506137d55f8301856137b3565b6137e26020830184612c64565b939250505056fea26469706673582212205f7d0af7c45e1edcf36d48ca3ffa8ad3de29ff72aba105f8fa6e694cbcf971f764736f6c63430008140033