6080604052671bc16d674ec800006000196200001c91906200077c565b6000196200002b9190620007e3565b60075560006009556014600a556000600b556028600c55600b54600d55600c54600e55600d54600f55600e5460105533601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555033601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001601660146101000a81548160ff0219169083151502179055506000601660156101000a81548160ff02191690831515021790555060016016806101000a81548160ff0219169083151502179055506001601660176101000a81548160ff0219169083151502179055506064671bc16d674ec800006200015e91906200081e565b60026200016c919062000856565b6017556064671bc16d674ec800006200018691906200081e565b600262000194919062000856565b6018556103e8671bc16d674ec80000620001af91906200081e565b6005620001bd919062000856565b601955348015620001cd57600080fd5b506000620001e06200071260201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35060075460026000620002956200071260201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000737a250d5630b4cf539739df2c5dacb4c659f2488d905080601560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000379573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200039f91906200090b565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000407573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200042d91906200090b565b6040518363ffffffff1660e01b81526004016200044c9291906200094e565b6020604051808303816000875af11580156200046c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200049291906200090b565b601660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160056000620004e86200071a60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550436006819055506200069c6200071260201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef671bc16d674ec800006040516200070391906200098c565b60405180910390a350620009a9565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000620007898262000743565b9150620007968362000743565b925082620007a957620007a86200074d565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000620007f08262000743565b9150620007fd8362000743565b9250828203905081811115620008185762000817620007b4565b5b92915050565b60006200082b8262000743565b9150620008388362000743565b9250826200084b576200084a6200074d565b5b828204905092915050565b6000620008638262000743565b9150620008708362000743565b9250828202620008808162000743565b915082820484148315176200089a5762000899620007b4565b5b5092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620008d382620008a6565b9050919050565b620008e581620008c6565b8114620008f157600080fd5b50565b6000815190506200090581620008da565b92915050565b600060208284031215620009245762000923620008a1565b5b60006200093484828501620008f4565b91505092915050565b6200094881620008c6565b82525050565b60006040820190506200096560008301856200093d565b6200097460208301846200093d565b9392505050565b620009868162000743565b82525050565b6000602082019050620009a360008301846200097b565b92915050565b61405280620009b96000396000f3fe6080604052600436106101f15760003560e01c80637d1db4a51161010d578063a9059cbb116100a0578063c3c8cd801161006f578063c3c8cd80146106e3578063c492f046146106fa578063dd62ed3e14610723578063ea1644d514610760578063f2fde38b14610789576101f8565b8063a9059cbb14610617578063aff0598314610654578063be1aa3cd1461067d578063bfd79284146106a6576101f8565b80638f9a55c0116100dc5780638f9a55c01461056f57806395d89b411461059a57806398a5c315146105c5578063a2a957bb146105ee576101f8565b80637d1db4a5146104b35780637f2feddc146104de5780638da5cb5b1461051b5780638f70ccf714610546576101f8565b80633d6a9afe116101855780636fc3eaec116101545780636fc3eaec1461041f57806370a0823114610436578063715018a61461047357806374010ece1461048a576101f8565b80633d6a9afe1461037757806349bd5a5e146103a25780636b999053146103cd5780636d8aa8f8146103f6576101f8565b806318160ddd116101c157806318160ddd146102b957806323b872dd146102e45780632fd689e314610321578063313ce5671461034c576101f8565b8062b8cf2a146101fd57806306fdde0314610226578063095ea7b3146102515780631694505e1461028e576101f8565b366101f857005b600080fd5b34801561020957600080fd5b50610224600480360381019061021f9190612fe6565b6107b2565b005b34801561023257600080fd5b5061023b6108dc565b60405161024891906130ae565b60405180910390f35b34801561025d57600080fd5b5061027860048036038101906102739190613106565b610919565b6040516102859190613161565b60405180910390f35b34801561029a57600080fd5b506102a3610937565b6040516102b091906131db565b60405180910390f35b3480156102c557600080fd5b506102ce61095d565b6040516102db9190613205565b60405180910390f35b3480156102f057600080fd5b5061030b60048036038101906103069190613220565b61096d565b6040516103189190613161565b60405180910390f35b34801561032d57600080fd5b50610336610a46565b6040516103439190613205565b60405180910390f35b34801561035857600080fd5b50610361610a4c565b60405161036e919061328f565b60405180910390f35b34801561038357600080fd5b5061038c610a55565b60405161039991906132cb565b60405180910390f35b3480156103ae57600080fd5b506103b7610a7b565b6040516103c491906132f5565b60405180910390f35b3480156103d957600080fd5b506103f460048036038101906103ef9190613310565b610aa1565b005b34801561040257600080fd5b5061041d60048036038101906104189190613369565b610b91565b005b34801561042b57600080fd5b50610434610c42565b005b34801561044257600080fd5b5061045d60048036038101906104589190613310565b610d13565b60405161046a9190613205565b60405180910390f35b34801561047f57600080fd5b50610488610d64565b005b34801561049657600080fd5b506104b160048036038101906104ac9190613396565b610eb7565b005b3480156104bf57600080fd5b506104c8610f56565b6040516104d59190613205565b60405180910390f35b3480156104ea57600080fd5b5061050560048036038101906105009190613310565b610f5c565b6040516105129190613205565b60405180910390f35b34801561052757600080fd5b50610530610f74565b60405161053d91906132f5565b60405180910390f35b34801561055257600080fd5b5061056d60048036038101906105689190613369565b610f9d565b005b34801561057b57600080fd5b5061058461104f565b6040516105919190613205565b60405180910390f35b3480156105a657600080fd5b506105af611055565b6040516105bc91906130ae565b60405180910390f35b3480156105d157600080fd5b506105ec60048036038101906105e79190613396565b611092565b005b3480156105fa57600080fd5b50610615600480360381019061061091906133c3565b611131565b005b34801561062357600080fd5b5061063e60048036038101906106399190613106565b6111e8565b60405161064b9190613161565b60405180910390f35b34801561066057600080fd5b5061067b60048036038101906106769190613369565b611206565b005b34801561068957600080fd5b506106a4600480360381019061069f9190613310565b6112b8565b005b3480156106b257600080fd5b506106cd60048036038101906106c89190613310565b6113a8565b6040516106da9190613161565b60405180910390f35b3480156106ef57600080fd5b506106f86113c8565b005b34801561070657600080fd5b50610721600480360381019061071c9190613485565b6114a1565b005b34801561072f57600080fd5b5061074a600480360381019061074591906134e5565b6115db565b6040516107579190613205565b60405180910390f35b34801561076c57600080fd5b5061078760048036038101906107829190613396565b611662565b005b34801561079557600080fd5b506107b060048036038101906107ab9190613310565b611701565b005b6107ba6118c2565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610847576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161083e90613571565b60405180910390fd5b60005b81518110156108d85760016011600084848151811061086c5761086b613591565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080806108d0906135ef565b91505061084a565b5050565b60606040518060400160405280600681526020017f57696c736f6e0000000000000000000000000000000000000000000000000000815250905090565b600061092d6109266118c2565b84846118ca565b6001905092915050565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000671bc16d674ec80000905090565b600061097a848484611a93565b610a3b846109866118c2565b610a3685604051806060016040528060288152602001613ff560289139600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006109ec6118c2565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546123449092919063ffffffff16565b6118ca565b600190509392505050565b60195481565b60006009905090565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610aa96118c2565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b36576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b2d90613571565b60405180910390fd5b6000601160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b610b996118c2565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c26576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c1d90613571565b60405180910390fd5b806016806101000a81548160ff02191690831515021790555050565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610c836118c2565b73ffffffffffffffffffffffffffffffffffffffff161480610cf95750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610ce16118c2565b73ffffffffffffffffffffffffffffffffffffffff16145b610d0257600080fd5b6000479050610d10816123a8565b50565b6000610d5d600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612414565b9050919050565b610d6c6118c2565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610df9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610df090613571565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610ebf6118c2565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f4c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f4390613571565b60405180910390fd5b8060178190555050565b60175481565b60126020528060005260406000206000915090505481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610fa56118c2565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611032576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161102990613571565b60405180910390fd5b80601660146101000a81548160ff02191690831515021790555050565b60185481565b60606040518060400160405280600681526020017f57494c534f4e0000000000000000000000000000000000000000000000000000815250905090565b61109a6118c2565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611127576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161111e90613571565b60405180910390fd5b8060198190555050565b6111396118c2565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146111c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111bd90613571565b60405180910390fd5b8360098190555082600b8190555081600a8190555080600c8190555050505050565b60006111fc6111f56118c2565b8484611a93565b6001905092915050565b61120e6118c2565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461129b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161129290613571565b60405180910390fd5b80601660176101000a81548160ff02191690831515021790555050565b6112c06118c2565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461134d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161134490613571565b60405180910390fd5b6001601160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60116020528060005260406000206000915054906101000a900460ff1681565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166114096118c2565b73ffffffffffffffffffffffffffffffffffffffff16148061147f5750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166114676118c2565b73ffffffffffffffffffffffffffffffffffffffff16145b61148857600080fd5b600061149330610d13565b905061149e81612482565b50565b6114a96118c2565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611536576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161152d90613571565b60405180910390fd5b60005b838390508110156115d557816005600086868581811061155c5761155b613591565b5b90506020020160208101906115719190613310565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080806115cd906135ef565b915050611539565b50505050565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61166a6118c2565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146116f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116ee90613571565b60405180910390fd5b8060188190555050565b6117096118c2565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611796576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161178d90613571565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611805576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117fc906136a9565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611939576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119309061373b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036119a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161199f906137cd565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611a869190613205565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611b02576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611af99061385f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611b71576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b68906138f1565b60405180910390fd5b60008111611bb4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bab90613983565b60405180910390fd5b611bbc610f74565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611c2a5750611bfa610f74565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1561204357601660149054906101000a900460ff16611cb957611c4b610f74565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614611cb8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611caf90613a15565b60405180910390fd5b5b601754811115611cfe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cf590613a81565b60405180910390fd5b601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611da25750601160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b611de1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dd890613b13565b60405180910390fd5b601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614611e8e5760185481611e4384610d13565b611e4d9190613b33565b10611e8d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e8490613bd9565b60405180910390fd5b5b6000611e9930610d13565b905060006019548210159050601660179054906101000a900460ff168015611ec2575060065443145b15611ecc57600090505b6017548210611edb5760175491505b808015611ef55750601660159054906101000a900460ff16155b8015611f4f5750601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015611f65575060168054906101000a900460ff165b8015611fbb5750600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156120115750600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156120405761201f82612482565b6000479050600081111561203e57612036476123a8565b436006819055505b505b50505b600060019050600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806120ea5750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b8061219d5750601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415801561219c5750601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b156121ab5760009050612332565b601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480156122565750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b1561226e57600954600d81905550600a54600e819055505b601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156123195750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b1561233157600b54600d81905550600c54600e819055505b5b61233e848484846126fb565b50505050565b600083831115829061238c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161238391906130ae565b60405180910390fd5b506000838561239b9190613bf9565b9050809150509392505050565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015612410573d6000803e3d6000fd5b5050565b600060075482111561245b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161245290613c9f565b60405180910390fd5b6000612465612728565b905061247a818461275390919063ffffffff16565b915050919050565b6001601660156101000a81548160ff0219169083151502179055506000600267ffffffffffffffff8111156124ba576124b9612e45565b5b6040519080825280602002602001820160405280156124e85781602001602082028036833780820191505090505b5090503081600081518110612500576124ff613591565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156125a7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125cb9190613cd4565b816001815181106125df576125de613591565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061264630601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846118ca565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016126aa959493929190613dfa565b600060405180830381600087803b1580156126c457600080fd5b505af11580156126d8573d6000803e3d6000fd5b50505050506000601660156101000a81548160ff02191690831515021790555050565b806127095761270861279d565b5b6127148484846127da565b80612722576127216129a5565b5b50505050565b60008060006127356129b9565b9150915061274c818361275390919063ffffffff16565b9250505090565b600061279583836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612a18565b905092915050565b6000600d541480156127b157506000600e54145b6127d857600d54600f81905550600e546010819055506000600d819055506000600e819055505b565b6000806000806000806127ec87612a7b565b95509550955095509550955061284a86600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ae390919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506128df85600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612b2d90919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061292b81612b8b565b6129358483612c48565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516129929190613205565b60405180910390a3505050505050505050565b600f54600d81905550601054600e81905550565b600080600060075490506000671bc16d674ec8000090506129ed671bc16d674ec8000060075461275390919063ffffffff16565b821015612a0b57600754671bc16d674ec80000935093505050612a14565b81819350935050505b9091565b60008083118290612a5f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a5691906130ae565b60405180910390fd5b5060008385612a6e9190613e83565b9050809150509392505050565b6000806000806000806000806000612a988a600d54600e54612c82565b9250925092506000612aa8612728565b90506000806000612abb8e878787612d18565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b6000612b2583836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612344565b905092915050565b6000808284612b3c9190613b33565b905083811015612b81576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b7890613f00565b60405180910390fd5b8091505092915050565b6000612b95612728565b90506000612bac8284612da190919063ffffffff16565b9050612c0081600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612b2d90919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b612c5d82600754612ae390919063ffffffff16565b600781905550612c7881600854612b2d90919063ffffffff16565b6008819055505050565b600080600080612cae6064612ca0888a612da190919063ffffffff16565b61275390919063ffffffff16565b90506000612cd86064612cca888b612da190919063ffffffff16565b61275390919063ffffffff16565b90506000612d0182612cf3858c612ae390919063ffffffff16565b612ae390919063ffffffff16565b905080838395509550955050505093509350939050565b600080600080612d318589612da190919063ffffffff16565b90506000612d488689612da190919063ffffffff16565b90506000612d5f8789612da190919063ffffffff16565b90506000612d8882612d7a8587612ae390919063ffffffff16565b612ae390919063ffffffff16565b9050838184965096509650505050509450945094915050565b6000808303612db35760009050612e15565b60008284612dc19190613f20565b9050828482612dd09190613e83565b14612e10576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e0790613fd4565b60405180910390fd5b809150505b92915050565b6000604051905090565b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b612e7d82612e34565b810181811067ffffffffffffffff82111715612e9c57612e9b612e45565b5b80604052505050565b6000612eaf612e1b565b9050612ebb8282612e74565b919050565b600067ffffffffffffffff821115612edb57612eda612e45565b5b602082029050602081019050919050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612f1c82612ef1565b9050919050565b612f2c81612f11565b8114612f3757600080fd5b50565b600081359050612f4981612f23565b92915050565b6000612f62612f5d84612ec0565b612ea5565b90508083825260208201905060208402830185811115612f8557612f84612eec565b5b835b81811015612fae5780612f9a8882612f3a565b845260208401935050602081019050612f87565b5050509392505050565b600082601f830112612fcd57612fcc612e2f565b5b8135612fdd848260208601612f4f565b91505092915050565b600060208284031215612ffc57612ffb612e25565b5b600082013567ffffffffffffffff81111561301a57613019612e2a565b5b61302684828501612fb8565b91505092915050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561306957808201518184015260208101905061304e565b60008484015250505050565b60006130808261302f565b61308a818561303a565b935061309a81856020860161304b565b6130a381612e34565b840191505092915050565b600060208201905081810360008301526130c88184613075565b905092915050565b6000819050919050565b6130e3816130d0565b81146130ee57600080fd5b50565b600081359050613100816130da565b92915050565b6000806040838503121561311d5761311c612e25565b5b600061312b85828601612f3a565b925050602061313c858286016130f1565b9150509250929050565b60008115159050919050565b61315b81613146565b82525050565b60006020820190506131766000830184613152565b92915050565b6000819050919050565b60006131a161319c61319784612ef1565b61317c565b612ef1565b9050919050565b60006131b382613186565b9050919050565b60006131c5826131a8565b9050919050565b6131d5816131ba565b82525050565b60006020820190506131f060008301846131cc565b92915050565b6131ff816130d0565b82525050565b600060208201905061321a60008301846131f6565b92915050565b60008060006060848603121561323957613238612e25565b5b600061324786828701612f3a565b935050602061325886828701612f3a565b9250506040613269868287016130f1565b9150509250925092565b600060ff82169050919050565b61328981613273565b82525050565b60006020820190506132a46000830184613280565b92915050565b60006132b582612ef1565b9050919050565b6132c5816132aa565b82525050565b60006020820190506132e060008301846132bc565b92915050565b6132ef81612f11565b82525050565b600060208201905061330a60008301846132e6565b92915050565b60006020828403121561332657613325612e25565b5b600061333484828501612f3a565b91505092915050565b61334681613146565b811461335157600080fd5b50565b6000813590506133638161333d565b92915050565b60006020828403121561337f5761337e612e25565b5b600061338d84828501613354565b91505092915050565b6000602082840312156133ac576133ab612e25565b5b60006133ba848285016130f1565b91505092915050565b600080600080608085870312156133dd576133dc612e25565b5b60006133eb878288016130f1565b94505060206133fc878288016130f1565b935050604061340d878288016130f1565b925050606061341e878288016130f1565b91505092959194509250565b600080fd5b60008083601f84011261344557613444612e2f565b5b8235905067ffffffffffffffff8111156134625761346161342a565b5b60208301915083602082028301111561347e5761347d612eec565b5b9250929050565b60008060006040848603121561349e5761349d612e25565b5b600084013567ffffffffffffffff8111156134bc576134bb612e2a565b5b6134c88682870161342f565b935093505060206134db86828701613354565b9150509250925092565b600080604083850312156134fc576134fb612e25565b5b600061350a85828601612f3a565b925050602061351b85828601612f3a565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061355b60208361303a565b915061356682613525565b602082019050919050565b6000602082019050818103600083015261358a8161354e565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006135fa826130d0565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361362c5761362b6135c0565b5b600182019050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600061369360268361303a565b915061369e82613637565b604082019050919050565b600060208201905081810360008301526136c281613686565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600061372560248361303a565b9150613730826136c9565b604082019050919050565b6000602082019050818103600083015261375481613718565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006137b760228361303a565b91506137c28261375b565b604082019050919050565b600060208201905081810360008301526137e6816137aa565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b600061384960258361303a565b9150613854826137ed565b604082019050919050565b600060208201905081810360008301526138788161383c565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006138db60238361303a565b91506138e68261387f565b604082019050919050565b6000602082019050818103600083015261390a816138ce565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b600061396d60298361303a565b915061397882613911565b604082019050919050565b6000602082019050818103600083015261399c81613960565b9050919050565b7f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060008201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400602082015250565b60006139ff603f8361303a565b9150613a0a826139a3565b604082019050919050565b60006020820190508181036000830152613a2e816139f2565b9050919050565b7f544f4b454e3a204d6178205472616e73616374696f6e204c696d697400000000600082015250565b6000613a6b601c8361303a565b9150613a7682613a35565b602082019050919050565b60006020820190508181036000830152613a9a81613a5e565b9050919050565b7f544f4b454e3a20596f7572206163636f756e7420697320626c61636b6c69737460008201527f6564210000000000000000000000000000000000000000000000000000000000602082015250565b6000613afd60238361303a565b9150613b0882613aa1565b604082019050919050565b60006020820190508181036000830152613b2c81613af0565b9050919050565b6000613b3e826130d0565b9150613b49836130d0565b9250828201905080821115613b6157613b606135c0565b5b92915050565b7f544f4b454e3a2042616c616e636520657863656564732077616c6c657420736960008201527f7a65210000000000000000000000000000000000000000000000000000000000602082015250565b6000613bc360238361303a565b9150613bce82613b67565b604082019050919050565b60006020820190508181036000830152613bf281613bb6565b9050919050565b6000613c04826130d0565b9150613c0f836130d0565b9250828203905081811115613c2757613c266135c0565b5b92915050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b6000613c89602a8361303a565b9150613c9482613c2d565b604082019050919050565b60006020820190508181036000830152613cb881613c7c565b9050919050565b600081519050613cce81612f23565b92915050565b600060208284031215613cea57613ce9612e25565b5b6000613cf884828501613cbf565b91505092915050565b6000819050919050565b6000613d26613d21613d1c84613d01565b61317c565b6130d0565b9050919050565b613d3681613d0b565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613d7181612f11565b82525050565b6000613d838383613d68565b60208301905092915050565b6000602082019050919050565b6000613da782613d3c565b613db18185613d47565b9350613dbc83613d58565b8060005b83811015613ded578151613dd48882613d77565b9750613ddf83613d8f565b925050600181019050613dc0565b5085935050505092915050565b600060a082019050613e0f60008301886131f6565b613e1c6020830187613d2d565b8181036040830152613e2e8186613d9c565b9050613e3d60608301856132e6565b613e4a60808301846131f6565b9695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613e8e826130d0565b9150613e99836130d0565b925082613ea957613ea8613e54565b5b828204905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000613eea601b8361303a565b9150613ef582613eb4565b602082019050919050565b60006020820190508181036000830152613f1981613edd565b9050919050565b6000613f2b826130d0565b9150613f36836130d0565b9250828202613f44816130d0565b91508282048414831517613f5b57613f5a6135c0565b5b5092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000613fbe60218361303a565b9150613fc982613f62565b604082019050919050565b60006020820190508181036000830152613fed81613fb1565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212202d58e37faf1825c1202fdaa91085b386404be17627ce5110d361f805838ecd2764736f6c63430008130033