0x6080604052600436106101ba575f3560e01c80637f2feddc116100eb578063a9059cbb11610089578063c492f04611610063578063c492f046146105db578063dd62ed3e14610603578063ea1644d51461063f578063f2fde38b14610667576101c1565b8063a9059cbb1461054d578063bfd7928414610589578063c3c8cd80146105c5576101c1565b80638f9a55c0116100c55780638f9a55c0146104a957806395d89b41146104d357806398a5c315146104fd578063a2a957bb14610525576101c1565b80637f2feddc1461041b5780638da5cb5b146104575780638f70ccf714610481576101c1565b806349bd5a5e1161015857806370a082311161013257806370a0823114610377578063715018a6146103b357806374010ece146103c95780637d1db4a5146103f1576101c1565b806349bd5a5e1461030f5780636d8aa8f8146103395780636fc3eaec14610361576101c1565b806318160ddd1161019457806318160ddd1461025557806323b872dd1461027f5780632fd689e3146102bb578063313ce567146102e5576101c1565b806306fdde03146101c5578063095ea7b3146101ef5780631694505e1461022b576101c1565b366101c157005b5f80fd5b3480156101d0575f80fd5b506101d961068f565b6040516101e691906128a7565b60405180910390f35b3480156101fa575f80fd5b506102156004803603810190610210919061295c565b6106cc565b60405161022291906129b4565b60405180910390f35b348015610236575f80fd5b5061023f6106e9565b60405161024c9190612a28565b60405180910390f35b348015610260575f80fd5b5061026961070e565b6040516102769190612a50565b60405180910390f35b34801561028a575f80fd5b506102a560048036038101906102a09190612a69565b61071f565b6040516102b291906129b4565b60405180910390f35b3480156102c6575f80fd5b506102cf6107f3565b6040516102dc9190612a50565b60405180910390f35b3480156102f0575f80fd5b506102f96107f9565b6040516103069190612ad4565b60405180910390f35b34801561031a575f80fd5b50610323610801565b6040516103309190612afc565b60405180910390f35b348015610344575f80fd5b5061035f600480360381019061035a9190612b3f565b610826565b005b34801561036c575f80fd5b506103756108d7565b005b348015610382575f80fd5b5061039d60048036038101906103989190612b6a565b6109a4565b6040516103aa9190612a50565b60405180910390f35b3480156103be575f80fd5b506103c76109f2565b005b3480156103d4575f80fd5b506103ef60048036038101906103ea9190612b95565b610b40565b005b3480156103fc575f80fd5b50610405610bde565b6040516104129190612a50565b60405180910390f35b348015610426575f80fd5b50610441600480360381019061043c9190612b6a565b610be4565b60405161044e9190612a50565b60405180910390f35b348015610462575f80fd5b5061046b610bf9565b6040516104789190612afc565b60405180910390f35b34801561048c575f80fd5b506104a760048036038101906104a29190612b3f565b610c20565b005b3480156104b4575f80fd5b506104bd610cd1565b6040516104ca9190612a50565b60405180910390f35b3480156104de575f80fd5b506104e7610cd7565b6040516104f491906128a7565b60405180910390f35b348015610508575f80fd5b50610523600480360381019061051e9190612b95565b610d14565b005b348015610530575f80fd5b5061054b60048036038101906105469190612bc0565b610db2565b005b348015610558575f80fd5b50610573600480360381019061056e919061295c565b610e68565b60405161058091906129b4565b60405180910390f35b348015610594575f80fd5b506105af60048036038101906105aa9190612b6a565b610e85565b6040516105bc91906129b4565b60405180910390f35b3480156105d0575f80fd5b506105d9610ea2565b005b3480156105e6575f80fd5b5061060160048036038101906105fc9190612c85565b610f77565b005b34801561060e575f80fd5b5061062960048036038101906106249190612ce2565b6110a6565b6040516106369190612a50565b60405180910390f35b34801561064a575f80fd5b5061066560048036038101906106609190612b95565b611128565b005b348015610672575f80fd5b5061068d60048036038101906106889190612b6a565b6111c6565b005b60606040518060400160405280600c81526020017f44756f6c696e676f204f776c0000000000000000000000000000000000000000815250905090565b5f6106df6106d8611383565b848461138a565b6001905092915050565b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f695915a52a4360a6dd4400905090565b5f61072b84848461154d565b6107e884610737611383565b6107e3856040518060600160405280602881526020016137856028913960045f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f61079a611383565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611dad9092919063ffffffff16565b61138a565b600190509392505050565b60185481565b5f6009905090565b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61082e611383565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146108ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108b190612d6a565b60405180910390fd5b80601560166101000a81548160ff02191690831515021790555050565b60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610917611383565b73ffffffffffffffffffffffffffffffffffffffff16148061098c575060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610974611383565b73ffffffffffffffffffffffffffffffffffffffff16145b610994575f80fd5b5f4790506109a181611e0f565b50565b5f6109eb60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611e77565b9050919050565b6109fa611383565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a86576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a7d90612d6a565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610b48611383565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610bd4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bcb90612d6a565b60405180910390fd5b8060168190555050565b60165481565b6011602052805f5260405f205f915090505481565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610c28611383565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610cb4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cab90612d6a565b60405180910390fd5b80601560146101000a81548160ff02191690831515021790555050565b60175481565b60606040518060400160405280600381526020017f44554f0000000000000000000000000000000000000000000000000000000000815250905090565b610d1c611383565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610da8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d9f90612d6a565b60405180910390fd5b8060188190555050565b610dba611383565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e46576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e3d90612d6a565b60405180910390fd5b8360088190555082600a819055508160098190555080600b8190555050505050565b5f610e7b610e74611383565b848461154d565b6001905092915050565b6010602052805f5260405f205f915054906101000a900460ff1681565b60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610ee2611383565b73ffffffffffffffffffffffffffffffffffffffff161480610f57575060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610f3f611383565b73ffffffffffffffffffffffffffffffffffffffff16145b610f5f575f80fd5b5f610f69306109a4565b9050610f7481611ee3565b50565b610f7f611383565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461100b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161100290612d6a565b60405180910390fd5b5f5b838390508110156110a0578160055f86868581811061102f5761102e612d88565b5b90506020020160208101906110449190612b6a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550808060010191505061100d565b50505050565b5f60045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b611130611383565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146111bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111b390612d6a565b60405180910390fd5b8060178190555050565b6111ce611383565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461125a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161125190612d6a565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036112c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112bf90612e25565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036113f8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113ef90612eb3565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611466576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161145d90612f41565b60405180910390fd5b8060045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516115409190612a50565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036115bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115b290612fcf565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611629576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116209061305d565b60405180910390fd5b5f811161166b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611662906130eb565b60405180910390fd5b611673610bf9565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156116e157506116b1610bf9565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611aba57601560149054906101000a900460ff1661177057611702610bf9565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161461176f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161176690613179565b60405180910390fd5b5b6016548111156117b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117ac906131e1565b60405180910390fd5b60105f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015611853575060105f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b611892576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118899061326f565b60405180910390fd5b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161461193e57601754816118f3846109a4565b6118fd91906132ba565b1061193d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119349061335d565b60405180910390fd5b5b5f611948306109a4565b90505f601854821015905060165482106119625760165491505b80801561197a575060158054906101000a900460ff16155b80156119d3575060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b80156119eb5750601560169054906101000a900460ff165b8015611a3e575060055f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015611a91575060055f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611ab757611a9f82611ee3565b5f4790505f811115611ab557611ab447611e0f565b5b505b50505b5f6001905060055f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680611b5a575060055f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b80611c0b575060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611c0a575060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b15611c18575f9050611d9b565b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611cc1575060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611cd957600854600c81905550600954600d819055505b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611d82575060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15611d9a57600a54600c81905550600b54600d819055505b5b611da78484848461214c565b50505050565b5f838311158290611df4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611deb91906128a7565b60405180910390fd5b505f8385611e02919061337b565b9050809150509392505050565b60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015611e73573d5f803e3d5ffd5b5050565b5f600654821115611ebd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611eb49061341e565b60405180910390fd5b5f611ec661216b565b9050611edb818461219490919063ffffffff16565b915050919050565b60016015806101000a81548160ff0219169083151502179055505f600267ffffffffffffffff811115611f1957611f1861343c565b5b604051908082528060200260200182016040528015611f475781602001602082028036833780820191505090505b50905030815f81518110611f5e57611f5d612d88565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612002573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612026919061347d565b8160018151811061203a57612039612d88565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506120a03060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff168461138a565b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b8152600401612102959493929190613598565b5f604051808303815f87803b158015612119575f80fd5b505af115801561212b573d5f803e3d5ffd5b50505050505f6015806101000a81548160ff02191690831515021790555050565b8061215a576121596121dd565b5b612165848484612216565b50505050565b5f805f6121766123d6565b9150915061218d818361219490919063ffffffff16565b9250505090565b5f6121d583836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612438565b905092915050565b5f600c541480156121ef57505f600d54145b61221457600c54600e81905550600d54600f819055505f600c819055505f600d819055505b565b5f805f805f8061222587612499565b9550955095509550955095506122818660025f8c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546124f990919063ffffffff16565b60025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506123128560025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461254290919063ffffffff16565b60025f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555061235c8161259f565b6123668483612656565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516123c39190612a50565b60405180910390a3505050505050505050565b5f805f60065490505f695915a52a4360a6dd4400905061240b695915a52a4360a6dd440060065461219490919063ffffffff16565b82101561242b57600654695915a52a4360a6dd4400935093505050612434565b81819350935050505b9091565b5f808311829061247e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161247591906128a7565b60405180910390fd5b505f838561248c919061361d565b9050809150509392505050565b5f805f805f805f805f6124b18a600c54600d54612690565b9250925092505f6124c061216b565b90505f805f6124d18e878787612722565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b5f61253a83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611dad565b905092915050565b5f80828461255091906132ba565b905083811015612595576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161258c90613697565b60405180910390fd5b8091505092915050565b5f6125a861216b565b90505f6125be82846127a690919063ffffffff16565b90506126108160025f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461254290919063ffffffff16565b60025f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505050565b61266b826006546124f990919063ffffffff16565b6006819055506126868160075461254290919063ffffffff16565b6007819055505050565b5f805f806126ba60646126ac888a6127a690919063ffffffff16565b61219490919063ffffffff16565b90505f6126e360646126d5888b6127a690919063ffffffff16565b61219490919063ffffffff16565b90505f61270b826126fd858c6124f990919063ffffffff16565b6124f990919063ffffffff16565b905080838395509550955050505093509350939050565b5f805f8061273985896127a690919063ffffffff16565b90505f61274f86896127a690919063ffffffff16565b90505f61276587896127a690919063ffffffff16565b90505f61278d8261277f85876124f990919063ffffffff16565b6124f990919063ffffffff16565b9050838184965096509650505050509450945094915050565b5f8083036127b6575f9050612817565b5f82846127c391906136b5565b90508284826127d2919061361d565b14612812576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161280990613766565b60405180910390fd5b809150505b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015612854578082015181840152602081019050612839565b5f8484015250505050565b5f601f19601f8301169050919050565b5f6128798261281d565b6128838185612827565b9350612893818560208601612837565b61289c8161285f565b840191505092915050565b5f6020820190508181035f8301526128bf818461286f565b905092915050565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6128f8826128cf565b9050919050565b612908816128ee565b8114612912575f80fd5b50565b5f81359050612923816128ff565b92915050565b5f819050919050565b61293b81612929565b8114612945575f80fd5b50565b5f8135905061295681612932565b92915050565b5f8060408385031215612972576129716128c7565b5b5f61297f85828601612915565b925050602061299085828601612948565b9150509250929050565b5f8115159050919050565b6129ae8161299a565b82525050565b5f6020820190506129c75f8301846129a5565b92915050565b5f819050919050565b5f6129f06129eb6129e6846128cf565b6129cd565b6128cf565b9050919050565b5f612a01826129d6565b9050919050565b5f612a12826129f7565b9050919050565b612a2281612a08565b82525050565b5f602082019050612a3b5f830184612a19565b92915050565b612a4a81612929565b82525050565b5f602082019050612a635f830184612a41565b92915050565b5f805f60608486031215612a8057612a7f6128c7565b5b5f612a8d86828701612915565b9350506020612a9e86828701612915565b9250506040612aaf86828701612948565b9150509250925092565b5f60ff82169050919050565b612ace81612ab9565b82525050565b5f602082019050612ae75f830184612ac5565b92915050565b612af6816128ee565b82525050565b5f602082019050612b0f5f830184612aed565b92915050565b612b1e8161299a565b8114612b28575f80fd5b50565b5f81359050612b3981612b15565b92915050565b5f60208284031215612b5457612b536128c7565b5b5f612b6184828501612b2b565b91505092915050565b5f60208284031215612b7f57612b7e6128c7565b5b5f612b8c84828501612915565b91505092915050565b5f60208284031215612baa57612ba96128c7565b5b5f612bb784828501612948565b91505092915050565b5f805f8060808587031215612bd857612bd76128c7565b5b5f612be587828801612948565b9450506020612bf687828801612948565b9350506040612c0787828801612948565b9250506060612c1887828801612948565b91505092959194509250565b5f80fd5b5f80fd5b5f80fd5b5f8083601f840112612c4557612c44612c24565b5b8235905067ffffffffffffffff811115612c6257612c61612c28565b5b602083019150836020820283011115612c7e57612c7d612c2c565b5b9250929050565b5f805f60408486031215612c9c57612c9b6128c7565b5b5f84013567ffffffffffffffff811115612cb957612cb86128cb565b5b612cc586828701612c30565b93509350506020612cd886828701612b2b565b9150509250925092565b5f8060408385031215612cf857612cf76128c7565b5b5f612d0585828601612915565b9250506020612d1685828601612915565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f612d54602083612827565b9150612d5f82612d20565b602082019050919050565b5f6020820190508181035f830152612d8181612d48565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f612e0f602683612827565b9150612e1a82612db5565b604082019050919050565b5f6020820190508181035f830152612e3c81612e03565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f612e9d602483612827565b9150612ea882612e43565b604082019050919050565b5f6020820190508181035f830152612eca81612e91565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f612f2b602283612827565b9150612f3682612ed1565b604082019050919050565b5f6020820190508181035f830152612f5881612f1f565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f612fb9602583612827565b9150612fc482612f5f565b604082019050919050565b5f6020820190508181035f830152612fe681612fad565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f613047602383612827565b915061305282612fed565b604082019050919050565b5f6020820190508181035f8301526130748161303b565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f6130d5602983612827565b91506130e08261307b565b604082019050919050565b5f6020820190508181035f830152613102816130c9565b9050919050565b7f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e64205f8201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400602082015250565b5f613163603f83612827565b915061316e82613109565b604082019050919050565b5f6020820190508181035f83015261319081613157565b9050919050565b7f544f4b454e3a204d6178205472616e73616374696f6e204c696d6974000000005f82015250565b5f6131cb601c83612827565b91506131d682613197565b602082019050919050565b5f6020820190508181035f8301526131f8816131bf565b9050919050565b7f544f4b454e3a20596f7572206163636f756e7420697320626c61636b6c6973745f8201527f6564210000000000000000000000000000000000000000000000000000000000602082015250565b5f613259602383612827565b9150613264826131ff565b604082019050919050565b5f6020820190508181035f8301526132868161324d565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6132c482612929565b91506132cf83612929565b92508282019050808211156132e7576132e661328d565b5b92915050565b7f544f4b454e3a2042616c616e636520657863656564732077616c6c65742073695f8201527f7a65210000000000000000000000000000000000000000000000000000000000602082015250565b5f613347602383612827565b9150613352826132ed565b604082019050919050565b5f6020820190508181035f8301526133748161333b565b9050919050565b5f61338582612929565b915061339083612929565b92508282039050818111156133a8576133a761328d565b5b92915050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c20725f8201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b5f613408602a83612827565b9150613413826133ae565b604082019050919050565b5f6020820190508181035f830152613435816133fc565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f81519050613477816128ff565b92915050565b5f60208284031215613492576134916128c7565b5b5f61349f84828501613469565b91505092915050565b5f819050919050565b5f6134cb6134c66134c1846134a8565b6129cd565b612929565b9050919050565b6134db816134b1565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b613513816128ee565b82525050565b5f613524838361350a565b60208301905092915050565b5f602082019050919050565b5f613546826134e1565b61355081856134eb565b935061355b836134fb565b805f5b8381101561358b5781516135728882613519565b975061357d83613530565b92505060018101905061355e565b5085935050505092915050565b5f60a0820190506135ab5f830188612a41565b6135b860208301876134d2565b81810360408301526135ca818661353c565b90506135d96060830185612aed565b6135e66080830184612a41565b9695505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61362782612929565b915061363283612929565b925082613642576136416135f0565b5b828204905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f613681601b83612827565b915061368c8261364d565b602082019050919050565b5f6020820190508181035f8301526136ae81613675565b9050919050565b5f6136bf82612929565b91506136ca83612929565b92508282026136d881612929565b915082820484148315176136ef576136ee61328d565b5b5092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f613750602183612827565b915061375b826136f6565b604082019050919050565b5f6020820190508181035f83015261377d81613744565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220031b947bad712b7e4232c407cf5d7ac3bd72bc24bc180021bed9bd617e6e93e964736f6c63430008170033
0x6080604052695915a52a4360a6dd44005f196200001d919062000709565b5f196200002b91906200076d565b6006555f6008555f6009555f600a555f600b55600a54600c55600b54600d55600c54600e55600d54600f5573663de0a79cf12802b1026961a8dcbed2515abd0060125f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073663de0a79cf12802b1026961a8dcbed2515abd0060135f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001601560146101000a81548160ff0219169083151502179055505f6015806101000a81548160ff0219169083151502179055506001601560166101000a81548160ff0219169083151502179055506901c75d6ae6e4814000006016556901c75d6ae6e4814000006017556901c75d6ae6e48140000060185534801562000183575f80fd5b505f62000195620006a560201b60201c565b9050805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35060065460025f62000247620006a560201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505f737a250d5630b4cf539739df2c5dacb4c659f2488d90508060145f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000326573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200034c91906200080c565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620003b2573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620003d891906200080c565b6040518363ffffffff1660e01b8152600401620003f79291906200084d565b6020604051808303815f875af115801562000414573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200043a91906200080c565b60155f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160055f6200048e620006ac60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160055f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160055f60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160055f60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506200062e620006a560201b60201c565b73ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef695915a52a4360a6dd440060405162000696919062000889565b60405180910390a350620008a4565b5f33905090565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b5f819050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6200071582620006d3565b91506200072283620006d3565b925082620007355762000734620006dc565b5b828206905092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6200077982620006d3565b91506200078683620006d3565b9250828203905081811115620007a157620007a062000740565b5b92915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f620007d682620007ab565b9050919050565b620007e881620007ca565b8114620007f3575f80fd5b50565b5f815190506200080681620007dd565b92915050565b5f60208284031215620008245762000823620007a7565b5b5f6200083384828501620007f6565b91505092915050565b6200084781620007ca565b82525050565b5f604082019050620008625f8301856200083c565b6200087160208301846200083c565b9392505050565b6200088381620006d3565b82525050565b5f6020820190506200089e5f83018462000878565b92915050565b6137e280620008b25f395ff3fe6080604052600436106101ba575f3560e01c80637f2feddc116100eb578063a9059cbb11610089578063c492f04611610063578063c492f046146105db578063dd62ed3e14610603578063ea1644d51461063f578063f2fde38b14610667576101c1565b8063a9059cbb1461054d578063bfd7928414610589578063c3c8cd80146105c5576101c1565b80638f9a55c0116100c55780638f9a55c0146104a957806395d89b41146104d357806398a5c315146104fd578063a2a957bb14610525576101c1565b80637f2feddc1461041b5780638da5cb5b146104575780638f70ccf714610481576101c1565b806349bd5a5e1161015857806370a082311161013257806370a0823114610377578063715018a6146103b357806374010ece146103c95780637d1db4a5146103f1576101c1565b806349bd5a5e1461030f5780636d8aa8f8146103395780636fc3eaec14610361576101c1565b806318160ddd1161019457806318160ddd1461025557806323b872dd1461027f5780632fd689e3146102bb578063313ce567146102e5576101c1565b806306fdde03146101c5578063095ea7b3146101ef5780631694505e1461022b576101c1565b366101c157005b5f80fd5b3480156101d0575f80fd5b506101d961068f565b6040516101e691906128a7565b60405180910390f35b3480156101fa575f80fd5b506102156004803603810190610210919061295c565b6106cc565b60405161022291906129b4565b60405180910390f35b348015610236575f80fd5b5061023f6106e9565b60405161024c9190612a28565b60405180910390f35b348015610260575f80fd5b5061026961070e565b6040516102769190612a50565b60405180910390f35b34801561028a575f80fd5b506102a560048036038101906102a09190612a69565b61071f565b6040516102b291906129b4565b60405180910390f35b3480156102c6575f80fd5b506102cf6107f3565b6040516102dc9190612a50565b60405180910390f35b3480156102f0575f80fd5b506102f96107f9565b6040516103069190612ad4565b60405180910390f35b34801561031a575f80fd5b50610323610801565b6040516103309190612afc565b60405180910390f35b348015610344575f80fd5b5061035f600480360381019061035a9190612b3f565b610826565b005b34801561036c575f80fd5b506103756108d7565b005b348015610382575f80fd5b5061039d60048036038101906103989190612b6a565b6109a4565b6040516103aa9190612a50565b60405180910390f35b3480156103be575f80fd5b506103c76109f2565b005b3480156103d4575f80fd5b506103ef60048036038101906103ea9190612b95565b610b40565b005b3480156103fc575f80fd5b50610405610bde565b6040516104129190612a50565b60405180910390f35b348015610426575f80fd5b50610441600480360381019061043c9190612b6a565b610be4565b60405161044e9190612a50565b60405180910390f35b348015610462575f80fd5b5061046b610bf9565b6040516104789190612afc565b60405180910390f35b34801561048c575f80fd5b506104a760048036038101906104a29190612b3f565b610c20565b005b3480156104b4575f80fd5b506104bd610cd1565b6040516104ca9190612a50565b60405180910390f35b3480156104de575f80fd5b506104e7610cd7565b6040516104f491906128a7565b60405180910390f35b348015610508575f80fd5b50610523600480360381019061051e9190612b95565b610d14565b005b348015610530575f80fd5b5061054b60048036038101906105469190612bc0565b610db2565b005b348015610558575f80fd5b50610573600480360381019061056e919061295c565b610e68565b60405161058091906129b4565b60405180910390f35b348015610594575f80fd5b506105af60048036038101906105aa9190612b6a565b610e85565b6040516105bc91906129b4565b60405180910390f35b3480156105d0575f80fd5b506105d9610ea2565b005b3480156105e6575f80fd5b5061060160048036038101906105fc9190612c85565b610f77565b005b34801561060e575f80fd5b5061062960048036038101906106249190612ce2565b6110a6565b6040516106369190612a50565b60405180910390f35b34801561064a575f80fd5b5061066560048036038101906106609190612b95565b611128565b005b348015610672575f80fd5b5061068d60048036038101906106889190612b6a565b6111c6565b005b60606040518060400160405280600c81526020017f44756f6c696e676f204f776c0000000000000000000000000000000000000000815250905090565b5f6106df6106d8611383565b848461138a565b6001905092915050565b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f695915a52a4360a6dd4400905090565b5f61072b84848461154d565b6107e884610737611383565b6107e3856040518060600160405280602881526020016137856028913960045f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f61079a611383565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611dad9092919063ffffffff16565b61138a565b600190509392505050565b60185481565b5f6009905090565b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61082e611383565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146108ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108b190612d6a565b60405180910390fd5b80601560166101000a81548160ff02191690831515021790555050565b60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610917611383565b73ffffffffffffffffffffffffffffffffffffffff16148061098c575060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610974611383565b73ffffffffffffffffffffffffffffffffffffffff16145b610994575f80fd5b5f4790506109a181611e0f565b50565b5f6109eb60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611e77565b9050919050565b6109fa611383565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a86576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a7d90612d6a565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610b48611383565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610bd4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bcb90612d6a565b60405180910390fd5b8060168190555050565b60165481565b6011602052805f5260405f205f915090505481565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610c28611383565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610cb4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cab90612d6a565b60405180910390fd5b80601560146101000a81548160ff02191690831515021790555050565b60175481565b60606040518060400160405280600381526020017f44554f0000000000000000000000000000000000000000000000000000000000815250905090565b610d1c611383565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610da8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d9f90612d6a565b60405180910390fd5b8060188190555050565b610dba611383565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e46576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e3d90612d6a565b60405180910390fd5b8360088190555082600a819055508160098190555080600b8190555050505050565b5f610e7b610e74611383565b848461154d565b6001905092915050565b6010602052805f5260405f205f915054906101000a900460ff1681565b60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610ee2611383565b73ffffffffffffffffffffffffffffffffffffffff161480610f57575060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610f3f611383565b73ffffffffffffffffffffffffffffffffffffffff16145b610f5f575f80fd5b5f610f69306109a4565b9050610f7481611ee3565b50565b610f7f611383565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461100b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161100290612d6a565b60405180910390fd5b5f5b838390508110156110a0578160055f86868581811061102f5761102e612d88565b5b90506020020160208101906110449190612b6a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550808060010191505061100d565b50505050565b5f60045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b611130611383565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146111bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111b390612d6a565b60405180910390fd5b8060178190555050565b6111ce611383565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461125a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161125190612d6a565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036112c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112bf90612e25565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036113f8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113ef90612eb3565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611466576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161145d90612f41565b60405180910390fd5b8060045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516115409190612a50565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036115bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115b290612fcf565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611629576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116209061305d565b60405180910390fd5b5f811161166b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611662906130eb565b60405180910390fd5b611673610bf9565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156116e157506116b1610bf9565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611aba57601560149054906101000a900460ff1661177057611702610bf9565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161461176f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161176690613179565b60405180910390fd5b5b6016548111156117b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117ac906131e1565b60405180910390fd5b60105f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015611853575060105f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b611892576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118899061326f565b60405180910390fd5b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161461193e57601754816118f3846109a4565b6118fd91906132ba565b1061193d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119349061335d565b60405180910390fd5b5b5f611948306109a4565b90505f601854821015905060165482106119625760165491505b80801561197a575060158054906101000a900460ff16155b80156119d3575060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b80156119eb5750601560169054906101000a900460ff165b8015611a3e575060055f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015611a91575060055f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611ab757611a9f82611ee3565b5f4790505f811115611ab557611ab447611e0f565b5b505b50505b5f6001905060055f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680611b5a575060055f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b80611c0b575060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611c0a575060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b15611c18575f9050611d9b565b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611cc1575060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611cd957600854600c81905550600954600d819055505b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611d82575060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15611d9a57600a54600c81905550600b54600d819055505b5b611da78484848461214c565b50505050565b5f838311158290611df4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611deb91906128a7565b60405180910390fd5b505f8385611e02919061337b565b9050809150509392505050565b60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015611e73573d5f803e3d5ffd5b5050565b5f600654821115611ebd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611eb49061341e565b60405180910390fd5b5f611ec661216b565b9050611edb818461219490919063ffffffff16565b915050919050565b60016015806101000a81548160ff0219169083151502179055505f600267ffffffffffffffff811115611f1957611f1861343c565b5b604051908082528060200260200182016040528015611f475781602001602082028036833780820191505090505b50905030815f81518110611f5e57611f5d612d88565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612002573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612026919061347d565b8160018151811061203a57612039612d88565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506120a03060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff168461138a565b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b8152600401612102959493929190613598565b5f604051808303815f87803b158015612119575f80fd5b505af115801561212b573d5f803e3d5ffd5b50505050505f6015806101000a81548160ff02191690831515021790555050565b8061215a576121596121dd565b5b612165848484612216565b50505050565b5f805f6121766123d6565b9150915061218d818361219490919063ffffffff16565b9250505090565b5f6121d583836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612438565b905092915050565b5f600c541480156121ef57505f600d54145b61221457600c54600e81905550600d54600f819055505f600c819055505f600d819055505b565b5f805f805f8061222587612499565b9550955095509550955095506122818660025f8c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546124f990919063ffffffff16565b60025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506123128560025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461254290919063ffffffff16565b60025f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555061235c8161259f565b6123668483612656565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516123c39190612a50565b60405180910390a3505050505050505050565b5f805f60065490505f695915a52a4360a6dd4400905061240b695915a52a4360a6dd440060065461219490919063ffffffff16565b82101561242b57600654695915a52a4360a6dd4400935093505050612434565b81819350935050505b9091565b5f808311829061247e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161247591906128a7565b60405180910390fd5b505f838561248c919061361d565b9050809150509392505050565b5f805f805f805f805f6124b18a600c54600d54612690565b9250925092505f6124c061216b565b90505f805f6124d18e878787612722565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b5f61253a83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611dad565b905092915050565b5f80828461255091906132ba565b905083811015612595576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161258c90613697565b60405180910390fd5b8091505092915050565b5f6125a861216b565b90505f6125be82846127a690919063ffffffff16565b90506126108160025f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461254290919063ffffffff16565b60025f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505050565b61266b826006546124f990919063ffffffff16565b6006819055506126868160075461254290919063ffffffff16565b6007819055505050565b5f805f806126ba60646126ac888a6127a690919063ffffffff16565b61219490919063ffffffff16565b90505f6126e360646126d5888b6127a690919063ffffffff16565b61219490919063ffffffff16565b90505f61270b826126fd858c6124f990919063ffffffff16565b6124f990919063ffffffff16565b905080838395509550955050505093509350939050565b5f805f8061273985896127a690919063ffffffff16565b90505f61274f86896127a690919063ffffffff16565b90505f61276587896127a690919063ffffffff16565b90505f61278d8261277f85876124f990919063ffffffff16565b6124f990919063ffffffff16565b9050838184965096509650505050509450945094915050565b5f8083036127b6575f9050612817565b5f82846127c391906136b5565b90508284826127d2919061361d565b14612812576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161280990613766565b60405180910390fd5b809150505b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015612854578082015181840152602081019050612839565b5f8484015250505050565b5f601f19601f8301169050919050565b5f6128798261281d565b6128838185612827565b9350612893818560208601612837565b61289c8161285f565b840191505092915050565b5f6020820190508181035f8301526128bf818461286f565b905092915050565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6128f8826128cf565b9050919050565b612908816128ee565b8114612912575f80fd5b50565b5f81359050612923816128ff565b92915050565b5f819050919050565b61293b81612929565b8114612945575f80fd5b50565b5f8135905061295681612932565b92915050565b5f8060408385031215612972576129716128c7565b5b5f61297f85828601612915565b925050602061299085828601612948565b9150509250929050565b5f8115159050919050565b6129ae8161299a565b82525050565b5f6020820190506129c75f8301846129a5565b92915050565b5f819050919050565b5f6129f06129eb6129e6846128cf565b6129cd565b6128cf565b9050919050565b5f612a01826129d6565b9050919050565b5f612a12826129f7565b9050919050565b612a2281612a08565b82525050565b5f602082019050612a3b5f830184612a19565b92915050565b612a4a81612929565b82525050565b5f602082019050612a635f830184612a41565b92915050565b5f805f60608486031215612a8057612a7f6128c7565b5b5f612a8d86828701612915565b9350506020612a9e86828701612915565b9250506040612aaf86828701612948565b9150509250925092565b5f60ff82169050919050565b612ace81612ab9565b82525050565b5f602082019050612ae75f830184612ac5565b92915050565b612af6816128ee565b82525050565b5f602082019050612b0f5f830184612aed565b92915050565b612b1e8161299a565b8114612b28575f80fd5b50565b5f81359050612b3981612b15565b92915050565b5f60208284031215612b5457612b536128c7565b5b5f612b6184828501612b2b565b91505092915050565b5f60208284031215612b7f57612b7e6128c7565b5b5f612b8c84828501612915565b91505092915050565b5f60208284031215612baa57612ba96128c7565b5b5f612bb784828501612948565b91505092915050565b5f805f8060808587031215612bd857612bd76128c7565b5b5f612be587828801612948565b9450506020612bf687828801612948565b9350506040612c0787828801612948565b9250506060612c1887828801612948565b91505092959194509250565b5f80fd5b5f80fd5b5f80fd5b5f8083601f840112612c4557612c44612c24565b5b8235905067ffffffffffffffff811115612c6257612c61612c28565b5b602083019150836020820283011115612c7e57612c7d612c2c565b5b9250929050565b5f805f60408486031215612c9c57612c9b6128c7565b5b5f84013567ffffffffffffffff811115612cb957612cb86128cb565b5b612cc586828701612c30565b93509350506020612cd886828701612b2b565b9150509250925092565b5f8060408385031215612cf857612cf76128c7565b5b5f612d0585828601612915565b9250506020612d1685828601612915565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f612d54602083612827565b9150612d5f82612d20565b602082019050919050565b5f6020820190508181035f830152612d8181612d48565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f612e0f602683612827565b9150612e1a82612db5565b604082019050919050565b5f6020820190508181035f830152612e3c81612e03565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f612e9d602483612827565b9150612ea882612e43565b604082019050919050565b5f6020820190508181035f830152612eca81612e91565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f612f2b602283612827565b9150612f3682612ed1565b604082019050919050565b5f6020820190508181035f830152612f5881612f1f565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f612fb9602583612827565b9150612fc482612f5f565b604082019050919050565b5f6020820190508181035f830152612fe681612fad565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f613047602383612827565b915061305282612fed565b604082019050919050565b5f6020820190508181035f8301526130748161303b565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f6130d5602983612827565b91506130e08261307b565b604082019050919050565b5f6020820190508181035f830152613102816130c9565b9050919050565b7f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e64205f8201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400602082015250565b5f613163603f83612827565b915061316e82613109565b604082019050919050565b5f6020820190508181035f83015261319081613157565b9050919050565b7f544f4b454e3a204d6178205472616e73616374696f6e204c696d6974000000005f82015250565b5f6131cb601c83612827565b91506131d682613197565b602082019050919050565b5f6020820190508181035f8301526131f8816131bf565b9050919050565b7f544f4b454e3a20596f7572206163636f756e7420697320626c61636b6c6973745f8201527f6564210000000000000000000000000000000000000000000000000000000000602082015250565b5f613259602383612827565b9150613264826131ff565b604082019050919050565b5f6020820190508181035f8301526132868161324d565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6132c482612929565b91506132cf83612929565b92508282019050808211156132e7576132e661328d565b5b92915050565b7f544f4b454e3a2042616c616e636520657863656564732077616c6c65742073695f8201527f7a65210000000000000000000000000000000000000000000000000000000000602082015250565b5f613347602383612827565b9150613352826132ed565b604082019050919050565b5f6020820190508181035f8301526133748161333b565b9050919050565b5f61338582612929565b915061339083612929565b92508282039050818111156133a8576133a761328d565b5b92915050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c20725f8201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b5f613408602a83612827565b9150613413826133ae565b604082019050919050565b5f6020820190508181035f830152613435816133fc565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f81519050613477816128ff565b92915050565b5f60208284031215613492576134916128c7565b5b5f61349f84828501613469565b91505092915050565b5f819050919050565b5f6134cb6134c66134c1846134a8565b6129cd565b612929565b9050919050565b6134db816134b1565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b613513816128ee565b82525050565b5f613524838361350a565b60208301905092915050565b5f602082019050919050565b5f613546826134e1565b61355081856134eb565b935061355b836134fb565b805f5b8381101561358b5781516135728882613519565b975061357d83613530565b92505060018101905061355e565b5085935050505092915050565b5f60a0820190506135ab5f830188612a41565b6135b860208301876134d2565b81810360408301526135ca818661353c565b90506135d96060830185612aed565b6135e66080830184612a41565b9695505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61362782612929565b915061363283612929565b925082613642576136416135f0565b5b828204905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f613681601b83612827565b915061368c8261364d565b602082019050919050565b5f6020820190508181035f8301526136ae81613675565b9050919050565b5f6136bf82612929565b91506136ca83612929565b92508282026136d881612929565b915082820484148315176136ef576136ee61328d565b5b5092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f613750602183612827565b915061375b826136f6565b604082019050919050565b5f6020820190508181035f83015261377d81613744565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220031b947bad712b7e4232c407cf5d7ac3bd72bc24bc180021bed9bd617e6e93e964736f6c63430008170033