Loading
60806040526040518060400160405280601081526020017f5348494e4a49524f20545241434b4552000000000000000000000000000000008152506008908051906020019062000051929190620002c1565b506040518060400160405280600581526020017f53484f5854000000000000000000000000000000000000000000000000000000815250600990805190602001906200009f929190620002c1565b506009600a60006101000a81548160ff021916908360ff160217905550604051620000ca9062000352565b604051809103906000f080158015620000e7573d6000803e3d6000fd5b50600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600a60009054906101000a900460ff16600a62000146919062000519565b65e35fa931a0006200015991906200056a565b600d556000600e60146101000a81548160ff021916908315150217905550610e106011553480156200018a57600080fd5b5060006200019d620002b960201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3506200024b620002b960201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6000604051620002ab919062000618565b60405180910390a362000699565b600033905090565b828054620002cf9062000664565b90600052602060002090601f016020900481019282620002f357600085556200033f565b82601f106200030e57805160ff19168380011785556200033f565b828001600101855582156200033f579182015b828111156200033e57825182559160200191906001019062000321565b5b5090506200034e919062000360565b5090565b610b088062004c9c83390190565b5b808211156200037b57600081600090555060010162000361565b5090565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b60018511156200040d57808604811115620003e557620003e46200037f565b5b6001851615620003f55780820291505b80810290506200040585620003ae565b9450620003c5565b94509492505050565b600082620004285760019050620004fb565b81620004385760009050620004fb565b81600181146200045157600281146200045c5762000492565b6001915050620004fb565b60ff8411156200047157620004706200037f565b5b8360020a9150848211156200048b576200048a6200037f565b5b50620004fb565b5060208310610133831016604e8410600b8410161715620004cc5782820a905083811115620004c657620004c56200037f565b5b620004fb565b620004db8484846001620003bb565b92509050818404811115620004f557620004f46200037f565b5b81810290505b9392505050565b6000819050919050565b600060ff82169050919050565b6000620005268262000502565b915062000533836200050c565b9250620005627fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000416565b905092915050565b6000620005778262000502565b9150620005848362000502565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615620005c057620005bf6200037f565b5b828202905092915050565b6000819050919050565b6000819050919050565b600062000600620005fa620005f484620005cb565b620005d5565b62000502565b9050919050565b6200061281620005df565b82525050565b60006020820190506200062f600083018462000607565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200067d57607f821691505b60208210810362000693576200069262000635565b5b50919050565b6145f380620006a96000396000f3fe60806040526004361061024a5760003560e01c8063715018a611610139578063a9059cbb116100b6578063e0fb0f351161007a578063e0fb0f35146108e6578063e7841ec0146108fd578063e98030c714610928578063f2fde38b14610951578063fbcbc0f11461097a578063ffb2c479146109be57610259565b8063a9059cbb146107db578063aafd847a14610818578063be10b61414610855578063cac8d53814610880578063dd62ed3e146108a957610259565b80638da5cb5b116100fd5780638da5cb5b146106ce57806391b89fba146106f957806395d89b4114610736578063a457c2d714610761578063a8b9d2401461079e57610259565b8063715018a6146105e9578063730270b514610600578063804974ea1461063d57806385a6b3ae1461067a57806389774282146106a557610259565b8063313ce567116101c75780635ebf4db91161018b5780635ebf4db91461051657806365e2ccb21461053f5780636a4740021461056a5780636f2789ec1461058157806370a08231146105ac57610259565b8063313ce5671461043157806331e79db01461045c57806339509351146104855780633974d3b1146104c25780633f83d72c146104eb57610259565b806321df2b091161020e57806321df2b0914610326578063226cfa3d1461034f57806323b872dd1461038c57806327ce0147146103c95780633009a6091461040657610259565b806303c833021461025e57806306fdde0314610268578063095ea7b31461029357806309bbedde146102d057806318160ddd146102fb57610259565b36610259576102576109fd565b005b600080fd5b6102666109fd565b005b34801561027457600080fd5b5061027d610ad6565b60405161028a91906133c2565b60405180910390f35b34801561029f57600080fd5b506102ba60048036038101906102b59190613482565b610b68565b6040516102c791906134dd565b60405180910390f35b3480156102dc57600080fd5b506102e5610b86565b6040516102f29190613507565b60405180910390f35b34801561030757600080fd5b50610310610c1e565b60405161031d9190613507565b60405180910390f35b34801561033257600080fd5b5061034d600480360381019061034891906135dd565b610c28565b005b34801561035b57600080fd5b506103766004803603810190610371919061365e565b610de3565b6040516103839190613507565b60405180910390f35b34801561039857600080fd5b506103b360048036038101906103ae919061368b565b610dfb565b6040516103c091906134dd565b60405180910390f35b3480156103d557600080fd5b506103f060048036038101906103eb919061365e565b610e48565b6040516103fd9190613507565b60405180910390f35b34801561041257600080fd5b5061041b610eeb565b6040516104289190613507565b60405180910390f35b34801561043d57600080fd5b50610446610ef1565b60405161045391906136fa565b60405180910390f35b34801561046857600080fd5b50610483600480360381019061047e919061365e565b610f08565b005b34801561049157600080fd5b506104ac60048036038101906104a79190613482565b61107b565b6040516104b991906134dd565b60405180910390f35b3480156104ce57600080fd5b506104e960048036038101906104e4919061365e565b61112e565b005b3480156104f757600080fd5b5061050061146e565b60405161050d91906134dd565b60405180910390f35b34801561052257600080fd5b5061053d60048036038101906105389190613715565b611481565b005b34801561054b57600080fd5b50610554611546565b6040516105619190613507565b60405180910390f35b34801561057657600080fd5b5061057f611550565b005b34801561058d57600080fd5b5061059661155c565b6040516105a39190613507565b60405180910390f35b3480156105b857600080fd5b506105d360048036038101906105ce919061365e565b611562565b6040516105e09190613507565b60405180910390f35b3480156105f557600080fd5b506105fe6115ab565b005b34801561060c57600080fd5b506106276004803603810190610622919061365e565b6116fe565b6040516106349190613507565b60405180910390f35b34801561064957600080fd5b50610664600480360381019061065f919061365e565b611747565b6040516106719190613507565b60405180910390f35b34801561068657600080fd5b5061068f611790565b60405161069c9190613507565b60405180910390f35b3480156106b157600080fd5b506106cc60048036038101906106c791906137ac565b611796565b005b3480156106da57600080fd5b506106e361183a565b6040516106f091906137fb565b60405180910390f35b34801561070557600080fd5b50610720600480360381019061071b919061365e565b611863565b60405161072d9190613507565b60405180910390f35b34801561074257600080fd5b5061074b611875565b60405161075891906133c2565b60405180910390f35b34801561076d57600080fd5b5061078860048036038101906107839190613482565b611907565b60405161079591906134dd565b60405180910390f35b3480156107aa57600080fd5b506107c560048036038101906107c0919061365e565b6119d4565b6040516107d29190613507565b60405180910390f35b3480156107e757600080fd5b5061080260048036038101906107fd9190613482565b611a37565b60405161080f91906134dd565b60405180910390f35b34801561082457600080fd5b5061083f600480360381019061083a919061365e565b611a83565b60405161084c9190613507565b60405180910390f35b34801561086157600080fd5b5061086a611acc565b6040516108779190613507565b60405180910390f35b34801561088c57600080fd5b506108a760048036038101906108a2919061365e565b611ad2565b005b3480156108b557600080fd5b506108d060048036038101906108cb9190613816565b611bab565b6040516108dd9190613507565b60405180910390f35b3480156108f257600080fd5b506108fb611c32565b005b34801561090957600080fd5b50610912611d1d565b60405161091f9190613507565b60405180910390f35b34801561093457600080fd5b5061094f600480360381019061094a9190613715565b611d27565b005b34801561095d57600080fd5b506109786004803603810190610973919061365e565b611e8e565b005b34801561098657600080fd5b506109a1600480360381019061099c919061365e565b61204f565b6040516109b598979695949392919061386f565b60405180910390f35b3480156109ca57600080fd5b506109e560048036038101906109e09190613715565b61235d565b6040516109f4939291906138ed565b60405180910390f35b6000610a07610c1e565b11610a1157600080fd5b6000341115610ad457610a64610a25610c1e565b610a497001000000000000000000000000000000003461265890919063ffffffff16565b610a539190613982565b6001546126d290919063ffffffff16565b6001819055503373ffffffffffffffffffffffffffffffffffffffff167fa493a9229478c3fcd73f66d2cdeb7f94fd0f341da924d1054236d7845411651134604051610ab09190613507565b60405180910390a2610acd34600b546126d290919063ffffffff16565b600b819055505b565b606060088054610ae5906139e2565b80601f0160208091040260200160405190810160405280929190818152602001828054610b11906139e2565b8015610b5e5780601f10610b3357610100808354040283529160200191610b5e565b820191906000526020600020905b815481529060010190602001808311610b4157829003601f168201915b5050505050905090565b6000610b7c610b75612730565b8484612738565b6001905092915050565b6000600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663949d225d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610bf5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c199190613a28565b905090565b6000600754905090565b610c30612730565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610cbd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cb490613aa1565b60405180910390fd5b60005b84849050811015610ddc576000858583818110610ce057610cdf613ac1565b5b9050602002016020810190610cf5919061365e565b90506000633b9aca00858585818110610d1157610d10613ac1565b5b90506020020135610d229190613af0565b9050600d548110610dc757610d378282612901565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16633825d82883836040518363ffffffff1660e01b8152600401610d94929190613b4a565b600060405180830381600087803b158015610dae57600080fd5b505af1158015610dc2573d6000803e3d6000fd5b505050505b50508080610dd490613b73565b915050610cc0565b5050505050565b60106020528060005260406000206000915090505481565b600080610e3d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e3490613c2d565b60405180910390fd5b600190509392505050565b6000700100000000000000000000000000000000610eda610ed5600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610ec7610ec2610eb188611562565b60015461265890919063ffffffff16565b61296e565b61298b90919063ffffffff16565b6129d6565b610ee49190613982565b9050919050565b600f5481565b6000600a60009054906101000a900460ff16905090565b610f10612730565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f9d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f9490613aa1565b60405180910390fd5b610fa8816000612901565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166329092d0e826040518263ffffffff1660e01b815260040161100391906137fb565b600060405180830381600087803b15801561101d57600080fd5b505af1158015611031573d6000803e3d6000fd5b505050508073ffffffffffffffffffffffffffffffffffffffff167fa878b31040b2e6d0a9a3d3361209db3908ba62014b0dca52adbaee451d128b2560405160405180910390a250565b6000611124611088612730565b8461111f8560066000611099612730565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546126d290919063ffffffff16565b612738565b6001905092915050565b6000600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231836040518263ffffffff1660e01b815260040161118b91906137fb565b602060405180830381865afa1580156111a8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111cc9190613a28565b9050600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630e832273836040518263ffffffff1660e01b815260040161122991906137fb565b602060405180830381865afa158015611246573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061126a9190613c62565b6113b357600d548110611315576112818282612901565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16633825d82883836040518363ffffffff1660e01b81526004016112de929190613b4a565b600060405180830381600087803b1580156112f857600080fd5b505af115801561130c573d6000803e3d6000fd5b505050506113ae565b611320826000612901565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166329092d0e836040518263ffffffff1660e01b815260040161137b91906137fb565b600060405180830381600087803b15801561139557600080fd5b505af11580156113a9573d6000803e3d6000fd5b505050505b61145e565b60006113be83611562565b111561145d576113cf826000612901565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166329092d0e836040518263ffffffff1660e01b815260040161142a91906137fb565b600060405180830381600087803b15801561144457600080fd5b505af1158015611458573d6000803e3d6000fd5b505050505b5b6114698260016129ed565b505050565b600e60149054906101000a900460ff1681565b611489612730565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611516576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161150d90613aa1565b60405180910390fd5b600a60009054906101000a900460ff16600a6115329190613dc2565b8161153d9190613af0565b600d8190555050565b6000600d54905090565b61155933612b4a565b50565b60115481565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6115b3612730565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611640576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161163790613aa1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600b5481565b61179e612730565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461182b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161182290613aa1565b60405180910390fd5b61183582826129ed565b505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600061186e826119d4565b9050919050565b606060098054611884906139e2565b80601f01602080910402602001604051908101604052809291908181526020018280546118b0906139e2565b80156118fd5780601f106118d2576101008083540402835291602001916118fd565b820191906000526020600020905b8154815290600101906020018083116118e057829003601f168201915b5050505050905090565b60006119ca611914612730565b846119c585604051806060016040528060258152602001614599602591396006600061193e612730565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612d6f9092919063ffffffff16565b612738565b6001905092915050565b6000611a30600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611a2284610e48565b612dd390919063ffffffff16565b9050919050565b600080611a79576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a7090613c2d565b60405180910390fd5b6001905092915050565b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600d5481565b611ada612730565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611b67576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b5e90613aa1565b60405180910390fd5b80600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611c3a612730565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611cc7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cbe90613aa1565b60405180910390fd5b6000479050611cd461183a565b73ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611d19573d6000803e3d6000fd5b5050565b6000600f54905090565b611d2f612730565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611dbc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611db390613aa1565b60405180910390fd5b610e108110158015611dd15750620151808111155b611e10576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e0790613e7f565b60405180910390fd5b6011548103611e54576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e4b90613f11565b60405180910390fd5b601154817f474ea64804364a1e29a4487ddb63c3342a2dd826ccd8acf48825e680a0e6f20f60405160405180910390a38060118190555050565b611e96612730565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611f23576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f1a90613aa1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611f92576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f8990613fa3565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600080600080600080600080889750600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663564c8d11896040518263ffffffff1660e01b81526004016120b991906137fb565b602060405180830381865afa1580156120d6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120fa9190613fef565b96507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9550600087126122af57600f5487111561214d57612146600f5488612e1d90919063ffffffff16565b95506122ae565b6000600f54600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663949d225d6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156121bf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121e39190613a28565b116121ef576000612295565b612294600f54600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663949d225d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612262573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122869190613a28565b612dd390919063ffffffff16565b5b90506122aa818961298b90919063ffffffff16565b9650505b5b6122b8886119d4565b94506122c388610e48565b9350601060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205492506000831161231657600061232c565b61232b601154846126d290919063ffffffff16565b5b915042821161233c576000612350565b61234f4283612dd390919063ffffffff16565b5b9050919395975091939597565b600080600080600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663949d225d6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156123d0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123f49190613a28565b90506000810361241057600080600f5493509350935050612651565b6000600f5490506000805a90506000805b898410801561242f57508582105b1561263857848061243f90613b73565b955050600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663949d225d6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156124af573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124d39190613a28565b85106124de57600094505b6000600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663663037ac876040518263ffffffff1660e01b815260040161253b9190613507565b602060405180830381865afa158015612558573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061257c9190614031565b90506125c6601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612e68565b156125eb576125d68160016129ed565b156125ea5781806125e690613b73565b9250505b5b82806125f690613b73565b93505060005a90508085111561262e5761262b61261c8287612dd390919063ffffffff16565b876126d290919063ffffffff16565b95505b8094505050612421565b84600f819055508181600f549850985098505050505050505b9193909250565b600080830361266a57600090506126cc565b600082846126789190613af0565b90508284826126879190613982565b146126c7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126be906140d0565b60405180910390fd5b809150505b92915050565b60008082846126e191906140f0565b905083811015612726576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161271d90614192565b60405180910390fd5b8091505092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036127a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161279e90614224565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612816576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161280d906142b6565b60405180910390fd5b80600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516128f49190613507565b60405180910390a3505050565b600061290c83611562565b90508082111561293d57600061292b8284612dd390919063ffffffff16565b90506129378482612e9b565b50612969565b8082101561296857600061295a8383612dd390919063ffffffff16565b905061296684826130d5565b505b5b505050565b600080829050600081121561298257600080fd5b80915050919050565b600080828461299a91906142d6565b9050600083121580156129ad5750838112155b806129c357506000831280156129c257508381125b5b6129cc57600080fd5b8091505092915050565b6000808212156129e557600080fd5b819050919050565b6000806129f984612b4a565b90506000811115612b3e576000600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050612a5b81836126d290919063ffffffff16565b600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555042601060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508315158573ffffffffffffffffffffffffffffffffffffffff167fa2c38e2d2fb7e3e1912d937fd1ca11ed6d51864dee4cfa7a7bf02becd7acf09284604051612b2b9190613507565b60405180910390a3600192505050612b44565b60009150505b92915050565b600080612b56836119d4565b90506000811115612d6457612bb381600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546126d290919063ffffffff16565b600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff167fee503bee2bb6a87e57bc57db795f98137327401a0e7b7ce42e37926cc1a9ca4d82604051612c3c9190613507565b60405180910390a260008373ffffffffffffffffffffffffffffffffffffffff1682610bb890604051612c6e9061439b565b600060405180830381858888f193505050503d8060008114612cac576040519150601f19603f3d011682016040523d82523d6000602084013e612cb1565b606091505b5050905080612d5a57612d0c82600360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612dd390919063ffffffff16565b600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600092505050612d6a565b8192505050612d6a565b60009150505b919050565b6000838311158290612db7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612dae91906133c2565b60405180910390fd5b5060008385612dc691906143b0565b9050809150509392505050565b6000612e1583836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612d6f565b905092915050565b6000808284612e2c91906143e4565b905060008312158015612e3f5750838113155b80612e555750600083128015612e5457508381135b5b612e5e57600080fd5b8091505092915050565b600042821115612e7b5760009050612e96565b601154612e918342612dd390919063ffffffff16565b101590505b919050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612f0a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f01906144c4565b60405180910390fd5b612f1f816007546126d290919063ffffffff16565b600781905550612f7781600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546126d290919063ffffffff16565b600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516130189190613507565b60405180910390a361308e61304061303b8360015461265890919063ffffffff16565b61296e565b600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612e1d90919063ffffffff16565b600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603613144576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161313b90614556565b60405180910390fd5b6131b08160405180606001604052806022815260200161457760229139600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612d6f9092919063ffffffff16565b600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061320881600754612dd390919063ffffffff16565b600781905550600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161326c9190613507565b60405180910390a36132e261329461328f8360015461265890919063ffffffff16565b61296e565b600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461298b90919063ffffffff16565b600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015613363578082015181840152602081019050613348565b83811115613372576000848401525b50505050565b6000601f19601f8301169050919050565b600061339482613329565b61339e8185613334565b93506133ae818560208601613345565b6133b781613378565b840191505092915050565b600060208201905081810360008301526133dc8184613389565b905092915050565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000613419826133ee565b9050919050565b6134298161340e565b811461343457600080fd5b50565b60008135905061344681613420565b92915050565b6000819050919050565b61345f8161344c565b811461346a57600080fd5b50565b60008135905061347c81613456565b92915050565b60008060408385031215613499576134986133e4565b5b60006134a785828601613437565b92505060206134b88582860161346d565b9150509250929050565b60008115159050919050565b6134d7816134c2565b82525050565b60006020820190506134f260008301846134ce565b92915050565b6135018161344c565b82525050565b600060208201905061351c60008301846134f8565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f84011261354757613546613522565b5b8235905067ffffffffffffffff81111561356457613563613527565b5b6020830191508360208202830111156135805761357f61352c565b5b9250929050565b60008083601f84011261359d5761359c613522565b5b8235905067ffffffffffffffff8111156135ba576135b9613527565b5b6020830191508360208202830111156135d6576135d561352c565b5b9250929050565b600080600080604085870312156135f7576135f66133e4565b5b600085013567ffffffffffffffff811115613615576136146133e9565b5b61362187828801613531565b9450945050602085013567ffffffffffffffff811115613644576136436133e9565b5b61365087828801613587565b925092505092959194509250565b600060208284031215613674576136736133e4565b5b600061368284828501613437565b91505092915050565b6000806000606084860312156136a4576136a36133e4565b5b60006136b286828701613437565b93505060206136c386828701613437565b92505060406136d48682870161346d565b9150509250925092565b600060ff82169050919050565b6136f4816136de565b82525050565b600060208201905061370f60008301846136eb565b92915050565b60006020828403121561372b5761372a6133e4565b5b60006137398482850161346d565b91505092915050565b600061374d826133ee565b9050919050565b61375d81613742565b811461376857600080fd5b50565b60008135905061377a81613754565b92915050565b613789816134c2565b811461379457600080fd5b50565b6000813590506137a681613780565b92915050565b600080604083850312156137c3576137c26133e4565b5b60006137d18582860161376b565b92505060206137e285828601613797565b9150509250929050565b6137f58161340e565b82525050565b600060208201905061381060008301846137ec565b92915050565b6000806040838503121561382d5761382c6133e4565b5b600061383b85828601613437565b925050602061384c85828601613437565b9150509250929050565b6000819050919050565b61386981613856565b82525050565b600061010082019050613885600083018b6137ec565b613892602083018a613860565b61389f6040830189613860565b6138ac60608301886134f8565b6138b960808301876134f8565b6138c660a08301866134f8565b6138d360c08301856134f8565b6138e060e08301846134f8565b9998505050505050505050565b600060608201905061390260008301866134f8565b61390f60208301856134f8565b61391c60408301846134f8565b949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061398d8261344c565b91506139988361344c565b9250826139a8576139a7613924565b5b828204905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806139fa57607f821691505b602082108103613a0d57613a0c6139b3565b5b50919050565b600081519050613a2281613456565b92915050565b600060208284031215613a3e57613a3d6133e4565b5b6000613a4c84828501613a13565b91505092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613a8b602083613334565b9150613a9682613a55565b602082019050919050565b60006020820190508181036000830152613aba81613a7e565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000613afb8261344c565b9150613b068361344c565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613b3f57613b3e613953565b5b828202905092915050565b6000604082019050613b5f60008301856137ec565b613b6c60208301846134f8565b9392505050565b6000613b7e8261344c565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203613bb057613baf613953565b5b600182019050919050565b7f4e6f207472616e736665727320616c6c6f77656420696e206469766964656e6460008201527f20747261636b6572000000000000000000000000000000000000000000000000602082015250565b6000613c17602883613334565b9150613c2282613bbb565b604082019050919050565b60006020820190508181036000830152613c4681613c0a565b9050919050565b600081519050613c5c81613780565b92915050565b600060208284031215613c7857613c776133e4565b5b6000613c8684828501613c4d565b91505092915050565b60008160011c9050919050565b6000808291508390505b6001851115613ce657808604811115613cc257613cc1613953565b5b6001851615613cd15780820291505b8081029050613cdf85613c8f565b9450613ca6565b94509492505050565b600082613cff5760019050613dbb565b81613d0d5760009050613dbb565b8160018114613d235760028114613d2d57613d5c565b6001915050613dbb565b60ff841115613d3f57613d3e613953565b5b8360020a915084821115613d5657613d55613953565b5b50613dbb565b5060208310610133831016604e8410600b8410161715613d915782820a905083811115613d8c57613d8b613953565b5b613dbb565b613d9e8484846001613c9c565b92509050818404811115613db557613db4613953565b5b81810290505b9392505050565b6000613dcd8261344c565b9150613dd8836136de565b9250613e057fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484613cef565b905092915050565b7f436c61696d57616974206d757374206265207570646174656420746f2062657460008201527f7765656e203120616e6420323420686f75727300000000000000000000000000602082015250565b6000613e69603383613334565b9150613e7482613e0d565b604082019050919050565b60006020820190508181036000830152613e9881613e5c565b9050919050565b7f43616e6e6f742075706461746520636c61696d5761697420746f2073616d652060008201527f76616c7565000000000000000000000000000000000000000000000000000000602082015250565b6000613efb602583613334565b9150613f0682613e9f565b604082019050919050565b60006020820190508181036000830152613f2a81613eee565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613f8d602683613334565b9150613f9882613f31565b604082019050919050565b60006020820190508181036000830152613fbc81613f80565b9050919050565b613fcc81613856565b8114613fd757600080fd5b50565b600081519050613fe981613fc3565b92915050565b600060208284031215614005576140046133e4565b5b600061401384828501613fda565b91505092915050565b60008151905061402b81613420565b92915050565b600060208284031215614047576140466133e4565b5b60006140558482850161401c565b91505092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b60006140ba602183613334565b91506140c58261405e565b604082019050919050565b600060208201905081810360008301526140e9816140ad565b9050919050565b60006140fb8261344c565b91506141068361344c565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561413b5761413a613953565b5b828201905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b600061417c601b83613334565b915061418782614146565b602082019050919050565b600060208201905081810360008301526141ab8161416f565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600061420e602483613334565b9150614219826141b2565b604082019050919050565b6000602082019050818103600083015261423d81614201565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006142a0602283613334565b91506142ab82614244565b604082019050919050565b600060208201905081810360008301526142cf81614293565b9050919050565b60006142e182613856565b91506142ec83613856565b9250817f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0383136000831215161561432757614326613953565b5b817f800000000000000000000000000000000000000000000000000000000000000003831260008312161561435f5761435e613953565b5b828201905092915050565b600081905092915050565b50565b600061438560008361436a565b915061439082614375565b600082019050919050565b60006143a682614378565b9150819050919050565b60006143bb8261344c565b91506143c68361344c565b9250828210156143d9576143d8613953565b5b828203905092915050565b60006143ef82613856565b91506143fa83613856565b9250827f80000000000000000000000000000000000000000000000000000000000000000182126000841215161561443557614434613953565b5b827f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01821360008412161561446d5761446c613953565b5b828203905092915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b60006144ae601f83613334565b91506144b982614478565b602082019050919050565b600060208201905081810360008301526144dd816144a1565b9050919050565b7f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b6000614540602183613334565b915061454b826144e4565b604082019050919050565b6000602082019050818103600083015261456f81614533565b905091905056fe45524332303a206275726e20616d6f756e7420657863656564732062616c616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212206f26eca3e36f916a0449088b116441366c4760adaf089c39535c6c69c74b42b664736f6c634300080d0033608060405234801561001057600080fd5b50610ae8806100206000396000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c8063663037ac1161005b578063663037ac146100ea578063949d225d1461011a578063c2bc2efc14610138578063cd413329146101685761007d565b806329092d0e146100825780633825d8281461009e578063564c8d11146100ba575b600080fd5b61009c60048036038101906100979190610863565b610198565b005b6100b860048036038101906100b391906108c6565b610464565b005b6100d460048036038101906100cf9190610863565b61065f565b6040516100e1919061091f565b60405180910390f35b61010460048036038101906100ff919061093a565b610727565b6040516101119190610976565b60405180910390f35b610122610771565b60405161012f91906109a0565b60405180910390f35b610152600480360381019061014d9190610863565b610780565b60405161015f91906109a0565b60405180910390f35b610182600480360381019061017d9190610863565b6107cb565b60405161018f91906109d6565b60405180910390f35b600060030160008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561046157600060030160008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81549060ff0219169055600060010160008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000905560008060020160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506000600160008001805490506102e19190610a20565b905060008060000182815481106102fb576102fa610a54565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905082600060020160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600060020160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009055806000800184815481106103cc576103cb610a54565b5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000800180548061042857610427610a83565b5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905590555050505b50565b600060030160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156105055780600060010160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061065b565b6001600060030160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080600060010160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000800180549050600060020160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060008001829080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b5050565b60008060030160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166106dc577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9050610722565b600060020160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490505b919050565b600080600001828154811061073f5761073e610a54565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b60008060000180549050905090565b60008060010160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6107f78361065f565b14159050919050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061083082610805565b9050919050565b61084081610825565b811461084b57600080fd5b50565b60008135905061085d81610837565b92915050565b60006020828403121561087957610878610800565b5b60006108878482850161084e565b91505092915050565b6000819050919050565b6108a381610890565b81146108ae57600080fd5b50565b6000813590506108c08161089a565b92915050565b600080604083850312156108dd576108dc610800565b5b60006108eb8582860161084e565b92505060206108fc858286016108b1565b9150509250929050565b6000819050919050565b61091981610906565b82525050565b60006020820190506109346000830184610910565b92915050565b6000602082840312156109505761094f610800565b5b600061095e848285016108b1565b91505092915050565b61097081610825565b82525050565b600060208201905061098b6000830184610967565b92915050565b61099a81610890565b82525050565b60006020820190506109b56000830184610991565b92915050565b60008115159050919050565b6109d0816109bb565b82525050565b60006020820190506109eb60008301846109c7565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000610a2b82610890565b9150610a3683610890565b925082821015610a4957610a486109f1565b5b828203905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fdfea26469706673582212200e6254fd0a50274d3b99fb1a5a2665de37fee8d58ebb07c232f3aba19521c5e364736f6c634300080d0033