60806040525f600955348015610013575f80fd5b50604051614507380380614507833981810160405281019061003591906106b6565b6040518060400160405280600681526020017f53616e646f7200000000000000000000000000000000000000000000000000008152506040518060400160405280600681526020017f53414e444f5200000000000000000000000000000000000000000000000000008152506100bd6100b26100f560201b60201c565b6100fc60201b60201c565b81600490816100cc9190610912565b5080600590816100dc9190610912565b5050506100ef33826101bd60201b60201c565b50610c19565b5f33905090565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361022b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161022290610a3b565b60405180910390fd5b61023c5f838361032160201b60201c565b8060035f82825461024d9190610a86565b925050819055508060015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546102a09190610a86565b925050819055508173ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516103049190610ac8565b60405180910390a361031d5f838361060d60201b60201c565b5050565b600b5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff161580156103bf5750600b5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b6103fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103f590610b2b565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff16600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16036105155761046061061260201b60201c565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614806104d157506104a261061260201b60201c565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b610510576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161050790610b93565b60405180910390fd5b610608565b60065f9054906101000a900460ff16801561057c5750600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b1561060757600754816105948461063960201b60201c565b61059e9190610a86565b111580156105c75750600854816105ba8461063960201b60201c565b6105c49190610a86565b10155b610606576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105fd90610bfb565b60405180910390fd5b5b5b505050565b505050565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b5f80fd5b5f819050919050565b61069581610683565b811461069f575f80fd5b50565b5f815190506106b08161068c565b92915050565b5f602082840312156106cb576106ca61067f565b5b5f6106d8848285016106a2565b91505092915050565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061075c57607f821691505b60208210810361076f5761076e610718565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f600883026107d17fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82610796565b6107db8683610796565b95508019841693508086168417925050509392505050565b5f819050919050565b5f61081661081161080c84610683565b6107f3565b610683565b9050919050565b5f819050919050565b61082f836107fc565b61084361083b8261081d565b8484546107a2565b825550505050565b5f90565b61085761084b565b610862818484610826565b505050565b5b818110156108855761087a5f8261084f565b600181019050610868565b5050565b601f8211156108ca5761089b81610775565b6108a484610787565b810160208510156108b3578190505b6108c76108bf85610787565b830182610867565b50505b505050565b5f82821c905092915050565b5f6108ea5f19846008026108cf565b1980831691505092915050565b5f61090283836108db565b9150826002028217905092915050565b61091b826106e1565b67ffffffffffffffff811115610934576109336106eb565b5b61093e8254610745565b610949828285610889565b5f60209050601f83116001811461097a575f8415610968578287015190505b61097285826108f7565b8655506109d9565b601f19841661098886610775565b5f5b828110156109af5784890151825560018201915060208501945060208101905061098a565b868310156109cc57848901516109c8601f8916826108db565b8355505b6001600288020188555050505b505050505050565b5f82825260208201905092915050565b7f45524332303a206d696e7420746f20746865207a65726f2061646472657373005f82015250565b5f610a25601f836109e1565b9150610a30826109f1565b602082019050919050565b5f6020820190508181035f830152610a5281610a19565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f610a9082610683565b9150610a9b83610683565b9250828201905080821115610ab357610ab2610a59565b5b92915050565b610ac281610683565b82525050565b5f602082019050610adb5f830184610ab9565b92915050565b7f426c61636b6c69737465640000000000000000000000000000000000000000005f82015250565b5f610b15600b836109e1565b9150610b2082610ae1565b602082019050919050565b5f6020820190508181035f830152610b4281610b09565b9050919050565b7f6c61756e6368206973206e6f74207374617274656400000000000000000000005f82015250565b5f610b7d6015836109e1565b9150610b8882610b49565b602082019050919050565b5f6020820190508181035f830152610baa81610b71565b9050919050565b7f5377617070696e670000000000000000000000000000000000000000000000005f82015250565b5f610be56008836109e1565b9150610bf082610bb1565b602082019050919050565b5f6020820190508181035f830152610c1281610bd9565b9050919050565b6138e180610c265f395ff3fe608060405234801561000f575f80fd5b50600436106101e3575f3560e01c806370a082311161010d578063a457c2d7116100a0578063e424c3851161006f578063e424c3851461057d578063ec3d826d14610599578063f2fde38b146105b7578063fe575a87146105d3576101e3565b8063a457c2d7146104d1578063a9059cbb14610501578063dc5541fd14610531578063dd62ed3e1461054d576101e3565b80638da5cb5b116100dc5780638da5cb5b1461045d57806395d89b411461047b5780639cfe42da14610499578063a2240e19146104b5576101e3565b806370a08231146103eb578063715018a61461041b57806380c581d1146104255780638969a1d614610441576101e3565b80632b112e49116101855780633f7c4267116101545780633f7c42671461036357806342966c681461039357806344c05215146103af57806349bd5a5e146103cd576101e3565b80632b112e49146102d9578063313ce567146102f757806337dac0eb146103155780633950935114610333576101e3565b806318160ddd116101c157806318160ddd146102535780631ca59b3f1461027157806321abbc1f1461028d57806323b872dd146102a9576101e3565b806303fd2a45146101e757806306fdde0314610205578063095ea7b314610223575b5f80fd5b6101ef610603565b6040516101fc919061258c565b60405180910390f35b61020d610609565b60405161021a9190612615565b60405180910390f35b61023d600480360381019061023891906126a3565b610699565b60405161024a91906126fb565b60405180910390f35b61025b6106b6565b6040516102689190612723565b60405180910390f35b61028b6004803603810190610286919061293c565b6106bf565b005b6102a760048036038101906102a291906129b2565b61097f565b005b6102c360048036038101906102be91906129dd565b610a70565b6040516102d091906126fb565b60405180910390f35b6102e1610b62565b6040516102ee9190612723565b60405180910390f35b6102ff610b98565b60405161030c9190612a48565b60405180910390f35b61031d610ba0565b60405161032a9190612723565b60405180910390f35b61034d600480360381019061034891906126a3565b610ba6565b60405161035a91906126fb565b60405180910390f35b61037d600480360381019061037891906129b2565b610c4d565b60405161038a91906126fb565b60405180910390f35b6103ad60048036038101906103a89190612a61565b610c6a565b005b6103b7610c77565b6040516103c491906126fb565b60405180910390f35b6103d5610c89565b6040516103e2919061258c565b60405180910390f35b610405600480360381019061040091906129b2565b610cae565b6040516104129190612723565b60405180910390f35b610423610cf4565b005b61043f600480360381019061043a9190612ab6565b610d7b565b005b61045b60048036038101906104569190612af4565b6110af565b005b610465611295565b604051610472919061258c565b60405180910390f35b6104836112bc565b6040516104909190612615565b60405180910390f35b6104b360048036038101906104ae91906129b2565b61134c565b005b6104cf60048036038101906104ca9190612b32565b611537565b005b6104eb60048036038101906104e691906126a3565b611714565b6040516104f891906126fb565b60405180910390f35b61051b600480360381019061051691906126a3565b6117fa565b60405161052891906126fb565b60405180910390f35b61054b60048036038101906105469190612b70565b611817565b005b61056760048036038101906105629190612af4565b611900565b6040516105749190612723565b60405180910390f35b610597600480360381019061059291906129b2565b611982565b005b6105a1611a55565b6040516105ae9190612723565b60405180910390f35b6105d160048036038101906105cc91906129b2565b611a5b565b005b6105ed60048036038101906105e891906129b2565b611b51565b6040516105fa91906126fb565b60405180910390f35b61dead81565b60606004805461061890612c01565b80601f016020809104026020016040519081016040528092919081815260200182805461064490612c01565b801561068f5780601f106106665761010080835404028352916020019161068f565b820191905f5260205f20905b81548152906001019060200180831161067257829003601f168201915b5050505050905090565b5f6106ac6106a5611ba3565b8484611baa565b6001905092915050565b5f600354905090565b6106c7611ba3565b73ffffffffffffffffffffffffffffffffffffffff166106e5611295565b73ffffffffffffffffffffffffffffffffffffffff161461073b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161073290612c7b565b60405180910390fd5b5f5b825181101561097a5781818151811061075957610758612c99565b5b6020026020010151600d5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205410156107e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107d790612d36565b60405180910390fd5b8181815181106107f3576107f2612c99565b5b6020026020010151600d5f85848151811061081157610810612c99565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546108609190612d81565b9250508190555081818151811061087a57610879612c99565b5b6020026020010151600d5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546108cd9190612db4565b925050819055508281815181106108e7576108e6612c99565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8484815181106109505761094f612c99565b5b60200260200101516040516109659190612723565b60405180910390a3808060010191505061073d565b505050565b610987611ba3565b73ffffffffffffffffffffffffffffffffffffffff166109a5611295565b73ffffffffffffffffffffffffffffffffffffffff16146109fb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109f290612c7b565b60405180910390fd5b5f8173ffffffffffffffffffffffffffffffffffffffff1647604051610a2090612e14565b5f6040518083038185875af1925050503d805f8114610a5a576040519150601f19603f3d011682016040523d82523d5f602084013e610a5f565b606091505b5050905080610a6c575f80fd5b5050565b5f610a7c848484611d6d565b5f60025f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f610ac3611ba3565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905082811015610b42576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b3990612e98565b60405180910390fd5b610b5685610b4e611ba3565b858403611baa565b60019150509392505050565b5f610b6c5f610cae565b610b7761dead610cae565b610b819190612d81565b610b896106b6565b610b939190612db4565b905090565b5f6012905090565b60075481565b5f610c43610bb2611ba3565b848460025f610bbf611ba3565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054610c3e9190612d81565b611baa565b6001905092915050565b600b602052805f5260405f205f915054906101000a900460ff1681565b610c743382611fe5565b50565b60065f9054906101000a900460ff1681565b600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610cfc611ba3565b73ffffffffffffffffffffffffffffffffffffffff16610d1a611295565b73ffffffffffffffffffffffffffffffffffffffff1614610d70576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d6790612c7b565b60405180910390fd5b610d795f6121b3565b565b610d83611ba3565b73ffffffffffffffffffffffffffffffffffffffff16610da1611295565b73ffffffffffffffffffffffffffffffffffffffff1614610df7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dee90612c7b565b60405180910390fd5b80610ede575f600c5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166380c581d1835f6040518363ffffffff1660e01b8152600401610eac929190612eb6565b5f604051808303815f87803b158015610ec3575f80fd5b505af1158015610ed5573d5f803e3d5ffd5b505050506110ab565b5f60095414610f3a576203f48060095442610ef99190612db4565b11610f39576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f3090612f27565b60405180910390fd5b5b600c5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615610fc4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fbb90612f8f565b60405180910390fd5b6001600c5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555042600981905550600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166380c581d18360016040518363ffffffff1660e01b815260040161107d929190612eb6565b5f604051808303815f87803b158015611094575f80fd5b505af11580156110a6573d5f803e3d5ffd5b505050505b5050565b6110b7611ba3565b73ffffffffffffffffffffffffffffffffffffffff166110d5611295565b73ffffffffffffffffffffffffffffffffffffffff161461112b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161112290612c7b565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611199576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161119090612ff7565b60405180910390fd5b5f8273ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016111d3919061258c565b602060405180830381865afa1580156111ee573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112129190613029565b90508273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b815260040161124f929190613054565b6020604051808303815f875af115801561126b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061128f919061308f565b50505050565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600580546112cb90612c01565b80601f01602080910402602001604051908101604052809291908181526020018280546112f790612c01565b80156113425780601f1061131957610100808354040283529160200191611342565b820191905f5260205f20905b81548152906001019060200180831161132557829003601f168201915b5050505050905090565b611354611ba3565b73ffffffffffffffffffffffffffffffffffffffff16611372611295565b73ffffffffffffffffffffffffffffffffffffffff16146113c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113bf90612c7b565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611436576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161142d90613104565b60405180910390fd5b600b5f8273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16156114de575f600b5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550611534565b6001600b5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505b50565b61153f611ba3565b73ffffffffffffffffffffffffffffffffffffffff1661155d611295565b73ffffffffffffffffffffffffffffffffffffffff16146115b3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115aa90612c7b565b60405180910390fd5b670de0b6b3a76400006103e860026115c96106b6565b6115d39190613122565b6115dd9190613190565b6115e79190613190565b821015611629576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161162090613230565b60405180910390fd5b670de0b6b3a7640000612710600561163f6106b6565b6116499190613122565b6116539190613190565b61165d9190613190565b81101561169f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611696906132be565b60405180910390fd5b670de0b6b3a7640000826116b39190613122565b600781905550670de0b6b3a7640000816116cd9190613122565b6008819055507fd452663e896bdf1dc757ca7ebc64f0e3d19787cf4797e2bd4b822e1e0c6307326007546008546040516117089291906132dc565b60405180910390a15050565b5f8060025f611721611ba3565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050828110156117db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117d290613373565b60405180910390fd5b6117ef6117e6611ba3565b85858403611baa565b600191505092915050565b5f61180d611806611ba3565b8484611d6d565b6001905092915050565b61181f611ba3565b73ffffffffffffffffffffffffffffffffffffffff1661183d611295565b73ffffffffffffffffffffffffffffffffffffffff1614611893576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161188a90612c7b565b60405180910390fd5b8360065f6101000a81548160ff02191690831515021790555082600a5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550816007819055508060088190555050505050565b5f60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b61198a611ba3565b73ffffffffffffffffffffffffffffffffffffffff166119a8611295565b73ffffffffffffffffffffffffffffffffffffffff16146119fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119f590612c7b565b60405180910390fd5b5f600b5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555050565b60085481565b611a63611ba3565b73ffffffffffffffffffffffffffffffffffffffff16611a81611295565b73ffffffffffffffffffffffffffffffffffffffff1614611ad7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ace90612c7b565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611b45576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b3c90613401565b60405180910390fd5b611b4e816121b3565b50565b5f600b5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611c18576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c0f9061348f565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611c86576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c7d9061351d565b60405180910390fd5b8060025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611d609190612723565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611ddb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dd2906135ab565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611e49576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e4090613639565b60405180910390fd5b611e54838383612274565b5f60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015611ed8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ecf90612d36565b60405180910390fd5b81810360015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508160015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254611f689190612d81565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611fcc9190612723565b60405180910390a3611fdf848484612548565b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612053576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161204a906136c7565b60405180910390fd5b61205e825f83612274565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050818110156120e2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120d990613755565b60405180910390fd5b81810360015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508160035f8282546121379190612db4565b925050819055505f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161219b9190612723565b60405180910390a36121ae835f84612548565b505050565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600b5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff161580156123125750600b5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b612351576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612348906137bd565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff16600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff160361245c576123ad611295565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148061241857506123e9611295565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b612457576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161244e90613825565b60405180910390fd5b612543565b60065f9054906101000a900460ff1680156124c35750600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b1561254257600754816124d584610cae565b6124df9190612d81565b111580156125025750600854816124f584610cae565b6124ff9190612d81565b10155b612541576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125389061388d565b60405180910390fd5b5b5b505050565b505050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6125768261254d565b9050919050565b6125868161256c565b82525050565b5f60208201905061259f5f83018461257d565b92915050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f6125e7826125a5565b6125f181856125af565b93506126018185602086016125bf565b61260a816125cd565b840191505092915050565b5f6020820190508181035f83015261262d81846125dd565b905092915050565b5f604051905090565b5f80fd5b5f80fd5b61264f8161256c565b8114612659575f80fd5b50565b5f8135905061266a81612646565b92915050565b5f819050919050565b61268281612670565b811461268c575f80fd5b50565b5f8135905061269d81612679565b92915050565b5f80604083850312156126b9576126b861263e565b5b5f6126c68582860161265c565b92505060206126d78582860161268f565b9150509250929050565b5f8115159050919050565b6126f5816126e1565b82525050565b5f60208201905061270e5f8301846126ec565b92915050565b61271d81612670565b82525050565b5f6020820190506127365f830184612714565b92915050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b612776826125cd565b810181811067ffffffffffffffff8211171561279557612794612740565b5b80604052505050565b5f6127a7612635565b90506127b3828261276d565b919050565b5f67ffffffffffffffff8211156127d2576127d1612740565b5b602082029050602081019050919050565b5f80fd5b5f6127f96127f4846127b8565b61279e565b9050808382526020820190506020840283018581111561281c5761281b6127e3565b5b835b818110156128455780612831888261265c565b84526020840193505060208101905061281e565b5050509392505050565b5f82601f8301126128635761286261273c565b5b81356128738482602086016127e7565b91505092915050565b5f67ffffffffffffffff82111561289657612895612740565b5b602082029050602081019050919050565b5f6128b96128b48461287c565b61279e565b905080838252602082019050602084028301858111156128dc576128db6127e3565b5b835b8181101561290557806128f1888261268f565b8452602084019350506020810190506128de565b5050509392505050565b5f82601f8301126129235761292261273c565b5b81356129338482602086016128a7565b91505092915050565b5f80604083850312156129525761295161263e565b5b5f83013567ffffffffffffffff81111561296f5761296e612642565b5b61297b8582860161284f565b925050602083013567ffffffffffffffff81111561299c5761299b612642565b5b6129a88582860161290f565b9150509250929050565b5f602082840312156129c7576129c661263e565b5b5f6129d48482850161265c565b91505092915050565b5f805f606084860312156129f4576129f361263e565b5b5f612a018682870161265c565b9350506020612a128682870161265c565b9250506040612a238682870161268f565b9150509250925092565b5f60ff82169050919050565b612a4281612a2d565b82525050565b5f602082019050612a5b5f830184612a39565b92915050565b5f60208284031215612a7657612a7561263e565b5b5f612a838482850161268f565b91505092915050565b612a95816126e1565b8114612a9f575f80fd5b50565b5f81359050612ab081612a8c565b92915050565b5f8060408385031215612acc57612acb61263e565b5b5f612ad98582860161265c565b9250506020612aea85828601612aa2565b9150509250929050565b5f8060408385031215612b0a57612b0961263e565b5b5f612b178582860161265c565b9250506020612b288582860161265c565b9150509250929050565b5f8060408385031215612b4857612b4761263e565b5b5f612b558582860161268f565b9250506020612b668582860161268f565b9150509250929050565b5f805f8060808587031215612b8857612b8761263e565b5b5f612b9587828801612aa2565b9450506020612ba68782880161265c565b9350506040612bb78782880161268f565b9250506060612bc88782880161268f565b91505092959194509250565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680612c1857607f821691505b602082108103612c2b57612c2a612bd4565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f612c656020836125af565b9150612c7082612c31565b602082019050919050565b5f6020820190508181035f830152612c9281612c59565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f45524332303a207472616e7366657220616d6f756e74206578636565647320625f8201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b5f612d206026836125af565b9150612d2b82612cc6565b604082019050919050565b5f6020820190508181035f830152612d4d81612d14565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f612d8b82612670565b9150612d9683612670565b9250828201905080821115612dae57612dad612d54565b5b92915050565b5f612dbe82612670565b9150612dc983612670565b9250828203905081811115612de157612de0612d54565b5b92915050565b5f81905092915050565b50565b5f612dff5f83612de7565b9150612e0a82612df1565b5f82019050919050565b5f612e1e82612df4565b9150819050919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320615f8201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b5f612e826028836125af565b9150612e8d82612e28565b604082019050919050565b5f6020820190508181035f830152612eaf81612e76565b9050919050565b5f604082019050612ec95f83018561257d565b612ed660208301846126ec565b9392505050565b7f332044617920636f6f6c646f776e2e00000000000000000000000000000000005f82015250565b5f612f11600f836125af565b9150612f1c82612edd565b602082019050919050565b5f6020820190508181035f830152612f3e81612f05565b9050919050565b7f5061697220616c726561647920616464656420746f206c6973742e00000000005f82015250565b5f612f79601b836125af565b9150612f8482612f45565b602082019050919050565b5f6020820190508181035f830152612fa681612f6d565b9050919050565b7f5f746f6b656e20616464726573732063616e6e6f7420626520300000000000005f82015250565b5f612fe1601a836125af565b9150612fec82612fad565b602082019050919050565b5f6020820190508181035f83015261300e81612fd5565b9050919050565b5f8151905061302381612679565b92915050565b5f6020828403121561303e5761303d61263e565b5b5f61304b84828501613015565b91505092915050565b5f6040820190506130675f83018561257d565b6130746020830184612714565b9392505050565b5f8151905061308981612a8c565b92915050565b5f602082840312156130a4576130a361263e565b5b5f6130b18482850161307b565b91505092915050565b7f41646472657373206973206e6f742076616c69640000000000000000000000005f82015250565b5f6130ee6014836125af565b91506130f9826130ba565b602082019050919050565b5f6020820190508181035f83015261311b816130e2565b9050919050565b5f61312c82612670565b915061313783612670565b925082820261314581612670565b9150828204841483151761315c5761315b612d54565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61319a82612670565b91506131a583612670565b9250826131b5576131b4613163565b5b828204905092915050565b7f43616e6e6f7420736574206d617820686f6c6420616d6f756e74206c6f7765725f8201527f207468616e20302e322500000000000000000000000000000000000000000000602082015250565b5f61321a602a836125af565b9150613225826131c0565b604082019050919050565b5f6020820190508181035f8301526132478161320e565b9050919050565b7f43616e6e6f7420736574206d61782062757920616d6f756e74206c6f776572205f8201527f7468616e20302e32250000000000000000000000000000000000000000000000602082015250565b5f6132a86029836125af565b91506132b38261324e565b604082019050919050565b5f6020820190508181035f8301526132d58161329c565b9050919050565b5f6040820190506132ef5f830185612714565b6132fc6020830184612714565b9392505050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f775f8201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b5f61335d6025836125af565b915061336882613303565b604082019050919050565b5f6020820190508181035f83015261338a81613351565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f6133eb6026836125af565b91506133f682613391565b604082019050919050565b5f6020820190508181035f830152613418816133df565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f6134796024836125af565b91506134848261341f565b604082019050919050565b5f6020820190508181035f8301526134a68161346d565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f6135076022836125af565b9150613512826134ad565b604082019050919050565b5f6020820190508181035f830152613534816134fb565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f6135956025836125af565b91506135a08261353b565b604082019050919050565b5f6020820190508181035f8301526135c281613589565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f6136236023836125af565b915061362e826135c9565b604082019050919050565b5f6020820190508181035f83015261365081613617565b9050919050565b7f45524332303a206275726e2066726f6d20746865207a65726f206164647265735f8201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b5f6136b16021836125af565b91506136bc82613657565b604082019050919050565b5f6020820190508181035f8301526136de816136a5565b9050919050565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e5f8201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b5f61373f6022836125af565b915061374a826136e5565b604082019050919050565b5f6020820190508181035f83015261376c81613733565b9050919050565b7f426c61636b6c69737465640000000000000000000000000000000000000000005f82015250565b5f6137a7600b836125af565b91506137b282613773565b602082019050919050565b5f6020820190508181035f8301526137d48161379b565b9050919050565b7f6c61756e6368206973206e6f74207374617274656400000000000000000000005f82015250565b5f61380f6015836125af565b915061381a826137db565b602082019050919050565b5f6020820190508181035f83015261383c81613803565b9050919050565b7f5377617070696e670000000000000000000000000000000000000000000000005f82015250565b5f6138776008836125af565b915061388282613843565b602082019050919050565b5f6020820190508181035f8301526138a48161386b565b905091905056fea264697066735822122036d0afaeca1a4cfd19238e61646bba8781566f7feeaf3516470d7e6dafaf1b8264736f6c6343000819003300000000000000000000000000000000000000054f529ca52576bc6892000000