6080604052612710600d5566071afd498d0000600e556032600f556103e8601055600060115560006012553480156200003757600080fd5b50604051620045603803806200456083398181016040528101906200005d9190620005c4565b6040518060400160405280600981526020017f426f72617065676f7300000000000000000000000000000000000000000000008152506040518060400160405280600381526020017f42415300000000000000000000000000000000000000000000000000000000008152508160029081620000da919062000860565b508060039081620000ec919062000860565b50620000fd6200015a60201b60201c565b600081905550505062000125620001196200015f60201b60201c565b6200016760201b60201c565b600160098190555080601390816200013e919062000860565b5062000153336103e86200022d60201b60201c565b5062000a62565b600090565b600033905090565b6000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b81601560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506200028082826200028460201b60201c565b5050565b620002946200042760201b60201c565b6bffffffffffffffffffffffff16816bffffffffffffffffffffffff161115620002f5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620002ec90620009ce565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362000367576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200035e9062000a40565b60405180910390fd5b60405180604001604052808373ffffffffffffffffffffffffffffffffffffffff168152602001826bffffffffffffffffffffffff16815250600a60008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160000160146101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff1602179055509050505050565b6000612710905090565b6000604051905090565b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6200049a826200044f565b810181811067ffffffffffffffff82111715620004bc57620004bb62000460565b5b80604052505050565b6000620004d162000431565b9050620004df82826200048f565b919050565b600067ffffffffffffffff82111562000502576200050162000460565b5b6200050d826200044f565b9050602081019050919050565b60005b838110156200053a5780820151818401526020810190506200051d565b60008484015250505050565b60006200055d6200055784620004e4565b620004c5565b9050828152602081018484840111156200057c576200057b6200044a565b5b620005898482856200051a565b509392505050565b600082601f830112620005a957620005a862000445565b5b8151620005bb84826020860162000546565b91505092915050565b600060208284031215620005dd57620005dc6200043b565b5b600082015167ffffffffffffffff811115620005fe57620005fd62000440565b5b6200060c8482850162000591565b91505092915050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200066857607f821691505b6020821081036200067e576200067d62000620565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620006e87fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82620006a9565b620006f48683620006a9565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b6000620007416200073b62000735846200070c565b62000716565b6200070c565b9050919050565b6000819050919050565b6200075d8362000720565b620007756200076c8262000748565b848454620006b6565b825550505050565b600090565b6200078c6200077d565b6200079981848462000752565b505050565b5b81811015620007c157620007b560008262000782565b6001810190506200079f565b5050565b601f8211156200081057620007da8162000684565b620007e58462000699565b81016020851015620007f5578190505b6200080d620008048562000699565b8301826200079e565b50505b505050565b600082821c905092915050565b6000620008356000198460080262000815565b1980831691505092915050565b600062000850838362000822565b9150826002028217905092915050565b6200086b8262000615565b67ffffffffffffffff81111562000887576200088662000460565b5b6200089382546200064f565b620008a0828285620007c5565b600060209050601f831160018114620008d85760008415620008c3578287015190505b620008cf858262000842565b8655506200093f565b601f198416620008e88662000684565b60005b828110156200091257848901518255600182019150602085019450602081019050620008eb565b868310156200093257848901516200092e601f89168262000822565b8355505b6001600288020188555050505b505050505050565b600082825260208201905092915050565b7f455243323938313a20726f79616c7479206665652077696c6c2065786365656460008201527f2073616c65507269636500000000000000000000000000000000000000000000602082015250565b6000620009b6602a8362000947565b9150620009c38262000958565b604082019050919050565b60006020820190508181036000830152620009e981620009a7565b9050919050565b7f455243323938313a20696e76616c696420726563656976657200000000000000600082015250565b600062000a2860198362000947565b915062000a3582620009f0565b602082019050919050565b6000602082019050818103600083015262000a5b8162000a19565b9050919050565b613aee8062000a726000396000f3fe6080604052600436106102045760003560e01c80636352211e1161011857806395d89b41116100a0578063b88d4fde1161006f578063b88d4fde146106dd578063c87b56dd146106f9578063de314a5914610736578063e985e9c514610761578063f2fde38b1461079e57610204565b806395d89b41146106425780639cb57d201461066d578063a0712d6814610698578063a22cb465146106b457610204565b8063715018a6116100e7578063715018a6146105975780637c69e207146105ae5780638da5cb5b146105c557806391b7f5ed146105f057806392910eec1461061957610204565b80636352211e146104c957806367a4f4a9146105065780636c0360eb1461052f57806370a082311461055a57610204565b8063190866921161019b5780633ccfd60b1161016a5780633ccfd60b1461042457806341c66d0a1461042e57806342842e0e1461045957806355f804b3146104755780635e1c4b601461049e57610204565b8063190866921461037457806322f4596f1461039f57806323b872dd146103ca5780632a55205a146103e657610204565b8063081812fc116101d7578063081812fc146102c5578063095ea7b3146103025780630afb04db1461031e57806318160ddd1461034957610204565b806301ffc9a7146102095780630387da421461024657806304634d8d1461027157806306fdde031461029a575b600080fd5b34801561021557600080fd5b50610230600480360381019061022b91906127f8565b6107c7565b60405161023d9190612840565b60405180910390f35b34801561025257600080fd5b5061025b6108c1565b6040516102689190612874565b60405180910390f35b34801561027d57600080fd5b5061029860048036038101906102939190612931565b6108c7565b005b3480156102a657600080fd5b506102af610916565b6040516102bc9190612a01565b60405180910390f35b3480156102d157600080fd5b506102ec60048036038101906102e79190612a4f565b6109a8565b6040516102f99190612a8b565b60405180910390f35b61031c60048036038101906103179190612aa6565b610a27565b005b34801561032a57600080fd5b50610333610b6b565b6040516103409190612874565b60405180910390f35b34801561035557600080fd5b5061035e610b71565b60405161036b9190612874565b60405180910390f35b34801561038057600080fd5b50610389610b88565b6040516103969190612a8b565b60405180910390f35b3480156103ab57600080fd5b506103b4610bae565b6040516103c19190612874565b60405180910390f35b6103e460048036038101906103df9190612ae6565b610bb4565b005b3480156103f257600080fd5b5061040d60048036038101906104089190612b39565b610ed6565b60405161041b929190612b79565b60405180910390f35b61042c610f18565b005b34801561043a57600080fd5b50610443610fa9565b6040516104509190612874565b60405180910390f35b610473600480360381019061046e9190612ae6565b610faf565b005b34801561048157600080fd5b5061049c60048036038101906104979190612cd7565b610fcf565b005b3480156104aa57600080fd5b506104b3610fea565b6040516104c09190612874565b60405180910390f35b3480156104d557600080fd5b506104f060048036038101906104eb9190612a4f565b610ff0565b6040516104fd9190612a8b565b60405180910390f35b34801561051257600080fd5b5061052d60048036038101906105289190612d20565b611002565b005b34801561053b57600080fd5b5061054461103b565b6040516105519190612a01565b60405180910390f35b34801561056657600080fd5b50610581600480360381019061057c9190612d60565b6110c9565b60405161058e9190612874565b60405180910390f35b3480156105a357600080fd5b506105ac611181565b005b3480156105ba57600080fd5b506105c3611195565b005b3480156105d157600080fd5b506105da61120c565b6040516105e79190612a8b565b60405180910390f35b3480156105fc57600080fd5b5061061760048036038101906106129190612a4f565b611236565b005b34801561062557600080fd5b50610640600480360381019061063b9190612a4f565b611248565b005b34801561064e57600080fd5b5061065761125a565b6040516106649190612a01565b60405180910390f35b34801561067957600080fd5b506106826112ec565b60405161068f9190612874565b60405180910390f35b6106b260048036038101906106ad9190612a4f565b6112f2565b005b3480156106c057600080fd5b506106db60048036038101906106d69190612db9565b611539565b005b6106f760048036038101906106f29190612e9a565b611644565b005b34801561070557600080fd5b50610720600480360381019061071b9190612a4f565b6116b7565b60405161072d9190612a01565b60405180910390f35b34801561074257600080fd5b5061074b611733565b6040516107589190612874565b60405180910390f35b34801561076d57600080fd5b5061078860048036038101906107839190612f1d565b611739565b6040516107959190612840565b60405180910390f35b3480156107aa57600080fd5b506107c560048036038101906107c09190612d60565b61179e565b005b60007f2a55205a000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061085a57506301ffc9a760e01b827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b8061088a57506380ac58cd60e01b827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b806108ba5750635b5e139f60e01b827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b9050919050565b600e5481565b81601560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506109128282611821565b5050565b60606002805461092590612f8c565b80601f016020809104026020016040519081016040528092919081815260200182805461095190612f8c565b801561099e5780601f106109735761010080835404028352916020019161099e565b820191906000526020600020905b81548152906001019060200180831161098157829003601f168201915b5050505050905090565b60006109b3826119b6565b6109e9576040517fcf4700e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6006600083815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6000610a3282610ff0565b90508073ffffffffffffffffffffffffffffffffffffffff16610a53611a15565b73ffffffffffffffffffffffffffffffffffffffff1614610ab657610a7f81610a7a611a15565b611739565b610ab5576040517fcfb3b94200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5b826006600084815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550818373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a4505050565b600c5481565b6000610b7b611a1d565b6001546000540303905090565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600d5481565b6000610bbf82611a22565b90508373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610c26576040517fa114810000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080610c3284611aee565b91509150610c488187610c43611a15565b611b15565b610c9457610c5d86610c58611a15565b611739565b610c93576040517f59c896be00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5b600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1603610cfa576040517fea553b3400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610d078686866001611b59565b8015610d1257600082555b600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600081546001900391905081905550600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000815460010191905081905550610de085610dbc888887611b5f565b7c020000000000000000000000000000000000000000000000000000000017611b87565b600460008681526020019081526020016000208190555060007c0200000000000000000000000000000000000000000000000000000000841603610e665760006001850190506000600460008381526020019081526020016000205403610e64576000548114610e63578360046000838152602001908152602001600020819055505b5b505b838573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4610ece8686866001611bb2565b505050505050565b6000806000610ee58585611bb8565b915050601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168192509250509250929050565b610f20611da2565b610f28611e20565b60003373ffffffffffffffffffffffffffffffffffffffff1647604051610f4e90612fee565b60006040518083038185875af1925050503d8060008114610f8b576040519150601f19603f3d011682016040523d82523d6000602084013e610f90565b606091505b5050905080610f9e57600080fd5b50610fa7611e6f565b565b60125481565b610fca83838360405180602001604052806000815250611644565b505050565b610fd7611da2565b8060139081610fe691906131af565b5050565b60115481565b6000610ffb82611a22565b9050919050565b61100a611da2565b61103782601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683611e79565b5050565b6013805461104890612f8c565b80601f016020809104026020016040519081016040528092919081815260200182805461107490612f8c565b80156110c15780601f10611096576101008083540402835291602001916110c1565b820191906000526020600020905b8154815290600101906020018083116110a457829003601f168201915b505050505081565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611130576040517f8f4eb60400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b67ffffffffffffffff600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054169050919050565b611189611da2565b6111936000612020565b565b61119d611da2565b601254600c60008282546111b191906132b0565b925050819055507f8d8664e4328cbcd16b52db004cff5622d17995140cefada9f4578b857f9b204e6111e16120e6565b600c546012546040516111f6939291906132e4565b60405180910390a161120a336012546120ee565b565b6000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b61123e611da2565b80600e8190555050565b611250611da2565b8060118190555050565b60606003805461126990612f8c565b80601f016020809104026020016040519081016040528092919081815260200182805461129590612f8c565b80156112e25780601f106112b7576101008083540402835291602001916112e2565b820191906000526020600020905b8154815290600101906020018083116112c557829003601f168201915b5050505050905090565b60105481565b6000600e5490506000600160115461130a91906132b0565b83611313610b71565b61131d91906132b0565b108015611376575060105483601460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461137391906132b0565b11155b806113b3575061138461120c565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b905080156113c057600091505b81836113cc919061331b565b34101561140e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611405906133a9565b60405180910390fd5b6001601254600d5461142091906133c9565b61142a91906132b0565b83611433610b71565b61143d91906132b0565b1061147d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161147490613449565b60405180910390fd5b6001600f5461148c91906132b0565b83106114cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114c4906134b5565b60405180910390fd5b801561152a5782601460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461152291906132b0565b925050819055505b61153433846120ee565b505050565b8060076000611546611a15565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff166115f3611a15565b73ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31836040516116389190612840565b60405180910390a35050565b61164f848484610bb4565b60008373ffffffffffffffffffffffffffffffffffffffff163b146116b15761167a8484848461210c565b6116b0576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5b50505050565b60606116c2826119b6565b611701576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116f890613547565b60405180910390fd5b601361170c8361225c565b60405160200161171d929190613672565b6040516020818303038152906040529050919050565b600f5481565b600073f849de01b080adc3a814fabe1e2087475cf2e35473ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361178b5760009050611798565b611795838361232a565b90505b92915050565b6117a6611da2565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611815576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161180c90613713565b60405180910390fd5b61181e81612020565b50565b6118296123be565b6bffffffffffffffffffffffff16816bffffffffffffffffffffffff161115611887576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161187e906137a5565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036118f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118ed90613811565b60405180910390fd5b60405180604001604052808373ffffffffffffffffffffffffffffffffffffffff168152602001826bffffffffffffffffffffffff16815250600a60008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160000160146101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff1602179055509050505050565b6000816119c1611a1d565b111580156119d0575060005482105b8015611a0e575060007c0100000000000000000000000000000000000000000000000000000000600460008581526020019081526020016000205416145b9050919050565b600033905090565b600090565b60008082905080611a31611a1d565b11611ab757600054811015611ab65760006004600083815260200190815260200160002054905060007c0100000000000000000000000000000000000000000000000000000000821603611ab4575b60008103611aaa576004600083600190039350838152602001908152602001600020549050611a80565b8092505050611ae9565b505b5b6040517fdf2d9b4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b919050565b60008060006006600085815260200190815260200160002090508092508254915050915091565b600073ffffffffffffffffffffffffffffffffffffffff8316925073ffffffffffffffffffffffffffffffffffffffff821691508382148383141790509392505050565b50505050565b60008060e883901c905060e8611b768686846123c8565b62ffffff16901b9150509392505050565b600073ffffffffffffffffffffffffffffffffffffffff83169250814260a01b178317905092915050565b50505050565b6000806000600b60008681526020019081526020016000206040518060400160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016000820160149054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff166bffffffffffffffffffffffff16815250509050600073ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff1603611d4d57600a6040518060400160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016000820160149054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff166bffffffffffffffffffffffff168152505090505b6000611d576123be565b6bffffffffffffffffffffffff1682602001516bffffffffffffffffffffffff1686611d83919061331b565b611d8d9190613860565b90508160000151819350935050509250929050565b611daa6120e6565b73ffffffffffffffffffffffffffffffffffffffff16611dc861120c565b73ffffffffffffffffffffffffffffffffffffffff1614611e1e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e15906138dd565b60405180910390fd5b565b600260095403611e65576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e5c90613949565b60405180910390fd5b6002600981905550565b6001600981905550565b611e816123be565b6bffffffffffffffffffffffff16816bffffffffffffffffffffffff161115611edf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ed6906137a5565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611f4e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f45906139b5565b60405180910390fd5b60405180604001604052808373ffffffffffffffffffffffffffffffffffffffff168152602001826bffffffffffffffffffffffff16815250600b600085815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160000160146101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff160217905550905050505050565b6000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600033905090565b6121088282604051806020016040528060008152506123d1565b5050565b60008373ffffffffffffffffffffffffffffffffffffffff1663150b7a02612132611a15565b8786866040518563ffffffff1660e01b81526004016121549493929190613a2a565b6020604051808303816000875af192505050801561219057506040513d601f19601f8201168201806040525081019061218d9190613a8b565b60015b612209573d80600081146121c0576040519150601f19603f3d011682016040523d82523d6000602084013e6121c5565b606091505b506000815103612201576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614915050949350505050565b60606000600161226b8461246e565b01905060008167ffffffffffffffff81111561228a57612289612bac565b5b6040519080825280601f01601f1916602001820160405280156122bc5781602001600182028036833780820191505090505b509050600082602001820190505b60011561231f578080600190039150507f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a858161231357612312613831565b5b049450600085036122ca575b819350505050919050565b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6000612710905090565b60009392505050565b6123db83836125c1565b60008373ffffffffffffffffffffffffffffffffffffffff163b1461246957600080549050600083820390505b61241b600086838060010194508661210c565b612451576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81811061240857816000541461246657600080fd5b50505b505050565b600080600090507a184f03e93ff9f4daa797ed6e38ed64bf6a1f01000000000000000083106124cc577a184f03e93ff9f4daa797ed6e38ed64bf6a1f01000000000000000083816124c2576124c1613831565b5b0492506040810190505b6d04ee2d6d415b85acef81000000008310612509576d04ee2d6d415b85acef810000000083816124ff576124fe613831565b5b0492506020810190505b662386f26fc10000831061253857662386f26fc10000838161252e5761252d613831565b5b0492506010810190505b6305f5e1008310612561576305f5e100838161255757612556613831565b5b0492506008810190505b612710831061258657612710838161257c5761257b613831565b5b0492506004810190505b606483106125a9576064838161259f5761259e613831565b5b0492506002810190505b600a83106125b8576001810190505b80915050919050565b60008054905060008203612601576040517fb562e8dd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61260e6000848385611b59565b600160406001901b178202600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550612685836126766000866000611b5f565b61267f8561277c565b17611b87565b6004600083815260200190815260200160002081905550600080838301905073ffffffffffffffffffffffffffffffffffffffff85169150828260007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600080a4600183015b81811461272657808360007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600080a46001810190506126eb565b5060008203612761576040517f2e07630000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060008190555050506127776000848385611bb2565b505050565b60006001821460e11b9050919050565b6000604051905090565b600080fd5b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6127d5816127a0565b81146127e057600080fd5b50565b6000813590506127f2816127cc565b92915050565b60006020828403121561280e5761280d612796565b5b600061281c848285016127e3565b91505092915050565b60008115159050919050565b61283a81612825565b82525050565b60006020820190506128556000830184612831565b92915050565b6000819050919050565b61286e8161285b565b82525050565b60006020820190506128896000830184612865565b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006128ba8261288f565b9050919050565b6128ca816128af565b81146128d557600080fd5b50565b6000813590506128e7816128c1565b92915050565b60006bffffffffffffffffffffffff82169050919050565b61290e816128ed565b811461291957600080fd5b50565b60008135905061292b81612905565b92915050565b6000806040838503121561294857612947612796565b5b6000612956858286016128d8565b92505060206129678582860161291c565b9150509250929050565b600081519050919050565b600082825260208201905092915050565b60005b838110156129ab578082015181840152602081019050612990565b60008484015250505050565b6000601f19601f8301169050919050565b60006129d382612971565b6129dd818561297c565b93506129ed81856020860161298d565b6129f6816129b7565b840191505092915050565b60006020820190508181036000830152612a1b81846129c8565b905092915050565b612a2c8161285b565b8114612a3757600080fd5b50565b600081359050612a4981612a23565b92915050565b600060208284031215612a6557612a64612796565b5b6000612a7384828501612a3a565b91505092915050565b612a85816128af565b82525050565b6000602082019050612aa06000830184612a7c565b92915050565b60008060408385031215612abd57612abc612796565b5b6000612acb858286016128d8565b9250506020612adc85828601612a3a565b9150509250929050565b600080600060608486031215612aff57612afe612796565b5b6000612b0d868287016128d8565b9350506020612b1e868287016128d8565b9250506040612b2f86828701612a3a565b9150509250925092565b60008060408385031215612b5057612b4f612796565b5b6000612b5e85828601612a3a565b9250506020612b6f85828601612a3a565b9150509250929050565b6000604082019050612b8e6000830185612a7c565b612b9b6020830184612865565b9392505050565b600080fd5b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b612be4826129b7565b810181811067ffffffffffffffff82111715612c0357612c02612bac565b5b80604052505050565b6000612c1661278c565b9050612c228282612bdb565b919050565b600067ffffffffffffffff821115612c4257612c41612bac565b5b612c4b826129b7565b9050602081019050919050565b82818337600083830152505050565b6000612c7a612c7584612c27565b612c0c565b905082815260208101848484011115612c9657612c95612ba7565b5b612ca1848285612c58565b509392505050565b600082601f830112612cbe57612cbd612ba2565b5b8135612cce848260208601612c67565b91505092915050565b600060208284031215612ced57612cec612796565b5b600082013567ffffffffffffffff811115612d0b57612d0a61279b565b5b612d1784828501612ca9565b91505092915050565b60008060408385031215612d3757612d36612796565b5b6000612d4585828601612a3a565b9250506020612d568582860161291c565b9150509250929050565b600060208284031215612d7657612d75612796565b5b6000612d84848285016128d8565b91505092915050565b612d9681612825565b8114612da157600080fd5b50565b600081359050612db381612d8d565b92915050565b60008060408385031215612dd057612dcf612796565b5b6000612dde858286016128d8565b9250506020612def85828601612da4565b9150509250929050565b600067ffffffffffffffff821115612e1457612e13612bac565b5b612e1d826129b7565b9050602081019050919050565b6000612e3d612e3884612df9565b612c0c565b905082815260208101848484011115612e5957612e58612ba7565b5b612e64848285612c58565b509392505050565b600082601f830112612e8157612e80612ba2565b5b8135612e91848260208601612e2a565b91505092915050565b60008060008060808587031215612eb457612eb3612796565b5b6000612ec2878288016128d8565b9450506020612ed3878288016128d8565b9350506040612ee487828801612a3a565b925050606085013567ffffffffffffffff811115612f0557612f0461279b565b5b612f1187828801612e6c565b91505092959194509250565b60008060408385031215612f3457612f33612796565b5b6000612f42858286016128d8565b9250506020612f53858286016128d8565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680612fa457607f821691505b602082108103612fb757612fb6612f5d565b5b50919050565b600081905092915050565b50565b6000612fd8600083612fbd565b9150612fe382612fc8565b600082019050919050565b6000612ff982612fcb565b9150819050919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026130657fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82613028565b61306f8683613028565b95508019841693508086168417925050509392505050565b6000819050919050565b60006130ac6130a76130a28461285b565b613087565b61285b565b9050919050565b6000819050919050565b6130c683613091565b6130da6130d2826130b3565b848454613035565b825550505050565b600090565b6130ef6130e2565b6130fa8184846130bd565b505050565b5b8181101561311e576131136000826130e7565b600181019050613100565b5050565b601f8211156131635761313481613003565b61313d84613018565b8101602085101561314c578190505b61316061315885613018565b8301826130ff565b50505b505050565b600082821c905092915050565b600061318660001984600802613168565b1980831691505092915050565b600061319f8383613175565b9150826002028217905092915050565b6131b882612971565b67ffffffffffffffff8111156131d1576131d0612bac565b5b6131db8254612f8c565b6131e6828285613122565b600060209050601f8311600181146132195760008415613207578287015190505b6132118582613193565b865550613279565b601f19841661322786613003565b60005b8281101561324f5784890151825560018201915060208501945060208101905061322a565b8683101561326c5784890151613268601f891682613175565b8355505b6001600288020188555050505b505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006132bb8261285b565b91506132c68361285b565b92508282019050808211156132de576132dd613281565b5b92915050565b60006060820190506132f96000830186612a7c565b6133066020830185612865565b6133136040830184612865565b949350505050565b60006133268261285b565b91506133318361285b565b925082820261333f8161285b565b9150828204841483151761335657613355613281565b5b5092915050565b7f506c656173652073656e642074686520657861637420616d6f756e742e000000600082015250565b6000613393601d8361297c565b915061339e8261335d565b602082019050919050565b600060208201905081810360008301526133c281613386565b9050919050565b60006133d48261285b565b91506133df8361285b565b92508282039050818111156133f7576133f6613281565b5b92915050565b7f536f6c64206f7574210000000000000000000000000000000000000000000000600082015250565b600061343360098361297c565b915061343e826133fd565b602082019050919050565b6000602082019050818103600083015261346281613426565b9050919050565b7f4d61782070657220545820726561636865642e00000000000000000000000000600082015250565b600061349f60138361297c565b91506134aa82613469565b602082019050919050565b600060208201905081810360008301526134ce81613492565b9050919050565b7f4552433732314d657461646174613a2055524920717565727920666f72206e6f60008201527f6e6578697374656e7420746f6b656e0000000000000000000000000000000000602082015250565b6000613531602f8361297c565b915061353c826134d5565b604082019050919050565b6000602082019050818103600083015261356081613524565b9050919050565b600081905092915050565b6000815461357f81612f8c565b6135898186613567565b945060018216600081146135a457600181146135b9576135ec565b60ff19831686528115158202860193506135ec565b6135c285613003565b60005b838110156135e4578154818901526001820191506020810190506135c5565b838801955050505b50505092915050565b600061360082612971565b61360a8185613567565b935061361a81856020860161298d565b80840191505092915050565b7f2e6a736f6e000000000000000000000000000000000000000000000000000000600082015250565b600061365c600583613567565b915061366782613626565b600582019050919050565b600061367e8285613572565b915061368a82846135f5565b91506136958261364f565b91508190509392505050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006136fd60268361297c565b9150613708826136a1565b604082019050919050565b6000602082019050818103600083015261372c816136f0565b9050919050565b7f455243323938313a20726f79616c7479206665652077696c6c2065786365656460008201527f2073616c65507269636500000000000000000000000000000000000000000000602082015250565b600061378f602a8361297c565b915061379a82613733565b604082019050919050565b600060208201905081810360008301526137be81613782565b9050919050565b7f455243323938313a20696e76616c696420726563656976657200000000000000600082015250565b60006137fb60198361297c565b9150613806826137c5565b602082019050919050565b6000602082019050818103600083015261382a816137ee565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061386b8261285b565b91506138768361285b565b92508261388657613885613831565b5b828204905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006138c760208361297c565b91506138d282613891565b602082019050919050565b600060208201905081810360008301526138f6816138ba565b9050919050565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00600082015250565b6000613933601f8361297c565b915061393e826138fd565b602082019050919050565b6000602082019050818103600083015261396281613926565b9050919050565b7f455243323938313a20496e76616c696420706172616d65746572730000000000600082015250565b600061399f601b8361297c565b91506139aa82613969565b602082019050919050565b600060208201905081810360008301526139ce81613992565b9050919050565b600081519050919050565b600082825260208201905092915050565b60006139fc826139d5565b613a0681856139e0565b9350613a1681856020860161298d565b613a1f816129b7565b840191505092915050565b6000608082019050613a3f6000830187612a7c565b613a4c6020830186612a7c565b613a596040830185612865565b8181036060830152613a6b81846139f1565b905095945050505050565b600081519050613a85816127cc565b92915050565b600060208284031215613aa157613aa0612796565b5b6000613aaf84828501613a76565b9150509291505056fea2646970667358221220de48204d9f1d65173c4739348bcee47a19b3f8dde6518fa602327237d39cf3c964736f6c6343000813003300000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000