60806040526000600155737a250d5630b4cf539739df2c5dacb4c659f2488d600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600b60006101000a81548160ff0219169083151502179055506000600b60016101000a81548160ff0219169083151502179055506012600a620000a49190620008fd565b62989681620000b491906200094e565b600c556012600a620000c79190620008fd565b620186a0620000d791906200094e565b600d556000600e60016101000a81548160ff0219169083151502179055503480156200010257600080fd5b5033806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050603c6103e86012600a6200015a9190620008fd565b633b9aca006200016b91906200094e565b620001779190620009c8565b6200018391906200094e565b600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506103ac6103e86012600a620001dc9190620008fd565b633b9aca00620001ed91906200094e565b620001f99190620009c8565b6200020591906200094e565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054604051620002e7919062000a11565b60405180910390a33073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040516200038e919062000a11565b60405180910390a3620003a7336200068e60201b60201c565b33600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160056000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600560008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550426001819055503373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054604051620005d9919062000a11565b60405180910390a33073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205460405162000680919062000a11565b60405180910390a362000ab1565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146200071f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620007169062000a8f565b60405180910390fd5b80600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b6001851115620007f157808604811115620007c957620007c862000763565b5b6001851615620007d95780820291505b8081029050620007e98562000792565b9450620007a9565b94509492505050565b6000826200080c5760019050620008df565b816200081c5760009050620008df565b8160018114620008355760028114620008405762000876565b6001915050620008df565b60ff84111562000855576200085462000763565b5b8360020a9150848211156200086f576200086e62000763565b5b50620008df565b5060208310610133831016604e8410600b8410161715620008b05782820a905083811115620008aa57620008a962000763565b5b620008df565b620008bf84848460016200079f565b92509050818404811115620008d957620008d862000763565b5b81810290505b9392505050565b6000819050919050565b600060ff82169050919050565b60006200090a82620008e6565b91506200091783620008f0565b9250620009467fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484620007fa565b905092915050565b60006200095b82620008e6565b91506200096883620008e6565b92508282026200097881620008e6565b9150828204841483151762000992576200099162000763565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000620009d582620008e6565b9150620009e283620008e6565b925082620009f557620009f462000999565b5b828204905092915050565b62000a0b81620008e6565b82525050565b600060208201905062000a28600083018462000a00565b92915050565b600082825260208201905092915050565b7f4f6e6c79206f776e65722063616e2063616c6c20746869730000000000000000600082015250565b600062000a7760188362000a2e565b915062000a848262000a3f565b602082019050919050565b6000602082019050818103600083015262000aaa8162000a68565b9050919050565b6132ab8062000ac16000396000f3fe6080604052600436106101235760003560e01c806389f9a1d3116100a0578063c876d0b911610064578063c876d0b9146103d2578063dd62ed3e146103fd578063e47d60601461043a578063e8078d9414610477578063ea414b28146104815761012a565b806389f9a1d3146102eb5780638da5cb5b146103165780638f85a0431461034157806395d89b411461036a578063a9059cbb146103955761012a565b8063313ce567116100e7578063313ce5671461022a57806370a0823114610255578063715018a614610292578063751039fc146102a9578063860a32ec146102c05761012a565b806306fdde031461012f578063095ea7b31461015a57806318160ddd146101975780631ab99e12146101c257806323b872dd146101ed5761012a565b3661012a57005b600080fd5b34801561013b57600080fd5b506101446104aa565b604051610151919061234b565b60405180910390f35b34801561016657600080fd5b50610181600480360381019061017c9190612415565b6104e7565b60405161018e9190612470565b60405180910390f35b3480156101a357600080fd5b506101ac6105d9565b6040516101b9919061249a565b60405180910390f35b3480156101ce57600080fd5b506101d76105fd565b6040516101e4919061249a565b60405180910390f35b3480156101f957600080fd5b50610214600480360381019061020f91906124b5565b610603565b6040516102219190612470565b60405180910390f35b34801561023657600080fd5b5061023f61080d565b60405161024c9190612524565b60405180910390f35b34801561026157600080fd5b5061027c6004803603810190610277919061253f565b610816565b604051610289919061249a565b60405180910390f35b34801561029e57600080fd5b506102a761085f565b005b3480156102b557600080fd5b506102be610968565b005b3480156102cc57600080fd5b506102d5610a2e565b6040516102e29190612470565b60405180910390f35b3480156102f757600080fd5b50610300610a41565b60405161030d919061249a565b60405180910390f35b34801561032257600080fd5b5061032b610a47565b604051610338919061257b565b60405180910390f35b34801561034d57600080fd5b506103686004803603810190610363919061270a565b610a70565b005b34801561037657600080fd5b5061037f610b93565b60405161038c919061234b565b60405180910390f35b3480156103a157600080fd5b506103bc60048036038101906103b79190612415565b610bd0565b6040516103c99190612470565b60405180910390f35b3480156103de57600080fd5b506103e7610c2d565b6040516103f49190612470565b60405180910390f35b34801561040957600080fd5b50610424600480360381019061041f9190612766565b610c40565b604051610431919061249a565b60405180910390f35b34801561044657600080fd5b50610461600480360381019061045c919061253f565b610cc7565b60405161046e9190612470565b60405180910390f35b61047f610ce7565b005b34801561048d57600080fd5b506104a860048036038101906104a3919061253f565b61121a565b005b60606040518060400160405280601081526020017f496e7665727365204361706f2045544600000000000000000000000000000000815250905090565b600081600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516105c7919061249a565b60405180910390a36001905092915050565b60006012600a6105e99190612908565b633b9aca006105f89190612953565b905090565b600d5481565b600061060e846112ec565b61064d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610644906129e1565b60405180910390fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054146107f95781600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546107789190612a01565b600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b610804848484611372565b90509392505050565b60006012905090565b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146108ed576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108e490612a81565b60405180910390fd5b60008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc686163600060405161095e919061257b565b60405180910390a1565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146109f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109ed90612a81565b60405180910390fd5b6000600b60006101000a81548160ff0219169083151502179055506000600b60016101000a81548160ff021916908315150217905550565b600b60009054906101000a900460ff1681565b600c5481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610afe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610af590612a81565b60405180910390fd5b60005b8251811015610b8e578160046000858481518110610b2257610b21612aa1565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080610b8690612ad0565b915050610b01565b505050565b60606040518060400160405280600481526020017f4341504f00000000000000000000000000000000000000000000000000000000815250905090565b6000610bdb336112ec565b610c1a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c11906129e1565b60405180910390fd5b610c25338484611372565b905092915050565b600b60019054906101000a900460ff1681565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60046020528060005260406000206000915054906101000a900460ff1681565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610d75576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d6c90612a81565b60405180910390fd5b6001600e60016101000a81548160ff021916908315150217905550600073ffffffffffffffffffffffffffffffffffffffff16600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e21576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e1890612b64565b60405180910390fd5b600e60009054906101000a900460ff1615610e71576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e6890612bd0565b60405180910390fd5b6000341180610e805750600047115b610ebf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eb690612c3c565b60405180910390fd5b6000600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411610f41576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f3890612ca8565b60405180910390fd5b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610fae573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fd29190612cdd565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561105b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061107f9190612cdd565b6040518363ffffffff1660e01b815260040161109c929190612d0a565b6020604051808303816000875af11580156110bb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110df9190612cdd565b600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550611168600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205447611a15565b6001600a6000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600e60006101000a81548160ff0219169083151502179055506000600e60016101000a81548160ff021916908315150217905550565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146112a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161129f90612a81565b60405180910390fd5b80600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60008060009050600e60009054906101000a900460ff16156113115760019050611369565b600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561136857600190505b5b80915050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16036113e2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113d990612d7f565b60405180910390fd5b600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561146f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161146690612deb565b60405180910390fd5b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156114fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114f390612e57565b60405180910390fd5b600e60009054906101000a900460ff1661159d57600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661159c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611593906129e1565b60405180910390fd5b5b600e60019054906101000a900460ff161580156116035750600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561161157611610611aef565b5b600b60009054906101000a900460ff16801561167a5750600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b156116f957600c548261168c85610816565b6116969190612e77565b111580156116b95750600d54826116ac85610816565b6116b69190612e77565b10155b6116f8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116ef90612ef7565b60405180910390fd5b5b600b60019054906101000a900460ff161561187857737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156117ac5750600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b156118775743600660003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410611832576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161182990612f89565b60405180910390fd5b43600660003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5b6000611885858585611c92565b9050600081846118959190612a01565b905083600260008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546118e69190612a01565b92505081905550600082111561194d5781600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546119459190612e77565b925050819055505b80600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461199c9190612e77565b925050819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef86604051611a00919061249a565b60405180910390a36001925050509392505050565b611a1e82611e9d565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71982308560008060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b8152600401611aa596959493929190612fee565b60606040518083038185885af1158015611ac3573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611ae89190613064565b5050505050565b6001600e60016101000a81548160ff0219169083151502179055506000611b1530610816565b90506207a1206012600a611b299190612908565b633b9aca00611b389190612953565b611b4291906130e6565b8110158015611b5d5750600e60009054906101000a900460ff165b15611c74576103e86012600a611b739190612908565b633b9aca00611b829190612953565b611b8c91906130e6565b8110611bbf576103e86012600a611ba39190612908565b633b9aca00611bb29190612953565b611bbc91906130e6565b90505b611bc881612087565b60004790506000811115611c72576000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1682604051611c1e90613148565b60006040518083038185875af1925050503d8060008114611c5b576040519150601f19603f3d011682016040523d82523d6000602084013e611c60565b606091505b50508091505080611c7057600080fd5b505b505b506000600e60016101000a81548160ff021916908315150217905550565b60008060009050600e60009054906101000a900460ff168015611cff5750600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611d555750600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611e9257600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611dfb5750600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15611e9157600080611e0b6122a6565b90506082811015611e1f57605a9150611e74565b61012c811015611e325760289150611e73565b610384811015611e4557601e9150611e72565b610e10811015611e585760149150611e71565b613840811015611e6b57600a9150611e70565b600091505b5b5b5b5b81606486611e8291906130e6565b611e8c9190612953565b925050505b5b809150509392505050565b80600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015612084577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9257fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60405161207b919061249a565b60405180910390a35b50565b61209081611e9d565b6000600267ffffffffffffffff8111156120ad576120ac61259b565b5b6040519080825280602002602001820160405280156120db5781602001602082028036833780820191505090505b50905030816000815181106120f3576120f2612aa1565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561219a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121be9190612cdd565b816001815181106121d2576121d1612aa1565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040161227095949392919061321b565b600060405180830381600087803b15801561228a57600080fd5b505af115801561229e573d6000803e3d6000fd5b505050505050565b6000600154426122b69190612a01565b905090565b600081519050919050565b600082825260208201905092915050565b60005b838110156122f55780820151818401526020810190506122da565b60008484015250505050565b6000601f19601f8301169050919050565b600061231d826122bb565b61232781856122c6565b93506123378185602086016122d7565b61234081612301565b840191505092915050565b600060208201905081810360008301526123658184612312565b905092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006123ac82612381565b9050919050565b6123bc816123a1565b81146123c757600080fd5b50565b6000813590506123d9816123b3565b92915050565b6000819050919050565b6123f2816123df565b81146123fd57600080fd5b50565b60008135905061240f816123e9565b92915050565b6000806040838503121561242c5761242b612377565b5b600061243a858286016123ca565b925050602061244b85828601612400565b9150509250929050565b60008115159050919050565b61246a81612455565b82525050565b60006020820190506124856000830184612461565b92915050565b612494816123df565b82525050565b60006020820190506124af600083018461248b565b92915050565b6000806000606084860312156124ce576124cd612377565b5b60006124dc868287016123ca565b93505060206124ed868287016123ca565b92505060406124fe86828701612400565b9150509250925092565b600060ff82169050919050565b61251e81612508565b82525050565b60006020820190506125396000830184612515565b92915050565b60006020828403121561255557612554612377565b5b6000612563848285016123ca565b91505092915050565b612575816123a1565b82525050565b6000602082019050612590600083018461256c565b92915050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6125d382612301565b810181811067ffffffffffffffff821117156125f2576125f161259b565b5b80604052505050565b600061260561236d565b905061261182826125ca565b919050565b600067ffffffffffffffff8211156126315761263061259b565b5b602082029050602081019050919050565b600080fd5b600061265a61265584612616565b6125fb565b9050808382526020820190506020840283018581111561267d5761267c612642565b5b835b818110156126a6578061269288826123ca565b84526020840193505060208101905061267f565b5050509392505050565b600082601f8301126126c5576126c4612596565b5b81356126d5848260208601612647565b91505092915050565b6126e781612455565b81146126f257600080fd5b50565b600081359050612704816126de565b92915050565b6000806040838503121561272157612720612377565b5b600083013567ffffffffffffffff81111561273f5761273e61237c565b5b61274b858286016126b0565b925050602061275c858286016126f5565b9150509250929050565b6000806040838503121561277d5761277c612377565b5b600061278b858286016123ca565b925050602061279c858286016123ca565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b600185111561282c57808604811115612808576128076127a6565b5b60018516156128175780820291505b8081029050612825856127d5565b94506127ec565b94509492505050565b6000826128455760019050612901565b816128535760009050612901565b81600181146128695760028114612873576128a2565b6001915050612901565b60ff841115612885576128846127a6565b5b8360020a91508482111561289c5761289b6127a6565b5b50612901565b5060208310610133831016604e8410600b84101617156128d75782820a9050838111156128d2576128d16127a6565b5b612901565b6128e484848460016127e2565b925090508184048111156128fb576128fa6127a6565b5b81810290505b9392505050565b6000612913826123df565b915061291e83612508565b925061294b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484612835565b905092915050565b600061295e826123df565b9150612969836123df565b9250828202612977816123df565b9150828204841483151761298e5761298d6127a6565b5b5092915050565b7f54726164696e67206e6f74206f70656e00000000000000000000000000000000600082015250565b60006129cb6010836122c6565b91506129d682612995565b602082019050919050565b600060208201905081810360008301526129fa816129be565b9050919050565b6000612a0c826123df565b9150612a17836123df565b9250828203905081811115612a2f57612a2e6127a6565b5b92915050565b7f4f6e6c79206f776e65722063616e2063616c6c20746869730000000000000000600082015250565b6000612a6b6018836122c6565b9150612a7682612a35565b602082019050919050565b60006020820190508181036000830152612a9a81612a5e565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000612adb826123df565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612b0d57612b0c6127a6565b5b600182019050919050565b7f4c50206578697374730000000000000000000000000000000000000000000000600082015250565b6000612b4e6009836122c6565b9150612b5982612b18565b602082019050919050565b60006020820190508181036000830152612b7d81612b41565b9050919050565b7f74726164696e67206973206f70656e0000000000000000000000000000000000600082015250565b6000612bba600f836122c6565b9150612bc582612b84565b602082019050919050565b60006020820190508181036000830152612be981612bad565b9050919050565b7f4e6f2045544820696e20636f6e7472616374206f72206d657373616765000000600082015250565b6000612c26601d836122c6565b9150612c3182612bf0565b602082019050919050565b60006020820190508181036000830152612c5581612c19565b9050919050565b7f4e6f20746f6b656e7320696e20636f6e74726163740000000000000000000000600082015250565b6000612c926015836122c6565b9150612c9d82612c5c565b602082019050919050565b60006020820190508181036000830152612cc181612c85565b9050919050565b600081519050612cd7816123b3565b92915050565b600060208284031215612cf357612cf2612377565b5b6000612d0184828501612cc8565b91505092915050565b6000604082019050612d1f600083018561256c565b612d2c602083018461256c565b9392505050565b7f4e6f207472616e73666572732066726f6d205a65726f2077616c6c6574000000600082015250565b6000612d69601d836122c6565b9150612d7482612d33565b602082019050919050565b60006020820190508181036000830152612d9881612d5c565b9050919050565b7f53656e64657220426c61636b6c69737465640000000000000000000000000000600082015250565b6000612dd56012836122c6565b9150612de082612d9f565b602082019050919050565b60006020820190508181036000830152612e0481612dc8565b9050919050565b7f526563656976657220426c61636b6c6973746564000000000000000000000000600082015250565b6000612e416014836122c6565b9150612e4c82612e0b565b602082019050919050565b60006020820190508181036000830152612e7081612e34565b9050919050565b6000612e82826123df565b9150612e8d836123df565b9250828201905080821115612ea557612ea46127a6565b5b92915050565b7f466f726269640000000000000000000000000000000000000000000000000000600082015250565b6000612ee16006836122c6565b9150612eec82612eab565b602082019050919050565b60006020820190508181036000830152612f1081612ed4565b9050919050565b7f4f6e6c79206f6e65207472616e736665722070657220626c6f636b20616c6c6f60008201527f7765642e00000000000000000000000000000000000000000000000000000000602082015250565b6000612f736024836122c6565b9150612f7e82612f17565b604082019050919050565b60006020820190508181036000830152612fa281612f66565b9050919050565b6000819050919050565b6000819050919050565b6000612fd8612fd3612fce84612fa9565b612fb3565b6123df565b9050919050565b612fe881612fbd565b82525050565b600060c082019050613003600083018961256c565b613010602083018861248b565b61301d6040830187612fdf565b61302a6060830186612fdf565b613037608083018561256c565b61304460a083018461248b565b979650505050505050565b60008151905061305e816123e9565b92915050565b60008060006060848603121561307d5761307c612377565b5b600061308b8682870161304f565b935050602061309c8682870161304f565b92505060406130ad8682870161304f565b9150509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006130f1826123df565b91506130fc836123df565b92508261310c5761310b6130b7565b5b828204905092915050565b600081905092915050565b50565b6000613132600083613117565b915061313d82613122565b600082019050919050565b600061315382613125565b9150819050919050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613192816123a1565b82525050565b60006131a48383613189565b60208301905092915050565b6000602082019050919050565b60006131c88261315d565b6131d28185613168565b93506131dd83613179565b8060005b8381101561320e5781516131f58882613198565b9750613200836131b0565b9250506001810190506131e1565b5085935050505092915050565b600060a082019050613230600083018861248b565b61323d6020830187612fdf565b818103604083015261324f81866131bd565b905061325e606083018561256c565b61326b608083018461248b565b969550505050505056fea2646970667358221220f95275227a1ca0cf4c79400366a6e4e80926aaded28e0b8659d1a86664f8440f64736f6c63430008110033