608060405268056bc75e2d631000006000196200001d919062000707565b6000196200002c91906200076e565b6006556000600855601e6009556000600a556028600b55600a54600c55600b54600d55600c54600e55600d54600f5533601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555033601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001601560146101000a81548160ff02191690831515021790555060006015806101000a81548160ff0219169083151502179055506001601560166101000a81548160ff021916908315150217905550671bc16d674ec80000601655671bc16d674ec80000601755671bc16d674ec800006018553480156200015e57600080fd5b506000620001716200069d60201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35060065460026000620002266200069d60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000737a250d5630b4cf539739df2c5dacb4c659f2488d905080601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200030a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000330919062000813565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000398573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003be919062000813565b6040518363ffffffff1660e01b8152600401620003dd92919062000856565b6020604051808303816000875af1158015620003fd573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000423919062000813565b601560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060016005600062000479620006a560201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550620006266200069d60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef68056bc75e2d631000006040516200068e919062000894565b60405180910390a350620008b1565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006200071482620006ce565b91506200072183620006ce565b925082620007345762000733620006d8565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006200077b82620006ce565b91506200078883620006ce565b9250828210156200079e576200079d6200073f565b5b828203905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620007db82620007ae565b9050919050565b620007ed81620007ce565b8114620007f957600080fd5b50565b6000815190506200080d81620007e2565b92915050565b6000602082840312156200082c576200082b620007a9565b5b60006200083c84828501620007fc565b91505092915050565b6200085081620007ce565b82525050565b60006040820190506200086d600083018562000845565b6200087c602083018462000845565b9392505050565b6200088e81620006ce565b82525050565b6000602082019050620008ab600083018462000883565b92915050565b613dc980620008c16000396000f3fe6080604052600436106101d15760003560e01c80637f2feddc116100f7578063a9059cbb11610095578063c492f04611610064578063c492f0461461065d578063dd62ed3e14610686578063ea1644d5146106c3578063f2fde38b146106ec576101d8565b8063a9059cbb146105a3578063bba4de00146105e0578063bfd7928414610609578063c3c8cd8014610646576101d8565b80638f9a55c0116100d15780638f9a55c0146104fb57806395d89b411461052657806398a5c31514610551578063a2a957bb1461057a576101d8565b80637f2feddc1461046a5780638da5cb5b146104a75780638f70ccf7146104d2576101d8565b806349bd5a5e1161016f57806370a082311161013e57806370a08231146103c2578063715018a6146103ff57806374010ece146104165780637d1db4a51461043f576101d8565b806349bd5a5e1461032e57806369b33c6e146103595780636d8aa8f8146103825780636fc3eaec146103ab576101d8565b806318160ddd116101ab57806318160ddd1461027057806323b872dd1461029b5780632fd689e3146102d8578063313ce56714610303576101d8565b806306fdde03146101dd578063095ea7b3146102085780631694505e14610245576101d8565b366101d857005b600080fd5b3480156101e957600080fd5b506101f2610715565b6040516101ff9190612c24565b60405180910390f35b34801561021457600080fd5b5061022f600480360381019061022a9190612cee565b610752565b60405161023c9190612d49565b60405180910390f35b34801561025157600080fd5b5061025a610770565b6040516102679190612dc3565b60405180910390f35b34801561027c57600080fd5b50610285610796565b6040516102929190612ded565b60405180910390f35b3480156102a757600080fd5b506102c260048036038101906102bd9190612e08565b6107a7565b6040516102cf9190612d49565b60405180910390f35b3480156102e457600080fd5b506102ed610880565b6040516102fa9190612ded565b60405180910390f35b34801561030f57600080fd5b50610318610886565b6040516103259190612e77565b60405180910390f35b34801561033a57600080fd5b5061034361088f565b6040516103509190612ea1565b60405180910390f35b34801561036557600080fd5b50610380600480360381019061037b9190612ebc565b6108b5565b005b34801561038e57600080fd5b506103a960048036038101906103a49190612f15565b6109a5565b005b3480156103b757600080fd5b506103c0610a57565b005b3480156103ce57600080fd5b506103e960048036038101906103e49190612ebc565b610b28565b6040516103f69190612ded565b60405180910390f35b34801561040b57600080fd5b50610414610b79565b005b34801561042257600080fd5b5061043d60048036038101906104389190612f42565b610ccc565b005b34801561044b57600080fd5b50610454610d6b565b6040516104619190612ded565b60405180910390f35b34801561047657600080fd5b50610491600480360381019061048c9190612ebc565b610d71565b60405161049e9190612ded565b60405180910390f35b3480156104b357600080fd5b506104bc610d89565b6040516104c99190612ea1565b60405180910390f35b3480156104de57600080fd5b506104f960048036038101906104f49190612f15565b610db2565b005b34801561050757600080fd5b50610510610e64565b60405161051d9190612ded565b60405180910390f35b34801561053257600080fd5b5061053b610e6a565b6040516105489190612c24565b60405180910390f35b34801561055d57600080fd5b5061057860048036038101906105739190612f42565b610ea7565b005b34801561058657600080fd5b506105a1600480360381019061059c9190612f6f565b610f46565b005b3480156105af57600080fd5b506105ca60048036038101906105c59190612cee565b610ffd565b6040516105d79190612d49565b60405180910390f35b3480156105ec57600080fd5b506106076004803603810190610602919061311e565b61101b565b005b34801561061557600080fd5b50610630600480360381019061062b9190612ebc565b611145565b60405161063d9190612d49565b60405180910390f35b34801561065257600080fd5b5061065b611165565b005b34801561066957600080fd5b50610684600480360381019061067f91906131c2565b61123e565b005b34801561069257600080fd5b506106ad60048036038101906106a89190613222565b611378565b6040516106ba9190612ded565b60405180910390f35b3480156106cf57600080fd5b506106ea60048036038101906106e59190612f42565b6113ff565b005b3480156106f857600080fd5b50610713600480360381019061070e9190612ebc565b61149e565b005b60606040518060400160405280600c81526020017f426974436f696e20436c75620000000000000000000000000000000000000000815250905090565b600061076661075f61165f565b8484611667565b6001905092915050565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600068056bc75e2d63100000905090565b60006107b4848484611830565b610875846107c061165f565b61087085604051806060016040528060288152602001613d6c60289139600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061082661165f565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546120b39092919063ffffffff16565b611667565b600190509392505050565b60185481565b60006009905090565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6108bd61165f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461094a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610941906132ae565b60405180910390fd5b6000601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6109ad61165f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a3a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a31906132ae565b60405180910390fd5b80601560166101000a81548160ff02191690831515021790555050565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610a9861165f565b73ffffffffffffffffffffffffffffffffffffffff161480610b0e5750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610af661165f565b73ffffffffffffffffffffffffffffffffffffffff16145b610b1757600080fd5b6000479050610b2581612117565b50565b6000610b72600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612183565b9050919050565b610b8161165f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c0e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c05906132ae565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610cd461165f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d61576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d58906132ae565b60405180910390fd5b8060168190555050565b60165481565b60116020528060005260406000206000915090505481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610dba61165f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e47576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e3e906132ae565b60405180910390fd5b80601560146101000a81548160ff02191690831515021790555050565b60175481565b60606040518060400160405280600481526020017f4249544300000000000000000000000000000000000000000000000000000000815250905090565b610eaf61165f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f3c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f33906132ae565b60405180910390fd5b8060188190555050565b610f4e61165f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610fdb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fd2906132ae565b60405180910390fd5b8360088190555082600a819055508160098190555080600b8190555050505050565b600061101161100a61165f565b8484611830565b6001905092915050565b61102361165f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110b0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110a7906132ae565b60405180910390fd5b60005b8151811015611141576001601060008484815181106110d5576110d46132ce565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080806111399061332c565b9150506110b3565b5050565b60106020528060005260406000206000915054906101000a900460ff1681565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166111a661165f565b73ffffffffffffffffffffffffffffffffffffffff16148061121c5750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661120461165f565b73ffffffffffffffffffffffffffffffffffffffff16145b61122557600080fd5b600061123030610b28565b905061123b816121f1565b50565b61124661165f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146112d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112ca906132ae565b60405180910390fd5b60005b838390508110156113725781600560008686858181106112f9576112f86132ce565b5b905060200201602081019061130e9190612ebc565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550808061136a9061332c565b9150506112d6565b50505050565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61140761165f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611494576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161148b906132ae565b60405180910390fd5b8060178190555050565b6114a661165f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611533576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161152a906132ae565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036115a2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611599906133e6565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036116d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116cd90613478565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611745576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161173c9061350a565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516118239190612ded565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361189f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118969061359c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361190e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119059061362e565b60405180910390fd5b60008111611951576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611948906136c0565b60405180910390fd5b611959610d89565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156119c75750611997610d89565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611db257601560149054906101000a900460ff16611a56576119e8610d89565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614611a55576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a4c90613752565b60405180910390fd5b5b601654811115611a9b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a92906137be565b60405180910390fd5b601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611b3f5750601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b611b7e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b7590613850565b60405180910390fd5b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614611c2b5760175481611be084610b28565b611bea9190613870565b10611c2a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c2190613938565b60405180910390fd5b5b6000611c3630610b28565b9050600060185482101590506016548210611c515760165491505b808015611c69575060158054906101000a900460ff16155b8015611cc35750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015611cdb5750601560169054906101000a900460ff165b8015611d315750600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611d875750600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611daf57611d95826121f1565b60004790506000811115611dad57611dac47612117565b5b505b50505b600060019050600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611e595750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80611f0c5750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611f0b5750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b15611f1a57600090506120a1565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611fc55750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611fdd57600854600c81905550600954600d819055505b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156120885750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b156120a057600a54600c81905550600b54600d819055505b5b6120ad84848484612468565b50505050565b60008383111582906120fb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120f29190612c24565b60405180910390fd5b506000838561210a9190613958565b9050809150509392505050565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f1935050505015801561217f573d6000803e3d6000fd5b5050565b60006006548211156121ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121c1906139fe565b60405180910390fd5b60006121d4612495565b90506121e981846124c090919063ffffffff16565b915050919050565b60016015806101000a81548160ff0219169083151502179055506000600267ffffffffffffffff81111561222857612227612fdb565b5b6040519080825280602002602001820160405280156122565781602001602082028036833780820191505090505b509050308160008151811061226e5761226d6132ce565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612315573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123399190613a33565b8160018151811061234d5761234c6132ce565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506123b430601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611667565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612418959493929190613b59565b600060405180830381600087803b15801561243257600080fd5b505af1158015612446573d6000803e3d6000fd5b505050505060006015806101000a81548160ff02191690831515021790555050565b806124765761247561250a565b5b612481848484612547565b8061248f5761248e612712565b5b50505050565b60008060006124a2612726565b915091506124b981836124c090919063ffffffff16565b9250505090565b600061250283836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612788565b905092915050565b6000600c5414801561251e57506000600d54145b61254557600c54600e81905550600d54600f819055506000600c819055506000600d819055505b565b600080600080600080612559876127eb565b9550955095509550955095506125b786600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461285390919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061264c85600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461289d90919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612698816128fb565b6126a284836129b8565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516126ff9190612ded565b60405180910390a3505050505050505050565b600e54600c81905550600f54600d81905550565b60008060006006549050600068056bc75e2d63100000905061275c68056bc75e2d631000006006546124c090919063ffffffff16565b82101561277b5760065468056bc75e2d63100000935093505050612784565b81819350935050505b9091565b600080831182906127cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127c69190612c24565b60405180910390fd5b50600083856127de9190613be2565b9050809150509392505050565b60008060008060008060008060006128088a600c54600d546129f2565b9250925092506000612818612495565b9050600080600061282b8e878787612a88565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b600061289583836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506120b3565b905092915050565b60008082846128ac9190613870565b9050838110156128f1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128e890613c5f565b60405180910390fd5b8091505092915050565b6000612905612495565b9050600061291c8284612b1190919063ffffffff16565b905061297081600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461289d90919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b6129cd8260065461285390919063ffffffff16565b6006819055506129e88160075461289d90919063ffffffff16565b6007819055505050565b600080600080612a1e6064612a10888a612b1190919063ffffffff16565b6124c090919063ffffffff16565b90506000612a486064612a3a888b612b1190919063ffffffff16565b6124c090919063ffffffff16565b90506000612a7182612a63858c61285390919063ffffffff16565b61285390919063ffffffff16565b905080838395509550955050505093509350939050565b600080600080612aa18589612b1190919063ffffffff16565b90506000612ab88689612b1190919063ffffffff16565b90506000612acf8789612b1190919063ffffffff16565b90506000612af882612aea858761285390919063ffffffff16565b61285390919063ffffffff16565b9050838184965096509650505050509450945094915050565b6000808303612b235760009050612b85565b60008284612b319190613c7f565b9050828482612b409190613be2565b14612b80576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b7790613d4b565b60405180910390fd5b809150505b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612bc5578082015181840152602081019050612baa565b83811115612bd4576000848401525b50505050565b6000601f19601f8301169050919050565b6000612bf682612b8b565b612c008185612b96565b9350612c10818560208601612ba7565b612c1981612bda565b840191505092915050565b60006020820190508181036000830152612c3e8184612beb565b905092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612c8582612c5a565b9050919050565b612c9581612c7a565b8114612ca057600080fd5b50565b600081359050612cb281612c8c565b92915050565b6000819050919050565b612ccb81612cb8565b8114612cd657600080fd5b50565b600081359050612ce881612cc2565b92915050565b60008060408385031215612d0557612d04612c50565b5b6000612d1385828601612ca3565b9250506020612d2485828601612cd9565b9150509250929050565b60008115159050919050565b612d4381612d2e565b82525050565b6000602082019050612d5e6000830184612d3a565b92915050565b6000819050919050565b6000612d89612d84612d7f84612c5a565b612d64565b612c5a565b9050919050565b6000612d9b82612d6e565b9050919050565b6000612dad82612d90565b9050919050565b612dbd81612da2565b82525050565b6000602082019050612dd86000830184612db4565b92915050565b612de781612cb8565b82525050565b6000602082019050612e026000830184612dde565b92915050565b600080600060608486031215612e2157612e20612c50565b5b6000612e2f86828701612ca3565b9350506020612e4086828701612ca3565b9250506040612e5186828701612cd9565b9150509250925092565b600060ff82169050919050565b612e7181612e5b565b82525050565b6000602082019050612e8c6000830184612e68565b92915050565b612e9b81612c7a565b82525050565b6000602082019050612eb66000830184612e92565b92915050565b600060208284031215612ed257612ed1612c50565b5b6000612ee084828501612ca3565b91505092915050565b612ef281612d2e565b8114612efd57600080fd5b50565b600081359050612f0f81612ee9565b92915050565b600060208284031215612f2b57612f2a612c50565b5b6000612f3984828501612f00565b91505092915050565b600060208284031215612f5857612f57612c50565b5b6000612f6684828501612cd9565b91505092915050565b60008060008060808587031215612f8957612f88612c50565b5b6000612f9787828801612cd9565b9450506020612fa887828801612cd9565b9350506040612fb987828801612cd9565b9250506060612fca87828801612cd9565b91505092959194509250565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61301382612bda565b810181811067ffffffffffffffff8211171561303257613031612fdb565b5b80604052505050565b6000613045612c46565b9050613051828261300a565b919050565b600067ffffffffffffffff82111561307157613070612fdb565b5b602082029050602081019050919050565b600080fd5b600061309a61309584613056565b61303b565b905080838252602082019050602084028301858111156130bd576130bc613082565b5b835b818110156130e657806130d28882612ca3565b8452602084019350506020810190506130bf565b5050509392505050565b600082601f83011261310557613104612fd6565b5b8135613115848260208601613087565b91505092915050565b60006020828403121561313457613133612c50565b5b600082013567ffffffffffffffff81111561315257613151612c55565b5b61315e848285016130f0565b91505092915050565b600080fd5b60008083601f84011261318257613181612fd6565b5b8235905067ffffffffffffffff81111561319f5761319e613167565b5b6020830191508360208202830111156131bb576131ba613082565b5b9250929050565b6000806000604084860312156131db576131da612c50565b5b600084013567ffffffffffffffff8111156131f9576131f8612c55565b5b6132058682870161316c565b9350935050602061321886828701612f00565b9150509250925092565b6000806040838503121561323957613238612c50565b5b600061324785828601612ca3565b925050602061325885828601612ca3565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613298602083612b96565b91506132a382613262565b602082019050919050565b600060208201905081810360008301526132c78161328b565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061333782612cb8565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203613369576133686132fd565b5b600182019050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006133d0602683612b96565b91506133db82613374565b604082019050919050565b600060208201905081810360008301526133ff816133c3565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000613462602483612b96565b915061346d82613406565b604082019050919050565b6000602082019050818103600083015261349181613455565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006134f4602283612b96565b91506134ff82613498565b604082019050919050565b60006020820190508181036000830152613523816134e7565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000613586602583612b96565b91506135918261352a565b604082019050919050565b600060208201905081810360008301526135b581613579565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000613618602383612b96565b9150613623826135bc565b604082019050919050565b600060208201905081810360008301526136478161360b565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b60006136aa602983612b96565b91506136b58261364e565b604082019050919050565b600060208201905081810360008301526136d98161369d565b9050919050565b7f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060008201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400602082015250565b600061373c603f83612b96565b9150613747826136e0565b604082019050919050565b6000602082019050818103600083015261376b8161372f565b9050919050565b7f544f4b454e3a204d6178205472616e73616374696f6e204c696d697400000000600082015250565b60006137a8601c83612b96565b91506137b382613772565b602082019050919050565b600060208201905081810360008301526137d78161379b565b9050919050565b7f544f4b454e3a20596f7572206163636f756e7420697320626c61636b6c69737460008201527f6564210000000000000000000000000000000000000000000000000000000000602082015250565b600061383a602383612b96565b9150613845826137de565b604082019050919050565b600060208201905081810360008301526138698161382d565b9050919050565b600061387b82612cb8565b915061388683612cb8565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156138bb576138ba6132fd565b5b828201905092915050565b7f544f4b454e3a2042616c616e636520657863656564732077616c6c657420736960008201527f7a65210000000000000000000000000000000000000000000000000000000000602082015250565b6000613922602383612b96565b915061392d826138c6565b604082019050919050565b6000602082019050818103600083015261395181613915565b9050919050565b600061396382612cb8565b915061396e83612cb8565b925082821015613981576139806132fd565b5b828203905092915050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b60006139e8602a83612b96565b91506139f38261398c565b604082019050919050565b60006020820190508181036000830152613a17816139db565b9050919050565b600081519050613a2d81612c8c565b92915050565b600060208284031215613a4957613a48612c50565b5b6000613a5784828501613a1e565b91505092915050565b6000819050919050565b6000613a85613a80613a7b84613a60565b612d64565b612cb8565b9050919050565b613a9581613a6a565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613ad081612c7a565b82525050565b6000613ae28383613ac7565b60208301905092915050565b6000602082019050919050565b6000613b0682613a9b565b613b108185613aa6565b9350613b1b83613ab7565b8060005b83811015613b4c578151613b338882613ad6565b9750613b3e83613aee565b925050600181019050613b1f565b5085935050505092915050565b600060a082019050613b6e6000830188612dde565b613b7b6020830187613a8c565b8181036040830152613b8d8186613afb565b9050613b9c6060830185612e92565b613ba96080830184612dde565b9695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613bed82612cb8565b9150613bf883612cb8565b925082613c0857613c07613bb3565b5b828204905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000613c49601b83612b96565b9150613c5482613c13565b602082019050919050565b60006020820190508181036000830152613c7881613c3c565b9050919050565b6000613c8a82612cb8565b9150613c9583612cb8565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613cce57613ccd6132fd565b5b828202905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000613d35602183612b96565b9150613d4082613cd9565b604082019050919050565b60006020820190508181036000830152613d6481613d28565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a264697066735822122070d68c8eff8c98368fe08b98cc87802d0ae1286019349beeba92fbf3031f8c7964736f6c634300080f0033