6080604052670de0b6b3a76400006000196200001c9190620007b7565b6000196200002b91906200081e565b60075560006009556000600a556000600b556000600c55600b54600d55600c54600e55600d54600f55600e5460105573568b52f44b228f3bd4a854cf957c5cbbb2c02eff601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073e9d146a232640604ad02e9814949e08064c75c07601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000601560146101000a81548160ff02191690831515021790555060006015806101000a81548160ff0219169083151502179055506001601560166101000a81548160ff02191690831515021790555060646002670de0b6b3a76400006200016d919062000859565b620001799190620008a4565b60165560646002670de0b6b3a764000062000195919062000859565b620001a19190620008a4565b6017556127106005670de0b6b3a7640000620001be919062000859565b620001ca9190620008a4565b601855348015620001da57600080fd5b5060405162004a8b38038062004a8b833981810160405281019062000200919062000912565b6000620002126200074d60201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35060075460026000620002c76200074d60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000737a250d5630b4cf539739df2c5dacb4c659f2488d905080601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620003ab573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003d19190620009be565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000439573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200045f9190620009be565b6040518363ffffffff1660e01b81526004016200047e92919062000a01565b6020604051808303816000875af11580156200049e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004c49190620009be565b601560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555082600a8190555081600c81905550600160056000620005286200075560201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550620006d56200074d60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef670de0b6b3a76400006040516200073c919062000a3f565b60405180910390a350505062000a5c565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000620007c4826200077e565b9150620007d1836200077e565b925082620007e457620007e362000788565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006200082b826200077e565b915062000838836200077e565b9250828203905081811115620008535762000852620007ef565b5b92915050565b600062000866826200077e565b915062000873836200077e565b925082820262000883816200077e565b915082820484148315176200089d576200089c620007ef565b5b5092915050565b6000620008b1826200077e565b9150620008be836200077e565b925082620008d157620008d062000788565b5b828204905092915050565b600080fd5b620008ec816200077e565b8114620008f857600080fd5b50565b6000815190506200090c81620008e1565b92915050565b600080604083850312156200092c576200092b620008dc565b5b60006200093c85828601620008fb565b92505060206200094f85828601620008fb565b9150509250929050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620009868262000959565b9050919050565b620009988162000979565b8114620009a457600080fd5b50565b600081519050620009b8816200098d565b92915050565b600060208284031215620009d757620009d6620008dc565b5b6000620009e784828501620009a7565b91505092915050565b620009fb8162000979565b82525050565b600060408201905062000a186000830185620009f0565b62000a276020830184620009f0565b9392505050565b62000a39816200077e565b82525050565b600060208201905062000a56600083018462000a2e565b92915050565b61401f8062000a6c6000396000f3fe6080604052600436106101d15760003560e01c80637d1db4a5116100f7578063a2a957bb11610095578063dd62ed3e11610064578063dd62ed3e1461065d578063e1d9888f1461069a578063ea1644d5146106c3578063f2fde38b146106ec576101d8565b8063a2a957bb146105b7578063a9059cbb146105e0578063c3c8cd801461061d578063c492f04614610634576101d8565b80638f70ccf7116100d15780638f70ccf71461050f5780638f9a55c01461053857806395d89b411461056357806398a5c3151461058e576101d8565b80637d1db4a51461047c5780637f2feddc146104a75780638da5cb5b146104e4576101d8565b8063313ce5671161016f57806370a082311161013e57806370a08231146103d6578063713318c114610413578063715018a61461043c57806374010ece14610453576101d8565b8063313ce5671461034057806349bd5a5e1461036b5780636d8aa8f8146103965780636fc3eaec146103bf576101d8565b80631694505e116101ab5780631694505e1461028257806318160ddd146102ad57806323b872dd146102d85780632fd689e314610315576101d8565b8063017e0192146101dd57806306fdde031461021a578063095ea7b314610245576101d8565b366101d857005b600080fd5b3480156101e957600080fd5b5061020460048036038101906101ff9190612dde565b610715565b6040516102119190612e26565b60405180910390f35b34801561022657600080fd5b5061022f610735565b60405161023c9190612ed1565b60405180910390f35b34801561025157600080fd5b5061026c60048036038101906102679190612f29565b610772565b6040516102799190612e26565b60405180910390f35b34801561028e57600080fd5b50610297610790565b6040516102a49190612fc8565b60405180910390f35b3480156102b957600080fd5b506102c26107b6565b6040516102cf9190612ff2565b60405180910390f35b3480156102e457600080fd5b506102ff60048036038101906102fa919061300d565b6107c6565b60405161030c9190612e26565b60405180910390f35b34801561032157600080fd5b5061032a61089f565b6040516103379190612ff2565b60405180910390f35b34801561034c57600080fd5b506103556108a5565b604051610362919061307c565b60405180910390f35b34801561037757600080fd5b506103806108ae565b60405161038d91906130a6565b60405180910390f35b3480156103a257600080fd5b506103bd60048036038101906103b891906130ed565b6108d4565b005b3480156103cb57600080fd5b506103d4610986565b005b3480156103e257600080fd5b506103fd60048036038101906103f89190612dde565b610a9b565b60405161040a9190612ff2565b60405180910390f35b34801561041f57600080fd5b5061043a60048036038101906104359190613262565b610aec565b005b34801561044857600080fd5b50610451610c61565b005b34801561045f57600080fd5b5061047a600480360381019061047591906132ab565b610db4565b005b34801561048857600080fd5b50610491610e53565b60405161049e9190612ff2565b60405180910390f35b3480156104b357600080fd5b506104ce60048036038101906104c99190612dde565b610e59565b6040516104db9190612ff2565b60405180910390f35b3480156104f057600080fd5b506104f9610e71565b60405161050691906130a6565b60405180910390f35b34801561051b57600080fd5b50610536600480360381019061053191906130ed565b610e9a565b005b34801561054457600080fd5b5061054d610f4c565b60405161055a9190612ff2565b60405180910390f35b34801561056f57600080fd5b50610578610f52565b6040516105859190612ed1565b60405180910390f35b34801561059a57600080fd5b506105b560048036038101906105b091906132ab565b610f8f565b005b3480156105c357600080fd5b506105de60048036038101906105d991906132d8565b61102e565b005b3480156105ec57600080fd5b5061060760048036038101906106029190612f29565b6110e5565b6040516106149190612e26565b60405180910390f35b34801561062957600080fd5b50610632611103565b005b34801561064057600080fd5b5061065b6004803603810190610656919061339a565b611220565b005b34801561066957600080fd5b50610684600480360381019061067f91906133fa565b61135a565b6040516106919190612ff2565b60405180910390f35b3480156106a657600080fd5b506106c160048036038101906106bc9190613262565b6113e1565b005b3480156106cf57600080fd5b506106ea60048036038101906106e591906132ab565b611556565b005b3480156106f857600080fd5b50610713600480360381019061070e9190612dde565b6115f5565b005b60066020528060005260406000206000915054906101000a900460ff1681565b60606040518060400160405280600b81526020017f48616c6c6f7765656e6965000000000000000000000000000000000000000000815250905090565b600061078661077f6117b6565b84846117be565b6001905092915050565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000670de0b6b3a7640000905090565b60006107d3848484611987565b610894846107df6117b6565b61088f85604051806060016040528060288152602001613fc260289139600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006108456117b6565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546122979092919063ffffffff16565b6117be565b600190509392505050565b60185481565b60006009905090565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6108dc6117b6565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610969576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161096090613486565b60405180910390fd5b80601560166101000a81548160ff02191690831515021790555050565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166109c76117b6565b73ffffffffffffffffffffffffffffffffffffffff161480610a2257506109ec610e71565b73ffffffffffffffffffffffffffffffffffffffff16610a0a6117b6565b73ffffffffffffffffffffffffffffffffffffffff16145b80610a815750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610a696117b6565b73ffffffffffffffffffffffffffffffffffffffff16145b610a8a57600080fd5b6000479050610a98816122fb565b50565b6000610ae5600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612367565b9050919050565b610af46117b6565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b81576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b7890613486565b60405180910390fd5b610258815110610bc6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bbd90613518565b60405180910390fd5b60005b8151811015610c5d576000828281518110610be757610be6613538565b5b602002602001015190506000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550508080610c5590613596565b915050610bc9565b5050565b610c696117b6565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610cf6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ced90613486565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610dbc6117b6565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e49576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e4090613486565b60405180910390fd5b8060168190555050565b60165481565b60116020528060005260406000206000915090505481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610ea26117b6565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f2f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f2690613486565b60405180910390fd5b80601560146101000a81548160ff02191690831515021790555050565b60175481565b60606040518060400160405280600681526020017f5745454e49450000000000000000000000000000000000000000000000000000815250905090565b610f976117b6565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611024576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161101b90613486565b60405180910390fd5b8060188190555050565b6110366117b6565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110ba90613486565b60405180910390fd5b8360098190555082600b8190555081600a8190555080600c8190555050505050565b60006110f96110f26117b6565b8484611987565b6001905092915050565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166111446117b6565b73ffffffffffffffffffffffffffffffffffffffff16148061119f5750611169610e71565b73ffffffffffffffffffffffffffffffffffffffff166111876117b6565b73ffffffffffffffffffffffffffffffffffffffff16145b806111fe5750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166111e66117b6565b73ffffffffffffffffffffffffffffffffffffffff16145b61120757600080fd5b600061121230610a9b565b905061121d816123d5565b50565b6112286117b6565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146112b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112ac90613486565b60405180910390fd5b60005b838390508110156113545781600560008686858181106112db576112da613538565b5b90506020020160208101906112f09190612dde565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550808061134c90613596565b9150506112b8565b50505050565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6113e96117b6565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611476576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161146d90613486565b60405180910390fd5b6102588151106114bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114b290613518565b60405180910390fd5b60005b81518110156115525760008282815181106114dc576114db613538565b5b602002602001015190506001600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050808061154a90613596565b9150506114be565b5050565b61155e6117b6565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146115eb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115e290613486565b60405180910390fd5b8060178190555050565b6115fd6117b6565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461168a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161168190613486565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036116f9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116f090613650565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361182d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611824906136e2565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361189c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161189390613774565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161197a9190612ff2565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036119f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119ed90613806565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611a65576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a5c90613898565b60405180910390fd5b60008111611aa8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a9f9061392a565b60405180910390fd5b611ab0610e71565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611b1e5750611aee610e71565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611f9657601560149054906101000a900460ff16611bad57611b3f610e71565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614611bac576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ba3906139bc565b60405180910390fd5b5b601654811115611bf2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611be990613a28565b60405180910390fd5b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614611c9f5760175481611c5484610a9b565b611c5e9190613a48565b10611c9e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c9590613aee565b60405180910390fd5b5b601560149054906101000a900460ff1615611e0f57600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580611d5a5750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b80611d975750611d68610e71565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b80611dcf575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b611e0e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e0590613ba6565b60405180910390fd5b5b6000611e1a30610a9b565b9050600060185482101590506016548210611e355760165491505b808015611e4d575060158054906101000a900460ff16155b8015611ea75750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015611ebf5750601560169054906101000a900460ff165b8015611f155750600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611f6b5750600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611f9357611f79826123d5565b60004790506000811115611f9157611f90476122fb565b5b505b50505b600060019050600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061203d5750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806120f05750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141580156120ef5750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b156120fe5760009050612285565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480156121a95750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b156121c157600954600d81905550600a54600e819055505b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614801561226c5750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b1561228457600b54600d81905550600c54600e819055505b5b6122918484848461264c565b50505050565b60008383111582906122df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122d69190612ed1565b60405180910390fd5b50600083856122ee9190613bc6565b9050809150509392505050565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015612363573d6000803e3d6000fd5b5050565b60006007548211156123ae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123a590613c6c565b60405180910390fd5b60006123b8612679565b90506123cd81846126a490919063ffffffff16565b915050919050565b60016015806101000a81548160ff0219169083151502179055506000600267ffffffffffffffff81111561240c5761240b61311f565b5b60405190808252806020026020018201604052801561243a5781602001602082028036833780820191505090505b509050308160008151811061245257612451613538565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156124f9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061251d9190613ca1565b8160018151811061253157612530613538565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061259830601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846117be565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016125fc959493929190613dc7565b600060405180830381600087803b15801561261657600080fd5b505af115801561262a573d6000803e3d6000fd5b505050505060006015806101000a81548160ff02191690831515021790555050565b8061265a576126596126ee565b5b61266584848461272b565b80612673576126726128f6565b5b50505050565b600080600061268661290a565b9150915061269d81836126a490919063ffffffff16565b9250505090565b60006126e683836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612969565b905092915050565b6000600d5414801561270257506000600e54145b61272957600d54600f81905550600e546010819055506000600d819055506000600e819055505b565b60008060008060008061273d876129cc565b95509550955095509550955061279b86600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a3490919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061283085600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a7e90919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061287c81612adc565b6128868483612b99565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516128e39190612ff2565b60405180910390a3505050505050505050565b600f54600d81905550601054600e81905550565b600080600060075490506000670de0b6b3a7640000905061293e670de0b6b3a76400006007546126a490919063ffffffff16565b82101561295c57600754670de0b6b3a7640000935093505050612965565b81819350935050505b9091565b600080831182906129b0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129a79190612ed1565b60405180910390fd5b50600083856129bf9190613e50565b9050809150509392505050565b60008060008060008060008060006129e98a600d54600e54612bd3565b92509250925060006129f9612679565b90506000806000612a0c8e878787612c69565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b6000612a7683836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612297565b905092915050565b6000808284612a8d9190613a48565b905083811015612ad2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ac990613ecd565b60405180910390fd5b8091505092915050565b6000612ae6612679565b90506000612afd8284612cf290919063ffffffff16565b9050612b5181600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a7e90919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b612bae82600754612a3490919063ffffffff16565b600781905550612bc981600854612a7e90919063ffffffff16565b6008819055505050565b600080600080612bff6064612bf1888a612cf290919063ffffffff16565b6126a490919063ffffffff16565b90506000612c296064612c1b888b612cf290919063ffffffff16565b6126a490919063ffffffff16565b90506000612c5282612c44858c612a3490919063ffffffff16565b612a3490919063ffffffff16565b905080838395509550955050505093509350939050565b600080600080612c828589612cf290919063ffffffff16565b90506000612c998689612cf290919063ffffffff16565b90506000612cb08789612cf290919063ffffffff16565b90506000612cd982612ccb8587612a3490919063ffffffff16565b612a3490919063ffffffff16565b9050838184965096509650505050509450945094915050565b6000808303612d045760009050612d66565b60008284612d129190613eed565b9050828482612d219190613e50565b14612d61576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d5890613fa1565b60405180910390fd5b809150505b92915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612dab82612d80565b9050919050565b612dbb81612da0565b8114612dc657600080fd5b50565b600081359050612dd881612db2565b92915050565b600060208284031215612df457612df3612d76565b5b6000612e0284828501612dc9565b91505092915050565b60008115159050919050565b612e2081612e0b565b82525050565b6000602082019050612e3b6000830184612e17565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612e7b578082015181840152602081019050612e60565b60008484015250505050565b6000601f19601f8301169050919050565b6000612ea382612e41565b612ead8185612e4c565b9350612ebd818560208601612e5d565b612ec681612e87565b840191505092915050565b60006020820190508181036000830152612eeb8184612e98565b905092915050565b6000819050919050565b612f0681612ef3565b8114612f1157600080fd5b50565b600081359050612f2381612efd565b92915050565b60008060408385031215612f4057612f3f612d76565b5b6000612f4e85828601612dc9565b9250506020612f5f85828601612f14565b9150509250929050565b6000819050919050565b6000612f8e612f89612f8484612d80565b612f69565b612d80565b9050919050565b6000612fa082612f73565b9050919050565b6000612fb282612f95565b9050919050565b612fc281612fa7565b82525050565b6000602082019050612fdd6000830184612fb9565b92915050565b612fec81612ef3565b82525050565b60006020820190506130076000830184612fe3565b92915050565b60008060006060848603121561302657613025612d76565b5b600061303486828701612dc9565b935050602061304586828701612dc9565b925050604061305686828701612f14565b9150509250925092565b600060ff82169050919050565b61307681613060565b82525050565b6000602082019050613091600083018461306d565b92915050565b6130a081612da0565b82525050565b60006020820190506130bb6000830184613097565b92915050565b6130ca81612e0b565b81146130d557600080fd5b50565b6000813590506130e7816130c1565b92915050565b60006020828403121561310357613102612d76565b5b6000613111848285016130d8565b91505092915050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61315782612e87565b810181811067ffffffffffffffff821117156131765761317561311f565b5b80604052505050565b6000613189612d6c565b9050613195828261314e565b919050565b600067ffffffffffffffff8211156131b5576131b461311f565b5b602082029050602081019050919050565b600080fd5b60006131de6131d98461319a565b61317f565b90508083825260208201905060208402830185811115613201576132006131c6565b5b835b8181101561322a57806132168882612dc9565b845260208401935050602081019050613203565b5050509392505050565b600082601f8301126132495761324861311a565b5b81356132598482602086016131cb565b91505092915050565b60006020828403121561327857613277612d76565b5b600082013567ffffffffffffffff81111561329657613295612d7b565b5b6132a284828501613234565b91505092915050565b6000602082840312156132c1576132c0612d76565b5b60006132cf84828501612f14565b91505092915050565b600080600080608085870312156132f2576132f1612d76565b5b600061330087828801612f14565b945050602061331187828801612f14565b935050604061332287828801612f14565b925050606061333387828801612f14565b91505092959194509250565b600080fd5b60008083601f84011261335a5761335961311a565b5b8235905067ffffffffffffffff8111156133775761337661333f565b5b602083019150836020820283011115613393576133926131c6565b5b9250929050565b6000806000604084860312156133b3576133b2612d76565b5b600084013567ffffffffffffffff8111156133d1576133d0612d7b565b5b6133dd86828701613344565b935093505060206133f0868287016130d8565b9150509250925092565b6000806040838503121561341157613410612d76565b5b600061341f85828601612dc9565b925050602061343085828601612dc9565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613470602083612e4c565b915061347b8261343a565b602082019050919050565b6000602082019050818103600083015261349f81613463565b9050919050565b7f43616e206f6e6c79206d61726b203630302077616c6c6574732070657220747860008201527f6e2064756520746f20676173206c696d69747300000000000000000000000000602082015250565b6000613502603383612e4c565b915061350d826134a6565b604082019050919050565b60006020820190508181036000830152613531816134f5565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006135a182612ef3565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036135d3576135d2613567565b5b600182019050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600061363a602683612e4c565b9150613645826135de565b604082019050919050565b600060208201905081810360008301526136698161362d565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006136cc602483612e4c565b91506136d782613670565b604082019050919050565b600060208201905081810360008301526136fb816136bf565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b600061375e602283612e4c565b915061376982613702565b604082019050919050565b6000602082019050818103600083015261378d81613751565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006137f0602583612e4c565b91506137fb82613794565b604082019050919050565b6000602082019050818103600083015261381f816137e3565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000613882602383612e4c565b915061388d82613826565b604082019050919050565b600060208201905081810360008301526138b181613875565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b6000613914602983612e4c565b915061391f826138b8565b604082019050919050565b6000602082019050818103600083015261394381613907565b9050919050565b7f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060008201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400602082015250565b60006139a6603f83612e4c565b91506139b18261394a565b604082019050919050565b600060208201905081810360008301526139d581613999565b9050919050565b7f544f4b454e3a204d6178205472616e73616374696f6e204c696d697400000000600082015250565b6000613a12601c83612e4c565b9150613a1d826139dc565b602082019050919050565b60006020820190508181036000830152613a4181613a05565b9050919050565b6000613a5382612ef3565b9150613a5e83612ef3565b9250828201905080821115613a7657613a75613567565b5b92915050565b7f544f4b454e3a2042616c616e636520657863656564732077616c6c657420736960008201527f7a65210000000000000000000000000000000000000000000000000000000000602082015250565b6000613ad8602383612e4c565b9150613ae382613a7c565b604082019050919050565b60006020820190508181036000830152613b0781613acb565b9050919050565b7f426f74732063616e6e6f74207472616e7366657220746f6b656e7320696e206f60008201527f72206f75742065786365707420746f206f776e65722c206d61726b6574696e6760208201527f2c206f72206465616420616464726573732e0000000000000000000000000000604082015250565b6000613b90605283612e4c565b9150613b9b82613b0e565b606082019050919050565b60006020820190508181036000830152613bbf81613b83565b9050919050565b6000613bd182612ef3565b9150613bdc83612ef3565b9250828203905081811115613bf457613bf3613567565b5b92915050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b6000613c56602a83612e4c565b9150613c6182613bfa565b604082019050919050565b60006020820190508181036000830152613c8581613c49565b9050919050565b600081519050613c9b81612db2565b92915050565b600060208284031215613cb757613cb6612d76565b5b6000613cc584828501613c8c565b91505092915050565b6000819050919050565b6000613cf3613cee613ce984613cce565b612f69565b612ef3565b9050919050565b613d0381613cd8565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613d3e81612da0565b82525050565b6000613d508383613d35565b60208301905092915050565b6000602082019050919050565b6000613d7482613d09565b613d7e8185613d14565b9350613d8983613d25565b8060005b83811015613dba578151613da18882613d44565b9750613dac83613d5c565b925050600181019050613d8d565b5085935050505092915050565b600060a082019050613ddc6000830188612fe3565b613de96020830187613cfa565b8181036040830152613dfb8186613d69565b9050613e0a6060830185613097565b613e176080830184612fe3565b9695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613e5b82612ef3565b9150613e6683612ef3565b925082613e7657613e75613e21565b5b828204905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000613eb7601b83612e4c565b9150613ec282613e81565b602082019050919050565b60006020820190508181036000830152613ee681613eaa565b9050919050565b6000613ef882612ef3565b9150613f0383612ef3565b9250828202613f1181612ef3565b91508282048414831517613f2857613f27613567565b5b5092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000613f8b602183612e4c565b9150613f9682613f2f565b604082019050919050565b60006020820190508181036000830152613fba81613f7e565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220106419d3307e74753000d4430fa797b749b7e3eec60588a5f62c5669af52d45864736f6c6343000813003300000000000000000000000000000000000000000000000000000000000000050000000000000000000000000000000000000000000000000000000000000005