0x6080604052600436106102345760003560e01c8063751039fc1161012e578063bf56b371116100ab578063e2226a561161006f578063e2226a561461085e578063eec1c69f1461089b578063f2fde38b146108d8578063f429389014610901578063f887ea40146109185761023b565b8063bf56b3711461079d578063bffb691d146107c8578063c9567bf9146107f3578063dc92f8f01461080a578063dd62ed3e146108215761023b565b806395d89b41116100f257806395d89b4114610690578063a8aa1b31146106bb578063a9059cbb146106e6578063a94fae9414610723578063b1a4e0dc146107605761023b565b8063751039fc146105e357806375f0a874146105fa578063764ca5121461062557806377f08cd61461063c578063893d20e8146106655761023b565b8063313ce567116101bc57806363df0ef71161018057806363df0ef7146104ec578063658d4b7f14610517578063673448dd1461054057806369fe0e2d1461057d57806370a08231146105a65761023b565b8063313ce56714610409578063342aa8b51461043457806340c442de1461045d578063571ac8b0146104865780635d098b38146104c35761023b565b806323b635851161020357806323b63585146102fe57806323b872dd1461033b57806329e04b4a146103785780632b112e49146103a15780632f54bf6e146103cc5761023b565b80630445b6671461024057806306fdde031461026b578063095ea7b31461029657806318160ddd146102d35761023b565b3661023b57005b600080fd5b34801561024c57600080fd5b50610255610943565b6040516102629190612cf8565b60405180910390f35b34801561027757600080fd5b50610280610949565b60405161028d9190612dac565b60405180910390f35b3480156102a257600080fd5b506102bd60048036038101906102b89190612e5d565b610986565b6040516102ca9190612eb8565b60405180910390f35b3480156102df57600080fd5b506102e8610a78565b6040516102f59190612cf8565b60405180910390f35b34801561030a57600080fd5b5061032560048036038101906103209190612ed3565b610a82565b6040516103329190612eb8565b60405180910390f35b34801561034757600080fd5b50610362600480360381019061035d9190612f00565b610b00565b60405161036f9190612eb8565b60405180910390f35b34801561038457600080fd5b5061039f600480360381019061039a9190612ed3565b610d00565b005b3480156103ad57600080fd5b506103b6610dbd565b6040516103c39190612cf8565b60405180910390f35b3480156103d857600080fd5b506103f360048036038101906103ee9190612f53565b610e3f565b6040516104009190612eb8565b60405180910390f35b34801561041557600080fd5b5061041e610e98565b60405161042b9190612f9c565b60405180910390f35b34801561044057600080fd5b5061045b60048036038101906104569190612fe3565b610ea1565b005b34801561046957600080fd5b50610484600480360381019061047f9190612f53565b610f44565b005b34801561049257600080fd5b506104ad60048036038101906104a89190612f53565b6110f6565b6040516104ba9190612eb8565b60405180910390f35b3480156104cf57600080fd5b506104ea60048036038101906104e59190612f53565b611129565b005b3480156104f857600080fd5b506105016111b5565b60405161050e9190613032565b60405180910390f35b34801561052357600080fd5b5061053e60048036038101906105399190612fe3565b6111db565b005b34801561054c57600080fd5b5061056760048036038101906105629190612f53565b61127e565b6040516105749190612eb8565b60405180910390f35b34801561058957600080fd5b506105a4600480360381019061059f9190612ed3565b61129e565b005b3480156105b257600080fd5b506105cd60048036038101906105c89190612f53565b611334565b6040516105da9190612cf8565b60405180910390f35b3480156105ef57600080fd5b506105f861137d565b005b34801561060657600080fd5b5061060f6113fd565b60405161061c919061306e565b60405180910390f35b34801561063157600080fd5b5061063a611423565b005b34801561064857600080fd5b50610663600480360381019061065e9190612f53565b6114de565b005b34801561067157600080fd5b5061067a61156a565b6040516106879190613032565b60405180910390f35b34801561069c57600080fd5b506106a5611593565b6040516106b29190612dac565b60405180910390f35b3480156106c757600080fd5b506106d06115d0565b6040516106dd9190613032565b60405180910390f35b3480156106f257600080fd5b5061070d60048036038101906107089190612e5d565b6115f6565b60405161071a9190612eb8565b60405180910390f35b34801561072f57600080fd5b5061074a600480360381019061074591906130c5565b61160b565b6040516107579190613032565b60405180910390f35b34801561076c57600080fd5b5061078760048036038101906107829190612f53565b611657565b6040516107949190612eb8565b60405180910390f35b3480156107a957600080fd5b506107b26116ad565b6040516107bf9190612cf8565b60405180910390f35b3480156107d457600080fd5b506107dd6116b3565b6040516107ea9190612eb8565b60405180910390f35b3480156107ff57600080fd5b506108086116c6565b005b34801561081657600080fd5b5061081f611732565b005b34801561082d57600080fd5b50610848600480360381019061084391906130f2565b611893565b6040516108559190612cf8565b60405180910390f35b34801561086a57600080fd5b50610885600480360381019061088091906130c5565b61191a565b6040516108929190613032565b60405180910390f35b3480156108a757600080fd5b506108c260048036038101906108bd91906130c5565b611958565b6040516108cf9190612eb8565b60405180910390f35b3480156108e457600080fd5b506108ff60048036038101906108fa919061315e565b611aad565b005b34801561090d57600080fd5b50610916611b6f565b005b34801561092457600080fd5b5061092d611c28565b60405161093a91906131ea565b60405180910390f35b60155481565b60606040518060400160405280600381526020017f5056500000000000000000000000000000000000000000000000000000000000815250905090565b600081600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610a669190612cf8565b60405180910390a36001905092915050565b6000600554905090565b6000610a8d33610e3f565b610acc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ac390613251565b60405180910390fd5b610af930600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611c4e565b9050919050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610cec57610c6b826040518060400160405280601681526020017f496e73756666696369656e7420416c6c6f77616e636500000000000000000000815250600760008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611e219092919063ffffffff16565b600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b610cf7848484611e85565b90509392505050565b610d0933610e3f565b610d48576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d3f90613251565b60405180910390fd5b610d5e606460055461255b90919063ffffffff16565b811115610da0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d97906132bd565b60405180910390fd5b670de0b6b3a764000081610db4919061330c565b60158190555050565b6000610e3a610ded600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611334565b610e2c610e1b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611334565b6005546125a590919063ffffffff16565b6125a590919063ffffffff16565b905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b60006012905090565b610eaa33610e3f565b610ee9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ee090613251565b60405180910390fd5b80600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b610f4d33610e3f565b610f8c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f8390613251565b60405180910390fd5b600081905060008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610fcc9190613032565b602060405180830381865afa158015610fe9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061100d919061337b565b905060008111611052576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611049906133f4565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b81526004016110ad929190613414565b6020604051808303816000875af11580156110cc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110f09190613452565b50505050565b6000611122827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610986565b9050919050565b61113233610e3f565b611171576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161116890613251565b60405180910390fd5b80600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6111e433610e3f565b611223576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161121a90613251565b60405180910390fd5b80600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600a6020528060005260406000206000915054906101000a900460ff1681565b6112a733610e3f565b6112e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112dd90613251565b60405180910390fd5b600a81111561132a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611321906134cb565b60405180910390fd5b80600c8190555050565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61138633610e3f565b6113c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113bc90613251565b60405180910390fd5b6000601260016101000a81548160ff0219169083151502179055506000601260026101000a81548160ff021916908315150217905550565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61142c33610e3f565b61146b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161146290613251565b60405180910390fd5b60001515601660009054906101000a900460ff161515146114c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114b890613537565b60405180910390fd5b6001601660006101000a81548160ff021916908315150217905550565b6114e733610e3f565b611526576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161151d90613251565b60405180910390fd5b80600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600381526020017f5056500000000000000000000000000000000000000000000000000000000000815250905090565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000611603338484611e85565b905092915050565b6000600b60008363ffffffff1663ffffffff16815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6000600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60115481565b601660009054906101000a900460ff1681565b6116cf33610e3f565b61170e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161170590613251565b60405180910390fd5b436011819055506001601260006101000a81548160ff021916908315150217905550565b61173b33610e3f565b61177a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161177190613251565b60405180910390fd5b6000479050600081116117c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117b9906135a3565b60405180910390fd5b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1682604051611809906135f4565b60006040518083038185875af1925050503d8060008114611846576040519150601f19603f3d011682016040523d82523d6000602084013e61184b565b606091505b505090508061188f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161188690613655565b60405180910390fd5b5050565b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600b6020528060005260406000206000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081565b60008033905060008363ffffffff16036119a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161199e906136c1565b60405180910390fd5b80600b60008563ffffffff1663ffffffff16815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550611a54600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610986565b508073ffffffffffffffffffffffffffffffffffffffff167fe146b5682c27e8ecaaf5d0a35504c4b2e0f0d9f6ea5d5d4dfd9c32c7df2174eb84604051611a9b91906136f0565b60405180910390a26001915050919050565b611ab633610e3f565b611af5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aec90613251565b60405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc68616381604051611b64919061372c565b60405180910390a150565b611b7833610e3f565b611bb7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bae90613251565b60405180910390fd5b6000479050600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611c24573d6000803e3d6000fd5b5050565b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000611cd9826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611e219092919063ffffffff16565b600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611d6e82600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125ef90919063ffffffff16565b600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611e0e9190612cf8565b60405180910390a3600190509392505050565b6000838311158290611e69576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e609190612dac565b60405180910390fd5b5060008385611e789190613747565b9050809150509392505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611f30575060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611f8557601260009054906101000a900460ff16611f84576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f7b906137c7565b60405180910390fd5b5b601660009054906101000a900460ff161561207e57600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561203e5750600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b61207d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161207490613833565b60405180910390fd5b5b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015612126575060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b801561215e57503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b801561219657503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b156122a357601260029054906101000a900460ff16156122475760145461220583600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125ef90919063ffffffff16565b1115612246576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161223d9061389f565b60405180910390fd5b5b601260019054906101000a900460ff16156122a2576013548211156122a1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122989061390b565b60405180910390fd5b5b5b601660019054906101000a900460ff16156122ca576122c3848484611c4e565b9050612554565b60006122d530611334565b905060006015548210159050600081801561233d5750601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff16145b80156123515750600061234f30611334565b115b905080156123625761236161264d565b5b6123eb856040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600660008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611e219092919063ffffffff16565b600660008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600061243a8888612705565b612444578561244f565b61244e8887612916565b5b90506124a381600660008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125ef90919063ffffffff16565b600660008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516125439190612cf8565b60405180910390a360019450505050505b9392505050565b600061259d83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612a5a565b905092915050565b60006125e783836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611e21565b905092915050565b60008082846125fe919061392b565b905083811015612643576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161263a906139cd565b60405180910390fd5b8091505092915050565b6001601660016101000a81548160ff021916908315150217905550600061267330611334565b905061267e81612abd565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f193505050501580156126e6573d6000803e3d6000fd5b50506000601660016101000a81548160ff021916908315150217905550565b6000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156127b35750600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561285d5750600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061285b5750600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b155b801561290e5750601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148061290d5750601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b5b905092915050565b600080612942600d54612934600c5486612c6590919063ffffffff16565b61255b90919063ffffffff16565b905061299681600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125ef90919063ffffffff16565b600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612a369190612cf8565b60405180910390a3612a5181846125a590919063ffffffff16565b91505092915050565b60008083118290612aa1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a989190612dac565b60405180910390fd5b5060008385612ab09190613a1c565b9050809150509392505050565b6000600267ffffffffffffffff811115612ada57612ad9613a4d565b5b604051908082528060200260200182016040528015612b085781602001602082028036833780820191505090505b5090503081600081518110612b2057612b1f613a7c565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681600181518110612b9157612b90613a7c565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612c2f959493929190613ba4565b600060405180830381600087803b158015612c4957600080fd5b505af1158015612c5d573d6000803e3d6000fd5b505050505050565b6000808303612c775760009050612cd9565b60008284612c85919061330c565b9050828482612c949190613a1c565b14612cd4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ccb90613c70565b60405180910390fd5b809150505b92915050565b6000819050919050565b612cf281612cdf565b82525050565b6000602082019050612d0d6000830184612ce9565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612d4d578082015181840152602081019050612d32565b83811115612d5c576000848401525b50505050565b6000601f19601f8301169050919050565b6000612d7e82612d13565b612d888185612d1e565b9350612d98818560208601612d2f565b612da181612d62565b840191505092915050565b60006020820190508181036000830152612dc68184612d73565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612dfe82612dd3565b9050919050565b612e0e81612df3565b8114612e1957600080fd5b50565b600081359050612e2b81612e05565b92915050565b612e3a81612cdf565b8114612e4557600080fd5b50565b600081359050612e5781612e31565b92915050565b60008060408385031215612e7457612e73612dce565b5b6000612e8285828601612e1c565b9250506020612e9385828601612e48565b9150509250929050565b60008115159050919050565b612eb281612e9d565b82525050565b6000602082019050612ecd6000830184612ea9565b92915050565b600060208284031215612ee957612ee8612dce565b5b6000612ef784828501612e48565b91505092915050565b600080600060608486031215612f1957612f18612dce565b5b6000612f2786828701612e1c565b9350506020612f3886828701612e1c565b9250506040612f4986828701612e48565b9150509250925092565b600060208284031215612f6957612f68612dce565b5b6000612f7784828501612e1c565b91505092915050565b600060ff82169050919050565b612f9681612f80565b82525050565b6000602082019050612fb16000830184612f8d565b92915050565b612fc081612e9d565b8114612fcb57600080fd5b50565b600081359050612fdd81612fb7565b92915050565b60008060408385031215612ffa57612ff9612dce565b5b600061300885828601612e1c565b925050602061301985828601612fce565b9150509250929050565b61302c81612df3565b82525050565b60006020820190506130476000830184613023565b92915050565b600061305882612dd3565b9050919050565b6130688161304d565b82525050565b6000602082019050613083600083018461305f565b92915050565b600063ffffffff82169050919050565b6130a281613089565b81146130ad57600080fd5b50565b6000813590506130bf81613099565b92915050565b6000602082840312156130db576130da612dce565b5b60006130e9848285016130b0565b91505092915050565b6000806040838503121561310957613108612dce565b5b600061311785828601612e1c565b925050602061312885828601612e1c565b9150509250929050565b61313b8161304d565b811461314657600080fd5b50565b60008135905061315881613132565b92915050565b60006020828403121561317457613173612dce565b5b600061318284828501613149565b91505092915050565b6000819050919050565b60006131b06131ab6131a684612dd3565b61318b565b612dd3565b9050919050565b60006131c282613195565b9050919050565b60006131d4826131b7565b9050919050565b6131e4816131c9565b82525050565b60006020820190506131ff60008301846131db565b92915050565b7f214f776e65720000000000000000000000000000000000000000000000000000600082015250565b600061323b600683612d1e565b915061324682613205565b602082019050919050565b6000602082019050818103600083015261326a8161322e565b9050919050565b7f63616e2774206578636565642031250000000000000000000000000000000000600082015250565b60006132a7600f83612d1e565b91506132b282613271565b602082019050919050565b600060208201905081810360008301526132d68161329a565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061331782612cdf565b915061332283612cdf565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561335b5761335a6132dd565b5b828202905092915050565b60008151905061337581612e31565b92915050565b60006020828403121561339157613390612dce565b5b600061339f84828501613366565b91505092915050565b7f4e6f20746f6b656e7320746f2077697468647261770000000000000000000000600082015250565b60006133de601583612d1e565b91506133e9826133a8565b602082019050919050565b6000602082019050818103600083015261340d816133d1565b9050919050565b60006040820190506134296000830185613023565b6134366020830184612ce9565b9392505050565b60008151905061344c81612fb7565b92915050565b60006020828403121561346857613467612dce565b5b60006134768482850161343d565b91505092915050565b7f4665652063616e27742065786365656420313025000000000000000000000000600082015250565b60006134b5601483612d1e565b91506134c08261347f565b602082019050919050565b600060208201905081810360008301526134e4816134a8565b9050919050565b7f63616e206f6e6c792062652063616c6c6564206f6e6365000000000000000000600082015250565b6000613521601783612d1e565b915061352c826134eb565b602082019050919050565b6000602082019050818103600083015261355081613514565b9050919050565b7f4e6f20457468657220746f207769746864726177000000000000000000000000600082015250565b600061358d601483612d1e565b915061359882613557565b602082019050919050565b600060208201905081810360008301526135bc81613580565b9050919050565b600081905092915050565b50565b60006135de6000836135c3565b91506135e9826135ce565b600082019050919050565b60006135ff826135d1565b9150819050919050565b7f5769746864726177206661696c65640000000000000000000000000000000000600082015250565b600061363f600f83612d1e565b915061364a82613609565b602082019050919050565b6000602082019050818103600083015261366e81613632565b9050919050565b7f5365637265742063616e6e6f74206265207a65726f0000000000000000000000600082015250565b60006136ab601583612d1e565b91506136b682613675565b602082019050919050565b600060208201905081810360008301526136da8161369e565b9050919050565b6136ea81613089565b82525050565b600060208201905061370560008301846136e1565b92915050565b6000613716826131b7565b9050919050565b6137268161370b565b82525050565b6000602082019050613741600083018461371d565b92915050565b600061375282612cdf565b915061375d83612cdf565b9250828210156137705761376f6132dd565b5b828203905092915050565b7f54726164696e67206e6f742079657420656e61626c65642e0000000000000000600082015250565b60006137b1601883612d1e565b91506137bc8261377b565b602082019050919050565b600060208201905081810360008301526137e0816137a4565b9050919050565b7f426f742100000000000000000000000000000000000000000000000000000000600082015250565b600061381d600483612d1e565b9150613828826137e7565b602082019050919050565b6000602082019050818103600083015261384c81613810565b9050919050565b7f546f6f206d75636820696e2077616c6c65742073697200000000000000000000600082015250565b6000613889601683612d1e565b915061389482613853565b602082019050919050565b600060208201905081810360008301526138b88161387c565b9050919050565b7f546f6f206d756368207369720000000000000000000000000000000000000000600082015250565b60006138f5600c83612d1e565b9150613900826138bf565b602082019050919050565b60006020820190508181036000830152613924816138e8565b9050919050565b600061393682612cdf565b915061394183612cdf565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115613976576139756132dd565b5b828201905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b60006139b7601b83612d1e565b91506139c282613981565b602082019050919050565b600060208201905081810360008301526139e6816139aa565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613a2782612cdf565b9150613a3283612cdf565b925082613a4257613a416139ed565b5b828204905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000819050919050565b6000613ad0613acb613ac684613aab565b61318b565b612cdf565b9050919050565b613ae081613ab5565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613b1b81612df3565b82525050565b6000613b2d8383613b12565b60208301905092915050565b6000602082019050919050565b6000613b5182613ae6565b613b5b8185613af1565b9350613b6683613b02565b8060005b83811015613b97578151613b7e8882613b21565b9750613b8983613b39565b925050600181019050613b6a565b5085935050505092915050565b600060a082019050613bb96000830188612ce9565b613bc66020830187613ad7565b8181036040830152613bd88186613b46565b9050613be76060830185613023565b613bf46080830184612ce9565b9695505050505050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000613c5a602183612d1e565b9150613c6582613bfe565b604082019050919050565b60006020820190508181036000830152613c8981613c4d565b905091905056fea2646970667358221220949041050756edbf8fe47970ec7a076f1dd122144b163e342f92ff0a5e56a19464736f6c634300080d0033
0x608060405261dead600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506012600a6200009991906200096b565b633b9aca00620000aa9190620009bc565b6005556004600c556064600d556001601260016101000a81548160ff0219169083151502179055506001601260026101000a81548160ff0219169083151502179055506012600a620000fd91906200096b565b624c4b406200010d9190620009bc565b6013556012600a6200012091906200096b565b62989680620001309190620009bc565b6014556012600a6200014391906200096b565b622625a0620001539190620009bc565b6015556000601660006101000a81548160ff0219169083151502179055503480156200017e57600080fd5b506040516200489c3803806200489c8339818101604052810190620001a4919062000acc565b82806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050737a250d5630b4cf539739df2c5dacb4c659f2488d600f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200032b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000351919062000b28565b600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620003ff573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000425919062000b28565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16306040518363ffffffff1660e01b81526004016200048392919062000b6b565b6020604051808303816000875af1158015620004a3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004c9919062000b28565b601060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160086000600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160086000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600554600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600554604051620007c0919062000ba9565b60405180910390a350505062000bc6565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b60018511156200085f57808604811115620008375762000836620007d1565b5b6001851615620008475780820291505b8081029050620008578562000800565b945062000817565b94509492505050565b6000826200087a57600190506200094d565b816200088a57600090506200094d565b8160018114620008a35760028114620008ae57620008e4565b60019150506200094d565b60ff841115620008c357620008c2620007d1565b5b8360020a915084821115620008dd57620008dc620007d1565b5b506200094d565b5060208310610133831016604e8410600b84101617156200091e5782820a905083811115620009185762000917620007d1565b5b6200094d565b6200092d84848460016200080d565b92509050818404811115620009475762000946620007d1565b5b81810290505b9392505050565b6000819050919050565b600060ff82169050919050565b6000620009788262000954565b915062000985836200095e565b9250620009b47fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000868565b905092915050565b6000620009c98262000954565b9150620009d68362000954565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161562000a125762000a11620007d1565b5b828202905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000a4f8262000a22565b9050919050565b62000a618162000a42565b811462000a6d57600080fd5b50565b60008151905062000a818162000a56565b92915050565b600062000a948262000a22565b9050919050565b62000aa68162000a87565b811462000ab257600080fd5b50565b60008151905062000ac68162000a9b565b92915050565b60008060006060848603121562000ae85762000ae762000a1d565b5b600062000af88682870162000a70565b935050602062000b0b8682870162000ab5565b925050604062000b1e8682870162000a70565b9150509250925092565b60006020828403121562000b415762000b4062000a1d565b5b600062000b518482850162000a70565b91505092915050565b62000b658162000a42565b82525050565b600060408201905062000b82600083018562000b5a565b62000b91602083018462000b5a565b9392505050565b62000ba38162000954565b82525050565b600060208201905062000bc0600083018462000b98565b92915050565b613cc68062000bd66000396000f3fe6080604052600436106102345760003560e01c8063751039fc1161012e578063bf56b371116100ab578063e2226a561161006f578063e2226a561461085e578063eec1c69f1461089b578063f2fde38b146108d8578063f429389014610901578063f887ea40146109185761023b565b8063bf56b3711461079d578063bffb691d146107c8578063c9567bf9146107f3578063dc92f8f01461080a578063dd62ed3e146108215761023b565b806395d89b41116100f257806395d89b4114610690578063a8aa1b31146106bb578063a9059cbb146106e6578063a94fae9414610723578063b1a4e0dc146107605761023b565b8063751039fc146105e357806375f0a874146105fa578063764ca5121461062557806377f08cd61461063c578063893d20e8146106655761023b565b8063313ce567116101bc57806363df0ef71161018057806363df0ef7146104ec578063658d4b7f14610517578063673448dd1461054057806369fe0e2d1461057d57806370a08231146105a65761023b565b8063313ce56714610409578063342aa8b51461043457806340c442de1461045d578063571ac8b0146104865780635d098b38146104c35761023b565b806323b635851161020357806323b63585146102fe57806323b872dd1461033b57806329e04b4a146103785780632b112e49146103a15780632f54bf6e146103cc5761023b565b80630445b6671461024057806306fdde031461026b578063095ea7b31461029657806318160ddd146102d35761023b565b3661023b57005b600080fd5b34801561024c57600080fd5b50610255610943565b6040516102629190612cf8565b60405180910390f35b34801561027757600080fd5b50610280610949565b60405161028d9190612dac565b60405180910390f35b3480156102a257600080fd5b506102bd60048036038101906102b89190612e5d565b610986565b6040516102ca9190612eb8565b60405180910390f35b3480156102df57600080fd5b506102e8610a78565b6040516102f59190612cf8565b60405180910390f35b34801561030a57600080fd5b5061032560048036038101906103209190612ed3565b610a82565b6040516103329190612eb8565b60405180910390f35b34801561034757600080fd5b50610362600480360381019061035d9190612f00565b610b00565b60405161036f9190612eb8565b60405180910390f35b34801561038457600080fd5b5061039f600480360381019061039a9190612ed3565b610d00565b005b3480156103ad57600080fd5b506103b6610dbd565b6040516103c39190612cf8565b60405180910390f35b3480156103d857600080fd5b506103f360048036038101906103ee9190612f53565b610e3f565b6040516104009190612eb8565b60405180910390f35b34801561041557600080fd5b5061041e610e98565b60405161042b9190612f9c565b60405180910390f35b34801561044057600080fd5b5061045b60048036038101906104569190612fe3565b610ea1565b005b34801561046957600080fd5b50610484600480360381019061047f9190612f53565b610f44565b005b34801561049257600080fd5b506104ad60048036038101906104a89190612f53565b6110f6565b6040516104ba9190612eb8565b60405180910390f35b3480156104cf57600080fd5b506104ea60048036038101906104e59190612f53565b611129565b005b3480156104f857600080fd5b506105016111b5565b60405161050e9190613032565b60405180910390f35b34801561052357600080fd5b5061053e60048036038101906105399190612fe3565b6111db565b005b34801561054c57600080fd5b5061056760048036038101906105629190612f53565b61127e565b6040516105749190612eb8565b60405180910390f35b34801561058957600080fd5b506105a4600480360381019061059f9190612ed3565b61129e565b005b3480156105b257600080fd5b506105cd60048036038101906105c89190612f53565b611334565b6040516105da9190612cf8565b60405180910390f35b3480156105ef57600080fd5b506105f861137d565b005b34801561060657600080fd5b5061060f6113fd565b60405161061c919061306e565b60405180910390f35b34801561063157600080fd5b5061063a611423565b005b34801561064857600080fd5b50610663600480360381019061065e9190612f53565b6114de565b005b34801561067157600080fd5b5061067a61156a565b6040516106879190613032565b60405180910390f35b34801561069c57600080fd5b506106a5611593565b6040516106b29190612dac565b60405180910390f35b3480156106c757600080fd5b506106d06115d0565b6040516106dd9190613032565b60405180910390f35b3480156106f257600080fd5b5061070d60048036038101906107089190612e5d565b6115f6565b60405161071a9190612eb8565b60405180910390f35b34801561072f57600080fd5b5061074a600480360381019061074591906130c5565b61160b565b6040516107579190613032565b60405180910390f35b34801561076c57600080fd5b5061078760048036038101906107829190612f53565b611657565b6040516107949190612eb8565b60405180910390f35b3480156107a957600080fd5b506107b26116ad565b6040516107bf9190612cf8565b60405180910390f35b3480156107d457600080fd5b506107dd6116b3565b6040516107ea9190612eb8565b60405180910390f35b3480156107ff57600080fd5b506108086116c6565b005b34801561081657600080fd5b5061081f611732565b005b34801561082d57600080fd5b50610848600480360381019061084391906130f2565b611893565b6040516108559190612cf8565b60405180910390f35b34801561086a57600080fd5b50610885600480360381019061088091906130c5565b61191a565b6040516108929190613032565b60405180910390f35b3480156108a757600080fd5b506108c260048036038101906108bd91906130c5565b611958565b6040516108cf9190612eb8565b60405180910390f35b3480156108e457600080fd5b506108ff60048036038101906108fa919061315e565b611aad565b005b34801561090d57600080fd5b50610916611b6f565b005b34801561092457600080fd5b5061092d611c28565b60405161093a91906131ea565b60405180910390f35b60155481565b60606040518060400160405280600381526020017f5056500000000000000000000000000000000000000000000000000000000000815250905090565b600081600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610a669190612cf8565b60405180910390a36001905092915050565b6000600554905090565b6000610a8d33610e3f565b610acc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ac390613251565b60405180910390fd5b610af930600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611c4e565b9050919050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610cec57610c6b826040518060400160405280601681526020017f496e73756666696369656e7420416c6c6f77616e636500000000000000000000815250600760008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611e219092919063ffffffff16565b600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b610cf7848484611e85565b90509392505050565b610d0933610e3f565b610d48576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d3f90613251565b60405180910390fd5b610d5e606460055461255b90919063ffffffff16565b811115610da0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d97906132bd565b60405180910390fd5b670de0b6b3a764000081610db4919061330c565b60158190555050565b6000610e3a610ded600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611334565b610e2c610e1b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611334565b6005546125a590919063ffffffff16565b6125a590919063ffffffff16565b905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b60006012905090565b610eaa33610e3f565b610ee9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ee090613251565b60405180910390fd5b80600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b610f4d33610e3f565b610f8c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f8390613251565b60405180910390fd5b600081905060008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610fcc9190613032565b602060405180830381865afa158015610fe9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061100d919061337b565b905060008111611052576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611049906133f4565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b81526004016110ad929190613414565b6020604051808303816000875af11580156110cc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110f09190613452565b50505050565b6000611122827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610986565b9050919050565b61113233610e3f565b611171576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161116890613251565b60405180910390fd5b80600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6111e433610e3f565b611223576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161121a90613251565b60405180910390fd5b80600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600a6020528060005260406000206000915054906101000a900460ff1681565b6112a733610e3f565b6112e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112dd90613251565b60405180910390fd5b600a81111561132a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611321906134cb565b60405180910390fd5b80600c8190555050565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61138633610e3f565b6113c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113bc90613251565b60405180910390fd5b6000601260016101000a81548160ff0219169083151502179055506000601260026101000a81548160ff021916908315150217905550565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61142c33610e3f565b61146b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161146290613251565b60405180910390fd5b60001515601660009054906101000a900460ff161515146114c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114b890613537565b60405180910390fd5b6001601660006101000a81548160ff021916908315150217905550565b6114e733610e3f565b611526576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161151d90613251565b60405180910390fd5b80600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600381526020017f5056500000000000000000000000000000000000000000000000000000000000815250905090565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000611603338484611e85565b905092915050565b6000600b60008363ffffffff1663ffffffff16815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6000600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60115481565b601660009054906101000a900460ff1681565b6116cf33610e3f565b61170e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161170590613251565b60405180910390fd5b436011819055506001601260006101000a81548160ff021916908315150217905550565b61173b33610e3f565b61177a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161177190613251565b60405180910390fd5b6000479050600081116117c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117b9906135a3565b60405180910390fd5b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1682604051611809906135f4565b60006040518083038185875af1925050503d8060008114611846576040519150601f19603f3d011682016040523d82523d6000602084013e61184b565b606091505b505090508061188f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161188690613655565b60405180910390fd5b5050565b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600b6020528060005260406000206000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081565b60008033905060008363ffffffff16036119a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161199e906136c1565b60405180910390fd5b80600b60008563ffffffff1663ffffffff16815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550611a54600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610986565b508073ffffffffffffffffffffffffffffffffffffffff167fe146b5682c27e8ecaaf5d0a35504c4b2e0f0d9f6ea5d5d4dfd9c32c7df2174eb84604051611a9b91906136f0565b60405180910390a26001915050919050565b611ab633610e3f565b611af5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aec90613251565b60405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc68616381604051611b64919061372c565b60405180910390a150565b611b7833610e3f565b611bb7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bae90613251565b60405180910390fd5b6000479050600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611c24573d6000803e3d6000fd5b5050565b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000611cd9826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611e219092919063ffffffff16565b600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611d6e82600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125ef90919063ffffffff16565b600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611e0e9190612cf8565b60405180910390a3600190509392505050565b6000838311158290611e69576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e609190612dac565b60405180910390fd5b5060008385611e789190613747565b9050809150509392505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611f30575060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611f8557601260009054906101000a900460ff16611f84576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f7b906137c7565b60405180910390fd5b5b601660009054906101000a900460ff161561207e57600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561203e5750600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b61207d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161207490613833565b60405180910390fd5b5b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015612126575060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b801561215e57503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b801561219657503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b156122a357601260029054906101000a900460ff16156122475760145461220583600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125ef90919063ffffffff16565b1115612246576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161223d9061389f565b60405180910390fd5b5b601260019054906101000a900460ff16156122a2576013548211156122a1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122989061390b565b60405180910390fd5b5b5b601660019054906101000a900460ff16156122ca576122c3848484611c4e565b9050612554565b60006122d530611334565b905060006015548210159050600081801561233d5750601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff16145b80156123515750600061234f30611334565b115b905080156123625761236161264d565b5b6123eb856040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600660008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611e219092919063ffffffff16565b600660008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600061243a8888612705565b612444578561244f565b61244e8887612916565b5b90506124a381600660008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125ef90919063ffffffff16565b600660008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516125439190612cf8565b60405180910390a360019450505050505b9392505050565b600061259d83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612a5a565b905092915050565b60006125e783836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611e21565b905092915050565b60008082846125fe919061392b565b905083811015612643576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161263a906139cd565b60405180910390fd5b8091505092915050565b6001601660016101000a81548160ff021916908315150217905550600061267330611334565b905061267e81612abd565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f193505050501580156126e6573d6000803e3d6000fd5b50506000601660016101000a81548160ff021916908315150217905550565b6000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156127b35750600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561285d5750600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061285b5750600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b155b801561290e5750601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148061290d5750601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b5b905092915050565b600080612942600d54612934600c5486612c6590919063ffffffff16565b61255b90919063ffffffff16565b905061299681600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125ef90919063ffffffff16565b600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612a369190612cf8565b60405180910390a3612a5181846125a590919063ffffffff16565b91505092915050565b60008083118290612aa1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a989190612dac565b60405180910390fd5b5060008385612ab09190613a1c565b9050809150509392505050565b6000600267ffffffffffffffff811115612ada57612ad9613a4d565b5b604051908082528060200260200182016040528015612b085781602001602082028036833780820191505090505b5090503081600081518110612b2057612b1f613a7c565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681600181518110612b9157612b90613a7c565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612c2f959493929190613ba4565b600060405180830381600087803b158015612c4957600080fd5b505af1158015612c5d573d6000803e3d6000fd5b505050505050565b6000808303612c775760009050612cd9565b60008284612c85919061330c565b9050828482612c949190613a1c565b14612cd4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ccb90613c70565b60405180910390fd5b809150505b92915050565b6000819050919050565b612cf281612cdf565b82525050565b6000602082019050612d0d6000830184612ce9565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612d4d578082015181840152602081019050612d32565b83811115612d5c576000848401525b50505050565b6000601f19601f8301169050919050565b6000612d7e82612d13565b612d888185612d1e565b9350612d98818560208601612d2f565b612da181612d62565b840191505092915050565b60006020820190508181036000830152612dc68184612d73565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612dfe82612dd3565b9050919050565b612e0e81612df3565b8114612e1957600080fd5b50565b600081359050612e2b81612e05565b92915050565b612e3a81612cdf565b8114612e4557600080fd5b50565b600081359050612e5781612e31565b92915050565b60008060408385031215612e7457612e73612dce565b5b6000612e8285828601612e1c565b9250506020612e9385828601612e48565b9150509250929050565b60008115159050919050565b612eb281612e9d565b82525050565b6000602082019050612ecd6000830184612ea9565b92915050565b600060208284031215612ee957612ee8612dce565b5b6000612ef784828501612e48565b91505092915050565b600080600060608486031215612f1957612f18612dce565b5b6000612f2786828701612e1c565b9350506020612f3886828701612e1c565b9250506040612f4986828701612e48565b9150509250925092565b600060208284031215612f6957612f68612dce565b5b6000612f7784828501612e1c565b91505092915050565b600060ff82169050919050565b612f9681612f80565b82525050565b6000602082019050612fb16000830184612f8d565b92915050565b612fc081612e9d565b8114612fcb57600080fd5b50565b600081359050612fdd81612fb7565b92915050565b60008060408385031215612ffa57612ff9612dce565b5b600061300885828601612e1c565b925050602061301985828601612fce565b9150509250929050565b61302c81612df3565b82525050565b60006020820190506130476000830184613023565b92915050565b600061305882612dd3565b9050919050565b6130688161304d565b82525050565b6000602082019050613083600083018461305f565b92915050565b600063ffffffff82169050919050565b6130a281613089565b81146130ad57600080fd5b50565b6000813590506130bf81613099565b92915050565b6000602082840312156130db576130da612dce565b5b60006130e9848285016130b0565b91505092915050565b6000806040838503121561310957613108612dce565b5b600061311785828601612e1c565b925050602061312885828601612e1c565b9150509250929050565b61313b8161304d565b811461314657600080fd5b50565b60008135905061315881613132565b92915050565b60006020828403121561317457613173612dce565b5b600061318284828501613149565b91505092915050565b6000819050919050565b60006131b06131ab6131a684612dd3565b61318b565b612dd3565b9050919050565b60006131c282613195565b9050919050565b60006131d4826131b7565b9050919050565b6131e4816131c9565b82525050565b60006020820190506131ff60008301846131db565b92915050565b7f214f776e65720000000000000000000000000000000000000000000000000000600082015250565b600061323b600683612d1e565b915061324682613205565b602082019050919050565b6000602082019050818103600083015261326a8161322e565b9050919050565b7f63616e2774206578636565642031250000000000000000000000000000000000600082015250565b60006132a7600f83612d1e565b91506132b282613271565b602082019050919050565b600060208201905081810360008301526132d68161329a565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061331782612cdf565b915061332283612cdf565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561335b5761335a6132dd565b5b828202905092915050565b60008151905061337581612e31565b92915050565b60006020828403121561339157613390612dce565b5b600061339f84828501613366565b91505092915050565b7f4e6f20746f6b656e7320746f2077697468647261770000000000000000000000600082015250565b60006133de601583612d1e565b91506133e9826133a8565b602082019050919050565b6000602082019050818103600083015261340d816133d1565b9050919050565b60006040820190506134296000830185613023565b6134366020830184612ce9565b9392505050565b60008151905061344c81612fb7565b92915050565b60006020828403121561346857613467612dce565b5b60006134768482850161343d565b91505092915050565b7f4665652063616e27742065786365656420313025000000000000000000000000600082015250565b60006134b5601483612d1e565b91506134c08261347f565b602082019050919050565b600060208201905081810360008301526134e4816134a8565b9050919050565b7f63616e206f6e6c792062652063616c6c6564206f6e6365000000000000000000600082015250565b6000613521601783612d1e565b915061352c826134eb565b602082019050919050565b6000602082019050818103600083015261355081613514565b9050919050565b7f4e6f20457468657220746f207769746864726177000000000000000000000000600082015250565b600061358d601483612d1e565b915061359882613557565b602082019050919050565b600060208201905081810360008301526135bc81613580565b9050919050565b600081905092915050565b50565b60006135de6000836135c3565b91506135e9826135ce565b600082019050919050565b60006135ff826135d1565b9150819050919050565b7f5769746864726177206661696c65640000000000000000000000000000000000600082015250565b600061363f600f83612d1e565b915061364a82613609565b602082019050919050565b6000602082019050818103600083015261366e81613632565b9050919050565b7f5365637265742063616e6e6f74206265207a65726f0000000000000000000000600082015250565b60006136ab601583612d1e565b91506136b682613675565b602082019050919050565b600060208201905081810360008301526136da8161369e565b9050919050565b6136ea81613089565b82525050565b600060208201905061370560008301846136e1565b92915050565b6000613716826131b7565b9050919050565b6137268161370b565b82525050565b6000602082019050613741600083018461371d565b92915050565b600061375282612cdf565b915061375d83612cdf565b9250828210156137705761376f6132dd565b5b828203905092915050565b7f54726164696e67206e6f742079657420656e61626c65642e0000000000000000600082015250565b60006137b1601883612d1e565b91506137bc8261377b565b602082019050919050565b600060208201905081810360008301526137e0816137a4565b9050919050565b7f426f742100000000000000000000000000000000000000000000000000000000600082015250565b600061381d600483612d1e565b9150613828826137e7565b602082019050919050565b6000602082019050818103600083015261384c81613810565b9050919050565b7f546f6f206d75636820696e2077616c6c65742073697200000000000000000000600082015250565b6000613889601683612d1e565b915061389482613853565b602082019050919050565b600060208201905081810360008301526138b88161387c565b9050919050565b7f546f6f206d756368207369720000000000000000000000000000000000000000600082015250565b60006138f5600c83612d1e565b9150613900826138bf565b602082019050919050565b60006020820190508181036000830152613924816138e8565b9050919050565b600061393682612cdf565b915061394183612cdf565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115613976576139756132dd565b5b828201905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b60006139b7601b83612d1e565b91506139c282613981565b602082019050919050565b600060208201905081810360008301526139e6816139aa565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613a2782612cdf565b9150613a3283612cdf565b925082613a4257613a416139ed565b5b828204905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000819050919050565b6000613ad0613acb613ac684613aab565b61318b565b612cdf565b9050919050565b613ae081613ab5565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613b1b81612df3565b82525050565b6000613b2d8383613b12565b60208301905092915050565b6000602082019050919050565b6000613b5182613ae6565b613b5b8185613af1565b9350613b6683613b02565b8060005b83811015613b97578151613b7e8882613b21565b9750613b8983613b39565b925050600181019050613b6a565b5085935050505092915050565b600060a082019050613bb96000830188612ce9565b613bc66020830187613ad7565b8181036040830152613bd88186613b46565b9050613be76060830185613023565b613bf46080830184612ce9565b9695505050505050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000613c5a602183612d1e565b9150613c6582613bfe565b604082019050919050565b60006020820190508181036000830152613c8981613c4d565b905091905056fea2646970667358221220949041050756edbf8fe47970ec7a076f1dd122144b163e342f92ff0a5e56a19464736f6c634300080d0033000000000000000000000000d4bc4e4490c4a42336552db87fcf7b3bc4e06d11000000000000000000000000d4bc4e4490c4a42336552db87fcf7b3bc4e06d11000000000000000000000000ed3247ff095383fedaa07017c03ba78e0cf03edc