60806040525f600755601760085560176009555f600a555f600b556017600c556017600d556017600e555f600f555f6010555f6011556009600a61004391906105dc565b6401f58066406100539190610626565b6012556009600a61006491906105dc565b6401f58066406100749190610626565b6013556009600a61008591906105dc565b6401f58066406100959190610626565b6014556009600a6100a691906105dc565b6401f58066406100b69190610626565b60155560036018555f60195f6101000a81548160ff0219169083151502179055505f601960016101000a81548160ff0219169083151502179055506001601960026101000a81548160ff021916908315150217905550348015610117575f80fd5b505f61012761043d60201b60201c565b9050805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3506101d161043d60201b60201c565b60065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506009600a61021e91906105dc565b6461f313f88061022e9190610626565b60015f61023f61043d60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550600160035f61028f61044460201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160035f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160035f60175f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506103b761043d60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6009600a61041391906105dc565b6461f313f8806104239190610626565b6040516104309190610676565b60405180910390a361068f565b5f33905090565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b60018511156104ed578086048111156104c9576104c861046b565b5b60018516156104d85780820291505b80810290506104e685610498565b94506104ad565b94509492505050565b5f8261050557600190506105c0565b81610512575f90506105c0565b8160018114610528576002811461053257610561565b60019150506105c0565b60ff8411156105445761054361046b565b5b8360020a91508482111561055b5761055a61046b565b5b506105c0565b5060208310610133831016604e8410600b84101617156105965782820a9050838111156105915761059061046b565b5b6105c0565b6105a384848460016104a4565b925090508184048111156105ba576105b961046b565b5b81810290505b9392505050565b5f819050919050565b5f60ff82169050919050565b5f6105e6826105c7565b91506105f1836105d0565b925061061e7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846104f6565b905092915050565b5f610630826105c7565b915061063b836105c7565b9250828202610649816105c7565b915082820484148315176106605761065f61046b565b5b5092915050565b610670816105c7565b82525050565b5f6020820190506106895f830184610667565b92915050565b613dc78061069c5f395ff3fe6080604052600436106101c5575f3560e01c806374bebabb116100f6578063a9059cbb11610094578063e68d0b0511610063578063e68d0b05146105ec578063f2fde38b14610614578063f5b3c3bf1461063c578063fce0299a14610678576101cc565b8063a9059cbb14610520578063bf474bed1461055c578063c8d464a414610586578063dd62ed3e146105b0576101cc565b80638da5cb5b116100d05780638da5cb5b1461047a5780638f9a55c0146104a457806390d49b9d146104ce57806395d89b41146104f6576101cc565b806374bebabb146104105780637d1db4a51461043a5780638a8c523c14610464576101cc565b806323b872dd1161016357806349bd5a5e1161013d57806349bd5a5e1461036c57806353bc13dc1461039657806370a08231146103be578063715018a6146103fa576101cc565b806323b872dd146102de578063313ce5671461031a5780633bdb20c514610344576101cc565b80630faee56f1161019f5780630faee56f1461024c57806318160ddd1461027657806320800a00146102a057806322c97e31146102b6576101cc565b806301ab6ee5146101d057806306fdde03146101e6578063095ea7b314610210576101cc565b366101cc57005b5f80fd5b3480156101db575f80fd5b506101e46106a0565b005b3480156101f1575f80fd5b506101fa6107d2565b6040516102079190612cee565b60405180910390f35b34801561021b575f80fd5b5061023660048036038101906102319190612d9f565b61080f565b6040516102439190612df7565b60405180910390f35b348015610257575f80fd5b5061026061082c565b60405161026d9190612e1f565b60405180910390f35b348015610281575f80fd5b5061028a610832565b6040516102979190612e1f565b60405180910390f35b3480156102ab575f80fd5b506102b4610856565b005b3480156102c1575f80fd5b506102dc60048036038101906102d79190612e62565b610951565b005b3480156102e9575f80fd5b5061030460048036038101906102ff9190612e8d565b610a02565b6040516103119190612df7565b60405180910390f35b348015610325575f80fd5b5061032e610ad6565b60405161033b9190612ef8565b60405180910390f35b34801561034f575f80fd5b5061036a60048036038101906103659190612f11565b610ade565b005b348015610377575f80fd5b50610380610b7c565b60405161038d9190612f4b565b60405180910390f35b3480156103a1575f80fd5b506103bc60048036038101906103b79190612f64565b610ba1565b005b3480156103c9575f80fd5b506103e460048036038101906103df9190612f64565b610c8d565b6040516103f19190612e1f565b60405180910390f35b348015610405575f80fd5b5061040e610cd3565b005b34801561041b575f80fd5b50610424610e21565b6040516104319190612e1f565b60405180910390f35b348015610445575f80fd5b5061044e610e27565b60405161045b9190612e1f565b60405180910390f35b34801561046f575f80fd5b50610478610e2d565b005b348015610485575f80fd5b5061048e611443565b60405161049b9190612f4b565b60405180910390f35b3480156104af575f80fd5b506104b861146a565b6040516104c59190612e1f565b60405180910390f35b3480156104d9575f80fd5b506104f460048036038101906104ef9190612f64565b611470565b005b348015610501575f80fd5b5061050a611547565b6040516105179190612cee565b60405180910390f35b34801561052b575f80fd5b5061054660048036038101906105419190612d9f565b611584565b6040516105539190612df7565b60405180910390f35b348015610567575f80fd5b506105706115a1565b60405161057d9190612e1f565b60405180910390f35b348015610591575f80fd5b5061059a6115a7565b6040516105a79190612df7565b60405180910390f35b3480156105bb575f80fd5b506105d660048036038101906105d19190612f8f565b6115ba565b6040516105e39190612e1f565b60405180910390f35b3480156105f7575f80fd5b50610612600480360381019061060d9190612fcd565b61163c565b005b34801561061f575f80fd5b5061063a60048036038101906106359190612f64565b6116f5565b005b348015610647575f80fd5b50610662600480360381019061065d9190612f64565b6118b2565b60405161066f9190612df7565b60405180910390f35b348015610683575f80fd5b5061069e60048036038101906106999190612d9f565b6118cf565b005b6106a8611a04565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610734576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161072b90613055565b60405180910390fd5b6009600a61074291906131cf565b6461f313f8806107529190613219565b6012819055506009600a61076691906131cf565b6461f313f8806107769190613219565b6013819055507f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf6009600a6107ab91906131cf565b6461f313f8806107bb9190613219565b6040516107c89190612e1f565b60405180910390a1565b60606040518060400160405280600a81526020017f4368616e6770656e757400000000000000000000000000000000000000000000815250905090565b5f61082261081b611a04565b8484611a0b565b6001905092915050565b60155481565b5f6009600a61084191906131cf565b6461f313f8806108519190613219565b905090565b61085e611a04565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146108ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108e190613055565b60405180910390fd5b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc4790811502906040515f60405180830381858888f1935050505015801561094e573d5f803e3d5ffd5b50565b610959611a04565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146109e5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109dc90613055565b60405180910390fd5b80601960026101000a81548160ff02191690831515021790555050565b5f610a0e848484611bce565b610acb84610a1a611a04565b610ac685604051806060016040528060288152602001613d6a6028913960025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f610a7d611a04565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461276c9092919063ffffffff16565b611a0b565b600190509392505050565b5f6009905090565b610ae6611a04565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b72576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b6990613055565b60405180910390fd5b8060188190555050565b60175f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610ba9611a04565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c35576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c2c90613055565b60405180910390fd5b600160045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555050565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610cdb611a04565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d67576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d5e90613055565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60185481565b60125481565b610e35611a04565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ec1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eb890613055565b60405180910390fd5b601760149054906101000a900460ff1615610f11576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f08906132a4565b60405180910390fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d60165f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610fae3060165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166009600a610f9991906131cf565b6461f313f880610fa99190613219565b611a0b565b60165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611018573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061103c91906132d6565b73ffffffffffffffffffffffffffffffffffffffff1663c9c653963060165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156110c2573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110e691906132d6565b6040518363ffffffff1660e01b8152600401611103929190613301565b6020604051808303815f875af115801561111f573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061114391906132d6565b60175f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160045f60175f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160035f60175f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555060165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71947306112b630610c8d565b5f806112c0611443565b426040518863ffffffff1660e01b81526004016112e29695949392919061336a565b60606040518083038185885af11580156112fe573d5f803e3d5ffd5b50505050506040513d601f19601f8201168201806040525081019061132391906133dd565b50505060175f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b360165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b81526004016113c392919061342d565b6020604051808303815f875af11580156113df573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906114039190613468565b506001601960016101000a81548160ff0219169083151502179055506001601760146101000a81548160ff02191690831515021790555043600781905550565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60135481565b611478611a04565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611504576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114fb90613055565b60405180910390fd5b8060065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60606040518060400160405280600581526020017f50454e5554000000000000000000000000000000000000000000000000000000815250905090565b5f611597611590611a04565b8484611bce565b6001905092915050565b60145481565b601960029054906101000a900460ff1681565b5f60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b611644611a04565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146116d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116c790613055565b60405180910390fd5b81601960016101000a81548160ff021916908315150217905550806015819055505050565b6116fd611a04565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611789576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161178090613055565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036117f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117ee90613503565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6004602052805f5260405f205f915054906101000a900460ff1681565b6118d7611a04565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611963576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161195a90613055565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b81526004016119bf929190613573565b6020604051808303815f875af11580156119db573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906119ff9190613468565b505050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611a79576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a709061360a565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611ae7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ade90613698565b60405180910390fd5b8060025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611bc19190612e1f565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611c3c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c3390613726565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611caa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ca1906137b4565b60405180910390fd5b5f8111611cec576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ce390613842565b60405180910390fd5b5f611cf5611443565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611d635750611d33611443565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b156124bc57611da46064611d96600c54600f5411611d8357600854611d87565b600a545b856127ce90919063ffffffff16565b61284590919063ffffffff16565b90506007544303611e2a57603360055f4381526020019081526020015f205410611e03576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dfa906138aa565b60405180910390fd5b60055f4381526020019081526020015f205f815480929190611e24906138c8565b91905055505b60045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015611ecd575060165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611f20575060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611fda57601254821115611f6a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f6190613959565b60405180910390fd5b60135482611f7785610c8d565b611f819190613977565b1115611fc2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fb9906139f4565b60405180910390fd5b600f5f815480929190611fd4906138c8565b91905055505b60045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015612078575060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b156120d6576013548261208a85610c8d565b6120949190613977565b11156120d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120cc906139f4565b60405180910390fd5b5b60045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16801561215857503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b1561219c57612199606461218b600d54600f54116121785760095461217c565b600b545b856127ce90919063ffffffff16565b61284590919063ffffffff16565b90505b60045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615801561223a575060045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b801561227257503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b1561227b575f90505b5f61228530610c8d565b9050601960029054906101000a900460ff1680156122af575060195f9054906101000a900460ff16155b8015612301575060045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b80156123195750601960019054906101000a900460ff165b8015612326575060145481115b80156123355750600e54600f54115b156123e95760115443111561234c575f6010819055505b60185460105410612392576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161238990613a5c565b60405180910390fd5b6123af6123aa846123a58460155461288e565b61288e565b6128a6565b5f4790505f8111156123c5576123c447612b0f565b5b60105f8154809291906123d7906138c8565b919050555043601181905550506124ba565b60195f9054906101000a900460ff1615801561244b575060045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b80156124635750601960019054906101000a900460ff165b8015612470575060145481115b801561247f5750600e54600f54115b156124b9576124a161249c846124978460155461288e565b61288e565b6128a6565b5f4790505f8111156124b7576124b647612b0f565b5b505b5b505b5f8111156125bb576125148160015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612b7790919063ffffffff16565b60015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516125b29190612e1f565b60405180910390a35b61260b8260015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612bd490919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506126ae6126628284612bd490919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612b7790919063ffffffff16565b60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6127518486612bd490919063ffffffff16565b60405161275e9190612e1f565b60405180910390a350505050565b5f8383111582906127b3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127aa9190612cee565b60405180910390fd5b505f83856127c19190613a7a565b9050809150509392505050565b5f8083036127de575f905061283f565b5f82846127eb9190613219565b90508284826127fa9190613ada565b1461283a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161283190613b7a565b60405180910390fd5b809150505b92915050565b5f61288683836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612c1d565b905092915050565b5f81831161289c578261289e565b815b905092915050565b600160195f6101000a81548160ff0219169083151502179055505f600267ffffffffffffffff8111156128dc576128db613b98565b5b60405190808252806020026020018201604052801561290a5781602001602082028036833780820191505090505b50905030815f8151811061292157612920613bc5565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156129c5573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906129e991906132d6565b816001815181106129fd576129fc613bc5565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050612a633060165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611a0b565b60165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b8152600401612ac5959493929190613ca9565b5f604051808303815f87803b158015612adc575f80fd5b505af1158015612aee573d5f803e3d5ffd5b50505050505f60195f6101000a81548160ff02191690831515021790555050565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015612b73573d5f803e3d5ffd5b5050565b5f808284612b859190613977565b905083811015612bca576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bc190613d4b565b60405180910390fd5b8091505092915050565b5f612c1583836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061276c565b905092915050565b5f8083118290612c63576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c5a9190612cee565b60405180910390fd5b505f8385612c719190613ada565b9050809150509392505050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f612cc082612c7e565b612cca8185612c88565b9350612cda818560208601612c98565b612ce381612ca6565b840191505092915050565b5f6020820190508181035f830152612d068184612cb6565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f612d3b82612d12565b9050919050565b612d4b81612d31565b8114612d55575f80fd5b50565b5f81359050612d6681612d42565b92915050565b5f819050919050565b612d7e81612d6c565b8114612d88575f80fd5b50565b5f81359050612d9981612d75565b92915050565b5f8060408385031215612db557612db4612d0e565b5b5f612dc285828601612d58565b9250506020612dd385828601612d8b565b9150509250929050565b5f8115159050919050565b612df181612ddd565b82525050565b5f602082019050612e0a5f830184612de8565b92915050565b612e1981612d6c565b82525050565b5f602082019050612e325f830184612e10565b92915050565b612e4181612ddd565b8114612e4b575f80fd5b50565b5f81359050612e5c81612e38565b92915050565b5f60208284031215612e7757612e76612d0e565b5b5f612e8484828501612e4e565b91505092915050565b5f805f60608486031215612ea457612ea3612d0e565b5b5f612eb186828701612d58565b9350506020612ec286828701612d58565b9250506040612ed386828701612d8b565b9150509250925092565b5f60ff82169050919050565b612ef281612edd565b82525050565b5f602082019050612f0b5f830184612ee9565b92915050565b5f60208284031215612f2657612f25612d0e565b5b5f612f3384828501612d8b565b91505092915050565b612f4581612d31565b82525050565b5f602082019050612f5e5f830184612f3c565b92915050565b5f60208284031215612f7957612f78612d0e565b5b5f612f8684828501612d58565b91505092915050565b5f8060408385031215612fa557612fa4612d0e565b5b5f612fb285828601612d58565b9250506020612fc385828601612d58565b9150509250929050565b5f8060408385031215612fe357612fe2612d0e565b5b5f612ff085828601612e4e565b925050602061300185828601612d8b565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f61303f602083612c88565b915061304a8261300b565b602082019050919050565b5f6020820190508181035f83015261306c81613033565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b60018511156130f5578086048111156130d1576130d0613073565b5b60018516156130e05780820291505b80810290506130ee856130a0565b94506130b5565b94509492505050565b5f8261310d57600190506131c8565b8161311a575f90506131c8565b8160018114613130576002811461313a57613169565b60019150506131c8565b60ff84111561314c5761314b613073565b5b8360020a91508482111561316357613162613073565b5b506131c8565b5060208310610133831016604e8410600b841016171561319e5782820a90508381111561319957613198613073565b5b6131c8565b6131ab84848460016130ac565b925090508184048111156131c2576131c1613073565b5b81810290505b9392505050565b5f6131d982612d6c565b91506131e483612edd565b92506132117fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846130fe565b905092915050565b5f61322382612d6c565b915061322e83612d6c565b925082820261323c81612d6c565b9150828204841483151761325357613252613073565b5b5092915050565b7f74726164696e6720697320616c7265616479206f70656e0000000000000000005f82015250565b5f61328e601783612c88565b91506132998261325a565b602082019050919050565b5f6020820190508181035f8301526132bb81613282565b9050919050565b5f815190506132d081612d42565b92915050565b5f602082840312156132eb576132ea612d0e565b5b5f6132f8848285016132c2565b91505092915050565b5f6040820190506133145f830185612f3c565b6133216020830184612f3c565b9392505050565b5f819050919050565b5f819050919050565b5f61335461334f61334a84613328565b613331565b612d6c565b9050919050565b6133648161333a565b82525050565b5f60c08201905061337d5f830189612f3c565b61338a6020830188612e10565b613397604083018761335b565b6133a4606083018661335b565b6133b16080830185612f3c565b6133be60a0830184612e10565b979650505050505050565b5f815190506133d781612d75565b92915050565b5f805f606084860312156133f4576133f3612d0e565b5b5f613401868287016133c9565b9350506020613412868287016133c9565b9250506040613423868287016133c9565b9150509250925092565b5f6040820190506134405f830185612f3c565b61344d6020830184612e10565b9392505050565b5f8151905061346281612e38565b92915050565b5f6020828403121561347d5761347c612d0e565b5b5f61348a84828501613454565b91505092915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f6134ed602683612c88565b91506134f882613493565b604082019050919050565b5f6020820190508181035f83015261351a816134e1565b9050919050565b5f61353b61353661353184612d12565b613331565b612d12565b9050919050565b5f61354c82613521565b9050919050565b5f61355d82613542565b9050919050565b61356d81613553565b82525050565b5f6040820190506135865f830185613564565b6135936020830184612e10565b9392505050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f6135f4602483612c88565b91506135ff8261359a565b604082019050919050565b5f6020820190508181035f830152613621816135e8565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f613682602283612c88565b915061368d82613628565b604082019050919050565b5f6020820190508181035f8301526136af81613676565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f613710602583612c88565b915061371b826136b6565b604082019050919050565b5f6020820190508181035f83015261373d81613704565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f61379e602383612c88565b91506137a982613744565b604082019050919050565b5f6020820190508181035f8301526137cb81613792565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f61382c602983612c88565b9150613837826137d2565b604082019050919050565b5f6020820190508181035f83015261385981613820565b9050919050565b7f457863656564732062757973206f6e2074686520666972737420626c6f636b2e5f82015250565b5f613894602083612c88565b915061389f82613860565b602082019050919050565b5f6020820190508181035f8301526138c181613888565b9050919050565b5f6138d282612d6c565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361390457613903613073565b5b600182019050919050565b7f4578636565647320746865205f6d61785478416d6f756e742e000000000000005f82015250565b5f613943601983612c88565b915061394e8261390f565b602082019050919050565b5f6020820190508181035f83015261397081613937565b9050919050565b5f61398182612d6c565b915061398c83612d6c565b92508282019050808211156139a4576139a3613073565b5b92915050565b7f4578636565647320746865206d617857616c6c657453697a652e0000000000005f82015250565b5f6139de601a83612c88565b91506139e9826139aa565b602082019050919050565b5f6020820190508181035f830152613a0b816139d2565b9050919050565b7f43412062616c616e63652073656c6c00000000000000000000000000000000005f82015250565b5f613a46600f83612c88565b9150613a5182613a12565b602082019050919050565b5f6020820190508181035f830152613a7381613a3a565b9050919050565b5f613a8482612d6c565b9150613a8f83612d6c565b9250828203905081811115613aa757613aa6613073565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f613ae482612d6c565b9150613aef83612d6c565b925082613aff57613afe613aad565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f613b64602183612c88565b9150613b6f82613b0a565b604082019050919050565b5f6020820190508181035f830152613b9181613b58565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b613c2481612d31565b82525050565b5f613c358383613c1b565b60208301905092915050565b5f602082019050919050565b5f613c5782613bf2565b613c618185613bfc565b9350613c6c83613c0c565b805f5b83811015613c9c578151613c838882613c2a565b9750613c8e83613c41565b925050600181019050613c6f565b5085935050505092915050565b5f60a082019050613cbc5f830188612e10565b613cc9602083018761335b565b8181036040830152613cdb8186613c4d565b9050613cea6060830185612f3c565b613cf76080830184612e10565b9695505050505050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f613d35601b83612c88565b9150613d4082613d01565b602082019050919050565b5f6020820190508181035f830152613d6281613d29565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212201c1718a24879ac3c95cbc954e2508d8d29fba3412cd4fb4b17976f61a4bf8ce764736f6c63430008190033