60a06040523073ffffffffffffffffffffffffffffffffffffffff1660809073ffffffffffffffffffffffffffffffffffffffff1681525034801562000043575f80fd5b50620000546200005a60201b60201c565b620001c4565b5f6200006b6200015e60201b60201c565b9050805f0160089054906101000a900460ff1615620000b6576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b67ffffffffffffffff8016815f015f9054906101000a900467ffffffffffffffff1667ffffffffffffffff16146200015b5767ffffffffffffffff815f015f6101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d267ffffffffffffffff604051620001529190620001a9565b60405180910390a15b50565b5f7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00905090565b5f67ffffffffffffffff82169050919050565b620001a38162000185565b82525050565b5f602082019050620001be5f83018462000198565b92915050565b60805161383b620001eb5f395f818161158d015281816115e2015261179c015261383b5ff3fe608060405260043610610180575f3560e01c8063715018a6116100d0578063a9059cbb11610089578063d505accf11610063578063d505accf1461057a578063d9d98ce4146105a2578063dd62ed3e146105de578063f2fde38b1461061a57610180565b8063a9059cbb146104ec578063ad3cb1cc14610528578063c4d66de81461055257610180565b8063715018a6146103ee57806379cc6790146104045780637ecebe001461042c57806384b0196e146104685780638da5cb5b1461049857806395d89b41146104c257610180565b806340c10f191161013d57806352d1902d1161011757806352d1902d146103105780635cffe9de1461033a578063613255ab1461037657806370a08231146103b257610180565b806340c10f19146102a457806342966c68146102cc5780634f1ef286146102f457610180565b806306fdde0314610184578063095ea7b3146101ae57806318160ddd146101ea57806323b872dd14610214578063313ce567146102505780633644e5151461027a575b5f80fd5b34801561018f575f80fd5b50610198610642565b6040516101a59190612963565b60405180910390f35b3480156101b9575f80fd5b506101d460048036038101906101cf9190612a21565b6106e0565b6040516101e19190612a79565b60405180910390f35b3480156101f5575f80fd5b506101fe610702565b60405161020b9190612aa1565b60405180910390f35b34801561021f575f80fd5b5061023a60048036038101906102359190612aba565b610719565b6040516102479190612a79565b60405180910390f35b34801561025b575f80fd5b50610264610747565b6040516102719190612b25565b60405180910390f35b348015610285575f80fd5b5061028e61074f565b60405161029b9190612b56565b60405180910390f35b3480156102af575f80fd5b506102ca60048036038101906102c59190612a21565b61075d565b005b3480156102d7575f80fd5b506102f260048036038101906102ed9190612b6f565b610773565b005b61030e60048036038101906103099190612cc6565b610787565b005b34801561031b575f80fd5b506103246107a6565b6040516103319190612b56565b60405180910390f35b348015610345575f80fd5b50610360600480360381019061035b9190612db8565b6107d7565b60405161036d9190612a79565b60405180910390f35b348015610381575f80fd5b5061039c60048036038101906103979190612e3c565b6109cc565b6040516103a99190612aa1565b60405180910390f35b3480156103bd575f80fd5b506103d860048036038101906103d39190612e3c565b610a41565b6040516103e59190612aa1565b60405180910390f35b3480156103f9575f80fd5b50610402610a94565b005b34801561040f575f80fd5b5061042a60048036038101906104259190612a21565b610aa7565b005b348015610437575f80fd5b50610452600480360381019061044d9190612e3c565b610ac7565b60405161045f9190612aa1565b60405180910390f35b348015610473575f80fd5b5061047c610ad8565b60405161048f9796959493929190612f67565b60405180910390f35b3480156104a3575f80fd5b506104ac610be1565b6040516104b99190612fe9565b60405180910390f35b3480156104cd575f80fd5b506104d6610c16565b6040516104e39190612963565b60405180910390f35b3480156104f7575f80fd5b50610512600480360381019061050d9190612a21565b610cb4565b60405161051f9190612a79565b60405180910390f35b348015610533575f80fd5b5061053c610cd6565b6040516105499190612963565b60405180910390f35b34801561055d575f80fd5b5061057860048036038101906105739190612e3c565b610d0f565b005b348015610585575f80fd5b506105a0600480360381019061059b9190613056565b610f5a565b005b3480156105ad575f80fd5b506105c860048036038101906105c39190612a21565b61109f565b6040516105d59190612aa1565b60405180910390f35b3480156105e9575f80fd5b5061060460048036038101906105ff91906130f3565b611122565b6040516106119190612aa1565b60405180910390f35b348015610625575f80fd5b50610640600480360381019061063b9190612e3c565b6111b2565b005b60605f61064d611236565b905080600301805461065e9061315e565b80601f016020809104026020016040519081016040528092919081815260200182805461068a9061315e565b80156106d55780601f106106ac576101008083540402835291602001916106d5565b820191905f5260205f20905b8154815290600101906020018083116106b857829003601f168201915b505050505091505090565b5f806106ea61125d565b90506106f7818585611264565b600191505092915050565b5f8061070c611236565b9050806002015491505090565b5f8061072361125d565b9050610730858285611276565b61073b858585611308565b60019150509392505050565b5f6012905090565b5f6107586113f8565b905090565b610765611406565b61076f828261148d565b5050565b61078461077e61125d565b8261150c565b50565b61078f61158b565b61079882611671565b6107a2828261167c565b5050565b5f6107af61179a565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5f1b905090565b5f806107e2866109cc565b90508085111561082957806040517ffd9a76090000000000000000000000000000000000000000000000000000000081526004016108209190612aa1565b60405180910390fd5b5f610834878761109f565b9050610840888761148d565b7f439148f0bbc682ca079e46d6e2c2f0c1e3b820f1a291b069d8882abf8cf18dd98873ffffffffffffffffffffffffffffffffffffffff166323e30c8b61088561125d565b8a8a868b8b6040518763ffffffff1660e01b81526004016108ab969594939291906131ca565b6020604051808303815f875af11580156108c7573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108eb9190613238565b1461092d57876040517f678c5b000000000000000000000000000000000000000000000000000000000081526004016109249190612fe9565b60405180910390fd5b5f610936611821565b905061094e8930848a6109499190613290565b611276565b5f82148061098757505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b156109a6576109a189838961099c9190613290565b61150c565b6109bc565b6109b0898861150c565b6109bb898284611308565b5b6001935050505095945050505050565b5f3073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614610a06575f610a3a565b610a0e610702565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610a3991906132c3565b5b9050919050565b5f80610a4b611236565b9050805f015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054915050919050565b610a9c611406565b610aa55f611825565b565b610ab982610ab361125d565b83611276565b610ac3828261150c565b5050565b5f610ad1826118f6565b9050919050565b5f6060805f805f60605f610aea611949565b90505f801b815f0154148015610b0557505f801b8160010154145b610b44576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b3b90613340565b60405180910390fd5b610b4c611970565b610b54611a0e565b46305f801b5f67ffffffffffffffff811115610b7357610b72612ba2565b5b604051908082528060200260200182016040528015610ba15781602001602082028036833780820191505090505b507f0f0000000000000000000000000000000000000000000000000000000000000095949392919097509750975097509750975097505090919293949596565b5f80610beb611aac565b9050805f015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691505090565b60605f610c21611236565b9050806004018054610c329061315e565b80601f0160208091040260200160405190810160405280929190818152602001828054610c5e9061315e565b8015610ca95780601f10610c8057610100808354040283529160200191610ca9565b820191905f5260205f20905b815481529060010190602001808311610c8c57829003601f168201915b505050505091505090565b5f80610cbe61125d565b9050610ccb818585611308565b600191505092915050565b6040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b5f610d18611ad3565b90505f815f0160089054906101000a900460ff161590505f825f015f9054906101000a900467ffffffffffffffff1690505f808267ffffffffffffffff16148015610d605750825b90505f60018367ffffffffffffffff16148015610d9357505f3073ffffffffffffffffffffffffffffffffffffffff163b145b905081158015610da1575080155b15610dd8576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001855f015f6101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055508315610e25576001855f0160086101000a81548160ff0219169083151502179055505b610e996040518060400160405280600581526020017f56657465720000000000000000000000000000000000000000000000000000008152506040518060400160405280600281526020017f5654000000000000000000000000000000000000000000000000000000000000815250611afa565b610ea1611b10565b610eaa86611b1a565b610ee86040518060400160405280600581526020017f5665746572000000000000000000000000000000000000000000000000000000815250611b2e565b610ef0611b78565b610ef8611b82565b8315610f52575f855f0160086101000a81548160ff0219169083151502179055507fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d26001604051610f4991906133b3565b60405180910390a15b505050505050565b83421115610f9f57836040517f62791302000000000000000000000000000000000000000000000000000000008152600401610f969190612aa1565b60405180910390fd5b5f7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9888888610fcd8c611b8c565b89604051602001610fe3969594939291906133cc565b6040516020818303038152906040528051906020012090505f61100582611bec565b90505f61101482878787611c05565b90508973ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161461108857808a6040517f4b800e4600000000000000000000000000000000000000000000000000000000815260040161107f92919061342b565b60405180910390fd5b6110938a8a8a611264565b50505050505050505050565b5f3073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161461111057826040517fb5a7db920000000000000000000000000000000000000000000000000000000081526004016111079190612fe9565b60405180910390fd5b61111a8383611c33565b905092915050565b5f8061112c611236565b9050806001015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205491505092915050565b6111ba611406565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361122a575f6040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081526004016112219190612fe9565b60405180910390fd5b61123381611825565b50565b5f7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace00905090565b5f33905090565b6112718383836001611c3a565b505050565b5f6112818484611122565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811461130257818110156112f3578281836040517ffb8f41b20000000000000000000000000000000000000000000000000000000081526004016112ea93929190613452565b60405180910390fd5b61130184848484035f611c3a565b5b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611378575f6040517f96c6fd1e00000000000000000000000000000000000000000000000000000000815260040161136f9190612fe9565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036113e8575f6040517fec442f050000000000000000000000000000000000000000000000000000000081526004016113df9190612fe9565b60405180910390fd5b6113f3838383611e17565b505050565b5f611401612046565b905090565b61140e61125d565b73ffffffffffffffffffffffffffffffffffffffff1661142c610be1565b73ffffffffffffffffffffffffffffffffffffffff161461148b5761144f61125d565b6040517f118cdaa70000000000000000000000000000000000000000000000000000000081526004016114829190612fe9565b60405180910390fd5b565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036114fd575f6040517fec442f050000000000000000000000000000000000000000000000000000000081526004016114f49190612fe9565b60405180910390fd5b6115085f8383611e17565b5050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361157c575f6040517f96c6fd1e0000000000000000000000000000000000000000000000000000000081526004016115739190612fe9565b60405180910390fd5b611587825f83611e17565b5050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff16148061163857507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1661161f6120a9565b73ffffffffffffffffffffffffffffffffffffffff1614155b1561166f576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b611679611406565b50565b8173ffffffffffffffffffffffffffffffffffffffff166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156116e457506040513d601f19601f820116820180604052508101906116e19190613238565b60015b61172557816040517f4c9c8ce300000000000000000000000000000000000000000000000000000000815260040161171c9190612fe9565b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5f1b811461178b57806040517faa1d49a40000000000000000000000000000000000000000000000000000000081526004016117829190612b56565b60405180910390fd5b61179583836120fc565b505050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff161461181f576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b5f90565b5f61182e611aac565b90505f815f015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905082825f015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508273ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3505050565b5f8061190061216e565b9050805f015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054915050919050565b5f7fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d100905090565b60605f61197b611949565b905080600201805461198c9061315e565b80601f01602080910402602001604051908101604052809291908181526020018280546119b89061315e565b8015611a035780601f106119da57610100808354040283529160200191611a03565b820191905f5260205f20905b8154815290600101906020018083116119e657829003601f168201915b505050505091505090565b60605f611a19611949565b9050806003018054611a2a9061315e565b80601f0160208091040260200160405190810160405280929190818152602001828054611a569061315e565b8015611aa15780601f10611a7857610100808354040283529160200191611aa1565b820191905f5260205f20905b815481529060010190602001808311611a8457829003601f168201915b505050505091505090565b5f7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300905090565b5f7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00905090565b611b02612195565b611b0c82826121d5565b5050565b611b18612195565b565b611b22612195565b611b2b81612211565b50565b611b36612195565b611b75816040518060400160405280600181526020017f3100000000000000000000000000000000000000000000000000000000000000815250612295565b50565b611b80612195565b565b611b8a612195565b565b5f80611b9661216e565b9050805f015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f81548092919060010191905055915050919050565b5f611bfe611bf86113f8565b836122e6565b9050919050565b5f805f80611c1588888888612326565b925092509250611c25828261240d565b829350505050949350505050565b5f92915050565b5f611c43611236565b90505f73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1603611cb5575f6040517fe602df05000000000000000000000000000000000000000000000000000000008152600401611cac9190612fe9565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603611d25575f6040517f94280d62000000000000000000000000000000000000000000000000000000008152600401611d1c9190612fe9565b60405180910390fd5b82816001015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508115611e10578373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92585604051611e079190612aa1565b60405180910390a35b5050505050565b5f611e20611236565b90505f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603611e745781816002015f828254611e689190613290565b92505081905550611f46565b5f815f015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905082811015611eff578481846040517fe450d38c000000000000000000000000000000000000000000000000000000008152600401611ef693929190613452565b60405180910390fd5b828103825f015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611f8f5781816002015f8282540392505081905550611fdb565b81815f015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055505b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516120389190612aa1565b60405180910390a350505050565b5f7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f61207061256f565b6120786125e5565b463060405160200161208e959493929190613487565b60405160208183030381529060405280519060200120905090565b5f6120d57f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5f1b61265c565b5f015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b61210582612665565b8173ffffffffffffffffffffffffffffffffffffffff167fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b60405160405180910390a25f815111156121615761215b828261272e565b5061216a565b6121696127ae565b5b5050565b5f7f5ab42ced628888259c08ac98db1eb0cf702fc1501344311d8b100cd1bfe4bb00905090565b61219d6127ea565b6121d3576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b6121dd612195565b5f6121e6611236565b9050828160030190816121f9919061366c565b508181600401908161220b919061366c565b50505050565b612219612195565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612289575f6040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081526004016122809190612fe9565b60405180910390fd5b61229281611825565b50565b61229d612195565b5f6122a6611949565b9050828160020190816122b9919061366c565b50818160030190816122cb919061366c565b505f801b815f01819055505f801b8160010181905550505050565b5f6040517f190100000000000000000000000000000000000000000000000000000000000081528360028201528260228201526042812091505092915050565b5f805f7f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0845f1c1115612362575f600385925092509250612403565b5f6001888888886040515f8152602001604052604051612385949392919061373b565b6020604051602081039080840390855afa1580156123a5573d5f803e3d5ffd5b5050506020604051035190505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036123f6575f60015f801b93509350935050612403565b805f805f1b935093509350505b9450945094915050565b5f60038111156124205761241f61377e565b5b8260038111156124335761243261377e565b5b031561256b576001600381111561244d5761244c61377e565b5b8260038111156124605761245f61377e565b5b03612497576040517ff645eedf00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600260038111156124ab576124aa61377e565b5b8260038111156124be576124bd61377e565b5b0361250257805f1c6040517ffce698f70000000000000000000000000000000000000000000000000000000081526004016124f99190612aa1565b60405180910390fd5b6003808111156125155761251461377e565b5b8260038111156125285761252761377e565b5b0361256a57806040517fd78bce0c0000000000000000000000000000000000000000000000000000000081526004016125619190612b56565b60405180910390fd5b5b5050565b5f80612579611949565b90505f612584611970565b90505f815111156125a0578080519060200120925050506125e2565b5f825f015490505f801b81146125bb578093505050506125e2565b7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47093505050505b90565b5f806125ef611949565b90505f6125fa611a0e565b90505f8151111561261657808051906020012092505050612659565b5f826001015490505f801b811461263257809350505050612659565b7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47093505050505b90565b5f819050919050565b5f8173ffffffffffffffffffffffffffffffffffffffff163b036126c057806040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526004016126b79190612fe9565b60405180910390fd5b806126ec7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5f1b61265c565b5f015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60605f808473ffffffffffffffffffffffffffffffffffffffff168460405161275791906137ef565b5f60405180830381855af49150503d805f811461278f576040519150601f19603f3d011682016040523d82523d5f602084013e612794565b606091505b50915091506127a4858383612808565b9250505092915050565b5f3411156127e8576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b5f6127f3611ad3565b5f0160089054906101000a900460ff16905090565b60608261281d5761281882612895565b61288d565b5f825114801561284357505f8473ffffffffffffffffffffffffffffffffffffffff163b145b1561288557836040517f9996b31500000000000000000000000000000000000000000000000000000000815260040161287c9190612fe9565b60405180910390fd5b81905061288e565b5b9392505050565b5f815111156128a75780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f81519050919050565b5f82825260208201905092915050565b5f5b838110156129105780820151818401526020810190506128f5565b5f8484015250505050565b5f601f19601f8301169050919050565b5f612935826128d9565b61293f81856128e3565b935061294f8185602086016128f3565b6129588161291b565b840191505092915050565b5f6020820190508181035f83015261297b818461292b565b905092915050565b5f604051905090565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6129bd82612994565b9050919050565b6129cd816129b3565b81146129d7575f80fd5b50565b5f813590506129e8816129c4565b92915050565b5f819050919050565b612a00816129ee565b8114612a0a575f80fd5b50565b5f81359050612a1b816129f7565b92915050565b5f8060408385031215612a3757612a3661298c565b5b5f612a44858286016129da565b9250506020612a5585828601612a0d565b9150509250929050565b5f8115159050919050565b612a7381612a5f565b82525050565b5f602082019050612a8c5f830184612a6a565b92915050565b612a9b816129ee565b82525050565b5f602082019050612ab45f830184612a92565b92915050565b5f805f60608486031215612ad157612ad061298c565b5b5f612ade868287016129da565b9350506020612aef868287016129da565b9250506040612b0086828701612a0d565b9150509250925092565b5f60ff82169050919050565b612b1f81612b0a565b82525050565b5f602082019050612b385f830184612b16565b92915050565b5f819050919050565b612b5081612b3e565b82525050565b5f602082019050612b695f830184612b47565b92915050565b5f60208284031215612b8457612b8361298c565b5b5f612b9184828501612a0d565b91505092915050565b5f80fd5b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b612bd88261291b565b810181811067ffffffffffffffff82111715612bf757612bf6612ba2565b5b80604052505050565b5f612c09612983565b9050612c158282612bcf565b919050565b5f67ffffffffffffffff821115612c3457612c33612ba2565b5b612c3d8261291b565b9050602081019050919050565b828183375f83830152505050565b5f612c6a612c6584612c1a565b612c00565b905082815260208101848484011115612c8657612c85612b9e565b5b612c91848285612c4a565b509392505050565b5f82601f830112612cad57612cac612b9a565b5b8135612cbd848260208601612c58565b91505092915050565b5f8060408385031215612cdc57612cdb61298c565b5b5f612ce9858286016129da565b925050602083013567ffffffffffffffff811115612d0a57612d09612990565b5b612d1685828601612c99565b9150509250929050565b5f612d2a826129b3565b9050919050565b612d3a81612d20565b8114612d44575f80fd5b50565b5f81359050612d5581612d31565b92915050565b5f80fd5b5f80fd5b5f8083601f840112612d7857612d77612b9a565b5b8235905067ffffffffffffffff811115612d9557612d94612d5b565b5b602083019150836001820283011115612db157612db0612d5f565b5b9250929050565b5f805f805f60808688031215612dd157612dd061298c565b5b5f612dde88828901612d47565b9550506020612def888289016129da565b9450506040612e0088828901612a0d565b935050606086013567ffffffffffffffff811115612e2157612e20612990565b5b612e2d88828901612d63565b92509250509295509295909350565b5f60208284031215612e5157612e5061298c565b5b5f612e5e848285016129da565b91505092915050565b5f7fff0000000000000000000000000000000000000000000000000000000000000082169050919050565b612e9b81612e67565b82525050565b612eaa816129b3565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b612ee2816129ee565b82525050565b5f612ef38383612ed9565b60208301905092915050565b5f602082019050919050565b5f612f1582612eb0565b612f1f8185612eba565b9350612f2a83612eca565b805f5b83811015612f5a578151612f418882612ee8565b9750612f4c83612eff565b925050600181019050612f2d565b5085935050505092915050565b5f60e082019050612f7a5f83018a612e92565b8181036020830152612f8c818961292b565b90508181036040830152612fa0818861292b565b9050612faf6060830187612a92565b612fbc6080830186612ea1565b612fc960a0830185612b47565b81810360c0830152612fdb8184612f0b565b905098975050505050505050565b5f602082019050612ffc5f830184612ea1565b92915050565b61300b81612b0a565b8114613015575f80fd5b50565b5f8135905061302681613002565b92915050565b61303581612b3e565b811461303f575f80fd5b50565b5f813590506130508161302c565b92915050565b5f805f805f805f60e0888a0312156130715761307061298c565b5b5f61307e8a828b016129da565b975050602061308f8a828b016129da565b96505060406130a08a828b01612a0d565b95505060606130b18a828b01612a0d565b94505060806130c28a828b01613018565b93505060a06130d38a828b01613042565b92505060c06130e48a828b01613042565b91505092959891949750929550565b5f80604083850312156131095761310861298c565b5b5f613116858286016129da565b9250506020613127858286016129da565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061317557607f821691505b60208210810361318857613187613131565b5b50919050565b5f82825260208201905092915050565b5f6131a9838561318e565b93506131b6838584612c4a565b6131bf8361291b565b840190509392505050565b5f60a0820190506131dd5f830189612ea1565b6131ea6020830188612ea1565b6131f76040830187612a92565b6132046060830186612a92565b818103608083015261321781848661319e565b9050979650505050505050565b5f815190506132328161302c565b92915050565b5f6020828403121561324d5761324c61298c565b5b5f61325a84828501613224565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61329a826129ee565b91506132a5836129ee565b92508282019050808211156132bd576132bc613263565b5b92915050565b5f6132cd826129ee565b91506132d8836129ee565b92508282039050818111156132f0576132ef613263565b5b92915050565b7f4549503731323a20556e696e697469616c697a656400000000000000000000005f82015250565b5f61332a6015836128e3565b9150613335826132f6565b602082019050919050565b5f6020820190508181035f8301526133578161331e565b9050919050565b5f819050919050565b5f67ffffffffffffffff82169050919050565b5f819050919050565b5f61339d6133986133938461335e565b61337a565b613367565b9050919050565b6133ad81613383565b82525050565b5f6020820190506133c65f8301846133a4565b92915050565b5f60c0820190506133df5f830189612b47565b6133ec6020830188612ea1565b6133f96040830187612ea1565b6134066060830186612a92565b6134136080830185612a92565b61342060a0830184612a92565b979650505050505050565b5f60408201905061343e5f830185612ea1565b61344b6020830184612ea1565b9392505050565b5f6060820190506134655f830186612ea1565b6134726020830185612a92565b61347f6040830184612a92565b949350505050565b5f60a08201905061349a5f830188612b47565b6134a76020830187612b47565b6134b46040830186612b47565b6134c16060830185612a92565b6134ce6080830184612ea1565b9695505050505050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f600883026135347fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826134f9565b61353e86836134f9565b95508019841693508086168417925050509392505050565b5f61357061356b613566846129ee565b61337a565b6129ee565b9050919050565b5f819050919050565b61358983613556565b61359d61359582613577565b848454613505565b825550505050565b5f90565b6135b16135a5565b6135bc818484613580565b505050565b5b818110156135df576135d45f826135a9565b6001810190506135c2565b5050565b601f821115613624576135f5816134d8565b6135fe846134ea565b8101602085101561360d578190505b613621613619856134ea565b8301826135c1565b50505b505050565b5f82821c905092915050565b5f6136445f1984600802613629565b1980831691505092915050565b5f61365c8383613635565b9150826002028217905092915050565b613675826128d9565b67ffffffffffffffff81111561368e5761368d612ba2565b5b613698825461315e565b6136a38282856135e3565b5f60209050601f8311600181146136d4575f84156136c2578287015190505b6136cc8582613651565b865550613733565b601f1984166136e2866134d8565b5f5b82811015613709578489015182556001820191506020850194506020810190506136e4565b868310156137265784890151613722601f891682613635565b8355505b6001600288020188555050505b505050505050565b5f60808201905061374e5f830187612b47565b61375b6020830186612b16565b6137686040830185612b47565b6137756060830184612b47565b95945050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b5f81519050919050565b5f81905092915050565b5f6137c9826137ab565b6137d381856137b5565b93506137e38185602086016128f3565b80840191505092915050565b5f6137fa82846137bf565b91508190509291505056fea2646970667358221220515c79a2d801b05510f5ed5dfb29489c48d4164be604543a58b8e0aae02e246164736f6c63430008180033