6080604052670de0b6b3a76400006000196200001c919062000720565b6000196200002b919062000787565b600655600060085560196009556000600a556023600b556000600c55600b54600d55600c54600e55600d54600f5560006015806101000a81548160ff0219169083151502179055506001601560166101000a81548160ff02191690831515021790555066470de4df82000060175566470de4df8200006018556618de76816d80006019556000601a556005601b55635a995c00601c55348015620000ce57600080fd5b506000620000e1620006b660201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3506006546002600062000196620006b660201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000737a250d5630b4cf539739df2c5dacb4c659f2488d905080601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200027a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002a091906200082c565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000308573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200032e91906200082c565b6040518363ffffffff1660e01b81526004016200034d9291906200086f565b6020604051808303816000875af11580156200036d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200039391906200082c565b601560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073f82722cbefa6d7e60c677af2f24f19f7d5f18235601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073f82722cbefa6d7e60c677af2f24f19f7d5f18235601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060016005600062000493620006be60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555062000640620006b660201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef670de0b6b3a7640000604051620006a79190620008ad565b60405180910390a350620008ca565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006200072d82620006e7565b91506200073a83620006e7565b9250826200074d576200074c620006f1565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006200079482620006e7565b9150620007a183620006e7565b9250828203905081811115620007bc57620007bb62000758565b5b92915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620007f482620007c7565b9050919050565b6200080681620007e7565b81146200081257600080fd5b50565b6000815190506200082681620007fb565b92915050565b600060208284031215620008455762000844620007c2565b5b6000620008558482850162000815565b91505092915050565b6200086981620007e7565b82525050565b60006040820190506200088660008301856200085e565b6200089560208301846200085e565b9392505050565b620008a781620006e7565b82525050565b6000602082019050620008c460008301846200089c565b92915050565b61451280620008da6000396000f3fe6080604052600436106102345760003560e01c80635c67d12d1161012e578063aa0245b6116100ab578063caac79341161006f578063caac7934146107ea578063d00efb2f14610815578063dd62ed3e14610840578063f2fde38b1461087d578063f7159d42146108a65761023b565b8063aa0245b61461072d578063aacc5f2314610756578063b1a37c1e1461076d578063bfd7928414610796578063c9567bf9146107d35761023b565b80637f2feddc116100f25780637f2feddc146106325780638da5cb5b1461066f5780638f9a55c01461069a57806395d89b41146106c5578063a9059cbb146106f05761023b565b80635c67d12d1461055f578063629b8ce71461058857806370a08231146105b3578063715018a6146105f05780637d1db4a5146106075761023b565b80632a7d0d33116101bc5780633d6a9afe116101805780633d6a9afe146104a057806344b3e8e8146104cb57806349bd5a5e146104f45780634a30b3861461051f578063522bed11146105365761023b565b80632a7d0d33146103e15780632d7ec1631461040a5780632f10cfb1146104215780632fd689e31461044a578063313ce567146104755761023b565b80631bbae6e0116102035780631bbae6e0146102fe5780631ee4cac81461032757806322e0ee331461035257806323b872dd1461037b57806328226822146103b85761023b565b806306fdde0314610240578063095ea7b31461026b5780631694505e146102a857806318160ddd146102d35761023b565b3661023b57005b600080fd5b34801561024c57600080fd5b506102556108cf565b6040516102629190613326565b60405180910390f35b34801561027757600080fd5b50610292600480360381019061028d91906133f0565b61090c565b60405161029f919061344b565b60405180910390f35b3480156102b457600080fd5b506102bd61092a565b6040516102ca91906134c5565b60405180910390f35b3480156102df57600080fd5b506102e8610950565b6040516102f591906134ef565b60405180910390f35b34801561030a57600080fd5b506103256004803603810190610320919061350a565b610960565b005b34801561033357600080fd5b5061033c6109ff565b60405161034991906134ef565b60405180910390f35b34801561035e57600080fd5b506103796004803603810190610374919061350a565b610a05565b005b34801561038757600080fd5b506103a2600480360381019061039d9190613537565b610aa4565b6040516103af919061344b565b60405180910390f35b3480156103c457600080fd5b506103df60048036038101906103da919061350a565b610b7d565b005b3480156103ed57600080fd5b506104086004803603810190610403919061350a565b610c1c565b005b34801561041657600080fd5b5061041f610cbb565b005b34801561042d57600080fd5b506104486004803603810190610443919061361b565b610d8c565b005b34801561045657600080fd5b5061045f610ec6565b60405161046c91906134ef565b60405180910390f35b34801561048157600080fd5b5061048a610ecc565b6040516104979190613697565b60405180910390f35b3480156104ac57600080fd5b506104b5610ed5565b6040516104c291906136d3565b60405180910390f35b3480156104d757600080fd5b506104f260048036038101906104ed91906136ee565b610efb565b005b34801561050057600080fd5b50610509610fa2565b604051610516919061373d565b60405180910390f35b34801561052b57600080fd5b50610534610fc8565b005b34801561054257600080fd5b5061055d60048036038101906105589190613758565b61107d565b005b34801561056b57600080fd5b5061058660048036038101906105819190613785565b61116d565b005b34801561059457600080fd5b5061059d61121f565b6040516105aa91906134ef565b60405180910390f35b3480156105bf57600080fd5b506105da60048036038101906105d59190613758565b611225565b6040516105e791906134ef565b60405180910390f35b3480156105fc57600080fd5b50610605611276565b005b34801561061357600080fd5b5061061c6113c9565b60405161062991906134ef565b60405180910390f35b34801561063e57600080fd5b5061065960048036038101906106549190613758565b6113cf565b60405161066691906134ef565b60405180910390f35b34801561067b57600080fd5b506106846113e7565b604051610691919061373d565b60405180910390f35b3480156106a657600080fd5b506106af611410565b6040516106bc91906134ef565b60405180910390f35b3480156106d157600080fd5b506106da611416565b6040516106e79190613326565b60405180910390f35b3480156106fc57600080fd5b50610717600480360381019061071291906133f0565b611453565b604051610724919061344b565b60405180910390f35b34801561073957600080fd5b50610754600480360381019061074f91906137b2565b611471565b005b34801561076257600080fd5b5061076b6115b7565b005b34801561077957600080fd5b50610794600480360381019061078f919061361b565b611690565b005b3480156107a257600080fd5b506107bd60048036038101906107b89190613758565b6117ca565b6040516107ca919061344b565b60405180910390f35b3480156107df57600080fd5b506107e86117ea565b005b3480156107f657600080fd5b506107ff6118a3565b60405161080c91906136d3565b60405180910390f35b34801561082157600080fd5b5061082a6118c9565b60405161083791906134ef565b60405180910390f35b34801561084c57600080fd5b50610867600480360381019061086291906137b2565b6118cf565b60405161087491906134ef565b60405180910390f35b34801561088957600080fd5b506108a4600480360381019061089f9190613758565b611956565b005b3480156108b257600080fd5b506108cd60048036038101906108c89190613930565b611b17565b005b60606040518060400160405280600581526020017f426f747479000000000000000000000000000000000000000000000000000000815250905090565b6000610920610919611c41565b8484611c49565b6001905092915050565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000670de0b6b3a7640000905090565b610968611c41565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146109f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109ec906139c5565b60405180910390fd5b8060178190555050565b601c5481565b610a0d611c41565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a9a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a91906139c5565b60405180910390fd5b8060198190555050565b6000610ab1848484611e12565b610b7284610abd611c41565b610b6d856040518060600160405280602881526020016144b560289139600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610b23611c41565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546127c19092919063ffffffff16565b611c49565b600190509392505050565b610b85611c41565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c12576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c09906139c5565b60405180910390fd5b80601b8190555050565b610c24611c41565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610cb1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ca8906139c5565b60405180910390fd5b8060188190555050565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610cfc611c41565b73ffffffffffffffffffffffffffffffffffffffff161480610d725750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610d5a611c41565b73ffffffffffffffffffffffffffffffffffffffff16145b610d7b57600080fd5b6000479050610d8981612825565b50565b610d94611c41565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e21576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e18906139c5565b60405180910390fd5b60005b83839050811015610ec0578160056000868685818110610e4757610e466139e5565b5b9050602002016020810190610e5c9190613758565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080610eb890613a43565b915050610e24565b50505050565b60195481565b60006009905090565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610f03611c41565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f90576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f87906139c5565b60405180910390fd5b8160098190555080600b819055505050565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610fd0611c41565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461105d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611054906139c5565b60405180910390fd5b670de0b6b3a7640000601781905550670de0b6b3a7640000601881905550565b611085611c41565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611112576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611109906139c5565b60405180910390fd5b6000601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b611175611c41565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611202576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111f9906139c5565b60405180910390fd5b80601560166101000a81548160ff02191690831515021790555050565b601b5481565b600061126f600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612891565b9050919050565b61127e611c41565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461130b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611302906139c5565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60175481565b60116020528060005260406000206000915090505481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60185481565b60606040518060400160405280600581526020017f426f747479000000000000000000000000000000000000000000000000000000815250905090565b6000611467611460611c41565b8484611e12565b6001905092915050565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166114b2611c41565b73ffffffffffffffffffffffffffffffffffffffff1614806115285750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611510611c41565b73ffffffffffffffffffffffffffffffffffffffff16145b61153157600080fd5b81601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166115f8611c41565b73ffffffffffffffffffffffffffffffffffffffff16148061166e5750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611656611c41565b73ffffffffffffffffffffffffffffffffffffffff16145b61167757600080fd5b600061168230611225565b905061168d816128ff565b50565b611698611c41565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611725576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161171c906139c5565b60405180910390fd5b60005b838390508110156117c457816016600086868581811061174b5761174a6139e5565b5b90506020020160208101906117609190613758565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080806117bc90613a43565b915050611728565b50505050565b60106020528060005260406000206000915054906101000a900460ff1681565b6117f2611c41565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461187f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611876906139c5565b60405180910390fd5b6001601560146101000a81548160ff02191690831515021790555043601a81905550565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601a5481565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61195e611c41565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146119eb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119e2906139c5565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611a5a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a5190613afd565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611b1f611c41565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611bac576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ba3906139c5565b60405180910390fd5b60005b8151811015611c3d57600160106000848481518110611bd157611bd06139e5565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080611c3590613a43565b915050611baf565b5050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611cb8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611caf90613b8f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611d27576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d1e90613c21565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611e0591906134ef565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611e81576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e7890613cb3565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611ef0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ee790613d45565b60405180910390fd5b60008111611f33576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f2a90613dd7565b60405180910390fd5b611f3b6113e7565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611fa95750611f796113e7565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156124c057601560149054906101000a900460ff166120ec57611fca6113e7565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614806120ac575060011515601660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151480156120ab5750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b5b6120eb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120e290613e69565b60405180910390fd5b5b601b54601a546120fc9190613e89565b431080156121095750483a115b15612164576000483a61211c9190613ebd565b9050601c548110612162576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161215990613f3d565b60405180910390fd5b505b6017548111156121a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121a090613fa9565b60405180910390fd5b601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561224d5750601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b61228c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122839061403b565b60405180910390fd5b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161461233957601854816122ee84611225565b6122f89190613e89565b10612338576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161232f906140cd565b60405180910390fd5b5b600061234430611225565b905060006019548210159050601954821061235f5760195491505b808015612377575060158054906101000a900460ff16155b80156123d15750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b80156123e95750601560169054906101000a900460ff165b801561243f5750600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156124955750600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156124bd576124a3826128ff565b600047905060008111156124bb576124ba47612825565b5b505b50505b600060019050600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806125675750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b8061261a5750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141580156126195750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b1561262857600090506127af565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480156126d35750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b156126eb57600854600c81905550600954600d819055505b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156127965750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b156127ae57600a54600c81905550600b54600d819055505b5b6127bb84848484612b76565b50505050565b6000838311158290612809576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128009190613326565b60405180910390fd5b50600083856128189190613ebd565b9050809150509392505050565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f1935050505015801561288d573d6000803e3d6000fd5b5050565b60006006548211156128d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128cf9061415f565b60405180910390fd5b60006128e2612ba3565b90506128f78184612bce90919063ffffffff16565b915050919050565b60016015806101000a81548160ff0219169083151502179055506000600267ffffffffffffffff811115612936576129356137f2565b5b6040519080825280602002602001820160405280156129645781602001602082028036833780820191505090505b509050308160008151811061297c5761297b6139e5565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612a23573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a479190614194565b81600181518110612a5b57612a5a6139e5565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050612ac230601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611c49565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612b269594939291906142ba565b600060405180830381600087803b158015612b4057600080fd5b505af1158015612b54573d6000803e3d6000fd5b505050505060006015806101000a81548160ff02191690831515021790555050565b80612b8457612b83612c18565b5b612b8f848484612c55565b80612b9d57612b9c612e20565b5b50505050565b6000806000612bb0612e34565b91509150612bc78183612bce90919063ffffffff16565b9250505090565b6000612c1083836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612e93565b905092915050565b6000600c54148015612c2c57506000600d54145b612c5357600c54600e81905550600d54600f819055506000600c819055506000600d819055505b565b600080600080600080612c6787612ef6565b955095509550955095509550612cc586600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612f5e90919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612d5a85600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612fa890919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612da681613006565b612db084836130c3565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051612e0d91906134ef565b60405180910390a3505050505050505050565b600e54600c81905550600f54600d81905550565b600080600060065490506000670de0b6b3a76400009050612e68670de0b6b3a7640000600654612bce90919063ffffffff16565b821015612e8657600654670de0b6b3a7640000935093505050612e8f565b81819350935050505b9091565b60008083118290612eda576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ed19190613326565b60405180910390fd5b5060008385612ee99190614343565b9050809150509392505050565b6000806000806000806000806000612f138a600c54600d546130fd565b9250925092506000612f23612ba3565b90506000806000612f368e878787613193565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b6000612fa083836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506127c1565b905092915050565b6000808284612fb79190613e89565b905083811015612ffc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ff3906143c0565b60405180910390fd5b8091505092915050565b6000613010612ba3565b90506000613027828461321c90919063ffffffff16565b905061307b81600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612fa890919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b6130d882600654612f5e90919063ffffffff16565b6006819055506130f381600754612fa890919063ffffffff16565b6007819055505050565b600080600080613129606461311b888a61321c90919063ffffffff16565b612bce90919063ffffffff16565b905060006131536064613145888b61321c90919063ffffffff16565b612bce90919063ffffffff16565b9050600061317c8261316e858c612f5e90919063ffffffff16565b612f5e90919063ffffffff16565b905080838395509550955050505093509350939050565b6000806000806131ac858961321c90919063ffffffff16565b905060006131c3868961321c90919063ffffffff16565b905060006131da878961321c90919063ffffffff16565b90506000613203826131f58587612f5e90919063ffffffff16565b612f5e90919063ffffffff16565b9050838184965096509650505050509450945094915050565b600080830361322e5760009050613290565b6000828461323c91906143e0565b905082848261324b9190614343565b1461328b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161328290614494565b60405180910390fd5b809150505b92915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156132d05780820151818401526020810190506132b5565b60008484015250505050565b6000601f19601f8301169050919050565b60006132f882613296565b61330281856132a1565b93506133128185602086016132b2565b61331b816132dc565b840191505092915050565b6000602082019050818103600083015261334081846132ed565b905092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006133878261335c565b9050919050565b6133978161337c565b81146133a257600080fd5b50565b6000813590506133b48161338e565b92915050565b6000819050919050565b6133cd816133ba565b81146133d857600080fd5b50565b6000813590506133ea816133c4565b92915050565b6000806040838503121561340757613406613352565b5b6000613415858286016133a5565b9250506020613426858286016133db565b9150509250929050565b60008115159050919050565b61344581613430565b82525050565b6000602082019050613460600083018461343c565b92915050565b6000819050919050565b600061348b6134866134818461335c565b613466565b61335c565b9050919050565b600061349d82613470565b9050919050565b60006134af82613492565b9050919050565b6134bf816134a4565b82525050565b60006020820190506134da60008301846134b6565b92915050565b6134e9816133ba565b82525050565b600060208201905061350460008301846134e0565b92915050565b6000602082840312156135205761351f613352565b5b600061352e848285016133db565b91505092915050565b6000806000606084860312156135505761354f613352565b5b600061355e868287016133a5565b935050602061356f868287016133a5565b9250506040613580868287016133db565b9150509250925092565b600080fd5b600080fd5b600080fd5b60008083601f8401126135af576135ae61358a565b5b8235905067ffffffffffffffff8111156135cc576135cb61358f565b5b6020830191508360208202830111156135e8576135e7613594565b5b9250929050565b6135f881613430565b811461360357600080fd5b50565b600081359050613615816135ef565b92915050565b60008060006040848603121561363457613633613352565b5b600084013567ffffffffffffffff81111561365257613651613357565b5b61365e86828701613599565b9350935050602061367186828701613606565b9150509250925092565b600060ff82169050919050565b6136918161367b565b82525050565b60006020820190506136ac6000830184613688565b92915050565b60006136bd8261335c565b9050919050565b6136cd816136b2565b82525050565b60006020820190506136e860008301846136c4565b92915050565b6000806040838503121561370557613704613352565b5b6000613713858286016133db565b9250506020613724858286016133db565b9150509250929050565b6137378161337c565b82525050565b6000602082019050613752600083018461372e565b92915050565b60006020828403121561376e5761376d613352565b5b600061377c848285016133a5565b91505092915050565b60006020828403121561379b5761379a613352565b5b60006137a984828501613606565b91505092915050565b600080604083850312156137c9576137c8613352565b5b60006137d7858286016133a5565b92505060206137e8858286016133a5565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61382a826132dc565b810181811067ffffffffffffffff82111715613849576138486137f2565b5b80604052505050565b600061385c613348565b90506138688282613821565b919050565b600067ffffffffffffffff821115613888576138876137f2565b5b602082029050602081019050919050565b60006138ac6138a78461386d565b613852565b905080838252602082019050602084028301858111156138cf576138ce613594565b5b835b818110156138f857806138e488826133a5565b8452602084019350506020810190506138d1565b5050509392505050565b600082601f8301126139175761391661358a565b5b8135613927848260208601613899565b91505092915050565b60006020828403121561394657613945613352565b5b600082013567ffffffffffffffff81111561396457613963613357565b5b61397084828501613902565b91505092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006139af6020836132a1565b91506139ba82613979565b602082019050919050565b600060208201905081810360008301526139de816139a2565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000613a4e826133ba565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203613a8057613a7f613a14565b5b600182019050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613ae76026836132a1565b9150613af282613a8b565b604082019050919050565b60006020820190508181036000830152613b1681613ada565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000613b796024836132a1565b9150613b8482613b1d565b604082019050919050565b60006020820190508181036000830152613ba881613b6c565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000613c0b6022836132a1565b9150613c1682613baf565b604082019050919050565b60006020820190508181036000830152613c3a81613bfe565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000613c9d6025836132a1565b9150613ca882613c41565b604082019050919050565b60006020820190508181036000830152613ccc81613c90565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000613d2f6023836132a1565b9150613d3a82613cd3565b604082019050919050565b60006020820190508181036000830152613d5e81613d22565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b6000613dc16029836132a1565b9150613dcc82613d65565b604082019050919050565b60006020820190508181036000830152613df081613db4565b9050919050565b7f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060008201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400602082015250565b6000613e53603f836132a1565b9150613e5e82613df7565b604082019050919050565b60006020820190508181036000830152613e8281613e46565b9050919050565b6000613e94826133ba565b9150613e9f836133ba565b9250828201905080821115613eb757613eb6613a14565b5b92915050565b6000613ec8826133ba565b9150613ed3836133ba565b9250828203905081811115613eeb57613eea613a14565b5b92915050565b7f544f4b454e3a2052455645525445440000000000000000000000000000000000600082015250565b6000613f27600f836132a1565b9150613f3282613ef1565b602082019050919050565b60006020820190508181036000830152613f5681613f1a565b9050919050565b7f544f4b454e3a204d6178205472616e73616374696f6e204c696d697400000000600082015250565b6000613f93601c836132a1565b9150613f9e82613f5d565b602082019050919050565b60006020820190508181036000830152613fc281613f86565b9050919050565b7f544f4b454e3a20596f7572206163636f756e7420697320626c61636b6c69737460008201527f6564210000000000000000000000000000000000000000000000000000000000602082015250565b60006140256023836132a1565b915061403082613fc9565b604082019050919050565b6000602082019050818103600083015261405481614018565b9050919050565b7f544f4b454e3a2042616c616e636520657863656564732077616c6c657420736960008201527f7a65210000000000000000000000000000000000000000000000000000000000602082015250565b60006140b76023836132a1565b91506140c28261405b565b604082019050919050565b600060208201905081810360008301526140e6816140aa565b9050919050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b6000614149602a836132a1565b9150614154826140ed565b604082019050919050565b600060208201905081810360008301526141788161413c565b9050919050565b60008151905061418e8161338e565b92915050565b6000602082840312156141aa576141a9613352565b5b60006141b88482850161417f565b91505092915050565b6000819050919050565b60006141e66141e16141dc846141c1565b613466565b6133ba565b9050919050565b6141f6816141cb565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6142318161337c565b82525050565b60006142438383614228565b60208301905092915050565b6000602082019050919050565b6000614267826141fc565b6142718185614207565b935061427c83614218565b8060005b838110156142ad5781516142948882614237565b975061429f8361424f565b925050600181019050614280565b5085935050505092915050565b600060a0820190506142cf60008301886134e0565b6142dc60208301876141ed565b81810360408301526142ee818661425c565b90506142fd606083018561372e565b61430a60808301846134e0565b9695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061434e826133ba565b9150614359836133ba565b92508261436957614368614314565b5b828204905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b60006143aa601b836132a1565b91506143b582614374565b602082019050919050565b600060208201905081810360008301526143d98161439d565b9050919050565b60006143eb826133ba565b91506143f6836133ba565b9250828202614404816133ba565b9150828204841483151761441b5761441a613a14565b5b5092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b600061447e6021836132a1565b915061448982614422565b604082019050919050565b600060208201905081810360008301526144ad81614471565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212205ae7fbc3fbaa0f7848f70cfde4af686821c489152af3e1e79b37b9531f8e898664736f6c63430008120033