60c06040523480156200001157600080fd5b506040516200500e3803806200500e8339818101604052810190620000379190620000c2565b60016000819055503373ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff16815250508060a0818152505050620000f4565b600080fd5b6000819050919050565b6200009c8162000087565b8114620000a857600080fd5b50565b600081519050620000bc8162000091565b92915050565b600060208284031215620000db57620000da62000082565b5b6000620000eb84828501620000ab565b91505092915050565b60805160a051614ee662000128600039600081816104d201526107200152600081816103f001526109150152614ee66000f3fe608060405260043610620000aa5760003560e01c80637fd6f15c116200006d5780637fd6f15c146200019b578063844af65814620001cb578063bfb231d2146200020f578063ca7dd3751462000258578063d38ea5bf146200029c578063fa00afc714620002bc57620000aa565b80631249c58b14620000af57806365e17c9d14620000c95780636a62784214620000f95780636bfb0d0114620001275780636de4e68c1462000157575b600080fd5b348015620000bc57600080fd5b50620000c7620002ea565b005b348015620000d657600080fd5b50620000e1620003ee565b604051620000f0919062000e64565b60405180910390f35b3480156200010657600080fd5b506200012560048036038101906200011f919062000ed0565b62000412565b005b3480156200013457600080fd5b506200013f6200048a565b6040516200014e919062000f1d565b60405180910390f35b3480156200016457600080fd5b506200018360048036038101906200017d919062000f6b565b62000490565b60405162000192919062000fae565b60405180910390f35b348015620001a857600080fd5b50620001b3620004d0565b604051620001c2919062000f1d565b60405180910390f35b348015620001d857600080fd5b50620001f76004803603810190620001f1919062001039565b620004f4565b60405162000206919062000fae565b60405180910390f35b3480156200021c57600080fd5b506200023b600480360381019062000235919062000f6b565b62000691565b6040516200024f9695949392919062001187565b60405180910390f35b3480156200026557600080fd5b506200028460048036038101906200027e919062000f6b565b6200071a565b60405162000293919062000f1d565b60405180910390f35b620002ba6004803603810190620002b4919062000f6b565b62000783565b005b348015620002c957600080fd5b50620002e86004803603810190620002e2919062001239565b62000b25565b005b60006001805490501162000335576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200032c90620012f6565b60405180910390fd5b600060016000815481106200034f576200034e62001318565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508073ffffffffffffffffffffffffffffffffffffffff166340d097c3336040518263ffffffff1660e01b8152600401620003b7919062000fae565b600060405180830381600087803b158015620003d257600080fd5b505af1158015620003e7573d6000803e3d6000fd5b5050505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b60008190508073ffffffffffffffffffffffffffffffffffffffff166340d097c3336040518263ffffffff1660e01b815260040162000452919062000fae565b600060405180830381600087803b1580156200046d57600080fd5b505af115801562000482573d6000803e3d6000fd5b505050505050565b60025481565b60018181548110620004a157600080fd5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b7f000000000000000000000000000000000000000000000000000000000000000081565b60008060405180602001620005099062000e11565b6020820181038252601f19601f82011660405250905060008484604051602001620005369291906200138a565b604051602081830303815290604052805190602001209050808251602084016000f59250823b6200056657600080fd5b8273ffffffffffffffffffffffffffffffffffffffff16637fadcae18a8a8a8a8a8a6040518763ffffffff1660e01b8152600401620005ab96959493929190620013e9565b600060405180830381600087803b158015620005c657600080fd5b505af1158015620005db573d6000803e3d6000fd5b505050506001839080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f7a1feb7700e25e91a9d37ecdea31fa5b625ce0e395430d1fe9a28c8aeaa03a4d8989858888426040516200067d9695949392919062001441565b60405180910390a150509695505050505050565b60036020528060005260406000206000915090508060000154908060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060020154908060030154908060040160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060040160149054906101000a900460ff16905086565b600060647f000000000000000000000000000000000000000000000000000000000000000060646200074d9190620014cf565b60036000858152602001908152602001600020600301546200077091906200150a565b6200077c919062001584565b9050919050565b6200078d62000dc0565b600081118015620007a057506002548111155b620007e2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620007d9906200160c565b60405180910390fd5b60006003600083815260200190815260200160002090508060040160149054906101000a900460ff16156200084e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000845906200167e565b60405180910390fd5b60006200085b836200071a565b905080341015620008a3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200089a9062001716565b60405180910390fd5b8160040160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc83600301549081150290604051600060405180830381858888f1935050505015801562000912573d6000803e3d6000fd5b507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166108fc8360030154836200095f919062001738565b9081150290604051600060405180830381858888f193505050501580156200098b573d6000803e3d6000fd5b5060018260040160146101000a81548160ff0219169083151502179055508160010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd303385600201546040518463ffffffff1660e01b815260040162000a109392919062001773565b600060405180830381600087803b15801562000a2b57600080fd5b505af115801562000a40573d6000803e3d6000fd5b505050503373ffffffffffffffffffffffffffffffffffffffff168260040160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168360010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fedda79899937bed109140907d76f876d8dd425b179f237dcf015e5b7285e8af8868660020154876003015460405162000b0e93929190620017b0565b60405180910390a4505062000b2262000e07565b50565b62000b2f62000dc0565b6000811162000b75576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000b6c906200183d565b60405180910390fd5b6002600081548092919062000b8a906200185f565b91905055508273ffffffffffffffffffffffffffffffffffffffff166323b872dd3330856040518463ffffffff1660e01b815260040162000bce9392919062001773565b600060405180830381600087803b15801562000be957600080fd5b505af115801562000bfe573d6000803e3d6000fd5b505050506040518060c0016040528060025481526020018473ffffffffffffffffffffffffffffffffffffffff1681526020018381526020018281526020013373ffffffffffffffffffffffffffffffffffffffff168152602001600015158152506003600060025481526020019081526020016000206000820151816000015560208201518160010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550604082015181600201556060820151816003015560808201518160040160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060a08201518160040160146101000a81548160ff0219169083151502179055509050503373ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f0d770f67a166dfb160ca3991c3a328328d7d3899464a55a6fa63448ceda49523600254858560405162000da993929190620017b0565b60405180910390a362000dbb62000e07565b505050565b60026000540362000dfd576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600081905550565b6001600081905550565b61360480620018ad83390190565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000e4c8262000e1f565b9050919050565b62000e5e8162000e3f565b82525050565b600060208201905062000e7b600083018462000e53565b92915050565b600080fd5b600080fd5b600062000e988262000e1f565b9050919050565b62000eaa8162000e8b565b811462000eb657600080fd5b50565b60008135905062000eca8162000e9f565b92915050565b60006020828403121562000ee95762000ee862000e81565b5b600062000ef98482850162000eb9565b91505092915050565b6000819050919050565b62000f178162000f02565b82525050565b600060208201905062000f34600083018462000f0c565b92915050565b62000f458162000f02565b811462000f5157600080fd5b50565b60008135905062000f658162000f3a565b92915050565b60006020828403121562000f845762000f8362000e81565b5b600062000f948482850162000f54565b91505092915050565b62000fa88162000e8b565b82525050565b600060208201905062000fc5600083018462000f9d565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f84011262000ff35762000ff262000fcb565b5b8235905067ffffffffffffffff81111562001013576200101262000fd0565b5b60208301915083600182028301111562001032576200103162000fd5565b5b9250929050565b6000806000806000806060878903121562001059576200105862000e81565b5b600087013567ffffffffffffffff8111156200107a576200107962000e86565b5b6200108889828a0162000fda565b9650965050602087013567ffffffffffffffff811115620010ae57620010ad62000e86565b5b620010bc89828a0162000fda565b9450945050604087013567ffffffffffffffff811115620010e257620010e162000e86565b5b620010f089828a0162000fda565b92509250509295509295509295565b6000819050919050565b60006200112a620011246200111e8462000e1f565b620010ff565b62000e1f565b9050919050565b60006200113e8262001109565b9050919050565b6000620011528262001131565b9050919050565b620011648162001145565b82525050565b60008115159050919050565b62001181816200116a565b82525050565b600060c0820190506200119e600083018962000f0c565b620011ad602083018862001159565b620011bc604083018762000f0c565b620011cb606083018662000f0c565b620011da608083018562000e53565b620011e960a083018462001176565b979650505050505050565b6000620012018262000e8b565b9050919050565b6200121381620011f4565b81146200121f57600080fd5b50565b600081359050620012338162001208565b92915050565b60008060006060848603121562001255576200125462000e81565b5b6000620012658682870162001222565b9350506020620012788682870162000f54565b92505060406200128b8682870162000f54565b9150509250925092565b600082825260208201905092915050565b7f4e6f20636f6c6c656374696f6e20686173206265656e20637265617465640000600082015250565b6000620012de601e8362001295565b9150620012eb82620012a6565b602082019050919050565b600060208201905081810360008301526200131181620012cf565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081905092915050565b82818337600083830152505050565b60006200136f838562001347565b93506200137e83858462001352565b82840190509392505050565b60006200139982848662001361565b91508190509392505050565b6000601f19601f8301169050919050565b6000620013c4838562001295565b9350620013d383858462001352565b620013de83620013a5565b840190509392505050565b600060608201905081810360008301526200140681888a620013b6565b905081810360208301526200141d818688620013b6565b9050818103604083015262001434818486620013b6565b9050979650505050505050565b600060808201905081810360008301526200145e81888a620013b6565b90506200146f602083018762000f9d565b818103604083015262001484818587620013b6565b905062001495606083018462000f0c565b979650505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000620014dc8262000f02565b9150620014e98362000f02565b9250828201905080821115620015045762001503620014a0565b5b92915050565b6000620015178262000f02565b9150620015248362000f02565b9250828202620015348162000f02565b915082820484148315176200154e576200154d620014a0565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000620015918262000f02565b91506200159e8362000f02565b925082620015b157620015b062001555565b5b828204905092915050565b7f756e6b6e6f776e206974656d0000000000000000000000000000000000000000600082015250565b6000620015f4600c8362001295565b91506200160182620015bc565b602082019050919050565b600060208201905081810360008301526200162781620015e5565b9050919050565b7f6974656d20616c72656164792065786368616e67656400000000000000000000600082015250565b60006200166660168362001295565b915062001673826200162e565b602082019050919050565b60006020820190508181036000830152620016998162001657565b9050919050565b7f6e6f7420656e6f7567682066756e647320746f2070757263686173652074686560008201527f206974656d000000000000000000000000000000000000000000000000000000602082015250565b6000620016fe60258362001295565b91506200170b82620016a0565b604082019050919050565b600060208201905081810360008301526200173181620016ef565b9050919050565b6000620017458262000f02565b9150620017528362000f02565b92508282039050818111156200176d576200176c620014a0565b5b92915050565b60006060820190506200178a600083018662000f9d565b62001799602083018562000f9d565b620017a8604083018462000f0c565b949350505050565b6000606082019050620017c7600083018662000f0c565b620017d6602083018562000f0c565b620017e5604083018462000f0c565b949350505050565b7f5072696365206d7573742062652067726561746572207468616e207a65726f00600082015250565b600062001825601f8362001295565b91506200183282620017ed565b602082019050919050565b60006020820190508181036000830152620018588162001816565b9050919050565b60006200186c8262000f02565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203620018a157620018a0620014a0565b5b60018201905091905056fe60806040523480156200001157600080fd5b50336040518060200160405280600081525060405180602001604052806000815250816000908162000044919062000426565b50806001908162000056919062000426565b505050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603620000ce5760006040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600401620000c5919062000552565b60405180910390fd5b620000df81620000e660201b60201c565b506200056f565b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200022e57607f821691505b602082108103620002445762000243620001e6565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620002ae7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826200026f565b620002ba86836200026f565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b60006200030762000301620002fb84620002d2565b620002dc565b620002d2565b9050919050565b6000819050919050565b6200032383620002e6565b6200033b62000332826200030e565b8484546200027c565b825550505050565b600090565b6200035262000343565b6200035f81848462000318565b505050565b5b8181101562000387576200037b60008262000348565b60018101905062000365565b5050565b601f821115620003d657620003a0816200024a565b620003ab846200025f565b81016020851015620003bb578190505b620003d3620003ca856200025f565b83018262000364565b50505b505050565b600082821c905092915050565b6000620003fb60001984600802620003db565b1980831691505092915050565b6000620004168383620003e8565b9150826002028217905092915050565b6200043182620001ac565b67ffffffffffffffff8111156200044d576200044c620001b7565b5b62000459825462000215565b620004668282856200038b565b600060209050601f8311600181146200049e576000841562000489578287015190505b62000495858262000408565b86555062000505565b601f198416620004ae866200024a565b60005b82811015620004d857848901518255600182019150602085019450602081019050620004b1565b86831015620004f85784890151620004f4601f891682620003e8565b8355505b6001600288020188555050505b505050505050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006200053a826200050d565b9050919050565b6200054c816200052d565b82525050565b600060208201905062000569600083018462000541565b92915050565b613085806200057f6000396000f3fe6080604052600436106101355760003560e01c80636c0360eb116100ab57806395d89b411161006f57806395d89b411461042b578063a22cb46514610456578063b88d4fde1461047f578063c87b56dd146104a8578063e985e9c5146104e5578063f2fde38b1461052257610135565b80636c0360eb1461035857806370a0823114610383578063715018a6146103c05780637fadcae1146103d75780638da5cb5b1461040057610135565b806323b872dd116100fd57806323b872dd146102335780632f745c591461025c57806340d097c31461029957806342842e0e146102b55780634f6ccce7146102de5780636352211e1461031b57610135565b806301ffc9a71461013a57806306fdde0314610177578063081812fc146101a2578063095ea7b3146101df57806318160ddd14610208575b600080fd5b34801561014657600080fd5b50610161600480360381019061015c919061221f565b61054b565b60405161016e9190612267565b60405180910390f35b34801561018357600080fd5b5061018c6105c5565b6040516101999190612312565b60405180910390f35b3480156101ae57600080fd5b506101c960048036038101906101c4919061236a565b610657565b6040516101d691906123d8565b60405180910390f35b3480156101eb57600080fd5b506102066004803603810190610201919061241f565b610673565b005b34801561021457600080fd5b5061021d610689565b60405161022a919061246e565b60405180910390f35b34801561023f57600080fd5b5061025a60048036038101906102559190612489565b610696565b005b34801561026857600080fd5b50610283600480360381019061027e919061241f565b610798565b604051610290919061246e565b60405180910390f35b6102b360048036038101906102ae91906124dc565b610841565b005b3480156102c157600080fd5b506102dc60048036038101906102d79190612489565b6109ac565b005b3480156102ea57600080fd5b506103056004803603810190610300919061236a565b6109cc565b604051610312919061246e565b60405180910390f35b34801561032757600080fd5b50610342600480360381019061033d919061236a565b610a42565b60405161034f91906123d8565b60405180910390f35b34801561036457600080fd5b5061036d610a54565b60405161037a9190612312565b60405180910390f35b34801561038f57600080fd5b506103aa60048036038101906103a591906124dc565b610ae2565b6040516103b7919061246e565b60405180910390f35b3480156103cc57600080fd5b506103d5610b9c565b005b3480156103e357600080fd5b506103fe60048036038101906103f9919061256e565b610bb0565b005b34801561040c57600080fd5b50610415610bf6565b60405161042291906123d8565b60405180910390f35b34801561043757600080fd5b50610440610c20565b60405161044d9190612312565b60405180910390f35b34801561046257600080fd5b5061047d6004803603810190610478919061264e565b610cb2565b005b34801561048b57600080fd5b506104a660048036038101906104a191906127be565b610cc8565b005b3480156104b457600080fd5b506104cf60048036038101906104ca919061236a565b610ced565b6040516104dc9190612312565b60405180910390f35b3480156104f157600080fd5b5061050c60048036038101906105079190612841565b610d57565b6040516105199190612267565b60405180910390f35b34801561052e57600080fd5b50610549600480360381019061054491906124dc565b610deb565b005b60007f780e9d63000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806105be57506105bd82610e71565b5b9050919050565b6060600080546105d4906128b0565b80601f0160208091040260200160405190810160405280929190818152602001828054610600906128b0565b801561064d5780601f106106225761010080835404028352916020019161064d565b820191906000526020600020905b81548152906001019060200180831161063057829003601f168201915b5050505050905090565b600061066282610f53565b5061066c82610fdb565b9050919050565b6106858282610680611018565b611020565b5050565b6000600880549050905090565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036107085760006040517f64a0ae920000000000000000000000000000000000000000000000000000000081526004016106ff91906123d8565b60405180910390fd5b600061071c8383610717611018565b611032565b90508373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610792578382826040517f64283d7b000000000000000000000000000000000000000000000000000000008152600401610789939291906128e1565b60405180910390fd5b50505050565b60006107a383610ae2565b82106107e85782826040517fa57d13dc0000000000000000000000000000000000000000000000000000000081526004016107df929190612918565b60405180910390fd5b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002054905092915050565b61084961114f565b600c6001610855610689565b61085f9190612970565b11156108a0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610897906129f0565b60405180910390fd5b60036001600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546108ee9190612970565b1061092e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161092590612a82565b60405180910390fd5b600d60008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600081548092919061097e90612aa2565b91905055506000600b600081548092919061099890612aa2565b9190505590506109a882826111d6565b5050565b6109c783838360405180602001604052806000815250610cc8565b505050565b60006109d6610689565b8210610a1c576000826040517fa57d13dc000000000000000000000000000000000000000000000000000000008152600401610a13929190612918565b60405180910390fd5b60088281548110610a3057610a2f612aea565b5b90600052602060002001549050919050565b6000610a4d82610f53565b9050919050565b600c8054610a61906128b0565b80601f0160208091040260200160405190810160405280929190818152602001828054610a8d906128b0565b8015610ada5780601f10610aaf57610100808354040283529160200191610ada565b820191906000526020600020905b815481529060010190602001808311610abd57829003601f168201915b505050505081565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610b555760006040517f89c62b64000000000000000000000000000000000000000000000000000000008152600401610b4c91906123d8565b60405180910390fd5b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610ba461114f565b610bae60006111f4565b565b610bb861114f565b858560009182610bc9929190612cd0565b50838360019182610bdb929190612cd0565b508181600c9182610bed929190612cd0565b50505050505050565b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060018054610c2f906128b0565b80601f0160208091040260200160405190810160405280929190818152602001828054610c5b906128b0565b8015610ca85780601f10610c7d57610100808354040283529160200191610ca8565b820191906000526020600020905b815481529060010190602001808311610c8b57829003601f168201915b5050505050905090565b610cc4610cbd611018565b83836112ba565b5050565b610cd3848484610696565b610ce7610cde611018565b85858585611429565b50505050565b6060610cf882610f53565b506000600c8054610d08906128b0565b905011610d245760405180602001604052806000815250610d50565b600c610d2f836115da565b604051602001610d40929190612eab565b6040516020818303038152906040525b9050919050565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b610df361114f565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610e655760006040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600401610e5c91906123d8565b60405180910390fd5b610e6e816111f4565b50565b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610f3c57507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80610f4c5750610f4b826116a8565b5b9050919050565b600080610f5f83611712565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610fd257826040517f7e273289000000000000000000000000000000000000000000000000000000008152600401610fc9919061246e565b60405180910390fd5b80915050919050565b60006004600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b600033905090565b61102d838383600161174f565b505050565b600080611040858585611914565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036110845761107f84611b2e565b6110c3565b8473ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146110c2576110c18185611b77565b5b5b600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16036111055761110084611c62565b611144565b8473ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614611143576111428585611d33565b5b5b809150509392505050565b611157611018565b73ffffffffffffffffffffffffffffffffffffffff16611175610bf6565b73ffffffffffffffffffffffffffffffffffffffff16146111d457611198611018565b6040517f118cdaa70000000000000000000000000000000000000000000000000000000081526004016111cb91906123d8565b60405180910390fd5b565b6111f0828260405180602001604052806000815250611dbe565b5050565b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361132b57816040517f5b08ba1800000000000000000000000000000000000000000000000000000000815260040161132291906123d8565b60405180910390fd5b80600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c318360405161141c9190612267565b60405180910390a3505050565b60008373ffffffffffffffffffffffffffffffffffffffff163b11156115d3578273ffffffffffffffffffffffffffffffffffffffff1663150b7a02868685856040518563ffffffff1660e01b81526004016114889493929190612f2f565b6020604051808303816000875af19250505080156114c457506040513d601f19601f820116820180604052508101906114c19190612f90565b60015b611548573d80600081146114f4576040519150601f19603f3d011682016040523d82523d6000602084013e6114f9565b606091505b50600081510361154057836040517f64a0ae9200000000000000000000000000000000000000000000000000000000815260040161153791906123d8565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916146115d157836040517f64a0ae920000000000000000000000000000000000000000000000000000000081526004016115c891906123d8565b60405180910390fd5b505b5050505050565b6060600060016115e984611de2565b01905060008167ffffffffffffffff81111561160857611607612693565b5b6040519080825280601f01601f19166020018201604052801561163a5781602001600182028036833780820191505090505b509050600082602001820190505b60011561169d578080600190039150507f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a858161169157611690612fbd565b5b04945060008503611648575b819350505050919050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b60006002600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b80806117885750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156118bc57600061179884610f53565b9050600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561180357508273ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b801561181657506118148184610d57565b155b1561185857826040517fa9fbf51f00000000000000000000000000000000000000000000000000000000815260040161184f91906123d8565b60405180910390fd5b81156118ba57838573ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45b505b836004600085815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050505050565b60008061192084611712565b9050600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161461196257611961818486611f35565b5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146119f3576119a460008560008061174f565b6001600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825403925050819055505b600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614611a76576001600360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055505b846002600086815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550838573ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4809150509392505050565b6008805490506009600083815260200190815260200160002081905550600881908060018154018082558091505060019003906000526020600020016000909190919091505550565b6000611b8283610ae2565b90506000600760008481526020019081526020016000205490506000600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209050828214611c2e5760008160008581526020019081526020016000205490508082600085815260200190815260200160002081905550826007600083815260200190815260200160002081905550505b6007600085815260200190815260200160002060009055806000848152602001908152602001600020600090555050505050565b60006001600880549050611c769190612fec565b9050600060096000848152602001908152602001600020549050600060088381548110611ca657611ca5612aea565b5b906000526020600020015490508060088381548110611cc857611cc7612aea565b5b906000526020600020018190555081600960008381526020019081526020016000208190555060096000858152602001908152602001600020600090556008805480611d1757611d16613020565b5b6001900381819060005260206000200160009055905550505050565b60006001611d4084610ae2565b611d4a9190612fec565b905081600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002081905550806007600084815260200190815260200160002081905550505050565b611dc88383611ff9565b611ddd611dd3611018565b6000858585611429565b505050565b600080600090507a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008310611e40577a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008381611e3657611e35612fbd565b5b0492506040810190505b6d04ee2d6d415b85acef81000000008310611e7d576d04ee2d6d415b85acef81000000008381611e7357611e72612fbd565b5b0492506020810190505b662386f26fc100008310611eac57662386f26fc100008381611ea257611ea1612fbd565b5b0492506010810190505b6305f5e1008310611ed5576305f5e1008381611ecb57611eca612fbd565b5b0492506008810190505b6127108310611efa576127108381611ef057611eef612fbd565b5b0492506004810190505b60648310611f1d5760648381611f1357611f12612fbd565b5b0492506002810190505b600a8310611f2c576001810190505b80915050919050565b611f408383836120f2565b611ff457600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611fb557806040517f7e273289000000000000000000000000000000000000000000000000000000008152600401611fac919061246e565b60405180910390fd5b81816040517f177e802f000000000000000000000000000000000000000000000000000000008152600401611feb929190612918565b60405180910390fd5b505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361206b5760006040517f64a0ae9200000000000000000000000000000000000000000000000000000000815260040161206291906123d8565b60405180910390fd5b600061207983836000611032565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146120ed5760006040517f73c6ac6e0000000000000000000000000000000000000000000000000000000081526004016120e491906123d8565b60405180910390fd5b505050565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156121aa57508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148061216b575061216a8484610d57565b5b806121a957508273ffffffffffffffffffffffffffffffffffffffff1661219183610fdb565b73ffffffffffffffffffffffffffffffffffffffff16145b5b90509392505050565b6000604051905090565b600080fd5b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6121fc816121c7565b811461220757600080fd5b50565b600081359050612219816121f3565b92915050565b600060208284031215612235576122346121bd565b5b60006122438482850161220a565b91505092915050565b60008115159050919050565b6122618161224c565b82525050565b600060208201905061227c6000830184612258565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156122bc5780820151818401526020810190506122a1565b60008484015250505050565b6000601f19601f8301169050919050565b60006122e482612282565b6122ee818561228d565b93506122fe81856020860161229e565b612307816122c8565b840191505092915050565b6000602082019050818103600083015261232c81846122d9565b905092915050565b6000819050919050565b61234781612334565b811461235257600080fd5b50565b6000813590506123648161233e565b92915050565b6000602082840312156123805761237f6121bd565b5b600061238e84828501612355565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006123c282612397565b9050919050565b6123d2816123b7565b82525050565b60006020820190506123ed60008301846123c9565b92915050565b6123fc816123b7565b811461240757600080fd5b50565b600081359050612419816123f3565b92915050565b60008060408385031215612436576124356121bd565b5b60006124448582860161240a565b925050602061245585828601612355565b9150509250929050565b61246881612334565b82525050565b6000602082019050612483600083018461245f565b92915050565b6000806000606084860312156124a2576124a16121bd565b5b60006124b08682870161240a565b93505060206124c18682870161240a565b92505060406124d286828701612355565b9150509250925092565b6000602082840312156124f2576124f16121bd565b5b60006125008482850161240a565b91505092915050565b600080fd5b600080fd5b600080fd5b60008083601f84011261252e5761252d612509565b5b8235905067ffffffffffffffff81111561254b5761254a61250e565b5b60208301915083600182028301111561256757612566612513565b5b9250929050565b6000806000806000806060878903121561258b5761258a6121bd565b5b600087013567ffffffffffffffff8111156125a9576125a86121c2565b5b6125b589828a01612518565b9650965050602087013567ffffffffffffffff8111156125d8576125d76121c2565b5b6125e489828a01612518565b9450945050604087013567ffffffffffffffff811115612607576126066121c2565b5b61261389828a01612518565b92509250509295509295509295565b61262b8161224c565b811461263657600080fd5b50565b60008135905061264881612622565b92915050565b60008060408385031215612665576126646121bd565b5b60006126738582860161240a565b925050602061268485828601612639565b9150509250929050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6126cb826122c8565b810181811067ffffffffffffffff821117156126ea576126e9612693565b5b80604052505050565b60006126fd6121b3565b905061270982826126c2565b919050565b600067ffffffffffffffff82111561272957612728612693565b5b612732826122c8565b9050602081019050919050565b82818337600083830152505050565b600061276161275c8461270e565b6126f3565b90508281526020810184848401111561277d5761277c61268e565b5b61278884828561273f565b509392505050565b600082601f8301126127a5576127a4612509565b5b81356127b584826020860161274e565b91505092915050565b600080600080608085870312156127d8576127d76121bd565b5b60006127e68782880161240a565b94505060206127f78782880161240a565b935050604061280887828801612355565b925050606085013567ffffffffffffffff811115612829576128286121c2565b5b61283587828801612790565b91505092959194509250565b60008060408385031215612858576128576121bd565b5b60006128668582860161240a565b92505060206128778582860161240a565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806128c857607f821691505b6020821081036128db576128da612881565b5b50919050565b60006060820190506128f660008301866123c9565b612903602083018561245f565b61291060408301846123c9565b949350505050565b600060408201905061292d60008301856123c9565b61293a602083018461245f565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061297b82612334565b915061298683612334565b925082820190508082111561299e5761299d612941565b5b92915050565b7f4d617820737570706c7920657863656564656400000000000000000000000000600082015250565b60006129da60138361228d565b91506129e5826129a4565b602082019050919050565b60006020820190508181036000830152612a09816129cd565b9050919050565b7f4d6178696d756d206e756d626572206f66206d696e74207065722077616c6c6560008201527f7420686173206265656e20726561636865640000000000000000000000000000602082015250565b6000612a6c60328361228d565b9150612a7782612a10565b604082019050919050565b60006020820190508181036000830152612a9b81612a5f565b9050919050565b6000612aad82612334565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612adf57612ade612941565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600082905092915050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302612b867fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82612b49565b612b908683612b49565b95508019841693508086168417925050509392505050565b6000819050919050565b6000612bcd612bc8612bc384612334565b612ba8565b612334565b9050919050565b6000819050919050565b612be783612bb2565b612bfb612bf382612bd4565b848454612b56565b825550505050565b600090565b612c10612c03565b612c1b818484612bde565b505050565b5b81811015612c3f57612c34600082612c08565b600181019050612c21565b5050565b601f821115612c8457612c5581612b24565b612c5e84612b39565b81016020851015612c6d578190505b612c81612c7985612b39565b830182612c20565b50505b505050565b600082821c905092915050565b6000612ca760001984600802612c89565b1980831691505092915050565b6000612cc08383612c96565b9150826002028217905092915050565b612cda8383612b19565b67ffffffffffffffff811115612cf357612cf2612693565b5b612cfd82546128b0565b612d08828285612c43565b6000601f831160018114612d375760008415612d25578287013590505b612d2f8582612cb4565b865550612d97565b601f198416612d4586612b24565b60005b82811015612d6d57848901358255600182019150602085019450602081019050612d48565b86831015612d8a5784890135612d86601f891682612c96565b8355505b6001600288020188555050505b50505050505050565b600081905092915050565b60008154612db8816128b0565b612dc28186612da0565b94506001821660008114612ddd5760018114612df257612e25565b60ff1983168652811515820286019350612e25565b612dfb85612b24565b60005b83811015612e1d57815481890152600182019150602081019050612dfe565b838801955050505b50505092915050565b6000612e3982612282565b612e438185612da0565b9350612e5381856020860161229e565b80840191505092915050565b7f2e6a736f6e000000000000000000000000000000000000000000000000000000600082015250565b6000612e95600583612da0565b9150612ea082612e5f565b600582019050919050565b6000612eb78285612dab565b9150612ec38284612e2e565b9150612ece82612e88565b91508190509392505050565b600081519050919050565b600082825260208201905092915050565b6000612f0182612eda565b612f0b8185612ee5565b9350612f1b81856020860161229e565b612f24816122c8565b840191505092915050565b6000608082019050612f4460008301876123c9565b612f5160208301866123c9565b612f5e604083018561245f565b8181036060830152612f708184612ef6565b905095945050505050565b600081519050612f8a816121f3565b92915050565b600060208284031215612fa657612fa56121bd565b5b6000612fb484828501612f7b565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000612ff782612334565b915061300283612334565b925082820390508181111561301a57613019612941565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fdfea26469706673582212207d77e528e77ccbf54e9522b2816c9d3c96946311b175a9d4d69a9e0715d49e8a64736f6c63430008140033a2646970667358221220dc4d8d4af5d04e2310ef9495b7728ef6f95be8636d7225c9eec77ad2527a5d5464736f6c634300081400330000000000000000000000000000000000000000000000000000000000000002