6101606040523480156200001257600080fd5b5060405162003bf138038062003bf183398181016040528101906200003891906200084b565b6040518060400160405280601881526020017f50696b6120536175636520436f6d6d6f6e205368617265730000000000000000815250806040518060400160405280600181526020017f31000000000000000000000000000000000000000000000000000000000000008152506040518060400160405280601881526020017f50696b6120536175636520436f6d6d6f6e2053686172657300000000000000008152506040518060400160405280600481526020017f50494b4100000000000000000000000000000000000000000000000000000000815250816003908162000122919062000b0c565b50806004908162000134919062000b0c565b5050506200014d6006836200027860201b90919060201c565b61012081815250506200016b6007826200027860201b90919060201c565b6101408181525050818051906020012060e08181525050808051906020012061010081815250504660a08181525050620001aa620002d060201b60201c565b608081815250503073ffffffffffffffffffffffffffffffffffffffff1660c08173ffffffffffffffffffffffffffffffffffffffff1681525050505050620001fd6000801b836200032d60201b60201c565b50620002307f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a6826200032d60201b60201c565b506200027033620002466200043160201b60201c565b600a62000254919062000d83565b620f424062000264919062000dd4565b6200043a60201b60201c565b5050620010c0565b60006020835110156200029e576200029683620004c760201b60201c565b9050620002ca565b82620002b0836200053460201b60201c565b6000019081620002c1919062000b0c565b5060ff60001b90505b92915050565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60e0516101005146306040516020016200031295949392919062000e5c565b60405160208183030381529060405280519060200120905090565b60006200034183836200053e60201b60201c565b620004265760016005600085815260200190815260200160002060000160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550620003c2620005a960201b60201c565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a4600190506200042b565b600090505b92915050565b60006012905090565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603620004af5760006040517fec442f05000000000000000000000000000000000000000000000000000000008152600401620004a6919062000eb9565b60405180910390fd5b620004c360008383620005b160201b60201c565b5050565b600080829050601f815111156200051757826040517f305a27a90000000000000000000000000000000000000000000000000000000081526004016200050e919062000f65565b60405180910390fd5b805181620005259062000fbb565b60001c1760001b915050919050565b6000819050919050565b60006005600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160362000607578060026000828254620005fa91906200102b565b92505081905550620006dd565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508181101562000696578381836040517fe450d38c0000000000000000000000000000000000000000000000000000000081526004016200068d9392919062001066565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362000728578060026000828254039250508190555062000775565b806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051620007d49190620010a3565b60405180910390a3505050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006200081382620007e6565b9050919050565b620008258162000806565b81146200083157600080fd5b50565b60008151905062000845816200081a565b92915050565b60008060408385031215620008655762000864620007e1565b5b6000620008758582860162000834565b9250506020620008888582860162000834565b9150509250929050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200091457607f821691505b6020821081036200092a5762000929620008cc565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620009947fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000955565b620009a0868362000955565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b6000620009ed620009e7620009e184620009b8565b620009c2565b620009b8565b9050919050565b6000819050919050565b62000a0983620009cc565b62000a2162000a1882620009f4565b84845462000962565b825550505050565b600090565b62000a3862000a29565b62000a45818484620009fe565b505050565b5b8181101562000a6d5762000a6160008262000a2e565b60018101905062000a4b565b5050565b601f82111562000abc5762000a868162000930565b62000a918462000945565b8101602085101562000aa1578190505b62000ab962000ab08562000945565b83018262000a4a565b50505b505050565b600082821c905092915050565b600062000ae16000198460080262000ac1565b1980831691505092915050565b600062000afc838362000ace565b9150826002028217905092915050565b62000b178262000892565b67ffffffffffffffff81111562000b335762000b326200089d565b5b62000b3f8254620008fb565b62000b4c82828562000a71565b600060209050601f83116001811462000b84576000841562000b6f578287015190505b62000b7b858262000aee565b86555062000beb565b601f19841662000b948662000930565b60005b8281101562000bbe5784890151825560018201915060208501945060208101905062000b97565b8683101562000bde578489015162000bda601f89168262000ace565b8355505b6001600288020188555050505b505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b600185111562000c815780860481111562000c595762000c5862000bf3565b5b600185161562000c695780820291505b808102905062000c798562000c22565b945062000c39565b94509492505050565b60008262000c9c576001905062000d6f565b8162000cac576000905062000d6f565b816001811462000cc5576002811462000cd05762000d06565b600191505062000d6f565b60ff84111562000ce55762000ce462000bf3565b5b8360020a91508482111562000cff5762000cfe62000bf3565b5b5062000d6f565b5060208310610133831016604e8410600b841016171562000d405782820a90508381111562000d3a5762000d3962000bf3565b5b62000d6f565b62000d4f848484600162000c2f565b9250905081840481111562000d695762000d6862000bf3565b5b81810290505b9392505050565b600060ff82169050919050565b600062000d9082620009b8565b915062000d9d8362000d76565b925062000dcc7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000c8a565b905092915050565b600062000de182620009b8565b915062000dee83620009b8565b925082820262000dfe81620009b8565b9150828204841483151762000e185762000e1762000bf3565b5b5092915050565b6000819050919050565b62000e348162000e1f565b82525050565b62000e4581620009b8565b82525050565b62000e568162000806565b82525050565b600060a08201905062000e73600083018862000e29565b62000e82602083018762000e29565b62000e91604083018662000e29565b62000ea0606083018562000e3a565b62000eaf608083018462000e4b565b9695505050505050565b600060208201905062000ed0600083018462000e4b565b92915050565b600082825260208201905092915050565b60005b8381101562000f0757808201518184015260208101905062000eea565b60008484015250505050565b6000601f19601f8301169050919050565b600062000f318262000892565b62000f3d818562000ed6565b935062000f4f81856020860162000ee7565b62000f5a8162000f13565b840191505092915050565b6000602082019050818103600083015262000f81818462000f24565b905092915050565b600081519050919050565b6000819050602082019050919050565b600062000fb2825162000e1f565b80915050919050565b600062000fc88262000f89565b8262000fd48462000f94565b905062000fe18162000fa4565b9250602082101562001024576200101f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8360200360080262000955565b831692505b5050919050565b60006200103882620009b8565b91506200104583620009b8565b925082820190508082111562001060576200105f62000bf3565b5b92915050565b60006060820190506200107d600083018662000e4b565b6200108c602083018562000e3a565b6200109b604083018462000e3a565b949350505050565b6000602082019050620010ba600083018462000e3a565b92915050565b60805160a05160c05160e051610100516101205161014051612ad66200111b600039600061153a015260006114ff01526000611aa801526000611a87015260006111fe015260006112540152600061127d0152612ad66000f3fe608060405234801561001057600080fd5b50600436106101735760003560e01c8063613255ab116100de578063a217fddf11610097578063d539139311610071578063d5391393146104a0578063d547741f146104be578063d9d98ce4146104da578063dd62ed3e1461050a57610173565b8063a217fddf14610436578063a9059cbb14610454578063d505accf1461048457610173565b8063613255ab1461033457806370a08231146103645780637ecebe001461039457806384b0196e146103c457806391d14854146103e857806395d89b411461041857610173565b80632f2ff15d116101305780632f2ff15d14610274578063313ce567146102905780633644e515146102ae57806336568abe146102cc57806340c10f19146102e85780635cffe9de1461030457610173565b806301ffc9a71461017857806306fdde03146101a8578063095ea7b3146101c657806318160ddd146101f657806323b872dd14610214578063248a9ca314610244575b600080fd5b610192600480360381019061018d9190611f67565b61053a565b60405161019f9190611faf565b60405180910390f35b6101b06105b4565b6040516101bd919061205a565b60405180910390f35b6101e060048036038101906101db9190612110565b610646565b6040516101ed9190611faf565b60405180910390f35b6101fe610669565b60405161020b919061215f565b60405180910390f35b61022e6004803603810190610229919061217a565b610673565b60405161023b9190611faf565b60405180910390f35b61025e60048036038101906102599190612203565b6106a2565b60405161026b919061223f565b60405180910390f35b61028e6004803603810190610289919061225a565b6106c2565b005b6102986106e4565b6040516102a591906122b6565b60405180910390f35b6102b66106ed565b6040516102c3919061223f565b60405180910390f35b6102e660048036038101906102e1919061225a565b6106fc565b005b61030260048036038101906102fd9190612110565b610777565b005b61031e60048036038101906103199190612374565b6107b0565b60405161032b9190611faf565b60405180910390f35b61034e600480360381019061034991906123fc565b6109ad565b60405161035b919061215f565b60405180910390f35b61037e600480360381019061037991906123fc565b610a24565b60405161038b919061215f565b60405180910390f35b6103ae60048036038101906103a991906123fc565b610a6c565b6040516103bb919061215f565b60405180910390f35b6103cc610a7e565b6040516103df9796959493929190612531565b60405180910390f35b61040260048036038101906103fd919061225a565b610b28565b60405161040f9190611faf565b60405180910390f35b610420610b93565b60405161042d919061205a565b60405180910390f35b61043e610c25565b60405161044b919061223f565b60405180910390f35b61046e60048036038101906104699190612110565b610c2c565b60405161047b9190611faf565b60405180910390f35b61049e600480360381019061049991906125e1565b610c4f565b005b6104a8610d97565b6040516104b5919061223f565b60405180910390f35b6104d860048036038101906104d3919061225a565b610dbb565b005b6104f460048036038101906104ef9190612110565b610ddd565b604051610501919061215f565b60405180910390f35b610524600480360381019061051f9190612683565b610e61565b604051610531919061215f565b60405180910390f35b60007f7965db0b000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806105ad57506105ac82610ee8565b5b9050919050565b6060600380546105c3906126f2565b80601f01602080910402602001604051908101604052809291908181526020018280546105ef906126f2565b801561063c5780601f106106115761010080835404028352916020019161063c565b820191906000526020600020905b81548152906001019060200180831161061f57829003601f168201915b5050505050905090565b600080610651610f52565b905061065e818585610f5a565b600191505092915050565b6000600254905090565b60008061067e610f52565b905061068b858285610f6c565b610696858585611000565b60019150509392505050565b600060056000838152602001908152602001600020600101549050919050565b6106cb826106a2565b6106d4816110f4565b6106de8383611108565b50505050565b60006012905090565b60006106f76111fa565b905090565b610704610f52565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610768576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61077282826112b1565b505050565b7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a66107a1816110f4565b6107ab83836113a4565b505050565b6000806107bc866109ad565b90508085111561080357806040517ffd9a76090000000000000000000000000000000000000000000000000000000081526004016107fa919061215f565b60405180910390fd5b600061080f8787610ddd565b905061081b88876113a4565b7f439148f0bbc682ca079e46d6e2c2f0c1e3b820f1a291b069d8882abf8cf18dd98873ffffffffffffffffffffffffffffffffffffffff166323e30c8b610860610f52565b8a8a868b8b6040518763ffffffff1660e01b815260040161088696959493929190612770565b6020604051808303816000875af11580156108a5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108c991906127e1565b1461090b57876040517f678c5b00000000000000000000000000000000000000000000000000000000008152600401610902919061280e565b60405180910390fd5b6000610915611426565b905061092d8930848a6109289190612858565b610f6c565b60008214806109685750600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b156109875761098289838961097d9190612858565b61142b565b61099d565b610991898861142b565b61099c898284611000565b5b6001935050505095945050505050565b60003073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16146109e9576000610a1d565b6109f1610669565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610a1c919061288c565b5b9050919050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000610a77826114ad565b9050919050565b600060608060008060006060610a926114f6565b610a9a611531565b46306000801b600067ffffffffffffffff811115610abb57610aba6128c0565b5b604051908082528060200260200182016040528015610ae95781602001602082028036833780820191505090505b507f0f00000000000000000000000000000000000000000000000000000000000000959493929190965096509650965096509650965090919293949596565b60006005600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b606060048054610ba2906126f2565b80601f0160208091040260200160405190810160405280929190818152602001828054610bce906126f2565b8015610c1b5780601f10610bf057610100808354040283529160200191610c1b565b820191906000526020600020905b815481529060010190602001808311610bfe57829003601f168201915b5050505050905090565b6000801b81565b600080610c37610f52565b9050610c44818585611000565b600191505092915050565b83421115610c9457836040517f62791302000000000000000000000000000000000000000000000000000000008152600401610c8b919061215f565b60405180910390fd5b60007f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9888888610cc38c61156c565b89604051602001610cd9969594939291906128ef565b6040516020818303038152906040528051906020012090506000610cfc826115c3565b90506000610d0c828787876115dd565b90508973ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610d8057808a6040517f4b800e46000000000000000000000000000000000000000000000000000000008152600401610d77929190612950565b60405180910390fd5b610d8b8a8a8a610f5a565b50505050505050505050565b7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a681565b610dc4826106a2565b610dcd816110f4565b610dd783836112b1565b50505050565b60003073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614610e4f57826040517fb5a7db92000000000000000000000000000000000000000000000000000000008152600401610e46919061280e565b60405180910390fd5b610e59838361160d565b905092915050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b600033905090565b610f678383836001611615565b505050565b6000610f788484610e61565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610ffa5781811015610fea578281836040517ffb8f41b2000000000000000000000000000000000000000000000000000000008152600401610fe193929190612979565b60405180910390fd5b610ff984848484036000611615565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036110725760006040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600401611069919061280e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036110e45760006040517fec442f050000000000000000000000000000000000000000000000000000000081526004016110db919061280e565b60405180910390fd5b6110ef8383836117ec565b505050565b61110581611100610f52565b611a11565b50565b60006111148383610b28565b6111ef5760016005600085815260200190815260200160002060000160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555061118c610f52565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a4600190506111f4565b600090505b92915050565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff1614801561127657507f000000000000000000000000000000000000000000000000000000000000000046145b156112a3577f000000000000000000000000000000000000000000000000000000000000000090506112ae565b6112ab611a62565b90505b90565b60006112bd8383610b28565b156113995760006005600085815260200190815260200160002060000160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550611336610f52565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16847ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b60405160405180910390a46001905061139e565b600090505b92915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036114165760006040517fec442f0500000000000000000000000000000000000000000000000000000000815260040161140d919061280e565b60405180910390fd5b611422600083836117ec565b5050565b600090565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361149d5760006040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600401611494919061280e565b60405180910390fd5b6114a9826000836117ec565b5050565b6000600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b606061152c60067f0000000000000000000000000000000000000000000000000000000000000000611af890919063ffffffff16565b905090565b606061156760077f0000000000000000000000000000000000000000000000000000000000000000611af890919063ffffffff16565b905090565b6000600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000815480929190600101919050559050919050565b60006115d66115d06111fa565b83611ba8565b9050919050565b6000806000806115ef88888888611be9565b9250925092506115ff8282611cdd565b829350505050949350505050565b600092915050565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16036116875760006040517fe602df0500000000000000000000000000000000000000000000000000000000815260040161167e919061280e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036116f95760006040517f94280d620000000000000000000000000000000000000000000000000000000081526004016116f0919061280e565b60405180910390fd5b81600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555080156117e6578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516117dd919061215f565b60405180910390a35b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361183e5780600260008282546118329190612858565b92505081905550611911565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156118ca578381836040517fe450d38c0000000000000000000000000000000000000000000000000000000081526004016118c193929190612979565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361195a57806002600082825403925050819055506119a7565b806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611a04919061215f565b60405180910390a3505050565b611a1b8282610b28565b611a5e5780826040517fe2517d3f000000000000000000000000000000000000000000000000000000008152600401611a559291906129b0565b60405180910390fd5b5050565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f7f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000004630604051602001611add9594939291906129d9565b60405160208183030381529060405280519060200120905090565b606060ff60001b8314611b1557611b0e83611e41565b9050611ba2565b818054611b21906126f2565b80601f0160208091040260200160405190810160405280929190818152602001828054611b4d906126f2565b8015611b9a5780601f10611b6f57610100808354040283529160200191611b9a565b820191906000526020600020905b815481529060010190602001808311611b7d57829003601f168201915b505050505090505b92915050565b60006040517f190100000000000000000000000000000000000000000000000000000000000081528360028201528260228201526042812091505092915050565b60008060007f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08460001c1115611c29576000600385925092509250611cd3565b600060018888888860405160008152602001604052604051611c4e9493929190612a2c565b6020604051602081039080840390855afa158015611c70573d6000803e3d6000fd5b505050602060405103519050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611cc457600060016000801b93509350935050611cd3565b8060008060001b935093509350505b9450945094915050565b60006003811115611cf157611cf0612a71565b5b826003811115611d0457611d03612a71565b5b0315611e3d5760016003811115611d1e57611d1d612a71565b5b826003811115611d3157611d30612a71565b5b03611d68576040517ff645eedf00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60026003811115611d7c57611d7b612a71565b5b826003811115611d8f57611d8e612a71565b5b03611dd4578060001c6040517ffce698f7000000000000000000000000000000000000000000000000000000008152600401611dcb919061215f565b60405180910390fd5b600380811115611de757611de6612a71565b5b826003811115611dfa57611df9612a71565b5b03611e3c57806040517fd78bce0c000000000000000000000000000000000000000000000000000000008152600401611e33919061223f565b60405180910390fd5b5b5050565b60606000611e4e83611eb5565b90506000602067ffffffffffffffff811115611e6d57611e6c6128c0565b5b6040519080825280601f01601f191660200182016040528015611e9f5781602001600182028036833780820191505090505b5090508181528360208201528092505050919050565b60008060ff8360001c169050601f811115611efc576040517fb3512b0c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80915050919050565b600080fd5b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b611f4481611f0f565b8114611f4f57600080fd5b50565b600081359050611f6181611f3b565b92915050565b600060208284031215611f7d57611f7c611f05565b5b6000611f8b84828501611f52565b91505092915050565b60008115159050919050565b611fa981611f94565b82525050565b6000602082019050611fc46000830184611fa0565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612004578082015181840152602081019050611fe9565b60008484015250505050565b6000601f19601f8301169050919050565b600061202c82611fca565b6120368185611fd5565b9350612046818560208601611fe6565b61204f81612010565b840191505092915050565b600060208201905081810360008301526120748184612021565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006120a78261207c565b9050919050565b6120b78161209c565b81146120c257600080fd5b50565b6000813590506120d4816120ae565b92915050565b6000819050919050565b6120ed816120da565b81146120f857600080fd5b50565b60008135905061210a816120e4565b92915050565b6000806040838503121561212757612126611f05565b5b6000612135858286016120c5565b9250506020612146858286016120fb565b9150509250929050565b612159816120da565b82525050565b60006020820190506121746000830184612150565b92915050565b60008060006060848603121561219357612192611f05565b5b60006121a1868287016120c5565b93505060206121b2868287016120c5565b92505060406121c3868287016120fb565b9150509250925092565b6000819050919050565b6121e0816121cd565b81146121eb57600080fd5b50565b6000813590506121fd816121d7565b92915050565b60006020828403121561221957612218611f05565b5b6000612227848285016121ee565b91505092915050565b612239816121cd565b82525050565b60006020820190506122546000830184612230565b92915050565b6000806040838503121561227157612270611f05565b5b600061227f858286016121ee565b9250506020612290858286016120c5565b9150509250929050565b600060ff82169050919050565b6122b08161229a565b82525050565b60006020820190506122cb60008301846122a7565b92915050565b60006122dc8261209c565b9050919050565b6122ec816122d1565b81146122f757600080fd5b50565b600081359050612309816122e3565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f8401126123345761233361230f565b5b8235905067ffffffffffffffff81111561235157612350612314565b5b60208301915083600182028301111561236d5761236c612319565b5b9250929050565b6000806000806000608086880312156123905761238f611f05565b5b600061239e888289016122fa565b95505060206123af888289016120c5565b94505060406123c0888289016120fb565b935050606086013567ffffffffffffffff8111156123e1576123e0611f0a565b5b6123ed8882890161231e565b92509250509295509295909350565b60006020828403121561241257612411611f05565b5b6000612420848285016120c5565b91505092915050565b60007fff0000000000000000000000000000000000000000000000000000000000000082169050919050565b61245e81612429565b82525050565b61246d8161209c565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6124a8816120da565b82525050565b60006124ba838361249f565b60208301905092915050565b6000602082019050919050565b60006124de82612473565b6124e8818561247e565b93506124f38361248f565b8060005b8381101561252457815161250b88826124ae565b9750612516836124c6565b9250506001810190506124f7565b5085935050505092915050565b600060e082019050612546600083018a612455565b81810360208301526125588189612021565b9050818103604083015261256c8188612021565b905061257b6060830187612150565b6125886080830186612464565b61259560a0830185612230565b81810360c08301526125a781846124d3565b905098975050505050505050565b6125be8161229a565b81146125c957600080fd5b50565b6000813590506125db816125b5565b92915050565b600080600080600080600060e0888a031215612600576125ff611f05565b5b600061260e8a828b016120c5565b975050602061261f8a828b016120c5565b96505060406126308a828b016120fb565b95505060606126418a828b016120fb565b94505060806126528a828b016125cc565b93505060a06126638a828b016121ee565b92505060c06126748a828b016121ee565b91505092959891949750929550565b6000806040838503121561269a57612699611f05565b5b60006126a8858286016120c5565b92505060206126b9858286016120c5565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061270a57607f821691505b60208210810361271d5761271c6126c3565b5b50919050565b600082825260208201905092915050565b82818337600083830152505050565b600061274f8385612723565b935061275c838584612734565b61276583612010565b840190509392505050565b600060a0820190506127856000830189612464565b6127926020830188612464565b61279f6040830187612150565b6127ac6060830186612150565b81810360808301526127bf818486612743565b9050979650505050505050565b6000815190506127db816121d7565b92915050565b6000602082840312156127f7576127f6611f05565b5b6000612805848285016127cc565b91505092915050565b60006020820190506128236000830184612464565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612863826120da565b915061286e836120da565b925082820190508082111561288657612885612829565b5b92915050565b6000612897826120da565b91506128a2836120da565b92508282039050818111156128ba576128b9612829565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600060c0820190506129046000830189612230565b6129116020830188612464565b61291e6040830187612464565b61292b6060830186612150565b6129386080830185612150565b61294560a0830184612150565b979650505050505050565b60006040820190506129656000830185612464565b6129726020830184612464565b9392505050565b600060608201905061298e6000830186612464565b61299b6020830185612150565b6129a86040830184612150565b949350505050565b60006040820190506129c56000830185612464565b6129d26020830184612230565b9392505050565b600060a0820190506129ee6000830188612230565b6129fb6020830187612230565b612a086040830186612230565b612a156060830185612150565b612a226080830184612464565b9695505050505050565b6000608082019050612a416000830187612230565b612a4e60208301866122a7565b612a5b6040830185612230565b612a686060830184612230565b95945050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fdfea26469706673582212208dea3e4e15e797b266153766119ea027535dc726aaaf82baa0d5daa2a614e95764736f6c63430008160033000000000000000000000000aa6f663a14b8da1eb9cf021379f4ba6bf536268a000000000000000000000000aa6f663a14b8da1eb9cf021379f4ba6bf536268a