60806040526009600155600154600a6200001a91906200053c565b64174876e8006200002c91906200058c565b6002556040518060400160405280600a81526020017f436c6f776e2050657065000000000000000000000000000000000000000000008152506003908162000075919062000831565b506040518060400160405280600481526020017f484f4e4b0000000000000000000000000000000000000000000000000000000081525060049081620000bc919062000831565b507354a1b595444d34ca55ce33e89ff6eab3905c212460075f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600760146101000a81548160ff021916908315150217905550737a250d5630b4cf539739df2c5dacb4c659f2488d60095f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503480156200018c575f80fd5b50335f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a362000255620003af60201b60201c565b600b5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060025460065f620002aa620003af60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550620002f7620003af60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60065f62000358620003af60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054604051620003a1919062000926565b60405180910390a362000941565b5f33905090565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b60018511156200044057808604811115620004185762000417620003b6565b5b6001851615620004285780820291505b80810290506200043885620003e3565b9450620003f8565b94509492505050565b5f826200045a57600190506200052c565b8162000469575f90506200052c565b81600181146200048257600281146200048d57620004c3565b60019150506200052c565b60ff841115620004a257620004a1620003b6565b5b8360020a915084821115620004bc57620004bb620003b6565b5b506200052c565b5060208310610133831016604e8410600b8410161715620004fd5782820a905083811115620004f757620004f6620003b6565b5b6200052c565b6200050c8484846001620003ef565b92509050818404811115620005265762000525620003b6565b5b81810290505b9392505050565b5f819050919050565b5f620005488262000533565b9150620005558362000533565b9250620005847fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000449565b905092915050565b5f620005988262000533565b9150620005a58362000533565b9250828202620005b58162000533565b91508282048414831517620005cf57620005ce620003b6565b5b5092915050565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806200065257607f821691505b6020821081036200066857620006676200060d565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f60088302620006cc7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826200068f565b620006d886836200068f565b95508019841693508086168417925050509392505050565b5f819050919050565b5f62000719620007136200070d8462000533565b620006f0565b62000533565b9050919050565b5f819050919050565b6200073483620006f9565b6200074c620007438262000720565b8484546200069b565b825550505050565b5f90565b6200076262000754565b6200076f81848462000729565b505050565b5b8181101562000796576200078a5f8262000758565b60018101905062000775565b5050565b601f821115620007e557620007af816200066e565b620007ba8462000680565b81016020851015620007ca578190505b620007e2620007d98562000680565b83018262000774565b50505b505050565b5f82821c905092915050565b5f620008075f1984600802620007ea565b1980831691505092915050565b5f620008218383620007f6565b9150826002028217905092915050565b6200083c82620005d6565b67ffffffffffffffff811115620008585762000857620005e0565b5b6200086482546200063a565b620008718282856200079a565b5f60209050601f831160018114620008a7575f841562000892578287015190505b6200089e858262000814565b8655506200090d565b601f198416620008b7866200066e565b5f5b82811015620008e057848901518255600182019150602085019450602081019050620008b9565b86831015620009005784890151620008fc601f891682620007f6565b8355505b6001600288020188555050505b505050505050565b620009208162000533565b82525050565b5f6020820190506200093b5f83018462000915565b92915050565b611d01806200094f5f395ff3fe608060405234801561000f575f80fd5b5060043610610114575f3560e01c806370a08231116100a05780638da5cb5b1161006f5780638da5cb5b146102bc57806395d89b41146102da578063a457c2d7146102f8578063a9059cbb14610328578063dd62ed3e1461035857610114565b806370a082311461025a578063715018a61461028a578063751039fc1461029457806375f0a8741461029e57610114565b8063313ce567116100e7578063313ce567146101b457806331d77f3d146101d257806332424aa3146101ee578063395093511461020c5780633eaaf86b1461023c57610114565b806306fdde0314610118578063095ea7b31461013657806318160ddd1461016657806323b872dd14610184575b5f80fd5b610120610388565b60405161012d919061140f565b60405180910390f35b610150600480360381019061014b91906114c0565b610418565b60405161015d9190611518565b60405180910390f35b61016e61042e565b60405161017b9190611540565b60405180910390f35b61019e60048036038101906101999190611559565b610437565b6040516101ab9190611518565b60405180910390f35b6101bc6104d9565b6040516101c99190611540565b60405180910390f35b6101ec60048036038101906101e791906115a9565b6104e2565b005b6101f66107a4565b6040516102039190611540565b60405180910390f35b610226600480360381019061022191906114c0565b6107aa565b6040516102339190611518565b60405180910390f35b61024461084a565b6040516102519190611540565b60405180910390f35b610274600480360381019061026f91906115d4565b610850565b6040516102819190611540565b60405180910390f35b610292610896565b005b61029c6109c5565b005b6102a6610a56565b6040516102b3919061160e565b60405180910390f35b6102c4610a7b565b6040516102d1919061160e565b60405180910390f35b6102e2610aa2565b6040516102ef919061140f565b60405180910390f35b610312600480360381019061030d91906114c0565b610b32565b60405161031f9190611518565b60405180910390f35b610342600480360381019061033d91906114c0565b610c56565b60405161034f9190611518565b60405180910390f35b610372600480360381019061036d9190611627565b610c73565b60405161037f9190611540565b60405180910390f35b60606003805461039790611692565b80601f01602080910402602001604051908101604052809291908181526020018280546103c390611692565b801561040e5780601f106103e55761010080835404028352916020019161040e565b820191905f5260205f20905b8154815290600101906020018083116103f157829003601f168201915b5050505050905090565b5f610424338484610cf5565b6001905092915050565b5f600254905090565b5f610443848484610eb8565b8160085f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f61048a6111a9565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205410156104ce575f80fd5b600190509392505050565b5f600154905090565b6104ea6111b0565b1561079b575f30905061051f8160095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684610cf5565b8160065f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505f600267ffffffffffffffff81111561057d5761057c6116c2565b5b6040519080825280602002602001820160405280156105ab5781602001602082028036833780820191505090505b50905081815f815181106105c2576105c16116ef565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610666573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061068a9190611730565b8160018151811061069e5761069d6116ef565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947845f84600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16601c426107479190611788565b6040518663ffffffff1660e01b81526004016107679594939291906118b4565b5f604051808303815f87803b15801561077e575f80fd5b505af1158015610790573d5f803e3d5ffd5b5050505050506107a0565b6107a1565b5b50565b60015481565b5f6108406107b66111a9565b848460085f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461083b9190611788565b610cf5565b6001905092915050565b60025481565b5f60065f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b3373ffffffffffffffffffffffffffffffffffffffff166108b5610a7b565b73ffffffffffffffffffffffffffffffffffffffff161461090b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161090290611956565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b3373ffffffffffffffffffffffffffffffffffffffff166109e4610a7b565b73ffffffffffffffffffffffffffffffffffffffff1614610a3a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a3190611956565b60405180910390fd5b5f600760146101000a81548160ff021916908315150217905550565b600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060048054610ab190611692565b80601f0160208091040260200160405190810160405280929190818152602001828054610add90611692565b8015610b285780601f10610aff57610100808354040283529160200191610b28565b820191905f5260205f20905b815481529060010190602001808311610b0b57829003601f168201915b5050505050905090565b5f8160085f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20541015610bb7575f80fd5b610c4c610bc26111a9565b848460085f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054610c479190611974565b610cf5565b6001905092915050565b5f610c69610c626111a9565b8484610eb8565b6001905092915050565b5f60085f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610d63576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d5a90611a17565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610dd1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dc890611aa5565b60405180910390fd5b8060085f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610eab9190611540565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610eef575f80fd5b60065f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054811115610f38575f80fd5b5f8373ffffffffffffffffffffffffffffffffffffffff16600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614158015610fe357508273ffffffffffffffffffffffffffffffffffffffff16600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614155b15610ff557610ff28484611206565b90505b5f61101c606461100e84866112b290919063ffffffff16565b61132990919063ffffffff16565b90508260065f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546110679190611974565b60065f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550808360065f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546110f29190611788565b6110fc9190611974565b60065f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161119a9190611540565b60405180910390a35050505050565b5f33905090565b5f3373ffffffffffffffffffffffffffffffffffffffff16600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614905090565b5f8030905060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166375bb9b638585846040518463ffffffff1660e01b815260040161126993929190611ac3565b6020604051808303815f875af1158015611285573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112a99190611b0c565b91505092915050565b5f8083036112c2575f9050611323565b5f82846112cf9190611b37565b90508284826112de9190611ba5565b1461131e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161131590611c45565b60405180910390fd5b809150505b92915050565b5f80821161136c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161136390611cad565b60405180910390fd5b5f82846113799190611ba5565b90508091505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f5b838110156113bc5780820151818401526020810190506113a1565b5f8484015250505050565b5f601f19601f8301169050919050565b5f6113e182611385565b6113eb818561138f565b93506113fb81856020860161139f565b611404816113c7565b840191505092915050565b5f6020820190508181035f83015261142781846113d7565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61145c82611433565b9050919050565b61146c81611452565b8114611476575f80fd5b50565b5f8135905061148781611463565b92915050565b5f819050919050565b61149f8161148d565b81146114a9575f80fd5b50565b5f813590506114ba81611496565b92915050565b5f80604083850312156114d6576114d561142f565b5b5f6114e385828601611479565b92505060206114f4858286016114ac565b9150509250929050565b5f8115159050919050565b611512816114fe565b82525050565b5f60208201905061152b5f830184611509565b92915050565b61153a8161148d565b82525050565b5f6020820190506115535f830184611531565b92915050565b5f805f606084860312156115705761156f61142f565b5b5f61157d86828701611479565b935050602061158e86828701611479565b925050604061159f868287016114ac565b9150509250925092565b5f602082840312156115be576115bd61142f565b5b5f6115cb848285016114ac565b91505092915050565b5f602082840312156115e9576115e861142f565b5b5f6115f684828501611479565b91505092915050565b61160881611452565b82525050565b5f6020820190506116215f8301846115ff565b92915050565b5f806040838503121561163d5761163c61142f565b5b5f61164a85828601611479565b925050602061165b85828601611479565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806116a957607f821691505b6020821081036116bc576116bb611665565b5b50919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f8151905061172a81611463565b92915050565b5f602082840312156117455761174461142f565b5b5f6117528482850161171c565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6117928261148d565b915061179d8361148d565b92508282019050808211156117b5576117b461175b565b5b92915050565b5f819050919050565b5f819050919050565b5f6117e76117e26117dd846117bb565b6117c4565b61148d565b9050919050565b6117f7816117cd565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b61182f81611452565b82525050565b5f6118408383611826565b60208301905092915050565b5f602082019050919050565b5f611862826117fd565b61186c8185611807565b935061187783611817565b805f5b838110156118a757815161188e8882611835565b97506118998361184c565b92505060018101905061187a565b5085935050505092915050565b5f60a0820190506118c75f830188611531565b6118d460208301876117ee565b81810360408301526118e68186611858565b90506118f560608301856115ff565b6119026080830184611531565b9695505050505050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f61194060208361138f565b915061194b8261190c565b602082019050919050565b5f6020820190508181035f83015261196d81611934565b9050919050565b5f61197e8261148d565b91506119898361148d565b92508282039050818111156119a1576119a061175b565b5b92915050565b7f4945524332303a20617070726f76652066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f611a0160258361138f565b9150611a0c826119a7565b604082019050919050565b5f6020820190508181035f830152611a2e816119f5565b9050919050565b7f4945524332303a20617070726f766520746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f611a8f60238361138f565b9150611a9a82611a35565b604082019050919050565b5f6020820190508181035f830152611abc81611a83565b9050919050565b5f606082019050611ad65f8301866115ff565b611ae360208301856115ff565b611af060408301846115ff565b949350505050565b5f81519050611b0681611496565b92915050565b5f60208284031215611b2157611b2061142f565b5b5f611b2e84828501611af8565b91505092915050565b5f611b418261148d565b9150611b4c8361148d565b9250828202611b5a8161148d565b91508282048414831517611b7157611b7061175b565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f611baf8261148d565b9150611bba8361148d565b925082611bca57611bc9611b78565b5b828204905092915050565b7f536166654d6174683a20206d756c7469706c69636174696f6e206f766572666c5f8201527f6f77000000000000000000000000000000000000000000000000000000000000602082015250565b5f611c2f60228361138f565b9150611c3a82611bd5565b604082019050919050565b5f6020820190508181035f830152611c5c81611c23565b9050919050565b7f536166654d6174683a20206469766973696f6e206279207a65726f00000000005f82015250565b5f611c97601b8361138f565b9150611ca282611c63565b602082019050919050565b5f6020820190508181035f830152611cc481611c8b565b905091905056fea2646970667358221220d5d95d5b73ebd022e356111a0c77c96c2979455b47b8cd8e276b72aeb8e3cabd64736f6c63430008140033