6080604052604051806080016040528060438152602001620040fe60439139600a90816200002e91906200049f565b506101f4600b55662386f26fc10000600c556000600d556000600e556000600f556001601060006101000a81548160ff0219169083151502179055503480156200007757600080fd5b506040518060400160405280600781526020017f4e6f2d46616365000000000000000000000000000000000000000000000000008152506040518060400160405280600381526020017f4e464600000000000000000000000000000000000000000000000000000000008152508160029081620000f591906200049f565b5080600390816200010791906200049f565b50620001186200014e60201b60201c565b600081905550505062000140620001346200015760201b60201c565b6200015f60201b60201c565b600160098190555062000586565b60006001905090565b600033905090565b6000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680620002a757607f821691505b602082108103620002bd57620002bc6200025f565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620003277fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82620002e8565b620003338683620002e8565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b6000620003806200037a62000374846200034b565b62000355565b6200034b565b9050919050565b6000819050919050565b6200039c836200035f565b620003b4620003ab8262000387565b848454620002f5565b825550505050565b600090565b620003cb620003bc565b620003d881848462000391565b505050565b5b818110156200040057620003f4600082620003c1565b600181019050620003de565b5050565b601f8211156200044f576200041981620002c3565b6200042484620002d8565b8101602085101562000434578190505b6200044c6200044385620002d8565b830182620003dd565b50505b505050565b600082821c905092915050565b6000620004746000198460080262000454565b1980831691505092915050565b60006200048f838362000461565b9150826002028217905092915050565b620004aa8262000225565b67ffffffffffffffff811115620004c657620004c562000230565b5b620004d282546200028e565b620004df82828562000404565b600060209050601f83116001811462000517576000841562000502578287015190505b6200050e858262000481565b8655506200057e565b601f1984166200052786620002c3565b60005b8281101562000551578489015182556001820191506020850194506020810190506200052a565b868310156200057157848901516200056d601f89168262000461565b8355505b6001600288020188555050505b505050505050565b613b6880620005966000396000f3fe6080604052600436106101f95760003560e01c806370a082311161010d578063a22cb465116100a0578063d547cfb71161006f578063d547cfb7146106ea578063e985e9c514610715578063efdc778814610752578063f2fde38b1461077b578063f6511f93146107a4576101f9565b8063a22cb46514610630578063b88d4fde14610659578063c6a91b4214610682578063c87b56dd146106ad576101f9565b8063982d669e116100dc578063982d669e1461059557806398710d1e146105c05780639e9fcffc146105eb578063a0712d6814610614576101f9565b806370a08231146104eb578063715018a6146105285780638da5cb5b1461053f57806395d89b411461056a576101f9565b8063193ad7b41161019057806328cad13d1161015f57806328cad13d1461041c5780633ccfd60b1461044557806342842e0e1461045c57806355f804b3146104855780636352211e146104ae576101f9565b8063193ad7b4146103745780631e84c4131461039f578063202f298a146103ca57806323b872dd146103f3576101f9565b8063095ea7b3116101cc578063095ea7b3146102ce5780630a00ae83146102f757806318160ddd146103205780631919fed71461034b576101f9565b806301ffc9a7146101fe57806306fdde031461023b57806307e89ec014610266578063081812fc14610291575b600080fd5b34801561020a57600080fd5b5061022560048036038101906102209190612a55565b6107e1565b6040516102329190612a9d565b60405180910390f35b34801561024757600080fd5b506102506108c3565b60405161025d9190612b48565b60405180910390f35b34801561027257600080fd5b5061027b610955565b6040516102889190612b83565b60405180910390f35b34801561029d57600080fd5b506102b860048036038101906102b39190612bca565b61095b565b6040516102c59190612c38565b60405180910390f35b3480156102da57600080fd5b506102f560048036038101906102f09190612c7f565b6109d7565b005b34801561030357600080fd5b5061031e60048036038101906103199190612bca565b610ae1565b005b34801561032c57600080fd5b50610335610b67565b6040516103429190612b83565b60405180910390f35b34801561035757600080fd5b50610372600480360381019061036d9190612bca565b610b7e565b005b34801561038057600080fd5b50610389610c04565b6040516103969190612b83565b60405180910390f35b3480156103ab57600080fd5b506103b4610c0a565b6040516103c19190612a9d565b60405180910390f35b3480156103d657600080fd5b506103f160048036038101906103ec9190612bca565b610c1d565b005b3480156103ff57600080fd5b5061041a60048036038101906104159190612cbf565b610ca3565b005b34801561042857600080fd5b50610443600480360381019061043e9190612d3e565b610cb3565b005b34801561045157600080fd5b5061045a610d4c565b005b34801561046857600080fd5b50610483600480360381019061047e9190612cbf565b610e29565b005b34801561049157600080fd5b506104ac60048036038101906104a79190612ea0565b610e49565b005b3480156104ba57600080fd5b506104d560048036038101906104d09190612bca565b610ed8565b6040516104e29190612c38565b60405180910390f35b3480156104f757600080fd5b50610512600480360381019061050d9190612ee9565b610eee565b60405161051f9190612b83565b60405180910390f35b34801561053457600080fd5b5061053d610fbd565b005b34801561054b57600080fd5b50610554611045565b6040516105619190612c38565b60405180910390f35b34801561057657600080fd5b5061057f61106f565b60405161058c9190612b48565b60405180910390f35b3480156105a157600080fd5b506105aa611101565b6040516105b79190612b83565b60405180910390f35b3480156105cc57600080fd5b506105d5611107565b6040516105e29190612b83565b60405180910390f35b3480156105f757600080fd5b50610612600480360381019061060d9190612bca565b61110d565b005b61062e60048036038101906106299190612bca565b611193565b005b34801561063c57600080fd5b5061065760048036038101906106529190612f16565b61140e565b005b34801561066557600080fd5b50610680600480360381019061067b9190612ff7565b611585565b005b34801561068e57600080fd5b50610697611601565b6040516106a49190612b83565b60405180910390f35b3480156106b957600080fd5b506106d460048036038101906106cf9190612bca565b611607565b6040516106e19190612b48565b60405180910390f35b3480156106f657600080fd5b506106ff611679565b60405161070c9190612b48565b60405180910390f35b34801561072157600080fd5b5061073c6004803603810190610737919061307a565b611707565b6040516107499190612a9d565b60405180910390f35b34801561075e57600080fd5b5061077960048036038101906107749190612bca565b61179b565b005b34801561078757600080fd5b506107a2600480360381019061079d9190612ee9565b611867565b005b3480156107b057600080fd5b506107cb60048036038101906107c69190612bca565b61195e565b6040516107d89190612b83565b60405180910390f35b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806108ac57507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b806108bc57506108bb826119d1565b5b9050919050565b6060600280546108d2906130e9565b80601f01602080910402602001604051908101604052809291908181526020018280546108fe906130e9565b801561094b5780601f106109205761010080835404028352916020019161094b565b820191906000526020600020905b81548152906001019060200180831161092e57829003601f168201915b5050505050905090565b600c5481565b600061096682611a3b565b61099c576040517fcf4700e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6006600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b60006109e282610ed8565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610a49576040517f943f7b8c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16610a68611a89565b73ffffffffffffffffffffffffffffffffffffffff1614158015610a9a5750610a9881610a93611a89565b611707565b155b15610ad1576040517fcfb3b94200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610adc838383611a91565b505050565b610ae9611a89565b73ffffffffffffffffffffffffffffffffffffffff16610b07611045565b73ffffffffffffffffffffffffffffffffffffffff1614610b5d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b5490613166565b60405180910390fd5b80600d8190555050565b6000610b71611b43565b6001546000540303905090565b610b86611a89565b73ffffffffffffffffffffffffffffffffffffffff16610ba4611045565b73ffffffffffffffffffffffffffffffffffffffff1614610bfa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bf190613166565b60405180910390fd5b80600c8190555050565b600f5481565b601060009054906101000a900460ff1681565b610c25611a89565b73ffffffffffffffffffffffffffffffffffffffff16610c43611045565b73ffffffffffffffffffffffffffffffffffffffff1614610c99576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c9090613166565b60405180910390fd5b80600e8190555050565b610cae838383611b4c565b505050565b610cbb611a89565b73ffffffffffffffffffffffffffffffffffffffff16610cd9611045565b73ffffffffffffffffffffffffffffffffffffffff1614610d2f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d2690613166565b60405180910390fd5b80601060006101000a81548160ff02191690831515021790555050565b610d54611a89565b73ffffffffffffffffffffffffffffffffffffffff16610d72611045565b73ffffffffffffffffffffffffffffffffffffffff1614610dc8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dbf90613166565b60405180910390fd5b600260095403610e0d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e04906131d2565b60405180910390fd5b6002600981905550610e1f3347612000565b6001600981905550565b610e4483838360405180602001604052806000815250611585565b505050565b610e51611a89565b73ffffffffffffffffffffffffffffffffffffffff16610e6f611045565b73ffffffffffffffffffffffffffffffffffffffff1614610ec5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ebc90613166565b60405180910390fd5b80600a9081610ed4919061339e565b5050565b6000610ee3826120f4565b600001519050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610f55576040517f8f4eb60400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900467ffffffffffffffff1667ffffffffffffffff169050919050565b610fc5611a89565b73ffffffffffffffffffffffffffffffffffffffff16610fe3611045565b73ffffffffffffffffffffffffffffffffffffffff1614611039576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161103090613166565b60405180910390fd5b6110436000612383565b565b6000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606003805461107e906130e9565b80601f01602080910402602001604051908101604052809291908181526020018280546110aa906130e9565b80156110f75780601f106110cc576101008083540402835291602001916110f7565b820191906000526020600020905b8154815290600101906020018083116110da57829003601f168201915b5050505050905090565b600d5481565b600e5481565b611115611a89565b73ffffffffffffffffffffffffffffffffffffffff16611133611045565b73ffffffffffffffffffffffffffffffffffffffff1614611189576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161118090613166565b60405180910390fd5b80600b8190555050565b601060009054906101000a900460ff166111e2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111d9906134bc565b60405180910390fd5b60006111ed8261195e565b905060007378c13d24586617914514347dc7664c7e1512d0319050600d5483600f54611219919061350b565b11156112ae5734821115611262576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112599061358b565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051600060405180830381858888f193505050501580156112a8573d6000803e3d6000fd5b506113ff565b600e54836112bb33610eee565b6112c5919061350b565b111561139f573482111561130e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113059061358b565b60405180910390fd5b600b54831115611353576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161134a9061361d565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051600060405180830381858888f19350505050158015611399573d6000803e3d6000fd5b506113fe565b600e548311156113e4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113db9061361d565b60405180910390fd5b82600f60008282546113f6919061350b565b925050819055505b5b6114093384612449565b505050565b611416611a89565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361147a576040517fb06307db00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060076000611487611a89565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff16611534611a89565b73ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31836040516115799190612a9d565b60405180910390a35050565b611590848484611b4c565b6115af8373ffffffffffffffffffffffffffffffffffffffff16612467565b80156115c457506115c28484848461248a565b155b156115fb576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50505050565b600b5481565b606061161282611a3b565b611651576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611648906136af565b60405180910390fd5b600a60405160200161166391906137a9565b6040516020818303038152906040529050919050565b600a8054611686906130e9565b80601f01602080910402602001604051908101604052809291908181526020018280546116b2906130e9565b80156116ff5780601f106116d4576101008083540402835291602001916116ff565b820191906000526020600020905b8154815290600101906020018083116116e257829003601f168201915b505050505081565b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6117a3611a89565b73ffffffffffffffffffffffffffffffffffffffff166117c1611045565b73ffffffffffffffffffffffffffffffffffffffff1614611817576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161180e90613166565b60405180910390fd5b6000811161185a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161185190613817565b60405180910390fd5b6118643382612449565b50565b61186f611a89565b73ffffffffffffffffffffffffffffffffffffffff1661188d611045565b73ffffffffffffffffffffffffffffffffffffffff16146118e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118da90613166565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611952576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611949906138a9565b60405180910390fd5b61195b81612383565b50565b60006001820361197757661f44767eab100090506119cc565b6007820361198c5764e8990a460090506119cc565b603282036119a357661c6cdba6cd2c0090506119cc565b606482036119bb5767011c3879fea12c0090506119cc565b81600c546119c991906138c9565b90505b919050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b600081611a46611b43565b11158015611a55575060005482105b8015611a82575060046000838152602001908152602001600020600001601c9054906101000a900460ff16155b9050919050565b600033905090565b826006600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550818373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a4505050565b60006001905090565b6000611b57826120f4565b90508373ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff1614611bc2576040517fa114810000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008473ffffffffffffffffffffffffffffffffffffffff16611be3611a89565b73ffffffffffffffffffffffffffffffffffffffff161480611c125750611c1185611c0c611a89565b611707565b5b80611c575750611c20611a89565b73ffffffffffffffffffffffffffffffffffffffff16611c3f8461095b565b73ffffffffffffffffffffffffffffffffffffffff16145b905080611c90576040517f59c896be00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603611cf6576040517fea553b3400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611d0385858560016125da565b611d0f60008487611a91565b6001600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008282829054906101000a900467ffffffffffffffff160392506101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055506001600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008282829054906101000a900467ffffffffffffffff160192506101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055506000600460008581526020019081526020016000209050848160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550428160000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555060006001850190506000600460008381526020019081526020016000209050600073ffffffffffffffffffffffffffffffffffffffff168160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1603611f8e576000548214611f8d57878160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555084602001518160000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055505b5b505050828473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4611ff985858560016125e0565b5050505050565b80471015612043576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161203a90613957565b60405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff1682604051612069906139a8565b60006040518083038185875af1925050503d80600081146120a6576040519150601f19603f3d011682016040523d82523d6000602084013e6120ab565b606091505b50509050806120ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120e690613a2f565b60405180910390fd5b505050565b6120fc6129a6565b60008290508061210a611b43565b11158015612119575060005481105b1561234c576000600460008381526020019081526020016000206040518060600160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016000820160149054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201601c9054906101000a900460ff1615151515815250509050806040015161234a57600073ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff161461222e57809250505061237e565b5b60011561234957818060019003925050600460008381526020019081526020016000206040518060600160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016000820160149054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201601c9054906101000a900460ff1615151515815250509050600073ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff161461234457809250505061237e565b61222f565b5b505b6040517fdf2d9b4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b919050565b6000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6124638282604051806020016040528060008152506125e6565b5050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b60008373ffffffffffffffffffffffffffffffffffffffff1663150b7a026124b0611a89565b8786866040518563ffffffff1660e01b81526004016124d29493929190613aa4565b6020604051808303816000875af192505050801561250e57506040513d601f19601f8201168201806040525081019061250b9190613b05565b60015b612587573d806000811461253e576040519150601f19603f3d011682016040523d82523d6000602084013e612543565b606091505b50600081510361257f576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614915050949350505050565b50505050565b50505050565b600080549050600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603612652576040517f2e07630000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000830361268c576040517fb562e8dd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61269960008583866125da565b82600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008282829054906101000a900467ffffffffffffffff160192506101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555082600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160088282829054906101000a900467ffffffffffffffff160192506101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550836004600083815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550426004600083815260200190815260200160002060000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555060008190506000848201905061285a8673ffffffffffffffffffffffffffffffffffffffff16612467565b1561291f575b818673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a46128cf600087848060010195508761248a565b612905576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80820361286057826000541461291a57600080fd5b61298a565b5b818060010192508673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4808203612920575b8160008190555050506129a060008583866125e0565b50505050565b6040518060600160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001600067ffffffffffffffff1681526020016000151581525090565b6000604051905090565b600080fd5b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b612a32816129fd565b8114612a3d57600080fd5b50565b600081359050612a4f81612a29565b92915050565b600060208284031215612a6b57612a6a6129f3565b5b6000612a7984828501612a40565b91505092915050565b60008115159050919050565b612a9781612a82565b82525050565b6000602082019050612ab26000830184612a8e565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612af2578082015181840152602081019050612ad7565b60008484015250505050565b6000601f19601f8301169050919050565b6000612b1a82612ab8565b612b248185612ac3565b9350612b34818560208601612ad4565b612b3d81612afe565b840191505092915050565b60006020820190508181036000830152612b628184612b0f565b905092915050565b6000819050919050565b612b7d81612b6a565b82525050565b6000602082019050612b986000830184612b74565b92915050565b612ba781612b6a565b8114612bb257600080fd5b50565b600081359050612bc481612b9e565b92915050565b600060208284031215612be057612bdf6129f3565b5b6000612bee84828501612bb5565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612c2282612bf7565b9050919050565b612c3281612c17565b82525050565b6000602082019050612c4d6000830184612c29565b92915050565b612c5c81612c17565b8114612c6757600080fd5b50565b600081359050612c7981612c53565b92915050565b60008060408385031215612c9657612c956129f3565b5b6000612ca485828601612c6a565b9250506020612cb585828601612bb5565b9150509250929050565b600080600060608486031215612cd857612cd76129f3565b5b6000612ce686828701612c6a565b9350506020612cf786828701612c6a565b9250506040612d0886828701612bb5565b9150509250925092565b612d1b81612a82565b8114612d2657600080fd5b50565b600081359050612d3881612d12565b92915050565b600060208284031215612d5457612d536129f3565b5b6000612d6284828501612d29565b91505092915050565b600080fd5b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b612dad82612afe565b810181811067ffffffffffffffff82111715612dcc57612dcb612d75565b5b80604052505050565b6000612ddf6129e9565b9050612deb8282612da4565b919050565b600067ffffffffffffffff821115612e0b57612e0a612d75565b5b612e1482612afe565b9050602081019050919050565b82818337600083830152505050565b6000612e43612e3e84612df0565b612dd5565b905082815260208101848484011115612e5f57612e5e612d70565b5b612e6a848285612e21565b509392505050565b600082601f830112612e8757612e86612d6b565b5b8135612e97848260208601612e30565b91505092915050565b600060208284031215612eb657612eb56129f3565b5b600082013567ffffffffffffffff811115612ed457612ed36129f8565b5b612ee084828501612e72565b91505092915050565b600060208284031215612eff57612efe6129f3565b5b6000612f0d84828501612c6a565b91505092915050565b60008060408385031215612f2d57612f2c6129f3565b5b6000612f3b85828601612c6a565b9250506020612f4c85828601612d29565b9150509250929050565b600067ffffffffffffffff821115612f7157612f70612d75565b5b612f7a82612afe565b9050602081019050919050565b6000612f9a612f9584612f56565b612dd5565b905082815260208101848484011115612fb657612fb5612d70565b5b612fc1848285612e21565b509392505050565b600082601f830112612fde57612fdd612d6b565b5b8135612fee848260208601612f87565b91505092915050565b60008060008060808587031215613011576130106129f3565b5b600061301f87828801612c6a565b945050602061303087828801612c6a565b935050604061304187828801612bb5565b925050606085013567ffffffffffffffff811115613062576130616129f8565b5b61306e87828801612fc9565b91505092959194509250565b60008060408385031215613091576130906129f3565b5b600061309f85828601612c6a565b92505060206130b085828601612c6a565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061310157607f821691505b602082108103613114576131136130ba565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613150602083612ac3565b915061315b8261311a565b602082019050919050565b6000602082019050818103600083015261317f81613143565b9050919050565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00600082015250565b60006131bc601f83612ac3565b91506131c782613186565b602082019050919050565b600060208201905081810360008301526131eb816131af565b9050919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026132547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82613217565b61325e8683613217565b95508019841693508086168417925050509392505050565b6000819050919050565b600061329b61329661329184612b6a565b613276565b612b6a565b9050919050565b6000819050919050565b6132b583613280565b6132c96132c1826132a2565b848454613224565b825550505050565b600090565b6132de6132d1565b6132e98184846132ac565b505050565b5b8181101561330d576133026000826132d6565b6001810190506132ef565b5050565b601f82111561335257613323816131f2565b61332c84613207565b8101602085101561333b578190505b61334f61334785613207565b8301826132ee565b50505b505050565b600082821c905092915050565b600061337560001984600802613357565b1980831691505092915050565b600061338e8383613364565b9150826002028217905092915050565b6133a782612ab8565b67ffffffffffffffff8111156133c0576133bf612d75565b5b6133ca82546130e9565b6133d5828285613311565b600060209050601f83116001811461340857600084156133f6578287015190505b6134008582613382565b865550613468565b601f198416613416866131f2565b60005b8281101561343e57848901518255600182019150602085019450602081019050613419565b8683101561345b5784890151613457601f891682613364565b8355505b6001600288020188555050505b505050505050565b7f5075626c69632073616c65206973206e6f74206f70656e000000000000000000600082015250565b60006134a6601783612ac3565b91506134b182613470565b602082019050919050565b600060208201905081810360008301526134d581613499565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061351682612b6a565b915061352183612b6a565b9250828201905080821115613539576135386134dc565b5b92915050565b7f496e636f7272656374204554482076616c75652073656e740000000000000000600082015250565b6000613575601883612ac3565b91506135808261353f565b602082019050919050565b600060208201905081810360008301526135a481613568565b9050919050565b7f4d6178206d696e747320706572207472616e73616374696f6e2065786365656460008201527f6564000000000000000000000000000000000000000000000000000000000000602082015250565b6000613607602283612ac3565b9150613612826135ab565b604082019050919050565b60006020820190508181036000830152613636816135fa565b9050919050565b7f4552433732314d657461646174613a2055524920717565727920666f72206e6f60008201527f6e6578697374656e7420746f6b656e0000000000000000000000000000000000602082015250565b6000613699602f83612ac3565b91506136a48261363d565b604082019050919050565b600060208201905081810360008301526136c88161368c565b9050919050565b600081905092915050565b600081546136e7816130e9565b6136f181866136cf565b9450600182166000811461370c576001811461372157613754565b60ff1983168652811515820286019350613754565b61372a856131f2565b60005b8381101561374c5781548189015260018201915060208101905061372d565b838801955050505b50505092915050565b7f6d657461646174612e6a736f6e00000000000000000000000000000000000000600082015250565b6000613793600d836136cf565b915061379e8261375d565b600d82019050919050565b60006137b582846136da565b91506137c082613786565b915081905092915050565b7f496e76616c6964206d696e7420616d6f756e7400000000000000000000000000600082015250565b6000613801601383612ac3565b915061380c826137cb565b602082019050919050565b60006020820190508181036000830152613830816137f4565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613893602683612ac3565b915061389e82613837565b604082019050919050565b600060208201905081810360008301526138c281613886565b9050919050565b60006138d482612b6a565b91506138df83612b6a565b92508282026138ed81612b6a565b91508282048414831517613904576139036134dc565b5b5092915050565b7f416464726573733a20696e73756666696369656e742062616c616e6365000000600082015250565b6000613941601d83612ac3565b915061394c8261390b565b602082019050919050565b6000602082019050818103600083015261397081613934565b9050919050565b600081905092915050565b50565b6000613992600083613977565b915061399d82613982565b600082019050919050565b60006139b382613985565b9150819050919050565b7f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260008201527f6563697069656e74206d61792068617665207265766572746564000000000000602082015250565b6000613a19603a83612ac3565b9150613a24826139bd565b604082019050919050565b60006020820190508181036000830152613a4881613a0c565b9050919050565b600081519050919050565b600082825260208201905092915050565b6000613a7682613a4f565b613a808185613a5a565b9350613a90818560208601612ad4565b613a9981612afe565b840191505092915050565b6000608082019050613ab96000830187612c29565b613ac66020830186612c29565b613ad36040830185612b74565b8181036060830152613ae58184613a6b565b905095945050505050565b600081519050613aff81612a29565b92915050565b600060208284031215613b1b57613b1a6129f3565b5b6000613b2984828501613af0565b9150509291505056fea2646970667358221220f372f6433c582f2ae9723fd5f20089e319644df18b636048a5ce34763355959664736f6c63430008130033697066733a2f2f626166796265696275716476333477647869327379703267756e646f6c3677363772696234767a6a61346c667a6868647472737570347471746d752f