61010060405273962228f791e745273700024d54e3f9897a3e819873ffffffffffffffffffffffffffffffffffffffff1660809073ffffffffffffffffffffffffffffffffffffffff16815250604051806080016040528060438152602001620040766043913960099081620000769190620004db565b50660aa87bee53800060a0908152506103e863ffffffff1660c09063ffffffff16815250600a63ffffffff1660e09063ffffffff16815250348015620000bb57600080fd5b506040518060400160405280600881526020017f546970204e656b6f0000000000000000000000000000000000000000000000008152506040518060400160405280600481526020017f4e656b6f000000000000000000000000000000000000000000000000000000008152508160029081620001399190620004db565b5080600390816200014b9190620004db565b506200015c6200018a60201b60201c565b600081905550505062000184620001786200019360201b60201c565b6200019b60201b60201c565b620005c2565b60006001905090565b600033905090565b6000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680620002e357607f821691505b602082108103620002f957620002f86200029b565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620003637fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000324565b6200036f868362000324565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b6000620003bc620003b6620003b08462000387565b62000391565b62000387565b9050919050565b6000819050919050565b620003d8836200039b565b620003f0620003e782620003c3565b84845462000331565b825550505050565b600090565b62000407620003f8565b62000414818484620003cd565b505050565b5b818110156200043c5762000430600082620003fd565b6001810190506200041a565b5050565b601f8211156200048b576200045581620002ff565b620004608462000314565b8101602085101562000470578190505b620004886200047f8562000314565b83018262000419565b50505b505050565b600082821c905092915050565b6000620004b06000198460080262000490565b1980831691505092915050565b6000620004cb83836200049d565b9150826002028217905092915050565b620004e68262000261565b67ffffffffffffffff8111156200050257620005016200026c565b5b6200050e8254620002ca565b6200051b82828562000440565b600060209050601f8311600181146200055357600084156200053e578287015190505b6200054a8582620004bd565b865550620005ba565b601f1984166200056386620002ff565b60005b828110156200058d5784890151825560018201915060208501945060208101905062000566565b86831015620005ad5784890151620005a9601f8916826200049d565b8355505b6001600288020188555050505b505050505050565b60805160a05160c05160e051613a576200061f60003960006113130152600081816109d401526111d80152600081816109670152610bf9015260008181610d5701528181611ca9015281816121e001526122690152613a576000f3fe6080604052600436106101665760003560e01c80636817c76c116100d1578063a22cb4651161008a578063d5abeb0111610064578063d5abeb0114610519578063e985e9c514610544578063f2fde38b14610581578063f968adbe146105aa57610166565b8063a22cb4651461048a578063b88d4fde146104b3578063c87b56dd146104dc57610166565b80636817c76c1461037a57806370a08231146103a55780638a886986146103e25780638da5cb5b1461040b57806395d89b41146104365780639b642de11461046157610166565b80632db11544116101235780632db115441461028d5780633ccfd60b146102a957806342842e0e146102c05780635fd22840146102e957806362b99ad4146103125780636352211e1461033d57610166565b806301ffc9a71461016b57806306fdde03146101a8578063081812fc146101d3578063095ea7b31461021057806318160ddd1461023957806323b872dd14610264575b600080fd5b34801561017757600080fd5b50610192600480360381019061018d9190612780565b6105d5565b60405161019f91906127c8565b60405180910390f35b3480156101b457600080fd5b506101bd6106b7565b6040516101ca9190612873565b60405180910390f35b3480156101df57600080fd5b506101fa60048036038101906101f591906128cb565b610749565b6040516102079190612939565b60405180910390f35b34801561021c57600080fd5b5061023760048036038101906102329190612980565b6107c5565b005b34801561024557600080fd5b5061024e6108cf565b60405161025b91906129cf565b60405180910390f35b34801561027057600080fd5b5061028b600480360381019061028691906129ea565b6108e6565b005b6102a760048036038101906102a291906128cb565b6108f6565b005b3480156102b557600080fd5b506102be610a5a565b005b3480156102cc57600080fd5b506102e760048036038101906102e291906129ea565b610b1f565b005b3480156102f557600080fd5b50610310600480360381019061030b91906128cb565b610b3f565b005b34801561031e57600080fd5b50610327610b53565b6040516103349190612873565b60405180910390f35b34801561034957600080fd5b50610364600480360381019061035f91906128cb565b610be1565b6040516103719190612939565b60405180910390f35b34801561038657600080fd5b5061038f610bf7565b60405161039c91906129cf565b60405180910390f35b3480156103b157600080fd5b506103cc60048036038101906103c79190612a3d565b610c1b565b6040516103d991906129cf565b60405180910390f35b3480156103ee57600080fd5b5061040960048036038101906104049190612caf565b610daf565b005b34801561041757600080fd5b50610420610e6e565b60405161042d9190612939565b60405180910390f35b34801561044257600080fd5b5061044b610e98565b6040516104589190612873565b60405180910390f35b34801561046d57600080fd5b5061048860048036038101906104839190612ddc565b610f2a565b005b34801561049657600080fd5b506104b160048036038101906104ac9190612e51565b610f45565b005b3480156104bf57600080fd5b506104da60048036038101906104d59190612f32565b6110bc565b005b3480156104e857600080fd5b5061050360048036038101906104fe91906128cb565b611138565b6040516105109190612873565b60405180910390f35b34801561052557600080fd5b5061052e6111d6565b60405161053b9190612fd4565b60405180910390f35b34801561055057600080fd5b5061056b60048036038101906105669190612fef565b6111fa565b60405161057891906127c8565b60405180910390f35b34801561058d57600080fd5b506105a860048036038101906105a39190612a3d565b61128e565b005b3480156105b657600080fd5b506105bf611311565b6040516105cc9190612fd4565b60405180910390f35b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806106a057507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b806106b057506106af82611335565b5b9050919050565b6060600280546106c69061305e565b80601f01602080910402602001604051908101604052809291908181526020018280546106f29061305e565b801561073f5780601f106107145761010080835404028352916020019161073f565b820191906000526020600020905b81548152906001019060200180831161072257829003601f168201915b5050505050905090565b60006107548261139f565b61078a576040517fcf4700e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6006600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b60006107d082610be1565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610837576040517f943f7b8c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166108566113ed565b73ffffffffffffffffffffffffffffffffffffffff16141580156108885750610886816108816113ed565b6111fa565b155b156108bf576040517fcfb3b94200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6108ca8383836113f5565b505050565b60006108d96114a7565b6001546000540303905090565b6108f18383836114b0565b505050565b3373ffffffffffffffffffffffffffffffffffffffff163273ffffffffffffffffffffffffffffffffffffffff1614610964576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161095b906130db565b60405180910390fd5b807f0000000000000000000000000000000000000000000000000000000000000000610990919061312a565b3410156109d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109c9906131b8565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000063ffffffff1681610a026108cf565b610a0c91906131d8565b1115610a4d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a4490613258565b60405180910390fd5b610a57338261199f565b50565b610a626119bd565b6000479050600033905060008173ffffffffffffffffffffffffffffffffffffffff1683604051610a92906132a9565b60006040518083038185875af1925050503d8060008114610acf576040519150601f19603f3d011682016040523d82523d6000602084013e610ad4565b606091505b50508091505080610b1a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b119061330a565b60405180910390fd5b505050565b610b3a838383604051806020016040528060008152506110bc565b505050565b610b476119bd565b610b5081611a3b565b50565b60098054610b609061305e565b80601f0160208091040260200160405190810160405280929190818152602001828054610b8c9061305e565b8015610bd95780601f10610bae57610100808354040283529160200191610bd9565b820191906000526020600020905b815481529060010190602001808311610bbc57829003601f168201915b505050505081565b6000610bec82611a47565b600001519050919050565b7f000000000000000000000000000000000000000000000000000000000000000081565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610c82576040517f8f4eb60400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900467ffffffffffffffff1667ffffffffffffffff1614610d5257600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900467ffffffffffffffff1667ffffffffffffffff169050610daa565b6000547f000000000000000000000000000000000000000000000000000000000000000083610d81919061332a565b73ffffffffffffffffffffffffffffffffffffffff1611610da55760019050610daa565b600090505b919050565b610db76119bd565b60008251118015610dc9575080518251145b610e08576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dff906133be565b60405180910390fd5b60005b8251811015610e6957610e56838281518110610e2a57610e296133de565b5b6020026020010151838381518110610e4557610e446133de565b5b602002602001015161ffff1661199f565b8080610e619061340d565b915050610e0b565b505050565b6000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060038054610ea79061305e565b80601f0160208091040260200160405190810160405280929190818152602001828054610ed39061305e565b8015610f205780601f10610ef557610100808354040283529160200191610f20565b820191906000526020600020905b815481529060010190602001808311610f0357829003601f168201915b5050505050905090565b610f326119bd565b8060099081610f419190613601565b5050565b610f4d6113ed565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610fb1576040517fb06307db00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060076000610fbe6113ed565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff1661106b6113ed565b73ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31836040516110b091906127c8565b60405180910390a35050565b6110c78484846114b0565b6110e68373ffffffffffffffffffffffffffffffffffffffff16611d44565b80156110fb57506110f984848484611d67565b155b15611132576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50505050565b60606111438261139f565b611179576040517fa14c4b5000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000611183611eb7565b905060008151036111a357604051806020016040528060008152506111ce565b806111ad84611f49565b6040516020016111be92919061370f565b6040516020818303038152906040525b915050919050565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6112966119bd565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611305576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112fc906137a5565b60405180910390fd5b61130e816120a9565b50565b7f000000000000000000000000000000000000000000000000000000000000000081565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b6000816113aa6114a7565b111580156113b9575060005482105b80156113e6575060046000838152602001908152602001600020600001601c9054906101000a900460ff16155b9050919050565b600033905090565b826006600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550818373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a4505050565b60006001905090565b60006114bb82611a47565b90506000816000015173ffffffffffffffffffffffffffffffffffffffff166114e26113ed565b73ffffffffffffffffffffffffffffffffffffffff1614806115155750611514826000015161150f6113ed565b6111fa565b5b8061155a57506115236113ed565b73ffffffffffffffffffffffffffffffffffffffff1661154284610749565b73ffffffffffffffffffffffffffffffffffffffff16145b905080611593576040517f59c896be00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8473ffffffffffffffffffffffffffffffffffffffff16826000015173ffffffffffffffffffffffffffffffffffffffff16146115fc576040517fa114810000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603611662576040517fea553b3400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61166f858585600161216f565b61167f60008484600001516113f5565b6001600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008282829054906101000a900467ffffffffffffffff160392506101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055506001600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008282829054906101000a900467ffffffffffffffff160192506101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550836004600085815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550426004600085815260200190815260200160002060000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055506000600184019050600073ffffffffffffffffffffffffffffffffffffffff166004600083815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff160361192f5760005481101561192e5782600001516004600083815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555082602001516004600083815260200190815260200160002060000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055505b5b50828473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a46119988585856001612175565b5050505050565b6119b982826040518060200160405280600081525061217b565b5050565b6119c56113ed565b73ffffffffffffffffffffffffffffffffffffffff166119e3610e6e565b73ffffffffffffffffffffffffffffffffffffffff1614611a39576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a3090613811565b60405180910390fd5b565b611a448161218d565b50565b611a4f6126d1565b600082905080611a5d6114a7565b11158015611a6c575060005481105b15611d0d576000600460008381526020019081526020016000206040518060600160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016000820160149054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201601c9054906101000a900460ff16151515158152505090508060400151611d0b57600073ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff1614611b81578092505050611d3f565b6000600990505b828060019003935050600460008481526020019081526020016000206040518060600160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016000820160149054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201601c9054906101000a900460ff1615151515815250509150600073ffffffffffffffffffffffffffffffffffffffff16826000015173ffffffffffffffffffffffffffffffffffffffff1614611c9757819350505050611d3f565b6000816001900391508111611b8857847f000000000000000000000000000000000000000000000000000000000000000001826000019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050819350505050611d3f565b505b6040517fdf2d9b4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b919050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b60008373ffffffffffffffffffffffffffffffffffffffff1663150b7a02611d8d6113ed565b8786866040518563ffffffff1660e01b8152600401611daf9493929190613886565b6020604051808303816000875af1925050508015611deb57506040513d601f19601f82011682018060405250810190611de891906138e7565b60015b611e64573d8060008114611e1b576040519150601f19603f3d011682016040523d82523d6000602084013e611e20565b606091505b506000815103611e5c576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614915050949350505050565b606060098054611ec69061305e565b80601f0160208091040260200160405190810160405280929190818152602001828054611ef29061305e565b8015611f3f5780601f10611f1457610100808354040283529160200191611f3f565b820191906000526020600020905b815481529060010190602001808311611f2257829003601f168201915b5050505050905090565b606060008203611f90576040518060400160405280600181526020017f300000000000000000000000000000000000000000000000000000000000000081525090506120a4565b600082905060005b60008214611fc2578080611fab9061340d565b915050600a82611fbb9190613943565b9150611f98565b60008167ffffffffffffffff811115611fde57611fdd612a6f565b5b6040519080825280601f01601f1916602001820160405280156120105781602001600182028036833780820191505090505b5090505b6000851461209d576001826120299190613974565b9150600a8561203891906139a8565b603061204491906131d8565b60f81b81838151811061205a576120596133de565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a856120969190613943565b9450612014565b8093505050505b919050565b6000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b50505050565b50505050565b6121888383836001612307565b505050565b600081036121c7576040517fb562e8dd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080549050600082826121db91906131d8565b9050817f000000000000000000000000000000000000000000000000000000000000000061220991906139d9565b600460008054815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b81806001019250827f00000000000000000000000000000000000000000000000000000000000000000173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a480820361225f57826000808282546122fb91906131d8565b92505081905550505050565b600080549050600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1603612373576040517f2e07630000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600084036123ad576040517fb562e8dd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6123ba600086838761216f565b83600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008282829054906101000a900467ffffffffffffffff160192506101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555083600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160088282829054906101000a900467ffffffffffffffff160192506101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550846004600083815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550426004600083815260200190815260200160002060000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555060008190506000858201905083801561258457506125838773ffffffffffffffffffffffffffffffffffffffff16611d44565b5b15612649575b818773ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a46125f96000888480600101955088611d67565b61262f576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80820361258a57826000541461264457600080fd5b6126b4565b5b818060010192508773ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a480820361264a575b8160008190555050506126ca6000868387612175565b5050505050565b6040518060600160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001600067ffffffffffffffff1681526020016000151581525090565b6000604051905090565b600080fd5b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b61275d81612728565b811461276857600080fd5b50565b60008135905061277a81612754565b92915050565b6000602082840312156127965761279561271e565b5b60006127a48482850161276b565b91505092915050565b60008115159050919050565b6127c2816127ad565b82525050565b60006020820190506127dd60008301846127b9565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561281d578082015181840152602081019050612802565b60008484015250505050565b6000601f19601f8301169050919050565b6000612845826127e3565b61284f81856127ee565b935061285f8185602086016127ff565b61286881612829565b840191505092915050565b6000602082019050818103600083015261288d818461283a565b905092915050565b6000819050919050565b6128a881612895565b81146128b357600080fd5b50565b6000813590506128c58161289f565b92915050565b6000602082840312156128e1576128e061271e565b5b60006128ef848285016128b6565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612923826128f8565b9050919050565b61293381612918565b82525050565b600060208201905061294e600083018461292a565b92915050565b61295d81612918565b811461296857600080fd5b50565b60008135905061297a81612954565b92915050565b600080604083850312156129975761299661271e565b5b60006129a58582860161296b565b92505060206129b6858286016128b6565b9150509250929050565b6129c981612895565b82525050565b60006020820190506129e460008301846129c0565b92915050565b600080600060608486031215612a0357612a0261271e565b5b6000612a118682870161296b565b9350506020612a228682870161296b565b9250506040612a33868287016128b6565b9150509250925092565b600060208284031215612a5357612a5261271e565b5b6000612a618482850161296b565b91505092915050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b612aa782612829565b810181811067ffffffffffffffff82111715612ac657612ac5612a6f565b5b80604052505050565b6000612ad9612714565b9050612ae58282612a9e565b919050565b600067ffffffffffffffff821115612b0557612b04612a6f565b5b602082029050602081019050919050565b600080fd5b6000612b2e612b2984612aea565b612acf565b90508083825260208201905060208402830185811115612b5157612b50612b16565b5b835b81811015612b7a5780612b66888261296b565b845260208401935050602081019050612b53565b5050509392505050565b600082601f830112612b9957612b98612a6a565b5b8135612ba9848260208601612b1b565b91505092915050565b600067ffffffffffffffff821115612bcd57612bcc612a6f565b5b602082029050602081019050919050565b600061ffff82169050919050565b612bf581612bde565b8114612c0057600080fd5b50565b600081359050612c1281612bec565b92915050565b6000612c2b612c2684612bb2565b612acf565b90508083825260208201905060208402830185811115612c4e57612c4d612b16565b5b835b81811015612c775780612c638882612c03565b845260208401935050602081019050612c50565b5050509392505050565b600082601f830112612c9657612c95612a6a565b5b8135612ca6848260208601612c18565b91505092915050565b60008060408385031215612cc657612cc561271e565b5b600083013567ffffffffffffffff811115612ce457612ce3612723565b5b612cf085828601612b84565b925050602083013567ffffffffffffffff811115612d1157612d10612723565b5b612d1d85828601612c81565b9150509250929050565b600080fd5b600067ffffffffffffffff821115612d4757612d46612a6f565b5b612d5082612829565b9050602081019050919050565b82818337600083830152505050565b6000612d7f612d7a84612d2c565b612acf565b905082815260208101848484011115612d9b57612d9a612d27565b5b612da6848285612d5d565b509392505050565b600082601f830112612dc357612dc2612a6a565b5b8135612dd3848260208601612d6c565b91505092915050565b600060208284031215612df257612df161271e565b5b600082013567ffffffffffffffff811115612e1057612e0f612723565b5b612e1c84828501612dae565b91505092915050565b612e2e816127ad565b8114612e3957600080fd5b50565b600081359050612e4b81612e25565b92915050565b60008060408385031215612e6857612e6761271e565b5b6000612e768582860161296b565b9250506020612e8785828601612e3c565b9150509250929050565b600067ffffffffffffffff821115612eac57612eab612a6f565b5b612eb582612829565b9050602081019050919050565b6000612ed5612ed084612e91565b612acf565b905082815260208101848484011115612ef157612ef0612d27565b5b612efc848285612d5d565b509392505050565b600082601f830112612f1957612f18612a6a565b5b8135612f29848260208601612ec2565b91505092915050565b60008060008060808587031215612f4c57612f4b61271e565b5b6000612f5a8782880161296b565b9450506020612f6b8782880161296b565b9350506040612f7c878288016128b6565b925050606085013567ffffffffffffffff811115612f9d57612f9c612723565b5b612fa987828801612f04565b91505092959194509250565b600063ffffffff82169050919050565b612fce81612fb5565b82525050565b6000602082019050612fe96000830184612fc5565b92915050565b600080604083850312156130065761300561271e565b5b60006130148582860161296b565b92505060206130258582860161296b565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061307657607f821691505b6020821081036130895761308861302f565b5b50919050565b7f5468652063616c6c657220697320616e6f7468657220636f6e74726163740000600082015250565b60006130c5601e836127ee565b91506130d08261308f565b602082019050919050565b600060208201905081810360008301526130f4816130b8565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061313582612895565b915061314083612895565b925082820261314e81612895565b91508282048414831517613165576131646130fb565b5b5092915050565b7f696e73756666696369656e740000000000000000000000000000000000000000600082015250565b60006131a2600c836127ee565b91506131ad8261316c565b602082019050919050565b600060208201905081810360008301526131d181613195565b9050919050565b60006131e382612895565b91506131ee83612895565b9250828201905080821115613206576132056130fb565b5b92915050565b7f736f6c64206f7574000000000000000000000000000000000000000000000000600082015250565b60006132426008836127ee565b915061324d8261320c565b602082019050919050565b6000602082019050818103600083015261327181613235565b9050919050565b600081905092915050565b50565b6000613293600083613278565b915061329e82613283565b600082019050919050565b60006132b482613286565b9150819050919050565b7f5472616e73616374696f6e20556e7375636365737366756c0000000000000000600082015250565b60006132f46018836127ee565b91506132ff826132be565b602082019050919050565b60006020820190508181036000830152613323816132e7565b9050919050565b6000613335826128f8565b9150613340836128f8565b9250828203905073ffffffffffffffffffffffffffffffffffffffff81111561336c5761336b6130fb565b5b92915050565b7f4c656e677468206e6f74206d6174636800000000000000000000000000000000600082015250565b60006133a86010836127ee565b91506133b382613372565b602082019050919050565b600060208201905081810360008301526133d78161339b565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600061341882612895565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361344a576134496130fb565b5b600182019050919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026134b77fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8261347a565b6134c1868361347a565b95508019841693508086168417925050509392505050565b6000819050919050565b60006134fe6134f96134f484612895565b6134d9565b612895565b9050919050565b6000819050919050565b613518836134e3565b61352c61352482613505565b848454613487565b825550505050565b600090565b613541613534565b61354c81848461350f565b505050565b5b8181101561357057613565600082613539565b600181019050613552565b5050565b601f8211156135b55761358681613455565b61358f8461346a565b8101602085101561359e578190505b6135b26135aa8561346a565b830182613551565b50505b505050565b600082821c905092915050565b60006135d8600019846008026135ba565b1980831691505092915050565b60006135f183836135c7565b9150826002028217905092915050565b61360a826127e3565b67ffffffffffffffff81111561362357613622612a6f565b5b61362d825461305e565b613638828285613574565b600060209050601f83116001811461366b5760008415613659578287015190505b61366385826135e5565b8655506136cb565b601f19841661367986613455565b60005b828110156136a15784890151825560018201915060208501945060208101905061367c565b868310156136be57848901516136ba601f8916826135c7565b8355505b6001600288020188555050505b505050505050565b600081905092915050565b60006136e9826127e3565b6136f381856136d3565b93506137038185602086016127ff565b80840191505092915050565b600061371b82856136de565b915061372782846136de565b91508190509392505050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600061378f6026836127ee565b915061379a82613733565b604082019050919050565b600060208201905081810360008301526137be81613782565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006137fb6020836127ee565b9150613806826137c5565b602082019050919050565b6000602082019050818103600083015261382a816137ee565b9050919050565b600081519050919050565b600082825260208201905092915050565b600061385882613831565b613862818561383c565b93506138728185602086016127ff565b61387b81612829565b840191505092915050565b600060808201905061389b600083018761292a565b6138a8602083018661292a565b6138b560408301856129c0565b81810360608301526138c7818461384d565b905095945050505050565b6000815190506138e181612754565b92915050565b6000602082840312156138fd576138fc61271e565b5b600061390b848285016138d2565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061394e82612895565b915061395983612895565b92508261396957613968613914565b5b828204905092915050565b600061397f82612895565b915061398a83612895565b92508282039050818111156139a2576139a16130fb565b5b92915050565b60006139b382612895565b91506139be83612895565b9250826139ce576139cd613914565b5b828206905092915050565b60006139e4826128f8565b91506139ef836128f8565b9250828201905073ffffffffffffffffffffffffffffffffffffffff811115613a1b57613a1a6130fb565b5b9291505056fea264697066735822122047b42b99f5c89e2dc4ba8bfd438c84112ca9d378415465079e6aba98e12d11b964736f6c63430008120033697066733a2f2f62616679626569637664653435646465336c73766e78746a74666a78797a6a6d79356d717a76367471616b6d65353778343534707471766c6774342f