60c060405234801561000f575f80fd5b50604051613076380380613076833981810160405281019061003191906108e7565b6040518060400160405280600e81526020017f5468654e75616e6365546f6b656e0000000000000000000000000000000000008152506040518060400160405280600381526020017f544e54000000000000000000000000000000000000000000000000000000000081525081600390816100ac9190610b43565b5080600490816100bc9190610b43565b505050600a608081815250506207a12060a081815250506100e360056100f960201b60201c565b6100f3338261010560201b60201c565b50610d54565b6001815f018190555050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610175575f6040517fec442f0500000000000000000000000000000000000000000000000000000000815260040161016c9190610c51565b60405180910390fd5b6101865f838361018a60201b60201c565b5050565b600561019b8161044860201b60201c565b6101ac84848461049160201b60201c565b5f821180156101e757508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15610433575f61023a60065f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f016106aa60201b60201c565b90505f61028a60065f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f016106aa60201b60201c565b90505f825190505f825190505f5b828110156103b0575f8582815181106102b4576102b3610c6a565b5b602002602001015190505f5b83811015610387578581815181106102db576102da610c6a565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361037a57610327828c8c8c61072960201b60201c565b5f86828151811061033b5761033a610c6a565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050610387565b80806001019150506102c0565b8381036103a1576103a0828c5f8c61072960201b60201c565b5b50508080600101915050610298565b505f5b8181101561042d575f8482815181106103cf576103ce610c6a565b5b602002602001015190505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161461041f5761041e815f8b8b61072960201b60201c565b5b5080806001019150506103b3565b50505050505b6104428161078160201b60201c565b50505050565b6002815f015403610485576040517f37ed32e800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002815f018190555050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036104e1578060025f8282546104d59190610cc4565b925050819055506105af565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490508181101561056a578381836040517fe450d38c00000000000000000000000000000000000000000000000000000000815260040161056193929190610d06565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036105f6578060025f8282540392505081905550610640565b805f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161069d9190610d3b565b60405180910390a3505050565b60605f825f015f8081526020019081526020015f2054905060a081901c67ffffffffffffffff8111156106e0576106df61091c565b5b60405190808252806020026020018201604052801561070e5781602001602082028036833780820191505090505b50915061072283838361078d60201b60201c565b5050919050565b5f637a1f1aa960e01b90505f60a05190506040518281528560048201528460248201528360448201525a5f806064845f8c88f161077757826040603f8302041015610776573d5f833e3d82fd5b5b5050505050505050565b6001815f018190555050565b60605f60a083901c905083518111156107d2576040517ff9a99b2500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f8111156108a55782845f815181106107ee576107ed610c6a565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250505f600190505b818110156108a357855f015f8281526020019081526020015f205485828151811061085c5761085b610c6a565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050808060010191505061082e565b505b839150509392505050565b5f80fd5b5f819050919050565b6108c6816108b4565b81146108d0575f80fd5b50565b5f815190506108e1816108bd565b92915050565b5f602082840312156108fc576108fb6108b0565b5b5f610909848285016108d3565b91505092915050565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061098d57607f821691505b6020821081036109a05761099f610949565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f60088302610a027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826109c7565b610a0c86836109c7565b95508019841693508086168417925050509392505050565b5f819050919050565b5f610a47610a42610a3d846108b4565b610a24565b6108b4565b9050919050565b5f819050919050565b610a6083610a2d565b610a74610a6c82610a4e565b8484546109d3565b825550505050565b5f90565b610a88610a7c565b610a93818484610a57565b505050565b5b81811015610ab657610aab5f82610a80565b600181019050610a99565b5050565b601f821115610afb57610acc816109a6565b610ad5846109b8565b81016020851015610ae4578190505b610af8610af0856109b8565b830182610a98565b50505b505050565b5f82821c905092915050565b5f610b1b5f1984600802610b00565b1980831691505092915050565b5f610b338383610b0c565b9150826002028217905092915050565b610b4c82610912565b67ffffffffffffffff811115610b6557610b6461091c565b5b610b6f8254610976565b610b7a828285610aba565b5f60209050601f831160018114610bab575f8415610b99578287015190505b610ba38582610b28565b865550610c0a565b601f198416610bb9866109a6565b5f5b82811015610be057848901518255600182019150602085019450602081019050610bbb565b86831015610bfd5784890151610bf9601f891682610b0c565b8355505b6001600288020188555050505b505050505050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f610c3b82610c12565b9050919050565b610c4b81610c31565b82525050565b5f602082019050610c645f830184610c42565b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f610cce826108b4565b9150610cd9836108b4565b9250828201905080821115610cf157610cf0610c97565b5b92915050565b610d00816108b4565b82525050565b5f606082019050610d195f830186610c42565b610d266020830185610cf7565b610d336040830184610cf7565b949350505050565b5f602082019050610d4e5f830184610cf7565b92915050565b60805160a0516122f3610d835f395f81816105e1015261175f01525f81816106590152610f0b01526122f35ff3fe608060405234801561000f575f80fd5b506004361061011f575f3560e01c806370a08231116100ab578063a9059cbb1161006f578063a9059cbb1461031d578063c12556351461034d578063d8867fc81461037d578063dd62ed3e14610399578063ed6edc82146103c95761011f565b806370a082311461028b578063799ec8aa146102bb5780638b822d88146102d957806395d89b41146102e3578063a4d95b64146103015761011f565b806323b872dd116100f257806323b872dd146101bf578063313ce567146101ef5780634b12e6431461020d578063617281341461023d5780636f4c290a1461026d5761011f565b806306fdde0314610123578063095ea7b31461014157806318160ddd146101715780631945f7291461018f575b5f80fd5b61012b6103f9565b6040516101389190611dae565b60405180910390f35b61015b60048036038101906101569190611e5f565b610489565b6040516101689190611eb7565b60405180910390f35b6101796104ab565b6040516101869190611edf565b60405180910390f35b6101a960048036038101906101a49190611e5f565b6104b4565b6040516101b69190611f07565b60405180910390f35b6101d960048036038101906101d49190611f20565b61050c565b6040516101e69190611eb7565b60405180910390f35b6101f761053a565b6040516102049190611f8b565b60405180910390f35b61022760048036038101906102229190611fa4565b610542565b6040516102349190612086565b60405180910390f35b61025760048036038101906102529190611fa4565b610592565b6040516102649190611edf565b60405180910390f35b6102756105df565b6040516102829190611edf565b60405180910390f35b6102a560048036038101906102a09190611fa4565b610603565b6040516102b29190611edf565b60405180910390f35b6102c3610657565b6040516102d09190611edf565b60405180910390f35b6102e161067b565b005b6102eb610686565b6040516102f89190611dae565b60405180910390f35b61031b60048036038101906103169190611fa4565b610716565b005b61033760048036038101906103329190611e5f565b610723565b6040516103449190611eb7565b60405180910390f35b610367600480360381019061036291906120a6565b610745565b6040516103749190611edf565b60405180910390f35b61039760048036038101906103929190611fa4565b6107b2565b005b6103b360048036038101906103ae91906120a6565b6107bf565b6040516103c09190611edf565b60405180910390f35b6103e360048036038101906103de91906120a6565b610841565b6040516103f09190611eb7565b60405180910390f35b60606003805461040890612111565b80601f016020809104026020016040519081016040528092919081815260200182805461043490612111565b801561047f5780601f106104565761010080835404028352916020019161047f565b820191905f5260205f20905b81548152906001019060200180831161046257829003601f168201915b5050505050905090565b5f80610493610899565b90506104a08185856108a0565b600191505092915050565b5f600254905090565b5f6105048260065f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f206108b290919063ffffffff16565b905092915050565b5f80610516610899565b90506105238582856108d0565b61052e858585610962565b60019150509392505050565b5f6012905090565b606061058b60065f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f01610a52565b9050919050565b5f6105d860065f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20610acb565b9050919050565b7f000000000000000000000000000000000000000000000000000000000000000081565b5f600561060f81610ade565b15610646576040517f37ed32e800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61064f83610aed565b915050919050565b7f000000000000000000000000000000000000000000000000000000000000000081565b61068433610b32565b565b60606004805461069590612111565b80601f01602080910402602001604051908101604052809291908181526020018280546106c190612111565b801561070c5780601f106106e35761010080835404028352916020019161070c565b820191905f5260205f20905b8154815290600101906020018083116106ef57829003601f168201915b5050505050905090565b6107203382610c6a565b50565b5f8061072d610899565b905061073a818585610962565b600191505092915050565b5f600561075181610ade565b15610788576040517f37ed32e800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6107928385610841565b156107a7576107a083610aed565b91506107ab565b5f91505b5092915050565b6107bc3382610d4e565b50565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b5f6108918260065f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2061100690919063ffffffff16565b905092915050565b5f33905090565b6108ad8383836001611052565b505050565b5f6108c882845f0161122190919063ffffffff16565b905092915050565b5f6108db84846107bf565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811461095c578181101561094d578281836040517ffb8f41b200000000000000000000000000000000000000000000000000000000815260040161094493929190612141565b60405180910390fd5b61095b84848484035f611052565b5b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036109d2575f6040517f96c6fd1e0000000000000000000000000000000000000000000000000000000081526004016109c99190611f07565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610a42575f6040517fec442f05000000000000000000000000000000000000000000000000000000008152600401610a399190611f07565b60405180910390fd5b610a4d83838361123d565b505050565b60605f825f015f8081526020019081526020015f2054905060a081901c67ffffffffffffffff811115610a8857610a87612176565b5b604051908082528060200260200182016040528015610ab65781602001602082028036833780820191505090505b509150610ac48383836114cb565b5050919050565b5f610ad7825f016115ee565b9050919050565b5f6002825f0154149050919050565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b5f610b7a60065f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f01610a52565b90505f610b8683610603565b90505f825190505b5f811115610c64575f836001830381518110610bad57610bac6121a3565b5b60200260200101519050610c068160065f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2061160d90919063ffffffff16565b507f550ef13f654f6fc7054e7c556d2647cb8838befbfa68640bb3050fc458ad47358582604051610c389291906121d0565b60405180910390a15f831115610c5557610c5481865f86611751565b5b50808060019003915050610b8e565b50505050565b610cb98160065f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2061160d90919063ffffffff16565b610cef576040517f108a506d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f550ef13f654f6fc7054e7c556d2647cb8838befbfa68640bb3050fc458ad47358282604051610d209291906121d0565b60405180910390a15f610d3283610603565b90505f811115610d4957610d4882845f84611751565b5b505050565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610db3576040517f4c6ea03c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff166382bfefc86040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e13573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e379190612232565b73ffffffffffffffffffffffffffffffffffffffff1614610e84576040517f5940fcc800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610ed38160065f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f206117c790919063ffffffff16565b610f09576040517ffce323d600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f0000000000000000000000000000000000000000000000000000000000000000610f6f60065f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20610acb565b1115610fa7576040517f2846f78a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f68aafb7a848a8e6e0e8fe992de5812474789ddec166ce06be4de83b3aaa2864e8282604051610fd89291906121d0565b60405180910390a15f610fea83610603565b90505f81111561100157611000825f8584611751565b5b505050565b5f80836001015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20541415905092915050565b5f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16036110c2575f6040517fe602df050000000000000000000000000000000000000000000000000000000081526004016110b99190611f07565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611132575f6040517f94280d620000000000000000000000000000000000000000000000000000000081526004016111299190611f07565b60405180910390fd5b8160015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550801561121b578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516112129190611edf565b60405180910390a35b50505050565b5f825f015f8381526020019081526020015f2054905092915050565b60056112488161187a565b6112538484846118c3565b5f8211801561128e57508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b156114bc575f6112db60065f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f01610a52565b90505f61132560065f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f01610a52565b90505f825190505f825190505f5b8281101561143f575f85828151811061134f5761134e6121a3565b5b602002602001015190505f5b8381101561141c57858181518110611376576113756121a3565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361140f576113bc828c8c8c611751565b5f8682815181106113d0576113cf6121a3565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061141c565b808060010191505061135b565b8381036114305761142f828c5f8c611751565b5b50508080600101915050611333565b505f5b818110156114b6575f84828151811061145e5761145d6121a3565b5b602002602001015190505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146114a8576114a7815f8b8b611751565b5b508080600101915050611442565b50505050505b6114c581611adc565b50505050565b60605f60a083901c90508351811115611510576040517ff9a99b2500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f8111156115e35782845f8151811061152c5761152b6121a3565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250505f600190505b818110156115e157855f015f8281526020019081526020015f205485828151811061159a576115996121a3565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050808060010191505061156c565b505b839150509392505050565b5f60a0825f015f8081526020019081526020015f2054901c9050919050565b5f80836001015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490505f8103611661575f91505061174b565b61166c845f016115ee565b8110156116f8575f6116966001611684875f016115ee565b03865f0161122190919063ffffffff16565b90506116b26001830382875f01611ae89092919063ffffffff16565b81856001015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505b611703845f01611ba0565b836001015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f905560019150505b92915050565b5f637a1f1aa960e01b90505f7f000000000000000000000000000000000000000000000000000000000000000090506040518281528560048201528460248201528360448201525a5f806064845f8c88f16117bd57826040603f83020410156117bc573d5f833e3d82fd5b5b5050505050505050565b5f80836001015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20541115611817575f9050611874565b61182c82845f01611c4e90919063ffffffff16565b836001015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550600190505b92915050565b6002815f0154036118b7576040517f37ed32e800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002815f018190555050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611913578060025f828254611907919061228a565b925050819055506119e1565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490508181101561199c578381836040517fe450d38c00000000000000000000000000000000000000000000000000000000815260040161199393929190612141565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611a28578060025f8282540392505081905550611a72565b805f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611acf9190611edf565b60405180910390a3505050565b6001815f018190555050565b5f611af2846115ee565b9050808310611b2d576040517f4e23d03500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f8303611b6c578173ffffffffffffffffffffffffffffffffffffffff1660a082901b17845f015f8081526020019081526020015f2081905550611b9a565b8173ffffffffffffffffffffffffffffffffffffffff16845f015f8581526020019081526020015f20819055505b50505050565b5f815f015f8081526020019081526020015f205490505f60a082901c90505f8103611bf7576040517f06a2af9e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f835f015f6001840381526020019081526020015f20819055506001811115611c4957740100000000000000000000000000000000000000008203835f015f8081526020019081526020015f20819055505b505050565b5f80835f015f8081526020019081526020015f205490505f60a082901c90505f8103611cd4578373ffffffffffffffffffffffffffffffffffffffff16740100000000000000000000000000000000000000000174ffffffffffffffffffffffffffffffffffffffffff16855f015f8081526020019081526020015f2081905550611d30565b740100000000000000000000000000000000000000008201855f015f8081526020019081526020015f20819055508373ffffffffffffffffffffffffffffffffffffffff16855f015f8381526020019081526020015f20819055505b600181019250505092915050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f611d8082611d3e565b611d8a8185611d48565b9350611d9a818560208601611d58565b611da381611d66565b840191505092915050565b5f6020820190508181035f830152611dc68184611d76565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f611dfb82611dd2565b9050919050565b611e0b81611df1565b8114611e15575f80fd5b50565b5f81359050611e2681611e02565b92915050565b5f819050919050565b611e3e81611e2c565b8114611e48575f80fd5b50565b5f81359050611e5981611e35565b92915050565b5f8060408385031215611e7557611e74611dce565b5b5f611e8285828601611e18565b9250506020611e9385828601611e4b565b9150509250929050565b5f8115159050919050565b611eb181611e9d565b82525050565b5f602082019050611eca5f830184611ea8565b92915050565b611ed981611e2c565b82525050565b5f602082019050611ef25f830184611ed0565b92915050565b611f0181611df1565b82525050565b5f602082019050611f1a5f830184611ef8565b92915050565b5f805f60608486031215611f3757611f36611dce565b5b5f611f4486828701611e18565b9350506020611f5586828701611e18565b9250506040611f6686828701611e4b565b9150509250925092565b5f60ff82169050919050565b611f8581611f70565b82525050565b5f602082019050611f9e5f830184611f7c565b92915050565b5f60208284031215611fb957611fb8611dce565b5b5f611fc684828501611e18565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b61200181611df1565b82525050565b5f6120128383611ff8565b60208301905092915050565b5f602082019050919050565b5f61203482611fcf565b61203e8185611fd9565b935061204983611fe9565b805f5b838110156120795781516120608882612007565b975061206b8361201e565b92505060018101905061204c565b5085935050505092915050565b5f6020820190508181035f83015261209e818461202a565b905092915050565b5f80604083850312156120bc576120bb611dce565b5b5f6120c985828601611e18565b92505060206120da85828601611e18565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061212857607f821691505b60208210810361213b5761213a6120e4565b5b50919050565b5f6060820190506121545f830186611ef8565b6121616020830185611ed0565b61216e6040830184611ed0565b949350505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f6040820190506121e35f830185611ef8565b6121f06020830184611ef8565b9392505050565b5f61220182611df1565b9050919050565b612211816121f7565b811461221b575f80fd5b50565b5f8151905061222c81612208565b92915050565b5f6020828403121561224757612246611dce565b5b5f6122548482850161221e565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61229482611e2c565b915061229f83611e2c565b92508282019050808211156122b7576122b661225d565b5b9291505056fea26469706673582212208e64bf97bde832254ff62a79742a3a9eb1b7b572406d9372c64586a9a17146f164736f6c634300081a003300000000000000000000000000000000000000000000003635c9adc5dea00000